pptx-react-viewer 3.9.0 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/{AiChatPanel-3A42W7RW.js → AiChatPanel-A3ZMMVUA.js} +25 -25
  3. package/dist/AiChatPanel-A3ZMMVUA.js.br +0 -0
  4. package/dist/AiChatPanel-A3ZMMVUA.js.gz +0 -0
  5. package/dist/{AiChatPanel-II6VOOAL.mjs → AiChatPanel-L5H455NZ.mjs} +4 -4
  6. package/dist/AiChatPanel-L5H455NZ.mjs.br +0 -0
  7. package/dist/AiChatPanel-L5H455NZ.mjs.gz +0 -0
  8. package/dist/{Area3DChartScene-JM3CQ3WQ.mjs → Area3DChartScene-OAD36KIX.mjs} +1 -1
  9. package/dist/{Area3DChartScene-JM3CQ3WQ.mjs.br → Area3DChartScene-OAD36KIX.mjs.br} +0 -0
  10. package/dist/Area3DChartScene-OAD36KIX.mjs.gz +0 -0
  11. package/dist/{Area3DChartScene-XJK4ZA4R.js → Area3DChartScene-R2CKCYCB.js} +2 -2
  12. package/dist/{Area3DChartScene-XJK4ZA4R.js.br → Area3DChartScene-R2CKCYCB.js.br} +0 -0
  13. package/dist/Area3DChartScene-R2CKCYCB.js.gz +0 -0
  14. package/dist/{Bar3DChartScene-RGRZY5P6.js → Bar3DChartScene-CRRPMXGQ.js} +2 -2
  15. package/dist/Bar3DChartScene-CRRPMXGQ.js.br +0 -0
  16. package/dist/Bar3DChartScene-CRRPMXGQ.js.gz +0 -0
  17. package/dist/{Bar3DChartScene-VNFWI2QG.mjs → Bar3DChartScene-XNNXF26T.mjs} +1 -1
  18. package/dist/{Bar3DChartScene-VNFWI2QG.mjs.br → Bar3DChartScene-XNNXF26T.mjs.br} +0 -0
  19. package/dist/Bar3DChartScene-XNNXF26T.mjs.gz +0 -0
  20. package/dist/{Line3DChartScene-MEY42DBF.js → Line3DChartScene-44PLZML2.js} +2 -2
  21. package/dist/Line3DChartScene-44PLZML2.js.br +0 -0
  22. package/dist/Line3DChartScene-44PLZML2.js.gz +0 -0
  23. package/dist/{Line3DChartScene-GXOWGIFJ.mjs → Line3DChartScene-MNNPB3LZ.mjs} +1 -1
  24. package/dist/{Line3DChartScene-GXOWGIFJ.mjs.br → Line3DChartScene-MNNPB3LZ.mjs.br} +0 -0
  25. package/dist/Line3DChartScene-MNNPB3LZ.mjs.gz +0 -0
  26. package/dist/{Model3DScene-WJ3MMIZH.mjs → Model3DScene-5MUREFLY.mjs} +1 -1
  27. package/dist/Model3DScene-5MUREFLY.mjs.br +0 -0
  28. package/dist/Model3DScene-5MUREFLY.mjs.gz +0 -0
  29. package/dist/{Model3DScene-MWXTGHDM.js → Model3DScene-RYPYQPJH.js} +2 -2
  30. package/dist/Model3DScene-RYPYQPJH.js.br +0 -0
  31. package/dist/Model3DScene-RYPYQPJH.js.gz +0 -0
  32. package/dist/{PieChart3DScene-FJJGOQIS.js → PieChart3DScene-GACYCSSQ.js} +2 -2
  33. package/dist/{PieChart3DScene-FJJGOQIS.js.br → PieChart3DScene-GACYCSSQ.js.br} +0 -0
  34. package/dist/PieChart3DScene-GACYCSSQ.js.gz +0 -0
  35. package/dist/{PieChart3DScene-WXJEDYMK.mjs → PieChart3DScene-KYZSSG5X.mjs} +1 -1
  36. package/dist/PieChart3DScene-KYZSSG5X.mjs.br +0 -0
  37. package/dist/PieChart3DScene-KYZSSG5X.mjs.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-VDK3F224.js → SurfaceChart3DScene-RI5G4BHS.js} +2 -2
  39. package/dist/{SurfaceChart3DScene-VDK3F224.js.br → SurfaceChart3DScene-RI5G4BHS.js.br} +0 -0
  40. package/dist/SurfaceChart3DScene-RI5G4BHS.js.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-IKPE2SVE.mjs → SurfaceChart3DScene-ZUP4PRUZ.mjs} +1 -1
  42. package/dist/SurfaceChart3DScene-ZUP4PRUZ.mjs.br +0 -0
  43. package/dist/SurfaceChart3DScene-ZUP4PRUZ.mjs.gz +0 -0
  44. package/dist/{chunk-3NIJ5HIZ.js → chunk-4PL3GBSD.js} +1818 -1279
  45. package/dist/chunk-4PL3GBSD.js.br +0 -0
  46. package/dist/chunk-4PL3GBSD.js.gz +0 -0
  47. package/dist/{chunk-NTWFXLZX.mjs → chunk-5T4Y4QPV.mjs} +2 -2
  48. package/dist/chunk-5T4Y4QPV.mjs.br +0 -0
  49. package/dist/chunk-5T4Y4QPV.mjs.gz +0 -0
  50. package/dist/{chunk-VQX7G75Z.mjs → chunk-6BNPHEEX.mjs} +70521 -52117
  51. package/dist/chunk-6BNPHEEX.mjs.br +0 -0
  52. package/dist/chunk-6BNPHEEX.mjs.gz +0 -0
  53. package/dist/{chunk-K6Q6KLA6.js → chunk-BX4XVY5X.js} +6168 -1929
  54. package/dist/chunk-BX4XVY5X.js.br +0 -0
  55. package/dist/chunk-BX4XVY5X.js.gz +0 -0
  56. package/dist/{chunk-LBJAVP3H.js → chunk-IK25LY4C.js} +176 -176
  57. package/dist/chunk-IK25LY4C.js.br +0 -0
  58. package/dist/chunk-IK25LY4C.js.gz +0 -0
  59. package/dist/{chunk-G3JPCRKN.js → chunk-LY5535CF.js} +70559 -52147
  60. package/dist/chunk-LY5535CF.js.br +0 -0
  61. package/dist/chunk-LY5535CF.js.gz +0 -0
  62. package/dist/{chunk-5CPGDXD6.js → chunk-MRBHJ26I.js} +457 -445
  63. package/dist/chunk-MRBHJ26I.js.br +0 -0
  64. package/dist/chunk-MRBHJ26I.js.gz +0 -0
  65. package/dist/{chunk-76Z3X6JX.mjs → chunk-N75WRHON.mjs} +599 -60
  66. package/dist/chunk-N75WRHON.mjs.br +0 -0
  67. package/dist/chunk-N75WRHON.mjs.gz +0 -0
  68. package/dist/{chunk-3Y63XPIN.mjs → chunk-SUEZMQRT.mjs} +6164 -1925
  69. package/dist/chunk-SUEZMQRT.mjs.br +0 -0
  70. package/dist/chunk-SUEZMQRT.mjs.gz +0 -0
  71. package/dist/{chunk-JBSAKP4Z.mjs → chunk-TAGG5YNA.mjs} +61 -1
  72. package/dist/chunk-TAGG5YNA.mjs.br +0 -0
  73. package/dist/chunk-TAGG5YNA.mjs.gz +0 -0
  74. package/dist/{chunk-PCCM7NVY.mjs → chunk-VHFPZBUW.mjs} +21 -10
  75. package/dist/chunk-VHFPZBUW.mjs.br +0 -0
  76. package/dist/chunk-VHFPZBUW.mjs.gz +0 -0
  77. package/dist/{chunk-TEVGDXVW.js → chunk-Y6GG2OOW.js} +61 -1
  78. package/dist/chunk-Y6GG2OOW.js.br +0 -0
  79. package/dist/chunk-Y6GG2OOW.js.gz +0 -0
  80. package/dist/i18n.js +4 -4
  81. package/dist/i18n.js.br +0 -0
  82. package/dist/i18n.js.gz +0 -0
  83. package/dist/i18n.mjs +1 -1
  84. package/dist/i18n.mjs.br +0 -0
  85. package/dist/i18n.mjs.gz +0 -0
  86. package/dist/index-CGKutKk1.d.ts.map +1 -1
  87. package/dist/index.d.ts +241 -19
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +47 -47
  90. package/dist/index.js.br +0 -0
  91. package/dist/index.js.gz +0 -0
  92. package/dist/index.mjs +6 -6
  93. package/dist/index.mjs.br +0 -0
  94. package/dist/index.mjs.gz +0 -0
  95. package/dist/internals.d.ts +230 -10
  96. package/dist/internals.d.ts.map +1 -1
  97. package/dist/internals.js +79 -79
  98. package/dist/internals.js.br +0 -0
  99. package/dist/internals.js.gz +0 -0
  100. package/dist/internals.mjs +4 -4
  101. package/dist/internals.mjs.br +0 -0
  102. package/dist/internals.mjs.gz +0 -0
  103. package/dist/pptx-viewer.css +1 -1
  104. package/dist/pptx-viewer.css.br +0 -0
  105. package/dist/pptx-viewer.css.gz +0 -0
  106. package/dist/{useViewerBuildingBlocks-C8F_4Pzb.d.ts → useViewerBuildingBlocks-FbK-4ORi.d.ts} +2 -1
  107. package/dist/useViewerBuildingBlocks-FbK-4ORi.d.ts.map +1 -0
  108. package/dist/viewer/index.d.ts +220 -5
  109. package/dist/viewer/index.d.ts.map +1 -1
  110. package/dist/viewer/index.js +27 -27
  111. package/dist/viewer/index.js.br +0 -0
  112. package/dist/viewer/index.js.gz +0 -0
  113. package/dist/viewer/index.mjs +6 -6
  114. package/dist/viewer/index.mjs.br +0 -0
  115. package/dist/viewer/index.mjs.gz +0 -0
  116. package/package.json +9 -9
  117. package/dist/AiChatPanel-3A42W7RW.js.br +0 -0
  118. package/dist/AiChatPanel-3A42W7RW.js.gz +0 -0
  119. package/dist/AiChatPanel-II6VOOAL.mjs.br +0 -0
  120. package/dist/AiChatPanel-II6VOOAL.mjs.gz +0 -0
  121. package/dist/Area3DChartScene-JM3CQ3WQ.mjs.gz +0 -0
  122. package/dist/Area3DChartScene-XJK4ZA4R.js.gz +0 -0
  123. package/dist/Bar3DChartScene-RGRZY5P6.js.br +0 -0
  124. package/dist/Bar3DChartScene-RGRZY5P6.js.gz +0 -0
  125. package/dist/Bar3DChartScene-VNFWI2QG.mjs.gz +0 -0
  126. package/dist/Line3DChartScene-GXOWGIFJ.mjs.gz +0 -0
  127. package/dist/Line3DChartScene-MEY42DBF.js.br +0 -0
  128. package/dist/Line3DChartScene-MEY42DBF.js.gz +0 -0
  129. package/dist/Model3DScene-MWXTGHDM.js.br +0 -0
  130. package/dist/Model3DScene-MWXTGHDM.js.gz +0 -0
  131. package/dist/Model3DScene-WJ3MMIZH.mjs.br +0 -0
  132. package/dist/Model3DScene-WJ3MMIZH.mjs.gz +0 -0
  133. package/dist/PieChart3DScene-FJJGOQIS.js.gz +0 -0
  134. package/dist/PieChart3DScene-WXJEDYMK.mjs.br +0 -0
  135. package/dist/PieChart3DScene-WXJEDYMK.mjs.gz +0 -0
  136. package/dist/SurfaceChart3DScene-IKPE2SVE.mjs.br +0 -0
  137. package/dist/SurfaceChart3DScene-IKPE2SVE.mjs.gz +0 -0
  138. package/dist/SurfaceChart3DScene-VDK3F224.js.gz +0 -0
  139. package/dist/chunk-3NIJ5HIZ.js.br +0 -0
  140. package/dist/chunk-3NIJ5HIZ.js.gz +0 -0
  141. package/dist/chunk-3Y63XPIN.mjs.br +0 -0
  142. package/dist/chunk-3Y63XPIN.mjs.gz +0 -0
  143. package/dist/chunk-5CPGDXD6.js.br +0 -0
  144. package/dist/chunk-5CPGDXD6.js.gz +0 -0
  145. package/dist/chunk-76Z3X6JX.mjs.br +0 -0
  146. package/dist/chunk-76Z3X6JX.mjs.gz +0 -0
  147. package/dist/chunk-G3JPCRKN.js.br +0 -0
  148. package/dist/chunk-G3JPCRKN.js.gz +0 -0
  149. package/dist/chunk-JBSAKP4Z.mjs.br +0 -0
  150. package/dist/chunk-JBSAKP4Z.mjs.gz +0 -0
  151. package/dist/chunk-K6Q6KLA6.js.br +0 -0
  152. package/dist/chunk-K6Q6KLA6.js.gz +0 -0
  153. package/dist/chunk-LBJAVP3H.js.br +0 -0
  154. package/dist/chunk-LBJAVP3H.js.gz +0 -0
  155. package/dist/chunk-NTWFXLZX.mjs.br +0 -0
  156. package/dist/chunk-NTWFXLZX.mjs.gz +0 -0
  157. package/dist/chunk-PCCM7NVY.mjs.br +0 -0
  158. package/dist/chunk-PCCM7NVY.mjs.gz +0 -0
  159. package/dist/chunk-TEVGDXVW.js.br +0 -0
  160. package/dist/chunk-TEVGDXVW.js.gz +0 -0
  161. package/dist/chunk-VQX7G75Z.mjs.br +0 -0
  162. package/dist/chunk-VQX7G75Z.mjs.gz +0 -0
  163. package/dist/useViewerBuildingBlocks-C8F_4Pzb.d.ts.map +0 -1
@@ -1,8 +1,8 @@
1
- import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-3Y63XPIN.mjs';
2
- import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, safePrompt, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, syncSelectionHandleOverlay } from './chunk-PCCM7NVY.mjs';
3
- import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, 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, STROKE_DASH_OPTIONS } from './chunk-NTWFXLZX.mjs';
4
- import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, buildDeckSaveOptions, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, getEffectStyleSource, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, strokeOutlineViewBox, getElementTransform, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, subscribeBarFacePicturePixelSamples, getBarFacePicturePixelSampleVersion, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, buildInkGroupStrokes, getInkReplayStyles, INK_REPLAY_KEYFRAMES, buildContentPartStrokes, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, elementIdSelector, 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, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, modelDataToBlobUrl, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, getInlineEditorSelection, findChartPartTarget, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, collectCoherent3DOffNodeIds, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, hasGlyphEnvelope, buildGlyphEnvelope, getWarpPath, isWedgeCalloutPresetShape, isElementActionable, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, 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, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, advanceChartMarkDrag, advanceChartValueDrag, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, readSoundFileAsDataUrl, applyTransitionSoundFile, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, 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, withChartPointValue, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, getElementTransformWithoutRotation, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, buildLiveInkStrokeView, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, hasTiltData, elementLockTogglePatch, buildTableDataGrid, 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, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, 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, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, 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, 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 } from './chunk-VQX7G75Z.mjs';
5
- import { LOCALE_CATALOG, translationsEn } from './chunk-JBSAKP4Z.mjs';
1
+ import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-SUEZMQRT.mjs';
2
+ import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, safePrompt, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, syncSelectionHandleOverlay, playAnimationSound } from './chunk-VHFPZBUW.mjs';
3
+ import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, 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, STROKE_DASH_OPTIONS } from './chunk-5T4Y4QPV.mjs';
4
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, buildDeckSaveOptions, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, getEffectStyleSource, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, strokeOutlineViewBox, getElementTransform, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, subscribeBarFacePicturePixelSamples, getBarFacePicturePixelSampleVersion, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, buildInkGroupStrokes, getInkReplayStyles, INK_REPLAY_KEYFRAMES, buildContentPartStrokes, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, elementIdSelector, 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, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, modelDataToBlobUrl, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, getInlineEditorSelection, findChartPartTarget, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, collectCoherent3DOffNodeIds, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, hasGlyphEnvelope, buildGlyphEnvelope, getWarpPath, isWedgeCalloutPresetShape, isElementActionable, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, 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, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, advanceChartMarkDrag, advanceChartValueDrag, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, 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, withChartPointValue, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, getElementTransformWithoutRotation, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, buildLiveInkStrokeView, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, hasTiltData, elementLockTogglePatch, buildTableDataGrid, 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, hideChartSeries, restoreFilteredSeries, setDataLabelsRangeCache, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, 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, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, 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, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, 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, 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 } from './chunk-6BNPHEEX.mjs';
5
+ import { LOCALE_CATALOG, translationsEn } from './chunk-TAGG5YNA.mjs';
6
6
  import React20, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, Suspense, useLayoutEffect, useContext, useSyncExternalStore, useId, Fragment as Fragment$1, useDeferredValue } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
8
  import { useTranslation } from 'react-i18next';
@@ -514,7 +514,7 @@ function FailedToLoad() {
514
514
  var LazyArea3DChartScene = React20.lazy(
515
515
  async () => {
516
516
  try {
517
- return await import('./Area3DChartScene-JM3CQ3WQ.mjs');
517
+ return await import('./Area3DChartScene-OAD36KIX.mjs');
518
518
  } catch {
519
519
  return { default: FailedToLoad };
520
520
  }
@@ -583,7 +583,7 @@ function FailedToLoad2() {
583
583
  var LazyBar3DChartScene = React20.lazy(
584
584
  async () => {
585
585
  try {
586
- return await import('./Bar3DChartScene-VNFWI2QG.mjs');
586
+ return await import('./Bar3DChartScene-XNNXF26T.mjs');
587
587
  } catch {
588
588
  return { default: FailedToLoad2 };
589
589
  }
@@ -686,7 +686,7 @@ function FailedToLoad3() {
686
686
  var LazyLine3DChartScene = React20.lazy(
687
687
  async () => {
688
688
  try {
689
- return await import('./Line3DChartScene-GXOWGIFJ.mjs');
689
+ return await import('./Line3DChartScene-MNNPB3LZ.mjs');
690
690
  } catch {
691
691
  return { default: FailedToLoad3 };
692
692
  }
@@ -755,7 +755,7 @@ function FailedToLoad4() {
755
755
  var LazyPieChart3DScene = React20.lazy(
756
756
  async () => {
757
757
  try {
758
- return await import('./PieChart3DScene-WXJEDYMK.mjs');
758
+ return await import('./PieChart3DScene-KYZSSG5X.mjs');
759
759
  } catch {
760
760
  return { default: FailedToLoad4 };
761
761
  }
@@ -822,7 +822,7 @@ function FailedToLoad5() {
822
822
  var LazySurfaceChart3DScene = React20.lazy(
823
823
  async () => {
824
824
  try {
825
- return await import('./SurfaceChart3DScene-IKPE2SVE.mjs');
825
+ return await import('./SurfaceChart3DScene-ZUP4PRUZ.mjs');
826
826
  } catch {
827
827
  return { default: FailedToLoad5 };
828
828
  }
@@ -3165,7 +3165,7 @@ function FailedToLoad6() {
3165
3165
  var LazyModel3DScene = React20.lazy(
3166
3166
  async () => {
3167
3167
  try {
3168
- return await import('./Model3DScene-WJ3MMIZH.mjs');
3168
+ return await import('./Model3DScene-5MUREFLY.mjs');
3169
3169
  } catch {
3170
3170
  return { default: FailedToLoad6 };
3171
3171
  }
@@ -5980,6 +5980,11 @@ var OV = [
5980
5980
  labelKey: "pptx.file.saveAsPptmTooltip",
5981
5981
  i: /* @__PURE__ */ jsx(LuDatabase, { className: `${ics} text-muted-foreground` })
5982
5982
  },
5983
+ {
5984
+ k: "ppt",
5985
+ labelKey: "pptx.file.saveAsPptTooltip",
5986
+ i: /* @__PURE__ */ jsx(LuFileText, { className: `${ics} text-muted-foreground` })
5987
+ },
5983
5988
  { k: "---0", labelKey: "", i: null },
5984
5989
  {
5985
5990
  k: "print",
@@ -6258,41 +6263,85 @@ function ArrangeSection(p) {
6258
6263
  /* @__PURE__ */ jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: t("pptx.arrange.groupLabel") })
6259
6264
  ] });
6260
6265
  }
6261
- function TransitionsSection(p) {
6262
- const { t } = useTranslation();
6263
- const canEdit = p.canEdit !== false;
6264
- const draft = React20.useMemo(() => readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
6265
- const [durationBuffer, setDurationBuffer] = React20.useState(null);
6266
- const [advanceBuffer, setAdvanceBuffer] = React20.useState(null);
6267
- const commit = React20.useCallback(
6268
- (changes) => {
6269
- p.onTransitionChange(ribbonTransitionUpdates({ ...draft, ...changes }));
6270
- },
6271
- [draft, p]
6272
- );
6266
+ function useTransitionSoundPicker(activeSlide, onTransitionChange) {
6273
6267
  const soundFileInputRef = React20.useRef(null);
6274
6268
  const handleSoundFilePicked = React20.useCallback(
6275
6269
  (file) => {
6276
6270
  void readSoundFileAsDataUrl(file).then((dataUrl) => {
6277
6271
  if (dataUrl) {
6278
- p.onTransitionChange(applyTransitionSoundFile({ name: file.name, dataUrl }));
6272
+ onTransitionChange(applyTransitionSoundFile({ name: file.name, dataUrl }));
6279
6273
  }
6280
6274
  return void 0;
6281
6275
  });
6282
6276
  },
6283
- [p]
6277
+ [onTransitionChange]
6284
6278
  );
6285
- const handleSoundSelectChange = (event) => {
6286
- const value = event.target.value;
6287
- if (value === TRANSITION_SOUND_OTHER_VALUE) {
6288
- soundFileInputRef.current?.click();
6289
- event.target.value = transitionSoundSelectedValue(p.activeSlide?.transition);
6279
+ const handleSoundSelectChange = React20.useCallback(
6280
+ (event) => {
6281
+ const value = event.target.value;
6282
+ if (value === TRANSITION_SOUND_OTHER_VALUE) {
6283
+ soundFileInputRef.current?.click();
6284
+ event.target.value = transitionSoundSelectedValue(activeSlide?.transition);
6285
+ return;
6286
+ }
6287
+ if (value === TRANSITION_SOUND_NONE_VALUE) {
6288
+ onTransitionChange(clearTransitionSound());
6289
+ return;
6290
+ }
6291
+ const patch = applyTransitionStockSound(value);
6292
+ if (patch) {
6293
+ onTransitionChange(patch);
6294
+ }
6295
+ },
6296
+ [activeSlide, onTransitionChange]
6297
+ );
6298
+ const handleSoundFileChange = React20.useCallback(
6299
+ (event) => {
6300
+ const file = event.target.files?.[0];
6301
+ if (file) {
6302
+ handleSoundFilePicked(file);
6303
+ }
6304
+ event.target.value = "";
6305
+ },
6306
+ [handleSoundFilePicked]
6307
+ );
6308
+ const stockSoundId = transitionStockSoundId(activeSlide?.transition);
6309
+ const handleSoundPreview = React20.useCallback(() => {
6310
+ if (!stockSoundId) {
6290
6311
  return;
6291
6312
  }
6292
- if (value === TRANSITION_SOUND_NONE_VALUE) {
6293
- p.onTransitionChange(clearTransitionSound());
6313
+ const asset = getEffectSoundAsset(stockSoundId);
6314
+ if (asset) {
6315
+ playAnimationSound(asset.dataUrl);
6294
6316
  }
6317
+ }, [stockSoundId]);
6318
+ return {
6319
+ soundFileInputRef,
6320
+ stockSoundId,
6321
+ handleSoundSelectChange,
6322
+ handleSoundFileChange,
6323
+ handleSoundPreview
6295
6324
  };
6325
+ }
6326
+ function TransitionsSection(p) {
6327
+ const { t } = useTranslation();
6328
+ const canEdit = p.canEdit !== false;
6329
+ const draft = React20.useMemo(() => readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
6330
+ const [durationBuffer, setDurationBuffer] = React20.useState(null);
6331
+ const [advanceBuffer, setAdvanceBuffer] = React20.useState(null);
6332
+ const commit = React20.useCallback(
6333
+ (changes) => {
6334
+ p.onTransitionChange(ribbonTransitionUpdates({ ...draft, ...changes }));
6335
+ },
6336
+ [draft, p]
6337
+ );
6338
+ const {
6339
+ soundFileInputRef,
6340
+ stockSoundId,
6341
+ handleSoundSelectChange,
6342
+ handleSoundFileChange,
6343
+ handleSoundPreview
6344
+ } = useTransitionSoundPicker(p.activeSlide, p.onTransitionChange);
6296
6345
  return /* @__PURE__ */ jsxs(Fragment, { children: [
6297
6346
  /* @__PURE__ */ jsxs(
6298
6347
  "button",
@@ -6362,6 +6411,17 @@ function TransitionsSection(p) {
6362
6411
  children: transitionSoundOptions(p.activeSlide?.transition).map((option) => /* @__PURE__ */ jsx("option", { value: option.value, children: option.i18nKey ? t(option.i18nKey) : option.label }, option.value))
6363
6412
  }
6364
6413
  ),
6414
+ /* @__PURE__ */ jsx(
6415
+ "button",
6416
+ {
6417
+ type: "button",
6418
+ "aria-label": t("pptx.animation.sound.preview"),
6419
+ onClick: handleSoundPreview,
6420
+ disabled: !stockSoundId,
6421
+ className: "shrink-0 rounded border border-border bg-muted p-1 disabled:opacity-40",
6422
+ children: /* @__PURE__ */ jsx(LuPlay, { className: "h-3 w-3" })
6423
+ }
6424
+ ),
6365
6425
  /* @__PURE__ */ jsx(
6366
6426
  "input",
6367
6427
  {
@@ -6369,13 +6429,7 @@ function TransitionsSection(p) {
6369
6429
  type: "file",
6370
6430
  accept: "audio/*",
6371
6431
  className: "hidden",
6372
- onChange: (e) => {
6373
- const file = e.target.files?.[0];
6374
- if (file) {
6375
- handleSoundFilePicked(file);
6376
- }
6377
- e.target.value = "";
6378
- }
6432
+ onChange: handleSoundFileChange
6379
6433
  }
6380
6434
  )
6381
6435
  ] }),
@@ -6636,7 +6690,7 @@ function AccountPage() {
6636
6690
  return void 0;
6637
6691
  });
6638
6692
  };
6639
- const version = "3.8.0" ;
6693
+ const version = "3.10.0" ;
6640
6694
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
6641
6695
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
6642
6696
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -6815,6 +6869,7 @@ var ICONS = {
6815
6869
  saveAsPptx: LuDownload,
6816
6870
  saveAsPpsx: LuPlay,
6817
6871
  saveAsPptm: LuFileText,
6872
+ saveAsPpt: LuDatabase,
6818
6873
  pdf: LuFileText,
6819
6874
  png: LuFileImage,
6820
6875
  video: LuVideo,
@@ -6839,6 +6894,7 @@ function BackstageCards({
6839
6894
  saveAsPptx: props.onSaveAsPptx,
6840
6895
  saveAsPpsx: props.onSaveAsPpsx,
6841
6896
  saveAsPptm: props.onSaveAsPptm,
6897
+ saveAsPpt: props.onSaveAsPpt,
6842
6898
  pdf: props.onExportPdf,
6843
6899
  png: props.onExportPng,
6844
6900
  video: props.onExportVideo,
@@ -9882,6 +9938,7 @@ function MobileSectionBody({
9882
9938
  onSaveAsPptx: p.onSaveAsPptx,
9883
9939
  onSaveAsPpsx: p.onSaveAsPpsx,
9884
9940
  onSaveAsPptm: p.onSaveAsPptm,
9941
+ onSaveAsPpt: p.onSaveAsPpt,
9885
9942
  hasMacros: p.hasMacros,
9886
9943
  onCopySlideAsImage: p.onCopySlideAsImage,
9887
9944
  onPrint: p.onPrint,
@@ -10692,6 +10749,7 @@ function OverflowMenu(p) {
10692
10749
  pptx: p.onSaveAsPptx,
10693
10750
  ppsx: p.onSaveAsPpsx,
10694
10751
  pptm: p.onSaveAsPptm,
10752
+ ppt: p.onSaveAsPpt,
10695
10753
  print: p.onPrint,
10696
10754
  copyImg: p.onCopySlideAsImage,
10697
10755
  a11y: p.onRunAccessibilityCheck,
@@ -11007,6 +11065,7 @@ function Toolbar(p) {
11007
11065
  onSaveAsPptx: p.onSaveAsPptx,
11008
11066
  onSaveAsPpsx: p.onSaveAsPpsx,
11009
11067
  onSaveAsPptm: p.onSaveAsPptm,
11068
+ onSaveAsPpt: p.onSaveAsPpt,
11010
11069
  hasMacros: p.hasMacros,
11011
11070
  onCopySlideAsImage: p.onCopySlideAsImage,
11012
11071
  onPrint: p.onPrint,
@@ -20667,19 +20726,32 @@ function AnimationTimelineSection({
20667
20726
  ] })
20668
20727
  ] });
20669
20728
  }
20729
+ var NONE_VALUE = "none";
20730
+ var CURRENT_VALUE = "current";
20731
+ var OTHER_VALUE = "other";
20670
20732
  function EffectSoundRow({
20671
20733
  soundState,
20672
20734
  canEdit,
20673
- onPick
20735
+ onPick,
20736
+ onPickStock
20674
20737
  }) {
20675
20738
  const { t } = useTranslation();
20676
20739
  const fileInputRef = React20.useRef(null);
20740
+ const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
20677
20741
  const handleSelectChange = (event) => {
20678
- if (event.target.value === "custom") {
20742
+ const value = event.target.value;
20743
+ if (value === OTHER_VALUE) {
20679
20744
  fileInputRef.current?.click();
20680
20745
  return;
20681
20746
  }
20682
- onPick(void 0);
20747
+ if (value === NONE_VALUE) {
20748
+ onPick(void 0);
20749
+ return;
20750
+ }
20751
+ if (value === CURRENT_VALUE) {
20752
+ return;
20753
+ }
20754
+ onPickStock(value);
20683
20755
  };
20684
20756
  const handleFileChange = (event) => {
20685
20757
  const file = event.target.files?.[0];
@@ -20695,22 +20767,46 @@ function EffectSoundRow({
20695
20767
  };
20696
20768
  reader.readAsDataURL(file);
20697
20769
  };
20770
+ const handlePreview = () => {
20771
+ if (!soundState.catalogueId) {
20772
+ return;
20773
+ }
20774
+ const asset = getEffectSoundAsset(soundState.catalogueId);
20775
+ if (asset) {
20776
+ playAnimationSound(asset.dataUrl);
20777
+ }
20778
+ };
20698
20779
  return /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
20699
20780
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.sound") }),
20700
- /* @__PURE__ */ jsxs(
20701
- "select",
20702
- {
20703
- "aria-label": t("pptx.animation.sound"),
20704
- value: soundState.hasSound ? "custom" : "none",
20705
- onChange: handleSelectChange,
20706
- disabled: !canEdit,
20707
- className: SELECT_CLS,
20708
- children: [
20709
- /* @__PURE__ */ jsx("option", { value: "none", children: t("pptx.animation.sound.none") }),
20710
- /* @__PURE__ */ jsx("option", { value: "custom", children: soundState.hasSound && soundState.fileName ? soundState.fileName : t("pptx.animation.sound.custom") })
20711
- ]
20712
- }
20713
- ),
20781
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
20782
+ /* @__PURE__ */ jsxs(
20783
+ "select",
20784
+ {
20785
+ "aria-label": t("pptx.animation.sound"),
20786
+ value: selectedValue,
20787
+ onChange: handleSelectChange,
20788
+ disabled: !canEdit,
20789
+ className: SELECT_CLS,
20790
+ children: [
20791
+ /* @__PURE__ */ jsx("option", { value: NONE_VALUE, children: t("pptx.animation.sound.none") }),
20792
+ soundState.hasSound && !soundState.catalogueId && /* @__PURE__ */ jsx("option", { value: CURRENT_VALUE, children: soundState.fileName ?? t("pptx.animation.sound.custom") }),
20793
+ EFFECT_SOUND_CATALOGUE.map((entry) => /* @__PURE__ */ jsx("option", { value: entry.id, children: t(entry.i18nKey) }, entry.id)),
20794
+ /* @__PURE__ */ jsx("option", { value: OTHER_VALUE, children: t("pptx.animation.sound.other") })
20795
+ ]
20796
+ }
20797
+ ),
20798
+ /* @__PURE__ */ jsx(
20799
+ "button",
20800
+ {
20801
+ type: "button",
20802
+ "aria-label": t("pptx.animation.sound.preview"),
20803
+ onClick: handlePreview,
20804
+ disabled: !soundState.catalogueId,
20805
+ className: "shrink-0 rounded border border-border bg-muted p-1 disabled:opacity-40",
20806
+ children: /* @__PURE__ */ jsx(LuPlay, { className: "h-3 w-3" })
20807
+ }
20808
+ )
20809
+ ] }),
20714
20810
  /* @__PURE__ */ jsx(
20715
20811
  "input",
20716
20812
  {
@@ -21081,6 +21177,15 @@ function useAnimationHandlers({
21081
21177
  },
21082
21178
  [canEdit, updateAnimations, selectedElement.id]
21083
21179
  );
21180
+ const handleEffectStockSoundPick = useCallback(
21181
+ (catalogueId) => {
21182
+ if (!canEdit) {
21183
+ return;
21184
+ }
21185
+ updateAnimations((anims) => setEffectStockSound(anims, selectedElement.id, catalogueId));
21186
+ },
21187
+ [canEdit, updateAnimations, selectedElement.id]
21188
+ );
21084
21189
  const handleAfterAnimationChange = useCallback(
21085
21190
  (action) => {
21086
21191
  if (!canEdit) {
@@ -21160,6 +21265,7 @@ function useAnimationHandlers({
21160
21265
  handleMotionPathChange,
21161
21266
  effectSoundState,
21162
21267
  handleEffectSoundPick,
21268
+ handleEffectStockSoundPick,
21163
21269
  handleAfterAnimationChange,
21164
21270
  handleAfterAnimationColorChange,
21165
21271
  getTimelineLabel,
@@ -21200,6 +21306,7 @@ function AnimationPanel({
21200
21306
  handleMotionPathChange,
21201
21307
  effectSoundState,
21202
21308
  handleEffectSoundPick,
21309
+ handleEffectStockSoundPick,
21203
21310
  handleAfterAnimationChange,
21204
21311
  handleAfterAnimationColorChange,
21205
21312
  handlePreviewClick
@@ -21323,7 +21430,8 @@ function AnimationPanel({
21323
21430
  {
21324
21431
  soundState: effectSoundState,
21325
21432
  canEdit,
21326
- onPick: handleEffectSoundPick
21433
+ onPick: handleEffectSoundPick,
21434
+ onPickStock: handleEffectStockSoundPick
21327
21435
  }
21328
21436
  ),
21329
21437
  /* @__PURE__ */ jsx(
@@ -22709,6 +22817,87 @@ function ChartErrorBarOptions({
22709
22817
  }) })
22710
22818
  ] });
22711
22819
  }
22820
+ function ChartFilteredSeriesOptions({
22821
+ chartData,
22822
+ canEdit,
22823
+ onHideSeries,
22824
+ onRestoreSeries,
22825
+ onSetDataLabelsRangeCache
22826
+ }) {
22827
+ const { t } = useTranslation();
22828
+ const filteredSeries = chartData.filteredSeries ?? [];
22829
+ const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
22830
+ if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
22831
+ return null;
22832
+ }
22833
+ return /* @__PURE__ */ jsxs("div", { className: CARD2, children: [
22834
+ /* @__PURE__ */ jsx("div", { className: HEADING2, children: t("pptx.chart.chartFilters") }),
22835
+ chartData.series.length > 1 && /* @__PURE__ */ jsx("div", { className: "space-y-1", children: chartData.series.map((series, index) => /* @__PURE__ */ jsxs(
22836
+ "div",
22837
+ {
22838
+ className: "flex items-center gap-2 text-[11px]",
22839
+ children: [
22840
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", title: series.name, children: series.name }),
22841
+ /* @__PURE__ */ jsx(
22842
+ "button",
22843
+ {
22844
+ type: "button",
22845
+ className: BTN2,
22846
+ disabled: !canEdit,
22847
+ "aria-label": t("pptx.chart.hideSeries", { name: series.name }),
22848
+ "data-testid": `chart-series-hide-${index}`,
22849
+ onClick: () => onHideSeries(index),
22850
+ children: /* @__PURE__ */ jsx(LuEyeOff, { className: "size-3", "aria-hidden": "true" })
22851
+ }
22852
+ )
22853
+ ]
22854
+ },
22855
+ `visible-${series.name}-${index}`
22856
+ )) }),
22857
+ filteredSeries.length > 0 && /* @__PURE__ */ jsx("div", { className: "space-y-1", children: filteredSeries.map((filtered, index) => {
22858
+ const name = filtered.name ?? chartData.filteredSeriesTitle ?? t("pptx.chart.seriesShort");
22859
+ return /* @__PURE__ */ jsxs(
22860
+ "div",
22861
+ {
22862
+ className: "flex items-center gap-2 text-[11px] opacity-60",
22863
+ children: [
22864
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", title: name, children: name }),
22865
+ /* @__PURE__ */ jsx(
22866
+ "button",
22867
+ {
22868
+ type: "button",
22869
+ className: BTN2,
22870
+ disabled: !canEdit,
22871
+ "aria-label": t("pptx.chart.showSeries", { name }),
22872
+ "data-testid": `chart-series-show-${index}`,
22873
+ onClick: () => onRestoreSeries(index),
22874
+ children: /* @__PURE__ */ jsx(LuEye, { className: "size-3", "aria-hidden": "true" })
22875
+ }
22876
+ )
22877
+ ]
22878
+ },
22879
+ `filtered-${name}-${index}`
22880
+ );
22881
+ }) }),
22882
+ seriesWithRange.map(({ series, index: seriesIndex }) => /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
22883
+ /* @__PURE__ */ jsx("div", { className: "text-[11px] text-muted-foreground truncate", title: series.name, children: t("pptx.chart.valueFromCells", { name: series.name }) }),
22884
+ series.dataLabelOptions.dataLabelsRange.cache.map((text, pointIndex) => /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
22885
+ /* @__PURE__ */ jsx("span", { className: "w-16 shrink-0 truncate text-muted-foreground", children: chartData.categories[pointIndex] ?? pointIndex }),
22886
+ /* @__PURE__ */ jsx(
22887
+ "input",
22888
+ {
22889
+ type: "text",
22890
+ disabled: !canEdit,
22891
+ className: "flex-1 bg-muted border border-border rounded px-1.5 py-0.5",
22892
+ value: text,
22893
+ "data-testid": `chart-dlbl-range-${seriesIndex}-${pointIndex}`,
22894
+ onChange: (e) => onSetDataLabelsRangeCache(seriesIndex, pointIndex, e.target.value)
22895
+ }
22896
+ )
22897
+ ] }, pointIndex))
22898
+ ] }, `range-${series.name}-${seriesIndex}`))
22899
+ ] });
22900
+ }
22712
22901
  function ChartMarkerOptions({
22713
22902
  chartType,
22714
22903
  series,
@@ -23616,6 +23805,36 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
23616
23805
  },
23617
23806
  [chartData, replaceChartData]
23618
23807
  );
23808
+ const hideSeries = useCallback(
23809
+ (seriesIndex) => {
23810
+ const next = chartData && hideChartSeries(chartData, seriesIndex);
23811
+ if (next) {
23812
+ replaceChartData(next);
23813
+ }
23814
+ },
23815
+ [chartData, replaceChartData]
23816
+ );
23817
+ const restoreSeries = useCallback(
23818
+ (filteredIndex) => {
23819
+ const next = chartData && restoreFilteredSeries(chartData, filteredIndex);
23820
+ if (next) {
23821
+ replaceChartData(next);
23822
+ }
23823
+ },
23824
+ [chartData, replaceChartData]
23825
+ );
23826
+ const setLabelsRangeCache = useCallback(
23827
+ (seriesIndex, pointIndex, text) => {
23828
+ if (!series) {
23829
+ return;
23830
+ }
23831
+ const updated = series.map(
23832
+ (s, i) => i === seriesIndex ? setDataLabelsRangeCache(s, pointIndex, text) : s
23833
+ );
23834
+ updateChartData({ series: updated });
23835
+ },
23836
+ [series, updateChartData]
23837
+ );
23619
23838
  const applyChartOp = useCallback(
23620
23839
  (mutate) => {
23621
23840
  if (!chartData) {
@@ -23783,6 +24002,16 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
23783
24002
  onToggleSecondaryAxis: toggleSecondaryAxis
23784
24003
  }
23785
24004
  ),
24005
+ /* @__PURE__ */ jsx(
24006
+ ChartFilteredSeriesOptions,
24007
+ {
24008
+ chartData,
24009
+ canEdit,
24010
+ onHideSeries: hideSeries,
24011
+ onRestoreSeries: restoreSeries,
24012
+ onSetDataLabelsRangeCache: setLabelsRangeCache
24013
+ }
24014
+ ),
23786
24015
  /* @__PURE__ */ jsx(
23787
24016
  ChartUserShapeOptions,
23788
24017
  {
@@ -23809,6 +24038,296 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
23809
24038
  )
23810
24039
  ] });
23811
24040
  }
24041
+ function OleSheetGridEditor({
24042
+ grid,
24043
+ onCellEdit,
24044
+ t
24045
+ }) {
24046
+ if (!grid || grid.rows.length === 0) {
24047
+ return /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: t("pptx.ole.editDialog.emptySheet") });
24048
+ }
24049
+ return /* @__PURE__ */ jsx("div", { className: "overflow-auto max-h-[50vh] border border-border rounded", children: /* @__PURE__ */ jsx("table", { className: "w-full text-xs border-collapse", children: /* @__PURE__ */ jsx("tbody", { children: grid.rows.map((row, rowIndex) => (
24050
+ // oxlint-disable-next-line no-array-index-key -- grid rows have no stable id
24051
+ /* @__PURE__ */ jsx("tr", { children: row.cells.map((cell, colIndex) => /* @__PURE__ */ jsx(
24052
+ "td",
24053
+ {
24054
+ className: "border border-border p-0",
24055
+ children: /* @__PURE__ */ jsx(
24056
+ "input",
24057
+ {
24058
+ type: "text",
24059
+ defaultValue: cell.value,
24060
+ "aria-label": t("pptx.ole.editDialog.cellEditLabel"),
24061
+ className: "w-full px-1.5 py-1 bg-transparent focus:bg-accent/40 focus:outline-none",
24062
+ onBlur: (e) => {
24063
+ if (e.target.value !== cell.value) {
24064
+ onCellEdit(rowIndex, colIndex, e.target.value);
24065
+ }
24066
+ }
24067
+ }
24068
+ )
24069
+ },
24070
+ colIndex
24071
+ )) }, rowIndex)
24072
+ )) }) }) });
24073
+ }
24074
+ function OleDocumentEditor({
24075
+ paragraphs,
24076
+ onEdit,
24077
+ t
24078
+ }) {
24079
+ if (!paragraphs || paragraphs.length === 0) {
24080
+ return /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: t("pptx.ole.editDialog.emptyDocument") });
24081
+ }
24082
+ return /* @__PURE__ */ jsx("div", { className: "space-y-2", children: paragraphs.map((paragraph, index) => /* @__PURE__ */ jsx(
24083
+ "textarea",
24084
+ {
24085
+ defaultValue: paragraph,
24086
+ rows: 2,
24087
+ className: "w-full px-2 py-1.5 rounded border border-border bg-muted text-foreground text-xs resize-y focus:outline-none focus:ring-2 focus:ring-primary/50",
24088
+ onBlur: (e) => {
24089
+ if (e.target.value !== paragraph) {
24090
+ onEdit(index, e.target.value);
24091
+ }
24092
+ }
24093
+ },
24094
+ index
24095
+ )) });
24096
+ }
24097
+ function OleDeckEditor({
24098
+ slides,
24099
+ onEdit,
24100
+ t
24101
+ }) {
24102
+ if (!slides || slides.length === 0) {
24103
+ return /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: t("pptx.ole.editDialog.deckEmpty") });
24104
+ }
24105
+ return /* @__PURE__ */ jsx("div", { className: "space-y-3", children: slides.map((slide) => /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
24106
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-xs font-medium", children: t("pptx.ole.editDialog.deckSlideLabel").replace("{{number}}", String(slide.index + 1)) }),
24107
+ slide.elements.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs italic", children: t("pptx.ole.editDialog.deckEmpty") }) : slide.elements.map((element) => /* @__PURE__ */ jsx(
24108
+ "input",
24109
+ {
24110
+ type: "text",
24111
+ defaultValue: element.text,
24112
+ className: "w-full px-2 py-1.5 rounded border border-border bg-muted text-foreground text-xs focus:outline-none focus:ring-2 focus:ring-primary/50",
24113
+ onBlur: (e) => {
24114
+ if (e.target.value !== element.text) {
24115
+ onEdit(slide.index, element.elementId, e.target.value);
24116
+ }
24117
+ }
24118
+ },
24119
+ element.elementId
24120
+ ))
24121
+ ] }, slide.index)) });
24122
+ }
24123
+ function OleEditorDialog({
24124
+ isOpen,
24125
+ onClose,
24126
+ element,
24127
+ onUpdateElement
24128
+ }) {
24129
+ const { t } = useTranslation();
24130
+ const dialogRef = useRef(null);
24131
+ const fileInputRef = useRef(null);
24132
+ const descriptor = buildOleEditDialogDescriptor(element);
24133
+ const [grid, setGrid] = useState(void 0);
24134
+ const [paragraphs, setParagraphs] = useState(void 0);
24135
+ const [deckSlides, setDeckSlides] = useState(void 0);
24136
+ const [loading, setLoading] = useState(false);
24137
+ const [saveError, setSaveError] = useState(false);
24138
+ useEffect(() => {
24139
+ if (!isOpen || !descriptor.contentTab) {
24140
+ return;
24141
+ }
24142
+ let cancelled = false;
24143
+ setLoading(true);
24144
+ const kind = descriptor.contentTab.kind;
24145
+ const load = async () => {
24146
+ if (kind === "sheet") {
24147
+ const value = await getOleSheetGrid(element);
24148
+ if (!cancelled) {
24149
+ setGrid(value);
24150
+ }
24151
+ } else if (kind === "document") {
24152
+ const value = await getOleDocumentParagraphs(element);
24153
+ if (!cancelled) {
24154
+ setParagraphs(value);
24155
+ }
24156
+ } else if (kind === "deck") {
24157
+ const value = await getOleNestedDeckDetail(element);
24158
+ if (!cancelled) {
24159
+ setDeckSlides(value);
24160
+ }
24161
+ }
24162
+ if (!cancelled) {
24163
+ setLoading(false);
24164
+ }
24165
+ };
24166
+ void load();
24167
+ return () => {
24168
+ cancelled = true;
24169
+ };
24170
+ }, [isOpen, element]);
24171
+ const commit = useCallback(
24172
+ (updated) => {
24173
+ if (!updated.oleContentDirty) {
24174
+ return;
24175
+ }
24176
+ onUpdateElement(buildOleContentUpdatePatch(updated));
24177
+ },
24178
+ [onUpdateElement]
24179
+ );
24180
+ const handleCellEdit = useCallback(
24181
+ async (row, col, value) => {
24182
+ try {
24183
+ const updated = await applyOleSheetCellEdit(element, { row, col, value });
24184
+ commit(updated);
24185
+ const refreshed = await getOleSheetGrid(updated);
24186
+ setGrid(refreshed);
24187
+ } catch {
24188
+ setSaveError(true);
24189
+ }
24190
+ },
24191
+ [element, commit]
24192
+ );
24193
+ const handleParagraphEdit = useCallback(
24194
+ async (index, text) => {
24195
+ try {
24196
+ const updated = await applyOleDocumentParagraphEdit(element, index, text);
24197
+ commit(updated);
24198
+ const refreshed = await getOleDocumentParagraphs(updated);
24199
+ setParagraphs(refreshed);
24200
+ } catch {
24201
+ setSaveError(true);
24202
+ }
24203
+ },
24204
+ [element, commit]
24205
+ );
24206
+ const handleDeckElementEdit = useCallback(
24207
+ async (slideIndex, deckElementId, text) => {
24208
+ try {
24209
+ const updated = await applyOleNestedDeckElementTextEdit(
24210
+ element,
24211
+ slideIndex,
24212
+ deckElementId,
24213
+ text
24214
+ );
24215
+ commit(updated);
24216
+ const refreshed = await getOleNestedDeckDetail(updated);
24217
+ setDeckSlides(refreshed);
24218
+ } catch {
24219
+ setSaveError(true);
24220
+ }
24221
+ },
24222
+ [element, commit]
24223
+ );
24224
+ const handleReplaceFile = useCallback(
24225
+ async (file) => {
24226
+ try {
24227
+ const bytes = new Uint8Array(await file.arrayBuffer());
24228
+ const updated = await replaceOleFile(element, bytes, file.name);
24229
+ commit(updated);
24230
+ onClose();
24231
+ } catch {
24232
+ setSaveError(true);
24233
+ }
24234
+ },
24235
+ [element, commit, onClose]
24236
+ );
24237
+ const handleKeyDown = useCallback(
24238
+ (e) => {
24239
+ if (e.key === "Escape") {
24240
+ e.preventDefault();
24241
+ onClose();
24242
+ }
24243
+ },
24244
+ [onClose]
24245
+ );
24246
+ if (!isOpen) {
24247
+ return null;
24248
+ }
24249
+ return /* @__PURE__ */ jsx(
24250
+ "div",
24251
+ {
24252
+ className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black/60 backdrop-blur-sm",
24253
+ onClick: (e) => {
24254
+ if (e.target === e.currentTarget) {
24255
+ onClose();
24256
+ }
24257
+ },
24258
+ onKeyDown: handleKeyDown,
24259
+ children: /* @__PURE__ */ jsxs(
24260
+ "div",
24261
+ {
24262
+ ref: dialogRef,
24263
+ className: "bg-background border border-border rounded-xl shadow-2xl w-[560px] max-h-[80vh] flex flex-col overflow-hidden",
24264
+ onClick: (e) => e.stopPropagation(),
24265
+ role: "dialog",
24266
+ "aria-modal": "true",
24267
+ tabIndex: -1,
24268
+ "aria-label": t(descriptor.titleKey),
24269
+ children: [
24270
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-5 py-3 border-b border-border", children: [
24271
+ /* @__PURE__ */ jsx("h2", { className: "text-sm font-semibold text-foreground", children: t(descriptor.titleKey) }),
24272
+ /* @__PURE__ */ jsx(
24273
+ "button",
24274
+ {
24275
+ type: "button",
24276
+ onClick: onClose,
24277
+ className: "p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground transition-colors",
24278
+ "aria-label": t("pptx.settings.close"),
24279
+ children: /* @__PURE__ */ jsx(LuX, { className: "w-4 h-4" })
24280
+ }
24281
+ )
24282
+ ] }),
24283
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-5 py-4 space-y-3 text-sm", children: [
24284
+ loading && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: t("pptx.ole.editDialog.loading") }),
24285
+ saveError && /* @__PURE__ */ jsx("p", { className: "text-destructive text-xs", children: t("pptx.ole.editDialog.saveError") }),
24286
+ !loading && descriptor.contentTab?.kind === "sheet" && /* @__PURE__ */ jsx(OleSheetGridEditor, { grid, onCellEdit: handleCellEdit, t }),
24287
+ !loading && descriptor.contentTab?.kind === "document" && /* @__PURE__ */ jsx(OleDocumentEditor, { paragraphs, onEdit: handleParagraphEdit, t }),
24288
+ !loading && descriptor.contentTab?.kind === "deck" && /* @__PURE__ */ jsx(OleDeckEditor, { slides: deckSlides, onEdit: handleDeckElementEdit, t }),
24289
+ !descriptor.contentTab && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: t("pptx.ole.editDialog.unsupported") })
24290
+ ] }),
24291
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 px-5 py-3 border-t border-border", children: [
24292
+ /* @__PURE__ */ jsx(
24293
+ "input",
24294
+ {
24295
+ ref: fileInputRef,
24296
+ type: "file",
24297
+ className: "hidden",
24298
+ onChange: (e) => {
24299
+ const file = e.target.files?.[0];
24300
+ if (file) {
24301
+ void handleReplaceFile(file);
24302
+ }
24303
+ }
24304
+ }
24305
+ ),
24306
+ /* @__PURE__ */ jsx(
24307
+ "button",
24308
+ {
24309
+ type: "button",
24310
+ onClick: () => fileInputRef.current?.click(),
24311
+ className: "px-3 py-1.5 rounded-lg text-xs text-foreground border border-border hover:bg-accent transition-colors",
24312
+ children: t("pptx.ole.editDialog.replaceFile")
24313
+ }
24314
+ ),
24315
+ /* @__PURE__ */ jsx(
24316
+ "button",
24317
+ {
24318
+ type: "button",
24319
+ onClick: onClose,
24320
+ className: "px-4 py-1.5 rounded-lg text-xs font-medium bg-primary hover:bg-primary/80 text-white transition-colors",
24321
+ children: t("pptx.ole.editDialog.save")
24322
+ }
24323
+ )
24324
+ ] })
24325
+ ]
24326
+ }
24327
+ )
24328
+ }
24329
+ );
24330
+ }
23812
24331
 
23813
24332
  // src/viewer/components/inspector/element-properties-constants.ts
23814
24333
  var SELECT_CLS2 = "bg-muted border border-border rounded px-2 py-1";
@@ -23940,6 +24459,7 @@ function OlePropertiesPanel({
23940
24459
  onUpdateElement
23941
24460
  }) {
23942
24461
  const { t } = useTranslation();
24462
+ const [isEditorOpen, setIsEditorOpen] = useState(false);
23943
24463
  if (selectedElement.type !== "ole") {
23944
24464
  return null;
23945
24465
  }
@@ -23947,6 +24467,15 @@ function OlePropertiesPanel({
23947
24467
  return /* @__PURE__ */ jsxs("div", { className: CARD, children: [
23948
24468
  /* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.ole.title") }),
23949
24469
  /* @__PURE__ */ jsxs("div", { className: "space-y-1.5 text-[11px]", children: [
24470
+ canEdit && !ole.isLinked && /* @__PURE__ */ jsx(
24471
+ "button",
24472
+ {
24473
+ type: "button",
24474
+ onClick: () => setIsEditorOpen(true),
24475
+ className: "w-full px-2 py-1.5 rounded border border-border text-foreground hover:bg-accent transition-colors text-[11px]",
24476
+ children: t("pptx.ole.editContent")
24477
+ }
24478
+ ),
23950
24479
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
23951
24480
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.objectName") }),
23952
24481
  /* @__PURE__ */ jsx(
@@ -23982,7 +24511,16 @@ function OlePropertiesPanel({
23982
24511
  }
23983
24512
  )
23984
24513
  ] })
23985
- ] })
24514
+ ] }),
24515
+ /* @__PURE__ */ jsx(
24516
+ OleEditorDialog,
24517
+ {
24518
+ isOpen: isEditorOpen,
24519
+ onClose: () => setIsEditorOpen(false),
24520
+ element: ole,
24521
+ onUpdateElement
24522
+ }
24523
+ )
23986
24524
  ] });
23987
24525
  }
23988
24526
  function TransformPanel({
@@ -35726,6 +36264,7 @@ function ViewerToolbarSection(props) {
35726
36264
  onSaveAsPptx: exportHandlers.handleSaveAsPptx,
35727
36265
  onSaveAsPpsx: exportHandlers.handleSaveAsPpsx,
35728
36266
  onSaveAsPptm: exportHandlers.handleSaveAsPptm,
36267
+ onSaveAsPpt: exportHandlers.handleSaveAsPpt,
35729
36268
  hasMacros: s.hasMacros,
35730
36269
  onCopySlideAsImage: exportHandlers.handleCopySlideAsImage,
35731
36270
  onPrint: printHandlers.handlePrint,
@@ -37245,7 +37784,7 @@ function useTableStyleMapHandlers(input) {
37245
37784
  var AiChatPanel = lazy(async () => {
37246
37785
  const [{ useChat }, { default: Panel }] = await Promise.all([
37247
37786
  import('@ai-sdk/react'),
37248
- import('./AiChatPanel-II6VOOAL.mjs')
37787
+ import('./AiChatPanel-L5H455NZ.mjs')
37249
37788
  ]);
37250
37789
  function BoundAiChatPanel(props) {
37251
37790
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });