pptx-react-viewer 1.17.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +1 -1
- package/dist/{Model3DScene-YA4F63DT.js → Model3DScene-GVWQ6SOM.js} +3 -3
- package/dist/Model3DScene-GVWQ6SOM.js.br +0 -0
- package/dist/Model3DScene-GVWQ6SOM.js.gz +0 -0
- package/dist/{Model3DScene-QHDYQXL2.mjs → Model3DScene-JGVLIDLD.mjs} +2 -2
- package/dist/Model3DScene-JGVLIDLD.mjs.br +0 -0
- package/dist/Model3DScene-JGVLIDLD.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-GUAS2NWQ.mjs → SurfaceChart3DScene-DBWSDSKI.mjs} +2 -2
- package/dist/SurfaceChart3DScene-DBWSDSKI.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-DBWSDSKI.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-TGNJHTJQ.js → SurfaceChart3DScene-ZOTOHOIE.js} +3 -3
- package/dist/SurfaceChart3DScene-ZOTOHOIE.js.br +0 -0
- package/dist/SurfaceChart3DScene-ZOTOHOIE.js.gz +0 -0
- package/dist/{chunk-XW5OMXW6.js → chunk-73ST7AC6.js} +2269 -1651
- package/dist/chunk-73ST7AC6.js.br +0 -0
- package/dist/chunk-73ST7AC6.js.gz +0 -0
- package/dist/{chunk-WGLJ32FW.js → chunk-AALZCSY4.js} +8 -1
- package/dist/chunk-AALZCSY4.js.br +0 -0
- package/dist/chunk-AALZCSY4.js.gz +0 -0
- package/dist/{chunk-MGLRKGCH.js → chunk-EXDUEXTO.js} +26101 -15360
- package/dist/chunk-EXDUEXTO.js.br +0 -0
- package/dist/chunk-EXDUEXTO.js.gz +0 -0
- package/dist/{chunk-JWS3RQKN.js → chunk-HBXPK572.js} +584 -144
- package/dist/chunk-HBXPK572.js.br +0 -0
- package/dist/chunk-HBXPK572.js.gz +0 -0
- package/dist/{chunk-G22EWPLH.mjs → chunk-HHTZQHKZ.mjs} +532 -119
- package/dist/chunk-HHTZQHKZ.mjs.br +0 -0
- package/dist/chunk-HHTZQHKZ.mjs.gz +0 -0
- package/dist/{chunk-3P6O7ZDM.js → chunk-JDRC3PSY.js} +655 -491
- package/dist/chunk-JDRC3PSY.js.br +0 -0
- package/dist/chunk-JDRC3PSY.js.gz +0 -0
- package/dist/{chunk-LNSHC2Z5.mjs → chunk-KMLIWCNL.mjs} +1460 -842
- package/dist/chunk-KMLIWCNL.mjs.br +0 -0
- package/dist/chunk-KMLIWCNL.mjs.gz +0 -0
- package/dist/{chunk-HJQZJ3VE.mjs → chunk-RIRK64DM.mjs} +8 -1
- package/dist/chunk-RIRK64DM.mjs.br +0 -0
- package/dist/chunk-RIRK64DM.mjs.gz +0 -0
- package/dist/{chunk-XRYREYXC.mjs → chunk-SBNTEQUA.mjs} +26062 -15360
- package/dist/chunk-SBNTEQUA.mjs.br +0 -0
- package/dist/chunk-SBNTEQUA.mjs.gz +0 -0
- package/dist/{chunk-LLHFNGAF.mjs → chunk-Z4MDCPAY.mjs} +223 -59
- package/dist/chunk-Z4MDCPAY.mjs.br +0 -0
- package/dist/chunk-Z4MDCPAY.mjs.gz +0 -0
- package/dist/{dist-2ZAH7U6U.js → dist-KRRXYUGI.js} +663 -507
- package/dist/dist-KRRXYUGI.js.br +0 -0
- package/dist/dist-KRRXYUGI.js.gz +0 -0
- package/dist/dist-N6PAPXK6.mjs +2 -0
- package/dist/dist-N6PAPXK6.mjs.br +0 -0
- package/dist/dist-N6PAPXK6.mjs.gz +0 -0
- package/dist/hooks-unstable.d.ts +484 -117
- package/dist/hooks-unstable.d.ts.map +1 -1
- package/dist/hooks-unstable.js +75 -75
- package/dist/hooks-unstable.js.br +0 -0
- package/dist/hooks-unstable.js.gz +0 -0
- package/dist/hooks-unstable.mjs +4 -4
- package/dist/hooks-unstable.mjs.br +0 -0
- package/dist/hooks-unstable.mjs.gz +0 -0
- package/dist/i18n.js +3 -3
- 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-XGt7MZpa.d.ts → index-DmHVR48M.d.ts} +25 -3
- package/dist/index-DmHVR48M.d.ts.map +1 -0
- package/dist/index.d.ts +412 -117
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -19
- package/dist/index.js.br +3 -1
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.br +3 -4
- package/dist/index.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/viewer/index.d.ts +438 -121
- package/dist/viewer/index.d.ts.map +1 -1
- package/dist/viewer/index.js +24 -20
- 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/Model3DScene-QHDYQXL2.mjs.br +0 -0
- package/dist/Model3DScene-QHDYQXL2.mjs.gz +0 -0
- package/dist/Model3DScene-YA4F63DT.js.br +0 -0
- package/dist/Model3DScene-YA4F63DT.js.gz +0 -0
- package/dist/SurfaceChart3DScene-GUAS2NWQ.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-GUAS2NWQ.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-TGNJHTJQ.js.br +0 -0
- package/dist/SurfaceChart3DScene-TGNJHTJQ.js.gz +0 -0
- package/dist/chunk-3P6O7ZDM.js.br +0 -0
- package/dist/chunk-3P6O7ZDM.js.gz +0 -0
- package/dist/chunk-G22EWPLH.mjs.br +0 -0
- package/dist/chunk-G22EWPLH.mjs.gz +0 -0
- package/dist/chunk-HJQZJ3VE.mjs.br +0 -0
- package/dist/chunk-HJQZJ3VE.mjs.gz +0 -0
- package/dist/chunk-JWS3RQKN.js.br +0 -0
- package/dist/chunk-JWS3RQKN.js.gz +0 -0
- package/dist/chunk-LLHFNGAF.mjs.br +0 -0
- package/dist/chunk-LLHFNGAF.mjs.gz +0 -0
- package/dist/chunk-LNSHC2Z5.mjs.br +0 -0
- package/dist/chunk-LNSHC2Z5.mjs.gz +0 -0
- package/dist/chunk-MGLRKGCH.js.br +0 -0
- package/dist/chunk-MGLRKGCH.js.gz +0 -0
- package/dist/chunk-WGLJ32FW.js.br +0 -0
- package/dist/chunk-WGLJ32FW.js.gz +0 -0
- package/dist/chunk-XRYREYXC.mjs.br +0 -0
- package/dist/chunk-XRYREYXC.mjs.gz +0 -0
- package/dist/chunk-XW5OMXW6.js.br +0 -0
- package/dist/chunk-XW5OMXW6.js.gz +0 -0
- package/dist/dist-2ZAH7U6U.js.br +0 -0
- package/dist/dist-2ZAH7U6U.js.gz +0 -0
- package/dist/dist-MXDC6YTS.mjs +0 -2
- package/dist/dist-MXDC6YTS.mjs.br +0 -0
- package/dist/dist-MXDC6YTS.mjs.gz +0 -0
- package/dist/index-XGt7MZpa.d.ts.map +0 -1
|
Binary file
|
|
Binary file
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { SHAPE_PRESET_DEFS, computeValueRangeForChart, cloneTemplateElementsBySlideId, cloneSlide, countTextSegments, expandTextBuildAnimations, TimelineEngine, TEXT_BUILD_ID_SEP, collectMediaElements, collectImagePaths, buildInitialGuides, saveAutosaveSnapshot, getAnimationInitialStyle, normalizeHexColor, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, computeAutoFitTextStyle, resolveLineHeight, getKinsokuLineBreakStyles, buildTextBody3DSceneStyle, resolveParagraphRtl, resolveParagraphAlign, resolveCssTextAlign, colorWithOpacity, build3DExtrusionData, getResolvedShapeClipPath, normalizeStrokeDashType, buildCssGradientFromShapeStyle, buildShadowCssFromShapeStyle, buildInnerShadowCssFromShapeStyle, buildMultiLayerShadowCss, buildGlowBoxShadow, getCompoundLineBoxShadow, getEffectDagFilter, buildPatternFillCss, buildReflectionCss, getCssBorderDashStyle, getCompoundLineBorderWidth, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, clampCropValue, parseDrawingColor, parseDrawingColorOpacity, getPatternSvg, ooxmlDashToCssBorderStyle, computeSelectionRect, rectToCells, isCellInRect, buildChartViewModel, buildPreviewAnimation, isTemplateElementId, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, comparePresentation, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, remapTextToSegments, copyFormatFromElement, applyFormatToElement, createSyncGate, validateRoomId, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, BROADCAST_THROTTLE_MS, sanitizeColor, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, createTouchGestureRecognizer, isKeyboardOpen, buildElementClipboardPayload, downloadBlob, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, derivePresenceList, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, cloneHistorySnapshot,
|
|
2
|
-
import { translationsEn } from './chunk-
|
|
3
|
-
import { hasTextProperties, PptxHandler, EncryptedFileError, hasShapeProperties, isImageLikeElement, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, applyThemeToData, THEME_PRESETS, guidePxToEmu, mergeShapes, getSubstituteFontFamily, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, SvgExporter, rebuildTableStructureInRawXml, updateCellTextStyleInRawXml, updateCellTextInRawXml, updateMergeAttrsInRawXml, elementActionToPptxAction } from './chunk-
|
|
1
|
+
import { SHAPE_PRESET_DEFS, computeValueRangeForChart, cloneTemplateElementsBySlideId, cloneSlide, countTextSegments, expandTextBuildAnimations, TimelineEngine, TEXT_BUILD_ID_SEP, storePresentationDeck, loadPresentationDeck, clearPresentationDeck, PRESENTATION_HASH, PRESENTATION_NONCE_KEY, PRESENTATION_CHANNEL_NAME, swapPresentationWindows, PRESENTATION_MESSAGE_ORIGIN, buildPresentationAudienceUrl, resolveAudienceScreenPlacement, placeAudienceWindow, isPresentationSessionMessage, collectMediaElements, collectImagePaths, buildInitialGuides, saveAutosaveSnapshot, getAnimationInitialStyle, normalizeHexColor, toCssWritingMode, toCssTextOrientation, toCssVerticalDirection, computeAutoFitTextStyle, resolveLineHeight, getKinsokuLineBreakStyles, buildTextBody3DSceneStyle, resolveParagraphRtl, resolveParagraphAlign, resolveCssTextAlign, colorWithOpacity, build3DExtrusionData, getResolvedShapeClipPath, normalizeStrokeDashType, buildCssGradientFromShapeStyle, buildShadowCssFromShapeStyle, buildInnerShadowCssFromShapeStyle, buildMultiLayerShadowCss, buildGlowBoxShadow, getCompoundLineBoxShadow, getEffectDagFilter, buildPatternFillCss, buildReflectionCss, getCssBorderDashStyle, getCompoundLineBorderWidth, getSvgStrokeDasharray, getCompoundLineOffsets, getCompoundLineWidths, clampCropValue, parseDrawingColor, parseDrawingColorOpacity, getPatternSvg, ooxmlDashToCssBorderStyle, computeSelectionRect, rectToCells, isCellInRect, buildChartViewModel, buildPreviewAnimation, isTemplateElementId, getInlineEditorSelection, applyStyleToSelectedSegments, setPendingSelectionRestore, applyCaseTransformToSegments, transformTextCase, addSection, renameSection, deleteSection, moveSectionUp, moveSectionDown, moveSlidesToSection, normalizeColorsForCapture, preprocessCssForCapture, slideProgressPercent, slideStatusLabel, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, isExportAbortError, recordProgressPercent, comparePresentation, detectTouchDevice, detectOrientation, isMobileViewport, MOBILE_BREAKPOINT, TABLET_BREAKPOINT, remapTextToSegments, copyFormatFromElement, applyFormatToElement, createSyncGate, validateRoomId, resolveTransportForServerUrl, isMixedContentBlocked, CONNECTION_TIMEOUT_MS, BROADCAST_THROTTLE_MS, sanitizeColor, readSlidesFromYDoc, reconcileSlidesInYDoc, LOCAL_SYNC_ORIGIN, observeYDocSlides, createTouchGestureRecognizer, isKeyboardOpen, buildElementClipboardPayload, downloadBlob, groupElements, generateElementId, makeCloneId, alignElements, distributeElements, bringForward, sendBackward, bringToFront, sendToBack, newTableElement, createDefaultChartElement, readViewportMetrics, computeKeyboardInset, derivePresenceList, buildPrintDocument, buildOutlineHtml, buildSlidesHtml, buildNotesHtml, buildHandoutsHtml, createBlankSlide, makeSlideId, cloneHistorySnapshot, createPresentationSessionId, resolveTransitionDurationMs, isUrlSafe, createPresenterTimer, createInitialPresentationSnapshot, mergePresentationSnapshot, presenterElapsed, stepPresenterZoom, resetPresenterTimer, togglePresenterTimer, isTemplateElement, substituteFieldText, resolveUnderlineDecorationStyle, hasDistinctScriptFonts, buildTextReflectionCss, getTextAlphaOpacity, buildTextRunFilterChain, buildTextShadowCss, apply3dEffects, clampUnitInterval, getRoundRectRadiusPx, tintColor2, shadeColor2, computeColumnBoundaries, getChartStylePalette, computeLayout, valueToY, formatAxisValue, computeLayoutOptions, splitSeriesByAxis, computeValueRange, getSecondaryValueAxis, seriesColor, paletteColor, resolveRegionCode, normalizeValue, sequentialColorScale, canvasToJpegData, downloadDataUrl, pickSupportedMimeType, WEBM_MIME_CANDIDATES, fpsToFrameIntervalMs, segmentFrameCount, sanitizeDownloadFilename, encodeGif, cloneElementForPaste, computeScrollDelta, rerouteConnectorsForMovedElements, applyReroutedConnectors, buildPrintHtmlDocument, convertOmmlToMathMl, sanitizeMathMl, buildTextFillCss, computeResizedColumnWidths, computeResizedRowHeight, DEFAULT_ROW_HEIGHT, deleteTableColumn, insertTableColumn, deleteTableRow, insertTableRow, splitCell, mergeCells, buildSlidesPdfBytes, buildNotesPdfBytes, ACTION_BUTTON_PRESETS, buildSmartArtPresetData, computeSnapToShape, computeMarqueeHitIds, mergeAdditiveSelection, segmentByScript, resolveFontForScript, generateLogTicks, formatAxisValueWithUnits, getDisplayUnitLabel, applyResize, snapBoxToGrid, chartPartToAttrs } from './chunk-HHTZQHKZ.mjs';
|
|
2
|
+
import { translationsEn } from './chunk-RIRK64DM.mjs';
|
|
3
|
+
import { hasTextProperties, PptxHandler, EncryptedFileError, hasShapeProperties, isImageLikeElement, isCalloutShape, getCalloutLeaderLineGeometry, buildCalloutLeaderLineSvgPath, getCalloutViewBoxBounds, applyThemeToData, THEME_PRESETS, themeColorSchemesEqual, guidePxToEmu, mergeShapes, getSubstituteFontFamily, getPresetShapeClipPath, svgPathToPolygons, polygonsToSvgPath, SvgExporter, rebuildTableStructureInRawXml, updateCellTextStyleInRawXml, updateCellTextInRawXml, updateMergeAttrsInRawXml, elementActionToPptxAction } from './chunk-SBNTEQUA.mjs';
|
|
4
4
|
import React3, { useState, useEffect, useMemo, Suspense, useRef, useCallback, useSyncExternalStore, useImperativeHandle, useLayoutEffect } from 'react';
|
|
5
5
|
import { LuTriangle, LuPlus, LuMoveRight, LuMinus, LuDiamond, LuDatabase, LuCircle, LuSquare } from 'react-icons/lu';
|
|
6
6
|
import { clsx } from 'clsx';
|
|
7
7
|
import { twMerge } from 'tailwind-merge';
|
|
8
8
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
9
9
|
import { useTranslation } from 'react-i18next';
|
|
10
|
-
import html2canvasPro from 'html2canvas-pro';
|
|
11
10
|
import JSZip from 'jszip';
|
|
12
11
|
|
|
13
12
|
// src/viewer/utils/clone.ts
|
|
@@ -879,7 +878,10 @@ function openDb() {
|
|
|
879
878
|
request.onerror = () => reject(request.error);
|
|
880
879
|
});
|
|
881
880
|
}
|
|
882
|
-
async function storeAudienceContent(content) {
|
|
881
|
+
async function storeAudienceContent(content, sessionId) {
|
|
882
|
+
if (sessionId) {
|
|
883
|
+
return storePresentationDeck(sessionId, content);
|
|
884
|
+
}
|
|
883
885
|
const db = await openDb();
|
|
884
886
|
return new Promise((resolve, reject) => {
|
|
885
887
|
const tx = db.transaction(STORE_NAME, "readwrite");
|
|
@@ -897,7 +899,10 @@ async function storeAudienceContent(content) {
|
|
|
897
899
|
};
|
|
898
900
|
});
|
|
899
901
|
}
|
|
900
|
-
async function loadAudienceContent() {
|
|
902
|
+
async function loadAudienceContent(sessionId) {
|
|
903
|
+
if (sessionId) {
|
|
904
|
+
return loadPresentationDeck(sessionId);
|
|
905
|
+
}
|
|
901
906
|
try {
|
|
902
907
|
const db = await openDb();
|
|
903
908
|
return new Promise((resolve, reject) => {
|
|
@@ -935,7 +940,10 @@ async function loadAudienceContent() {
|
|
|
935
940
|
return null;
|
|
936
941
|
}
|
|
937
942
|
}
|
|
938
|
-
async function clearAudienceContent() {
|
|
943
|
+
async function clearAudienceContent(sessionId) {
|
|
944
|
+
if (sessionId) {
|
|
945
|
+
return clearPresentationDeck(sessionId);
|
|
946
|
+
}
|
|
939
947
|
try {
|
|
940
948
|
const db = await openDb();
|
|
941
949
|
return new Promise((resolve) => {
|
|
@@ -954,12 +962,12 @@ async function clearAudienceContent() {
|
|
|
954
962
|
} catch {
|
|
955
963
|
}
|
|
956
964
|
}
|
|
957
|
-
var PRESENTER_CHANNEL_NAME =
|
|
958
|
-
var AUDIENCE_HASH =
|
|
959
|
-
var PRESENTER_MSG_ORIGIN =
|
|
960
|
-
var AUDIENCE_NONCE_KEY =
|
|
965
|
+
var PRESENTER_CHANNEL_NAME = PRESENTATION_CHANNEL_NAME;
|
|
966
|
+
var AUDIENCE_HASH = PRESENTATION_HASH;
|
|
967
|
+
var PRESENTER_MSG_ORIGIN = PRESENTATION_MESSAGE_ORIGIN;
|
|
968
|
+
var AUDIENCE_NONCE_KEY = PRESENTATION_NONCE_KEY;
|
|
961
969
|
function generateSessionId() {
|
|
962
|
-
return
|
|
970
|
+
return createPresentationSessionId();
|
|
963
971
|
}
|
|
964
972
|
function parseAudienceNonce() {
|
|
965
973
|
const hash = window.location.hash;
|
|
@@ -977,11 +985,13 @@ function isAudienceTab() {
|
|
|
977
985
|
return window.location.hash.startsWith(AUDIENCE_HASH);
|
|
978
986
|
}
|
|
979
987
|
function usePresenterWindow(input) {
|
|
980
|
-
const {
|
|
988
|
+
const { isPresenterMode, content, snapshot } = input;
|
|
981
989
|
const audienceWindowRef = useRef(null);
|
|
982
990
|
const channelRef = useRef(null);
|
|
983
991
|
const pollTimerRef = useRef(null);
|
|
984
992
|
const sessionIdRef = useRef("");
|
|
993
|
+
const snapshotRef = useRef(snapshot);
|
|
994
|
+
snapshotRef.current = snapshot;
|
|
985
995
|
const getChannel = useCallback(() => {
|
|
986
996
|
if (!channelRef.current) {
|
|
987
997
|
channelRef.current = new BroadcastChannel(PRESENTER_CHANNEL_NAME);
|
|
@@ -991,6 +1001,10 @@ function usePresenterWindow(input) {
|
|
|
991
1001
|
const isAudienceWindowOpen = useCallback(() => {
|
|
992
1002
|
return audienceWindowRef.current !== null && !audienceWindowRef.current.closed;
|
|
993
1003
|
}, []);
|
|
1004
|
+
const swapDisplays = useCallback(async () => {
|
|
1005
|
+
const audience = audienceWindowRef.current;
|
|
1006
|
+
return audience && !audience.closed ? swapPresentationWindows(window, audience) : false;
|
|
1007
|
+
}, []);
|
|
994
1008
|
const syncSlideToAudience = useCallback(
|
|
995
1009
|
(slideIndex) => {
|
|
996
1010
|
if (!sessionIdRef.current) {
|
|
@@ -1009,7 +1023,25 @@ function usePresenterWindow(input) {
|
|
|
1009
1023
|
},
|
|
1010
1024
|
[getChannel]
|
|
1011
1025
|
);
|
|
1026
|
+
const syncStateToAudience = useCallback(
|
|
1027
|
+
(nextSnapshot) => {
|
|
1028
|
+
if (!sessionIdRef.current) {
|
|
1029
|
+
return;
|
|
1030
|
+
}
|
|
1031
|
+
try {
|
|
1032
|
+
getChannel().postMessage({
|
|
1033
|
+
origin: PRESENTER_MSG_ORIGIN,
|
|
1034
|
+
type: "presenter-state",
|
|
1035
|
+
sessionId: sessionIdRef.current,
|
|
1036
|
+
snapshot: nextSnapshot
|
|
1037
|
+
});
|
|
1038
|
+
} catch {
|
|
1039
|
+
}
|
|
1040
|
+
},
|
|
1041
|
+
[getChannel]
|
|
1042
|
+
);
|
|
1012
1043
|
const closeAudienceWindow = useCallback(() => {
|
|
1044
|
+
const closingSessionId = sessionIdRef.current;
|
|
1013
1045
|
if (sessionIdRef.current) {
|
|
1014
1046
|
try {
|
|
1015
1047
|
const exitMsg = {
|
|
@@ -1034,23 +1066,32 @@ function usePresenterWindow(input) {
|
|
|
1034
1066
|
clearInterval(pollTimerRef.current);
|
|
1035
1067
|
pollTimerRef.current = null;
|
|
1036
1068
|
}
|
|
1037
|
-
|
|
1069
|
+
if (closingSessionId) {
|
|
1070
|
+
void clearAudienceContent(closingSessionId);
|
|
1071
|
+
}
|
|
1038
1072
|
}, [getChannel]);
|
|
1039
1073
|
const openAudienceWindow = useCallback(() => {
|
|
1040
1074
|
if (isAudienceWindowOpen()) {
|
|
1041
1075
|
closeAudienceWindow();
|
|
1042
1076
|
}
|
|
1043
|
-
const blankWin = window.open(
|
|
1077
|
+
const blankWin = window.open(
|
|
1078
|
+
"about:blank",
|
|
1079
|
+
"pptx-viewer-audience",
|
|
1080
|
+
"popup=yes,width=1280,height=720"
|
|
1081
|
+
);
|
|
1044
1082
|
if (!blankWin) {
|
|
1045
1083
|
return false;
|
|
1046
1084
|
}
|
|
1047
1085
|
audienceWindowRef.current = blankWin;
|
|
1048
1086
|
const sessionId = generateSessionId();
|
|
1049
1087
|
sessionIdRef.current = sessionId;
|
|
1050
|
-
const audienceUrl =
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1088
|
+
const audienceUrl = buildPresentationAudienceUrl(window.location.href, sessionId);
|
|
1089
|
+
void resolveAudienceScreenPlacement(window).then((placement) => {
|
|
1090
|
+
if (placement && audienceWindowRef.current === blankWin && !blankWin.closed) {
|
|
1091
|
+
placeAudienceWindow(blankWin, placement);
|
|
1092
|
+
}
|
|
1093
|
+
return void 0;
|
|
1094
|
+
});
|
|
1054
1095
|
const navigateOrClose = (ok) => {
|
|
1055
1096
|
const win = audienceWindowRef.current;
|
|
1056
1097
|
if (!win || win.closed) {
|
|
@@ -1066,7 +1107,7 @@ function usePresenterWindow(input) {
|
|
|
1066
1107
|
return;
|
|
1067
1108
|
}
|
|
1068
1109
|
try {
|
|
1069
|
-
win.location.replace(audienceUrl
|
|
1110
|
+
win.location.replace(audienceUrl);
|
|
1070
1111
|
} catch {
|
|
1071
1112
|
try {
|
|
1072
1113
|
win.close();
|
|
@@ -1077,11 +1118,10 @@ function usePresenterWindow(input) {
|
|
|
1077
1118
|
}
|
|
1078
1119
|
};
|
|
1079
1120
|
if (content) {
|
|
1080
|
-
void storeAudienceContent(content).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
|
|
1121
|
+
void storeAudienceContent(content, sessionId).then(() => navigateOrClose(true)).catch(() => navigateOrClose(false));
|
|
1081
1122
|
} else {
|
|
1082
1123
|
navigateOrClose(true);
|
|
1083
1124
|
}
|
|
1084
|
-
window.setTimeout(() => syncSlideToAudience(currentSlideIndex), 1500);
|
|
1085
1125
|
pollTimerRef.current = setInterval(() => {
|
|
1086
1126
|
const win = audienceWindowRef.current;
|
|
1087
1127
|
if (!win || win.closed) {
|
|
@@ -1094,12 +1134,28 @@ function usePresenterWindow(input) {
|
|
|
1094
1134
|
}
|
|
1095
1135
|
}, 1e3);
|
|
1096
1136
|
return true;
|
|
1097
|
-
}, [isAudienceWindowOpen, closeAudienceWindow,
|
|
1137
|
+
}, [isAudienceWindowOpen, closeAudienceWindow, content]);
|
|
1138
|
+
useEffect(() => {
|
|
1139
|
+
let channel;
|
|
1140
|
+
try {
|
|
1141
|
+
channel = getChannel();
|
|
1142
|
+
} catch {
|
|
1143
|
+
return;
|
|
1144
|
+
}
|
|
1145
|
+
const handleMessage = (event) => {
|
|
1146
|
+
const message = event.data;
|
|
1147
|
+
if (isPresentationSessionMessage(message) && message.type === "audience-ready" && message.sessionId === sessionIdRef.current) {
|
|
1148
|
+
syncStateToAudience(snapshotRef.current);
|
|
1149
|
+
}
|
|
1150
|
+
};
|
|
1151
|
+
channel.addEventListener("message", handleMessage);
|
|
1152
|
+
return () => channel.removeEventListener("message", handleMessage);
|
|
1153
|
+
}, [getChannel, syncStateToAudience]);
|
|
1098
1154
|
useEffect(() => {
|
|
1099
1155
|
if (isPresenterMode && isAudienceWindowOpen()) {
|
|
1100
|
-
|
|
1156
|
+
syncStateToAudience(snapshot);
|
|
1101
1157
|
}
|
|
1102
|
-
}, [
|
|
1158
|
+
}, [snapshot, isPresenterMode, isAudienceWindowOpen, syncStateToAudience]);
|
|
1103
1159
|
useEffect(() => {
|
|
1104
1160
|
return () => {
|
|
1105
1161
|
closeAudienceWindow();
|
|
@@ -1116,7 +1172,9 @@ function usePresenterWindow(input) {
|
|
|
1116
1172
|
}, [isPresenterMode, closeAudienceWindow]);
|
|
1117
1173
|
useEffect(() => {
|
|
1118
1174
|
const handleBeforeUnload = () => {
|
|
1119
|
-
|
|
1175
|
+
if (sessionIdRef.current) {
|
|
1176
|
+
void clearAudienceContent(sessionIdRef.current);
|
|
1177
|
+
}
|
|
1120
1178
|
};
|
|
1121
1179
|
window.addEventListener("beforeunload", handleBeforeUnload);
|
|
1122
1180
|
return () => window.removeEventListener("beforeunload", handleBeforeUnload);
|
|
@@ -1125,11 +1183,13 @@ function usePresenterWindow(input) {
|
|
|
1125
1183
|
openAudienceWindow,
|
|
1126
1184
|
closeAudienceWindow,
|
|
1127
1185
|
isAudienceWindowOpen,
|
|
1128
|
-
syncSlideToAudience
|
|
1186
|
+
syncSlideToAudience,
|
|
1187
|
+
syncStateToAudience,
|
|
1188
|
+
swapDisplays
|
|
1129
1189
|
};
|
|
1130
1190
|
}
|
|
1131
1191
|
function useAudienceMode(input) {
|
|
1132
|
-
const { mode: _mode, onSetMode, onSetActiveSlideIndex, containerRef } = input;
|
|
1192
|
+
const { mode: _mode, onSetMode, onSetActiveSlideIndex, containerRef, onSnapshot } = input;
|
|
1133
1193
|
const initialised = useRef(false);
|
|
1134
1194
|
useEffect(() => {
|
|
1135
1195
|
if (!isAudienceTab()) {
|
|
@@ -1139,18 +1199,19 @@ function useAudienceMode(input) {
|
|
|
1139
1199
|
return;
|
|
1140
1200
|
}
|
|
1141
1201
|
initialised.current = true;
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
});
|
|
1148
|
-
}
|
|
1149
|
-
} catch {
|
|
1202
|
+
onSetMode("present");
|
|
1203
|
+
const requestAudienceFullscreen = () => {
|
|
1204
|
+
const wrapper = containerRef.current;
|
|
1205
|
+
if (!document.fullscreenElement && wrapper?.requestFullscreen) {
|
|
1206
|
+
void wrapper.requestFullscreen().catch(() => void 0);
|
|
1150
1207
|
}
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1208
|
+
};
|
|
1209
|
+
document.addEventListener("pointerdown", requestAudienceFullscreen, { once: true });
|
|
1210
|
+
document.addEventListener("keydown", requestAudienceFullscreen, { once: true });
|
|
1211
|
+
return () => {
|
|
1212
|
+
document.removeEventListener("pointerdown", requestAudienceFullscreen);
|
|
1213
|
+
document.removeEventListener("keydown", requestAudienceFullscreen);
|
|
1214
|
+
};
|
|
1154
1215
|
}, [containerRef, onSetMode]);
|
|
1155
1216
|
useEffect(() => {
|
|
1156
1217
|
if (!isAudienceTab()) {
|
|
@@ -1165,7 +1226,7 @@ function useAudienceMode(input) {
|
|
|
1165
1226
|
}
|
|
1166
1227
|
channel.onmessage = (event) => {
|
|
1167
1228
|
const data = event.data;
|
|
1168
|
-
if (!data || data.origin !== PRESENTER_MSG_ORIGIN) {
|
|
1229
|
+
if (!isPresentationSessionMessage(data) || data.origin !== PRESENTER_MSG_ORIGIN) {
|
|
1169
1230
|
return;
|
|
1170
1231
|
}
|
|
1171
1232
|
if (expectedSessionId && data.sessionId !== expectedSessionId) {
|
|
@@ -1174,8 +1235,14 @@ function useAudienceMode(input) {
|
|
|
1174
1235
|
if (data.type === "presenter-slide-change") {
|
|
1175
1236
|
onSetActiveSlideIndex(data.slideIndex);
|
|
1176
1237
|
}
|
|
1238
|
+
if (data.type === "presenter-state") {
|
|
1239
|
+
onSetActiveSlideIndex(data.snapshot.slideIndex);
|
|
1240
|
+
onSnapshot?.(data.snapshot);
|
|
1241
|
+
}
|
|
1177
1242
|
if (data.type === "presenter-exit") {
|
|
1178
|
-
|
|
1243
|
+
if (expectedSessionId) {
|
|
1244
|
+
void clearAudienceContent(expectedSessionId);
|
|
1245
|
+
}
|
|
1179
1246
|
onSetMode("edit");
|
|
1180
1247
|
try {
|
|
1181
1248
|
window.close();
|
|
@@ -1183,13 +1250,20 @@ function useAudienceMode(input) {
|
|
|
1183
1250
|
}
|
|
1184
1251
|
}
|
|
1185
1252
|
};
|
|
1253
|
+
if (expectedSessionId) {
|
|
1254
|
+
channel.postMessage({
|
|
1255
|
+
origin: PRESENTATION_MESSAGE_ORIGIN,
|
|
1256
|
+
type: "audience-ready",
|
|
1257
|
+
sessionId: expectedSessionId
|
|
1258
|
+
});
|
|
1259
|
+
}
|
|
1186
1260
|
return () => {
|
|
1187
1261
|
try {
|
|
1188
1262
|
channel.close();
|
|
1189
1263
|
} catch {
|
|
1190
1264
|
}
|
|
1191
1265
|
};
|
|
1192
|
-
}, [onSetMode, onSetActiveSlideIndex]);
|
|
1266
|
+
}, [onSetMode, onSetActiveSlideIndex, onSnapshot]);
|
|
1193
1267
|
}
|
|
1194
1268
|
|
|
1195
1269
|
// src/viewer/hooks/presentation-mode/keyboard-helpers.ts
|
|
@@ -1212,6 +1286,12 @@ function mapKeyToPresentationAction(key, ctrlKey) {
|
|
|
1212
1286
|
if (key === "e" || key === "E") {
|
|
1213
1287
|
return { action: "toggleEraser" };
|
|
1214
1288
|
}
|
|
1289
|
+
if (key === "b" || key === "B") {
|
|
1290
|
+
return { action: "toggleBlackScreen" };
|
|
1291
|
+
}
|
|
1292
|
+
if (key === "w" || key === "W") {
|
|
1293
|
+
return { action: "toggleWhiteScreen" };
|
|
1294
|
+
}
|
|
1215
1295
|
if (key === "m" && ctrlKey) {
|
|
1216
1296
|
return { action: "toggleToolbar" };
|
|
1217
1297
|
}
|
|
@@ -1232,6 +1312,8 @@ function usePresentationKeyboard(input) {
|
|
|
1232
1312
|
onToggleEraser,
|
|
1233
1313
|
onToggleToolbar,
|
|
1234
1314
|
onTogglePresenterView,
|
|
1315
|
+
onToggleBlackScreen,
|
|
1316
|
+
onToggleWhiteScreen,
|
|
1235
1317
|
rehearsing,
|
|
1236
1318
|
recordCurrentSlideTime,
|
|
1237
1319
|
presentationSlideIndex,
|
|
@@ -1276,6 +1358,12 @@ function usePresentationKeyboard(input) {
|
|
|
1276
1358
|
case "togglePresenterView":
|
|
1277
1359
|
onTogglePresenterView?.();
|
|
1278
1360
|
break;
|
|
1361
|
+
case "toggleBlackScreen":
|
|
1362
|
+
onToggleBlackScreen?.();
|
|
1363
|
+
break;
|
|
1364
|
+
case "toggleWhiteScreen":
|
|
1365
|
+
onToggleWhiteScreen?.();
|
|
1366
|
+
break;
|
|
1279
1367
|
}
|
|
1280
1368
|
};
|
|
1281
1369
|
window.addEventListener("keydown", handleKeyDown);
|
|
@@ -1291,6 +1379,8 @@ function usePresentationKeyboard(input) {
|
|
|
1291
1379
|
onToggleEraser,
|
|
1292
1380
|
onToggleToolbar,
|
|
1293
1381
|
onTogglePresenterView,
|
|
1382
|
+
onToggleBlackScreen,
|
|
1383
|
+
onToggleWhiteScreen,
|
|
1294
1384
|
rehearsing,
|
|
1295
1385
|
recordCurrentSlideTime,
|
|
1296
1386
|
presentationSlideIndex,
|
|
@@ -1670,6 +1760,53 @@ function useZoomNavigation(input) {
|
|
|
1670
1760
|
clearZoomReturn
|
|
1671
1761
|
};
|
|
1672
1762
|
}
|
|
1763
|
+
function usePresenterConsole(slideIndex) {
|
|
1764
|
+
const timerRef = useRef(createPresenterTimer());
|
|
1765
|
+
const [snapshot, setSnapshot] = useState(() => createInitialPresentationSnapshot(slideIndex));
|
|
1766
|
+
const patch = useCallback((value) => {
|
|
1767
|
+
setSnapshot((current) => mergePresentationSnapshot(current, value));
|
|
1768
|
+
}, []);
|
|
1769
|
+
useEffect(() => patch({ slideIndex }), [patch, slideIndex]);
|
|
1770
|
+
useEffect(() => {
|
|
1771
|
+
const timer = window.setInterval(() => {
|
|
1772
|
+
patch({
|
|
1773
|
+
paused: timerRef.current.paused,
|
|
1774
|
+
elapsedMs: presenterElapsed(timerRef.current)
|
|
1775
|
+
});
|
|
1776
|
+
}, 1e3);
|
|
1777
|
+
return () => window.clearInterval(timer);
|
|
1778
|
+
}, [patch]);
|
|
1779
|
+
return {
|
|
1780
|
+
snapshot,
|
|
1781
|
+
applyAudienceSnapshot: setSnapshot,
|
|
1782
|
+
setBlackout: (blackout) => patch({ blackout }),
|
|
1783
|
+
toggleTimer: () => {
|
|
1784
|
+
timerRef.current = togglePresenterTimer(timerRef.current);
|
|
1785
|
+
patch({
|
|
1786
|
+
paused: timerRef.current.paused,
|
|
1787
|
+
elapsedMs: presenterElapsed(timerRef.current)
|
|
1788
|
+
});
|
|
1789
|
+
},
|
|
1790
|
+
resetTimer: () => {
|
|
1791
|
+
timerRef.current = resetPresenterTimer();
|
|
1792
|
+
patch({ paused: false, elapsedMs: 0 });
|
|
1793
|
+
},
|
|
1794
|
+
stepZoom: (direction) => setSnapshot(
|
|
1795
|
+
(current) => mergePresentationSnapshot(current, {
|
|
1796
|
+
zoom: stepPresenterZoom(
|
|
1797
|
+
current.zoom ?? { scale: 1, originX: 0.5, originY: 0.5 },
|
|
1798
|
+
direction
|
|
1799
|
+
)
|
|
1800
|
+
})
|
|
1801
|
+
),
|
|
1802
|
+
resetZoom: () => patch({ zoom: { scale: 1, originX: 0.5, originY: 0.5 } }),
|
|
1803
|
+
setCaption: (caption) => patch({ caption }),
|
|
1804
|
+
setSubtitlesVisible: (subtitlesVisible) => patch({ subtitlesVisible }),
|
|
1805
|
+
updateSnapshot: patch
|
|
1806
|
+
};
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1809
|
+
// src/viewer/hooks/usePresentationMode.ts
|
|
1673
1810
|
function usePresentationMode(input) {
|
|
1674
1811
|
const {
|
|
1675
1812
|
mode,
|
|
@@ -1759,16 +1896,28 @@ function usePresentationMode(input) {
|
|
|
1759
1896
|
setShowRehearsalSummary
|
|
1760
1897
|
});
|
|
1761
1898
|
const { handleZoomClick, zoomReturnSlideIndex, returnToZoomSlide, clearZoomReturn } = useZoomNavigation({ navigateToSlide });
|
|
1762
|
-
const
|
|
1763
|
-
|
|
1899
|
+
const presenterConsole = usePresenterConsole(presentationSlideIndex);
|
|
1900
|
+
const {
|
|
1901
|
+
openAudienceWindow,
|
|
1902
|
+
closeAudienceWindow,
|
|
1903
|
+
isAudienceWindowOpen,
|
|
1904
|
+
syncSlideToAudience,
|
|
1905
|
+
syncStateToAudience,
|
|
1906
|
+
swapDisplays
|
|
1907
|
+
} = usePresenterWindow({
|
|
1764
1908
|
isPresenterMode: presenterMode,
|
|
1765
|
-
content
|
|
1909
|
+
content,
|
|
1910
|
+
snapshot: presenterConsole.snapshot
|
|
1766
1911
|
});
|
|
1767
1912
|
useAudienceMode({
|
|
1768
1913
|
mode,
|
|
1769
1914
|
onSetMode,
|
|
1770
|
-
onSetActiveSlideIndex
|
|
1771
|
-
|
|
1915
|
+
onSetActiveSlideIndex: (index) => {
|
|
1916
|
+
onSetActiveSlideIndex(index);
|
|
1917
|
+
setPresentationSlideIndex(index);
|
|
1918
|
+
},
|
|
1919
|
+
containerRef,
|
|
1920
|
+
onSnapshot: presenterConsole.applyAudienceSnapshot
|
|
1772
1921
|
});
|
|
1773
1922
|
const enterPresentMode = useCallback(() => {
|
|
1774
1923
|
setPresenterMode(false);
|
|
@@ -1825,6 +1974,12 @@ function usePresentationMode(input) {
|
|
|
1825
1974
|
onToggleEraser,
|
|
1826
1975
|
onToggleToolbar,
|
|
1827
1976
|
onTogglePresenterView: togglePresenterView,
|
|
1977
|
+
onToggleBlackScreen: () => presenterConsole.setBlackout(
|
|
1978
|
+
presenterConsole.snapshot.blackout === "black" ? "none" : "black"
|
|
1979
|
+
),
|
|
1980
|
+
onToggleWhiteScreen: () => presenterConsole.setBlackout(
|
|
1981
|
+
presenterConsole.snapshot.blackout === "white" ? "none" : "white"
|
|
1982
|
+
),
|
|
1828
1983
|
rehearsing,
|
|
1829
1984
|
recordCurrentSlideTime,
|
|
1830
1985
|
presentationSlideIndex,
|
|
@@ -1945,7 +2100,18 @@ function usePresentationMode(input) {
|
|
|
1945
2100
|
openAudienceWindow,
|
|
1946
2101
|
closeAudienceWindow,
|
|
1947
2102
|
isAudienceWindowOpen,
|
|
1948
|
-
syncSlideToAudience
|
|
2103
|
+
syncSlideToAudience,
|
|
2104
|
+
syncStateToAudience,
|
|
2105
|
+
swapPresenterDisplays: swapDisplays,
|
|
2106
|
+
presenterSnapshot: presenterConsole.snapshot,
|
|
2107
|
+
setPresenterBlackout: presenterConsole.setBlackout,
|
|
2108
|
+
togglePresenterTimer: presenterConsole.toggleTimer,
|
|
2109
|
+
resetPresenterTimer: presenterConsole.resetTimer,
|
|
2110
|
+
stepPresenterZoom: presenterConsole.stepZoom,
|
|
2111
|
+
resetPresenterZoom: presenterConsole.resetZoom,
|
|
2112
|
+
setPresenterCaption: presenterConsole.setCaption,
|
|
2113
|
+
setPresenterSubtitlesVisible: presenterConsole.setSubtitlesVisible,
|
|
2114
|
+
updatePresenterSnapshot: presenterConsole.updateSnapshot
|
|
1949
2115
|
};
|
|
1950
2116
|
}
|
|
1951
2117
|
var PEN_WIDTH = 2.5;
|
|
@@ -8487,7 +8653,7 @@ function FailedToLoad() {
|
|
|
8487
8653
|
var LazySurfaceChart3DScene = React3.lazy(
|
|
8488
8654
|
async () => {
|
|
8489
8655
|
try {
|
|
8490
|
-
return await import('./SurfaceChart3DScene-
|
|
8656
|
+
return await import('./SurfaceChart3DScene-DBWSDSKI.mjs');
|
|
8491
8657
|
} catch {
|
|
8492
8658
|
return { default: FailedToLoad };
|
|
8493
8659
|
}
|
|
@@ -13700,8 +13866,11 @@ function useTableOperations(input) {
|
|
|
13700
13866
|
...mergeHandlers
|
|
13701
13867
|
};
|
|
13702
13868
|
}
|
|
13869
|
+
|
|
13870
|
+
// src/lib/canvas-export.ts
|
|
13703
13871
|
async function renderToCanvas(element, options = {}) {
|
|
13704
13872
|
const userOnClone = options.onclone;
|
|
13873
|
+
const { default: html2canvasPro } = await import('html2canvas-pro');
|
|
13705
13874
|
return html2canvasPro(element, {
|
|
13706
13875
|
...options,
|
|
13707
13876
|
onclone: async (doc, clonedEl) => {
|
|
@@ -14788,13 +14957,6 @@ function useThemeHandlers(input) {
|
|
|
14788
14957
|
handleSwitchTheme
|
|
14789
14958
|
};
|
|
14790
14959
|
}
|
|
14791
|
-
function colorSchemesMatch(a, b) {
|
|
14792
|
-
if (!a) {
|
|
14793
|
-
return false;
|
|
14794
|
-
}
|
|
14795
|
-
const normalize = (hex) => hex.replace(/^#/u, "").toUpperCase().slice(0, 6);
|
|
14796
|
-
return normalize(a.dk1) === normalize(b.dk1) && normalize(a.lt1) === normalize(b.lt1) && normalize(a.dk2) === normalize(b.dk2) && normalize(a.lt2) === normalize(b.lt2) && normalize(a.accent1) === normalize(b.accent1) && normalize(a.accent2) === normalize(b.accent2) && normalize(a.accent3) === normalize(b.accent3) && normalize(a.accent4) === normalize(b.accent4) && normalize(a.accent5) === normalize(b.accent5) && normalize(a.accent6) === normalize(b.accent6) && normalize(a.hlink) === normalize(b.hlink) && normalize(a.folHlink) === normalize(b.folHlink);
|
|
14797
|
-
}
|
|
14798
14960
|
function useThemeSwitching(input) {
|
|
14799
14961
|
const { handlerRef, data, onDataChange, onThemeChanged } = input;
|
|
14800
14962
|
const switchToPreset = useCallback(
|
|
@@ -14834,7 +14996,9 @@ function useThemeSwitching(input) {
|
|
|
14834
14996
|
if (!data?.theme?.colorScheme) {
|
|
14835
14997
|
return void 0;
|
|
14836
14998
|
}
|
|
14837
|
-
return THEME_PRESETS.find(
|
|
14999
|
+
return THEME_PRESETS.find(
|
|
15000
|
+
(p) => themeColorSchemesEqual(data.theme?.colorScheme, p.colorScheme)
|
|
15001
|
+
);
|
|
14838
15002
|
}, [data?.theme?.colorScheme]);
|
|
14839
15003
|
return {
|
|
14840
15004
|
presets: THEME_PRESETS,
|
|
@@ -17513,7 +17677,7 @@ function useYjsDocumentSync({
|
|
|
17513
17677
|
return;
|
|
17514
17678
|
}
|
|
17515
17679
|
try {
|
|
17516
|
-
const { PptxHandler: PptxHandler2 } = await import('./dist-
|
|
17680
|
+
const { PptxHandler: PptxHandler2 } = await import('./dist-N6PAPXK6.mjs');
|
|
17517
17681
|
const handler = new PptxHandler2();
|
|
17518
17682
|
await handler.load(sourceBytes.buffer);
|
|
17519
17683
|
const currentSlides = readSlidesFromYDoc(
|
|
@@ -17989,4 +18153,4 @@ function useSwipeNavigation(input) {
|
|
|
17989
18153
|
return { onTouchStart, onTouchEnd };
|
|
17990
18154
|
}
|
|
17991
18155
|
|
|
17992
|
-
export { ACTION_VERB_MAP, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, DEFAULT_FONT_FAMILY, DEFAULT_STROKE_COLOR, DEFAULT_TEXT_COLOR, DEFAULT_TEXT_FONT_SIZE, EMU_PER_PX, GRID_SIZE, HYPERLINK_COLOR, MIN_ELEMENT_SIZE, MIN_TOUCH_TARGET, SHAPE_PRESETS, SHORTCUT_REFERENCE_ITEMS, SLIDE_NAV_THUMBNAIL_WIDTH, SLIDE_TRANSITION_OPTIONS, SmartArtNodeText, TOOLBAR_SECTIONS, build3DExtrusionData2 as build3DExtrusionData, buildLineGlowFilter, buildLineShadowCss, buildReactChartViewModel, buildTextBody3DSceneStyle2 as buildTextBody3DSceneStyle, buildTree, cellStyleToCss, chevronPoints, clearAudienceContent, cn, colour, computeVirtualRange, detectTargetType, ensureArrayValue, extractCellText, extractTableCellStyle, fitFontSize, gearPath, getAnimationInitialStyle2 as getAnimationInitialStyle, getConnectorPathGeometry, getCropShapeClipPath, getDuotoneColors, getImageRenderStyle, getImageTilingStyle, getShapeVisualStyle, getTableCellBandStyle, getTextLayoutStyle, getTextStyleForElement, getTextWarpStyle, hasDagDuotoneEffect, isAudienceTab, isConnectorOrLineElement, isImageTiled, layoutToCategory, loadAudienceContent, nodeOpacity, parseEmailUrl, parseSlideFromUrl, parseTableElementData, renderAccentProcess, renderAlternatingFlow, renderArtisticEffectSvgFilter, renderChartElement, renderConnectorMarker, renderDagDuotoneSvgFilter, renderDescendingProcess, renderDuotoneSvgFilter, renderGroupedList, renderHorizontalPictureList, renderImageAlphaSvgFilter, renderMediaElement, renderPictureAccentList, renderPyramidList, renderStepDownProcess, renderTableElement, renderTextSegments, renderToCanvas, renderVectorShape, renderVerticalBlockList, renderVerticalChevronList, resolvePalette, resolveSmartArtDataPalette, resolveStyle, shouldRenderFallbackLabel, smartArtNodeGroupProps, startPreviewAnimation, stopPreviewAnimation, storeAudienceContent, styleShadow, styleStroke, treeDepth, treeWidth, truncate, useAnimationPlayback, useAnnotationHandlers, useAudienceMode, useAutosave, useBroadcastFollower, useCanvasInteractions, useClipboardHandlers, useCollaborativeHistory, useCollaborativeState, useComments, useContentLifecycle, useDerivedElementState, useDerivedSlideState, useDialogCustomShows, useEditorHistory, useEditorOperations, useElementManipulation, useElementOperations, useExportHandlers, useExportSaveAs, useFindReplace, useFollowMode, useFontInjection, useGroupAlignLayerHandlers, useIOHandlers, useInsertElements, useIsMobile, useKeyboardInsets, useKeyboardShortcutWiring, useKeyboardShortcuts, useLayoutSwitching, useLoadContent, useMergeShapesHandler, useModalDismissDrag, usePointerHandlers, usePresenceTracking, usePresentationAnnotations, usePresentationKeyboard, usePresentationMode, usePresentationSetup, usePresenterWindow, usePrintHandlers, usePropertyHandlers, useRecoveryDetection, useReducedMotion, useRehearsalTimings, useResizablePanels, useSectionOperations, useSerialize, useSheetDismissDrag, useSlideManagement, useSlideNavigation, useSwipeNavigation, useTableOperations, useThemeHandlers, useThemeSwitching, useTouchGestures, useViewerCoreState, useViewerDialogs, useViewerIntegration, useViewerState, useViewerUIState, useVirtualizedSlides, useYjsDocumentSync, useYjsProvider, useZoomNavigation, useZoomViewport, wrapChrome };
|
|
18156
|
+
export { ACTION_VERB_MAP, ANIMATION_PRESET_OPTIONS, DEFAULT_FILL_COLOR, DEFAULT_FONT_FAMILY, DEFAULT_STROKE_COLOR, DEFAULT_TEXT_COLOR, DEFAULT_TEXT_FONT_SIZE, EMU_PER_PX, GRID_SIZE, HYPERLINK_COLOR, MIN_ELEMENT_SIZE, MIN_TOUCH_TARGET, SHAPE_PRESETS, SHORTCUT_REFERENCE_ITEMS, SLIDE_NAV_THUMBNAIL_WIDTH, SLIDE_TRANSITION_OPTIONS, SmartArtNodeText, TOOLBAR_SECTIONS, build3DExtrusionData2 as build3DExtrusionData, buildLineGlowFilter, buildLineShadowCss, buildReactChartViewModel, buildTextBody3DSceneStyle2 as buildTextBody3DSceneStyle, buildTree, cellStyleToCss, chevronPoints, clearAudienceContent, cn, colour, computeVirtualRange, detectTargetType, ensureArrayValue, extractCellText, extractTableCellStyle, fitFontSize, gearPath, getAnimationInitialStyle2 as getAnimationInitialStyle, getConnectorPathGeometry, getCropShapeClipPath, getDuotoneColors, getImageRenderStyle, getImageTilingStyle, getShapeVisualStyle, getTableCellBandStyle, getTextLayoutStyle, getTextStyleForElement, getTextWarpStyle, hasDagDuotoneEffect, isAudienceTab, isConnectorOrLineElement, isImageTiled, layoutToCategory, loadAudienceContent, nodeOpacity, parseAudienceNonce, parseEmailUrl, parseSlideFromUrl, parseTableElementData, renderAccentProcess, renderAlternatingFlow, renderArtisticEffectSvgFilter, renderChartElement, renderConnectorMarker, renderDagDuotoneSvgFilter, renderDescendingProcess, renderDuotoneSvgFilter, renderGroupedList, renderHorizontalPictureList, renderImageAlphaSvgFilter, renderMediaElement, renderPictureAccentList, renderPyramidList, renderStepDownProcess, renderTableElement, renderTextSegments, renderToCanvas, renderVectorShape, renderVerticalBlockList, renderVerticalChevronList, resolvePalette, resolveSmartArtDataPalette, resolveStyle, shouldRenderFallbackLabel, smartArtNodeGroupProps, startPreviewAnimation, stopPreviewAnimation, storeAudienceContent, styleShadow, styleStroke, treeDepth, treeWidth, truncate, useAnimationPlayback, useAnnotationHandlers, useAudienceMode, useAutosave, useBroadcastFollower, useCanvasInteractions, useClipboardHandlers, useCollaborativeHistory, useCollaborativeState, useComments, useContentLifecycle, useDerivedElementState, useDerivedSlideState, useDialogCustomShows, useEditorHistory, useEditorOperations, useElementManipulation, useElementOperations, useExportHandlers, useExportSaveAs, useFindReplace, useFollowMode, useFontInjection, useGroupAlignLayerHandlers, useIOHandlers, useInsertElements, useIsMobile, useKeyboardInsets, useKeyboardShortcutWiring, useKeyboardShortcuts, useLayoutSwitching, useLoadContent, useMergeShapesHandler, useModalDismissDrag, usePointerHandlers, usePresenceTracking, usePresentationAnnotations, usePresentationKeyboard, usePresentationMode, usePresentationSetup, usePresenterWindow, usePrintHandlers, usePropertyHandlers, useRecoveryDetection, useReducedMotion, useRehearsalTimings, useResizablePanels, useSectionOperations, useSerialize, useSheetDismissDrag, useSlideManagement, useSlideNavigation, useSwipeNavigation, useTableOperations, useThemeHandlers, useThemeSwitching, useTouchGestures, useViewerCoreState, useViewerDialogs, useViewerIntegration, useViewerState, useViewerUIState, useVirtualizedSlides, useYjsDocumentSync, useYjsProvider, useZoomNavigation, useZoomViewport, wrapChrome };
|
|
Binary file
|
|
Binary file
|