pptx-react-viewer 2.9.0 → 2.10.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 (120) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{AiChatPanel-6W6ZBAGU.mjs → AiChatPanel-35CHYS5N.mjs} +4 -4
  3. package/dist/AiChatPanel-35CHYS5N.mjs.br +0 -0
  4. package/dist/AiChatPanel-35CHYS5N.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-MALC32TM.js → AiChatPanel-KTMWRUD5.js} +23 -23
  6. package/dist/AiChatPanel-KTMWRUD5.js.br +0 -0
  7. package/dist/AiChatPanel-KTMWRUD5.js.gz +0 -0
  8. package/dist/{Model3DScene-57HZ4NVD.mjs → Model3DScene-2VMN3B65.mjs} +1 -1
  9. package/dist/Model3DScene-2VMN3B65.mjs.br +0 -0
  10. package/dist/Model3DScene-2VMN3B65.mjs.gz +0 -0
  11. package/dist/{Model3DScene-76R2YXSO.js → Model3DScene-TMNUKCL6.js} +2 -2
  12. package/dist/Model3DScene-TMNUKCL6.js.br +0 -0
  13. package/dist/Model3DScene-TMNUKCL6.js.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-JGOQNHSU.mjs → SurfaceChart3DScene-GKRDDN2U.mjs} +1 -1
  15. package/dist/{SurfaceChart3DScene-JGOQNHSU.mjs.br → SurfaceChart3DScene-GKRDDN2U.mjs.br} +0 -0
  16. package/dist/SurfaceChart3DScene-GKRDDN2U.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-2QZZTBV4.js → SurfaceChart3DScene-KPNP3QD5.js} +2 -2
  18. package/dist/SurfaceChart3DScene-KPNP3QD5.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-KPNP3QD5.js.gz +0 -0
  20. package/dist/{chunk-D6SHCB4V.js → chunk-A7HLINZU.js} +328 -324
  21. package/dist/chunk-A7HLINZU.js.br +0 -0
  22. package/dist/chunk-A7HLINZU.js.gz +0 -0
  23. package/dist/{chunk-JPTO6P5K.mjs → chunk-FY2AFXKP.mjs} +8 -47
  24. package/dist/chunk-FY2AFXKP.mjs.br +0 -0
  25. package/dist/chunk-FY2AFXKP.mjs.gz +0 -0
  26. package/dist/{chunk-IKISUZKE.js → chunk-H74UXL4Q.js} +340 -17
  27. package/dist/chunk-H74UXL4Q.js.br +0 -0
  28. package/dist/{chunk-IKISUZKE.js.gz → chunk-H74UXL4Q.js.gz} +0 -0
  29. package/dist/{chunk-34BUZNKO.js → chunk-IJVDNQLG.js} +252 -291
  30. package/dist/chunk-IJVDNQLG.js.br +0 -0
  31. package/dist/chunk-IJVDNQLG.js.gz +0 -0
  32. package/dist/{chunk-6UXRNLHD.js → chunk-JWMXOYSX.js} +1330 -968
  33. package/dist/chunk-JWMXOYSX.js.br +0 -0
  34. package/dist/chunk-JWMXOYSX.js.gz +0 -0
  35. package/dist/{chunk-NQLVK23T.mjs → chunk-LCG7WBAG.mjs} +403 -41
  36. package/dist/chunk-LCG7WBAG.mjs.br +0 -0
  37. package/dist/chunk-LCG7WBAG.mjs.gz +0 -0
  38. package/dist/{chunk-6OLS3EJW.mjs → chunk-LXTKPSIG.mjs} +1 -1
  39. package/dist/chunk-LXTKPSIG.mjs.br +0 -0
  40. package/dist/chunk-LXTKPSIG.mjs.gz +0 -0
  41. package/dist/{chunk-2JDWFMIK.js → chunk-MMK4K3QI.js} +1 -0
  42. package/dist/chunk-MMK4K3QI.js.br +0 -0
  43. package/dist/{chunk-2JDWFMIK.js.gz → chunk-MMK4K3QI.js.gz} +0 -0
  44. package/dist/{chunk-4FO4JMTN.mjs → chunk-OHPF2HTP.mjs} +7 -3
  45. package/dist/chunk-OHPF2HTP.mjs.br +0 -0
  46. package/dist/chunk-OHPF2HTP.mjs.gz +0 -0
  47. package/dist/{chunk-CD434OFE.mjs → chunk-SL3XPERE.mjs} +1 -0
  48. package/dist/chunk-SL3XPERE.mjs.br +0 -0
  49. package/dist/{chunk-CD434OFE.mjs.gz → chunk-SL3XPERE.mjs.gz} +0 -0
  50. package/dist/{chunk-YEM2VOAP.js → chunk-SPJR6MPI.js} +3 -3
  51. package/dist/chunk-SPJR6MPI.js.br +0 -0
  52. package/dist/chunk-SPJR6MPI.js.gz +0 -0
  53. package/dist/{chunk-L47Y62L6.mjs → chunk-TJ55KUWH.mjs} +320 -17
  54. package/dist/chunk-TJ55KUWH.mjs.br +0 -0
  55. package/dist/{chunk-L47Y62L6.mjs.gz → chunk-TJ55KUWH.mjs.gz} +0 -0
  56. package/dist/i18n.js +4 -4
  57. package/dist/i18n.js.br +0 -0
  58. package/dist/i18n.js.gz +0 -0
  59. package/dist/i18n.mjs +1 -1
  60. package/dist/i18n.mjs.br +0 -0
  61. package/dist/i18n.mjs.gz +0 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.js +36 -36
  64. package/dist/index.js.br +0 -0
  65. package/dist/index.js.gz +0 -0
  66. package/dist/index.mjs +6 -6
  67. package/dist/index.mjs.br +0 -0
  68. package/dist/index.mjs.gz +0 -0
  69. package/dist/internals.d.ts +4 -0
  70. package/dist/internals.d.ts.map +1 -1
  71. package/dist/internals.js +79 -79
  72. package/dist/internals.js.br +0 -0
  73. package/dist/internals.js.gz +0 -0
  74. package/dist/internals.mjs +4 -4
  75. package/dist/internals.mjs.br +0 -0
  76. package/dist/internals.mjs.gz +0 -0
  77. package/dist/pptx-viewer.css +1 -1
  78. package/dist/pptx-viewer.css.br +0 -0
  79. package/dist/pptx-viewer.css.gz +0 -0
  80. package/dist/{useViewerBuildingBlocks-C59NY1qZ.d.ts → useViewerBuildingBlocks-CpUwhBD5.d.ts} +3 -1
  81. package/dist/useViewerBuildingBlocks-CpUwhBD5.d.ts.map +1 -0
  82. package/dist/viewer/index.js +22 -22
  83. package/dist/viewer/index.js.br +0 -0
  84. package/dist/viewer/index.js.gz +0 -0
  85. package/dist/viewer/index.mjs +6 -6
  86. package/dist/viewer/index.mjs.br +0 -0
  87. package/dist/viewer/index.mjs.gz +0 -0
  88. package/package.json +1 -1
  89. package/dist/AiChatPanel-6W6ZBAGU.mjs.br +0 -0
  90. package/dist/AiChatPanel-6W6ZBAGU.mjs.gz +0 -0
  91. package/dist/AiChatPanel-MALC32TM.js.br +0 -0
  92. package/dist/AiChatPanel-MALC32TM.js.gz +0 -0
  93. package/dist/Model3DScene-57HZ4NVD.mjs.br +0 -0
  94. package/dist/Model3DScene-57HZ4NVD.mjs.gz +0 -0
  95. package/dist/Model3DScene-76R2YXSO.js.br +0 -0
  96. package/dist/Model3DScene-76R2YXSO.js.gz +0 -0
  97. package/dist/SurfaceChart3DScene-2QZZTBV4.js.br +0 -0
  98. package/dist/SurfaceChart3DScene-2QZZTBV4.js.gz +0 -0
  99. package/dist/SurfaceChart3DScene-JGOQNHSU.mjs.gz +0 -0
  100. package/dist/chunk-2JDWFMIK.js.br +0 -0
  101. package/dist/chunk-34BUZNKO.js.br +0 -0
  102. package/dist/chunk-34BUZNKO.js.gz +0 -0
  103. package/dist/chunk-4FO4JMTN.mjs.br +0 -0
  104. package/dist/chunk-4FO4JMTN.mjs.gz +0 -0
  105. package/dist/chunk-6OLS3EJW.mjs.br +0 -0
  106. package/dist/chunk-6OLS3EJW.mjs.gz +0 -0
  107. package/dist/chunk-6UXRNLHD.js.br +0 -0
  108. package/dist/chunk-6UXRNLHD.js.gz +0 -0
  109. package/dist/chunk-CD434OFE.mjs.br +0 -0
  110. package/dist/chunk-D6SHCB4V.js.br +0 -0
  111. package/dist/chunk-D6SHCB4V.js.gz +0 -0
  112. package/dist/chunk-IKISUZKE.js.br +0 -0
  113. package/dist/chunk-JPTO6P5K.mjs.br +0 -0
  114. package/dist/chunk-JPTO6P5K.mjs.gz +0 -0
  115. package/dist/chunk-L47Y62L6.mjs.br +0 -0
  116. package/dist/chunk-NQLVK23T.mjs.br +0 -0
  117. package/dist/chunk-NQLVK23T.mjs.gz +0 -0
  118. package/dist/chunk-YEM2VOAP.js.br +0 -0
  119. package/dist/chunk-YEM2VOAP.js.gz +0 -0
  120. package/dist/useViewerBuildingBlocks-C59NY1qZ.d.ts.map +0 -1
Binary file
Binary file
@@ -1,8 +1,8 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-6OLS3EJW.mjs';
2
- import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-4FO4JMTN.mjs';
3
- import { SHAPE_PRESETS, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, MIN_ELEMENT_SIZE, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, ANIMATION_PRESET_OPTIONS, resolvePalette, resolveStyle, layoutToCategory, wrapChrome, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, getCropShapeClipPath, SLIDE_NAV_THUMBNAIL_WIDTH, styleShadow, styleStroke, colour, fitFontSize, smartArtNodeGroupProps, chevronPoints, SmartArtNodeText, truncate, renderStepDownProcess, renderAlternatingFlow, renderDescendingProcess, renderPictureAccentList, renderVerticalBlockList, renderGroupedList, renderPyramidList, renderHorizontalPictureList, renderAccentProcess, renderVerticalChevronList, isImageTiled, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, TOOLBAR_SECTIONS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, buildTree, treeWidth, treeDepth, nodeOpacity, gearPath, resolveSmartArtDataPalette, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-JPTO6P5K.mjs';
4
- import { LOCALE_CATALOG, translationsEn } from './chunk-CD434OFE.mjs';
5
- import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, ACTION_BUTTON_PRESETS, isEditableTextElement, isElementRendered, isElementActionable, getAriaRole, getAriaLabel, getAriaRoleDescription, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, EQUATION_TEMPLATES, convertLatexToOmml, convertOmmlToMathMl, sanitizeMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, RULER_THICKNESS, RULER_FONT_SIZE, revealedSmartArtNodeCount, buildSmartArtA11y, buildCssGradientFromShapeStyle, resolveGroupChildFill, getGroupChildParentFill, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, svgGradientFillRef, isInkElement, getElementLabel, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, themeToCssVars, DEFAULT_INSERT_CHART_TYPE, hasCopyableFormat, createBackstagePresentation, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, resolveDrawingShapeNodeId, buildSummaryZoomView, getImageColorWashStyle, isImageLikeElement, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, buildContextMenuEntries, themeColorSchemesEqual, STATUS_BAR_CLASSES, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, activateModalFocus, buildCollaborationShareUrl, mobileElapsedSince, isFirstSlide, isLastSlide, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, formatElapsed, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, computeSmartArtLayout, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, SLIDE_VIRTUALIZATION_THRESHOLD, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, presentationInkPath, getShapeAdjustmentHandleDescriptor, formatSlideCounter, PRESET_THEMES, isUrlSafe, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, QUICK_ACCESS_COMMAND_CATALOG, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, groupIntoParagraphs, substituteFieldText, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, getConnectionSites, generateTicks, rulerDragToGuidePosition, getCommentMarkerPosition, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_LABELS, COMMON_FONTS, buildSmartArtPresetData, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, mergeSlideTransition, TABLE_STYLE_PRESETS, chartDataChangeType, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, formatCommentTimestamp, DIRECTIONAL_PRESETS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, addSmartArtNodeAsChild, removeSmartArtNode, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-L47Y62L6.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-LXTKPSIG.mjs';
2
+ import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-OHPF2HTP.mjs';
3
+ import { SHAPE_PRESETS, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, MIN_ELEMENT_SIZE, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, ANIMATION_PRESET_OPTIONS, resolvePalette, resolveStyle, layoutToCategory, wrapChrome, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, getCropShapeClipPath, SLIDE_NAV_THUMBNAIL_WIDTH, styleShadow, styleStroke, colour, fitFontSize, smartArtNodeGroupProps, chevronPoints, SmartArtNodeText, truncate, renderStepDownProcess, renderAlternatingFlow, renderDescendingProcess, renderPictureAccentList, renderVerticalBlockList, renderGroupedList, renderPyramidList, renderHorizontalPictureList, renderAccentProcess, renderVerticalChevronList, isImageTiled, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, TOOLBAR_SECTIONS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, buildTree, treeWidth, treeDepth, nodeOpacity, gearPath, resolveSmartArtDataPalette, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-FY2AFXKP.mjs';
4
+ import { LOCALE_CATALOG, translationsEn } from './chunk-SL3XPERE.mjs';
5
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, ACTION_BUTTON_PRESETS, isEditableTextElement, isElementRendered, isElementActionable, getAriaRole, getAriaLabel, getAriaRoleDescription, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, RULER_THICKNESS, RULER_FONT_SIZE, revealedSmartArtNodeCount, buildSmartArtA11y, buildCssGradientFromShapeStyle, resolveGroupChildFill, getGroupChildParentFill, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, svgGradientFillRef, isInkElement, getElementLabel, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, themeToCssVars, DEFAULT_INSERT_CHART_TYPE, hasCopyableFormat, createBackstagePresentation, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, resolveDrawingShapeNodeId, buildSummaryZoomView, getImageColorWashStyle, isImageLikeElement, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, buildContextMenuEntries, themeColorSchemesEqual, STATUS_BAR_CLASSES, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, activateModalFocus, buildCollaborationShareUrl, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, mobileElapsedSince, isFirstSlide, isLastSlide, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, formatElapsed, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, computeSmartArtLayout, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, SLIDE_VIRTUALIZATION_THRESHOLD, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, presentationInkPath, getShapeAdjustmentHandleDescriptor, PRESET_THEMES, isUrlSafe, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, QUICK_ACCESS_COMMAND_CATALOG, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, groupIntoParagraphs, substituteFieldText, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, getConnectionSites, generateTicks, rulerDragToGuidePosition, getCommentMarkerPosition, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_LABELS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, mergeSlideTransition, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, chartDataChangeType, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, formatCommentTimestamp, DIRECTIONAL_PRESETS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, addSmartArtNodeAsChild, removeSmartArtNode, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-TJ55KUWH.mjs';
6
6
  import React33, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, useContext, Suspense, useLayoutEffect, Fragment as Fragment$1, useDeferredValue } from 'react';
7
7
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
8
  import { useTranslation } from 'react-i18next';
@@ -1409,7 +1409,7 @@ function AccountPage() {
1409
1409
  return void 0;
1410
1410
  });
1411
1411
  };
1412
- const version = "2.8.0" ;
1412
+ const version = "2.9.0" ;
1413
1413
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
1414
1414
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
1415
1415
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -3896,7 +3896,7 @@ function ViewSection(p) {
3896
3896
  {
3897
3897
  label: t("pptx.view.readingView"),
3898
3898
  icon: /* @__PURE__ */ jsx(LuBookOpen, {}),
3899
- disabled: true,
3899
+ onClick: p.onOpenReadingView,
3900
3900
  title: t("pptx.view.readingView")
3901
3901
  }
3902
3902
  )
@@ -4371,7 +4371,9 @@ function MobileSectionBody({
4371
4371
  isSelectionPaneOpen: p.isSelectionPaneOpen,
4372
4372
  onToggleSelectionPane: p.onToggleSelectionPane,
4373
4373
  eyedropperActive: p.eyedropperActive,
4374
- onToggleEyedropper: p.onToggleEyedropper
4374
+ onToggleEyedropper: p.onToggleEyedropper,
4375
+ onToggleSlideSorter: p.onToggleSlideSorter,
4376
+ onOpenReadingView: p.onOpenReadingView
4375
4377
  }
4376
4378
  ) });
4377
4379
  case "file":
@@ -5623,6 +5625,8 @@ function Toolbar(p) {
5623
5625
  onToggleSelectionPane: p.onToggleSelectionPane,
5624
5626
  eyedropperActive: p.eyedropperActive,
5625
5627
  onToggleEyedropper: p.onToggleEyedropper,
5628
+ onToggleSlideSorter: p.onToggleSlideSorter,
5629
+ onOpenReadingView: p.onOpenReadingView,
5626
5630
  onZoomToFit: p.onZoomToFit
5627
5631
  }
5628
5632
  ),
@@ -8522,7 +8526,7 @@ function FailedToLoad() {
8522
8526
  var LazyModel3DScene = React33.lazy(
8523
8527
  async () => {
8524
8528
  try {
8525
- return await import('./Model3DScene-57HZ4NVD.mjs');
8529
+ return await import('./Model3DScene-2VMN3B65.mjs');
8526
8530
  } catch {
8527
8531
  return { default: FailedToLoad };
8528
8532
  }
@@ -15297,6 +15301,208 @@ function SlideSorterOverlay({
15297
15301
  }
15298
15302
  );
15299
15303
  }
15304
+ function ReadingViewStage({
15305
+ slide,
15306
+ templateElements,
15307
+ canvasSize,
15308
+ scale
15309
+ }) {
15310
+ if (scale <= 0) {
15311
+ return null;
15312
+ }
15313
+ const width = Math.max(canvasSize.width, 1);
15314
+ const height = Math.max(canvasSize.height, 1);
15315
+ const elements = [...templateElements, ...slide.elements];
15316
+ return /* @__PURE__ */ jsxs(
15317
+ "div",
15318
+ {
15319
+ ...{ [READING_VIEW_STAGE_ATTR]: "true" },
15320
+ "aria-roledescription": "slide",
15321
+ className: "relative overflow-hidden bg-white shadow-2xl",
15322
+ style: { width: width * scale, height: height * scale },
15323
+ children: [
15324
+ slide.backgroundColor && slide.backgroundColor !== "transparent" && /* @__PURE__ */ jsx(
15325
+ "div",
15326
+ {
15327
+ className: "absolute inset-0",
15328
+ style: { backgroundColor: normalizeHexColor(slide.backgroundColor, "#ffffff") }
15329
+ }
15330
+ ),
15331
+ slide.backgroundImage && /* @__PURE__ */ jsx(
15332
+ "img",
15333
+ {
15334
+ src: slide.backgroundImage,
15335
+ alt: "",
15336
+ className: "absolute inset-0 h-full w-full object-cover",
15337
+ draggable: false
15338
+ }
15339
+ ),
15340
+ slide.backgroundGradient && /* @__PURE__ */ jsx("div", { className: "absolute inset-0", style: { backgroundImage: slide.backgroundGradient } }),
15341
+ /* @__PURE__ */ jsx(
15342
+ "div",
15343
+ {
15344
+ className: "absolute left-0 top-0 origin-top-left",
15345
+ style: { width, height, transform: `scale(${scale})` },
15346
+ children: elements.map((element, index) => /* @__PURE__ */ jsx(
15347
+ StaticElementRenderer,
15348
+ {
15349
+ element,
15350
+ activeSlide: slide,
15351
+ allSlides: [slide],
15352
+ zIndex: index
15353
+ },
15354
+ element.id
15355
+ ))
15356
+ }
15357
+ )
15358
+ ]
15359
+ }
15360
+ );
15361
+ }
15362
+ var READING_VIEW_PADDING = 24;
15363
+ function useReadingView(input) {
15364
+ const { slideCount, canvasSize, initialSlideIndex, onExit } = input;
15365
+ const [state, setState] = useState(
15366
+ () => openReadingView(initialSlideIndex, slideCount)
15367
+ );
15368
+ const viewportRef = useRef(null);
15369
+ const [viewport, setViewport] = useState({ width: 0, height: 0 });
15370
+ const onExitRef = useRef(onExit);
15371
+ onExitRef.current = onExit;
15372
+ const run = useCallback(
15373
+ (command) => {
15374
+ setState((previous) => {
15375
+ const next = applyReadingViewCommand(previous, command, slideCount);
15376
+ if (previous.open && !next.open) {
15377
+ onExitRef.current(previous.slideIndex);
15378
+ }
15379
+ return next;
15380
+ });
15381
+ },
15382
+ [slideCount]
15383
+ );
15384
+ useEffect(() => {
15385
+ const buffer = createPresentationKeyBuffer();
15386
+ const handle = (event) => {
15387
+ const { command, swallow, preventDefault } = handleReadingViewKey(event, buffer);
15388
+ if (swallow) {
15389
+ event.stopPropagation();
15390
+ }
15391
+ if (preventDefault) {
15392
+ event.preventDefault();
15393
+ }
15394
+ if (command.command !== "none") {
15395
+ run(command);
15396
+ }
15397
+ };
15398
+ window.addEventListener("keydown", handle, true);
15399
+ return () => window.removeEventListener("keydown", handle, true);
15400
+ }, [run]);
15401
+ useEffect(() => {
15402
+ const element = viewportRef.current;
15403
+ if (!element) {
15404
+ return;
15405
+ }
15406
+ const observer = new ResizeObserver((entries) => {
15407
+ const rect = entries[0]?.contentRect;
15408
+ if (rect) {
15409
+ setViewport({ width: rect.width, height: rect.height });
15410
+ }
15411
+ });
15412
+ observer.observe(element);
15413
+ return () => observer.disconnect();
15414
+ }, []);
15415
+ const scale = useMemo(
15416
+ () => readingViewFitScale(canvasSize, viewport, READING_VIEW_PADDING),
15417
+ [canvasSize, viewport]
15418
+ );
15419
+ return { state, viewportRef, scale, run };
15420
+ }
15421
+ function ReadingViewOverlay({
15422
+ slides,
15423
+ templateElements,
15424
+ canvasSize,
15425
+ activeSlideIndex,
15426
+ onExit
15427
+ }) {
15428
+ const { t } = useTranslation();
15429
+ const { state, viewportRef, scale, run } = useReadingView({
15430
+ slideCount: slides.length,
15431
+ canvasSize,
15432
+ initialSlideIndex: activeSlideIndex,
15433
+ onExit
15434
+ });
15435
+ const slide = slides[state.slideIndex];
15436
+ if (!state.open || !slide) {
15437
+ return null;
15438
+ }
15439
+ const control = "inline-flex h-8 w-8 items-center justify-center rounded text-white/80 transition-colors hover:bg-white/15 hover:text-white disabled:cursor-default disabled:opacity-30 disabled:hover:bg-transparent";
15440
+ return /* @__PURE__ */ jsxs(
15441
+ "div",
15442
+ {
15443
+ ...{ [READING_VIEW_ATTR]: "true" },
15444
+ role: "region",
15445
+ "aria-label": t("pptx.view.readingView"),
15446
+ className: "fixed inset-0 z-[1300] flex flex-col bg-neutral-900",
15447
+ children: [
15448
+ /* @__PURE__ */ jsx("div", { ref: viewportRef, className: "flex min-h-0 flex-1 items-center justify-center", children: /* @__PURE__ */ jsx(
15449
+ ReadingViewStage,
15450
+ {
15451
+ slide,
15452
+ templateElements,
15453
+ canvasSize,
15454
+ scale
15455
+ }
15456
+ ) }),
15457
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-3 border-t border-white/10 px-4 py-2", children: [
15458
+ /* @__PURE__ */ jsx(
15459
+ "button",
15460
+ {
15461
+ type: "button",
15462
+ className: control,
15463
+ "aria-label": t("pptx.common.previous"),
15464
+ title: t("pptx.common.previous"),
15465
+ disabled: !canGoPrevious(state),
15466
+ onClick: () => run({ command: "previous" }),
15467
+ children: /* @__PURE__ */ jsx(LuChevronLeft, {})
15468
+ }
15469
+ ),
15470
+ /* @__PURE__ */ jsx(
15471
+ "span",
15472
+ {
15473
+ ...{ [READING_VIEW_COUNTER_ATTR]: "true" },
15474
+ className: "min-w-16 text-center text-xs tabular-nums text-white/70",
15475
+ children: formatSlideCounter(state.slideIndex, slides.length)
15476
+ }
15477
+ ),
15478
+ /* @__PURE__ */ jsx(
15479
+ "button",
15480
+ {
15481
+ type: "button",
15482
+ className: control,
15483
+ "aria-label": t("pptx.common.next"),
15484
+ title: t("pptx.common.next"),
15485
+ disabled: !canGoNext(state, slides.length),
15486
+ onClick: () => run({ command: "next" }),
15487
+ children: /* @__PURE__ */ jsx(LuChevronRight, {})
15488
+ }
15489
+ ),
15490
+ /* @__PURE__ */ jsx(
15491
+ "button",
15492
+ {
15493
+ type: "button",
15494
+ className: control,
15495
+ "aria-label": t("pptx.statusBar.normalView"),
15496
+ title: t("pptx.statusBar.normalView"),
15497
+ onClick: () => run({ command: "exit" }),
15498
+ children: /* @__PURE__ */ jsx(LuX, {})
15499
+ }
15500
+ )
15501
+ ] })
15502
+ ]
15503
+ }
15504
+ );
15505
+ }
15300
15506
 
15301
15507
  // src/viewer/components/notes/notes-utils.ts
15302
15508
  var DEBOUNCE_MS = 600;
@@ -26413,6 +26619,151 @@ function SmartArtPropertiesPanel({
26413
26619
  ] })
26414
26620
  ] });
26415
26621
  }
26622
+ var HEADER_CELL = "flex items-center justify-center gap-0.5 bg-muted text-muted-foreground border border-border -m-px px-1 py-0.5 whitespace-nowrap";
26623
+ var CELL_INPUT2 = "w-full box-border bg-muted px-1 py-0.5 text-[11px] border-0 outline-none focus:bg-accent disabled:opacity-60";
26624
+ var REMOVE_BTN = "px-0.5 leading-none text-destructive hover:opacity-80";
26625
+ function TableDataGrid({
26626
+ tableElement,
26627
+ canEdit,
26628
+ onUpdateElement
26629
+ }) {
26630
+ const { t } = useTranslation();
26631
+ const grid = buildTableDataGrid(tableElement);
26632
+ if (grid.rowCount === 0 || grid.colCount === 0) {
26633
+ return null;
26634
+ }
26635
+ const commit = (next) => {
26636
+ if (next === tableElement) {
26637
+ return;
26638
+ }
26639
+ onUpdateElement({ tableData: next.tableData, rawXml: next.rawXml });
26640
+ };
26641
+ return /* @__PURE__ */ jsx("div", { className: CARD, children: /* @__PURE__ */ jsxs("section", { "aria-label": t("pptx.tableDataEditor.ariaLabel"), children: [
26642
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-1 mb-1.5", children: [
26643
+ /* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.inspector.tableData") }),
26644
+ canEdit && /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-0.5", children: [
26645
+ /* @__PURE__ */ jsx(
26646
+ "button",
26647
+ {
26648
+ type: "button",
26649
+ className: BTN,
26650
+ title: t("pptx.tableDataEditor.addRowTitle"),
26651
+ onClick: () => commit(appendTableElementRow(tableElement)),
26652
+ children: t("pptx.tableDataEditor.addRowLabel")
26653
+ }
26654
+ ),
26655
+ /* @__PURE__ */ jsx(
26656
+ "button",
26657
+ {
26658
+ type: "button",
26659
+ className: BTN,
26660
+ disabled: !grid.canRemoveRow,
26661
+ title: t("pptx.tableDataEditor.removeRowTitle"),
26662
+ onClick: () => commit(removeLastTableElementRow(tableElement)),
26663
+ children: t("pptx.tableDataEditor.removeRowLabel")
26664
+ }
26665
+ ),
26666
+ /* @__PURE__ */ jsx(
26667
+ "button",
26668
+ {
26669
+ type: "button",
26670
+ className: BTN,
26671
+ title: t("pptx.tableDataEditor.addColumnTitle"),
26672
+ onClick: () => commit(appendTableElementColumn(tableElement)),
26673
+ children: t("pptx.tableDataEditor.addColumnLabel")
26674
+ }
26675
+ ),
26676
+ /* @__PURE__ */ jsx(
26677
+ "button",
26678
+ {
26679
+ type: "button",
26680
+ className: BTN,
26681
+ disabled: !grid.canRemoveColumn,
26682
+ title: t("pptx.tableDataEditor.removeColumnTitle"),
26683
+ onClick: () => commit(removeLastTableElementColumn(tableElement)),
26684
+ children: t("pptx.tableDataEditor.removeColumnLabel")
26685
+ }
26686
+ )
26687
+ ] })
26688
+ ] }),
26689
+ /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col text-[11px] w-max min-w-full", role: "grid", children: [
26690
+ /* @__PURE__ */ jsxs("div", { className: "flex", role: "row", children: [
26691
+ /* @__PURE__ */ jsx("div", { className: `${HEADER_CELL} flex-none w-10`, "aria-hidden": "true" }),
26692
+ grid.colIndices.map((colIndex) => /* @__PURE__ */ jsxs(
26693
+ "div",
26694
+ {
26695
+ className: `${HEADER_CELL} flex-1 basis-16`,
26696
+ role: "columnheader",
26697
+ children: [
26698
+ /* @__PURE__ */ jsx("span", { children: colIndex + 1 }),
26699
+ canEdit && grid.canRemoveColumn && /* @__PURE__ */ jsx(
26700
+ "button",
26701
+ {
26702
+ type: "button",
26703
+ className: REMOVE_BTN,
26704
+ "aria-label": t("pptx.tableDataEditor.removeColumnN", {
26705
+ number: colIndex + 1
26706
+ }),
26707
+ title: t("pptx.tableDataEditor.removeColumnN", { number: colIndex + 1 }),
26708
+ onClick: () => commit(removeTableElementColumn(tableElement, colIndex)),
26709
+ children: "\xD7"
26710
+ }
26711
+ )
26712
+ ]
26713
+ },
26714
+ colIndex
26715
+ ))
26716
+ ] }),
26717
+ grid.rows.map((row) => /* @__PURE__ */ jsxs("div", { className: "flex", role: "row", children: [
26718
+ /* @__PURE__ */ jsxs("div", { className: `${HEADER_CELL} flex-none w-10`, role: "rowheader", children: [
26719
+ /* @__PURE__ */ jsx("span", { children: row.rowIndex + 1 }),
26720
+ canEdit && grid.canRemoveRow && /* @__PURE__ */ jsx(
26721
+ "button",
26722
+ {
26723
+ type: "button",
26724
+ className: REMOVE_BTN,
26725
+ "aria-label": t("pptx.tableDataEditor.removeRowN", {
26726
+ number: row.rowIndex + 1
26727
+ }),
26728
+ title: t("pptx.tableDataEditor.removeRowN", { number: row.rowIndex + 1 }),
26729
+ onClick: () => commit(removeTableElementRow(tableElement, row.rowIndex)),
26730
+ children: "\xD7"
26731
+ }
26732
+ )
26733
+ ] }),
26734
+ row.cells.map((cell) => /* @__PURE__ */ jsx(
26735
+ "div",
26736
+ {
26737
+ className: "flex flex-1 basis-16 p-px border border-border -m-px",
26738
+ role: "gridcell",
26739
+ children: /* @__PURE__ */ jsx(
26740
+ "input",
26741
+ {
26742
+ type: "text",
26743
+ className: CELL_INPUT2,
26744
+ disabled: !canEdit,
26745
+ "aria-label": t("pptx.tableDataEditor.cellAriaLabel", {
26746
+ row: cell.rowIndex + 1,
26747
+ column: cell.colIndex + 1
26748
+ }),
26749
+ value: cell.text,
26750
+ onChange: (event) => commit(
26751
+ setTableElementCellText(
26752
+ tableElement,
26753
+ cell.rowIndex,
26754
+ cell.colIndex,
26755
+ event.target.value
26756
+ )
26757
+ )
26758
+ }
26759
+ )
26760
+ },
26761
+ cell.colIndex
26762
+ ))
26763
+ ] }, row.rowIndex))
26764
+ ] }) })
26765
+ ] }) });
26766
+ }
26416
26767
  function TableCellAdvancedFill({
26417
26768
  cellStyle,
26418
26769
  canEdit,
@@ -27149,15 +27500,25 @@ function ElementInspectorBody({
27149
27500
  )
27150
27501
  ] }, key)) })
27151
27502
  ] }),
27152
- selectedElement.type === "table" && /* @__PURE__ */ jsx(
27153
- TablePropertiesPanel,
27154
- {
27155
- tableElement: selectedElement,
27156
- canEdit,
27157
- onUpdateElement,
27158
- tableEditorState
27159
- }
27160
- ),
27503
+ selectedElement.type === "table" && /* @__PURE__ */ jsxs(Fragment, { children: [
27504
+ /* @__PURE__ */ jsx(
27505
+ TableDataGrid,
27506
+ {
27507
+ tableElement: selectedElement,
27508
+ canEdit,
27509
+ onUpdateElement
27510
+ }
27511
+ ),
27512
+ /* @__PURE__ */ jsx(
27513
+ TablePropertiesPanel,
27514
+ {
27515
+ tableElement: selectedElement,
27516
+ canEdit,
27517
+ onUpdateElement,
27518
+ tableEditorState
27519
+ }
27520
+ )
27521
+ ] }),
27161
27522
  selectedElement.type === "chart" && /* @__PURE__ */ jsx(
27162
27523
  ChartDataPanel,
27163
27524
  {
@@ -31821,6 +32182,8 @@ function ViewerOverlays({
31821
32182
  isShortcutHelpOpen,
31822
32183
  isAccessibilityPanelOpen,
31823
32184
  showSlideSorter,
32185
+ showReadingView,
32186
+ templateElements,
31824
32187
  accessibilityIssues,
31825
32188
  slides,
31826
32189
  activeSlideIndex,
@@ -31835,10 +32198,11 @@ function ViewerOverlays({
31835
32198
  onDuplicateSlides,
31836
32199
  onToggleHideSlides,
31837
32200
  onCloseSorter,
32201
+ onCloseReadingView,
31838
32202
  reducedMotion,
31839
32203
  onToggleReducedMotion
31840
32204
  }) {
31841
- const hasOverlay = isShortcutHelpOpen || isAccessibilityPanelOpen || showSlideSorter;
32205
+ const hasOverlay = isShortcutHelpOpen || isAccessibilityPanelOpen || showSlideSorter || showReadingView;
31842
32206
  if (!hasOverlay) {
31843
32207
  return null;
31844
32208
  }
@@ -31869,6 +32233,16 @@ function ViewerOverlays({
31869
32233
  onToggleHideSlides,
31870
32234
  onClose: onCloseSorter
31871
32235
  }
32236
+ ),
32237
+ showReadingView && /* @__PURE__ */ jsx(
32238
+ ReadingViewOverlay,
32239
+ {
32240
+ slides,
32241
+ templateElements,
32242
+ canvasSize,
32243
+ activeSlideIndex,
32244
+ onExit: onCloseReadingView
32245
+ }
31872
32246
  )
31873
32247
  ] });
31874
32248
  }
@@ -32693,6 +33067,7 @@ function ViewerToolbarSection(props) {
32693
33067
  onOpenSettings,
32694
33068
  onRunAccessibilityCheck: dialogs.handleRunAccessibilityCheck,
32695
33069
  onToggleSlideSorter: () => s.setShowSlideSorter((p) => !p),
33070
+ onOpenReadingView: () => s.setShowReadingView(true),
32696
33071
  onUpdateTextStyle: ops.updateSelectedTextStyle,
32697
33072
  onTransformTextCase: ops.updateSelectedTextCase,
32698
33073
  isOverflowMenuOpen: s.isOverflowMenuOpen,
@@ -32781,15 +33156,7 @@ function ViewerToolbarSection(props) {
32781
33156
  ] });
32782
33157
  }
32783
33158
  var TEMPLATES = EQUATION_TEMPLATES;
32784
- var TEMPLATE_MATHML = TEMPLATES.map((tmpl) => {
32785
- try {
32786
- const tmplOmml = convertLatexToOmml(tmpl.latex);
32787
- const raw = convertOmmlToMathMl(tmplOmml);
32788
- return raw ? sanitizeMathMl(raw) : "";
32789
- } catch {
32790
- return "";
32791
- }
32792
- });
33159
+ var TEMPLATE_MATHML = compileEquationTemplateMathMl();
32793
33160
  function MathMlPreview({ mathml }) {
32794
33161
  const containerRef = useRef(null);
32795
33162
  useEffect(() => {
@@ -32835,18 +33202,7 @@ function EquationEditorDialog({
32835
33202
  setLatex(initialLatex);
32836
33203
  }
32837
33204
  }, [isOpen, initialLatex]);
32838
- const { mathml, omml } = useMemo(() => {
32839
- if (!deferredLatex.trim()) {
32840
- return { mathml: "", omml: {} };
32841
- }
32842
- try {
32843
- const ommlObj = convertLatexToOmml(deferredLatex);
32844
- const mathmlStr = convertOmmlToMathMl(ommlObj);
32845
- return { mathml: mathmlStr, omml: ommlObj };
32846
- } catch {
32847
- return { mathml: "", omml: {} };
32848
- }
32849
- }, [deferredLatex]);
33205
+ const { mathml, omml } = useMemo(() => compileLatexEquation(deferredLatex), [deferredLatex]);
32850
33206
  const handleInsert = useCallback(() => {
32851
33207
  if (!latex.trim()) {
32852
33208
  return;
@@ -34159,7 +34515,7 @@ ${url}`)) {
34159
34515
  )
34160
34516
  );
34161
34517
  }
34162
- var AiChatPanel = lazy(() => import('./AiChatPanel-6W6ZBAGU.mjs'));
34518
+ var AiChatPanel = lazy(() => import('./AiChatPanel-35CHYS5N.mjs'));
34163
34519
  function AiChatPanelLazy(props) {
34164
34520
  return /* @__PURE__ */ jsx(
34165
34521
  Suspense,
@@ -37733,6 +38089,8 @@ var PowerPointViewer = forwardRef(
37733
38089
  isShortcutHelpOpen: state.isShortcutHelpOpen,
37734
38090
  isAccessibilityPanelOpen: state.isAccessibilityPanelOpen,
37735
38091
  showSlideSorter: state.showSlideSorter,
38092
+ showReadingView: state.showReadingView,
38093
+ templateElements: state.templateElements,
37736
38094
  accessibilityIssues: state.accessibilityIssues,
37737
38095
  slides,
37738
38096
  activeSlideIndex,
@@ -37750,6 +38108,10 @@ var PowerPointViewer = forwardRef(
37750
38108
  onDuplicateSlides: editorOps.slideOps.handleDuplicateSlides,
37751
38109
  onToggleHideSlides: editorOps.slideOps.handleToggleHideSlides,
37752
38110
  onCloseSorter: () => state.setShowSlideSorter(false),
38111
+ onCloseReadingView: (slideIndex) => {
38112
+ state.setShowReadingView(false);
38113
+ state.setActiveSlideIndex(slideIndex);
38114
+ },
37753
38115
  reducedMotion,
37754
38116
  onToggleReducedMotion: toggleReducedMotion
37755
38117
  }
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import { ThemePresets, PptxMarkdownConverter } from './chunk-L47Y62L6.mjs';
1
+ import { ThemePresets, PptxMarkdownConverter } from './chunk-TJ55KUWH.mjs';
2
2
  import { __export } from './chunk-XGB3TDIC.mjs';
3
3
  import * as mcp from 'pptx-viewer-mcp';
4
4
  import * as mcpSchemas from 'pptx-viewer-mcp/schemas';
Binary file
Binary file
@@ -2499,6 +2499,7 @@ var translationsEn = {
2499
2499
  "pptx.tableDataEditor.addRowLabel": "+ Row",
2500
2500
  "pptx.tableDataEditor.addRowTitle": "Add row below last",
2501
2501
  "pptx.tableDataEditor.ariaLabel": "Table data editor",
2502
+ "pptx.tableDataEditor.cellAriaLabel": "Row {{row}}, column {{column}}",
2502
2503
  "pptx.tableDataEditor.removeColumnLabel": "- Col",
2503
2504
  "pptx.tableDataEditor.removeColumnN": "Remove column {{number}}",
2504
2505
  "pptx.tableDataEditor.removeColumnTitle": "Remove last column",
Binary file