pptx-react-viewer 3.1.2 → 3.1.4

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 (154) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/{AiChatPanel-UCFQIWOQ.mjs → AiChatPanel-ITCVRVKP.mjs} +3 -3
  3. package/dist/AiChatPanel-ITCVRVKP.mjs.br +0 -0
  4. package/dist/AiChatPanel-ITCVRVKP.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-4EYZDQXM.js → AiChatPanel-TO5PHBGW.js} +23 -23
  6. package/dist/AiChatPanel-TO5PHBGW.js.br +0 -0
  7. package/dist/AiChatPanel-TO5PHBGW.js.gz +0 -0
  8. package/dist/{Area3DChartScene-YBMC6NKY.js → Area3DChartScene-2UNQ3J3V.js} +2 -2
  9. package/dist/Area3DChartScene-2UNQ3J3V.js.br +0 -0
  10. package/dist/Area3DChartScene-2UNQ3J3V.js.gz +0 -0
  11. package/dist/{Area3DChartScene-PMYXO4MR.mjs → Area3DChartScene-7PHPDOTG.mjs} +1 -1
  12. package/dist/Area3DChartScene-7PHPDOTG.mjs.br +0 -0
  13. package/dist/Area3DChartScene-7PHPDOTG.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-CEOI6SU6.mjs → Bar3DChartScene-BLPUHYRZ.mjs} +1 -1
  15. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-75DCA2ZA.js → Bar3DChartScene-MC5S3AGT.js} +2 -2
  18. package/dist/Bar3DChartScene-MC5S3AGT.js.br +0 -0
  19. package/dist/Bar3DChartScene-MC5S3AGT.js.gz +0 -0
  20. package/dist/{Line3DChartScene-STGX6N6V.js → Line3DChartScene-JVVZRIDD.js} +2 -2
  21. package/dist/Line3DChartScene-JVVZRIDD.js.br +0 -0
  22. package/dist/Line3DChartScene-JVVZRIDD.js.gz +0 -0
  23. package/dist/{Line3DChartScene-EZZKWUZR.mjs → Line3DChartScene-L5B4YFG3.mjs} +1 -1
  24. package/dist/Line3DChartScene-L5B4YFG3.mjs.br +0 -0
  25. package/dist/Line3DChartScene-L5B4YFG3.mjs.gz +0 -0
  26. package/dist/{Model3DScene-FGQJKWL6.mjs → Model3DScene-6TNWS5LV.mjs} +1 -1
  27. package/dist/Model3DScene-6TNWS5LV.mjs.br +0 -0
  28. package/dist/Model3DScene-6TNWS5LV.mjs.gz +0 -0
  29. package/dist/{Model3DScene-DWRD63FH.js → Model3DScene-LRDNQNKJ.js} +2 -2
  30. package/dist/Model3DScene-LRDNQNKJ.js.br +0 -0
  31. package/dist/Model3DScene-LRDNQNKJ.js.gz +0 -0
  32. package/dist/{PieChart3DScene-R3Y7OVVO.js → PieChart3DScene-PZWZCXHX.js} +2 -2
  33. package/dist/PieChart3DScene-PZWZCXHX.js.br +0 -0
  34. package/dist/PieChart3DScene-PZWZCXHX.js.gz +0 -0
  35. package/dist/{PieChart3DScene-DH6RSJO6.mjs → PieChart3DScene-XXAIVP4I.mjs} +1 -1
  36. package/dist/PieChart3DScene-XXAIVP4I.mjs.br +0 -0
  37. package/dist/PieChart3DScene-XXAIVP4I.mjs.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-BMBU5RKI.mjs → SurfaceChart3DScene-CRUGJSCY.mjs} +1 -1
  39. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.br +1 -0
  40. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-UM5HA3VO.js → SurfaceChart3DScene-UBQV3ZN2.js} +2 -2
  42. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.br +0 -0
  43. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.gz +0 -0
  44. package/dist/UTIF-LAD5QYGQ.mjs +6400 -0
  45. package/dist/UTIF-LAD5QYGQ.mjs.br +0 -0
  46. package/dist/UTIF-LAD5QYGQ.mjs.gz +0 -0
  47. package/dist/UTIF-POYWAAGO.js +6402 -0
  48. package/dist/UTIF-POYWAAGO.js.br +0 -0
  49. package/dist/UTIF-POYWAAGO.js.gz +0 -0
  50. package/dist/{chunk-VLLZ3QL2.mjs → chunk-57MGKBJ4.mjs} +284 -81
  51. package/dist/chunk-57MGKBJ4.mjs.br +0 -0
  52. package/dist/chunk-57MGKBJ4.mjs.gz +0 -0
  53. package/dist/{chunk-4VVOTEQ4.mjs → chunk-A2UAUSJM.mjs} +114 -8
  54. package/dist/chunk-A2UAUSJM.mjs.br +0 -0
  55. package/dist/chunk-A2UAUSJM.mjs.gz +0 -0
  56. package/dist/{chunk-W3J6SNVE.mjs → chunk-BPWSJLLG.mjs} +158 -29
  57. package/dist/chunk-BPWSJLLG.mjs.br +0 -0
  58. package/dist/chunk-BPWSJLLG.mjs.gz +0 -0
  59. package/dist/{chunk-YNUYFR2T.js → chunk-LGVNUG3G.js} +3 -3
  60. package/dist/chunk-LGVNUG3G.js.br +0 -0
  61. package/dist/chunk-LGVNUG3G.js.gz +0 -0
  62. package/dist/{chunk-WVIKFMNS.js → chunk-LXYDXLKZ.js} +511 -405
  63. package/dist/chunk-LXYDXLKZ.js.br +0 -0
  64. package/dist/chunk-LXYDXLKZ.js.gz +0 -0
  65. package/dist/{chunk-O5DKWJDK.mjs → chunk-QOLYY7E3.mjs} +1 -1
  66. package/dist/chunk-QOLYY7E3.mjs.br +0 -0
  67. package/dist/chunk-QOLYY7E3.mjs.gz +0 -0
  68. package/dist/{chunk-2HLDBQH7.js → chunk-T2QG2HD5.js} +302 -171
  69. package/dist/chunk-T2QG2HD5.js.br +0 -0
  70. package/dist/chunk-T2QG2HD5.js.gz +0 -0
  71. package/dist/{chunk-MQEG5GOV.js → chunk-T44LBKF6.js} +1373 -1170
  72. package/dist/chunk-T44LBKF6.js.br +0 -0
  73. package/dist/chunk-T44LBKF6.js.gz +0 -0
  74. package/dist/{chunk-S546O4W2.mjs → chunk-XIHK52SB.mjs} +1526 -342
  75. package/dist/chunk-XIHK52SB.mjs.br +0 -0
  76. package/dist/chunk-XIHK52SB.mjs.gz +0 -0
  77. package/dist/{chunk-7ZQ2FZXE.js → chunk-YDEEINER.js} +1529 -344
  78. package/dist/chunk-YDEEINER.js.br +0 -0
  79. package/dist/chunk-YDEEINER.js.gz +0 -0
  80. package/dist/index.d.ts +139 -3
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +49 -49
  83. package/dist/index.js.br +0 -0
  84. package/dist/index.js.gz +0 -0
  85. package/dist/index.mjs +5 -5
  86. package/dist/index.mjs.br +0 -0
  87. package/dist/index.mjs.gz +0 -0
  88. package/dist/internals.d.ts +139 -3
  89. package/dist/internals.d.ts.map +1 -1
  90. package/dist/internals.js +78 -78
  91. package/dist/internals.js.br +0 -0
  92. package/dist/internals.js.gz +0 -0
  93. package/dist/internals.mjs +3 -3
  94. package/dist/internals.mjs.br +0 -0
  95. package/dist/internals.mjs.gz +0 -0
  96. package/dist/pptx-viewer.css +1 -1
  97. package/dist/pptx-viewer.css.br +0 -0
  98. package/dist/pptx-viewer.css.gz +0 -0
  99. package/dist/viewer/index.d.ts +139 -3
  100. package/dist/viewer/index.js +26 -26
  101. package/dist/viewer/index.js.br +0 -0
  102. package/dist/viewer/index.js.gz +0 -0
  103. package/dist/viewer/index.mjs +5 -5
  104. package/dist/viewer/index.mjs.br +0 -0
  105. package/dist/viewer/index.mjs.gz +0 -0
  106. package/package.json +2 -2
  107. package/dist/AiChatPanel-4EYZDQXM.js.br +0 -0
  108. package/dist/AiChatPanel-4EYZDQXM.js.gz +0 -0
  109. package/dist/AiChatPanel-UCFQIWOQ.mjs.br +0 -0
  110. package/dist/AiChatPanel-UCFQIWOQ.mjs.gz +0 -0
  111. package/dist/Area3DChartScene-PMYXO4MR.mjs.br +0 -0
  112. package/dist/Area3DChartScene-PMYXO4MR.mjs.gz +0 -0
  113. package/dist/Area3DChartScene-YBMC6NKY.js.br +0 -0
  114. package/dist/Area3DChartScene-YBMC6NKY.js.gz +0 -0
  115. package/dist/Bar3DChartScene-75DCA2ZA.js.br +0 -0
  116. package/dist/Bar3DChartScene-75DCA2ZA.js.gz +0 -0
  117. package/dist/Bar3DChartScene-CEOI6SU6.mjs.br +0 -0
  118. package/dist/Bar3DChartScene-CEOI6SU6.mjs.gz +0 -0
  119. package/dist/Line3DChartScene-EZZKWUZR.mjs.br +0 -0
  120. package/dist/Line3DChartScene-EZZKWUZR.mjs.gz +0 -0
  121. package/dist/Line3DChartScene-STGX6N6V.js.br +0 -0
  122. package/dist/Line3DChartScene-STGX6N6V.js.gz +0 -0
  123. package/dist/Model3DScene-DWRD63FH.js.br +0 -0
  124. package/dist/Model3DScene-DWRD63FH.js.gz +0 -0
  125. package/dist/Model3DScene-FGQJKWL6.mjs.br +0 -0
  126. package/dist/Model3DScene-FGQJKWL6.mjs.gz +0 -0
  127. package/dist/PieChart3DScene-DH6RSJO6.mjs.br +0 -0
  128. package/dist/PieChart3DScene-DH6RSJO6.mjs.gz +0 -0
  129. package/dist/PieChart3DScene-R3Y7OVVO.js.br +0 -0
  130. package/dist/PieChart3DScene-R3Y7OVVO.js.gz +0 -0
  131. package/dist/SurfaceChart3DScene-BMBU5RKI.mjs.br +0 -0
  132. package/dist/SurfaceChart3DScene-BMBU5RKI.mjs.gz +0 -0
  133. package/dist/SurfaceChart3DScene-UM5HA3VO.js.br +0 -0
  134. package/dist/SurfaceChart3DScene-UM5HA3VO.js.gz +0 -0
  135. package/dist/chunk-2HLDBQH7.js.br +0 -0
  136. package/dist/chunk-2HLDBQH7.js.gz +0 -0
  137. package/dist/chunk-4VVOTEQ4.mjs.br +0 -0
  138. package/dist/chunk-4VVOTEQ4.mjs.gz +0 -0
  139. package/dist/chunk-7ZQ2FZXE.js.br +0 -0
  140. package/dist/chunk-7ZQ2FZXE.js.gz +0 -0
  141. package/dist/chunk-MQEG5GOV.js.br +0 -0
  142. package/dist/chunk-MQEG5GOV.js.gz +0 -0
  143. package/dist/chunk-O5DKWJDK.mjs.br +0 -0
  144. package/dist/chunk-O5DKWJDK.mjs.gz +0 -0
  145. package/dist/chunk-S546O4W2.mjs.br +0 -0
  146. package/dist/chunk-S546O4W2.mjs.gz +0 -0
  147. package/dist/chunk-VLLZ3QL2.mjs.br +0 -0
  148. package/dist/chunk-VLLZ3QL2.mjs.gz +0 -0
  149. package/dist/chunk-W3J6SNVE.mjs.br +0 -0
  150. package/dist/chunk-W3J6SNVE.mjs.gz +0 -0
  151. package/dist/chunk-WVIKFMNS.js.br +0 -0
  152. package/dist/chunk-WVIKFMNS.js.gz +0 -0
  153. package/dist/chunk-YNUYFR2T.js.br +0 -0
  154. package/dist/chunk-YNUYFR2T.js.gz +0 -0
@@ -1,8 +1,8 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-O5DKWJDK.mjs';
2
- import { useViewerOptions, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP } from './chunk-4VVOTEQ4.mjs';
3
- import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-W3J6SNVE.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-QOLYY7E3.mjs';
2
+ import { useViewerOptions, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP } from './chunk-A2UAUSJM.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-BPWSJLLG.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, 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, isWedgeCalloutPresetShape, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, shouldClearAutosaveCacheOnClose, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, buildChromeStyle, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, generateNibMarks, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, 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, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_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, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, toggleSheet, 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, buildFontCatalog, 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, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, 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, 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, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, CHART_TYPE_OPTIONS, 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, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-XIHK52SB.mjs';
4
5
  import { LOCALE_CATALOG, translationsEn } from './chunk-ARJE3V6V.mjs';
5
- 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, 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, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, shouldClearAutosaveCacheOnClose, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, buildChromeStyle, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, generateNibMarks, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, 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, clampPercent, 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, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_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, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, toggleSheet, 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, buildFontCatalog, 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, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, 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, 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, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, CHART_TYPE_OPTIONS, 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, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-S546O4W2.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';
@@ -68,7 +68,11 @@ function RemoteUserCursors({
68
68
  children: visibleUsers.map((user) => /* @__PURE__ */ jsxs(
69
69
  "g",
70
70
  {
71
- transform: `translate(${user.cursorX}, ${user.cursorY})`,
71
+ style: {
72
+ transform: `translate(${user.cursorX}px, ${user.cursorY}px)`,
73
+ transition: "transform 90ms linear",
74
+ willChange: "transform"
75
+ },
72
76
  "data-testid": `remote-cursor-${user.clientId}`,
73
77
  "data-pptx-remote-cursor": user.clientId,
74
78
  children: [
@@ -510,7 +514,7 @@ function FailedToLoad() {
510
514
  var LazyArea3DChartScene = React19.lazy(
511
515
  async () => {
512
516
  try {
513
- return await import('./Area3DChartScene-PMYXO4MR.mjs');
517
+ return await import('./Area3DChartScene-7PHPDOTG.mjs');
514
518
  } catch {
515
519
  return { default: FailedToLoad };
516
520
  }
@@ -566,7 +570,7 @@ function FailedToLoad2() {
566
570
  var LazyBar3DChartScene = React19.lazy(
567
571
  async () => {
568
572
  try {
569
- return await import('./Bar3DChartScene-CEOI6SU6.mjs');
573
+ return await import('./Bar3DChartScene-BLPUHYRZ.mjs');
570
574
  } catch {
571
575
  return { default: FailedToLoad2 };
572
576
  }
@@ -622,7 +626,7 @@ function FailedToLoad3() {
622
626
  var LazyLine3DChartScene = React19.lazy(
623
627
  async () => {
624
628
  try {
625
- return await import('./Line3DChartScene-EZZKWUZR.mjs');
629
+ return await import('./Line3DChartScene-L5B4YFG3.mjs');
626
630
  } catch {
627
631
  return { default: FailedToLoad3 };
628
632
  }
@@ -678,7 +682,7 @@ function FailedToLoad4() {
678
682
  var LazyPieChart3DScene = React19.lazy(
679
683
  async () => {
680
684
  try {
681
- return await import('./PieChart3DScene-DH6RSJO6.mjs');
685
+ return await import('./PieChart3DScene-XXAIVP4I.mjs');
682
686
  } catch {
683
687
  return { default: FailedToLoad4 };
684
688
  }
@@ -734,7 +738,7 @@ function FailedToLoad5() {
734
738
  var LazySurfaceChart3DScene = React19.lazy(
735
739
  async () => {
736
740
  try {
737
- return await import('./SurfaceChart3DScene-BMBU5RKI.mjs');
741
+ return await import('./SurfaceChart3DScene-CRUGJSCY.mjs');
738
742
  } catch {
739
743
  return { default: FailedToLoad5 };
740
744
  }
@@ -1811,10 +1815,11 @@ function getContainerStyle({
1811
1815
  templateEditing
1812
1816
  }) {
1813
1817
  const ss = hasShapeProperties(el) ? el.shapeStyle : void 0;
1818
+ const isPicture = el.type === "picture" || el.type === "image";
1814
1819
  const blurGrowVisible = Boolean(
1815
1820
  ss?.blurGrow && typeof ss.blurRadius === "number" && ss.blurRadius > 0
1816
1821
  );
1817
- const overflowValue = has3DExtrusion || blurGrowVisible ? "visible" : isImg ? "hidden" : void 0;
1822
+ const overflowValue = has3DExtrusion || blurGrowVisible || isPicture ? "visible" : isImg || el.type === "media" ? "hidden" : void 0;
1818
1823
  return {
1819
1824
  left: isFullscreenMedia ? 0 : el.x,
1820
1825
  top: isFullscreenMedia ? 0 : el.y,
@@ -1823,7 +1828,7 @@ function getContainerStyle({
1823
1828
  transform: isFullscreenMedia ? "none" : getElementTransform(el),
1824
1829
  transformOrigin: "center",
1825
1830
  overflow: overflowValue,
1826
- clipPath: isImg && !has3DExtrusion ? getCropShapeClipPath(el) : void 0,
1831
+ clipPath: isPicture ? void 0 : isImg && !has3DExtrusion ? getCropShapeClipPath(el) : void 0,
1827
1832
  zIndex: isFullscreenMedia ? 20 : zIndex,
1828
1833
  visibility: animationState?.visible === false ? "hidden" : "visible",
1829
1834
  animation: animationState?.cssAnimation,
@@ -1831,6 +1836,16 @@ function getContainerStyle({
1831
1836
  transition: isFullscreenMedia ? "left 0.3s ease, top 0.3s ease, width 0.3s ease, height 0.3s ease" : void 0,
1832
1837
  borderColor: isFullscreenMedia ? "transparent" : void 0,
1833
1838
  ...shapeVisualStyle,
1839
+ ...isPicture ? {
1840
+ backgroundColor: "transparent",
1841
+ backgroundImage: void 0,
1842
+ backgroundRepeat: void 0,
1843
+ backgroundSize: void 0,
1844
+ backgroundPosition: void 0,
1845
+ borderRadius: void 0,
1846
+ clipPath: void 0,
1847
+ overflow: "visible"
1848
+ } : {},
1834
1849
  // COMPOSE the effect alpha (`a:alphaModFix` on the effect DAG) with the
1835
1850
  // element opacity instead of letting the spread clobber it. The other four
1836
1851
  // bindings multiply the two; React spread the shape style over its own
@@ -1934,7 +1949,9 @@ function renderOutlinePaint(paint) {
1934
1949
  return /* @__PURE__ */ jsx("linearGradient", { id: paint.id, x1: paint.x1, y1: paint.y1, x2: paint.x2, y2: paint.y2, children: stops });
1935
1950
  }
1936
1951
  function ShapeEffectOverlay({
1937
- element
1952
+ element,
1953
+ animatesFill = false,
1954
+ animatesStroke = false
1938
1955
  }) {
1939
1956
  if (!hasShapeProperties(element)) {
1940
1957
  return null;
@@ -1954,6 +1971,7 @@ function ShapeEffectOverlay({
1954
1971
  const fillOverlayStyle = overlay ? {
1955
1972
  position: "absolute",
1956
1973
  inset: 0,
1974
+ ...isImageLikeElement(element) ? getImageSurfaceMaskStyle(element) : {},
1957
1975
  background: overlay.color,
1958
1976
  mixBlendMode: overlay.blendMode,
1959
1977
  pointerEvents: "none"
@@ -1966,8 +1984,21 @@ function ShapeEffectOverlay({
1966
1984
  "aria-hidden": "true",
1967
1985
  viewBox: `0 0 ${subpathFill.viewBoxWidth} ${subpathFill.viewBoxHeight}`,
1968
1986
  preserveAspectRatio: "none",
1969
- style: { position: "absolute", inset: 0, width: "100%", height: "100%" },
1970
- children: subpathFill.paints.map((paint, idx) => /* @__PURE__ */ jsx("path", { d: paint.d, fill: paint.fill, stroke: "none" }, idx))
1987
+ style: {
1988
+ position: "absolute",
1989
+ inset: 0,
1990
+ width: "100%",
1991
+ height: "100%"
1992
+ },
1993
+ children: subpathFill.paints.map((paint, idx) => /* @__PURE__ */ jsx(
1994
+ "path",
1995
+ {
1996
+ d: paint.d,
1997
+ fill: animatesFill ? "inherit" : paint.fill,
1998
+ stroke: "none"
1999
+ },
2000
+ idx
2001
+ ))
1971
2002
  }
1972
2003
  ) : null,
1973
2004
  softEdge ? /* @__PURE__ */ jsx(
@@ -1976,7 +2007,12 @@ function ShapeEffectOverlay({
1976
2007
  width: 0,
1977
2008
  height: 0,
1978
2009
  "aria-hidden": "true",
1979
- style: { position: "absolute", width: 0, height: 0, overflow: "hidden" },
2010
+ style: {
2011
+ position: "absolute",
2012
+ width: 0,
2013
+ height: 0,
2014
+ overflow: "hidden"
2015
+ },
1980
2016
  children: /* @__PURE__ */ jsx("defs", { dangerouslySetInnerHTML: { __html: softEdge.filterMarkup } })
1981
2017
  }
1982
2018
  ) : null,
@@ -2003,7 +2039,7 @@ function ShapeEffectOverlay({
2003
2039
  {
2004
2040
  d: strokeOutline.d,
2005
2041
  fill: "none",
2006
- stroke: strokeOutline.stroke,
2042
+ stroke: animatesStroke ? "inherit" : strokeOutline.stroke,
2007
2043
  strokeWidth: strand.strokeWidth,
2008
2044
  strokeDasharray: strokeOutline.dashArray,
2009
2045
  strokeLinecap: strokeOutline.lineCap,
@@ -2048,12 +2084,23 @@ function ShapeEffectOverlay({
2048
2084
  "aria-hidden": "true",
2049
2085
  style: reflection,
2050
2086
  children: reflectionImgSrc ? /* @__PURE__ */ jsx(
2051
- "img",
2087
+ "div",
2052
2088
  {
2053
- src: reflectionImgSrc,
2054
- alt: "",
2055
- draggable: false,
2056
- style: { width: "100%", height: "100%", ...getImageRenderStyle(element) }
2089
+ className: "pptx-react-reflection-picture-surface",
2090
+ style: getImageSurfaceStyle(element),
2091
+ children: /* @__PURE__ */ jsx(
2092
+ "img",
2093
+ {
2094
+ src: reflectionImgSrc,
2095
+ alt: "",
2096
+ draggable: false,
2097
+ style: {
2098
+ width: "100%",
2099
+ height: "100%",
2100
+ ...getImageRenderStyle(element)
2101
+ }
2102
+ }
2103
+ )
2057
2104
  }
2058
2105
  ) : reflectionFill ? /* @__PURE__ */ jsx(
2059
2106
  "div",
@@ -2134,6 +2181,8 @@ var ElementRenderer = React19.memo(
2134
2181
  const chartUpdateHandler = smartArtUpdateHandler;
2135
2182
  const { hf, fc, sw, sc } = shapeParams(el);
2136
2183
  const allow = resolveElementInteractivity(el);
2184
+ const backgroundAnimationState = presentationElementStates?.get(`${el.id}::pptx-bg`);
2185
+ const visualAnimationState = backgroundAnimationState ?? animationState;
2137
2186
  const isTxt = isEditableTextElement(el) && allow.textEditable;
2138
2187
  const txtSE = hasTextProperties(el) ? el.textStyle : void 0;
2139
2188
  const ss = getShapeVisualStyle(
@@ -2142,20 +2191,20 @@ var ElementRenderer = React19.memo(
2142
2191
  fc,
2143
2192
  sw,
2144
2193
  sc,
2145
- animationState?.animatesFill,
2146
- animationState?.animatesStroke
2194
+ visualAnimationState?.animatesFill,
2195
+ visualAnimationState?.animatesStroke
2147
2196
  );
2148
2197
  const ts = getTextStyleForElement(el, DEFAULT_TEXT_COLOR);
2198
+ const isImg = el.type === "picture" || el.type === "image";
2149
2199
  const vs = renderVectorShape(
2150
2200
  el,
2151
- hf,
2201
+ isImg ? false : hf,
2152
2202
  fc,
2153
2203
  sw,
2154
2204
  sc,
2155
- animationState?.animatesFill,
2156
- animationState?.animatesStroke
2205
+ visualAnimationState?.animatesFill,
2206
+ visualAnimationState?.animatesStroke
2157
2207
  );
2158
- const isImg = el.type === "picture" || el.type === "image";
2159
2208
  const isModel3D = el.type === "model3d";
2160
2209
  const isConn = isConnectorOrLineElement(el);
2161
2210
  const shapeStyle3d = hasShapeProperties(el) ? el.shapeStyle : void 0;
@@ -2203,7 +2252,7 @@ var ElementRenderer = React19.memo(
2203
2252
  });
2204
2253
  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" : "";
2205
2254
  const cur = effectiveIsInlineEditing ? "cursor-text" : effectiveCanInteract ? !allow.movable ? "cursor-default" : "cursor-move" : hasAction || isZoom ? "cursor-pointer" : "";
2206
- const isPresentationPassive = !effectiveCanInteract;
2255
+ const isPresentationPassive = presenting === true;
2207
2256
  const isFullscreenMedia = el.type === "media" && Boolean(el.fullScreen) && isPresentationPassive && isMediaPlaying;
2208
2257
  const ariaRole = getAriaRole(el, { actionable: isActionable });
2209
2258
  const ariaLabel = getAriaLabel(el);
@@ -2263,15 +2312,50 @@ var ElementRenderer = React19.memo(
2263
2312
  zIndex,
2264
2313
  opacity,
2265
2314
  animationState,
2266
- shapeVisualStyle: ss,
2315
+ shapeVisualStyle: backgroundAnimationState ? {} : ss,
2267
2316
  has3DExtrusion: extrusionData.hasExtrusion,
2268
2317
  templateEditing
2269
2318
  }),
2270
2319
  ...interactionProps,
2271
2320
  children: [
2272
2321
  renderDagDuotoneFilterForElement(el),
2273
- /* @__PURE__ */ jsx(ShapeEffectOverlay, { element: el }),
2274
- extrusionData.hasExtrusion && /* @__PURE__ */ jsx(Extrusion3DOverlay, { data: extrusionData }),
2322
+ backgroundAnimationState ? /* @__PURE__ */ jsxs(
2323
+ "div",
2324
+ {
2325
+ "data-pptx-animation-layer": "background",
2326
+ style: {
2327
+ ...ss,
2328
+ position: "absolute",
2329
+ inset: 0,
2330
+ transformOrigin: "center",
2331
+ visibility: backgroundAnimationState.visible === false ? "hidden" : "visible",
2332
+ animation: backgroundAnimationState.cssAnimation,
2333
+ pointerEvents: "none"
2334
+ },
2335
+ children: [
2336
+ /* @__PURE__ */ jsx(
2337
+ ShapeEffectOverlay,
2338
+ {
2339
+ element: el,
2340
+ animatesFill: visualAnimationState?.animatesFill,
2341
+ animatesStroke: visualAnimationState?.animatesStroke
2342
+ }
2343
+ ),
2344
+ extrusionData.hasExtrusion && /* @__PURE__ */ jsx(Extrusion3DOverlay, { data: extrusionData }),
2345
+ isImg ? null : vs
2346
+ ]
2347
+ }
2348
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
2349
+ /* @__PURE__ */ jsx(
2350
+ ShapeEffectOverlay,
2351
+ {
2352
+ element: el,
2353
+ animatesFill: visualAnimationState?.animatesFill,
2354
+ animatesStroke: visualAnimationState?.animatesStroke
2355
+ }
2356
+ ),
2357
+ extrusionData.hasExtrusion && /* @__PURE__ */ jsx(Extrusion3DOverlay, { data: extrusionData })
2358
+ ] }),
2275
2359
  renderBody({
2276
2360
  el,
2277
2361
  isImg,
@@ -2280,7 +2364,7 @@ var ElementRenderer = React19.memo(
2280
2364
  spellCheck: spellCheckEnabled,
2281
2365
  txtSE,
2282
2366
  txtS: ts,
2283
- vecShape: vs,
2367
+ vecShape: backgroundAnimationState && !isImg ? null : vs,
2284
2368
  imgStyle: getImageRenderStyle(el),
2285
2369
  imgFilter: getImageEffectsFilter(el),
2286
2370
  imgOpacity: getImageEffectsOpacity(el),
@@ -2435,10 +2519,10 @@ function renderGroup(children, parentGroupFill) {
2435
2519
  backgroundSize: inheritedFill.backgroundSize,
2436
2520
  backgroundPosition: inheritedFill.backgroundPosition
2437
2521
  } : baseSs;
2438
- const vs = renderVectorShape(c, hf, fc, sw, sc);
2522
+ const isI = c.type === "picture" || c.type === "image";
2523
+ const vs = renderVectorShape(c, isI ? false : hf, fc, sw, sc);
2439
2524
  const ts = getTextStyleForElement(c, DEFAULT_TEXT_COLOR);
2440
2525
  const isTxt = isEditableTextElement(c);
2441
- const isI = c.type === "picture" || c.type === "image";
2442
2526
  return /* @__PURE__ */ jsxs(
2443
2527
  "div",
2444
2528
  {
@@ -2451,9 +2535,17 @@ function renderGroup(children, parentGroupFill) {
2451
2535
  height: Math.max(c.height, MIN_ELEMENT_SIZE),
2452
2536
  transform: getElementTransform(c),
2453
2537
  transformOrigin: "center",
2454
- overflow: isI ? "hidden" : void 0,
2455
- clipPath: isI ? getCropShapeClipPath(c) : void 0,
2456
2538
  ...ss,
2539
+ ...isI ? {
2540
+ backgroundColor: "transparent",
2541
+ backgroundImage: void 0,
2542
+ backgroundRepeat: void 0,
2543
+ backgroundSize: void 0,
2544
+ backgroundPosition: void 0,
2545
+ borderRadius: void 0,
2546
+ clipPath: void 0,
2547
+ overflow: "visible"
2548
+ } : {},
2457
2549
  // Explicit z-index preserves document order stacking within the
2458
2550
  // group: later children in the array (= later in p:grpSp XML)
2459
2551
  // render on top, matching PowerPoint's painter's algorithm.
@@ -2466,22 +2558,25 @@ function renderGroup(children, parentGroupFill) {
2466
2558
  // A nested group: recurse, chaining the inherited fill so a
2467
2559
  // `grpFill` shape under a fill-less sub-group still paints.
2468
2560
  renderGroup(c.children, getGroupChildParentFill(c, parentGroupFill))
2469
- ) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? isImageTiled(c) ? /* @__PURE__ */ jsx(
2470
- "div",
2471
- {
2472
- className: "pointer-events-none select-none w-full h-full",
2473
- style: getImageTilingStyle(c)
2474
- }
2475
- ) : /* @__PURE__ */ jsx(
2476
- "img",
2477
- {
2478
- src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
2479
- alt: translationsEn["pptx.ink.groupChildAlt"],
2480
- className: "pointer-events-none select-none",
2481
- style: getImageRenderStyle(c),
2482
- draggable: false
2483
- }
2484
- ) : /* @__PURE__ */ jsxs(Fragment, { children: [
2561
+ ) : isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 pointer-events-none", style: getImageSurfaceStyle(c), children: [
2562
+ isImageTiled(c) ? /* @__PURE__ */ jsx(
2563
+ "div",
2564
+ {
2565
+ className: "pointer-events-none select-none w-full h-full",
2566
+ style: getImageTilingStyle(c)
2567
+ }
2568
+ ) : /* @__PURE__ */ jsx(
2569
+ "img",
2570
+ {
2571
+ src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
2572
+ alt: translationsEn["pptx.ink.groupChildAlt"],
2573
+ className: "pointer-events-none select-none",
2574
+ style: getImageRenderStyle(c),
2575
+ draggable: false
2576
+ }
2577
+ ),
2578
+ vs ? /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0", children: vs }) : null
2579
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
2485
2580
  vs,
2486
2581
  isTxt ? /* @__PURE__ */ jsx(
2487
2582
  "div",
@@ -2923,7 +3018,7 @@ function FailedToLoad6() {
2923
3018
  var LazyModel3DScene = React19.lazy(
2924
3019
  async () => {
2925
3020
  try {
2926
- return await import('./Model3DScene-FGQJKWL6.mjs');
3021
+ return await import('./Model3DScene-6TNWS5LV.mjs');
2927
3022
  } catch {
2928
3023
  return { default: FailedToLoad6 };
2929
3024
  }
@@ -3514,6 +3609,7 @@ function SmartArtNodeText({
3514
3609
  fontSize,
3515
3610
  fontWeight,
3516
3611
  fontStyle,
3612
+ fontFamily,
3517
3613
  className,
3518
3614
  textAnchor = "middle",
3519
3615
  anchor = "middle",
@@ -3530,6 +3626,7 @@ function SmartArtNodeText({
3530
3626
  fontSize,
3531
3627
  fontWeight,
3532
3628
  fontStyle,
3629
+ fontFamily,
3533
3630
  className,
3534
3631
  children: positionedLines.map((line, i) => /* @__PURE__ */ jsx("tspan", { x, y: line.y, children: line.text }, i))
3535
3632
  }
@@ -3560,6 +3657,7 @@ function SmartArtNodeText({
3560
3657
  fontSize,
3561
3658
  fontWeight,
3562
3659
  fontStyle,
3660
+ fontFamily,
3563
3661
  className,
3564
3662
  children: lines.map((line, i) => /* @__PURE__ */ jsx("tspan", { x, y: startY + i * lineHeight, children: line }, i))
3565
3663
  }
@@ -3614,15 +3712,15 @@ function shapeBody(shape) {
3614
3712
  transform: shape.transform
3615
3713
  }
3616
3714
  );
3617
- case "polygon":
3715
+ case "path":
3618
3716
  return /* @__PURE__ */ jsx(
3619
- "polygon",
3717
+ "path",
3620
3718
  {
3621
- points: shape.points,
3719
+ d: shape.pathData,
3622
3720
  fill: shape.fill,
3623
3721
  stroke: shape.stroke,
3624
3722
  strokeWidth: shape.strokeWidth,
3625
- transform: shape.transform
3723
+ transform: shape.pathTransform
3626
3724
  }
3627
3725
  );
3628
3726
  default:
@@ -3676,6 +3774,9 @@ function DrawingShapeRenderer({
3676
3774
  lines: shape.textLines,
3677
3775
  fill: shape.fontColor,
3678
3776
  fontSize: shape.fontSize,
3777
+ fontFamily: shape.fontFamily,
3778
+ fontWeight: shape.fontWeight,
3779
+ fontStyle: shape.fontStyle,
3679
3780
  className: "pointer-events-none"
3680
3781
  }
3681
3782
  ) : null
@@ -4640,7 +4741,10 @@ function renderBody(options) {
4640
4741
  );
4641
4742
  }
4642
4743
  if (isImg) {
4643
- return renderImg(el, imgStyle, imgFilter, imgAlt, imgOpacity);
4744
+ return /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 pointer-events-none", style: getImageSurfaceStyle(el), children: [
4745
+ renderImg(el, imgStyle, imgFilter, imgAlt, imgOpacity),
4746
+ vecShape ? /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0", children: vecShape }) : null
4747
+ ] });
4644
4748
  }
4645
4749
  if (isEditing) {
4646
4750
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -4699,7 +4803,7 @@ function renderBody(options) {
4699
4803
  }
4700
4804
  if (el.type === "media") {
4701
4805
  return renderMediaElement(el, media, {
4702
- autoPlay: isPresentationPassive,
4806
+ autoPlay: isPresentationPassive && el.autoPlay === true,
4703
4807
  fullScreen: isPresentationPassive && Boolean(el.fullScreen),
4704
4808
  isPresentationMode: isPresentationPassive,
4705
4809
  // A still of a slide never carries a transport, whatever the canvas
@@ -4741,6 +4845,15 @@ function renderBody(options) {
4741
4845
  var noop = () => {
4742
4846
  };
4743
4847
  var EMPTY_MEDIA_DATA_URLS = /* @__PURE__ */ new Map();
4848
+ function defaultTextColorForFill(fillColor) {
4849
+ const hex = String(fillColor ?? "").replace(/^#/u, "");
4850
+ if (!/^[0-9a-f]{6}$/iu.test(hex)) {
4851
+ return DEFAULT_TEXT_COLOR;
4852
+ }
4853
+ const channels = [0, 2, 4].map((offset) => Number.parseInt(hex.slice(offset, offset + 2), 16) / 255).map((channel) => channel <= 0.04045 ? channel / 12.92 : ((channel + 0.055) / 1.055) ** 2.4);
4854
+ const luminance = channels[0] * 0.2126 + channels[1] * 0.7152 + channels[2] * 0.0722;
4855
+ return luminance > 0.179 ? DEFAULT_TEXT_COLOR : "#ffffff";
4856
+ }
4744
4857
  function StaticElementRendererImpl({
4745
4858
  element,
4746
4859
  activeSlide,
@@ -4778,9 +4891,12 @@ function StaticElementRendererImpl({
4778
4891
  } : baseVisualStyle;
4779
4892
  const textStyle = getTextStyleForElement(
4780
4893
  element,
4781
- element.type === "shape" && hasFill ? "#ffffff" : DEFAULT_TEXT_COLOR
4894
+ element.type === "shape" && hasFill ? defaultTextColorForFill(fill) : DEFAULT_TEXT_COLOR
4782
4895
  );
4783
4896
  const isImage = element.type === "picture" || element.type === "image";
4897
+ const letsTextOverflow = hasTextProperties(element) && element.textStyle?.autoFitMode === "shrink" && (element.type === "text" || element.locks?.txBox === true);
4898
+ const shapeType = hasShapeProperties(element) ? element.shapeType : void 0;
4899
+ const isCallout = isWedgeCalloutPresetShape(shapeType) || String(shapeType ?? "").toLowerCase().includes("callout");
4784
4900
  const action = element.actionClick;
4785
4901
  const isActionable = Boolean(action && onActionClick);
4786
4902
  const contractRole = exposeElementId ? getAriaRole(element, { actionable: isElementActionable(element) }) : isActionable ? "button" : void 0;
@@ -4791,7 +4907,7 @@ function StaticElementRendererImpl({
4791
4907
  "data-element-id": exposeElementId ? element.id : void 0,
4792
4908
  "data-pptx-element": exposeElementId ? "true" : void 0,
4793
4909
  "data-pptx-action": isActionable ? "click" : void 0,
4794
- className: `${positioned ? "absolute" : "relative"} ${isConnectorOrLineElement(element) ? "" : "overflow-hidden"} ${isActionable ? "pointer-events-auto cursor-pointer" : "pointer-events-none"}`,
4910
+ className: `${positioned ? "absolute" : "relative"} ${isImage || element.type === "group" || isConnectorOrLineElement(element) || isCallout || letsTextOverflow ? "" : "overflow-hidden"} ${isActionable ? "pointer-events-auto cursor-pointer" : "pointer-events-none"}`,
4795
4911
  role: contractRole,
4796
4912
  "aria-label": exposeElementId ? getAriaLabel(element) : void 0,
4797
4913
  "aria-roledescription": exposeElementId ? getAriaRoleDescription(element) : void 0,
@@ -4822,6 +4938,16 @@ function StaticElementRendererImpl({
4822
4938
  transformOrigin: "center",
4823
4939
  zIndex,
4824
4940
  ...visualStyle,
4941
+ ...isImage ? {
4942
+ backgroundColor: "transparent",
4943
+ backgroundImage: void 0,
4944
+ backgroundRepeat: void 0,
4945
+ backgroundSize: void 0,
4946
+ backgroundPosition: void 0,
4947
+ borderRadius: void 0,
4948
+ clipPath: void 0,
4949
+ overflow: "visible"
4950
+ } : {},
4825
4951
  animation
4826
4952
  },
4827
4953
  children: [
@@ -4851,7 +4977,13 @@ function StaticElementRendererImpl({
4851
4977
  spellCheck: false,
4852
4978
  txtSE: hasTextProperties(element) ? element.textStyle : void 0,
4853
4979
  txtS: textStyle,
4854
- vecShape: renderVectorShape(element, hasFill, fill, strokeWidth, stroke),
4980
+ vecShape: renderVectorShape(
4981
+ element,
4982
+ isImage ? false : hasFill,
4983
+ fill,
4984
+ strokeWidth,
4985
+ stroke
4986
+ ),
4855
4987
  imgStyle: imageAnimation ? { ...getImageRenderStyle(element), animation: imageAnimation } : getImageRenderStyle(element),
4856
4988
  imgFilter: getImageEffectsFilter(element),
4857
4989
  imgOpacity: getImageEffectsOpacity(element),
@@ -6153,7 +6285,7 @@ function AccountPage() {
6153
6285
  return void 0;
6154
6286
  });
6155
6287
  };
6156
- const version = "3.1.1" ;
6288
+ const version = "3.1.3" ;
6157
6289
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
6158
6290
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
6159
6291
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -10343,7 +10475,19 @@ function Toolbar(p) {
10343
10475
  "div",
10344
10476
  {
10345
10477
  className: cn(
10346
- "flex min-h-[82px] items-center gap-0 overflow-x-auto px-1 py-0.5 max-md:min-h-0 max-md:px-1 max-md:py-0.5 flex-nowrap [&>*]:shrink-0",
10478
+ /*
10479
+ * `items-stretch` (not `items-center`): `RibbonGroup` pins its
10480
+ * caption to `bottom-0.5` of ITS OWN box (`position: relative`), so
10481
+ * a group left at its un-stretched intrinsic height sits centered in
10482
+ * the row with its caption floating well above the row's true bottom
10483
+ * edge whenever a taller sibling sets the row's height (e.g. View's
10484
+ * five-row "Show" group next to its two-row "Zoom" group). Stretching
10485
+ * every direct child to the row's full height lines up every group's
10486
+ * caption and right-hand divider at the same baseline. File's
10487
+ * backstage is unaffected: it renders `position: fixed`, outside this
10488
+ * row's flex layout entirely.
10489
+ */
10490
+ "flex min-h-[82px] items-stretch gap-0 overflow-x-auto px-1 py-0.5 max-md:min-h-0 max-md:px-1 max-md:py-0.5 flex-nowrap [&>*]:shrink-0",
10347
10491
  isNarrowViewport && !isCompactToolbarOpen && "hidden"
10348
10492
  ),
10349
10493
  children: [
@@ -10624,7 +10768,7 @@ function getReactSlideBackgroundStyle(slide) {
10624
10768
  const style = getSlideBackgroundStyle(slide);
10625
10769
  return {
10626
10770
  backgroundColor: style["background-color"],
10627
- backgroundImage: style["background-image"],
10771
+ backgroundImage: slide?.backgroundImage ? void 0 : style["background-image"],
10628
10772
  backgroundSize: style["background-size"],
10629
10773
  backgroundRepeat: style["background-repeat"]
10630
10774
  };
@@ -11438,6 +11582,17 @@ function SelectionHandleOverlay({
11438
11582
  top: element.y,
11439
11583
  width: Math.max(element.width, MIN_ELEMENT_SIZE),
11440
11584
  height: Math.max(element.height, MIN_ELEMENT_SIZE),
11585
+ // Every slide element carries an explicit numeric `zIndex` (see
11586
+ // `getContainerStyle`), so a sibling with no z-index at all paints
11587
+ // at the CSS "z-index: 0" level regardless of DOM order: any
11588
+ // element other than the very bottom one (index 0) then renders
11589
+ // ABOVE this host, hiding its own resize/rotate handles behind its
11590
+ // own fill (worst on a rotated shape, where the rotate knob
11591
+ // deliberately overlaps the box) and stealing their clicks. Pinned
11592
+ // above the stage's other interaction overlays
11593
+ // (marquee z-50, connector overlay z-55/56) to match, well clear of
11594
+ // any realistic per-slide element count.
11595
+ zIndex: 58,
11441
11596
  transform: getElementTransform(element),
11442
11597
  transformOrigin: "center",
11443
11598
  // Transparent everywhere a handle button is not, so a click that
@@ -12073,6 +12228,48 @@ function ActiveXControlOverlay({
12073
12228
  );
12074
12229
  }) });
12075
12230
  }
12231
+ function SlideBackgroundImageLayer({
12232
+ slide
12233
+ }) {
12234
+ if (!slide?.backgroundImage) {
12235
+ return null;
12236
+ }
12237
+ const properties = slide.backgroundImageProperties ?? {};
12238
+ const originalEffects = properties.imageEffects;
12239
+ const renderEffects = originalEffects ? { ...originalEffects } : void 0;
12240
+ if (renderEffects) {
12241
+ delete renderEffects.alphaModFix;
12242
+ delete renderEffects.alphaModFixRawXml;
12243
+ }
12244
+ const idPart = String(slide.id || "slide").replace(/[^A-Za-z0-9_-]/gu, "-");
12245
+ const backgroundElement = {
12246
+ id: `slide-background-${idPart}`,
12247
+ type: "picture",
12248
+ x: 0,
12249
+ y: 0,
12250
+ width: 1,
12251
+ height: 1,
12252
+ ...properties,
12253
+ imageData: slide.backgroundImage,
12254
+ imageEffects: renderEffects
12255
+ };
12256
+ const opacity = typeof originalEffects?.alphaModFix === "number" ? Math.max(0, Math.min(1, originalEffects.alphaModFix / 100)) : void 0;
12257
+ return /* @__PURE__ */ jsx(
12258
+ "div",
12259
+ {
12260
+ "aria-hidden": "true",
12261
+ className: "absolute inset-0 overflow-hidden pointer-events-none select-none",
12262
+ style: { zIndex: 0 },
12263
+ children: renderImg(
12264
+ backgroundElement,
12265
+ getImageRenderStyle(backgroundElement),
12266
+ getImageEffectsFilter(backgroundElement),
12267
+ "",
12268
+ opacity
12269
+ )
12270
+ }
12271
+ );
12272
+ }
12076
12273
  var EMPTY_ADJUSTMENT_HANDLES = [];
12077
12274
  function SlideCanvas({
12078
12275
  activeSlide,
@@ -12242,14 +12439,14 @@ function SlideCanvas({
12242
12439
  {
12243
12440
  ref: zoom.canvasViewportRef,
12244
12441
  "data-pptx-viewport": true,
12245
- className: "flex-1 overflow-auto relative",
12442
+ className: "flex-1 flex overflow-auto relative",
12246
12443
  style: { touchAction: "pan-x pan-y" },
12247
12444
  onMouseDown: handleViewportMouseDown,
12248
12445
  children: /* @__PURE__ */ jsxs(
12249
12446
  "div",
12250
12447
  {
12251
12448
  ref: zoom.editWrapperRef,
12252
- className: "relative mx-auto my-4",
12449
+ className: "relative m-auto",
12253
12450
  style: {
12254
12451
  width: canvasSize.width * zoom.editorScale + rulerOffset,
12255
12452
  height: canvasSize.height * zoom.editorScale + rulerOffset
@@ -12301,6 +12498,7 @@ function SlideCanvas({
12301
12498
  onPointerMove: handleStagePointerMove,
12302
12499
  onPointerUp: handleStagePointerUp,
12303
12500
  children: [
12501
+ /* @__PURE__ */ jsx(SlideBackgroundImageLayer, { slide: activeSlide }),
12304
12502
  presentationKeyframesCss && /* @__PURE__ */ jsx("style", { children: presentationKeyframesCss }),
12305
12503
  /* @__PURE__ */ jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
12306
12504
  /* @__PURE__ */ jsx(
@@ -12633,7 +12831,7 @@ function ExportProgressModal({
12633
12831
  if (!isOpen) {
12634
12832
  return null;
12635
12833
  }
12636
- const clampedProgress = clampPercent(progress);
12834
+ const clampedProgress = clampPercent2(progress);
12637
12835
  return /* @__PURE__ */ jsx(
12638
12836
  "div",
12639
12837
  {
@@ -12936,6 +13134,7 @@ function SlideThumbnailImpl({
12936
13134
  transformOrigin: "top left"
12937
13135
  },
12938
13136
  children: [
13137
+ /* @__PURE__ */ jsx(SlideBackgroundImageLayer, { slide }),
12939
13138
  slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsx(
12940
13139
  "div",
12941
13140
  {
@@ -30474,7 +30673,7 @@ function SlideLayer({ slide, templateElements, canvasSize }) {
30474
30673
  const safeWidth = Math.max(canvasSize.width, 1);
30475
30674
  const safeHeight = Math.max(canvasSize.height, 1);
30476
30675
  const elements = [...templateElements, ...slide.elements];
30477
- return /* @__PURE__ */ jsx(
30676
+ return /* @__PURE__ */ jsxs(
30478
30677
  "div",
30479
30678
  {
30480
30679
  className: "relative overflow-hidden",
@@ -30486,16 +30685,19 @@ function SlideLayer({ slide, templateElements, canvasSize }) {
30486
30685
  backgroundSize: slide.backgroundImage ? "cover" : void 0,
30487
30686
  backgroundPosition: slide.backgroundImage ? "center" : void 0
30488
30687
  },
30489
- children: elements.map((element, index) => /* @__PURE__ */ jsx(
30490
- StaticElementRenderer,
30491
- {
30492
- element,
30493
- activeSlide: slide,
30494
- allSlides: [slide],
30495
- zIndex: index
30496
- },
30497
- element.id
30498
- ))
30688
+ children: [
30689
+ /* @__PURE__ */ jsx(SlideBackgroundImageLayer, { slide }),
30690
+ elements.map((element, index) => /* @__PURE__ */ jsx(
30691
+ StaticElementRenderer,
30692
+ {
30693
+ element,
30694
+ activeSlide: slide,
30695
+ allSlides: [slide],
30696
+ zIndex: index
30697
+ },
30698
+ element.id
30699
+ ))
30700
+ ]
30499
30701
  }
30500
30702
  );
30501
30703
  }
@@ -34564,6 +34766,7 @@ function PresentationStage({
34564
34766
  ...getReactSlideBackgroundStyle(activeSlide)
34565
34767
  },
34566
34768
  children: [
34769
+ /* @__PURE__ */ jsx(SlideBackgroundImageLayer, { slide: activeSlide }),
34567
34770
  /* @__PURE__ */ jsx("style", { children: PRESENTATION_HIT_TEST_CSS }),
34568
34771
  presentationKeyframesCss && /* @__PURE__ */ jsx("style", { children: presentationKeyframesCss }),
34569
34772
  templateElements.map((element, index) => /* @__PURE__ */ jsx(
@@ -35193,7 +35396,7 @@ ${url}`)) {
35193
35396
  var AiChatPanel = lazy(async () => {
35194
35397
  const [{ useChat }, { default: Panel }] = await Promise.all([
35195
35398
  import('@ai-sdk/react'),
35196
- import('./AiChatPanel-UCFQIWOQ.mjs')
35399
+ import('./AiChatPanel-ITCVRVKP.mjs')
35197
35400
  ]);
35198
35401
  function BoundAiChatPanel(props) {
35199
35402
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });