pptx-react-viewer 2.10.0 → 2.11.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/dist/{AiChatPanel-35CHYS5N.mjs → AiChatPanel-EX2TBRJM.mjs} +4 -4
- package/dist/AiChatPanel-EX2TBRJM.mjs.br +0 -0
- package/dist/AiChatPanel-EX2TBRJM.mjs.gz +0 -0
- package/dist/{AiChatPanel-KTMWRUD5.js → AiChatPanel-PJPSDMN4.js} +23 -23
- package/dist/AiChatPanel-PJPSDMN4.js.br +0 -0
- package/dist/AiChatPanel-PJPSDMN4.js.gz +0 -0
- package/dist/{Model3DScene-2VMN3B65.mjs → Model3DScene-TTQFV7OS.mjs} +1 -1
- package/dist/Model3DScene-TTQFV7OS.mjs.br +0 -0
- package/dist/Model3DScene-TTQFV7OS.mjs.gz +0 -0
- package/dist/{Model3DScene-TMNUKCL6.js → Model3DScene-UCBPTEAY.js} +2 -2
- package/dist/Model3DScene-UCBPTEAY.js.br +0 -0
- package/dist/Model3DScene-UCBPTEAY.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-GKRDDN2U.mjs → SurfaceChart3DScene-5SZCRHZI.mjs} +1 -1
- package/dist/{SurfaceChart3DScene-GKRDDN2U.mjs.br → SurfaceChart3DScene-5SZCRHZI.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-5SZCRHZI.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-KPNP3QD5.js → SurfaceChart3DScene-ADKCYYOQ.js} +2 -2
- package/dist/SurfaceChart3DScene-ADKCYYOQ.js.br +0 -0
- package/dist/SurfaceChart3DScene-ADKCYYOQ.js.gz +0 -0
- package/dist/{chunk-A7HLINZU.js → chunk-4J7SPY64.js} +334 -324
- package/dist/chunk-4J7SPY64.js.br +0 -0
- package/dist/chunk-4J7SPY64.js.gz +0 -0
- package/dist/{chunk-SL3XPERE.mjs → chunk-53NXKDMZ.mjs} +47 -0
- package/dist/chunk-53NXKDMZ.mjs.br +0 -0
- package/dist/chunk-53NXKDMZ.mjs.gz +0 -0
- package/dist/{chunk-TJ55KUWH.mjs → chunk-C2UWTH42.mjs} +859 -112
- package/dist/chunk-C2UWTH42.mjs.br +0 -0
- package/dist/chunk-C2UWTH42.mjs.gz +0 -0
- package/dist/{chunk-JWMXOYSX.js → chunk-E367QIKR.js} +2162 -1736
- package/dist/chunk-E367QIKR.js.br +0 -0
- package/dist/chunk-E367QIKR.js.gz +0 -0
- package/dist/{chunk-OHPF2HTP.mjs → chunk-HK2UERUX.mjs} +13 -3
- package/dist/chunk-HK2UERUX.mjs.br +0 -0
- package/dist/chunk-HK2UERUX.mjs.gz +0 -0
- package/dist/{chunk-H74UXL4Q.js → chunk-HMQVOPQH.js} +880 -111
- package/dist/chunk-HMQVOPQH.js.br +0 -0
- package/dist/chunk-HMQVOPQH.js.gz +0 -0
- package/dist/{chunk-LCG7WBAG.mjs → chunk-L2CM5EUD.mjs} +491 -65
- package/dist/chunk-L2CM5EUD.mjs.br +0 -0
- package/dist/chunk-L2CM5EUD.mjs.gz +0 -0
- package/dist/{chunk-IJVDNQLG.js → chunk-MM5RMRSP.js} +275 -249
- package/dist/chunk-MM5RMRSP.js.br +0 -0
- package/dist/chunk-MM5RMRSP.js.gz +0 -0
- package/dist/{chunk-MMK4K3QI.js → chunk-N6IHR6PS.js} +47 -0
- package/dist/chunk-N6IHR6PS.js.br +0 -0
- package/dist/chunk-N6IHR6PS.js.gz +0 -0
- package/dist/{chunk-FY2AFXKP.mjs → chunk-RJEY2KZH.mjs} +29 -4
- package/dist/chunk-RJEY2KZH.mjs.br +0 -0
- package/dist/chunk-RJEY2KZH.mjs.gz +0 -0
- package/dist/{chunk-LXTKPSIG.mjs → chunk-UZVRM6LD.mjs} +1 -1
- package/dist/chunk-UZVRM6LD.mjs.br +0 -0
- package/dist/{chunk-LXTKPSIG.mjs.gz → chunk-UZVRM6LD.mjs.gz} +0 -0
- package/dist/{chunk-SPJR6MPI.js → chunk-VNP627O5.js} +3 -3
- package/dist/chunk-VNP627O5.js.br +0 -0
- package/dist/chunk-VNP627O5.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 +24 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -36
- 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 +26 -2
- 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/{useViewerBuildingBlocks-CpUwhBD5.d.ts → useViewerBuildingBlocks-Rqxm0pRS.d.ts} +17 -5
- package/dist/useViewerBuildingBlocks-Rqxm0pRS.d.ts.map +1 -0
- package/dist/viewer/index.js +22 -22
- 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 +1 -1
- package/dist/AiChatPanel-35CHYS5N.mjs.br +0 -0
- package/dist/AiChatPanel-35CHYS5N.mjs.gz +0 -0
- package/dist/AiChatPanel-KTMWRUD5.js.br +0 -0
- package/dist/AiChatPanel-KTMWRUD5.js.gz +0 -0
- package/dist/Model3DScene-2VMN3B65.mjs.br +0 -0
- package/dist/Model3DScene-2VMN3B65.mjs.gz +0 -0
- package/dist/Model3DScene-TMNUKCL6.js.br +0 -0
- package/dist/Model3DScene-TMNUKCL6.js.gz +0 -0
- package/dist/SurfaceChart3DScene-GKRDDN2U.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-KPNP3QD5.js.br +0 -0
- package/dist/SurfaceChart3DScene-KPNP3QD5.js.gz +0 -0
- package/dist/chunk-A7HLINZU.js.br +0 -0
- package/dist/chunk-A7HLINZU.js.gz +0 -0
- package/dist/chunk-FY2AFXKP.mjs.br +0 -0
- package/dist/chunk-FY2AFXKP.mjs.gz +0 -0
- package/dist/chunk-H74UXL4Q.js.br +0 -0
- package/dist/chunk-H74UXL4Q.js.gz +0 -0
- package/dist/chunk-IJVDNQLG.js.br +0 -0
- package/dist/chunk-IJVDNQLG.js.gz +0 -0
- package/dist/chunk-JWMXOYSX.js.br +0 -0
- package/dist/chunk-JWMXOYSX.js.gz +0 -0
- package/dist/chunk-LCG7WBAG.mjs.br +0 -0
- package/dist/chunk-LCG7WBAG.mjs.gz +0 -0
- package/dist/chunk-LXTKPSIG.mjs.br +0 -0
- package/dist/chunk-MMK4K3QI.js.br +0 -0
- package/dist/chunk-MMK4K3QI.js.gz +0 -0
- package/dist/chunk-OHPF2HTP.mjs.br +0 -0
- package/dist/chunk-OHPF2HTP.mjs.gz +0 -0
- package/dist/chunk-SL3XPERE.mjs.br +0 -0
- package/dist/chunk-SL3XPERE.mjs.gz +0 -0
- package/dist/chunk-SPJR6MPI.js.br +0 -0
- package/dist/chunk-SPJR6MPI.js.gz +0 -0
- package/dist/chunk-TJ55KUWH.mjs.br +0 -0
- package/dist/chunk-TJ55KUWH.mjs.gz +0 -0
- package/dist/useViewerBuildingBlocks-CpUwhBD5.d.ts.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-
|
|
2
|
-
import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-
|
|
3
|
-
import { SHAPE_PRESETS, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, MIN_ELEMENT_SIZE, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, ANIMATION_PRESET_OPTIONS, resolvePalette, resolveStyle, layoutToCategory, wrapChrome, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, getCropShapeClipPath, SLIDE_NAV_THUMBNAIL_WIDTH, styleShadow, styleStroke, colour, fitFontSize, smartArtNodeGroupProps, chevronPoints, SmartArtNodeText, truncate, renderStepDownProcess, renderAlternatingFlow, renderDescendingProcess, renderPictureAccentList, renderVerticalBlockList, renderGroupedList, renderPyramidList, renderHorizontalPictureList, renderAccentProcess, renderVerticalChevronList, isImageTiled, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, TOOLBAR_SECTIONS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, buildTree, treeWidth, treeDepth, nodeOpacity, gearPath, resolveSmartArtDataPalette, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-
|
|
4
|
-
import { LOCALE_CATALOG, translationsEn } from './chunk-
|
|
5
|
-
import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, ACTION_BUTTON_PRESETS, isEditableTextElement, isElementRendered, isElementActionable, getAriaRole, getAriaLabel, getAriaRoleDescription, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, RULER_THICKNESS, RULER_FONT_SIZE, revealedSmartArtNodeCount, buildSmartArtA11y, buildCssGradientFromShapeStyle, resolveGroupChildFill, getGroupChildParentFill, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, svgGradientFillRef, isInkElement, getElementLabel, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, themeToCssVars, DEFAULT_INSERT_CHART_TYPE, hasCopyableFormat, createBackstagePresentation, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, resolveDrawingShapeNodeId, buildSummaryZoomView, getImageColorWashStyle, isImageLikeElement, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, buildContextMenuEntries, themeColorSchemesEqual, STATUS_BAR_CLASSES, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, activateModalFocus, buildCollaborationShareUrl, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, mobileElapsedSince, isFirstSlide, isLastSlide, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, formatElapsed, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, computeSmartArtLayout, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, SLIDE_VIRTUALIZATION_THRESHOLD, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, presentationInkPath, getShapeAdjustmentHandleDescriptor, PRESET_THEMES, isUrlSafe, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, QUICK_ACCESS_COMMAND_CATALOG, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, groupIntoParagraphs, substituteFieldText, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, getConnectionSites, generateTicks, rulerDragToGuidePosition, getCommentMarkerPosition, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_LABELS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, mergeSlideTransition, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, chartDataChangeType, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, formatCommentTimestamp, DIRECTIONAL_PRESETS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, addSmartArtNodeAsChild, removeSmartArtNode, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-
|
|
6
|
-
import
|
|
1
|
+
import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-UZVRM6LD.mjs';
|
|
2
|
+
import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-HK2UERUX.mjs';
|
|
3
|
+
import { SHAPE_PRESETS, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, MIN_ELEMENT_SIZE, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, ANIMATION_PRESET_OPTIONS, resolvePalette, resolveStyle, layoutToCategory, wrapChrome, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, getCropShapeClipPath, SLIDE_NAV_THUMBNAIL_WIDTH, styleShadow, styleStroke, colour, fitFontSize, smartArtNodeGroupProps, chevronPoints, SmartArtNodeText, truncate, renderStepDownProcess, renderAlternatingFlow, renderDescendingProcess, renderPictureAccentList, renderVerticalBlockList, renderGroupedList, renderPyramidList, renderHorizontalPictureList, renderAccentProcess, renderVerticalChevronList, isImageTiled, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, TOOLBAR_SECTIONS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, buildTree, treeWidth, treeDepth, nodeOpacity, gearPath, resolveSmartArtDataPalette, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, HYPERLINK_COLOR, GRID_SIZE, CONNECTOR_ARROW_OPTIONS, ARROW_SIZE_OPTIONS, startMotionPathPreview, startPreviewAnimation, stopPreviewAnimation, THEME_COLOR_SWATCHES, STROKE_DASH_OPTIONS } from './chunk-RJEY2KZH.mjs';
|
|
4
|
+
import { LOCALE_CATALOG, translationsEn } from './chunk-53NXKDMZ.mjs';
|
|
5
|
+
import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, ACTION_BUTTON_PRESETS, isEditableTextElement, isElementRendered, isElementActionable, getAriaRole, getAriaLabel, getAriaRoleDescription, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, SWITCHABLE_LAYOUT_TYPES, DEFAULT_VIEWER_OPTIONS, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, RULER_THICKNESS, RULER_FONT_SIZE, revealedSmartArtNodeCount, buildSmartArtA11y, buildCssGradientFromShapeStyle, resolveGroupChildFill, getGroupChildParentFill, getComputedEffectStyle, getSoftEdgeSvgFilter, buildStrokeOutline, svgGradientFillRef, isInkElement, getElementLabel, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, themeToCssVars, applyMotionPathPreset, DEFAULT_INSERT_CHART_TYPE, hasCopyableFormat, createBackstagePresentation, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, resolveDrawingShapeNodeId, buildSummaryZoomView, getImageColorWashStyle, isImageLikeElement, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, filterRenderedElements, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, buildContextMenuEntries, themeColorSchemesEqual, STATUS_BAR_CLASSES, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, activateModalFocus, buildCollaborationShareUrl, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, isFirstSlide, isLastSlide, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, formatElapsed, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, computeSmartArtLayout, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_VIRTUALIZATION_THRESHOLD, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, presentationInkPath, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptor, PRESET_THEMES, isUrlSafe, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, QUICK_ACCESS_COMMAND_CATALOG, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, groupIntoParagraphs, substituteFieldText, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, getConnectionSites, generateTicks, rulerDragToGuidePosition, getCommentMarkerPosition, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_LABELS, COMMON_FONTS, buildSmartArtPresetData, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, mergeSlideTransition, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, chartDataChangeType, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, sanitizeGradientStops, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, flattenTagCollections, formatCommentTimestamp, clearMotionPath, DIRECTIONAL_PRESETS, motionPathPresetIdForPath, computeMergeCellRight, computeMergeCellDown, computeSplitCell, addSmartArtNodeAsChild, removeSmartArtNode, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, toSlideIndex, elementActionToPptxAction, canCommitActionType, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, SHAPE_QUICK_STYLES, quickStyleSwatchCss, getPatternSvg, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-C2UWTH42.mjs';
|
|
6
|
+
import React34, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, useContext, Suspense, useLayoutEffect, Fragment as Fragment$1, useDeferredValue } from 'react';
|
|
7
7
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import { useTranslation } from 'react-i18next';
|
|
9
9
|
import { LuRotateCw, LuMessageSquare, LuEyeOff, LuSettings, LuX, LuCalendarDays, LuHash, LuText, LuCast, LuSave, LuUndo, LuRedo, LuSearch, LuShieldCheck, LuPlus, LuPanelLeftClose, LuStickyNote, LuMonitor, LuColumns2, LuPresentation, LuMinus, LuLayers, LuSettings2, LuClock, LuDownload, LuTrash2, LuCheck, LuLock, LuEye, LuFileText, LuType, LuLoader, LuShieldAlert, LuSignature, LuInfo, LuTriangleAlert, LuPrinter, LuPenTool, LuBug, LuChevronUp, LuChevronDown, 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, LuUpload, LuBold, LuItalic, LuUnderline, LuStrikethrough, LuLink, LuGrid2X2, LuCopyPlus, LuCirclePlay, LuCirclePause, LuScan, LuMonitorOff, LuClipboardCopy, LuWand, LuTextCursorInput, LuFile, LuEllipsis, LuUserRound, LuFilePlus2, LuHouse, LuPackage, LuBox, LuFileImage, LuUser, LuHardDrive, LuLogIn, LuFolderPlus, LuAlignLeft, LuAlignCenter, LuAlignRight, LuAlignJustify, LuColumns3, LuSpline, LuAlignHorizontalSpaceAround, LuAlignVerticalSpaceAround, LuGroup, LuUngroup, LuMove, LuRadio, LuLockOpen, LuArrowDown, LuArrowUp, LuArrowRight, LuReply, LuBookmark } from 'react-icons/lu';
|
|
@@ -523,6 +523,40 @@ function AnimationPresetGallery({
|
|
|
523
523
|
}
|
|
524
524
|
);
|
|
525
525
|
}
|
|
526
|
+
function MotionPathGallery({
|
|
527
|
+
disabled,
|
|
528
|
+
onApplyMotionPath
|
|
529
|
+
}) {
|
|
530
|
+
const { t } = useTranslation();
|
|
531
|
+
return /* @__PURE__ */ jsx(
|
|
532
|
+
"div",
|
|
533
|
+
{
|
|
534
|
+
className: "flex max-h-[62px] items-start gap-2 overflow-y-auto rounded-sm border border-border/60 bg-muted/30 px-1.5 py-1",
|
|
535
|
+
"aria-label": t("pptx.animations.motionPathGalleryAria"),
|
|
536
|
+
children: MOTION_PATH_FAMILIES.map((family) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5", children: [
|
|
537
|
+
/* @__PURE__ */ jsx("span", { className: "text-[9px] font-semibold leading-3 text-muted-foreground", children: t(motionPathFamilyLabelKey(family)) }),
|
|
538
|
+
/* @__PURE__ */ jsx("div", { className: "flex max-w-[150px] flex-wrap gap-0.5", children: motionPathPresetsByFamily(family).map((preset) => {
|
|
539
|
+
const label = t(motionPathPresetLabelKey(preset.id));
|
|
540
|
+
return /* @__PURE__ */ jsxs(
|
|
541
|
+
"button",
|
|
542
|
+
{
|
|
543
|
+
type: "button",
|
|
544
|
+
disabled,
|
|
545
|
+
onClick: () => onApplyMotionPath?.(preset.id),
|
|
546
|
+
title: label,
|
|
547
|
+
className: "inline-flex items-center gap-0.5 rounded-sm px-1 py-0.5 text-[9px] leading-3 text-foreground transition-colors hover:bg-accent disabled:opacity-35",
|
|
548
|
+
children: [
|
|
549
|
+
/* @__PURE__ */ jsx(LuMoveRight, { className: "h-2.5 w-2.5 text-sky-500", "aria-hidden": "true" }),
|
|
550
|
+
/* @__PURE__ */ jsx("span", { className: "whitespace-nowrap", children: label })
|
|
551
|
+
]
|
|
552
|
+
},
|
|
553
|
+
preset.id
|
|
554
|
+
);
|
|
555
|
+
}) })
|
|
556
|
+
] }, family))
|
|
557
|
+
}
|
|
558
|
+
);
|
|
559
|
+
}
|
|
526
560
|
function RibbonGroup({
|
|
527
561
|
label,
|
|
528
562
|
children,
|
|
@@ -648,6 +682,13 @@ function AnimationsSection(p) {
|
|
|
648
682
|
children: /* @__PURE__ */ jsx(AnimationPresetGallery, { disabled, onAddAnimation: p.onAddAnimation })
|
|
649
683
|
}
|
|
650
684
|
),
|
|
685
|
+
/* @__PURE__ */ jsx(RibbonGroup, { label: t("pptx.animation.motionPath"), className: "max-w-[420px] overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
686
|
+
MotionPathGallery,
|
|
687
|
+
{
|
|
688
|
+
disabled,
|
|
689
|
+
onApplyMotionPath: (presetId) => p.onAddAnimation?.(presetId, "motionPath")
|
|
690
|
+
}
|
|
691
|
+
) }),
|
|
651
692
|
/* @__PURE__ */ jsxs(RibbonGroup, { label: t("pptx.animations.advanced", { defaultValue: "Advanced Animation" }), children: [
|
|
652
693
|
/* @__PURE__ */ jsx(
|
|
653
694
|
RibbonCommand,
|
|
@@ -663,7 +704,7 @@ function AnimationsSection(p) {
|
|
|
663
704
|
{
|
|
664
705
|
label: t("pptx.animations.pathAnimation", { defaultValue: "Path Animation" }),
|
|
665
706
|
icon: /* @__PURE__ */ jsx(LuMoveRight, {}),
|
|
666
|
-
onClick: () => p.onAddAnimation?.(
|
|
707
|
+
onClick: () => p.onAddAnimation?.(DEFAULT_MOTION_PATH_PRESET_ID, "motionPath"),
|
|
667
708
|
disabled
|
|
668
709
|
}
|
|
669
710
|
),
|
|
@@ -1203,11 +1244,11 @@ var TRANSITION_PRESETS = [
|
|
|
1203
1244
|
];
|
|
1204
1245
|
function TransitionsSection(p) {
|
|
1205
1246
|
const { t } = useTranslation();
|
|
1206
|
-
const [selected, setSelected] =
|
|
1207
|
-
const [duration, setDuration] =
|
|
1208
|
-
const [advanceOnClick, setAdvanceOnClick] =
|
|
1209
|
-
const [advanceAfter, setAdvanceAfter] =
|
|
1210
|
-
const [advanceAfterSeconds, setAdvanceAfterSeconds] =
|
|
1247
|
+
const [selected, setSelected] = React34.useState("none");
|
|
1248
|
+
const [duration, setDuration] = React34.useState("00.50");
|
|
1249
|
+
const [advanceOnClick, setAdvanceOnClick] = React34.useState(true);
|
|
1250
|
+
const [advanceAfter, setAdvanceAfter] = React34.useState(false);
|
|
1251
|
+
const [advanceAfterSeconds, setAdvanceAfterSeconds] = React34.useState("00:00.00");
|
|
1211
1252
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1212
1253
|
/* @__PURE__ */ jsxs("button", { type: "button", className: pill, title: t("pptx.ribbon.previewTransition"), children: [
|
|
1213
1254
|
/* @__PURE__ */ jsx(LuPlay, { className: ics }),
|
|
@@ -1409,7 +1450,7 @@ function AccountPage() {
|
|
|
1409
1450
|
return void 0;
|
|
1410
1451
|
});
|
|
1411
1452
|
};
|
|
1412
|
-
const version = "2.
|
|
1453
|
+
const version = "2.10.0" ;
|
|
1413
1454
|
return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
1414
1455
|
/* @__PURE__ */ jsxs("section", { className: cardClass, children: [
|
|
1415
1456
|
/* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -3891,6 +3932,15 @@ function ViewSection(p) {
|
|
|
3891
3932
|
title: t("pptx.view.slideSorterTooltip")
|
|
3892
3933
|
}
|
|
3893
3934
|
),
|
|
3935
|
+
/* @__PURE__ */ jsx(
|
|
3936
|
+
RibbonCommand,
|
|
3937
|
+
{
|
|
3938
|
+
label: t("pptx.view.outlineView"),
|
|
3939
|
+
icon: /* @__PURE__ */ jsx(LuIndentIncrease, {}),
|
|
3940
|
+
onClick: p.onOpenOutlineView,
|
|
3941
|
+
title: t("pptx.view.outlineViewTooltip")
|
|
3942
|
+
}
|
|
3943
|
+
),
|
|
3894
3944
|
/* @__PURE__ */ jsx(
|
|
3895
3945
|
RibbonCommand,
|
|
3896
3946
|
{
|
|
@@ -5627,6 +5677,7 @@ function Toolbar(p) {
|
|
|
5627
5677
|
onToggleEyedropper: p.onToggleEyedropper,
|
|
5628
5678
|
onToggleSlideSorter: p.onToggleSlideSorter,
|
|
5629
5679
|
onOpenReadingView: p.onOpenReadingView,
|
|
5680
|
+
onOpenOutlineView: p.onOpenOutlineView,
|
|
5630
5681
|
onZoomToFit: p.onZoomToFit
|
|
5631
5682
|
}
|
|
5632
5683
|
),
|
|
@@ -5930,6 +5981,127 @@ function GridOverlay({ canvasSize, gridSpacingPx = GRID_SIZE, visible }) {
|
|
|
5930
5981
|
}
|
|
5931
5982
|
);
|
|
5932
5983
|
}
|
|
5984
|
+
function MotionPathOverlay({
|
|
5985
|
+
element,
|
|
5986
|
+
path,
|
|
5987
|
+
canvasSize,
|
|
5988
|
+
scale,
|
|
5989
|
+
canEdit,
|
|
5990
|
+
onChangePath
|
|
5991
|
+
}) {
|
|
5992
|
+
const { t } = useTranslation();
|
|
5993
|
+
const dragRef = useRef(null);
|
|
5994
|
+
const frame = {
|
|
5995
|
+
originX: element.x + element.width / 2,
|
|
5996
|
+
originY: element.y + element.height / 2,
|
|
5997
|
+
slideWidth: canvasSize.width,
|
|
5998
|
+
slideHeight: canvasSize.height
|
|
5999
|
+
};
|
|
6000
|
+
const d = motionPathToSvgD(path, frame);
|
|
6001
|
+
const end = motionPathEndPixel(path, frame);
|
|
6002
|
+
const editable = canEdit && Boolean(onChangePath) && isEditableMotionPath(path);
|
|
6003
|
+
const handlePointerDown = useCallback(
|
|
6004
|
+
(event) => {
|
|
6005
|
+
if (!editable) {
|
|
6006
|
+
return;
|
|
6007
|
+
}
|
|
6008
|
+
event.stopPropagation();
|
|
6009
|
+
event.preventDefault();
|
|
6010
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
6011
|
+
dragRef.current = {
|
|
6012
|
+
pointerId: event.pointerId,
|
|
6013
|
+
startX: event.clientX,
|
|
6014
|
+
startY: event.clientY
|
|
6015
|
+
};
|
|
6016
|
+
},
|
|
6017
|
+
[editable]
|
|
6018
|
+
);
|
|
6019
|
+
const handlePointerMove = useCallback(
|
|
6020
|
+
(event) => {
|
|
6021
|
+
const drag = dragRef.current;
|
|
6022
|
+
if (!drag || drag.pointerId !== event.pointerId || !onChangePath) {
|
|
6023
|
+
return;
|
|
6024
|
+
}
|
|
6025
|
+
event.stopPropagation();
|
|
6026
|
+
const dxPx = (event.clientX - drag.startX) / (scale || 1);
|
|
6027
|
+
const dyPx = (event.clientY - drag.startY) / (scale || 1);
|
|
6028
|
+
const nextX = (end.x + dxPx - frame.originX) / frame.slideWidth;
|
|
6029
|
+
const nextY = (end.y + dyPx - frame.originY) / frame.slideHeight;
|
|
6030
|
+
const next = setMotionPathEnd(path, nextX, nextY);
|
|
6031
|
+
if (next !== path) {
|
|
6032
|
+
dragRef.current = {
|
|
6033
|
+
pointerId: event.pointerId,
|
|
6034
|
+
startX: event.clientX,
|
|
6035
|
+
startY: event.clientY
|
|
6036
|
+
};
|
|
6037
|
+
onChangePath(next);
|
|
6038
|
+
}
|
|
6039
|
+
},
|
|
6040
|
+
[
|
|
6041
|
+
end.x,
|
|
6042
|
+
end.y,
|
|
6043
|
+
frame.originX,
|
|
6044
|
+
frame.originY,
|
|
6045
|
+
frame.slideWidth,
|
|
6046
|
+
frame.slideHeight,
|
|
6047
|
+
onChangePath,
|
|
6048
|
+
path,
|
|
6049
|
+
scale
|
|
6050
|
+
]
|
|
6051
|
+
);
|
|
6052
|
+
const handlePointerUp = useCallback((event) => {
|
|
6053
|
+
if (dragRef.current?.pointerId === event.pointerId) {
|
|
6054
|
+
event.currentTarget.releasePointerCapture(event.pointerId);
|
|
6055
|
+
dragRef.current = null;
|
|
6056
|
+
}
|
|
6057
|
+
}, []);
|
|
6058
|
+
if (!d) {
|
|
6059
|
+
return null;
|
|
6060
|
+
}
|
|
6061
|
+
return /* @__PURE__ */ jsxs(
|
|
6062
|
+
"svg",
|
|
6063
|
+
{
|
|
6064
|
+
className: "pointer-events-none absolute left-0 top-0 z-[45]",
|
|
6065
|
+
width: canvasSize.width,
|
|
6066
|
+
height: canvasSize.height,
|
|
6067
|
+
role: "img",
|
|
6068
|
+
"aria-label": t("pptx.animation.motionPath.overlay"),
|
|
6069
|
+
"data-pptx-motion-path-overlay": "true",
|
|
6070
|
+
children: [
|
|
6071
|
+
/* @__PURE__ */ jsx(
|
|
6072
|
+
"path",
|
|
6073
|
+
{
|
|
6074
|
+
d,
|
|
6075
|
+
fill: "none",
|
|
6076
|
+
stroke: "#0ea5e9",
|
|
6077
|
+
strokeWidth: 2,
|
|
6078
|
+
strokeDasharray: "6 4",
|
|
6079
|
+
vectorEffect: "non-scaling-stroke"
|
|
6080
|
+
}
|
|
6081
|
+
),
|
|
6082
|
+
/* @__PURE__ */ jsx("circle", { cx: frame.originX, cy: frame.originY, r: 5, fill: "#0ea5e9", opacity: 0.55 }),
|
|
6083
|
+
/* @__PURE__ */ jsx(
|
|
6084
|
+
"circle",
|
|
6085
|
+
{
|
|
6086
|
+
cx: end.x,
|
|
6087
|
+
cy: end.y,
|
|
6088
|
+
r: 7,
|
|
6089
|
+
fill: "#ffffff",
|
|
6090
|
+
stroke: "#0ea5e9",
|
|
6091
|
+
strokeWidth: 2,
|
|
6092
|
+
className: editable ? "pointer-events-auto cursor-move" : "",
|
|
6093
|
+
"aria-label": t("pptx.animation.motionPath.endHandle"),
|
|
6094
|
+
"data-pptx-motion-path-handle": "end",
|
|
6095
|
+
onPointerDown: handlePointerDown,
|
|
6096
|
+
onPointerMove: handlePointerMove,
|
|
6097
|
+
onPointerUp: handlePointerUp,
|
|
6098
|
+
onPointerCancel: handlePointerUp
|
|
6099
|
+
}
|
|
6100
|
+
)
|
|
6101
|
+
]
|
|
6102
|
+
}
|
|
6103
|
+
);
|
|
6104
|
+
}
|
|
5933
6105
|
function HorizontalRulerView({ ticks, widthPx, highlight }) {
|
|
5934
6106
|
return /* @__PURE__ */ jsxs(
|
|
5935
6107
|
"svg",
|
|
@@ -5993,7 +6165,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
|
|
|
5993
6165
|
}
|
|
5994
6166
|
);
|
|
5995
6167
|
}
|
|
5996
|
-
var HorizontalRuler =
|
|
6168
|
+
var HorizontalRuler = React34.memo(HorizontalRulerView);
|
|
5997
6169
|
HorizontalRuler.displayName = "HorizontalRuler";
|
|
5998
6170
|
function VerticalRulerView({ ticks, heightPx, highlight }) {
|
|
5999
6171
|
return /* @__PURE__ */ jsxs(
|
|
@@ -6065,7 +6237,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
|
|
|
6065
6237
|
}
|
|
6066
6238
|
);
|
|
6067
6239
|
}
|
|
6068
|
-
var VerticalRuler =
|
|
6240
|
+
var VerticalRuler = React34.memo(VerticalRulerView);
|
|
6069
6241
|
VerticalRuler.displayName = "VerticalRuler";
|
|
6070
6242
|
function Ruler({
|
|
6071
6243
|
canvasSize,
|
|
@@ -7017,7 +7189,7 @@ function ResizeHandles({
|
|
|
7017
7189
|
) : null
|
|
7018
7190
|
] });
|
|
7019
7191
|
}
|
|
7020
|
-
var ConnectorElementRenderer =
|
|
7192
|
+
var ConnectorElementRenderer = React34.memo(
|
|
7021
7193
|
({
|
|
7022
7194
|
el,
|
|
7023
7195
|
isSelected,
|
|
@@ -8523,10 +8695,10 @@ function InlineTextEditor({
|
|
|
8523
8695
|
function FailedToLoad() {
|
|
8524
8696
|
return null;
|
|
8525
8697
|
}
|
|
8526
|
-
var LazyModel3DScene =
|
|
8698
|
+
var LazyModel3DScene = React34.lazy(
|
|
8527
8699
|
async () => {
|
|
8528
8700
|
try {
|
|
8529
|
-
return await import('./Model3DScene-
|
|
8701
|
+
return await import('./Model3DScene-TTQFV7OS.mjs');
|
|
8530
8702
|
} catch {
|
|
8531
8703
|
return { default: FailedToLoad };
|
|
8532
8704
|
}
|
|
@@ -8609,7 +8781,7 @@ function PosterFallback({
|
|
|
8609
8781
|
}
|
|
8610
8782
|
);
|
|
8611
8783
|
}
|
|
8612
|
-
var Model3DErrorBoundary = class extends
|
|
8784
|
+
var Model3DErrorBoundary = class extends React34.Component {
|
|
8613
8785
|
constructor(props) {
|
|
8614
8786
|
super(props);
|
|
8615
8787
|
this.state = { hasError: false };
|
|
@@ -8800,10 +8972,10 @@ function SmartArtInlineNodeEditor({
|
|
|
8800
8972
|
onCancel
|
|
8801
8973
|
}) {
|
|
8802
8974
|
const { t } = useTranslation();
|
|
8803
|
-
const ref =
|
|
8804
|
-
const [value, setValue] =
|
|
8805
|
-
const settled =
|
|
8806
|
-
|
|
8975
|
+
const ref = React34.useRef(null);
|
|
8976
|
+
const [value, setValue] = React34.useState(initialText);
|
|
8977
|
+
const settled = React34.useRef(false);
|
|
8978
|
+
React34.useEffect(() => {
|
|
8807
8979
|
const el = ref.current;
|
|
8808
8980
|
if (el) {
|
|
8809
8981
|
el.focus();
|
|
@@ -8895,16 +9067,16 @@ function findNodeIdFromEvent(target) {
|
|
|
8895
9067
|
return null;
|
|
8896
9068
|
}
|
|
8897
9069
|
function useSmartArtHoverState(containerRef) {
|
|
8898
|
-
const [hoveredNodeId, setHoveredNodeId] =
|
|
8899
|
-
const [hoveredNodeRect, setHoveredNodeRect] =
|
|
8900
|
-
const hideTimeoutRef =
|
|
8901
|
-
const cancelPendingHide =
|
|
9070
|
+
const [hoveredNodeId, setHoveredNodeId] = React34.useState(null);
|
|
9071
|
+
const [hoveredNodeRect, setHoveredNodeRect] = React34.useState(null);
|
|
9072
|
+
const hideTimeoutRef = React34.useRef(null);
|
|
9073
|
+
const cancelPendingHide = React34.useCallback(() => {
|
|
8902
9074
|
if (hideTimeoutRef.current !== null) {
|
|
8903
9075
|
window.clearTimeout(hideTimeoutRef.current);
|
|
8904
9076
|
hideTimeoutRef.current = null;
|
|
8905
9077
|
}
|
|
8906
9078
|
}, []);
|
|
8907
|
-
const handleMouseMove =
|
|
9079
|
+
const handleMouseMove = React34.useCallback(
|
|
8908
9080
|
(e, ignoreRef) => {
|
|
8909
9081
|
const nodeEl = findNodeIdFromEvent(e.target);
|
|
8910
9082
|
const container = containerRef.current;
|
|
@@ -8932,12 +9104,12 @@ function useSmartArtHoverState(containerRef) {
|
|
|
8932
9104
|
},
|
|
8933
9105
|
[containerRef, cancelPendingHide]
|
|
8934
9106
|
);
|
|
8935
|
-
const clearHover =
|
|
9107
|
+
const clearHover = React34.useCallback(() => {
|
|
8936
9108
|
cancelPendingHide();
|
|
8937
9109
|
setHoveredNodeId(null);
|
|
8938
9110
|
setHoveredNodeRect(null);
|
|
8939
9111
|
}, [cancelPendingHide]);
|
|
8940
|
-
|
|
9112
|
+
React34.useEffect(() => cancelPendingHide, [cancelPendingHide]);
|
|
8941
9113
|
return { hoveredNodeId, hoveredNodeRect, handleMouseMove, clearHover };
|
|
8942
9114
|
}
|
|
8943
9115
|
var EDITOR_PADDING = 4;
|
|
@@ -8952,11 +9124,11 @@ function SmartArtEditableLayer({
|
|
|
8952
9124
|
onChangeNodeStyle,
|
|
8953
9125
|
children
|
|
8954
9126
|
}) {
|
|
8955
|
-
const containerRef =
|
|
8956
|
-
const styleBarRef =
|
|
8957
|
-
const [edit, setEdit] =
|
|
9127
|
+
const containerRef = React34.useRef(null);
|
|
9128
|
+
const styleBarRef = React34.useRef(null);
|
|
9129
|
+
const [edit, setEdit] = React34.useState(null);
|
|
8958
9130
|
const { hoveredNodeId, hoveredNodeRect, handleMouseMove, clearHover } = useSmartArtHoverState(containerRef);
|
|
8959
|
-
const openEditor =
|
|
9131
|
+
const openEditor = React34.useCallback(
|
|
8960
9132
|
(target) => {
|
|
8961
9133
|
const nodeEl = findNodeIdFromEvent(target);
|
|
8962
9134
|
const container = containerRef.current;
|
|
@@ -10496,11 +10668,11 @@ function arePropsEqual(prev, next) {
|
|
|
10496
10668
|
}
|
|
10497
10669
|
return true;
|
|
10498
10670
|
}
|
|
10499
|
-
var SmartArtRenderer =
|
|
10671
|
+
var SmartArtRenderer = React34.memo(SmartArtRendererImpl, arePropsEqual);
|
|
10500
10672
|
function FailedToLoad2() {
|
|
10501
10673
|
return null;
|
|
10502
10674
|
}
|
|
10503
|
-
var LazySmartArt3DScene =
|
|
10675
|
+
var LazySmartArt3DScene = React34.lazy(
|
|
10504
10676
|
async () => {
|
|
10505
10677
|
try {
|
|
10506
10678
|
return await import('./SmartArt3DScene-XCFVGCXE.mjs');
|
|
@@ -10509,7 +10681,7 @@ var LazySmartArt3DScene = React33.lazy(
|
|
|
10509
10681
|
}
|
|
10510
10682
|
}
|
|
10511
10683
|
);
|
|
10512
|
-
var SceneErrorBoundary = class extends
|
|
10684
|
+
var SceneErrorBoundary = class extends React34.Component {
|
|
10513
10685
|
constructor(props) {
|
|
10514
10686
|
super(props);
|
|
10515
10687
|
this.state = { hasError: false };
|
|
@@ -11268,7 +11440,7 @@ function renderBody(options) {
|
|
|
11268
11440
|
}
|
|
11269
11441
|
return renderTextElementBody(options);
|
|
11270
11442
|
}
|
|
11271
|
-
var Extrusion3DOverlay =
|
|
11443
|
+
var Extrusion3DOverlay = React34.memo(({ data }) => {
|
|
11272
11444
|
if (!data.hasExtrusion || data.panels.length === 0) {
|
|
11273
11445
|
return null;
|
|
11274
11446
|
}
|
|
@@ -11461,9 +11633,9 @@ function StaticElementRendererImpl({
|
|
|
11461
11633
|
}
|
|
11462
11634
|
);
|
|
11463
11635
|
}
|
|
11464
|
-
var StaticElementRenderer =
|
|
11636
|
+
var StaticElementRenderer = React34.memo(StaticElementRendererImpl);
|
|
11465
11637
|
StaticElementRenderer.displayName = "StaticElementRenderer";
|
|
11466
|
-
var ElementRenderer =
|
|
11638
|
+
var ElementRenderer = React34.memo(
|
|
11467
11639
|
// oxlint-disable-next-line prefer-arrow-callback -- named fn gives the memo component its displayName
|
|
11468
11640
|
function ElementRendererInner({
|
|
11469
11641
|
element: el,
|
|
@@ -11864,6 +12036,7 @@ function SlideCanvas({
|
|
|
11864
12036
|
onCreateGuideFromRuler,
|
|
11865
12037
|
connectorCreationMode = false,
|
|
11866
12038
|
onCreateConnector,
|
|
12039
|
+
onUpdateSlideAnimations,
|
|
11867
12040
|
allSlides,
|
|
11868
12041
|
onZoomClick,
|
|
11869
12042
|
sourceSlideIndex,
|
|
@@ -11927,6 +12100,18 @@ function SlideCanvas({
|
|
|
11927
12100
|
zoom,
|
|
11928
12101
|
onMoveGuide
|
|
11929
12102
|
});
|
|
12103
|
+
const selectedMotionPath = selectedElement ? motionPathFor(activeSlide?.animations ?? [], selectedElement.id) : void 0;
|
|
12104
|
+
const handleMotionPathChange = useCallback(
|
|
12105
|
+
(path) => {
|
|
12106
|
+
if (!selectedElement || !onUpdateSlideAnimations) {
|
|
12107
|
+
return;
|
|
12108
|
+
}
|
|
12109
|
+
onUpdateSlideAnimations(
|
|
12110
|
+
setMotionPath(activeSlide?.animations ?? [], selectedElement.id, path)
|
|
12111
|
+
);
|
|
12112
|
+
},
|
|
12113
|
+
[activeSlide?.animations, onUpdateSlideAnimations, selectedElement]
|
|
12114
|
+
);
|
|
11930
12115
|
const {
|
|
11931
12116
|
connectorDragState,
|
|
11932
12117
|
handleConnectionSiteDown,
|
|
@@ -11996,6 +12181,10 @@ function SlideCanvas({
|
|
|
11996
12181
|
height: canvasSize.height,
|
|
11997
12182
|
transform: `scale(${zoom.editorScale})`,
|
|
11998
12183
|
transformOrigin: "top left",
|
|
12184
|
+
// Motion-path keyframes translate by a fraction of the SLIDE, so
|
|
12185
|
+
// the stage publishes its own size for those calc() offsets.
|
|
12186
|
+
["--pptx-slide-w"]: `${canvasSize.width}px`,
|
|
12187
|
+
["--pptx-slide-h"]: `${canvasSize.height}px`,
|
|
11999
12188
|
marginTop: rulerOffset,
|
|
12000
12189
|
marginLeft: rulerOffset,
|
|
12001
12190
|
// In edit/master mode the stage must own all touch gestures so
|
|
@@ -12133,6 +12322,17 @@ function SlideCanvas({
|
|
|
12133
12322
|
onConnectorDragEnd: handleConnectorDragEnd
|
|
12134
12323
|
}
|
|
12135
12324
|
),
|
|
12325
|
+
isEditableCanvas && selectedElement && selectedMotionPath && /* @__PURE__ */ jsx(
|
|
12326
|
+
MotionPathOverlay,
|
|
12327
|
+
{
|
|
12328
|
+
element: selectedElement,
|
|
12329
|
+
path: selectedMotionPath,
|
|
12330
|
+
canvasSize,
|
|
12331
|
+
scale: zoom.editorScale,
|
|
12332
|
+
canEdit,
|
|
12333
|
+
onChangePath: handleMotionPathChange
|
|
12334
|
+
}
|
|
12335
|
+
),
|
|
12136
12336
|
isDrawing && /* @__PURE__ */ jsx(
|
|
12137
12337
|
DrawingOverlaySvg,
|
|
12138
12338
|
{
|
|
@@ -12705,7 +12905,7 @@ function arePropsEqual2(prev, next) {
|
|
|
12705
12905
|
}
|
|
12706
12906
|
return true;
|
|
12707
12907
|
}
|
|
12708
|
-
var SlideThumbnail =
|
|
12908
|
+
var SlideThumbnail = React34.memo(SlideThumbnailImpl, arePropsEqual2);
|
|
12709
12909
|
|
|
12710
12910
|
// src/viewer/components/context-menu-dispatch.ts
|
|
12711
12911
|
function tableCell(props) {
|
|
@@ -13254,7 +13454,7 @@ function LazyThumbnailInner({
|
|
|
13254
13454
|
}
|
|
13255
13455
|
) });
|
|
13256
13456
|
}
|
|
13257
|
-
var LazyThumbnail =
|
|
13457
|
+
var LazyThumbnail = React34.memo(LazyThumbnailInner);
|
|
13258
13458
|
|
|
13259
13459
|
// src/viewer/components/slides-pane/utils.ts
|
|
13260
13460
|
function formatTimingMs(ms) {
|
|
@@ -13400,7 +13600,7 @@ function SlideItemInner({
|
|
|
13400
13600
|
}
|
|
13401
13601
|
);
|
|
13402
13602
|
}
|
|
13403
|
-
var SlideItem =
|
|
13603
|
+
var SlideItem = React34.memo(SlideItemInner);
|
|
13404
13604
|
function useSlidePaneCallbacks(onMoveSlide, onRenameSection) {
|
|
13405
13605
|
const [collapsedSections, setCollapsedSections] = useState({});
|
|
13406
13606
|
const [renamingSectionId, setRenamingSectionId] = useState(null);
|
|
@@ -14669,7 +14869,7 @@ function arePropsEqual3(prev, next) {
|
|
|
14669
14869
|
}
|
|
14670
14870
|
return true;
|
|
14671
14871
|
}
|
|
14672
|
-
var SlideCard =
|
|
14872
|
+
var SlideCard = React34.memo(SlideCardImpl, arePropsEqual3);
|
|
14673
14873
|
function SorterContextMenu({
|
|
14674
14874
|
x,
|
|
14675
14875
|
y,
|
|
@@ -15301,6 +15501,130 @@ function SlideSorterOverlay({
|
|
|
15301
15501
|
}
|
|
15302
15502
|
);
|
|
15303
15503
|
}
|
|
15504
|
+
function useOutlineView(input) {
|
|
15505
|
+
const { slides, canvasSize, canEdit, setSlides, setActiveSlideIndex, bumpHistory } = input;
|
|
15506
|
+
const rows = useMemo(() => buildOutline(slides), [slides]);
|
|
15507
|
+
const containerRef = useRef(null);
|
|
15508
|
+
const pendingFocusRef = useRef(null);
|
|
15509
|
+
const run = useCallback(
|
|
15510
|
+
(edit) => {
|
|
15511
|
+
if (!canEdit) {
|
|
15512
|
+
return;
|
|
15513
|
+
}
|
|
15514
|
+
const result = applyOutlineEdit(slides, edit, { canvas: canvasSize });
|
|
15515
|
+
if (!result.changed) {
|
|
15516
|
+
return;
|
|
15517
|
+
}
|
|
15518
|
+
setSlides(result.slides);
|
|
15519
|
+
setActiveSlideIndex(result.activeSlideIndex);
|
|
15520
|
+
bumpHistory();
|
|
15521
|
+
pendingFocusRef.current = result.focusKey;
|
|
15522
|
+
},
|
|
15523
|
+
[bumpHistory, canEdit, canvasSize, setActiveSlideIndex, setSlides, slides]
|
|
15524
|
+
);
|
|
15525
|
+
const onRowKeyDown = useCallback(
|
|
15526
|
+
(event, rowKey) => {
|
|
15527
|
+
const { edit, preventDefault } = mapOutlineKey(event, rowKey);
|
|
15528
|
+
if (preventDefault) {
|
|
15529
|
+
event.preventDefault();
|
|
15530
|
+
}
|
|
15531
|
+
if (edit) {
|
|
15532
|
+
run(edit);
|
|
15533
|
+
}
|
|
15534
|
+
},
|
|
15535
|
+
[run]
|
|
15536
|
+
);
|
|
15537
|
+
useEffect(() => {
|
|
15538
|
+
const key = pendingFocusRef.current;
|
|
15539
|
+
if (!key) {
|
|
15540
|
+
return;
|
|
15541
|
+
}
|
|
15542
|
+
pendingFocusRef.current = null;
|
|
15543
|
+
const selector = `[${OUTLINE_ROW_ATTR}="${CSS.escape(key)}"]`;
|
|
15544
|
+
const target = containerRef.current?.querySelector(selector);
|
|
15545
|
+
if (target && document.activeElement !== target) {
|
|
15546
|
+
target.focus();
|
|
15547
|
+
target.setSelectionRange(target.value.length, target.value.length);
|
|
15548
|
+
}
|
|
15549
|
+
}, [rows]);
|
|
15550
|
+
return { rows, containerRef, run, onRowKeyDown };
|
|
15551
|
+
}
|
|
15552
|
+
var INDENT_PX = 22;
|
|
15553
|
+
function OutlineViewOverlay({
|
|
15554
|
+
slides,
|
|
15555
|
+
canvasSize,
|
|
15556
|
+
canEdit,
|
|
15557
|
+
setSlides,
|
|
15558
|
+
setActiveSlideIndex,
|
|
15559
|
+
bumpHistory,
|
|
15560
|
+
onClose
|
|
15561
|
+
}) {
|
|
15562
|
+
const { t } = useTranslation();
|
|
15563
|
+
const { rows, containerRef, run, onRowKeyDown } = useOutlineView({
|
|
15564
|
+
slides,
|
|
15565
|
+
canvasSize,
|
|
15566
|
+
canEdit,
|
|
15567
|
+
setSlides,
|
|
15568
|
+
setActiveSlideIndex,
|
|
15569
|
+
bumpHistory
|
|
15570
|
+
});
|
|
15571
|
+
return /* @__PURE__ */ jsxs(
|
|
15572
|
+
"div",
|
|
15573
|
+
{
|
|
15574
|
+
...{ [OUTLINE_VIEW_ATTR]: "true" },
|
|
15575
|
+
role: "region",
|
|
15576
|
+
"aria-label": t("pptx.view.outlineView"),
|
|
15577
|
+
className: "fixed inset-0 z-[1300] flex flex-col bg-neutral-900 text-neutral-100",
|
|
15578
|
+
children: [
|
|
15579
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 border-b border-white/10 px-4 py-2", children: [
|
|
15580
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: t("pptx.view.outlineView") }),
|
|
15581
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-[11px] text-white/50", children: t("pptx.outline.hint") }),
|
|
15582
|
+
/* @__PURE__ */ jsx(
|
|
15583
|
+
"button",
|
|
15584
|
+
{
|
|
15585
|
+
type: "button",
|
|
15586
|
+
className: "inline-flex h-8 w-8 items-center justify-center rounded text-white/80 transition-colors hover:bg-white/15 hover:text-white",
|
|
15587
|
+
"aria-label": t("pptx.statusBar.normalView"),
|
|
15588
|
+
title: t("pptx.statusBar.normalView"),
|
|
15589
|
+
onClick: onClose,
|
|
15590
|
+
children: /* @__PURE__ */ jsx(LuX, {})
|
|
15591
|
+
}
|
|
15592
|
+
)
|
|
15593
|
+
] }),
|
|
15594
|
+
/* @__PURE__ */ jsx("div", { ref: containerRef, className: "min-h-0 flex-1 overflow-auto px-4 py-3", children: rows.map((row) => /* @__PURE__ */ jsxs(
|
|
15595
|
+
"div",
|
|
15596
|
+
{
|
|
15597
|
+
className: "flex items-center gap-2 py-0.5",
|
|
15598
|
+
style: { paddingLeft: row.level * INDENT_PX },
|
|
15599
|
+
children: [
|
|
15600
|
+
/* @__PURE__ */ jsx("span", { className: "w-6 shrink-0 text-right text-[10px] tabular-nums text-white/40", children: row.kind === "title" ? row.slideIndex + 1 : "" }),
|
|
15601
|
+
/* @__PURE__ */ jsx(
|
|
15602
|
+
"input",
|
|
15603
|
+
{
|
|
15604
|
+
...{
|
|
15605
|
+
[OUTLINE_ROW_ATTR]: row.key,
|
|
15606
|
+
[OUTLINE_SLIDE_ATTR]: String(row.slideIndex + 1),
|
|
15607
|
+
[OUTLINE_LEVEL_ATTR]: String(row.level)
|
|
15608
|
+
},
|
|
15609
|
+
type: "text",
|
|
15610
|
+
value: row.text,
|
|
15611
|
+
readOnly: !canEdit,
|
|
15612
|
+
"aria-label": t(
|
|
15613
|
+
row.kind === "title" ? "pptx.outline.titleLine" : "pptx.outline.bodyLine"
|
|
15614
|
+
),
|
|
15615
|
+
className: row.kind === "title" ? "w-full rounded bg-transparent px-1 py-0.5 text-sm font-semibold outline-none focus:bg-white/10" : "w-full rounded bg-transparent px-1 py-0.5 text-[13px] text-white/80 outline-none focus:bg-white/10",
|
|
15616
|
+
onChange: (event) => run({ type: "setText", key: row.key, text: event.target.value }),
|
|
15617
|
+
onKeyDown: (event) => onRowKeyDown(event, row.key)
|
|
15618
|
+
}
|
|
15619
|
+
)
|
|
15620
|
+
]
|
|
15621
|
+
},
|
|
15622
|
+
row.key
|
|
15623
|
+
)) })
|
|
15624
|
+
]
|
|
15625
|
+
}
|
|
15626
|
+
);
|
|
15627
|
+
}
|
|
15304
15628
|
function ReadingViewStage({
|
|
15305
15629
|
slide,
|
|
15306
15630
|
templateElements,
|
|
@@ -15509,7 +15833,7 @@ var DEBOUNCE_MS = 600;
|
|
|
15509
15833
|
var EXPANDED_MAX_HEIGHT = 200;
|
|
15510
15834
|
var PX_TO_PT = 0.75;
|
|
15511
15835
|
var MAX_INDENT_LEVEL = 4;
|
|
15512
|
-
var
|
|
15836
|
+
var INDENT_PX2 = 24;
|
|
15513
15837
|
function escapeHtml(value) {
|
|
15514
15838
|
return value.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
15515
15839
|
}
|
|
@@ -15564,7 +15888,7 @@ function buildParagraph(segments) {
|
|
|
15564
15888
|
if (first?.style.paragraphMarginLeft) {
|
|
15565
15889
|
indentLevel = Math.min(
|
|
15566
15890
|
MAX_INDENT_LEVEL,
|
|
15567
|
-
Math.max(0, Math.round(first.style.paragraphMarginLeft /
|
|
15891
|
+
Math.max(0, Math.round(first.style.paragraphMarginLeft / INDENT_PX2))
|
|
15568
15892
|
);
|
|
15569
15893
|
}
|
|
15570
15894
|
return {
|
|
@@ -15609,7 +15933,7 @@ function paragraphsToSegments(paragraphs) {
|
|
|
15609
15933
|
para.segments.forEach((seg, sIdx) => {
|
|
15610
15934
|
const updated = { ...seg, style: { ...seg.style } };
|
|
15611
15935
|
if (para.indentLevel > 0) {
|
|
15612
|
-
updated.style.paragraphMarginLeft = para.indentLevel *
|
|
15936
|
+
updated.style.paragraphMarginLeft = para.indentLevel * INDENT_PX2;
|
|
15613
15937
|
} else {
|
|
15614
15938
|
delete updated.style.paragraphMarginLeft;
|
|
15615
15939
|
}
|
|
@@ -15766,7 +16090,7 @@ function parseSegmentsFromRichEditor(root) {
|
|
|
15766
16090
|
if (paraIndent > 0) {
|
|
15767
16091
|
segments[i].style = {
|
|
15768
16092
|
...segments[i].style,
|
|
15769
|
-
paragraphMarginLeft: paraIndent *
|
|
16093
|
+
paragraphMarginLeft: paraIndent * INDENT_PX2
|
|
15770
16094
|
};
|
|
15771
16095
|
}
|
|
15772
16096
|
break;
|
|
@@ -15830,7 +16154,7 @@ function segmentsToEditorHtml(segments) {
|
|
|
15830
16154
|
if (para.indentLevel > 0) {
|
|
15831
16155
|
attrs.push(`data-indent-level="${para.indentLevel}"`);
|
|
15832
16156
|
}
|
|
15833
|
-
const indent = para.indentLevel *
|
|
16157
|
+
const indent = para.indentLevel * INDENT_PX2;
|
|
15834
16158
|
const divStyles = [];
|
|
15835
16159
|
if (indent > 0) {
|
|
15836
16160
|
divStyles.push(`padding-left:${indent}px`);
|
|
@@ -15858,7 +16182,7 @@ function renderRichNotesSegments(segments) {
|
|
|
15858
16182
|
}
|
|
15859
16183
|
const divStyle = {};
|
|
15860
16184
|
if (para.indentLevel > 0) {
|
|
15861
|
-
divStyle.paddingLeft = para.indentLevel *
|
|
16185
|
+
divStyle.paddingLeft = para.indentLevel * INDENT_PX2;
|
|
15862
16186
|
}
|
|
15863
16187
|
const children = [];
|
|
15864
16188
|
if (para.bulletType === "bullet") {
|
|
@@ -18374,9 +18698,9 @@ function PresentationSubtitleBar({
|
|
|
18374
18698
|
function renderNotesSegments(segments) {
|
|
18375
18699
|
return notesSegmentsToSpans(segments).map((span) => {
|
|
18376
18700
|
if (span.kind === "break") {
|
|
18377
|
-
return
|
|
18701
|
+
return React34.createElement("br", { key: span.key });
|
|
18378
18702
|
}
|
|
18379
|
-
return
|
|
18703
|
+
return React34.createElement(
|
|
18380
18704
|
"span",
|
|
18381
18705
|
{ key: span.key, style: span.style },
|
|
18382
18706
|
span.text
|
|
@@ -18583,7 +18907,7 @@ function arePropsEqual4(prev, next) {
|
|
|
18583
18907
|
}
|
|
18584
18908
|
return true;
|
|
18585
18909
|
}
|
|
18586
|
-
var ScaledSlidePreview =
|
|
18910
|
+
var ScaledSlidePreview = React34.memo(ScaledSlidePreviewImpl, arePropsEqual4);
|
|
18587
18911
|
function PresenterNotesRail({
|
|
18588
18912
|
slides,
|
|
18589
18913
|
current,
|
|
@@ -19614,6 +19938,33 @@ function AnimationTimelineSection({
|
|
|
19614
19938
|
] })
|
|
19615
19939
|
] });
|
|
19616
19940
|
}
|
|
19941
|
+
function MotionPathRow({
|
|
19942
|
+
motionPath,
|
|
19943
|
+
canEdit,
|
|
19944
|
+
onChange
|
|
19945
|
+
}) {
|
|
19946
|
+
const { t } = useTranslation();
|
|
19947
|
+
const presetId = motionPathPresetIdForPath(motionPath);
|
|
19948
|
+
const isCustom = Boolean(motionPath) && !presetId;
|
|
19949
|
+
return /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
19950
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.motionPath.label") }),
|
|
19951
|
+
/* @__PURE__ */ jsxs(
|
|
19952
|
+
"select",
|
|
19953
|
+
{
|
|
19954
|
+
value: isCustom ? "custom" : presetId ?? "none",
|
|
19955
|
+
onChange: (event) => onChange(event.target.value),
|
|
19956
|
+
disabled: !canEdit,
|
|
19957
|
+
className: SELECT_CLS,
|
|
19958
|
+
children: [
|
|
19959
|
+
/* @__PURE__ */ jsx("option", { value: "none", children: t("pptx.animation.motionPath.none") }),
|
|
19960
|
+
isCustom && /* @__PURE__ */ jsx("option", { value: "custom", children: t("pptx.animation.motionPath.custom") }),
|
|
19961
|
+
MOTION_PATH_FAMILIES.map((family) => /* @__PURE__ */ jsx("optgroup", { label: t(motionPathFamilyLabelKey(family)), children: motionPathPresetsByFamily(family).map((preset) => /* @__PURE__ */ jsx("option", { value: preset.id, children: t(motionPathPresetLabelKey(preset.id)) }, preset.id)) }, family))
|
|
19962
|
+
]
|
|
19963
|
+
}
|
|
19964
|
+
),
|
|
19965
|
+
motionPath && /* @__PURE__ */ jsx("span", { className: "text-[10px] text-muted-foreground", children: t("pptx.animation.motionPath.editHint") })
|
|
19966
|
+
] });
|
|
19967
|
+
}
|
|
19617
19968
|
function useAnimationDragDrop({
|
|
19618
19969
|
canEdit,
|
|
19619
19970
|
updateAnimations
|
|
@@ -19720,6 +20071,14 @@ function useAnimationPreview({
|
|
|
19720
20071
|
selectedElementAnimation
|
|
19721
20072
|
}) {
|
|
19722
20073
|
const handleAnimationHover = useCallback((anim) => {
|
|
20074
|
+
if (anim.motionPath) {
|
|
20075
|
+
startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
20076
|
+
durationMs: anim.durationMs,
|
|
20077
|
+
delayMs: anim.delayMs,
|
|
20078
|
+
timingCurve: anim.timingCurve
|
|
20079
|
+
});
|
|
20080
|
+
return;
|
|
20081
|
+
}
|
|
19723
20082
|
const preset = anim.entrance ?? anim.emphasis ?? anim.exit;
|
|
19724
20083
|
if (!preset || preset === "none") {
|
|
19725
20084
|
return;
|
|
@@ -19735,6 +20094,14 @@ function useAnimationPreview({
|
|
|
19735
20094
|
if (!selectedElementAnimation) {
|
|
19736
20095
|
return;
|
|
19737
20096
|
}
|
|
20097
|
+
if (selectedElementAnimation.motionPath) {
|
|
20098
|
+
startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
20099
|
+
durationMs: selectedElementAnimation.durationMs,
|
|
20100
|
+
delayMs: selectedElementAnimation.delayMs,
|
|
20101
|
+
timingCurve: selectedElementAnimation.timingCurve
|
|
20102
|
+
});
|
|
20103
|
+
return;
|
|
20104
|
+
}
|
|
19738
20105
|
const preset = selectedElementAnimation.entrance ?? selectedElementAnimation.emphasis ?? selectedElementAnimation.exit;
|
|
19739
20106
|
if (!preset || preset === "none") {
|
|
19740
20107
|
return;
|
|
@@ -19794,7 +20161,7 @@ function useAnimationHandlers({
|
|
|
19794
20161
|
const idx = anims.findIndex((a) => a.elementId === selectedElement.id);
|
|
19795
20162
|
const hasEffect = entrance || exit || emphasis;
|
|
19796
20163
|
if (idx >= 0) {
|
|
19797
|
-
if (!hasEffect) {
|
|
20164
|
+
if (!hasEffect && !anims[idx].motionPath) {
|
|
19798
20165
|
return anims.filter((a) => a.elementId !== selectedElement.id);
|
|
19799
20166
|
}
|
|
19800
20167
|
anims[idx] = {
|
|
@@ -19852,6 +20219,20 @@ function useAnimationHandlers({
|
|
|
19852
20219
|
},
|
|
19853
20220
|
[setAnimationPreset, selectedElementAnimation]
|
|
19854
20221
|
);
|
|
20222
|
+
const handleMotionPathChange = useCallback(
|
|
20223
|
+
(presetId) => {
|
|
20224
|
+
if (!canEdit) {
|
|
20225
|
+
return;
|
|
20226
|
+
}
|
|
20227
|
+
if (presetId === "custom") {
|
|
20228
|
+
return;
|
|
20229
|
+
}
|
|
20230
|
+
updateAnimations(
|
|
20231
|
+
(anims) => presetId === "none" ? clearMotionPath(anims, selectedElement.id) : applyMotionPathPreset(anims, selectedElement.id, presetId)
|
|
20232
|
+
);
|
|
20233
|
+
},
|
|
20234
|
+
[canEdit, updateAnimations, selectedElement.id]
|
|
20235
|
+
);
|
|
19855
20236
|
const handleTriggerChange = useCallback(
|
|
19856
20237
|
(event) => {
|
|
19857
20238
|
const newTrigger = event.target.value;
|
|
@@ -19917,7 +20298,7 @@ function useAnimationHandlers({
|
|
|
19917
20298
|
[activeSlide.elements]
|
|
19918
20299
|
);
|
|
19919
20300
|
const hasAnimation = Boolean(
|
|
19920
|
-
selectedElementAnimation?.entrance || selectedElementAnimation?.exit || selectedElementAnimation?.emphasis
|
|
20301
|
+
selectedElementAnimation?.entrance || selectedElementAnimation?.exit || selectedElementAnimation?.emphasis || selectedElementAnimation?.motionPath
|
|
19921
20302
|
);
|
|
19922
20303
|
const showDirectionPicker = hasAnimation && (DIRECTIONAL_PRESETS.has(selectedElementAnimation?.entrance ?? "") || DIRECTIONAL_PRESETS.has(selectedElementAnimation?.exit ?? ""));
|
|
19923
20304
|
const timelineBarData = useMemo(() => {
|
|
@@ -19959,6 +20340,7 @@ function useAnimationHandlers({
|
|
|
19959
20340
|
handleRepeatModeChange,
|
|
19960
20341
|
handleDirectionChange,
|
|
19961
20342
|
handleSequenceChange,
|
|
20343
|
+
handleMotionPathChange,
|
|
19962
20344
|
getTimelineLabel,
|
|
19963
20345
|
...preview,
|
|
19964
20346
|
...dragDrop
|
|
@@ -19993,6 +20375,7 @@ function AnimationPanel({
|
|
|
19993
20375
|
handleRepeatModeChange,
|
|
19994
20376
|
handleDirectionChange,
|
|
19995
20377
|
handleSequenceChange,
|
|
20378
|
+
handleMotionPathChange,
|
|
19996
20379
|
handlePreviewClick
|
|
19997
20380
|
} = handlers;
|
|
19998
20381
|
return /* @__PURE__ */ jsxs("div", { className: "rounded border border-border bg-card p-2 space-y-2", children: [
|
|
@@ -20060,6 +20443,14 @@ function AnimationPanel({
|
|
|
20060
20443
|
}
|
|
20061
20444
|
)
|
|
20062
20445
|
] }),
|
|
20446
|
+
/* @__PURE__ */ jsx(
|
|
20447
|
+
MotionPathRow,
|
|
20448
|
+
{
|
|
20449
|
+
motionPath: selectedElementAnimation?.motionPath,
|
|
20450
|
+
canEdit,
|
|
20451
|
+
onChange: handleMotionPathChange
|
|
20452
|
+
}
|
|
20453
|
+
),
|
|
20063
20454
|
hasAnimation && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
20064
20455
|
showDirectionPicker && /* @__PURE__ */ jsxs("div", { className: "pt-1 border-t border-border", children: [
|
|
20065
20456
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-[11px] block mb-1", children: t("pptx.animation.direction") }),
|
|
@@ -22010,7 +22401,7 @@ function ConnectorArrowsSection({
|
|
|
22010
22401
|
["Start", "End"].map((end) => {
|
|
22011
22402
|
const widthKey = end === "Start" ? "connectorStartArrowWidth" : "connectorEndArrowWidth";
|
|
22012
22403
|
const lengthKey = end === "Start" ? "connectorStartArrowLength" : "connectorEndArrowLength";
|
|
22013
|
-
return /* @__PURE__ */ jsxs(
|
|
22404
|
+
return /* @__PURE__ */ jsxs(React34.Fragment, { children: [
|
|
22014
22405
|
/* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
22015
22406
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t(END_LABEL_KEYS[end].width) }),
|
|
22016
22407
|
/* @__PURE__ */ jsx(
|
|
@@ -24839,7 +25230,7 @@ function StrokeEffectsSection({
|
|
|
24839
25230
|
] }),
|
|
24840
25231
|
EFFECT_CONFIGS.map((cfg) => {
|
|
24841
25232
|
const on = cfg.isOn(style);
|
|
24842
|
-
return /* @__PURE__ */ jsxs(
|
|
25233
|
+
return /* @__PURE__ */ jsxs(React34.Fragment, { children: [
|
|
24843
25234
|
/* @__PURE__ */ jsxs("label", { className: `inline-flex items-center gap-2 text-foreground ${COL2}`, children: [
|
|
24844
25235
|
/* @__PURE__ */ jsx(
|
|
24845
25236
|
"input",
|
|
@@ -25676,7 +26067,7 @@ function TextWarpGallery({
|
|
|
25676
26067
|
onUpdateTextStyle
|
|
25677
26068
|
}) {
|
|
25678
26069
|
const { t } = useTranslation();
|
|
25679
|
-
const [expanded, setExpanded] =
|
|
26070
|
+
const [expanded, setExpanded] = React34.useState(false);
|
|
25680
26071
|
const currentPreset = ts?.textWarpPreset || "textNoShape";
|
|
25681
26072
|
return /* @__PURE__ */ jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
|
|
25682
26073
|
/* @__PURE__ */ jsxs(
|
|
@@ -26401,9 +26792,9 @@ function SmartArtPropertiesPanel({
|
|
|
26401
26792
|
const nodes = smartArtData.nodes ?? [];
|
|
26402
26793
|
const layout = smartArtData.resolvedLayoutType;
|
|
26403
26794
|
const topLevelCount = nodes.filter((n) => !n.parentId).length;
|
|
26404
|
-
const inputRefs =
|
|
26405
|
-
const pendingFocusId =
|
|
26406
|
-
|
|
26795
|
+
const inputRefs = React34.useRef(/* @__PURE__ */ new Map());
|
|
26796
|
+
const pendingFocusId = React34.useRef(null);
|
|
26797
|
+
React34.useEffect(() => {
|
|
26407
26798
|
const id = pendingFocusId.current;
|
|
26408
26799
|
if (id) {
|
|
26409
26800
|
inputRefs.current.get(id)?.focus();
|
|
@@ -28870,7 +29261,7 @@ function PresentationPropertiesPanel({
|
|
|
28870
29261
|
onUpdateTagCollections
|
|
28871
29262
|
}) {
|
|
28872
29263
|
const { t } = useTranslation();
|
|
28873
|
-
const handleTransitionChange =
|
|
29264
|
+
const handleTransitionChange = React34.useCallback(
|
|
28874
29265
|
(updates) => {
|
|
28875
29266
|
onUpdateSlide({
|
|
28876
29267
|
transition: mergeSlideTransition(activeSlide?.transition, updates)
|
|
@@ -32183,6 +32574,7 @@ function ViewerOverlays({
|
|
|
32183
32574
|
isAccessibilityPanelOpen,
|
|
32184
32575
|
showSlideSorter,
|
|
32185
32576
|
showReadingView,
|
|
32577
|
+
showOutlineView,
|
|
32186
32578
|
templateElements,
|
|
32187
32579
|
accessibilityIssues,
|
|
32188
32580
|
slides,
|
|
@@ -32199,10 +32591,14 @@ function ViewerOverlays({
|
|
|
32199
32591
|
onToggleHideSlides,
|
|
32200
32592
|
onCloseSorter,
|
|
32201
32593
|
onCloseReadingView,
|
|
32594
|
+
onCloseOutlineView,
|
|
32595
|
+
setSlides,
|
|
32596
|
+
setActiveSlideIndex,
|
|
32597
|
+
bumpHistory,
|
|
32202
32598
|
reducedMotion,
|
|
32203
32599
|
onToggleReducedMotion
|
|
32204
32600
|
}) {
|
|
32205
|
-
const hasOverlay = isShortcutHelpOpen || isAccessibilityPanelOpen || showSlideSorter || showReadingView;
|
|
32601
|
+
const hasOverlay = isShortcutHelpOpen || isAccessibilityPanelOpen || showSlideSorter || showReadingView || showOutlineView;
|
|
32206
32602
|
if (!hasOverlay) {
|
|
32207
32603
|
return null;
|
|
32208
32604
|
}
|
|
@@ -32243,6 +32639,18 @@ function ViewerOverlays({
|
|
|
32243
32639
|
activeSlideIndex,
|
|
32244
32640
|
onExit: onCloseReadingView
|
|
32245
32641
|
}
|
|
32642
|
+
),
|
|
32643
|
+
showOutlineView && /* @__PURE__ */ jsx(
|
|
32644
|
+
OutlineViewOverlay,
|
|
32645
|
+
{
|
|
32646
|
+
slides,
|
|
32647
|
+
canvasSize,
|
|
32648
|
+
canEdit,
|
|
32649
|
+
setSlides,
|
|
32650
|
+
setActiveSlideIndex,
|
|
32651
|
+
bumpHistory,
|
|
32652
|
+
onClose: onCloseOutlineView
|
|
32653
|
+
}
|
|
32246
32654
|
)
|
|
32247
32655
|
] });
|
|
32248
32656
|
}
|
|
@@ -32731,6 +33139,12 @@ function ViewerToolbarSection(props) {
|
|
|
32731
33139
|
return;
|
|
32732
33140
|
}
|
|
32733
33141
|
const current = activeSlide.animations ?? [];
|
|
33142
|
+
if (group === "motionPath") {
|
|
33143
|
+
propertyHandlers.handleUpdateSlide({
|
|
33144
|
+
animations: applyMotionPathPreset(current, selectedElement.id, preset)
|
|
33145
|
+
});
|
|
33146
|
+
return;
|
|
33147
|
+
}
|
|
32734
33148
|
const existing = current.find((a) => a.elementId === selectedElement.id);
|
|
32735
33149
|
const presetValue = preset;
|
|
32736
33150
|
if (existing) {
|
|
@@ -32769,7 +33183,7 @@ function ViewerToolbarSection(props) {
|
|
|
32769
33183
|
},
|
|
32770
33184
|
[activeSlide, propertyHandlers]
|
|
32771
33185
|
);
|
|
32772
|
-
const scopedLayoutOptions =
|
|
33186
|
+
const scopedLayoutOptions = React34.useMemo(
|
|
32773
33187
|
() => scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
32774
33188
|
[s.layoutOptions, activeSlide]
|
|
32775
33189
|
);
|
|
@@ -33068,6 +33482,7 @@ function ViewerToolbarSection(props) {
|
|
|
33068
33482
|
onRunAccessibilityCheck: dialogs.handleRunAccessibilityCheck,
|
|
33069
33483
|
onToggleSlideSorter: () => s.setShowSlideSorter((p) => !p),
|
|
33070
33484
|
onOpenReadingView: () => s.setShowReadingView(true),
|
|
33485
|
+
onOpenOutlineView: () => s.setShowOutlineView(true),
|
|
33071
33486
|
onUpdateTextStyle: ops.updateSelectedTextStyle,
|
|
33072
33487
|
onTransformTextCase: ops.updateSelectedTextCase,
|
|
33073
33488
|
isOverflowMenuOpen: s.isOverflowMenuOpen,
|
|
@@ -33909,6 +34324,10 @@ function PresentationStage({
|
|
|
33909
34324
|
height: safeHeight,
|
|
33910
34325
|
transform: `scale(${scale})`,
|
|
33911
34326
|
transformOrigin: "top left",
|
|
34327
|
+
// Motion-path keyframes translate by a fraction of the SLIDE, so
|
|
34328
|
+
// the stage publishes its own size for those calc() offsets.
|
|
34329
|
+
"--pptx-slide-w": `${safeWidth}px`,
|
|
34330
|
+
"--pptx-slide-h": `${safeHeight}px`,
|
|
33912
34331
|
...getReactSlideBackgroundStyle(activeSlide)
|
|
33913
34332
|
},
|
|
33914
34333
|
children: [
|
|
@@ -34333,6 +34752,7 @@ ${url}`)) {
|
|
|
34333
34752
|
) : /* @__PURE__ */ jsx(
|
|
34334
34753
|
SlideCanvas,
|
|
34335
34754
|
{
|
|
34755
|
+
onUpdateSlideAnimations: props.onUpdateSlideAnimations,
|
|
34336
34756
|
activeSlide: effectiveSlide,
|
|
34337
34757
|
templateElements: effectiveTemplateElements,
|
|
34338
34758
|
canvasSize,
|
|
@@ -34515,7 +34935,7 @@ ${url}`)) {
|
|
|
34515
34935
|
)
|
|
34516
34936
|
);
|
|
34517
34937
|
}
|
|
34518
|
-
var AiChatPanel = lazy(() => import('./AiChatPanel-
|
|
34938
|
+
var AiChatPanel = lazy(() => import('./AiChatPanel-EX2TBRJM.mjs'));
|
|
34519
34939
|
function AiChatPanelLazy(props) {
|
|
34520
34940
|
return /* @__PURE__ */ jsx(
|
|
34521
34941
|
Suspense,
|
|
@@ -35677,6 +36097,7 @@ function ViewerMainContent(props) {
|
|
|
35677
36097
|
/* @__PURE__ */ jsx(
|
|
35678
36098
|
ViewerCanvasArea,
|
|
35679
36099
|
{
|
|
36100
|
+
onUpdateSlideAnimations: (animations) => propertyHandlers.handleUpdateSlide({ animations }),
|
|
35680
36101
|
mode,
|
|
35681
36102
|
canEdit,
|
|
35682
36103
|
slides,
|
|
@@ -38090,6 +38511,7 @@ var PowerPointViewer = forwardRef(
|
|
|
38090
38511
|
isAccessibilityPanelOpen: state.isAccessibilityPanelOpen,
|
|
38091
38512
|
showSlideSorter: state.showSlideSorter,
|
|
38092
38513
|
showReadingView: state.showReadingView,
|
|
38514
|
+
showOutlineView: state.showOutlineView,
|
|
38093
38515
|
templateElements: state.templateElements,
|
|
38094
38516
|
accessibilityIssues: state.accessibilityIssues,
|
|
38095
38517
|
slides,
|
|
@@ -38112,6 +38534,10 @@ var PowerPointViewer = forwardRef(
|
|
|
38112
38534
|
state.setShowReadingView(false);
|
|
38113
38535
|
state.setActiveSlideIndex(slideIndex);
|
|
38114
38536
|
},
|
|
38537
|
+
onCloseOutlineView: () => state.setShowOutlineView(false),
|
|
38538
|
+
setSlides: state.setSlides,
|
|
38539
|
+
setActiveSlideIndex: state.setActiveSlideIndex,
|
|
38540
|
+
bumpHistory: () => state.setPointerCommitNonce((n) => n + 1),
|
|
38115
38541
|
reducedMotion,
|
|
38116
38542
|
onToggleReducedMotion: toggleReducedMotion
|
|
38117
38543
|
}
|