pptx-react-viewer 2.2.1 → 2.4.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 +4 -0
- package/dist/{AiChatPanel-O4NYWO3D.js → AiChatPanel-HLLGXBZF.js} +23 -24
- package/dist/AiChatPanel-HLLGXBZF.js.br +0 -0
- package/dist/AiChatPanel-HLLGXBZF.js.gz +0 -0
- package/dist/{AiChatPanel-XRKEPXAM.mjs → AiChatPanel-SXYMXFYS.mjs} +4 -5
- package/dist/AiChatPanel-SXYMXFYS.mjs.br +0 -0
- package/dist/AiChatPanel-SXYMXFYS.mjs.gz +0 -0
- package/dist/{Model3DScene-JN5F5C4Z.mjs → Model3DScene-IECT4RWT.mjs} +1 -2
- package/dist/Model3DScene-IECT4RWT.mjs.br +0 -0
- package/dist/Model3DScene-IECT4RWT.mjs.gz +0 -0
- package/dist/{Model3DScene-HYE6HA2C.js → Model3DScene-ZQBWLAMC.js} +2 -3
- package/dist/Model3DScene-ZQBWLAMC.js.br +0 -0
- package/dist/Model3DScene-ZQBWLAMC.js.gz +0 -0
- package/dist/{PowerPointViewer-gmU5rc7K.d.ts → PowerPointViewer-Cjn1RgSz.d.ts} +2 -2
- package/dist/{PowerPointViewer-gmU5rc7K.d.ts.map → PowerPointViewer-Cjn1RgSz.d.ts.map} +1 -1
- package/dist/{SurfaceChart3DScene-FDJ6LC4E.js → SurfaceChart3DScene-4KRMRWW6.js} +2 -3
- package/dist/SurfaceChart3DScene-4KRMRWW6.js.br +0 -0
- package/dist/SurfaceChart3DScene-4KRMRWW6.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-V7P3LQVV.mjs → SurfaceChart3DScene-52C3IMPQ.mjs} +1 -2
- package/dist/SurfaceChart3DScene-52C3IMPQ.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-52C3IMPQ.mjs.gz +0 -0
- package/dist/audience-content-store-BMlth_3U.d.ts +386 -0
- package/dist/audience-content-store-BMlth_3U.d.ts.map +1 -0
- package/dist/{chunk-YIFO3WQO.js → chunk-25VSL2BB.js} +1 -0
- package/dist/chunk-25VSL2BB.js.br +0 -0
- package/dist/chunk-25VSL2BB.js.gz +0 -0
- package/dist/{chunk-XJTWUXXC.js → chunk-5GHLRHBR.js} +3 -3
- package/dist/chunk-5GHLRHBR.js.br +0 -0
- package/dist/chunk-5GHLRHBR.js.gz +0 -0
- package/dist/{chunk-2U243ZEP.js → chunk-5TPQJWEO.js} +267 -252
- package/dist/chunk-5TPQJWEO.js.br +0 -0
- package/dist/chunk-5TPQJWEO.js.gz +0 -0
- package/dist/{chunk-O75FHZQJ.mjs → chunk-G6Q3NXRV.mjs} +23 -8
- package/dist/chunk-G6Q3NXRV.mjs.br +0 -0
- package/dist/chunk-G6Q3NXRV.mjs.gz +0 -0
- package/dist/{chunk-RYHBWTPI.mjs → chunk-KK7FWBGO.mjs} +89 -69
- package/dist/chunk-KK7FWBGO.mjs.br +0 -0
- package/dist/chunk-KK7FWBGO.mjs.gz +0 -0
- package/dist/{chunk-7NSLKNCT.mjs → chunk-LRIXPSVT.mjs} +4 -6
- package/dist/chunk-LRIXPSVT.mjs.br +0 -0
- package/dist/chunk-LRIXPSVT.mjs.gz +0 -0
- package/dist/{chunk-I2HF7ZPO.mjs → chunk-Q6FC2552.mjs} +1 -1
- package/dist/chunk-Q6FC2552.mjs.br +0 -0
- package/dist/chunk-Q6FC2552.mjs.gz +0 -0
- package/dist/{chunk-R2H3FHK6.js → chunk-QBZA2GMB.mjs} +47788 -32364
- package/dist/chunk-QBZA2GMB.mjs.br +0 -0
- package/dist/chunk-QBZA2GMB.mjs.gz +0 -0
- package/dist/{chunk-K2AW5UXT.js → chunk-VEZO33T2.js} +314 -316
- package/dist/chunk-VEZO33T2.js.br +0 -0
- package/dist/chunk-VEZO33T2.js.gz +0 -0
- package/dist/{chunk-PE2I5L6R.mjs → chunk-WK56SFN7.js} +48287 -31794
- package/dist/chunk-WK56SFN7.js.br +0 -0
- package/dist/chunk-WK56SFN7.js.gz +0 -0
- package/dist/{chunk-QULJW7LU.js → chunk-XSBFV6TL.js} +929 -909
- package/dist/chunk-XSBFV6TL.js.br +0 -0
- package/dist/chunk-XSBFV6TL.js.gz +0 -0
- package/dist/{chunk-PZTPX3HK.mjs → chunk-Z6HIZWIQ.mjs} +1 -0
- package/dist/chunk-Z6HIZWIQ.mjs.br +0 -0
- package/dist/chunk-Z6HIZWIQ.mjs.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +92 -87
- package/dist/index.js +39 -40
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -7
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +519 -514
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +79 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -6
- 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/{animation-timeline-eb5z0SHW.d.ts → types-DciBT90G.d.ts} +4 -3
- package/dist/types-DciBT90G.d.ts.map +1 -0
- package/dist/{useViewerBuildingBlocks-CjureTRf.d.ts → useViewerBuildingBlocks-DMDZRawe.d.ts} +4 -4
- package/dist/{useViewerBuildingBlocks-CjureTRf.d.ts.map → useViewerBuildingBlocks-DMDZRawe.d.ts.map} +1 -1
- package/dist/viewer/index.d.ts +92 -88
- package/dist/viewer/index.js +22 -24
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -8
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +4 -4
- package/dist/AiChatPanel-O4NYWO3D.js.br +0 -0
- package/dist/AiChatPanel-O4NYWO3D.js.gz +0 -0
- package/dist/AiChatPanel-XRKEPXAM.mjs.br +0 -0
- package/dist/AiChatPanel-XRKEPXAM.mjs.gz +0 -0
- package/dist/Model3DScene-HYE6HA2C.js.br +0 -0
- package/dist/Model3DScene-HYE6HA2C.js.gz +0 -0
- package/dist/Model3DScene-JN5F5C4Z.mjs.br +0 -0
- package/dist/Model3DScene-JN5F5C4Z.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-FDJ6LC4E.js.br +0 -0
- package/dist/SurfaceChart3DScene-FDJ6LC4E.js.gz +0 -0
- package/dist/SurfaceChart3DScene-V7P3LQVV.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-V7P3LQVV.mjs.gz +0 -0
- package/dist/animation-timeline-eb5z0SHW.d.ts.map +0 -1
- package/dist/chunk-2QHCOESN.js +0 -28037
- package/dist/chunk-2QHCOESN.js.br +0 -0
- package/dist/chunk-2QHCOESN.js.gz +0 -0
- package/dist/chunk-2U243ZEP.js.br +0 -0
- package/dist/chunk-2U243ZEP.js.gz +0 -0
- package/dist/chunk-6G6S7PEI.mjs +0 -27604
- package/dist/chunk-6G6S7PEI.mjs.br +0 -0
- package/dist/chunk-6G6S7PEI.mjs.gz +0 -0
- package/dist/chunk-7NSLKNCT.mjs.br +0 -0
- package/dist/chunk-7NSLKNCT.mjs.gz +0 -0
- package/dist/chunk-I2HF7ZPO.mjs.br +0 -0
- package/dist/chunk-I2HF7ZPO.mjs.gz +0 -0
- package/dist/chunk-IKBO6CZC.js +0 -2
- package/dist/chunk-IKBO6CZC.js.br +0 -3
- package/dist/chunk-IKBO6CZC.js.gz +0 -0
- package/dist/chunk-K2AW5UXT.js.br +0 -0
- package/dist/chunk-K2AW5UXT.js.gz +0 -0
- package/dist/chunk-O75FHZQJ.mjs.br +0 -0
- package/dist/chunk-O75FHZQJ.mjs.gz +0 -0
- package/dist/chunk-PE2I5L6R.mjs.br +0 -0
- package/dist/chunk-PE2I5L6R.mjs.gz +0 -0
- package/dist/chunk-PZTPX3HK.mjs.br +0 -0
- package/dist/chunk-PZTPX3HK.mjs.gz +0 -0
- package/dist/chunk-QULJW7LU.js.br +0 -0
- package/dist/chunk-QULJW7LU.js.gz +0 -0
- package/dist/chunk-R2H3FHK6.js.br +0 -0
- package/dist/chunk-R2H3FHK6.js.gz +0 -0
- package/dist/chunk-RYHBWTPI.mjs.br +0 -0
- package/dist/chunk-RYHBWTPI.mjs.gz +0 -0
- package/dist/chunk-T5U6P2JH.mjs +0 -1
- package/dist/chunk-T5U6P2JH.mjs.br +0 -0
- package/dist/chunk-T5U6P2JH.mjs.gz +0 -0
- package/dist/chunk-XJTWUXXC.js.br +0 -0
- package/dist/chunk-XJTWUXXC.js.gz +0 -0
- package/dist/chunk-YIFO3WQO.js.br +0 -0
- package/dist/chunk-YIFO3WQO.js.gz +0 -0
- package/dist/dist-VEWYRBTB.mjs +0 -2
- package/dist/dist-VEWYRBTB.mjs.br +0 -0
- package/dist/dist-VEWYRBTB.mjs.gz +0 -0
- package/dist/dist-ZCJLIRYG.js +0 -2275
- package/dist/dist-ZCJLIRYG.js.br +0 -0
- package/dist/dist-ZCJLIRYG.js.gz +0 -0
- package/dist/index-CDCSXtK3.d.ts +0 -685
- package/dist/index-CDCSXtK3.d.ts.map +0 -1
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { hasShapeProperties, isImageLikeElement, hasTextProperties, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, getSubstituteFontFamily, evaluatePresetShape, customGeometryPathsToSvgSubpaths } from './chunk-PE2I5L6R.mjs';
|
|
1
|
+
import { translationsEn } from './chunk-Z6HIZWIQ.mjs';
|
|
2
|
+
import { SHAPE_PRESET_DEFS, computeValueRangeForChart, getAnimationInitialStyle, cloneHistorySnapshot, hasShapeProperties, isTemplateElement, isImageLikeElement, clampCropValue, parseMediaCommand, hasTextProperties, normalizeHexColor, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, computeAutoFitTextStyle, resolveLineHeight, getKinsokuLineBreakStyles, buildTextBody3DSceneStyle, resolveParagraphRtl, resolveParagraphAlign, resolveCssTextAlign, colorWithOpacity, build3DExtrusionData, getResolvedShapeClipPath, normalizeStrokeDashType, buildCssGradientFromShapeStyle, buildShadowCssFromShapeStyle, buildInnerShadowCssFromShapeStyle, buildMultiLayerShadowCss, buildGlowBoxShadow, getCompoundLineBoxShadow, getSoftEdgeFilterId, getEffectDagFilter, buildPatternFillCss, buildReflectionCss, getCssBorderDashStyle, getCompoundLineBorderWidth, getSvgStrokeDasharray, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, svgLineCap, getCompoundLineOffsets, getCompoundLineWidths, computeSelectionRect, rectToCells, isCellInRect, buildChartViewModel, buildNotesPdfBytes, buildSlidesPdfBytes, buildPreviewAnimation, getRoundRectRadiusPx, substituteFieldText, resolveUnderlineDecorationStyle, getSubstituteFontFamily, hasDistinctScriptFonts, buildTextReflectionCss, getTextAlphaOpacity, buildTextRunFilterChain, buildTextShadowCss, TEXT_BUILD_ID_SEP, evaluatePresetShape, apply3dEffects, clampUnitInterval, customGeometryPathsToSvgSubpaths, computeColumnBoundaries, parseDrawingColor, parseDrawingColorOpacity, getCellDiagonalBorders, getPatternSvg, ooxmlDashToCssBorderStyle, cell3DBevelCss, getChartStylePalette, computeLayout, valueToY, formatAxisValue, computeLayoutOptions, splitSeriesByAxis, computeValueRange, getSecondaryValueAxis, seriesColor, paletteColor, resolveRegionCode, normalizeValue, sequentialColorScale, convertOmmlToMathMl, sanitizeMathMl, buildTextFillCss, resolvePictureBullet, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, resolveFontRefIdx, tintColor2, shadeColor2, ooxmlGradientAngleToCssDegrees, segmentByScript, resolveFontForScript, generateLogTicks, formatAxisValueWithUnits, getDisplayUnitLabel, hexToRgbChannels, chartPartToAttrs } from './chunk-QBZA2GMB.mjs';
|
|
4
3
|
import { clsx } from 'clsx';
|
|
5
4
|
import { twMerge } from 'tailwind-merge';
|
|
6
5
|
import React6, { useState, useEffect, useMemo, Suspense, useRef, useCallback, useLayoutEffect } from 'react';
|
|
@@ -2516,10 +2515,26 @@ function getShapeVisualStyle(element, hasFill, fillColor, strokeWidth, strokeCol
|
|
|
2516
2515
|
}
|
|
2517
2516
|
}
|
|
2518
2517
|
const base = {
|
|
2519
|
-
|
|
2518
|
+
// A gradient fill REPLACES the solid fill, it does not sit on top of it.
|
|
2519
|
+
// The parser also records a representative `fillColor`/`fillOpacity` for a
|
|
2520
|
+
// `a:gradFill` (used by thumbnails and the inspector), and painting that as
|
|
2521
|
+
// a `backgroundColor` under the gradient washed the whole shape: wherever
|
|
2522
|
+
// the gradient's own stops were transparent the solid still showed, so a
|
|
2523
|
+
// fade-to-transparent overlay dimmed everything behind it and its edge read
|
|
2524
|
+
// as a hard line. Mirrors the fill precedence in shared's
|
|
2525
|
+
// `getComputedFillStyle` (image -> gradient -> pattern -> solid).
|
|
2526
|
+
backgroundColor: imageFillUrl ? "transparent" : patternFill ? patternFill.backgroundColor : hasFill && !fillGradient ? resolvedFillColor : "transparent",
|
|
2520
2527
|
backgroundImage: imageFillUrl ? `url(${imageFillUrl})` : patternFill ? patternFill.backgroundImage : hasFill && fillGradient ? fillGradient : void 0,
|
|
2521
|
-
backgroundRepeat: imageFillUrl ? imageFillMode === "tile" ? "repeat" : "no-repeat" : patternFill ? "repeat" : void 0,
|
|
2522
|
-
backgroundSize: imageFillUrl ? imageFillMode === "tile" ? "auto" : "100% 100%" : patternFill ? "auto" : void 0,
|
|
2528
|
+
backgroundRepeat: imageFillUrl ? imageFillMode === "tile" ? "repeat" : "no-repeat" : patternFill ? "repeat" : hasFill && fillGradient ? "no-repeat" : void 0,
|
|
2529
|
+
backgroundSize: imageFillUrl ? imageFillMode === "tile" ? "auto" : "100% 100%" : patternFill ? "auto" : hasFill && fillGradient ? "100% 100%" : void 0,
|
|
2530
|
+
// The container always carries a 1px border (transparent unless the shape
|
|
2531
|
+
// has a stroke or is hovered) and `box-sizing: border-box`, so the default
|
|
2532
|
+
// `background-origin: padding-box` sizes the paint 2px smaller than the
|
|
2533
|
+
// shape. Combined with the default `background-repeat: repeat` that made a
|
|
2534
|
+
// gradient tile wrap, painting a 1px sliver of its opposite end along the
|
|
2535
|
+
// edge - a fade-to-transparent overlay grew a hard opaque line down its
|
|
2536
|
+
// side. Paint from the border box so the fill matches the shape outline.
|
|
2537
|
+
backgroundOrigin: "border-box",
|
|
2523
2538
|
backgroundPosition: imageFillUrl ? "center" : void 0,
|
|
2524
2539
|
boxShadow: combinedBoxShadow,
|
|
2525
2540
|
WebkitBoxReflect: reflectCss,
|
|
@@ -3095,7 +3110,7 @@ function parseGradientFillCss(gradFill) {
|
|
|
3095
3110
|
const lin = gradFill["a:lin"];
|
|
3096
3111
|
if (lin) {
|
|
3097
3112
|
const angRaw = Number.parseInt(String(lin["@_ang"] || "0"), 10);
|
|
3098
|
-
const angleDeg = Math.round(angRaw / 6e4);
|
|
3113
|
+
const angleDeg = Math.round(ooxmlGradientAngleToCssDegrees(angRaw / 6e4));
|
|
3099
3114
|
return `linear-gradient(${angleDeg}deg, ${stopStrings})`;
|
|
3100
3115
|
}
|
|
3101
3116
|
const path = gradFill["a:path"];
|
|
@@ -6250,7 +6265,7 @@ function FailedToLoad() {
|
|
|
6250
6265
|
var LazySurfaceChart3DScene = React6.lazy(
|
|
6251
6266
|
async () => {
|
|
6252
6267
|
try {
|
|
6253
|
-
return await import('./SurfaceChart3DScene-
|
|
6268
|
+
return await import('./SurfaceChart3DScene-52C3IMPQ.mjs');
|
|
6254
6269
|
} catch {
|
|
6255
6270
|
return { default: FailedToLoad };
|
|
6256
6271
|
}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-
|
|
2
|
-
import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-
|
|
3
|
-
import { SHAPE_PRESETS, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, MIN_ELEMENT_SIZE, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, ANIMATION_PRESET_OPTIONS, resolvePalette, resolveStyle, layoutToCategory, wrapChrome, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, getCropShapeClipPath, SLIDE_TRANSITION_OPTIONS, SLIDE_NAV_THUMBNAIL_WIDTH, styleShadow, styleStroke, colour, fitFontSize, smartArtNodeGroupProps, chevronPoints, SmartArtNodeText, truncate, renderStepDownProcess, renderAlternatingFlow, renderDescendingProcess, renderPictureAccentList, renderVerticalBlockList, renderGroupedList, renderPyramidList, renderHorizontalPictureList, renderAccentProcess, renderVerticalChevronList, isImageTiled, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, TOOLBAR_SECTIONS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, buildTree, treeWidth, treeDepth, nodeOpacity, gearPath, resolveSmartArtDataPalette, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, HYPERLINK_COLOR, GRID_SIZE, startPreviewAnimation, stopPreviewAnimation } from './chunk-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { hasShapeProperties, hasTextProperties, SWITCHABLE_LAYOUT_TYPES, isInkElement, isImageLikeElement, getLinkedTextBoxSegments, themeColorSchemesEqual, setSmartArtNodeStyle, updateSmartArtNodeText, getSubstituteFontFamily, THEME_COLOR_SCHEME_KEYS, chartDataChangeType, chartDataUpdatePoint, chartDataAddCategory, chartDataRemoveCategory, chartDataAddSeries, chartDataRemoveSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, pptxActionToElementAction, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, addSmartArtNodeAsChild, removeSmartArtNode, elementActionToPptxAction, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode } from './chunk-PE2I5L6R.mjs';
|
|
1
|
+
import { computeFocusTargets, aiChangeAnimationCss, changeGhostStyle, createChatHistoryStore, toRenderableParts } from './chunk-Q6FC2552.mjs';
|
|
2
|
+
import { useReducedMotion, useViewerState, useViewerOptions, useIsMobile, useResizablePanels, useDerivedSlideState, useZoomViewport, useEditorHistory, usePresentationSetup, useTouchGestures, useViewerDialogs, useEditorOperations, useViewerIntegration, useYjsDocumentSync, useCollaborationLivePatch, useFollowMode, useBroadcastFollower, scopeLayoutOptionsToActiveSlide, useToolbarVisibility, useKeyboardInsets, useModalDismissDrag, useCollaborativeState, useVirtualizedSlides, useSwipeNavigation, useSheetDismissDrag, detectTargetType, parseEmailUrl, parseSlideFromUrl, ACTION_VERB_MAP, downloadBlob } from './chunk-LRIXPSVT.mjs';
|
|
3
|
+
import { SHAPE_PRESETS, DEFAULT_STROKE_COLOR, getConnectorPathGeometry, buildLineShadowCss, buildLineGlowFilter, renderConnectorMarker, MIN_ELEMENT_SIZE, getShapeVisualStyle, getTextStyleForElement, DEFAULT_TEXT_COLOR, renderVectorShape, isConnectorOrLineElement, build3DExtrusionData, getImageRenderStyle, cn, ANIMATION_PRESET_OPTIONS, resolvePalette, resolveStyle, layoutToCategory, wrapChrome, DEFAULT_FILL_COLOR, hasDagDuotoneEffect, renderDagDuotoneSvgFilter, getTextLayoutStyle, renderTableElement, renderMediaElement, shouldRenderFallbackLabel, getCropShapeClipPath, SLIDE_TRANSITION_OPTIONS, SLIDE_NAV_THUMBNAIL_WIDTH, styleShadow, styleStroke, colour, fitFontSize, smartArtNodeGroupProps, chevronPoints, SmartArtNodeText, truncate, renderStepDownProcess, renderAlternatingFlow, renderDescendingProcess, renderPictureAccentList, renderVerticalBlockList, renderGroupedList, renderPyramidList, renderHorizontalPictureList, renderAccentProcess, renderVerticalChevronList, isImageTiled, getImageTilingStyle, getDuotoneColors, getTextWarpStyle, renderTextSegments, buildReactChartViewModel, renderChartElement, buildTextBody3DSceneStyle, TOOLBAR_SECTIONS, SHORTCUT_REFERENCE_ITEMS as SHORTCUT_REFERENCE_ITEMS$1, buildTree, treeWidth, treeDepth, nodeOpacity, gearPath, resolveSmartArtDataPalette, DEFAULT_TEXT_FONT_SIZE, DEFAULT_FONT_FAMILY, HYPERLINK_COLOR, GRID_SIZE, startPreviewAnimation, stopPreviewAnimation } from './chunk-G6Q3NXRV.mjs';
|
|
4
|
+
import { LOCALE_CATALOG, translationsEn } from './chunk-Z6HIZWIQ.mjs';
|
|
5
|
+
import { RULER_THICKNESS, RULER_FONT_SIZE, hasShapeProperties, normalizeHexColor, colorWithOpacity, normalizeStrokeDashType, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, svgLineCap, hasTextProperties, getElementTransform, ACTION_BUTTON_PRESETS, isEditableTextElement, getAriaRole, getAriaLabel, getAriaRoleDescription, getImageEffectsOpacity, getImageEffectsFilter, getElementTransformWithoutRotation, SWITCHABLE_LAYOUT_TYPES, EQUATION_TEMPLATES, convertLatexToOmml, convertOmmlToMathMl, sanitizeMathMl, DEFAULT_VIEWER_OPTIONS, buildUserFontFaceStyles, readStoredViewerPrefs, resolveThemeCatalogEntry, THEME_CATALOG, writeStoredViewerPrefs, openPptxFile, readBackstageRecentFile, viewerOptionsToPreferences, applyPreferenceToOptions, listAutosaveSnapshots, deleteAutosaveSnapshot, revealedSmartArtNodeCount, buildSmartArtA11y, buildCssGradientFromShapeStyle, resolveGroupChildFill, getGroupChildParentFill, getComputedEffectStyle, getSoftEdgeSvgFilter, isInkElement, getElementLabel, buildPreviewElements, themeToCssVars, DEFAULT_INSERT_CHART_TYPE, hasCopyableFormat, createBackstagePresentation, printPropertiesFrameSlides, printPropertiesSlidesPerPage, VIEWER_OPTIONS_TABS, DEFAULT_QUICK_ACCESS_COMMAND_IDS, buildJoinCollaborationConfig, buildCreateCollaborationConfig, generateBroadcastRoomId, DEFAULT_BROADCAST_SERVER_URL, buildBroadcastViewerUrl, resolveTransportForServerUrl, resolveDrawingShapeNodeId, buildSummaryZoomView, getImageColorWashStyle, isImageLikeElement, getPendingSelectionRestore, restoreSegmentSelection, getTextCompensationTransform, applyChartBuildReveal, formatAxisValue, hasPressureVariation, getInkReplayStyles, INK_REPLAY_KEYFRAMES, resolveInkColor, resolveInkWidth, resolveInkOpacity, pressuresToWidths, getContentPartReplayStyles, resolveOleType, getOleTypeColor, getOleTypeLabel, getLinkedTextBoxSegments, shouldUseSvgWarp, getSlideBackgroundStyle, filterCommands, resolveTitleBarStatusKey, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, shouldConfirmExternalHyperlink, safeOpenUrl, isPpactionUrl, parsePpactionUrl, themeColorSchemesEqual, formatVersionTimestamp, formatRelativeTime, scanAvailableFontFamilies, PRESETS, CATEGORIES, convertOmmlToLatex, clampPercent, HANDOUT_OPTIONS, TOOLBAR_TABS, SHORTCUT_REFERENCE_ITEMS, resolveViewerAddinRows, availableQuickAccessCommands, addQuickAccessCommand, removeQuickAccessCommand, moveQuickAccessCommand, activateModalFocus, buildCollaborationShareUrl, mobileElapsedSince, isFirstSlide, isLastSlide, formatMobileElapsed, mobileSlideCounter, presenterPaneAdvancesOnClick, formatElapsed, computeInlineEditorRect, findSmartArtNodeText, setSmartArtNodeStyle, rebuildDrawingShapesIfCleared, shouldCommitSmartArtNodeText, updateSmartArtNodeText, getImageSvgFilters, buildDuotoneCacheKey, getDuotoneCachedResult, applyDuotone, setDuotoneCachedResult, buildCacheKey, DEFAULT_COLOR_CHANGE_TOLERANCE, getCachedResult, applyColorChange, setCachedResult, findChartPartTarget, dragValueForPart, withChartPointValue, dragAnchorViewY, withChartTitle, computeSmartArtLayout, buildSmartArt3DModel, extractPathPoints, generatePressureCircles, isBrowserOpenableMime, formatBytes, getOleBadgeLabel, openUrlInNewTab, getSubstituteFontFamily, getWarpPath, TAB_ROW_ACTION_CLASSES, listBackstageRecentFiles, BACKSTAGE_NAV, INSERT_CHART_TYPES, SLIDE_VIRTUALIZATION_THRESHOLD, getSlideTransitionAnimations, SLIDE_TRANSITION_KEYFRAMES, presentationInkPath, getShapeAdjustmentHandleDescriptor, formatSlideCounter, isUrlSafe, computeHandoutLayout, getPrintableArea, generateNoteLineCount, computeAllNotesPages, getNotesPrintableArea, QUICK_ACCESS_COMMAND_CATALOG, notesSegmentsToSpans, erasePresentationInkAt, movePresenterPointer, appendPresentationInkPoint, NOTES_FONT_SIZE_DEFAULT, formatTime, NOTES_FONT_SIZE_MIN, clampNotesFontSize, NOTES_FONT_SIZE_STEP, NOTES_FONT_SIZE_MAX, groupIntoParagraphs, substituteFieldText, BACKSTAGE_TEMPLATES, formatBackstageDate, formatBackstageSize, DEFAULT_VIEWER_PROFILE, resolveProfileInitial, AVATAR_COLOR_SWATCHES, getConnectionSites, generateTicks, getCommentMarkerPosition, buildThemeColorGrid, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_LABELS, buildSmartArtPresetData, getLocalStorageUsageSummary, saveViewerProfile, clearAllLocalViewerData, TABLE_STYLE_PRESETS, chartDataChangeType, chartDataUpdatePoint, chartDataAddCategory, chartDataRemoveCategory, chartDataAddSeries, chartDataRemoveSeries, setChartAxisLogScale, setChartAxisTitleStyle, setChartAxisGridlineStyle, setChartSeriesMarker, setChartSeriesChartType, setChartDataPointFill, setChartDataPointExplosion, setChartDataPointMarker, setChartDataPointLabel, getOleObjectTypeLabel, pptxActionToElementAction, withFrameSlides, withSlidesPerPage, applyThemeOverrideToSlide, COLOR_MAP_ALIAS_KEYS, DEFAULT_COLOR_MAP, formatCommentTimestamp, DIRECTIONAL_PRESETS, computeMergeCellRight, computeMergeCellDown, computeSplitCell, addSmartArtNodeAsChild, removeSmartArtNode, DUOTONE_PRESETS, ARTISTIC_EFFECTS, elementActionToPptxAction, LBL, SEL, FILL_MODE_OPTIONS, SECTION_HEADING, NUM, switchSmartArtLayout, addSmartArtNode, demoteSmartArtNode, promoteSmartArtNode, reorderSmartArtNode, GRADIENT_TYPE_OPTIONS, PATTERN_OPTIONS } from './chunk-QBZA2GMB.mjs';
|
|
7
6
|
import React32, { createContext, useMemo, useState, useCallback, lazy, forwardRef, useEffect, useRef, useContext, Suspense, useLayoutEffect, useDeferredValue } from 'react';
|
|
8
7
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
9
8
|
import { useTranslation } from 'react-i18next';
|
|
@@ -1336,7 +1335,7 @@ function AccountPage() {
|
|
|
1336
1335
|
return void 0;
|
|
1337
1336
|
});
|
|
1338
1337
|
};
|
|
1339
|
-
const version = "2.
|
|
1338
|
+
const version = "2.3.0" ;
|
|
1340
1339
|
return /* @__PURE__ */ jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
1341
1340
|
/* @__PURE__ */ jsxs("section", { className: cardClass, children: [
|
|
1342
1341
|
/* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -8340,7 +8339,7 @@ function FailedToLoad() {
|
|
|
8340
8339
|
var LazyModel3DScene = React32.lazy(
|
|
8341
8340
|
async () => {
|
|
8342
8341
|
try {
|
|
8343
|
-
return await import('./Model3DScene-
|
|
8342
|
+
return await import('./Model3DScene-IECT4RWT.mjs');
|
|
8344
8343
|
} catch {
|
|
8345
8344
|
return { default: FailedToLoad };
|
|
8346
8345
|
}
|
|
@@ -18067,6 +18066,19 @@ function PresentationAudienceEffects({ snapshot }) {
|
|
|
18067
18066
|
snapshot.subtitlesVisible && snapshot.caption && /* @__PURE__ */ jsx("div", { className: "absolute inset-x-[10%] bottom-8 rounded-lg bg-black/80 px-6 py-3 text-center text-xl font-medium text-white", children: snapshot.caption })
|
|
18068
18067
|
] });
|
|
18069
18068
|
}
|
|
18069
|
+
function PresentationEndOverlay({ onExit }) {
|
|
18070
|
+
const { t } = useTranslation();
|
|
18071
|
+
return /* @__PURE__ */ jsx(
|
|
18072
|
+
"button",
|
|
18073
|
+
{
|
|
18074
|
+
type: "button",
|
|
18075
|
+
"data-pptx-end-of-show": "",
|
|
18076
|
+
onClick: onExit,
|
|
18077
|
+
className: "absolute inset-0 z-[90] flex cursor-default items-start bg-black text-left",
|
|
18078
|
+
children: /* @__PURE__ */ jsx("span", { className: "px-4 py-3 text-[12px] text-white/70", children: t("pptx.presentation.endOfSlideShow", "End of slide show, click to exit.") })
|
|
18079
|
+
}
|
|
18080
|
+
);
|
|
18081
|
+
}
|
|
18070
18082
|
function PresentationSubtitleBar({
|
|
18071
18083
|
visible,
|
|
18072
18084
|
onCaptionChange
|
|
@@ -18157,11 +18169,11 @@ function renderNotesSegments(segments) {
|
|
|
18157
18169
|
);
|
|
18158
18170
|
});
|
|
18159
18171
|
}
|
|
18160
|
-
var toolClass = (active) => `inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-md px-2 text-xs transition-colors ${active ? "bg-
|
|
18172
|
+
var toolClass = (active) => `inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-md px-2 text-xs transition-colors ${active ? "bg-primary text-primary-foreground" : "bg-muted text-foreground hover:bg-accent"}`;
|
|
18161
18173
|
function PresenterConsoleToolbar(props) {
|
|
18162
18174
|
const pointerTool = props.snapshot.pointer?.tool ?? "none";
|
|
18163
18175
|
const zoom = props.snapshot.zoom?.scale ?? 1;
|
|
18164
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1 border-b border-
|
|
18176
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1 border-b border-border bg-card px-3 py-2", children: [
|
|
18165
18177
|
/* @__PURE__ */ jsx(
|
|
18166
18178
|
"button",
|
|
18167
18179
|
{
|
|
@@ -18172,7 +18184,7 @@ function PresenterConsoleToolbar(props) {
|
|
|
18172
18184
|
}
|
|
18173
18185
|
),
|
|
18174
18186
|
/* @__PURE__ */ jsx("button", { className: toolClass(false), onClick: props.onResetTimer, title: "Reset timer", children: /* @__PURE__ */ jsx(LuRotateCcw, {}) }),
|
|
18175
|
-
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-
|
|
18187
|
+
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-border" }),
|
|
18176
18188
|
/* @__PURE__ */ jsxs("button", { className: toolClass(false), onClick: props.onShowSlides, title: "See all slides", children: [
|
|
18177
18189
|
/* @__PURE__ */ jsx(LuGrid2X2, {}),
|
|
18178
18190
|
" Slides"
|
|
@@ -18180,7 +18192,7 @@ function PresenterConsoleToolbar(props) {
|
|
|
18180
18192
|
/* @__PURE__ */ jsx("button", { className: toolClass(zoom > 1), onClick: () => props.onStepZoom(1), title: "Zoom in", children: /* @__PURE__ */ jsx(LuZoomIn, {}) }),
|
|
18181
18193
|
/* @__PURE__ */ jsx("button", { className: toolClass(false), onClick: () => props.onStepZoom(-1), title: "Zoom out", children: /* @__PURE__ */ jsx(LuZoomOut, {}) }),
|
|
18182
18194
|
/* @__PURE__ */ jsx("button", { className: toolClass(false), onClick: props.onResetZoom, title: "Reset zoom", children: /* @__PURE__ */ jsx(LuScan, {}) }),
|
|
18183
|
-
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-
|
|
18195
|
+
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-border" }),
|
|
18184
18196
|
["laser", "pen", "highlighter", "eraser"].map((tool) => /* @__PURE__ */ jsx(
|
|
18185
18197
|
"button",
|
|
18186
18198
|
{
|
|
@@ -18191,7 +18203,7 @@ function PresenterConsoleToolbar(props) {
|
|
|
18191
18203
|
},
|
|
18192
18204
|
tool
|
|
18193
18205
|
)),
|
|
18194
|
-
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-
|
|
18206
|
+
/* @__PURE__ */ jsx("span", { className: "mx-1 h-6 w-px bg-border" }),
|
|
18195
18207
|
/* @__PURE__ */ jsx(
|
|
18196
18208
|
"button",
|
|
18197
18209
|
{
|
|
@@ -18489,20 +18501,13 @@ function PresenterNotesRail({
|
|
|
18489
18501
|
] });
|
|
18490
18502
|
}
|
|
18491
18503
|
function PresenterSlideNavigator(props) {
|
|
18492
|
-
return /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 z-[120] flex flex-col bg-
|
|
18493
|
-
/* @__PURE__ */ jsxs("header", { className: "flex items-center justify-between border-b border-
|
|
18504
|
+
return /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 z-[120] flex flex-col bg-card/98 text-foreground", children: [
|
|
18505
|
+
/* @__PURE__ */ jsxs("header", { className: "flex items-center justify-between border-b border-border px-6 py-4", children: [
|
|
18494
18506
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
18495
18507
|
/* @__PURE__ */ jsx("p", { className: "text-xs uppercase tracking-[0.22em] text-sky-300", children: "Slide navigator" }),
|
|
18496
18508
|
/* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold", children: "See all slides" })
|
|
18497
18509
|
] }),
|
|
18498
|
-
/* @__PURE__ */ jsx(
|
|
18499
|
-
"button",
|
|
18500
|
-
{
|
|
18501
|
-
className: "rounded-md bg-white/10 px-4 py-2 hover:bg-white/20",
|
|
18502
|
-
onClick: props.onClose,
|
|
18503
|
-
children: "Close"
|
|
18504
|
-
}
|
|
18505
|
-
)
|
|
18510
|
+
/* @__PURE__ */ jsx("button", { className: "rounded-md bg-muted px-4 py-2 hover:bg-accent", onClick: props.onClose, children: "Close" })
|
|
18506
18511
|
] }),
|
|
18507
18512
|
/* @__PURE__ */ jsx("div", { className: "grid flex-1 grid-cols-[repeat(auto-fill,minmax(220px,1fr))] gap-5 overflow-auto p-6", children: props.slides.map((slide, index) => /* @__PURE__ */ jsxs(
|
|
18508
18513
|
"button",
|
|
@@ -18518,7 +18523,7 @@ function PresenterSlideNavigator(props) {
|
|
|
18518
18523
|
canvasSize: props.canvasSize
|
|
18519
18524
|
}
|
|
18520
18525
|
),
|
|
18521
|
-
/* @__PURE__ */ jsxs("span", { className: "mt-2 block text-xs tabular-nums text-
|
|
18526
|
+
/* @__PURE__ */ jsxs("span", { className: "mt-2 block text-xs tabular-nums text-muted-foreground", children: [
|
|
18522
18527
|
index + 1,
|
|
18523
18528
|
slide.hidden ? " - hidden" : ""
|
|
18524
18529
|
] })
|
|
@@ -18613,6 +18618,7 @@ function PresenterView({
|
|
|
18613
18618
|
onOpenAudienceWindow,
|
|
18614
18619
|
onCloseAudienceWindow,
|
|
18615
18620
|
isAudienceWindowOpen,
|
|
18621
|
+
endOfShowVisible,
|
|
18616
18622
|
snapshot,
|
|
18617
18623
|
onNavigateToSlide,
|
|
18618
18624
|
onToggleTimer,
|
|
@@ -18634,6 +18640,13 @@ function PresenterView({
|
|
|
18634
18640
|
const elapsed = snapshot.elapsedMs ?? (presentationStartTime ? now - presentationStartTime : 0);
|
|
18635
18641
|
const [showSlides, setShowSlides] = useState(false);
|
|
18636
18642
|
const ink = usePresenterInk(snapshot, onUpdateSnapshot);
|
|
18643
|
+
const paneAdvancesOnClick = presenterPaneAdvancesOnClick(snapshot.pointer?.tool) && !endOfShowVisible;
|
|
18644
|
+
const handleSlidePaneClick = useCallback(() => {
|
|
18645
|
+
if (!paneAdvancesOnClick) {
|
|
18646
|
+
return;
|
|
18647
|
+
}
|
|
18648
|
+
onMovePresentationSlide(1, "click");
|
|
18649
|
+
}, [paneAdvancesOnClick, onMovePresentationSlide]);
|
|
18637
18650
|
const handleCaptionChange = useCallback(
|
|
18638
18651
|
(caption) => onUpdateSnapshot({ caption }),
|
|
18639
18652
|
[onUpdateSnapshot]
|
|
@@ -18645,7 +18658,7 @@ function PresenterView({
|
|
|
18645
18658
|
const TIMER_SEGMENT_MS = 5 * 60 * 1e3;
|
|
18646
18659
|
const timerProgress = Math.min(100, elapsed % TIMER_SEGMENT_MS / TIMER_SEGMENT_MS * 100);
|
|
18647
18660
|
const timerSegment = Math.floor(elapsed / TIMER_SEGMENT_MS);
|
|
18648
|
-
return /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 z-50 flex flex-col bg-
|
|
18661
|
+
return /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 z-50 flex flex-col bg-card text-foreground", children: [
|
|
18649
18662
|
/* @__PURE__ */ jsx(
|
|
18650
18663
|
PresenterConsoleToolbar,
|
|
18651
18664
|
{
|
|
@@ -18667,34 +18680,44 @@ function PresenterView({
|
|
|
18667
18680
|
}
|
|
18668
18681
|
),
|
|
18669
18682
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-1 min-h-0", children: [
|
|
18670
|
-
/* @__PURE__ */ jsxs(
|
|
18671
|
-
|
|
18672
|
-
|
|
18673
|
-
|
|
18674
|
-
|
|
18675
|
-
|
|
18676
|
-
|
|
18677
|
-
|
|
18678
|
-
|
|
18679
|
-
|
|
18680
|
-
|
|
18681
|
-
|
|
18682
|
-
|
|
18683
|
-
|
|
18684
|
-
|
|
18685
|
-
|
|
18686
|
-
|
|
18687
|
-
|
|
18688
|
-
|
|
18689
|
-
|
|
18690
|
-
|
|
18691
|
-
|
|
18692
|
-
|
|
18693
|
-
|
|
18694
|
-
|
|
18695
|
-
|
|
18696
|
-
|
|
18697
|
-
|
|
18683
|
+
/* @__PURE__ */ jsxs(
|
|
18684
|
+
"div",
|
|
18685
|
+
{
|
|
18686
|
+
role: "presentation",
|
|
18687
|
+
"data-pptx-presenter-slide": true,
|
|
18688
|
+
onClick: handleSlidePaneClick,
|
|
18689
|
+
className: `relative flex-[7] flex flex-col items-center justify-center bg-black p-6 min-w-0 overflow-hidden ${paneAdvancesOnClick ? "cursor-pointer" : ""}`,
|
|
18690
|
+
children: [
|
|
18691
|
+
endOfShowVisible && /* @__PURE__ */ jsx(PresentationEndOverlay, { onExit: () => onMovePresentationSlide(1) }),
|
|
18692
|
+
/* @__PURE__ */ jsxs(
|
|
18693
|
+
PresenterSlideFrame,
|
|
18694
|
+
{
|
|
18695
|
+
canvasSize,
|
|
18696
|
+
zoomScale: snapshot.zoom?.scale ?? 1,
|
|
18697
|
+
zoomOriginX: snapshot.zoom?.originX ?? 0.5,
|
|
18698
|
+
zoomOriginY: snapshot.zoom?.originY ?? 0.5,
|
|
18699
|
+
inkProps: ink,
|
|
18700
|
+
children: [
|
|
18701
|
+
/* @__PURE__ */ jsx(
|
|
18702
|
+
ScaledSlidePreview,
|
|
18703
|
+
{
|
|
18704
|
+
slide: currentSlide,
|
|
18705
|
+
templateElements,
|
|
18706
|
+
canvasSize
|
|
18707
|
+
}
|
|
18708
|
+
),
|
|
18709
|
+
/* @__PURE__ */ jsx(PresentationAudienceEffects, { snapshot })
|
|
18710
|
+
]
|
|
18711
|
+
}
|
|
18712
|
+
),
|
|
18713
|
+
/* @__PURE__ */ jsx("div", { className: "mt-3 text-xs font-mono tabular-nums text-white/50 select-none", children: t("pptx.presenter.slideLabel", {
|
|
18714
|
+
current: currentSlideIndex + 1,
|
|
18715
|
+
total: slides.length,
|
|
18716
|
+
defaultValue: `Slide ${currentSlideIndex + 1} of ${slides.length}`
|
|
18717
|
+
}) })
|
|
18718
|
+
]
|
|
18719
|
+
}
|
|
18720
|
+
),
|
|
18698
18721
|
/* @__PURE__ */ jsx(
|
|
18699
18722
|
PresenterNotesRail,
|
|
18700
18723
|
{
|
|
@@ -27108,18 +27131,23 @@ function PresentationTransitionOverlay({
|
|
|
27108
27131
|
canvasSize,
|
|
27109
27132
|
transition,
|
|
27110
27133
|
durationMs,
|
|
27134
|
+
scale: stageScale,
|
|
27111
27135
|
onComplete
|
|
27112
27136
|
}) {
|
|
27113
27137
|
const containerRef = useRef(null);
|
|
27114
27138
|
const [containerSize, setContainerSize] = useState(null);
|
|
27139
|
+
const resolvedStageScale = typeof stageScale === "number" && Number.isFinite(stageScale) && stageScale > 0 ? stageScale : null;
|
|
27115
27140
|
useEffect(() => {
|
|
27141
|
+
if (resolvedStageScale !== null) {
|
|
27142
|
+
return;
|
|
27143
|
+
}
|
|
27116
27144
|
const el = containerRef.current;
|
|
27117
27145
|
if (!el) {
|
|
27118
27146
|
return;
|
|
27119
27147
|
}
|
|
27120
27148
|
const rect = el.getBoundingClientRect();
|
|
27121
27149
|
setContainerSize({ width: rect.width, height: rect.height });
|
|
27122
|
-
}, []);
|
|
27150
|
+
}, [resolvedStageScale]);
|
|
27123
27151
|
useEffect(() => {
|
|
27124
27152
|
const timer = window.setTimeout(onComplete, durationMs + 50);
|
|
27125
27153
|
return () => {
|
|
@@ -27137,13 +27165,16 @@ function PresentationTransitionOverlay({
|
|
|
27137
27165
|
[transition.type, transition.direction, transition.orient, transition.spokes, durationMs]
|
|
27138
27166
|
);
|
|
27139
27167
|
const scale = useMemo(() => {
|
|
27168
|
+
if (resolvedStageScale !== null) {
|
|
27169
|
+
return resolvedStageScale;
|
|
27170
|
+
}
|
|
27140
27171
|
if (!containerSize) {
|
|
27141
27172
|
return 1;
|
|
27142
27173
|
}
|
|
27143
27174
|
const scaleX = containerSize.width / Math.max(canvasSize.width, 1);
|
|
27144
27175
|
const scaleY = containerSize.height / Math.max(canvasSize.height, 1);
|
|
27145
27176
|
return Math.min(scaleX, scaleY);
|
|
27146
|
-
}, [containerSize, canvasSize]);
|
|
27177
|
+
}, [resolvedStageScale, containerSize, canvasSize]);
|
|
27147
27178
|
const outgoingZIndex = animations.outgoingOnTop ? 40 : 20;
|
|
27148
27179
|
return /* @__PURE__ */ jsxs(
|
|
27149
27180
|
"div",
|
|
@@ -30788,6 +30819,7 @@ function ViewerPresentationLayer(props) {
|
|
|
30788
30819
|
onOpenAudienceWindow: presentation.openAudienceWindow,
|
|
30789
30820
|
onCloseAudienceWindow: presentation.closeAudienceWindow,
|
|
30790
30821
|
isAudienceWindowOpen: presentation.isAudienceWindowOpen(),
|
|
30822
|
+
endOfShowVisible: presentation.endOfShowVisible,
|
|
30791
30823
|
snapshot: presentation.presenterSnapshot,
|
|
30792
30824
|
onNavigateToSlide: presentation.navigateToSlide,
|
|
30793
30825
|
onToggleTimer: presentation.togglePresenterTimer,
|
|
@@ -31065,19 +31097,6 @@ function PresentationContextMenu(p) {
|
|
|
31065
31097
|
)
|
|
31066
31098
|
] });
|
|
31067
31099
|
}
|
|
31068
|
-
function PresentationEndOverlay({ onExit }) {
|
|
31069
|
-
const { t } = useTranslation();
|
|
31070
|
-
return /* @__PURE__ */ jsx(
|
|
31071
|
-
"button",
|
|
31072
|
-
{
|
|
31073
|
-
type: "button",
|
|
31074
|
-
"data-pptx-end-of-show": "",
|
|
31075
|
-
onClick: onExit,
|
|
31076
|
-
className: "absolute inset-0 z-[90] flex cursor-default items-start bg-black text-left",
|
|
31077
|
-
children: /* @__PURE__ */ jsx("span", { className: "px-4 py-3 text-[12px] text-white/70", children: t("pptx.presentation.endOfSlideShow", "End of slide show, click to exit.") })
|
|
31078
|
-
}
|
|
31079
|
-
);
|
|
31080
|
-
}
|
|
31081
31100
|
var ViewerOptionsContext = createContext(DEFAULT_VIEWER_OPTIONS);
|
|
31082
31101
|
function useViewerOptionsContext() {
|
|
31083
31102
|
return useContext(ViewerOptionsContext);
|
|
@@ -31302,6 +31321,7 @@ ${url}`)) {
|
|
|
31302
31321
|
canvasSize,
|
|
31303
31322
|
transition: presentation.transitionOverlay.transition,
|
|
31304
31323
|
durationMs: presentation.transitionOverlay.durationMs,
|
|
31324
|
+
scale: stageScale,
|
|
31305
31325
|
onComplete: presentation.handleTransitionOverlayComplete
|
|
31306
31326
|
},
|
|
31307
31327
|
`${presentation.transitionOverlay.outgoingSlideIndex}-${presentation.transitionOverlay.incomingSlideIndex}`
|
|
@@ -31524,7 +31544,7 @@ ${url}`)) {
|
|
|
31524
31544
|
)
|
|
31525
31545
|
);
|
|
31526
31546
|
}
|
|
31527
|
-
var AiChatPanel = lazy(() => import('./AiChatPanel-
|
|
31547
|
+
var AiChatPanel = lazy(() => import('./AiChatPanel-SXYMXFYS.mjs'));
|
|
31528
31548
|
function AiChatPanelLazy(props) {
|
|
31529
31549
|
return /* @__PURE__ */ jsx(
|
|
31530
31550
|
Suspense,
|
|
Binary file
|
|
Binary file
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { cloneHistorySnapshot, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, partitionTemplateElements, UNGROUPED_SECTION_ID, stopAllPersistentAudio, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { PptxHandler, EncryptedFileError, hasShapeProperties, hasTextProperties, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, guidePxToEmu, mergeShapes, buildThemeColorMap, reResolveSlideColors, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, SvgExporter, rebuildTableStructureInRawXml, updateCellTextStyleInRawXml, updateCellTextInRawXml, updateMergeAttrsInRawXml, elementActionToPptxAction } from './chunk-PE2I5L6R.mjs';
|
|
1
|
+
import { cloneHistorySnapshot, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, partitionTemplateElements, UNGROUPED_SECTION_ID, stopAllPersistentAudio, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-G6Q3NXRV.mjs';
|
|
2
|
+
import { translationsEn } from './chunk-Z6HIZWIQ.mjs';
|
|
3
|
+
import { TOOLBAR_TABS, computeVirtualRange, DEFAULT_VIRTUAL_OVERSCAN, BROADCAST_THROTTLE_MS, createSyncGate, clearLocalAwareness, validateRoomId, createDepartureChannel, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, registerCollaborationTeardown, sanitizeColor, cloneTemplateElementsBySlideId, cloneSlide, PresentationAnimationController, computeEntranceAnimationDelay, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, clearAudienceContent, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, storeAudienceContent, isPresentationSessionMessage, createPresentationKeyBuffer, 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, remapTextToSegments, guidePxToEmu, shouldLoopContinuously, applyRehearsalTimings, copyFormatFromElement, applyFormatToElement, createViewerOptionsStore, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, shouldAutoFollowBroadcaster, createTouchGestureRecognizer, isKeyboardOpen, openPptxFile, readBackstageRecentFile, isActionHidden, buildElementClipboardPayload, generatePackageReadme, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, mergeShapes, derivePresenceList, mapPresentationKey, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, buildThemeColorMap, reResolveSlideColors, createPresentationSessionId, resolveTransitionDurationMs, isUrlSafe, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, presenterElapsed, stepPresenterZoom, resetPresenterTimer, togglePresenterTimer, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, encodeGif, groupSlidesBySection, hasCopyableFormat, createBackstagePresentation, 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 } from './chunk-QBZA2GMB.mjs';
|
|
5
4
|
import { useRef, useState, useEffect, useCallback, useMemo, useSyncExternalStore, useImperativeHandle } from 'react';
|
|
6
5
|
import JSZip from 'jszip';
|
|
7
6
|
import { useTranslation } from 'react-i18next';
|
|
@@ -9859,8 +9858,7 @@ function useYjsDocumentSync({
|
|
|
9859
9858
|
return;
|
|
9860
9859
|
}
|
|
9861
9860
|
try {
|
|
9862
|
-
const
|
|
9863
|
-
const handler = new PptxHandler2();
|
|
9861
|
+
const handler = new PptxHandler();
|
|
9864
9862
|
await handler.load(sourceBytes.buffer);
|
|
9865
9863
|
const currentSlides = readSlidesFromYDoc(
|
|
9866
9864
|
doc
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ThemePresets, PptxMarkdownConverter } from './chunk-
|
|
1
|
+
import { ThemePresets, PptxMarkdownConverter } from './chunk-QBZA2GMB.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
|