pptx-react-viewer 2.18.0 → 2.19.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 (125) hide show
  1. package/CHANGELOG.md +712 -0
  2. package/dist/{AiChatPanel-SSSBERWJ.mjs → AiChatPanel-GRAIPSG3.mjs} +4 -4
  3. package/dist/AiChatPanel-GRAIPSG3.mjs.br +0 -0
  4. package/dist/AiChatPanel-GRAIPSG3.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-UN5DHPZY.js → AiChatPanel-JSTZ6W7R.js} +24 -24
  6. package/dist/AiChatPanel-JSTZ6W7R.js.br +0 -0
  7. package/dist/AiChatPanel-JSTZ6W7R.js.gz +0 -0
  8. package/dist/{Model3DScene-LYEESYAI.mjs → Model3DScene-FXDA7OII.mjs} +1 -1
  9. package/dist/Model3DScene-FXDA7OII.mjs.br +0 -0
  10. package/dist/Model3DScene-FXDA7OII.mjs.gz +0 -0
  11. package/dist/{Model3DScene-4RPYKC2I.js → Model3DScene-WLRZXJHN.js} +2 -2
  12. package/dist/Model3DScene-WLRZXJHN.js.br +0 -0
  13. package/dist/Model3DScene-WLRZXJHN.js.gz +0 -0
  14. package/dist/{PowerPointViewer-Cf4YHjdF.d.ts → PowerPointViewer-DVFkeluD.d.ts} +2 -2
  15. package/dist/PowerPointViewer-DVFkeluD.d.ts.map +1 -0
  16. package/dist/{audience-content-store-CyS0oP6t.d.ts → audience-content-store-ChVOSdBh.d.ts} +2 -2
  17. package/dist/{audience-content-store-CyS0oP6t.d.ts.map → audience-content-store-ChVOSdBh.d.ts.map} +1 -1
  18. package/dist/{chunk-QUB5OSKY.mjs → chunk-5ZQ3ZQ3M.mjs} +71 -125
  19. package/dist/chunk-5ZQ3ZQ3M.mjs.br +0 -0
  20. package/dist/chunk-5ZQ3ZQ3M.mjs.gz +0 -0
  21. package/dist/{chunk-O7FTUUXP.mjs → chunk-B55E3KXL.mjs} +210 -92
  22. package/dist/chunk-B55E3KXL.mjs.br +0 -0
  23. package/dist/chunk-B55E3KXL.mjs.gz +0 -0
  24. package/dist/{chunk-7XF6S4AM.mjs → chunk-KQGS6A5J.mjs} +1 -1
  25. package/dist/chunk-KQGS6A5J.mjs.br +0 -0
  26. package/dist/chunk-KQGS6A5J.mjs.gz +0 -0
  27. package/dist/{chunk-ASKYZ5ZY.js → chunk-LMTUC7U7.js} +440 -494
  28. package/dist/chunk-LMTUC7U7.js.br +0 -0
  29. package/dist/chunk-LMTUC7U7.js.gz +0 -0
  30. package/dist/{chunk-RTUGI4HQ.js → chunk-MVKRI3CZ.js} +9 -0
  31. package/dist/chunk-MVKRI3CZ.js.br +0 -0
  32. package/dist/chunk-MVKRI3CZ.js.gz +0 -0
  33. package/dist/{chunk-4LWGAVAP.js → chunk-PIJAFM4B.js} +197 -2425
  34. package/dist/chunk-PIJAFM4B.js.br +0 -0
  35. package/dist/chunk-PIJAFM4B.js.gz +0 -0
  36. package/dist/{chunk-GODW6RNR.mjs → chunk-PNR3J26S.mjs} +1173 -1051
  37. package/dist/chunk-PNR3J26S.mjs.br +0 -0
  38. package/dist/chunk-PNR3J26S.mjs.gz +0 -0
  39. package/dist/{chunk-MAVLV56S.js → chunk-SCGIXXN5.js} +3 -3
  40. package/dist/chunk-SCGIXXN5.js.br +0 -0
  41. package/dist/chunk-SCGIXXN5.js.gz +0 -0
  42. package/dist/{chunk-SNL6LBRX.mjs → chunk-SQJBFMEX.mjs} +9 -0
  43. package/dist/chunk-SQJBFMEX.mjs.br +0 -0
  44. package/dist/chunk-SQJBFMEX.mjs.gz +0 -0
  45. package/dist/{chunk-WVDM36ZM.js → chunk-T7BIRNE4.js} +1185 -1067
  46. package/dist/chunk-T7BIRNE4.js.br +0 -0
  47. package/dist/chunk-T7BIRNE4.js.gz +0 -0
  48. package/dist/{chunk-ICZDMFF2.js → chunk-TPC65IB2.js} +1219 -1101
  49. package/dist/chunk-TPC65IB2.js.br +0 -0
  50. package/dist/chunk-TPC65IB2.js.gz +0 -0
  51. package/dist/{chunk-BZOL6FXF.mjs → chunk-WGXQXHCS.mjs} +52 -2280
  52. package/dist/chunk-WGXQXHCS.mjs.br +0 -0
  53. package/dist/chunk-WGXQXHCS.mjs.gz +0 -0
  54. package/dist/i18n.js +4 -4
  55. package/dist/i18n.js.br +0 -0
  56. package/dist/i18n.js.gz +0 -0
  57. package/dist/i18n.mjs +1 -1
  58. package/dist/i18n.mjs.br +0 -0
  59. package/dist/i18n.mjs.gz +0 -0
  60. package/dist/index.d.ts +38 -1
  61. package/dist/index.js +47 -47
  62. package/dist/index.js.br +0 -0
  63. package/dist/index.js.gz +0 -0
  64. package/dist/index.mjs +6 -6
  65. package/dist/index.mjs.br +0 -0
  66. package/dist/index.mjs.gz +0 -0
  67. package/dist/internals.d.ts +102 -15
  68. package/dist/internals.d.ts.map +1 -1
  69. package/dist/internals.js +79 -79
  70. package/dist/internals.js.br +0 -0
  71. package/dist/internals.js.gz +0 -0
  72. package/dist/internals.mjs +4 -4
  73. package/dist/internals.mjs.br +0 -0
  74. package/dist/internals.mjs.gz +0 -0
  75. package/dist/{types-C_CTI-QE.d.ts → types-TCH6icpi.d.ts} +23 -1
  76. package/dist/{types-C_CTI-QE.d.ts.map → types-TCH6icpi.d.ts.map} +1 -1
  77. package/dist/{useViewerBuildingBlocks-DItilDbP.d.ts → useViewerBuildingBlocks-BKb0qs1j.d.ts} +20 -4
  78. package/dist/{useViewerBuildingBlocks-DItilDbP.d.ts.map → useViewerBuildingBlocks-BKb0qs1j.d.ts.map} +1 -1
  79. package/dist/viewer/index.d.ts +38 -1
  80. package/dist/viewer/index.js +27 -27
  81. package/dist/viewer/index.js.br +0 -0
  82. package/dist/viewer/index.js.gz +0 -0
  83. package/dist/viewer/index.mjs +6 -6
  84. package/dist/viewer/index.mjs.br +0 -0
  85. package/dist/viewer/index.mjs.gz +0 -0
  86. package/package.json +1 -1
  87. package/dist/AiChatPanel-SSSBERWJ.mjs.br +0 -0
  88. package/dist/AiChatPanel-SSSBERWJ.mjs.gz +0 -0
  89. package/dist/AiChatPanel-UN5DHPZY.js.br +0 -0
  90. package/dist/AiChatPanel-UN5DHPZY.js.gz +0 -0
  91. package/dist/Model3DScene-4RPYKC2I.js.br +0 -0
  92. package/dist/Model3DScene-4RPYKC2I.js.gz +0 -0
  93. package/dist/Model3DScene-LYEESYAI.mjs.br +0 -0
  94. package/dist/Model3DScene-LYEESYAI.mjs.gz +0 -0
  95. package/dist/PowerPointViewer-Cf4YHjdF.d.ts.map +0 -1
  96. package/dist/SurfaceChart3DScene-ACPKCWLJ.js +0 -78
  97. package/dist/SurfaceChart3DScene-ACPKCWLJ.js.br +0 -0
  98. package/dist/SurfaceChart3DScene-ACPKCWLJ.js.gz +0 -0
  99. package/dist/SurfaceChart3DScene-JR62SOYO.mjs +0 -76
  100. package/dist/SurfaceChart3DScene-JR62SOYO.mjs.br +0 -0
  101. package/dist/SurfaceChart3DScene-JR62SOYO.mjs.gz +0 -0
  102. package/dist/chunk-4LWGAVAP.js.br +0 -0
  103. package/dist/chunk-4LWGAVAP.js.gz +0 -0
  104. package/dist/chunk-7XF6S4AM.mjs.br +0 -0
  105. package/dist/chunk-7XF6S4AM.mjs.gz +0 -0
  106. package/dist/chunk-ASKYZ5ZY.js.br +0 -0
  107. package/dist/chunk-ASKYZ5ZY.js.gz +0 -0
  108. package/dist/chunk-BZOL6FXF.mjs.br +0 -0
  109. package/dist/chunk-BZOL6FXF.mjs.gz +0 -0
  110. package/dist/chunk-GODW6RNR.mjs.br +0 -0
  111. package/dist/chunk-GODW6RNR.mjs.gz +0 -0
  112. package/dist/chunk-ICZDMFF2.js.br +0 -0
  113. package/dist/chunk-ICZDMFF2.js.gz +0 -0
  114. package/dist/chunk-MAVLV56S.js.br +0 -0
  115. package/dist/chunk-MAVLV56S.js.gz +0 -0
  116. package/dist/chunk-O7FTUUXP.mjs.br +0 -0
  117. package/dist/chunk-O7FTUUXP.mjs.gz +0 -0
  118. package/dist/chunk-QUB5OSKY.mjs.br +0 -0
  119. package/dist/chunk-QUB5OSKY.mjs.gz +0 -0
  120. package/dist/chunk-RTUGI4HQ.js.br +0 -0
  121. package/dist/chunk-RTUGI4HQ.js.gz +0 -0
  122. package/dist/chunk-SNL6LBRX.mjs.br +0 -0
  123. package/dist/chunk-SNL6LBRX.mjs.gz +0 -0
  124. package/dist/chunk-WVDM36ZM.js.br +0 -0
  125. package/dist/chunk-WVDM36ZM.js.gz +0 -0
@@ -1,12 +1,12 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-7XF6S4AM.mjs';
2
- import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-QUB5OSKY.mjs';
3
- import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-BZOL6FXF.mjs';
4
- import { LOCALE_CATALOG, translationsEn } from './chunk-SNL6LBRX.mjs';
5
- import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalSeconds, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, isImageLikeElement, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, 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, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, normalizeSegments, createPlainNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, escapeHtml2, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, 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, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, buildFontCatalog, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, generateTicks, rulerDragToGuidePosition, getCommentMarkerPosition, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, chartDataChangeType, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, resolveSlideSizeSelection, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, formatCommentTimestamp, clearMotionPath, DIRECTIONAL_PRESETS, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-GODW6RNR.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-KQGS6A5J.mjs';
2
+ import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-5ZQ3ZQ3M.mjs';
3
+ import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-WGXQXHCS.mjs';
4
+ import { LOCALE_CATALOG, translationsEn } from './chunk-SQJBFMEX.mjs';
5
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, isImageLikeElement, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, ensureChartInteractionStyles, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, 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, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, normalizeSegments, createPlainNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, escapeHtml2, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, 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, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, buildFontCatalog, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, generateTicks, rulerDragToGuidePosition, getCommentMarkerPosition, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, chartDataChangeType, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, resolveSlideSizeSelection, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, formatCommentTimestamp, clearMotionPath, DIRECTIONAL_PRESETS, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-PNR3J26S.mjs';
6
6
  import React14, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, Suspense, useLayoutEffect, useContext, Fragment as Fragment$1, useDeferredValue } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
8
  import { useTranslation } from 'react-i18next';
9
- import { LuRotateCw, LuMessageSquare, LuEyeOff, LuSettings, LuX, LuCalendarDays, LuHash, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuLayers, LuSettings2, LuClock, LuDownload, LuTrash2, LuCheck, LuLock, LuEye, LuFileText, 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, LuArrowLeft, LuFolderOpen, LuClipboardPaste, LuScissors, LuPaintbrush, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuHighlighter, LuList, LuListOrdered, LuIndentDecrease, LuIndentIncrease, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPencil, LuStar, LuMoveRight, LuMousePointerClick, LuClock3, LuMonitorPlay, LuListVideo, LuCaptions, LuCamera, LuEraser, LuRotateCcw, LuCircleHelp, LuBookOpen, LuLanguages, LuGlobe, LuGitCompare, LuMessageSquarePlus, LuLockKeyhole, LuPanelTop, LuLayoutGrid, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuCaseSensitive, LuTimer, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuLink, LuGrid2X2, LuCopyPlus, LuScan, LuMonitorOff, LuCirclePlay, LuCirclePause, LuArrowLeftRight, LuClipboardCopy, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuPackage, LuFileJson, LuBox, LuFileImage, LuUser, LuHardDrive, LuLogIn, LuLayoutTemplate, LuFolderPlus, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignJustify, LuColumns3, LuSpline, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuMove, LuRadio, LuLockOpen, LuArrowDown, LuArrowUp, LuArrowRight, LuReply, LuBookmark } from 'react-icons/lu';
9
+ import { LuRotateCw, LuMessageSquare, LuEyeOff, LuHistory, LuTrash2, LuSettings, LuX, LuCalendarDays, LuHash, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuLayers, LuSettings2, LuClock, LuDownload, LuCheck, LuLock, LuEye, LuFileText, 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, LuArrowLeft, LuFolderOpen, LuClipboardPaste, LuScissors, LuPaintbrush, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuHighlighter, LuList, LuListOrdered, LuIndentDecrease, LuIndentIncrease, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPencil, LuStar, LuMoveRight, LuMousePointerClick, LuClock3, LuMonitorPlay, LuListVideo, LuCaptions, LuCamera, LuEraser, LuRotateCcw, LuCircleHelp, LuBookOpen, LuLanguages, LuGlobe, LuGitCompare, LuMessageSquarePlus, LuLockKeyhole, LuPanelTop, LuLayoutGrid, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuCaseSensitive, LuTimer, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuLink, LuGrid2X2, LuCopyPlus, LuScan, LuMonitorOff, LuCirclePlay, LuCirclePause, LuArrowLeftRight, LuClipboardCopy, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuPackage, LuFileJson, LuBox, LuFileImage, LuUser, LuHardDrive, LuLogIn, LuLayoutTemplate, LuFolderPlus, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignJustify, LuColumns3, LuSpline, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuMove, LuRadio, LuLockOpen, LuArrowDown, LuArrowUp, LuArrowRight, LuReply, LuBookmark } from 'react-icons/lu';
10
10
 
11
11
  var ViewerThemeContext = createContext(void 0);
12
12
  function ViewerThemeProvider({ theme, children }) {
@@ -479,23 +479,6 @@ function useChartPartSelection() {
479
479
  return useContext(ChartPartSelectionContext);
480
480
  }
481
481
  var DRAG_THRESHOLD_PX = 3;
482
- var STYLE_ELEMENT_ID = "pptx-chart-interaction-styles";
483
- var INTERACTION_CSS = `
484
- .pptx-chart-interactive svg [data-chart-part] { pointer-events: auto; cursor: pointer; }
485
- .pptx-chart-interactive svg [data-chart-part]:hover { filter: brightness(1.12); }
486
- .pptx-chart-interactive svg [data-chart-part='title'] { cursor: text; }
487
- .pptx-chart-interactive svg .pptx-chart-part-selected { filter: drop-shadow(0 0 2.5px #3b82f6); }
488
- .pptx-chart-interactive svg .pptx-chart-part-selected:hover { filter: drop-shadow(0 0 2.5px #3b82f6) brightness(1.12); }
489
- `;
490
- function ensureInteractionStyles() {
491
- if (typeof document === "undefined" || document.getElementById(STYLE_ELEMENT_ID)) {
492
- return;
493
- }
494
- const style = document.createElement("style");
495
- style.id = STYLE_ELEMENT_ID;
496
- style.textContent = INTERACTION_CSS;
497
- document.head.appendChild(style);
498
- }
499
482
  function ChartElementView({
500
483
  element,
501
484
  editable,
@@ -514,12 +497,15 @@ function ChartElementView({
514
497
  () => canEdit ? buildReactChartViewModel(element) : null,
515
498
  [canEdit, element]
516
499
  );
517
- useEffect(ensureInteractionStyles, []);
500
+ useEffect(ensureChartInteractionStyles, []);
518
501
  useEffect(() => {
502
+ if (!onUpdateElement) {
503
+ return;
504
+ }
519
505
  if (!canEdit && selection?.elementId === element.id) {
520
506
  setSelection(null);
521
507
  }
522
- }, [canEdit, selection, element.id, setSelection]);
508
+ }, [canEdit, selection, element.id, setSelection, onUpdateElement]);
523
509
  useEffect(() => {
524
510
  const root = wrapperRef.current;
525
511
  if (!root) {
@@ -2588,7 +2574,7 @@ function FailedToLoad() {
2588
2574
  var LazyModel3DScene = React14.lazy(
2589
2575
  async () => {
2590
2576
  try {
2591
- return await import('./Model3DScene-LYEESYAI.mjs');
2577
+ return await import('./Model3DScene-FXDA7OII.mjs');
2592
2578
  } catch {
2593
2579
  return { default: FailedToLoad };
2594
2580
  }
@@ -5546,6 +5532,7 @@ function TransitionsSection(p) {
5546
5532
  /* @__PURE__ */ jsx(
5547
5533
  "select",
5548
5534
  {
5535
+ "aria-label": t("pptx.ribbon.sound"),
5549
5536
  className: "w-24 px-1.5 py-1 rounded border border-border bg-muted text-xs text-foreground disabled:opacity-50",
5550
5537
  defaultValue: "none",
5551
5538
  disabled: true,
@@ -5589,6 +5576,7 @@ function TransitionsSection(p) {
5589
5576
  "input",
5590
5577
  {
5591
5578
  type: "checkbox",
5579
+ "aria-label": t("pptx.ribbon.afterDuration"),
5592
5580
  disabled: !canEdit,
5593
5581
  checked: draft.advanceAfter,
5594
5582
  onChange: (e) => commit({ advanceAfter: e.target.checked }),
@@ -5600,6 +5588,7 @@ function TransitionsSection(p) {
5600
5588
  "input",
5601
5589
  {
5602
5590
  type: "text",
5591
+ "aria-label": t("pptx.ribbon.advanceAfterSeconds"),
5603
5592
  value: advanceBuffer ?? draft.advanceAfterText,
5604
5593
  onChange: (e) => {
5605
5594
  setAdvanceBuffer(e.target.value);
@@ -5786,7 +5775,7 @@ function AccountPage() {
5786
5775
  return void 0;
5787
5776
  });
5788
5777
  };
5789
- const version = "2.17.0" ;
5778
+ const version = "2.19.0" ;
5790
5779
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
5791
5780
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
5792
5781
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -14683,31 +14672,17 @@ var MAX_ZOOM = SORTER_MAX_ZOOM;
14683
14672
  var DEFAULT_ZOOM = 100;
14684
14673
  var ZOOM_STEP = SORTER_ZOOM_STEP;
14685
14674
  function useKeyboardShortcuts(params) {
14686
- const {
14687
- slides,
14688
- activeSlideIndex,
14689
- canEdit,
14690
- selectedSlideIds,
14691
- selectedIndexes,
14692
- contextMenu,
14693
- setContextMenu,
14694
- setSelectedSlideIds,
14695
- setZoom,
14696
- onClose,
14697
- handleDeleteSelected,
14698
- handleCopySelected,
14699
- handlePaste,
14700
- handleDuplicateSelected,
14701
- handleSelectAll
14702
- } = params;
14675
+ const paramsRef = useRef(params);
14676
+ paramsRef.current = params;
14703
14677
  useEffect(() => {
14704
14678
  const handleKeyDown = (e) => {
14705
- if (contextMenu) {
14706
- setContextMenu(null);
14679
+ const current = paramsRef.current;
14680
+ if (current.contextMenu) {
14681
+ current.setContextMenu(null);
14707
14682
  }
14708
14683
  const { action } = mapSlideSorterKey(e, {
14709
- canEdit,
14710
- hasMultiSelection: selectedSlideIds.length > 1,
14684
+ canEdit: current.canEdit,
14685
+ hasMultiSelection: current.selectedSlideIds.length > 1,
14711
14686
  isTextInputTarget: isEditorTextInputTarget(e.target)
14712
14687
  });
14713
14688
  if (action === null) {
@@ -14716,65 +14691,49 @@ function useKeyboardShortcuts(params) {
14716
14691
  switch (action) {
14717
14692
  case "collapseSelection": {
14718
14693
  e.stopPropagation();
14719
- const activeSlide = slides[activeSlideIndex];
14720
- setSelectedSlideIds(activeSlide?.id ? [activeSlide.id] : []);
14694
+ const activeSlide = current.slides[current.activeSlideIndex];
14695
+ current.setSelectedSlideIds(activeSlide?.id ? [activeSlide.id] : []);
14721
14696
  return;
14722
14697
  }
14723
14698
  case "close":
14724
14699
  e.stopPropagation();
14725
- onClose();
14700
+ current.onClose();
14726
14701
  return;
14727
14702
  case "delete":
14728
14703
  e.preventDefault();
14729
- if (selectedIndexes.length > 0) {
14730
- handleDeleteSelected();
14704
+ if (current.selectedIndexes.length > 0) {
14705
+ current.handleDeleteSelected();
14731
14706
  }
14732
14707
  return;
14733
14708
  case "copy":
14734
14709
  e.preventDefault();
14735
- handleCopySelected();
14710
+ current.handleCopySelected();
14736
14711
  return;
14737
14712
  case "paste":
14738
14713
  e.preventDefault();
14739
- handlePaste();
14714
+ current.handlePaste();
14740
14715
  return;
14741
14716
  case "duplicate":
14742
14717
  e.preventDefault();
14743
- handleDuplicateSelected();
14718
+ current.handleDuplicateSelected();
14744
14719
  return;
14745
14720
  case "selectAll":
14746
14721
  e.preventDefault();
14747
- handleSelectAll();
14722
+ current.handleSelectAll();
14748
14723
  return;
14749
14724
  case "zoomIn":
14750
14725
  e.preventDefault();
14751
- setZoom((z) => clampSorterZoom(z + ZOOM_STEP));
14726
+ current.setZoom((z) => clampSorterZoom(z + ZOOM_STEP));
14752
14727
  return;
14753
14728
  case "zoomOut":
14754
14729
  e.preventDefault();
14755
- setZoom((z) => clampSorterZoom(z - ZOOM_STEP));
14730
+ current.setZoom((z) => clampSorterZoom(z - ZOOM_STEP));
14756
14731
  break;
14757
14732
  }
14758
14733
  };
14759
14734
  window.addEventListener("keydown", handleKeyDown);
14760
14735
  return () => window.removeEventListener("keydown", handleKeyDown);
14761
- }, [
14762
- onClose,
14763
- canEdit,
14764
- selectedSlideIds,
14765
- selectedIndexes,
14766
- activeSlideIndex,
14767
- slides,
14768
- contextMenu,
14769
- setContextMenu,
14770
- setSelectedSlideIds,
14771
- setZoom,
14772
- handleDeleteSelected,
14773
- handleCopySelected,
14774
- handlePaste,
14775
- handleDuplicateSelected,
14776
- handleSelectAll
14777
- ]);
14736
+ }, []);
14778
14737
  }
14779
14738
 
14780
14739
  // src/viewer/components/slide-sorter/useSlideSorterState.ts
@@ -19387,6 +19346,7 @@ function MotionPathRow({
19387
19346
  /* @__PURE__ */ jsxs(
19388
19347
  "select",
19389
19348
  {
19349
+ "aria-label": t("pptx.animation.motionPath.label"),
19390
19350
  value: isCustom ? "custom" : presetId ?? "none",
19391
19351
  onChange: (event) => onChange(event.target.value),
19392
19352
  disabled: !canEdit,
@@ -19836,6 +19796,7 @@ function AnimationPanel({
19836
19796
  /* @__PURE__ */ jsxs(
19837
19797
  "select",
19838
19798
  {
19799
+ "aria-label": t("pptx.animation.entrance"),
19839
19800
  value: selectedElementAnimation?.entrance ?? "none",
19840
19801
  onChange: handleEntranceChange,
19841
19802
  disabled: !canEdit,
@@ -19852,6 +19813,7 @@ function AnimationPanel({
19852
19813
  /* @__PURE__ */ jsxs(
19853
19814
  "select",
19854
19815
  {
19816
+ "aria-label": t("pptx.animation.emphasis"),
19855
19817
  value: selectedElementAnimation?.emphasis ?? "none",
19856
19818
  onChange: handleEmphasisChange,
19857
19819
  disabled: !canEdit,
@@ -19868,6 +19830,7 @@ function AnimationPanel({
19868
19830
  /* @__PURE__ */ jsxs(
19869
19831
  "select",
19870
19832
  {
19833
+ "aria-label": t("pptx.animation.exit"),
19871
19834
  value: selectedElementAnimation?.exit ?? "none",
19872
19835
  onChange: handleExitChange,
19873
19836
  disabled: !canEdit,
@@ -19915,6 +19878,7 @@ function AnimationPanel({
19915
19878
  /* @__PURE__ */ jsx(
19916
19879
  "select",
19917
19880
  {
19881
+ "aria-label": t("pptx.animation.sequence"),
19918
19882
  value: selectedElementAnimation?.sequence ?? "asOne",
19919
19883
  onChange: handleSequenceChange,
19920
19884
  disabled: !canEdit,
@@ -19929,6 +19893,7 @@ function AnimationPanel({
19929
19893
  /* @__PURE__ */ jsx(
19930
19894
  "select",
19931
19895
  {
19896
+ "aria-label": t("pptx.animation.trigger"),
19932
19897
  value: selectedElementAnimation?.trigger ?? "onClick",
19933
19898
  onChange: handleTriggerChange,
19934
19899
  disabled: !canEdit,
@@ -19942,6 +19907,7 @@ function AnimationPanel({
19942
19907
  /* @__PURE__ */ jsxs(
19943
19908
  "select",
19944
19909
  {
19910
+ "aria-label": t("pptx.animation.trigger.shapeLabel"),
19945
19911
  value: selectedElementAnimation?.triggerShapeId ?? "",
19946
19912
  onChange: handleTriggerShapeChange,
19947
19913
  disabled: !canEdit,
@@ -19990,6 +19956,7 @@ function AnimationPanel({
19990
19956
  /* @__PURE__ */ jsx(
19991
19957
  "select",
19992
19958
  {
19959
+ "aria-label": t("pptx.animation.timingCurve"),
19993
19960
  value: selectedElementAnimation?.timingCurve ?? "ease",
19994
19961
  onChange: handleTimingCurveChange,
19995
19962
  disabled: !canEdit,
@@ -20019,6 +19986,7 @@ function AnimationPanel({
20019
19986
  /* @__PURE__ */ jsx(
20020
19987
  "select",
20021
19988
  {
19989
+ "aria-label": t("pptx.animation.repeatUntil"),
20022
19990
  value: selectedElementAnimation?.repeatMode ?? "none",
20023
19991
  onChange: handleRepeatModeChange,
20024
19992
  disabled: !canEdit,
@@ -20378,6 +20346,7 @@ function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
20378
20346
  /* @__PURE__ */ jsx(
20379
20347
  "select",
20380
20348
  {
20349
+ "aria-label": t("pptx.chart.displayUnits"),
20381
20350
  disabled: !canEdit,
20382
20351
  className: INPUT2,
20383
20352
  value: axis.displayUnits ?? "",
@@ -20425,6 +20394,7 @@ function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
20425
20394
  /* @__PURE__ */ jsx(
20426
20395
  "select",
20427
20396
  {
20397
+ "aria-label": t("pptx.chart.tickLabels"),
20428
20398
  disabled: !canEdit,
20429
20399
  className: INPUT2,
20430
20400
  value: axis.tickLblPos ?? "nextTo",
@@ -20829,6 +20799,7 @@ function ChartDataLabelOptions({
20829
20799
  /* @__PURE__ */ jsx(
20830
20800
  "select",
20831
20801
  {
20802
+ "aria-label": t("pptx.chart.labelPosition"),
20832
20803
  disabled: !canEdit,
20833
20804
  className: INPUT2,
20834
20805
  value: labels.position ?? "",
@@ -20864,6 +20835,7 @@ function ChartDataPointMarkerOptions({
20864
20835
  /* @__PURE__ */ jsx(
20865
20836
  "select",
20866
20837
  {
20838
+ "aria-label": t("pptx.chart.series"),
20867
20839
  disabled: !canEdit,
20868
20840
  className: "flex-1 bg-muted border border-border rounded px-1.5 py-0.5 w-full",
20869
20841
  value: Math.min(seriesIndex, series.length - 1),
@@ -20969,6 +20941,7 @@ function ChartDataPointOptions({
20969
20941
  /* @__PURE__ */ jsx(
20970
20942
  "select",
20971
20943
  {
20944
+ "aria-label": t("pptx.chart.series"),
20972
20945
  disabled: !canEdit,
20973
20946
  className: INPUT2,
20974
20947
  value: Math.min(seriesIndex, series.length - 1),
@@ -21082,6 +21055,7 @@ function ChartDisplayOptions({ style, canEdit, onUpdateStyle }) {
21082
21055
  /* @__PURE__ */ jsx(
21083
21056
  "select",
21084
21057
  {
21058
+ "aria-label": t("pptx.chart.legendPosition"),
21085
21059
  disabled: !canEdit,
21086
21060
  className: INPUT2,
21087
21061
  value: style.legendPosition ?? "b",
@@ -21453,6 +21427,7 @@ function ChartTypeSelector({
21453
21427
  /* @__PURE__ */ jsx(
21454
21428
  "select",
21455
21429
  {
21430
+ "aria-label": t("pptx.chart.type"),
21456
21431
  disabled: !canEdit,
21457
21432
  className: INPUT2,
21458
21433
  value: chartType,
@@ -21468,6 +21443,7 @@ function ChartTypeSelector({
21468
21443
  /* @__PURE__ */ jsx(
21469
21444
  "select",
21470
21445
  {
21446
+ "aria-label": t("pptx.chart.grouping"),
21471
21447
  disabled: !canEdit,
21472
21448
  className: INPUT2,
21473
21449
  value: grouping ?? "clustered",
@@ -21820,6 +21796,7 @@ function ConnectorArrowsSection({
21820
21796
  /* @__PURE__ */ jsx(
21821
21797
  "select",
21822
21798
  {
21799
+ "aria-label": t(END_LABEL_KEYS[end].arrow),
21823
21800
  value: selectedShapeStyle?.[key] || "none",
21824
21801
  onChange: (e) => {
21825
21802
  onUpdateShapeStyle({
@@ -21843,6 +21820,7 @@ function ConnectorArrowsSection({
21843
21820
  /* @__PURE__ */ jsx(
21844
21821
  "select",
21845
21822
  {
21823
+ "aria-label": t(END_LABEL_KEYS[end].width),
21846
21824
  value: selectedShapeStyle?.[widthKey] || "med",
21847
21825
  onChange: (e) => {
21848
21826
  onUpdateShapeStyle({
@@ -21861,6 +21839,7 @@ function ConnectorArrowsSection({
21861
21839
  /* @__PURE__ */ jsx(
21862
21840
  "select",
21863
21841
  {
21842
+ "aria-label": t(END_LABEL_KEYS[end].length),
21864
21843
  value: selectedShapeStyle?.[lengthKey] || "med",
21865
21844
  onChange: (e) => {
21866
21845
  onUpdateShapeStyle({
@@ -23053,6 +23032,7 @@ function MediaPlaybackBookmarks({
23053
23032
  /* @__PURE__ */ jsxs(
23054
23033
  "select",
23055
23034
  {
23035
+ "aria-label": t("pptx.media.speed"),
23056
23036
  disabled: !canEdit,
23057
23037
  className: `${INPUT4} text-[11px] max-w-[100px]`,
23058
23038
  value: element.playbackSpeed ?? 1,
@@ -23128,6 +23108,7 @@ function MediaPlaybackBookmarks({
23128
23108
  /* @__PURE__ */ jsxs(
23129
23109
  "select",
23130
23110
  {
23111
+ "aria-label": t("pptx.media.startTrigger"),
23131
23112
  disabled: !canEdit,
23132
23113
  className: "text-[11px] bg-transparent border border-border rounded px-1 py-0.5",
23133
23114
  value: element.autoPlay ? "auto" : "onClick",
@@ -24127,14 +24108,36 @@ var safeNum = (raw, fallback) => {
24127
24108
  const n = Number(raw);
24128
24109
  return Number.isFinite(n) ? n : fallback;
24129
24110
  };
24130
- var SelectRow = ({ label, value, span2, options, onChange }) => {
24111
+ function SelectRow({
24112
+ label,
24113
+ value,
24114
+ span2,
24115
+ options,
24116
+ onChange
24117
+ }) {
24131
24118
  const { t } = useTranslation();
24132
24119
  return /* @__PURE__ */ jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
24133
24120
  /* @__PURE__ */ jsx("span", { className: LBL2, children: label }),
24134
- /* @__PURE__ */ jsx("select", { value, onChange: (e) => onChange(e.target.value), className: SEL2, children: options.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: o.i18nKey ? t(o.i18nKey) : o.label }, o.value)) })
24121
+ /* @__PURE__ */ jsx(
24122
+ "select",
24123
+ {
24124
+ "aria-label": label,
24125
+ value,
24126
+ onChange: (e) => onChange(e.target.value),
24127
+ className: SEL2,
24128
+ children: options.map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: o.i18nKey ? t(o.i18nKey) : o.label }, o.value))
24129
+ }
24130
+ )
24135
24131
  ] });
24136
- };
24137
- var ColorPickerRow = ({ label, value, disabled, prefix, recentColors, onChange }) => {
24132
+ }
24133
+ function ColorPickerRow({
24134
+ label,
24135
+ value,
24136
+ disabled,
24137
+ prefix,
24138
+ recentColors,
24139
+ onChange
24140
+ }) {
24138
24141
  const { t } = useTranslation();
24139
24142
  const handleEyedropper = async () => {
24140
24143
  const color = await openNativeEyeDropper();
@@ -24200,8 +24203,14 @@ var ColorPickerRow = ({ label, value, disabled, prefix, recentColors, onChange }
24200
24203
  ))
24201
24204
  ] })
24202
24205
  ] });
24203
- };
24204
- var GradientStopRow = ({ stop, index, total, onUpdate, allStops }) => {
24206
+ }
24207
+ function GradientStopRow({
24208
+ stop,
24209
+ index,
24210
+ total,
24211
+ onUpdate,
24212
+ allStops
24213
+ }) {
24205
24214
  const { t } = useTranslation();
24206
24215
  const patchStop = (patch) => {
24207
24216
  const next = allStops.map((s, i) => i === index ? { ...s, ...patch } : s);
@@ -24259,8 +24268,12 @@ var GradientStopRow = ({ stop, index, total, onUpdate, allStops }) => {
24259
24268
  ] })
24260
24269
  ] })
24261
24270
  ] });
24262
- };
24263
- var EffectField = ({ field, style, onUpdate }) => {
24271
+ }
24272
+ function EffectField({
24273
+ field,
24274
+ style,
24275
+ onUpdate
24276
+ }) {
24264
24277
  const { t } = useTranslation();
24265
24278
  const fieldLabel = field.i18nKey ? t(field.i18nKey) : field.label;
24266
24279
  const val = field.read(style);
@@ -24271,6 +24284,7 @@ var EffectField = ({ field, style, onUpdate }) => {
24271
24284
  /* @__PURE__ */ jsx(
24272
24285
  "select",
24273
24286
  {
24287
+ "aria-label": fieldLabel,
24274
24288
  value: String(val),
24275
24289
  onChange: (e) => {
24276
24290
  const result = field.write(e.target.value, style);
@@ -24354,7 +24368,7 @@ var EffectField = ({ field, style, onUpdate }) => {
24354
24368
  }
24355
24369
  )
24356
24370
  ] });
24357
- };
24371
+ }
24358
24372
  function FillAdvancedControls({
24359
24373
  style,
24360
24374
  gradientStops,
@@ -24632,6 +24646,7 @@ function StrokeEffectsSection({
24632
24646
  /* @__PURE__ */ jsx(
24633
24647
  "select",
24634
24648
  {
24649
+ "aria-label": t("pptx.strokeEffects.strokeDash"),
24635
24650
  value: style?.strokeDash || "solid",
24636
24651
  onChange: (e) => onUpdateShapeStyle({
24637
24652
  strokeDash: e.target.value
@@ -24917,6 +24932,7 @@ function Text3DProperties({
24917
24932
  /* @__PURE__ */ jsx(
24918
24933
  "select",
24919
24934
  {
24935
+ "aria-label": t("pptx.text3d.material"),
24920
24936
  value: t3d?.presetMaterial ?? "",
24921
24937
  onChange: (e) => {
24922
24938
  const v = e.target.value;
@@ -24949,6 +24965,7 @@ function BevelSection({
24949
24965
  /* @__PURE__ */ jsx(
24950
24966
  "select",
24951
24967
  {
24968
+ "aria-label": t("pptx.text3d.bevelType"),
24952
24969
  value: bevelType ?? "none",
24953
24970
  onChange: (e) => onTypeChange(e.target.value),
24954
24971
  className: INPUT_CLS2,
@@ -25073,6 +25090,7 @@ function AdvancedTextFormatting({
25073
25090
  /* @__PURE__ */ jsx(
25074
25091
  "select",
25075
25092
  {
25093
+ "aria-label": t("pptx.textProperties.underlineStyle"),
25076
25094
  value: ts?.underlineStyle || "sng",
25077
25095
  disabled: !canEdit,
25078
25096
  onChange: (e) => onUpdateTextStyle({
@@ -26630,6 +26648,7 @@ function TableCellPatternFill({
26630
26648
  /* @__PURE__ */ jsx(
26631
26649
  "select",
26632
26650
  {
26651
+ "aria-label": t("pptx.table.patternPreset"),
26633
26652
  disabled: !canEdit,
26634
26653
  className: SEL,
26635
26654
  value: cellStyle.patternFillPreset ?? "ltDnDiag",
@@ -26704,6 +26723,7 @@ function TableCellAdvancedFill({
26704
26723
  /* @__PURE__ */ jsx(
26705
26724
  "select",
26706
26725
  {
26726
+ "aria-label": t("pptx.table.fillMode"),
26707
26727
  disabled: !canEdit,
26708
26728
  className: SEL,
26709
26729
  value: fillMode,
@@ -26779,6 +26799,7 @@ function GradientControls({
26779
26799
  /* @__PURE__ */ jsx(
26780
26800
  "select",
26781
26801
  {
26802
+ "aria-label": t("pptx.table.gradientType"),
26782
26803
  disabled: !canEdit,
26783
26804
  className: SEL,
26784
26805
  value: gradType,
@@ -28114,6 +28135,7 @@ function SlideSizeCard({
28114
28135
  /* @__PURE__ */ jsxs(
28115
28136
  "select",
28116
28137
  {
28138
+ "aria-label": t("pptx.slideSize.presets"),
28117
28139
  "data-pptx-slide-size-preset": true,
28118
28140
  disabled: presetDisabled,
28119
28141
  className: INPUT,
@@ -28131,6 +28153,7 @@ function SlideSizeCard({
28131
28153
  /* @__PURE__ */ jsxs(
28132
28154
  "select",
28133
28155
  {
28156
+ "aria-label": t("pptx.slideSize.orientation"),
28134
28157
  "data-pptx-slide-size-orientation": true,
28135
28158
  disabled: presetDisabled,
28136
28159
  className: INPUT,
@@ -28195,6 +28218,7 @@ function PresentationSettingsCard({
28195
28218
  /* @__PURE__ */ jsxs(
28196
28219
  "select",
28197
28220
  {
28221
+ "aria-label": t("pptx.presentationSettings.showType"),
28198
28222
  disabled: !canEdit,
28199
28223
  className: cn(INPUT, "w-28"),
28200
28224
  value: presentationProperties.showType ?? "presented",
@@ -28286,6 +28310,7 @@ function ThemeSelectorCard({
28286
28310
  /* @__PURE__ */ jsx(
28287
28311
  "select",
28288
28312
  {
28313
+ "aria-label": t("pptx.documentProperties.themeHeading"),
28289
28314
  disabled: themeOptions.length === 0,
28290
28315
  className: INPUT,
28291
28316
  value: selectedThemePath,
@@ -34636,7 +34661,7 @@ ${url}`)) {
34636
34661
  var AiChatPanel = lazy(async () => {
34637
34662
  const [{ useChat }, { default: Panel }] = await Promise.all([
34638
34663
  import('@ai-sdk/react'),
34639
- import('./AiChatPanel-SSSBERWJ.mjs')
34664
+ import('./AiChatPanel-GRAIPSG3.mjs')
34640
34665
  ]);
34641
34666
  function BoundAiChatPanel(props) {
34642
34667
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -34849,6 +34874,7 @@ function ThemeColorSchemeEditor({
34849
34874
  /* @__PURE__ */ jsxs(
34850
34875
  "select",
34851
34876
  {
34877
+ "aria-label": t("pptx.themeEditor.headingFont"),
34852
34878
  className: THEME_EDITOR_INPUT,
34853
34879
  disabled: !canEdit,
34854
34880
  value: COMMON_FONTS.includes(majorFont) ? majorFont : "__custom__",
@@ -34869,6 +34895,7 @@ function ThemeColorSchemeEditor({
34869
34895
  /* @__PURE__ */ jsxs(
34870
34896
  "select",
34871
34897
  {
34898
+ "aria-label": t("pptx.themeEditor.bodyFont"),
34872
34899
  className: THEME_EDITOR_INPUT,
34873
34900
  disabled: !canEdit,
34874
34901
  value: COMMON_FONTS.includes(minorFont) ? minorFont : "__custom__",
@@ -35921,6 +35948,69 @@ function ViewerMainContent(props) {
35921
35948
  )
35922
35949
  ] }) });
35923
35950
  }
35951
+ function AutosaveRecoveryDialog({
35952
+ prompt,
35953
+ onRestore,
35954
+ onDiscard
35955
+ }) {
35956
+ const { t } = useTranslation();
35957
+ if (!prompt) {
35958
+ return null;
35959
+ }
35960
+ const title = t(prompt.titleKey);
35961
+ const when = t(prompt.ageKey, prompt.ageParams);
35962
+ return /* @__PURE__ */ jsx(
35963
+ "div",
35964
+ {
35965
+ style: { zIndex: 1200 },
35966
+ className: "fixed inset-0 flex items-center justify-center bg-black/50",
35967
+ "data-pptx-autosave-recovery": "true",
35968
+ children: /* @__PURE__ */ jsxs(
35969
+ "div",
35970
+ {
35971
+ role: "dialog",
35972
+ "aria-modal": "true",
35973
+ "aria-label": title,
35974
+ className: "bg-background border border-border rounded-lg shadow-xl w-[440px] max-w-[90vw] p-6",
35975
+ children: [
35976
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
35977
+ /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-10 h-10 rounded-full bg-primary/10", children: /* @__PURE__ */ jsx(LuHistory, { className: "w-5 h-5 text-primary" }) }),
35978
+ /* @__PURE__ */ jsx("h2", { className: "text-base font-semibold text-foreground", children: title })
35979
+ ] }),
35980
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t(prompt.messageKey, prompt.messageParams) }),
35981
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground mt-2", children: t("pptx.autosave.recovery.savedLabel", { when }) }),
35982
+ /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2 mt-6", children: [
35983
+ /* @__PURE__ */ jsxs(
35984
+ "button",
35985
+ {
35986
+ type: "button",
35987
+ className: "inline-flex items-center gap-1.5 px-4 py-2 text-sm font-medium rounded-md border border-border bg-background text-foreground hover:bg-accent transition-colors",
35988
+ onClick: onDiscard,
35989
+ children: [
35990
+ /* @__PURE__ */ jsx(LuTrash2, { className: "w-4 h-4" }),
35991
+ t(prompt.discardKey)
35992
+ ]
35993
+ }
35994
+ ),
35995
+ /* @__PURE__ */ jsxs(
35996
+ "button",
35997
+ {
35998
+ type: "button",
35999
+ className: "inline-flex items-center gap-1.5 px-4 py-2 text-sm font-medium rounded-md bg-primary text-white hover:bg-primary/90 transition-colors",
36000
+ onClick: onRestore,
36001
+ children: [
36002
+ /* @__PURE__ */ jsx(LuHistory, { className: "w-4 h-4" }),
36003
+ t(prompt.restoreKey)
36004
+ ]
36005
+ }
36006
+ )
36007
+ ] })
36008
+ ]
36009
+ }
36010
+ )
36011
+ }
36012
+ );
36013
+ }
35924
36014
  var ToggleRow = ({ checked, onChange, icon, label }) => /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2.5 cursor-pointer group select-none", children: [
35925
36015
  /* @__PURE__ */ jsxs("span", { className: "relative flex items-center justify-center w-4 h-4", children: [
35926
36016
  /* @__PURE__ */ jsx(
@@ -37609,6 +37699,8 @@ var PowerPointViewer = forwardRef(
37609
37699
  filePath,
37610
37700
  fileName,
37611
37701
  canEdit = false,
37702
+ autosave: hostAutosave,
37703
+ autosaveIntervalMs: hostAutosaveIntervalMs,
37612
37704
  onContentChange,
37613
37705
  onDirtyChange,
37614
37706
  onActiveSlideChange,
@@ -37729,6 +37821,12 @@ var PowerPointViewer = forwardRef(
37729
37821
  const [isSettingsOpen, setIsSettingsOpen] = useState(false);
37730
37822
  const [isHeaderFooterOpen, setIsHeaderFooterOpen] = useState(false);
37731
37823
  const [autosaveEnabled, setAutosaveEnabled] = useState(true);
37824
+ const autosaveActivation = resolveAutosaveActivation({
37825
+ hostAutosave,
37826
+ userEnabled: autosaveEnabled,
37827
+ canEdit,
37828
+ filePath
37829
+ });
37732
37830
  const [isShareDialogOpen, setIsShareDialogOpen] = useState(false);
37733
37831
  const { reducedMotion, toggleReducedMotion } = useReducedMotion();
37734
37832
  const state = useViewerState({ content, canEdit });
@@ -38010,6 +38108,7 @@ var PowerPointViewer = forwardRef(
38010
38108
  handleEnterPresenterView,
38011
38109
  handleEnterRehearsalMode,
38012
38110
  autosaveStatus,
38111
+ recovery,
38013
38112
  isEncryptedDialogOpen,
38014
38113
  setIsEncryptedDialogOpen,
38015
38114
  handlerRef,
@@ -38026,10 +38125,14 @@ var PowerPointViewer = forwardRef(
38026
38125
  gridSpacingPx,
38027
38126
  content,
38028
38127
  filePath,
38029
- autosaveEnabled,
38030
- // File > Options > Save > "Save AutoRecover information every N
38031
- // minutes". React alone ignored it and stayed on the 120s default.
38032
- autosaveIntervalSeconds: resolveAutosaveIntervalSeconds(viewerOptions),
38128
+ autosaveEnabled: autosaveActivation.active,
38129
+ autosaveAllowed: hostAutosave !== false,
38130
+ // Host prop first (an explicit policy), else File > Options > Save >
38131
+ // "Save AutoRecover information every N minutes", else the shared 120s.
38132
+ autosaveIntervalMs: resolveAutosaveIntervalMs({
38133
+ hostIntervalMs: hostAutosaveIntervalMs,
38134
+ optionsIntervalSeconds: resolveAutosaveIntervalSeconds(viewerOptions)
38135
+ }),
38033
38136
  canEdit,
38034
38137
  mode,
38035
38138
  slides,
@@ -38162,8 +38265,12 @@ var PowerPointViewer = forwardRef(
38162
38265
  onOpenRecentFile: handleOpenRecentFile,
38163
38266
  fileName,
38164
38267
  autosaveStatus,
38165
- autosaveEnabled,
38166
- onToggleAutosave: () => setAutosaveEnabled((p) => !p),
38268
+ autosaveEnabled: autosaveActivation.active,
38269
+ onToggleAutosave: () => {
38270
+ if (autosaveActivation.toggleAvailable) {
38271
+ setAutosaveEnabled((p) => !p);
38272
+ }
38273
+ },
38167
38274
  hiddenActions,
38168
38275
  aiEnabled: Boolean(ai),
38169
38276
  isAiPanelOpen: aiPanel.isOpen,
@@ -38281,6 +38388,17 @@ var PowerPointViewer = forwardRef(
38281
38388
  onDiscardAnnotations: handleDiscardAnnotations
38282
38389
  }
38283
38390
  ),
38391
+ /* @__PURE__ */ jsx(
38392
+ AutosaveRecoveryDialog,
38393
+ {
38394
+ prompt: shouldShowAutosaveRecoveryPrompt({
38395
+ prompt: recovery.prompt,
38396
+ presenting: mode === "present"
38397
+ }) ? recovery.prompt : null,
38398
+ onRestore: recovery.restore,
38399
+ onDiscard: recovery.discard
38400
+ }
38401
+ ),
38284
38402
  /* @__PURE__ */ jsx(
38285
38403
  SettingsDialog,
38286
38404
  {