pptx-react-viewer 3.9.0 → 3.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 +37 -0
- package/dist/{AiChatPanel-3A42W7RW.js → AiChatPanel-A3ZMMVUA.js} +25 -25
- package/dist/AiChatPanel-A3ZMMVUA.js.br +0 -0
- package/dist/AiChatPanel-A3ZMMVUA.js.gz +0 -0
- package/dist/{AiChatPanel-II6VOOAL.mjs → AiChatPanel-L5H455NZ.mjs} +4 -4
- package/dist/AiChatPanel-L5H455NZ.mjs.br +0 -0
- package/dist/AiChatPanel-L5H455NZ.mjs.gz +0 -0
- package/dist/{Area3DChartScene-JM3CQ3WQ.mjs → Area3DChartScene-OAD36KIX.mjs} +1 -1
- package/dist/{Area3DChartScene-JM3CQ3WQ.mjs.br → Area3DChartScene-OAD36KIX.mjs.br} +0 -0
- package/dist/Area3DChartScene-OAD36KIX.mjs.gz +0 -0
- package/dist/{Area3DChartScene-XJK4ZA4R.js → Area3DChartScene-R2CKCYCB.js} +2 -2
- package/dist/{Area3DChartScene-XJK4ZA4R.js.br → Area3DChartScene-R2CKCYCB.js.br} +0 -0
- package/dist/Area3DChartScene-R2CKCYCB.js.gz +0 -0
- package/dist/{Bar3DChartScene-RGRZY5P6.js → Bar3DChartScene-CRRPMXGQ.js} +2 -2
- package/dist/Bar3DChartScene-CRRPMXGQ.js.br +0 -0
- package/dist/Bar3DChartScene-CRRPMXGQ.js.gz +0 -0
- package/dist/{Bar3DChartScene-VNFWI2QG.mjs → Bar3DChartScene-XNNXF26T.mjs} +1 -1
- package/dist/{Bar3DChartScene-VNFWI2QG.mjs.br → Bar3DChartScene-XNNXF26T.mjs.br} +0 -0
- package/dist/Bar3DChartScene-XNNXF26T.mjs.gz +0 -0
- package/dist/{Line3DChartScene-MEY42DBF.js → Line3DChartScene-44PLZML2.js} +2 -2
- package/dist/Line3DChartScene-44PLZML2.js.br +0 -0
- package/dist/Line3DChartScene-44PLZML2.js.gz +0 -0
- package/dist/{Line3DChartScene-GXOWGIFJ.mjs → Line3DChartScene-MNNPB3LZ.mjs} +1 -1
- package/dist/{Line3DChartScene-GXOWGIFJ.mjs.br → Line3DChartScene-MNNPB3LZ.mjs.br} +0 -0
- package/dist/Line3DChartScene-MNNPB3LZ.mjs.gz +0 -0
- package/dist/{Model3DScene-WJ3MMIZH.mjs → Model3DScene-5MUREFLY.mjs} +1 -1
- package/dist/Model3DScene-5MUREFLY.mjs.br +0 -0
- package/dist/Model3DScene-5MUREFLY.mjs.gz +0 -0
- package/dist/{Model3DScene-MWXTGHDM.js → Model3DScene-RYPYQPJH.js} +2 -2
- package/dist/Model3DScene-RYPYQPJH.js.br +0 -0
- package/dist/Model3DScene-RYPYQPJH.js.gz +0 -0
- package/dist/{PieChart3DScene-FJJGOQIS.js → PieChart3DScene-GACYCSSQ.js} +2 -2
- package/dist/{PieChart3DScene-FJJGOQIS.js.br → PieChart3DScene-GACYCSSQ.js.br} +0 -0
- package/dist/PieChart3DScene-GACYCSSQ.js.gz +0 -0
- package/dist/{PieChart3DScene-WXJEDYMK.mjs → PieChart3DScene-KYZSSG5X.mjs} +1 -1
- package/dist/PieChart3DScene-KYZSSG5X.mjs.br +0 -0
- package/dist/PieChart3DScene-KYZSSG5X.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-VDK3F224.js → SurfaceChart3DScene-RI5G4BHS.js} +2 -2
- package/dist/{SurfaceChart3DScene-VDK3F224.js.br → SurfaceChart3DScene-RI5G4BHS.js.br} +0 -0
- package/dist/SurfaceChart3DScene-RI5G4BHS.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-IKPE2SVE.mjs → SurfaceChart3DScene-ZUP4PRUZ.mjs} +1 -1
- package/dist/SurfaceChart3DScene-ZUP4PRUZ.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-ZUP4PRUZ.mjs.gz +0 -0
- package/dist/{chunk-3NIJ5HIZ.js → chunk-4PL3GBSD.js} +1818 -1279
- package/dist/chunk-4PL3GBSD.js.br +0 -0
- package/dist/chunk-4PL3GBSD.js.gz +0 -0
- package/dist/{chunk-NTWFXLZX.mjs → chunk-5T4Y4QPV.mjs} +2 -2
- package/dist/chunk-5T4Y4QPV.mjs.br +0 -0
- package/dist/chunk-5T4Y4QPV.mjs.gz +0 -0
- package/dist/{chunk-VQX7G75Z.mjs → chunk-6BNPHEEX.mjs} +70521 -52117
- package/dist/chunk-6BNPHEEX.mjs.br +0 -0
- package/dist/chunk-6BNPHEEX.mjs.gz +0 -0
- package/dist/{chunk-K6Q6KLA6.js → chunk-BX4XVY5X.js} +6168 -1929
- package/dist/chunk-BX4XVY5X.js.br +0 -0
- package/dist/chunk-BX4XVY5X.js.gz +0 -0
- package/dist/{chunk-LBJAVP3H.js → chunk-IK25LY4C.js} +176 -176
- package/dist/chunk-IK25LY4C.js.br +0 -0
- package/dist/chunk-IK25LY4C.js.gz +0 -0
- package/dist/{chunk-G3JPCRKN.js → chunk-LY5535CF.js} +70559 -52147
- package/dist/chunk-LY5535CF.js.br +0 -0
- package/dist/chunk-LY5535CF.js.gz +0 -0
- package/dist/{chunk-5CPGDXD6.js → chunk-MRBHJ26I.js} +457 -445
- package/dist/chunk-MRBHJ26I.js.br +0 -0
- package/dist/chunk-MRBHJ26I.js.gz +0 -0
- package/dist/{chunk-76Z3X6JX.mjs → chunk-N75WRHON.mjs} +599 -60
- package/dist/chunk-N75WRHON.mjs.br +0 -0
- package/dist/chunk-N75WRHON.mjs.gz +0 -0
- package/dist/{chunk-3Y63XPIN.mjs → chunk-SUEZMQRT.mjs} +6164 -1925
- package/dist/chunk-SUEZMQRT.mjs.br +0 -0
- package/dist/chunk-SUEZMQRT.mjs.gz +0 -0
- package/dist/{chunk-JBSAKP4Z.mjs → chunk-TAGG5YNA.mjs} +61 -1
- package/dist/chunk-TAGG5YNA.mjs.br +0 -0
- package/dist/chunk-TAGG5YNA.mjs.gz +0 -0
- package/dist/{chunk-PCCM7NVY.mjs → chunk-VHFPZBUW.mjs} +21 -10
- package/dist/chunk-VHFPZBUW.mjs.br +0 -0
- package/dist/chunk-VHFPZBUW.mjs.gz +0 -0
- package/dist/{chunk-TEVGDXVW.js → chunk-Y6GG2OOW.js} +61 -1
- package/dist/chunk-Y6GG2OOW.js.br +0 -0
- package/dist/chunk-Y6GG2OOW.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-CGKutKk1.d.ts.map +1 -1
- package/dist/index.d.ts +241 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -47
- 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 +230 -10
- 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-C8F_4Pzb.d.ts → useViewerBuildingBlocks-FbK-4ORi.d.ts} +2 -1
- package/dist/useViewerBuildingBlocks-FbK-4ORi.d.ts.map +1 -0
- package/dist/viewer/index.d.ts +220 -5
- package/dist/viewer/index.d.ts.map +1 -1
- 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 +9 -9
- package/dist/AiChatPanel-3A42W7RW.js.br +0 -0
- package/dist/AiChatPanel-3A42W7RW.js.gz +0 -0
- package/dist/AiChatPanel-II6VOOAL.mjs.br +0 -0
- package/dist/AiChatPanel-II6VOOAL.mjs.gz +0 -0
- package/dist/Area3DChartScene-JM3CQ3WQ.mjs.gz +0 -0
- package/dist/Area3DChartScene-XJK4ZA4R.js.gz +0 -0
- package/dist/Bar3DChartScene-RGRZY5P6.js.br +0 -0
- package/dist/Bar3DChartScene-RGRZY5P6.js.gz +0 -0
- package/dist/Bar3DChartScene-VNFWI2QG.mjs.gz +0 -0
- package/dist/Line3DChartScene-GXOWGIFJ.mjs.gz +0 -0
- package/dist/Line3DChartScene-MEY42DBF.js.br +0 -0
- package/dist/Line3DChartScene-MEY42DBF.js.gz +0 -0
- package/dist/Model3DScene-MWXTGHDM.js.br +0 -0
- package/dist/Model3DScene-MWXTGHDM.js.gz +0 -0
- package/dist/Model3DScene-WJ3MMIZH.mjs.br +0 -0
- package/dist/Model3DScene-WJ3MMIZH.mjs.gz +0 -0
- package/dist/PieChart3DScene-FJJGOQIS.js.gz +0 -0
- package/dist/PieChart3DScene-WXJEDYMK.mjs.br +0 -0
- package/dist/PieChart3DScene-WXJEDYMK.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-IKPE2SVE.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-IKPE2SVE.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-VDK3F224.js.gz +0 -0
- package/dist/chunk-3NIJ5HIZ.js.br +0 -0
- package/dist/chunk-3NIJ5HIZ.js.gz +0 -0
- package/dist/chunk-3Y63XPIN.mjs.br +0 -0
- package/dist/chunk-3Y63XPIN.mjs.gz +0 -0
- package/dist/chunk-5CPGDXD6.js.br +0 -0
- package/dist/chunk-5CPGDXD6.js.gz +0 -0
- package/dist/chunk-76Z3X6JX.mjs.br +0 -0
- package/dist/chunk-76Z3X6JX.mjs.gz +0 -0
- package/dist/chunk-G3JPCRKN.js.br +0 -0
- package/dist/chunk-G3JPCRKN.js.gz +0 -0
- package/dist/chunk-JBSAKP4Z.mjs.br +0 -0
- package/dist/chunk-JBSAKP4Z.mjs.gz +0 -0
- package/dist/chunk-K6Q6KLA6.js.br +0 -0
- package/dist/chunk-K6Q6KLA6.js.gz +0 -0
- package/dist/chunk-LBJAVP3H.js.br +0 -0
- package/dist/chunk-LBJAVP3H.js.gz +0 -0
- package/dist/chunk-NTWFXLZX.mjs.br +0 -0
- package/dist/chunk-NTWFXLZX.mjs.gz +0 -0
- package/dist/chunk-PCCM7NVY.mjs.br +0 -0
- package/dist/chunk-PCCM7NVY.mjs.gz +0 -0
- package/dist/chunk-TEVGDXVW.js.br +0 -0
- package/dist/chunk-TEVGDXVW.js.gz +0 -0
- package/dist/chunk-VQX7G75Z.mjs.br +0 -0
- package/dist/chunk-VQX7G75Z.mjs.gz +0 -0
- package/dist/useViewerBuildingBlocks-C8F_4Pzb.d.ts.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-
|
|
2
|
-
import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, safePrompt, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, syncSelectionHandleOverlay } from './chunk-
|
|
3
|
-
import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, 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, STROKE_DASH_OPTIONS } from './chunk-
|
|
4
|
-
import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, buildDeckSaveOptions, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, getEffectStyleSource, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, strokeOutlineViewBox, getElementTransform, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, subscribeBarFacePicturePixelSamples, getBarFacePicturePixelSampleVersion, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, buildInkGroupStrokes, getInkReplayStyles, INK_REPLAY_KEYFRAMES, buildContentPartStrokes, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, elementIdSelector, 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, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, modelDataToBlobUrl, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, getInlineEditorSelection, findChartPartTarget, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, collectCoherent3DOffNodeIds, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, hasGlyphEnvelope, buildGlyphEnvelope, getWarpPath, isWedgeCalloutPresetShape, isElementActionable, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent2, resolveDefaultPrintSettings, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, advanceChartMarkDrag, advanceChartValueDrag, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, readSoundFileAsDataUrl, applyTransitionSoundFile, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, withChartPointValue, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, getElementTransformWithoutRotation, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, buildLiveInkStrokeView, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, hasTiltData, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, switchSmartArtLayout, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-VQX7G75Z.mjs';
|
|
5
|
-
import { LOCALE_CATALOG, translationsEn } from './chunk-
|
|
1
|
+
import { computeFocusTargets, deckDataFieldChanged, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, collectStoredChats, exportAiChatLogs, applyElementUpdate } from './chunk-SUEZMQRT.mjs';
|
|
2
|
+
import { useViewerOptions, useReadOnlyRecommendationState, useCompatibilityToastsState, useReducedMotion, useViewerState, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useViewPreferencesSync, useLayoutSwitching, ViewerOptionsContext, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, safePrompt, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useViewerOptionsContext, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, syncSelectionHandleOverlay, playAnimationSound } from './chunk-VHFPZBUW.mjs';
|
|
3
|
+
import { MIN_ELEMENT_SIZE, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, getImageSurfaceStyle, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, SHAPE_PRESETS, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getImageSurfaceMaskStyle, 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, STROKE_DASH_OPTIONS } from './chunk-5T4Y4QPV.mjs';
|
|
4
|
+
import { hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, connectorWrapperTransform, getAriaRoleDescription, getAriaLabel, getAriaRole, resolveElementInteractivity, isEditableTextElement, buildTextStyleOverrideCss, isElementRendered, resolveElementAriaAttributes, getImageEffectsOpacity, getImageEffectsFilter, inlineElementPointerEvents, isHollowShapeElement, LINK_TOOLTIP_HOST_CLASS, ACTION_BUTTON_PRESETS, mediaTransportVisible, isInkElement, getGroupChildParentFill, getElementLabel, SWITCHABLE_LAYOUT_TYPES, compileEquationTemplateMathMl, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, resolveAutosaveActivation, buildThemeColorMap, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, resolveExpiredAutosaveSnapshots, resolveHistoryDepth, applyAutoCorrect, resolveImageResolutionScale, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, shouldShowAutosaveRecoveryPrompt, resolveOptionRootClasses, resolve3DRenderingFlags, resolveSlideSizeSelection, buildDeckSaveOptions, paintedStrokeWidth, buildCssGradientFromShapeStyle, ensureActionAffordanceStyles, resolveElementActionAffordance, actionAffordanceLabels, resolveElementHighlightClick, applyHighlightClickStyle, getComputedEffectStyle, getSoftEdgeSvgFilter, getEffectStyleSource, buildStrokeOutline, buildHollowHitOutline, buildSubpathFillOverlay, isImageLikeElement, strokeOutlineViewBox, getElementTransform, resolveRevealedSmartArtNodes, resolveRevealedDrawingShapes, buildSmartArtA11y, canDrillDown, computeSmartArtElementLayout, flattenNodes, buildSummaryZoomView, isImageTiled, getImageColorWashStyle, readEditableText, placeCaretAtEnd, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, resolveChartKind, subscribeBarFacePicturePixelSamples, getBarFacePicturePixelSampleVersion, ensureChartInteractionStyles, applyChartPartHighlight, resolveRevealedChartData, formatAxisValue, buildInkGroupStrokes, getInkReplayStyles, INK_REPLAY_KEYFRAMES, buildContentPartStrokes, getContentPartReplayStyles, resolveOleType, getOleAriaLabel, getOleTypeColor, getOleTypeLabel, filterRenderedElements, resolveGroupChildFill, isLinkedTextBox, getOverflowSegments, shouldUseSvgWarp, getTextBodyRotationTransform, placeholderPromptDescriptor, RULER_THICKNESS, RULER_FONT_SIZE, buildPreviewElements, deriveSlideFieldContext, SLIDE_TRANSITION_OPTIONS, hiddenSlideCue, HIDDEN_SLIDE_SLASH_GRADIENT, HIDDEN_SLIDE_LABEL_KEY, visibleTemplateElements, themeToCssVars, shouldClearAutosaveCacheOnClose, masterViewCrudActions, applyMasterViewCrudAction, masterViewCrudFailureKey, applyMotionPathPreset, resetSlideLayoutPath, DEFAULT_INSERT_CHART_KIND, hasCopyableFormat, templateSchemeFromTheme, createBackstagePresentation, playFeedbackSound, shouldDiscardAutosaveOnSuccessfulSave, setMasterViewBackgroundColor, compatToastStackStyle, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, isHeaderFooterDateTextVisible, isHeaderFooterHeaderTextVisible, isHeaderFooterFooterTextVisible, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, elementIdSelector, 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, resolveRevealedDrawingShapeNodeIds, styleShadowFilter, buildChromeStyle, modelDataToBlobUrl, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, getInlineEditorSelection, findChartPartTarget, buildSurfaceChart3DDataForElement, buildBarChart3DDataForElement, buildLineChart3DDataForElement, buildAreaChart3DDataForElement, buildPieChart3DDataForElement, withChartTitle, buildSmartArt3DModel, collectCoherent3DOffNodeIds, isBrowserOpenableMime, formatBytes, getOleDisplayName, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, hasGlyphEnvelope, buildGlyphEnvelope, getWarpPath, isWedgeCalloutPresetShape, isElementActionable, getSlideBackgroundStyle, pushRecentColor, mruColorsPatch, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, resolveScreenTip, masterViewBackgroundColor, buildFieldSubstitutionContext, shouldConfirmExternalHyperlink, safeOpenUrl, resolvePresentationAction, isPpactionUrl, parsePpactionUrl, isPresentationAdvanceClick, toggleBlackboard, PRESENT_TOOLBAR_CLASSES, buildContextMenuEntries, themeColorSchemesEqual, EXPANDED_MAX_HEIGHT, STATUS_BAR_CLASSES, buildBarActions, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, compileLatexEquation, convertLatexToOmml, EQUATION_TEMPLATES, clampPercent2, resolveDefaultPrintSettings, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, CUSTOM_FONT_ACCEPT, activateModalFocus, buildCollaborationShareUrl, buildActiveSessionUsers, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, SORTER_MAX_ZOOM, canGoPrevious, formatSlideCounter, READING_VIEW_COUNTER_ATTR, canGoNext, READING_VIEW_ATTR, OUTLINE_LEVEL_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_ROW_ATTR, OUTLINE_VIEW_ATTR, mobileElapsedSince, nextPresentedSlide, presenterPrevDisabled, presenterNextDisabled, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, presenterTimerProgress, PRESENTER_CONSOLE_CLASSES, formatElapsed, centeredSvgTextLines, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, advanceChartMarkDrag, advanceChartValueDrag, buildChartMarkDragGeometry, beginChartMarkDrag, beginChartValueDrag, groupIntoParagraphs, substituteFieldText, extraQuickAccessCommands, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, COMMON_FONT_SIZES, textFontSizePtToPx, INSERT_CHART_TYPES, CHARACTER_SPACING_OPTIONS, OFFICE_COLOR_SWATCHES, shapeFillChange, shapeOutlineChange, readRibbonTransitionDraft, ribbonTransitionUpdates, playSlideTransitionPreview, RIBBON_TRANSITION_PRESETS, transitionSoundOptions, transitionSoundSelectedValue, DEFAULT_MOTION_PATH_PRESET_ID, SLIDE_SHOW_OPTIONS, slideShowOptionChange, readSlideShowOption, SLIDE_VIRTUALIZATION_THRESHOLD, PRESENTATION_HIT_TEST_CSS, PRESENTATION_STAGE_ATTRIBUTE, getSlideTransitionAnimations, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, SLIDE_TRANSITION_KEYFRAMES, buildStrokePathD, cursorForTool, annotationOverlayZIndex, presentationInkPath, resolveNotesSchematicBodyFontSizePx, motionPathFor, setMotionPath, getShapeAdjustmentHandleDescriptors, shouldShowElementHandles, PRESENTER_NAVIGATOR_LABEL_KEYS, PEN_COLORS, HIGHLIGHTER_COLORS, isBlackboardActive, scaleSlidesForSizeChange, slideSizeToCanvasPx, resolveSelectionPaneRename, PRESET_THEMES, resolveNotesSegments, segmentsToEditorHtml, DEBOUNCE_MS, createPlainNotesSegments, parseSegmentsFromRichEditor, segmentsToPlainText, getCurrentParagraphIndex, segmentsToParagraphs, paragraphsToSegments, MAX_INDENT_LEVEL, INDENT_PX, isUrlSafe, buildNotesPrintHtml, toggleSheet, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, buildSmartArtPreviewElement, sanitizeMathMl, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, downloadBlob, clampOptionNumber, QUICK_ACCESS_COMMAND_CATALOG, registerCustomFont, openReadingView, applyReadingViewCommand, createPresentationKeyBuffer, readingViewFitScale, READING_VIEW_STAGE_ATTR, buildOutline, applyOutlineEdit, mapOutlineKey, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, PRESENTER_CONSOLE_CONTROLS, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, withChartPointValue, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, backstageCardsFor, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, resolveDefaultFontFamily, textFontSizePxToPt, buildFontCatalog, buildThemeColorSwatchGrid, themeColorSwatchRows, findSelectedThemeSwatch, themeSwatchCommit, RIBBON_SHAPE_SWATCHES, canGroupSelection, canUngroupSelection, canSetStrokeWidth, strokeWidthOf, readSoundFileAsDataUrl, applyTransitionSoundFile, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SOUND_NONE_VALUE, clearTransitionSound, applyTransitionStockSound, transitionStockSoundId, getEffectSoundAsset, ENTRANCE_PRESET_VALUES, EMPHASIS_PRESET_VALUES, EXIT_PRESET_VALUES, MOTION_PATH_FAMILIES, motionPathFamilyLabelKey, motionPathPresetsByFamily, motionPathPresetLabelKey, masterViewPseudoSlide, authorConnectorBetweenSites, findEraserHitElementId, generateTicks, rulerDragToGuidePosition, getElementTransformWithoutRotation, getActiveXControlOverlayView, buildCommentMarkers, COMMENT_MARKER_SIZE, collectConnectorSiteCandidates, getConnectorEndpointHandles, findConnectorSiteNear, motionPathToSvgD, motionPathEndPixel, isEditableMotionPath, setMotionPathEnd, applyTableStyleDelete, applyTableStyleMapChange, themeColorLabel, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, COMMON_FONTS, handleReadingViewKey, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, isCurrentLayout, SLIDE_TEMPLATES, computeAnchoredPopupPosition, buildLiveInkStrokeView, CONNECTOR_SITE_SNAP_PX, resolveConnectorEndpointUpdate, withConnectorEndpointUpdate, getShapeConnectionSites, isElementLocked, mergeSlideTransition, mapSlideSorterKey, isEditorTextInputTarget, clampSorterZoom, buildLayoutPreviewGeometry, buildSlideTemplateContent, hasTiltData, elementLockTogglePatch, buildTableDataGrid, appendTableElementRow, removeLastTableElementRow, appendTableElementColumn, removeLastTableElementColumn, removeTableElementColumn, removeTableElementRow, setTableElementCellText, TABLE_STYLE_PRESETS, applyTableStylePreset, tableStyleAssignmentUpdate, evenColumnWidths, redistributeColumnWidth, evenRowHeights, patchChartData, collapseChartTitleRunsForEdit, chartGridlinesState, chartGridlinesPatch, seriesSecondaryAxisPatch, setChartCategoryLabel, setChartCellValue, addChartCategory, removeChartCategory, addChartSeries, removeChartSeries, hideChartSeries, restoreFilteredSeries, setDataLabelsRangeCache, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, describeSmartArtBounds, canAddTopLevelNode, classifyExtraConnections, siblingIndex, siblingCount, canRemoveTopLevelNode, canInteractWithElement, buildOleObjectNamePatch, getOleObjectTypeLabel, sanitizeGradientStops, shouldShowAccessibilitySection, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, schemaLabel, THEME_COLOR_SLOT_LABEL_KEYS, SLIDE_SIZE_PRESETS, TRANSITION_VALID_DIRECTIONS, TRANSITION_ORIENTATION_TYPES, clampTransitionNumber, TRANSITION_SPEED_OPTIONS, TRANSITION_MORPH_OPTIONS, flattenTagCollections, resolveTemplateBackgroundRows, formatCommentTimestamp, commentMentionQuery, matchCommentMentionAuthors, buildAnimationTimelineRows, clearMotionPath, getEffectSoundState, setEffectSound, setEffectStockSound, setAfterAnimation, setAfterAnimationColor, DIRECTIONAL_PRESETS, buildAnimationTimelineBars, motionPathPresetIdForPath, EFFECT_SOUND_CATALOGUE, normalizeTableStyleGuid, describeTableStyleEditor, TABLE_STYLE_EDITOR_PARTS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, resolveDisplayedChartType, CHART_TYPE_OPTIONS, BAR3D_SHAPE_OPTIONS, bar3DShapePatch, RADAR_STYLE_OPTIONS, radarStylePatch, SURFACE_WIREFRAME_OPTIONS, surfaceWireframePatch, isSeriesUsingSecondaryAxis, listChartUserShapeRows, withChartUserShapeAdded, createDefaultChartUserShape, withChartUserShapeRowRemoved, withChartUserShapeRowTextUpdated, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, addSmartArtNodeAsChild, removeSmartArtNode, addSiblingAfter, removeEmptyNode, demote, promote, reorder, clampCropValue, DUOTONE_PRESETS, ARTISTIC_EFFECTS, mediaTrimEndSeconds, trimmedMediaDurationMs, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, buildOleEditDialogDescriptor, buildOleContentUpdatePatch, applyOleSheetCellEdit, getOleSheetGrid, applyOleDocumentParagraphEdit, getOleDocumentParagraphs, applyOleNestedDeckElementTextEdit, getOleNestedDeckDetail, replaceOleFile, getNonVisualDescriptionFields, resolveActionType, ELEMENT_ACTION_TYPE_OPTIONS, elementActionToPptxAction, canCommitActionType, slideSizeFromPreset, withSlideSizeOrientation, TRANSITION_DIR_ARROWS, buildDirectionGrid, updateTagInCollections, deleteTagFromCollections, addTagToCollections, commentTextSegments, COMMENT_MENTION_CLASS, COMMENT_MENTION_ATTRIBUTE, insertCommentMention, reorderAnimationTimelineRows, applyAnimationTimelineOrder, animationEffectLabel, TABLE_STYLE_BORDER_SIDES, applyTableStyleFieldEdit, createTableStyleEntry, addTableStyleToMap, deleteTableStyleFromMap, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, getChartUserShapeGroupTransform, withChartUserShapeGroupChildAdded, createDefaultChartUserShapeGroupChild, withChartUserShapeRowUpdated, getChartUserShapeRowChartBox, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRotationUpdated, withChartUserShapeRowChartBoxUpdated, switchSmartArtLayout, mediaTrimEndMsFromSeconds, validateMediaTrimRange, SHAPE_QUICK_STYLES, quickStyleSwatchCss, PATTERN_PRESET_OPTIONS, getPatternSvg, COMPOUND_LINE_OPTIONS, LINE_JOIN_OPTIONS, LINE_CAP_OPTIONS, TEXT_WARP_PRESETS, warpPreviewPath, text3dPtToEmu, text3dEmuToPt, MATERIAL_PRESETS, toSlideIndex, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS, FILL_PATTERN_LABEL_KEYS, openNativeEyeDropper, toggleText3dExtrusion, BEVEL_PRESETS } from './chunk-6BNPHEEX.mjs';
|
|
5
|
+
import { LOCALE_CATALOG, translationsEn } from './chunk-TAGG5YNA.mjs';
|
|
6
6
|
import React20, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, Suspense, useLayoutEffect, useContext, useSyncExternalStore, useId, Fragment as Fragment$1, useDeferredValue } from 'react';
|
|
7
7
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import { useTranslation } from 'react-i18next';
|
|
@@ -514,7 +514,7 @@ function FailedToLoad() {
|
|
|
514
514
|
var LazyArea3DChartScene = React20.lazy(
|
|
515
515
|
async () => {
|
|
516
516
|
try {
|
|
517
|
-
return await import('./Area3DChartScene-
|
|
517
|
+
return await import('./Area3DChartScene-OAD36KIX.mjs');
|
|
518
518
|
} catch {
|
|
519
519
|
return { default: FailedToLoad };
|
|
520
520
|
}
|
|
@@ -583,7 +583,7 @@ function FailedToLoad2() {
|
|
|
583
583
|
var LazyBar3DChartScene = React20.lazy(
|
|
584
584
|
async () => {
|
|
585
585
|
try {
|
|
586
|
-
return await import('./Bar3DChartScene-
|
|
586
|
+
return await import('./Bar3DChartScene-XNNXF26T.mjs');
|
|
587
587
|
} catch {
|
|
588
588
|
return { default: FailedToLoad2 };
|
|
589
589
|
}
|
|
@@ -686,7 +686,7 @@ function FailedToLoad3() {
|
|
|
686
686
|
var LazyLine3DChartScene = React20.lazy(
|
|
687
687
|
async () => {
|
|
688
688
|
try {
|
|
689
|
-
return await import('./Line3DChartScene-
|
|
689
|
+
return await import('./Line3DChartScene-MNNPB3LZ.mjs');
|
|
690
690
|
} catch {
|
|
691
691
|
return { default: FailedToLoad3 };
|
|
692
692
|
}
|
|
@@ -755,7 +755,7 @@ function FailedToLoad4() {
|
|
|
755
755
|
var LazyPieChart3DScene = React20.lazy(
|
|
756
756
|
async () => {
|
|
757
757
|
try {
|
|
758
|
-
return await import('./PieChart3DScene-
|
|
758
|
+
return await import('./PieChart3DScene-KYZSSG5X.mjs');
|
|
759
759
|
} catch {
|
|
760
760
|
return { default: FailedToLoad4 };
|
|
761
761
|
}
|
|
@@ -822,7 +822,7 @@ function FailedToLoad5() {
|
|
|
822
822
|
var LazySurfaceChart3DScene = React20.lazy(
|
|
823
823
|
async () => {
|
|
824
824
|
try {
|
|
825
|
-
return await import('./SurfaceChart3DScene-
|
|
825
|
+
return await import('./SurfaceChart3DScene-ZUP4PRUZ.mjs');
|
|
826
826
|
} catch {
|
|
827
827
|
return { default: FailedToLoad5 };
|
|
828
828
|
}
|
|
@@ -3165,7 +3165,7 @@ function FailedToLoad6() {
|
|
|
3165
3165
|
var LazyModel3DScene = React20.lazy(
|
|
3166
3166
|
async () => {
|
|
3167
3167
|
try {
|
|
3168
|
-
return await import('./Model3DScene-
|
|
3168
|
+
return await import('./Model3DScene-5MUREFLY.mjs');
|
|
3169
3169
|
} catch {
|
|
3170
3170
|
return { default: FailedToLoad6 };
|
|
3171
3171
|
}
|
|
@@ -5980,6 +5980,11 @@ var OV = [
|
|
|
5980
5980
|
labelKey: "pptx.file.saveAsPptmTooltip",
|
|
5981
5981
|
i: /* @__PURE__ */ jsx(LuDatabase, { className: `${ics} text-muted-foreground` })
|
|
5982
5982
|
},
|
|
5983
|
+
{
|
|
5984
|
+
k: "ppt",
|
|
5985
|
+
labelKey: "pptx.file.saveAsPptTooltip",
|
|
5986
|
+
i: /* @__PURE__ */ jsx(LuFileText, { className: `${ics} text-muted-foreground` })
|
|
5987
|
+
},
|
|
5983
5988
|
{ k: "---0", labelKey: "", i: null },
|
|
5984
5989
|
{
|
|
5985
5990
|
k: "print",
|
|
@@ -6258,41 +6263,85 @@ function ArrangeSection(p) {
|
|
|
6258
6263
|
/* @__PURE__ */ jsx("span", { className: "text-[9px] text-muted-foreground leading-none", children: t("pptx.arrange.groupLabel") })
|
|
6259
6264
|
] });
|
|
6260
6265
|
}
|
|
6261
|
-
function
|
|
6262
|
-
const { t } = useTranslation();
|
|
6263
|
-
const canEdit = p.canEdit !== false;
|
|
6264
|
-
const draft = React20.useMemo(() => readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
|
|
6265
|
-
const [durationBuffer, setDurationBuffer] = React20.useState(null);
|
|
6266
|
-
const [advanceBuffer, setAdvanceBuffer] = React20.useState(null);
|
|
6267
|
-
const commit = React20.useCallback(
|
|
6268
|
-
(changes) => {
|
|
6269
|
-
p.onTransitionChange(ribbonTransitionUpdates({ ...draft, ...changes }));
|
|
6270
|
-
},
|
|
6271
|
-
[draft, p]
|
|
6272
|
-
);
|
|
6266
|
+
function useTransitionSoundPicker(activeSlide, onTransitionChange) {
|
|
6273
6267
|
const soundFileInputRef = React20.useRef(null);
|
|
6274
6268
|
const handleSoundFilePicked = React20.useCallback(
|
|
6275
6269
|
(file) => {
|
|
6276
6270
|
void readSoundFileAsDataUrl(file).then((dataUrl) => {
|
|
6277
6271
|
if (dataUrl) {
|
|
6278
|
-
|
|
6272
|
+
onTransitionChange(applyTransitionSoundFile({ name: file.name, dataUrl }));
|
|
6279
6273
|
}
|
|
6280
6274
|
return void 0;
|
|
6281
6275
|
});
|
|
6282
6276
|
},
|
|
6283
|
-
[
|
|
6277
|
+
[onTransitionChange]
|
|
6284
6278
|
);
|
|
6285
|
-
const handleSoundSelectChange = (
|
|
6286
|
-
|
|
6287
|
-
|
|
6288
|
-
|
|
6289
|
-
|
|
6279
|
+
const handleSoundSelectChange = React20.useCallback(
|
|
6280
|
+
(event) => {
|
|
6281
|
+
const value = event.target.value;
|
|
6282
|
+
if (value === TRANSITION_SOUND_OTHER_VALUE) {
|
|
6283
|
+
soundFileInputRef.current?.click();
|
|
6284
|
+
event.target.value = transitionSoundSelectedValue(activeSlide?.transition);
|
|
6285
|
+
return;
|
|
6286
|
+
}
|
|
6287
|
+
if (value === TRANSITION_SOUND_NONE_VALUE) {
|
|
6288
|
+
onTransitionChange(clearTransitionSound());
|
|
6289
|
+
return;
|
|
6290
|
+
}
|
|
6291
|
+
const patch = applyTransitionStockSound(value);
|
|
6292
|
+
if (patch) {
|
|
6293
|
+
onTransitionChange(patch);
|
|
6294
|
+
}
|
|
6295
|
+
},
|
|
6296
|
+
[activeSlide, onTransitionChange]
|
|
6297
|
+
);
|
|
6298
|
+
const handleSoundFileChange = React20.useCallback(
|
|
6299
|
+
(event) => {
|
|
6300
|
+
const file = event.target.files?.[0];
|
|
6301
|
+
if (file) {
|
|
6302
|
+
handleSoundFilePicked(file);
|
|
6303
|
+
}
|
|
6304
|
+
event.target.value = "";
|
|
6305
|
+
},
|
|
6306
|
+
[handleSoundFilePicked]
|
|
6307
|
+
);
|
|
6308
|
+
const stockSoundId = transitionStockSoundId(activeSlide?.transition);
|
|
6309
|
+
const handleSoundPreview = React20.useCallback(() => {
|
|
6310
|
+
if (!stockSoundId) {
|
|
6290
6311
|
return;
|
|
6291
6312
|
}
|
|
6292
|
-
|
|
6293
|
-
|
|
6313
|
+
const asset = getEffectSoundAsset(stockSoundId);
|
|
6314
|
+
if (asset) {
|
|
6315
|
+
playAnimationSound(asset.dataUrl);
|
|
6294
6316
|
}
|
|
6317
|
+
}, [stockSoundId]);
|
|
6318
|
+
return {
|
|
6319
|
+
soundFileInputRef,
|
|
6320
|
+
stockSoundId,
|
|
6321
|
+
handleSoundSelectChange,
|
|
6322
|
+
handleSoundFileChange,
|
|
6323
|
+
handleSoundPreview
|
|
6295
6324
|
};
|
|
6325
|
+
}
|
|
6326
|
+
function TransitionsSection(p) {
|
|
6327
|
+
const { t } = useTranslation();
|
|
6328
|
+
const canEdit = p.canEdit !== false;
|
|
6329
|
+
const draft = React20.useMemo(() => readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
|
|
6330
|
+
const [durationBuffer, setDurationBuffer] = React20.useState(null);
|
|
6331
|
+
const [advanceBuffer, setAdvanceBuffer] = React20.useState(null);
|
|
6332
|
+
const commit = React20.useCallback(
|
|
6333
|
+
(changes) => {
|
|
6334
|
+
p.onTransitionChange(ribbonTransitionUpdates({ ...draft, ...changes }));
|
|
6335
|
+
},
|
|
6336
|
+
[draft, p]
|
|
6337
|
+
);
|
|
6338
|
+
const {
|
|
6339
|
+
soundFileInputRef,
|
|
6340
|
+
stockSoundId,
|
|
6341
|
+
handleSoundSelectChange,
|
|
6342
|
+
handleSoundFileChange,
|
|
6343
|
+
handleSoundPreview
|
|
6344
|
+
} = useTransitionSoundPicker(p.activeSlide, p.onTransitionChange);
|
|
6296
6345
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6297
6346
|
/* @__PURE__ */ jsxs(
|
|
6298
6347
|
"button",
|
|
@@ -6362,6 +6411,17 @@ function TransitionsSection(p) {
|
|
|
6362
6411
|
children: transitionSoundOptions(p.activeSlide?.transition).map((option) => /* @__PURE__ */ jsx("option", { value: option.value, children: option.i18nKey ? t(option.i18nKey) : option.label }, option.value))
|
|
6363
6412
|
}
|
|
6364
6413
|
),
|
|
6414
|
+
/* @__PURE__ */ jsx(
|
|
6415
|
+
"button",
|
|
6416
|
+
{
|
|
6417
|
+
type: "button",
|
|
6418
|
+
"aria-label": t("pptx.animation.sound.preview"),
|
|
6419
|
+
onClick: handleSoundPreview,
|
|
6420
|
+
disabled: !stockSoundId,
|
|
6421
|
+
className: "shrink-0 rounded border border-border bg-muted p-1 disabled:opacity-40",
|
|
6422
|
+
children: /* @__PURE__ */ jsx(LuPlay, { className: "h-3 w-3" })
|
|
6423
|
+
}
|
|
6424
|
+
),
|
|
6365
6425
|
/* @__PURE__ */ jsx(
|
|
6366
6426
|
"input",
|
|
6367
6427
|
{
|
|
@@ -6369,13 +6429,7 @@ function TransitionsSection(p) {
|
|
|
6369
6429
|
type: "file",
|
|
6370
6430
|
accept: "audio/*",
|
|
6371
6431
|
className: "hidden",
|
|
6372
|
-
onChange:
|
|
6373
|
-
const file = e.target.files?.[0];
|
|
6374
|
-
if (file) {
|
|
6375
|
-
handleSoundFilePicked(file);
|
|
6376
|
-
}
|
|
6377
|
-
e.target.value = "";
|
|
6378
|
-
}
|
|
6432
|
+
onChange: handleSoundFileChange
|
|
6379
6433
|
}
|
|
6380
6434
|
)
|
|
6381
6435
|
] }),
|
|
@@ -6636,7 +6690,7 @@ function AccountPage() {
|
|
|
6636
6690
|
return void 0;
|
|
6637
6691
|
});
|
|
6638
6692
|
};
|
|
6639
|
-
const version = "3.
|
|
6693
|
+
const version = "3.10.0" ;
|
|
6640
6694
|
return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
6641
6695
|
/* @__PURE__ */ jsxs("section", { className: cardClass, children: [
|
|
6642
6696
|
/* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -6815,6 +6869,7 @@ var ICONS = {
|
|
|
6815
6869
|
saveAsPptx: LuDownload,
|
|
6816
6870
|
saveAsPpsx: LuPlay,
|
|
6817
6871
|
saveAsPptm: LuFileText,
|
|
6872
|
+
saveAsPpt: LuDatabase,
|
|
6818
6873
|
pdf: LuFileText,
|
|
6819
6874
|
png: LuFileImage,
|
|
6820
6875
|
video: LuVideo,
|
|
@@ -6839,6 +6894,7 @@ function BackstageCards({
|
|
|
6839
6894
|
saveAsPptx: props.onSaveAsPptx,
|
|
6840
6895
|
saveAsPpsx: props.onSaveAsPpsx,
|
|
6841
6896
|
saveAsPptm: props.onSaveAsPptm,
|
|
6897
|
+
saveAsPpt: props.onSaveAsPpt,
|
|
6842
6898
|
pdf: props.onExportPdf,
|
|
6843
6899
|
png: props.onExportPng,
|
|
6844
6900
|
video: props.onExportVideo,
|
|
@@ -9882,6 +9938,7 @@ function MobileSectionBody({
|
|
|
9882
9938
|
onSaveAsPptx: p.onSaveAsPptx,
|
|
9883
9939
|
onSaveAsPpsx: p.onSaveAsPpsx,
|
|
9884
9940
|
onSaveAsPptm: p.onSaveAsPptm,
|
|
9941
|
+
onSaveAsPpt: p.onSaveAsPpt,
|
|
9885
9942
|
hasMacros: p.hasMacros,
|
|
9886
9943
|
onCopySlideAsImage: p.onCopySlideAsImage,
|
|
9887
9944
|
onPrint: p.onPrint,
|
|
@@ -10692,6 +10749,7 @@ function OverflowMenu(p) {
|
|
|
10692
10749
|
pptx: p.onSaveAsPptx,
|
|
10693
10750
|
ppsx: p.onSaveAsPpsx,
|
|
10694
10751
|
pptm: p.onSaveAsPptm,
|
|
10752
|
+
ppt: p.onSaveAsPpt,
|
|
10695
10753
|
print: p.onPrint,
|
|
10696
10754
|
copyImg: p.onCopySlideAsImage,
|
|
10697
10755
|
a11y: p.onRunAccessibilityCheck,
|
|
@@ -11007,6 +11065,7 @@ function Toolbar(p) {
|
|
|
11007
11065
|
onSaveAsPptx: p.onSaveAsPptx,
|
|
11008
11066
|
onSaveAsPpsx: p.onSaveAsPpsx,
|
|
11009
11067
|
onSaveAsPptm: p.onSaveAsPptm,
|
|
11068
|
+
onSaveAsPpt: p.onSaveAsPpt,
|
|
11010
11069
|
hasMacros: p.hasMacros,
|
|
11011
11070
|
onCopySlideAsImage: p.onCopySlideAsImage,
|
|
11012
11071
|
onPrint: p.onPrint,
|
|
@@ -20667,19 +20726,32 @@ function AnimationTimelineSection({
|
|
|
20667
20726
|
] })
|
|
20668
20727
|
] });
|
|
20669
20728
|
}
|
|
20729
|
+
var NONE_VALUE = "none";
|
|
20730
|
+
var CURRENT_VALUE = "current";
|
|
20731
|
+
var OTHER_VALUE = "other";
|
|
20670
20732
|
function EffectSoundRow({
|
|
20671
20733
|
soundState,
|
|
20672
20734
|
canEdit,
|
|
20673
|
-
onPick
|
|
20735
|
+
onPick,
|
|
20736
|
+
onPickStock
|
|
20674
20737
|
}) {
|
|
20675
20738
|
const { t } = useTranslation();
|
|
20676
20739
|
const fileInputRef = React20.useRef(null);
|
|
20740
|
+
const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
|
|
20677
20741
|
const handleSelectChange = (event) => {
|
|
20678
|
-
|
|
20742
|
+
const value = event.target.value;
|
|
20743
|
+
if (value === OTHER_VALUE) {
|
|
20679
20744
|
fileInputRef.current?.click();
|
|
20680
20745
|
return;
|
|
20681
20746
|
}
|
|
20682
|
-
|
|
20747
|
+
if (value === NONE_VALUE) {
|
|
20748
|
+
onPick(void 0);
|
|
20749
|
+
return;
|
|
20750
|
+
}
|
|
20751
|
+
if (value === CURRENT_VALUE) {
|
|
20752
|
+
return;
|
|
20753
|
+
}
|
|
20754
|
+
onPickStock(value);
|
|
20683
20755
|
};
|
|
20684
20756
|
const handleFileChange = (event) => {
|
|
20685
20757
|
const file = event.target.files?.[0];
|
|
@@ -20695,22 +20767,46 @@ function EffectSoundRow({
|
|
|
20695
20767
|
};
|
|
20696
20768
|
reader.readAsDataURL(file);
|
|
20697
20769
|
};
|
|
20770
|
+
const handlePreview = () => {
|
|
20771
|
+
if (!soundState.catalogueId) {
|
|
20772
|
+
return;
|
|
20773
|
+
}
|
|
20774
|
+
const asset = getEffectSoundAsset(soundState.catalogueId);
|
|
20775
|
+
if (asset) {
|
|
20776
|
+
playAnimationSound(asset.dataUrl);
|
|
20777
|
+
}
|
|
20778
|
+
};
|
|
20698
20779
|
return /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
20699
20780
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.sound") }),
|
|
20700
|
-
/* @__PURE__ */ jsxs(
|
|
20701
|
-
|
|
20702
|
-
|
|
20703
|
-
|
|
20704
|
-
|
|
20705
|
-
|
|
20706
|
-
|
|
20707
|
-
|
|
20708
|
-
|
|
20709
|
-
|
|
20710
|
-
|
|
20711
|
-
|
|
20712
|
-
|
|
20713
|
-
|
|
20781
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
20782
|
+
/* @__PURE__ */ jsxs(
|
|
20783
|
+
"select",
|
|
20784
|
+
{
|
|
20785
|
+
"aria-label": t("pptx.animation.sound"),
|
|
20786
|
+
value: selectedValue,
|
|
20787
|
+
onChange: handleSelectChange,
|
|
20788
|
+
disabled: !canEdit,
|
|
20789
|
+
className: SELECT_CLS,
|
|
20790
|
+
children: [
|
|
20791
|
+
/* @__PURE__ */ jsx("option", { value: NONE_VALUE, children: t("pptx.animation.sound.none") }),
|
|
20792
|
+
soundState.hasSound && !soundState.catalogueId && /* @__PURE__ */ jsx("option", { value: CURRENT_VALUE, children: soundState.fileName ?? t("pptx.animation.sound.custom") }),
|
|
20793
|
+
EFFECT_SOUND_CATALOGUE.map((entry) => /* @__PURE__ */ jsx("option", { value: entry.id, children: t(entry.i18nKey) }, entry.id)),
|
|
20794
|
+
/* @__PURE__ */ jsx("option", { value: OTHER_VALUE, children: t("pptx.animation.sound.other") })
|
|
20795
|
+
]
|
|
20796
|
+
}
|
|
20797
|
+
),
|
|
20798
|
+
/* @__PURE__ */ jsx(
|
|
20799
|
+
"button",
|
|
20800
|
+
{
|
|
20801
|
+
type: "button",
|
|
20802
|
+
"aria-label": t("pptx.animation.sound.preview"),
|
|
20803
|
+
onClick: handlePreview,
|
|
20804
|
+
disabled: !soundState.catalogueId,
|
|
20805
|
+
className: "shrink-0 rounded border border-border bg-muted p-1 disabled:opacity-40",
|
|
20806
|
+
children: /* @__PURE__ */ jsx(LuPlay, { className: "h-3 w-3" })
|
|
20807
|
+
}
|
|
20808
|
+
)
|
|
20809
|
+
] }),
|
|
20714
20810
|
/* @__PURE__ */ jsx(
|
|
20715
20811
|
"input",
|
|
20716
20812
|
{
|
|
@@ -21081,6 +21177,15 @@ function useAnimationHandlers({
|
|
|
21081
21177
|
},
|
|
21082
21178
|
[canEdit, updateAnimations, selectedElement.id]
|
|
21083
21179
|
);
|
|
21180
|
+
const handleEffectStockSoundPick = useCallback(
|
|
21181
|
+
(catalogueId) => {
|
|
21182
|
+
if (!canEdit) {
|
|
21183
|
+
return;
|
|
21184
|
+
}
|
|
21185
|
+
updateAnimations((anims) => setEffectStockSound(anims, selectedElement.id, catalogueId));
|
|
21186
|
+
},
|
|
21187
|
+
[canEdit, updateAnimations, selectedElement.id]
|
|
21188
|
+
);
|
|
21084
21189
|
const handleAfterAnimationChange = useCallback(
|
|
21085
21190
|
(action) => {
|
|
21086
21191
|
if (!canEdit) {
|
|
@@ -21160,6 +21265,7 @@ function useAnimationHandlers({
|
|
|
21160
21265
|
handleMotionPathChange,
|
|
21161
21266
|
effectSoundState,
|
|
21162
21267
|
handleEffectSoundPick,
|
|
21268
|
+
handleEffectStockSoundPick,
|
|
21163
21269
|
handleAfterAnimationChange,
|
|
21164
21270
|
handleAfterAnimationColorChange,
|
|
21165
21271
|
getTimelineLabel,
|
|
@@ -21200,6 +21306,7 @@ function AnimationPanel({
|
|
|
21200
21306
|
handleMotionPathChange,
|
|
21201
21307
|
effectSoundState,
|
|
21202
21308
|
handleEffectSoundPick,
|
|
21309
|
+
handleEffectStockSoundPick,
|
|
21203
21310
|
handleAfterAnimationChange,
|
|
21204
21311
|
handleAfterAnimationColorChange,
|
|
21205
21312
|
handlePreviewClick
|
|
@@ -21323,7 +21430,8 @@ function AnimationPanel({
|
|
|
21323
21430
|
{
|
|
21324
21431
|
soundState: effectSoundState,
|
|
21325
21432
|
canEdit,
|
|
21326
|
-
onPick: handleEffectSoundPick
|
|
21433
|
+
onPick: handleEffectSoundPick,
|
|
21434
|
+
onPickStock: handleEffectStockSoundPick
|
|
21327
21435
|
}
|
|
21328
21436
|
),
|
|
21329
21437
|
/* @__PURE__ */ jsx(
|
|
@@ -22709,6 +22817,87 @@ function ChartErrorBarOptions({
|
|
|
22709
22817
|
}) })
|
|
22710
22818
|
] });
|
|
22711
22819
|
}
|
|
22820
|
+
function ChartFilteredSeriesOptions({
|
|
22821
|
+
chartData,
|
|
22822
|
+
canEdit,
|
|
22823
|
+
onHideSeries,
|
|
22824
|
+
onRestoreSeries,
|
|
22825
|
+
onSetDataLabelsRangeCache
|
|
22826
|
+
}) {
|
|
22827
|
+
const { t } = useTranslation();
|
|
22828
|
+
const filteredSeries = chartData.filteredSeries ?? [];
|
|
22829
|
+
const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
|
|
22830
|
+
if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
|
|
22831
|
+
return null;
|
|
22832
|
+
}
|
|
22833
|
+
return /* @__PURE__ */ jsxs("div", { className: CARD2, children: [
|
|
22834
|
+
/* @__PURE__ */ jsx("div", { className: HEADING2, children: t("pptx.chart.chartFilters") }),
|
|
22835
|
+
chartData.series.length > 1 && /* @__PURE__ */ jsx("div", { className: "space-y-1", children: chartData.series.map((series, index) => /* @__PURE__ */ jsxs(
|
|
22836
|
+
"div",
|
|
22837
|
+
{
|
|
22838
|
+
className: "flex items-center gap-2 text-[11px]",
|
|
22839
|
+
children: [
|
|
22840
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate", title: series.name, children: series.name }),
|
|
22841
|
+
/* @__PURE__ */ jsx(
|
|
22842
|
+
"button",
|
|
22843
|
+
{
|
|
22844
|
+
type: "button",
|
|
22845
|
+
className: BTN2,
|
|
22846
|
+
disabled: !canEdit,
|
|
22847
|
+
"aria-label": t("pptx.chart.hideSeries", { name: series.name }),
|
|
22848
|
+
"data-testid": `chart-series-hide-${index}`,
|
|
22849
|
+
onClick: () => onHideSeries(index),
|
|
22850
|
+
children: /* @__PURE__ */ jsx(LuEyeOff, { className: "size-3", "aria-hidden": "true" })
|
|
22851
|
+
}
|
|
22852
|
+
)
|
|
22853
|
+
]
|
|
22854
|
+
},
|
|
22855
|
+
`visible-${series.name}-${index}`
|
|
22856
|
+
)) }),
|
|
22857
|
+
filteredSeries.length > 0 && /* @__PURE__ */ jsx("div", { className: "space-y-1", children: filteredSeries.map((filtered, index) => {
|
|
22858
|
+
const name = filtered.name ?? chartData.filteredSeriesTitle ?? t("pptx.chart.seriesShort");
|
|
22859
|
+
return /* @__PURE__ */ jsxs(
|
|
22860
|
+
"div",
|
|
22861
|
+
{
|
|
22862
|
+
className: "flex items-center gap-2 text-[11px] opacity-60",
|
|
22863
|
+
children: [
|
|
22864
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate", title: name, children: name }),
|
|
22865
|
+
/* @__PURE__ */ jsx(
|
|
22866
|
+
"button",
|
|
22867
|
+
{
|
|
22868
|
+
type: "button",
|
|
22869
|
+
className: BTN2,
|
|
22870
|
+
disabled: !canEdit,
|
|
22871
|
+
"aria-label": t("pptx.chart.showSeries", { name }),
|
|
22872
|
+
"data-testid": `chart-series-show-${index}`,
|
|
22873
|
+
onClick: () => onRestoreSeries(index),
|
|
22874
|
+
children: /* @__PURE__ */ jsx(LuEye, { className: "size-3", "aria-hidden": "true" })
|
|
22875
|
+
}
|
|
22876
|
+
)
|
|
22877
|
+
]
|
|
22878
|
+
},
|
|
22879
|
+
`filtered-${name}-${index}`
|
|
22880
|
+
);
|
|
22881
|
+
}) }),
|
|
22882
|
+
seriesWithRange.map(({ series, index: seriesIndex }) => /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
22883
|
+
/* @__PURE__ */ jsx("div", { className: "text-[11px] text-muted-foreground truncate", title: series.name, children: t("pptx.chart.valueFromCells", { name: series.name }) }),
|
|
22884
|
+
series.dataLabelOptions.dataLabelsRange.cache.map((text, pointIndex) => /* @__PURE__ */ jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
22885
|
+
/* @__PURE__ */ jsx("span", { className: "w-16 shrink-0 truncate text-muted-foreground", children: chartData.categories[pointIndex] ?? pointIndex }),
|
|
22886
|
+
/* @__PURE__ */ jsx(
|
|
22887
|
+
"input",
|
|
22888
|
+
{
|
|
22889
|
+
type: "text",
|
|
22890
|
+
disabled: !canEdit,
|
|
22891
|
+
className: "flex-1 bg-muted border border-border rounded px-1.5 py-0.5",
|
|
22892
|
+
value: text,
|
|
22893
|
+
"data-testid": `chart-dlbl-range-${seriesIndex}-${pointIndex}`,
|
|
22894
|
+
onChange: (e) => onSetDataLabelsRangeCache(seriesIndex, pointIndex, e.target.value)
|
|
22895
|
+
}
|
|
22896
|
+
)
|
|
22897
|
+
] }, pointIndex))
|
|
22898
|
+
] }, `range-${series.name}-${seriesIndex}`))
|
|
22899
|
+
] });
|
|
22900
|
+
}
|
|
22712
22901
|
function ChartMarkerOptions({
|
|
22713
22902
|
chartType,
|
|
22714
22903
|
series,
|
|
@@ -23616,6 +23805,36 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
|
23616
23805
|
},
|
|
23617
23806
|
[chartData, replaceChartData]
|
|
23618
23807
|
);
|
|
23808
|
+
const hideSeries = useCallback(
|
|
23809
|
+
(seriesIndex) => {
|
|
23810
|
+
const next = chartData && hideChartSeries(chartData, seriesIndex);
|
|
23811
|
+
if (next) {
|
|
23812
|
+
replaceChartData(next);
|
|
23813
|
+
}
|
|
23814
|
+
},
|
|
23815
|
+
[chartData, replaceChartData]
|
|
23816
|
+
);
|
|
23817
|
+
const restoreSeries = useCallback(
|
|
23818
|
+
(filteredIndex) => {
|
|
23819
|
+
const next = chartData && restoreFilteredSeries(chartData, filteredIndex);
|
|
23820
|
+
if (next) {
|
|
23821
|
+
replaceChartData(next);
|
|
23822
|
+
}
|
|
23823
|
+
},
|
|
23824
|
+
[chartData, replaceChartData]
|
|
23825
|
+
);
|
|
23826
|
+
const setLabelsRangeCache = useCallback(
|
|
23827
|
+
(seriesIndex, pointIndex, text) => {
|
|
23828
|
+
if (!series) {
|
|
23829
|
+
return;
|
|
23830
|
+
}
|
|
23831
|
+
const updated = series.map(
|
|
23832
|
+
(s, i) => i === seriesIndex ? setDataLabelsRangeCache(s, pointIndex, text) : s
|
|
23833
|
+
);
|
|
23834
|
+
updateChartData({ series: updated });
|
|
23835
|
+
},
|
|
23836
|
+
[series, updateChartData]
|
|
23837
|
+
);
|
|
23619
23838
|
const applyChartOp = useCallback(
|
|
23620
23839
|
(mutate) => {
|
|
23621
23840
|
if (!chartData) {
|
|
@@ -23783,6 +24002,16 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
|
23783
24002
|
onToggleSecondaryAxis: toggleSecondaryAxis
|
|
23784
24003
|
}
|
|
23785
24004
|
),
|
|
24005
|
+
/* @__PURE__ */ jsx(
|
|
24006
|
+
ChartFilteredSeriesOptions,
|
|
24007
|
+
{
|
|
24008
|
+
chartData,
|
|
24009
|
+
canEdit,
|
|
24010
|
+
onHideSeries: hideSeries,
|
|
24011
|
+
onRestoreSeries: restoreSeries,
|
|
24012
|
+
onSetDataLabelsRangeCache: setLabelsRangeCache
|
|
24013
|
+
}
|
|
24014
|
+
),
|
|
23786
24015
|
/* @__PURE__ */ jsx(
|
|
23787
24016
|
ChartUserShapeOptions,
|
|
23788
24017
|
{
|
|
@@ -23809,6 +24038,296 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
|
23809
24038
|
)
|
|
23810
24039
|
] });
|
|
23811
24040
|
}
|
|
24041
|
+
function OleSheetGridEditor({
|
|
24042
|
+
grid,
|
|
24043
|
+
onCellEdit,
|
|
24044
|
+
t
|
|
24045
|
+
}) {
|
|
24046
|
+
if (!grid || grid.rows.length === 0) {
|
|
24047
|
+
return /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: t("pptx.ole.editDialog.emptySheet") });
|
|
24048
|
+
}
|
|
24049
|
+
return /* @__PURE__ */ jsx("div", { className: "overflow-auto max-h-[50vh] border border-border rounded", children: /* @__PURE__ */ jsx("table", { className: "w-full text-xs border-collapse", children: /* @__PURE__ */ jsx("tbody", { children: grid.rows.map((row, rowIndex) => (
|
|
24050
|
+
// oxlint-disable-next-line no-array-index-key -- grid rows have no stable id
|
|
24051
|
+
/* @__PURE__ */ jsx("tr", { children: row.cells.map((cell, colIndex) => /* @__PURE__ */ jsx(
|
|
24052
|
+
"td",
|
|
24053
|
+
{
|
|
24054
|
+
className: "border border-border p-0",
|
|
24055
|
+
children: /* @__PURE__ */ jsx(
|
|
24056
|
+
"input",
|
|
24057
|
+
{
|
|
24058
|
+
type: "text",
|
|
24059
|
+
defaultValue: cell.value,
|
|
24060
|
+
"aria-label": t("pptx.ole.editDialog.cellEditLabel"),
|
|
24061
|
+
className: "w-full px-1.5 py-1 bg-transparent focus:bg-accent/40 focus:outline-none",
|
|
24062
|
+
onBlur: (e) => {
|
|
24063
|
+
if (e.target.value !== cell.value) {
|
|
24064
|
+
onCellEdit(rowIndex, colIndex, e.target.value);
|
|
24065
|
+
}
|
|
24066
|
+
}
|
|
24067
|
+
}
|
|
24068
|
+
)
|
|
24069
|
+
},
|
|
24070
|
+
colIndex
|
|
24071
|
+
)) }, rowIndex)
|
|
24072
|
+
)) }) }) });
|
|
24073
|
+
}
|
|
24074
|
+
function OleDocumentEditor({
|
|
24075
|
+
paragraphs,
|
|
24076
|
+
onEdit,
|
|
24077
|
+
t
|
|
24078
|
+
}) {
|
|
24079
|
+
if (!paragraphs || paragraphs.length === 0) {
|
|
24080
|
+
return /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: t("pptx.ole.editDialog.emptyDocument") });
|
|
24081
|
+
}
|
|
24082
|
+
return /* @__PURE__ */ jsx("div", { className: "space-y-2", children: paragraphs.map((paragraph, index) => /* @__PURE__ */ jsx(
|
|
24083
|
+
"textarea",
|
|
24084
|
+
{
|
|
24085
|
+
defaultValue: paragraph,
|
|
24086
|
+
rows: 2,
|
|
24087
|
+
className: "w-full px-2 py-1.5 rounded border border-border bg-muted text-foreground text-xs resize-y focus:outline-none focus:ring-2 focus:ring-primary/50",
|
|
24088
|
+
onBlur: (e) => {
|
|
24089
|
+
if (e.target.value !== paragraph) {
|
|
24090
|
+
onEdit(index, e.target.value);
|
|
24091
|
+
}
|
|
24092
|
+
}
|
|
24093
|
+
},
|
|
24094
|
+
index
|
|
24095
|
+
)) });
|
|
24096
|
+
}
|
|
24097
|
+
function OleDeckEditor({
|
|
24098
|
+
slides,
|
|
24099
|
+
onEdit,
|
|
24100
|
+
t
|
|
24101
|
+
}) {
|
|
24102
|
+
if (!slides || slides.length === 0) {
|
|
24103
|
+
return /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: t("pptx.ole.editDialog.deckEmpty") });
|
|
24104
|
+
}
|
|
24105
|
+
return /* @__PURE__ */ jsx("div", { className: "space-y-3", children: slides.map((slide) => /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
24106
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-xs font-medium", children: t("pptx.ole.editDialog.deckSlideLabel").replace("{{number}}", String(slide.index + 1)) }),
|
|
24107
|
+
slide.elements.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs italic", children: t("pptx.ole.editDialog.deckEmpty") }) : slide.elements.map((element) => /* @__PURE__ */ jsx(
|
|
24108
|
+
"input",
|
|
24109
|
+
{
|
|
24110
|
+
type: "text",
|
|
24111
|
+
defaultValue: element.text,
|
|
24112
|
+
className: "w-full px-2 py-1.5 rounded border border-border bg-muted text-foreground text-xs focus:outline-none focus:ring-2 focus:ring-primary/50",
|
|
24113
|
+
onBlur: (e) => {
|
|
24114
|
+
if (e.target.value !== element.text) {
|
|
24115
|
+
onEdit(slide.index, element.elementId, e.target.value);
|
|
24116
|
+
}
|
|
24117
|
+
}
|
|
24118
|
+
},
|
|
24119
|
+
element.elementId
|
|
24120
|
+
))
|
|
24121
|
+
] }, slide.index)) });
|
|
24122
|
+
}
|
|
24123
|
+
function OleEditorDialog({
|
|
24124
|
+
isOpen,
|
|
24125
|
+
onClose,
|
|
24126
|
+
element,
|
|
24127
|
+
onUpdateElement
|
|
24128
|
+
}) {
|
|
24129
|
+
const { t } = useTranslation();
|
|
24130
|
+
const dialogRef = useRef(null);
|
|
24131
|
+
const fileInputRef = useRef(null);
|
|
24132
|
+
const descriptor = buildOleEditDialogDescriptor(element);
|
|
24133
|
+
const [grid, setGrid] = useState(void 0);
|
|
24134
|
+
const [paragraphs, setParagraphs] = useState(void 0);
|
|
24135
|
+
const [deckSlides, setDeckSlides] = useState(void 0);
|
|
24136
|
+
const [loading, setLoading] = useState(false);
|
|
24137
|
+
const [saveError, setSaveError] = useState(false);
|
|
24138
|
+
useEffect(() => {
|
|
24139
|
+
if (!isOpen || !descriptor.contentTab) {
|
|
24140
|
+
return;
|
|
24141
|
+
}
|
|
24142
|
+
let cancelled = false;
|
|
24143
|
+
setLoading(true);
|
|
24144
|
+
const kind = descriptor.contentTab.kind;
|
|
24145
|
+
const load = async () => {
|
|
24146
|
+
if (kind === "sheet") {
|
|
24147
|
+
const value = await getOleSheetGrid(element);
|
|
24148
|
+
if (!cancelled) {
|
|
24149
|
+
setGrid(value);
|
|
24150
|
+
}
|
|
24151
|
+
} else if (kind === "document") {
|
|
24152
|
+
const value = await getOleDocumentParagraphs(element);
|
|
24153
|
+
if (!cancelled) {
|
|
24154
|
+
setParagraphs(value);
|
|
24155
|
+
}
|
|
24156
|
+
} else if (kind === "deck") {
|
|
24157
|
+
const value = await getOleNestedDeckDetail(element);
|
|
24158
|
+
if (!cancelled) {
|
|
24159
|
+
setDeckSlides(value);
|
|
24160
|
+
}
|
|
24161
|
+
}
|
|
24162
|
+
if (!cancelled) {
|
|
24163
|
+
setLoading(false);
|
|
24164
|
+
}
|
|
24165
|
+
};
|
|
24166
|
+
void load();
|
|
24167
|
+
return () => {
|
|
24168
|
+
cancelled = true;
|
|
24169
|
+
};
|
|
24170
|
+
}, [isOpen, element]);
|
|
24171
|
+
const commit = useCallback(
|
|
24172
|
+
(updated) => {
|
|
24173
|
+
if (!updated.oleContentDirty) {
|
|
24174
|
+
return;
|
|
24175
|
+
}
|
|
24176
|
+
onUpdateElement(buildOleContentUpdatePatch(updated));
|
|
24177
|
+
},
|
|
24178
|
+
[onUpdateElement]
|
|
24179
|
+
);
|
|
24180
|
+
const handleCellEdit = useCallback(
|
|
24181
|
+
async (row, col, value) => {
|
|
24182
|
+
try {
|
|
24183
|
+
const updated = await applyOleSheetCellEdit(element, { row, col, value });
|
|
24184
|
+
commit(updated);
|
|
24185
|
+
const refreshed = await getOleSheetGrid(updated);
|
|
24186
|
+
setGrid(refreshed);
|
|
24187
|
+
} catch {
|
|
24188
|
+
setSaveError(true);
|
|
24189
|
+
}
|
|
24190
|
+
},
|
|
24191
|
+
[element, commit]
|
|
24192
|
+
);
|
|
24193
|
+
const handleParagraphEdit = useCallback(
|
|
24194
|
+
async (index, text) => {
|
|
24195
|
+
try {
|
|
24196
|
+
const updated = await applyOleDocumentParagraphEdit(element, index, text);
|
|
24197
|
+
commit(updated);
|
|
24198
|
+
const refreshed = await getOleDocumentParagraphs(updated);
|
|
24199
|
+
setParagraphs(refreshed);
|
|
24200
|
+
} catch {
|
|
24201
|
+
setSaveError(true);
|
|
24202
|
+
}
|
|
24203
|
+
},
|
|
24204
|
+
[element, commit]
|
|
24205
|
+
);
|
|
24206
|
+
const handleDeckElementEdit = useCallback(
|
|
24207
|
+
async (slideIndex, deckElementId, text) => {
|
|
24208
|
+
try {
|
|
24209
|
+
const updated = await applyOleNestedDeckElementTextEdit(
|
|
24210
|
+
element,
|
|
24211
|
+
slideIndex,
|
|
24212
|
+
deckElementId,
|
|
24213
|
+
text
|
|
24214
|
+
);
|
|
24215
|
+
commit(updated);
|
|
24216
|
+
const refreshed = await getOleNestedDeckDetail(updated);
|
|
24217
|
+
setDeckSlides(refreshed);
|
|
24218
|
+
} catch {
|
|
24219
|
+
setSaveError(true);
|
|
24220
|
+
}
|
|
24221
|
+
},
|
|
24222
|
+
[element, commit]
|
|
24223
|
+
);
|
|
24224
|
+
const handleReplaceFile = useCallback(
|
|
24225
|
+
async (file) => {
|
|
24226
|
+
try {
|
|
24227
|
+
const bytes = new Uint8Array(await file.arrayBuffer());
|
|
24228
|
+
const updated = await replaceOleFile(element, bytes, file.name);
|
|
24229
|
+
commit(updated);
|
|
24230
|
+
onClose();
|
|
24231
|
+
} catch {
|
|
24232
|
+
setSaveError(true);
|
|
24233
|
+
}
|
|
24234
|
+
},
|
|
24235
|
+
[element, commit, onClose]
|
|
24236
|
+
);
|
|
24237
|
+
const handleKeyDown = useCallback(
|
|
24238
|
+
(e) => {
|
|
24239
|
+
if (e.key === "Escape") {
|
|
24240
|
+
e.preventDefault();
|
|
24241
|
+
onClose();
|
|
24242
|
+
}
|
|
24243
|
+
},
|
|
24244
|
+
[onClose]
|
|
24245
|
+
);
|
|
24246
|
+
if (!isOpen) {
|
|
24247
|
+
return null;
|
|
24248
|
+
}
|
|
24249
|
+
return /* @__PURE__ */ jsx(
|
|
24250
|
+
"div",
|
|
24251
|
+
{
|
|
24252
|
+
className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black/60 backdrop-blur-sm",
|
|
24253
|
+
onClick: (e) => {
|
|
24254
|
+
if (e.target === e.currentTarget) {
|
|
24255
|
+
onClose();
|
|
24256
|
+
}
|
|
24257
|
+
},
|
|
24258
|
+
onKeyDown: handleKeyDown,
|
|
24259
|
+
children: /* @__PURE__ */ jsxs(
|
|
24260
|
+
"div",
|
|
24261
|
+
{
|
|
24262
|
+
ref: dialogRef,
|
|
24263
|
+
className: "bg-background border border-border rounded-xl shadow-2xl w-[560px] max-h-[80vh] flex flex-col overflow-hidden",
|
|
24264
|
+
onClick: (e) => e.stopPropagation(),
|
|
24265
|
+
role: "dialog",
|
|
24266
|
+
"aria-modal": "true",
|
|
24267
|
+
tabIndex: -1,
|
|
24268
|
+
"aria-label": t(descriptor.titleKey),
|
|
24269
|
+
children: [
|
|
24270
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-5 py-3 border-b border-border", children: [
|
|
24271
|
+
/* @__PURE__ */ jsx("h2", { className: "text-sm font-semibold text-foreground", children: t(descriptor.titleKey) }),
|
|
24272
|
+
/* @__PURE__ */ jsx(
|
|
24273
|
+
"button",
|
|
24274
|
+
{
|
|
24275
|
+
type: "button",
|
|
24276
|
+
onClick: onClose,
|
|
24277
|
+
className: "p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground transition-colors",
|
|
24278
|
+
"aria-label": t("pptx.settings.close"),
|
|
24279
|
+
children: /* @__PURE__ */ jsx(LuX, { className: "w-4 h-4" })
|
|
24280
|
+
}
|
|
24281
|
+
)
|
|
24282
|
+
] }),
|
|
24283
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-5 py-4 space-y-3 text-sm", children: [
|
|
24284
|
+
loading && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: t("pptx.ole.editDialog.loading") }),
|
|
24285
|
+
saveError && /* @__PURE__ */ jsx("p", { className: "text-destructive text-xs", children: t("pptx.ole.editDialog.saveError") }),
|
|
24286
|
+
!loading && descriptor.contentTab?.kind === "sheet" && /* @__PURE__ */ jsx(OleSheetGridEditor, { grid, onCellEdit: handleCellEdit, t }),
|
|
24287
|
+
!loading && descriptor.contentTab?.kind === "document" && /* @__PURE__ */ jsx(OleDocumentEditor, { paragraphs, onEdit: handleParagraphEdit, t }),
|
|
24288
|
+
!loading && descriptor.contentTab?.kind === "deck" && /* @__PURE__ */ jsx(OleDeckEditor, { slides: deckSlides, onEdit: handleDeckElementEdit, t }),
|
|
24289
|
+
!descriptor.contentTab && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: t("pptx.ole.editDialog.unsupported") })
|
|
24290
|
+
] }),
|
|
24291
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2 px-5 py-3 border-t border-border", children: [
|
|
24292
|
+
/* @__PURE__ */ jsx(
|
|
24293
|
+
"input",
|
|
24294
|
+
{
|
|
24295
|
+
ref: fileInputRef,
|
|
24296
|
+
type: "file",
|
|
24297
|
+
className: "hidden",
|
|
24298
|
+
onChange: (e) => {
|
|
24299
|
+
const file = e.target.files?.[0];
|
|
24300
|
+
if (file) {
|
|
24301
|
+
void handleReplaceFile(file);
|
|
24302
|
+
}
|
|
24303
|
+
}
|
|
24304
|
+
}
|
|
24305
|
+
),
|
|
24306
|
+
/* @__PURE__ */ jsx(
|
|
24307
|
+
"button",
|
|
24308
|
+
{
|
|
24309
|
+
type: "button",
|
|
24310
|
+
onClick: () => fileInputRef.current?.click(),
|
|
24311
|
+
className: "px-3 py-1.5 rounded-lg text-xs text-foreground border border-border hover:bg-accent transition-colors",
|
|
24312
|
+
children: t("pptx.ole.editDialog.replaceFile")
|
|
24313
|
+
}
|
|
24314
|
+
),
|
|
24315
|
+
/* @__PURE__ */ jsx(
|
|
24316
|
+
"button",
|
|
24317
|
+
{
|
|
24318
|
+
type: "button",
|
|
24319
|
+
onClick: onClose,
|
|
24320
|
+
className: "px-4 py-1.5 rounded-lg text-xs font-medium bg-primary hover:bg-primary/80 text-white transition-colors",
|
|
24321
|
+
children: t("pptx.ole.editDialog.save")
|
|
24322
|
+
}
|
|
24323
|
+
)
|
|
24324
|
+
] })
|
|
24325
|
+
]
|
|
24326
|
+
}
|
|
24327
|
+
)
|
|
24328
|
+
}
|
|
24329
|
+
);
|
|
24330
|
+
}
|
|
23812
24331
|
|
|
23813
24332
|
// src/viewer/components/inspector/element-properties-constants.ts
|
|
23814
24333
|
var SELECT_CLS2 = "bg-muted border border-border rounded px-2 py-1";
|
|
@@ -23940,6 +24459,7 @@ function OlePropertiesPanel({
|
|
|
23940
24459
|
onUpdateElement
|
|
23941
24460
|
}) {
|
|
23942
24461
|
const { t } = useTranslation();
|
|
24462
|
+
const [isEditorOpen, setIsEditorOpen] = useState(false);
|
|
23943
24463
|
if (selectedElement.type !== "ole") {
|
|
23944
24464
|
return null;
|
|
23945
24465
|
}
|
|
@@ -23947,6 +24467,15 @@ function OlePropertiesPanel({
|
|
|
23947
24467
|
return /* @__PURE__ */ jsxs("div", { className: CARD, children: [
|
|
23948
24468
|
/* @__PURE__ */ jsx("div", { className: HEADING, children: t("pptx.ole.title") }),
|
|
23949
24469
|
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5 text-[11px]", children: [
|
|
24470
|
+
canEdit && !ole.isLinked && /* @__PURE__ */ jsx(
|
|
24471
|
+
"button",
|
|
24472
|
+
{
|
|
24473
|
+
type: "button",
|
|
24474
|
+
onClick: () => setIsEditorOpen(true),
|
|
24475
|
+
className: "w-full px-2 py-1.5 rounded border border-border text-foreground hover:bg-accent transition-colors text-[11px]",
|
|
24476
|
+
children: t("pptx.ole.editContent")
|
|
24477
|
+
}
|
|
24478
|
+
),
|
|
23950
24479
|
/* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
23951
24480
|
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.objectName") }),
|
|
23952
24481
|
/* @__PURE__ */ jsx(
|
|
@@ -23982,7 +24511,16 @@ function OlePropertiesPanel({
|
|
|
23982
24511
|
}
|
|
23983
24512
|
)
|
|
23984
24513
|
] })
|
|
23985
|
-
] })
|
|
24514
|
+
] }),
|
|
24515
|
+
/* @__PURE__ */ jsx(
|
|
24516
|
+
OleEditorDialog,
|
|
24517
|
+
{
|
|
24518
|
+
isOpen: isEditorOpen,
|
|
24519
|
+
onClose: () => setIsEditorOpen(false),
|
|
24520
|
+
element: ole,
|
|
24521
|
+
onUpdateElement
|
|
24522
|
+
}
|
|
24523
|
+
)
|
|
23986
24524
|
] });
|
|
23987
24525
|
}
|
|
23988
24526
|
function TransformPanel({
|
|
@@ -35726,6 +36264,7 @@ function ViewerToolbarSection(props) {
|
|
|
35726
36264
|
onSaveAsPptx: exportHandlers.handleSaveAsPptx,
|
|
35727
36265
|
onSaveAsPpsx: exportHandlers.handleSaveAsPpsx,
|
|
35728
36266
|
onSaveAsPptm: exportHandlers.handleSaveAsPptm,
|
|
36267
|
+
onSaveAsPpt: exportHandlers.handleSaveAsPpt,
|
|
35729
36268
|
hasMacros: s.hasMacros,
|
|
35730
36269
|
onCopySlideAsImage: exportHandlers.handleCopySlideAsImage,
|
|
35731
36270
|
onPrint: printHandlers.handlePrint,
|
|
@@ -37245,7 +37784,7 @@ function useTableStyleMapHandlers(input) {
|
|
|
37245
37784
|
var AiChatPanel = lazy(async () => {
|
|
37246
37785
|
const [{ useChat }, { default: Panel }] = await Promise.all([
|
|
37247
37786
|
import('@ai-sdk/react'),
|
|
37248
|
-
import('./AiChatPanel-
|
|
37787
|
+
import('./AiChatPanel-L5H455NZ.mjs')
|
|
37249
37788
|
]);
|
|
37250
37789
|
function BoundAiChatPanel(props) {
|
|
37251
37790
|
return /* @__PURE__ */ jsx(Panel, { ...props, useChat });
|