pptx-react-viewer 2.21.1 → 3.0.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 (112) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/{AiChatPanel-E4NQEMEI.mjs → AiChatPanel-DMBQPAGB.mjs} +3 -3
  3. package/dist/AiChatPanel-DMBQPAGB.mjs.br +0 -0
  4. package/dist/AiChatPanel-DMBQPAGB.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-VKR2IFFC.js → AiChatPanel-NLIUZ5RI.js} +23 -23
  6. package/dist/AiChatPanel-NLIUZ5RI.js.br +0 -0
  7. package/dist/AiChatPanel-NLIUZ5RI.js.gz +0 -0
  8. package/dist/{Model3DScene-JZKLB5YT.js → Model3DScene-JNZN42TU.js} +2 -2
  9. package/dist/Model3DScene-JNZN42TU.js.br +0 -0
  10. package/dist/Model3DScene-JNZN42TU.js.gz +0 -0
  11. package/dist/{Model3DScene-65J6IE5Q.mjs → Model3DScene-ZO6U7YVU.mjs} +1 -1
  12. package/dist/Model3DScene-ZO6U7YVU.mjs.br +0 -0
  13. package/dist/Model3DScene-ZO6U7YVU.mjs.gz +0 -0
  14. package/dist/{PowerPointViewer-DVFkeluD.d.ts → PowerPointViewer-SkkxAGKa.d.ts} +2 -2
  15. package/dist/PowerPointViewer-SkkxAGKa.d.ts.map +1 -0
  16. package/dist/SurfaceChart3DScene-P6CVRWDQ.mjs +47 -0
  17. package/dist/SurfaceChart3DScene-P6CVRWDQ.mjs.br +0 -0
  18. package/dist/SurfaceChart3DScene-P6CVRWDQ.mjs.gz +0 -0
  19. package/dist/SurfaceChart3DScene-PGD4ZCLI.js +49 -0
  20. package/dist/SurfaceChart3DScene-PGD4ZCLI.js.br +0 -0
  21. package/dist/SurfaceChart3DScene-PGD4ZCLI.js.gz +0 -0
  22. package/dist/{audience-content-store-C4BFFhV5.d.ts → audience-content-store-Bx4Yj2pN.d.ts} +2 -2
  23. package/dist/{audience-content-store-C4BFFhV5.d.ts.map → audience-content-store-Bx4Yj2pN.d.ts.map} +1 -1
  24. package/dist/{chunk-GJHO6HPF.js → chunk-3MW6F3K7.js} +451 -399
  25. package/dist/chunk-3MW6F3K7.js.br +0 -0
  26. package/dist/chunk-3MW6F3K7.js.gz +0 -0
  27. package/dist/{chunk-2SNHVHHB.mjs → chunk-BGAJLL4N.mjs} +70 -18
  28. package/dist/chunk-BGAJLL4N.mjs.br +0 -0
  29. package/dist/chunk-BGAJLL4N.mjs.gz +0 -0
  30. package/dist/{chunk-CBGTLSY7.mjs → chunk-H2ONCGFZ.mjs} +218 -156
  31. package/dist/chunk-H2ONCGFZ.mjs.br +0 -0
  32. package/dist/chunk-H2ONCGFZ.mjs.gz +0 -0
  33. package/dist/{chunk-WRJ76D5S.mjs → chunk-OB4PKKIN.mjs} +1 -1
  34. package/dist/chunk-OB4PKKIN.mjs.br +0 -0
  35. package/dist/chunk-OB4PKKIN.mjs.gz +0 -0
  36. package/dist/{chunk-VWCUKKR3.mjs → chunk-OXPD2UYI.mjs} +14031 -7120
  37. package/dist/chunk-OXPD2UYI.mjs.br +0 -0
  38. package/dist/chunk-OXPD2UYI.mjs.gz +0 -0
  39. package/dist/{chunk-OSPNGQF3.js → chunk-RSEZYBKT.js} +2005 -1943
  40. package/dist/chunk-RSEZYBKT.js.br +0 -0
  41. package/dist/chunk-RSEZYBKT.js.gz +0 -0
  42. package/dist/{chunk-WX3HQHR5.mjs → chunk-S6PFSR7I.mjs} +108 -255
  43. package/dist/chunk-S6PFSR7I.mjs.br +0 -0
  44. package/dist/chunk-S6PFSR7I.mjs.gz +0 -0
  45. package/dist/{chunk-HYUJVSQJ.js → chunk-SDOQKSKI.js} +14051 -7126
  46. package/dist/chunk-SDOQKSKI.js.br +0 -0
  47. package/dist/chunk-SDOQKSKI.js.gz +0 -0
  48. package/dist/{chunk-C3JR7RMW.js → chunk-WFMSDYVQ.js} +3 -3
  49. package/dist/chunk-WFMSDYVQ.js.br +0 -0
  50. package/dist/chunk-WFMSDYVQ.js.gz +0 -0
  51. package/dist/{chunk-DA6DF3EU.js → chunk-XMLPTDPM.js} +248 -396
  52. package/dist/chunk-XMLPTDPM.js.br +0 -0
  53. package/dist/chunk-XMLPTDPM.js.gz +0 -0
  54. package/dist/index.d.ts +491 -20
  55. package/dist/index.js +45 -45
  56. package/dist/index.js.br +0 -0
  57. package/dist/index.js.gz +0 -0
  58. package/dist/index.mjs +5 -5
  59. package/dist/index.mjs.br +0 -0
  60. package/dist/index.mjs.gz +0 -0
  61. package/dist/internals.d.ts +498 -22
  62. package/dist/internals.d.ts.map +1 -1
  63. package/dist/internals.js +78 -78
  64. package/dist/internals.js.br +0 -0
  65. package/dist/internals.js.gz +0 -0
  66. package/dist/internals.mjs +3 -3
  67. package/dist/internals.mjs.br +0 -0
  68. package/dist/internals.mjs.gz +0 -0
  69. package/dist/pptx-viewer.css +1 -1
  70. package/dist/pptx-viewer.css.br +0 -0
  71. package/dist/pptx-viewer.css.gz +0 -0
  72. package/dist/{types-TCH6icpi.d.ts → types-kLpvSPxq.d.ts} +11 -1
  73. package/dist/{types-TCH6icpi.d.ts.map → types-kLpvSPxq.d.ts.map} +1 -1
  74. package/dist/{useViewerBuildingBlocks-BKb0qs1j.d.ts → useViewerBuildingBlocks-fh7rq4jc.d.ts} +2 -2
  75. package/dist/{useViewerBuildingBlocks-BKb0qs1j.d.ts.map → useViewerBuildingBlocks-fh7rq4jc.d.ts.map} +1 -1
  76. package/dist/viewer/index.d.ts +488 -18
  77. package/dist/viewer/index.js +26 -26
  78. package/dist/viewer/index.js.br +0 -0
  79. package/dist/viewer/index.js.gz +0 -0
  80. package/dist/viewer/index.mjs +5 -5
  81. package/dist/viewer/index.mjs.br +0 -0
  82. package/dist/viewer/index.mjs.gz +0 -0
  83. package/package.json +2 -2
  84. package/dist/AiChatPanel-E4NQEMEI.mjs.br +0 -0
  85. package/dist/AiChatPanel-E4NQEMEI.mjs.gz +0 -0
  86. package/dist/AiChatPanel-VKR2IFFC.js.br +0 -0
  87. package/dist/AiChatPanel-VKR2IFFC.js.gz +0 -0
  88. package/dist/Model3DScene-65J6IE5Q.mjs.br +0 -0
  89. package/dist/Model3DScene-65J6IE5Q.mjs.gz +0 -0
  90. package/dist/Model3DScene-JZKLB5YT.js.br +0 -0
  91. package/dist/Model3DScene-JZKLB5YT.js.gz +0 -0
  92. package/dist/PowerPointViewer-DVFkeluD.d.ts.map +0 -1
  93. package/dist/chunk-2SNHVHHB.mjs.br +0 -0
  94. package/dist/chunk-2SNHVHHB.mjs.gz +0 -0
  95. package/dist/chunk-C3JR7RMW.js.br +0 -0
  96. package/dist/chunk-C3JR7RMW.js.gz +0 -0
  97. package/dist/chunk-CBGTLSY7.mjs.br +0 -0
  98. package/dist/chunk-CBGTLSY7.mjs.gz +0 -0
  99. package/dist/chunk-DA6DF3EU.js.br +0 -0
  100. package/dist/chunk-DA6DF3EU.js.gz +0 -0
  101. package/dist/chunk-GJHO6HPF.js.br +0 -0
  102. package/dist/chunk-GJHO6HPF.js.gz +0 -0
  103. package/dist/chunk-HYUJVSQJ.js.br +0 -0
  104. package/dist/chunk-HYUJVSQJ.js.gz +0 -0
  105. package/dist/chunk-OSPNGQF3.js.br +0 -0
  106. package/dist/chunk-OSPNGQF3.js.gz +0 -0
  107. package/dist/chunk-VWCUKKR3.mjs.br +0 -0
  108. package/dist/chunk-VWCUKKR3.mjs.gz +0 -0
  109. package/dist/chunk-WRJ76D5S.mjs.br +0 -0
  110. package/dist/chunk-WRJ76D5S.mjs.gz +0 -0
  111. package/dist/chunk-WX3HQHR5.mjs.br +0 -0
  112. package/dist/chunk-WX3HQHR5.mjs.gz +0 -0
@@ -1,9 +1,9 @@
1
- import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-WRJ76D5S.mjs';
2
- import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP } from './chunk-2SNHVHHB.mjs';
3
- import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-WX3HQHR5.mjs';
1
+ import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-OB4PKKIN.mjs';
2
+ import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useLayoutSwitching, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP } from './chunk-BGAJLL4N.mjs';
3
+ import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getCropShapeClipPath, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, SLIDE_NAV_THUMBNAIL_WIDTH, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, TOOLBAR_SECTIONS, DEFAULT_SECTION_GROUP_ID, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-S6PFSR7I.mjs';
4
4
  import { LOCALE_CATALOG, translationsEn } from './chunk-L5MNLIQF.mjs';
5
- import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, isImageLikeElement, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, ensureChartInteractionStyles, applyChartPartHighlight, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, buildChromeStyle, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, 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, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, normalizeSegments, createPlainNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, escapeHtml2, toggleSheet, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, buildFontCatalog, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, generateTicks, rulerDragToGuidePosition, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, 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, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, clearMotionPath, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, reorderAnimationTo, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-VWCUKKR3.mjs';
6
- import React14, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, Suspense, useLayoutEffect, useContext, Fragment as Fragment$1, useDeferredValue } from 'react';
5
+ import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, isElementRendered, isElementActionable, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, getComputedFillStyle, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, ensureChartInteractionStyles, applyChartPartHighlight, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, themeToCssVars, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, setMasterViewBackgroundColor, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_PANEL_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_HINT_CLASS, DEFAULT_PALETTE2, resolvePalette, computeDrawingViewBox, projectDrawingShapes, styleShadowFilter, resolveDrawingShapeNodeId, buildChromeStyle, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, advanceChartValueDrag, beginChartValueDrag, buildSurfaceChart3DDataForElement, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, 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, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, RIBBON_SHAPE_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, toggleSheet, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, buildFontCatalog, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, generateTicks, rulerDragToGuidePosition, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, 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, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, clearMotionPath, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, CHART_TYPE_OPTIONS, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, reorderAnimationTo, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-OXPD2UYI.mjs';
6
+ import React15, { 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';
9
9
  import { LuRotateCw, LuMessageSquare, LuEyeOff, LuHistory, LuTrash2, LuSettings, LuX, LuCalendarDays, LuHash, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuSettings2, LuLayers, LuClock, LuDownload, LuCheck, LuLock, LuEye, LuFileText, LuType, LuLoader, LuShieldAlert, LuSignature, LuInfo, LuTriangleAlert, LuPrinter, LuPenTool, LuBug, LuChevronUp, LuChevronDown, LuUpload, LuWifi, LuWifiOff, LuUsers, LuCopy, LuChevronLeft, LuChevronRight, LuPlay, LuPause, LuZoomOut, LuZoomIn, LuSpellCheck, LuFileDown, LuMenu, LuSparkles, LuShare2, LuPanelLeft, LuPanelRight, LuArrowLeft, LuFolderOpen, LuClipboardPaste, LuScissors, LuPaintbrush, LuSquare, LuImage, LuVideo, LuDatabase, LuAArrowUp, LuAArrowDown, LuRemoveFormatting, LuHighlighter, LuList, LuListOrdered, LuIndentDecrease, LuIndentIncrease, LuReplace, LuMousePointer2, LuShapes, LuPaintBucket, LuPenLine, LuPalette, LuPencil, LuStar, LuMoveRight, LuMousePointerClick, LuClock3, LuMonitorPlay, LuListVideo, LuCaptions, LuCamera, LuEraser, LuRotateCcw, LuCircleHelp, LuBookOpen, LuLanguages, LuGlobe, LuGitCompare, LuMessageSquarePlus, LuLockKeyhole, LuPanelTop, LuLayoutGrid, LuGrid3X3, LuPipette, LuRuler, LuMaximize2, LuCode, LuCaseSensitive, LuTimer, LuGripVertical, LuLoaderCircle, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuLink, LuGrid2X2, LuCopyPlus, LuScan, LuMonitorOff, LuCirclePlay, LuCirclePause, LuArrowLeftRight, LuClipboardCopy, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuPackage, LuFileJson, LuBox, LuFileImage, LuUser, LuHardDrive, LuLogIn, LuLayoutTemplate, LuFolderPlus, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignJustify, LuColumns3, LuSpline, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuMove, LuRadio, LuLockOpen, LuArrowDown, LuArrowUp, LuArrowRight, LuReply, LuBookmark } from 'react-icons/lu';
@@ -478,6 +478,64 @@ function ChartPartSelectionProvider({
478
478
  function useChartPartSelection() {
479
479
  return useContext(ChartPartSelectionContext);
480
480
  }
481
+ var SurfaceChart3DContext = createContext(false);
482
+ function FailedToLoad() {
483
+ return null;
484
+ }
485
+ var LazySurfaceChart3DScene = React15.lazy(
486
+ async () => {
487
+ try {
488
+ return await import('./SurfaceChart3DScene-P6CVRWDQ.mjs');
489
+ } catch {
490
+ return { default: FailedToLoad };
491
+ }
492
+ }
493
+ );
494
+ var SceneErrorBoundary = class extends React15.Component {
495
+ constructor(props) {
496
+ super(props);
497
+ this.state = { hasError: false };
498
+ }
499
+ static getDerivedStateFromError() {
500
+ return { hasError: true };
501
+ }
502
+ render() {
503
+ return this.state.hasError ? this.props.fallback : this.props.children;
504
+ }
505
+ };
506
+ function SurfaceChart3DRenderer({
507
+ element
508
+ }) {
509
+ const [threeAvailable, setThreeAvailable] = useState(null);
510
+ useEffect(() => {
511
+ let cancelled = false;
512
+ import('./three.module-AC7ESV4W.mjs').then(() => {
513
+ if (!cancelled) {
514
+ setThreeAvailable(true);
515
+ }
516
+ return void 0;
517
+ }).catch(() => {
518
+ if (!cancelled) {
519
+ setThreeAvailable(false);
520
+ }
521
+ });
522
+ return () => {
523
+ cancelled = true;
524
+ };
525
+ }, []);
526
+ const options = useMemo(
527
+ () => buildSurfaceChart3DDataForElement(element, { width: element.width, height: element.height }),
528
+ [element]
529
+ );
530
+ const svgFallback = /* @__PURE__ */ jsx(Fragment, { children: renderChartElement(element) });
531
+ if (!options || threeAvailable === false) {
532
+ return svgFallback;
533
+ }
534
+ if (threeAvailable === null) {
535
+ return svgFallback;
536
+ }
537
+ return /* @__PURE__ */ jsx(SceneErrorBoundary, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: svgFallback, children: /* @__PURE__ */ jsx(LazySurfaceChart3DScene, { options }) }) });
538
+ }
481
539
  function ChartElementView({
482
540
  element,
483
541
  editable,
@@ -492,6 +550,8 @@ function ChartElementView({
492
550
  const [titleDraft, setTitleDraft] = useState(null);
493
551
  const selectedPart = selection?.elementId === element.id ? selection.part : null;
494
552
  const canEdit = editable && Boolean(onUpdateElement);
553
+ const use3D = useContext(SurfaceChart3DContext);
554
+ const isSurfaceKind = resolveChartKind(element.chartData?.chartType ?? "bar") === "surface";
495
555
  const viewModel = useMemo(
496
556
  () => canEdit ? buildReactChartViewModel(element) : null,
497
557
  [canEdit, element]
@@ -615,7 +675,7 @@ function ChartElementView({
615
675
  onPointerUp: handlePointerUp,
616
676
  onDoubleClick: handleDoubleClick,
617
677
  children: [
618
- renderChartElement(renderedElement),
678
+ use3D && isSurfaceKind ? /* @__PURE__ */ jsx(SurfaceChart3DRenderer, { element: renderedElement }) : renderChartElement(renderedElement),
619
679
  dragValue !== null && /* @__PURE__ */ jsx("div", { className: "absolute top-1 right-1 z-10 rounded bg-primary/90 px-1.5 py-0.5 text-[10px] font-medium text-white pointer-events-none", children: formatAxisValue(dragValue) }),
620
680
  titleDraft !== null && /* @__PURE__ */ jsx(
621
681
  "input",
@@ -1165,7 +1225,7 @@ function ResizeHandles({
1165
1225
  ))
1166
1226
  ] });
1167
1227
  }
1168
- var ConnectorElementRenderer = React14.memo(
1228
+ var ConnectorElementRenderer = React15.memo(
1169
1229
  // oxlint-disable-next-line prefer-arrow-callback -- named fn gives the memo component its displayName
1170
1230
  function ConnectorElementRendererInner({
1171
1231
  el,
@@ -1535,7 +1595,7 @@ function shapeParams(element) {
1535
1595
  const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
1536
1596
  return { hf: hasFill, fc: fillColor, sw: strokeWidth, sc: strokeColor };
1537
1597
  }
1538
- var Extrusion3DOverlay = React14.memo(
1598
+ var Extrusion3DOverlay = React15.memo(
1539
1599
  // oxlint-disable-next-line prefer-arrow-callback -- named fn gives the memo component its displayName
1540
1600
  function Extrusion3DOverlayInner({ data }) {
1541
1601
  if (!data.hasExtrusion || data.panels.length === 0) {
@@ -1620,13 +1680,18 @@ function ShapeEffectOverlay({
1620
1680
  if (!hasShapeProperties(element)) {
1621
1681
  return null;
1622
1682
  }
1623
- const overlay = getComputedEffectStyle(element).fillOverlay;
1683
+ const fx = getComputedEffectStyle(element);
1684
+ const overlay = fx.fillOverlay;
1685
+ const reflection = fx.reflection;
1624
1686
  const softEdge = getSoftEdgeSvgFilter(element.shapeStyle, element.id);
1625
1687
  const strokeOutline = buildStrokeOutline(element);
1626
1688
  const hollowHit = buildHollowHitOutline(element);
1627
- if (!overlay && !softEdge && !strokeOutline && !hollowHit) {
1689
+ const subpathFill = buildSubpathFillOverlay(element);
1690
+ if (!overlay && !softEdge && !strokeOutline && !hollowHit && !subpathFill && !reflection) {
1628
1691
  return null;
1629
1692
  }
1693
+ const reflectionFill = reflection && !isImageLikeElement(element) ? getComputedFillStyle(element) : void 0;
1694
+ const reflectionImgSrc = reflection && isImageLikeElement(element) ? imgSrc(element) : void 0;
1630
1695
  const fillOverlayStyle = overlay ? {
1631
1696
  position: "absolute",
1632
1697
  inset: 0,
@@ -1635,6 +1700,17 @@ function ShapeEffectOverlay({
1635
1700
  pointerEvents: "none"
1636
1701
  } : void 0;
1637
1702
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1703
+ subpathFill ? /* @__PURE__ */ jsx(
1704
+ "svg",
1705
+ {
1706
+ className: "pptx-react-subpath-fill",
1707
+ "aria-hidden": "true",
1708
+ viewBox: `0 0 ${subpathFill.viewBoxWidth} ${subpathFill.viewBoxHeight}`,
1709
+ preserveAspectRatio: "none",
1710
+ style: { position: "absolute", inset: 0, width: "100%", height: "100%" },
1711
+ children: subpathFill.paints.map((paint, idx) => /* @__PURE__ */ jsx("path", { d: paint.d, fill: paint.fill, stroke: "none" }, idx))
1712
+ }
1713
+ ) : null,
1638
1714
  softEdge ? /* @__PURE__ */ jsx(
1639
1715
  "svg",
1640
1716
  {
@@ -1705,10 +1781,40 @@ function ShapeEffectOverlay({
1705
1781
  }
1706
1782
  )
1707
1783
  }
1784
+ ) : null,
1785
+ reflection ? /* @__PURE__ */ jsx(
1786
+ "div",
1787
+ {
1788
+ className: "pptx-react-reflection",
1789
+ "aria-hidden": "true",
1790
+ style: reflection,
1791
+ children: reflectionImgSrc ? /* @__PURE__ */ jsx(
1792
+ "img",
1793
+ {
1794
+ src: reflectionImgSrc,
1795
+ alt: "",
1796
+ draggable: false,
1797
+ style: { width: "100%", height: "100%", ...getImageRenderStyle(element) }
1798
+ }
1799
+ ) : reflectionFill ? /* @__PURE__ */ jsx(
1800
+ "div",
1801
+ {
1802
+ style: {
1803
+ width: "100%",
1804
+ height: "100%",
1805
+ backgroundColor: reflectionFill.backgroundColor,
1806
+ backgroundImage: reflectionFill.backgroundImage,
1807
+ backgroundSize: reflectionFill.backgroundSize,
1808
+ backgroundPosition: reflectionFill.backgroundPosition,
1809
+ backgroundRepeat: reflectionFill.backgroundRepeat
1810
+ }
1811
+ }
1812
+ ) : null
1813
+ }
1708
1814
  ) : null
1709
1815
  ] });
1710
1816
  }
1711
- var ElementRenderer = React14.memo(
1817
+ var ElementRenderer = React15.memo(
1712
1818
  // oxlint-disable-next-line prefer-arrow-callback -- named fn gives the memo component its displayName
1713
1819
  function ElementRendererInner({
1714
1820
  element: el,
@@ -2540,15 +2646,15 @@ function InlineTextEditor({
2540
2646
  }
2541
2647
  );
2542
2648
  }
2543
- function FailedToLoad() {
2649
+ function FailedToLoad2() {
2544
2650
  return null;
2545
2651
  }
2546
- var LazyModel3DScene = React14.lazy(
2652
+ var LazyModel3DScene = React15.lazy(
2547
2653
  async () => {
2548
2654
  try {
2549
- return await import('./Model3DScene-65J6IE5Q.mjs');
2655
+ return await import('./Model3DScene-ZO6U7YVU.mjs');
2550
2656
  } catch {
2551
- return { default: FailedToLoad };
2657
+ return { default: FailedToLoad2 };
2552
2658
  }
2553
2659
  }
2554
2660
  );
@@ -2629,7 +2735,7 @@ function PosterFallback({
2629
2735
  }
2630
2736
  );
2631
2737
  }
2632
- var Model3DErrorBoundary = class extends React14.Component {
2738
+ var Model3DErrorBoundary = class extends React15.Component {
2633
2739
  constructor(props) {
2634
2740
  super(props);
2635
2741
  this.state = { hasError: false };
@@ -2834,10 +2940,10 @@ function SmartArtInlineNodeEditor({
2834
2940
  onCancel
2835
2941
  }) {
2836
2942
  const { t } = useTranslation();
2837
- const ref = React14.useRef(null);
2838
- const [value, setValue] = React14.useState(initialText);
2839
- const settled = React14.useRef(false);
2840
- React14.useEffect(() => {
2943
+ const ref = React15.useRef(null);
2944
+ const [value, setValue] = React15.useState(initialText);
2945
+ const settled = React15.useRef(false);
2946
+ React15.useEffect(() => {
2841
2947
  const el = ref.current;
2842
2948
  if (el) {
2843
2949
  el.focus();
@@ -2929,16 +3035,16 @@ function findNodeIdFromEvent(target) {
2929
3035
  return null;
2930
3036
  }
2931
3037
  function useSmartArtHoverState(containerRef) {
2932
- const [hoveredNodeId, setHoveredNodeId] = React14.useState(null);
2933
- const [hoveredNodeRect, setHoveredNodeRect] = React14.useState(null);
2934
- const hideTimeoutRef = React14.useRef(null);
2935
- const cancelPendingHide = React14.useCallback(() => {
3038
+ const [hoveredNodeId, setHoveredNodeId] = React15.useState(null);
3039
+ const [hoveredNodeRect, setHoveredNodeRect] = React15.useState(null);
3040
+ const hideTimeoutRef = React15.useRef(null);
3041
+ const cancelPendingHide = React15.useCallback(() => {
2936
3042
  if (hideTimeoutRef.current !== null) {
2937
3043
  window.clearTimeout(hideTimeoutRef.current);
2938
3044
  hideTimeoutRef.current = null;
2939
3045
  }
2940
3046
  }, []);
2941
- const handleMouseMove = React14.useCallback(
3047
+ const handleMouseMove = React15.useCallback(
2942
3048
  (e, ignoreRef) => {
2943
3049
  const nodeEl = findNodeIdFromEvent(e.target);
2944
3050
  const container = containerRef.current;
@@ -2966,12 +3072,12 @@ function useSmartArtHoverState(containerRef) {
2966
3072
  },
2967
3073
  [containerRef, cancelPendingHide]
2968
3074
  );
2969
- const clearHover = React14.useCallback(() => {
3075
+ const clearHover = React15.useCallback(() => {
2970
3076
  cancelPendingHide();
2971
3077
  setHoveredNodeId(null);
2972
3078
  setHoveredNodeRect(null);
2973
3079
  }, [cancelPendingHide]);
2974
- React14.useEffect(() => cancelPendingHide, [cancelPendingHide]);
3080
+ React15.useEffect(() => cancelPendingHide, [cancelPendingHide]);
2975
3081
  return { hoveredNodeId, hoveredNodeRect, handleMouseMove, clearHover };
2976
3082
  }
2977
3083
  var EDITOR_PADDING = 4;
@@ -2986,11 +3092,11 @@ function SmartArtEditableLayer({
2986
3092
  onChangeNodeStyle,
2987
3093
  children
2988
3094
  }) {
2989
- const containerRef = React14.useRef(null);
2990
- const styleBarRef = React14.useRef(null);
2991
- const [edit, setEdit] = React14.useState(null);
3095
+ const containerRef = React15.useRef(null);
3096
+ const styleBarRef = React15.useRef(null);
3097
+ const [edit, setEdit] = React15.useState(null);
2992
3098
  const { hoveredNodeId, hoveredNodeRect, handleMouseMove, clearHover } = useSmartArtHoverState(containerRef);
2993
- const openEditor = React14.useCallback(
3099
+ const openEditor = React15.useCallback(
2994
3100
  (target) => {
2995
3101
  const nodeEl = findNodeIdFromEvent(target);
2996
3102
  const container = containerRef.current;
@@ -3515,17 +3621,13 @@ function SmartArtRendererImpl({
3515
3621
  }
3516
3622
  );
3517
3623
  } else {
3518
- const layout = computeSmartArtLayout(
3624
+ const layout = computeSmartArtElementLayout(
3625
+ smartArtData,
3519
3626
  revealedNodes,
3520
3627
  { width: element.width, height: element.height },
3521
3628
  palette,
3522
3629
  style,
3523
- element.id,
3524
- smartArtData.resolvedLayoutType,
3525
- smartArtData.layout,
3526
- void 0,
3527
- smartArtData.layoutDefinition,
3528
- smartArtData.presLayoutVars
3630
+ element.id
3529
3631
  );
3530
3632
  const nodeIds = flattenNodes(revealedNodes).map((n) => n.id);
3531
3633
  content = /* @__PURE__ */ jsx(SmartArtLayoutSvg, { layout, nodeIds, nodeLabels });
@@ -3577,20 +3679,20 @@ function arePropsEqual(prev, next) {
3577
3679
  }
3578
3680
  return true;
3579
3681
  }
3580
- var SmartArtRenderer = React14.memo(SmartArtRendererImpl, arePropsEqual);
3581
- function FailedToLoad2() {
3682
+ var SmartArtRenderer = React15.memo(SmartArtRendererImpl, arePropsEqual);
3683
+ function FailedToLoad3() {
3582
3684
  return null;
3583
3685
  }
3584
- var LazySmartArt3DScene = React14.lazy(
3686
+ var LazySmartArt3DScene = React15.lazy(
3585
3687
  async () => {
3586
3688
  try {
3587
3689
  return await import('./SmartArt3DScene-XCFVGCXE.mjs');
3588
3690
  } catch {
3589
- return { default: FailedToLoad2 };
3691
+ return { default: FailedToLoad3 };
3590
3692
  }
3591
3693
  }
3592
3694
  );
3593
- var SceneErrorBoundary = class extends React14.Component {
3695
+ var SceneErrorBoundary2 = class extends React15.Component {
3594
3696
  constructor(props) {
3595
3697
  super(props);
3596
3698
  this.state = { hasError: false };
@@ -3630,20 +3732,19 @@ function SmartArt3DRenderer({
3630
3732
  if (element.type !== "smartArt" || !element.smartArtData) {
3631
3733
  return null;
3632
3734
  }
3633
- const { nodes, resolvedLayoutType, layout, chrome } = element.smartArtData;
3735
+ const { nodes, chrome } = element.smartArtData;
3634
3736
  if (nodes.length === 0) {
3635
3737
  return null;
3636
3738
  }
3637
3739
  const palette = resolvePalette2(element);
3638
3740
  const style = resolveStyle(element);
3639
- const layoutResult = computeSmartArtLayout(
3741
+ const layoutResult = computeSmartArtElementLayout(
3742
+ element.smartArtData,
3640
3743
  nodes,
3641
3744
  { width: element.width, height: element.height },
3642
3745
  palette,
3643
3746
  style,
3644
- element.id,
3645
- resolvedLayoutType,
3646
- layout
3747
+ element.id
3647
3748
  );
3648
3749
  return buildSmartArt3DModel(layoutResult, {
3649
3750
  background: chrome?.backgroundColor,
@@ -3657,7 +3758,7 @@ function SmartArt3DRenderer({
3657
3758
  if (threeAvailable === null) {
3658
3759
  return svgFallback;
3659
3760
  }
3660
- const sceneNode = /* @__PURE__ */ jsx(SceneErrorBoundary, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: svgFallback, children: /* @__PURE__ */ jsx(
3761
+ const sceneNode = /* @__PURE__ */ jsx(SceneErrorBoundary2, { fallback: svgFallback, children: /* @__PURE__ */ jsx(Suspense, { fallback: svgFallback, children: /* @__PURE__ */ jsx(
3661
3762
  LazySmartArt3DScene,
3662
3763
  {
3663
3764
  model,
@@ -4510,7 +4611,7 @@ function StaticElementRendererImpl({
4510
4611
  }
4511
4612
  );
4512
4613
  }
4513
- var StaticElementRenderer = React14.memo(StaticElementRendererImpl);
4614
+ var StaticElementRenderer = React15.memo(StaticElementRendererImpl);
4514
4615
  StaticElementRenderer.displayName = "StaticElementRenderer";
4515
4616
  var PREVIEW_CANVAS_WIDTH = 1280;
4516
4617
  var PREVIEW_CANVAS_HEIGHT = 720;
@@ -5432,10 +5533,10 @@ function ArrangeSection(p) {
5432
5533
  function TransitionsSection(p) {
5433
5534
  const { t } = useTranslation();
5434
5535
  const canEdit = p.canEdit !== false;
5435
- const draft = React14.useMemo(() => readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
5436
- const [durationBuffer, setDurationBuffer] = React14.useState(null);
5437
- const [advanceBuffer, setAdvanceBuffer] = React14.useState(null);
5438
- const commit = React14.useCallback(
5536
+ const draft = React15.useMemo(() => readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
5537
+ const [durationBuffer, setDurationBuffer] = React15.useState(null);
5538
+ const [advanceBuffer, setAdvanceBuffer] = React15.useState(null);
5539
+ const commit = React15.useCallback(
5439
5540
  (changes) => {
5440
5541
  p.onTransitionChange(ribbonTransitionUpdates({ ...draft, ...changes }));
5441
5542
  },
@@ -5745,7 +5846,7 @@ function AccountPage() {
5745
5846
  return void 0;
5746
5847
  });
5747
5848
  };
5748
- const version = "2.21.0" ;
5849
+ const version = "2.22.0" ;
5749
5850
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
5750
5851
  /* @__PURE__ */ jsxs("section", { className: cardClass, children: [
5751
5852
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -6185,7 +6286,7 @@ function FontFamilyMenu(p) {
6185
6286
  embeddedFonts: p.embeddedFonts,
6186
6287
  customFonts: p.customFonts
6187
6288
  });
6188
- return /* @__PURE__ */ jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-64 pt-1", children: /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-border bg-popover backdrop-blur-lg shadow-2xl py-1 max-h-80 overflow-y-auto", children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(React14.Fragment, { children: [
6289
+ return /* @__PURE__ */ jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-64 pt-1", children: /* @__PURE__ */ jsx("div", { className: "rounded-lg border border-border bg-popover backdrop-blur-lg shadow-2xl py-1 max-h-80 overflow-y-auto", children: groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(React15.Fragment, { children: [
6189
6290
  /* @__PURE__ */ jsx(
6190
6291
  "div",
6191
6292
  {
@@ -10742,7 +10843,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
10742
10843
  }
10743
10844
  );
10744
10845
  }
10745
- var HorizontalRuler = React14.memo(HorizontalRulerView);
10846
+ var HorizontalRuler = React15.memo(HorizontalRulerView);
10746
10847
  HorizontalRuler.displayName = "HorizontalRuler";
10747
10848
  function VerticalRulerView({ ticks, heightPx, highlight }) {
10748
10849
  return /* @__PURE__ */ jsxs(
@@ -10814,7 +10915,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
10814
10915
  }
10815
10916
  );
10816
10917
  }
10817
- var VerticalRuler = React14.memo(VerticalRulerView);
10918
+ var VerticalRuler = React15.memo(VerticalRulerView);
10818
10919
  VerticalRuler.displayName = "VerticalRuler";
10819
10920
  function Ruler({
10820
10921
  canvasSize,
@@ -12512,7 +12613,7 @@ function arePropsEqual2(prev, next) {
12512
12613
  }
12513
12614
  return true;
12514
12615
  }
12515
- var SlideThumbnail = React14.memo(SlideThumbnailImpl, arePropsEqual2);
12616
+ var SlideThumbnail = React15.memo(SlideThumbnailImpl, arePropsEqual2);
12516
12617
 
12517
12618
  // src/viewer/components/context-menu-dispatch.ts
12518
12619
  function tableCell(props) {
@@ -13061,7 +13162,7 @@ function LazyThumbnailInner({
13061
13162
  }
13062
13163
  ) });
13063
13164
  }
13064
- var LazyThumbnail = React14.memo(LazyThumbnailInner);
13165
+ var LazyThumbnail = React15.memo(LazyThumbnailInner);
13065
13166
 
13066
13167
  // src/viewer/components/slides-pane/utils.ts
13067
13168
  function formatTimingMs(ms) {
@@ -13215,7 +13316,7 @@ function SlideItemInner({
13215
13316
  }
13216
13317
  );
13217
13318
  }
13218
- var SlideItem = React14.memo(SlideItemInner);
13319
+ var SlideItem = React15.memo(SlideItemInner);
13219
13320
  function useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionCollapse) {
13220
13321
  const [collapsedSections, setCollapsedSections] = useState({});
13221
13322
  const [renamingSectionId, setRenamingSectionId] = useState(null);
@@ -14000,6 +14101,10 @@ function NotesMasterCanvas({
14000
14101
  }, [canvasSize.width, canvasSize.height, pageWidth, pageHeight]);
14001
14102
  const scaledWidth = pageWidth * scale;
14002
14103
  const scaledHeight = pageHeight * scale;
14104
+ const bodyFontSize = useMemo(
14105
+ () => resolveNotesSchematicBodyFontSizePx(notesMaster?.notesStyle, scale),
14106
+ [notesMaster?.notesStyle, scale]
14107
+ );
14003
14108
  const placeholders = useMemo(() => {
14004
14109
  if (!notesMaster?.placeholders) {
14005
14110
  return [
@@ -14065,13 +14170,14 @@ function NotesMasterCanvas({
14065
14170
  return /* @__PURE__ */ jsx(
14066
14171
  "div",
14067
14172
  {
14173
+ "data-region": ph.type,
14068
14174
  className: "absolute overflow-auto border border-solid border-gray-200 p-2",
14069
14175
  style: {
14070
14176
  left: pos.x * scaledWidth,
14071
14177
  top: pos.y * scaledHeight,
14072
14178
  width: pos.w * scaledWidth,
14073
14179
  height: pos.h * scaledHeight,
14074
- fontSize: Math.max(8, Math.min(11, scaledWidth * 0.015)),
14180
+ fontSize: bodyFontSize,
14075
14181
  lineHeight: 1.4,
14076
14182
  color: "#374151",
14077
14183
  whiteSpace: "pre-wrap"
@@ -14516,7 +14622,7 @@ function arePropsEqual3(prev, next) {
14516
14622
  }
14517
14623
  return true;
14518
14624
  }
14519
- var SlideCard = React14.memo(SlideCardImpl, arePropsEqual3);
14625
+ var SlideCard = React15.memo(SlideCardImpl, arePropsEqual3);
14520
14626
  function SorterContextMenu({
14521
14627
  x,
14522
14628
  y,
@@ -15534,7 +15640,8 @@ function renderRichNotesSegments(segments) {
15534
15640
  }
15535
15641
  function NotesPrintDialog({
15536
15642
  slides,
15537
- onClose
15643
+ onClose,
15644
+ notesStyle
15538
15645
  }) {
15539
15646
  const { t } = useTranslation();
15540
15647
  const printFrameRef = useRef(null);
@@ -15545,57 +15652,12 @@ function NotesPrintDialog({
15545
15652
  }
15546
15653
  const doc = iframe.contentWindow.document;
15547
15654
  doc.open();
15548
- doc.write(`<!DOCTYPE html><html><head><style>
15549
- body { font-family: Arial, sans-serif; margin: 0; padding: 20px; color: #222; }
15550
- .slide-page { page-break-after: always; margin-bottom: 40px; }
15551
- .slide-page:last-child { page-break-after: auto; }
15552
- .slide-header { font-size: 14px; font-weight: bold; margin-bottom: 12px; color: #555; }
15553
- .slide-thumb { width: 100%; max-width: 600px; aspect-ratio: 16/9; background: #f0f0f0;
15554
- border: 1px solid #ccc; display: flex; align-items: center; justify-content: center;
15555
- color: #999; font-size: 24px; margin-bottom: 16px; }
15556
- .notes-text { font-size: 12px; line-height: 1.6; white-space: pre-wrap; }
15557
- .notes-text .bullet { margin-right: 6px; }
15558
- .notes-text .para { margin: 2px 0; }
15559
- @media print { body { padding: 0; } }
15560
- </style></head><body>`);
15561
- for (const slide of slides) {
15562
- const segs = getSlideNotesSegments(slide);
15563
- const paras = segmentsToParagraphs(segs);
15564
- doc.write(`<div class="slide-page">`);
15565
- doc.write(
15566
- `<div class="slide-header">${escapeHtml2(t("pptx.notes.slideN", { n: slide.slideNumber }))}</div>`
15567
- );
15568
- doc.write(
15569
- `<div class="slide-thumb">${escapeHtml2(t("pptx.notes.slideN", { n: slide.slideNumber }))}</div>`
15570
- );
15571
- doc.write(`<div class="notes-text">`);
15572
- let numCounter = 0;
15573
- for (const para of paras) {
15574
- if (para.bulletType === "numbered") {
15575
- numCounter++;
15576
- } else {
15577
- numCounter = 0;
15578
- }
15579
- const indent = para.indentLevel * 24;
15580
- let prefix = "";
15581
- if (para.bulletType === "bullet") {
15582
- prefix = "\u2022 ";
15583
- } else if (para.bulletType === "numbered") {
15584
- prefix = `${numCounter}. `;
15585
- }
15586
- const text = para.segments.filter((s) => !s.isParagraphBreak).map((s) => escapeHtml2(s.text)).join("");
15587
- doc.write(
15588
- `<div class="para" style="padding-left:${indent}px">${escapeHtml2(prefix)}${text}</div>`
15589
- );
15590
- }
15591
- doc.write(`</div></div>`);
15592
- }
15593
- doc.write(`</body></html>`);
15655
+ doc.write(buildNotesPrintHtml(slides, (n) => t("pptx.notes.slideN", { n }), notesStyle));
15594
15656
  doc.close();
15595
15657
  setTimeout(() => {
15596
15658
  iframe.contentWindow?.print();
15597
15659
  }, 200);
15598
- }, [slides, t]);
15660
+ }, [slides, t, notesStyle]);
15599
15661
  return /* @__PURE__ */ jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/60", children: /* @__PURE__ */ jsxs("div", { className: "bg-background border border-border rounded-lg shadow-xl w-[640px] max-h-[80vh] flex flex-col max-md:fixed max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:w-full max-md:max-w-none max-md:max-h-[88dvh] max-md:rounded-t-2xl max-md:rounded-b-none max-md:border-x-0 max-md:border-b-0 max-md:pb-[max(env(safe-area-inset-bottom),0px)]", children: [
15600
15662
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-b border-border", children: [
15601
15663
  /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-foreground", children: t("pptx.notes.printNotes") }),
@@ -15610,7 +15672,7 @@ function NotesPrintDialog({
15610
15672
  )
15611
15673
  ] }),
15612
15674
  /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-auto p-4 space-y-4", children: slides.map((slide) => {
15613
- const segs = getSlideNotesSegments(slide);
15675
+ const segs = resolveNotesSegments(slide, notesStyle);
15614
15676
  const hasText = segmentsToPlainText(segs).trim().length > 0;
15615
15677
  return /* @__PURE__ */ jsxs("div", { className: "border border-border/50 rounded p-3", children: [
15616
15678
  /* @__PURE__ */ jsx("div", { className: "text-xs font-medium text-muted-foreground mb-2", children: t("pptx.notes.slideN", { n: slide.slideNumber }) }),
@@ -15638,9 +15700,6 @@ function NotesPrintDialog({
15638
15700
  )
15639
15701
  ] }) });
15640
15702
  }
15641
- function getSlideNotesSegments(slide) {
15642
- return slide.notesSegments && slide.notesSegments.length > 0 ? slide.notesSegments : createPlainNotesSegments(slide.notes ?? "");
15643
- }
15644
15703
  function HyperlinkPopover({
15645
15704
  initialText,
15646
15705
  onInsert,
@@ -15861,11 +15920,12 @@ function useSlideNotes({
15861
15920
  isExpanded,
15862
15921
  canEdit,
15863
15922
  onToggle,
15864
- onUpdateNotes
15923
+ onUpdateNotes,
15924
+ notesStyle
15865
15925
  }) {
15866
15926
  const initialSegments = useMemo(
15867
- () => activeSlide?.notesSegments && activeSlide.notesSegments.length > 0 ? normalizeSegments(activeSlide.notesSegments) : createPlainNotesSegments(activeSlide?.notes ?? ""),
15868
- [activeSlide?.notes, activeSlide?.notesSegments]
15927
+ () => resolveNotesSegments(activeSlide, notesStyle),
15928
+ [activeSlide, notesStyle]
15869
15929
  );
15870
15930
  const [draft, setDraft] = useState(activeSlide?.notes ?? "");
15871
15931
  const [draftSegments, setDraftSegments] = useState(initialSegments);
@@ -15878,16 +15938,18 @@ function useSlideNotes({
15878
15938
  const savedSelectionRef = useRef(null);
15879
15939
  const isInternalInputRef = useRef(false);
15880
15940
  const lastSavedTextRef = useRef(null);
15941
+ const activeSlideRef = useRef(activeSlide);
15942
+ activeSlideRef.current = activeSlide;
15881
15943
  useEffect(() => {
15882
15944
  const nextText = activeSlide?.notes ?? "";
15883
15945
  if (nextText === lastSavedTextRef.current) {
15884
15946
  return;
15885
15947
  }
15886
- const nextSegments = activeSlide?.notesSegments && activeSlide.notesSegments.length > 0 ? normalizeSegments(activeSlide.notesSegments) : createPlainNotesSegments(nextText);
15948
+ const nextSegments = resolveNotesSegments(activeSlideRef.current, notesStyle);
15887
15949
  setDraft(nextText);
15888
15950
  setDraftSegments(nextSegments);
15889
15951
  setIsRichEditEnabled(nextSegments.length > 0);
15890
- }, [activeSlide?.id, activeSlide?.notes, activeSlide?.notesSegments]);
15952
+ }, [activeSlide?.id, activeSlide?.notes, activeSlide?.notesSegments, notesStyle]);
15891
15953
  useEffect(() => {
15892
15954
  if (!isRichEditEnabled || !isExpanded || !canEdit || !richEditorRef.current) {
15893
15955
  return;
@@ -16114,7 +16176,8 @@ function SlideNotesPanel({
16114
16176
  canEdit,
16115
16177
  onToggle,
16116
16178
  onUpdateNotes,
16117
- panelHeight
16179
+ panelHeight,
16180
+ notesStyle
16118
16181
  }) {
16119
16182
  const { t } = useTranslation();
16120
16183
  const {
@@ -16147,7 +16210,8 @@ function SlideNotesPanel({
16147
16210
  isExpanded,
16148
16211
  canEdit,
16149
16212
  onToggle,
16150
- onUpdateNotes
16213
+ onUpdateNotes,
16214
+ notesStyle
16151
16215
  });
16152
16216
  const hasNotes = draft.trim().length > 0;
16153
16217
  const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
@@ -16268,7 +16332,14 @@ function SlideNotesPanel({
16268
16332
  ]
16269
16333
  }
16270
16334
  ),
16271
- showPrintDialog && allSlides && /* @__PURE__ */ jsx(NotesPrintDialog, { slides: allSlides, onClose: () => setShowPrintDialog(false) })
16335
+ showPrintDialog && allSlides && /* @__PURE__ */ jsx(
16336
+ NotesPrintDialog,
16337
+ {
16338
+ slides: allSlides,
16339
+ onClose: () => setShowPrintDialog(false),
16340
+ notesStyle
16341
+ }
16342
+ )
16272
16343
  ]
16273
16344
  }
16274
16345
  )
@@ -17995,9 +18066,9 @@ function PresentationSubtitleBar({
17995
18066
  function renderNotesSegments(segments) {
17996
18067
  return notesSegmentsToSpans(segments).map((span) => {
17997
18068
  if (span.kind === "break") {
17998
- return React14.createElement("br", { key: span.key });
18069
+ return React15.createElement("br", { key: span.key });
17999
18070
  }
18000
- return React14.createElement(
18071
+ return React15.createElement(
18001
18072
  "span",
18002
18073
  { key: span.key, style: span.style },
18003
18074
  span.text
@@ -18223,7 +18294,7 @@ function arePropsEqual4(prev, next) {
18223
18294
  }
18224
18295
  return true;
18225
18296
  }
18226
- var ScaledSlidePreview = React14.memo(ScaledSlidePreviewImpl, arePropsEqual4);
18297
+ var ScaledSlidePreview = React15.memo(ScaledSlidePreviewImpl, arePropsEqual4);
18227
18298
  function PresenterNotesRail({
18228
18299
  slides,
18229
18300
  current,
@@ -20116,19 +20187,6 @@ var CARD2 = "rounded border border-border bg-card p-2 space-y-2";
20116
20187
  var INPUT2 = "flex-1 bg-muted border border-border rounded px-1.5 py-0.5 w-full";
20117
20188
  var BTN2 = "rounded bg-muted hover:bg-accent px-2 py-1 text-[11px] transition-colors";
20118
20189
  var CELL_INPUT = "bg-muted border border-border rounded px-1 py-0.5 text-[11px] w-full text-center";
20119
- var CHART_TYPE_OPTIONS = [
20120
- { value: "bar", labelKey: "pptx.chart.typeBar" },
20121
- { value: "line", labelKey: "pptx.chart.typeLine" },
20122
- { value: "pie", labelKey: "pptx.chart.typePie" },
20123
- { value: "doughnut", labelKey: "pptx.chart.typeDoughnut" },
20124
- { value: "area", labelKey: "pptx.chart.typeArea" },
20125
- { value: "scatter", labelKey: "pptx.chart.typeScatter" },
20126
- { value: "bubble", labelKey: "pptx.chart.typeBubble" },
20127
- { value: "radar", labelKey: "pptx.chart.typeRadar" },
20128
- { value: "stock", labelKey: "pptx.chart.typeStock" },
20129
- { value: "waterfall", labelKey: "pptx.chart.typeWaterfall" },
20130
- { value: "combo", labelKey: "pptx.chart.typeCombo" }
20131
- ];
20132
20190
  var GROUPING_OPTIONS = [
20133
20191
  { value: "clustered", labelKey: "pptx.chart.groupingClustered" },
20134
20192
  { value: "stacked", labelKey: "pptx.chart.groupingStacked" },
@@ -21763,7 +21821,7 @@ function ConnectorArrowsSection({
21763
21821
  ["Start", "End"].map((end) => {
21764
21822
  const widthKey = end === "Start" ? "connectorStartArrowWidth" : "connectorEndArrowWidth";
21765
21823
  const lengthKey = end === "Start" ? "connectorStartArrowLength" : "connectorEndArrowLength";
21766
- return /* @__PURE__ */ jsxs(React14.Fragment, { children: [
21824
+ return /* @__PURE__ */ jsxs(React15.Fragment, { children: [
21767
21825
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
21768
21826
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t(END_LABEL_KEYS[end].width) }),
21769
21827
  /* @__PURE__ */ jsx(
@@ -24631,7 +24689,7 @@ function StrokeEffectsSection({
24631
24689
  ] }),
24632
24690
  EFFECT_CONFIGS.map((cfg) => {
24633
24691
  const on = cfg.isOn(style);
24634
- return /* @__PURE__ */ jsxs(React14.Fragment, { children: [
24692
+ return /* @__PURE__ */ jsxs(React15.Fragment, { children: [
24635
24693
  /* @__PURE__ */ jsxs("label", { className: `inline-flex items-center gap-2 text-foreground ${COL2}`, children: [
24636
24694
  /* @__PURE__ */ jsx(
24637
24695
  "input",
@@ -25471,7 +25529,7 @@ function TextWarpGallery({
25471
25529
  onUpdateTextStyle
25472
25530
  }) {
25473
25531
  const { t } = useTranslation();
25474
- const [expanded, setExpanded] = React14.useState(false);
25532
+ const [expanded, setExpanded] = React15.useState(false);
25475
25533
  const currentPreset = ts?.textWarpPreset || "textNoShape";
25476
25534
  return /* @__PURE__ */ jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
25477
25535
  /* @__PURE__ */ jsxs(
@@ -26089,7 +26147,7 @@ function SmartArtStyleControls({
26089
26147
  onChangeStyle
26090
26148
  }) {
26091
26149
  const { t } = useTranslation();
26092
- const translate = React14.useCallback((key) => t(key), [t]);
26150
+ const translate = React15.useCallback((key) => t(key), [t]);
26093
26151
  return /* @__PURE__ */ jsxs(Fragment, { children: [
26094
26152
  /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
26095
26153
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.smartart.colorScheme") }),
@@ -26144,9 +26202,9 @@ function SmartArtPropertiesPanel({
26144
26202
  const nodes = smartArtData.nodes ?? [];
26145
26203
  const layout = smartArtData.resolvedLayoutType;
26146
26204
  const topLevelCount = nodes.filter((n) => !n.parentId).length;
26147
- const inputRefs = React14.useRef(/* @__PURE__ */ new Map());
26148
- const pendingFocusId = React14.useRef(null);
26149
- React14.useEffect(() => {
26205
+ const inputRefs = React15.useRef(/* @__PURE__ */ new Map());
26206
+ const pendingFocusId = React15.useRef(null);
26207
+ React15.useEffect(() => {
26150
26208
  const id = pendingFocusId.current;
26151
26209
  if (id) {
26152
26210
  inputRefs.current.get(id)?.focus();
@@ -27289,7 +27347,7 @@ function CommentBody({ text, mentions, className }) {
27289
27347
  index
27290
27348
  ) : (
27291
27349
  // eslint-disable-next-line react/no-array-index-key -- segments are positional
27292
- /* @__PURE__ */ jsx(React14.Fragment, { children: segment.text }, index)
27350
+ /* @__PURE__ */ jsx(React15.Fragment, { children: segment.text }, index)
27293
27351
  )
27294
27352
  ) });
27295
27353
  }
@@ -28635,7 +28693,7 @@ function PresentationPropertiesPanel({
28635
28693
  onUpdateTagCollections
28636
28694
  }) {
28637
28695
  const { t } = useTranslation();
28638
- const handleTransitionChange = React14.useCallback(
28696
+ const handleTransitionChange = React15.useCallback(
28639
28697
  (updates) => {
28640
28698
  onUpdateSlide({
28641
28699
  transition: mergeSlideTransition(activeSlide?.transition, updates)
@@ -32134,7 +32192,8 @@ function ViewerBottomPanels({
32134
32192
  onSetMode,
32135
32193
  onToggleSlideSorter,
32136
32194
  hideStatusBar = false,
32137
- hiddenActions
32195
+ hiddenActions,
32196
+ notesStyle
32138
32197
  }) {
32139
32198
  const { isHidden } = useToolbarVisibility(hiddenActions);
32140
32199
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -32148,7 +32207,8 @@ function ViewerBottomPanels({
32148
32207
  canEdit,
32149
32208
  onToggle: onToggleNotes,
32150
32209
  onUpdateNotes,
32151
- panelHeight: notesPanelHeight
32210
+ panelHeight: notesPanelHeight,
32211
+ notesStyle
32152
32212
  }
32153
32213
  ),
32154
32214
  !hideStatusBar && /* @__PURE__ */ jsx(
@@ -32651,7 +32711,7 @@ function ViewerToolbarSection(props) {
32651
32711
  },
32652
32712
  [activeSlide, propertyHandlers]
32653
32713
  );
32654
- const scopedLayoutOptions = React14.useMemo(
32714
+ const scopedLayoutOptions = React15.useMemo(
32655
32715
  () => scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
32656
32716
  [s.layoutOptions, activeSlide]
32657
32717
  );
@@ -34486,7 +34546,7 @@ ${url}`)) {
34486
34546
  var AiChatPanel = lazy(async () => {
34487
34547
  const [{ useChat }, { default: Panel }] = await Promise.all([
34488
34548
  import('@ai-sdk/react'),
34489
- import('./AiChatPanel-E4NQEMEI.mjs')
34549
+ import('./AiChatPanel-DMBQPAGB.mjs')
34490
34550
  ]);
34491
34551
  function BoundAiChatPanel(props) {
34492
34552
  return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
@@ -37555,6 +37615,7 @@ var PowerPointViewer = forwardRef(
37555
37615
  onStopCollaboration,
37556
37616
  shareDefaults,
37557
37617
  smartArt3D = false,
37618
+ surfaceChart3D = false,
37558
37619
  hiddenActions,
37559
37620
  ai
37560
37621
  } = props;
@@ -37781,7 +37842,7 @@ var PowerPointViewer = forwardRef(
37781
37842
  mode,
37782
37843
  activeLayout: state.activeLayout,
37783
37844
  activeMaster: state.activeMaster,
37784
- presentationGridSpacing: state.presentationProperties.gridSpacing
37845
+ documentGridSpacing: state.viewProperties?.gridSpacing
37785
37846
  });
37786
37847
  const activeCustomShow = state.customShows.find((show) => show.id === state.activeCustomShowId) ?? null;
37787
37848
  const hasActivePointerInteraction = useCallback(
@@ -38175,7 +38236,8 @@ var PowerPointViewer = forwardRef(
38175
38236
  onSetMode: handleSetMode,
38176
38237
  onToggleSlideSorter: () => state.setShowSlideSorter((p) => !p),
38177
38238
  hideStatusBar: isMobile,
38178
- hiddenActions
38239
+ hiddenActions,
38240
+ notesStyle: state.notesMaster?.notesStyle
38179
38241
  }
38180
38242
  ),
38181
38243
  mode !== "present" && isMobile && /* @__PURE__ */ jsx(
@@ -38362,7 +38424,7 @@ var PowerPointViewer = forwardRef(
38362
38424
  ]
38363
38425
  }
38364
38426
  );
38365
- return /* @__PURE__ */ jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsx(SmartArt3DContext.Provider, { value: smartArt3D, children: /* @__PURE__ */ jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxs(
38427
+ return /* @__PURE__ */ jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsx(SmartArt3DContext.Provider, { value: smartArt3D, children: /* @__PURE__ */ jsx(SurfaceChart3DContext.Provider, { value: surfaceChart3D, children: /* @__PURE__ */ jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxs(
38366
38428
  CollaborationProvider,
38367
38429
  {
38368
38430
  config: collaboration,
@@ -38393,7 +38455,7 @@ var PowerPointViewer = forwardRef(
38393
38455
  viewerContent
38394
38456
  ]
38395
38457
  }
38396
- ) }) }) });
38458
+ ) }) }) }) });
38397
38459
  }
38398
38460
  );
38399
38461
  PowerPointViewer.displayName = "PowerPointViewer";