pptx-react-viewer 4.16.0 → 4.16.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 (133) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{AiChatPanel-DHLJ6LKF.js → AiChatPanel-DFZSMXJB.js} +28 -28
  3. package/dist/AiChatPanel-DFZSMXJB.js.br +0 -0
  4. package/dist/AiChatPanel-DFZSMXJB.js.gz +0 -0
  5. package/dist/{AiChatPanel-5Z4BYP7S.mjs → AiChatPanel-K3PL6O3M.mjs} +4 -4
  6. package/dist/AiChatPanel-K3PL6O3M.mjs.br +0 -0
  7. package/dist/AiChatPanel-K3PL6O3M.mjs.gz +0 -0
  8. package/dist/{Model3DScene-N36X5Z2Z.mjs → Model3DScene-EOKTWVG7.mjs} +1 -1
  9. package/dist/Model3DScene-EOKTWVG7.mjs.br +0 -0
  10. package/dist/Model3DScene-EOKTWVG7.mjs.gz +0 -0
  11. package/dist/{Model3DScene-AXT5KCUX.js → Model3DScene-ZYC5U7NY.js} +2 -2
  12. package/dist/Model3DScene-ZYC5U7NY.js.br +0 -0
  13. package/dist/Model3DScene-ZYC5U7NY.js.gz +0 -0
  14. package/dist/{chunk-CJSIEITL.mjs → chunk-33XJSD62.mjs} +3 -0
  15. package/dist/chunk-33XJSD62.mjs.br +0 -0
  16. package/dist/{chunk-CJSIEITL.mjs.gz → chunk-33XJSD62.mjs.gz} +0 -0
  17. package/dist/{chunk-XZUIS3VB.js → chunk-4VV5HJXQ.js} +2683 -952
  18. package/dist/chunk-4VV5HJXQ.js.br +0 -0
  19. package/dist/chunk-4VV5HJXQ.js.gz +0 -0
  20. package/dist/{chunk-BTTAYCGK.mjs → chunk-6PWT46Y4.mjs} +256 -559
  21. package/dist/chunk-6PWT46Y4.mjs.br +0 -0
  22. package/dist/chunk-6PWT46Y4.mjs.gz +0 -0
  23. package/dist/{chunk-FVLBN45Z.js → chunk-CWVPHCMJ.js} +5 -5
  24. package/dist/chunk-CWVPHCMJ.js.br +0 -0
  25. package/dist/chunk-CWVPHCMJ.js.gz +0 -0
  26. package/dist/{chunk-MFGRRONU.mjs → chunk-KK2CFTKC.mjs} +2 -2
  27. package/dist/chunk-KK2CFTKC.mjs.br +0 -0
  28. package/dist/chunk-KK2CFTKC.mjs.gz +0 -0
  29. package/dist/{chunk-XEYB25ZT.js → chunk-LJEI7O6S.js} +3 -0
  30. package/dist/chunk-LJEI7O6S.js.br +0 -0
  31. package/dist/{chunk-XEYB25ZT.js.gz → chunk-LJEI7O6S.js.gz} +0 -0
  32. package/dist/{chunk-WRQ7K3DG.mjs → chunk-QZSA3E4L.mjs} +1 -1
  33. package/dist/chunk-QZSA3E4L.mjs.br +0 -0
  34. package/dist/{chunk-WRQ7K3DG.mjs.gz → chunk-QZSA3E4L.mjs.gz} +0 -0
  35. package/dist/{chunk-QAVJDYB2.js → chunk-RE6NDQH7.js} +197 -197
  36. package/dist/chunk-RE6NDQH7.js.br +0 -0
  37. package/dist/chunk-RE6NDQH7.js.gz +0 -0
  38. package/dist/{chunk-QLUA63T3.mjs → chunk-VUI3VE7K.mjs} +4 -4
  39. package/dist/chunk-VUI3VE7K.mjs.br +0 -0
  40. package/dist/chunk-VUI3VE7K.mjs.gz +0 -0
  41. package/dist/{chunk-MJ6LTUJ3.mjs → chunk-VUNRFZRR.mjs} +2679 -947
  42. package/dist/chunk-VUNRFZRR.mjs.br +0 -0
  43. package/dist/chunk-VUNRFZRR.mjs.gz +0 -0
  44. package/dist/{chunk-UVK2WBCU.js → chunk-VVGYZBF5.js} +2270 -2573
  45. package/dist/chunk-VVGYZBF5.js.br +0 -0
  46. package/dist/chunk-VVGYZBF5.js.gz +0 -0
  47. package/dist/{chunk-BZNYI5U6.js → chunk-XVJSAY7C.js} +821 -821
  48. package/dist/chunk-XVJSAY7C.js.br +0 -0
  49. package/dist/chunk-XVJSAY7C.js.gz +0 -0
  50. package/dist/i18n/de.cjs +3 -0
  51. package/dist/i18n/de.cjs.br +0 -0
  52. package/dist/i18n/de.cjs.gz +0 -0
  53. package/dist/i18n/de.mjs +3 -0
  54. package/dist/i18n/de.mjs.br +0 -0
  55. package/dist/i18n/de.mjs.gz +0 -0
  56. package/dist/i18n/es.cjs +3 -0
  57. package/dist/i18n/es.cjs.br +0 -0
  58. package/dist/i18n/es.cjs.gz +0 -0
  59. package/dist/i18n/es.mjs +3 -0
  60. package/dist/i18n/es.mjs.br +0 -0
  61. package/dist/i18n/es.mjs.gz +0 -0
  62. package/dist/i18n/fr.cjs +3 -0
  63. package/dist/i18n/fr.cjs.br +0 -0
  64. package/dist/i18n/fr.cjs.gz +0 -0
  65. package/dist/i18n/fr.mjs +3 -0
  66. package/dist/i18n/fr.mjs.br +0 -0
  67. package/dist/i18n/fr.mjs.gz +0 -0
  68. package/dist/i18n/zh-CN.cjs +3 -0
  69. package/dist/i18n/zh-CN.cjs.br +0 -0
  70. package/dist/i18n/zh-CN.cjs.gz +0 -0
  71. package/dist/i18n/zh-CN.mjs +3 -0
  72. package/dist/i18n/zh-CN.mjs.br +0 -0
  73. package/dist/i18n/zh-CN.mjs.gz +0 -0
  74. package/dist/i18n.js +4 -4
  75. package/dist/i18n.js.br +0 -0
  76. package/dist/i18n.js.gz +0 -0
  77. package/dist/i18n.mjs +1 -1
  78. package/dist/i18n.mjs.br +0 -0
  79. package/dist/i18n.mjs.gz +0 -0
  80. package/dist/index.d.ts +102 -0
  81. package/dist/index.js +63 -63
  82. package/dist/index.js.br +0 -0
  83. package/dist/index.js.gz +0 -0
  84. package/dist/index.mjs +6 -6
  85. package/dist/index.mjs.br +0 -0
  86. package/dist/index.mjs.gz +0 -0
  87. package/dist/internals.d.ts +102 -0
  88. package/dist/internals.js +105 -105
  89. package/dist/internals.js.br +0 -0
  90. package/dist/internals.js.gz +0 -0
  91. package/dist/internals.mjs +4 -4
  92. package/dist/internals.mjs.br +0 -0
  93. package/dist/internals.mjs.gz +0 -0
  94. package/dist/pptx-viewer.css +1 -1
  95. package/dist/pptx-viewer.css.br +0 -0
  96. package/dist/pptx-viewer.css.gz +0 -0
  97. package/dist/viewer/index.d.ts +102 -0
  98. package/dist/viewer/index.js +27 -27
  99. package/dist/viewer/index.js.br +0 -0
  100. package/dist/viewer/index.js.gz +0 -0
  101. package/dist/viewer/index.mjs +6 -6
  102. package/dist/viewer/index.mjs.br +0 -0
  103. package/dist/viewer/index.mjs.gz +0 -0
  104. package/package.json +1 -1
  105. package/dist/AiChatPanel-5Z4BYP7S.mjs.br +0 -0
  106. package/dist/AiChatPanel-5Z4BYP7S.mjs.gz +0 -0
  107. package/dist/AiChatPanel-DHLJ6LKF.js.br +0 -0
  108. package/dist/AiChatPanel-DHLJ6LKF.js.gz +0 -0
  109. package/dist/Model3DScene-AXT5KCUX.js.br +0 -0
  110. package/dist/Model3DScene-AXT5KCUX.js.gz +0 -0
  111. package/dist/Model3DScene-N36X5Z2Z.mjs.br +0 -0
  112. package/dist/Model3DScene-N36X5Z2Z.mjs.gz +0 -0
  113. package/dist/chunk-BTTAYCGK.mjs.br +0 -0
  114. package/dist/chunk-BTTAYCGK.mjs.gz +0 -0
  115. package/dist/chunk-BZNYI5U6.js.br +0 -0
  116. package/dist/chunk-BZNYI5U6.js.gz +0 -0
  117. package/dist/chunk-CJSIEITL.mjs.br +0 -0
  118. package/dist/chunk-FVLBN45Z.js.br +0 -0
  119. package/dist/chunk-FVLBN45Z.js.gz +0 -0
  120. package/dist/chunk-MFGRRONU.mjs.br +0 -0
  121. package/dist/chunk-MFGRRONU.mjs.gz +0 -0
  122. package/dist/chunk-MJ6LTUJ3.mjs.br +0 -0
  123. package/dist/chunk-MJ6LTUJ3.mjs.gz +0 -0
  124. package/dist/chunk-QAVJDYB2.js.br +0 -0
  125. package/dist/chunk-QAVJDYB2.js.gz +0 -0
  126. package/dist/chunk-QLUA63T3.mjs.br +0 -0
  127. package/dist/chunk-QLUA63T3.mjs.gz +0 -0
  128. package/dist/chunk-UVK2WBCU.js.br +0 -0
  129. package/dist/chunk-UVK2WBCU.js.gz +0 -0
  130. package/dist/chunk-WRQ7K3DG.mjs.br +0 -0
  131. package/dist/chunk-XEYB25ZT.js.br +0 -0
  132. package/dist/chunk-XZUIS3VB.js.br +0 -0
  133. package/dist/chunk-XZUIS3VB.js.gz +0 -0
@@ -1,12 +1,12 @@
1
- import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-WRQ7K3DG.mjs';
2
- import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, useCollaboration, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, SlideBackgroundImageLayer, StaticElementRenderer, safePrompt, scopeLayoutOptionsToActiveSlide, ChartPartSelectionProvider, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, ViewerOptionsStoreContext, ViewerOptionsContext, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, ElementRenderer, InlineCollaborationContext, SmartArtRenderer, playAnimationSound, ResizeHandles, imgSrc, renderStrokeView, useChartPartSelection, resolveSmartArtDataPalette } from './chunk-QLUA63T3.mjs';
3
- import { SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, cn, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, TOOLBAR_SECTIONS, isConnectorOrLineElement, GRID_SIZE, MIN_ELEMENT_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, DEFAULT_STROKE_COLOR, STROKE_DASH_OPTIONS } from './chunk-MFGRRONU.mjs';
4
- import { FIXED_TAB_GALLERIES, EMPTY_RESOLVED_CUSTOMIZATION, ANIMATION_DIRECTION_LABEL_KEYS, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isFeatureEnabled, isDialogAvailable, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, isPanelVisible, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, RULER_THICKNESS, RULER_FONT_SIZE, editorThumbnailHeight, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, EDITOR_THUMBNAIL_WIDTH, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, normalizeHexColor, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, listAutosaveSnapshots, resolveExpiredAutosaveSnapshots, deleteAutosaveSnapshot, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, EDITOR_CHROME_CSS, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, PASTE_SPECIAL_OPTIONS, getDensePanelTouchTargetPx, shouldStickyActionRow, customizeOptionsTabs, VIEWER_OPTIONS_TABS, isOptionsPageVisible, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, editorThumbnailWidth, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, resolveEditPointsAvailability, isCurrentLayout, themeColorSchemesEqual, observeElementHeight, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent2, resolveDefaultPrintSettings, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, cropModeKeyAction, extraQuickAccessCommands, visibleContextualTabs, resolveActiveRibbonTab, resolveScreenTip, contextualTabLabelKey, RIBBON_CONTEXTUAL_TAB_ATTR, TAB_ROW_ACTION_CLASSES, customizeBackstageNav, BACKSTAGE_NAV, listBackstageRecentFiles, BACKSTAGE_BACK_CLASSES, BACKSTAGE_NAV_CLASSES, hasTextProperties, textFontSizePtToPx, INSERT_CHART_TYPES, ACTION_BUTTON_PRESETS, hasShapeProperties, shapeFillChange, shapeOutlineChange, CONTEXTUAL_TAB_GROUPS, editorThumbnailStep, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSlidePaneContextMenuEntries, isEditPointsEnabled, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, subtitleRecognitionLanguage, subtitleSettingsFromOptions, getSpeechRecognitionCtor, mergeCaptionResults, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, customizeContextMenuEntries, buildContextMenuEntries, customizeCanvasContextMenuEntries, buildCanvasContextMenuEntries, buildLayoutPreviewGeometry, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, themeEditorLabels, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, MIN_TOUCH_TARGET_PX, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, customizeBackstageCards, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, COMMON_FONT_SIZES, RIBBON_CONTROL_ATTR, FREEFORM_TOOL_IDS, isDrawingToolVisible, FREEFORM_TOOL_LABEL_KEYS, getSelectionTextStyleFlags, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, TEXT_DECORATION_FLAGS, nextToggleValue, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, RIBBON_GROUP_ATTR, RIBBON_SHAPE_SWATCHES, buildRibbonGallery, galleryHasItems, inlineGalleryItems, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_COMMAND_GROUPS, RECORD_COMMAND_GROUPS, HELP_RIBBON_COMMANDS, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, clampFlyoutPosition, computeAnchoredPopupPosition, applyTableStyleDelete, applyTableStyleMapChange, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, SLIDE_TEMPLATES, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_GALLERY_POPUP_ATTR, applyRibbonGalleryItem, galleryItemLabel, RIBBON_GALLERY_ITEM_ATTR, RIBBON_GALLERY_ATTR, MERGE_SHAPES_LABEL_KEY, MERGE_SHAPES_HINT_KEY, MERGE_SHAPES_MENU_ITEMS, CROP_LABEL_KEY, CROP_ASPECT_LABEL_KEY, CROP_ASPECT_GROUP_LABEL_KEYS, CROP_ASPECT_PRESETS, CROP_FILL_LABEL_KEY, CROP_FIT_LABEL_KEY, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, playAnimationRibbonPreview, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, SLIDE_SHOW_OPTIONS, createViewerOptionsStore, subtitleSettingsLabels, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, getElementTransformWithoutRotation, getElementTransform, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, buildCropOverlay, CROP_HANDLE_ARIA_KEY, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, canEditElementPoints, hasMultipleSelectedTableCells, isElementLocked, isImageLikeElement, mergeSlideTransition, getElementLabel, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildSlideTemplateContent, updateSubtitleSettings, buildFreeformShapeElement, buildLiveInkStrokeView, beginCropDrag, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, FreeformToolSession, attachOverlayKeyboard, EditPointsSession, EDIT_POINTS_STYLE, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setDataLabelsRangeCache, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, THEME_COLOR_SCHEME_KEYS, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_PATTERN_OPTIONS, TRANSITION_THRUBLK_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, setTrigger, setTriggerBookmark, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, directionValuesFor, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, listMediaBookmarkOptions, selectedBookmarkOptionValue, hasTiltData, toElementAxes, dragCropHandle, panCropImage, clientToSlidePoint, EDIT_POINTS_TARGET_ATTR, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, updateMergeAttrsInRawXml, resolveDisplayedChartType, CHART_TYPE_OPTIONS, chartDataLabelsTogglePatch, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, setSmartArtNodeStyle, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, updateSmartArtNodeText, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyOleSheetCellEdit, getOleSheetGrid, applyOleDocumentParagraphEdit, getOleDocumentParagraphs, applyOleNestedDeckElementTextEdit, getOleNestedDeckDetail, replaceOleFile, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, overlayPointerInput, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, switchSmartArtLayout, rebuildDrawingShapesIfCleared, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS, cropFit, cropFill, cropToAspectRatio } from './chunk-MJ6LTUJ3.mjs';
5
- import { LOCALE_CATALOG, ALIGNMENT_LABEL_KEYS } from './chunk-CJSIEITL.mjs';
6
- import React6, { createContext, lazy, forwardRef, useEffect, useState, useCallback, useMemo, useRef, useLayoutEffect, useSyncExternalStore, useId, useContext, useDeferredValue, Fragment as Fragment$1, Suspense, useReducer } from 'react';
1
+ import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-QZSA3E4L.mjs';
2
+ import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, Rendering3DFlagsContext, CollaborationProvider, useCollaboration, useCollaborationDocumentSync, useFollowMode, useBroadcastFollower, SlideBackgroundImageLayer, StaticElementRenderer, safePrompt, scopeLayoutOptionsToActiveSlide, ChartPartSelectionProvider, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, ViewerOptionsStoreContext, ViewerOptionsContext, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, PresentationTransitionOverlay, RemoteSelectionOverlay, CollaborationCursorOverlay, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, ElementRenderer, InlineCollaborationContext, SmartArtRenderer, playAnimationSound, ResizeHandles, imgSrc, renderStrokeView, useChartPartSelection, resolveSmartArtDataPalette } from './chunk-VUI3VE7K.mjs';
3
+ import { SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, cn, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, TOOLBAR_SECTIONS, isConnectorOrLineElement, GRID_SIZE, MIN_ELEMENT_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, DEFAULT_FILL_COLOR, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, DEFAULT_STROKE_COLOR, STROKE_DASH_OPTIONS } from './chunk-KK2CFTKC.mjs';
4
+ import { EMPTY_RESOLVED_CUSTOMIZATION, FIXED_TAB_GALLERIES, ANIMATION_DIRECTION_LABEL_KEYS, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, isFeatureEnabled, isDialogAvailable, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, isPanelVisible, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, RIBBON_SCOPE_ATTR, resolve3DRenderingFlags, resolveSlideSizeSelection, RULER_THICKNESS, RULER_FONT_SIZE, editorThumbnailHeight, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, EDITOR_THUMBNAIL_WIDTH, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, normalizeHexColor, themeToCssVars, createCustomizationController, resolveEffectiveHiddenActions, listAutosaveSnapshots, resolveExpiredAutosaveSnapshots, deleteAutosaveSnapshot, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, EDITOR_CHROME_CSS, ribbonCustomizationCss, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, canUseClipboard, runProgramNoticeStackStyle, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, PASTE_SPECIAL_OPTIONS, getDensePanelTouchTargetPx, shouldStickyActionRow, customizeOptionsTabs, VIEWER_OPTIONS_TABS, isOptionsPageVisible, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, shouldClearAutosaveCacheOnClose, canCropElement, cropSessionChanged, cancelCropUpdate, startCropSession, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, editorThumbnailWidth, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, resolveEditPointsAvailability, isCurrentLayout, themeColorSchemesEqual, observeElementHeight, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent2, resolveDefaultPrintSettings, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, cropModeKeyAction, extraQuickAccessCommands, visibleContextualTabs, resolveActiveRibbonTab, resolveScreenTip, contextualTabLabelKey, RIBBON_CONTEXTUAL_TAB_ATTR, TAB_ROW_ACTION_CLASSES, customizeBackstageNav, BACKSTAGE_NAV, listBackstageRecentFiles, BACKSTAGE_BACK_CLASSES, BACKSTAGE_NAV_CLASSES, hasTextProperties, textFontSizePtToPx, INSERT_CHART_TYPES, ACTION_BUTTON_PRESETS, hasShapeProperties, shapeFillChange, shapeOutlineChange, DESIGN_RIBBON_GROUPS, DESIGN_RIBBON_COMMANDS, designCommandState, CONTEXTUAL_TAB_GROUPS, editorThumbnailStep, resolveSlidePaneClick, SLIDE_VIRTUALIZATION_THRESHOLD, buildSlidePaneContextMenuEntries, isEditPointsEnabled, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, PRESENTER_NAVIGATOR_LABEL_KEYS, subtitleRecognitionLanguage, subtitleSettingsFromOptions, getSpeechRecognitionCtor, mergeCaptionResults, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, customizeContextMenuEntries, buildContextMenuEntries, customizeCanvasContextMenuEntries, buildCanvasContextMenuEntries, buildLayoutPreviewGeometry, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, themeEditorLabels, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, MIN_TOUCH_TARGET_PX, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, customizeBackstageCards, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, COMMON_FONT_SIZES, RIBBON_CONTROL_ATTR, FREEFORM_TOOL_IDS, isDrawingToolVisible, FREEFORM_TOOL_LABEL_KEYS, getSelectionTextStyleFlags, getInlineEditorSelectionResult, selectedParagraphBulletKind, elementBulletKind, selectionBulletKind, TEXT_DECORATION_FLAGS, nextToggleValue, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, RIBBON_GROUP_ATTR, RIBBON_SHAPE_SWATCHES, buildRibbonGallery, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_COMMAND_GROUPS, RECORD_COMMAND_GROUPS, buildReviewRibbon, HELP_RIBBON_COMMANDS, galleryTextLabel, masterViewPseudoSlide, PRESENTATION_ANIM_TRIGGER_ATTRIBUTE, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, clampFlyoutPosition, computeAnchoredPopupPosition, applyTableStyleDelete, applyTableStyleMapChange, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, SLIDE_TEMPLATES, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, applyRibbonGalleryItem, MERGE_SHAPES_LABEL_KEY, MERGE_SHAPES_HINT_KEY, MERGE_SHAPES_MENU_ITEMS, CROP_LABEL_KEY, CROP_ASPECT_LABEL_KEY, CROP_ASPECT_GROUP_LABEL_KEYS, CROP_ASPECT_PRESETS, CROP_FILL_LABEL_KEY, CROP_FIT_LABEL_KEY, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, playAnimationRibbonPreview, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, SLIDE_SHOW_OPTIONS, createViewerOptionsStore, subtitleSettingsLabels, attachEditorImagePaste, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, resolveElementInteractivity, getElementTransformWithoutRotation, getElementTransform, buildChartQuickActionsDescriptor, applyChartElementToggle, CHART_QUICK_ACTION_BUTTON_SIZE, applyChartStylePreset, hideChartSeries, restoreFilteredSeries, buildCropOverlay, CROP_HANDLE_ARIA_KEY, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, canEditElementPoints, hasMultipleSelectedTableCells, isElementLocked, isImageLikeElement, mergeSlideTransition, getElementLabel, effectiveDirection, TRIGGER_OPTIONS, effectiveTimingCurve, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildSlideTemplateContent, updateSubtitleSettings, buildFreeformShapeElement, buildLiveInkStrokeView, beginCropDrag, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, FreeformToolSession, attachOverlayKeyboard, EditPointsSession, EDIT_POINTS_STYLE, elementLockTogglePatch, buildTableDataGrid, getDenseGridLayoutPlan, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setDataLabelsRangeCache, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, THEME_COLOR_SCHEME_KEYS, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_PATTERN_OPTIONS, TRANSITION_THRUBLK_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, setTrigger, setTriggerBookmark, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, directionValuesFor, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, listMediaBookmarkOptions, selectedBookmarkOptionValue, hasTiltData, toElementAxes, dragCropHandle, panCropImage, clientToSlidePoint, EDIT_POINTS_TARGET_ATTR, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, updateMergeAttrsInRawXml, resolveDisplayedChartType, CHART_TYPE_OPTIONS, chartDataLabelsTogglePatch, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, setSmartArtNodeStyle, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, updateSmartArtNodeText, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyOleSheetCellEdit, getOleSheetGrid, applyOleDocumentParagraphEdit, getOleDocumentParagraphs, applyOleNestedDeckElementTextEdit, getOleNestedDeckDetail, replaceOleFile, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, overlayPointerInput, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, switchSmartArtLayout, rebuildDrawingShapesIfCleared, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS, cropFit, cropFill, cropToAspectRatio } from './chunk-VUNRFZRR.mjs';
5
+ import { LOCALE_CATALOG, ALIGNMENT_LABEL_KEYS } from './chunk-33XJSD62.mjs';
6
+ import React7, { createContext, lazy, forwardRef, useEffect, useState, useCallback, useMemo, useRef, useLayoutEffect, useSyncExternalStore, useId, useContext, useDeferredValue, Fragment as Fragment$1, Suspense, useReducer } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
8
  import { useTranslation } from 'react-i18next';
9
- import { LuArrowDown, LuArrowUp, LuArrowRight, LuArrowLeft, LuArrowDownRight, LuArrowDownLeft, LuArrowUpRight, LuArrowUpLeft, LuMessageSquare, LuEyeOff, LuHistory, LuTrash2, LuSettings, LuX, LuCalendarDays, LuClock, LuHash, LuFileText, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuSettings2, LuLayers, LuDownload, LuCheck, LuLock, LuEye, LuType, LuLoader, LuShieldAlert, LuSignature, LuInfo, LuTriangleAlert, LuPrinter, LuPenTool, LuBug, LuChevronUp, LuChevronDown, LuUpload, LuWifi, LuWifiOff, LuUsers, LuCopy, LuChevronLeft, LuChevronRight, LuPlay, LuPause, LuZoomOut, LuZoomIn, LuSpellCheck, LuFileDown, LuMenu, LuSparkles, LuShare2, LuPanelLeft, LuPanelRight, LuFolderOpen, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPaintbrush, LuPencil, LuCaseSensitive, LuTimer, LuHighlighter, LuEraser, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuList, LuListOrdered, LuIndentIncrease, LuIndentDecrease, LuLink, LuGrid2X2, LuClipboardPaste, LuCopyPlus, LuScan, LuRotateCcw, LuMonitorOff, LuCirclePlay, LuCirclePause, LuCaptions, LuArrowLeftRight, LuClipboardCopy, LuLayoutGrid, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuFileJson, LuBox, LuFileImage, LuClock3, LuUser, LuHardDrive, LuLogIn, LuScissors, LuLayoutTemplate, LuFolderPlus, LuSpline, LuMoveRight, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuStar, LuMousePointerClick, LuBookOpen, LuLanguages, LuGlobe, LuGitCompare, LuMessageSquarePlus, LuLockKeyhole, LuPanelTop, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuMove, LuRadio, LuAlignJustify, LuColumns3, LuCombine, LuCrop, LuFilter, LuLockOpen, LuReply, LuRotateCw, LuBookmark } from 'react-icons/lu';
9
+ import { LuArrowDown, LuArrowUp, LuArrowRight, LuArrowLeft, LuArrowDownRight, LuArrowDownLeft, LuArrowUpRight, LuArrowUpLeft, LuMessageSquare, LuEyeOff, LuHistory, LuTrash2, LuSettings, LuX, LuCalendarDays, LuClock, LuHash, LuFileText, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuSettings2, LuLayers, LuDownload, LuCheck, LuLock, LuEye, LuType, LuLoader, LuShieldAlert, LuSignature, LuInfo, LuTriangleAlert, LuPrinter, LuPenTool, LuBug, LuChevronUp, LuChevronDown, LuUpload, LuWifi, LuWifiOff, LuUsers, LuCopy, LuChevronLeft, LuChevronRight, LuPlay, LuPause, LuZoomOut, LuZoomIn, LuSpellCheck, LuFileDown, LuMenu, LuSparkles, LuShare2, LuPanelLeft, LuPanelRight, LuFolderOpen, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPaintbrush, LuCaseSensitive, LuTimer, LuHighlighter, LuEraser, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuList, LuListOrdered, LuIndentIncrease, LuIndentDecrease, LuLink, LuGrid2X2, LuClipboardPaste, LuCopyPlus, LuScan, LuRotateCcw, LuMonitorOff, LuCirclePlay, LuCirclePause, LuCaptions, LuArrowLeftRight, LuClipboardCopy, LuLayoutGrid, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuFileJson, LuBox, LuFileImage, LuClock3, LuUser, LuHardDrive, LuLogIn, LuScissors, LuLayoutTemplate, LuFolderPlus, LuSpline, LuMoveRight, LuPencil, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuStar, LuMousePointerClick, LuPanelTop, LuBookOpen, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuMove, LuRadio, LuAlignJustify, LuColumns3, LuCombine, LuCrop, LuFilter, LuLockOpen, LuReply, LuRotateCw, LuBookmark } from 'react-icons/lu';
10
10
 
11
11
  var ViewerThemeContext = createContext(void 0);
12
12
  function ViewerThemeProvider({ theme, children }) {
@@ -1459,184 +1459,137 @@ var RibbonGalleryCommandsContext = createContext(null);
1459
1459
  function useRibbonGalleryCommands() {
1460
1460
  return useContext(RibbonGalleryCommandsContext);
1461
1461
  }
1462
- function useTranslateOr() {
1463
- const { t } = useTranslation();
1464
- return (key, fallback) => {
1465
- if (!key) {
1466
- return fallback;
1467
- }
1468
- const translated = t(key);
1469
- return translated && translated !== key ? translated : fallback;
1470
- };
1471
- }
1472
- function RibbonGalleryTile({
1473
- item,
1474
- disabled,
1475
- inStrip,
1476
- onPick
1462
+ function RibbonGallery({
1463
+ placement,
1464
+ chevronOnly = false,
1465
+ tagControl = true
1477
1466
  }) {
1478
1467
  const { t } = useTranslation();
1479
- const label = galleryItemLabel(item, (key, params) => t(key, params ?? {}));
1468
+ const ref = useRef(null);
1469
+ const commands = useRibbonGalleryCommands();
1470
+ const context = commands?.context;
1471
+ const descriptor = useMemo(
1472
+ () => buildRibbonGallery(placement.gallery, context ?? { element: null }),
1473
+ [placement.gallery, context]
1474
+ );
1475
+ useEffect(() => {
1476
+ const host = ref.current;
1477
+ if (host) {
1478
+ host.descriptor = descriptor;
1479
+ host.translateLabel = t;
1480
+ host.disabled = !commands?.editable;
1481
+ }
1482
+ }, [descriptor, t, commands?.editable]);
1483
+ useEffect(() => {
1484
+ const host = ref.current;
1485
+ if (!host) {
1486
+ return;
1487
+ }
1488
+ const pick = (event) => {
1489
+ if (!commands?.editable) {
1490
+ return;
1491
+ }
1492
+ const result = applyRibbonGalleryItem(
1493
+ placement.gallery,
1494
+ event.detail.itemId,
1495
+ commands.context
1496
+ );
1497
+ if (result) {
1498
+ commands.dispatch(result);
1499
+ }
1500
+ };
1501
+ host.addEventListener("gallery-pick", pick);
1502
+ return () => host.removeEventListener("gallery-pick", pick);
1503
+ }, [commands, placement.gallery]);
1480
1504
  return /* @__PURE__ */ jsx(
1481
- "button",
1505
+ "pptx-ui-ribbon-gallery",
1482
1506
  {
1483
- type: "button",
1484
- ...{ [RIBBON_GALLERY_ITEM_ATTR]: item.id },
1485
- "aria-pressed": item.applied,
1486
- "aria-label": label,
1487
- title: label,
1488
- disabled,
1489
- onMouseDown: (event) => event.preventDefault(),
1490
- onClick: () => onPick(item),
1491
- className: cn(
1492
- "grid shrink-0 place-items-center rounded-sm border border-transparent p-0.5 transition-colors hover:border-primary/60 hover:bg-accent disabled:cursor-not-allowed disabled:opacity-40",
1493
- item.applied && "border-primary ring-1 ring-primary/40",
1494
- inStrip && "[&>svg]:h-[40px] [&>svg]:w-auto"
1495
- ),
1496
- dangerouslySetInnerHTML: { __html: item.previewSvg }
1507
+ ref,
1508
+ label: descriptor.label,
1509
+ mode: placement.mode,
1510
+ "chevron-only": chevronOnly || void 0,
1511
+ "data-ribbon-control": tagControl ? placement.control : void 0
1497
1512
  }
1498
1513
  );
1499
1514
  }
1500
- function GallerySection({
1501
- section,
1502
- onPick
1515
+ function useIntent(ref, type, callback) {
1516
+ useEffect(() => {
1517
+ const host = ref.current;
1518
+ if (!host || !callback) {
1519
+ return;
1520
+ }
1521
+ host.addEventListener(type, callback);
1522
+ return () => host.removeEventListener(type, callback);
1523
+ }, [ref, type, callback]);
1524
+ }
1525
+ function WebRibbonGroup({
1526
+ label,
1527
+ groupId,
1528
+ children
1503
1529
  }) {
1504
- const translateOr = useTranslateOr();
1505
- if (section.items.length === 0) {
1506
- return null;
1507
- }
1508
- const heading = section.titleKey || section.title ? translateOr(section.titleKey, section.title ?? "") : "";
1509
- return /* @__PURE__ */ jsxs("div", { className: "px-2 py-1", children: [
1510
- heading && /* @__PURE__ */ jsx("div", { className: "pb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground", children: heading }),
1511
- /* @__PURE__ */ jsx(
1512
- "div",
1513
- {
1514
- className: "grid gap-1",
1515
- style: { gridTemplateColumns: `repeat(${Math.max(1, section.columns)}, max-content)` },
1516
- children: section.items.map((item) => /* @__PURE__ */ jsx(RibbonGalleryTile, { item, onPick }, item.id))
1517
- }
1518
- )
1519
- ] });
1530
+ return /* @__PURE__ */ jsx("pptx-ui-ribbon-group", { label, "data-ribbon-group": groupId, children });
1520
1531
  }
1521
- function RibbonGalleryPopup({
1522
- descriptor,
1523
- anchorRef,
1532
+ function WebRibbonCommand({
1524
1533
  label,
1525
- onPick
1534
+ icon,
1535
+ controlId,
1536
+ title,
1537
+ disabled,
1538
+ active,
1539
+ pressed,
1540
+ expanded,
1541
+ compact,
1542
+ onCommand
1526
1543
  }) {
1527
- return /* @__PURE__ */ jsx(RibbonMenu, { anchorRef, className: "pt-1", children: /* @__PURE__ */ jsx(
1528
- "div",
1544
+ const ref = useRef(null);
1545
+ useIntent(
1546
+ ref,
1547
+ "command-request",
1548
+ onCommand ? (event) => onCommand(event.detail.id) : void 0
1549
+ );
1550
+ return /* @__PURE__ */ jsx(
1551
+ "pptx-ui-ribbon-command",
1529
1552
  {
1530
- ...{ [RIBBON_GALLERY_POPUP_ATTR]: descriptor.id },
1531
- role: "group",
1532
- "aria-label": label,
1533
- className: "max-h-[70vh] overflow-y-auto rounded-lg border border-border bg-popover py-1 shadow-2xl backdrop-blur-lg",
1534
- children: descriptor.sections.map((section) => /* @__PURE__ */ jsx(GallerySection, { section, onPick }, section.id))
1553
+ ref,
1554
+ label,
1555
+ icon,
1556
+ "data-ribbon-control": controlId,
1557
+ title,
1558
+ disabled: disabled || void 0,
1559
+ active: active || void 0,
1560
+ pressed: pressed === void 0 ? void 0 : String(pressed),
1561
+ expanded: expanded === void 0 ? void 0 : String(expanded),
1562
+ compact: compact || void 0
1535
1563
  }
1536
- ) });
1564
+ );
1537
1565
  }
1538
- var EMPTY_CONTEXT = { element: null };
1539
- function RibbonGallery({
1540
- placement,
1541
- icon,
1542
- chevronOnly = false,
1543
- tagControl = true
1566
+ function WebRibbonToggle({
1567
+ label,
1568
+ controlId,
1569
+ checked,
1570
+ title,
1571
+ onToggle
1544
1572
  }) {
1545
- const { t } = useTranslation();
1546
- const translateOr = useTranslateOr();
1547
- const commands = useRibbonGalleryCommands();
1548
- const ctx = commands?.context ?? EMPTY_CONTEXT;
1549
- const { gallery, control, mode } = placement;
1550
- const descriptor = useMemo(() => buildRibbonGallery(gallery, ctx), [gallery, ctx]);
1551
- const dropdown = useRibbonDropdown();
1552
- const title = translateOr(descriptor.labelKey, descriptor.label);
1553
- const disabled = !commands?.editable || descriptor.disabled || !galleryHasItems(descriptor);
1554
- const open = dropdown.open && !disabled;
1555
- const pick = (item) => {
1556
- const result = applyRibbonGalleryItem(gallery, item.id, ctx);
1557
- if (result) {
1558
- commands?.dispatch(result);
1559
- }
1560
- dropdown.setOpen(false);
1561
- };
1562
- const controlAttrs = tagControl ? { [RIBBON_CONTROL_ATTR]: control } : {};
1563
- const galleryAttrs = { [RIBBON_GALLERY_ATTR]: gallery };
1564
- const popup = open && /* @__PURE__ */ jsx(
1565
- RibbonGalleryPopup,
1573
+ const ref = useRef(null);
1574
+ useIntent(
1575
+ ref,
1576
+ "toggle-request",
1577
+ onToggle ? (event) => onToggle(event.detail.checked) : void 0
1578
+ );
1579
+ return /* @__PURE__ */ jsx(
1580
+ "pptx-ui-ribbon-toggle",
1566
1581
  {
1567
- descriptor,
1568
- anchorRef: dropdown.ref,
1569
- label: title,
1570
- onPick: pick
1582
+ ref,
1583
+ label,
1584
+ "data-ribbon-control": controlId,
1585
+ checked: checked || void 0,
1586
+ title
1571
1587
  }
1572
1588
  );
1573
- if (mode === "inline") {
1574
- const moreLabel = t("pptx.gallery.more", { name: title });
1575
- return /* @__PURE__ */ jsxs(
1576
- "div",
1577
- {
1578
- ref: dropdown.ref,
1579
- ...controlAttrs,
1580
- className: "relative inline-flex items-stretch rounded border border-border/60 bg-background/40",
1581
- children: [
1582
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5 p-0.5", children: inlineGalleryItems(descriptor).map((item) => /* @__PURE__ */ jsx(
1583
- RibbonGalleryTile,
1584
- {
1585
- item,
1586
- disabled,
1587
- inStrip: true,
1588
- onPick: pick
1589
- },
1590
- item.id
1591
- )) }),
1592
- /* @__PURE__ */ jsx(
1593
- "button",
1594
- {
1595
- type: "button",
1596
- ...galleryAttrs,
1597
- "aria-label": moreLabel,
1598
- "aria-haspopup": "true",
1599
- "aria-expanded": open,
1600
- title: moreLabel,
1601
- disabled,
1602
- onClick: () => dropdown.setOpen((v) => !v),
1603
- className: "inline-flex items-center border-l border-border/60 px-0.5 hover:bg-accent disabled:cursor-not-allowed disabled:opacity-40",
1604
- children: /* @__PURE__ */ jsx(LuChevronDown, { className: "h-3 w-3" })
1605
- }
1606
- ),
1607
- popup
1608
- ]
1609
- }
1610
- );
1611
- }
1612
- return /* @__PURE__ */ jsxs("div", { ref: dropdown.ref, ...controlAttrs, className: "relative inline-flex items-center", children: [
1613
- /* @__PURE__ */ jsxs(
1614
- "button",
1615
- {
1616
- type: "button",
1617
- "data-pptx-chrome": chevronOnly ? "gallery-caret" : void 0,
1618
- ...galleryAttrs,
1619
- "aria-haspopup": "true",
1620
- "aria-expanded": open,
1621
- "aria-label": title,
1622
- title,
1623
- disabled,
1624
- onMouseDown: (event) => event.preventDefault(),
1625
- onClick: () => dropdown.setOpen((v) => !v),
1626
- className: chevronOnly ? "inline-flex items-center self-stretch px-0.5 hover:bg-accent disabled:cursor-not-allowed disabled:opacity-40" : pill,
1627
- children: [
1628
- !chevronOnly && icon,
1629
- !chevronOnly && /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap", children: title }),
1630
- /* @__PURE__ */ jsx(LuChevronDown, { className: "h-3 w-3" })
1631
- ]
1632
- }
1633
- ),
1634
- popup
1635
- ] });
1636
1589
  }
1637
1590
  function useTransitionSoundPicker(activeSlide, onTransitionChange) {
1638
- const soundFileInputRef = React6.useRef(null);
1639
- const handleSoundFilePicked = React6.useCallback(
1591
+ const soundFileInputRef = React7.useRef(null);
1592
+ const handleSoundFilePicked = React7.useCallback(
1640
1593
  (file) => {
1641
1594
  void readSoundFileAsDataUrl(file).then((dataUrl) => {
1642
1595
  if (dataUrl) {
@@ -1647,7 +1600,7 @@ function useTransitionSoundPicker(activeSlide, onTransitionChange) {
1647
1600
  },
1648
1601
  [onTransitionChange]
1649
1602
  );
1650
- const handleSoundSelectChange = React6.useCallback(
1603
+ const handleSoundSelectChange = React7.useCallback(
1651
1604
  (event) => {
1652
1605
  const value = event.target.value;
1653
1606
  if (value === TRANSITION_SOUND_OTHER_VALUE) {
@@ -1666,7 +1619,7 @@ function useTransitionSoundPicker(activeSlide, onTransitionChange) {
1666
1619
  },
1667
1620
  [activeSlide, onTransitionChange]
1668
1621
  );
1669
- const handleSoundFileChange = React6.useCallback(
1622
+ const handleSoundFileChange = React7.useCallback(
1670
1623
  (event) => {
1671
1624
  const file = event.target.files?.[0];
1672
1625
  if (file) {
@@ -1677,7 +1630,7 @@ function useTransitionSoundPicker(activeSlide, onTransitionChange) {
1677
1630
  [handleSoundFilePicked]
1678
1631
  );
1679
1632
  const stockSoundId = transitionStockSoundId(activeSlide?.transition);
1680
- const handleSoundPreview = React6.useCallback(() => {
1633
+ const handleSoundPreview = React7.useCallback(() => {
1681
1634
  if (!stockSoundId) {
1682
1635
  return;
1683
1636
  }
@@ -1697,10 +1650,10 @@ function useTransitionSoundPicker(activeSlide, onTransitionChange) {
1697
1650
  function TransitionsSection(p) {
1698
1651
  const { t } = useTranslation();
1699
1652
  const canEdit = p.canEdit !== false;
1700
- const draft = React6.useMemo(() => readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
1701
- const [durationBuffer, setDurationBuffer] = React6.useState(null);
1702
- const [advanceBuffer, setAdvanceBuffer] = React6.useState(null);
1703
- const commit = React6.useCallback(
1653
+ const draft = React7.useMemo(() => readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
1654
+ const [durationBuffer, setDurationBuffer] = React7.useState(null);
1655
+ const [advanceBuffer, setAdvanceBuffer] = React7.useState(null);
1656
+ const commit = React7.useCallback(
1704
1657
  (changes) => {
1705
1658
  p.onTransitionChange(ribbonTransitionUpdates({ ...draft, ...changes }));
1706
1659
  },
@@ -1924,93 +1877,54 @@ function TransitionsSection(p) {
1924
1877
  )
1925
1878
  ] });
1926
1879
  }
1927
- var DESIGN_VARIANT_GALLERIES = FIXED_TAB_GALLERIES.filter(
1928
- (placement) => placement.control.startsWith("design.variants.")
1929
- );
1930
1880
  function DesignSection(p) {
1931
1881
  const { t } = useTranslation();
1932
- return /* @__PURE__ */ jsxs(Fragment, { children: [
1933
- /* @__PURE__ */ jsxs(RibbonGroupScope, { id: "design.themes", children: [
1934
- /* @__PURE__ */ jsxs(
1935
- "button",
1936
- {
1937
- onClick: p.onToggleThemeGallery,
1938
- disabled: !p.canEdit,
1939
- className: cn(
1940
- pill,
1941
- p.isThemeGalleryOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
1942
- ),
1943
- title: t("pptx.ribbon.browseThemesTitle"),
1944
- ...controlAttr("design.themes.browseThemes"),
1945
- children: [
1946
- /* @__PURE__ */ jsx(LuPalette, { className: ics }),
1947
- t("pptx.ribbon.browseThemes")
1948
- ]
1949
- }
1950
- ),
1951
- /* @__PURE__ */ jsxs(
1952
- "button",
1953
- {
1954
- onClick: p.onToggleThemeEditor,
1955
- disabled: !p.canEdit,
1956
- className: cn(
1957
- pill,
1958
- p.isThemeEditorOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
1959
- ),
1960
- title: t("pptx.ribbon.editThemeTitle"),
1961
- ...controlAttr("design.themes.editTheme"),
1962
- children: [
1963
- /* @__PURE__ */ jsx(LuPencil, { className: ics }),
1964
- t("pptx.ribbon.editTheme")
1965
- ]
1966
- }
1967
- )
1968
- ] }),
1969
- sep,
1970
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-0.5", ...groupAttr("design.variants"), children: [
1971
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: DESIGN_VARIANT_GALLERIES.map((placement) => /* @__PURE__ */ jsx(
1972
- RibbonGallery,
1973
- {
1974
- placement,
1975
- icon: placement.gallery === "themeFonts" ? /* @__PURE__ */ jsx(LuType, { className: ics }) : /* @__PURE__ */ jsx(LuPalette, { className: ics })
1976
- },
1977
- placement.control
1978
- )) }),
1979
- /* @__PURE__ */ jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: t("pptx.ribbon.groupVariants") })
1980
- ] }),
1981
- sep,
1982
- /* @__PURE__ */ jsxs(RibbonGroupScope, { id: "design.customize", children: [
1983
- (p.onOpenSlideSize ?? p.onOpenDocumentProperties) && /* @__PURE__ */ jsxs(
1984
- "button",
1985
- {
1986
- onClick: p.onOpenSlideSize ?? p.onOpenDocumentProperties,
1987
- className: pill,
1988
- title: t("pptx.ribbon.slideSizeTitle"),
1989
- ...controlAttr("design.customize.slideSize"),
1990
- children: [
1991
- /* @__PURE__ */ jsx(LuMonitor, { className: ics }),
1992
- t("pptx.ribbon.slideSize")
1993
- ]
1994
- }
1995
- ),
1996
- p.onToggleInspector && /* @__PURE__ */ jsxs(
1997
- "button",
1998
- {
1999
- onClick: p.onToggleInspector,
2000
- className: cn(
2001
- pill,
2002
- p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
2003
- ),
2004
- title: t("pptx.ribbon.formatBackgroundTitle"),
2005
- ...controlAttr("design.customize.formatBackground"),
2006
- children: [
2007
- /* @__PURE__ */ jsx(LuPaintBucket, { className: ics }),
2008
- t("pptx.ribbon.formatBackground")
2009
- ]
2010
- }
2011
- )
2012
- ] })
2013
- ] });
1882
+ const actions = {
1883
+ "design.themes.browseThemes": p.onToggleThemeGallery,
1884
+ "design.themes.editTheme": p.onToggleThemeEditor,
1885
+ "design.customize.slideSize": p.onOpenSlideSize ?? p.onOpenDocumentProperties,
1886
+ "design.customize.formatBackground": p.onToggleInspector
1887
+ };
1888
+ const state = {
1889
+ editable: p.canEdit,
1890
+ galleryOpen: p.isThemeGalleryOpen,
1891
+ editorOpen: p.isThemeEditorOpen,
1892
+ backgroundOpen: p.isInspectorPaneOpen,
1893
+ hasSlideSize: Boolean(actions["design.customize.slideSize"]),
1894
+ hasBackground: Boolean(p.onToggleInspector)
1895
+ };
1896
+ return /* @__PURE__ */ jsx(Fragment, { children: DESIGN_RIBBON_GROUPS.map((group) => /* @__PURE__ */ jsxs(WebRibbonGroup, { groupId: group.id, label: t(group.labelKey), children: [
1897
+ DESIGN_RIBBON_COMMANDS.filter((command) => command.id.startsWith(`${group.id}.`)).map(
1898
+ (command) => {
1899
+ const view = designCommandState(command.id, state);
1900
+ return view.hidden ? null : /* @__PURE__ */ jsx(
1901
+ WebRibbonCommand,
1902
+ {
1903
+ controlId: command.id,
1904
+ label: t(command.labelKey),
1905
+ title: t(command.titleKey),
1906
+ icon: command.icon,
1907
+ compact: true,
1908
+ disabled: view.disabled,
1909
+ active: view.active,
1910
+ expanded: view.expanded,
1911
+ onCommand: () => actions[command.id]?.()
1912
+ },
1913
+ command.id
1914
+ );
1915
+ }
1916
+ ),
1917
+ FIXED_TAB_GALLERIES.filter(
1918
+ (placement) => placement.control.startsWith(`${group.id}.`)
1919
+ ).map((placement) => /* @__PURE__ */ jsx(
1920
+ RibbonGallery,
1921
+ {
1922
+ placement,
1923
+ icon: placement.gallery === "themeFonts" ? /* @__PURE__ */ jsx(LuType, {}) : /* @__PURE__ */ jsx(LuPalette, {})
1924
+ },
1925
+ placement.control
1926
+ ))
1927
+ ] }, group.id)) });
2014
1928
  }
2015
1929
  var DEFAULT_VALUE = {
2016
1930
  recentColors: [],
@@ -2225,7 +2139,7 @@ function AccountPage() {
2225
2139
  return void 0;
2226
2140
  });
2227
2141
  };
2228
- const version = "4.15.0" ;
2142
+ const version = "4.16.0" ;
2229
2143
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
2230
2144
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
2231
2145
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -3670,200 +3584,62 @@ function InsertSection(p) {
3670
3584
  )
3671
3585
  ] });
3672
3586
  }
3587
+ function WebRibbonSection({
3588
+ groups,
3589
+ onCommand
3590
+ }) {
3591
+ const ref = useRef(null);
3592
+ useEffect(() => {
3593
+ if (ref.current) {
3594
+ ref.current.groups = groups;
3595
+ }
3596
+ }, [groups]);
3597
+ useEffect(() => {
3598
+ const host = ref.current;
3599
+ if (!host) {
3600
+ return;
3601
+ }
3602
+ const request = (event) => onCommand(event.detail.id);
3603
+ host.addEventListener("command-request", request);
3604
+ return () => host.removeEventListener("command-request", request);
3605
+ }, [onCommand]);
3606
+ return /* @__PURE__ */ jsx("pptx-ui-ribbon-section", { ref });
3607
+ }
3673
3608
  function ReviewSection(p) {
3674
3609
  const { t } = useTranslation();
3675
- return /* @__PURE__ */ jsxs(Fragment, { children: [
3676
- /* @__PURE__ */ jsxs(
3677
- RibbonGroup,
3678
- {
3679
- label: t("pptx.review.proofing", { defaultValue: "Proofing" }),
3680
- groupId: "review.proofing",
3681
- children: [
3682
- /* @__PURE__ */ jsx(
3683
- RibbonCommand,
3684
- {
3685
- controlId: "review.proofing.spelling",
3686
- label: t("pptx.review.spelling"),
3687
- icon: /* @__PURE__ */ jsx(LuSpellCheck, {}),
3688
- onClick: () => p.onSetSpellCheckEnabled(!p.spellCheckEnabled),
3689
- active: p.spellCheckEnabled,
3690
- title: t("pptx.review.toggleSpellCheck")
3691
- }
3692
- ),
3693
- /* @__PURE__ */ jsx(
3694
- RibbonCommand,
3695
- {
3696
- controlId: "review.proofing.thesaurus",
3697
- label: t("pptx.review.thesaurus", { defaultValue: "Thesaurus" }),
3698
- icon: /* @__PURE__ */ jsx(LuBookOpen, {}),
3699
- disabled: true
3700
- }
3701
- )
3702
- ]
3703
- }
3704
- ),
3705
- /* @__PURE__ */ jsx(
3706
- RibbonGroup,
3707
- {
3708
- label: t("pptx.review.accessibility", { defaultValue: "Accessibility" }),
3709
- groupId: "review.accessibility",
3710
- children: /* @__PURE__ */ jsx(
3711
- RibbonCommand,
3712
- {
3713
- controlId: "review.accessibility.check",
3714
- label: t("pptx.review.accessibilityCheck"),
3715
- icon: /* @__PURE__ */ jsx(LuShieldCheck, {}),
3716
- onClick: p.onOpenAccessibilityCheck
3717
- }
3718
- )
3719
- }
3720
- ),
3721
- /* @__PURE__ */ jsxs(RibbonGroup, { label: t("pptx.review.language"), groupId: "review.language", children: [
3722
- /* @__PURE__ */ jsx(
3723
- RibbonCommand,
3724
- {
3725
- controlId: "review.language.translate",
3726
- label: t("pptx.review.translate", { defaultValue: "Translate" }),
3727
- icon: /* @__PURE__ */ jsx(LuLanguages, {}),
3728
- disabled: true
3729
- }
3730
- ),
3731
- /* @__PURE__ */ jsx(
3732
- RibbonCommand,
3733
- {
3734
- label: t("pptx.review.language"),
3735
- icon: /* @__PURE__ */ jsx(LuGlobe, {}),
3736
- disabled: !p.onSetLanguage,
3737
- onClick: p.onSetLanguage
3610
+ const groups = buildReviewRibbon(t, {
3611
+ editable: p.canEdit,
3612
+ spellCheck: p.spellCheckEnabled,
3613
+ canAccessibility: Boolean(p.onOpenAccessibilityCheck),
3614
+ canLanguage: Boolean(p.onSetLanguage),
3615
+ canCompare: Boolean(p.onCompare),
3616
+ canComments: Boolean(p.onToggleComments),
3617
+ commentsOpen: p.isCommentsPanelOpen,
3618
+ commentCount: p.slideCommentCount
3619
+ });
3620
+ const request = (id) => {
3621
+ switch (id) {
3622
+ case "review.proofing.spelling":
3623
+ p.onSetSpellCheckEnabled(!p.spellCheckEnabled);
3624
+ break;
3625
+ case "review.accessibility.check":
3626
+ p.onOpenAccessibilityCheck?.();
3627
+ break;
3628
+ case "review.language.language":
3629
+ p.onSetLanguage?.();
3630
+ break;
3631
+ case "review.compare.compare":
3632
+ if (p.canEdit) {
3633
+ p.onCompare?.();
3738
3634
  }
3739
- )
3740
- ] }),
3741
- /* @__PURE__ */ jsxs(
3742
- RibbonGroup,
3743
- {
3744
- label: t("pptx.review.changes", { defaultValue: "Changes" }),
3745
- groupId: "review.compare",
3746
- children: [
3747
- /* @__PURE__ */ jsx(
3748
- RibbonCommand,
3749
- {
3750
- controlId: "review.compare.markAllRead",
3751
- label: t("pptx.review.markAllRead", { defaultValue: "Mark All as Read" }),
3752
- icon: /* @__PURE__ */ jsx(LuCopy, {}),
3753
- disabled: true
3754
- }
3755
- ),
3756
- p.onCompare && /* @__PURE__ */ jsx(
3757
- RibbonCommand,
3758
- {
3759
- controlId: "review.compare.compare",
3760
- label: t("pptx.ribbon.compare"),
3761
- icon: /* @__PURE__ */ jsx(LuGitCompare, {}),
3762
- onClick: p.onCompare,
3763
- disabled: !p.canEdit,
3764
- title: t("pptx.ribbon.compareTitle")
3765
- }
3766
- )
3767
- ]
3768
- }
3769
- ),
3770
- /* @__PURE__ */ jsxs(RibbonGroup, { label: t("pptx.toolbar.comments"), groupId: "review.comments", children: [
3771
- p.onToggleComments && /* @__PURE__ */ jsxs("div", { className: "relative", children: [
3772
- /* @__PURE__ */ jsx(
3773
- RibbonCommand,
3774
- {
3775
- controlId: "review.comments.newComment",
3776
- label: t("pptx.toolbar.comments"),
3777
- icon: /* @__PURE__ */ jsx(LuMessageSquarePlus, {}),
3778
- onClick: p.onToggleComments,
3779
- active: p.isCommentsPanelOpen,
3780
- title: t("pptx.review.toggleComments")
3781
- }
3782
- ),
3783
- Boolean(p.slideCommentCount) && /* @__PURE__ */ jsx("span", { className: "absolute right-0 top-0 rounded-full bg-primary px-1 text-[9px] text-white", children: p.slideCommentCount })
3784
- ] }),
3785
- /* @__PURE__ */ jsxs(RibbonCommandStack, { children: [
3786
- /* @__PURE__ */ jsx(
3787
- RibbonCommand,
3788
- {
3789
- compact: true,
3790
- controlId: "review.comments.delete",
3791
- label: t("pptx.common.delete", { defaultValue: "Delete" }),
3792
- icon: /* @__PURE__ */ jsx(LuTrash2, {}),
3793
- disabled: true
3794
- }
3795
- ),
3796
- /* @__PURE__ */ jsx(
3797
- RibbonCommand,
3798
- {
3799
- compact: true,
3800
- controlId: "review.comments.previous",
3801
- label: t("pptx.common.previous", { defaultValue: "Previous" }),
3802
- icon: /* @__PURE__ */ jsx(LuChevronLeft, {}),
3803
- disabled: true
3804
- }
3805
- )
3806
- ] }),
3807
- /* @__PURE__ */ jsxs(RibbonCommandStack, { children: [
3808
- /* @__PURE__ */ jsx(
3809
- RibbonCommand,
3810
- {
3811
- compact: true,
3812
- controlId: "review.comments.next",
3813
- label: t("pptx.common.next", { defaultValue: "Next" }),
3814
- icon: /* @__PURE__ */ jsx(LuChevronRight, {}),
3815
- disabled: true
3816
- }
3817
- ),
3818
- /* @__PURE__ */ jsx(
3819
- RibbonCommand,
3820
- {
3821
- compact: true,
3822
- controlId: "review.comments.showComments",
3823
- label: t("pptx.review.showComments", { defaultValue: "Show Comments" }),
3824
- icon: /* @__PURE__ */ jsx(LuMessageSquare, {}),
3825
- onClick: p.onToggleComments
3826
- }
3827
- )
3828
- ] })
3829
- ] }),
3830
- /* @__PURE__ */ jsxs(
3831
- RibbonGroup,
3832
- {
3833
- label: t("pptx.review.protect", { defaultValue: "Protect" }),
3834
- groupId: "review.protect",
3835
- children: [
3836
- /* @__PURE__ */ jsx(
3837
- RibbonCommand,
3838
- {
3839
- controlId: "review.protect.readOnly",
3840
- label: t("pptx.review.readOnly", { defaultValue: "Always Open Read-only" }),
3841
- icon: /* @__PURE__ */ jsx(LuLockKeyhole, {}),
3842
- disabled: true
3843
- }
3844
- ),
3845
- /* @__PURE__ */ jsx(
3846
- RibbonCommand,
3847
- {
3848
- controlId: "review.protect.restrictPermission",
3849
- label: t("pptx.review.restrictPermission", { defaultValue: "Restrict Permission" }),
3850
- icon: /* @__PURE__ */ jsx(LuShieldCheck, {}),
3851
- disabled: true
3852
- }
3853
- ),
3854
- /* @__PURE__ */ jsx(
3855
- RibbonCommand,
3856
- {
3857
- controlId: "review.ink.hideInk",
3858
- label: t("pptx.review.hideInk", { defaultValue: "Hide Ink" }),
3859
- icon: /* @__PURE__ */ jsx(LuEyeOff, {}),
3860
- disabled: true
3861
- }
3862
- )
3863
- ]
3864
- }
3865
- )
3866
- ] });
3635
+ break;
3636
+ case "review.comments.newComment":
3637
+ case "review.comments.showComments":
3638
+ p.onToggleComments?.();
3639
+ break;
3640
+ }
3641
+ };
3642
+ return /* @__PURE__ */ jsx(WebRibbonSection, { groups, onCommand: request });
3867
3643
  }
3868
3644
  function CustomShowsControls({
3869
3645
  customShows,
@@ -4018,81 +3794,6 @@ function SubtitleSettingsControl() {
4018
3794
  }
4019
3795
  );
4020
3796
  }
4021
- function useIntent(ref, type, callback) {
4022
- useEffect(() => {
4023
- const host = ref.current;
4024
- if (!host || !callback) {
4025
- return;
4026
- }
4027
- host.addEventListener(type, callback);
4028
- return () => host.removeEventListener(type, callback);
4029
- }, [ref, type, callback]);
4030
- }
4031
- function WebRibbonGroup({
4032
- label,
4033
- groupId,
4034
- children
4035
- }) {
4036
- return /* @__PURE__ */ jsx("pptx-ui-ribbon-group", { label, "data-ribbon-group": groupId, children });
4037
- }
4038
- function WebRibbonCommand({
4039
- label,
4040
- icon,
4041
- controlId,
4042
- title,
4043
- disabled,
4044
- active,
4045
- pressed,
4046
- expanded,
4047
- compact,
4048
- onCommand
4049
- }) {
4050
- const ref = useRef(null);
4051
- useIntent(
4052
- ref,
4053
- "command-request",
4054
- onCommand ? (event) => onCommand(event.detail.id) : void 0
4055
- );
4056
- return /* @__PURE__ */ jsx(
4057
- "pptx-ui-ribbon-command",
4058
- {
4059
- ref,
4060
- label,
4061
- icon,
4062
- "data-ribbon-control": controlId,
4063
- title,
4064
- disabled: disabled || void 0,
4065
- active: active || void 0,
4066
- pressed: pressed === void 0 ? void 0 : String(pressed),
4067
- expanded: expanded === void 0 ? void 0 : String(expanded),
4068
- compact: compact || void 0
4069
- }
4070
- );
4071
- }
4072
- function WebRibbonToggle({
4073
- label,
4074
- controlId,
4075
- checked,
4076
- title,
4077
- onToggle
4078
- }) {
4079
- const ref = useRef(null);
4080
- useIntent(
4081
- ref,
4082
- "toggle-request",
4083
- onToggle ? (event) => onToggle(event.detail.checked) : void 0
4084
- );
4085
- return /* @__PURE__ */ jsx(
4086
- "pptx-ui-ribbon-toggle",
4087
- {
4088
- ref,
4089
- label,
4090
- "data-ribbon-control": controlId,
4091
- checked: checked || void 0,
4092
- title
4093
- }
4094
- );
4095
- }
4096
3797
  function SlideShowSection(p) {
4097
3798
  const { t } = useTranslation();
4098
3799
  const { isHidden } = useToolbarVisibility(p.hiddenActions);
@@ -5839,22 +5540,18 @@ function MobileToolbar(props) {
5839
5540
  }
5840
5541
  );
5841
5542
  }
5543
+ function useTranslateOr() {
5544
+ const { t } = useTranslation();
5545
+ return (key, fallback) => galleryTextLabel(t, key, fallback);
5546
+ }
5842
5547
  function ContextualTabSection({ tab }) {
5843
5548
  const translateOr = useTranslateOr();
5844
5549
  return /* @__PURE__ */ jsx(Fragment, { children: CONTEXTUAL_TAB_GROUPS[tab].map((group) => /* @__PURE__ */ jsx(
5845
- RibbonGroup,
5550
+ WebRibbonGroup,
5846
5551
  {
5847
5552
  groupId: group.group,
5848
5553
  label: translateOr(group.labelKey, group.label),
5849
- className: "items-center",
5850
- children: group.galleries.map((placement) => /* @__PURE__ */ jsx(
5851
- RibbonGallery,
5852
- {
5853
- placement,
5854
- icon: /* @__PURE__ */ jsx(LuSparkles, { className: ics })
5855
- },
5856
- placement.control
5857
- ))
5554
+ children: group.galleries.map((placement) => /* @__PURE__ */ jsx(RibbonGallery, { placement }, placement.control))
5858
5555
  },
5859
5556
  group.group
5860
5557
  )) });
@@ -7425,7 +7122,7 @@ function ChartQuickActionsOverlay({
7425
7122
  "data-export-ignore": "true",
7426
7123
  style: { position: "absolute", left: 0, top: 0, zIndex: 59 },
7427
7124
  onMouseDown: (e) => e.stopPropagation(),
7428
- children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React6.Fragment, { children: [
7125
+ children: descriptor.buttons.map((button) => /* @__PURE__ */ jsxs(React7.Fragment, { children: [
7429
7126
  /* @__PURE__ */ jsx(
7430
7127
  "button",
7431
7128
  {
@@ -7445,7 +7142,7 @@ function ChartQuickActionsOverlay({
7445
7142
  transformOrigin: "top left"
7446
7143
  },
7447
7144
  className: "flex items-center justify-center rounded bg-white border border-gray-300 shadow-sm hover:bg-gray-100 text-gray-700",
7448
- children: React6.createElement(ICONS4[button.id], { className: "size-3.5" })
7145
+ children: React7.createElement(ICONS4[button.id], { className: "size-3.5" })
7449
7146
  }
7450
7147
  ),
7451
7148
  open === button.id && button.id === "elements" && /* @__PURE__ */ jsxs(
@@ -8595,7 +8292,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
8595
8292
  }
8596
8293
  );
8597
8294
  }
8598
- var HorizontalRuler = React6.memo(HorizontalRulerView);
8295
+ var HorizontalRuler = React7.memo(HorizontalRulerView);
8599
8296
  HorizontalRuler.displayName = "HorizontalRuler";
8600
8297
  function VerticalRulerView({ ticks, heightPx, highlight }) {
8601
8298
  return /* @__PURE__ */ jsxs(
@@ -8667,7 +8364,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
8667
8364
  }
8668
8365
  );
8669
8366
  }
8670
- var VerticalRuler = React6.memo(VerticalRulerView);
8367
+ var VerticalRuler = React7.memo(VerticalRulerView);
8671
8368
  VerticalRuler.displayName = "VerticalRuler";
8672
8369
  function Ruler({
8673
8370
  canvasSize,
@@ -10593,7 +10290,7 @@ function slideThumbnailPropsEqual(prev, next) {
10593
10290
  }
10594
10291
  return true;
10595
10292
  }
10596
- var SlideThumbnail = React6.memo(SlideThumbnailImpl, slideThumbnailPropsEqual);
10293
+ var SlideThumbnail = React7.memo(SlideThumbnailImpl, slideThumbnailPropsEqual);
10597
10294
 
10598
10295
  // src/viewer/components/context-menu-dispatch.ts
10599
10296
  function tableCell(props) {
@@ -11354,7 +11051,7 @@ function LazyThumbnailInner({
11354
11051
  }
11355
11052
  ) });
11356
11053
  }
11357
- var LazyThumbnail = React6.memo(LazyThumbnailInner);
11054
+ var LazyThumbnail = React7.memo(LazyThumbnailInner);
11358
11055
 
11359
11056
  // src/viewer/components/slides-pane/utils.ts
11360
11057
  function formatTimingMs(ms) {
@@ -11516,7 +11213,7 @@ function SlideItemInner({
11516
11213
  }
11517
11214
  );
11518
11215
  }
11519
- var SlideItem = React6.memo(SlideItemInner);
11216
+ var SlideItem = React7.memo(SlideItemInner);
11520
11217
  function useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionCollapse) {
11521
11218
  const [collapsedSections, setCollapsedSections] = useState({});
11522
11219
  const [renamingSectionId, setRenamingSectionId] = useState(null);
@@ -12925,7 +12622,7 @@ function arePropsEqual(prev, next) {
12925
12622
  }
12926
12623
  return true;
12927
12624
  }
12928
- var SlideCard = React6.memo(SlideCardImpl, arePropsEqual);
12625
+ var SlideCard = React7.memo(SlideCardImpl, arePropsEqual);
12929
12626
  function SorterContextMenu({
12930
12627
  x,
12931
12628
  y,
@@ -14484,8 +14181,8 @@ function SlideNotesPanel({
14484
14181
  onHeightChange
14485
14182
  }) {
14486
14183
  const { t } = useTranslation();
14487
- const rootRef = React6.useRef(null);
14488
- React6.useEffect(() => {
14184
+ const rootRef = React7.useRef(null);
14185
+ React7.useEffect(() => {
14489
14186
  const el = rootRef.current;
14490
14187
  if (!el || !onHeightChange) {
14491
14188
  return void 0;
@@ -16377,9 +16074,9 @@ function PresentationSubtitleBar({
16377
16074
  function renderNotesSegments(segments) {
16378
16075
  return notesSegmentsToSpans(segments).map((span) => {
16379
16076
  if (span.kind === "break") {
16380
- return React6.createElement("br", { key: span.key });
16077
+ return React7.createElement("br", { key: span.key });
16381
16078
  }
16382
- return React6.createElement(
16079
+ return React7.createElement(
16383
16080
  "span",
16384
16081
  { key: span.key, style: span.style },
16385
16082
  span.text
@@ -16611,7 +16308,7 @@ function scaledSlidePreviewPropsEqual(prev, next) {
16611
16308
  }
16612
16309
  return true;
16613
16310
  }
16614
- var ScaledSlidePreview = React6.memo(ScaledSlidePreviewImpl, scaledSlidePreviewPropsEqual);
16311
+ var ScaledSlidePreview = React7.memo(ScaledSlidePreviewImpl, scaledSlidePreviewPropsEqual);
16615
16312
  function PresenterNotesRail({
16616
16313
  slides,
16617
16314
  current,
@@ -17849,7 +17546,7 @@ function EffectSoundRow({
17849
17546
  onPickStock
17850
17547
  }) {
17851
17548
  const { t } = useTranslation();
17852
- const fileInputRef = React6.useRef(null);
17549
+ const fileInputRef = React7.useRef(null);
17853
17550
  const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
17854
17551
  const handleSelectChange = (event) => {
17855
17552
  const value = event.target.value;
@@ -21435,7 +21132,7 @@ function ConnectorArrowsSection({
21435
21132
  ["Start", "End"].map((end) => {
21436
21133
  const widthKey = end === "Start" ? "connectorStartArrowWidth" : "connectorEndArrowWidth";
21437
21134
  const lengthKey = end === "Start" ? "connectorStartArrowLength" : "connectorEndArrowLength";
21438
- return /* @__PURE__ */ jsxs(React6.Fragment, { children: [
21135
+ return /* @__PURE__ */ jsxs(React7.Fragment, { children: [
21439
21136
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
21440
21137
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t(END_LABEL_KEYS[end].width) }),
21441
21138
  /* @__PURE__ */ jsx(
@@ -24312,7 +24009,7 @@ function StrokeEffectsSection({
24312
24009
  ] }),
24313
24010
  EFFECT_CONFIGS.map((cfg) => {
24314
24011
  const on = cfg.isOn(style);
24315
- return /* @__PURE__ */ jsxs(React6.Fragment, { children: [
24012
+ return /* @__PURE__ */ jsxs(React7.Fragment, { children: [
24316
24013
  /* @__PURE__ */ jsxs("label", { className: `inline-flex items-center gap-2 text-foreground ${COL2}`, children: [
24317
24014
  /* @__PURE__ */ jsx(
24318
24015
  WebCheckbox,
@@ -25180,7 +24877,7 @@ function TextWarpGallery({
25180
24877
  onUpdateTextStyle
25181
24878
  }) {
25182
24879
  const { t } = useTranslation();
25183
- const [expanded, setExpanded] = React6.useState(false);
24880
+ const [expanded, setExpanded] = React7.useState(false);
25184
24881
  const currentPreset = ts?.textWarpPreset || "textNoShape";
25185
24882
  return /* @__PURE__ */ jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
25186
24883
  /* @__PURE__ */ jsxs(
@@ -25831,7 +25528,7 @@ function SmartArtStyleControls({
25831
25528
  onChangeStyle
25832
25529
  }) {
25833
25530
  const { t } = useTranslation();
25834
- const translate = React6.useCallback((key) => t(key), [t]);
25531
+ const translate = React7.useCallback((key) => t(key), [t]);
25835
25532
  return /* @__PURE__ */ jsxs(Fragment, { children: [
25836
25533
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
25837
25534
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.smartart.colorScheme") }),
@@ -25886,9 +25583,9 @@ function SmartArtPropertiesPanel({
25886
25583
  const nodes = smartArtData.nodes ?? [];
25887
25584
  const layout = smartArtData.resolvedLayoutType;
25888
25585
  const topLevelCount = nodes.filter((n) => !n.parentId).length;
25889
- const inputRefs = React6.useRef(/* @__PURE__ */ new Map());
25890
- const pendingFocusId = React6.useRef(null);
25891
- React6.useEffect(() => {
25586
+ const inputRefs = React7.useRef(/* @__PURE__ */ new Map());
25587
+ const pendingFocusId = React7.useRef(null);
25588
+ React7.useEffect(() => {
25892
25589
  const id = pendingFocusId.current;
25893
25590
  if (id) {
25894
25591
  inputRefs.current.get(id)?.focus();
@@ -27502,7 +27199,7 @@ function CommentBody({ text, mentions, className }) {
27502
27199
  index
27503
27200
  ) : (
27504
27201
  // eslint-disable-next-line react/no-array-index-key -- segments are positional
27505
- /* @__PURE__ */ jsx(React6.Fragment, { children: segment.text }, index)
27202
+ /* @__PURE__ */ jsx(React7.Fragment, { children: segment.text }, index)
27506
27203
  )
27507
27204
  ) });
27508
27205
  }
@@ -29021,7 +28718,7 @@ function PresentationPropertiesPanel({
29021
28718
  onUpdateTagCollections
29022
28719
  }) {
29023
28720
  const { t } = useTranslation();
29024
- const handleTransitionChange = React6.useCallback(
28721
+ const handleTransitionChange = React7.useCallback(
29025
28722
  (updates) => {
29026
28723
  onUpdateSlide({
29027
28724
  transition: mergeSlideTransition(activeSlide?.transition, updates)
@@ -32940,7 +32637,7 @@ function ViewerToolbarSection(props) {
32940
32637
  },
32941
32638
  [activeSlide, propertyHandlers]
32942
32639
  );
32943
- const scopedLayoutOptions = React6.useMemo(
32640
+ const scopedLayoutOptions = React7.useMemo(
32944
32641
  () => scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
32945
32642
  [s.layoutOptions, activeSlide]
32946
32643
  );
@@ -34912,7 +34609,7 @@ function useTableStyleMapHandlers(input) {
34912
34609
  var AiChatPanel = lazy(async () => {
34913
34610
  const [{ useChat }, { default: Panel }] = await Promise.all([
34914
34611
  import('@ai-sdk/react'),
34915
- import('./AiChatPanel-5Z4BYP7S.mjs')
34612
+ import('./AiChatPanel-K3PL6O3M.mjs')
34916
34613
  ]);
34917
34614
  function BoundAiChatPanel(props) {
34918
34615
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });