pptx-react-viewer 3.5.4 → 3.6.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 (159) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{AiChatPanel-LPZWDNVU.js → AiChatPanel-LEOEDIW2.js} +25 -25
  3. package/dist/AiChatPanel-LEOEDIW2.js.br +0 -0
  4. package/dist/AiChatPanel-LEOEDIW2.js.gz +0 -0
  5. package/dist/{AiChatPanel-CCJNQGER.mjs → AiChatPanel-WRQGJJVD.mjs} +4 -4
  6. package/dist/AiChatPanel-WRQGJJVD.mjs.br +0 -0
  7. package/dist/AiChatPanel-WRQGJJVD.mjs.gz +0 -0
  8. package/dist/{Area3DChartScene-LJCWBNQ3.js → Area3DChartScene-3TJ2GTGI.js} +2 -2
  9. package/dist/Area3DChartScene-3TJ2GTGI.js.br +0 -0
  10. package/dist/Area3DChartScene-3TJ2GTGI.js.gz +0 -0
  11. package/dist/{Area3DChartScene-P6YM6ZL7.mjs → Area3DChartScene-SJC2ZB6R.mjs} +1 -1
  12. package/dist/Area3DChartScene-SJC2ZB6R.mjs.br +2 -0
  13. package/dist/Area3DChartScene-SJC2ZB6R.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-7DNQ4X5T.js → Bar3DChartScene-2ZGOMOZO.js} +2 -2
  15. package/dist/Bar3DChartScene-2ZGOMOZO.js.br +0 -0
  16. package/dist/Bar3DChartScene-2ZGOMOZO.js.gz +0 -0
  17. package/dist/{Bar3DChartScene-DIVOJURZ.mjs → Bar3DChartScene-SPER4LQA.mjs} +1 -1
  18. package/dist/Bar3DChartScene-SPER4LQA.mjs.br +0 -0
  19. package/dist/Bar3DChartScene-SPER4LQA.mjs.gz +0 -0
  20. package/dist/{Line3DChartScene-UF6DHP36.js → Line3DChartScene-42FYFGLU.js} +2 -2
  21. package/dist/Line3DChartScene-42FYFGLU.js.br +0 -0
  22. package/dist/Line3DChartScene-42FYFGLU.js.gz +0 -0
  23. package/dist/{Line3DChartScene-ZZVNUKIJ.mjs → Line3DChartScene-FH3YHPXE.mjs} +1 -1
  24. package/dist/Line3DChartScene-FH3YHPXE.mjs.br +2 -0
  25. package/dist/Line3DChartScene-FH3YHPXE.mjs.gz +0 -0
  26. package/dist/{Model3DScene-XXMAAKBR.mjs → Model3DScene-2BCR2YYD.mjs} +1 -1
  27. package/dist/Model3DScene-2BCR2YYD.mjs.br +0 -0
  28. package/dist/Model3DScene-2BCR2YYD.mjs.gz +0 -0
  29. package/dist/{Model3DScene-C7MZ22DH.js → Model3DScene-EIU2GVUZ.js} +2 -2
  30. package/dist/Model3DScene-EIU2GVUZ.js.br +0 -0
  31. package/dist/Model3DScene-EIU2GVUZ.js.gz +0 -0
  32. package/dist/{PieChart3DScene-7LX3IL2Q.mjs → PieChart3DScene-QFQUJFDP.mjs} +1 -1
  33. package/dist/PieChart3DScene-QFQUJFDP.mjs.br +0 -0
  34. package/dist/PieChart3DScene-QFQUJFDP.mjs.gz +0 -0
  35. package/dist/{PieChart3DScene-N2Y25VG5.js → PieChart3DScene-VQOHZPHI.js} +2 -2
  36. package/dist/{PieChart3DScene-N2Y25VG5.js.br → PieChart3DScene-VQOHZPHI.js.br} +0 -0
  37. package/dist/PieChart3DScene-VQOHZPHI.js.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-ADA7NUIW.mjs → SurfaceChart3DScene-CGXMRBCL.mjs} +1 -1
  39. package/dist/SurfaceChart3DScene-CGXMRBCL.mjs.br +0 -0
  40. package/dist/SurfaceChart3DScene-CGXMRBCL.mjs.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-WXJHYOGJ.js → SurfaceChart3DScene-FTVXZN6O.js} +2 -2
  42. package/dist/{SurfaceChart3DScene-WXJHYOGJ.js.br → SurfaceChart3DScene-FTVXZN6O.js.br} +0 -0
  43. package/dist/SurfaceChart3DScene-FTVXZN6O.js.gz +0 -0
  44. package/dist/{chunk-UTMTXJGM.js → chunk-7VPDHSWF.js} +330 -349
  45. package/dist/chunk-7VPDHSWF.js.br +0 -0
  46. package/dist/chunk-7VPDHSWF.js.gz +0 -0
  47. package/dist/{chunk-YQOK4E2A.js → chunk-AL2KLPOJ.js} +32381 -22178
  48. package/dist/chunk-AL2KLPOJ.js.br +0 -0
  49. package/dist/chunk-AL2KLPOJ.js.gz +0 -0
  50. package/dist/{chunk-IWQSAKPM.mjs → chunk-FG5VQFWP.mjs} +193 -71
  51. package/dist/chunk-FG5VQFWP.mjs.br +0 -0
  52. package/dist/chunk-FG5VQFWP.mjs.gz +0 -0
  53. package/dist/{chunk-UTIMT5CZ.js → chunk-MZI4DG3S.js} +12 -0
  54. package/dist/chunk-MZI4DG3S.js.br +0 -0
  55. package/dist/{chunk-UTIMT5CZ.js.gz → chunk-MZI4DG3S.js.gz} +0 -0
  56. package/dist/{chunk-HHJZK26I.js → chunk-NFOOONND.js} +1359 -1237
  57. package/dist/chunk-NFOOONND.js.br +0 -0
  58. package/dist/chunk-NFOOONND.js.gz +0 -0
  59. package/dist/{chunk-IVPT3U5C.mjs → chunk-T3V5FBXJ.mjs} +29 -1
  60. package/dist/chunk-T3V5FBXJ.mjs.br +0 -0
  61. package/dist/chunk-T3V5FBXJ.mjs.gz +0 -0
  62. package/dist/{chunk-JCJ3EPG6.mjs → chunk-TGCSZXOG.mjs} +12 -0
  63. package/dist/chunk-TGCSZXOG.mjs.br +0 -0
  64. package/dist/{chunk-JCJ3EPG6.mjs.gz → chunk-TGCSZXOG.mjs.gz} +0 -0
  65. package/dist/{chunk-EVVWCF2M.mjs → chunk-VYNICQ4O.mjs} +58 -37
  66. package/dist/chunk-VYNICQ4O.mjs.br +0 -0
  67. package/dist/chunk-VYNICQ4O.mjs.gz +0 -0
  68. package/dist/{chunk-U52MKWVA.mjs → chunk-WX7AFFBZ.mjs} +142 -161
  69. package/dist/chunk-WX7AFFBZ.mjs.br +0 -0
  70. package/dist/chunk-WX7AFFBZ.mjs.gz +0 -0
  71. package/dist/{chunk-2FMQ7M3L.js → chunk-ZHSBMG37.js} +490 -469
  72. package/dist/chunk-ZHSBMG37.js.br +0 -0
  73. package/dist/chunk-ZHSBMG37.js.gz +0 -0
  74. package/dist/{chunk-NM652EZS.mjs → chunk-ZUSYUWOV.mjs} +32358 -22178
  75. package/dist/chunk-ZUSYUWOV.mjs.br +0 -0
  76. package/dist/chunk-ZUSYUWOV.mjs.gz +0 -0
  77. package/dist/{chunk-UOMFINNJ.js → chunk-ZWPHUPL4.js} +33 -5
  78. package/dist/chunk-ZWPHUPL4.js.br +0 -0
  79. package/dist/chunk-ZWPHUPL4.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.d.ts +599 -33
  87. package/dist/index.js +47 -47
  88. package/dist/index.js.br +0 -0
  89. package/dist/index.js.gz +0 -0
  90. package/dist/index.mjs +6 -6
  91. package/dist/index.mjs.br +0 -0
  92. package/dist/index.mjs.gz +0 -0
  93. package/dist/internals.d.ts +610 -33
  94. package/dist/internals.d.ts.map +1 -1
  95. package/dist/internals.js +79 -79
  96. package/dist/internals.js.br +0 -0
  97. package/dist/internals.js.gz +0 -0
  98. package/dist/internals.mjs +4 -4
  99. package/dist/internals.mjs.br +0 -0
  100. package/dist/internals.mjs.gz +0 -0
  101. package/dist/{useViewerBuildingBlocks-f6oNGKMX.d.ts → useViewerBuildingBlocks-C8F_4Pzb.d.ts} +3 -1
  102. package/dist/useViewerBuildingBlocks-C8F_4Pzb.d.ts.map +1 -0
  103. package/dist/viewer/index.d.ts +552 -33
  104. package/dist/viewer/index.js +27 -27
  105. package/dist/viewer/index.js.br +0 -0
  106. package/dist/viewer/index.js.gz +0 -0
  107. package/dist/viewer/index.mjs +6 -6
  108. package/dist/viewer/index.mjs.br +0 -0
  109. package/dist/viewer/index.mjs.gz +0 -0
  110. package/package.json +1 -1
  111. package/dist/AiChatPanel-CCJNQGER.mjs.br +0 -0
  112. package/dist/AiChatPanel-CCJNQGER.mjs.gz +0 -0
  113. package/dist/AiChatPanel-LPZWDNVU.js.br +0 -0
  114. package/dist/AiChatPanel-LPZWDNVU.js.gz +0 -0
  115. package/dist/Area3DChartScene-LJCWBNQ3.js.br +0 -0
  116. package/dist/Area3DChartScene-LJCWBNQ3.js.gz +0 -0
  117. package/dist/Area3DChartScene-P6YM6ZL7.mjs.br +0 -0
  118. package/dist/Area3DChartScene-P6YM6ZL7.mjs.gz +0 -0
  119. package/dist/Bar3DChartScene-7DNQ4X5T.js.br +0 -1
  120. package/dist/Bar3DChartScene-7DNQ4X5T.js.gz +0 -0
  121. package/dist/Bar3DChartScene-DIVOJURZ.mjs.br +0 -0
  122. package/dist/Bar3DChartScene-DIVOJURZ.mjs.gz +0 -0
  123. package/dist/Line3DChartScene-UF6DHP36.js.br +0 -0
  124. package/dist/Line3DChartScene-UF6DHP36.js.gz +0 -0
  125. package/dist/Line3DChartScene-ZZVNUKIJ.mjs.br +0 -0
  126. package/dist/Line3DChartScene-ZZVNUKIJ.mjs.gz +0 -0
  127. package/dist/Model3DScene-C7MZ22DH.js.br +0 -0
  128. package/dist/Model3DScene-C7MZ22DH.js.gz +0 -0
  129. package/dist/Model3DScene-XXMAAKBR.mjs.br +0 -0
  130. package/dist/Model3DScene-XXMAAKBR.mjs.gz +0 -0
  131. package/dist/PieChart3DScene-7LX3IL2Q.mjs.br +0 -0
  132. package/dist/PieChart3DScene-7LX3IL2Q.mjs.gz +0 -0
  133. package/dist/PieChart3DScene-N2Y25VG5.js.gz +0 -0
  134. package/dist/SurfaceChart3DScene-ADA7NUIW.mjs.br +0 -0
  135. package/dist/SurfaceChart3DScene-ADA7NUIW.mjs.gz +0 -0
  136. package/dist/SurfaceChart3DScene-WXJHYOGJ.js.gz +0 -0
  137. package/dist/chunk-2FMQ7M3L.js.br +0 -0
  138. package/dist/chunk-2FMQ7M3L.js.gz +0 -0
  139. package/dist/chunk-EVVWCF2M.mjs.br +0 -0
  140. package/dist/chunk-EVVWCF2M.mjs.gz +0 -0
  141. package/dist/chunk-HHJZK26I.js.br +0 -0
  142. package/dist/chunk-HHJZK26I.js.gz +0 -0
  143. package/dist/chunk-IVPT3U5C.mjs.br +0 -0
  144. package/dist/chunk-IVPT3U5C.mjs.gz +0 -0
  145. package/dist/chunk-IWQSAKPM.mjs.br +0 -0
  146. package/dist/chunk-IWQSAKPM.mjs.gz +0 -0
  147. package/dist/chunk-JCJ3EPG6.mjs.br +0 -0
  148. package/dist/chunk-NM652EZS.mjs.br +0 -0
  149. package/dist/chunk-NM652EZS.mjs.gz +0 -0
  150. package/dist/chunk-U52MKWVA.mjs.br +0 -0
  151. package/dist/chunk-U52MKWVA.mjs.gz +0 -0
  152. package/dist/chunk-UOMFINNJ.js.br +0 -0
  153. package/dist/chunk-UOMFINNJ.js.gz +0 -0
  154. package/dist/chunk-UTIMT5CZ.js.br +0 -0
  155. package/dist/chunk-UTMTXJGM.js.br +0 -0
  156. package/dist/chunk-UTMTXJGM.js.gz +0 -0
  157. package/dist/chunk-YQOK4E2A.js.br +0 -0
  158. package/dist/chunk-YQOK4E2A.js.gz +0 -0
  159. package/dist/useViewerBuildingBlocks-f6oNGKMX.d.ts.map +0 -1
Binary file
Binary file
@@ -1,8 +1,8 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-IVPT3U5C.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-EVVWCF2M.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, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-U52MKWVA.mjs';
4
- import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, 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, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, getComputedFillStyle, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, ensureChartInteractionStyles, applyChartPartHighlight, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, isWedgeCalloutPresetShape, 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, styleShadowFilter, resolveDrawingShapeNodeId, buildChromeStyle, modelDataToBlobUrl, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, getInlineEditorSelection, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, generateNibMarks, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, 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, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, 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, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, 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, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, 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, applyTableStylePreset, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, buildOleObjectNamePatch, 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, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, 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, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, 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, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-NM652EZS.mjs';
5
- import { LOCALE_CATALOG, translationsEn } from './chunk-JCJ3EPG6.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-T3V5FBXJ.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-VYNICQ4O.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, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-WX7AFFBZ.mjs';
4
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, 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, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, getComputedFillStyle, strokeOutlineViewBox, getElementTransform, revealedSmartArtNodeCount, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, isWedgeCalloutPresetShape, isElementActionable, 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, styleShadowFilter, resolveDrawingShapeNodeId, buildChromeStyle, modelDataToBlobUrl, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, getInlineEditorSelection, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, generateNibMarks, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, 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, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, 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, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, 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, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, 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, applyTableStylePreset, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, 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, 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, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeDescriptors, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRemoved, withChartUserShapeUpdated, 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, 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, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, 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, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-ZUSYUWOV.mjs';
5
+ import { LOCALE_CATALOG, translationsEn } from './chunk-TGCSZXOG.mjs';
6
6
  import React19, { 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';
@@ -514,7 +514,7 @@ function FailedToLoad() {
514
514
  var LazyArea3DChartScene = React19.lazy(
515
515
  async () => {
516
516
  try {
517
- return await import('./Area3DChartScene-P6YM6ZL7.mjs');
517
+ return await import('./Area3DChartScene-SJC2ZB6R.mjs');
518
518
  } catch {
519
519
  return { default: FailedToLoad };
520
520
  }
@@ -570,7 +570,7 @@ function FailedToLoad2() {
570
570
  var LazyBar3DChartScene = React19.lazy(
571
571
  async () => {
572
572
  try {
573
- return await import('./Bar3DChartScene-DIVOJURZ.mjs');
573
+ return await import('./Bar3DChartScene-SPER4LQA.mjs');
574
574
  } catch {
575
575
  return { default: FailedToLoad2 };
576
576
  }
@@ -626,7 +626,7 @@ function FailedToLoad3() {
626
626
  var LazyLine3DChartScene = React19.lazy(
627
627
  async () => {
628
628
  try {
629
- return await import('./Line3DChartScene-ZZVNUKIJ.mjs');
629
+ return await import('./Line3DChartScene-FH3YHPXE.mjs');
630
630
  } catch {
631
631
  return { default: FailedToLoad3 };
632
632
  }
@@ -682,7 +682,7 @@ function FailedToLoad4() {
682
682
  var LazyPieChart3DScene = React19.lazy(
683
683
  async () => {
684
684
  try {
685
- return await import('./PieChart3DScene-7LX3IL2Q.mjs');
685
+ return await import('./PieChart3DScene-QFQUJFDP.mjs');
686
686
  } catch {
687
687
  return { default: FailedToLoad4 };
688
688
  }
@@ -738,7 +738,7 @@ function FailedToLoad5() {
738
738
  var LazySurfaceChart3DScene = React19.lazy(
739
739
  async () => {
740
740
  try {
741
- return await import('./SurfaceChart3DScene-ADA7NUIW.mjs');
741
+ return await import('./SurfaceChart3DScene-CGXMRBCL.mjs');
742
742
  } catch {
743
743
  return { default: FailedToLoad5 };
744
744
  }
@@ -898,7 +898,7 @@ function ChartElementView({
898
898
  }
899
899
  };
900
900
  const handleDoubleClick = (e) => {
901
- if (!canEdit) {
901
+ if (!canEdit || !canDrillDown(element)) {
902
902
  return;
903
903
  }
904
904
  const target = e.target;
@@ -923,8 +923,7 @@ function ChartElementView({
923
923
  setTitleDraft(null);
924
924
  };
925
925
  const baseChartData = previewData ?? element.chartData;
926
- const chartBuild = animationState?.build?.kind === "chart" ? animationState.build : void 0;
927
- const revealedChartData = chartBuild && baseChartData ? applyChartBuildReveal(baseChartData, chartBuild) : baseChartData;
926
+ const revealedChartData = baseChartData ? resolveRevealedChartData(baseChartData, animationState) : baseChartData;
928
927
  const renderedElement = revealedChartData === element.chartData ? element : { ...element, chartData: revealedChartData };
929
928
  return /* @__PURE__ */ jsxs(
930
929
  "div",
@@ -1559,7 +1558,7 @@ var ConnectorElementRenderer = React19.memo(
1559
1558
  top: el.y,
1560
1559
  width: boxWidth,
1561
1560
  height: boxHeight,
1562
- transform: getElementTransform(el),
1561
+ transform: connectorWrapperTransform(el),
1563
1562
  transformOrigin: "center",
1564
1563
  background: "transparent",
1565
1564
  border: "none",
@@ -1738,6 +1737,8 @@ function getElementInteractionProps({
1738
1737
  onActionClick
1739
1738
  }) {
1740
1739
  const hasHoverAction = Boolean(element.actionHover);
1740
+ const highlight = resolveElementHighlightClick(element.actionClick, element.actionHover);
1741
+ const hoverLeaveStyle = highlight.hover?.leaveStyle;
1741
1742
  return {
1742
1743
  onKeyDown: (event) => {
1743
1744
  if (event.key === "Enter" && isEditableText && canInteract && !isInlineEditing) {
@@ -1764,30 +1765,26 @@ function getElementInteractionProps({
1764
1765
  }
1765
1766
  event.stopPropagation();
1766
1767
  event.preventDefault();
1767
- if (element.actionClick.highlightClick) {
1768
+ if (highlight.click) {
1768
1769
  const target = event.currentTarget;
1769
- target.style.filter = "brightness(1.18)";
1770
- target.style.outline = "2px solid rgba(59, 130, 246, 0.6)";
1770
+ const { style, clearStyle, durationMs } = highlight.click;
1771
+ applyHighlightClickStyle(target, style);
1771
1772
  window.setTimeout(() => {
1772
- target.style.filter = "";
1773
- target.style.outline = "";
1774
- }, 320);
1773
+ applyHighlightClickStyle(target, clearStyle);
1774
+ }, durationMs);
1775
1775
  }
1776
1776
  onActionClick(element.id, element.actionClick);
1777
1777
  },
1778
1778
  onMouseEnter: (event) => {
1779
- if (element.actionHover?.highlightClick) {
1780
- const target = event.currentTarget;
1781
- target.style.filter = "brightness(1.15)";
1782
- target.style.outline = "2px solid rgba(59, 130, 246, 0.5)";
1779
+ if (highlight.hover) {
1780
+ applyHighlightClickStyle(event.currentTarget, highlight.hover.enterStyle);
1783
1781
  }
1784
1782
  if (isPresentationPassive && element.actionHover && onActionClick && (element.actionHover.url || element.actionHover.targetSlideIndex !== void 0)) {
1785
1783
  onActionClick(element.id, element.actionHover);
1786
1784
  }
1787
1785
  },
1788
- onMouseLeave: hasHoverAction && element.actionHover?.highlightClick ? (event) => {
1789
- event.currentTarget.style.filter = "";
1790
- event.currentTarget.style.outline = "";
1786
+ onMouseLeave: hasHoverAction && hoverLeaveStyle ? (event) => {
1787
+ applyHighlightClickStyle(event.currentTarget, hoverLeaveStyle);
1791
1788
  } : void 0,
1792
1789
  title: canInteract && element.actionClick ? void 0 : element.actionClick?.tooltip || element.actionHover?.tooltip || void 0
1793
1790
  };
@@ -2246,18 +2243,16 @@ var ElementRenderer = React19.memo(
2246
2243
  const canEditChart = effectiveCanInteract;
2247
2244
  const hasAction = Boolean(el.actionClick && onActionClick);
2248
2245
  const isZoom = el.type === "zoom" && Boolean(onZoomClick);
2249
- const isActionable = isElementActionable(el, {
2246
+ const aria = resolveElementAriaAttributes(el, {
2250
2247
  hasActionHandler: Boolean(onActionClick),
2251
2248
  hasHyperlinkHandler: Boolean(onHyperlinkClick),
2252
2249
  hasZoomHandler: Boolean(onZoomClick)
2253
2250
  });
2251
+ const isActionable = aria.actionable;
2254
2252
  const selB = isSelected ? `outline-1 -outline-offset-1 outline-${selClr} ring-2 ring-${selClr}/50` : showHoverBorder ? "outline-1 -outline-offset-1 outline-transparent hover:outline-primary/40" : "";
2255
2253
  const cur = effectiveIsInlineEditing ? "cursor-text" : effectiveCanInteract ? !allow.movable ? "cursor-default" : "cursor-move" : hasAction || isZoom ? "cursor-pointer" : "";
2256
2254
  const isPresentationPassive = presenting === true;
2257
2255
  const isFullscreenMedia = el.type === "media" && Boolean(el.fullScreen) && isPresentationPassive && isMediaPlaying;
2258
- const ariaRole = getAriaRole(el, { actionable: isActionable });
2259
- const ariaLabel = getAriaLabel(el);
2260
- const ariaRoleDescription = getAriaRoleDescription(el);
2261
2256
  const isFocusable = effectiveCanInteract || isActionable;
2262
2257
  const interactionProps = getElementInteractionProps({
2263
2258
  element: el,
@@ -2275,9 +2270,10 @@ var ElementRenderer = React19.memo(
2275
2270
  "data-pptx-element": "true",
2276
2271
  "data-element-id": el.id,
2277
2272
  "data-pptx-action": isActionable ? "click" : void 0,
2278
- role: ariaRole,
2279
- "aria-label": ariaLabel,
2280
- "aria-roledescription": ariaRoleDescription,
2273
+ role: aria.role,
2274
+ "aria-label": aria.label,
2275
+ "aria-roledescription": aria.roleDescription,
2276
+ "aria-hidden": aria.hidden ? true : void 0,
2281
2277
  "aria-selected": isSelected ? true : void 0,
2282
2278
  tabIndex: isFocusable ? 0 : -1,
2283
2279
  className: cn(
@@ -3029,7 +3025,7 @@ function FailedToLoad6() {
3029
3025
  var LazyModel3DScene = React19.lazy(
3030
3026
  async () => {
3031
3027
  try {
3032
- return await import('./Model3DScene-XXMAAKBR.mjs');
3028
+ return await import('./Model3DScene-2BCR2YYD.mjs');
3033
3029
  } catch {
3034
3030
  return { default: FailedToLoad6 };
3035
3031
  }
@@ -3938,7 +3934,7 @@ function SmartArtRendererImpl({
3938
3934
  const style = resolveStyle(element);
3939
3935
  const a11y = buildSmartArtA11y(smartArtData);
3940
3936
  const nodeLabels = new Map(a11y.nodes.map((n) => [n.id, n.label]));
3941
- const editable = canEdit && Boolean(onUpdateElement);
3937
+ const editable = canEdit && Boolean(onUpdateElement) && canDrillDown(element);
3942
3938
  const handleCommitNodeText = (nodeId, text) => {
3943
3939
  if (!onUpdateElement || !shouldCommitSmartArtNodeText(smartArtData, nodeId, text)) {
3944
3940
  return;
@@ -5722,7 +5718,7 @@ var ATXT = [
5722
5718
  ];
5723
5719
  function ShapeArrangeExtras(p) {
5724
5720
  const { t } = useTranslation();
5725
- const canGroup = canGroupSelection(p.canEdit, p.selectedCount);
5721
+ const canGroup = canGroupSelection(p.canEdit, p.selectedCount, p.selectionGroupable);
5726
5722
  const canUngroup = canUngroupSelection(p.canEdit, p.selectedElement);
5727
5723
  const canStrokeWidth = canSetStrokeWidth(p.canEdit, p.selectedElement);
5728
5724
  const strokeWidth = strokeWidthOf(p.selectedElement);
@@ -5854,6 +5850,7 @@ function ArrangeSection(p) {
5854
5850
  canEdit: p.canEdit,
5855
5851
  selectedElement: p.selectedElement,
5856
5852
  selectedCount: p.selectedCount,
5853
+ selectionGroupable: p.selectionGroupable,
5857
5854
  onGroupElements: p.onGroupElements,
5858
5855
  onUngroupElement: p.onUngroupElement,
5859
5856
  onUpdateElementStyle: p.onUpdateElementStyle
@@ -6309,7 +6306,7 @@ function AccountPage() {
6309
6306
  return void 0;
6310
6307
  });
6311
6308
  };
6312
- const version = "3.5.3" ;
6309
+ const version = "3.5.4" ;
6313
6310
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
6314
6311
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
6315
6312
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -9367,6 +9364,7 @@ function MobileSectionBody({
9367
9364
  canEdit: p.canEdit,
9368
9365
  selectedElement: p.selectedElement,
9369
9366
  selectedCount: p.selectedCount,
9367
+ selectionGroupable: p.selectionGroupable,
9370
9368
  onAlignElements: p.onAlignElements,
9371
9369
  onDistributeElements: p.onDistributeElements,
9372
9370
  canDistribute: p.canDistribute,
@@ -10719,6 +10717,7 @@ function Toolbar(p) {
10719
10717
  canEdit: p.canEdit,
10720
10718
  selectedElement: p.selectedElement,
10721
10719
  selectedCount: p.selectedCount,
10720
+ selectionGroupable: p.selectionGroupable,
10722
10721
  onAlignElements: p.onAlignElements,
10723
10722
  onDistributeElements: p.onDistributeElements,
10724
10723
  canDistribute: p.canDistribute,
@@ -13323,6 +13322,7 @@ function contextMenuContext(props) {
13323
13322
  elementType: props.selectedElement?.type ?? null,
13324
13323
  table: tableCell(props),
13325
13324
  hasMultiSelection: Boolean(props.hasMultiSelection),
13325
+ selectionGroupable: props.selectionGroupable,
13326
13326
  // Both AI entries appear together or not at all, so a viewer that wired
13327
13327
  // only one of them does not produce a menu the other bindings cannot match.
13328
13328
  aiEnabled: Boolean(props.onAskAi) && Boolean(props.onFixAi)
@@ -22596,6 +22596,129 @@ function ChartTypeSelector({
22596
22596
  ] })
22597
22597
  ] });
22598
22598
  }
22599
+ function ChartUserShapeOptions({
22600
+ chartData,
22601
+ canEdit,
22602
+ onUpdateChartData
22603
+ }) {
22604
+ const { t } = useTranslation();
22605
+ const shapes = chartData.userShapes;
22606
+ const descriptors = listChartUserShapeDescriptors(shapes);
22607
+ const kindLabel = (kind) => {
22608
+ const key = `pptx.chart.userShapeKind${kind.charAt(0).toUpperCase()}${kind.slice(1)}`;
22609
+ return t(key);
22610
+ };
22611
+ return /* @__PURE__ */ jsxs("div", { className: CARD2, children: [
22612
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
22613
+ /* @__PURE__ */ jsx("div", { className: HEADING2, children: t("pptx.chart.userShapes") }),
22614
+ /* @__PURE__ */ jsx(
22615
+ "button",
22616
+ {
22617
+ type: "button",
22618
+ disabled: !canEdit,
22619
+ className: BTN2,
22620
+ onClick: () => onUpdateChartData({
22621
+ userShapes: withChartUserShapeAdded(shapes, createDefaultChartUserShape())
22622
+ }),
22623
+ children: t("pptx.chart.userShapeAddTextBox")
22624
+ }
22625
+ )
22626
+ ] }),
22627
+ descriptors.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-[11px] text-muted-foreground", children: t("pptx.chart.userShapesEmpty") }) : /* @__PURE__ */ jsx("div", { className: "space-y-2", children: descriptors.map((d) => /* @__PURE__ */ jsxs("div", { className: "space-y-1 rounded border border-border p-1.5", children: [
22628
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
22629
+ /* @__PURE__ */ jsxs("span", { className: "flex-1 truncate", children: [
22630
+ kindLabel(d.kind),
22631
+ d.text ? ` - ${d.text}` : ""
22632
+ ] }),
22633
+ /* @__PURE__ */ jsx(
22634
+ "button",
22635
+ {
22636
+ type: "button",
22637
+ disabled: !canEdit,
22638
+ "aria-label": t("pptx.chart.userShapeDelete"),
22639
+ className: BTN2,
22640
+ onClick: () => onUpdateChartData({ userShapes: withChartUserShapeRemoved(shapes, d.index) }),
22641
+ children: "\u2715"
22642
+ }
22643
+ )
22644
+ ] }),
22645
+ d.editable ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-[11px]", children: [
22646
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeFrom") }),
22647
+ /* @__PURE__ */ jsx(
22648
+ "input",
22649
+ {
22650
+ type: "number",
22651
+ step: "0.01",
22652
+ min: 0,
22653
+ max: 1,
22654
+ disabled: !canEdit,
22655
+ className: INPUT2,
22656
+ value: d.from.x,
22657
+ onChange: (e) => onUpdateChartData({
22658
+ userShapes: withChartUserShapeUpdated(shapes, d.index, {
22659
+ from: { ...d.from, x: Number(e.target.value) }
22660
+ })
22661
+ })
22662
+ }
22663
+ ),
22664
+ /* @__PURE__ */ jsx(
22665
+ "input",
22666
+ {
22667
+ type: "number",
22668
+ step: "0.01",
22669
+ min: 0,
22670
+ max: 1,
22671
+ disabled: !canEdit,
22672
+ className: INPUT2,
22673
+ value: d.from.y,
22674
+ onChange: (e) => onUpdateChartData({
22675
+ userShapes: withChartUserShapeUpdated(shapes, d.index, {
22676
+ from: { ...d.from, y: Number(e.target.value) }
22677
+ })
22678
+ })
22679
+ }
22680
+ ),
22681
+ d.anchor === "rel" && d.to ? /* @__PURE__ */ jsxs(Fragment, { children: [
22682
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeTo") }),
22683
+ /* @__PURE__ */ jsx(
22684
+ "input",
22685
+ {
22686
+ type: "number",
22687
+ step: "0.01",
22688
+ min: 0,
22689
+ max: 1,
22690
+ disabled: !canEdit,
22691
+ className: INPUT2,
22692
+ value: d.to.x,
22693
+ onChange: (e) => onUpdateChartData({
22694
+ userShapes: withChartUserShapeUpdated(shapes, d.index, {
22695
+ to: { ...d.to, x: Number(e.target.value) }
22696
+ })
22697
+ })
22698
+ }
22699
+ ),
22700
+ /* @__PURE__ */ jsx(
22701
+ "input",
22702
+ {
22703
+ type: "number",
22704
+ step: "0.01",
22705
+ min: 0,
22706
+ max: 1,
22707
+ disabled: !canEdit,
22708
+ className: INPUT2,
22709
+ value: d.to.y,
22710
+ onChange: (e) => onUpdateChartData({
22711
+ userShapes: withChartUserShapeUpdated(shapes, d.index, {
22712
+ to: { ...d.to, y: Number(e.target.value) }
22713
+ })
22714
+ })
22715
+ }
22716
+ )
22717
+ ] }) : null
22718
+ ] }) : /* @__PURE__ */ jsx("div", { className: "text-[10px] italic text-muted-foreground", children: t("pptx.chart.userShapeNotEditable") })
22719
+ ] }, d.index)) })
22720
+ ] });
22721
+ }
22599
22722
  function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22600
22723
  const chartData = selectedElement.chartData;
22601
22724
  const followDataPoint = useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
@@ -22924,6 +23047,14 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22924
23047
  onToggleSecondaryAxis: toggleSecondaryAxis
22925
23048
  }
22926
23049
  ),
23050
+ /* @__PURE__ */ jsx(
23051
+ ChartUserShapeOptions,
23052
+ {
23053
+ chartData,
23054
+ canEdit,
23055
+ onUpdateChartData: updateChartData
23056
+ }
23057
+ ),
22927
23058
  /* @__PURE__ */ jsx(
22928
23059
  ChartDataGrid,
22929
23060
  {
@@ -23048,7 +23179,7 @@ function ConnectorPanel({
23048
23179
  ConnectorArrowsSection,
23049
23180
  {
23050
23181
  selectedShapeStyle: selectedElement.shapeStyle,
23051
- canEdit,
23182
+ canEdit: canEdit && canInteractWithElement(selectedElement, "changeArrowheads"),
23052
23183
  onUpdateShapeStyle: onUpdateElementStyle
23053
23184
  }
23054
23185
  )
@@ -23619,6 +23750,7 @@ function ImageCropSection({
23619
23750
  if (!isImageLikeElement(selectedElement)) {
23620
23751
  return null;
23621
23752
  }
23753
+ const croppable = canEdit && canInteractWithElement(selectedElement, "crop");
23622
23754
  return /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", "data-pptx-image-crop": true, children: [
23623
23755
  CROP_SIDES.map((side) => {
23624
23756
  const key = `crop${side}`;
@@ -23633,7 +23765,7 @@ function ImageCropSection({
23633
23765
  type: "range",
23634
23766
  min: 0,
23635
23767
  max: MAX_CROP_PERCENT,
23636
- disabled: !canEdit,
23768
+ disabled: !croppable,
23637
23769
  className: "accent-primary",
23638
23770
  value: Math.round(clampCropValue(selectedElement[key]) * 100),
23639
23771
  onChange: (e) => onUpdateElement({
@@ -23647,7 +23779,7 @@ function ImageCropSection({
23647
23779
  "button",
23648
23780
  {
23649
23781
  type: "button",
23650
- disabled: !canEdit,
23782
+ disabled: !croppable,
23651
23783
  className: `${BTN_CLS} w-full`,
23652
23784
  onClick: () => onUpdateElement({
23653
23785
  cropLeft: 0,
@@ -23856,23 +23988,14 @@ function mmSsToMs(value) {
23856
23988
  }
23857
23989
  return seconds * 1e3;
23858
23990
  }
23991
+ var TRIM_ERROR_KEYS = {
23992
+ negative: "pptx.media.trimErrorNegative",
23993
+ startAfterEnd: "pptx.media.trimErrorStartAfterEnd",
23994
+ beyondDuration: "pptx.media.trimErrorBeyondDuration"
23995
+ };
23859
23996
  function validateTrimRange(trimStartMs, trimEndMs, durationMs) {
23860
- if (trimStartMs < 0) {
23861
- return "pptx.media.trimErrorNegative";
23862
- }
23863
- if (trimEndMs < 0) {
23864
- return "pptx.media.trimErrorNegative";
23865
- }
23866
- if (trimEndMs > 0 && trimStartMs >= trimEndMs) {
23867
- return "pptx.media.trimErrorStartAfterEnd";
23868
- }
23869
- if (durationMs > 0 && trimStartMs > durationMs) {
23870
- return "pptx.media.trimErrorBeyondDuration";
23871
- }
23872
- if (durationMs > 0 && trimEndMs > durationMs) {
23873
- return "pptx.media.trimErrorBeyondDuration";
23874
- }
23875
- return null;
23997
+ const error = validateMediaTrimRange(trimStartMs, trimEndMs, durationMs);
23998
+ return error ? TRIM_ERROR_KEYS[error] : null;
23876
23999
  }
23877
24000
  function TrimTimeInput({
23878
24001
  label,
@@ -23942,14 +24065,11 @@ function MediaInspector({
23942
24065
  const trimStartMs = element.trimStartMs ?? 0;
23943
24066
  const trimEndMs = element.trimEndMs ?? 0;
23944
24067
  const durationMs = durationSeconds * 1e3;
23945
- const trimmedDuration = useMemo(() => {
23946
- const effectiveStart = trimStartMs;
23947
- const effectiveEnd = trimEndMs > 0 ? trimEndMs : durationMs;
23948
- if (effectiveEnd <= effectiveStart || durationMs <= 0) {
23949
- return msToMmSs(durationMs);
23950
- }
23951
- return msToMmSs(effectiveEnd - effectiveStart);
23952
- }, [trimStartMs, trimEndMs, durationMs]);
24068
+ const trimmedDuration = useMemo(
24069
+ () => msToMmSs(trimmedMediaDurationMs(trimStartMs, trimEndMs, durationMs)),
24070
+ [trimStartMs, trimEndMs, durationMs]
24071
+ );
24072
+ const trimEndAbsoluteMs = mediaTrimEndAbsoluteMs(durationMs, trimEndMs);
23953
24073
  const validationError = useMemo(
23954
24074
  () => validateTrimRange(trimStartMs, trimEndMs, durationMs),
23955
24075
  [trimStartMs, trimEndMs, durationMs]
@@ -23966,10 +24086,10 @@ function MediaInspector({
23966
24086
  const handleTrimEndChange = useCallback(
23967
24087
  (ms) => {
23968
24088
  onUpdateElement({
23969
- trimEndMs: ms
24089
+ trimEndMs: durationMs > 0 ? mediaTrimEndMsFromAbsoluteMs(durationMs, ms) : ms
23970
24090
  });
23971
24091
  },
23972
- [onUpdateElement]
24092
+ [durationMs, onUpdateElement]
23973
24093
  );
23974
24094
  const handleResetTrim = useCallback(() => {
23975
24095
  onUpdateElement({
@@ -23997,7 +24117,7 @@ function MediaInspector({
23997
24117
  TrimTimeInput,
23998
24118
  {
23999
24119
  label: t("pptx.media.trimEndTime"),
24000
- valueMs: trimEndMs,
24120
+ valueMs: trimEndAbsoluteMs,
24001
24121
  maxMs: durationMs,
24002
24122
  disabled: !canEdit,
24003
24123
  onChange: handleTrimEndChange
@@ -24043,7 +24163,7 @@ function TrimTimeline({
24043
24163
  const barRef = useRef(null);
24044
24164
  const [dragging, setDragging] = useState(null);
24045
24165
  const trimStartSec = trimStartMs / 1e3;
24046
- const trimEndSec = trimEndMs > 0 ? trimEndMs / 1e3 : duration;
24166
+ const trimEndSec = mediaTrimEndSeconds(duration, trimEndMs);
24047
24167
  const safeDuration = duration > 0 ? duration : 1;
24048
24168
  const startPct = trimStartSec / safeDuration * 100;
24049
24169
  const endPct = trimEndSec / safeDuration * 100;
@@ -24071,7 +24191,7 @@ function TrimTimeline({
24071
24191
  onTrimChange(Math.max(0, newStart) * 1e3, trimEndMs);
24072
24192
  } else {
24073
24193
  const newEnd = Math.max(t, trimStartSec + 0.1);
24074
- onTrimChange(trimStartMs, Math.min(newEnd, duration) * 1e3);
24194
+ onTrimChange(trimStartMs, mediaTrimEndMsFromSeconds(duration, newEnd));
24075
24195
  }
24076
24196
  };
24077
24197
  const handlePointerUp = () => {
@@ -34431,6 +34551,7 @@ function ViewerToolbarSection(props) {
34431
34551
  onUngroupElement: manipulation.handleUngroupElement,
34432
34552
  onUpdateElementStyle: ops.updateSelectedShapeStyle,
34433
34553
  selectedCount: s.selectedElementIds.length > 0 ? s.selectedElementIds.length : selectedElement ? 1 : 0,
34554
+ selectionGroupable: manipulation.selectionGroupable,
34434
34555
  onOpenHyperlinkDialog: () => dialogs.setIsHyperlinkDialogOpen(true),
34435
34556
  onDuplicate: manipulation.handleDuplicate,
34436
34557
  onDelete: manipulation.handleDelete,
@@ -35953,7 +36074,7 @@ ${url}`)) {
35953
36074
  var AiChatPanel = lazy(async () => {
35954
36075
  const [{ useChat }, { default: Panel }] = await Promise.all([
35955
36076
  import('@ai-sdk/react'),
35956
- import('./AiChatPanel-CCJNQGER.mjs')
36077
+ import('./AiChatPanel-WRQGJJVD.mjs')
35957
36078
  ]);
35958
36079
  function BoundAiChatPanel(props) {
35959
36080
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -37201,6 +37322,7 @@ function ViewerMainContent(props) {
37201
37322
  selectedElement,
37202
37323
  tableEditorState: state.tableEditorState,
37203
37324
  hasMultiSelection: state.effectiveSelectedIds.length > 1,
37325
+ selectionGroupable: manipulation.selectionGroupable,
37204
37326
  onAction: manipulation.handleContextMenuAction,
37205
37327
  onInsertTableRow: tableOps.handleInsertTableRow,
37206
37328
  onDeleteTableRow: tableOps.handleDeleteTableRow,
Binary file
Binary file
@@ -3692,6 +3692,18 @@ var translationsEn = {
3692
3692
  "pptx.chart.bar3DShapeLabel": "Column shape",
3693
3693
  "pptx.chart.radarStyleLabel": "Radar style",
3694
3694
  "pptx.chart.surfaceWireframeLabel": "Surface",
3695
+ "pptx.chart.userShapes": "Overlay shapes",
3696
+ "pptx.chart.userShapesEmpty": "No overlay shapes on this chart.",
3697
+ "pptx.chart.userShapeAddTextBox": "Add text box",
3698
+ "pptx.chart.userShapeDelete": "Delete overlay shape",
3699
+ "pptx.chart.userShapeFrom": "From",
3700
+ "pptx.chart.userShapeTo": "To",
3701
+ "pptx.chart.userShapeNotEditable": "This overlay shape type can be viewed but not edited here.",
3702
+ "pptx.chart.userShapeKindSp": "Shape",
3703
+ "pptx.chart.userShapeKindCxnSp": "Connector",
3704
+ "pptx.chart.userShapeKindPic": "Picture",
3705
+ "pptx.chart.userShapeKindGrpSp": "Group",
3706
+ "pptx.chart.userShapeKindGraphicFrame": "Embedded object",
3695
3707
  "pptx.masterView.addLayout": "Insert Layout",
3696
3708
  "pptx.masterView.duplicateLayout": "Duplicate Layout",
3697
3709
  "pptx.masterView.deleteLayout": "Delete Layout",
Binary file