pptx-react-viewer 2.16.0 → 2.16.2
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 +4 -0
- package/dist/{AiChatPanel-VKGWK23E.js → AiChatPanel-MCGNCS7Q.js} +22 -22
- package/dist/AiChatPanel-MCGNCS7Q.js.br +0 -0
- package/dist/AiChatPanel-MCGNCS7Q.js.gz +0 -0
- package/dist/{AiChatPanel-TYU52HDW.mjs → AiChatPanel-WJXPCHQK.mjs} +3 -3
- package/dist/AiChatPanel-WJXPCHQK.mjs.br +0 -0
- package/dist/AiChatPanel-WJXPCHQK.mjs.gz +0 -0
- package/dist/{Model3DScene-267BHD5T.mjs → Model3DScene-IXW2AKAU.mjs} +1 -1
- package/dist/{Model3DScene-267BHD5T.mjs.br → Model3DScene-IXW2AKAU.mjs.br} +0 -0
- package/dist/Model3DScene-IXW2AKAU.mjs.gz +0 -0
- package/dist/{Model3DScene-TG7OSR6V.js → Model3DScene-Q2DTGVQ7.js} +2 -2
- package/dist/Model3DScene-Q2DTGVQ7.js.br +0 -0
- package/dist/Model3DScene-Q2DTGVQ7.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-GK4JHZAC.js → SurfaceChart3DScene-AD43LAOO.js} +2 -2
- package/dist/SurfaceChart3DScene-AD43LAOO.js.br +0 -0
- package/dist/SurfaceChart3DScene-AD43LAOO.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-RPRVXRQZ.mjs → SurfaceChart3DScene-MODEHQ6G.mjs} +1 -1
- package/dist/{SurfaceChart3DScene-RPRVXRQZ.mjs.br → SurfaceChart3DScene-MODEHQ6G.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-MODEHQ6G.mjs.gz +0 -0
- package/dist/{chunk-P3Y3OMAD.js → chunk-4GX347MG.js} +517 -65
- package/dist/chunk-4GX347MG.js.br +0 -0
- package/dist/{chunk-P3Y3OMAD.js.gz → chunk-4GX347MG.js.gz} +0 -0
- package/dist/{chunk-PILJZ5OE.js → chunk-CIK6XUOH.js} +3 -3
- package/dist/chunk-CIK6XUOH.js.br +0 -0
- package/dist/{chunk-PILJZ5OE.js.gz → chunk-CIK6XUOH.js.gz} +0 -0
- package/dist/{chunk-7W5MCYBN.js → chunk-JV6DI7AK.js} +1100 -1073
- package/dist/chunk-JV6DI7AK.js.br +0 -0
- package/dist/chunk-JV6DI7AK.js.gz +0 -0
- package/dist/{chunk-VNVURLZM.mjs → chunk-LDD2UVCV.mjs} +54 -27
- package/dist/chunk-LDD2UVCV.mjs.br +0 -0
- package/dist/chunk-LDD2UVCV.mjs.gz +0 -0
- package/dist/{chunk-OIITLGKQ.mjs → chunk-MDFCBYEM.mjs} +510 -65
- package/dist/chunk-MDFCBYEM.mjs.br +0 -0
- package/dist/{chunk-OIITLGKQ.mjs.gz → chunk-MDFCBYEM.mjs.gz} +0 -0
- package/dist/{chunk-GOPIG4VW.js → chunk-NKE64XVV.js} +348 -344
- package/dist/chunk-NKE64XVV.js.br +0 -0
- package/dist/chunk-NKE64XVV.js.gz +0 -0
- package/dist/{chunk-AX75ONFY.js → chunk-P6KM7RO5.js} +415 -396
- package/dist/chunk-P6KM7RO5.js.br +0 -0
- package/dist/chunk-P6KM7RO5.js.gz +0 -0
- package/dist/{chunk-ULB35HMJ.mjs → chunk-QI2JCXTH.mjs} +1 -1
- package/dist/chunk-QI2JCXTH.mjs.br +0 -0
- package/dist/chunk-QI2JCXTH.mjs.gz +0 -0
- package/dist/{chunk-TWPZJXLC.mjs → chunk-UWYHBCLM.mjs} +11 -7
- package/dist/chunk-UWYHBCLM.mjs.br +0 -0
- package/dist/chunk-UWYHBCLM.mjs.gz +0 -0
- package/dist/{chunk-FFBY2TKD.mjs → chunk-Z4CS2ZYN.mjs} +173 -154
- package/dist/chunk-Z4CS2ZYN.mjs.br +0 -0
- package/dist/chunk-Z4CS2ZYN.mjs.gz +0 -0
- package/dist/index.js +39 -39
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +43 -0
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +78 -78
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +3 -3
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/viewer/index.js +26 -26
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +5 -5
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-TYU52HDW.mjs.br +0 -0
- package/dist/AiChatPanel-TYU52HDW.mjs.gz +0 -0
- package/dist/AiChatPanel-VKGWK23E.js.br +0 -0
- package/dist/AiChatPanel-VKGWK23E.js.gz +0 -0
- package/dist/Model3DScene-267BHD5T.mjs.gz +0 -0
- package/dist/Model3DScene-TG7OSR6V.js.br +0 -0
- package/dist/Model3DScene-TG7OSR6V.js.gz +0 -0
- package/dist/SurfaceChart3DScene-GK4JHZAC.js.br +0 -0
- package/dist/SurfaceChart3DScene-GK4JHZAC.js.gz +0 -0
- package/dist/SurfaceChart3DScene-RPRVXRQZ.mjs.gz +0 -0
- package/dist/chunk-7W5MCYBN.js.br +0 -0
- package/dist/chunk-7W5MCYBN.js.gz +0 -0
- package/dist/chunk-AX75ONFY.js.br +0 -0
- package/dist/chunk-AX75ONFY.js.gz +0 -0
- package/dist/chunk-FFBY2TKD.mjs.br +0 -0
- package/dist/chunk-FFBY2TKD.mjs.gz +0 -0
- package/dist/chunk-GOPIG4VW.js.br +0 -0
- package/dist/chunk-GOPIG4VW.js.gz +0 -0
- package/dist/chunk-OIITLGKQ.mjs.br +0 -0
- package/dist/chunk-P3Y3OMAD.js.br +0 -0
- package/dist/chunk-PILJZ5OE.js.br +0 -0
- package/dist/chunk-TWPZJXLC.mjs.br +0 -0
- package/dist/chunk-TWPZJXLC.mjs.gz +0 -0
- package/dist/chunk-ULB35HMJ.mjs.br +0 -0
- package/dist/chunk-ULB35HMJ.mjs.gz +0 -0
- package/dist/chunk-VNVURLZM.mjs.br +0 -0
- package/dist/chunk-VNVURLZM.mjs.gz +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ThemePresets, PptxMarkdownConverter } from './chunk-
|
|
1
|
+
import { ThemePresets, PptxMarkdownConverter } from './chunk-MDFCBYEM.mjs';
|
|
2
2
|
import { __export } from './chunk-XGB3TDIC.mjs';
|
|
3
3
|
import * as mcp from 'pptx-viewer-mcp';
|
|
4
4
|
import * as mcpSchemas from 'pptx-viewer-mcp/schemas';
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, partitionTemplateElements, UNGROUPED_SECTION_ID, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-
|
|
1
|
+
import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, partitionTemplateElements, UNGROUPED_SECTION_ID, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-Z4CS2ZYN.mjs';
|
|
2
2
|
import { translationsEn } from './chunk-5YV26HMJ.mjs';
|
|
3
|
-
import { TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, PresentationAnimationController, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, attachPresentationVisibilityPause, buildMorphTransitionPlan, morphOptionToMode, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, buildInitialGuides, EncryptedFileError, saveAutosaveSnapshot, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, downloadBlob, sanitizeDownloadFilename, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, mayLeaveSlideShow, stopAllPersistentAudio, remapTextToSegments, guidePxToEmu, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, openPptxFile, readBackstageRecentFile, isActionHidden, buildElementClipboardPayload, generatePackageReadme, exportDeckJson, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, firstShowSlideIndex, mapPresentationWheel, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, runPresentationAction, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, resolveShowSlideIndexes, groupSlidesBySection, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, buildPrintHtmlDocument, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, elementActionToPptxAction, buildSmartArtPresetData, computeSnapToShape, publishLiveGeometry, computeMarqueeHitIds, mergeAdditiveSelection, applyResize, snapBoxToGrid, applyMotionPathPreset } from './chunk-
|
|
3
|
+
import { TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, createPresenceProjector, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, createWheelStepBuffer, createViewerZoomStore, clampZoomScale, mapEditingWheel, PresentationAnimationController, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, endAudienceDisplay, createPresentationKeyBuffer, acceptsPresentationInput, resolveAutoAdvanceDelayMs, hasShowSlideAfter, nextShowSlideIndex, previousShowSlideIndex, createPresenterShowGuard, attachPresentationVisibilityPause, buildMorphTransitionPlan, morphOptionToMode, buildMorphAnimationRules, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, buildInitialGuides, EncryptedFileError, saveAutosaveSnapshot, isTemplateElementId, hasShapeProperties, hasTextProperties, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, downloadBlob, sanitizeDownloadFilename, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, comparePresentation, applyAcceptSlide, applyAcceptAllSlides, collectUsedFonts, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, mayLeaveSlideShow, stopAllPersistentAudio, remapTextToSegments, guidePxToEmu, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, mapEditorKey, isEditorTextInputTarget, createViewerOptionsStore, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, createTouchGestureRecognizer, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, isKeyboardOpen, openPptxFile, readBackstageRecentFile, isActionHidden, buildElementClipboardPayload, generatePackageReadme, exportDeckJson, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, mapPresentationKey, lastShowSlideIndex, firstShowSlideIndex, mapPresentationWheel, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildSlideTemplateSlide, templateSchemeFromTheme, buildThemeColorMap, reResolveSlideColors, computeEntranceAnimationDelay, createPresentationSessionId, resolveTransitionDurationMs, runPresentationAction, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, resetPresenterTimer, presenterElapsed, stepPresenterZoom, togglePresenterTimer, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, resolveShowSlideIndexes, groupSlidesBySection, hasCopyableFormat, createBackstagePresentation, buildFieldSubstitutionContext, cloneElementForPaste, computeScrollDelta, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, rerouteConnectorsForMovedElements, applyReroutedConnectors, SvgExporter, buildPrintHtmlDocument, deleteTableColumn, rebuildTableStructureInRawXml, insertTableColumn, deleteTableRow, insertTableRow, updateCellTextStyleInRawXml, updateCellTextInRawXml, splitCell, updateMergeAttrsInRawXml, mergeCells, isPpactionUrl, parsePpactionUrl, safeOpenUrl, ACTION_BUTTON_PRESETS, elementActionToPptxAction, buildSmartArtPresetData, computeSnapToShape, publishLiveGeometry, computeMarqueeHitIds, mergeAdditiveSelection, applyResize, snapBoxToGrid, applyMotionPathPreset } from './chunk-MDFCBYEM.mjs';
|
|
4
4
|
import { useRef, useState, useEffect, useCallback, useMemo, useLayoutEffect, useSyncExternalStore, useImperativeHandle } from 'react';
|
|
5
5
|
import JSZip from 'jszip';
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
@@ -2546,11 +2546,15 @@ function usePresentationMode(input) {
|
|
|
2546
2546
|
}
|
|
2547
2547
|
return merged;
|
|
2548
2548
|
}, [morphPlan, presentationElementStates]);
|
|
2549
|
-
const morphedKeyframesCss = useMemo(
|
|
2550
|
-
()
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2549
|
+
const morphedKeyframesCss = useMemo(() => {
|
|
2550
|
+
if (!morphPlan) {
|
|
2551
|
+
return presentationKeyframesCss;
|
|
2552
|
+
}
|
|
2553
|
+
const imageRules = buildMorphAnimationRules(morphPlan, "", "incoming", "image");
|
|
2554
|
+
return `${presentationKeyframesCss ?? ""}
|
|
2555
|
+
${morphPlan.keyframesCss}
|
|
2556
|
+
${imageRules}`;
|
|
2557
|
+
}, [morphPlan, presentationKeyframesCss]);
|
|
2554
2558
|
return {
|
|
2555
2559
|
presentationSlideIndex,
|
|
2556
2560
|
setPresentationSlideIndex,
|
|
Binary file
|
|
Binary file
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { translationsEn } from './chunk-5YV26HMJ.mjs';
|
|
2
|
-
import { SHAPE_PRESET_DEFS, computeValueRangeForChart, VIEWER_SHORTCUT_REFERENCE, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, isTemplateElement, getImageFitStyle, isImageLikeElement, runMediaCommand, findMediaElementByElementId, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, getKinsokuLineBreakStyles, buildTextBody3DSceneStyle, resolveParagraphRtl, resolveParagraphAlign, resolveCssTextAlign, resolveParagraphStrutFontSize, colorWithOpacity, normalizeHexColor, build3DExtrusionData, isIdentityRectClip, getResolvedShapeClipPath, isStrokeOnlyPresetElement, normalizeStrokeDashType, buildCssGradientFromShapeStyle, buildShadowCssFromShapeStyle, buildInnerShadowCssFromShapeStyle, suppressesCssBorder, buildMultiLayerShadowCss, buildGlowBoxShadow, getCompoundLineBoxShadow, getSoftEdgeFilterId, getEffectDagFilter, buildPatternFillCss, buildReflectionCss, getCssBorderDashStyle, getCompoundLineBorderWidth, getSvgStrokeDasharray, buildSvgGradientDef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, DEFAULT_FONT_FAMILY, rectToCells, isCellInRect, buildChartViewModel, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, getRoundRectRadiusPx2, registerPersistentAudio, proportionalLineHeight, substituteFieldText, resolveUnderlineDecorationStyle,
|
|
2
|
+
import { SHAPE_PRESET_DEFS, computeValueRangeForChart, VIEWER_SHORTCUT_REFERENCE, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, isTemplateElement, getImageFitStyle, isImageLikeElement, runMediaCommand, findMediaElementByElementId, mediaPlaybackAttributes, buildTextBlockStyle, hasTextProperties, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, getKinsokuLineBreakStyles, buildTextBody3DSceneStyle, resolveParagraphRtl, resolveParagraphAlign, resolveCssTextAlign, resolveParagraphStrutFontSize, colorWithOpacity, normalizeHexColor, build3DExtrusionData, isIdentityRectClip, getResolvedShapeClipPath, isStrokeOnlyPresetElement, normalizeStrokeDashType, buildCssGradientFromShapeStyle, buildShadowCssFromShapeStyle, buildInnerShadowCssFromShapeStyle, suppressesCssBorder, buildMultiLayerShadowCss, buildGlowBoxShadow, getCompoundLineBoxShadow, getSoftEdgeFilterId, getEffectDagFilter, buildPatternFillCss, buildReflectionCss, getCssBorderDashStyle, getCompoundLineBorderWidth, getSvgStrokeDasharray, buildSvgGradientDef, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, DEFAULT_FONT_FAMILY, rectToCells, isCellInRect, buildChartViewModel, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, buildMotionPathPreview, getRoundRectRadiusPx2, mediaFallbackVisual, registerPersistentAudio, proportionalLineHeight, substituteFieldText, resolveUnderlineDecorationStyle, resolveAutoFitFontScale, getSubstituteFontFamily, parsePanoseString, hasDistinctScriptFonts, pieceLetterSpacing, resolveMetricTrackingPx, buildTextReflectionCss, getTextAlphaOpacity, buildTextRunFilterChain, buildTextShadowCss, TEXT_BUILD_ID_SEP, buildTextBuildSpec, textBuildSpanStyle, sanitizeGradientStops, getGradientTileFlipCss, getGradientTileRectCss, apply3dEffects, clampUnitInterval, customGeometryPathsToSvgSubpaths, svgGradientFillRef, computeColumnBoundaries, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, getPatternSvg, ooxmlDashToCssBorderStyle, cell3DBevelCss, getChartStylePalette, chartAreaFill, computeLayout, valueToY, formatAxisValue, computeLayoutOptions, splitSeriesByAxis, computeValueRange, getSecondaryValueAxis, seriesColor, paletteColor, resolveRegionCode, normalizeValue, sequentialColorScale, mediaFallbackIcon, mediaFallbackLabelKey, MEDIA_CHROME_ATTRIBUTE, convertOmmlToMathMl, sanitizeMathMl, buildTextFillCss, resolvePictureBullet, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, resolveFontRefIdx, tintColor2, shadeColor2, ooxmlGradientAngleToCssDegrees, generateLogTicks, formatAxisValueWithUnits, getDisplayUnitLabel, splitRunForMetrics, hexToRgbChannels, chartPartToAttrs, segmentByScript, resolveFontForScript } from './chunk-MDFCBYEM.mjs';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import React6, { useState, useEffect, useMemo, Suspense, useRef, useCallback, useLayoutEffect } from 'react';
|
|
6
6
|
import { LuTriangle, LuPlus, LuMoveRight, LuMinus, LuDiamond, LuDatabase, LuCircle, LuSquare } from 'react-icons/lu';
|
|
7
|
-
import { useTranslation } from 'react-i18next';
|
|
8
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
|
+
import { useTranslation } from 'react-i18next';
|
|
9
9
|
|
|
10
10
|
// src/viewer/utils/animation-effects.ts
|
|
11
11
|
function getAnimationInitialStyle2(preset, nativeAnimation) {
|
|
@@ -544,36 +544,6 @@ function CaptionTrackRenderer({
|
|
|
544
544
|
);
|
|
545
545
|
}) });
|
|
546
546
|
}
|
|
547
|
-
function MediaNotFoundPlaceholder({
|
|
548
|
-
mediaType
|
|
549
|
-
}) {
|
|
550
|
-
const { t } = useTranslation();
|
|
551
|
-
const isVideo = mediaType === "video";
|
|
552
|
-
return /* @__PURE__ */ jsxs("div", { className: "w-full h-full flex flex-col items-center justify-center gap-2 pointer-events-none bg-black/30 rounded border border-dashed border-white/20", children: [
|
|
553
|
-
/* @__PURE__ */ jsx(
|
|
554
|
-
"svg",
|
|
555
|
-
{
|
|
556
|
-
width: "36",
|
|
557
|
-
height: "36",
|
|
558
|
-
viewBox: "0 0 24 24",
|
|
559
|
-
fill: "none",
|
|
560
|
-
stroke: "currentColor",
|
|
561
|
-
strokeWidth: "1.5",
|
|
562
|
-
className: "text-white/50",
|
|
563
|
-
children: isVideo ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
564
|
-
/* @__PURE__ */ jsx("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2" }),
|
|
565
|
-
/* @__PURE__ */ jsx("line", { x1: "2", y1: "4", x2: "22", y2: "20" })
|
|
566
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
567
|
-
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
568
|
-
/* @__PURE__ */ jsx("line", { x1: "4", y1: "4", x2: "20", y2: "20" })
|
|
569
|
-
] })
|
|
570
|
-
}
|
|
571
|
-
),
|
|
572
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-white/50", children: t("pptx.media.typeNotFound", {
|
|
573
|
-
type: isVideo ? t("pptx.file.video") : t("pptx.file.audio")
|
|
574
|
-
}) })
|
|
575
|
-
] });
|
|
576
|
-
}
|
|
577
547
|
function VideoWithMetadata({
|
|
578
548
|
element,
|
|
579
549
|
mediaRef,
|
|
@@ -896,6 +866,109 @@ function PresentationMediaController({
|
|
|
896
866
|
)
|
|
897
867
|
] });
|
|
898
868
|
}
|
|
869
|
+
function label(key) {
|
|
870
|
+
return key === void 0 ? void 0 : translationsEn[key];
|
|
871
|
+
}
|
|
872
|
+
function FallbackIcon({
|
|
873
|
+
paths,
|
|
874
|
+
size,
|
|
875
|
+
className
|
|
876
|
+
}) {
|
|
877
|
+
if (paths.length === 0) {
|
|
878
|
+
return null;
|
|
879
|
+
}
|
|
880
|
+
return /* @__PURE__ */ jsx(
|
|
881
|
+
"svg",
|
|
882
|
+
{
|
|
883
|
+
width: size,
|
|
884
|
+
height: size,
|
|
885
|
+
viewBox: "0 0 24 24",
|
|
886
|
+
fill: "none",
|
|
887
|
+
stroke: "currentColor",
|
|
888
|
+
strokeWidth: "1.5",
|
|
889
|
+
className,
|
|
890
|
+
children: paths.map((d) => /* @__PURE__ */ jsx("path", { d }, d))
|
|
891
|
+
}
|
|
892
|
+
);
|
|
893
|
+
}
|
|
894
|
+
function Badge({
|
|
895
|
+
visual,
|
|
896
|
+
element
|
|
897
|
+
}) {
|
|
898
|
+
if (visual.badge === "none") {
|
|
899
|
+
return null;
|
|
900
|
+
}
|
|
901
|
+
const isMissing = visual.badge === "missing";
|
|
902
|
+
return /* @__PURE__ */ jsxs(
|
|
903
|
+
"div",
|
|
904
|
+
{
|
|
905
|
+
className: `absolute inset-0 flex flex-col items-center justify-center ${isMissing ? "gap-1" : ""}`,
|
|
906
|
+
...{ [MEDIA_CHROME_ATTRIBUTE]: visual.badge },
|
|
907
|
+
children: [
|
|
908
|
+
/* @__PURE__ */ jsx(
|
|
909
|
+
FallbackIcon,
|
|
910
|
+
{
|
|
911
|
+
paths: mediaFallbackIcon(visual, element.mediaType),
|
|
912
|
+
size: isMissing ? 32 : 48,
|
|
913
|
+
className: isMissing ? "text-white/60" : "text-white/80 drop-shadow-md"
|
|
914
|
+
}
|
|
915
|
+
),
|
|
916
|
+
isMissing && /* @__PURE__ */ jsx("span", { className: "text-[10px] text-white/60", children: label(mediaFallbackLabelKey(visual, element.mediaType)) })
|
|
917
|
+
]
|
|
918
|
+
}
|
|
919
|
+
);
|
|
920
|
+
}
|
|
921
|
+
function Placeholder({
|
|
922
|
+
visual,
|
|
923
|
+
element
|
|
924
|
+
}) {
|
|
925
|
+
if (visual.placeholder === "none") {
|
|
926
|
+
return null;
|
|
927
|
+
}
|
|
928
|
+
const isMissing = visual.placeholder === "missing";
|
|
929
|
+
return /* @__PURE__ */ jsxs(
|
|
930
|
+
"div",
|
|
931
|
+
{
|
|
932
|
+
className: `w-full h-full flex flex-col items-center justify-center gap-1 pointer-events-none rounded ${isMissing ? "bg-black/30 border border-dashed border-white/20" : element.mediaType === "audio" ? "bg-black/10" : "bg-black/20"}`,
|
|
933
|
+
...{ [MEDIA_CHROME_ATTRIBUTE]: visual.placeholder },
|
|
934
|
+
children: [
|
|
935
|
+
/* @__PURE__ */ jsx(
|
|
936
|
+
FallbackIcon,
|
|
937
|
+
{
|
|
938
|
+
paths: mediaFallbackIcon(visual, element.mediaType),
|
|
939
|
+
size: isMissing ? 36 : element.mediaType === "audio" ? 24 : 32,
|
|
940
|
+
className: isMissing ? "text-white/50" : "text-white/70"
|
|
941
|
+
}
|
|
942
|
+
),
|
|
943
|
+
/* @__PURE__ */ jsx("span", { className: `text-[10px] ${isMissing ? "text-white/50" : "text-white/70"}`, children: label(mediaFallbackLabelKey(visual, element.mediaType)) })
|
|
944
|
+
]
|
|
945
|
+
}
|
|
946
|
+
);
|
|
947
|
+
}
|
|
948
|
+
function renderMediaFallback({
|
|
949
|
+
element,
|
|
950
|
+
posterUrl,
|
|
951
|
+
surface
|
|
952
|
+
}) {
|
|
953
|
+
const visual = mediaFallbackVisual(surface, {
|
|
954
|
+
hasPoster: Boolean(posterUrl),
|
|
955
|
+
missing: element.mediaMissing === true
|
|
956
|
+
});
|
|
957
|
+
if (visual.poster && posterUrl) {
|
|
958
|
+
return /* @__PURE__ */ jsxs("div", { className: "w-full h-full relative pointer-events-none", children: [
|
|
959
|
+
/* @__PURE__ */ jsx(
|
|
960
|
+
"img",
|
|
961
|
+
{
|
|
962
|
+
src: posterUrl,
|
|
963
|
+
alt: visual.dimPoster ? translationsEn["pptx.media.posterAlt"] : translationsEn["pptx.media.videoPosterAlt"],
|
|
964
|
+
className: `w-full h-full object-contain${visual.dimPoster ? " opacity-50" : ""}`
|
|
965
|
+
}
|
|
966
|
+
),
|
|
967
|
+
/* @__PURE__ */ jsx(Badge, { visual, element })
|
|
968
|
+
] });
|
|
969
|
+
}
|
|
970
|
+
return /* @__PURE__ */ jsx(Placeholder, { visual, element });
|
|
971
|
+
}
|
|
899
972
|
function renderMediaElement(element, mediaDataUrls, options) {
|
|
900
973
|
if (element.type !== "media") {
|
|
901
974
|
return /* @__PURE__ */ jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: translationsEn["pptx.media.title"] });
|
|
@@ -911,39 +984,12 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
911
984
|
const isFullScreen = options?.fullScreen === true;
|
|
912
985
|
const isPresentationMode = options?.isPresentationMode === true;
|
|
913
986
|
const showTransport = options?.showTransport ?? !isPresentationMode;
|
|
987
|
+
const surface = {
|
|
988
|
+
presenting: isPresentationMode,
|
|
989
|
+
preview: options?.preview === true
|
|
990
|
+
};
|
|
914
991
|
if (element.mediaMissing) {
|
|
915
|
-
|
|
916
|
-
return /* @__PURE__ */ jsxs("div", { className: "w-full h-full relative pointer-events-none", children: [
|
|
917
|
-
/* @__PURE__ */ jsx(
|
|
918
|
-
"img",
|
|
919
|
-
{
|
|
920
|
-
src: posterUrl,
|
|
921
|
-
alt: translationsEn["pptx.media.posterAlt"],
|
|
922
|
-
className: "w-full h-full object-contain opacity-50"
|
|
923
|
-
}
|
|
924
|
-
),
|
|
925
|
-
/* @__PURE__ */ jsxs("div", { className: "absolute inset-0 flex flex-col items-center justify-center gap-1", children: [
|
|
926
|
-
/* @__PURE__ */ jsxs(
|
|
927
|
-
"svg",
|
|
928
|
-
{
|
|
929
|
-
width: "32",
|
|
930
|
-
height: "32",
|
|
931
|
-
viewBox: "0 0 24 24",
|
|
932
|
-
fill: "none",
|
|
933
|
-
stroke: "currentColor",
|
|
934
|
-
strokeWidth: "1.5",
|
|
935
|
-
className: "text-white/60",
|
|
936
|
-
children: [
|
|
937
|
-
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
938
|
-
/* @__PURE__ */ jsx("line", { x1: "4", y1: "4", x2: "20", y2: "20" })
|
|
939
|
-
]
|
|
940
|
-
}
|
|
941
|
-
),
|
|
942
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-white/60", children: translationsEn["pptx.media.notFound"] })
|
|
943
|
-
] })
|
|
944
|
-
] });
|
|
945
|
-
}
|
|
946
|
-
return /* @__PURE__ */ jsx(MediaNotFoundPlaceholder, { mediaType: mediaType ?? "video" });
|
|
992
|
+
return renderMediaFallback({ element, posterUrl, surface });
|
|
947
993
|
}
|
|
948
994
|
if (mediaType === "video") {
|
|
949
995
|
if (dataUrl) {
|
|
@@ -976,47 +1022,7 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
976
1022
|
}
|
|
977
1023
|
);
|
|
978
1024
|
}
|
|
979
|
-
|
|
980
|
-
return /* @__PURE__ */ jsxs("div", { className: "w-full h-full relative pointer-events-none", children: [
|
|
981
|
-
/* @__PURE__ */ jsx(
|
|
982
|
-
"img",
|
|
983
|
-
{
|
|
984
|
-
src: posterUrl,
|
|
985
|
-
alt: translationsEn["pptx.media.videoPosterAlt"],
|
|
986
|
-
className: "w-full h-full object-contain"
|
|
987
|
-
}
|
|
988
|
-
),
|
|
989
|
-
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx(
|
|
990
|
-
"svg",
|
|
991
|
-
{
|
|
992
|
-
width: "48",
|
|
993
|
-
height: "48",
|
|
994
|
-
viewBox: "0 0 24 24",
|
|
995
|
-
fill: "none",
|
|
996
|
-
stroke: "currentColor",
|
|
997
|
-
strokeWidth: "1.5",
|
|
998
|
-
className: "text-white/80 drop-shadow-md",
|
|
999
|
-
children: /* @__PURE__ */ jsx("polygon", { points: "5 3 19 12 5 21 5 3" })
|
|
1000
|
-
}
|
|
1001
|
-
) })
|
|
1002
|
-
] });
|
|
1003
|
-
}
|
|
1004
|
-
return /* @__PURE__ */ jsxs("div", { className: "w-full h-full flex flex-col items-center justify-center gap-1 pointer-events-none bg-black/20 rounded", children: [
|
|
1005
|
-
/* @__PURE__ */ jsx(
|
|
1006
|
-
"svg",
|
|
1007
|
-
{
|
|
1008
|
-
width: "32",
|
|
1009
|
-
height: "32",
|
|
1010
|
-
viewBox: "0 0 24 24",
|
|
1011
|
-
fill: "none",
|
|
1012
|
-
stroke: "currentColor",
|
|
1013
|
-
strokeWidth: "1.5",
|
|
1014
|
-
className: "text-white/70",
|
|
1015
|
-
children: /* @__PURE__ */ jsx("polygon", { points: "5 3 19 12 5 21 5 3" })
|
|
1016
|
-
}
|
|
1017
|
-
),
|
|
1018
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-white/70", children: "Video" })
|
|
1019
|
-
] });
|
|
1025
|
+
return renderMediaFallback({ element, posterUrl, surface });
|
|
1020
1026
|
}
|
|
1021
1027
|
if (mediaType === "audio") {
|
|
1022
1028
|
if (dataUrl) {
|
|
@@ -1046,28 +1052,12 @@ function renderMediaElement(element, mediaDataUrls, options) {
|
|
|
1046
1052
|
}
|
|
1047
1053
|
);
|
|
1048
1054
|
}
|
|
1049
|
-
return
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
width: "24",
|
|
1054
|
-
height: "24",
|
|
1055
|
-
viewBox: "0 0 24 24",
|
|
1056
|
-
fill: "none",
|
|
1057
|
-
stroke: "currentColor",
|
|
1058
|
-
strokeWidth: "1.5",
|
|
1059
|
-
className: "text-white/70",
|
|
1060
|
-
children: [
|
|
1061
|
-
/* @__PURE__ */ jsx("path", { d: "M9 18V5l12-2v13" }),
|
|
1062
|
-
/* @__PURE__ */ jsx("circle", { cx: "6", cy: "18", r: "3" }),
|
|
1063
|
-
/* @__PURE__ */ jsx("circle", { cx: "18", cy: "16", r: "3" })
|
|
1064
|
-
]
|
|
1065
|
-
}
|
|
1066
|
-
),
|
|
1067
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-white/70", children: "Audio" })
|
|
1068
|
-
] });
|
|
1055
|
+
return renderMediaFallback({ element, posterUrl, surface });
|
|
1056
|
+
}
|
|
1057
|
+
if (surface.presenting || surface.preview) {
|
|
1058
|
+
return null;
|
|
1069
1059
|
}
|
|
1070
|
-
return /* @__PURE__ */ jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: "
|
|
1060
|
+
return /* @__PURE__ */ jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: translationsEn["pptx.media.title"] });
|
|
1071
1061
|
}
|
|
1072
1062
|
|
|
1073
1063
|
// src/viewer/utils/text-utils.tsx
|
|
@@ -1541,12 +1531,34 @@ function renderScriptAwareText(text, needsScriptFonts, scriptFonts, baseFontFami
|
|
|
1541
1531
|
return /* @__PURE__ */ jsx("span", { style: { fontFamily: font }, children: run.text }, `${keyPrefix}-r${i}`);
|
|
1542
1532
|
});
|
|
1543
1533
|
}
|
|
1544
|
-
function
|
|
1534
|
+
function renderMetricPieces(text, metric, keyPrefix, inner) {
|
|
1535
|
+
if (!metric || !text) {
|
|
1536
|
+
return inner(text, keyPrefix);
|
|
1537
|
+
}
|
|
1538
|
+
const pieces = splitRunForMetrics(text, metric.font);
|
|
1539
|
+
if (pieces.length <= 1) {
|
|
1540
|
+
return inner(text, keyPrefix);
|
|
1541
|
+
}
|
|
1542
|
+
return pieces.map((piece, i) => /* @__PURE__ */ jsx(
|
|
1543
|
+
"span",
|
|
1544
|
+
{
|
|
1545
|
+
style: { letterSpacing: pieceLetterSpacing(metric.authoredPx, piece.tracking) },
|
|
1546
|
+
children: inner(piece.text, `${keyPrefix}-w${i}`)
|
|
1547
|
+
},
|
|
1548
|
+
`${keyPrefix}-w${i}`
|
|
1549
|
+
));
|
|
1550
|
+
}
|
|
1551
|
+
function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsScriptFonts, scriptFonts, baseFontFamily, findHighlights, tabContext, metric) {
|
|
1545
1552
|
const segHl = findHighlights?.get(segmentIndex);
|
|
1546
1553
|
if (!segHl || segHl.length === 0) {
|
|
1547
1554
|
return lines.map((line, lineIndex) => {
|
|
1548
1555
|
const lineKey = `${elementId}-seg-${segmentIndex}-line-${lineIndex}`;
|
|
1549
|
-
const renderPiece = (text, key) =>
|
|
1556
|
+
const renderPiece = (text, key) => renderMetricPieces(
|
|
1557
|
+
text,
|
|
1558
|
+
metric,
|
|
1559
|
+
key,
|
|
1560
|
+
(pieceText, pieceKey) => renderScriptAwareText(pieceText, needsScriptFonts, scriptFonts, baseFontFamily, pieceKey)
|
|
1561
|
+
);
|
|
1550
1562
|
return /* @__PURE__ */ jsxs(React6.Fragment, { children: [
|
|
1551
1563
|
tabContext && line.includes(" ") ? renderTabbedLine(line, tabContext, lineKey, renderPiece) : renderPiece(line, lineKey),
|
|
1552
1564
|
lineIndex < lines.length - 1 ? /* @__PURE__ */ jsx("br", {}) : null
|
|
@@ -1578,8 +1590,15 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1578
1590
|
isCurrent: false
|
|
1579
1591
|
});
|
|
1580
1592
|
}
|
|
1581
|
-
|
|
1582
|
-
|
|
1593
|
+
const renderChunk = (text, key) => renderMetricPieces(
|
|
1594
|
+
text,
|
|
1595
|
+
metric,
|
|
1596
|
+
key,
|
|
1597
|
+
(pieceText, pieceKey) => renderScriptAwareText(pieceText, needsScriptFonts, scriptFonts, baseFontFamily, pieceKey)
|
|
1598
|
+
);
|
|
1599
|
+
return chunks.map((chunk, ci) => {
|
|
1600
|
+
const chunkKey = `${elementId}-seg-${segmentIndex}-hl-${ci}`;
|
|
1601
|
+
return chunk.highlighted ? /* @__PURE__ */ jsx(
|
|
1583
1602
|
"mark",
|
|
1584
1603
|
{
|
|
1585
1604
|
style: {
|
|
@@ -1587,23 +1606,11 @@ function renderSegmentContent(elementId, segmentIndex, textValue, lines, needsSc
|
|
|
1587
1606
|
color: "inherit",
|
|
1588
1607
|
borderRadius: 2
|
|
1589
1608
|
},
|
|
1590
|
-
children:
|
|
1591
|
-
chunk.text,
|
|
1592
|
-
needsScriptFonts,
|
|
1593
|
-
scriptFonts,
|
|
1594
|
-
baseFontFamily,
|
|
1595
|
-
`${elementId}-seg-${segmentIndex}-hl-${ci}`
|
|
1596
|
-
)
|
|
1609
|
+
children: renderChunk(chunk.text, chunkKey)
|
|
1597
1610
|
},
|
|
1598
|
-
|
|
1599
|
-
) : /* @__PURE__ */ jsx(React6.Fragment, { children:
|
|
1600
|
-
|
|
1601
|
-
needsScriptFonts,
|
|
1602
|
-
scriptFonts,
|
|
1603
|
-
baseFontFamily,
|
|
1604
|
-
`${elementId}-seg-${segmentIndex}-hl-${ci}`
|
|
1605
|
-
) }, `${elementId}-seg-${segmentIndex}-hl-${ci}`)
|
|
1606
|
-
);
|
|
1611
|
+
chunkKey
|
|
1612
|
+
) : /* @__PURE__ */ jsx(React6.Fragment, { children: renderChunk(chunk.text, chunkKey) }, chunkKey);
|
|
1613
|
+
});
|
|
1607
1614
|
}
|
|
1608
1615
|
function renderEquationSegment(elementId, segmentIndex, equationXml, equationNumber) {
|
|
1609
1616
|
const mathml = convertOmmlToMathMl(equationXml);
|
|
@@ -1726,7 +1733,7 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1726
1733
|
const rawBaseline = typeof segmentStyle.baseline === "number" ? segmentStyle.baseline : 0;
|
|
1727
1734
|
const baselineFraction = rawBaseline === 0 ? 0 : Math.abs(rawBaseline) >= 1e3 ? rawBaseline / 1e5 : rawBaseline / 100;
|
|
1728
1735
|
const baselineFontScale = baselineFraction !== 0 ? 0.65 : 1;
|
|
1729
|
-
const
|
|
1736
|
+
const authoredLetterSpacing = typeof segmentStyle.characterSpacing === "number" && segmentStyle.characterSpacing !== 0 ? segmentStyle.characterSpacing / 100 * (96 / 72) : 0;
|
|
1730
1737
|
const textFillStyles = buildTextFillCss2(segmentStyle);
|
|
1731
1738
|
const rawFontSize = segmentStyle.fontSize || element.textStyle?.fontSize || DEFAULT_TEXT_FONT_SIZE;
|
|
1732
1739
|
const autoFitScale = resolveAutoFitFontScale(element.textStyle);
|
|
@@ -1756,6 +1763,17 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1756
1763
|
)
|
|
1757
1764
|
};
|
|
1758
1765
|
const needsScriptFonts = hasDistinctScriptFonts(scriptFonts);
|
|
1766
|
+
const metricFont = {
|
|
1767
|
+
fontFamily: baseFontFamily,
|
|
1768
|
+
fontSizePx: baseFontSize * baselineFontScale,
|
|
1769
|
+
bold: Boolean(segmentStyle.bold),
|
|
1770
|
+
italic: Boolean(segmentStyle.italic)
|
|
1771
|
+
};
|
|
1772
|
+
const metricContext = { font: metricFont, authoredPx: authoredLetterSpacing };
|
|
1773
|
+
const letterSpacing = pieceLetterSpacing(
|
|
1774
|
+
authoredLetterSpacing,
|
|
1775
|
+
resolveMetricTrackingPx(textValue, metricFont)
|
|
1776
|
+
);
|
|
1759
1777
|
const spanStyle = {
|
|
1760
1778
|
color: resolvedSegmentColor,
|
|
1761
1779
|
fontSize: baseFontSize * baselineFontScale,
|
|
@@ -1835,7 +1853,8 @@ function renderSingleSegment(element, segment, segmentIndex, fallbackColor, find
|
|
|
1835
1853
|
baseFontFamily,
|
|
1836
1854
|
Boolean(segmentStyle.bold),
|
|
1837
1855
|
Boolean(segmentStyle.italic)
|
|
1838
|
-
)
|
|
1856
|
+
),
|
|
1857
|
+
metricContext
|
|
1839
1858
|
);
|
|
1840
1859
|
let innerContent;
|
|
1841
1860
|
if (hasRuby) {
|
|
@@ -6162,7 +6181,7 @@ function FailedToLoad() {
|
|
|
6162
6181
|
var LazySurfaceChart3DScene = React6.lazy(
|
|
6163
6182
|
async () => {
|
|
6164
6183
|
try {
|
|
6165
|
-
return await import('./SurfaceChart3DScene-
|
|
6184
|
+
return await import('./SurfaceChart3DScene-MODEHQ6G.mjs');
|
|
6166
6185
|
} catch {
|
|
6167
6186
|
return { default: FailedToLoad };
|
|
6168
6187
|
}
|
|
@@ -6494,7 +6513,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
|
|
|
6494
6513
|
`${element.id}-tm-${item.index}`
|
|
6495
6514
|
)
|
|
6496
6515
|
);
|
|
6497
|
-
const
|
|
6516
|
+
const label2 = categoryLabels[item.index] ?? `${item.index + 1}`;
|
|
6498
6517
|
if (w > 30 && h > 14) {
|
|
6499
6518
|
rects.push(
|
|
6500
6519
|
/* @__PURE__ */ jsx(
|
|
@@ -6506,7 +6525,7 @@ function renderTreemapChart(element, chartData, categoryLabels) {
|
|
|
6506
6525
|
fontSize: Math.min(10, h * 0.3),
|
|
6507
6526
|
fill: "#fff",
|
|
6508
6527
|
fontWeight: 600,
|
|
6509
|
-
children:
|
|
6528
|
+
children: label2
|
|
6510
6529
|
},
|
|
6511
6530
|
`${element.id}-tm-lbl-${item.index}`
|
|
6512
6531
|
)
|
|
@@ -6973,14 +6992,14 @@ function layoutToCategory(layout) {
|
|
|
6973
6992
|
};
|
|
6974
6993
|
return map[layout] ?? "list";
|
|
6975
6994
|
}
|
|
6976
|
-
function smartArtNodeGroupProps(nodeId, shadow,
|
|
6995
|
+
function smartArtNodeGroupProps(nodeId, shadow, label2) {
|
|
6977
6996
|
const props = {
|
|
6978
6997
|
"data-smartart-node-id": nodeId,
|
|
6979
6998
|
style: { filter: shadow, pointerEvents: "auto" }
|
|
6980
6999
|
};
|
|
6981
|
-
if (
|
|
7000
|
+
if (label2) {
|
|
6982
7001
|
props.role = "img";
|
|
6983
|
-
props["aria-label"] =
|
|
7002
|
+
props["aria-label"] = label2;
|
|
6984
7003
|
}
|
|
6985
7004
|
return props;
|
|
6986
7005
|
}
|
|
Binary file
|
|
Binary file
|