pptx-react-viewer 3.2.0 → 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 (155) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/{AiChatPanel-C3E7NLX3.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-TKBVSYD2.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-3A3CXKN3.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-7YCFWEGX.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-BDUENAWJ.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-7CNSJ35X.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-SMTHK6MD.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-R352CZ5U.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-Y4SGFQYW.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-AUVJXXPV.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-TK2VT4RS.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-UD7GRH55.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-TXY6UZSW.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-ERFXZW2O.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-RX6FE24O.mjs → chunk-2FTJAMFA.mjs} +294 -61
  45. package/dist/chunk-2FTJAMFA.mjs.br +0 -0
  46. package/dist/chunk-2FTJAMFA.mjs.gz +0 -0
  47. package/dist/{chunk-PPNXPEEZ.mjs → chunk-3B5FRKYU.mjs} +130 -437
  48. package/dist/chunk-3B5FRKYU.mjs.br +0 -0
  49. package/dist/chunk-3B5FRKYU.mjs.gz +0 -0
  50. package/dist/{chunk-ALO4ZOHQ.js → chunk-3P7FYHJH.js} +1 -0
  51. package/dist/chunk-3P7FYHJH.js.br +0 -0
  52. package/dist/chunk-3P7FYHJH.js.gz +0 -0
  53. package/dist/{chunk-B6UIVRFA.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-RHSA5BW5.mjs → chunk-AMRT3AE4.mjs} +1 -0
  57. package/dist/chunk-AMRT3AE4.mjs.br +0 -0
  58. package/dist/chunk-AMRT3AE4.mjs.gz +0 -0
  59. package/dist/{chunk-G7UBIKAG.mjs → chunk-DM2IZCSD.mjs} +2429 -39
  60. package/dist/chunk-DM2IZCSD.mjs.br +0 -0
  61. package/dist/{chunk-G7UBIKAG.mjs.gz → chunk-DM2IZCSD.mjs.gz} +0 -0
  62. package/dist/{chunk-Q52HT4EZ.js → chunk-FSQCEAMG.js} +299 -63
  63. package/dist/chunk-FSQCEAMG.js.br +0 -0
  64. package/dist/chunk-FSQCEAMG.js.gz +0 -0
  65. package/dist/{chunk-ARQGUUYU.js → chunk-GR6SJJIT.js} +449 -723
  66. package/dist/chunk-GR6SJJIT.js.br +0 -0
  67. package/dist/chunk-GR6SJJIT.js.gz +0 -0
  68. package/dist/{chunk-FMEEIS6L.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-FJDZ7AEE.js → chunk-K6R2JNCK.js} +2459 -45
  72. package/dist/chunk-K6R2JNCK.js.br +0 -0
  73. package/dist/{chunk-FJDZ7AEE.js.gz → chunk-K6R2JNCK.js.gz} +0 -0
  74. package/dist/{chunk-UHR7EYFM.mjs → chunk-QEEU4S4Z.mjs} +50 -324
  75. package/dist/chunk-QEEU4S4Z.mjs.br +0 -0
  76. package/dist/chunk-QEEU4S4Z.mjs.gz +0 -0
  77. package/dist/{chunk-RRAL4Y7V.js → chunk-QKSYKQEL.js} +1236 -1543
  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.js +47 -47
  87. package/dist/index.js.br +0 -0
  88. package/dist/index.js.gz +0 -0
  89. package/dist/index.mjs +6 -6
  90. package/dist/index.mjs.br +0 -0
  91. package/dist/index.mjs.gz +0 -0
  92. package/dist/internals.d.ts.map +1 -1
  93. package/dist/internals.js +79 -79
  94. package/dist/internals.js.br +4 -6
  95. package/dist/internals.js.gz +0 -0
  96. package/dist/internals.mjs +4 -4
  97. package/dist/internals.mjs.br +0 -0
  98. package/dist/internals.mjs.gz +0 -0
  99. package/dist/viewer/index.js +27 -27
  100. package/dist/viewer/index.js.br +0 -0
  101. package/dist/viewer/index.js.gz +0 -0
  102. package/dist/viewer/index.mjs +6 -6
  103. package/dist/viewer/index.mjs.br +0 -0
  104. package/dist/viewer/index.mjs.gz +0 -0
  105. package/package.json +1 -1
  106. package/dist/AiChatPanel-C3E7NLX3.mjs.br +0 -0
  107. package/dist/AiChatPanel-C3E7NLX3.mjs.gz +0 -0
  108. package/dist/AiChatPanel-TKBVSYD2.js.br +0 -0
  109. package/dist/AiChatPanel-TKBVSYD2.js.gz +0 -0
  110. package/dist/Area3DChartScene-3A3CXKN3.js.br +0 -0
  111. package/dist/Area3DChartScene-3A3CXKN3.js.gz +0 -0
  112. package/dist/Area3DChartScene-7YCFWEGX.mjs.br +0 -3
  113. package/dist/Area3DChartScene-7YCFWEGX.mjs.gz +0 -0
  114. package/dist/Bar3DChartScene-7CNSJ35X.mjs.br +0 -0
  115. package/dist/Bar3DChartScene-7CNSJ35X.mjs.gz +0 -0
  116. package/dist/Bar3DChartScene-BDUENAWJ.js.br +0 -0
  117. package/dist/Bar3DChartScene-BDUENAWJ.js.gz +0 -0
  118. package/dist/Line3DChartScene-R352CZ5U.js.br +0 -0
  119. package/dist/Line3DChartScene-R352CZ5U.js.gz +0 -0
  120. package/dist/Line3DChartScene-SMTHK6MD.mjs.br +0 -3
  121. package/dist/Line3DChartScene-SMTHK6MD.mjs.gz +0 -0
  122. package/dist/Model3DScene-AUVJXXPV.mjs.br +0 -0
  123. package/dist/Model3DScene-AUVJXXPV.mjs.gz +0 -0
  124. package/dist/Model3DScene-Y4SGFQYW.js.br +0 -0
  125. package/dist/Model3DScene-Y4SGFQYW.js.gz +0 -0
  126. package/dist/PieChart3DScene-TK2VT4RS.js.br +0 -0
  127. package/dist/PieChart3DScene-TK2VT4RS.js.gz +0 -0
  128. package/dist/PieChart3DScene-UD7GRH55.mjs.br +0 -0
  129. package/dist/PieChart3DScene-UD7GRH55.mjs.gz +0 -0
  130. package/dist/SurfaceChart3DScene-ERFXZW2O.js.br +0 -0
  131. package/dist/SurfaceChart3DScene-ERFXZW2O.js.gz +0 -0
  132. package/dist/SurfaceChart3DScene-TXY6UZSW.mjs.br +0 -0
  133. package/dist/SurfaceChart3DScene-TXY6UZSW.mjs.gz +0 -0
  134. package/dist/chunk-ALO4ZOHQ.js.br +0 -0
  135. package/dist/chunk-ALO4ZOHQ.js.gz +0 -0
  136. package/dist/chunk-ARQGUUYU.js.br +0 -0
  137. package/dist/chunk-ARQGUUYU.js.gz +0 -0
  138. package/dist/chunk-B6UIVRFA.js.br +0 -0
  139. package/dist/chunk-B6UIVRFA.js.gz +0 -0
  140. package/dist/chunk-FJDZ7AEE.js.br +0 -0
  141. package/dist/chunk-FMEEIS6L.mjs.br +0 -0
  142. package/dist/chunk-FMEEIS6L.mjs.gz +0 -0
  143. package/dist/chunk-G7UBIKAG.mjs.br +0 -0
  144. package/dist/chunk-PPNXPEEZ.mjs.br +0 -0
  145. package/dist/chunk-PPNXPEEZ.mjs.gz +0 -0
  146. package/dist/chunk-Q52HT4EZ.js.br +0 -0
  147. package/dist/chunk-Q52HT4EZ.js.gz +0 -0
  148. package/dist/chunk-RHSA5BW5.mjs.br +0 -0
  149. package/dist/chunk-RHSA5BW5.mjs.gz +0 -0
  150. package/dist/chunk-RRAL4Y7V.js.br +0 -0
  151. package/dist/chunk-RRAL4Y7V.js.gz +0 -0
  152. package/dist/chunk-RX6FE24O.mjs.br +0 -0
  153. package/dist/chunk-RX6FE24O.mjs.gz +0 -0
  154. package/dist/chunk-UHR7EYFM.mjs.br +0 -0
  155. package/dist/chunk-UHR7EYFM.mjs.gz +0 -0
@@ -1,8 +1,8 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-RX6FE24O.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-UHR7EYFM.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-FMEEIS6L.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-G7UBIKAG.mjs';
5
- import { LOCALE_CATALOG, translationsEn } from './chunk-RHSA5BW5.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-7YCFWEGX.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-7CNSJ35X.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-SMTHK6MD.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-UD7GRH55.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-TXY6UZSW.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-AUVJXXPV.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
  ))
@@ -5009,6 +4997,7 @@ function StaticElementRendererImpl({
5009
4997
  // mode, so without saying so a video here would carry Chrome's
5010
4998
  // scrubber over a slide nobody can play.
5011
4999
  isStaticSurface: true,
5000
+ placeholderPromptMode: "thumbnail",
5012
5001
  slideElements: activeSlide?.elements,
5013
5002
  allSlides,
5014
5003
  sourceSlideIndex,
@@ -5723,13 +5712,12 @@ var ATXT = [
5723
5712
  { id: "right", i: /* @__PURE__ */ jsx(LuAlignRight, { className: ic }), labelKey: "pptx.ribbon.alignRight" },
5724
5713
  { id: "justify", i: /* @__PURE__ */ jsx(LuAlignJustify, { className: ic }), labelKey: "pptx.ribbon.justify" }
5725
5714
  ];
5726
- var DEFAULT_STROKE_WIDTH = 1;
5727
5715
  function ShapeArrangeExtras(p) {
5728
5716
  const { t } = useTranslation();
5729
- const canGroup = p.canEdit && p.selectedCount >= 2;
5730
- const canUngroup = p.canEdit && p.selectedElement?.type === "group";
5731
- const shape = p.selectedElement !== null && hasShapeProperties(p.selectedElement);
5732
- 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);
5733
5721
  return /* @__PURE__ */ jsxs(Fragment, { children: [
5734
5722
  /* @__PURE__ */ jsxs("div", { className: grp, children: [
5735
5723
  /* @__PURE__ */ jsx(
@@ -5764,7 +5752,7 @@ function ShapeArrangeExtras(p) {
5764
5752
  min: "0",
5765
5753
  max: "120",
5766
5754
  step: "0.5",
5767
- disabled: !p.canEdit || !shape,
5755
+ disabled: !canStrokeWidth,
5768
5756
  "aria-label": t("pptx.ribbon.strokeWidth"),
5769
5757
  title: t("pptx.ribbon.strokeWidth"),
5770
5758
  value: strokeWidth,
@@ -6291,7 +6279,7 @@ function AccountPage() {
6291
6279
  return void 0;
6292
6280
  });
6293
6281
  };
6294
- const version = "3.1.5" ;
6282
+ const version = "3.2.0" ;
6295
6283
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
6296
6284
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
6297
6285
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -7062,7 +7050,6 @@ function extractFontInfo(element, themeFonts) {
7062
7050
  fontSize: fontSize !== void 0 && fontSize !== null ? String(fontSize) : defaults.fontSize
7063
7051
  };
7064
7052
  }
7065
- var COMMON_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 20, 24, 28, 32, 36, 40, 44, 48, 54, 60, 72, 96];
7066
7053
  function HomeSection(p) {
7067
7054
  const { t } = useTranslation();
7068
7055
  const [fontMenuOpen, setFontMenuOpen] = useState(false);
@@ -7220,7 +7207,7 @@ function HomeSection(p) {
7220
7207
  ]
7221
7208
  }
7222
7209
  ),
7223
- 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(
7224
7211
  "button",
7225
7212
  {
7226
7213
  type: "button",
@@ -11927,7 +11914,7 @@ function useDrawingOverlay({
11927
11914
  },
11928
11915
  [zoom.canvasStageRef, zoom.editorScale]
11929
11916
  );
11930
- const buildPathD2 = useCallback((pts) => {
11917
+ const buildPathD = useCallback((pts) => {
11931
11918
  if (pts.length === 0) {
11932
11919
  return "";
11933
11920
  }
@@ -12056,7 +12043,7 @@ function useDrawingOverlay({
12056
12043
  };
12057
12044
  onAddFreeformShape?.(freeformShape);
12058
12045
  } else {
12059
- const pathD = buildPathD2(relPoints);
12046
+ const pathD = buildPathD(relPoints);
12060
12047
  const isHighlighter = activeTool === "highlighter";
12061
12048
  const hasPressure = currentStrokePressures.length >= 2 && currentStrokePressures.some((p) => Math.abs(p - currentStrokePressures[0]) > 0.01);
12062
12049
  const ink = {
@@ -12087,13 +12074,13 @@ function useDrawingOverlay({
12087
12074
  isDrawingRef,
12088
12075
  onAddInkElement,
12089
12076
  onAddFreeformShape,
12090
- buildPathD2,
12077
+ buildPathD,
12091
12078
  currentStrokePressures
12092
12079
  ]
12093
12080
  );
12094
12081
  const liveStrokeD = useMemo(
12095
- () => isStrokeActive ? buildPathD2(currentStrokePoints) : "",
12096
- [isStrokeActive, currentStrokePoints, buildPathD2]
12082
+ () => isStrokeActive ? buildPathD(currentStrokePoints) : "",
12083
+ [isStrokeActive, currentStrokePoints, buildPathD]
12097
12084
  );
12098
12085
  return {
12099
12086
  isDrawing,
@@ -21850,7 +21837,13 @@ function ChartDataPointOptions({
21850
21837
  }) })
21851
21838
  ] });
21852
21839
  }
21853
- function ChartDisplayOptions({ style, canEdit, onUpdateStyle }) {
21840
+ function ChartDisplayOptions({
21841
+ style,
21842
+ canEdit,
21843
+ onUpdateStyle,
21844
+ hasGridlines,
21845
+ onToggleGridlines
21846
+ }) {
21854
21847
  const { t } = useTranslation();
21855
21848
  return /* @__PURE__ */ jsxs("div", { className: CARD2, children: [
21856
21849
  /* @__PURE__ */ jsx("div", { className: HEADING2, children: t("pptx.chart.display") }),
@@ -21903,8 +21896,8 @@ function ChartDisplayOptions({ style, canEdit, onUpdateStyle }) {
21903
21896
  {
21904
21897
  type: "checkbox",
21905
21898
  disabled: !canEdit,
21906
- checked: style?.hasGridlines ?? false,
21907
- onChange: (e) => onUpdateStyle({ hasGridlines: e.target.checked }),
21899
+ checked: hasGridlines,
21900
+ onChange: (e) => onToggleGridlines(e.target.checked),
21908
21901
  className: "accent-primary"
21909
21902
  }
21910
21903
  ),
@@ -22113,11 +22106,13 @@ function DebouncedColorInput({
22113
22106
  }
22114
22107
  var DEFAULT_SWATCH = "#4472c4";
22115
22108
  function ChartSeriesColorOptions({
22116
- series,
22109
+ chartData,
22117
22110
  canEdit,
22118
- onSetColor
22111
+ onSetColor,
22112
+ onToggleSecondaryAxis
22119
22113
  }) {
22120
22114
  const { t } = useTranslation();
22115
+ const series = chartData.series;
22121
22116
  if (series.length === 0) {
22122
22117
  return null;
22123
22118
  }
@@ -22125,6 +22120,19 @@ function ChartSeriesColorOptions({
22125
22120
  /* @__PURE__ */ jsx("div", { className: HEADING2, children: t("pptx.chart.seriesColors") }),
22126
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: [
22127
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
+ ] }),
22128
22136
  /* @__PURE__ */ jsx(
22129
22137
  DebouncedColorInput,
22130
22138
  {
@@ -22329,6 +22337,25 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22329
22337
  },
22330
22338
  [chartData, style, onUpdateElement]
22331
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
+ );
22332
22359
  const updateAxis = useCallback(
22333
22360
  (axisType, patch) => {
22334
22361
  if (!chartData) {
@@ -22499,7 +22526,16 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22499
22526
  onUpdateChartData: updateChartData
22500
22527
  }
22501
22528
  ),
22502
- /* @__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
+ ),
22503
22539
  /* @__PURE__ */ jsx(ChartDataLabelOptions, { style, canEdit, onUpdateStyle: updateStyle }),
22504
22540
  /* @__PURE__ */ jsx(ChartAxisOptions, { axes: chartData.axes, canEdit, onUpdateAxis: updateAxis }),
22505
22541
  /* @__PURE__ */ jsx(
@@ -22570,7 +22606,15 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22570
22606
  onSetErrorBars: setSeriesErrorBars
22571
22607
  }
22572
22608
  ),
22573
- /* @__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
+ ),
22574
22618
  /* @__PURE__ */ jsx(
22575
22619
  ChartDataGrid,
22576
22620
  {
@@ -24303,23 +24347,10 @@ function MediaPropertiesPanel({
24303
24347
  }
24304
24348
 
24305
24349
  // src/viewer/components/inspector/fill-stroke-options.ts
24306
- var COMPOUND_LINE_OPTIONS = [
24307
- { value: "sng", label: "Single", i18nKey: "pptx.strokeOptions.compoundSingle" },
24308
- { value: "dbl", label: "Double", i18nKey: "pptx.strokeOptions.compoundDouble" },
24309
- { value: "thickThin", label: "Thick-Thin", i18nKey: "pptx.strokeOptions.compoundThickThin" },
24310
- { value: "thinThick", label: "Thin-Thick", i18nKey: "pptx.strokeOptions.compoundThinThick" },
24311
- { value: "tri", label: "Triple", i18nKey: "pptx.strokeOptions.compoundTriple" }
24312
- ];
24313
- var LINE_JOIN_OPTIONS = [
24314
- { value: "round", label: "Round", i18nKey: "pptx.strokeOptions.joinRound" },
24315
- { value: "bevel", label: "Bevel", i18nKey: "pptx.strokeOptions.joinBevel" },
24316
- { value: "miter", label: "Miter", i18nKey: "pptx.strokeOptions.joinMiter" }
24317
- ];
24318
- var LINE_CAP_OPTIONS = [
24319
- { value: "flat", label: "Flat", i18nKey: "pptx.strokeOptions.capFlat" },
24320
- { value: "rnd", label: "Round", i18nKey: "pptx.strokeOptions.capRound" },
24321
- { value: "sq", label: "Square", i18nKey: "pptx.strokeOptions.capSquare" }
24322
- ];
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;
24323
24354
  var FILL_MODE_OPTIONS2 = [
24324
24355
  { value: "solid", label: "Solid", i18nKey: "pptx.fill.solid" },
24325
24356
  { value: "gradient", label: "Gradient", i18nKey: "pptx.fill.gradient" },
@@ -24327,76 +24358,6 @@ var FILL_MODE_OPTIONS2 = [
24327
24358
  { value: "image", label: "Image", i18nKey: "pptx.inspector.image" },
24328
24359
  { value: "none", label: "None", i18nKey: "pptx.fill.none" }
24329
24360
  ];
24330
- var PATTERN_PRESET_OPTIONS = [
24331
- { value: "pct5", label: "5%", i18nKey: "pptx.fillPatterns.pct5" },
24332
- { value: "pct10", label: "10%", i18nKey: "pptx.fillPatterns.pct10" },
24333
- { value: "pct20", label: "20%", i18nKey: "pptx.fillPatterns.pct20" },
24334
- { value: "pct25", label: "25%", i18nKey: "pptx.fillPatterns.pct25" },
24335
- { value: "pct30", label: "30%", i18nKey: "pptx.fillPatterns.pct30" },
24336
- { value: "pct40", label: "40%", i18nKey: "pptx.fillPatterns.pct40" },
24337
- { value: "pct50", label: "50%", i18nKey: "pptx.fillPatterns.pct50" },
24338
- { value: "pct60", label: "60%", i18nKey: "pptx.fillPatterns.pct60" },
24339
- { value: "pct70", label: "70%", i18nKey: "pptx.fillPatterns.pct70" },
24340
- { value: "pct75", label: "75%", i18nKey: "pptx.fillPatterns.pct75" },
24341
- { value: "pct80", label: "80%", i18nKey: "pptx.fillPatterns.pct80" },
24342
- { value: "pct90", label: "90%", i18nKey: "pptx.fillPatterns.pct90" },
24343
- { value: "horz", label: "Horizontal", i18nKey: "pptx.fillPatterns.horizontal" },
24344
- { value: "vert", label: "Vertical", i18nKey: "pptx.fillPatterns.vertical" },
24345
- { value: "ltHorz", label: "Light Horizontal", i18nKey: "pptx.fillPatterns.lightHorizontal" },
24346
- { value: "ltVert", label: "Light Vertical", i18nKey: "pptx.fillPatterns.lightVertical" },
24347
- { value: "dkHorz", label: "Dark Horizontal", i18nKey: "pptx.fillPatterns.darkHorizontal" },
24348
- { value: "dkVert", label: "Dark Vertical", i18nKey: "pptx.fillPatterns.darkVertical" },
24349
- { value: "narHorz", label: "Narrow Horizontal", i18nKey: "pptx.fillPatterns.narrowHorizontal" },
24350
- { value: "narVert", label: "Narrow Vertical", i18nKey: "pptx.fillPatterns.narrowVertical" },
24351
- { value: "wdHorz", label: "Wide Horizontal", i18nKey: "pptx.fillPatterns.wideHorizontal" },
24352
- { value: "wdVert", label: "Wide Vertical", i18nKey: "pptx.fillPatterns.wideVertical" },
24353
- { value: "dashHorz", label: "Dashed Horizontal", i18nKey: "pptx.fillPatterns.dashedHorizontal" },
24354
- { value: "dashVert", label: "Dashed Vertical", i18nKey: "pptx.fillPatterns.dashedVertical" },
24355
- { value: "cross", label: "Cross", i18nKey: "pptx.fillPatterns.cross" },
24356
- { value: "dnDiag", label: "Down Diagonal", i18nKey: "pptx.fillPatterns.downDiagonal" },
24357
- { value: "upDiag", label: "Up Diagonal", i18nKey: "pptx.fillPatterns.upDiagonal" },
24358
- {
24359
- value: "ltDnDiag",
24360
- label: "Light Down Diagonal",
24361
- i18nKey: "pptx.fillPatterns.lightDownDiagonal"
24362
- },
24363
- { value: "ltUpDiag", label: "Light Up Diagonal", i18nKey: "pptx.fillPatterns.lightUpDiagonal" },
24364
- { value: "dkDnDiag", label: "Dark Down Diagonal", i18nKey: "pptx.fillPatterns.darkDownDiagonal" },
24365
- { value: "dkUpDiag", label: "Dark Up Diagonal", i18nKey: "pptx.fillPatterns.darkUpDiagonal" },
24366
- { value: "wdDnDiag", label: "Wide Down Diagonal", i18nKey: "pptx.fillPatterns.wideDownDiagonal" },
24367
- { value: "wdUpDiag", label: "Wide Up Diagonal", i18nKey: "pptx.fillPatterns.wideUpDiagonal" },
24368
- {
24369
- value: "dashDnDiag",
24370
- label: "Dashed Down Diagonal",
24371
- i18nKey: "pptx.fillPatterns.dashedDownDiagonal"
24372
- },
24373
- {
24374
- value: "dashUpDiag",
24375
- label: "Dashed Up Diagonal",
24376
- i18nKey: "pptx.fillPatterns.dashedUpDiagonal"
24377
- },
24378
- { value: "diagCross", label: "Diagonal Cross", i18nKey: "pptx.fillPatterns.diagonalCross" },
24379
- { value: "smCheck", label: "Small Check", i18nKey: "pptx.fillPatterns.smallCheck" },
24380
- { value: "lgCheck", label: "Large Check", i18nKey: "pptx.fillPatterns.largeCheck" },
24381
- { value: "smGrid", label: "Small Grid", i18nKey: "pptx.fillPatterns.smallGrid" },
24382
- { value: "lgGrid", label: "Large Grid", i18nKey: "pptx.fillPatterns.largeGrid" },
24383
- { value: "dotGrid", label: "Dot Grid", i18nKey: "pptx.fillPatterns.dotGrid" },
24384
- { value: "smConfetti", label: "Small Confetti", i18nKey: "pptx.fillPatterns.smallConfetti" },
24385
- { value: "lgConfetti", label: "Large Confetti", i18nKey: "pptx.fillPatterns.largeConfetti" },
24386
- { value: "horzBrick", label: "Horizontal Brick", i18nKey: "pptx.fillPatterns.horizontalBrick" },
24387
- { value: "diagBrick", label: "Diagonal Brick", i18nKey: "pptx.fillPatterns.diagonalBrick" },
24388
- { value: "solidDmnd", label: "Solid Diamond", i18nKey: "pptx.fillPatterns.solidDiamond" },
24389
- { value: "openDmnd", label: "Open Diamond", i18nKey: "pptx.fillPatterns.openDiamond" },
24390
- { value: "dotDmnd", label: "Dotted Diamond", i18nKey: "pptx.fillPatterns.dottedDiamond" },
24391
- { value: "plaid", label: "Plaid", i18nKey: "pptx.fillPatterns.plaid" },
24392
- { value: "sphere", label: "Sphere", i18nKey: "pptx.fillPatterns.sphere" },
24393
- { value: "weave", label: "Weave", i18nKey: "pptx.fillPatterns.weave" },
24394
- { value: "divot", label: "Divot", i18nKey: "pptx.fillPatterns.divot" },
24395
- { value: "shingle", label: "Shingle", i18nKey: "pptx.fillPatterns.shingle" },
24396
- { value: "wave", label: "Wave", i18nKey: "pptx.fillPatterns.wave" },
24397
- { value: "trellis", label: "Trellis", i18nKey: "pptx.fillPatterns.trellis" },
24398
- { value: "zigZag", label: "Zig Zag", i18nKey: "pptx.fillPatterns.zigZag" }
24399
- ];
24400
24361
  var GRADIENT_TYPE_OPTIONS2 = [
24401
24362
  { value: "linear", label: "Linear", i18nKey: "pptx.gradient.linear" },
24402
24363
  { value: "radial", label: "Radial", i18nKey: "pptx.gradient.radial" }
@@ -24591,6 +24552,7 @@ var SHADOW_EFFECT_CONFIGS = [
24591
24552
  {
24592
24553
  key: "sr",
24593
24554
  label: "Rotate with Shape",
24555
+ i18nKey: "pptx.effects.rotateWithShape",
24594
24556
  type: "checkbox",
24595
24557
  read: (s) => s?.shadowRotateWithShape ?? true,
24596
24558
  write: (v) => ({ shadowRotateWithShape: Boolean(v) })
@@ -25287,7 +25249,7 @@ function FillAdvancedControls({
25287
25249
  style?.fillMode === "pattern" && /* @__PURE__ */ jsxs(Fragment, { children: [
25288
25250
  /* @__PURE__ */ jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
25289
25251
  /* @__PURE__ */ jsx("span", { className: LBL2, children: "Pattern" }),
25290
- /* @__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) => {
25291
25253
  const fgColor = normalizeHexColor(style?.fillColor, DEFAULT_FILL_COLOR);
25292
25254
  const bgColor = normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
25293
25255
  const svgPattern = getPatternSvg(opt.value, fgColor, bgColor);
@@ -25296,7 +25258,7 @@ function FillAdvancedControls({
25296
25258
  "button",
25297
25259
  {
25298
25260
  type: "button",
25299
- title: opt.label,
25261
+ title: t(opt.labelKey),
25300
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"}`,
25301
25263
  onClick: () => onUpdateShapeStyle({
25302
25264
  fillMode: "pattern",
@@ -25499,7 +25461,7 @@ function StrokeEffectsSection({
25499
25461
  ] }),
25500
25462
  /* @__PURE__ */ jsxs("label", { className: `flex flex-col gap-1 ${COL2}`, children: [
25501
25463
  /* @__PURE__ */ jsx("span", { className: LBL2, children: t("pptx.strokeEffects.compoundLine") }),
25502
- /* @__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(
25503
25465
  "button",
25504
25466
  {
25505
25467
  type: "button",
@@ -25544,7 +25506,7 @@ function StrokeEffectsSection({
25544
25506
  {
25545
25507
  label: t("pptx.strokeEffects.lineJoin"),
25546
25508
  value: style?.lineJoin || "round",
25547
- options: LINE_JOIN_OPTIONS,
25509
+ options: LINE_JOIN_OPTIONS2,
25548
25510
  onChange: (v) => onUpdateShapeStyle({ lineJoin: v })
25549
25511
  }
25550
25512
  ),
@@ -25553,7 +25515,7 @@ function StrokeEffectsSection({
25553
25515
  {
25554
25516
  label: t("pptx.strokeEffects.lineCap"),
25555
25517
  value: style?.lineCap || "flat",
25556
- options: LINE_CAP_OPTIONS,
25518
+ options: LINE_CAP_OPTIONS2,
25557
25519
  onChange: (v) => onUpdateShapeStyle({ lineCap: v })
25558
25520
  }
25559
25521
  )
@@ -30090,32 +30052,6 @@ function InspectorPane(props) {
30090
30052
  )
30091
30053
  ] });
30092
30054
  }
30093
- function buildPathD(points) {
30094
- if (points.length === 0) {
30095
- return "";
30096
- }
30097
- const first = points[0];
30098
- let d = `M ${first.x} ${first.y}`;
30099
- for (let i = 1; i < points.length; i++) {
30100
- const pt = points[i];
30101
- d += ` L ${pt.x} ${pt.y}`;
30102
- }
30103
- return d;
30104
- }
30105
- function getCursorForTool(tool) {
30106
- switch (tool) {
30107
- case "laser":
30108
- return "none";
30109
- case "pen":
30110
- return "crosshair";
30111
- case "highlighter":
30112
- return "crosshair";
30113
- case "eraser":
30114
- return "crosshair";
30115
- default:
30116
- return "default";
30117
- }
30118
- }
30119
30055
  function PresentationAnnotationOverlay({
30120
30056
  canvasSize,
30121
30057
  editorScale,
@@ -30226,7 +30162,7 @@ function PresentationAnnotationOverlay({
30226
30162
  className: "absolute inset-0",
30227
30163
  style: {
30228
30164
  zIndex: annotationOverlayZIndex(blackout),
30229
- cursor: getCursorForTool(presentationTool),
30165
+ cursor: cursorForTool(presentationTool),
30230
30166
  pointerEvents: isCapturing ? "auto" : "none"
30231
30167
  },
30232
30168
  children: [
@@ -30249,7 +30185,7 @@ function PresentationAnnotationOverlay({
30249
30185
  children: allStrokes.map((stroke) => /* @__PURE__ */ jsx(
30250
30186
  "path",
30251
30187
  {
30252
- d: buildPathD(stroke.points),
30188
+ d: buildStrokePathD(stroke.points),
30253
30189
  fill: "none",
30254
30190
  stroke: stroke.color,
30255
30191
  strokeWidth: stroke.width,
@@ -34209,24 +34145,9 @@ function EquationEditorDialog({
34209
34145
  }
34210
34146
  );
34211
34147
  }
34212
- var PREVIEW_ELEMENT_WIDTH = 600;
34213
- var PREVIEW_ELEMENT_HEIGHT = 340;
34214
34148
  var PREVIEW_TILE_WIDTH2 = 64;
34215
- var FALLBACK_ITEMS = ["1", "2", "3"];
34216
- function buildPreviewElement(layout) {
34217
- const preset = PRESETS.find((p) => p.layout === layout);
34218
- return {
34219
- id: `smartart-preview-${layout}`,
34220
- type: "smartArt",
34221
- x: 0,
34222
- y: 0,
34223
- width: PREVIEW_ELEMENT_WIDTH,
34224
- height: PREVIEW_ELEMENT_HEIGHT,
34225
- smartArtData: buildSmartArtPresetData(layout, preset?.defaultItems ?? FALLBACK_ITEMS)
34226
- };
34227
- }
34228
34149
  function getPreviewForLayout(layout) {
34229
- const scale = PREVIEW_TILE_WIDTH2 / PREVIEW_ELEMENT_WIDTH;
34150
+ const scale = PREVIEW_TILE_WIDTH2 / SMARTART_PREVIEW_ELEMENT_WIDTH;
34230
34151
  return /* @__PURE__ */ jsx(
34231
34152
  "div",
34232
34153
  {
@@ -34234,18 +34155,18 @@ function getPreviewForLayout(layout) {
34234
34155
  className: "overflow-hidden pointer-events-none",
34235
34156
  style: {
34236
34157
  width: PREVIEW_TILE_WIDTH2,
34237
- height: Math.round(PREVIEW_ELEMENT_HEIGHT * scale)
34158
+ height: Math.round(SMARTART_PREVIEW_ELEMENT_HEIGHT * scale)
34238
34159
  },
34239
34160
  children: /* @__PURE__ */ jsx(
34240
34161
  "div",
34241
34162
  {
34242
34163
  style: {
34243
- width: PREVIEW_ELEMENT_WIDTH,
34244
- height: PREVIEW_ELEMENT_HEIGHT,
34164
+ width: SMARTART_PREVIEW_ELEMENT_WIDTH,
34165
+ height: SMARTART_PREVIEW_ELEMENT_HEIGHT,
34245
34166
  transform: `scale(${scale})`,
34246
34167
  transformOrigin: "top left"
34247
34168
  },
34248
- children: /* @__PURE__ */ jsx(SmartArtRenderer, { element: buildPreviewElement(layout) })
34169
+ children: /* @__PURE__ */ jsx(SmartArtRenderer, { element: buildSmartArtPreviewElement(layout) })
34249
34170
  }
34250
34171
  )
34251
34172
  }
@@ -35402,7 +35323,7 @@ ${url}`)) {
35402
35323
  var AiChatPanel = lazy(async () => {
35403
35324
  const [{ useChat }, { default: Panel }] = await Promise.all([
35404
35325
  import('@ai-sdk/react'),
35405
- import('./AiChatPanel-C3E7NLX3.mjs')
35326
+ import('./AiChatPanel-BNFDBP4S.mjs')
35406
35327
  ]);
35407
35328
  function BoundAiChatPanel(props) {
35408
35329
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -37480,144 +37401,16 @@ function OptionsRibbonPane({
37480
37401
  }
37481
37402
 
37482
37403
  // src/viewer/utils/ai-log-export.ts
37483
- function isoOf(ms) {
37484
- const n = Number.isFinite(ms) ? ms : 0;
37485
- return new Date(n).toISOString();
37486
- }
37487
- function toLogChat(chat, detailed) {
37488
- const messages = chat.messages.map((message) => {
37489
- const parts = toRenderableParts(message);
37490
- const textRuns = [];
37491
- const toolCalls = [];
37492
- for (const part of parts) {
37493
- if (part.kind === "text") {
37494
- textRuns.push(part.text);
37495
- continue;
37496
- }
37497
- toolCalls.push({
37498
- toolName: part.toolName,
37499
- toolCallId: part.toolCallId,
37500
- state: part.state,
37501
- input: detailed ? part.input : void 0,
37502
- output: detailed ? part.output : void 0,
37503
- errorText: part.errorText
37504
- });
37505
- }
37506
- return {
37507
- role: message.role,
37508
- text: textRuns.join("\n\n"),
37509
- toolCalls
37510
- };
37511
- });
37512
- return {
37513
- id: chat.id,
37514
- title: chat.title,
37515
- deckId: chat.deckId,
37516
- createdAt: chat.createdAt,
37517
- updatedAt: chat.updatedAt,
37518
- createdAtIso: isoOf(chat.createdAt),
37519
- updatedAtIso: isoOf(chat.updatedAt),
37520
- messageCount: chat.messages.length,
37521
- messages
37522
- };
37523
- }
37524
- function buildChatLogExport(chats, options) {
37525
- const detailed = options?.detailed ?? true;
37526
- const now = options?.now ?? Date.now();
37527
- return {
37528
- format: "pptx-ai-chat-log",
37529
- version: 1,
37530
- exportedAt: isoOf(now),
37531
- detailed,
37532
- chatCount: chats.length,
37533
- chats: chats.map((chat) => toLogChat(chat, detailed))
37534
- };
37535
- }
37536
- function toolCallLine(call, detailed) {
37537
- const lines = [`- Tool \`${call.toolName}\` (${call.state})`];
37538
- if (call.errorText) {
37539
- lines.push(` - error: ${call.errorText}`);
37540
- }
37541
- if (detailed) {
37542
- lines.push(" - input:");
37543
- lines.push(" ```json");
37544
- lines.push(JSON.stringify(call.input ?? null, null, 2));
37545
- lines.push(" ```");
37546
- lines.push(" - output:");
37547
- lines.push(" ```json");
37548
- lines.push(JSON.stringify(call.output ?? null, null, 2));
37549
- lines.push(" ```");
37550
- }
37551
- return lines.join("\n");
37552
- }
37553
- function buildChatLogMarkdown(doc) {
37554
- const out = [
37555
- `# AI chat logs`,
37556
- "",
37557
- `Exported: ${doc.exportedAt}`,
37558
- `Chats: ${doc.chatCount}`,
37559
- ""
37560
- ];
37561
- for (const chat of doc.chats) {
37562
- out.push(`## ${chat.title || chat.id}`);
37563
- out.push("");
37564
- out.push(`- id: ${chat.id}`);
37565
- if (chat.deckId) {
37566
- out.push(`- deck: ${chat.deckId}`);
37567
- }
37568
- out.push(`- created: ${chat.createdAtIso}`);
37569
- out.push(`- updated: ${chat.updatedAtIso}`);
37570
- out.push(`- messages: ${chat.messageCount}`);
37571
- out.push("");
37572
- for (const message of chat.messages) {
37573
- out.push(`### ${message.role}`);
37574
- out.push("");
37575
- if (message.text) {
37576
- out.push(message.text);
37577
- out.push("");
37578
- }
37579
- for (const call of message.toolCalls) {
37580
- out.push(toolCallLine(call, doc.detailed));
37581
- out.push("");
37582
- }
37583
- }
37584
- }
37585
- return out.join("\n");
37586
- }
37587
- async function collectStoredChats(store) {
37588
- const summaries = await store.listChats();
37589
- const chats = [];
37590
- for (const summary of summaries) {
37591
- const chat = await store.loadChat(summary.id);
37592
- if (chat) {
37593
- chats.push(chat);
37594
- }
37595
- }
37596
- return chats;
37597
- }
37598
- function timestampSlug(now) {
37599
- const d = new Date(now);
37600
- const p = (n) => String(n).padStart(2, "0");
37601
- return `${d.getFullYear()}${p(d.getMonth() + 1)}${p(d.getDate())}-${p(d.getHours())}${p(d.getMinutes())}${p(d.getSeconds())}`;
37602
- }
37603
- async function exportAiChatLogs(options) {
37404
+ async function exportAiChatLogs2(options) {
37604
37405
  const store = options?.store ?? createChatHistoryStore();
37605
- const format = options?.format ?? "json";
37606
- const now = options?.now ?? Date.now();
37607
37406
  const chats = await collectStoredChats(store);
37608
- if (chats.length === 0) {
37609
- return 0;
37610
- }
37611
- const doc = buildChatLogExport(chats, { detailed: options?.detailed ?? true, now });
37612
- const slug = timestampSlug(now);
37613
- if (format === "markdown") {
37614
- const blob = new Blob([buildChatLogMarkdown(doc)], { type: "text/markdown" });
37615
- downloadBlob(blob, `pptx-ai-chats-${slug}.md`);
37616
- } else {
37617
- const blob = new Blob([JSON.stringify(doc, null, 2)], { type: "application/json" });
37618
- downloadBlob(blob, `pptx-ai-chats-${slug}.json`);
37619
- }
37620
- 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
+ );
37621
37414
  }
37622
37415
  function SettingsAiTab({ store }) {
37623
37416
  const { t } = useTranslation();
@@ -37648,7 +37441,7 @@ function SettingsAiTab({ store }) {
37648
37441
  async (format) => {
37649
37442
  setStatus({ kind: "busy" });
37650
37443
  try {
37651
- const count = await exportAiChatLogs({ store: activeStore, format, detailed });
37444
+ const count = await exportAiChatLogs2({ store: activeStore, format, detailed });
37652
37445
  setStatus({ kind: "done", count });
37653
37446
  } catch {
37654
37447
  setStatus({ kind: "done", count: 0 });
@@ -38103,106 +37896,6 @@ function SettingsDialog({
38103
37896
  )
38104
37897
  ] });
38105
37898
  }
38106
-
38107
- // src/viewer/hooks/ai/ai-element-update.ts
38108
- function applyGeometry(el, u) {
38109
- if (u.x !== void 0) {
38110
- el.x = u.x;
38111
- }
38112
- if (u.y !== void 0) {
38113
- el.y = u.y;
38114
- }
38115
- if (u.width !== void 0) {
38116
- el.width = u.width;
38117
- }
38118
- if (u.height !== void 0) {
38119
- el.height = u.height;
38120
- }
38121
- if (u.rotation !== void 0) {
38122
- el.rotation = u.rotation;
38123
- }
38124
- if (u.opacity !== void 0) {
38125
- el.opacity = u.opacity;
38126
- }
38127
- if (u.hidden !== void 0) {
38128
- el.hidden = u.hidden;
38129
- }
38130
- if (u.flipHorizontal !== void 0) {
38131
- el.flipHorizontal = u.flipHorizontal;
38132
- }
38133
- if (u.flipVertical !== void 0) {
38134
- el.flipVertical = u.flipVertical;
38135
- }
38136
- }
38137
- function applyText(el, u) {
38138
- if (!hasTextProperties(el)) {
38139
- return;
38140
- }
38141
- if (typeof u.text === "string") {
38142
- el.text = u.text;
38143
- if (el.textSegments && el.textSegments.length > 0) {
38144
- el.textSegments = [{ text: u.text, style: el.textSegments[0].style }];
38145
- } else {
38146
- el.textSegments = [{ text: u.text, style: {} }];
38147
- }
38148
- }
38149
- const textStyle = {};
38150
- if (u.fontSize !== void 0) {
38151
- textStyle.fontSize = u.fontSize;
38152
- }
38153
- if (u.fontFamily !== void 0) {
38154
- textStyle.fontFamily = u.fontFamily;
38155
- }
38156
- if (u.fontColor !== void 0) {
38157
- textStyle.color = u.fontColor;
38158
- }
38159
- if (u.bold !== void 0) {
38160
- textStyle.bold = u.bold;
38161
- }
38162
- if (u.italic !== void 0) {
38163
- textStyle.italic = u.italic;
38164
- }
38165
- if (u.underline !== void 0) {
38166
- textStyle.underline = u.underline;
38167
- }
38168
- if (u.align !== void 0) {
38169
- textStyle.align = u.align;
38170
- }
38171
- if (Object.keys(textStyle).length === 0) {
38172
- return;
38173
- }
38174
- el.textStyle = { ...el.textStyle, ...textStyle };
38175
- el.textSegments = el.textSegments?.map((seg) => ({
38176
- ...seg,
38177
- style: { ...seg.style, ...textStyle }
38178
- }));
38179
- }
38180
- function applyShapeStyle(el, u) {
38181
- if (!hasShapeProperties(el)) {
38182
- return;
38183
- }
38184
- const shapeStyle = {};
38185
- if (u.fillColor !== void 0) {
38186
- shapeStyle.fillColor = u.fillColor;
38187
- }
38188
- if (u.strokeColor !== void 0) {
38189
- shapeStyle.strokeColor = u.strokeColor;
38190
- }
38191
- if (u.strokeWidth !== void 0) {
38192
- shapeStyle.strokeWidth = u.strokeWidth;
38193
- }
38194
- if (Object.keys(shapeStyle).length === 0) {
38195
- return;
38196
- }
38197
- el.shapeStyle = { ...el.shapeStyle, ...shapeStyle };
38198
- }
38199
- function applyAiElementUpdate(el, updates) {
38200
- applyGeometry(el, updates);
38201
- applyText(el, updates);
38202
- applyShapeStyle(el, updates);
38203
- }
38204
-
38205
- // src/viewer/hooks/ai/useAiBridge.ts
38206
37899
  function useAiBridge(input) {
38207
37900
  const ref = useRef(input);
38208
37901
  ref.current = input;
@@ -38258,7 +37951,7 @@ function useAiBridge(input) {
38258
37951
  applySlidesUpdate((slides) => {
38259
37952
  const el = slides[slideIndex]?.elements.find((e) => e.id === elementId);
38260
37953
  if (el) {
38261
- applyAiElementUpdate(el, updates);
37954
+ applyElementUpdate(el, updates);
38262
37955
  }
38263
37956
  return slides;
38264
37957
  });