pptx-react-viewer 3.1.5 → 3.3.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 (160) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/{AiChatPanel-ITCVRVKP.mjs → AiChatPanel-BNFDBP4S.mjs} +9 -8
  3. package/dist/AiChatPanel-BNFDBP4S.mjs.br +0 -0
  4. package/dist/AiChatPanel-BNFDBP4S.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-TO5PHBGW.js → AiChatPanel-WNQCTQB5.js} +29 -28
  6. package/dist/AiChatPanel-WNQCTQB5.js.br +0 -0
  7. package/dist/AiChatPanel-WNQCTQB5.js.gz +0 -0
  8. package/dist/{Area3DChartScene-2UNQ3J3V.js → Area3DChartScene-FXBSLIGX.js} +2 -2
  9. package/dist/Area3DChartScene-FXBSLIGX.js.br +0 -0
  10. package/dist/Area3DChartScene-FXBSLIGX.js.gz +0 -0
  11. package/dist/{Area3DChartScene-7PHPDOTG.mjs → Area3DChartScene-SAQVRYOH.mjs} +1 -1
  12. package/dist/Area3DChartScene-SAQVRYOH.mjs.br +0 -0
  13. package/dist/Area3DChartScene-SAQVRYOH.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-MC5S3AGT.js → Bar3DChartScene-7HVUTP2E.js} +2 -2
  15. package/dist/Bar3DChartScene-7HVUTP2E.js.br +0 -0
  16. package/dist/Bar3DChartScene-7HVUTP2E.js.gz +0 -0
  17. package/dist/{Bar3DChartScene-BLPUHYRZ.mjs → Bar3DChartScene-LUA6E2K6.mjs} +1 -1
  18. package/dist/Bar3DChartScene-LUA6E2K6.mjs.br +3 -0
  19. package/dist/Bar3DChartScene-LUA6E2K6.mjs.gz +0 -0
  20. package/dist/{Line3DChartScene-L5B4YFG3.mjs → Line3DChartScene-IW4JGH57.mjs} +1 -1
  21. package/dist/Line3DChartScene-IW4JGH57.mjs.br +0 -0
  22. package/dist/Line3DChartScene-IW4JGH57.mjs.gz +0 -0
  23. package/dist/{Line3DChartScene-JVVZRIDD.js → Line3DChartScene-OVPULUTF.js} +2 -2
  24. package/dist/Line3DChartScene-OVPULUTF.js.br +0 -0
  25. package/dist/Line3DChartScene-OVPULUTF.js.gz +0 -0
  26. package/dist/{Model3DScene-LRDNQNKJ.js → Model3DScene-5KP6BVCV.js} +2 -2
  27. package/dist/Model3DScene-5KP6BVCV.js.br +0 -0
  28. package/dist/Model3DScene-5KP6BVCV.js.gz +0 -0
  29. package/dist/{Model3DScene-6TNWS5LV.mjs → Model3DScene-BERTZYCJ.mjs} +1 -1
  30. package/dist/Model3DScene-BERTZYCJ.mjs.br +0 -0
  31. package/dist/Model3DScene-BERTZYCJ.mjs.gz +0 -0
  32. package/dist/{PieChart3DScene-PZWZCXHX.js → PieChart3DScene-3R2ETTGA.js} +2 -2
  33. package/dist/PieChart3DScene-3R2ETTGA.js.br +0 -0
  34. package/dist/PieChart3DScene-3R2ETTGA.js.gz +0 -0
  35. package/dist/{PieChart3DScene-XXAIVP4I.mjs → PieChart3DScene-O6FFK5L7.mjs} +1 -1
  36. package/dist/PieChart3DScene-O6FFK5L7.mjs.br +0 -0
  37. package/dist/PieChart3DScene-O6FFK5L7.mjs.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-CRUGJSCY.mjs → SurfaceChart3DScene-OCR26R5D.mjs} +1 -1
  39. package/dist/SurfaceChart3DScene-OCR26R5D.mjs.br +0 -0
  40. package/dist/SurfaceChart3DScene-OCR26R5D.mjs.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-UBQV3ZN2.js → SurfaceChart3DScene-TGFAOLHL.js} +2 -2
  42. package/dist/SurfaceChart3DScene-TGFAOLHL.js.br +0 -0
  43. package/dist/SurfaceChart3DScene-TGFAOLHL.js.gz +0 -0
  44. package/dist/{chunk-QOLYY7E3.mjs → chunk-2FTJAMFA.mjs} +300 -66
  45. package/dist/chunk-2FTJAMFA.mjs.br +0 -0
  46. package/dist/chunk-2FTJAMFA.mjs.gz +0 -0
  47. package/dist/{chunk-P3VXXUZM.mjs → chunk-3B5FRKYU.mjs} +137 -438
  48. package/dist/chunk-3B5FRKYU.mjs.br +0 -0
  49. package/dist/chunk-3B5FRKYU.mjs.gz +0 -0
  50. package/dist/{chunk-SWRY3SI5.js → chunk-3P7FYHJH.js} +47 -1
  51. package/dist/chunk-3P7FYHJH.js.br +0 -0
  52. package/dist/chunk-3P7FYHJH.js.gz +0 -0
  53. package/dist/{chunk-T2QG2HD5.js → chunk-44CQ67GQ.js} +173 -262
  54. package/dist/chunk-44CQ67GQ.js.br +0 -0
  55. package/dist/chunk-44CQ67GQ.js.gz +0 -0
  56. package/dist/{chunk-ARJE3V6V.mjs → chunk-AMRT3AE4.mjs} +47 -1
  57. package/dist/chunk-AMRT3AE4.mjs.br +0 -0
  58. package/dist/chunk-AMRT3AE4.mjs.gz +0 -0
  59. package/dist/{chunk-XIHK52SB.mjs → chunk-DM2IZCSD.mjs} +8499 -3404
  60. package/dist/chunk-DM2IZCSD.mjs.br +0 -0
  61. package/dist/chunk-DM2IZCSD.mjs.gz +0 -0
  62. package/dist/{chunk-LGVNUG3G.js → chunk-FSQCEAMG.js} +305 -68
  63. package/dist/chunk-FSQCEAMG.js.br +0 -0
  64. package/dist/chunk-FSQCEAMG.js.gz +0 -0
  65. package/dist/{chunk-LXYDXLKZ.js → chunk-GR6SJJIT.js} +463 -776
  66. package/dist/chunk-GR6SJJIT.js.br +0 -0
  67. package/dist/chunk-GR6SJJIT.js.gz +0 -0
  68. package/dist/{chunk-BPWSJLLG.mjs → chunk-ITN5NYYM.mjs} +10 -98
  69. package/dist/chunk-ITN5NYYM.mjs.br +0 -0
  70. package/dist/chunk-ITN5NYYM.mjs.gz +0 -0
  71. package/dist/{chunk-YDEEINER.js → chunk-K6R2JNCK.js} +8531 -3410
  72. package/dist/chunk-K6R2JNCK.js.br +0 -0
  73. package/dist/chunk-K6R2JNCK.js.gz +0 -0
  74. package/dist/{chunk-A2UAUSJM.mjs → chunk-QEEU4S4Z.mjs} +65 -378
  75. package/dist/chunk-QEEU4S4Z.mjs.br +0 -0
  76. package/dist/chunk-QEEU4S4Z.mjs.gz +0 -0
  77. package/dist/{chunk-ZPF4L6SD.js → chunk-QKSYKQEL.js} +1243 -1544
  78. package/dist/chunk-QKSYKQEL.js.br +0 -0
  79. package/dist/chunk-QKSYKQEL.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 +170 -17
  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 +170 -17
  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/viewer/index.d.ts +170 -17
  102. package/dist/viewer/index.js +27 -27
  103. package/dist/viewer/index.js.br +0 -0
  104. package/dist/viewer/index.js.gz +0 -0
  105. package/dist/viewer/index.mjs +6 -6
  106. package/dist/viewer/index.mjs.br +0 -0
  107. package/dist/viewer/index.mjs.gz +0 -0
  108. package/package.json +1 -1
  109. package/dist/AiChatPanel-ITCVRVKP.mjs.br +0 -0
  110. package/dist/AiChatPanel-ITCVRVKP.mjs.gz +0 -0
  111. package/dist/AiChatPanel-TO5PHBGW.js.br +0 -0
  112. package/dist/AiChatPanel-TO5PHBGW.js.gz +0 -0
  113. package/dist/Area3DChartScene-2UNQ3J3V.js.br +0 -0
  114. package/dist/Area3DChartScene-2UNQ3J3V.js.gz +0 -0
  115. package/dist/Area3DChartScene-7PHPDOTG.mjs.br +0 -0
  116. package/dist/Area3DChartScene-7PHPDOTG.mjs.gz +0 -0
  117. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.br +0 -0
  118. package/dist/Bar3DChartScene-BLPUHYRZ.mjs.gz +0 -0
  119. package/dist/Bar3DChartScene-MC5S3AGT.js.br +0 -0
  120. package/dist/Bar3DChartScene-MC5S3AGT.js.gz +0 -0
  121. package/dist/Line3DChartScene-JVVZRIDD.js.br +0 -0
  122. package/dist/Line3DChartScene-JVVZRIDD.js.gz +0 -0
  123. package/dist/Line3DChartScene-L5B4YFG3.mjs.br +0 -0
  124. package/dist/Line3DChartScene-L5B4YFG3.mjs.gz +0 -0
  125. package/dist/Model3DScene-6TNWS5LV.mjs.br +0 -0
  126. package/dist/Model3DScene-6TNWS5LV.mjs.gz +0 -0
  127. package/dist/Model3DScene-LRDNQNKJ.js.br +0 -0
  128. package/dist/Model3DScene-LRDNQNKJ.js.gz +0 -0
  129. package/dist/PieChart3DScene-PZWZCXHX.js.br +0 -0
  130. package/dist/PieChart3DScene-PZWZCXHX.js.gz +0 -0
  131. package/dist/PieChart3DScene-XXAIVP4I.mjs.br +0 -0
  132. package/dist/PieChart3DScene-XXAIVP4I.mjs.gz +0 -0
  133. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.br +0 -1
  134. package/dist/SurfaceChart3DScene-CRUGJSCY.mjs.gz +0 -0
  135. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.br +0 -0
  136. package/dist/SurfaceChart3DScene-UBQV3ZN2.js.gz +0 -0
  137. package/dist/chunk-A2UAUSJM.mjs.br +0 -0
  138. package/dist/chunk-A2UAUSJM.mjs.gz +0 -0
  139. package/dist/chunk-ARJE3V6V.mjs.br +0 -0
  140. package/dist/chunk-ARJE3V6V.mjs.gz +0 -0
  141. package/dist/chunk-BPWSJLLG.mjs.br +0 -0
  142. package/dist/chunk-BPWSJLLG.mjs.gz +0 -0
  143. package/dist/chunk-LGVNUG3G.js.br +0 -0
  144. package/dist/chunk-LGVNUG3G.js.gz +0 -0
  145. package/dist/chunk-LXYDXLKZ.js.br +0 -0
  146. package/dist/chunk-LXYDXLKZ.js.gz +0 -0
  147. package/dist/chunk-P3VXXUZM.mjs.br +0 -0
  148. package/dist/chunk-P3VXXUZM.mjs.gz +0 -0
  149. package/dist/chunk-QOLYY7E3.mjs.br +0 -0
  150. package/dist/chunk-QOLYY7E3.mjs.gz +0 -0
  151. package/dist/chunk-SWRY3SI5.js.br +0 -0
  152. package/dist/chunk-SWRY3SI5.js.gz +0 -0
  153. package/dist/chunk-T2QG2HD5.js.br +0 -0
  154. package/dist/chunk-T2QG2HD5.js.gz +0 -0
  155. package/dist/chunk-XIHK52SB.mjs.br +0 -0
  156. package/dist/chunk-XIHK52SB.mjs.gz +0 -0
  157. package/dist/chunk-YDEEINER.js.br +0 -0
  158. package/dist/chunk-YDEEINER.js.gz +0 -0
  159. package/dist/chunk-ZPF4L6SD.js.br +0 -0
  160. package/dist/chunk-ZPF4L6SD.js.gz +0 -0
@@ -1,8 +1,8 @@
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';
5
- import { LOCALE_CATALOG, translationsEn } from './chunk-ARJE3V6V.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-2FTJAMFA.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-QEEU4S4Z.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-ITN5NYYM.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, placeholderPromptDescriptor, 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, modelDataToBlobUrl, 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, COMMON_FONT_SIZES, 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, buildStrokePathD, cursorForTool, 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, 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, buildFontCatalog, 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, 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, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, CHART_TYPE_OPTIONS, 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, 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, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-DM2IZCSD.mjs';
5
+ import { LOCALE_CATALOG, translationsEn } from './chunk-AMRT3AE4.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-7PHPDOTG.mjs');
517
+ return await import('./Area3DChartScene-SAQVRYOH.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-BLPUHYRZ.mjs');
573
+ return await import('./Bar3DChartScene-LUA6E2K6.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-L5B4YFG3.mjs');
629
+ return await import('./Line3DChartScene-IW4JGH57.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-XXAIVP4I.mjs');
685
+ return await import('./PieChart3DScene-O6FFK5L7.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-CRUGJSCY.mjs');
741
+ return await import('./SurfaceChart3DScene-OCR26R5D.mjs');
742
742
  } catch {
743
743
  return { default: FailedToLoad5 };
744
744
  }
@@ -2402,6 +2402,9 @@ var ElementRenderer = React19.memo(
2402
2402
  findHl: findHighlights,
2403
2403
  onHyperlinkClick,
2404
2404
  isPresentationPassive,
2405
+ // Same rule as the other four bindings: the hint belongs to the
2406
+ // editable canvas, not to a read-only viewer or the show stage.
2407
+ placeholderPromptMode: canInteract && !isPresentationPassive ? "edit" : "present",
2405
2408
  handleMediaPlayStateChange,
2406
2409
  presentationElementStates,
2407
2410
  slideElements: activeSlide?.elements,
@@ -3018,35 +3021,14 @@ function FailedToLoad6() {
3018
3021
  var LazyModel3DScene = React19.lazy(
3019
3022
  async () => {
3020
3023
  try {
3021
- return await import('./Model3DScene-6TNWS5LV.mjs');
3024
+ return await import('./Model3DScene-BERTZYCJ.mjs');
3022
3025
  } catch {
3023
3026
  return { default: FailedToLoad6 };
3024
3027
  }
3025
3028
  }
3026
3029
  );
3027
- function dataUrlToBlobUrl(dataUrl) {
3028
- if (!dataUrl) {
3029
- return void 0;
3030
- }
3031
- try {
3032
- const commaIdx = dataUrl.indexOf(",");
3033
- if (commaIdx === -1) {
3034
- return void 0;
3035
- }
3036
- const meta = dataUrl.slice(0, commaIdx);
3037
- const base64 = dataUrl.slice(commaIdx + 1);
3038
- const mimeMatch = meta.match(/data:(?<mime>[^;]+)/u);
3039
- const mime = mimeMatch?.groups?.mime ?? "application/octet-stream";
3040
- const binary = atob(base64);
3041
- const bytes = new Uint8Array(binary.length);
3042
- for (let i = 0; i < binary.length; i++) {
3043
- bytes[i] = binary.charCodeAt(i);
3044
- }
3045
- const blob = new Blob([bytes], { type: mime });
3046
- return URL.createObjectURL(blob);
3047
- } catch {
3048
- return void 0;
3049
- }
3030
+ function dataUrlToBlobUrl(dataUrl, mimeType) {
3031
+ return modelDataToBlobUrl(dataUrl, mimeType);
3050
3032
  }
3051
3033
  function PosterFallback({
3052
3034
  element,
@@ -3134,7 +3116,10 @@ function Model3DRenderer({ element, width, height, interactive }) {
3134
3116
  cancelled = true;
3135
3117
  };
3136
3118
  }, []);
3137
- const blobUrl = useMemo(() => dataUrlToBlobUrl(element.modelData), [element.modelData]);
3119
+ const blobUrl = useMemo(
3120
+ () => dataUrlToBlobUrl(element.modelData, element.modelMimeType),
3121
+ [element.modelData, element.modelMimeType]
3122
+ );
3138
3123
  useEffect(() => {
3139
3124
  return () => {
3140
3125
  if (blobUrl) {
@@ -4389,6 +4374,7 @@ function renderTextElementBody(options) {
4389
4374
  fieldContext,
4390
4375
  presentationElementStates,
4391
4376
  isPresentationPassive,
4377
+ placeholderPromptMode = "present",
4392
4378
  slideElements
4393
4379
  } = options;
4394
4380
  const isLinkedTextBox2 = isLinkedTextBox(el);
@@ -4407,7 +4393,8 @@ function renderTextElementBody(options) {
4407
4393
  ...isLinkedTextBox2 ? { overflow: "hidden" } : {}
4408
4394
  };
4409
4395
  const shapeType = "shapeType" in el ? el.shapeType : void 0;
4410
- const shouldRenderText = isTxtEl || hasTextProperties(el) && Boolean(el.promptText);
4396
+ const placeholderPrompt = placeholderPromptDescriptor(el, placeholderPromptMode);
4397
+ const shouldRenderText = isTxtEl || placeholderPrompt !== null;
4411
4398
  return /* @__PURE__ */ jsxs(Fragment, { children: [
4412
4399
  vecShape,
4413
4400
  isActionButtonShape(shapeType) && /* @__PURE__ */ jsx(ActionButtonGlyphOverlay, { element: el }),
@@ -4453,7 +4440,8 @@ function renderTextElementBody(options) {
4453
4440
  fieldContext,
4454
4441
  presentationElementStates,
4455
4442
  linkedSegments ?? void 0,
4456
- !isPresentationPassive
4443
+ !isPresentationPassive,
4444
+ placeholderPrompt
4457
4445
  )
4458
4446
  }
4459
4447
  ))
@@ -4803,7 +4791,13 @@ function renderBody(options) {
4803
4791
  }
4804
4792
  if (el.type === "media") {
4805
4793
  return renderMediaElement(el, media, {
4806
- autoPlay: isPresentationPassive && el.autoPlay === true,
4794
+ // Present mode autoplays every media element on the active slide,
4795
+ // not only ones persisted with their own `autoPlay` flag (matching
4796
+ // the other four bindings' unconditional `presenting`-gated
4797
+ // `startMediaAutoplay` call): a clip inserted via Insert > Media
4798
+ // never gets that flag, so gating on `el.autoPlay` left it silently
4799
+ // paused the moment the show reached its slide.
4800
+ autoPlay: isPresentationPassive === true,
4807
4801
  fullScreen: isPresentationPassive && Boolean(el.fullScreen),
4808
4802
  isPresentationMode: isPresentationPassive,
4809
4803
  // A still of a slide never carries a transport, whatever the canvas
@@ -5003,6 +4997,7 @@ function StaticElementRendererImpl({
5003
4997
  // mode, so without saying so a video here would carry Chrome's
5004
4998
  // scrubber over a slide nobody can play.
5005
4999
  isStaticSurface: true,
5000
+ placeholderPromptMode: "thumbnail",
5006
5001
  slideElements: activeSlide?.elements,
5007
5002
  allSlides,
5008
5003
  sourceSlideIndex,
@@ -5717,13 +5712,12 @@ var ATXT = [
5717
5712
  { id: "right", i: /* @__PURE__ */ jsx(LuAlignRight, { className: ic }), labelKey: "pptx.ribbon.alignRight" },
5718
5713
  { id: "justify", i: /* @__PURE__ */ jsx(LuAlignJustify, { className: ic }), labelKey: "pptx.ribbon.justify" }
5719
5714
  ];
5720
- var DEFAULT_STROKE_WIDTH = 1;
5721
5715
  function ShapeArrangeExtras(p) {
5722
5716
  const { t } = useTranslation();
5723
- const canGroup = p.canEdit && p.selectedCount >= 2;
5724
- const canUngroup = p.canEdit && p.selectedElement?.type === "group";
5725
- const shape = p.selectedElement !== null && hasShapeProperties(p.selectedElement);
5726
- const strokeWidth = p.selectedElement !== null && hasShapeProperties(p.selectedElement) ? p.selectedElement.shapeStyle?.strokeWidth ?? DEFAULT_STROKE_WIDTH : DEFAULT_STROKE_WIDTH;
5717
+ const canGroup = canGroupSelection(p.canEdit, p.selectedCount);
5718
+ const canUngroup = canUngroupSelection(p.canEdit, p.selectedElement);
5719
+ const canStrokeWidth = canSetStrokeWidth(p.canEdit, p.selectedElement);
5720
+ const strokeWidth = strokeWidthOf(p.selectedElement);
5727
5721
  return /* @__PURE__ */ jsxs(Fragment, { children: [
5728
5722
  /* @__PURE__ */ jsxs("div", { className: grp, children: [
5729
5723
  /* @__PURE__ */ jsx(
@@ -5758,7 +5752,7 @@ function ShapeArrangeExtras(p) {
5758
5752
  min: "0",
5759
5753
  max: "120",
5760
5754
  step: "0.5",
5761
- disabled: !p.canEdit || !shape,
5755
+ disabled: !canStrokeWidth,
5762
5756
  "aria-label": t("pptx.ribbon.strokeWidth"),
5763
5757
  title: t("pptx.ribbon.strokeWidth"),
5764
5758
  value: strokeWidth,
@@ -6285,7 +6279,7 @@ function AccountPage() {
6285
6279
  return void 0;
6286
6280
  });
6287
6281
  };
6288
- const version = "3.1.4" ;
6282
+ const version = "3.2.0" ;
6289
6283
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
6290
6284
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
6291
6285
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -7056,7 +7050,6 @@ function extractFontInfo(element, themeFonts) {
7056
7050
  fontSize: fontSize !== void 0 && fontSize !== null ? String(fontSize) : defaults.fontSize
7057
7051
  };
7058
7052
  }
7059
- var COMMON_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 24, 28, 32, 36, 40, 44, 48, 54, 60, 72, 96];
7060
7053
  function HomeSection(p) {
7061
7054
  const { t } = useTranslation();
7062
7055
  const [fontMenuOpen, setFontMenuOpen] = useState(false);
@@ -7214,7 +7207,7 @@ function HomeSection(p) {
7214
7207
  ]
7215
7208
  }
7216
7209
  ),
7217
- sizeMenuOpen && /* @__PURE__ */ jsx(RibbonMenu, { anchorRef: sizeMenuRef, className: "flex flex-col w-48 pt-1", children: /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-border bg-popover backdrop-blur-lg shadow-2xl py-1 max-h-60 overflow-y-auto", children: COMMON_SIZES.map((s) => /* @__PURE__ */ jsx(
7210
+ sizeMenuOpen && /* @__PURE__ */ jsx(RibbonMenu, { anchorRef: sizeMenuRef, className: "flex flex-col w-48 pt-1", children: /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-border bg-popover backdrop-blur-lg shadow-2xl py-1 max-h-60 overflow-y-auto", children: COMMON_FONT_SIZES.map((s) => /* @__PURE__ */ jsx(
7218
7211
  "button",
7219
7212
  {
7220
7213
  type: "button",
@@ -11921,7 +11914,7 @@ function useDrawingOverlay({
11921
11914
  },
11922
11915
  [zoom.canvasStageRef, zoom.editorScale]
11923
11916
  );
11924
- const buildPathD2 = useCallback((pts) => {
11917
+ const buildPathD = useCallback((pts) => {
11925
11918
  if (pts.length === 0) {
11926
11919
  return "";
11927
11920
  }
@@ -12050,7 +12043,7 @@ function useDrawingOverlay({
12050
12043
  };
12051
12044
  onAddFreeformShape?.(freeformShape);
12052
12045
  } else {
12053
- const pathD = buildPathD2(relPoints);
12046
+ const pathD = buildPathD(relPoints);
12054
12047
  const isHighlighter = activeTool === "highlighter";
12055
12048
  const hasPressure = currentStrokePressures.length >= 2 && currentStrokePressures.some((p) => Math.abs(p - currentStrokePressures[0]) > 0.01);
12056
12049
  const ink = {
@@ -12081,13 +12074,13 @@ function useDrawingOverlay({
12081
12074
  isDrawingRef,
12082
12075
  onAddInkElement,
12083
12076
  onAddFreeformShape,
12084
- buildPathD2,
12077
+ buildPathD,
12085
12078
  currentStrokePressures
12086
12079
  ]
12087
12080
  );
12088
12081
  const liveStrokeD = useMemo(
12089
- () => isStrokeActive ? buildPathD2(currentStrokePoints) : "",
12090
- [isStrokeActive, currentStrokePoints, buildPathD2]
12082
+ () => isStrokeActive ? buildPathD(currentStrokePoints) : "",
12083
+ [isStrokeActive, currentStrokePoints, buildPathD]
12091
12084
  );
12092
12085
  return {
12093
12086
  isDrawing,
@@ -21844,7 +21837,13 @@ function ChartDataPointOptions({
21844
21837
  }) })
21845
21838
  ] });
21846
21839
  }
21847
- function ChartDisplayOptions({ style, canEdit, onUpdateStyle }) {
21840
+ function ChartDisplayOptions({
21841
+ style,
21842
+ canEdit,
21843
+ onUpdateStyle,
21844
+ hasGridlines,
21845
+ onToggleGridlines
21846
+ }) {
21848
21847
  const { t } = useTranslation();
21849
21848
  return /* @__PURE__ */ jsxs("div", { className: CARD2, children: [
21850
21849
  /* @__PURE__ */ jsx("div", { className: HEADING2, children: t("pptx.chart.display") }),
@@ -21897,8 +21896,8 @@ function ChartDisplayOptions({ style, canEdit, onUpdateStyle }) {
21897
21896
  {
21898
21897
  type: "checkbox",
21899
21898
  disabled: !canEdit,
21900
- checked: style?.hasGridlines ?? false,
21901
- onChange: (e) => onUpdateStyle({ hasGridlines: e.target.checked }),
21899
+ checked: hasGridlines,
21900
+ onChange: (e) => onToggleGridlines(e.target.checked),
21902
21901
  className: "accent-primary"
21903
21902
  }
21904
21903
  ),
@@ -22107,11 +22106,13 @@ function DebouncedColorInput({
22107
22106
  }
22108
22107
  var DEFAULT_SWATCH = "#4472c4";
22109
22108
  function ChartSeriesColorOptions({
22110
- series,
22109
+ chartData,
22111
22110
  canEdit,
22112
- onSetColor
22111
+ onSetColor,
22112
+ onToggleSecondaryAxis
22113
22113
  }) {
22114
22114
  const { t } = useTranslation();
22115
+ const series = chartData.series;
22115
22116
  if (series.length === 0) {
22116
22117
  return null;
22117
22118
  }
@@ -22119,6 +22120,19 @@ function ChartSeriesColorOptions({
22119
22120
  /* @__PURE__ */ jsx("div", { className: HEADING2, children: t("pptx.chart.seriesColors") }),
22120
22121
  /* @__PURE__ */ jsx("div", { className: "space-y-1", children: series.map((s, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
22121
22122
  /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", title: s.name, children: s.name }),
22123
+ /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 text-muted-foreground shrink-0", children: [
22124
+ /* @__PURE__ */ jsx(
22125
+ "input",
22126
+ {
22127
+ type: "checkbox",
22128
+ disabled: !canEdit,
22129
+ checked: isSeriesUsingSecondaryAxis(chartData, i),
22130
+ onChange: (e) => onToggleSecondaryAxis(i, e.target.checked),
22131
+ className: "accent-primary"
22132
+ }
22133
+ ),
22134
+ t("pptx.chart.secondaryAxis")
22135
+ ] }),
22122
22136
  /* @__PURE__ */ jsx(
22123
22137
  DebouncedColorInput,
22124
22138
  {
@@ -22323,6 +22337,25 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22323
22337
  },
22324
22338
  [chartData, style, onUpdateElement]
22325
22339
  );
22340
+ const hasGridlines = chartData ? chartGridlinesState(chartData) : false;
22341
+ const toggleGridlines = useCallback(
22342
+ (show) => {
22343
+ if (!chartData) {
22344
+ return;
22345
+ }
22346
+ updateChartData(chartGridlinesPatch(chartData, show));
22347
+ },
22348
+ [chartData, updateChartData]
22349
+ );
22350
+ const toggleSecondaryAxis = useCallback(
22351
+ (seriesIndex, useSecondary) => {
22352
+ if (!chartData) {
22353
+ return;
22354
+ }
22355
+ updateChartData(seriesSecondaryAxisPatch(chartData, seriesIndex, useSecondary));
22356
+ },
22357
+ [chartData, updateChartData]
22358
+ );
22326
22359
  const updateAxis = useCallback(
22327
22360
  (axisType, patch) => {
22328
22361
  if (!chartData) {
@@ -22493,7 +22526,16 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22493
22526
  onUpdateChartData: updateChartData
22494
22527
  }
22495
22528
  ),
22496
- /* @__PURE__ */ jsx(ChartDisplayOptions, { style, canEdit, onUpdateStyle: updateStyle }),
22529
+ /* @__PURE__ */ jsx(
22530
+ ChartDisplayOptions,
22531
+ {
22532
+ style,
22533
+ canEdit,
22534
+ onUpdateStyle: updateStyle,
22535
+ hasGridlines,
22536
+ onToggleGridlines: toggleGridlines
22537
+ }
22538
+ ),
22497
22539
  /* @__PURE__ */ jsx(ChartDataLabelOptions, { style, canEdit, onUpdateStyle: updateStyle }),
22498
22540
  /* @__PURE__ */ jsx(ChartAxisOptions, { axes: chartData.axes, canEdit, onUpdateAxis: updateAxis }),
22499
22541
  /* @__PURE__ */ jsx(
@@ -22564,7 +22606,15 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22564
22606
  onSetErrorBars: setSeriesErrorBars
22565
22607
  }
22566
22608
  ),
22567
- /* @__PURE__ */ jsx(ChartSeriesColorOptions, { series, canEdit, onSetColor: setSeriesColor }),
22609
+ /* @__PURE__ */ jsx(
22610
+ ChartSeriesColorOptions,
22611
+ {
22612
+ chartData,
22613
+ canEdit,
22614
+ onSetColor: setSeriesColor,
22615
+ onToggleSecondaryAxis: toggleSecondaryAxis
22616
+ }
22617
+ ),
22568
22618
  /* @__PURE__ */ jsx(
22569
22619
  ChartDataGrid,
22570
22620
  {
@@ -24297,23 +24347,10 @@ function MediaPropertiesPanel({
24297
24347
  }
24298
24348
 
24299
24349
  // src/viewer/components/inspector/fill-stroke-options.ts
24300
- var COMPOUND_LINE_OPTIONS = [
24301
- { value: "sng", label: "Single", i18nKey: "pptx.strokeOptions.compoundSingle" },
24302
- { value: "dbl", label: "Double", i18nKey: "pptx.strokeOptions.compoundDouble" },
24303
- { value: "thickThin", label: "Thick-Thin", i18nKey: "pptx.strokeOptions.compoundThickThin" },
24304
- { value: "thinThick", label: "Thin-Thick", i18nKey: "pptx.strokeOptions.compoundThinThick" },
24305
- { value: "tri", label: "Triple", i18nKey: "pptx.strokeOptions.compoundTriple" }
24306
- ];
24307
- var LINE_JOIN_OPTIONS = [
24308
- { value: "round", label: "Round", i18nKey: "pptx.strokeOptions.joinRound" },
24309
- { value: "bevel", label: "Bevel", i18nKey: "pptx.strokeOptions.joinBevel" },
24310
- { value: "miter", label: "Miter", i18nKey: "pptx.strokeOptions.joinMiter" }
24311
- ];
24312
- var LINE_CAP_OPTIONS = [
24313
- { value: "flat", label: "Flat", i18nKey: "pptx.strokeOptions.capFlat" },
24314
- { value: "rnd", label: "Round", i18nKey: "pptx.strokeOptions.capRound" },
24315
- { value: "sq", label: "Square", i18nKey: "pptx.strokeOptions.capSquare" }
24316
- ];
24350
+ var COMPOUND_LINE_OPTIONS2 = COMPOUND_LINE_OPTIONS;
24351
+ var LINE_JOIN_OPTIONS2 = LINE_JOIN_OPTIONS;
24352
+ var LINE_CAP_OPTIONS2 = LINE_CAP_OPTIONS;
24353
+ var PATTERN_PRESET_OPTIONS2 = PATTERN_PRESET_OPTIONS;
24317
24354
  var FILL_MODE_OPTIONS2 = [
24318
24355
  { value: "solid", label: "Solid", i18nKey: "pptx.fill.solid" },
24319
24356
  { value: "gradient", label: "Gradient", i18nKey: "pptx.fill.gradient" },
@@ -24321,76 +24358,6 @@ var FILL_MODE_OPTIONS2 = [
24321
24358
  { value: "image", label: "Image", i18nKey: "pptx.inspector.image" },
24322
24359
  { value: "none", label: "None", i18nKey: "pptx.fill.none" }
24323
24360
  ];
24324
- var PATTERN_PRESET_OPTIONS = [
24325
- { value: "pct5", label: "5%", i18nKey: "pptx.fillPatterns.pct5" },
24326
- { value: "pct10", label: "10%", i18nKey: "pptx.fillPatterns.pct10" },
24327
- { value: "pct20", label: "20%", i18nKey: "pptx.fillPatterns.pct20" },
24328
- { value: "pct25", label: "25%", i18nKey: "pptx.fillPatterns.pct25" },
24329
- { value: "pct30", label: "30%", i18nKey: "pptx.fillPatterns.pct30" },
24330
- { value: "pct40", label: "40%", i18nKey: "pptx.fillPatterns.pct40" },
24331
- { value: "pct50", label: "50%", i18nKey: "pptx.fillPatterns.pct50" },
24332
- { value: "pct60", label: "60%", i18nKey: "pptx.fillPatterns.pct60" },
24333
- { value: "pct70", label: "70%", i18nKey: "pptx.fillPatterns.pct70" },
24334
- { value: "pct75", label: "75%", i18nKey: "pptx.fillPatterns.pct75" },
24335
- { value: "pct80", label: "80%", i18nKey: "pptx.fillPatterns.pct80" },
24336
- { value: "pct90", label: "90%", i18nKey: "pptx.fillPatterns.pct90" },
24337
- { value: "horz", label: "Horizontal", i18nKey: "pptx.fillPatterns.horizontal" },
24338
- { value: "vert", label: "Vertical", i18nKey: "pptx.fillPatterns.vertical" },
24339
- { value: "ltHorz", label: "Light Horizontal", i18nKey: "pptx.fillPatterns.lightHorizontal" },
24340
- { value: "ltVert", label: "Light Vertical", i18nKey: "pptx.fillPatterns.lightVertical" },
24341
- { value: "dkHorz", label: "Dark Horizontal", i18nKey: "pptx.fillPatterns.darkHorizontal" },
24342
- { value: "dkVert", label: "Dark Vertical", i18nKey: "pptx.fillPatterns.darkVertical" },
24343
- { value: "narHorz", label: "Narrow Horizontal", i18nKey: "pptx.fillPatterns.narrowHorizontal" },
24344
- { value: "narVert", label: "Narrow Vertical", i18nKey: "pptx.fillPatterns.narrowVertical" },
24345
- { value: "wdHorz", label: "Wide Horizontal", i18nKey: "pptx.fillPatterns.wideHorizontal" },
24346
- { value: "wdVert", label: "Wide Vertical", i18nKey: "pptx.fillPatterns.wideVertical" },
24347
- { value: "dashHorz", label: "Dashed Horizontal", i18nKey: "pptx.fillPatterns.dashedHorizontal" },
24348
- { value: "dashVert", label: "Dashed Vertical", i18nKey: "pptx.fillPatterns.dashedVertical" },
24349
- { value: "cross", label: "Cross", i18nKey: "pptx.fillPatterns.cross" },
24350
- { value: "dnDiag", label: "Down Diagonal", i18nKey: "pptx.fillPatterns.downDiagonal" },
24351
- { value: "upDiag", label: "Up Diagonal", i18nKey: "pptx.fillPatterns.upDiagonal" },
24352
- {
24353
- value: "ltDnDiag",
24354
- label: "Light Down Diagonal",
24355
- i18nKey: "pptx.fillPatterns.lightDownDiagonal"
24356
- },
24357
- { value: "ltUpDiag", label: "Light Up Diagonal", i18nKey: "pptx.fillPatterns.lightUpDiagonal" },
24358
- { value: "dkDnDiag", label: "Dark Down Diagonal", i18nKey: "pptx.fillPatterns.darkDownDiagonal" },
24359
- { value: "dkUpDiag", label: "Dark Up Diagonal", i18nKey: "pptx.fillPatterns.darkUpDiagonal" },
24360
- { value: "wdDnDiag", label: "Wide Down Diagonal", i18nKey: "pptx.fillPatterns.wideDownDiagonal" },
24361
- { value: "wdUpDiag", label: "Wide Up Diagonal", i18nKey: "pptx.fillPatterns.wideUpDiagonal" },
24362
- {
24363
- value: "dashDnDiag",
24364
- label: "Dashed Down Diagonal",
24365
- i18nKey: "pptx.fillPatterns.dashedDownDiagonal"
24366
- },
24367
- {
24368
- value: "dashUpDiag",
24369
- label: "Dashed Up Diagonal",
24370
- i18nKey: "pptx.fillPatterns.dashedUpDiagonal"
24371
- },
24372
- { value: "diagCross", label: "Diagonal Cross", i18nKey: "pptx.fillPatterns.diagonalCross" },
24373
- { value: "smCheck", label: "Small Check", i18nKey: "pptx.fillPatterns.smallCheck" },
24374
- { value: "lgCheck", label: "Large Check", i18nKey: "pptx.fillPatterns.largeCheck" },
24375
- { value: "smGrid", label: "Small Grid", i18nKey: "pptx.fillPatterns.smallGrid" },
24376
- { value: "lgGrid", label: "Large Grid", i18nKey: "pptx.fillPatterns.largeGrid" },
24377
- { value: "dotGrid", label: "Dot Grid", i18nKey: "pptx.fillPatterns.dotGrid" },
24378
- { value: "smConfetti", label: "Small Confetti", i18nKey: "pptx.fillPatterns.smallConfetti" },
24379
- { value: "lgConfetti", label: "Large Confetti", i18nKey: "pptx.fillPatterns.largeConfetti" },
24380
- { value: "horzBrick", label: "Horizontal Brick", i18nKey: "pptx.fillPatterns.horizontalBrick" },
24381
- { value: "diagBrick", label: "Diagonal Brick", i18nKey: "pptx.fillPatterns.diagonalBrick" },
24382
- { value: "solidDmnd", label: "Solid Diamond", i18nKey: "pptx.fillPatterns.solidDiamond" },
24383
- { value: "openDmnd", label: "Open Diamond", i18nKey: "pptx.fillPatterns.openDiamond" },
24384
- { value: "dotDmnd", label: "Dotted Diamond", i18nKey: "pptx.fillPatterns.dottedDiamond" },
24385
- { value: "plaid", label: "Plaid", i18nKey: "pptx.fillPatterns.plaid" },
24386
- { value: "sphere", label: "Sphere", i18nKey: "pptx.fillPatterns.sphere" },
24387
- { value: "weave", label: "Weave", i18nKey: "pptx.fillPatterns.weave" },
24388
- { value: "divot", label: "Divot", i18nKey: "pptx.fillPatterns.divot" },
24389
- { value: "shingle", label: "Shingle", i18nKey: "pptx.fillPatterns.shingle" },
24390
- { value: "wave", label: "Wave", i18nKey: "pptx.fillPatterns.wave" },
24391
- { value: "trellis", label: "Trellis", i18nKey: "pptx.fillPatterns.trellis" },
24392
- { value: "zigZag", label: "Zig Zag", i18nKey: "pptx.fillPatterns.zigZag" }
24393
- ];
24394
24361
  var GRADIENT_TYPE_OPTIONS2 = [
24395
24362
  { value: "linear", label: "Linear", i18nKey: "pptx.gradient.linear" },
24396
24363
  { value: "radial", label: "Radial", i18nKey: "pptx.gradient.radial" }
@@ -24585,6 +24552,7 @@ var SHADOW_EFFECT_CONFIGS = [
24585
24552
  {
24586
24553
  key: "sr",
24587
24554
  label: "Rotate with Shape",
24555
+ i18nKey: "pptx.effects.rotateWithShape",
24588
24556
  type: "checkbox",
24589
24557
  read: (s) => s?.shadowRotateWithShape ?? true,
24590
24558
  write: (v) => ({ shadowRotateWithShape: Boolean(v) })
@@ -25281,7 +25249,7 @@ function FillAdvancedControls({
25281
25249
  style?.fillMode === "pattern" && /* @__PURE__ */ jsxs(Fragment, { children: [
25282
25250
  /* @__PURE__ */ jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
25283
25251
  /* @__PURE__ */ jsx("span", { className: LBL2, children: "Pattern" }),
25284
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-8 gap-1 max-h-48 overflow-y-auto rounded border border-border p-2", children: PATTERN_PRESET_OPTIONS.map((opt) => {
25252
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-8 gap-1 max-h-48 overflow-y-auto rounded border border-border p-2", children: PATTERN_PRESET_OPTIONS2.map((opt) => {
25285
25253
  const fgColor = normalizeHexColor(style?.fillColor, DEFAULT_FILL_COLOR);
25286
25254
  const bgColor = normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
25287
25255
  const svgPattern = getPatternSvg(opt.value, fgColor, bgColor);
@@ -25290,7 +25258,7 @@ function FillAdvancedControls({
25290
25258
  "button",
25291
25259
  {
25292
25260
  type: "button",
25293
- title: opt.label,
25261
+ title: t(opt.labelKey),
25294
25262
  className: `h-8 w-8 rounded border transition-all ${isSelected ? "border-primary border-2 ring-2 ring-primary/20" : "border-border hover:border-primary/50"}`,
25295
25263
  onClick: () => onUpdateShapeStyle({
25296
25264
  fillMode: "pattern",
@@ -25493,7 +25461,7 @@ function StrokeEffectsSection({
25493
25461
  ] }),
25494
25462
  /* @__PURE__ */ jsxs("label", { className: `flex flex-col gap-1 ${COL2}`, children: [
25495
25463
  /* @__PURE__ */ jsx("span", { className: LBL2, children: t("pptx.strokeEffects.compoundLine") }),
25496
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-5 gap-1", children: COMPOUND_LINE_OPTIONS.map((opt) => /* @__PURE__ */ jsx(
25464
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-5 gap-1", children: COMPOUND_LINE_OPTIONS2.map((opt) => /* @__PURE__ */ jsx(
25497
25465
  "button",
25498
25466
  {
25499
25467
  type: "button",
@@ -25538,7 +25506,7 @@ function StrokeEffectsSection({
25538
25506
  {
25539
25507
  label: t("pptx.strokeEffects.lineJoin"),
25540
25508
  value: style?.lineJoin || "round",
25541
- options: LINE_JOIN_OPTIONS,
25509
+ options: LINE_JOIN_OPTIONS2,
25542
25510
  onChange: (v) => onUpdateShapeStyle({ lineJoin: v })
25543
25511
  }
25544
25512
  ),
@@ -25547,7 +25515,7 @@ function StrokeEffectsSection({
25547
25515
  {
25548
25516
  label: t("pptx.strokeEffects.lineCap"),
25549
25517
  value: style?.lineCap || "flat",
25550
- options: LINE_CAP_OPTIONS,
25518
+ options: LINE_CAP_OPTIONS2,
25551
25519
  onChange: (v) => onUpdateShapeStyle({ lineCap: v })
25552
25520
  }
25553
25521
  )
@@ -30084,32 +30052,6 @@ function InspectorPane(props) {
30084
30052
  )
30085
30053
  ] });
30086
30054
  }
30087
- function buildPathD(points) {
30088
- if (points.length === 0) {
30089
- return "";
30090
- }
30091
- const first = points[0];
30092
- let d = `M ${first.x} ${first.y}`;
30093
- for (let i = 1; i < points.length; i++) {
30094
- const pt = points[i];
30095
- d += ` L ${pt.x} ${pt.y}`;
30096
- }
30097
- return d;
30098
- }
30099
- function getCursorForTool(tool) {
30100
- switch (tool) {
30101
- case "laser":
30102
- return "none";
30103
- case "pen":
30104
- return "crosshair";
30105
- case "highlighter":
30106
- return "crosshair";
30107
- case "eraser":
30108
- return "crosshair";
30109
- default:
30110
- return "default";
30111
- }
30112
- }
30113
30055
  function PresentationAnnotationOverlay({
30114
30056
  canvasSize,
30115
30057
  editorScale,
@@ -30220,7 +30162,7 @@ function PresentationAnnotationOverlay({
30220
30162
  className: "absolute inset-0",
30221
30163
  style: {
30222
30164
  zIndex: annotationOverlayZIndex(blackout),
30223
- cursor: getCursorForTool(presentationTool),
30165
+ cursor: cursorForTool(presentationTool),
30224
30166
  pointerEvents: isCapturing ? "auto" : "none"
30225
30167
  },
30226
30168
  children: [
@@ -30243,7 +30185,7 @@ function PresentationAnnotationOverlay({
30243
30185
  children: allStrokes.map((stroke) => /* @__PURE__ */ jsx(
30244
30186
  "path",
30245
30187
  {
30246
- d: buildPathD(stroke.points),
30188
+ d: buildStrokePathD(stroke.points),
30247
30189
  fill: "none",
30248
30190
  stroke: stroke.color,
30249
30191
  strokeWidth: stroke.width,
@@ -34203,24 +34145,9 @@ function EquationEditorDialog({
34203
34145
  }
34204
34146
  );
34205
34147
  }
34206
- var PREVIEW_ELEMENT_WIDTH = 600;
34207
- var PREVIEW_ELEMENT_HEIGHT = 340;
34208
34148
  var PREVIEW_TILE_WIDTH2 = 64;
34209
- var FALLBACK_ITEMS = ["1", "2", "3"];
34210
- function buildPreviewElement(layout) {
34211
- const preset = PRESETS.find((p) => p.layout === layout);
34212
- return {
34213
- id: `smartart-preview-${layout}`,
34214
- type: "smartArt",
34215
- x: 0,
34216
- y: 0,
34217
- width: PREVIEW_ELEMENT_WIDTH,
34218
- height: PREVIEW_ELEMENT_HEIGHT,
34219
- smartArtData: buildSmartArtPresetData(layout, preset?.defaultItems ?? FALLBACK_ITEMS)
34220
- };
34221
- }
34222
34149
  function getPreviewForLayout(layout) {
34223
- const scale = PREVIEW_TILE_WIDTH2 / PREVIEW_ELEMENT_WIDTH;
34150
+ const scale = PREVIEW_TILE_WIDTH2 / SMARTART_PREVIEW_ELEMENT_WIDTH;
34224
34151
  return /* @__PURE__ */ jsx(
34225
34152
  "div",
34226
34153
  {
@@ -34228,18 +34155,18 @@ function getPreviewForLayout(layout) {
34228
34155
  className: "overflow-hidden pointer-events-none",
34229
34156
  style: {
34230
34157
  width: PREVIEW_TILE_WIDTH2,
34231
- height: Math.round(PREVIEW_ELEMENT_HEIGHT * scale)
34158
+ height: Math.round(SMARTART_PREVIEW_ELEMENT_HEIGHT * scale)
34232
34159
  },
34233
34160
  children: /* @__PURE__ */ jsx(
34234
34161
  "div",
34235
34162
  {
34236
34163
  style: {
34237
- width: PREVIEW_ELEMENT_WIDTH,
34238
- height: PREVIEW_ELEMENT_HEIGHT,
34164
+ width: SMARTART_PREVIEW_ELEMENT_WIDTH,
34165
+ height: SMARTART_PREVIEW_ELEMENT_HEIGHT,
34239
34166
  transform: `scale(${scale})`,
34240
34167
  transformOrigin: "top left"
34241
34168
  },
34242
- children: /* @__PURE__ */ jsx(SmartArtRenderer, { element: buildPreviewElement(layout) })
34169
+ children: /* @__PURE__ */ jsx(SmartArtRenderer, { element: buildSmartArtPreviewElement(layout) })
34243
34170
  }
34244
34171
  )
34245
34172
  }
@@ -35396,7 +35323,7 @@ ${url}`)) {
35396
35323
  var AiChatPanel = lazy(async () => {
35397
35324
  const [{ useChat }, { default: Panel }] = await Promise.all([
35398
35325
  import('@ai-sdk/react'),
35399
- import('./AiChatPanel-ITCVRVKP.mjs')
35326
+ import('./AiChatPanel-BNFDBP4S.mjs')
35400
35327
  ]);
35401
35328
  function BoundAiChatPanel(props) {
35402
35329
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -37474,144 +37401,16 @@ function OptionsRibbonPane({
37474
37401
  }
37475
37402
 
37476
37403
  // src/viewer/utils/ai-log-export.ts
37477
- function isoOf(ms) {
37478
- const n = Number.isFinite(ms) ? ms : 0;
37479
- return new Date(n).toISOString();
37480
- }
37481
- function toLogChat(chat, detailed) {
37482
- const messages = chat.messages.map((message) => {
37483
- const parts = toRenderableParts(message);
37484
- const textRuns = [];
37485
- const toolCalls = [];
37486
- for (const part of parts) {
37487
- if (part.kind === "text") {
37488
- textRuns.push(part.text);
37489
- continue;
37490
- }
37491
- toolCalls.push({
37492
- toolName: part.toolName,
37493
- toolCallId: part.toolCallId,
37494
- state: part.state,
37495
- input: detailed ? part.input : void 0,
37496
- output: detailed ? part.output : void 0,
37497
- errorText: part.errorText
37498
- });
37499
- }
37500
- return {
37501
- role: message.role,
37502
- text: textRuns.join("\n\n"),
37503
- toolCalls
37504
- };
37505
- });
37506
- return {
37507
- id: chat.id,
37508
- title: chat.title,
37509
- deckId: chat.deckId,
37510
- createdAt: chat.createdAt,
37511
- updatedAt: chat.updatedAt,
37512
- createdAtIso: isoOf(chat.createdAt),
37513
- updatedAtIso: isoOf(chat.updatedAt),
37514
- messageCount: chat.messages.length,
37515
- messages
37516
- };
37517
- }
37518
- function buildChatLogExport(chats, options) {
37519
- const detailed = options?.detailed ?? true;
37520
- const now = options?.now ?? Date.now();
37521
- return {
37522
- format: "pptx-ai-chat-log",
37523
- version: 1,
37524
- exportedAt: isoOf(now),
37525
- detailed,
37526
- chatCount: chats.length,
37527
- chats: chats.map((chat) => toLogChat(chat, detailed))
37528
- };
37529
- }
37530
- function toolCallLine(call, detailed) {
37531
- const lines = [`- Tool \`${call.toolName}\` (${call.state})`];
37532
- if (call.errorText) {
37533
- lines.push(` - error: ${call.errorText}`);
37534
- }
37535
- if (detailed) {
37536
- lines.push(" - input:");
37537
- lines.push(" ```json");
37538
- lines.push(JSON.stringify(call.input ?? null, null, 2));
37539
- lines.push(" ```");
37540
- lines.push(" - output:");
37541
- lines.push(" ```json");
37542
- lines.push(JSON.stringify(call.output ?? null, null, 2));
37543
- lines.push(" ```");
37544
- }
37545
- return lines.join("\n");
37546
- }
37547
- function buildChatLogMarkdown(doc) {
37548
- const out = [
37549
- `# AI chat logs`,
37550
- "",
37551
- `Exported: ${doc.exportedAt}`,
37552
- `Chats: ${doc.chatCount}`,
37553
- ""
37554
- ];
37555
- for (const chat of doc.chats) {
37556
- out.push(`## ${chat.title || chat.id}`);
37557
- out.push("");
37558
- out.push(`- id: ${chat.id}`);
37559
- if (chat.deckId) {
37560
- out.push(`- deck: ${chat.deckId}`);
37561
- }
37562
- out.push(`- created: ${chat.createdAtIso}`);
37563
- out.push(`- updated: ${chat.updatedAtIso}`);
37564
- out.push(`- messages: ${chat.messageCount}`);
37565
- out.push("");
37566
- for (const message of chat.messages) {
37567
- out.push(`### ${message.role}`);
37568
- out.push("");
37569
- if (message.text) {
37570
- out.push(message.text);
37571
- out.push("");
37572
- }
37573
- for (const call of message.toolCalls) {
37574
- out.push(toolCallLine(call, doc.detailed));
37575
- out.push("");
37576
- }
37577
- }
37578
- }
37579
- return out.join("\n");
37580
- }
37581
- async function collectStoredChats(store) {
37582
- const summaries = await store.listChats();
37583
- const chats = [];
37584
- for (const summary of summaries) {
37585
- const chat = await store.loadChat(summary.id);
37586
- if (chat) {
37587
- chats.push(chat);
37588
- }
37589
- }
37590
- return chats;
37591
- }
37592
- function timestampSlug(now) {
37593
- const d = new Date(now);
37594
- const p = (n) => String(n).padStart(2, "0");
37595
- return `${d.getFullYear()}${p(d.getMonth() + 1)}${p(d.getDate())}-${p(d.getHours())}${p(d.getMinutes())}${p(d.getSeconds())}`;
37596
- }
37597
- async function exportAiChatLogs(options) {
37404
+ async function exportAiChatLogs2(options) {
37598
37405
  const store = options?.store ?? createChatHistoryStore();
37599
- const format = options?.format ?? "json";
37600
- const now = options?.now ?? Date.now();
37601
37406
  const chats = await collectStoredChats(store);
37602
- if (chats.length === 0) {
37603
- return 0;
37604
- }
37605
- const doc = buildChatLogExport(chats, { detailed: options?.detailed ?? true, now });
37606
- const slug = timestampSlug(now);
37607
- if (format === "markdown") {
37608
- const blob = new Blob([buildChatLogMarkdown(doc)], { type: "text/markdown" });
37609
- downloadBlob(blob, `pptx-ai-chats-${slug}.md`);
37610
- } else {
37611
- const blob = new Blob([JSON.stringify(doc, null, 2)], { type: "application/json" });
37612
- downloadBlob(blob, `pptx-ai-chats-${slug}.json`);
37613
- }
37614
- return chats.length;
37407
+ return exportAiChatLogs(
37408
+ chats,
37409
+ { format: options?.format, detailed: options?.detailed, now: options?.now },
37410
+ (filename, content, mime) => {
37411
+ downloadBlob(new Blob([content], { type: mime }), filename);
37412
+ }
37413
+ );
37615
37414
  }
37616
37415
  function SettingsAiTab({ store }) {
37617
37416
  const { t } = useTranslation();
@@ -37642,7 +37441,7 @@ function SettingsAiTab({ store }) {
37642
37441
  async (format) => {
37643
37442
  setStatus({ kind: "busy" });
37644
37443
  try {
37645
- const count = await exportAiChatLogs({ store: activeStore, format, detailed });
37444
+ const count = await exportAiChatLogs2({ store: activeStore, format, detailed });
37646
37445
  setStatus({ kind: "done", count });
37647
37446
  } catch {
37648
37447
  setStatus({ kind: "done", count: 0 });
@@ -38097,106 +37896,6 @@ function SettingsDialog({
38097
37896
  )
38098
37897
  ] });
38099
37898
  }
38100
-
38101
- // src/viewer/hooks/ai/ai-element-update.ts
38102
- function applyGeometry(el, u) {
38103
- if (u.x !== void 0) {
38104
- el.x = u.x;
38105
- }
38106
- if (u.y !== void 0) {
38107
- el.y = u.y;
38108
- }
38109
- if (u.width !== void 0) {
38110
- el.width = u.width;
38111
- }
38112
- if (u.height !== void 0) {
38113
- el.height = u.height;
38114
- }
38115
- if (u.rotation !== void 0) {
38116
- el.rotation = u.rotation;
38117
- }
38118
- if (u.opacity !== void 0) {
38119
- el.opacity = u.opacity;
38120
- }
38121
- if (u.hidden !== void 0) {
38122
- el.hidden = u.hidden;
38123
- }
38124
- if (u.flipHorizontal !== void 0) {
38125
- el.flipHorizontal = u.flipHorizontal;
38126
- }
38127
- if (u.flipVertical !== void 0) {
38128
- el.flipVertical = u.flipVertical;
38129
- }
38130
- }
38131
- function applyText(el, u) {
38132
- if (!hasTextProperties(el)) {
38133
- return;
38134
- }
38135
- if (typeof u.text === "string") {
38136
- el.text = u.text;
38137
- if (el.textSegments && el.textSegments.length > 0) {
38138
- el.textSegments = [{ text: u.text, style: el.textSegments[0].style }];
38139
- } else {
38140
- el.textSegments = [{ text: u.text, style: {} }];
38141
- }
38142
- }
38143
- const textStyle = {};
38144
- if (u.fontSize !== void 0) {
38145
- textStyle.fontSize = u.fontSize;
38146
- }
38147
- if (u.fontFamily !== void 0) {
38148
- textStyle.fontFamily = u.fontFamily;
38149
- }
38150
- if (u.fontColor !== void 0) {
38151
- textStyle.color = u.fontColor;
38152
- }
38153
- if (u.bold !== void 0) {
38154
- textStyle.bold = u.bold;
38155
- }
38156
- if (u.italic !== void 0) {
38157
- textStyle.italic = u.italic;
38158
- }
38159
- if (u.underline !== void 0) {
38160
- textStyle.underline = u.underline;
38161
- }
38162
- if (u.align !== void 0) {
38163
- textStyle.align = u.align;
38164
- }
38165
- if (Object.keys(textStyle).length === 0) {
38166
- return;
38167
- }
38168
- el.textStyle = { ...el.textStyle, ...textStyle };
38169
- el.textSegments = el.textSegments?.map((seg) => ({
38170
- ...seg,
38171
- style: { ...seg.style, ...textStyle }
38172
- }));
38173
- }
38174
- function applyShapeStyle(el, u) {
38175
- if (!hasShapeProperties(el)) {
38176
- return;
38177
- }
38178
- const shapeStyle = {};
38179
- if (u.fillColor !== void 0) {
38180
- shapeStyle.fillColor = u.fillColor;
38181
- }
38182
- if (u.strokeColor !== void 0) {
38183
- shapeStyle.strokeColor = u.strokeColor;
38184
- }
38185
- if (u.strokeWidth !== void 0) {
38186
- shapeStyle.strokeWidth = u.strokeWidth;
38187
- }
38188
- if (Object.keys(shapeStyle).length === 0) {
38189
- return;
38190
- }
38191
- el.shapeStyle = { ...el.shapeStyle, ...shapeStyle };
38192
- }
38193
- function applyAiElementUpdate(el, updates) {
38194
- applyGeometry(el, updates);
38195
- applyText(el, updates);
38196
- applyShapeStyle(el, updates);
38197
- }
38198
-
38199
- // src/viewer/hooks/ai/useAiBridge.ts
38200
37899
  function useAiBridge(input) {
38201
37900
  const ref = useRef(input);
38202
37901
  ref.current = input;
@@ -38252,7 +37951,7 @@ function useAiBridge(input) {
38252
37951
  applySlidesUpdate((slides) => {
38253
37952
  const el = slides[slideIndex]?.elements.find((e) => e.id === elementId);
38254
37953
  if (el) {
38255
- applyAiElementUpdate(el, updates);
37954
+ applyElementUpdate(el, updates);
38256
37955
  }
38257
37956
  return slides;
38258
37957
  });