pptx-react-viewer 4.47.1 → 4.49.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 (63) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/{AiChatPanel-6S4LWXGM.mjs → AiChatPanel-NKTBHT5B.mjs} +1 -1
  3. package/dist/AiChatPanel-NKTBHT5B.mjs.br +0 -0
  4. package/dist/AiChatPanel-NKTBHT5B.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-IEM43TTZ.js → AiChatPanel-S4WNQCY4.js} +9 -9
  6. package/dist/AiChatPanel-S4WNQCY4.js.br +0 -0
  7. package/dist/AiChatPanel-S4WNQCY4.js.gz +0 -0
  8. package/dist/{chunk-TANR7L7E.js → chunk-2ZXXHNNR.js} +1444 -1500
  9. package/dist/chunk-2ZXXHNNR.js.br +0 -0
  10. package/dist/chunk-2ZXXHNNR.js.gz +0 -0
  11. package/dist/{chunk-MA2BI7LX.js → chunk-JAI42EXQ.js} +0 -4
  12. package/dist/chunk-JAI42EXQ.js.br +0 -0
  13. package/dist/{chunk-MA2BI7LX.js.gz → chunk-JAI42EXQ.js.gz} +0 -0
  14. package/dist/{chunk-VUVBSQLT.js → chunk-ME5QRTVS.js} +271 -290
  15. package/dist/chunk-ME5QRTVS.js.br +0 -0
  16. package/dist/chunk-ME5QRTVS.js.gz +0 -0
  17. package/dist/{chunk-BVQSH5SS.mjs → chunk-PFV626ED.mjs} +1 -1
  18. package/dist/chunk-PFV626ED.mjs.br +0 -0
  19. package/dist/chunk-PFV626ED.mjs.gz +0 -0
  20. package/dist/{chunk-2I7ZAM4F.mjs → chunk-YKLL2Z33.mjs} +182 -238
  21. package/dist/chunk-YKLL2Z33.mjs.br +0 -0
  22. package/dist/chunk-YKLL2Z33.mjs.gz +0 -0
  23. package/dist/{chunk-BL7UYXYD.mjs → chunk-Z62JFXMZ.mjs} +79 -98
  24. package/dist/chunk-Z62JFXMZ.mjs.br +0 -0
  25. package/dist/chunk-Z62JFXMZ.mjs.gz +0 -0
  26. package/dist/index.js +24 -24
  27. package/dist/index.js.br +0 -0
  28. package/dist/index.js.gz +0 -0
  29. package/dist/index.mjs +3 -3
  30. package/dist/index.mjs.br +0 -0
  31. package/dist/index.mjs.gz +0 -0
  32. package/dist/internals.d.ts +8 -1
  33. package/dist/internals.js +81 -81
  34. package/dist/internals.js.br +0 -0
  35. package/dist/internals.js.gz +0 -0
  36. package/dist/internals.mjs +2 -2
  37. package/dist/internals.mjs.br +0 -0
  38. package/dist/internals.mjs.gz +0 -0
  39. package/dist/pptx-viewer.css +1 -1
  40. package/dist/pptx-viewer.css.br +0 -0
  41. package/dist/pptx-viewer.css.gz +0 -0
  42. package/dist/viewer/index.js +19 -19
  43. package/dist/viewer/index.js.br +0 -0
  44. package/dist/viewer/index.js.gz +0 -0
  45. package/dist/viewer/index.mjs +3 -3
  46. package/dist/viewer/index.mjs.br +0 -0
  47. package/dist/viewer/index.mjs.gz +0 -0
  48. package/package.json +3 -3
  49. package/dist/AiChatPanel-6S4LWXGM.mjs.br +0 -0
  50. package/dist/AiChatPanel-6S4LWXGM.mjs.gz +0 -0
  51. package/dist/AiChatPanel-IEM43TTZ.js.br +0 -0
  52. package/dist/AiChatPanel-IEM43TTZ.js.gz +0 -0
  53. package/dist/chunk-2I7ZAM4F.mjs.br +0 -0
  54. package/dist/chunk-2I7ZAM4F.mjs.gz +0 -0
  55. package/dist/chunk-BL7UYXYD.mjs.br +0 -0
  56. package/dist/chunk-BL7UYXYD.mjs.gz +0 -0
  57. package/dist/chunk-BVQSH5SS.mjs.br +0 -0
  58. package/dist/chunk-BVQSH5SS.mjs.gz +0 -0
  59. package/dist/chunk-MA2BI7LX.js.br +0 -0
  60. package/dist/chunk-TANR7L7E.js.br +0 -0
  61. package/dist/chunk-TANR7L7E.js.gz +0 -0
  62. package/dist/chunk-VUVBSQLT.js.br +0 -0
  63. package/dist/chunk-VUVBSQLT.js.gz +0 -0
@@ -1,8 +1,8 @@
1
- import { StaticElementRenderer, useModalDismissDrag, useToolbarVisibility, useViewerOptionsContext, InlineCollaborationContext, SlideBackgroundImageLayer, ElementRenderer, withDisplayName, useCollaboration, ResizeHandles, imgSrc, renderStrokeView, useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, ChartFormatContext, useChartFormatContext, safePrompt, scopeLayoutOptionsToActiveSlide, createReviewCommentsHost, ChartPartSelectionProvider, useKeyboardInsets, ViewerOptionsStoreContext, ViewerOptionsContext, useReportOnChange, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, useSheetDismissDrag, playAnimationSound, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, SmartArtRenderer, downloadBlob, useChartPartSelection, DUOTONE_PRESETS, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, resolveSmartArtDataPalette } from './chunk-BL7UYXYD.mjs';
2
- import { cn, getShapeAdjustmentHandleDescriptors, isConnectorOrLineElement, TOOLBAR_SECTIONS, GRID_SIZE, getElementTransformWithoutRotation, getElementTransform, MIN_ELEMENT_SIZE, hasCopyableFormat, DEFAULT_SECTION_GROUP_ID, safeOpenUrl, isPpactionUrl, parsePpactionUrl, SHORTCUT_REFERENCE_ITEMS, isUrlSafe, computeHandoutLayout, getPrintableArea, generateNoteLineCount, normalizeHexColor, UNGROUPED_SECTION_ID, 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, SHAPE_QUICK_STYLES, getPatternSvg, DEFAULT_STROKE_COLOR, STROKE_DASH_OPTIONS, openNativeEyeDropper } from './chunk-BVQSH5SS.mjs';
3
- import { ANIMATION_DIRECTION_LABEL_KEYS, buildSlideTemplateContent, SLIDE_TEMPLATES, homeLaunchers, attachRibbonOverflow, isPanelVisible, parentSelection, slideSpaceElement, isGroupMember, motionPathFor, setMotionPath, RULER_THICKNESS, shouldShowElementHandles, deviceStrokeStageStyle, 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, resolveCollaborationConfig, resolveViewerRootOptions, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isEditingAllowed, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, attachViewerHyperlinks, shouldConfirmExternalHyperlink, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, saveFailureMessage, withSaveFailureToast, createSlidePackageClipboard, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, EMPTY_RESOLVED_CUSTOMIZATION, getRegionRenderer, ViewerRegionHost, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, customizeBackstageCards, backstageCardsFor, DEFAULT_VIEWER_PROFILE, 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, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, pruneExpiredAutosaveSnapshots, createDeckStyleHost, galleryDeckView, tableLayoutCells, resetChartFormatTarget, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, EDITOR_CHROME_CSS, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, deleteAutosaveSnapshot, 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, 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, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, clearAutosaveSnapshots, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, editorThumbnailWidth, EDITOR_THUMBNAIL_WIDTH, masterViewBackgroundColor, resolvePresentationAction, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, resolveEditPointsAvailability, isCurrentLayout, EXPANDED_MAX_HEIGHT, resolveStatusBarSave, statusBarViewMode, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, resolveDefaultPrintSettings, HANDOUT_OPTIONS, 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, computeAnchoredPopupPosition, updateSubtitleSettings, overlayPointerInput, cropModeKeyAction, editorThumbnailStep, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSectionContextMenuEntries, buildSlidePaneContextMenuEntries, slidePaneViewItems, 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, toggleSheet, describeElementChange, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, 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, sectionAddAfterSlideIndex, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, applyTableStyleDelete, applyTableStyleMapChange, registerCustomFont, QUICK_ACCESS_COMMAND_CATALOG, handleReadingViewKey, visibleTemplateElements, editorThumbnailHeight, buildPreviewElements, deriveSlideFieldContext, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, MERGE_SHAPES_MENU_ITEMS, hasMultipleSelectedTableCells, isElementLocked, mergeSlideTransition, slideBackgroundClearState, slideBackgroundClearPatch, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, getAfterAnimationState, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, inspectorNumber, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setDataLabelsRangeCache, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, imageResetPatch, imageResetState, canInteractWithElement, buildOleObjectNamePatch, 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, 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, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSiblingAfter, removeEmptyNode, demote, promote, reorder, cropResetState, cropResetPatch, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimResetState, mediaTrimEndMsFromAbsoluteMs, mediaTrimResetPatch, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, buildThemeColorSwatchGrid, themeColorGridView, 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, rebuildDrawingShapesIfCleared, mediaTrimEndMsFromSeconds, validateMediaTrimRange, quickStyleSwatchCss, shapeQuickStyleLabel, OFFICE_COLOR_SWATCHES, officeColorSwatchLabel, PATTERN_PRESET_OPTIONS as PATTERN_PRESET_OPTIONS$1, COMPOUND_LINE_OPTIONS as COMPOUND_LINE_OPTIONS$1, LINE_JOIN_OPTIONS as LINE_JOIN_OPTIONS$1, LINE_CAP_OPTIONS as LINE_CAP_OPTIONS$1, themeColorGridCommit, 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, textWarpStyle, toggleText3dExtrusion, BEVEL_PRESETS, cropFit, cropFill, cropToAspectRatio } from 'ooxml-ui/pptx';
1
+ import { StaticElementRenderer, useModalDismissDrag, useToolbarVisibility, useViewerOptionsContext, InlineCollaborationContext, SlideBackgroundImageLayer, ElementRenderer, withDisplayName, useCollaboration, ResizeHandles, imgSrc, renderStrokeView, useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, ChartFormatContext, useChartFormatContext, safePrompt, scopeLayoutOptionsToActiveSlide, createReviewCommentsHost, ChartPartSelectionProvider, useKeyboardInsets, ViewerOptionsStoreContext, ViewerOptionsContext, useReportOnChange, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, useSheetDismissDrag, playAnimationSound, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, SmartArtRenderer, downloadBlob, useChartPartSelection, DUOTONE_PRESETS, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, resolveSmartArtDataPalette } from './chunk-Z62JFXMZ.mjs';
2
+ import { cn, getShapeAdjustmentHandleDescriptors, isConnectorOrLineElement, TOOLBAR_SECTIONS, GRID_SIZE, getElementTransformWithoutRotation, getElementTransform, MIN_ELEMENT_SIZE, hasCopyableFormat, DEFAULT_SECTION_GROUP_ID, safeOpenUrl, isPpactionUrl, parsePpactionUrl, SHORTCUT_REFERENCE_ITEMS, isUrlSafe, computeHandoutLayout, getPrintableArea, generateNoteLineCount, normalizeHexColor, UNGROUPED_SECTION_ID, 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, STROKE_DASH_OPTIONS, openNativeEyeDropper } from './chunk-PFV626ED.mjs';
3
+ import { ANIMATION_DIRECTION_LABEL_KEYS, buildQuickStylesGallery, buildSlideTemplateContent, SLIDE_TEMPLATES, homeLaunchers, attachRibbonOverflow, isPanelVisible, parentSelection, slideSpaceElement, isGroupMember, motionPathFor, setMotionPath, RULER_THICKNESS, shouldShowElementHandles, deviceStrokeStageStyle, 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, resolveCollaborationConfig, resolveViewerRootOptions, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isEditingAllowed, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, attachViewerHyperlinks, shouldConfirmExternalHyperlink, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, saveFailureMessage, withSaveFailureToast, createSlidePackageClipboard, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, EMPTY_RESOLVED_CUSTOMIZATION, getRegionRenderer, ViewerRegionHost, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, customizeBackstageCards, backstageCardsFor, DEFAULT_VIEWER_PROFILE, 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, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, pruneExpiredAutosaveSnapshots, createDeckStyleHost, galleryDeckView, tableLayoutCells, resetChartFormatTarget, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, 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, 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, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, clearAutosaveSnapshots, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, editorThumbnailWidth, EDITOR_THUMBNAIL_WIDTH, masterViewBackgroundColor, resolvePresentationAction, isPresentationAdvanceClick, toggleBlackboard, visibleTemplateElements, PRESENT_TOOLBAR_CLASSES, resolveEditPointsAvailability, isCurrentLayout, EXPANDED_MAX_HEIGHT, statusBarState, statusBarViewMode, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, resolveDefaultPrintSettings, HANDOUT_OPTIONS, 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, computeAnchoredPopupPosition, updateSubtitleSettings, overlayPointerInput, cropModeKeyAction, editorThumbnailStep, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSectionContextMenuEntries, buildSlidePaneContextMenuEntries, slidePaneViewItems, 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, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, 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, sectionAddAfterSlideIndex, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, applyTableStyleDelete, applyTableStyleMapChange, registerCustomFont, QUICK_ACCESS_COMMAND_CATALOG, handleReadingViewKey, editorThumbnailHeight, buildPreviewElements, deriveSlideFieldContext, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, MERGE_SHAPES_MENU_ITEMS, hasMultipleSelectedTableCells, isElementLocked, mergeSlideTransition, slideBackgroundClearState, slideBackgroundClearPatch, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, getAfterAnimationState, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, inspectorNumber, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setDataLabelsRangeCache, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, imageResetPatch, imageResetState, canInteractWithElement, buildOleObjectNamePatch, 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, 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, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSiblingAfter, removeEmptyNode, demote, promote, reorder, cropResetState, cropResetPatch, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimResetState, mediaTrimEndMsFromAbsoluteMs, mediaTrimResetPatch, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, buildThemeColorSwatchGrid, themeColorGridView, 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, rebuildDrawingShapesIfCleared, mediaTrimEndMsFromSeconds, validateMediaTrimRange, OFFICE_COLOR_SWATCHES, officeColorSwatchLabel, PATTERN_PRESET_OPTIONS as PATTERN_PRESET_OPTIONS$1, COMPOUND_LINE_OPTIONS as COMPOUND_LINE_OPTIONS$1, LINE_JOIN_OPTIONS as LINE_JOIN_OPTIONS$1, LINE_CAP_OPTIONS as LINE_CAP_OPTIONS$1, themeColorGridCommit, 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
4
  export { THEME_CATALOG, defaultCssVars, defaultRadius, defaultThemeColors, resolveThemeCatalogEntry, themeToCssVars, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius } from 'ooxml-ui/pptx';
5
- import React106, { createContext, useContext, useMemo, useState, useRef, useCallback, useEffect, useLayoutEffect, forwardRef, useSyncExternalStore, useReducer, useId, Fragment as Fragment$1, useDeferredValue, Suspense, lazy } from 'react';
5
+ import React107, { createContext, useContext, useMemo, useState, useRef, useCallback, useEffect, useLayoutEffect, forwardRef, useSyncExternalStore, useReducer, useId, Fragment as Fragment$1, useDeferredValue, Suspense, lazy } from 'react';
6
6
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
7
  import { useTranslation } from 'react-i18next';
8
8
  import { LuArrowDown, LuArrowUp, LuArrowRight, LuArrowLeft, LuArrowDownRight, LuArrowDownLeft, LuArrowUpRight, LuArrowUpLeft, LuX, LuPanelLeft, LuPanelRight, LuSparkles, LuSettings, LuFolderOpen, LuType, LuPalette, LuFilter, LuPaintbrush, LuPlus, 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, LuHistory, LuCalendarDays, LuClock, LuHash, LuText, LuCast, LuChevronRight, LuChevronDown, LuMonitor, LuRadio, LuCaptions, LuCheck, LuImage, LuSearch, LuShieldCheck, LuPanelLeftClose, LuTrash2, LuEyeOff, LuEye, LuLoader, LuSignature, LuTriangleAlert, LuPenTool, LuWifi, LuWifiOff, LuUsers, LuMinus, LuChevronLeft, LuPause, LuCaseSensitive, LuChevronUp, LuReplace, LuGripVertical, LuLoaderCircle, LuGrid2X2, LuStickyNote, LuList, LuBug, LuMove, LuCopyPlus, LuClipboardPaste, LuMessageSquare, LuLayers, LuSettings2, LuLockOpen, LuPencil, LuReply, LuMoveRight, LuRotateCw, LuScissors, LuBookmark, LuPipette } from 'react-icons/lu';
@@ -1130,7 +1130,7 @@ function WebHomeControls({
1130
1130
  host.addEventListener("home-popup", listener);
1131
1131
  return () => host.removeEventListener("home-popup", listener);
1132
1132
  }, [onPopup]);
1133
- return React106.createElement(`pptx-ui-ribbon-home-${family}`, { ref });
1133
+ return React107.createElement(`pptx-ui-ribbon-home-${family}`, { ref });
1134
1134
  }
1135
1135
  function ShapeArrangeExtras(p) {
1136
1136
  const commands = useShapeFormatContext();
@@ -1673,7 +1673,7 @@ function AccountPage() {
1673
1673
  return void 0;
1674
1674
  });
1675
1675
  };
1676
- const version = "4.47.1" ;
1676
+ const version = "4.49.0" ;
1677
1677
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
1678
1678
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
1679
1679
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -5186,7 +5186,7 @@ function ChartQuickActionsOverlay({
5186
5186
  "data-export-ignore": "true",
5187
5187
  style: { position: "absolute", left: 0, top: 0, zIndex: 59 },
5188
5188
  onMouseDown: (e) => e.stopPropagation(),
5189
- children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React106.Fragment, { children: [
5189
+ children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React107.Fragment, { children: [
5190
5190
  /* @__PURE__ */ jsx(
5191
5191
  "button",
5192
5192
  {
@@ -5206,7 +5206,7 @@ function ChartQuickActionsOverlay({
5206
5206
  transformOrigin: "top left"
5207
5207
  },
5208
5208
  className: "flex items-center justify-center rounded bg-white border border-gray-300 shadow-sm hover:bg-gray-100 text-gray-700",
5209
- children: React106.createElement(ICONS3[button.id], { className: "size-3.5" })
5209
+ children: React107.createElement(ICONS3[button.id], { className: "size-3.5" })
5210
5210
  }
5211
5211
  ),
5212
5212
  open === button.id && button.id === "elements" && /* @__PURE__ */ jsxs(
@@ -6353,7 +6353,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
6353
6353
  );
6354
6354
  }
6355
6355
  var HorizontalRuler = /* @__PURE__ */ withDisplayName(
6356
- /* @__PURE__ */ React106.memo(HorizontalRulerView),
6356
+ /* @__PURE__ */ React107.memo(HorizontalRulerView),
6357
6357
  "HorizontalRuler"
6358
6358
  );
6359
6359
  function VerticalRulerView({ ticks, heightPx, highlight }) {
@@ -6427,7 +6427,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
6427
6427
  );
6428
6428
  }
6429
6429
  var VerticalRuler = /* @__PURE__ */ withDisplayName(
6430
- /* @__PURE__ */ React106.memo(VerticalRulerView),
6430
+ /* @__PURE__ */ React107.memo(VerticalRulerView),
6431
6431
  "VerticalRuler"
6432
6432
  );
6433
6433
  function Ruler({
@@ -8044,95 +8044,51 @@ function ExportProgressModal({
8044
8044
  onCancel
8045
8045
  }) {
8046
8046
  const { t } = useTranslation();
8047
- if (!isOpen) {
8048
- return null;
8049
- }
8050
- const clampedProgress = clampPercent(progress);
8051
- return /* @__PURE__ */ jsx(
8052
- "div",
8053
- {
8054
- style: { zIndex: 1200 },
8055
- className: "fixed inset-0 flex items-center justify-center bg-black/60 backdrop-blur-sm",
8056
- children: /* @__PURE__ */ jsxs("div", { className: "w-96 max-w-[calc(100%-2rem)] rounded-xl border border-border bg-background p-6 shadow-2xl", children: [
8057
- /* @__PURE__ */ jsx("h3", { className: "mb-4 text-sm font-semibold text-foreground", children: title }),
8058
- /* @__PURE__ */ jsx("div", { className: "mb-3 h-2.5 w-full overflow-hidden rounded-full bg-accent", children: /* @__PURE__ */ jsx(
8059
- "div",
8060
- {
8061
- className: "h-full rounded-full bg-primary transition-all duration-300 ease-out",
8062
- style: { width: `${clampedProgress}%` }
8063
- }
8064
- ) }),
8065
- /* @__PURE__ */ jsxs("div", { className: "mb-4 flex items-center justify-between text-xs text-muted-foreground", children: [
8066
- /* @__PURE__ */ jsx("span", { children: statusMessage ?? t("pptx.export.processing") }),
8067
- /* @__PURE__ */ jsxs("span", { className: "tabular-nums", children: [
8068
- clampedProgress,
8069
- "%"
8070
- ] })
8071
- ] }),
8072
- /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx(
8073
- DialogFooter,
8074
- {
8075
- actions: [{ id: "cancel", label: t("pptx.export.cancel") }],
8076
- onAction: onCancel
8077
- }
8078
- ) })
8079
- ] })
8080
- }
8047
+ const ref = useWebControl(
8048
+ { open: isOpen, title, progress, status: statusMessage, translate: t },
8049
+ { "export-cancel": () => onCancel() }
8081
8050
  );
8051
+ return /* @__PURE__ */ jsx("pptx-ui-export-progress", { ref });
8082
8052
  }
8083
8053
  function StatusBar(p) {
8084
8054
  const { t } = useTranslation();
8085
8055
  const ref = useRef(null);
8086
- const save = resolveStatusBarSave(t, p.autosaveStatus, p.isDirty);
8087
8056
  useEffect(() => {
8088
8057
  const host = ref.current;
8089
8058
  if (!host) {
8090
8059
  return;
8091
8060
  }
8092
- host.state = {
8061
+ host.state = statusBarState({
8093
8062
  slideCount: p.slideCount,
8094
8063
  activeSlideIndex: p.activeSlideIndex,
8095
- saveText: save.text,
8096
- saveKind: save.kind,
8097
- zoomPercent: p.scale !== void 0 && !p.hideZoomControls ? (p.scale ?? 1) * 100 : void 0,
8098
- showNotes: Boolean(p.onToggleNotes) && !p.hideNotesToggle,
8099
- notesExpanded: p.isNotesExpanded === true,
8100
- showViewModes: Boolean(p.onSetMode),
8101
- showSorter: Boolean(p.onToggleSlideSorter),
8102
- showSlideShow: !p.hideFullscreenToggle,
8064
+ dirty: p.isDirty,
8065
+ autosave: p.autosaveStatus,
8066
+ zoomPercent: p.scale !== void 0 && !p.hideZoomControls ? p.scale * 100 : void 0,
8067
+ notesExpanded: p.isNotesExpanded,
8103
8068
  viewMode: statusBarViewMode(p.mode),
8069
+ handles: {
8070
+ notes: Boolean(p.onToggleNotes) && !p.hideNotesToggle,
8071
+ viewModes: Boolean(p.onSetMode),
8072
+ sorter: Boolean(p.onToggleSlideSorter),
8073
+ slideShow: !p.hideFullscreenToggle
8074
+ },
8104
8075
  translate: t
8105
- };
8106
- }, [p, save.text, save.kind, t]);
8076
+ });
8077
+ }, [p, t]);
8107
8078
  useEffect(() => {
8108
8079
  const host = ref.current;
8109
8080
  if (!host) {
8110
8081
  return;
8111
8082
  }
8112
- const request = (event) => {
8113
- switch (event.detail.id) {
8114
- case "notes":
8115
- p.onToggleNotes?.();
8116
- break;
8117
- case "normal":
8118
- p.onSetMode?.("edit");
8119
- break;
8120
- case "sorter":
8121
- p.onToggleSlideSorter?.();
8122
- break;
8123
- case "slideShow":
8124
- p.onSetMode?.("present");
8125
- break;
8126
- case "zoomOut":
8127
- p.onZoomOut?.();
8128
- break;
8129
- case "zoomFit":
8130
- p.onZoomToFit?.();
8131
- break;
8132
- case "zoomIn":
8133
- p.onZoomIn?.();
8134
- }
8135
- };
8083
+ const request = (event) => dispatchStatusBarIntent(event, {
8084
+ notes: p.onToggleNotes,
8085
+ normal: () => p.onSetMode?.("edit"),
8086
+ sorter: p.onToggleSlideSorter,
8087
+ slideShow: () => p.onSetMode?.("present"),
8088
+ zoomOut: p.onZoomOut,
8089
+ zoomFit: p.onZoomToFit,
8090
+ zoomIn: p.onZoomIn
8091
+ });
8136
8092
  host.addEventListener("status-request", request);
8137
8093
  return () => host.removeEventListener("status-request", request);
8138
8094
  }, [p]);
@@ -8310,7 +8266,7 @@ function slideThumbnailPropsEqual(prev, next) {
8310
8266
  }
8311
8267
  return true;
8312
8268
  }
8313
- var SlideThumbnail = /* @__PURE__ */ React106.memo(
8269
+ var SlideThumbnail = /* @__PURE__ */ React107.memo(
8314
8270
  SlideThumbnailImpl,
8315
8271
  slideThumbnailPropsEqual
8316
8272
  );
@@ -9010,7 +8966,7 @@ function LazyThumbnailInner({
9010
8966
  }
9011
8967
  ) });
9012
8968
  }
9013
- var LazyThumbnail = /* @__PURE__ */ React106.memo(LazyThumbnailInner);
8969
+ var LazyThumbnail = /* @__PURE__ */ React107.memo(LazyThumbnailInner);
9014
8970
  function declaredSectionFacts(groups, sectionId) {
9015
8971
  const declared = groups.filter((group) => group.id !== DEFAULT_SECTION_GROUP_ID && group.id !== UNGROUPED_SECTION_ID).map((group) => group.id);
9016
8972
  return {
@@ -9178,7 +9134,7 @@ function SlideItemInner({
9178
9134
  }
9179
9135
  );
9180
9136
  }
9181
- var SlideItem = /* @__PURE__ */ React106.memo(SlideItemInner);
9137
+ var SlideItem = /* @__PURE__ */ React107.memo(SlideItemInner);
9182
9138
  function useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionCollapse) {
9183
9139
  const [collapsedSections, setCollapsedSections] = useState({});
9184
9140
  const [renamingSectionId, setRenamingSectionId] = useState(null);
@@ -10591,7 +10547,7 @@ function arePropsEqual(prev, next) {
10591
10547
  }
10592
10548
  return true;
10593
10549
  }
10594
- var SlideCard = /* @__PURE__ */ React106.memo(SlideCardImpl, arePropsEqual);
10550
+ var SlideCard = /* @__PURE__ */ React107.memo(SlideCardImpl, arePropsEqual);
10595
10551
  var ICON_CLASS = "h-3.5 w-3.5 text-muted-foreground";
10596
10552
  function SorterContextMenu({
10597
10553
  x,
@@ -11016,7 +10972,7 @@ function SlideSorterOverlay({
11016
10972
  count: state.selectedSlideIds.length
11017
10973
  }) })
11018
10974
  ] }),
11019
- React106.createElement("pptx-ui-slide-clipboard", {
10975
+ React107.createElement("pptx-ui-slide-clipboard", {
11020
10976
  ref: (node) => {
11021
10977
  if (!node) {
11022
10978
  return;
@@ -11932,8 +11888,8 @@ function SlideNotesPanel({
11932
11888
  onHeightChange
11933
11889
  }) {
11934
11890
  const { t } = useTranslation();
11935
- const rootRef = React106.useRef(null);
11936
- React106.useEffect(() => {
11891
+ const rootRef = React107.useRef(null);
11892
+ React107.useEffect(() => {
11937
11893
  const el = rootRef.current;
11938
11894
  if (!el || !onHeightChange) {
11939
11895
  return void 0;
@@ -13776,9 +13732,9 @@ function PresentationSubtitleBar({
13776
13732
  function renderNotesSegments(segments) {
13777
13733
  return notesSegmentsToSpans(segments).map((span) => {
13778
13734
  if (span.kind === "break") {
13779
- return React106.createElement("br", { key: span.key });
13735
+ return React107.createElement("br", { key: span.key });
13780
13736
  }
13781
- return React106.createElement(
13737
+ return React107.createElement(
13782
13738
  "span",
13783
13739
  { key: span.key, style: span.style },
13784
13740
  span.text
@@ -13954,7 +13910,7 @@ function scaledSlidePreviewPropsEqual(prev, next) {
13954
13910
  }
13955
13911
  return true;
13956
13912
  }
13957
- var ScaledSlidePreview = /* @__PURE__ */ React106.memo(
13913
+ var ScaledSlidePreview = /* @__PURE__ */ React107.memo(
13958
13914
  ScaledSlidePreviewImpl,
13959
13915
  scaledSlidePreviewPropsEqual
13960
13916
  );
@@ -14929,6 +14885,24 @@ var AFTER_ANIMATION_OPTIONS = [
14929
14885
  { value: "hideAfterAnimation", labelKey: "pptx.animation.afterAnimation.hideAfterAnimation" },
14930
14886
  { value: "hideOnNextClick", labelKey: "pptx.animation.afterAnimation.hideOnNextClick" }
14931
14887
  ];
14888
+ var pushers = /* @__PURE__ */ new WeakMap();
14889
+ function pushCommittedColor(event) {
14890
+ const input = event.currentTarget;
14891
+ pushers.get(input)?.current(input.value);
14892
+ }
14893
+ function useRecentColorCommit() {
14894
+ const { pushColor } = useRecentColors();
14895
+ const pushRef = useRef(pushColor);
14896
+ useEffect(() => {
14897
+ pushRef.current = pushColor;
14898
+ }, [pushColor]);
14899
+ return useCallback((input) => {
14900
+ if (input) {
14901
+ pushers.set(input, pushRef);
14902
+ input.addEventListener("change", pushCommittedColor);
14903
+ }
14904
+ }, []);
14905
+ }
14932
14906
  function AfterAnimationRow({
14933
14907
  action,
14934
14908
  color,
@@ -14938,7 +14912,7 @@ function AfterAnimationRow({
14938
14912
  onColorChange
14939
14913
  }) {
14940
14914
  const { t } = useTranslation();
14941
- const { pushColor } = useRecentColors();
14915
+ const commitRecentColor = useRecentColorCommit();
14942
14916
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
14943
14917
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
14944
14918
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.afterAnimation") }),
@@ -14962,10 +14936,8 @@ function AfterAnimationRow({
14962
14936
  type: "color",
14963
14937
  "aria-label": t("pptx.animation.afterAnimation.color"),
14964
14938
  value: color ?? "#808080",
14965
- onChange: (event) => {
14966
- onColorChange(event.target.value);
14967
- pushColor(event.target.value);
14968
- },
14939
+ ref: commitRecentColor,
14940
+ onChange: (event) => onColorChange(event.target.value),
14969
14941
  disabled: !canEdit,
14970
14942
  className: "h-6 w-10 rounded border border-border bg-transparent p-0"
14971
14943
  }
@@ -15184,7 +15156,7 @@ function EffectSoundRow({
15184
15156
  onPickStock
15185
15157
  }) {
15186
15158
  const { t } = useTranslation();
15187
- const fileInputRef = React106.useRef(null);
15159
+ const fileInputRef = React107.useRef(null);
15188
15160
  const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
15189
15161
  const handleSelectChange = (event) => {
15190
15162
  const value = event.target.value;
@@ -16418,7 +16390,7 @@ function ChartAxisStyleOptions({
16418
16390
  onSetGridlineStyle
16419
16391
  }) {
16420
16392
  const { t } = useTranslation();
16421
- const { pushColor } = useRecentColors();
16393
+ const commitRecentColor = useRecentColorCommit();
16422
16394
  const rows = SCALE_AXES.map((row) => ({
16423
16395
  ...row,
16424
16396
  axis: axes?.find((a) => a.axisType === row.type)
@@ -16518,10 +16490,8 @@ function ChartAxisStyleOptions({
16518
16490
  disabled: !canEdit,
16519
16491
  className: "h-6 w-8 cursor-pointer rounded border border-border bg-transparent",
16520
16492
  value: axis.fontColor ?? "#000000",
16521
- onChange: (e) => {
16522
- onSetTitleStyle(type, { fontColor: e.target.value });
16523
- pushColor(e.target.value);
16524
- }
16493
+ ref: commitRecentColor,
16494
+ onChange: (e) => onSetTitleStyle(type, { fontColor: e.target.value })
16525
16495
  }
16526
16496
  )
16527
16497
  ] })
@@ -16544,10 +16514,8 @@ function ChartAxisStyleOptions({
16544
16514
  title: t("pptx.chart.gridlineColor"),
16545
16515
  className: "h-6 w-8 cursor-pointer rounded border border-border bg-transparent",
16546
16516
  value: spPr?.strokeColor ?? "#d9d9d9",
16547
- onChange: (e) => {
16548
- onSetGridlineStyle(type, which, { color: e.target.value });
16549
- pushColor(e.target.value);
16550
- }
16517
+ ref: commitRecentColor,
16518
+ onChange: (e) => onSetGridlineStyle(type, which, { color: e.target.value })
16551
16519
  }
16552
16520
  ),
16553
16521
  /* @__PURE__ */ jsx(
@@ -16814,7 +16782,7 @@ function ChartDataPointMarkerOptions({
16814
16782
  onSetPointMarker
16815
16783
  }) {
16816
16784
  const { t } = useTranslation();
16817
- const { pushColor } = useRecentColors();
16785
+ const commitRecentColor = useRecentColorCommit();
16818
16786
  const [seriesIndex, setSeriesIndex] = useState(0);
16819
16787
  if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
16820
16788
  return null;
@@ -16901,10 +16869,8 @@ function ChartDataPointMarkerOptions({
16901
16869
  title: t("pptx.chart.markerFill"),
16902
16870
  className: "h-6 w-8 cursor-pointer rounded border border-border bg-transparent",
16903
16871
  value: point2.marker.spPr?.fillColor ?? "#4472c4",
16904
- onChange: (e) => {
16905
- onSetPointMarker(seriesIndex, idx, { fillColor: e.target.value });
16906
- pushColor(e.target.value);
16907
- }
16872
+ ref: commitRecentColor,
16873
+ onChange: (e) => onSetPointMarker(seriesIndex, idx, { fillColor: e.target.value })
16908
16874
  }
16909
16875
  )
16910
16876
  ] })
@@ -16922,7 +16888,7 @@ function ChartDataPointOptions({
16922
16888
  onSetPointLabel
16923
16889
  }) {
16924
16890
  const { t } = useTranslation();
16925
- const { pushColor } = useRecentColors();
16891
+ const commitRecentColor = useRecentColorCommit();
16926
16892
  const [seriesIndex, setSeriesIndex] = useState(0);
16927
16893
  if (series.length === 0 || categories.length === 0) {
16928
16894
  return null;
@@ -16973,10 +16939,8 @@ function ChartDataPointOptions({
16973
16939
  title: t("pptx.chart.pointFill"),
16974
16940
  className: "h-6 w-8 cursor-pointer rounded border border-border bg-transparent",
16975
16941
  value: point2?.spPr?.fillColor ?? activeSeries.color ?? "#4472c4",
16976
- onChange: (e) => {
16977
- onSetPointFill(seriesIndex, idx, e.target.value);
16978
- pushColor(e.target.value);
16979
- }
16942
+ ref: commitRecentColor,
16943
+ onChange: (e) => onSetPointFill(seriesIndex, idx, e.target.value)
16980
16944
  }
16981
16945
  ),
16982
16946
  point2?.spPr?.fillColor && /* @__PURE__ */ jsx(
@@ -17263,7 +17227,7 @@ function ChartMarkerOptions({
17263
17227
  onSetMarker
17264
17228
  }) {
17265
17229
  const { t } = useTranslation();
17266
- const { pushColor } = useRecentColors();
17230
+ const commitRecentColor = useRecentColorCommit();
17267
17231
  if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
17268
17232
  return null;
17269
17233
  }
@@ -17322,10 +17286,8 @@ function ChartMarkerOptions({
17322
17286
  disabled: !canEdit,
17323
17287
  className: "h-6 w-8 cursor-pointer rounded border border-border bg-transparent",
17324
17288
  value: marker.spPr?.fillColor ?? "#4472c4",
17325
- onChange: (e) => {
17326
- onSetMarker(i, { fillColor: e.target.value });
17327
- pushColor(e.target.value);
17328
- }
17289
+ ref: commitRecentColor,
17290
+ onChange: (e) => onSetMarker(i, { fillColor: e.target.value })
17329
17291
  }
17330
17292
  )
17331
17293
  ] })
@@ -17344,19 +17306,15 @@ function DebouncedColorInput({
17344
17306
  const [local, setLocal] = useState(value);
17345
17307
  const commitRef = useRef(onCommit);
17346
17308
  commitRef.current = onCommit;
17347
- const { pushColor } = useRecentColors();
17309
+ const commitRecentColor = useRecentColorCommit();
17348
17310
  useEffect(() => {
17349
17311
  setLocal(value);
17350
17312
  }, [value]);
17351
- const handleChange = useCallback(
17352
- (e) => {
17353
- const next = e.target.value;
17354
- setLocal(next);
17355
- commitRef.current(next);
17356
- pushColor(next);
17357
- },
17358
- [pushColor]
17359
- );
17313
+ const handleChange = useCallback((e) => {
17314
+ const next = e.target.value;
17315
+ setLocal(next);
17316
+ commitRef.current(next);
17317
+ }, []);
17360
17318
  return /* @__PURE__ */ jsx(
17361
17319
  "input",
17362
17320
  {
@@ -17365,6 +17323,7 @@ function DebouncedColorInput({
17365
17323
  disabled,
17366
17324
  value: local,
17367
17325
  className,
17326
+ ref: commitRecentColor,
17368
17327
  onChange: handleChange
17369
17328
  }
17370
17329
  );
@@ -18755,7 +18714,7 @@ function ConnectorArrowsSection({
18755
18714
  ["Start", "End"].map((end) => {
18756
18715
  const widthKey = end === "Start" ? "connectorStartArrowWidth" : "connectorEndArrowWidth";
18757
18716
  const lengthKey = end === "Start" ? "connectorStartArrowLength" : "connectorEndArrowLength";
18758
- return /* @__PURE__ */ jsxs(React106.Fragment, { children: [
18717
+ return /* @__PURE__ */ jsxs(React107.Fragment, { children: [
18759
18718
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
18760
18719
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t(END_LABEL_KEYS[end].width) }),
18761
18720
  /* @__PURE__ */ jsx(
@@ -21094,7 +21053,7 @@ function EffectField({
21094
21053
  onUpdate
21095
21054
  }) {
21096
21055
  const { t } = useTranslation();
21097
- const { pushColor } = useRecentColors();
21056
+ const commitRecentColor = useRecentColorCommit();
21098
21057
  const fieldLabel = field.i18nKey ? t(field.i18nKey) : field.label;
21099
21058
  const val = field.read(style);
21100
21059
  const cls = `flex flex-col gap-1 ${field.span2 ? COL2 : ""}`;
@@ -21124,10 +21083,10 @@ function EffectField({
21124
21083
  {
21125
21084
  type: "color",
21126
21085
  value: String(val),
21086
+ ref: commitRecentColor,
21127
21087
  onChange: (e) => {
21128
21088
  const result = field.write(e.target.value, style);
21129
21089
  onUpdate(typeof result === "function" ? result(style) : result);
21130
- pushColor(e.target.value);
21131
21090
  },
21132
21091
  className: `h-8 ${SEL} px-1`
21133
21092
  }
@@ -21221,6 +21180,7 @@ function ColorPickerRow({
21221
21180
  }) {
21222
21181
  const { t } = useTranslation();
21223
21182
  const { pushColor } = useRecentColors();
21183
+ const commitRecentColor = useRecentColorCommit();
21224
21184
  const commit = (color, ref) => {
21225
21185
  onChange(color, ref);
21226
21186
  pushColor(color);
@@ -21240,7 +21200,8 @@ function ColorPickerRow({
21240
21200
  type: "color",
21241
21201
  value,
21242
21202
  disabled,
21243
- onChange: (e) => commit(e.target.value),
21203
+ ref: commitRecentColor,
21204
+ onChange: (e) => onChange(e.target.value),
21244
21205
  className: `h-8 flex-1 ${SEL} px-1 ${DIS}`
21245
21206
  }
21246
21207
  ),
@@ -21298,6 +21259,7 @@ function GradientStopRow({
21298
21259
  }) {
21299
21260
  const { t } = useTranslation();
21300
21261
  const { pushColor } = useRecentColors();
21262
+ const commitRecentColor = useRecentColorCommit();
21301
21263
  const patchStop = (patch) => {
21302
21264
  const next = allStops.map((s, i) => i === index ? { ...s, ...patch } : s);
21303
21265
  onUpdate(next);
@@ -21309,11 +21271,8 @@ function GradientStopRow({
21309
21271
  {
21310
21272
  type: "color",
21311
21273
  value: normalizeHexColor(stop2.color, "#3b82f6"),
21312
- onChange: (e) => {
21313
- const hex = normalizeHexColor(e.target.value, "#3b82f6");
21314
- patchStop({ color: hex, colorRef: void 0 });
21315
- pushColor(hex);
21316
- },
21274
+ ref: commitRecentColor,
21275
+ onChange: (e) => patchStop({ color: normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
21317
21276
  className: "h-7 w-10 rounded border border-border bg-muted"
21318
21277
  }
21319
21278
  ),
@@ -21556,26 +21515,36 @@ function FillAdvancedControls({
21556
21515
  ] })
21557
21516
  ] });
21558
21517
  }
21518
+ var QUICK_STYLES = buildQuickStylesGallery();
21559
21519
  function QuickStylesGallery({
21560
21520
  onUpdateShapeStyle
21561
21521
  }) {
21562
21522
  const { t } = useTranslation();
21563
- const { viewportWidth } = useIsMobile();
21564
- const swatchMinHeight = getDensePanelTouchTargetPx(viewportWidth);
21523
+ const ref = useRef(null);
21524
+ useLayoutEffect(() => {
21525
+ const gallery = ref.current;
21526
+ if (gallery) {
21527
+ gallery.descriptor = QUICK_STYLES;
21528
+ gallery.translateLabel = t;
21529
+ }
21530
+ }, [t]);
21531
+ useEffect(() => {
21532
+ const gallery = ref.current;
21533
+ if (!gallery) {
21534
+ return;
21535
+ }
21536
+ const pick = (event) => {
21537
+ const style = quickStyleShapeStyle(event.detail.itemId);
21538
+ if (style) {
21539
+ onUpdateShapeStyle(style);
21540
+ }
21541
+ };
21542
+ gallery.addEventListener("gallery-pick", pick);
21543
+ return () => gallery.removeEventListener("gallery-pick", pick);
21544
+ }, [onUpdateShapeStyle]);
21565
21545
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
21566
21546
  /* @__PURE__ */ jsx("span", { className: LBL, children: t("pptx.shape.quickStyles") }),
21567
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-6 gap-1", children: SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsx(
21568
- "button",
21569
- {
21570
- type: "button",
21571
- title: shapeQuickStyleLabel(qs, (key) => t(key)),
21572
- "aria-label": shapeQuickStyleLabel(qs, (key) => t(key)),
21573
- className: "w-full rounded border border-border hover:border-primary transition-colors",
21574
- style: { ...quickStyleSwatchCss(qs), minHeight: swatchMinHeight },
21575
- onClick: () => onUpdateShapeStyle(qs.style)
21576
- },
21577
- idx
21578
- )) })
21547
+ /* @__PURE__ */ jsx("pptx-ui-ribbon-gallery", { ref, mode: "panel", compact: true })
21579
21548
  ] });
21580
21549
  }
21581
21550
  function StrokeEffectsSection({
@@ -21683,7 +21652,7 @@ function StrokeEffectsSection({
21683
21652
  ] }),
21684
21653
  EFFECT_CONFIGS.map((cfg) => {
21685
21654
  const on = cfg.isOn(style);
21686
- return /* @__PURE__ */ jsxs(React106.Fragment, { children: [
21655
+ return /* @__PURE__ */ jsxs(React107.Fragment, { children: [
21687
21656
  /* @__PURE__ */ jsxs("label", { className: `inline-flex items-center gap-2 text-foreground ${COL2}`, children: [
21688
21657
  /* @__PURE__ */ jsx(
21689
21658
  WebCheckbox,
@@ -21837,7 +21806,7 @@ function Text3DProperties({
21837
21806
  onUpdateTextStyle
21838
21807
  }) {
21839
21808
  const { t } = useTranslation();
21840
- const { pushColor } = useRecentColors();
21809
+ const commitRecentColor = useRecentColorCommit();
21841
21810
  const t3d = ts?.text3d;
21842
21811
  const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
21843
21812
  const update3d = (partial) => {
@@ -21884,10 +21853,8 @@ function Text3DProperties({
21884
21853
  {
21885
21854
  type: "color",
21886
21855
  value: normalizeHexColor(t3d?.extrusionColor, "#888888"),
21887
- onChange: (e) => {
21888
- update3d({ extrusionColor: e.target.value });
21889
- pushColor(e.target.value);
21890
- },
21856
+ ref: commitRecentColor,
21857
+ onChange: (e) => update3d({ extrusionColor: e.target.value }),
21891
21858
  className: COLOR_CLS
21892
21859
  }
21893
21860
  )
@@ -22053,7 +22020,7 @@ function AdvancedTextFormatting({
22053
22020
  numChange
22054
22021
  }) {
22055
22022
  const { t } = useTranslation();
22056
- const { pushColor } = useRecentColors();
22023
+ const commitRecentColor = useRecentColorCommit();
22057
22024
  return /* @__PURE__ */ jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
22058
22025
  /* @__PURE__ */ jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
22059
22026
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-2", children: BASELINE_TOGGLES.map(([label, baseline]) => /* @__PURE__ */ jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
@@ -22075,10 +22042,8 @@ function AdvancedTextFormatting({
22075
22042
  {
22076
22043
  type: "color",
22077
22044
  value: normalizeHexColor(ts?.highlightColor, "#ffff00"),
22078
- onChange: (e) => {
22079
- onUpdateTextStyle({ highlightColor: e.target.value });
22080
- pushColor(e.target.value);
22081
- },
22045
+ ref: commitRecentColor,
22046
+ onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
22082
22047
  disabled: !canEdit,
22083
22048
  className: COLOR_CLS2
22084
22049
  }
@@ -22109,10 +22074,8 @@ function AdvancedTextFormatting({
22109
22074
  {
22110
22075
  type: "color",
22111
22076
  value: ts?.underlineColor || ts?.color || "#000000",
22112
- onChange: (e) => {
22113
- onUpdateTextStyle({ underlineColor: e.target.value });
22114
- pushColor(e.target.value);
22115
- },
22077
+ ref: commitRecentColor,
22078
+ onChange: (e) => onUpdateTextStyle({ underlineColor: e.target.value }),
22116
22079
  className: COLOR_CLS2
22117
22080
  }
22118
22081
  )
@@ -22143,10 +22106,8 @@ function AdvancedTextFormatting({
22143
22106
  {
22144
22107
  type: "color",
22145
22108
  value: ts?.textOutlineColor || "#000000",
22146
- onChange: (e) => {
22147
- onUpdateTextStyle({ textOutlineColor: e.target.value });
22148
- pushColor(e.target.value);
22149
- },
22109
+ ref: commitRecentColor,
22110
+ onChange: (e) => onUpdateTextStyle({ textOutlineColor: e.target.value }),
22150
22111
  className: COLOR_CLS2
22151
22112
  }
22152
22113
  )
@@ -22333,7 +22294,7 @@ function TextEffectsPanel({
22333
22294
  numChange
22334
22295
  }) {
22335
22296
  const { t } = useTranslation();
22336
- const { pushColor } = useRecentColors();
22297
+ const commitRecentColor = useRecentColorCommit();
22337
22298
  const hasShadow = Boolean(
22338
22299
  ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
22339
22300
  );
@@ -22379,10 +22340,8 @@ function TextEffectsPanel({
22379
22340
  {
22380
22341
  type: "color",
22381
22342
  value: normalizeHexColor(ts?.textShadowColor, "#000000"),
22382
- onChange: (e) => {
22383
- onUpdateTextStyle({ textShadowColor: e.target.value });
22384
- pushColor(e.target.value);
22385
- },
22343
+ ref: commitRecentColor,
22344
+ onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
22386
22345
  className: COLOR_CLS2
22387
22346
  }
22388
22347
  )
@@ -22486,10 +22445,8 @@ function TextEffectsPanel({
22486
22445
  {
22487
22446
  type: "color",
22488
22447
  value: normalizeHexColor(ts?.textGlowColor, "#ffff00"),
22489
- onChange: (e) => {
22490
- onUpdateTextStyle({ textGlowColor: e.target.value });
22491
- pushColor(e.target.value);
22492
- },
22448
+ ref: commitRecentColor,
22449
+ onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
22493
22450
  className: COLOR_CLS2
22494
22451
  }
22495
22452
  )
@@ -22538,7 +22495,7 @@ function TextWarpGallery({
22538
22495
  onUpdateTextStyle
22539
22496
  }) {
22540
22497
  const { t } = useTranslation();
22541
- const [expanded, setExpanded] = React106.useState(false);
22498
+ const [expanded, setExpanded] = React107.useState(false);
22542
22499
  const currentPreset = ts?.textWarpPreset || "textNoShape";
22543
22500
  const descriptor = useMemo(() => buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
22544
22501
  const ref = useRef(null);
@@ -22983,7 +22940,7 @@ function SmartArtNodeStyleControls({
22983
22940
  canEdit,
22984
22941
  onChangeStyle
22985
22942
  }) {
22986
- const { pushColor } = useRecentColors();
22943
+ const commitRecentColor = useRecentColorCommit();
22987
22944
  const bold = Boolean(style?.bold);
22988
22945
  const italic = Boolean(style?.italic);
22989
22946
  return /* @__PURE__ */ jsxs(
@@ -23003,10 +22960,8 @@ function SmartArtNodeStyleControls({
23003
22960
  "aria-label": `Fill colour for ${label}`,
23004
22961
  className: "h-4 w-5 cursor-pointer rounded border border-border bg-transparent p-0 disabled:cursor-not-allowed",
23005
22962
  value: style?.fillColor ?? DEFAULT_FILL,
23006
- onChange: (e) => {
23007
- onChangeStyle(nodeId, { fillColor: e.target.value });
23008
- pushColor(e.target.value);
23009
- }
22963
+ ref: commitRecentColor,
22964
+ onChange: (e) => onChangeStyle(nodeId, { fillColor: e.target.value })
23010
22965
  }
23011
22966
  )
23012
22967
  ] }),
@@ -23020,10 +22975,8 @@ function SmartArtNodeStyleControls({
23020
22975
  "aria-label": `Font colour for ${label}`,
23021
22976
  className: "h-4 w-5 cursor-pointer rounded border border-border bg-transparent p-0 disabled:cursor-not-allowed",
23022
22977
  value: style?.fontColor ?? DEFAULT_FONT,
23023
- onChange: (e) => {
23024
- onChangeStyle(nodeId, { fontColor: e.target.value });
23025
- pushColor(e.target.value);
23026
- }
22978
+ ref: commitRecentColor,
22979
+ onChange: (e) => onChangeStyle(nodeId, { fontColor: e.target.value })
23027
22980
  }
23028
22981
  )
23029
22982
  ] }),
@@ -23186,7 +23139,7 @@ function SmartArtStyleControls({
23186
23139
  onChangeStyle
23187
23140
  }) {
23188
23141
  const { t } = useTranslation();
23189
- const translate = React106.useCallback((key) => t(key), [t]);
23142
+ const translate = React107.useCallback((key) => t(key), [t]);
23190
23143
  return /* @__PURE__ */ jsxs(Fragment, { children: [
23191
23144
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
23192
23145
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.smartart.colorScheme") }),
@@ -23241,9 +23194,9 @@ function SmartArtPropertiesPanel({
23241
23194
  const nodes = smartArtData.nodes ?? [];
23242
23195
  const layout = smartArtData.resolvedLayoutType;
23243
23196
  const topLevelCount = nodes.filter((n) => !n.parentId).length;
23244
- const inputRefs = React106.useRef(/* @__PURE__ */ new Map());
23245
- const pendingFocusId = React106.useRef(null);
23246
- React106.useEffect(() => {
23197
+ const inputRefs = React107.useRef(/* @__PURE__ */ new Map());
23198
+ const pendingFocusId = React107.useRef(null);
23199
+ React107.useEffect(() => {
23247
23200
  const id = pendingFocusId.current;
23248
23201
  if (id) {
23249
23202
  inputRefs.current.get(id)?.focus();
@@ -23611,7 +23564,7 @@ function TableCellPatternFill({
23611
23564
  onUpdateCellStyle
23612
23565
  }) {
23613
23566
  const { t } = useTranslation();
23614
- const { pushColor } = useRecentColors();
23567
+ const commitRecentColor = useRecentColorCommit();
23615
23568
  const translate = (key) => t(key);
23616
23569
  return /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
23617
23570
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-0.5", children: [
@@ -23638,10 +23591,8 @@ function TableCellPatternFill({
23638
23591
  disabled: !canEdit,
23639
23592
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
23640
23593
  value: cellStyle.patternFillForeground ?? "#000000",
23641
- onChange: (e) => {
23642
- onUpdateCellStyle({ patternFillForeground: e.target.value });
23643
- pushColor(e.target.value);
23644
- }
23594
+ ref: commitRecentColor,
23595
+ onChange: (e) => onUpdateCellStyle({ patternFillForeground: e.target.value })
23645
23596
  }
23646
23597
  )
23647
23598
  ] }),
@@ -23654,10 +23605,8 @@ function TableCellPatternFill({
23654
23605
  disabled: !canEdit,
23655
23606
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
23656
23607
  value: cellStyle.patternFillBackground ?? "#FFFFFF",
23657
- onChange: (e) => {
23658
- onUpdateCellStyle({ patternFillBackground: e.target.value });
23659
- pushColor(e.target.value);
23660
- }
23608
+ ref: commitRecentColor,
23609
+ onChange: (e) => onUpdateCellStyle({ patternFillBackground: e.target.value })
23661
23610
  }
23662
23611
  )
23663
23612
  ] })
@@ -23758,7 +23707,7 @@ function GradientControls({
23758
23707
  onUpdateCellStyle
23759
23708
  }) {
23760
23709
  const { t } = useTranslation();
23761
- const { pushColor } = useRecentColors();
23710
+ const commitRecentColor = useRecentColorCommit();
23762
23711
  const stops = cellStyle.gradientFillStops ?? [];
23763
23712
  const gradType = cellStyle.gradientFillType ?? "linear";
23764
23713
  const updateStop = (index, patch) => {
@@ -23815,10 +23764,8 @@ function GradientControls({
23815
23764
  disabled: !canEdit,
23816
23765
  className: "h-6 w-6 rounded border border-border cursor-pointer",
23817
23766
  value: stop2.color,
23818
- onChange: (e) => {
23819
- updateStop(idx, { color: e.target.value });
23820
- pushColor(e.target.value);
23821
- }
23767
+ ref: commitRecentColor,
23768
+ onChange: (e) => updateStop(idx, { color: e.target.value })
23822
23769
  }
23823
23770
  ),
23824
23771
  /* @__PURE__ */ jsx(
@@ -24843,7 +24790,7 @@ function CommentBody({ text, mentions, className }) {
24843
24790
  index
24844
24791
  ) : (
24845
24792
  // eslint-disable-next-line react/no-array-index-key -- segments are positional
24846
- /* @__PURE__ */ jsx(React106.Fragment, { children: segment.text }, index)
24793
+ /* @__PURE__ */ jsx(React107.Fragment, { children: segment.text }, index)
24847
24794
  )
24848
24795
  ) });
24849
24796
  }
@@ -26360,7 +26307,7 @@ function PresentationPropertiesPanel({
26360
26307
  onUpdateTagCollections
26361
26308
  }) {
26362
26309
  const { t } = useTranslation();
26363
- const handleTransitionChange = React106.useCallback(
26310
+ const handleTransitionChange = React107.useCallback(
26364
26311
  (updates) => {
26365
26312
  onUpdateSlide({
26366
26313
  transition: mergeSlideTransition(activeSlide?.transition, updates)
@@ -29841,7 +29788,7 @@ function ViewerToolbarSection(props) {
29841
29788
  },
29842
29789
  [activeSlide, propertyHandlers]
29843
29790
  );
29844
- const scopedLayoutOptions = React106.useMemo(
29791
+ const scopedLayoutOptions = React107.useMemo(
29845
29792
  () => scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
29846
29793
  [s.layoutOptions, activeSlide]
29847
29794
  );
@@ -31534,7 +31481,13 @@ ${url}`)) {
31534
31481
  PresentationTransitionOverlay,
31535
31482
  {
31536
31483
  outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
31537
- templateElements,
31484
+ templateElements: [
31485
+ ...visibleTemplateElements(
31486
+ slides[presentation.transitionOverlay.outgoingSlideIndex],
31487
+ s.templateElementsBySlideId[slides[presentation.transitionOverlay.outgoingSlideIndex].id] ?? []
31488
+ )
31489
+ ],
31490
+ incomingTemplateElements: templateElements,
31538
31491
  canvasSize,
31539
31492
  transition: presentation.transitionOverlay.transition,
31540
31493
  durationMs: presentation.transitionOverlay.durationMs,
@@ -31789,7 +31742,7 @@ function useTableStyleMapHandlers(input) {
31789
31742
  var AiChatPanel = /* @__PURE__ */ lazy(async () => {
31790
31743
  const [{ useChat }, { default: Panel }] = await Promise.all([
31791
31744
  import('@ai-sdk/react'),
31792
- import('./AiChatPanel-6S4LWXGM.mjs')
31745
+ import('./AiChatPanel-NKTBHT5B.mjs')
31793
31746
  ]);
31794
31747
  function BoundAiChatPanel(props) {
31795
31748
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -33333,31 +33286,22 @@ function MobileChromeOverlay(props) {
33333
33286
  function ReadOnlyBanner(p) {
33334
33287
  const { t } = useTranslation();
33335
33288
  const ref = useWebControl(
33289
+ readOnlyBannerState(
33290
+ p.recommendation,
33291
+ {
33292
+ passwordPromptOpen: p.passwordPromptOpen ?? false,
33293
+ passwordError: p.passwordError ?? null,
33294
+ checkingPassword: p.checkingPassword ?? false
33295
+ },
33296
+ t
33297
+ ),
33336
33298
  {
33337
- kind: p.recommendation.kind ?? null,
33338
- messageKey: p.recommendation.messageKey,
33339
- passwordPromptOpen: p.passwordPromptOpen ?? false,
33340
- passwordError: p.passwordError ?? null,
33341
- checkingPassword: p.checkingPassword ?? false,
33342
- translate: t
33343
- },
33344
- {
33345
- "read-only-request": (event) => {
33346
- const intent = event.detail;
33347
- switch (intent.id) {
33348
- case "editAnyway":
33349
- p.onEditAnyway();
33350
- break;
33351
- case "dismiss":
33352
- p.onDismiss();
33353
- break;
33354
- case "cancelPassword":
33355
- p.onCancelPassword?.();
33356
- break;
33357
- case "submitPassword":
33358
- p.onSubmitPassword?.(intent.password);
33359
- }
33360
- }
33299
+ "read-only-request": (event) => dispatchReadOnlyBannerIntent(event, {
33300
+ editAnyway: p.onEditAnyway,
33301
+ dismiss: p.onDismiss,
33302
+ cancelPassword: p.onCancelPassword,
33303
+ submitPassword: p.onSubmitPassword
33304
+ })
33361
33305
  }
33362
33306
  );
33363
33307
  return /* @__PURE__ */ jsx("pptx-ui-read-only-banner", { ref });