pptx-react-viewer 2.17.0 → 2.18.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.
- package/CHANGELOG.md +2 -0
- package/README.md +14 -14
- package/dist/{AiChatPanel-RZ4A7P4H.mjs → AiChatPanel-SSSBERWJ.mjs} +4 -4
- package/dist/AiChatPanel-SSSBERWJ.mjs.br +0 -0
- package/dist/AiChatPanel-SSSBERWJ.mjs.gz +0 -0
- package/dist/{AiChatPanel-HCHCVQN2.js → AiChatPanel-UN5DHPZY.js} +24 -24
- package/dist/AiChatPanel-UN5DHPZY.js.br +0 -0
- package/dist/AiChatPanel-UN5DHPZY.js.gz +0 -0
- package/dist/{Model3DScene-LK7LSQNH.js → Model3DScene-4RPYKC2I.js} +2 -2
- package/dist/Model3DScene-4RPYKC2I.js.br +0 -0
- package/dist/Model3DScene-4RPYKC2I.js.gz +0 -0
- package/dist/{Model3DScene-I7FR74AD.mjs → Model3DScene-LYEESYAI.mjs} +1 -1
- package/dist/Model3DScene-LYEESYAI.mjs.br +0 -0
- package/dist/Model3DScene-LYEESYAI.mjs.gz +0 -0
- package/dist/{PowerPointViewer-Du7u4INi.d.ts → PowerPointViewer-Cf4YHjdF.d.ts} +2 -2
- package/dist/{PowerPointViewer-Du7u4INi.d.ts.map → PowerPointViewer-Cf4YHjdF.d.ts.map} +1 -1
- package/dist/{SurfaceChart3DScene-ODQY77SZ.js → SurfaceChart3DScene-ACPKCWLJ.js} +2 -2
- package/dist/SurfaceChart3DScene-ACPKCWLJ.js.br +0 -0
- package/dist/SurfaceChart3DScene-ACPKCWLJ.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-DEQP5O3U.mjs → SurfaceChart3DScene-JR62SOYO.mjs} +1 -1
- package/dist/{SurfaceChart3DScene-DEQP5O3U.mjs.br → SurfaceChart3DScene-JR62SOYO.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-JR62SOYO.mjs.gz +0 -0
- package/dist/{audience-content-store-BvqKy7Hf.d.ts → audience-content-store-CyS0oP6t.d.ts} +2 -2
- package/dist/{audience-content-store-BvqKy7Hf.d.ts.map → audience-content-store-CyS0oP6t.d.ts.map} +1 -1
- package/dist/{chunk-5BXATG54.js → chunk-4LWGAVAP.js} +239 -293
- package/dist/chunk-4LWGAVAP.js.br +0 -0
- package/dist/chunk-4LWGAVAP.js.gz +0 -0
- package/dist/{chunk-FXJOTEPO.mjs → chunk-7XF6S4AM.mjs} +1 -1
- package/dist/chunk-7XF6S4AM.mjs.br +0 -0
- package/dist/chunk-7XF6S4AM.mjs.gz +0 -0
- package/dist/{chunk-TCGXGD6E.js → chunk-ASKYZ5ZY.js} +544 -426
- package/dist/chunk-ASKYZ5ZY.js.br +0 -0
- package/dist/chunk-ASKYZ5ZY.js.gz +0 -0
- package/dist/{chunk-MQHC5TXI.mjs → chunk-BZOL6FXF.mjs} +25 -80
- package/dist/chunk-BZOL6FXF.mjs.br +0 -0
- package/dist/chunk-BZOL6FXF.mjs.gz +0 -0
- package/dist/{chunk-K2QU73KB.mjs → chunk-GODW6RNR.mjs} +9801 -6455
- package/dist/chunk-GODW6RNR.mjs.br +0 -0
- package/dist/chunk-GODW6RNR.mjs.gz +0 -0
- package/dist/{chunk-NQJPPIVH.js → chunk-ICZDMFF2.js} +1444 -1131
- package/dist/chunk-ICZDMFF2.js.br +0 -0
- package/dist/chunk-ICZDMFF2.js.gz +0 -0
- package/dist/{chunk-ATOUVRRQ.js → chunk-MAVLV56S.js} +3 -3
- package/dist/chunk-MAVLV56S.js.br +0 -0
- package/dist/chunk-MAVLV56S.js.gz +0 -0
- package/dist/{chunk-422DF424.mjs → chunk-O7FTUUXP.mjs} +464 -151
- package/dist/chunk-O7FTUUXP.mjs.br +0 -0
- package/dist/chunk-O7FTUUXP.mjs.gz +0 -0
- package/dist/{chunk-ZA5JONCW.mjs → chunk-QUB5OSKY.mjs} +193 -75
- package/dist/chunk-QUB5OSKY.mjs.br +0 -0
- package/dist/chunk-QUB5OSKY.mjs.gz +0 -0
- package/dist/{chunk-AONFHTTJ.js → chunk-RTUGI4HQ.js} +27 -4
- package/dist/chunk-RTUGI4HQ.js.br +0 -0
- package/dist/chunk-RTUGI4HQ.js.gz +0 -0
- package/dist/{chunk-S64T7C4V.mjs → chunk-SNL6LBRX.mjs} +27 -4
- package/dist/chunk-SNL6LBRX.mjs.br +0 -0
- package/dist/{chunk-S64T7C4V.mjs.gz → chunk-SNL6LBRX.mjs.gz} +0 -0
- package/dist/{chunk-7JPLVECA.js → chunk-WVDM36ZM.js} +9838 -6458
- package/dist/chunk-WVDM36ZM.js.br +0 -0
- package/dist/chunk-WVDM36ZM.js.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +497 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +65 -41
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +543 -32
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +79 -79
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/{types-DU35aAJK.d.ts → types-C_CTI-QE.d.ts} +3 -31
- package/dist/types-C_CTI-QE.d.ts.map +1 -0
- package/dist/{useViewerBuildingBlocks-C9-prKYB.d.ts → useViewerBuildingBlocks-DItilDbP.d.ts} +16 -3
- package/dist/useViewerBuildingBlocks-DItilDbP.d.ts.map +1 -0
- package/dist/viewer/index.d.ts +427 -39
- package/dist/viewer/index.js +27 -27
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -6
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +2 -2
- package/dist/AiChatPanel-HCHCVQN2.js.br +0 -0
- package/dist/AiChatPanel-HCHCVQN2.js.gz +0 -0
- package/dist/AiChatPanel-RZ4A7P4H.mjs.br +0 -0
- package/dist/AiChatPanel-RZ4A7P4H.mjs.gz +0 -0
- package/dist/Model3DScene-I7FR74AD.mjs.br +0 -0
- package/dist/Model3DScene-I7FR74AD.mjs.gz +0 -0
- package/dist/Model3DScene-LK7LSQNH.js.br +0 -0
- package/dist/Model3DScene-LK7LSQNH.js.gz +0 -0
- package/dist/SurfaceChart3DScene-DEQP5O3U.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-ODQY77SZ.js.br +0 -0
- package/dist/SurfaceChart3DScene-ODQY77SZ.js.gz +0 -0
- package/dist/chunk-422DF424.mjs.br +0 -0
- package/dist/chunk-422DF424.mjs.gz +0 -0
- package/dist/chunk-5BXATG54.js.br +0 -0
- package/dist/chunk-5BXATG54.js.gz +0 -0
- package/dist/chunk-7JPLVECA.js.br +0 -0
- package/dist/chunk-7JPLVECA.js.gz +0 -0
- package/dist/chunk-AONFHTTJ.js.br +0 -0
- package/dist/chunk-AONFHTTJ.js.gz +0 -0
- package/dist/chunk-ATOUVRRQ.js.br +0 -0
- package/dist/chunk-ATOUVRRQ.js.gz +0 -0
- package/dist/chunk-FXJOTEPO.mjs.br +0 -0
- package/dist/chunk-FXJOTEPO.mjs.gz +0 -0
- package/dist/chunk-K2QU73KB.mjs.br +0 -0
- package/dist/chunk-K2QU73KB.mjs.gz +0 -0
- package/dist/chunk-MQHC5TXI.mjs.br +0 -0
- package/dist/chunk-MQHC5TXI.mjs.gz +0 -0
- package/dist/chunk-NQJPPIVH.js.br +0 -0
- package/dist/chunk-NQJPPIVH.js.gz +0 -0
- package/dist/chunk-S64T7C4V.mjs.br +0 -0
- package/dist/chunk-TCGXGD6E.js.br +0 -0
- package/dist/chunk-TCGXGD6E.js.gz +0 -0
- package/dist/chunk-ZA5JONCW.mjs.br +0 -0
- package/dist/chunk-ZA5JONCW.mjs.gz +0 -0
- package/dist/types-DU35aAJK.d.ts.map +0 -1
- package/dist/useViewerBuildingBlocks-C9-prKYB.d.ts.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-
|
|
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, downloadBlob } from './chunk-
|
|
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, 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-
|
|
4
|
-
import { LOCALE_CATALOG, translationsEn } from './chunk-
|
|
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, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalSeconds, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, isImageLikeElement, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, 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, 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, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, 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, RIBBON_TRANSITION_PRESETS, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, annotationOverlayZIndex, presentationInkPath, motionPathFor, setMotionPath,
|
|
1
|
+
import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-7XF6S4AM.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, downloadBlob } from './chunk-QUB5OSKY.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-BZOL6FXF.mjs';
|
|
4
|
+
import { LOCALE_CATALOG, translationsEn } from './chunk-SNL6LBRX.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, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveAutosaveIntervalSeconds, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, buildHollowHitOutline, strokeOutlineViewBox, revealedSmartArtNodeCount, buildSmartArtA11y, computeSmartArtLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, isImageLikeElement, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, 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, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, 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, 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, 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, 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, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, 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, getCommentMarkerPosition, 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, chartDataChangeType, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, resolveSlideSizeSelection, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, formatCommentTimestamp, clearMotionPath, DIRECTIONAL_PRESETS, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, 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, animationEffectLabel, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-GODW6RNR.mjs';
|
|
6
6
|
import React14, { 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';
|
|
@@ -1060,7 +1060,7 @@ var EDGE_HANDLES = [
|
|
|
1060
1060
|
];
|
|
1061
1061
|
function ResizeHandles({
|
|
1062
1062
|
elementId,
|
|
1063
|
-
|
|
1063
|
+
adjustmentHandles,
|
|
1064
1064
|
onResizePointerDown,
|
|
1065
1065
|
onAdjustmentPointerDown,
|
|
1066
1066
|
forcePointerEvents,
|
|
@@ -1178,16 +1178,17 @@ function ResizeHandles({
|
|
|
1178
1178
|
]
|
|
1179
1179
|
}
|
|
1180
1180
|
) : null,
|
|
1181
|
-
adjH
|
|
1181
|
+
adjustmentHandles.map((adjH) => /* @__PURE__ */ jsx(
|
|
1182
1182
|
"button",
|
|
1183
1183
|
{
|
|
1184
1184
|
type: "button",
|
|
1185
1185
|
"aria-label": t("pptx.canvas.adjustShape"),
|
|
1186
|
+
"data-pptx-adjust-key": adjH.key,
|
|
1186
1187
|
"data-pptx-compact": true,
|
|
1187
1188
|
className: "absolute h-2.5 w-2.5 max-md:h-4 max-md:w-4 rotate-45 border border-amber-700 bg-amber-300 shadow z-10",
|
|
1188
1189
|
style: {
|
|
1189
1190
|
left: adjH.left - 5,
|
|
1190
|
-
top: adjH.top,
|
|
1191
|
+
top: adjH.top - 5,
|
|
1191
1192
|
cursor: adjH.cursor,
|
|
1192
1193
|
...HANDLE_TOUCH_ACTION,
|
|
1193
1194
|
...forcePointerEvents ? { pointerEvents: "auto" } : {}
|
|
@@ -1198,14 +1199,15 @@ function ResizeHandles({
|
|
|
1198
1199
|
}
|
|
1199
1200
|
e.stopPropagation();
|
|
1200
1201
|
e.currentTarget.setPointerCapture?.(e.pointerId);
|
|
1201
|
-
onAdjustmentPointerDown(elementId, e);
|
|
1202
|
+
onAdjustmentPointerDown(elementId, e, adjH);
|
|
1202
1203
|
},
|
|
1203
1204
|
onMouseDown: (e) => {
|
|
1204
1205
|
e.stopPropagation();
|
|
1205
|
-
onAdjustmentPointerDown(elementId, e);
|
|
1206
|
+
onAdjustmentPointerDown(elementId, e, adjH);
|
|
1206
1207
|
}
|
|
1207
|
-
}
|
|
1208
|
-
|
|
1208
|
+
},
|
|
1209
|
+
adjH.key
|
|
1210
|
+
))
|
|
1209
1211
|
] });
|
|
1210
1212
|
}
|
|
1211
1213
|
var ConnectorElementRenderer = React14.memo(
|
|
@@ -1219,7 +1221,7 @@ var ConnectorElementRenderer = React14.memo(
|
|
|
1219
1221
|
selectionColorClass: selClr,
|
|
1220
1222
|
opacity,
|
|
1221
1223
|
zIndex,
|
|
1222
|
-
|
|
1224
|
+
adjustmentHandles: adjH,
|
|
1223
1225
|
onResizePointerDown,
|
|
1224
1226
|
onAdjustmentPointerDown,
|
|
1225
1227
|
animationState
|
|
@@ -1432,7 +1434,7 @@ var ConnectorElementRenderer = React14.memo(
|
|
|
1432
1434
|
ResizeHandles,
|
|
1433
1435
|
{
|
|
1434
1436
|
elementId: el.id,
|
|
1435
|
-
|
|
1437
|
+
adjustmentHandles: adjH,
|
|
1436
1438
|
onResizePointerDown,
|
|
1437
1439
|
onAdjustmentPointerDown,
|
|
1438
1440
|
forcePointerEvents: true
|
|
@@ -1770,7 +1772,7 @@ var ElementRenderer = React14.memo(
|
|
|
1770
1772
|
showResizeHandles,
|
|
1771
1773
|
renderInk: doInk,
|
|
1772
1774
|
renderGroups: doGrp,
|
|
1773
|
-
|
|
1775
|
+
adjustmentHandles: adjH,
|
|
1774
1776
|
onResizePointerDown,
|
|
1775
1777
|
onAdjustmentPointerDown,
|
|
1776
1778
|
onRotate,
|
|
@@ -1859,7 +1861,7 @@ var ElementRenderer = React14.memo(
|
|
|
1859
1861
|
selectionColorClass: selClr,
|
|
1860
1862
|
opacity,
|
|
1861
1863
|
zIndex,
|
|
1862
|
-
|
|
1864
|
+
adjustmentHandles: adjH,
|
|
1863
1865
|
onResizePointerDown,
|
|
1864
1866
|
onAdjustmentPointerDown,
|
|
1865
1867
|
animationState
|
|
@@ -2014,7 +2016,7 @@ var ElementRenderer = React14.memo(
|
|
|
2014
2016
|
ResizeHandles,
|
|
2015
2017
|
{
|
|
2016
2018
|
elementId: el.id,
|
|
2017
|
-
|
|
2019
|
+
adjustmentHandles: adjH,
|
|
2018
2020
|
onResizePointerDown,
|
|
2019
2021
|
onAdjustmentPointerDown,
|
|
2020
2022
|
rotation: el.rotation,
|
|
@@ -2586,7 +2588,7 @@ function FailedToLoad() {
|
|
|
2586
2588
|
var LazyModel3DScene = React14.lazy(
|
|
2587
2589
|
async () => {
|
|
2588
2590
|
try {
|
|
2589
|
-
return await import('./Model3DScene-
|
|
2591
|
+
return await import('./Model3DScene-LYEESYAI.mjs');
|
|
2590
2592
|
} catch {
|
|
2591
2593
|
return { default: FailedToLoad };
|
|
2592
2594
|
}
|
|
@@ -3965,8 +3967,7 @@ function renderTextElementBody(options) {
|
|
|
3965
3967
|
hasTextProperties(el) ? el.textStyle?.textWarpPreset : void 0
|
|
3966
3968
|
);
|
|
3967
3969
|
const scene3dStyle = hasTextProperties(el) ? buildTextBody3DSceneStyle(el.textStyle) : void 0;
|
|
3968
|
-
const
|
|
3969
|
-
const rotationTransform = typeof bodyRotation === "number" && Number.isFinite(bodyRotation) && bodyRotation !== 0 ? `rotate(${bodyRotation}deg)` : void 0;
|
|
3970
|
+
const rotationTransform = getTextBodyRotationTransform(el);
|
|
3970
3971
|
const composedTransform = [rotationTransform, getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
|
|
3971
3972
|
const transformStyle = {
|
|
3972
3973
|
transform: composedTransform,
|
|
@@ -5491,11 +5492,7 @@ function TransitionsSection(p) {
|
|
|
5491
5492
|
type: "button",
|
|
5492
5493
|
className: pill,
|
|
5493
5494
|
title: t("pptx.ribbon.previewTransition"),
|
|
5494
|
-
onClick: () =>
|
|
5495
|
-
if (p.activeSlide?.transition) {
|
|
5496
|
-
commit({});
|
|
5497
|
-
}
|
|
5498
|
-
},
|
|
5495
|
+
onClick: () => playSlideTransitionPreview(p.activeSlide?.transition, document),
|
|
5499
5496
|
children: [
|
|
5500
5497
|
/* @__PURE__ */ jsx(LuPlay, { className: ics }),
|
|
5501
5498
|
t("pptx.ribbon.preview")
|
|
@@ -5668,10 +5665,10 @@ function DesignSection(p) {
|
|
|
5668
5665
|
}
|
|
5669
5666
|
),
|
|
5670
5667
|
sep,
|
|
5671
|
-
p.onOpenDocumentProperties && /* @__PURE__ */ jsxs(
|
|
5668
|
+
(p.onOpenSlideSize ?? p.onOpenDocumentProperties) && /* @__PURE__ */ jsxs(
|
|
5672
5669
|
"button",
|
|
5673
5670
|
{
|
|
5674
|
-
onClick: p.onOpenDocumentProperties,
|
|
5671
|
+
onClick: p.onOpenSlideSize ?? p.onOpenDocumentProperties,
|
|
5675
5672
|
className: pill,
|
|
5676
5673
|
title: t("pptx.ribbon.slideSizeTitle"),
|
|
5677
5674
|
children: [
|
|
@@ -5789,7 +5786,7 @@ function AccountPage() {
|
|
|
5789
5786
|
return void 0;
|
|
5790
5787
|
});
|
|
5791
5788
|
};
|
|
5792
|
-
const version = "2.
|
|
5789
|
+
const version = "2.17.0" ;
|
|
5793
5790
|
return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
5794
5791
|
/* @__PURE__ */ jsxs("section", { className: cardClass, children: [
|
|
5795
5792
|
/* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -8823,6 +8820,7 @@ function MobileSectionBody({
|
|
|
8823
8820
|
onToggleThemeEditor: p.onToggleThemeEditor,
|
|
8824
8821
|
isThemeEditorOpen: p.isThemeEditorOpen,
|
|
8825
8822
|
onOpenDocumentProperties: p.onOpenDocumentProperties,
|
|
8823
|
+
onOpenSlideSize: p.onOpenSlideSize,
|
|
8826
8824
|
onToggleInspector: p.onToggleInspector,
|
|
8827
8825
|
isInspectorPaneOpen: p.isInspectorPaneOpen
|
|
8828
8826
|
}
|
|
@@ -10082,6 +10080,7 @@ function Toolbar(p) {
|
|
|
10082
10080
|
onToggleThemeEditor: p.onToggleThemeEditor,
|
|
10083
10081
|
isThemeEditorOpen: p.isThemeEditorOpen,
|
|
10084
10082
|
onOpenDocumentProperties: p.onOpenDocumentProperties,
|
|
10083
|
+
onOpenSlideSize: p.onOpenSlideSize,
|
|
10085
10084
|
onToggleInspector: p.onToggleInspector,
|
|
10086
10085
|
isInspectorPaneOpen: p.isInspectorPaneOpen
|
|
10087
10086
|
}
|
|
@@ -10328,6 +10327,118 @@ function CommentMarkersOverlay({
|
|
|
10328
10327
|
);
|
|
10329
10328
|
}) });
|
|
10330
10329
|
}
|
|
10330
|
+
function ConnectorEndpointOverlay({
|
|
10331
|
+
connector,
|
|
10332
|
+
elements,
|
|
10333
|
+
editorScale,
|
|
10334
|
+
canvasStageRef,
|
|
10335
|
+
onUpdateElement
|
|
10336
|
+
}) {
|
|
10337
|
+
const { t } = useTranslation();
|
|
10338
|
+
const [drag, setDrag] = useState(null);
|
|
10339
|
+
const candidates = useMemo(
|
|
10340
|
+
() => collectConnectorSiteCandidates(elements.filter((el) => el.id !== connector.id)),
|
|
10341
|
+
[elements, connector.id]
|
|
10342
|
+
);
|
|
10343
|
+
const handles = getConnectorEndpointHandles(connector);
|
|
10344
|
+
const snap = drag ? findConnectorSiteNear(candidates, drag.x, drag.y) : null;
|
|
10345
|
+
const toSlidePoint = useCallback(
|
|
10346
|
+
(clientX, clientY) => {
|
|
10347
|
+
const rect = canvasStageRef.current?.getBoundingClientRect();
|
|
10348
|
+
const scale = editorScale || 1;
|
|
10349
|
+
return {
|
|
10350
|
+
x: (clientX - (rect?.left ?? 0)) / scale,
|
|
10351
|
+
y: (clientY - (rect?.top ?? 0)) / scale
|
|
10352
|
+
};
|
|
10353
|
+
},
|
|
10354
|
+
[canvasStageRef, editorScale]
|
|
10355
|
+
);
|
|
10356
|
+
useEffect(() => {
|
|
10357
|
+
if (!drag) {
|
|
10358
|
+
return;
|
|
10359
|
+
}
|
|
10360
|
+
const onMove = (event) => {
|
|
10361
|
+
const point = toSlidePoint(event.clientX, event.clientY);
|
|
10362
|
+
setDrag((prev) => prev ? { ...prev, ...point } : prev);
|
|
10363
|
+
};
|
|
10364
|
+
const onUp = (event) => {
|
|
10365
|
+
const point = toSlidePoint(event.clientX, event.clientY);
|
|
10366
|
+
const target = findConnectorSiteNear(candidates, point.x, point.y, CONNECTOR_SITE_SNAP_PX);
|
|
10367
|
+
const update = resolveConnectorEndpointUpdate(connector, elements, drag.kind, point, target);
|
|
10368
|
+
const next = withConnectorEndpointUpdate(connector, update);
|
|
10369
|
+
onUpdateElement(connector.id, {
|
|
10370
|
+
x: next.x,
|
|
10371
|
+
y: next.y,
|
|
10372
|
+
width: next.width,
|
|
10373
|
+
height: next.height,
|
|
10374
|
+
flipHorizontal: next.flipHorizontal,
|
|
10375
|
+
flipVertical: next.flipVertical,
|
|
10376
|
+
// Sent whole: a DETACHED end has had its binding key deleted, so a
|
|
10377
|
+
// merge of only the surviving keys would leave the stale one behind.
|
|
10378
|
+
shapeStyle: next.shapeStyle
|
|
10379
|
+
});
|
|
10380
|
+
setDrag(null);
|
|
10381
|
+
};
|
|
10382
|
+
window.addEventListener("pointermove", onMove);
|
|
10383
|
+
window.addEventListener("pointerup", onUp);
|
|
10384
|
+
window.addEventListener("pointercancel", onUp);
|
|
10385
|
+
return () => {
|
|
10386
|
+
window.removeEventListener("pointermove", onMove);
|
|
10387
|
+
window.removeEventListener("pointerup", onUp);
|
|
10388
|
+
window.removeEventListener("pointercancel", onUp);
|
|
10389
|
+
};
|
|
10390
|
+
}, [drag, candidates, connector, elements, onUpdateElement, toSlidePoint]);
|
|
10391
|
+
return /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 z-[56] pointer-events-none", "data-pptx-connector-endpoints": true, children: [
|
|
10392
|
+
drag ? candidates.map((site) => /* @__PURE__ */ jsx(
|
|
10393
|
+
"div",
|
|
10394
|
+
{
|
|
10395
|
+
"aria-hidden": "true",
|
|
10396
|
+
"data-pptx-connection-site": true,
|
|
10397
|
+
className: "absolute rounded-full border-2 border-blue-500",
|
|
10398
|
+
style: {
|
|
10399
|
+
left: site.x - 4,
|
|
10400
|
+
top: site.y - 4,
|
|
10401
|
+
width: 8,
|
|
10402
|
+
height: 8,
|
|
10403
|
+
background: snap?.elementId === site.elementId && snap.siteIndex === site.siteIndex ? "#3b82f6" : "rgba(96,165,250,0.6)"
|
|
10404
|
+
}
|
|
10405
|
+
},
|
|
10406
|
+
`${site.elementId}-${site.siteIndex}`
|
|
10407
|
+
)) : null,
|
|
10408
|
+
handles.map((handle) => /* @__PURE__ */ jsx(
|
|
10409
|
+
"button",
|
|
10410
|
+
{
|
|
10411
|
+
type: "button",
|
|
10412
|
+
"data-pptx-connector-endpoint": handle.kind,
|
|
10413
|
+
"data-pptx-connector-attached": String(handle.attached),
|
|
10414
|
+
"aria-label": t(
|
|
10415
|
+
handle.kind === "start" ? "pptx.canvas.connectorEndpointStart" : "pptx.canvas.connectorEndpointEnd"
|
|
10416
|
+
),
|
|
10417
|
+
className: "absolute rounded-full border-2 border-white shadow",
|
|
10418
|
+
style: {
|
|
10419
|
+
left: (drag?.kind === handle.kind ? drag.x : handle.x) - 5,
|
|
10420
|
+
top: (drag?.kind === handle.kind ? drag.y : handle.y) - 5,
|
|
10421
|
+
width: 10,
|
|
10422
|
+
height: 10,
|
|
10423
|
+
// A bound end is filled, a loose one hollow, so "is this
|
|
10424
|
+
// connector actually attached?" is answerable at a glance.
|
|
10425
|
+
background: handle.attached ? "#16a34a" : "#ffffff",
|
|
10426
|
+
boxShadow: "0 0 0 1px #16a34a",
|
|
10427
|
+
cursor: "crosshair",
|
|
10428
|
+
pointerEvents: "auto",
|
|
10429
|
+
touchAction: "none"
|
|
10430
|
+
},
|
|
10431
|
+
onPointerDown: (event) => {
|
|
10432
|
+
event.stopPropagation();
|
|
10433
|
+
event.preventDefault();
|
|
10434
|
+
const point = toSlidePoint(event.clientX, event.clientY);
|
|
10435
|
+
setDrag({ kind: handle.kind, ...point });
|
|
10436
|
+
}
|
|
10437
|
+
},
|
|
10438
|
+
handle.kind
|
|
10439
|
+
))
|
|
10440
|
+
] });
|
|
10441
|
+
}
|
|
10331
10442
|
function ConnectorOverlay({
|
|
10332
10443
|
activeSlide,
|
|
10333
10444
|
canvasSize,
|
|
@@ -10346,26 +10457,24 @@ function ConnectorOverlay({
|
|
|
10346
10457
|
onMouseUp: onConnectorDragEnd,
|
|
10347
10458
|
style: { pointerEvents: connectorDragState ? "auto" : "none" },
|
|
10348
10459
|
children: [
|
|
10349
|
-
activeSlide.elements.
|
|
10350
|
-
|
|
10351
|
-
|
|
10352
|
-
"
|
|
10353
|
-
|
|
10354
|
-
|
|
10355
|
-
|
|
10356
|
-
|
|
10357
|
-
|
|
10358
|
-
|
|
10359
|
-
|
|
10360
|
-
|
|
10361
|
-
zIndex: 56
|
|
10362
|
-
},
|
|
10363
|
-
onMouseDown: (e) => onConnectionSiteDown(el.id, site.index, e),
|
|
10364
|
-
onMouseUp: () => connectorDragState ? onConnectionSiteDrop(el.id, site.index) : void 0
|
|
10460
|
+
collectConnectorSiteCandidates(activeSlide.elements).map((site) => /* @__PURE__ */ jsx(
|
|
10461
|
+
"div",
|
|
10462
|
+
{
|
|
10463
|
+
"data-pptx-connection-site": true,
|
|
10464
|
+
className: "absolute rounded-full border-2 border-blue-500 bg-blue-400/60 hover:bg-blue-500 hover:scale-125 transition-transform cursor-crosshair",
|
|
10465
|
+
style: {
|
|
10466
|
+
left: site.x - 5,
|
|
10467
|
+
top: site.y - 5,
|
|
10468
|
+
width: 10,
|
|
10469
|
+
height: 10,
|
|
10470
|
+
pointerEvents: "auto",
|
|
10471
|
+
zIndex: 56
|
|
10365
10472
|
},
|
|
10366
|
-
|
|
10367
|
-
|
|
10368
|
-
|
|
10473
|
+
onMouseDown: (e) => onConnectionSiteDown(site.elementId, site.siteIndex, e),
|
|
10474
|
+
onMouseUp: () => connectorDragState ? onConnectionSiteDrop(site.elementId, site.siteIndex) : void 0
|
|
10475
|
+
},
|
|
10476
|
+
`${site.elementId}-site-${site.siteIndex}`
|
|
10477
|
+
)),
|
|
10369
10478
|
connectorDragState && /* @__PURE__ */ jsx(
|
|
10370
10479
|
ConnectorDragPreview,
|
|
10371
10480
|
{
|
|
@@ -10389,7 +10498,7 @@ function ConnectorDragPreview({
|
|
|
10389
10498
|
if (!startEl) {
|
|
10390
10499
|
return null;
|
|
10391
10500
|
}
|
|
10392
|
-
const startSites =
|
|
10501
|
+
const startSites = getShapeConnectionSites(startEl);
|
|
10393
10502
|
const startSite = startSites[connectorDragState.startSiteIndex] ?? startSites[0];
|
|
10394
10503
|
const sx = startEl.x + startSite.x;
|
|
10395
10504
|
const sy = startEl.y + startSite.y;
|
|
@@ -11380,7 +11489,7 @@ function useStableCallbacks(callbacks) {
|
|
|
11380
11489
|
[]
|
|
11381
11490
|
);
|
|
11382
11491
|
const stableAdjustmentPointerDown = useCallback(
|
|
11383
|
-
(elementId, e) => cbRef.current.onAdjustmentPointerDown(elementId, e),
|
|
11492
|
+
(elementId, e, descriptor) => cbRef.current.onAdjustmentPointerDown(elementId, e, descriptor),
|
|
11384
11493
|
[]
|
|
11385
11494
|
);
|
|
11386
11495
|
const stableRotate = useCallback(
|
|
@@ -11501,6 +11610,7 @@ function ActiveXControlOverlay({
|
|
|
11501
11610
|
);
|
|
11502
11611
|
}) });
|
|
11503
11612
|
}
|
|
11613
|
+
var EMPTY_ADJUSTMENT_HANDLES = [];
|
|
11504
11614
|
function SlideCanvas({
|
|
11505
11615
|
activeSlide,
|
|
11506
11616
|
templateElements,
|
|
@@ -11757,7 +11867,7 @@ function SlideCanvas({
|
|
|
11757
11867
|
showResizeHandles: isEditableCanvas && selectedElementIdSet.has(element.id) && selectedElementIdSet.size <= 1 && !inlineEditingElementId,
|
|
11758
11868
|
renderInk: false,
|
|
11759
11869
|
renderGroups: true,
|
|
11760
|
-
|
|
11870
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
11761
11871
|
onResizePointerDown: stableResizePointerDown,
|
|
11762
11872
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
11763
11873
|
onRotate: stableRotate,
|
|
@@ -11797,7 +11907,7 @@ function SlideCanvas({
|
|
|
11797
11907
|
showResizeHandles: isEditableCanvas && selectedElementIdSet.has(element.id) && selectedElementIdSet.size <= 1 && !inlineEditingElementId,
|
|
11798
11908
|
renderInk: true,
|
|
11799
11909
|
renderGroups: true,
|
|
11800
|
-
|
|
11910
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
11801
11911
|
onResizePointerDown: stableResizePointerDown,
|
|
11802
11912
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
11803
11913
|
onRotate: stableRotate,
|
|
@@ -11834,6 +11944,16 @@ function SlideCanvas({
|
|
|
11834
11944
|
}
|
|
11835
11945
|
),
|
|
11836
11946
|
/* @__PURE__ */ jsx(SnapLinesOverlay, { snapLines }),
|
|
11947
|
+
isEditableCanvas && selectedElement?.type === "connector" && activeSlide && /* @__PURE__ */ jsx(
|
|
11948
|
+
ConnectorEndpointOverlay,
|
|
11949
|
+
{
|
|
11950
|
+
connector: selectedElement,
|
|
11951
|
+
elements: activeSlide.elements,
|
|
11952
|
+
editorScale: zoom.editorScale,
|
|
11953
|
+
canvasStageRef: zoom.canvasStageRef,
|
|
11954
|
+
onUpdateElement: stableUpdateSmartArtElement
|
|
11955
|
+
}
|
|
11956
|
+
),
|
|
11837
11957
|
connectorCreationMode && activeSlide && /* @__PURE__ */ jsx(
|
|
11838
11958
|
ConnectorOverlay,
|
|
11839
11959
|
{
|
|
@@ -12848,7 +12968,7 @@ function SectionHeader({
|
|
|
12848
12968
|
{
|
|
12849
12969
|
type: "button",
|
|
12850
12970
|
className: "flex w-full items-center gap-1 rounded px-1.5 py-1 text-[11px] uppercase tracking-wide text-muted-foreground hover:bg-muted/60 hover:text-foreground",
|
|
12851
|
-
onClick: () => onToggle(sectionId),
|
|
12971
|
+
onClick: () => onToggle(sectionId, isCollapsed),
|
|
12852
12972
|
onContextMenu: (e) => canEdit ? onContextMenu(e, sectionId, sectionIndex, totalSections) : void 0,
|
|
12853
12973
|
onDoubleClick: (e) => {
|
|
12854
12974
|
if (!canEdit) {
|
|
@@ -13134,7 +13254,7 @@ function SlideItemInner({
|
|
|
13134
13254
|
);
|
|
13135
13255
|
}
|
|
13136
13256
|
var SlideItem = React14.memo(SlideItemInner);
|
|
13137
|
-
function useSlidePaneCallbacks(onMoveSlide, onRenameSection) {
|
|
13257
|
+
function useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionCollapse) {
|
|
13138
13258
|
const [collapsedSections, setCollapsedSections] = useState({});
|
|
13139
13259
|
const [renamingSectionId, setRenamingSectionId] = useState(null);
|
|
13140
13260
|
const [renameValue, setRenameValue] = useState("");
|
|
@@ -13172,12 +13292,16 @@ function useSlidePaneCallbacks(onMoveSlide, onRenameSection) {
|
|
|
13172
13292
|
},
|
|
13173
13293
|
[onMoveSlide]
|
|
13174
13294
|
);
|
|
13175
|
-
const toggleSection = useCallback(
|
|
13176
|
-
|
|
13177
|
-
|
|
13178
|
-
|
|
13179
|
-
|
|
13180
|
-
|
|
13295
|
+
const toggleSection = useCallback(
|
|
13296
|
+
(sectionId, isCollapsed) => {
|
|
13297
|
+
setCollapsedSections((prev) => ({
|
|
13298
|
+
...prev,
|
|
13299
|
+
[sectionId]: !isCollapsed
|
|
13300
|
+
}));
|
|
13301
|
+
onToggleSectionCollapse?.(sectionId);
|
|
13302
|
+
},
|
|
13303
|
+
[onToggleSectionCollapse]
|
|
13304
|
+
);
|
|
13181
13305
|
const startRename = useCallback((sectionId, currentLabel) => {
|
|
13182
13306
|
setRenamingSectionId(sectionId);
|
|
13183
13307
|
setRenameValue(currentLabel);
|
|
@@ -13257,6 +13381,7 @@ function SlidesPaneSidebar({
|
|
|
13257
13381
|
onDeleteSection,
|
|
13258
13382
|
onMoveSectionUp,
|
|
13259
13383
|
onMoveSectionDown,
|
|
13384
|
+
onToggleSectionCollapse,
|
|
13260
13385
|
rehearsalTimings,
|
|
13261
13386
|
panelWidth,
|
|
13262
13387
|
fieldContext,
|
|
@@ -13287,7 +13412,7 @@ function SlidesPaneSidebar({
|
|
|
13287
13412
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height),
|
|
13288
13413
|
[canvasSize.width, canvasSize.height]
|
|
13289
13414
|
);
|
|
13290
|
-
const showSectionHeaders = sectionGroups.
|
|
13415
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== DEFAULT_SECTION_GROUP_ID);
|
|
13291
13416
|
const {
|
|
13292
13417
|
collapsedSections,
|
|
13293
13418
|
renamingSectionId,
|
|
@@ -13306,10 +13431,17 @@ function SlidesPaneSidebar({
|
|
|
13306
13431
|
handleOpenSlideCtxMenu,
|
|
13307
13432
|
closeSectionContextMenu,
|
|
13308
13433
|
closeSlideCtxMenu
|
|
13309
|
-
} = useSlidePaneCallbacks(onMoveSlide, onRenameSection);
|
|
13434
|
+
} = useSlidePaneCallbacks(onMoveSlide, onRenameSection, onToggleSectionCollapse);
|
|
13435
|
+
const effectiveCollapsed = useMemo(() => {
|
|
13436
|
+
const map = {};
|
|
13437
|
+
for (const group of sectionGroups) {
|
|
13438
|
+
map[group.id] = collapsedSections[group.id] ?? group.defaultCollapsed ?? false;
|
|
13439
|
+
}
|
|
13440
|
+
return map;
|
|
13441
|
+
}, [sectionGroups, collapsedSections]);
|
|
13310
13442
|
const flatItems = useMemo(
|
|
13311
|
-
() => buildFlatPaneItems(sectionGroups, showSectionHeaders,
|
|
13312
|
-
[sectionGroups, showSectionHeaders,
|
|
13443
|
+
() => buildFlatPaneItems(sectionGroups, showSectionHeaders, effectiveCollapsed),
|
|
13444
|
+
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
13313
13445
|
);
|
|
13314
13446
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
13315
13447
|
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = useVirtualizedSlides({
|
|
@@ -13367,7 +13499,7 @@ function SlidesPaneSidebar({
|
|
|
13367
13499
|
if (!section) {
|
|
13368
13500
|
return null;
|
|
13369
13501
|
}
|
|
13370
|
-
const isCollapsed =
|
|
13502
|
+
const isCollapsed = effectiveCollapsed[section.id] ?? false;
|
|
13371
13503
|
return /* @__PURE__ */ jsx(
|
|
13372
13504
|
SectionHeader,
|
|
13373
13505
|
{
|
|
@@ -13424,7 +13556,7 @@ function SlidesPaneSidebar({
|
|
|
13424
13556
|
) }) });
|
|
13425
13557
|
};
|
|
13426
13558
|
const renderNonVirtualized = () => /* @__PURE__ */ jsx("div", { className: "flex-1 space-y-1 overflow-y-auto px-1.5 pb-2", children: sectionGroups.map((section, sectionIndex) => {
|
|
13427
|
-
const isCollapsed =
|
|
13559
|
+
const isCollapsed = effectiveCollapsed[section.id] ?? false;
|
|
13428
13560
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
13429
13561
|
showSectionHeaders && /* @__PURE__ */ jsx(
|
|
13430
13562
|
SectionHeader,
|
|
@@ -13658,11 +13790,14 @@ function SlideMastersList({
|
|
|
13658
13790
|
const layouts = master.layouts ?? [];
|
|
13659
13791
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
13660
13792
|
/* @__PURE__ */ jsxs(
|
|
13661
|
-
"
|
|
13793
|
+
"button",
|
|
13662
13794
|
{
|
|
13795
|
+
type: "button",
|
|
13663
13796
|
ref: isMasterActive ? activeRef : void 0,
|
|
13797
|
+
"aria-pressed": isMasterActive,
|
|
13798
|
+
"aria-label": master.name || t("pptx.master.master"),
|
|
13664
13799
|
className: cn(
|
|
13665
|
-
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
13800
|
+
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
13666
13801
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
13667
13802
|
),
|
|
13668
13803
|
onClick: () => onSelectMaster(masterIdx),
|
|
@@ -13691,11 +13826,14 @@ function SlideMastersList({
|
|
|
13691
13826
|
layouts.length > 0 && /* @__PURE__ */ jsx("div", { className: "ml-3 space-y-1 border-l border-border/40 pl-2", children: layouts.map((layout, layoutIdx) => {
|
|
13692
13827
|
const isLayoutActive = masterIdx === activeMasterIndex && layoutIdx === activeLayoutIndex;
|
|
13693
13828
|
return /* @__PURE__ */ jsxs(
|
|
13694
|
-
"
|
|
13829
|
+
"button",
|
|
13695
13830
|
{
|
|
13831
|
+
type: "button",
|
|
13696
13832
|
ref: isLayoutActive ? activeRef : void 0,
|
|
13833
|
+
"aria-pressed": isLayoutActive,
|
|
13834
|
+
"aria-label": layout.name || t("pptx.master.layout"),
|
|
13697
13835
|
className: cn(
|
|
13698
|
-
"group relative cursor-pointer rounded-md border-2 p-0.5 transition-all",
|
|
13836
|
+
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
13699
13837
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
13700
13838
|
),
|
|
13701
13839
|
onClick: () => onSelectLayout(masterIdx, layoutIdx),
|
|
@@ -13742,16 +13880,22 @@ function MasterViewSidebar({
|
|
|
13742
13880
|
notesMaster,
|
|
13743
13881
|
handoutMaster,
|
|
13744
13882
|
handoutSlidesPerPage,
|
|
13883
|
+
canEdit,
|
|
13745
13884
|
onSelectMaster,
|
|
13746
13885
|
onSelectLayout,
|
|
13747
13886
|
onCollapse,
|
|
13748
13887
|
onTabChange,
|
|
13749
13888
|
onHandoutSlidesPerPageChange,
|
|
13750
13889
|
onNotesMasterBackgroundChange,
|
|
13751
|
-
onHandoutMasterBackgroundChange
|
|
13890
|
+
onHandoutMasterBackgroundChange,
|
|
13891
|
+
onSlidesBackgroundChange
|
|
13752
13892
|
}) {
|
|
13753
13893
|
const scrollRef = useRef(null);
|
|
13754
13894
|
const { t } = useTranslation();
|
|
13895
|
+
const slidesBackground = masterViewBackgroundColor(
|
|
13896
|
+
{ slideMasters },
|
|
13897
|
+
{ tab: "slides", masterIndex: activeMasterIndex, layoutIndex: activeLayoutIndex }
|
|
13898
|
+
);
|
|
13755
13899
|
const handleMasterClick = useCallback(
|
|
13756
13900
|
(index) => {
|
|
13757
13901
|
onSelectMaster(index);
|
|
@@ -13807,6 +13951,19 @@ function MasterViewSidebar({
|
|
|
13807
13951
|
}
|
|
13808
13952
|
),
|
|
13809
13953
|
/* @__PURE__ */ jsxs("div", { ref: scrollRef, className: "flex-1 space-y-2 overflow-y-auto px-1.5 pb-2 pt-1", children: [
|
|
13954
|
+
masterViewTab === "slides" && canEdit && /* @__PURE__ */ jsxs("section", { className: "space-y-1.5 rounded-md border border-border/60 p-2", children: [
|
|
13955
|
+
/* @__PURE__ */ jsx("div", { className: "text-[11px] text-muted-foreground", children: t("pptx.master.notesMasterBackground") }),
|
|
13956
|
+
/* @__PURE__ */ jsx(
|
|
13957
|
+
"input",
|
|
13958
|
+
{
|
|
13959
|
+
type: "color",
|
|
13960
|
+
"aria-label": t("pptx.master.backgroundColorLabel"),
|
|
13961
|
+
className: "h-7 w-full cursor-pointer rounded border border-border/60 bg-transparent",
|
|
13962
|
+
value: slidesBackground ?? "#ffffff",
|
|
13963
|
+
onChange: (event) => onSlidesBackgroundChange(event.target.value)
|
|
13964
|
+
}
|
|
13965
|
+
)
|
|
13966
|
+
] }),
|
|
13810
13967
|
masterViewTab === "slides" && /* @__PURE__ */ jsx(
|
|
13811
13968
|
SlideMastersList,
|
|
13812
13969
|
{
|
|
@@ -14521,10 +14678,10 @@ function SorterContextMenu({
|
|
|
14521
14678
|
}
|
|
14522
14679
|
|
|
14523
14680
|
// src/viewer/components/slide-sorter/types.ts
|
|
14524
|
-
var MIN_ZOOM =
|
|
14525
|
-
var MAX_ZOOM =
|
|
14681
|
+
var MIN_ZOOM = SORTER_MIN_ZOOM;
|
|
14682
|
+
var MAX_ZOOM = SORTER_MAX_ZOOM;
|
|
14526
14683
|
var DEFAULT_ZOOM = 100;
|
|
14527
|
-
var ZOOM_STEP =
|
|
14684
|
+
var ZOOM_STEP = SORTER_ZOOM_STEP;
|
|
14528
14685
|
function useKeyboardShortcuts(params) {
|
|
14529
14686
|
const {
|
|
14530
14687
|
slides,
|
|
@@ -14548,52 +14705,55 @@ function useKeyboardShortcuts(params) {
|
|
|
14548
14705
|
if (contextMenu) {
|
|
14549
14706
|
setContextMenu(null);
|
|
14550
14707
|
}
|
|
14551
|
-
const
|
|
14552
|
-
|
|
14553
|
-
|
|
14554
|
-
|
|
14555
|
-
|
|
14556
|
-
|
|
14557
|
-
} else {
|
|
14558
|
-
onClose();
|
|
14559
|
-
}
|
|
14708
|
+
const { action } = mapSlideSorterKey(e, {
|
|
14709
|
+
canEdit,
|
|
14710
|
+
hasMultiSelection: selectedSlideIds.length > 1,
|
|
14711
|
+
isTextInputTarget: isEditorTextInputTarget(e.target)
|
|
14712
|
+
});
|
|
14713
|
+
if (action === null) {
|
|
14560
14714
|
return;
|
|
14561
14715
|
}
|
|
14562
|
-
|
|
14563
|
-
|
|
14564
|
-
|
|
14565
|
-
|
|
14716
|
+
switch (action) {
|
|
14717
|
+
case "collapseSelection": {
|
|
14718
|
+
e.stopPropagation();
|
|
14719
|
+
const activeSlide = slides[activeSlideIndex];
|
|
14720
|
+
setSelectedSlideIds(activeSlide?.id ? [activeSlide.id] : []);
|
|
14721
|
+
return;
|
|
14566
14722
|
}
|
|
14567
|
-
|
|
14568
|
-
|
|
14569
|
-
|
|
14570
|
-
|
|
14571
|
-
|
|
14572
|
-
|
|
14573
|
-
|
|
14574
|
-
|
|
14575
|
-
|
|
14576
|
-
|
|
14577
|
-
|
|
14578
|
-
|
|
14579
|
-
|
|
14580
|
-
|
|
14581
|
-
|
|
14582
|
-
|
|
14583
|
-
|
|
14584
|
-
|
|
14585
|
-
|
|
14586
|
-
|
|
14587
|
-
|
|
14588
|
-
|
|
14589
|
-
|
|
14590
|
-
|
|
14591
|
-
|
|
14592
|
-
|
|
14593
|
-
|
|
14594
|
-
|
|
14595
|
-
|
|
14596
|
-
|
|
14723
|
+
case "close":
|
|
14724
|
+
e.stopPropagation();
|
|
14725
|
+
onClose();
|
|
14726
|
+
return;
|
|
14727
|
+
case "delete":
|
|
14728
|
+
e.preventDefault();
|
|
14729
|
+
if (selectedIndexes.length > 0) {
|
|
14730
|
+
handleDeleteSelected();
|
|
14731
|
+
}
|
|
14732
|
+
return;
|
|
14733
|
+
case "copy":
|
|
14734
|
+
e.preventDefault();
|
|
14735
|
+
handleCopySelected();
|
|
14736
|
+
return;
|
|
14737
|
+
case "paste":
|
|
14738
|
+
e.preventDefault();
|
|
14739
|
+
handlePaste();
|
|
14740
|
+
return;
|
|
14741
|
+
case "duplicate":
|
|
14742
|
+
e.preventDefault();
|
|
14743
|
+
handleDuplicateSelected();
|
|
14744
|
+
return;
|
|
14745
|
+
case "selectAll":
|
|
14746
|
+
e.preventDefault();
|
|
14747
|
+
handleSelectAll();
|
|
14748
|
+
return;
|
|
14749
|
+
case "zoomIn":
|
|
14750
|
+
e.preventDefault();
|
|
14751
|
+
setZoom((z) => clampSorterZoom(z + ZOOM_STEP));
|
|
14752
|
+
return;
|
|
14753
|
+
case "zoomOut":
|
|
14754
|
+
e.preventDefault();
|
|
14755
|
+
setZoom((z) => clampSorterZoom(z - ZOOM_STEP));
|
|
14756
|
+
break;
|
|
14597
14757
|
}
|
|
14598
14758
|
};
|
|
14599
14759
|
window.addEventListener("keydown", handleKeyDown);
|
|
@@ -18130,12 +18290,13 @@ function PresenterNotesRail({
|
|
|
18130
18290
|
templateElements,
|
|
18131
18291
|
now,
|
|
18132
18292
|
elapsed,
|
|
18293
|
+
activeCustomShow,
|
|
18133
18294
|
onMove,
|
|
18134
18295
|
onUpdateNotes
|
|
18135
18296
|
}) {
|
|
18136
18297
|
const { t } = useTranslation();
|
|
18137
18298
|
const slide = slides[current];
|
|
18138
|
-
const nextSlide = nextPresentedSlide(slides, current);
|
|
18299
|
+
const nextSlide = nextPresentedSlide(slides, current, activeCustomShow);
|
|
18139
18300
|
const notesText = slide?.notes ?? "";
|
|
18140
18301
|
const notesSegments = slide?.notesSegments;
|
|
18141
18302
|
const [notesDraft, setNotesDraft] = useState(notesText);
|
|
@@ -18380,6 +18541,7 @@ function PresenterView({
|
|
|
18380
18541
|
canvasSize,
|
|
18381
18542
|
templateElements,
|
|
18382
18543
|
presentationStartTime,
|
|
18544
|
+
activeCustomShow,
|
|
18383
18545
|
onMovePresentationSlide,
|
|
18384
18546
|
onExit,
|
|
18385
18547
|
onOpenAudienceWindow,
|
|
@@ -18490,6 +18652,7 @@ function PresenterView({
|
|
|
18490
18652
|
current: currentSlideIndex,
|
|
18491
18653
|
canvasSize,
|
|
18492
18654
|
templateElements,
|
|
18655
|
+
activeCustomShow,
|
|
18493
18656
|
now,
|
|
18494
18657
|
elapsed,
|
|
18495
18658
|
onMove: onMovePresentationSlide,
|
|
@@ -27273,6 +27436,27 @@ function ElementInspectorBody({
|
|
|
27273
27436
|
/* @__PURE__ */ jsx(LayerOrderButtons, { canEdit, onMoveLayer })
|
|
27274
27437
|
] });
|
|
27275
27438
|
}
|
|
27439
|
+
function CommentBody({ text, mentions, className }) {
|
|
27440
|
+
const segments = commentTextSegments(text, mentions);
|
|
27441
|
+
if (!segments.some((segment) => segment.kind === "mention")) {
|
|
27442
|
+
return /* @__PURE__ */ jsx("div", { className, children: text });
|
|
27443
|
+
}
|
|
27444
|
+
return /* @__PURE__ */ jsx("div", { className, children: segments.map(
|
|
27445
|
+
(segment, index) => segment.kind === "mention" ? /* @__PURE__ */ jsx(
|
|
27446
|
+
"span",
|
|
27447
|
+
{
|
|
27448
|
+
className: `${COMMENT_MENTION_CLASS} rounded bg-primary/15 px-0.5 font-semibold text-primary`,
|
|
27449
|
+
...{ [COMMENT_MENTION_ATTRIBUTE]: segment.personId || "" },
|
|
27450
|
+
title: segment.authorName,
|
|
27451
|
+
children: segment.text
|
|
27452
|
+
},
|
|
27453
|
+
index
|
|
27454
|
+
) : (
|
|
27455
|
+
// eslint-disable-next-line react/no-array-index-key -- segments are positional
|
|
27456
|
+
/* @__PURE__ */ jsx(React14.Fragment, { children: segment.text }, index)
|
|
27457
|
+
)
|
|
27458
|
+
) });
|
|
27459
|
+
}
|
|
27276
27460
|
function InspectorCommentRow({
|
|
27277
27461
|
comment,
|
|
27278
27462
|
canEdit,
|
|
@@ -27366,7 +27550,14 @@ function InspectorCommentRow({
|
|
|
27366
27550
|
)
|
|
27367
27551
|
] })
|
|
27368
27552
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
27369
|
-
/* @__PURE__ */ jsx(
|
|
27553
|
+
/* @__PURE__ */ jsx(
|
|
27554
|
+
CommentBody,
|
|
27555
|
+
{
|
|
27556
|
+
text: comment.text,
|
|
27557
|
+
mentions: comment.mentions,
|
|
27558
|
+
className: "mt-1 whitespace-pre-wrap break-words text-[11px] text-foreground"
|
|
27559
|
+
}
|
|
27560
|
+
),
|
|
27370
27561
|
canEdit && /* @__PURE__ */ jsxs("div", { className: "mt-1.5 inline-flex items-center rounded bg-muted overflow-hidden", children: [
|
|
27371
27562
|
/* @__PURE__ */ jsx(
|
|
27372
27563
|
"button",
|
|
@@ -27894,6 +28085,83 @@ function DocumentPropertiesCard({
|
|
|
27894
28085
|
] })
|
|
27895
28086
|
] });
|
|
27896
28087
|
}
|
|
28088
|
+
var CUSTOM_PRESET_VALUE = "";
|
|
28089
|
+
function SlideSizeCard({
|
|
28090
|
+
canvasSize,
|
|
28091
|
+
slideSizeEmu,
|
|
28092
|
+
canEdit,
|
|
28093
|
+
onUpdate,
|
|
28094
|
+
onUpdateSlideSize
|
|
28095
|
+
}) {
|
|
28096
|
+
const { t } = useTranslation();
|
|
28097
|
+
const selection = resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
|
|
28098
|
+
const presetDisabled = !canEdit || !onUpdateSlideSize;
|
|
28099
|
+
const handlePreset = (labelKey) => {
|
|
28100
|
+
const preset = SLIDE_SIZE_PRESETS.find((candidate) => candidate.labelKey === labelKey);
|
|
28101
|
+
if (!preset) {
|
|
28102
|
+
return;
|
|
28103
|
+
}
|
|
28104
|
+
onUpdateSlideSize?.(slideSizeFromPreset(preset, selection.orientation));
|
|
28105
|
+
};
|
|
28106
|
+
const handleOrientation = (orientation) => {
|
|
28107
|
+
onUpdateSlideSize?.(withSlideSizeOrientation(selection.size, orientation));
|
|
28108
|
+
};
|
|
28109
|
+
return /* @__PURE__ */ jsxs("div", { className: CARD, children: [
|
|
28110
|
+
/* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.slideSize.title") }),
|
|
28111
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5 text-[11px]", children: [
|
|
28112
|
+
/* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
28113
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.slideSize.presets") }),
|
|
28114
|
+
/* @__PURE__ */ jsxs(
|
|
28115
|
+
"select",
|
|
28116
|
+
{
|
|
28117
|
+
"data-pptx-slide-size-preset": true,
|
|
28118
|
+
disabled: presetDisabled,
|
|
28119
|
+
className: INPUT,
|
|
28120
|
+
value: selection.preset?.labelKey ?? CUSTOM_PRESET_VALUE,
|
|
28121
|
+
onChange: (e) => handlePreset(e.target.value),
|
|
28122
|
+
children: [
|
|
28123
|
+
selection.preset === void 0 && /* @__PURE__ */ jsx("option", { value: CUSTOM_PRESET_VALUE, children: t("pptx.slideSize.customSize") }),
|
|
28124
|
+
SLIDE_SIZE_PRESETS.map((preset) => /* @__PURE__ */ jsx("option", { value: preset.labelKey, children: t(`pptx.slideSize.preset.${preset.labelKey}`) }, preset.labelKey))
|
|
28125
|
+
]
|
|
28126
|
+
}
|
|
28127
|
+
)
|
|
28128
|
+
] }),
|
|
28129
|
+
/* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
28130
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.slideSize.orientation") }),
|
|
28131
|
+
/* @__PURE__ */ jsxs(
|
|
28132
|
+
"select",
|
|
28133
|
+
{
|
|
28134
|
+
"data-pptx-slide-size-orientation": true,
|
|
28135
|
+
disabled: presetDisabled,
|
|
28136
|
+
className: INPUT,
|
|
28137
|
+
value: selection.orientation,
|
|
28138
|
+
onChange: (e) => handleOrientation(e.target.value),
|
|
28139
|
+
children: [
|
|
28140
|
+
/* @__PURE__ */ jsx("option", { value: "landscape", children: t("pptx.slideSize.landscape") }),
|
|
28141
|
+
/* @__PURE__ */ jsx("option", { value: "portrait", children: t("pptx.slideSize.portrait") })
|
|
28142
|
+
]
|
|
28143
|
+
}
|
|
28144
|
+
)
|
|
28145
|
+
] }),
|
|
28146
|
+
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-1.5", children: [
|
|
28147
|
+
["W", "width"],
|
|
28148
|
+
["H", "height"]
|
|
28149
|
+
].map(([label, key]) => /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1", children: [
|
|
28150
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: label }),
|
|
28151
|
+
/* @__PURE__ */ jsx(
|
|
28152
|
+
"input",
|
|
28153
|
+
{
|
|
28154
|
+
type: "number",
|
|
28155
|
+
className: INPUT,
|
|
28156
|
+
disabled: !canEdit,
|
|
28157
|
+
value: canvasSize[key],
|
|
28158
|
+
onChange: (e) => onUpdate({ ...canvasSize, [key]: Number(e.target.value) })
|
|
28159
|
+
}
|
|
28160
|
+
)
|
|
28161
|
+
] }, key)) })
|
|
28162
|
+
] })
|
|
28163
|
+
] });
|
|
28164
|
+
}
|
|
27897
28165
|
function CheckboxRow({
|
|
27898
28166
|
label,
|
|
27899
28167
|
disabled,
|
|
@@ -28051,32 +28319,6 @@ function ThemeSelectorCard({
|
|
|
28051
28319
|
] })
|
|
28052
28320
|
] });
|
|
28053
28321
|
}
|
|
28054
|
-
function SlideSizeCard({
|
|
28055
|
-
canvasSize,
|
|
28056
|
-
canEdit,
|
|
28057
|
-
onUpdate
|
|
28058
|
-
}) {
|
|
28059
|
-
const { t } = useTranslation();
|
|
28060
|
-
return /* @__PURE__ */ jsxs("div", { className: CARD, children: [
|
|
28061
|
-
/* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.slideSize.title") }),
|
|
28062
|
-
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-1.5 text-[11px]", children: [
|
|
28063
|
-
["W", "width"],
|
|
28064
|
-
["H", "height"]
|
|
28065
|
-
].map(([label, key]) => /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-1", children: [
|
|
28066
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: label }),
|
|
28067
|
-
/* @__PURE__ */ jsx(
|
|
28068
|
-
"input",
|
|
28069
|
-
{
|
|
28070
|
-
type: "number",
|
|
28071
|
-
className: INPUT,
|
|
28072
|
-
disabled: !canEdit,
|
|
28073
|
-
value: canvasSize[key],
|
|
28074
|
-
onChange: (e) => onUpdate({ ...canvasSize, [key]: Number(e.target.value) })
|
|
28075
|
-
}
|
|
28076
|
-
)
|
|
28077
|
-
] }, key)) })
|
|
28078
|
-
] });
|
|
28079
|
-
}
|
|
28080
28322
|
var ALIAS_LABELS = {
|
|
28081
28323
|
bg1: "Background 1",
|
|
28082
28324
|
tx1: "Text 1",
|
|
@@ -28538,6 +28780,8 @@ function PresentationPropertiesPanel({
|
|
|
28538
28780
|
onUpdateSlide,
|
|
28539
28781
|
canvasSize,
|
|
28540
28782
|
onUpdateCanvasSize,
|
|
28783
|
+
slideSizeEmu,
|
|
28784
|
+
onUpdateSlideSize,
|
|
28541
28785
|
notesCanvasSize,
|
|
28542
28786
|
notesMaster,
|
|
28543
28787
|
handoutMaster,
|
|
@@ -28590,7 +28834,16 @@ function PresentationPropertiesPanel({
|
|
|
28590
28834
|
}
|
|
28591
28835
|
)
|
|
28592
28836
|
] }),
|
|
28593
|
-
/* @__PURE__ */ jsx(
|
|
28837
|
+
/* @__PURE__ */ jsx(
|
|
28838
|
+
SlideSizeCard,
|
|
28839
|
+
{
|
|
28840
|
+
canvasSize,
|
|
28841
|
+
slideSizeEmu,
|
|
28842
|
+
canEdit,
|
|
28843
|
+
onUpdate: onUpdateCanvasSize,
|
|
28844
|
+
onUpdateSlideSize
|
|
28845
|
+
}
|
|
28846
|
+
),
|
|
28594
28847
|
/* @__PURE__ */ jsx(
|
|
28595
28848
|
SlideTransitionSection,
|
|
28596
28849
|
{
|
|
@@ -28892,6 +29145,8 @@ function InspectorPane(props) {
|
|
|
28892
29145
|
replyingToCommentId,
|
|
28893
29146
|
replyDraftByCommentId,
|
|
28894
29147
|
onUpdateCanvasSize,
|
|
29148
|
+
slideSizeEmu,
|
|
29149
|
+
onUpdateSlideSize,
|
|
28895
29150
|
onUpdateElementStyle,
|
|
28896
29151
|
onUpdateTextStyle,
|
|
28897
29152
|
onUpdateSlide,
|
|
@@ -29011,6 +29266,8 @@ function InspectorPane(props) {
|
|
|
29011
29266
|
tagCollections,
|
|
29012
29267
|
onUpdateTagCollections,
|
|
29013
29268
|
onUpdateCanvasSize,
|
|
29269
|
+
slideSizeEmu,
|
|
29270
|
+
onUpdateSlideSize,
|
|
29014
29271
|
activeSlide,
|
|
29015
29272
|
theme,
|
|
29016
29273
|
onUpdateSlide
|
|
@@ -32088,6 +32345,8 @@ function ViewerInspector({
|
|
|
32088
32345
|
onUpdateElement,
|
|
32089
32346
|
onApplySelection,
|
|
32090
32347
|
onSetCanvasSize,
|
|
32348
|
+
slideSizeEmu,
|
|
32349
|
+
onSetSlideSize,
|
|
32091
32350
|
onMoveLayer,
|
|
32092
32351
|
onMoveLayerToEdge,
|
|
32093
32352
|
onDeleteElement,
|
|
@@ -32190,6 +32449,8 @@ function ViewerInspector({
|
|
|
32190
32449
|
replyingToCommentId: comments.replyingToCommentId,
|
|
32191
32450
|
replyDraftByCommentId: comments.replyDraftByCommentId,
|
|
32192
32451
|
onUpdateCanvasSize: onSetCanvasSize,
|
|
32452
|
+
slideSizeEmu,
|
|
32453
|
+
onUpdateSlideSize: onSetSlideSize,
|
|
32193
32454
|
editTemplateMode,
|
|
32194
32455
|
slideMasters,
|
|
32195
32456
|
onSetTemplateBackground,
|
|
@@ -32553,6 +32814,12 @@ function ViewerToolbarSection(props) {
|
|
|
32553
32814
|
const handleAddSection = useCallback(() => {
|
|
32554
32815
|
sectionOps?.addSection(t("pptx.sections.defaultName"), activeSlideIndex);
|
|
32555
32816
|
}, [sectionOps, activeSlideIndex, t]);
|
|
32817
|
+
const handleOpenSlideSize = useCallback(() => {
|
|
32818
|
+
s.setSelectedElementId(null);
|
|
32819
|
+
s.setSelectedElementIds([]);
|
|
32820
|
+
s.setSidebarPanelMode("properties");
|
|
32821
|
+
s.setIsInspectorPaneOpen(true);
|
|
32822
|
+
}, [s]);
|
|
32556
32823
|
const handleSelectAll = useCallback(() => {
|
|
32557
32824
|
const allIds = activeSlide?.elements.map((element) => element.id) ?? [];
|
|
32558
32825
|
if (allIds.length > 0) {
|
|
@@ -32671,7 +32938,7 @@ function ViewerToolbarSection(props) {
|
|
|
32671
32938
|
s.setIsThemeGalleryOpen((p) => !p);
|
|
32672
32939
|
break;
|
|
32673
32940
|
case "slideSize":
|
|
32674
|
-
|
|
32941
|
+
handleOpenSlideSize();
|
|
32675
32942
|
break;
|
|
32676
32943
|
}
|
|
32677
32944
|
break;
|
|
@@ -32700,7 +32967,17 @@ function ViewerToolbarSection(props) {
|
|
|
32700
32967
|
break;
|
|
32701
32968
|
}
|
|
32702
32969
|
},
|
|
32703
|
-
[
|
|
32970
|
+
[
|
|
32971
|
+
ops,
|
|
32972
|
+
insertHandlers,
|
|
32973
|
+
s,
|
|
32974
|
+
dialogs,
|
|
32975
|
+
zoom,
|
|
32976
|
+
onSetMode,
|
|
32977
|
+
onEnterPresenterView,
|
|
32978
|
+
manipulation,
|
|
32979
|
+
handleOpenSlideSize
|
|
32980
|
+
]
|
|
32704
32981
|
);
|
|
32705
32982
|
const handleQuickAccessCommand = useCallback(
|
|
32706
32983
|
(id) => {
|
|
@@ -32893,6 +33170,7 @@ function ViewerToolbarSection(props) {
|
|
|
32893
33170
|
onToggleVersionHistory: () => propertyHandlers.setIsVersionHistoryOpen((p) => !p),
|
|
32894
33171
|
onOpenPasswordProtection: () => dialogs.setIsPasswordDialogOpen(true),
|
|
32895
33172
|
onOpenDocumentProperties: () => dialogs.setIsDocPropsDialogOpen(true),
|
|
33173
|
+
onOpenSlideSize: handleOpenSlideSize,
|
|
32896
33174
|
onOpenFontEmbedding: () => dialogs.setIsFontEmbeddingOpen(true),
|
|
32897
33175
|
onOpenDigitalSignatures: () => dialogs.setIsDigitalSigDialogOpen(true),
|
|
32898
33176
|
onEnterPresenterView,
|
|
@@ -33571,6 +33849,7 @@ function ViewerPresentationLayer(props) {
|
|
|
33571
33849
|
canvasSize,
|
|
33572
33850
|
templateElements,
|
|
33573
33851
|
presentation,
|
|
33852
|
+
activeCustomShow,
|
|
33574
33853
|
onExitPresentation,
|
|
33575
33854
|
isMobile,
|
|
33576
33855
|
onUpdateNotes
|
|
@@ -33595,6 +33874,7 @@ function ViewerPresentationLayer(props) {
|
|
|
33595
33874
|
currentSlideIndex: presentation.presentationSlideIndex,
|
|
33596
33875
|
canvasSize,
|
|
33597
33876
|
templateElements,
|
|
33877
|
+
activeCustomShow,
|
|
33598
33878
|
presentationStartTime: presentation.presentationStartTime,
|
|
33599
33879
|
onMovePresentationSlide: presentation.movePresentationSlide,
|
|
33600
33880
|
onExit: onExitPresentation,
|
|
@@ -33753,7 +34033,7 @@ function PresentationStage({
|
|
|
33753
34033
|
showResizeHandles: false,
|
|
33754
34034
|
renderInk: false,
|
|
33755
34035
|
renderGroups: true,
|
|
33756
|
-
|
|
34036
|
+
adjustmentHandles: [],
|
|
33757
34037
|
onResizePointerDown: noop2,
|
|
33758
34038
|
onAdjustmentPointerDown: noop2,
|
|
33759
34039
|
onInlineEditChange: noop2,
|
|
@@ -33790,7 +34070,7 @@ function PresentationStage({
|
|
|
33790
34070
|
showResizeHandles: false,
|
|
33791
34071
|
renderInk: true,
|
|
33792
34072
|
renderGroups: true,
|
|
33793
|
-
|
|
34073
|
+
adjustmentHandles: [],
|
|
33794
34074
|
onResizePointerDown: noop2,
|
|
33795
34075
|
onAdjustmentPointerDown: noop2,
|
|
33796
34076
|
onInlineEditChange: noop2,
|
|
@@ -34356,7 +34636,7 @@ ${url}`)) {
|
|
|
34356
34636
|
var AiChatPanel = lazy(async () => {
|
|
34357
34637
|
const [{ useChat }, { default: Panel }] = await Promise.all([
|
|
34358
34638
|
import('@ai-sdk/react'),
|
|
34359
|
-
import('./AiChatPanel-
|
|
34639
|
+
import('./AiChatPanel-SSSBERWJ.mjs')
|
|
34360
34640
|
]);
|
|
34361
34641
|
function BoundAiChatPanel(props) {
|
|
34362
34642
|
return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
|
|
@@ -35261,6 +35541,11 @@ function ViewerSidePanels(props) {
|
|
|
35261
35541
|
aiBridge,
|
|
35262
35542
|
aiPanel
|
|
35263
35543
|
} = props;
|
|
35544
|
+
const handleSetSlideSize = (size) => {
|
|
35545
|
+
s.setSlideSizeEmu(size);
|
|
35546
|
+
s.setCanvasSize(slideSizeToCanvasPx(size));
|
|
35547
|
+
history.markDirty();
|
|
35548
|
+
};
|
|
35264
35549
|
const effectiveSlide = mode === "master" ? masterPseudoSlide : activeSlide;
|
|
35265
35550
|
const currentBuiltInTheme = BUILT_IN_THEMES.find(
|
|
35266
35551
|
(candidate) => themeColorSchemesEqual(s.theme?.colorScheme, candidate.colorScheme)
|
|
@@ -35289,6 +35574,8 @@ function ViewerSidePanels(props) {
|
|
|
35289
35574
|
onUpdateElement: ops.updateSelectedElement,
|
|
35290
35575
|
onApplySelection: ops.applySelection,
|
|
35291
35576
|
onSetCanvasSize: s.setCanvasSize,
|
|
35577
|
+
slideSizeEmu: s.slideSizeEmu,
|
|
35578
|
+
onSetSlideSize: handleSetSlideSize,
|
|
35292
35579
|
onMoveLayer: manipulation.handleMoveLayer,
|
|
35293
35580
|
onMoveLayerToEdge: manipulation.handleMoveLayerToEdge,
|
|
35294
35581
|
onDeleteElement: manipulation.handleDelete,
|
|
@@ -35480,6 +35767,7 @@ function ViewerMainContent(props) {
|
|
|
35480
35767
|
onDeleteSection: sectionOps.deleteSection,
|
|
35481
35768
|
onMoveSectionUp: sectionOps.moveSectionUp,
|
|
35482
35769
|
onMoveSectionDown: sectionOps.moveSectionDown,
|
|
35770
|
+
onToggleSectionCollapse: sectionOps.toggleSectionCollapse,
|
|
35483
35771
|
rehearsalTimings: Object.keys(presentation.recordedTimings).length > 0 ? presentation.recordedTimings : void 0,
|
|
35484
35772
|
panelWidth: leftPanelWidth,
|
|
35485
35773
|
fieldContext: thumbnailFieldContext,
|
|
@@ -35519,6 +35807,22 @@ function ViewerMainContent(props) {
|
|
|
35519
35807
|
(master) => master ? { ...master, backgroundColor } : master
|
|
35520
35808
|
);
|
|
35521
35809
|
state.setIsDirty(true);
|
|
35810
|
+
},
|
|
35811
|
+
canEdit,
|
|
35812
|
+
onSlidesBackgroundChange: (backgroundColor) => {
|
|
35813
|
+
const write = setMasterViewBackgroundColor(
|
|
35814
|
+
{ slideMasters: state.slideMasters },
|
|
35815
|
+
{
|
|
35816
|
+
tab: "slides",
|
|
35817
|
+
masterIndex: state.activeMasterIndex,
|
|
35818
|
+
layoutIndex: state.activeLayoutIndex
|
|
35819
|
+
},
|
|
35820
|
+
backgroundColor
|
|
35821
|
+
);
|
|
35822
|
+
if (write?.slideMasters) {
|
|
35823
|
+
state.setSlideMasters(write.slideMasters);
|
|
35824
|
+
state.setIsDirty(true);
|
|
35825
|
+
}
|
|
35522
35826
|
}
|
|
35523
35827
|
}
|
|
35524
35828
|
),
|
|
@@ -35886,6 +36190,7 @@ function MobileChromeOverlay(props) {
|
|
|
35886
36190
|
onDeleteSection: editorOps.sectionOps.deleteSection,
|
|
35887
36191
|
onMoveSectionUp: editorOps.sectionOps.moveSectionUp,
|
|
35888
36192
|
onMoveSectionDown: editorOps.sectionOps.moveSectionDown,
|
|
36193
|
+
onToggleSectionCollapse: editorOps.sectionOps.toggleSectionCollapse,
|
|
35889
36194
|
rehearsalTimings: Object.keys(presentation.recordedTimings).length > 0 ? presentation.recordedTimings : void 0
|
|
35890
36195
|
}
|
|
35891
36196
|
),
|
|
@@ -37544,6 +37849,7 @@ var PowerPointViewer = forwardRef(
|
|
|
37544
37849
|
activeMaster: state.activeMaster,
|
|
37545
37850
|
presentationGridSpacing: state.presentationProperties.gridSpacing
|
|
37546
37851
|
});
|
|
37852
|
+
const activeCustomShow = state.customShows.find((show) => show.id === state.activeCustomShowId) ?? null;
|
|
37547
37853
|
const hasActivePointerInteraction = useCallback(
|
|
37548
37854
|
() => Boolean(
|
|
37549
37855
|
state.dragStateRef.current || state.resizeStateRef.current || state.marqueeStateRef.current || state.shapeAdjustmentDragStateRef.current || state.isDrawingRef.current
|
|
@@ -37602,7 +37908,13 @@ var PowerPointViewer = forwardRef(
|
|
|
37602
37908
|
setMode: state.setMode,
|
|
37603
37909
|
setActiveSlideIndex: state.setActiveSlideIndex,
|
|
37604
37910
|
setSlides: state.setSlides,
|
|
37605
|
-
history
|
|
37911
|
+
history,
|
|
37912
|
+
// PowerPoint's bare `J` during a show toggles live captions. It resolves
|
|
37913
|
+
// in the shared slide-show keymap; this is the state it has to reach.
|
|
37914
|
+
onToggleSubtitles: () => state.setPresentationProperties((prev) => ({
|
|
37915
|
+
...prev,
|
|
37916
|
+
showSubtitles: !prev.showSubtitles
|
|
37917
|
+
}))
|
|
37606
37918
|
});
|
|
37607
37919
|
useTouchGestures({
|
|
37608
37920
|
targetRef: zoom.canvasViewportRef,
|
|
@@ -38087,6 +38399,7 @@ var PowerPointViewer = forwardRef(
|
|
|
38087
38399
|
canvasSize,
|
|
38088
38400
|
templateElements: state.templateElements,
|
|
38089
38401
|
presentation,
|
|
38402
|
+
activeCustomShow,
|
|
38090
38403
|
onExitPresentation: () => handleSetMode("edit"),
|
|
38091
38404
|
onUpdateNotes: propertyHandlers.handleUpdateNotes,
|
|
38092
38405
|
isMobile
|