pptx-react-viewer 2.16.5 → 2.16.7
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-6B26AZGA.mjs → AiChatPanel-2YYL6AKX.mjs} +3 -9
- package/dist/AiChatPanel-2YYL6AKX.mjs.br +0 -0
- package/dist/AiChatPanel-2YYL6AKX.mjs.gz +0 -0
- package/dist/{AiChatPanel-FGEIZQCD.js → AiChatPanel-XSXMU2Q5.js} +23 -29
- package/dist/AiChatPanel-XSXMU2Q5.js.br +0 -0
- package/dist/AiChatPanel-XSXMU2Q5.js.gz +0 -0
- package/dist/{Model3DScene-2JX5CUPK.js → Model3DScene-36UJZLCO.js} +2 -2
- package/dist/Model3DScene-36UJZLCO.js.br +0 -0
- package/dist/Model3DScene-36UJZLCO.js.gz +0 -0
- package/dist/{Model3DScene-NKYNKUPP.mjs → Model3DScene-NVFP3JBJ.mjs} +1 -1
- package/dist/Model3DScene-NVFP3JBJ.mjs.br +0 -0
- package/dist/Model3DScene-NVFP3JBJ.mjs.gz +0 -0
- package/dist/PowerPointViewer-Du7u4INi.d.ts.map +1 -1
- package/dist/{SurfaceChart3DScene-TTL2FTEG.mjs → SurfaceChart3DScene-BMFEDBLF.mjs} +1 -1
- package/dist/{SurfaceChart3DScene-TTL2FTEG.mjs.br → SurfaceChart3DScene-BMFEDBLF.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-BMFEDBLF.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-AE5SKG7U.js → SurfaceChart3DScene-W6I255VU.js} +2 -2
- package/dist/SurfaceChart3DScene-W6I255VU.js.br +0 -0
- package/dist/SurfaceChart3DScene-W6I255VU.js.gz +0 -0
- package/dist/{chunk-LCWZ4TD4.js → chunk-77TMRPDU.js} +2144 -1527
- package/dist/chunk-77TMRPDU.js.br +0 -0
- package/dist/chunk-77TMRPDU.js.gz +0 -0
- package/dist/{chunk-247XH4EN.mjs → chunk-D5TAZ5NL.mjs} +1214 -53
- package/dist/chunk-D5TAZ5NL.mjs.br +0 -0
- package/dist/chunk-D5TAZ5NL.mjs.gz +0 -0
- package/dist/{chunk-EFZ4K6V5.mjs → chunk-J56KVWI5.mjs} +1132 -515
- package/dist/chunk-J56KVWI5.mjs.br +0 -0
- package/dist/chunk-J56KVWI5.mjs.gz +0 -0
- package/dist/{chunk-5YGTUHNO.mjs → chunk-J5V7UCD2.mjs} +15 -1403
- package/dist/chunk-J5V7UCD2.mjs.br +0 -0
- package/dist/chunk-J5V7UCD2.mjs.gz +0 -0
- package/dist/{chunk-VZI35LEF.js → chunk-JSJZWA43.js} +9 -3
- package/dist/chunk-JSJZWA43.js.br +0 -0
- package/dist/chunk-JSJZWA43.js.gz +0 -0
- package/dist/{chunk-Y6W5LGTR.mjs → chunk-KVNZGR3L.mjs} +14 -93
- package/dist/chunk-KVNZGR3L.mjs.br +0 -0
- package/dist/chunk-KVNZGR3L.mjs.gz +0 -0
- package/dist/{chunk-P65VL2I6.js → chunk-NFJLF7TX.js} +258 -1676
- package/dist/chunk-NFJLF7TX.js.br +0 -0
- package/dist/chunk-NFJLF7TX.js.gz +0 -0
- package/dist/{chunk-MZN2UIYT.mjs → chunk-QNKJUUKD.mjs} +7 -2
- package/dist/chunk-QNKJUUKD.mjs.br +0 -0
- package/dist/chunk-QNKJUUKD.mjs.gz +0 -0
- package/dist/{chunk-UNWU6D2M.js → chunk-S7HPAJRX.js} +350 -429
- package/dist/chunk-S7HPAJRX.js.br +0 -0
- package/dist/chunk-S7HPAJRX.js.gz +0 -0
- package/dist/{chunk-6QGTRYSC.js → chunk-USAJMMF2.js} +1248 -59
- package/dist/chunk-USAJMMF2.js.br +0 -0
- package/dist/chunk-USAJMMF2.js.gz +0 -0
- package/dist/index.d.ts +14 -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 +37 -7
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +78 -78
- package/dist/internals.js.br +5 -4
- 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/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/{useViewerBuildingBlocks-CBZrHhxl.d.ts → useViewerBuildingBlocks-Xddn6SFj.d.ts} +15 -1
- package/dist/useViewerBuildingBlocks-Xddn6SFj.d.ts.map +1 -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-6B26AZGA.mjs.br +0 -0
- package/dist/AiChatPanel-6B26AZGA.mjs.gz +0 -0
- package/dist/AiChatPanel-FGEIZQCD.js.br +0 -0
- package/dist/AiChatPanel-FGEIZQCD.js.gz +0 -0
- package/dist/Model3DScene-2JX5CUPK.js.br +0 -0
- package/dist/Model3DScene-2JX5CUPK.js.gz +0 -0
- package/dist/Model3DScene-NKYNKUPP.mjs.br +0 -0
- package/dist/Model3DScene-NKYNKUPP.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-AE5SKG7U.js.br +0 -0
- package/dist/SurfaceChart3DScene-AE5SKG7U.js.gz +0 -0
- package/dist/SurfaceChart3DScene-TTL2FTEG.mjs.gz +0 -0
- package/dist/chunk-247XH4EN.mjs.br +0 -0
- package/dist/chunk-247XH4EN.mjs.gz +0 -0
- package/dist/chunk-5YGTUHNO.mjs.br +0 -0
- package/dist/chunk-5YGTUHNO.mjs.gz +0 -0
- package/dist/chunk-6QGTRYSC.js.br +0 -0
- package/dist/chunk-6QGTRYSC.js.gz +0 -0
- package/dist/chunk-EFZ4K6V5.mjs.br +0 -0
- package/dist/chunk-EFZ4K6V5.mjs.gz +0 -0
- package/dist/chunk-LCWZ4TD4.js.br +0 -0
- package/dist/chunk-LCWZ4TD4.js.gz +0 -0
- package/dist/chunk-MZN2UIYT.mjs.br +0 -0
- package/dist/chunk-MZN2UIYT.mjs.gz +0 -0
- package/dist/chunk-P65VL2I6.js.br +0 -0
- package/dist/chunk-P65VL2I6.js.gz +0 -0
- package/dist/chunk-UNWU6D2M.js.br +0 -0
- package/dist/chunk-UNWU6D2M.js.gz +0 -0
- package/dist/chunk-VZI35LEF.js.br +0 -0
- package/dist/chunk-VZI35LEF.js.gz +0 -0
- package/dist/chunk-Y6W5LGTR.mjs.br +0 -0
- package/dist/chunk-Y6W5LGTR.mjs.gz +0 -0
- package/dist/useViewerBuildingBlocks-CBZrHhxl.d.ts.map +0 -1
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkUSAJMMF2_js = require('./chunk-USAJMMF2.js');
|
|
4
4
|
var chunk4VNS5WPM_js = require('./chunk-4VNS5WPM.js');
|
|
5
5
|
var mcp = require('pptx-viewer-mcp');
|
|
6
6
|
var mcpSchemas = require('pptx-viewer-mcp/schemas');
|
|
@@ -14879,7 +14879,7 @@ async function buildSlideMarkdown(slides, slideIndex2, meta3, options = {}) {
|
|
|
14879
14879
|
};
|
|
14880
14880
|
let markdown;
|
|
14881
14881
|
try {
|
|
14882
|
-
const converter = new
|
|
14882
|
+
const converter = new chunkUSAJMMF2_js.PptxMarkdownConverter(
|
|
14883
14883
|
"",
|
|
14884
14884
|
{
|
|
14885
14885
|
sourceName: meta3.title ?? "deck.pptx",
|
|
@@ -15471,7 +15471,7 @@ var getTheme = (ctx) => {
|
|
|
15471
15471
|
name: theme?.name,
|
|
15472
15472
|
colorScheme: theme?.colorScheme,
|
|
15473
15473
|
fontScheme: theme?.fontScheme,
|
|
15474
|
-
availablePresets: Object.keys(
|
|
15474
|
+
availablePresets: Object.keys(chunkUSAJMMF2_js.ThemePresets)
|
|
15475
15475
|
};
|
|
15476
15476
|
};
|
|
15477
15477
|
var readExecutors = {
|
|
@@ -16218,6 +16218,11 @@ function changeGhostStyle(change, phase, config2) {
|
|
|
16218
16218
|
}
|
|
16219
16219
|
init_chat_history_store();
|
|
16220
16220
|
init_chat_history_store();
|
|
16221
|
+
function deckIdFromBridge(bridge) {
|
|
16222
|
+
const meta3 = bridge.getDeckMeta();
|
|
16223
|
+
const title = (meta3.title ?? "deck").trim().toLowerCase().replace(/\s+/gu, "-").slice(0, 60);
|
|
16224
|
+
return `${title || "deck"}::${meta3.slideCount}`;
|
|
16225
|
+
}
|
|
16221
16226
|
function isTextPart(part) {
|
|
16222
16227
|
return part.type === "text";
|
|
16223
16228
|
}
|
|
@@ -16724,6 +16729,7 @@ exports.changeGhostStyle = changeGhostStyle;
|
|
|
16724
16729
|
exports.computeFocusTargets = computeFocusTargets;
|
|
16725
16730
|
exports.createAiChatSession = createAiChatSession;
|
|
16726
16731
|
exports.createChatHistoryStore = createChatHistoryStore;
|
|
16732
|
+
exports.deckIdFromBridge = deckIdFromBridge;
|
|
16727
16733
|
exports.describeToolActivity = describeToolActivity;
|
|
16728
16734
|
exports.focusTargetChips = focusTargetChips;
|
|
16729
16735
|
exports.humanizeDiffLine = humanizeDiffLine;
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH,
|
|
1
|
+
import { cloneHistorySnapshot, MIN_ELEMENT_SIZE, ZOOM_TO_SELECTION_PADDING, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, UNGROUPED_SECTION_ID, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-J5V7UCD2.mjs';
|
|
2
2
|
import { translationsEn } from './chunk-5IUEPQTK.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, 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-
|
|
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, findInSlides, applyFindReplacements, createCollaborationLivePatcher, publishLiveInlineText, PptxHandler, collectMediaElements, collectImagePaths, partitionTemplateElements, 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, buildSaveSlides, 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-D5TAZ5NL.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';
|
|
@@ -2831,93 +2831,6 @@ function usePresentationAnnotations(input) {
|
|
|
2831
2831
|
clearAllAnnotations
|
|
2832
2832
|
};
|
|
2833
2833
|
}
|
|
2834
|
-
function findInSlides(slides, findQuery, findMatchCase) {
|
|
2835
|
-
if (!findQuery) {
|
|
2836
|
-
return [];
|
|
2837
|
-
}
|
|
2838
|
-
const results = [];
|
|
2839
|
-
const normalised = findMatchCase ? findQuery : findQuery.toLowerCase();
|
|
2840
|
-
slides.forEach((slide, slideIndex) => {
|
|
2841
|
-
for (const element of slide.elements || []) {
|
|
2842
|
-
if (!hasTextProperties(element)) {
|
|
2843
|
-
continue;
|
|
2844
|
-
}
|
|
2845
|
-
const segments = element.textSegments ?? [];
|
|
2846
|
-
segments.forEach((seg, segIndex) => {
|
|
2847
|
-
const text = findMatchCase ? seg.text : (seg.text || "").toLowerCase();
|
|
2848
|
-
let offset = 0;
|
|
2849
|
-
while (offset < text.length) {
|
|
2850
|
-
const pos = text.indexOf(normalised, offset);
|
|
2851
|
-
if (pos === -1) {
|
|
2852
|
-
break;
|
|
2853
|
-
}
|
|
2854
|
-
results.push({
|
|
2855
|
-
slideIndex,
|
|
2856
|
-
elementId: element.id,
|
|
2857
|
-
segmentIndex: segIndex,
|
|
2858
|
-
startOffset: pos,
|
|
2859
|
-
length: findQuery.length
|
|
2860
|
-
});
|
|
2861
|
-
offset = pos + 1;
|
|
2862
|
-
}
|
|
2863
|
-
});
|
|
2864
|
-
}
|
|
2865
|
-
});
|
|
2866
|
-
return results;
|
|
2867
|
-
}
|
|
2868
|
-
function applyFindReplacements(slides, toReplace, replaceQuery) {
|
|
2869
|
-
if (toReplace.length === 0) {
|
|
2870
|
-
return slides;
|
|
2871
|
-
}
|
|
2872
|
-
const nextSlides = [...slides];
|
|
2873
|
-
const grouped = /* @__PURE__ */ new Map();
|
|
2874
|
-
for (const match of toReplace) {
|
|
2875
|
-
const key = `${match.slideIndex}::${match.elementId}::${match.segmentIndex}`;
|
|
2876
|
-
if (!grouped.has(key)) {
|
|
2877
|
-
grouped.set(key, []);
|
|
2878
|
-
}
|
|
2879
|
-
grouped.get(key).push(match);
|
|
2880
|
-
}
|
|
2881
|
-
for (const [, matches] of grouped) {
|
|
2882
|
-
const sorted = [...matches].sort((a, b) => b.startOffset - a.startOffset);
|
|
2883
|
-
for (const match of sorted) {
|
|
2884
|
-
const slide = nextSlides[match.slideIndex];
|
|
2885
|
-
if (!slide) {
|
|
2886
|
-
continue;
|
|
2887
|
-
}
|
|
2888
|
-
const elIdx = (slide.elements || []).findIndex((e) => e.id === match.elementId);
|
|
2889
|
-
if (elIdx === -1) {
|
|
2890
|
-
continue;
|
|
2891
|
-
}
|
|
2892
|
-
const element = slide.elements[elIdx];
|
|
2893
|
-
if (!hasTextProperties(element)) {
|
|
2894
|
-
continue;
|
|
2895
|
-
}
|
|
2896
|
-
const segments = [...element.textSegments ?? []];
|
|
2897
|
-
const seg = segments[match.segmentIndex];
|
|
2898
|
-
if (!seg) {
|
|
2899
|
-
continue;
|
|
2900
|
-
}
|
|
2901
|
-
const before = seg.text.slice(0, match.startOffset);
|
|
2902
|
-
const after = seg.text.slice(match.startOffset + match.length);
|
|
2903
|
-
segments[match.segmentIndex] = {
|
|
2904
|
-
...seg,
|
|
2905
|
-
text: before + replaceQuery + after
|
|
2906
|
-
};
|
|
2907
|
-
const nextElements = [...slide.elements];
|
|
2908
|
-
nextElements[elIdx] = {
|
|
2909
|
-
...element,
|
|
2910
|
-
text: segments.map((s) => s.text).join(""),
|
|
2911
|
-
textSegments: segments
|
|
2912
|
-
};
|
|
2913
|
-
nextSlides[match.slideIndex] = {
|
|
2914
|
-
...slide,
|
|
2915
|
-
elements: nextElements
|
|
2916
|
-
};
|
|
2917
|
-
}
|
|
2918
|
-
}
|
|
2919
|
-
return nextSlides;
|
|
2920
|
-
}
|
|
2921
2834
|
function useFindReplace({
|
|
2922
2835
|
slides,
|
|
2923
2836
|
mode,
|
|
@@ -2933,7 +2846,7 @@ function useFindReplace({
|
|
|
2933
2846
|
const [findResults, setFindResults] = useState([]);
|
|
2934
2847
|
const [findResultIndex, setFindResultIndex] = useState(-1);
|
|
2935
2848
|
const performFind = useCallback(() => {
|
|
2936
|
-
const results = findInSlides(slides, findQuery, findMatchCase);
|
|
2849
|
+
const results = findInSlides(slides, findQuery, { matchCase: findMatchCase });
|
|
2937
2850
|
if (!findQuery) {
|
|
2938
2851
|
setFindResults([]);
|
|
2939
2852
|
setFindResultIndex(-1);
|
|
@@ -2966,7 +2879,9 @@ function useFindReplace({
|
|
|
2966
2879
|
if (toReplace.length === 0) {
|
|
2967
2880
|
return;
|
|
2968
2881
|
}
|
|
2969
|
-
onUpdateSlides(
|
|
2882
|
+
onUpdateSlides(
|
|
2883
|
+
(prevSlides) => applyFindReplacements(prevSlides, toReplace, replaceQuery).slides
|
|
2884
|
+
);
|
|
2970
2885
|
onMarkDirty();
|
|
2971
2886
|
},
|
|
2972
2887
|
[replaceQuery, onUpdateSlides, onMarkDirty]
|
|
@@ -10270,7 +10185,7 @@ function useCollaborationLivePatch({
|
|
|
10270
10185
|
}, [patcher, doc, isConnected, isSynced]);
|
|
10271
10186
|
}
|
|
10272
10187
|
function useLayoutSwitching(input) {
|
|
10273
|
-
const { handler, slides, activeSlideIndex, ops, history } = input;
|
|
10188
|
+
const { handler, slides, activeSlideIndex, ops, history, onTemplateElementsChanged } = input;
|
|
10274
10189
|
const [availableLayouts, setAvailableLayouts] = useState([]);
|
|
10275
10190
|
const [isLoading, setIsLoading] = useState(false);
|
|
10276
10191
|
const slidesRef = useRef(slides);
|
|
@@ -10308,12 +10223,18 @@ function useLayoutSwitching(input) {
|
|
|
10308
10223
|
next[activeSlideIndex] = updated;
|
|
10309
10224
|
return next;
|
|
10310
10225
|
});
|
|
10226
|
+
if (onTemplateElementsChanged) {
|
|
10227
|
+
onTemplateElementsChanged(
|
|
10228
|
+
updated.id,
|
|
10229
|
+
await handler.getTemplateElementsForSlide(updated.id)
|
|
10230
|
+
);
|
|
10231
|
+
}
|
|
10311
10232
|
history.markDirty();
|
|
10312
10233
|
} finally {
|
|
10313
10234
|
setIsLoading(false);
|
|
10314
10235
|
}
|
|
10315
10236
|
},
|
|
10316
|
-
[handler, activeSlideIndex, ops, history]
|
|
10237
|
+
[handler, activeSlideIndex, ops, history, onTemplateElementsChanged]
|
|
10317
10238
|
);
|
|
10318
10239
|
return {
|
|
10319
10240
|
availableLayouts,
|
|
Binary file
|
|
Binary file
|