pptx-react-viewer 4.51.1 → 4.52.1

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 (87) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/dist/{AiChatPanel-EV22O7UO.js → AiChatPanel-7GJQ66GR.js} +19 -19
  3. package/dist/AiChatPanel-7GJQ66GR.js.br +0 -0
  4. package/dist/AiChatPanel-7GJQ66GR.js.gz +0 -0
  5. package/dist/{AiChatPanel-R323KNGN.mjs → AiChatPanel-AI75AT6C.mjs} +1 -1
  6. package/dist/AiChatPanel-AI75AT6C.mjs.br +0 -0
  7. package/dist/AiChatPanel-AI75AT6C.mjs.gz +0 -0
  8. package/dist/{chunk-YJ4DAS4V.js → chunk-2AM5YYWI.js} +586 -615
  9. package/dist/chunk-2AM5YYWI.js.br +0 -0
  10. package/dist/chunk-2AM5YYWI.js.gz +0 -0
  11. package/dist/{chunk-Z22RD3E2.js → chunk-3TN5SUQR.js} +4 -1
  12. package/dist/chunk-3TN5SUQR.js.br +0 -0
  13. package/dist/chunk-3TN5SUQR.js.gz +0 -0
  14. package/dist/{chunk-V4DY4IWP.mjs → chunk-6436YER5.mjs} +390 -420
  15. package/dist/chunk-6436YER5.mjs.br +0 -0
  16. package/dist/chunk-6436YER5.mjs.gz +0 -0
  17. package/dist/{chunk-ZCGYPCZM.mjs → chunk-ID37Y3HG.mjs} +4 -1
  18. package/dist/chunk-ID37Y3HG.mjs.br +0 -0
  19. package/dist/chunk-ID37Y3HG.mjs.gz +0 -0
  20. package/dist/{chunk-VRX5NJY2.js → chunk-JUH4YPMU.js} +1702 -1616
  21. package/dist/chunk-JUH4YPMU.js.br +0 -0
  22. package/dist/chunk-JUH4YPMU.js.gz +0 -0
  23. package/dist/{chunk-KCUXY7DE.mjs → chunk-L77POU5D.mjs} +216 -130
  24. package/dist/chunk-L77POU5D.mjs.br +0 -0
  25. package/dist/chunk-L77POU5D.mjs.gz +0 -0
  26. package/dist/i18n/de.cjs +1 -24
  27. package/dist/i18n/de.cjs.br +0 -0
  28. package/dist/i18n/de.cjs.gz +0 -0
  29. package/dist/i18n/de.mjs +1 -24
  30. package/dist/i18n/de.mjs.br +0 -0
  31. package/dist/i18n/de.mjs.gz +0 -0
  32. package/dist/i18n/es.cjs +1 -24
  33. package/dist/i18n/es.cjs.br +0 -0
  34. package/dist/i18n/es.cjs.gz +0 -0
  35. package/dist/i18n/es.mjs +1 -24
  36. package/dist/i18n/es.mjs.br +0 -0
  37. package/dist/i18n/es.mjs.gz +0 -0
  38. package/dist/i18n/fr.cjs +1 -24
  39. package/dist/i18n/fr.cjs.br +0 -0
  40. package/dist/i18n/fr.cjs.gz +0 -0
  41. package/dist/i18n/fr.mjs +1 -24
  42. package/dist/i18n/fr.mjs.br +0 -0
  43. package/dist/i18n/fr.mjs.gz +0 -0
  44. package/dist/i18n/zh-CN.cjs +0 -23
  45. package/dist/i18n/zh-CN.cjs.br +0 -0
  46. package/dist/i18n/zh-CN.cjs.gz +0 -0
  47. package/dist/i18n/zh-CN.mjs +0 -23
  48. package/dist/i18n/zh-CN.mjs.br +0 -0
  49. package/dist/i18n/zh-CN.mjs.gz +0 -0
  50. package/dist/index.d.ts +14 -2
  51. package/dist/index.js +25 -25
  52. package/dist/index.js.br +0 -0
  53. package/dist/index.js.gz +0 -0
  54. package/dist/index.mjs +3 -3
  55. package/dist/index.mjs.br +0 -0
  56. package/dist/index.mjs.gz +0 -0
  57. package/dist/internals.d.ts +85 -23
  58. package/dist/internals.js +81 -81
  59. package/dist/internals.js.br +0 -0
  60. package/dist/internals.js.gz +0 -0
  61. package/dist/internals.mjs +2 -2
  62. package/dist/internals.mjs.br +0 -0
  63. package/dist/internals.mjs.gz +0 -0
  64. package/dist/viewer/index.d.ts +13 -1
  65. package/dist/viewer/index.js +20 -20
  66. package/dist/viewer/index.js.br +0 -0
  67. package/dist/viewer/index.js.gz +0 -0
  68. package/dist/viewer/index.mjs +3 -3
  69. package/dist/viewer/index.mjs.br +0 -0
  70. package/dist/viewer/index.mjs.gz +0 -0
  71. package/package.json +3 -3
  72. package/dist/AiChatPanel-EV22O7UO.js.br +0 -0
  73. package/dist/AiChatPanel-EV22O7UO.js.gz +0 -0
  74. package/dist/AiChatPanel-R323KNGN.mjs.br +0 -0
  75. package/dist/AiChatPanel-R323KNGN.mjs.gz +0 -0
  76. package/dist/chunk-KCUXY7DE.mjs.br +0 -0
  77. package/dist/chunk-KCUXY7DE.mjs.gz +0 -0
  78. package/dist/chunk-V4DY4IWP.mjs.br +0 -0
  79. package/dist/chunk-V4DY4IWP.mjs.gz +0 -0
  80. package/dist/chunk-VRX5NJY2.js.br +0 -0
  81. package/dist/chunk-VRX5NJY2.js.gz +0 -0
  82. package/dist/chunk-YJ4DAS4V.js.br +0 -0
  83. package/dist/chunk-YJ4DAS4V.js.gz +0 -0
  84. package/dist/chunk-Z22RD3E2.js.br +0 -0
  85. package/dist/chunk-Z22RD3E2.js.gz +0 -0
  86. package/dist/chunk-ZCGYPCZM.mjs.br +0 -0
  87. package/dist/chunk-ZCGYPCZM.mjs.gz +0 -0
@@ -1,8 +1,8 @@
1
- import { StaticElementRenderer, useModalDismissDrag, useToolbarVisibility, useViewerOptionsContext, InlineCollaborationContext, SlideBackgroundImageLayer, ElementRenderer, withDisplayName, useCollaboration, ResizeHandles, imgSrc, renderStrokeView, useChartFormatContext, useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, ChartFormatContext, useSheetDismissDrag, playAnimationSound, ViewerOptionsStoreContext, safePrompt, useController, scopeLayoutOptionsToActiveSlide, createReviewCommentsHost, ChartPartSelectionProvider, useKeyboardInsets, ViewerOptionsContext, useReportOnChange, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob, useChartPartSelection, resolveSmartArtDataPalette, DUOTONE_PRESETS, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES } from './chunk-V4DY4IWP.mjs';
2
- import { useTranslation, cn, getShapeAdjustmentHandleDescriptors, isConnectorOrLineElement, PptxI18nContext, TOOLBAR_SECTIONS, GRID_SIZE, getElementTransformWithoutRotation, getElementTransform, MIN_ELEMENT_SIZE, ViewerLocaleControlsContext, hasCopyableFormat, ViewerI18nContext, useHostI18next, 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, openNativeEyeDropper } from './chunk-ZCGYPCZM.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, 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, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, saveFailureMessage, withSaveFailureToast, createSlidePackageClipboard, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, 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, 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, computeAnchoredPopupPosition, updateSubtitleSettings, overlayPointerInput, 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, 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, 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, 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, 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, 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, rebuildDrawingShapesIfCleared, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, cropResetState, cropResetPatch, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimResetState, mediaTrimEndMsFromAbsoluteMs, mediaTrimResetPatch, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, 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, inspectorFieldPatch, 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, SHAPE_EFFECT_SECTIONS, 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';
1
+ import { StaticElementRenderer, useModalDismissDrag, useToolbarVisibility, useViewerOptionsContext, InlineCollaborationContext, SlideBackgroundImageLayer, ElementRenderer, withDisplayName, useCollaboration, 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, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob, useChartPartSelection, resolveSmartArtDataPalette, DUOTONE_PRESETS, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES } from './chunk-6436YER5.mjs';
2
+ import { useTranslation, cn, getShapeAdjustmentHandleDescriptors, isConnectorOrLineElement, PptxI18nContext, TOOLBAR_SECTIONS, GRID_SIZE, getElementTransformWithoutRotation, getElementTransform, MIN_ELEMENT_SIZE, ViewerLocaleControlsContext, hasCopyableFormat, ViewerI18nContext, useHostI18next, 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, openNativeEyeDropper } from './chunk-ID37Y3HG.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, 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, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, saveFailureMessage, withSaveFailureToast, createSlidePackageClipboard, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, 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, editorThumbnailWidth, EDITOR_THUMBNAIL_WIDTH, 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, 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, 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, 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
4
  export { THEME_CATALOG, defaultCssVars, defaultRadius, defaultThemeColors, resolveThemeCatalogEntry, themeToCssVars, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius } from 'ooxml-ui/pptx';
5
- import React108, { createContext, useContext, useMemo, useState, useRef, useCallback, useEffect, useLayoutEffect, forwardRef, useSyncExternalStore, useReducer, Fragment as Fragment$1, useId, useDeferredValue, Suspense, lazy } from 'react';
5
+ import React109, { createContext, useContext, useMemo, useState, useRef, useCallback, useEffect, useLayoutEffect, forwardRef, useSyncExternalStore, useReducer, Fragment as Fragment$1, useId, useDeferredValue, Suspense, lazy } from 'react';
6
6
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
7
  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, LuChevronRight, LuChevronDown, LuMonitor, LuClock, LuRadio, LuCaptions, LuCheck, LuImage, LuSearch, LuHistory, LuCalendarDays, LuHash, LuText, LuCast, 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';
8
8
  import { createPortal } from 'react-dom';
@@ -1135,7 +1135,7 @@ function WebHomeControls({
1135
1135
  host.addEventListener("home-popup", listener);
1136
1136
  return () => host.removeEventListener("home-popup", listener);
1137
1137
  }, [onPopup]);
1138
- return React108.createElement(`pptx-ui-ribbon-home-${family}`, { ref });
1138
+ return React109.createElement(`pptx-ui-ribbon-home-${family}`, { ref });
1139
1139
  }
1140
1140
  function ShapeArrangeExtras(p) {
1141
1141
  const commands = useShapeFormatContext();
@@ -1678,7 +1678,7 @@ function AccountPage() {
1678
1678
  return void 0;
1679
1679
  });
1680
1680
  };
1681
- const version = "4.51.1" ;
1681
+ const version = "4.52.1" ;
1682
1682
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
1683
1683
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
1684
1684
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -5192,7 +5192,7 @@ function ChartQuickActionsOverlay({
5192
5192
  "data-export-ignore": "true",
5193
5193
  style: { position: "absolute", left: 0, top: 0, zIndex: 59 },
5194
5194
  onMouseDown: (e) => e.stopPropagation(),
5195
- children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React108.Fragment, { children: [
5195
+ children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React109.Fragment, { children: [
5196
5196
  /* @__PURE__ */ jsx(
5197
5197
  "button",
5198
5198
  {
@@ -5212,7 +5212,7 @@ function ChartQuickActionsOverlay({
5212
5212
  transformOrigin: "top left"
5213
5213
  },
5214
5214
  className: "flex items-center justify-center rounded bg-white border border-gray-300 shadow-sm hover:bg-gray-100 text-gray-700",
5215
- children: React108.createElement(ICONS3[button.id], { className: "size-3.5" })
5215
+ children: React109.createElement(ICONS3[button.id], { className: "size-3.5" })
5216
5216
  }
5217
5217
  ),
5218
5218
  open === button.id && button.id === "elements" && /* @__PURE__ */ jsxs(
@@ -6359,7 +6359,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
6359
6359
  );
6360
6360
  }
6361
6361
  var HorizontalRuler = /* @__PURE__ */ withDisplayName(
6362
- /* @__PURE__ */ React108.memo(HorizontalRulerView),
6362
+ /* @__PURE__ */ React109.memo(HorizontalRulerView),
6363
6363
  "HorizontalRuler"
6364
6364
  );
6365
6365
  function VerticalRulerView({ ticks, heightPx, highlight }) {
@@ -6433,7 +6433,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
6433
6433
  );
6434
6434
  }
6435
6435
  var VerticalRuler = /* @__PURE__ */ withDisplayName(
6436
- /* @__PURE__ */ React108.memo(VerticalRulerView),
6436
+ /* @__PURE__ */ React109.memo(VerticalRulerView),
6437
6437
  "VerticalRuler"
6438
6438
  );
6439
6439
  function Ruler({
@@ -8272,7 +8272,7 @@ function slideThumbnailPropsEqual(prev, next) {
8272
8272
  }
8273
8273
  return true;
8274
8274
  }
8275
- var SlideThumbnail = /* @__PURE__ */ React108.memo(
8275
+ var SlideThumbnail = /* @__PURE__ */ React109.memo(
8276
8276
  SlideThumbnailImpl,
8277
8277
  slideThumbnailPropsEqual
8278
8278
  );
@@ -8534,7 +8534,7 @@ function FindReplacePanel({
8534
8534
  }, []);
8535
8535
  useEffect(() => {
8536
8536
  onPerformFind();
8537
- }, [findQuery, findMatchCase, findIncludeNotes, findIncludeChartTitles, findIncludeChartData]);
8537
+ }, []);
8538
8538
  const handleSearchKeyDown = useCallback(
8539
8539
  (event) => {
8540
8540
  if (event.key === "Escape") {
@@ -8972,7 +8972,7 @@ function LazyThumbnailInner({
8972
8972
  }
8973
8973
  ) });
8974
8974
  }
8975
- var LazyThumbnail = /* @__PURE__ */ React108.memo(LazyThumbnailInner);
8975
+ var LazyThumbnail = /* @__PURE__ */ React109.memo(LazyThumbnailInner);
8976
8976
  function declaredSectionFacts(groups, sectionId) {
8977
8977
  const declared = groups.filter((group) => group.id !== DEFAULT_SECTION_GROUP_ID && group.id !== UNGROUPED_SECTION_ID).map((group) => group.id);
8978
8978
  return {
@@ -9140,7 +9140,7 @@ function SlideItemInner({
9140
9140
  }
9141
9141
  );
9142
9142
  }
9143
- var SlideItem = /* @__PURE__ */ React108.memo(SlideItemInner);
9143
+ var SlideItem = /* @__PURE__ */ React109.memo(SlideItemInner);
9144
9144
  function useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionCollapse) {
9145
9145
  const [collapsedSections, setCollapsedSections] = useState({});
9146
9146
  const [renamingSectionId, setRenamingSectionId] = useState(null);
@@ -10553,7 +10553,7 @@ function arePropsEqual(prev, next) {
10553
10553
  }
10554
10554
  return true;
10555
10555
  }
10556
- var SlideCard = /* @__PURE__ */ React108.memo(SlideCardImpl, arePropsEqual);
10556
+ var SlideCard = /* @__PURE__ */ React109.memo(SlideCardImpl, arePropsEqual);
10557
10557
  var ICON_CLASS = "h-3.5 w-3.5 text-muted-foreground";
10558
10558
  function SorterContextMenu({
10559
10559
  x,
@@ -10978,7 +10978,7 @@ function SlideSorterOverlay({
10978
10978
  count: state.selectedSlideIds.length
10979
10979
  }) })
10980
10980
  ] }),
10981
- React108.createElement("pptx-ui-slide-clipboard", {
10981
+ React109.createElement("pptx-ui-slide-clipboard", {
10982
10982
  ref: (node) => {
10983
10983
  if (!node) {
10984
10984
  return;
@@ -11894,8 +11894,8 @@ function SlideNotesPanel({
11894
11894
  onHeightChange
11895
11895
  }) {
11896
11896
  const { t } = useTranslation();
11897
- const rootRef = React108.useRef(null);
11898
- React108.useEffect(() => {
11897
+ const rootRef = React109.useRef(null);
11898
+ React109.useEffect(() => {
11899
11899
  const el = rootRef.current;
11900
11900
  if (!el || !onHeightChange) {
11901
11901
  return void 0;
@@ -13738,9 +13738,9 @@ function PresentationSubtitleBar({
13738
13738
  function renderNotesSegments(segments) {
13739
13739
  return notesSegmentsToSpans(segments).map((span) => {
13740
13740
  if (span.kind === "break") {
13741
- return React108.createElement("br", { key: span.key });
13741
+ return React109.createElement("br", { key: span.key });
13742
13742
  }
13743
- return React108.createElement(
13743
+ return React109.createElement(
13744
13744
  "span",
13745
13745
  { key: span.key, style: span.style },
13746
13746
  span.text
@@ -13916,7 +13916,7 @@ function scaledSlidePreviewPropsEqual(prev, next) {
13916
13916
  }
13917
13917
  return true;
13918
13918
  }
13919
- var ScaledSlidePreview = /* @__PURE__ */ React108.memo(
13919
+ var ScaledSlidePreview = /* @__PURE__ */ React109.memo(
13920
13920
  ScaledSlidePreviewImpl,
13921
13921
  scaledSlidePreviewPropsEqual
13922
13922
  );
@@ -15162,7 +15162,7 @@ function EffectSoundRow({
15162
15162
  onPickStock
15163
15163
  }) {
15164
15164
  const { t } = useTranslation();
15165
- const fileInputRef = React108.useRef(null);
15165
+ const fileInputRef = React109.useRef(null);
15166
15166
  const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
15167
15167
  const handleSelectChange = (event) => {
15168
15168
  const value = event.target.value;
@@ -18550,7 +18550,7 @@ function ConnectorArrowsSection({
18550
18550
  ["Start", "End"].map((end) => {
18551
18551
  const widthKey = end === "Start" ? "connectorStartArrowWidth" : "connectorEndArrowWidth";
18552
18552
  const lengthKey = end === "Start" ? "connectorStartArrowLength" : "connectorEndArrowLength";
18553
- return /* @__PURE__ */ jsxs(React108.Fragment, { children: [
18553
+ return /* @__PURE__ */ jsxs(React109.Fragment, { children: [
18554
18554
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
18555
18555
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t(END_LABEL_KEYS[end].width) }),
18556
18556
  /* @__PURE__ */ jsx(
@@ -18934,7 +18934,7 @@ function ColorWashSection({
18934
18934
  ] })
18935
18935
  ] });
18936
18936
  }
18937
- function DebouncedColorInput2({
18937
+ function DuotoneColorInput({
18938
18938
  value,
18939
18939
  disabled,
18940
18940
  className,
@@ -18950,10 +18950,6 @@ function DebouncedColorInput2({
18950
18950
  const handleChange = useCallback((e) => {
18951
18951
  setLocal(e.target.value);
18952
18952
  }, []);
18953
- const handleBlur = useCallback(() => {
18954
- commitRef.current(local);
18955
- pushColor(local);
18956
- }, [local, pushColor]);
18957
18953
  const inputRef = useRef(null);
18958
18954
  useEffect(() => {
18959
18955
  const el = inputRef.current;
@@ -18975,8 +18971,7 @@ function DebouncedColorInput2({
18975
18971
  disabled,
18976
18972
  className,
18977
18973
  value: local,
18978
- onChange: handleChange,
18979
- onBlur: handleBlur
18974
+ onChange: handleChange
18980
18975
  }
18981
18976
  );
18982
18977
  }
@@ -19014,7 +19009,7 @@ function DuotonePanel({
19014
19009
  /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1.5", children: [
19015
19010
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.image.duotoneShadows") }),
19016
19011
  /* @__PURE__ */ jsx(
19017
- DebouncedColorInput2,
19012
+ DuotoneColorInput,
19018
19013
  {
19019
19014
  disabled: !canEdit,
19020
19015
  value: shadowColor,
@@ -19026,7 +19021,7 @@ function DuotonePanel({
19026
19021
  /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1.5", children: [
19027
19022
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.image.duotoneHighlights") }),
19028
19023
  /* @__PURE__ */ jsx(
19029
- DebouncedColorInput2,
19024
+ DuotoneColorInput,
19030
19025
  {
19031
19026
  disabled: !canEdit,
19032
19027
  value: highlightColor,
@@ -19365,14 +19360,87 @@ var DIS = "disabled:opacity-40 disabled:cursor-not-allowed";
19365
19360
  var LBL = "text-muted-foreground";
19366
19361
  var COL2 = "col-span-2";
19367
19362
  var isLineish = (el, st) => el.type === "connector" || st === "line";
19363
+ var LiveEditContext = /* @__PURE__ */ createContext(null);
19364
+ var LiveEditProvider = LiveEditContext.Provider;
19365
+ function useLiveEdit() {
19366
+ return useContext(LiveEditContext);
19367
+ }
19368
+ var changeHandlers = /* @__PURE__ */ new WeakMap();
19369
+ function settleOnChange(event) {
19370
+ const input = event.currentTarget;
19371
+ changeHandlers.get(input)?.current(input.value);
19372
+ }
19373
+ function liveController(latest) {
19374
+ return createLiveColorInput({
19375
+ read: () => {
19376
+ const { live, value } = latest.current;
19377
+ return live?.element ? { key: live.element.id, color: value, value: live.element } : void 0;
19378
+ },
19379
+ patch: (el, hex) => latest.current.patch?.(el, hex),
19380
+ lookup: (key) => latest.current.live?.elementById(key),
19381
+ preview: (patch, key) => latest.current.live?.previewElement(key, patch),
19382
+ commit: (_patch, _key, hex) => latest.current.onApply(hex),
19383
+ remember: (hex) => latest.current.pushColor(hex)
19384
+ });
19385
+ }
19386
+ function LiveColorInput({
19387
+ value,
19388
+ onApply,
19389
+ patch,
19390
+ ...rest
19391
+ }) {
19392
+ const live = useLiveEdit();
19393
+ const { pushColor } = useRecentColors();
19394
+ const latest = useRef({ value, onApply, patch, live, pushColor });
19395
+ latest.current = { value, onApply, patch, live, pushColor };
19396
+ const isLive = Boolean(live && patch);
19397
+ const controlRef = useRef(null);
19398
+ controlRef.current ??= liveController(latest);
19399
+ const control = controlRef.current;
19400
+ const onChangeRef = useRef((hex) => {
19401
+ if (latest.current.live && latest.current.patch) {
19402
+ control.change(hex);
19403
+ } else {
19404
+ latest.current.pushColor(hex);
19405
+ }
19406
+ });
19407
+ const attach = useCallback((input) => {
19408
+ if (input) {
19409
+ changeHandlers.set(input, onChangeRef);
19410
+ input.addEventListener("change", settleOnChange);
19411
+ }
19412
+ }, []);
19413
+ return /* @__PURE__ */ jsx(
19414
+ "input",
19415
+ {
19416
+ ...rest,
19417
+ type: "color",
19418
+ value,
19419
+ ref: attach,
19420
+ onChange: (event) => {
19421
+ if (!isLive) {
19422
+ onApply(event.target.value);
19423
+ } else if (event.nativeEvent.type === "input") {
19424
+ control.input(event.target.value);
19425
+ }
19426
+ },
19427
+ onBlur: (event) => {
19428
+ if (isLive) {
19429
+ control.blur(event.target.value);
19430
+ }
19431
+ }
19432
+ }
19433
+ );
19434
+ }
19368
19435
  function InspectorFields({
19369
19436
  sections,
19370
19437
  target,
19371
19438
  onPatch,
19372
- disabled = false
19439
+ disabled = false,
19440
+ liveTarget,
19441
+ livePatch
19373
19442
  }) {
19374
19443
  const { t } = useTranslation();
19375
- const commitRecentColor = useRecentColorCommit();
19376
19444
  const views = resolveInspectorSections(sections, target);
19377
19445
  const change = (sectionId, fieldId, raw) => {
19378
19446
  const patch = inspectorFieldPatch(sections, sectionId, fieldId, target, raw);
@@ -19420,15 +19488,23 @@ function InspectorFields({
19420
19488
  return /* @__PURE__ */ jsxs("label", { className: cls, children: [
19421
19489
  /* @__PURE__ */ jsx("span", { className: LBL, children: label }),
19422
19490
  /* @__PURE__ */ jsx(
19423
- "input",
19491
+ LiveColorInput,
19424
19492
  {
19425
- type: "color",
19426
19493
  "data-testid": field.testId,
19427
19494
  "aria-label": label,
19428
19495
  value: String(field.value),
19429
19496
  disabled,
19430
- ref: commitRecentColor,
19431
- onChange: (e) => change(sectionId, field.id, e.target.value),
19497
+ onApply: (hex) => change(sectionId, field.id, hex),
19498
+ patch: liveTarget && livePatch ? (el, hex) => {
19499
+ const fieldPatch = inspectorFieldPatch(
19500
+ sections,
19501
+ sectionId,
19502
+ field.id,
19503
+ liveTarget(el),
19504
+ hex
19505
+ );
19506
+ return fieldPatch === void 0 ? void 0 : livePatch(el, fieldPatch);
19507
+ } : void 0,
19432
19508
  className: `h-8 ${SEL} px-1`
19433
19509
  }
19434
19510
  )
@@ -19453,7 +19529,7 @@ function InspectorFields({
19453
19529
  )
19454
19530
  ] }, key);
19455
19531
  };
19456
- return /* @__PURE__ */ jsx(Fragment, { children: views.map((section) => /* @__PURE__ */ jsxs(React108.Fragment, { children: [
19532
+ return /* @__PURE__ */ jsx(Fragment, { children: views.map((section) => /* @__PURE__ */ jsxs(React109.Fragment, { children: [
19457
19533
  section.toggleable ? /* @__PURE__ */ jsxs("label", { className: `inline-flex items-center gap-2 text-foreground ${COL2}`, children: [
19458
19534
  /* @__PURE__ */ jsx(
19459
19535
  WebCheckbox,
@@ -20473,11 +20549,11 @@ function ColorPickerRow({
20473
20549
  selectedRef,
20474
20550
  disabled,
20475
20551
  prefix,
20476
- onChange
20552
+ onChange,
20553
+ styleChange
20477
20554
  }) {
20478
20555
  const { t } = useTranslation();
20479
20556
  const { pushColor } = useRecentColors();
20480
- const commitRecentColor = useRecentColorCommit();
20481
20557
  const commit = (color, ref) => {
20482
20558
  onChange(color, ref);
20483
20559
  pushColor(color);
@@ -20492,13 +20568,12 @@ function ColorPickerRow({
20492
20568
  /* @__PURE__ */ jsx("span", { className: LBL, children: label }),
20493
20569
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
20494
20570
  /* @__PURE__ */ jsx(
20495
- "input",
20571
+ LiveColorInput,
20496
20572
  {
20497
- type: "color",
20498
20573
  value,
20499
20574
  disabled,
20500
- ref: commitRecentColor,
20501
- onChange: (e) => onChange(e.target.value),
20575
+ onApply: onChange,
20576
+ patch: styleChange && ((el, hex) => shapeStyleChangePatch(el, hex, styleChange)),
20502
20577
  className: `h-8 flex-1 ${SEL} px-1 ${DIS}`
20503
20578
  }
20504
20579
  ),
@@ -20547,6 +20622,9 @@ function ColorPickerRow({
20547
20622
  /* @__PURE__ */ jsx(RecentColorsRow, { disabled, onCommit: commit })
20548
20623
  ] });
20549
20624
  }
20625
+ function shapeStyleChangePatch(el, hex, change) {
20626
+ return hasShapeProperties(el) ? shapeQuickStylePatch(el, change(hex, el.shapeStyle ?? {})) : void 0;
20627
+ }
20550
20628
  function GradientStopRow({
20551
20629
  stop: stop2,
20552
20630
  index,
@@ -20626,6 +20704,14 @@ function GradientStopRow({
20626
20704
  ] })
20627
20705
  ] });
20628
20706
  }
20707
+ var patternForeground = (color) => ({
20708
+ fillMode: "pattern",
20709
+ fillColor: color
20710
+ });
20711
+ var patternBackground = (color) => ({
20712
+ fillMode: "pattern",
20713
+ fillPatternBackgroundColor: color
20714
+ });
20629
20715
  function FillAdvancedControls({
20630
20716
  style,
20631
20717
  gradientStops,
@@ -20741,7 +20827,8 @@ function FillAdvancedControls({
20741
20827
  prefix: "pattern-fg",
20742
20828
  value: normalizeHexColor(style?.fillColor, DEFAULT_FILL_COLOR),
20743
20829
  disabled: isLine,
20744
- onChange: (color) => onUpdateShapeStyle({ fillMode: "pattern", fillColor: color })
20830
+ onChange: (color) => onUpdateShapeStyle(patternForeground(color)),
20831
+ styleChange: patternForeground
20745
20832
  }
20746
20833
  ),
20747
20834
  /* @__PURE__ */ jsx(
@@ -20751,10 +20838,8 @@ function FillAdvancedControls({
20751
20838
  prefix: "pattern-bg",
20752
20839
  value: normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
20753
20840
  disabled: isLine,
20754
- onChange: (color) => onUpdateShapeStyle({
20755
- fillMode: "pattern",
20756
- fillPatternBackgroundColor: color
20757
- })
20841
+ onChange: (color) => onUpdateShapeStyle(patternBackground(color)),
20842
+ styleChange: patternBackground
20758
20843
  }
20759
20844
  )
20760
20845
  ] }),
@@ -20844,6 +20929,9 @@ function QuickStylesGallery({
20844
20929
  /* @__PURE__ */ jsx("pptx-ui-ribbon-gallery", { ref, mode: "panel", compact: true })
20845
20930
  ] });
20846
20931
  }
20932
+ function shapeStyleOf(el) {
20933
+ return hasShapeProperties(el) ? el.shapeStyle : void 0;
20934
+ }
20847
20935
  function StrokeEffectsSection({
20848
20936
  style,
20849
20937
  isLine,
@@ -20859,7 +20947,8 @@ function StrokeEffectsSection({
20859
20947
  prefix: "stroke",
20860
20948
  value: normalizeHexColor(style?.strokeColor, DEFAULT_STROKE_COLOR),
20861
20949
  selectedRef: style?.strokeColorRef,
20862
- onChange: onSetStrokeColor
20950
+ onChange: onSetStrokeColor,
20951
+ styleChange: (hex, current) => shapeOutlineChange(hex, void 0, current)
20863
20952
  }
20864
20953
  ),
20865
20954
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
@@ -20883,7 +20972,9 @@ function StrokeEffectsSection({
20883
20972
  {
20884
20973
  sections: SHAPE_EFFECT_SECTIONS,
20885
20974
  target: style,
20886
- onPatch: onUpdateShapeStyle
20975
+ onPatch: onUpdateShapeStyle,
20976
+ liveTarget: shapeStyleOf,
20977
+ livePatch: shapeQuickStylePatch
20887
20978
  }
20888
20979
  )
20889
20980
  ] });
@@ -20971,7 +21062,8 @@ function FillStrokeProperties({
20971
21062
  value: normalizeHexColor(style?.fillColor, DEFAULT_FILL_COLOR),
20972
21063
  selectedRef: style?.fillColorRef,
20973
21064
  disabled: line,
20974
- onChange: onSetFillColor
21065
+ onChange: onSetFillColor,
21066
+ styleChange: (hex) => shapeFillChange(hex)
20975
21067
  }
20976
21068
  ),
20977
21069
  /* @__PURE__ */ jsx(
@@ -21693,7 +21785,7 @@ function TextWarpGallery({
21693
21785
  onUpdateTextStyle
21694
21786
  }) {
21695
21787
  const { t } = useTranslation();
21696
- const [expanded, setExpanded] = React108.useState(false);
21788
+ const [expanded, setExpanded] = React109.useState(false);
21697
21789
  const currentPreset = ts?.textWarpPreset || "textNoShape";
21698
21790
  const descriptor = useMemo(() => buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
21699
21791
  const ref = useRef(null);
@@ -21763,6 +21855,9 @@ function TextAdvancedSections({
21763
21855
  /* @__PURE__ */ jsx(Text3DProperties, { ts, onUpdateTextStyle })
21764
21856
  ] });
21765
21857
  }
21858
+ function textColorPatch(el, hex) {
21859
+ return hasTextProperties(el) ? applyTextStyleUpdate(el, { color: hex, colorRef: void 0 }, null).patch : void 0;
21860
+ }
21766
21861
  function ShapeTextPanels({
21767
21862
  selectedElement,
21768
21863
  canEdit,
@@ -21801,7 +21896,7 @@ function ShapeTextPanels({
21801
21896
  canEdit,
21802
21897
  onUpdateShapeStyle: onUpdateElementStyle,
21803
21898
  onSetFillColor: (hex, ref) => onUpdateElementStyle({ fillColor: hex, fillMode: "solid", fillColorRef: ref }),
21804
- onSetStrokeColor: (hex, ref) => onUpdateElementStyle(shapeOutlineChange(hex, ref, selectedElement.shapeStyle ?? {}))
21899
+ onSetStrokeColor: (hex, ref) => onUpdateElementStyle(strokeColorChange(selectedElement, hex, ref))
21805
21900
  }
21806
21901
  )
21807
21902
  ] }),
@@ -21827,13 +21922,14 @@ function ShapeTextPanels({
21827
21922
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
21828
21923
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Color" }),
21829
21924
  /* @__PURE__ */ jsx(
21830
- DebouncedColorInput,
21925
+ LiveColorInput,
21831
21926
  {
21832
21927
  disabled: !canEdit,
21833
- ariaLabel: "Text Color",
21928
+ "aria-label": "Text Color",
21834
21929
  value: normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
21835
21930
  className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
21836
- onCommit: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 })
21931
+ onApply: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 }),
21932
+ patch: textColorPatch
21837
21933
  }
21838
21934
  )
21839
21935
  ] }),
@@ -22137,7 +22233,7 @@ function SmartArtStyleControls({
22137
22233
  onChangeStyle
22138
22234
  }) {
22139
22235
  const { t } = useTranslation();
22140
- const translate = React108.useCallback((key) => t(key), [t]);
22236
+ const translate = React109.useCallback((key) => t(key), [t]);
22141
22237
  return /* @__PURE__ */ jsxs(Fragment, { children: [
22142
22238
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
22143
22239
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.smartart.colorScheme") }),
@@ -22190,7 +22286,7 @@ function SmartArtPropertiesPanel({
22190
22286
  }) {
22191
22287
  const { t } = useTranslation();
22192
22288
  const { pushColor } = useRecentColors();
22193
- const paneRef = React108.useRef(null);
22289
+ const paneRef = React109.useRef(null);
22194
22290
  const applySmartArtData = (newData) => {
22195
22291
  const reflowed = box ? rebuildDrawingShapesIfCleared(
22196
22292
  newData,
@@ -22202,12 +22298,12 @@ function SmartArtPropertiesPanel({
22202
22298
  ) : newData;
22203
22299
  onUpdateElement({ smartArtData: reflowed });
22204
22300
  };
22205
- const applyRef = React108.useRef(applySmartArtData);
22301
+ const applyRef = React109.useRef(applySmartArtData);
22206
22302
  applyRef.current = applySmartArtData;
22207
22303
  const updateSmartArt = (patch) => {
22208
22304
  applySmartArtData({ ...smartArtData, ...patch });
22209
22305
  };
22210
- React108.useLayoutEffect(() => {
22306
+ React109.useLayoutEffect(() => {
22211
22307
  if (paneRef.current) {
22212
22308
  paneRef.current.state = {
22213
22309
  smartArtData,
@@ -22216,7 +22312,7 @@ function SmartArtPropertiesPanel({
22216
22312
  };
22217
22313
  }
22218
22314
  }, [smartArtData, canEdit, t]);
22219
- React108.useEffect(() => {
22315
+ React109.useEffect(() => {
22220
22316
  const pane = paneRef.current;
22221
22317
  if (!pane) {
22222
22318
  return;
@@ -23653,7 +23749,7 @@ function CommentBody({ text, mentions, className }) {
23653
23749
  index
23654
23750
  ) : (
23655
23751
  // eslint-disable-next-line react/no-array-index-key -- segments are positional
23656
- /* @__PURE__ */ jsx(React108.Fragment, { children: segment.text }, index)
23752
+ /* @__PURE__ */ jsx(React109.Fragment, { children: segment.text }, index)
23657
23753
  )
23658
23754
  ) });
23659
23755
  }
@@ -25170,7 +25266,7 @@ function PresentationPropertiesPanel({
25170
25266
  onUpdateTagCollections
25171
25267
  }) {
25172
25268
  const { t } = useTranslation();
25173
- const handleTransitionChange = React108.useCallback(
25269
+ const handleTransitionChange = React109.useCallback(
25174
25270
  (updates) => {
25175
25271
  onUpdateSlide({
25176
25272
  transition: mergeSlideTransition(activeSlide?.transition, updates)
@@ -26610,53 +26706,26 @@ function PrintDialog({
26610
26706
  const [slideRange, setSlideRange] = useState("all");
26611
26707
  const [customFrom, setCustomFrom] = useState(1);
26612
26708
  const [customTo, setCustomTo] = useState(slides.length);
26613
- const effectiveOrientation = useMemo(() => {
26614
- if (printWhat === "notes" || printWhat === "outline") {
26615
- return "portrait";
26616
- }
26617
- if (printWhat === "handouts") {
26618
- return "portrait";
26619
- }
26620
- return orientation;
26621
- }, [printWhat, orientation]);
26622
- const slideCount = useMemo(() => {
26623
- if (slideRange === "all") {
26624
- return slides.length;
26625
- }
26626
- if (slideRange === "current") {
26627
- return 1;
26628
- }
26629
- const from = Math.max(1, Math.min(customFrom, slides.length));
26630
- const to = Math.max(from, Math.min(customTo, slides.length));
26631
- return to - from + 1;
26632
- }, [slideRange, slides.length, customFrom, customTo]);
26633
- const pageCount = useMemo(() => {
26634
- if (printWhat === "slides") {
26635
- return slideCount;
26636
- }
26637
- if (printWhat === "notes") {
26638
- return slideCount;
26639
- }
26640
- if (printWhat === "outline") {
26641
- return 1;
26642
- }
26643
- return Math.ceil(slideCount / slidesPerPage);
26644
- }, [printWhat, slideCount, slidesPerPage]);
26645
- const previewSlideIndices = useMemo(() => {
26646
- if (slideRange === "current") {
26647
- return [activeSlideIndex];
26648
- }
26649
- if (slideRange === "custom") {
26650
- const from = Math.max(0, customFrom - 1);
26651
- const to = Math.min(slides.length - 1, customTo - 1);
26652
- return Array.from({ length: Math.max(0, to - from + 1) }, (_, i) => from + i);
26653
- }
26654
- return Array.from({ length: slides.length }, (_, i) => i);
26655
- }, [slideRange, activeSlideIndex, customFrom, customTo, slides.length]);
26709
+ const effectiveOrientation$1 = useMemo(
26710
+ () => effectiveOrientation(printWhat, orientation),
26711
+ [printWhat, orientation]
26712
+ );
26713
+ const slideCount = useMemo(
26714
+ () => computeSlideCount(slideRange, slides.length, customFrom, customTo),
26715
+ [slideRange, slides.length, customFrom, customTo]
26716
+ );
26717
+ const pageCount = useMemo(
26718
+ () => estimatePageCount(printWhat, slideCount, slidesPerPage),
26719
+ [printWhat, slideCount, slidesPerPage]
26720
+ );
26721
+ const previewSlideIndices = useMemo(
26722
+ () => computeSlideIndices(slideRange, activeSlideIndex, slides.length, customFrom, customTo),
26723
+ [slideRange, activeSlideIndex, customFrom, customTo, slides.length]
26724
+ );
26656
26725
  const handlePrint = useCallback(() => {
26657
26726
  onPrint({
26658
26727
  printWhat,
26659
- orientation: effectiveOrientation,
26728
+ orientation: effectiveOrientation$1,
26660
26729
  colorMode,
26661
26730
  frameSlides,
26662
26731
  slidesPerPage,
@@ -26669,7 +26738,7 @@ function PrintDialog({
26669
26738
  });
26670
26739
  }, [
26671
26740
  printWhat,
26672
- effectiveOrientation,
26741
+ effectiveOrientation$1,
26673
26742
  colorMode,
26674
26743
  frameSlides,
26675
26744
  slidesPerPage,
@@ -26761,7 +26830,7 @@ function PrintDialog({
26761
26830
  {
26762
26831
  slideIndices: previewSlideIndices,
26763
26832
  slidesPerPage,
26764
- orientation: effectiveOrientation,
26833
+ orientation: effectiveOrientation$1,
26765
26834
  frameSlides
26766
26835
  }
26767
26836
  ) }),
@@ -28387,10 +28456,17 @@ function ViewerInspector({
28387
28456
  tableStyleMap,
28388
28457
  onTableStyleMapChange,
28389
28458
  onDeleteTableStyle,
28390
- panelWidth
28459
+ panelWidth,
28460
+ onPreviewElement,
28461
+ elementById
28391
28462
  }) {
28392
28463
  const { t } = useTranslation();
28393
28464
  const regionRenderer = useRegionRenderer("inspector");
28465
+ const liveEdit = onPreviewElement ? {
28466
+ element: selectedElement,
28467
+ previewElement: onPreviewElement,
28468
+ elementById: elementById ?? (() => void 0)
28469
+ } : null;
28394
28470
  if (!isOpen) {
28395
28471
  return null;
28396
28472
  }
@@ -28418,7 +28494,7 @@ function ViewerInspector({
28418
28494
  "aria-label": t("pptx.inspector.properties"),
28419
28495
  className: "h-full flex-shrink-0 max-md:absolute max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:z-30",
28420
28496
  style: panelWidth ? { width: panelWidth } : void 0,
28421
- children: /* @__PURE__ */ jsx(
28497
+ children: /* @__PURE__ */ jsx(LiveEditProvider, { value: liveEdit, children: /* @__PURE__ */ jsx(
28422
28498
  InspectorPane,
28423
28499
  {
28424
28500
  isOpen,
@@ -28495,7 +28571,7 @@ function ViewerInspector({
28495
28571
  onDeleteTableStyle,
28496
28572
  panelWidth
28497
28573
  }
28498
- )
28574
+ ) })
28499
28575
  }
28500
28576
  );
28501
28577
  }
@@ -28651,7 +28727,7 @@ function ViewerToolbarSection(props) {
28651
28727
  },
28652
28728
  [activeSlide, propertyHandlers]
28653
28729
  );
28654
- const scopedLayoutOptions = React108.useMemo(
28730
+ const scopedLayoutOptions = React109.useMemo(
28655
28731
  () => scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
28656
28732
  [s.layoutOptions, activeSlide]
28657
28733
  );
@@ -30498,7 +30574,7 @@ function useTableStyleMapHandlers(input) {
30498
30574
  var AiChatPanel = /* @__PURE__ */ lazy(async () => {
30499
30575
  const [{ useChat }, { default: Panel }] = await Promise.all([
30500
30576
  import('@ai-sdk/react'),
30501
- import('./AiChatPanel-R323KNGN.mjs')
30577
+ import('./AiChatPanel-AI75AT6C.mjs')
30502
30578
  ]);
30503
30579
  function BoundAiChatPanel(props) {
30504
30580
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -31176,6 +31252,8 @@ function ViewerSidePanels(props) {
31176
31252
  onUpdateElementStyle: ops.updateSelectedShapeStyle,
31177
31253
  onUpdateTextStyle: ops.updateSelectedTextStyle,
31178
31254
  onUpdateElement: ops.updateSelectedElement,
31255
+ onPreviewElement: (id, patch) => history.withoutUndoStep(() => ops.updateElementById(id, patch)),
31256
+ elementById: (id) => s.elementLookup.get(id),
31179
31257
  onApplySelection: ops.applySelection,
31180
31258
  onSetCanvasSize: s.setCanvasSize,
31181
31259
  slideSizeEmu: s.slideSizeEmu,
@@ -33076,11 +33154,12 @@ function useMasterViewCrud(input) {
33076
33154
  slides,
33077
33155
  slideMasters,
33078
33156
  target,
33079
- setSlides,
33080
33157
  setSlideMasters,
33158
+ setLayoutOptions,
33081
33159
  setActiveMasterIndex,
33082
33160
  setActiveLayoutIndex,
33083
33161
  markDirty,
33162
+ forgetHistory,
33084
33163
  pushToast
33085
33164
  } = input;
33086
33165
  const { t } = useTranslation();
@@ -33126,10 +33205,11 @@ function useMasterViewCrud(input) {
33126
33205
  return;
33127
33206
  }
33128
33207
  handlerRef.current = result.handler;
33129
- setSlides(result.data.slides);
33130
33208
  setSlideMasters(result.data.slideMasters ?? []);
33209
+ setLayoutOptions(result.data.layoutOptions ?? []);
33131
33210
  setActiveMasterIndex(result.target.masterIndex);
33132
33211
  setActiveLayoutIndex(result.target.layoutIndex);
33212
+ forgetStepsUsingRemovedParts(forgetHistory, data, result.data);
33133
33213
  markDirty();
33134
33214
  },
33135
33215
  [
@@ -33140,10 +33220,11 @@ function useMasterViewCrud(input) {
33140
33220
  t,
33141
33221
  data,
33142
33222
  pushToast,
33143
- setSlides,
33144
33223
  setSlideMasters,
33224
+ setLayoutOptions,
33145
33225
  setActiveMasterIndex,
33146
33226
  setActiveLayoutIndex,
33227
+ forgetHistory,
33147
33228
  markDirty
33148
33229
  ]
33149
33230
  );
@@ -33207,8 +33288,8 @@ function useRibbonGalleryCommands2(input) {
33207
33288
  if (!editable) {
33208
33289
  return;
33209
33290
  }
33210
- if (result.kind === "themeEffects" || result.kind === "backgroundStyle" || result.kind === "sequence") {
33211
- void deckStyle?.commit(result);
33291
+ if (deckStyle && commitsThroughDeckStyle(result)) {
33292
+ void deckStyle.commit(result);
33212
33293
  return;
33213
33294
  }
33214
33295
  deckStyle?.endPreview();
@@ -33607,7 +33688,8 @@ var PowerPointViewerBody = /* @__PURE__ */ forwardRef(
33607
33688
  ribbonAddIns,
33608
33689
  ai,
33609
33690
  customization,
33610
- initialSlide
33691
+ initialSlide,
33692
+ googleFonts
33611
33693
  } = props;
33612
33694
  const hostCanEdit = canEditProp && !readOnly;
33613
33695
  const collaboration = resolveCollaborationConfig(collaborationInput);
@@ -33899,6 +33981,7 @@ var PowerPointViewerBody = /* @__PURE__ */ forwardRef(
33899
33981
  setIsDirty(true);
33900
33982
  onChangeCallback.current?.();
33901
33983
  }, [setIsDirty]);
33984
+ const restoreHistoryThemeRef = useRef(void 0);
33902
33985
  const history = useEditorHistory({
33903
33986
  slides,
33904
33987
  canvasSize,
@@ -33916,6 +33999,9 @@ var PowerPointViewerBody = /* @__PURE__ */ forwardRef(
33916
33999
  hasActivePointerInteraction,
33917
34000
  pointerCommitNonce: state.pointerCommitNonce,
33918
34001
  onDirty: markDocumentDirty,
34002
+ theme: state.theme,
34003
+ slideMasters: state.slideMasters,
34004
+ onRestoreTheme: (recorded) => restoreHistoryThemeRef.current?.(recorded),
33919
34005
  setSlides: state.setSlides,
33920
34006
  setCanvasSize: state.setCanvasSize,
33921
34007
  setActiveSlideIndex: state.setActiveSlideIndex,
@@ -34049,11 +34135,7 @@ ${url}`)
34049
34135
  history,
34050
34136
  embeddedFontFamilies: state.embeddedFonts.map((font) => font.name)
34051
34137
  });
34052
- useEffect(() => {
34053
- state.setSelectedElementId(null);
34054
- state.setSelectedElementIds([]);
34055
- state.setInlineEditingElementId(null);
34056
- }, [activeSlideIndex]);
34138
+ useClearSelectionOnSlideChange(state, activeSlideIndex);
34057
34139
  const zoomBeforePresentRef = useRef(null);
34058
34140
  useEffect(() => {
34059
34141
  if (mode !== "present") {
@@ -34147,6 +34229,7 @@ ${url}`)
34147
34229
  // http(s) image sources actually load.
34148
34230
  allowExternalImages: viewerOptions.trust.allowExternalContent,
34149
34231
  initialSlide,
34232
+ googleFonts,
34150
34233
  setReadOnlyRecommendation: readOnlyRec.setRecommendation,
34151
34234
  setModifyVerifier: readOnlyRec.setModifyVerifier,
34152
34235
  setCompatToasts: compatToastsState.setToasts,
@@ -34189,6 +34272,7 @@ ${url}`)
34189
34272
  customizationApi: custom.api,
34190
34273
  customization: customizationResolved
34191
34274
  });
34275
+ restoreHistoryThemeRef.current = (recorded) => void themeHandlers.handleRestoreHistoryTheme(recorded);
34192
34276
  const slidePackageClipboardRef = useRef(null);
34193
34277
  const slidePackageHost = {
34194
34278
  getSnapshot: () => handlerRef.current ? {
@@ -34199,11 +34283,12 @@ ${url}`)
34199
34283
  editable: canEdit
34200
34284
  } : null,
34201
34285
  commit: (result) => {
34202
- history.commitSlides(result.slides);
34286
+ const pastedMasters = result.data.slideMasters ?? [];
34287
+ history.commitSlides(result.slides, void 0, void 0, pastedMasters);
34203
34288
  handlerRef.current = result.handler;
34204
34289
  actionSoundHandlerRef.current = result.handler;
34205
34290
  state.setTemplateElementsBySlideId(result.templateElementsBySlideId);
34206
- state.setSlideMasters(result.data.slideMasters ?? []);
34291
+ state.setSlideMasters(pastedMasters);
34207
34292
  state.setLayoutOptions(result.data.layoutOptions ?? []);
34208
34293
  state.setThemeOptions(result.data.themeOptions ?? []);
34209
34294
  for (const [path, url] of result.mediaUrls) {
@@ -34312,11 +34397,12 @@ ${url}`)
34312
34397
  masterIndex: state.activeMasterIndex,
34313
34398
  layoutIndex: state.activeLayoutIndex
34314
34399
  },
34315
- setSlides: state.setSlides,
34316
34400
  setSlideMasters: state.setSlideMasters,
34401
+ setLayoutOptions: state.setLayoutOptions,
34317
34402
  setActiveMasterIndex: state.setActiveMasterIndex,
34318
34403
  setActiveLayoutIndex: state.setActiveLayoutIndex,
34319
34404
  markDirty: history.markDirty,
34405
+ forgetHistory: history.forgetHistory,
34320
34406
  pushToast: (toast) => compatToastsState.setToasts((prev) => [...prev, toast])
34321
34407
  });
34322
34408
  const applyAiTheme = useCallback(