pptx-react-viewer 2.1.0 → 2.2.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 (110) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{AiChatPanel-RFBZWMUE.mjs → AiChatPanel-JFCJCR3O.mjs} +3 -3
  3. package/dist/AiChatPanel-JFCJCR3O.mjs.br +0 -0
  4. package/dist/AiChatPanel-JFCJCR3O.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-VCCVHAAI.js → AiChatPanel-S3FWARWG.js} +11 -11
  6. package/dist/AiChatPanel-S3FWARWG.js.br +0 -0
  7. package/dist/AiChatPanel-S3FWARWG.js.gz +0 -0
  8. package/dist/{Model3DScene-RQIGSYGQ.js → Model3DScene-BZK4UHL4.js} +2 -2
  9. package/dist/Model3DScene-BZK4UHL4.js.br +0 -0
  10. package/dist/Model3DScene-BZK4UHL4.js.gz +0 -0
  11. package/dist/{Model3DScene-2M6HVWTE.mjs → Model3DScene-RCZCBW52.mjs} +1 -1
  12. package/dist/{Model3DScene-2M6HVWTE.mjs.br → Model3DScene-RCZCBW52.mjs.br} +0 -0
  13. package/dist/Model3DScene-RCZCBW52.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-2FVASQGC.js → SurfaceChart3DScene-EGPAMPX4.js} +2 -2
  15. package/dist/SurfaceChart3DScene-EGPAMPX4.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-EGPAMPX4.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-EGMWY4CZ.mjs → SurfaceChart3DScene-IRLH4ADG.mjs} +1 -1
  18. package/dist/{SurfaceChart3DScene-EGMWY4CZ.mjs.br → SurfaceChart3DScene-IRLH4ADG.mjs.br} +0 -0
  19. package/dist/SurfaceChart3DScene-IRLH4ADG.mjs.gz +0 -0
  20. package/dist/{chunk-VHO53ZXZ.js → chunk-3KD6S6VM.js} +1102 -829
  21. package/dist/chunk-3KD6S6VM.js.br +0 -0
  22. package/dist/chunk-3KD6S6VM.js.gz +0 -0
  23. package/dist/{chunk-Y4OSELBT.mjs → chunk-6BUR4MJO.mjs} +348 -75
  24. package/dist/chunk-6BUR4MJO.mjs.br +0 -0
  25. package/dist/chunk-6BUR4MJO.mjs.gz +0 -0
  26. package/dist/{chunk-ZRY7NLKS.js → chunk-JPJBOVU7.js} +328 -334
  27. package/dist/chunk-JPJBOVU7.js.br +0 -0
  28. package/dist/chunk-JPJBOVU7.js.gz +0 -0
  29. package/dist/{chunk-NGE7YQTF.mjs → chunk-L4ETDT4F.mjs} +66 -72
  30. package/dist/chunk-L4ETDT4F.mjs.br +0 -0
  31. package/dist/chunk-L4ETDT4F.mjs.gz +0 -0
  32. package/dist/{chunk-2X72MOPZ.mjs → chunk-PZTPX3HK.mjs} +10 -1
  33. package/dist/chunk-PZTPX3HK.mjs.br +0 -0
  34. package/dist/chunk-PZTPX3HK.mjs.gz +0 -0
  35. package/dist/{chunk-27XBWVO5.mjs → chunk-RLK72AOU.mjs} +94 -1
  36. package/dist/chunk-RLK72AOU.mjs.br +0 -0
  37. package/dist/{chunk-27XBWVO5.mjs.gz → chunk-RLK72AOU.mjs.gz} +0 -0
  38. package/dist/{chunk-LDF77JJD.js → chunk-RNZJKGA7.js} +219 -219
  39. package/dist/chunk-RNZJKGA7.js.br +0 -0
  40. package/dist/chunk-RNZJKGA7.js.gz +0 -0
  41. package/dist/{chunk-7DQHWPIB.mjs → chunk-SOHIKHL4.mjs} +3 -3
  42. package/dist/chunk-SOHIKHL4.mjs.br +0 -0
  43. package/dist/chunk-SOHIKHL4.mjs.gz +0 -0
  44. package/dist/{chunk-46Z6MNRS.js → chunk-UTTXH3GH.js} +95 -0
  45. package/dist/chunk-UTTXH3GH.js.br +0 -0
  46. package/dist/{chunk-46Z6MNRS.js.gz → chunk-UTTXH3GH.js.gz} +0 -0
  47. package/dist/{chunk-CUUYYYC5.js → chunk-YIFO3WQO.js} +10 -1
  48. package/dist/chunk-YIFO3WQO.js.br +0 -0
  49. package/dist/chunk-YIFO3WQO.js.gz +0 -0
  50. package/dist/i18n.js +4 -4
  51. package/dist/i18n.js.br +0 -0
  52. package/dist/i18n.js.gz +0 -0
  53. package/dist/i18n.mjs +1 -1
  54. package/dist/i18n.mjs.br +0 -0
  55. package/dist/i18n.mjs.gz +0 -0
  56. package/dist/{index-nAyIdGqF.d.ts → index-CDCSXtK3.d.ts} +32 -16
  57. package/dist/index-CDCSXtK3.d.ts.map +1 -0
  58. package/dist/index.js +35 -35
  59. package/dist/index.js.br +0 -0
  60. package/dist/index.js.gz +0 -0
  61. package/dist/index.mjs +5 -5
  62. package/dist/index.mjs.br +0 -0
  63. package/dist/index.mjs.gz +0 -0
  64. package/dist/internals.d.ts +42 -14
  65. package/dist/internals.d.ts.map +1 -1
  66. package/dist/internals.js +79 -79
  67. package/dist/internals.js.br +0 -0
  68. package/dist/internals.js.gz +0 -0
  69. package/dist/internals.mjs +4 -4
  70. package/dist/internals.mjs.br +0 -0
  71. package/dist/internals.mjs.gz +0 -0
  72. package/dist/pptx-viewer.css +1 -1
  73. package/dist/pptx-viewer.css.br +0 -0
  74. package/dist/pptx-viewer.css.gz +0 -0
  75. package/dist/viewer/index.js +21 -21
  76. package/dist/viewer/index.js.br +0 -0
  77. package/dist/viewer/index.js.gz +0 -0
  78. package/dist/viewer/index.mjs +5 -5
  79. package/dist/viewer/index.mjs.br +0 -0
  80. package/dist/viewer/index.mjs.gz +0 -0
  81. package/package.json +1 -1
  82. package/dist/AiChatPanel-RFBZWMUE.mjs.br +0 -0
  83. package/dist/AiChatPanel-RFBZWMUE.mjs.gz +0 -0
  84. package/dist/AiChatPanel-VCCVHAAI.js.br +0 -0
  85. package/dist/AiChatPanel-VCCVHAAI.js.gz +0 -0
  86. package/dist/Model3DScene-2M6HVWTE.mjs.gz +0 -0
  87. package/dist/Model3DScene-RQIGSYGQ.js.br +0 -0
  88. package/dist/Model3DScene-RQIGSYGQ.js.gz +0 -0
  89. package/dist/SurfaceChart3DScene-2FVASQGC.js.br +0 -0
  90. package/dist/SurfaceChart3DScene-2FVASQGC.js.gz +0 -0
  91. package/dist/SurfaceChart3DScene-EGMWY4CZ.mjs.gz +0 -0
  92. package/dist/chunk-27XBWVO5.mjs.br +0 -0
  93. package/dist/chunk-2X72MOPZ.mjs.br +0 -0
  94. package/dist/chunk-2X72MOPZ.mjs.gz +0 -0
  95. package/dist/chunk-46Z6MNRS.js.br +0 -0
  96. package/dist/chunk-7DQHWPIB.mjs.br +0 -0
  97. package/dist/chunk-7DQHWPIB.mjs.gz +0 -0
  98. package/dist/chunk-CUUYYYC5.js.br +0 -0
  99. package/dist/chunk-CUUYYYC5.js.gz +0 -0
  100. package/dist/chunk-LDF77JJD.js.br +0 -0
  101. package/dist/chunk-LDF77JJD.js.gz +0 -0
  102. package/dist/chunk-NGE7YQTF.mjs.br +0 -0
  103. package/dist/chunk-NGE7YQTF.mjs.gz +0 -0
  104. package/dist/chunk-VHO53ZXZ.js.br +0 -0
  105. package/dist/chunk-VHO53ZXZ.js.gz +0 -0
  106. package/dist/chunk-Y4OSELBT.mjs.br +0 -0
  107. package/dist/chunk-Y4OSELBT.mjs.gz +0 -0
  108. package/dist/chunk-ZRY7NLKS.js.br +0 -0
  109. package/dist/chunk-ZRY7NLKS.js.gz +0 -0
  110. package/dist/index-nAyIdGqF.d.ts.map +0 -1
Binary file
Binary file
@@ -1,8 +1,8 @@
1
1
  import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-BHVCED34.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-NGE7YQTF.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_TRANSITION_OPTIONS, 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, startPreviewAnimation, stopPreviewAnimation } from './chunk-7DQHWPIB.mjs';
4
- import { RULER_THICKNESS, RULER_FONT_SIZE, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, getElementTransform, ACTION_BUTTON_PRESETS, isEditableTextElement, getAriaRole, getAriaLabel, getAriaRoleDescription, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, EQUATION_TEMPLATES, convertLatexToOmml, convertOmmlToMathMl, sanitizeMathMl, DEFAULT_VIEWER_OPTIONS, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, revealedSmartArtNodeCount, buildSmartArtA11y, buildCssGradientFromShapeStyle, resolveGroupChildFill, getGroupChildParentFill, getComputedEffectStyle, getSoftEdgeSvgFilter, getElementLabel, buildPreviewElements, 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, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, shouldUseSvgWarp, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, activateModalFocus, buildCollaborationShareUrl, presentationInkPath, mobileElapsedSince, isFirstSlide, isLastSlide, formatMobileElapsed, mobileSlideCounter, formatElapsed, computeInlineEditorRect, findSmartArtNodeText, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, 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, getWarpPath, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, SLIDE_VIRTUALIZATION_THRESHOLD, getShapeAdjustmentHandleDescriptor, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, formatSlideCounter, 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, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, getConnectionSites, generateTicks, getCommentMarkerPosition, buildThemeColorGrid, THEME_COLOR_LABELS, buildSmartArtPresetData, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, TABLE_STYLE_PRESETS, withFrameSlides, withSlidesPerPage, formatCommentTimestamp, DIRECTIONAL_PRESETS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, DUOTONE_PRESETS, ARTISTIC_EFFECTS, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS } from './chunk-27XBWVO5.mjs';
5
- import { LOCALE_CATALOG, translationsEn } from './chunk-2X72MOPZ.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-L4ETDT4F.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_TRANSITION_OPTIONS, 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, startPreviewAnimation, stopPreviewAnimation } from './chunk-SOHIKHL4.mjs';
4
+ import { RULER_THICKNESS, RULER_FONT_SIZE, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, getElementTransform, ACTION_BUTTON_PRESETS, isEditableTextElement, getAriaRole, getAriaLabel, getAriaRoleDescription, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, EQUATION_TEMPLATES, convertLatexToOmml, convertOmmlToMathMl, sanitizeMathMl, DEFAULT_VIEWER_OPTIONS, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, revealedSmartArtNodeCount, buildSmartArtA11y, buildCssGradientFromShapeStyle, resolveGroupChildFill, getGroupChildParentFill, getComputedEffectStyle, getSoftEdgeSvgFilter, getElementLabel, buildPreviewElements, 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, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, shouldUseSvgWarp, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, 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, formatElapsed, computeInlineEditorRect, findSmartArtNodeText, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, 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, getWarpPath, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, SLIDE_VIRTUALIZATION_THRESHOLD, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, presentationInkPath, getShapeAdjustmentHandleDescriptor, formatSlideCounter, 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, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, getConnectionSites, generateTicks, getCommentMarkerPosition, buildThemeColorGrid, THEME_COLOR_LABELS, buildSmartArtPresetData, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, TABLE_STYLE_PRESETS, withFrameSlides, withSlidesPerPage, formatCommentTimestamp, DIRECTIONAL_PRESETS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, DUOTONE_PRESETS, ARTISTIC_EFFECTS, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS } from './chunk-RLK72AOU.mjs';
5
+ import { LOCALE_CATALOG, translationsEn } from './chunk-PZTPX3HK.mjs';
6
6
  import { hasShapeProperties, hasTextProperties, SWITCHABLE_LAYOUT_TYPES, isInkElement, isImageLikeElement, getLinkedTextBoxSegments, themeColorSchemesEqual, setSmartArtNodeStyle, updateSmartArtNodeText, getSubstituteFontFamily, THEME_COLOR_SCHEME_KEYS, chartDataChangeType, chartDataUpdatePoint, chartDataAddCategory, chartDataRemoveCategory, chartDataAddSeries, chartDataRemoveSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, pptxActionToElementAction, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, addSmartArtNodeAsChild, removeSmartArtNode, elementActionToPptxAction, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode } from './chunk-6YXLGMTN.mjs';
7
7
  import React32, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, useContext, Suspense, useLayoutEffect, useDeferredValue } from 'react';
8
8
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
@@ -1336,7 +1336,7 @@ function AccountPage() {
1336
1336
  return void 0;
1337
1337
  });
1338
1338
  };
1339
- const version = "2.0.0" ;
1339
+ const version = "2.1.0" ;
1340
1340
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
1341
1341
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
1342
1342
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -8340,7 +8340,7 @@ function FailedToLoad() {
8340
8340
  var LazyModel3DScene = React32.lazy(
8341
8341
  async () => {
8342
8342
  try {
8343
- return await import('./Model3DScene-2M6HVWTE.mjs');
8343
+ return await import('./Model3DScene-RCZCBW52.mjs');
8344
8344
  } catch {
8345
8345
  return { default: FailedToLoad };
8346
8346
  }
@@ -17978,6 +17978,54 @@ function EncryptedFileDialog({
17978
17978
  )
17979
17979
  ] });
17980
17980
  }
17981
+ function PresenterSlideFrame({
17982
+ canvasSize,
17983
+ zoomScale = 1,
17984
+ zoomOriginX = 0.5,
17985
+ zoomOriginY = 0.5,
17986
+ inkProps,
17987
+ children
17988
+ }) {
17989
+ const paneRef = useRef(null);
17990
+ const [pane, setPane] = useState(null);
17991
+ useEffect(() => {
17992
+ const el = paneRef.current;
17993
+ if (!el) {
17994
+ return;
17995
+ }
17996
+ const observer = new ResizeObserver((entries) => {
17997
+ const rect = entries[0]?.contentRect;
17998
+ if (rect && rect.width > 0 && rect.height > 0) {
17999
+ setPane({ width: rect.width, height: rect.height });
18000
+ }
18001
+ });
18002
+ observer.observe(el);
18003
+ const initial = el.getBoundingClientRect();
18004
+ if (initial.width > 0 && initial.height > 0) {
18005
+ setPane({ width: initial.width, height: initial.height });
18006
+ }
18007
+ return () => {
18008
+ observer.disconnect();
18009
+ };
18010
+ }, []);
18011
+ const safeWidth = Math.max(canvasSize.width, 1);
18012
+ const safeHeight = Math.max(canvasSize.height, 1);
18013
+ const fittedWidth = pane ? Math.max(1, Math.min(pane.width, pane.height * safeWidth / safeHeight)) : 0;
18014
+ return /* @__PURE__ */ jsx("div", { ref: paneRef, className: "flex min-h-0 w-full flex-1 items-center justify-center", children: /* @__PURE__ */ jsx(
18015
+ "div",
18016
+ {
18017
+ className: "relative transition-transform duration-200",
18018
+ style: {
18019
+ width: fittedWidth || void 0,
18020
+ transform: `scale(${zoomScale})`,
18021
+ transformOrigin: `${zoomOriginX * 100}% ${zoomOriginY * 100}%`,
18022
+ touchAction: "none"
18023
+ },
18024
+ ...inkProps,
18025
+ children: fittedWidth > 0 && children
18026
+ }
18027
+ ) });
18028
+ }
17981
18029
  function PresentationAudienceEffects({ snapshot }) {
17982
18030
  const strokes = snapshot.inkStrokes?.filter((stroke) => stroke.slideIndex === snapshot.slideIndex) ?? [];
17983
18031
  return /* @__PURE__ */ jsxs("div", { className: "pointer-events-none absolute inset-0 z-[75] overflow-hidden", children: [
@@ -18621,15 +18669,13 @@ function PresenterView({
18621
18669
  /* @__PURE__ */ jsxs("div", { className: "flex flex-1 min-h-0", children: [
18622
18670
  /* @__PURE__ */ jsxs("div", { className: "flex-[7] flex flex-col items-center justify-center bg-black p-6 min-w-0 overflow-hidden", children: [
18623
18671
  /* @__PURE__ */ jsxs(
18624
- "div",
18672
+ PresenterSlideFrame,
18625
18673
  {
18626
- className: "relative transition-transform duration-200",
18627
- style: {
18628
- transform: `scale(${snapshot.zoom?.scale ?? 1})`,
18629
- transformOrigin: `${(snapshot.zoom?.originX ?? 0.5) * 100}% ${(snapshot.zoom?.originY ?? 0.5) * 100}%`,
18630
- touchAction: "none"
18631
- },
18632
- ...ink,
18674
+ canvasSize,
18675
+ zoomScale: snapshot.zoom?.scale ?? 1,
18676
+ zoomOriginX: snapshot.zoom?.originX ?? 0.5,
18677
+ zoomOriginY: snapshot.zoom?.originY ?? 0.5,
18678
+ inkProps: ink,
18633
18679
  children: [
18634
18680
  /* @__PURE__ */ jsx(
18635
18681
  ScaledSlidePreview,
@@ -26591,10 +26637,11 @@ function PresentationAnnotationOverlay({
26591
26637
  }
26592
26638
  onPointerUp();
26593
26639
  }, [presentationTool, onLaserLeave, onPointerUp]);
26594
- if (presentationTool === "none") {
26640
+ const allStrokes = currentStroke ? [...annotationStrokes, currentStroke] : annotationStrokes;
26641
+ const isCapturing = presentationTool !== "none";
26642
+ if (!isCapturing && allStrokes.length === 0) {
26595
26643
  return null;
26596
26644
  }
26597
- const allStrokes = currentStroke ? [...annotationStrokes, currentStroke] : annotationStrokes;
26598
26645
  return /* @__PURE__ */ jsxs(
26599
26646
  "div",
26600
26647
  {
@@ -26602,7 +26649,7 @@ function PresentationAnnotationOverlay({
26602
26649
  style: {
26603
26650
  zIndex: 60,
26604
26651
  cursor: getCursorForTool(presentationTool),
26605
- pointerEvents: "auto"
26652
+ pointerEvents: isCapturing ? "auto" : "none"
26606
26653
  },
26607
26654
  children: [
26608
26655
  /* @__PURE__ */ jsx(
@@ -26923,7 +26970,7 @@ function PresentationToolbar({
26923
26970
  type: "button",
26924
26971
  className: `flex items-center justify-center w-9 h-9 rounded-md transition-colors ${presenterMode ? "bg-white/25 text-white" : "text-white/70 hover:text-white hover:bg-white/10"}`,
26925
26972
  onClick: onTogglePresenterView,
26926
- title: t("pptx.presenter.presenterView", { defaultValue: "Presenter view (N)" }),
26973
+ title: t("pptx.presenter.presenterView", { defaultValue: "Presenter view" }),
26927
26974
  "aria-label": t("pptx.presenter.presenterView", { defaultValue: "Presenter view" }),
26928
26975
  children: /* @__PURE__ */ jsx(LuPanelRight, { size: 18 })
26929
26976
  }
@@ -30717,7 +30764,6 @@ function ViewerPresentationLayer(props) {
30717
30764
  } = props;
30718
30765
  const presenterActive = mode === "present" && presentation.presenterMode;
30719
30766
  return /* @__PURE__ */ jsxs(Fragment, { children: [
30720
- mode === "present" && !presentation.presenterMode && /* @__PURE__ */ jsx(PresentationAudienceEffects, { snapshot: presentation.presenterSnapshot }),
30721
30767
  presenterActive && (isMobile ? /* @__PURE__ */ jsx(
30722
30768
  MobilePresenterView,
30723
30769
  {
@@ -30778,13 +30824,187 @@ function ViewerPresentationLayer(props) {
30778
30824
  )
30779
30825
  ] });
30780
30826
  }
30827
+ function PresentationStage({
30828
+ activeSlide,
30829
+ templateElements,
30830
+ canvasSize,
30831
+ mediaDataUrls,
30832
+ presentationElementStates,
30833
+ presentationKeyframesCss,
30834
+ onActionClick,
30835
+ onHyperlinkClick,
30836
+ allSlides,
30837
+ onZoomClick,
30838
+ sourceSlideIndex,
30839
+ fieldContext,
30840
+ tableStyleContext,
30841
+ children,
30842
+ screenOverlay
30843
+ }) {
30844
+ const containerRef = useRef(null);
30845
+ const [box, setBox] = useState(null);
30846
+ useEffect(() => {
30847
+ const el = containerRef.current;
30848
+ if (!el) {
30849
+ return;
30850
+ }
30851
+ const observer = new ResizeObserver((entries) => {
30852
+ const rect = entries[0]?.contentRect;
30853
+ if (rect && rect.width > 0 && rect.height > 0) {
30854
+ setBox({ width: rect.width, height: rect.height });
30855
+ }
30856
+ });
30857
+ observer.observe(el);
30858
+ const initial = el.getBoundingClientRect();
30859
+ if (initial.width > 0 && initial.height > 0) {
30860
+ setBox({ width: initial.width, height: initial.height });
30861
+ }
30862
+ return () => {
30863
+ observer.disconnect();
30864
+ };
30865
+ }, []);
30866
+ const safeWidth = Math.max(canvasSize.width, 1);
30867
+ const safeHeight = Math.max(canvasSize.height, 1);
30868
+ const scale = useMemo(() => {
30869
+ if (!box) {
30870
+ return 1;
30871
+ }
30872
+ const fit = Math.min(box.width / safeWidth, box.height / safeHeight);
30873
+ return fit > 0 ? fit : 1;
30874
+ }, [box, safeWidth, safeHeight]);
30875
+ const scaledWidth = safeWidth * scale;
30876
+ const scaledHeight = safeHeight * scale;
30877
+ return /* @__PURE__ */ jsxs(
30878
+ "div",
30879
+ {
30880
+ ref: containerRef,
30881
+ "data-pptx-presentation-stage": true,
30882
+ className: "relative flex-1 min-h-0 overflow-hidden bg-black select-none",
30883
+ children: [
30884
+ /* @__PURE__ */ jsxs(
30885
+ "div",
30886
+ {
30887
+ className: "absolute",
30888
+ style: {
30889
+ width: scaledWidth,
30890
+ height: scaledHeight,
30891
+ // Centre the letterboxed slide without flexbox so the box keeps a
30892
+ // definite size for the overlays parented to it.
30893
+ left: box ? Math.max(0, (box.width - scaledWidth) / 2) : 0,
30894
+ top: box ? Math.max(0, (box.height - scaledHeight) / 2) : 0
30895
+ },
30896
+ children: [
30897
+ /* @__PURE__ */ jsxs(
30898
+ "div",
30899
+ {
30900
+ role: "region",
30901
+ "aria-roledescription": "slide",
30902
+ "aria-label": `Slide ${(sourceSlideIndex ?? 0) + 1}`,
30903
+ className: "absolute top-0 left-0 overflow-hidden",
30904
+ style: {
30905
+ width: safeWidth,
30906
+ height: safeHeight,
30907
+ transform: `scale(${scale})`,
30908
+ transformOrigin: "top left",
30909
+ ...getReactSlideBackgroundStyle(activeSlide)
30910
+ },
30911
+ children: [
30912
+ presentationKeyframesCss && /* @__PURE__ */ jsx("style", { children: presentationKeyframesCss }),
30913
+ templateElements.map((element, index) => /* @__PURE__ */ jsx(
30914
+ ElementRenderer,
30915
+ {
30916
+ element,
30917
+ activeSlide,
30918
+ isSelected: false,
30919
+ isInlineEditing: false,
30920
+ inlineEditingText: "",
30921
+ canInteract: false,
30922
+ spellCheckEnabled: false,
30923
+ mediaDataUrls,
30924
+ selectionColorClass: "blue-400",
30925
+ showHoverBorder: false,
30926
+ zIndex: index,
30927
+ imageAltText: "Template element",
30928
+ showResizeHandles: false,
30929
+ renderInk: false,
30930
+ renderGroups: true,
30931
+ adjustmentHandleDescriptor: null,
30932
+ onResizePointerDown: noop2,
30933
+ onAdjustmentPointerDown: noop2,
30934
+ onInlineEditChange: noop2,
30935
+ onInlineEditCommit: noop2,
30936
+ onInlineEditCancel: noop2,
30937
+ onActionClick,
30938
+ onHyperlinkClick,
30939
+ animationState: presentationElementStates?.get(element.id),
30940
+ presentationElementStates,
30941
+ allSlides,
30942
+ onZoomClick,
30943
+ sourceSlideIndex,
30944
+ fieldContext,
30945
+ tableStyleContext
30946
+ },
30947
+ `tpl-${element.id}`
30948
+ )),
30949
+ activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsx(
30950
+ ElementRenderer,
30951
+ {
30952
+ element,
30953
+ activeSlide,
30954
+ isSelected: false,
30955
+ isInlineEditing: false,
30956
+ inlineEditingText: "",
30957
+ canInteract: false,
30958
+ spellCheckEnabled: false,
30959
+ mediaDataUrls,
30960
+ selectionColorClass: "blue-500",
30961
+ showHoverBorder: false,
30962
+ zIndex: templateElements.length + index,
30963
+ imageAltText: "Slide element",
30964
+ showResizeHandles: false,
30965
+ renderInk: true,
30966
+ renderGroups: true,
30967
+ adjustmentHandleDescriptor: null,
30968
+ onResizePointerDown: noop2,
30969
+ onAdjustmentPointerDown: noop2,
30970
+ onInlineEditChange: noop2,
30971
+ onInlineEditCommit: noop2,
30972
+ onInlineEditCancel: noop2,
30973
+ onActionClick,
30974
+ onHyperlinkClick,
30975
+ animationState: presentationElementStates?.get(element.id),
30976
+ presentationElementStates,
30977
+ allSlides,
30978
+ onZoomClick,
30979
+ sourceSlideIndex,
30980
+ fieldContext,
30981
+ tableStyleContext
30982
+ },
30983
+ element.id
30984
+ ))
30985
+ ]
30986
+ }
30987
+ ),
30988
+ children?.(scale)
30989
+ ]
30990
+ }
30991
+ ),
30992
+ screenOverlay
30993
+ ]
30994
+ }
30995
+ );
30996
+ }
30997
+ function noop2() {
30998
+ }
30781
30999
  var itemClass = "block w-full whitespace-nowrap px-3 py-1.5 text-left text-xs text-foreground transition-colors hover:bg-accent";
31000
+ var headingClass = "px-3 pb-0.5 pt-1.5 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground";
30782
31001
  function PresentationContextMenu(p) {
30783
31002
  const { t } = useTranslation();
30784
31003
  const run = (action) => {
30785
31004
  action();
30786
31005
  p.onClose();
30787
31006
  };
31007
+ const item = (label, action) => action ? /* @__PURE__ */ jsx("button", { type: "button", role: "menuitem", className: itemClass, onClick: () => run(action), children: label }) : null;
30788
31008
  return /* @__PURE__ */ jsxs(Fragment, { children: [
30789
31009
  /* @__PURE__ */ jsx(
30790
31010
  "div",
@@ -30803,32 +31023,43 @@ function PresentationContextMenu(p) {
30803
31023
  "data-pptx-presentation-menu": "",
30804
31024
  role: "menu",
30805
31025
  tabIndex: -1,
30806
- className: "fixed z-[1300] min-w-[160px] rounded-md border border-border bg-popover py-1 shadow-xl",
31026
+ className: "fixed z-[1300] min-w-[180px] rounded-md border border-border bg-popover py-1 shadow-xl",
30807
31027
  style: { left: p.state.x, top: p.state.y },
30808
31028
  onContextMenu: (e) => e.preventDefault(),
30809
31029
  children: [
30810
- /* @__PURE__ */ jsx("button", { type: "button", role: "menuitem", className: itemClass, onClick: () => run(p.onNext), children: t("pptx.presenter.nextSlide") }),
30811
- /* @__PURE__ */ jsx(
30812
- "button",
30813
- {
30814
- type: "button",
30815
- role: "menuitem",
30816
- className: itemClass,
30817
- onClick: () => run(p.onPrevious),
30818
- children: t("pptx.presenter.previousSlide")
30819
- }
30820
- ),
31030
+ item(t("pptx.presenter.nextSlide"), p.onNext),
31031
+ item(t("pptx.presenter.previousSlide"), p.onPrevious),
31032
+ item(t("pptx.presenter.seeAllSlides"), p.onSeeAllSlides),
31033
+ item(t("pptx.presenter.presenterView"), p.onShowPresenterView),
31034
+ (p.onPointerTool || p.onEraseInk) && /* @__PURE__ */ jsxs(Fragment, { children: [
31035
+ /* @__PURE__ */ jsx("div", { className: "my-1 border-t border-border/60" }),
31036
+ /* @__PURE__ */ jsx("div", { className: headingClass, children: t("pptx.presentation.pointerTools") }),
31037
+ item(
31038
+ t("pptx.presenter.pointerArrow"),
31039
+ p.onPointerTool && (() => p.onPointerTool?.("none"))
31040
+ ),
31041
+ item(
31042
+ t("pptx.presenter.pointerPen"),
31043
+ p.onPointerTool && (() => p.onPointerTool?.("pen"))
31044
+ ),
31045
+ item(
31046
+ t("pptx.presenter.pointerHighlighter"),
31047
+ p.onPointerTool && (() => p.onPointerTool?.("highlighter"))
31048
+ ),
31049
+ item(
31050
+ t("pptx.presentation.laserPointer"),
31051
+ p.onPointerTool && (() => p.onPointerTool?.("laser"))
31052
+ ),
31053
+ item(t("pptx.presenter.eraseAllInk"), p.onEraseInk)
31054
+ ] }),
31055
+ p.onBlank && /* @__PURE__ */ jsxs(Fragment, { children: [
31056
+ /* @__PURE__ */ jsx("div", { className: "my-1 border-t border-border/60" }),
31057
+ /* @__PURE__ */ jsx("div", { className: headingClass, children: t("pptx.presenter.screen") }),
31058
+ item(t("pptx.presenter.blackScreen"), () => p.onBlank?.("black")),
31059
+ item(t("pptx.presenter.whiteScreen"), () => p.onBlank?.("white"))
31060
+ ] }),
30821
31061
  /* @__PURE__ */ jsx("div", { className: "my-1 border-t border-border/60" }),
30822
- /* @__PURE__ */ jsx(
30823
- "button",
30824
- {
30825
- type: "button",
30826
- role: "menuitem",
30827
- className: itemClass,
30828
- onClick: () => run(p.onEndShow),
30829
- children: t("pptx.presenter.endPresentation")
30830
- }
30831
- )
31062
+ item(t("pptx.presenter.endPresentation"), p.onEndShow)
30832
31063
  ]
30833
31064
  }
30834
31065
  )
@@ -31039,7 +31270,62 @@ ${url}`)) {
31039
31270
  onClose: () => findReplace.setFindReplaceOpen(false)
31040
31271
  }
31041
31272
  ),
31042
- mode === "master" && s.masterViewTab === "notes" ? /* @__PURE__ */ jsx(
31273
+ mode === "present" ? /* @__PURE__ */ jsx(
31274
+ PresentationStage,
31275
+ {
31276
+ activeSlide,
31277
+ templateElements,
31278
+ canvasSize,
31279
+ mediaDataUrls: s.mediaDataUrls,
31280
+ presentationElementStates: presentation.presentationElementStates,
31281
+ presentationKeyframesCss: presentation.presentationKeyframesCss,
31282
+ onActionClick: handleActionClick,
31283
+ onHyperlinkClick: handleHyperlinkClick,
31284
+ allSlides: slides,
31285
+ onZoomClick: presentation.handleZoomClick,
31286
+ sourceSlideIndex: activeSlideIndex,
31287
+ fieldContext,
31288
+ tableStyleContext,
31289
+ screenOverlay: (
31290
+ // Blackout/whiteout, audience ink, laser and captions. Rendered on
31291
+ // the stage rather than beside the viewer, because the fullscreen
31292
+ // element is the viewer's inner container: anything mounted outside
31293
+ // it simply is not painted while a real fullscreen show is running.
31294
+ /* @__PURE__ */ jsx(PresentationAudienceEffects, { snapshot: presentation.presenterSnapshot })
31295
+ ),
31296
+ children: (stageScale) => /* @__PURE__ */ jsxs(Fragment, { children: [
31297
+ presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsx(
31298
+ PresentationTransitionOverlay,
31299
+ {
31300
+ outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
31301
+ templateElements,
31302
+ canvasSize,
31303
+ transition: presentation.transitionOverlay.transition,
31304
+ durationMs: presentation.transitionOverlay.durationMs,
31305
+ onComplete: presentation.handleTransitionOverlayComplete
31306
+ },
31307
+ `${presentation.transitionOverlay.outgoingSlideIndex}-${presentation.transitionOverlay.incomingSlideIndex}`
31308
+ ),
31309
+ annotations.inkMarkupVisible && /* @__PURE__ */ jsx(
31310
+ PresentationAnnotationOverlay,
31311
+ {
31312
+ canvasSize,
31313
+ editorScale: stageScale,
31314
+ presentationTool: annotations.presentationTool,
31315
+ annotationStrokes: annotations.annotationStrokes,
31316
+ currentStroke: annotations.currentStroke,
31317
+ laserPosition: annotations.laserPosition,
31318
+ onPointerDown: annotations.handlePointerDown,
31319
+ onPointerMove: annotations.handlePointerMove,
31320
+ onPointerUp: annotations.handlePointerUp,
31321
+ onLaserMove: annotations.handleLaserMove,
31322
+ onLaserLeave: annotations.handleLaserLeave,
31323
+ onEraseAtPoint: annotations.eraseAtPoint
31324
+ }
31325
+ )
31326
+ ] })
31327
+ }
31328
+ ) : mode === "master" && s.masterViewTab === "notes" ? /* @__PURE__ */ jsx(
31043
31329
  NotesMasterCanvas,
31044
31330
  {
31045
31331
  notesMaster: s.notesMaster,
@@ -31076,8 +31362,6 @@ ${url}`)) {
31076
31362
  gridSpacingPx,
31077
31363
  showRulers: s.showRulers,
31078
31364
  guides: s.guides,
31079
- presentationElementStates: mode === "present" ? presentation.presentationElementStates : void 0,
31080
- presentationKeyframesCss: mode === "present" ? presentation.presentationKeyframesCss : void 0,
31081
31365
  onClick: handleElementClick,
31082
31366
  onDoubleClick: canvasHandlers.handleElementDoubleClick,
31083
31367
  onMouseDown: handleElementMouseDown,
@@ -31107,9 +31391,6 @@ ${url}`)) {
31107
31391
  onEraseInkElement: insertHandlers.handleEraseInkElement,
31108
31392
  onActionClick: handleActionClick,
31109
31393
  onHyperlinkClick: handleHyperlinkClick,
31110
- allSlides: mode === "present" ? slides : void 0,
31111
- onZoomClick: mode === "present" ? presentation.handleZoomClick : void 0,
31112
- sourceSlideIndex: mode === "present" ? activeSlideIndex : void 0,
31113
31394
  fieldContext,
31114
31395
  tableStyleContext,
31115
31396
  aiActive: aiCanvasActive,
@@ -31160,17 +31441,19 @@ ${url}`)) {
31160
31441
  }
31161
31442
  }
31162
31443
  ),
31163
- mode === "present" && presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsx(
31164
- PresentationTransitionOverlay,
31444
+ mode === "present" && presentation.allSlidesOpen && /* @__PURE__ */ jsx(
31445
+ PresenterSlideNavigator,
31165
31446
  {
31166
- outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
31167
- templateElements,
31447
+ slides,
31448
+ current: presentation.presentationSlideIndex,
31168
31449
  canvasSize,
31169
- transition: presentation.transitionOverlay.transition,
31170
- durationMs: presentation.transitionOverlay.durationMs,
31171
- onComplete: presentation.handleTransitionOverlayComplete
31172
- },
31173
- `${presentation.transitionOverlay.outgoingSlideIndex}-${presentation.transitionOverlay.incomingSlideIndex}`
31450
+ templateElements,
31451
+ onSelect: (index) => {
31452
+ presentation.navigateToSlide(index);
31453
+ presentation.closeAllSlides();
31454
+ },
31455
+ onClose: presentation.closeAllSlides
31456
+ }
31174
31457
  ),
31175
31458
  mode === "present" && presentation.endOfShowVisible && /* @__PURE__ */ jsx(PresentationEndOverlay, { onExit: () => presentation.movePresentationSlide(1) }),
31176
31459
  mode === "present" && presentationMenu && /* @__PURE__ */ jsx(
@@ -31181,24 +31464,14 @@ ${url}`)) {
31181
31464
  onPrevious: () => presentation.movePresentationSlide(-1),
31182
31465
  onEndShow: onEndPresentation ?? (() => {
31183
31466
  }),
31184
- onClose: () => setPresentationMenu(null)
31185
- }
31186
- ),
31187
- mode === "present" && annotations.presentationTool !== "none" && /* @__PURE__ */ jsx(
31188
- PresentationAnnotationOverlay,
31189
- {
31190
- canvasSize,
31191
- editorScale: zoom.editorScale,
31192
- presentationTool: annotations.presentationTool,
31193
- annotationStrokes: annotations.annotationStrokes,
31194
- currentStroke: annotations.currentStroke,
31195
- laserPosition: annotations.laserPosition,
31196
- onPointerDown: annotations.handlePointerDown,
31197
- onPointerMove: annotations.handlePointerMove,
31198
- onPointerUp: annotations.handlePointerUp,
31199
- onLaserMove: annotations.handleLaserMove,
31200
- onLaserLeave: annotations.handleLaserLeave,
31201
- onEraseAtPoint: annotations.eraseAtPoint
31467
+ onClose: () => setPresentationMenu(null),
31468
+ onSeeAllSlides: presentation.openAllSlides,
31469
+ onShowPresenterView: presentation.togglePresenterView,
31470
+ onBlank: (value) => presentation.setPresenterBlackout(
31471
+ presentation.presenterSnapshot.blackout === value ? "none" : value
31472
+ ),
31473
+ onPointerTool: (tool) => annotations.setPresentationTool(tool === "none" ? "none" : tool),
31474
+ onEraseInk: annotations.clearAnnotations
31202
31475
  }
31203
31476
  ),
31204
31477
  mode === "present" && /* @__PURE__ */ jsx(PresentationSubtitleBar, { visible: Boolean(s.presentationProperties.showSubtitles) }),
@@ -31251,7 +31524,7 @@ ${url}`)) {
31251
31524
  )
31252
31525
  );
31253
31526
  }
31254
- var AiChatPanel = lazy(() => import('./AiChatPanel-RFBZWMUE.mjs'));
31527
+ var AiChatPanel = lazy(() => import('./AiChatPanel-JFCJCR3O.mjs'));
31255
31528
  function AiChatPanelLazy(props) {
31256
31529
  return /* @__PURE__ */ jsx(
31257
31530
  Suspense,
Binary file
Binary file