pptx-react-viewer 3.7.0 → 3.8.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 +13 -0
  2. package/dist/{AiChatPanel-L5QGWVZK.mjs → AiChatPanel-A5DCEHTO.mjs} +4 -4
  3. package/dist/AiChatPanel-A5DCEHTO.mjs.br +0 -0
  4. package/dist/AiChatPanel-A5DCEHTO.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-M3AHKYPS.js → AiChatPanel-XLQM4BQJ.js} +25 -25
  6. package/dist/AiChatPanel-XLQM4BQJ.js.br +0 -0
  7. package/dist/AiChatPanel-XLQM4BQJ.js.gz +0 -0
  8. package/dist/{Area3DChartScene-AE2XYKDW.mjs → Area3DChartScene-5CMEMIBI.mjs} +1 -1
  9. package/dist/Area3DChartScene-5CMEMIBI.mjs.br +0 -0
  10. package/dist/Area3DChartScene-5CMEMIBI.mjs.gz +0 -0
  11. package/dist/{Area3DChartScene-ZQLQK6L4.js → Area3DChartScene-RZ3V3WOR.js} +2 -2
  12. package/dist/Area3DChartScene-RZ3V3WOR.js.br +0 -0
  13. package/dist/Area3DChartScene-RZ3V3WOR.js.gz +0 -0
  14. package/dist/{Bar3DChartScene-FQV62XOI.mjs → Bar3DChartScene-H3MYUJKV.mjs} +1 -1
  15. package/dist/Bar3DChartScene-H3MYUJKV.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-H3MYUJKV.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-TZ6ADFBS.js → Bar3DChartScene-KHCQ6TEC.js} +2 -2
  18. package/dist/Bar3DChartScene-KHCQ6TEC.js.br +0 -0
  19. package/dist/Bar3DChartScene-KHCQ6TEC.js.gz +0 -0
  20. package/dist/{Line3DChartScene-5CKPAX63.js → Line3DChartScene-QEACF3U3.js} +2 -2
  21. package/dist/Line3DChartScene-QEACF3U3.js.br +0 -0
  22. package/dist/Line3DChartScene-QEACF3U3.js.gz +0 -0
  23. package/dist/{Line3DChartScene-FEUY3PCE.mjs → Line3DChartScene-YFRPJHDX.mjs} +1 -1
  24. package/dist/Line3DChartScene-YFRPJHDX.mjs.br +0 -0
  25. package/dist/Line3DChartScene-YFRPJHDX.mjs.gz +0 -0
  26. package/dist/{Model3DScene-V3DHIISV.mjs → Model3DScene-O24KP723.mjs} +1 -1
  27. package/dist/Model3DScene-O24KP723.mjs.br +0 -0
  28. package/dist/Model3DScene-O24KP723.mjs.gz +0 -0
  29. package/dist/{Model3DScene-BLXEALM6.js → Model3DScene-QQWKGJ3T.js} +2 -2
  30. package/dist/{Model3DScene-BLXEALM6.js.br → Model3DScene-QQWKGJ3T.js.br} +0 -0
  31. package/dist/Model3DScene-QQWKGJ3T.js.gz +0 -0
  32. package/dist/{PieChart3DScene-VZI2VARG.mjs → PieChart3DScene-CI6CW22C.mjs} +1 -1
  33. package/dist/{PieChart3DScene-VZI2VARG.mjs.br → PieChart3DScene-CI6CW22C.mjs.br} +0 -0
  34. package/dist/PieChart3DScene-CI6CW22C.mjs.gz +0 -0
  35. package/dist/{PieChart3DScene-GHHT3PDV.js → PieChart3DScene-L3MHKQHW.js} +2 -2
  36. package/dist/{PieChart3DScene-GHHT3PDV.js.br → PieChart3DScene-L3MHKQHW.js.br} +0 -0
  37. package/dist/PieChart3DScene-L3MHKQHW.js.gz +0 -0
  38. package/dist/PowerPointViewer-Cl6jBPNw.d.ts.map +1 -1
  39. package/dist/{SurfaceChart3DScene-WWIMQ65D.js → SurfaceChart3DScene-5IER6VFW.js} +2 -2
  40. package/dist/{SurfaceChart3DScene-WWIMQ65D.js.br → SurfaceChart3DScene-5IER6VFW.js.br} +0 -0
  41. package/dist/SurfaceChart3DScene-5IER6VFW.js.gz +0 -0
  42. package/dist/{SurfaceChart3DScene-T36E2HBA.mjs → SurfaceChart3DScene-JUXRC3K2.mjs} +1 -1
  43. package/dist/SurfaceChart3DScene-JUXRC3K2.mjs.br +0 -0
  44. package/dist/SurfaceChart3DScene-JUXRC3K2.mjs.gz +0 -0
  45. package/dist/{audience-content-store-bR7Gs_1S.d.ts → audience-content-store-CB2WVM1K.d.ts} +12 -3
  46. package/dist/{audience-content-store-bR7Gs_1S.d.ts.map → audience-content-store-CB2WVM1K.d.ts.map} +1 -1
  47. package/dist/{chunk-TUSALM3A.js → chunk-4222CHFH.js} +1709 -1235
  48. package/dist/chunk-4222CHFH.js.br +0 -0
  49. package/dist/chunk-4222CHFH.js.gz +0 -0
  50. package/dist/{chunk-NV55GU5V.mjs → chunk-6IMB5DNJ.mjs} +4953 -3103
  51. package/dist/chunk-6IMB5DNJ.mjs.br +0 -0
  52. package/dist/chunk-6IMB5DNJ.mjs.gz +0 -0
  53. package/dist/{chunk-OBE4TB76.js → chunk-DE3S3UHX.js} +551 -574
  54. package/dist/chunk-DE3S3UHX.js.br +0 -0
  55. package/dist/chunk-DE3S3UHX.js.gz +0 -0
  56. package/dist/{chunk-3EJFZ7TE.js → chunk-F5NPGNMA.js} +9 -5
  57. package/dist/chunk-F5NPGNMA.js.br +0 -0
  58. package/dist/chunk-F5NPGNMA.js.gz +0 -0
  59. package/dist/{chunk-FGTMS7LR.mjs → chunk-FRZIBZTE.mjs} +55 -4
  60. package/dist/chunk-FRZIBZTE.mjs.br +0 -0
  61. package/dist/chunk-FRZIBZTE.mjs.gz +0 -0
  62. package/dist/{chunk-W24OJ7H5.js → chunk-L3ZIBQEB.js} +55 -4
  63. package/dist/chunk-L3ZIBQEB.js.br +0 -0
  64. package/dist/chunk-L3ZIBQEB.js.gz +0 -0
  65. package/dist/{chunk-TXY2E7VQ.mjs → chunk-PFPKBNNZ.mjs} +509 -35
  66. package/dist/chunk-PFPKBNNZ.mjs.br +0 -0
  67. package/dist/chunk-PFPKBNNZ.mjs.gz +0 -0
  68. package/dist/{chunk-VIFDZIVX.js → chunk-QWA5YEIZ.js} +187 -176
  69. package/dist/chunk-QWA5YEIZ.js.br +0 -0
  70. package/dist/chunk-QWA5YEIZ.js.gz +0 -0
  71. package/dist/{chunk-JANUSAEK.mjs → chunk-RHWQKZLB.mjs} +14 -3
  72. package/dist/chunk-RHWQKZLB.mjs.br +0 -0
  73. package/dist/chunk-RHWQKZLB.mjs.gz +0 -0
  74. package/dist/{chunk-WKODF5ZU.mjs → chunk-RNP5HP4L.mjs} +5 -2
  75. package/dist/chunk-RNP5HP4L.mjs.br +0 -0
  76. package/dist/chunk-RNP5HP4L.mjs.gz +0 -0
  77. package/dist/{chunk-DCNHUEWQ.js → chunk-SN5EUDIT.js} +4972 -3103
  78. package/dist/chunk-SN5EUDIT.js.br +0 -0
  79. package/dist/chunk-SN5EUDIT.js.gz +0 -0
  80. package/dist/{chunk-PC62KGU3.mjs → chunk-UPJW34YG.mjs} +124 -147
  81. package/dist/chunk-UPJW34YG.mjs.br +0 -0
  82. package/dist/chunk-UPJW34YG.mjs.gz +0 -0
  83. package/dist/i18n.js +4 -4
  84. package/dist/i18n.js.br +0 -0
  85. package/dist/i18n.js.gz +0 -0
  86. package/dist/i18n.mjs +1 -1
  87. package/dist/i18n.mjs.br +0 -0
  88. package/dist/i18n.mjs.gz +0 -0
  89. package/dist/index.d.ts +179 -23
  90. package/dist/index.js +47 -47
  91. package/dist/index.js.br +0 -0
  92. package/dist/index.js.gz +0 -0
  93. package/dist/index.mjs +6 -6
  94. package/dist/index.mjs.br +0 -0
  95. package/dist/index.mjs.gz +0 -0
  96. package/dist/internals.d.ts +352 -171
  97. package/dist/internals.d.ts.map +1 -1
  98. package/dist/internals.js +79 -79
  99. package/dist/internals.js.br +0 -0
  100. package/dist/internals.js.gz +0 -0
  101. package/dist/internals.mjs +4 -4
  102. package/dist/internals.mjs.br +0 -0
  103. package/dist/internals.mjs.gz +0 -0
  104. package/dist/types-Bzdkiakq.d.ts.map +1 -1
  105. package/dist/viewer/index.d.ts +150 -23
  106. package/dist/viewer/index.js +27 -27
  107. package/dist/viewer/index.js.br +0 -0
  108. package/dist/viewer/index.js.gz +0 -0
  109. package/dist/viewer/index.mjs +6 -6
  110. package/dist/viewer/index.mjs.br +0 -0
  111. package/dist/viewer/index.mjs.gz +0 -0
  112. package/package.json +2 -2
  113. package/dist/AiChatPanel-L5QGWVZK.mjs.br +0 -0
  114. package/dist/AiChatPanel-L5QGWVZK.mjs.gz +0 -0
  115. package/dist/AiChatPanel-M3AHKYPS.js.br +0 -0
  116. package/dist/AiChatPanel-M3AHKYPS.js.gz +0 -0
  117. package/dist/Area3DChartScene-AE2XYKDW.mjs.br +0 -1
  118. package/dist/Area3DChartScene-AE2XYKDW.mjs.gz +0 -0
  119. package/dist/Area3DChartScene-ZQLQK6L4.js.br +0 -0
  120. package/dist/Area3DChartScene-ZQLQK6L4.js.gz +0 -0
  121. package/dist/Bar3DChartScene-FQV62XOI.mjs.br +0 -2
  122. package/dist/Bar3DChartScene-FQV62XOI.mjs.gz +0 -0
  123. package/dist/Bar3DChartScene-TZ6ADFBS.js.br +0 -0
  124. package/dist/Bar3DChartScene-TZ6ADFBS.js.gz +0 -0
  125. package/dist/Line3DChartScene-5CKPAX63.js.br +0 -0
  126. package/dist/Line3DChartScene-5CKPAX63.js.gz +0 -0
  127. package/dist/Line3DChartScene-FEUY3PCE.mjs.br +0 -1
  128. package/dist/Line3DChartScene-FEUY3PCE.mjs.gz +0 -0
  129. package/dist/Model3DScene-BLXEALM6.js.gz +0 -0
  130. package/dist/Model3DScene-V3DHIISV.mjs.br +0 -0
  131. package/dist/Model3DScene-V3DHIISV.mjs.gz +0 -0
  132. package/dist/PieChart3DScene-GHHT3PDV.js.gz +0 -0
  133. package/dist/PieChart3DScene-VZI2VARG.mjs.gz +0 -0
  134. package/dist/SurfaceChart3DScene-T36E2HBA.mjs.br +0 -0
  135. package/dist/SurfaceChart3DScene-T36E2HBA.mjs.gz +0 -0
  136. package/dist/SurfaceChart3DScene-WWIMQ65D.js.gz +0 -0
  137. package/dist/chunk-3EJFZ7TE.js.br +0 -0
  138. package/dist/chunk-3EJFZ7TE.js.gz +0 -0
  139. package/dist/chunk-DCNHUEWQ.js.br +0 -0
  140. package/dist/chunk-DCNHUEWQ.js.gz +0 -0
  141. package/dist/chunk-FGTMS7LR.mjs.br +0 -0
  142. package/dist/chunk-FGTMS7LR.mjs.gz +0 -0
  143. package/dist/chunk-JANUSAEK.mjs.br +0 -0
  144. package/dist/chunk-JANUSAEK.mjs.gz +0 -0
  145. package/dist/chunk-NV55GU5V.mjs.br +0 -0
  146. package/dist/chunk-NV55GU5V.mjs.gz +0 -0
  147. package/dist/chunk-OBE4TB76.js.br +0 -0
  148. package/dist/chunk-OBE4TB76.js.gz +0 -0
  149. package/dist/chunk-PC62KGU3.mjs.br +0 -0
  150. package/dist/chunk-PC62KGU3.mjs.gz +0 -0
  151. package/dist/chunk-TUSALM3A.js.br +0 -0
  152. package/dist/chunk-TUSALM3A.js.gz +0 -0
  153. package/dist/chunk-TXY2E7VQ.mjs.br +0 -0
  154. package/dist/chunk-TXY2E7VQ.mjs.gz +0 -0
  155. package/dist/chunk-VIFDZIVX.js.br +0 -0
  156. package/dist/chunk-VIFDZIVX.js.gz +0 -0
  157. package/dist/chunk-W24OJ7H5.js.br +0 -0
  158. package/dist/chunk-W24OJ7H5.js.gz +0 -0
  159. package/dist/chunk-WKODF5ZU.mjs.br +0 -0
  160. package/dist/chunk-WKODF5ZU.mjs.gz +0 -0
@@ -1,8 +1,8 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-WKODF5ZU.mjs';
2
- import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, safePrompt, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, syncSelectionHandleOverlay } from './chunk-PC62KGU3.mjs';
3
- import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, STROKE_DASH_OPTIONS } from './chunk-JANUSAEK.mjs';
4
- import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, resolveElementAriaAttributes, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, getComputedFillStyle, strokeOutlineViewBox, getElementTransform, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, isWedgeCalloutPresetShape, isElementActionable, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, elementIdSelector, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, modelDataToBlobUrl, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, getInlineEditorSelection, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, collectCoherent3DOffNodeIds, extractPathPoints, generatePressureCircles, generateNibMarks, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent2, resolveDefaultPrintSettings, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, readSoundFileAsDataUrl, applyTransitionSoundFile, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, getElementTransformWithoutRotation, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, resolveSlideSizeSelection, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeDescriptors, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRemoved, withChartUserShapeUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-NV55GU5V.mjs';
5
- import { LOCALE_CATALOG, translationsEn } from './chunk-FGTMS7LR.mjs';
1
+ import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-RNP5HP4L.mjs';
2
+ import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, safePrompt, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, syncSelectionHandleOverlay } from './chunk-UPJW34YG.mjs';
3
+ import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, STROKE_DASH_OPTIONS } from './chunk-RHWQKZLB.mjs';
4
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, buildDeckSaveOptions, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, getComputedFillStyle, strokeOutlineViewBox, getElementTransform, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, isWedgeCalloutPresetShape, isElementActionable, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, elementIdSelector, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, modelDataToBlobUrl, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, getInlineEditorSelection, findChartPartTarget, advanceChartMarkDrag, advanceChartValueDrag, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, collectCoherent3DOffNodeIds, extractPathPoints, generatePressureCircles, generateNibMarks, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent2, resolveDefaultPrintSettings, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, readSoundFileAsDataUrl, applyTransitionSoundFile, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, getElementTransformWithoutRotation, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, 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, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeDescriptors, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRemoved, withChartUserShapeUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-6IMB5DNJ.mjs';
5
+ import { LOCALE_CATALOG, translationsEn } from './chunk-FRZIBZTE.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-AE2XYKDW.mjs');
517
+ return await import('./Area3DChartScene-5CMEMIBI.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-FQV62XOI.mjs');
573
+ return await import('./Bar3DChartScene-H3MYUJKV.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-FEUY3PCE.mjs');
629
+ return await import('./Line3DChartScene-YFRPJHDX.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-VZI2VARG.mjs');
685
+ return await import('./PieChart3DScene-CI6CW22C.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-T36E2HBA.mjs');
741
+ return await import('./SurfaceChart3DScene-JUXRC3K2.mjs');
742
742
  } catch {
743
743
  return { default: FailedToLoad5 };
744
744
  }
@@ -797,6 +797,7 @@ function ChartElementView({
797
797
  }) {
798
798
  const wrapperRef = useRef(null);
799
799
  const dragRef = useRef(null);
800
+ const markDragRef = useRef(null);
800
801
  const { selection, setSelection } = useChartPartSelection();
801
802
  const [previewData, setPreviewData] = useState(null);
802
803
  const [dragValue, setDragValue] = useState(null);
@@ -831,11 +832,18 @@ function ChartElementView({
831
832
  });
832
833
  const endDrag = (commit) => {
833
834
  const active = dragRef.current;
835
+ const markActive = markDragRef.current;
834
836
  dragRef.current = null;
837
+ markDragRef.current = null;
835
838
  setPreviewData(null);
836
839
  setDragValue(null);
837
- if (commit && active?.moved && active.lastData && onUpdateElement) {
840
+ if (!commit || !onUpdateElement) {
841
+ return;
842
+ }
843
+ if (active?.moved && active.lastData) {
838
844
  onUpdateElement({ chartData: active.lastData });
845
+ } else if (markActive?.moved && markActive.lastData) {
846
+ onUpdateElement({ chartData: markActive.lastData });
839
847
  }
840
848
  };
841
849
  useEffect(() => {
@@ -863,13 +871,44 @@ function ChartElementView({
863
871
  if (!viewModel || !element.chartData) {
864
872
  return;
865
873
  }
866
- const started = beginChartValueDrag({
867
- part,
868
- viewModel,
869
- chartData: element.chartData,
870
- clientY: e.clientY
871
- });
872
- if (!started) {
874
+ let captured = false;
875
+ const chartKind = resolveChartKind(element.chartData.chartType ?? "bar");
876
+ if (part.pointIndex !== void 0 && chartKind !== "unsupported") {
877
+ const markGeometry = buildChartMarkDragGeometry({
878
+ kind: chartKind,
879
+ element,
880
+ chartData: element.chartData,
881
+ categoryLabels: element.chartData.categories,
882
+ seriesIndex: part.seriesIndex,
883
+ pointIndex: part.pointIndex
884
+ });
885
+ const startedMark = beginChartMarkDrag({
886
+ part,
887
+ geometry: markGeometry,
888
+ chartData: element.chartData,
889
+ svgWidth: viewModel.svgWidth,
890
+ svgHeight: viewModel.svgHeight,
891
+ clientX: e.clientX,
892
+ clientY: e.clientY
893
+ });
894
+ if (startedMark) {
895
+ markDragRef.current = startedMark;
896
+ captured = true;
897
+ }
898
+ }
899
+ if (!captured) {
900
+ const started = beginChartValueDrag({
901
+ part,
902
+ viewModel,
903
+ chartData: element.chartData,
904
+ clientY: e.clientY
905
+ });
906
+ if (started) {
907
+ dragRef.current = started;
908
+ captured = true;
909
+ }
910
+ }
911
+ if (!captured) {
873
912
  return;
874
913
  }
875
914
  e.preventDefault();
@@ -877,9 +916,22 @@ function ChartElementView({
877
916
  e.currentTarget.setPointerCapture?.(e.pointerId);
878
917
  } catch {
879
918
  }
880
- dragRef.current = started;
881
919
  };
882
920
  const handlePointerMove = (e) => {
921
+ const markActive = markDragRef.current;
922
+ if (markActive) {
923
+ const rect = wrapperRef.current?.querySelector("svg")?.getBoundingClientRect();
924
+ if (!rect) {
925
+ return;
926
+ }
927
+ const step2 = advanceChartMarkDrag(markActive, e.clientX, e.clientY, rect);
928
+ if (!step2) {
929
+ return;
930
+ }
931
+ setPreviewData(step2.chartData);
932
+ setDragValue(step2.value);
933
+ return;
934
+ }
883
935
  const active = dragRef.current;
884
936
  if (!active) {
885
937
  return;
@@ -893,7 +945,7 @@ function ChartElementView({
893
945
  setDragValue(step.value);
894
946
  };
895
947
  const handlePointerUp = () => {
896
- if (dragRef.current) {
948
+ if (dragRef.current || markDragRef.current) {
897
949
  endDrag(true);
898
950
  }
899
951
  };
@@ -1502,7 +1554,8 @@ var ConnectorElementRenderer = React19.memo(
1502
1554
  adjustmentHandles: adjH,
1503
1555
  onResizePointerDown,
1504
1556
  onAdjustmentPointerDown,
1505
- animationState
1557
+ animationState,
1558
+ textStyleOverrideCss
1506
1559
  }) {
1507
1560
  const shapeEl = hasShapeProperties(el) ? el : void 0;
1508
1561
  const boxWidth = Math.max(el.width, MIN_ELEMENT_SIZE);
@@ -1570,6 +1623,7 @@ var ConnectorElementRenderer = React19.memo(
1570
1623
  ...lineGlow ? { filter: lineGlow } : {}
1571
1624
  },
1572
1625
  children: [
1626
+ textStyleOverrideCss && /* @__PURE__ */ jsx("style", { children: textStyleOverrideCss }),
1573
1627
  /* @__PURE__ */ jsxs(
1574
1628
  "svg",
1575
1629
  {
@@ -2186,6 +2240,7 @@ var ElementRenderer = React19.memo(
2186
2240
  const visualAnimationState = backgroundAnimationState ?? animationState;
2187
2241
  const isTxt = isEditableTextElement(el) && allow.textEditable;
2188
2242
  const txtSE = hasTextProperties(el) ? el.textStyle : void 0;
2243
+ const textStyleOverrideCss = buildTextStyleOverrideCss(el.id, visualAnimationState?.textStyle);
2189
2244
  const ss = getShapeVisualStyle(
2190
2245
  el,
2191
2246
  hf,
@@ -2236,7 +2291,8 @@ var ElementRenderer = React19.memo(
2236
2291
  adjustmentHandles: adjH,
2237
2292
  onResizePointerDown,
2238
2293
  onAdjustmentPointerDown,
2239
- animationState
2294
+ animationState,
2295
+ textStyleOverrideCss
2240
2296
  }
2241
2297
  );
2242
2298
  }
@@ -2319,6 +2375,7 @@ var ElementRenderer = React19.memo(
2319
2375
  ...interactionProps,
2320
2376
  children: [
2321
2377
  renderDagDuotoneFilterForElement(el),
2378
+ textStyleOverrideCss && /* @__PURE__ */ jsx("style", { children: textStyleOverrideCss }),
2322
2379
  backgroundAnimationState ? /* @__PURE__ */ jsxs(
2323
2380
  "div",
2324
2381
  {
@@ -3028,7 +3085,7 @@ function FailedToLoad6() {
3028
3085
  var LazyModel3DScene = React19.lazy(
3029
3086
  async () => {
3030
3087
  try {
3031
- return await import('./Model3DScene-V3DHIISV.mjs');
3088
+ return await import('./Model3DScene-O24KP723.mjs');
3032
3089
  } catch {
3033
3090
  return { default: FailedToLoad6 };
3034
3091
  }
@@ -6333,7 +6390,7 @@ function AccountPage() {
6333
6390
  return void 0;
6334
6391
  });
6335
6392
  };
6336
- const version = "3.6.0" ;
6393
+ const version = "3.7.0" ;
6337
6394
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
6338
6395
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
6339
6396
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -22630,7 +22687,8 @@ function ChartTypeSelector({
22630
22687
  seriesCount,
22631
22688
  categoryCount,
22632
22689
  canEdit,
22633
- onUpdateChartData
22690
+ onUpdateChartData,
22691
+ onTitleChange
22634
22692
  }) {
22635
22693
  const { t } = useTranslation();
22636
22694
  const supportsGrouping = GROUPING_SUPPORTED_TYPES.has(chartType);
@@ -22654,7 +22712,7 @@ function ChartTypeSelector({
22654
22712
  disabled: !canEdit,
22655
22713
  className: INPUT2,
22656
22714
  value: title ?? "",
22657
- onChange: (e) => onUpdateChartData({ title: e.target.value })
22715
+ onChange: (e) => onTitleChange(e.target.value)
22658
22716
  }
22659
22717
  )
22660
22718
  ] }),
@@ -22843,6 +22901,15 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
22843
22901
  },
22844
22902
  [chartData, replaceChartData]
22845
22903
  );
22904
+ const updateTitle = useCallback(
22905
+ (text) => {
22906
+ if (!chartData) {
22907
+ return;
22908
+ }
22909
+ updateChartData(collapseChartTitleRunsForEdit(chartData, text));
22910
+ },
22911
+ [chartData, updateChartData]
22912
+ );
22846
22913
  const updateStyle = useCallback(
22847
22914
  (patch) => {
22848
22915
  if (!chartData) {
@@ -23043,7 +23110,8 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
23043
23110
  seriesCount: series.length,
23044
23111
  categoryCount: categories.length,
23045
23112
  canEdit,
23046
- onUpdateChartData: updateChartData
23113
+ onUpdateChartData: updateChartData,
23114
+ onTitleChange: updateTitle
23047
23115
  }
23048
23116
  ),
23049
23117
  /* @__PURE__ */ jsx(
@@ -24873,6 +24941,48 @@ function MediaPropertiesPanel({
24873
24941
  )
24874
24942
  ] });
24875
24943
  }
24944
+ function AccessibilityTextSection({
24945
+ selectedElement,
24946
+ canEdit,
24947
+ onUpdateElement
24948
+ }) {
24949
+ const { t } = useTranslation();
24950
+ const fields = getNonVisualDescriptionFields(selectedElement);
24951
+ if (!fields.showAltText && !fields.showTitle) {
24952
+ return null;
24953
+ }
24954
+ return /* @__PURE__ */ jsxs("div", { className: CARD, "data-pptx-accessibility-text": true, children: [
24955
+ /* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.accessibility.heading", "Accessibility") }),
24956
+ fields.showAltText && /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
24957
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.elementAccessibility.altText") }),
24958
+ /* @__PURE__ */ jsx(
24959
+ "textarea",
24960
+ {
24961
+ rows: 2,
24962
+ disabled: !canEdit,
24963
+ placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
24964
+ className: cn(INPUT, "resize-none text-[11px]"),
24965
+ value: fields.altText,
24966
+ onChange: (e) => onUpdateElement({ altText: e.target.value })
24967
+ }
24968
+ )
24969
+ ] }),
24970
+ fields.showTitle && /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
24971
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.elementAccessibility.title") }),
24972
+ /* @__PURE__ */ jsx(
24973
+ "input",
24974
+ {
24975
+ type: "text",
24976
+ disabled: !canEdit,
24977
+ placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
24978
+ className: cn(INPUT, "text-[11px]"),
24979
+ value: fields.title,
24980
+ onChange: (e) => onUpdateElement({ title: e.target.value })
24981
+ }
24982
+ )
24983
+ ] })
24984
+ ] });
24985
+ }
24876
24986
 
24877
24987
  // src/viewer/components/inspector/fill-stroke-options.ts
24878
24988
  var COMPOUND_LINE_OPTIONS2 = COMPOUND_LINE_OPTIONS;
@@ -27104,6 +27214,14 @@ function ShapeTextPanels({
27104
27214
  canEdit,
27105
27215
  onUpdateTextStyle
27106
27216
  }
27217
+ ),
27218
+ (selectedElement.type === "text" || selectedElement.type === "shape" || selectedElement.type === "connector") && /* @__PURE__ */ jsx(
27219
+ AccessibilityTextSection,
27220
+ {
27221
+ selectedElement,
27222
+ canEdit,
27223
+ onUpdateElement
27224
+ }
27107
27225
  )
27108
27226
  ] });
27109
27227
  }
@@ -28438,13 +28556,252 @@ function TableCellFormattingPanel({
28438
28556
  ] })
28439
28557
  ] });
28440
28558
  }
28559
+ function TableStyleEditorFields({
28560
+ descriptor,
28561
+ canEdit,
28562
+ onEdit
28563
+ }) {
28564
+ const { t } = useTranslation();
28565
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
28566
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
28567
+ /* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.tableStyleEditor.fillSection") }),
28568
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
28569
+ /* @__PURE__ */ jsx(
28570
+ "input",
28571
+ {
28572
+ type: "color",
28573
+ disabled: !canEdit,
28574
+ value: descriptor.fill.color.hex,
28575
+ onChange: (e) => onEdit({ kind: "fillColor", hex: e.target.value, ref: void 0 }),
28576
+ className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer"
28577
+ }
28578
+ ),
28579
+ /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1", children: [
28580
+ /* @__PURE__ */ jsx(
28581
+ "input",
28582
+ {
28583
+ type: "checkbox",
28584
+ disabled: !canEdit,
28585
+ checked: descriptor.fill.noFill,
28586
+ onChange: (e) => onEdit({ kind: "fillNone", noFill: e.target.checked })
28587
+ }
28588
+ ),
28589
+ t("pptx.tableStyleEditor.noFill")
28590
+ ] })
28591
+ ] }),
28592
+ /* @__PURE__ */ jsx(
28593
+ ThemeColorSwatchGrid,
28594
+ {
28595
+ prefix: "table-style-fill",
28596
+ disabled: !canEdit,
28597
+ selectedRef: descriptor.fill.color.ref,
28598
+ selectedHex: descriptor.fill.color.hex,
28599
+ onPick: (c) => onEdit({ kind: "fillColor", hex: c.hex, ref: c.ref })
28600
+ }
28601
+ )
28602
+ ] }),
28603
+ descriptor.hasTextAndBorders && /* @__PURE__ */ jsxs(Fragment, { children: [
28604
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
28605
+ /* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.tableStyleEditor.textSection") }),
28606
+ /* @__PURE__ */ jsx("div", { className: "flex gap-1", children: ["bold", "italic", "underline"].map((flag) => /* @__PURE__ */ jsx(
28607
+ "button",
28608
+ {
28609
+ type: "button",
28610
+ disabled: !canEdit,
28611
+ className: `${BTN} ${descriptor.text[flag] ? "bg-accent" : ""}`,
28612
+ onClick: () => onEdit(textFlagEdit(flag, !descriptor.text[flag])),
28613
+ children: t(`pptx.format.${flag}`)
28614
+ },
28615
+ flag
28616
+ )) }),
28617
+ /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
28618
+ /* @__PURE__ */ jsx("span", { children: t("pptx.tableStyleEditor.textColor") }),
28619
+ /* @__PURE__ */ jsx(
28620
+ "input",
28621
+ {
28622
+ type: "color",
28623
+ disabled: !canEdit,
28624
+ value: descriptor.text.color.hex,
28625
+ onChange: (e) => onEdit({ kind: "textColor", hex: e.target.value, ref: void 0 }),
28626
+ className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer"
28627
+ }
28628
+ )
28629
+ ] }),
28630
+ /* @__PURE__ */ jsx(
28631
+ ThemeColorSwatchGrid,
28632
+ {
28633
+ prefix: "table-style-text",
28634
+ disabled: !canEdit,
28635
+ selectedRef: descriptor.text.color.ref,
28636
+ selectedHex: descriptor.text.color.hex,
28637
+ onPick: (c) => onEdit({ kind: "textColor", hex: c.hex, ref: c.ref })
28638
+ }
28639
+ )
28640
+ ] }),
28641
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
28642
+ /* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.tableStyleEditor.bordersSection") }),
28643
+ TABLE_STYLE_BORDER_SIDES.map((side) => /* @__PURE__ */ jsx(
28644
+ BorderSideRow,
28645
+ {
28646
+ side,
28647
+ state: descriptor.borders[side],
28648
+ canEdit,
28649
+ onEdit
28650
+ },
28651
+ side
28652
+ ))
28653
+ ] })
28654
+ ] })
28655
+ ] });
28656
+ }
28657
+ function textFlagEdit(flag, value) {
28658
+ if (flag === "bold") {
28659
+ return { kind: "textBold", value };
28660
+ }
28661
+ if (flag === "italic") {
28662
+ return { kind: "textItalic", value };
28663
+ }
28664
+ return { kind: "textUnderline", value };
28665
+ }
28666
+ function BorderSideRow({
28667
+ side,
28668
+ state,
28669
+ canEdit,
28670
+ onEdit
28671
+ }) {
28672
+ const { t } = useTranslation();
28673
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
28674
+ /* @__PURE__ */ jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
28675
+ /* @__PURE__ */ jsx(
28676
+ "input",
28677
+ {
28678
+ type: "color",
28679
+ disabled: !canEdit,
28680
+ value: state.color.hex,
28681
+ onChange: (e) => onEdit({ kind: "borderColor", side, hex: e.target.value, ref: void 0 }),
28682
+ className: "h-6 w-7 rounded border border-border bg-transparent cursor-pointer"
28683
+ }
28684
+ ),
28685
+ /* @__PURE__ */ jsx(
28686
+ "input",
28687
+ {
28688
+ type: "number",
28689
+ min: 0,
28690
+ max: 20,
28691
+ disabled: !canEdit,
28692
+ value: state.width,
28693
+ onChange: (e) => onEdit({ kind: "borderWidth", side, width: Number(e.target.value) }),
28694
+ className: `${INPUT} w-12`
28695
+ }
28696
+ ),
28697
+ /* @__PURE__ */ jsx(
28698
+ "select",
28699
+ {
28700
+ disabled: !canEdit,
28701
+ value: state.dash,
28702
+ onChange: (e) => onEdit({ kind: "borderDash", side, dash: e.target.value }),
28703
+ className: INPUT,
28704
+ children: TABLE_STYLE_DASH_PRESETS.map((dash) => /* @__PURE__ */ jsx("option", { value: dash, children: dash }, dash))
28705
+ }
28706
+ ),
28707
+ /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1 shrink-0", children: [
28708
+ /* @__PURE__ */ jsx(
28709
+ "input",
28710
+ {
28711
+ type: "checkbox",
28712
+ disabled: !canEdit,
28713
+ checked: state.noFill,
28714
+ onChange: (e) => onEdit({ kind: "borderNone", side, noFill: e.target.checked })
28715
+ }
28716
+ ),
28717
+ t("pptx.tableStyleEditor.noBorder")
28718
+ ] })
28719
+ ] });
28720
+ }
28721
+ function TableStyleEditor({
28722
+ styleMap,
28723
+ styleId,
28724
+ canEdit,
28725
+ onStyleMapChange,
28726
+ onDeleteStyle,
28727
+ onAssignStyle,
28728
+ onClose
28729
+ }) {
28730
+ const { t } = useTranslation();
28731
+ const themeColorMap = useThemeColorMap();
28732
+ const [activeStyleId, setActiveStyleId] = useState(
28733
+ styleId ? normalizeTableStyleGuid(styleId) : ""
28734
+ );
28735
+ const [selectedPart, setSelectedPart] = useState("wholeTbl");
28736
+ const entry = activeStyleId ? styleMap?.[activeStyleId] : void 0;
28737
+ const descriptor = describeTableStyleEditor(entry, selectedPart, themeColorMap);
28738
+ function edit(fieldEdit) {
28739
+ if (!entry || !styleMap) {
28740
+ return;
28741
+ }
28742
+ const { entry: nextEntry } = applyTableStyleFieldEdit(entry, selectedPart, fieldEdit);
28743
+ onStyleMapChange({ ...styleMap, [nextEntry.styleId]: nextEntry });
28744
+ }
28745
+ function createFromCurrent() {
28746
+ const name = window.prompt(
28747
+ t("pptx.tableStyleEditor.newStyleNamePrompt"),
28748
+ entry ? `${entry.styleName ?? ""} Copy`.trim() : ""
28749
+ );
28750
+ if (!name) {
28751
+ return;
28752
+ }
28753
+ const nextMap = { ...styleMap ?? {} };
28754
+ const created = createTableStyleEntry(nextMap, { styleName: name, basedOn: entry });
28755
+ addTableStyleToMap(nextMap, created);
28756
+ onStyleMapChange(nextMap);
28757
+ setActiveStyleId(created.styleId);
28758
+ onAssignStyle?.(created.styleId);
28759
+ }
28760
+ function handleDelete() {
28761
+ if (!entry || !styleMap || !window.confirm(t("pptx.tableStyleEditor.deleteConfirm"))) {
28762
+ return;
28763
+ }
28764
+ const nextMap = { ...styleMap };
28765
+ deleteTableStyleFromMap(nextMap, entry.styleId);
28766
+ onStyleMapChange(nextMap);
28767
+ onDeleteStyle(entry.styleId);
28768
+ onClose();
28769
+ }
28770
+ return /* @__PURE__ */ jsxs("div", { className: CARD, "data-testid": "table-style-editor", children: [
28771
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
28772
+ /* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.tableStyleEditor.title") }),
28773
+ /* @__PURE__ */ jsx("button", { type: "button", className: BTN, onClick: onClose, children: t("pptx.tableStyleEditor.close") })
28774
+ ] }),
28775
+ !entry && /* @__PURE__ */ jsx("div", { className: "text-[11px] text-muted-foreground", children: t("pptx.tableStyleEditor.noStyleSelected") }),
28776
+ entry && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1", children: TABLE_STYLE_EDITOR_PARTS.map((part) => /* @__PURE__ */ jsx(
28777
+ "button",
28778
+ {
28779
+ type: "button",
28780
+ disabled: !canEdit,
28781
+ className: `${BTN} ${selectedPart === part.id ? "bg-accent" : ""}`,
28782
+ onClick: () => setSelectedPart(part.id),
28783
+ children: t(part.labelKey)
28784
+ },
28785
+ part.id
28786
+ )) }),
28787
+ descriptor && /* @__PURE__ */ jsx(TableStyleEditorFields, { descriptor, canEdit, onEdit: edit }),
28788
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-1.5 pt-1 border-t border-border", children: [
28789
+ /* @__PURE__ */ jsx("button", { type: "button", className: BTN, disabled: !canEdit, onClick: createFromCurrent, children: entry ? t("pptx.tableStyleEditor.newFromCurrent") : t("pptx.tableStyleEditor.newStyle") }),
28790
+ entry && /* @__PURE__ */ jsx("button", { type: "button", className: BTN, disabled: !canEdit, onClick: handleDelete, children: t("pptx.tableStyleEditor.deleteStyle") })
28791
+ ] })
28792
+ ] });
28793
+ }
28441
28794
  function TablePropertiesPanel({
28442
28795
  tableElement,
28443
28796
  canEdit,
28444
28797
  onUpdateElement,
28445
- tableEditorState
28798
+ tableEditorState,
28799
+ tableStyleMap,
28800
+ onTableStyleMapChange,
28801
+ onDeleteTableStyle
28446
28802
  }) {
28447
28803
  const { t } = useTranslation();
28804
+ const [showStyleEditor, setShowStyleEditor] = useState(false);
28448
28805
  const td = tableElement.tableData;
28449
28806
  if (!td) {
28450
28807
  return null;
@@ -28535,8 +28892,30 @@ function TablePropertiesPanel({
28535
28892
  ] })
28536
28893
  },
28537
28894
  preset.id
28538
- )) })
28895
+ )) }),
28896
+ onTableStyleMapChange && /* @__PURE__ */ jsx(
28897
+ "button",
28898
+ {
28899
+ type: "button",
28900
+ className: `${BTN} mt-1.5`,
28901
+ disabled: !canEdit,
28902
+ onClick: () => setShowStyleEditor((v) => !v),
28903
+ children: t("pptx.tableStyleEditor.editButton")
28904
+ }
28905
+ )
28539
28906
  ] }),
28907
+ showStyleEditor && onTableStyleMapChange && /* @__PURE__ */ jsx(
28908
+ TableStyleEditor,
28909
+ {
28910
+ styleMap: tableStyleMap,
28911
+ styleId: td.tableStyleId,
28912
+ canEdit,
28913
+ onStyleMapChange: onTableStyleMapChange,
28914
+ onDeleteStyle: (styleId) => onDeleteTableStyle?.(styleId),
28915
+ onAssignStyle: (styleId) => updateTableData(tableStyleAssignmentUpdate(styleId)),
28916
+ onClose: () => setShowStyleEditor(false)
28917
+ }
28918
+ ),
28540
28919
  /* @__PURE__ */ jsxs("div", { className: CARD, children: [
28541
28920
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-1", children: [
28542
28921
  /* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.table.columnWidths") }),
@@ -28634,6 +29013,9 @@ function ElementInspectorBody({
28634
29013
  customShows,
28635
29014
  tableEditorState,
28636
29015
  mediaDataUrls,
29016
+ tableStyleMap,
29017
+ onTableStyleMapChange,
29018
+ onDeleteTableStyle,
28637
29019
  onUpdateElement,
28638
29020
  onUpdateElementStyle,
28639
29021
  onUpdateTextStyle,
@@ -28695,7 +29077,10 @@ function ElementInspectorBody({
28695
29077
  tableElement: selectedElement,
28696
29078
  canEdit,
28697
29079
  onUpdateElement,
28698
- tableEditorState
29080
+ tableEditorState,
29081
+ tableStyleMap,
29082
+ onTableStyleMapChange,
29083
+ onDeleteTableStyle
28699
29084
  }
28700
29085
  )
28701
29086
  ] }),
@@ -30734,6 +31119,9 @@ function InspectorPane(props) {
30734
31119
  onGetTemplateBackgroundColor,
30735
31120
  mediaDataUrls,
30736
31121
  theme,
31122
+ tableStyleMap,
31123
+ onTableStyleMapChange,
31124
+ onDeleteTableStyle,
30737
31125
  panelWidth
30738
31126
  } = props;
30739
31127
  const hasSelection = selectedElement !== null;
@@ -30816,6 +31204,9 @@ function InspectorPane(props) {
30816
31204
  customShows,
30817
31205
  tableEditorState,
30818
31206
  mediaDataUrls,
31207
+ tableStyleMap,
31208
+ onTableStyleMapChange,
31209
+ onDeleteTableStyle,
30819
31210
  onUpdateElement,
30820
31211
  onUpdateElementStyle,
30821
31212
  onUpdateTextStyle,
@@ -34007,6 +34398,9 @@ function ViewerInspector({
34007
34398
  onGetTemplateBackgroundColor,
34008
34399
  mediaDataUrls,
34009
34400
  theme,
34401
+ tableStyleMap,
34402
+ onTableStyleMapChange,
34403
+ onDeleteTableStyle,
34010
34404
  panelWidth
34011
34405
  }) {
34012
34406
  const { t } = useTranslation();
@@ -34096,6 +34490,9 @@ function ViewerInspector({
34096
34490
  onGetTemplateBackgroundColor,
34097
34491
  mediaDataUrls,
34098
34492
  theme,
34493
+ tableStyleMap,
34494
+ onTableStyleMapChange,
34495
+ onDeleteTableStyle,
34099
34496
  panelWidth
34100
34497
  }
34101
34498
  )
@@ -36238,10 +36635,26 @@ ${url}`)) {
36238
36635
  )
36239
36636
  );
36240
36637
  }
36638
+
36639
+ // src/viewer/hooks/useTableStyleMapHandlers.ts
36640
+ function useTableStyleMapHandlers(input) {
36641
+ const { tableStyleMap, setTableStyleMap, tableStylesToDelete, setTableStylesToDelete } = input;
36642
+ const handleTableStyleMapChange = (nextMap) => {
36643
+ const result = applyTableStyleMapChange({ tableStyleMap, tableStylesToDelete }, nextMap);
36644
+ setTableStyleMap(result.tableStyleMap);
36645
+ setTableStylesToDelete(result.tableStylesToDelete);
36646
+ };
36647
+ const handleDeleteTableStyle = (styleId) => {
36648
+ const result = applyTableStyleDelete({ tableStyleMap, tableStylesToDelete }, styleId);
36649
+ setTableStyleMap(result.tableStyleMap);
36650
+ setTableStylesToDelete(result.tableStylesToDelete);
36651
+ };
36652
+ return { handleTableStyleMapChange, handleDeleteTableStyle };
36653
+ }
36241
36654
  var AiChatPanel = lazy(async () => {
36242
36655
  const [{ useChat }, { default: Panel }] = await Promise.all([
36243
36656
  import('@ai-sdk/react'),
36244
- import('./AiChatPanel-L5QGWVZK.mjs')
36657
+ import('./AiChatPanel-A5DCEHTO.mjs')
36245
36658
  ]);
36246
36659
  function BoundAiChatPanel(props) {
36247
36660
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -37156,6 +37569,12 @@ function ViewerSidePanels(props) {
37156
37569
  s.setCanvasSize(slideSizeToCanvasPx(size));
37157
37570
  history.markDirty();
37158
37571
  };
37572
+ const { handleTableStyleMapChange, handleDeleteTableStyle } = useTableStyleMapHandlers({
37573
+ tableStyleMap: s.tableStyleMap,
37574
+ setTableStyleMap: s.setTableStyleMap,
37575
+ tableStylesToDelete: s.tableStylesToDelete,
37576
+ setTableStylesToDelete: s.setTableStylesToDelete
37577
+ });
37159
37578
  const effectiveSlide = mode === "master" ? masterPseudoSlide : activeSlide;
37160
37579
  const currentBuiltInTheme = BUILT_IN_THEMES.find(
37161
37580
  (candidate) => themeColorSchemesEqual(s.theme?.colorScheme, candidate.colorScheme)
@@ -37213,6 +37632,9 @@ function ViewerSidePanels(props) {
37213
37632
  onGetTemplateBackgroundColor: themeHandlers.handleGetTemplateBackgroundColor,
37214
37633
  mediaDataUrls: s.mediaDataUrls,
37215
37634
  theme: s.theme,
37635
+ tableStyleMap: s.tableStyleMap,
37636
+ onTableStyleMapChange: handleTableStyleMapChange,
37637
+ onDeleteTableStyle: handleDeleteTableStyle,
37216
37638
  panelWidth
37217
37639
  }
37218
37640
  ),
@@ -38991,9 +39413,13 @@ function useAiBridge(input) {
38991
39413
  presentationProperties: live.presentationProperties,
38992
39414
  customProperties: live.customProperties,
38993
39415
  coreProperties: live.coreProperties,
38994
- appProperties: live.appProperties
39416
+ appProperties: live.appProperties,
39417
+ viewProperties: live.viewProperties,
39418
+ tableStyleMap: live.tableStyleMap,
39419
+ tableStylesDefaultId: live.tableStylesDefaultId,
39420
+ tags: live.tagCollections
38995
39421
  });
38996
- const differs = (a, b) => JSON.stringify(a) !== JSON.stringify(b);
39422
+ const differs = deckDataFieldChanged;
38997
39423
  return {
38998
39424
  getDeckMeta() {
38999
39425
  const live = ref.current;
@@ -39067,6 +39493,19 @@ function useAiBridge(input) {
39067
39493
  if (differs(before.appProperties, after.appProperties)) {
39068
39494
  live.setAppProperties(after.appProperties);
39069
39495
  }
39496
+ if (differs(before.viewProperties, after.viewProperties)) {
39497
+ live.setViewProperties(after.viewProperties);
39498
+ }
39499
+ if (differs(before.tableStyleMap, after.tableStyleMap)) {
39500
+ live.setTableStyleMap(after.tableStyleMap);
39501
+ }
39502
+ if (differs(before.tableStylesDefaultId, after.tableStylesDefaultId)) {
39503
+ live.setTableStylesDefaultId(after.tableStylesDefaultId);
39504
+ }
39505
+ const nextTags = after.tags ?? before.tags ?? [];
39506
+ if (differs(before.tags, nextTags)) {
39507
+ live.setTagCollections(nextTags);
39508
+ }
39070
39509
  live.markDirty();
39071
39510
  },
39072
39511
  getFocusedTargets() {
@@ -39960,12 +40399,20 @@ var PowerPointViewer = forwardRef(
39960
40399
  customProperties: state.customProperties,
39961
40400
  coreProperties: state.coreProperties,
39962
40401
  appProperties: state.appProperties,
40402
+ viewProperties: state.viewProperties,
40403
+ tableStyleMap: state.tableStyleMap,
40404
+ tableStylesDefaultId: state.tableStylesDefaultId,
40405
+ tagCollections: state.tagCollections,
39963
40406
  setCanvasSize: state.setCanvasSize,
39964
40407
  setSections: state.setSections,
39965
40408
  setPresentationProperties: state.setPresentationProperties,
39966
40409
  setCustomProperties: state.setCustomProperties,
39967
40410
  setCoreProperties: state.setCoreProperties,
39968
40411
  setAppProperties: state.setAppProperties,
40412
+ setViewProperties: state.setViewProperties,
40413
+ setTableStyleMap: state.setTableStyleMap,
40414
+ setTableStylesDefaultId: state.setTableStylesDefaultId,
40415
+ setTagCollections: state.setTagCollections,
39969
40416
  setSlides: state.setSlides,
39970
40417
  setActiveSlideIndex: state.setActiveSlideIndex,
39971
40418
  applySelection: editorOps.ops.applySelection,
@@ -40343,7 +40790,29 @@ var PowerPointViewer = forwardRef(
40343
40790
  content,
40344
40791
  loadVersion,
40345
40792
  loadOrigin,
40346
- livePatcher: state.livePatcher
40793
+ livePatcher: state.livePatcher,
40794
+ deckSaveState: {
40795
+ headerFooter: state.headerFooter,
40796
+ presentationProperties: state.presentationProperties,
40797
+ viewProperties: state.viewProperties,
40798
+ customShows: state.customShows,
40799
+ sections: state.sections,
40800
+ coreProperties: state.coreProperties,
40801
+ appProperties: state.appProperties,
40802
+ customProperties: state.customProperties,
40803
+ tagCollections: state.tagCollections,
40804
+ slideMasters: state.slideMasters,
40805
+ notesMaster: state.notesMaster,
40806
+ handoutMaster: state.handoutMaster,
40807
+ slideSize: resolveSlideSizeSelection({
40808
+ current: state.slideSizeEmu,
40809
+ canvas: canvasSize
40810
+ }).size,
40811
+ tableStyleMap: state.tableStyleMap,
40812
+ tableStylesDefaultId: state.tableStylesDefaultId,
40813
+ tableStylesToDelete: state.tableStylesToDelete,
40814
+ embedFonts: dialogs.embedFontsEnabled
40815
+ }
40347
40816
  }
40348
40817
  ),
40349
40818
  /* @__PURE__ */ jsx(
@@ -40384,7 +40853,8 @@ function CollaborationDocumentSync({
40384
40853
  content,
40385
40854
  loadVersion,
40386
40855
  loadOrigin,
40387
- livePatcher
40856
+ livePatcher,
40857
+ deckSaveState
40388
40858
  }) {
40389
40859
  const collab = useCollaboration();
40390
40860
  const contentRef = useRef(content);
@@ -40396,6 +40866,9 @@ function CollaborationDocumentSync({
40396
40866
  }
40397
40867
  return bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
40398
40868
  }, []);
40869
+ const deckSaveStateRef = useRef(deckSaveState);
40870
+ deckSaveStateRef.current = deckSaveState;
40871
+ const getSaveOptions = useCallback(() => buildDeckSaveOptions(deckSaveStateRef.current), []);
40399
40872
  useYjsDocumentSync({
40400
40873
  doc: collab?.doc ?? null,
40401
40874
  slides,
@@ -40405,6 +40878,7 @@ function CollaborationDocumentSync({
40405
40878
  isSynced: collab?.synced ?? true,
40406
40879
  config,
40407
40880
  getSourceBytes,
40881
+ getSaveOptions,
40408
40882
  loadVersion,
40409
40883
  loadOrigin
40410
40884
  });