pptx-react-viewer 2.16.6 → 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.
Files changed (108) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{AiChatPanel-NQFSMKIJ.mjs → AiChatPanel-2YYL6AKX.mjs} +3 -9
  3. package/dist/AiChatPanel-2YYL6AKX.mjs.br +0 -0
  4. package/dist/AiChatPanel-2YYL6AKX.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-T6UN6LME.js → AiChatPanel-XSXMU2Q5.js} +23 -29
  6. package/dist/AiChatPanel-XSXMU2Q5.js.br +0 -0
  7. package/dist/AiChatPanel-XSXMU2Q5.js.gz +0 -0
  8. package/dist/{Model3DScene-SIST7CIH.js → Model3DScene-36UJZLCO.js} +2 -2
  9. package/dist/Model3DScene-36UJZLCO.js.br +0 -0
  10. package/dist/Model3DScene-36UJZLCO.js.gz +0 -0
  11. package/dist/{Model3DScene-4D4GSRIB.mjs → Model3DScene-NVFP3JBJ.mjs} +1 -1
  12. package/dist/Model3DScene-NVFP3JBJ.mjs.br +0 -0
  13. package/dist/Model3DScene-NVFP3JBJ.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-ZT7L27U4.mjs → SurfaceChart3DScene-BMFEDBLF.mjs} +1 -1
  15. package/dist/{SurfaceChart3DScene-ZT7L27U4.mjs.br → SurfaceChart3DScene-BMFEDBLF.mjs.br} +0 -0
  16. package/dist/SurfaceChart3DScene-BMFEDBLF.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-GRM24VBC.js → SurfaceChart3DScene-W6I255VU.js} +2 -2
  18. package/dist/SurfaceChart3DScene-W6I255VU.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-W6I255VU.js.gz +0 -0
  20. package/dist/{chunk-DYGKE2LY.js → chunk-77TMRPDU.js} +2128 -1541
  21. package/dist/chunk-77TMRPDU.js.br +0 -0
  22. package/dist/chunk-77TMRPDU.js.gz +0 -0
  23. package/dist/{chunk-PUBYHZYJ.mjs → chunk-D5TAZ5NL.mjs} +1132 -6
  24. package/dist/chunk-D5TAZ5NL.mjs.br +0 -0
  25. package/dist/chunk-D5TAZ5NL.mjs.gz +0 -0
  26. package/dist/{chunk-YZHBUMVU.mjs → chunk-J56KVWI5.mjs} +1114 -527
  27. package/dist/chunk-J56KVWI5.mjs.br +0 -0
  28. package/dist/chunk-J56KVWI5.mjs.gz +0 -0
  29. package/dist/{chunk-6F76GHPE.mjs → chunk-J5V7UCD2.mjs} +15 -1410
  30. package/dist/chunk-J5V7UCD2.mjs.br +0 -0
  31. package/dist/chunk-J5V7UCD2.mjs.gz +0 -0
  32. package/dist/{chunk-YDYAOW6D.js → chunk-JSJZWA43.js} +9 -3
  33. package/dist/chunk-JSJZWA43.js.br +0 -0
  34. package/dist/chunk-JSJZWA43.js.gz +0 -0
  35. package/dist/{chunk-NI5GSVZU.mjs → chunk-KVNZGR3L.mjs} +6 -91
  36. package/dist/chunk-KVNZGR3L.mjs.br +0 -0
  37. package/dist/chunk-KVNZGR3L.mjs.gz +0 -0
  38. package/dist/{chunk-H36QL5T5.js → chunk-NFJLF7TX.js} +258 -1683
  39. package/dist/chunk-NFJLF7TX.js.br +0 -0
  40. package/dist/chunk-NFJLF7TX.js.gz +0 -0
  41. package/dist/{chunk-VDQD3ZOU.mjs → chunk-QNKJUUKD.mjs} +7 -2
  42. package/dist/chunk-QNKJUUKD.mjs.br +0 -0
  43. package/dist/chunk-QNKJUUKD.mjs.gz +0 -0
  44. package/dist/{chunk-GUDJDY4J.js → chunk-S7HPAJRX.js} +342 -427
  45. package/dist/chunk-S7HPAJRX.js.br +0 -0
  46. package/dist/chunk-S7HPAJRX.js.gz +0 -0
  47. package/dist/{chunk-RZYOOWZN.js → chunk-USAJMMF2.js} +1165 -13
  48. package/dist/chunk-USAJMMF2.js.br +0 -0
  49. package/dist/chunk-USAJMMF2.js.gz +0 -0
  50. package/dist/index.d.ts +12 -0
  51. package/dist/index.js +39 -39
  52. package/dist/index.js.br +0 -0
  53. package/dist/index.js.gz +0 -0
  54. package/dist/index.mjs +5 -5
  55. package/dist/index.mjs.br +0 -0
  56. package/dist/index.mjs.gz +0 -0
  57. package/dist/internals.d.ts +27 -7
  58. package/dist/internals.d.ts.map +1 -1
  59. package/dist/internals.js +78 -78
  60. package/dist/internals.js.br +0 -0
  61. package/dist/internals.js.gz +0 -0
  62. package/dist/internals.mjs +3 -3
  63. package/dist/internals.mjs.br +0 -0
  64. package/dist/internals.mjs.gz +0 -0
  65. package/dist/pptx-viewer.css +1 -1
  66. package/dist/pptx-viewer.css.br +0 -0
  67. package/dist/pptx-viewer.css.gz +0 -0
  68. package/dist/{useViewerBuildingBlocks-DpzU8NZ_.d.ts → useViewerBuildingBlocks-Xddn6SFj.d.ts} +13 -1
  69. package/dist/useViewerBuildingBlocks-Xddn6SFj.d.ts.map +1 -0
  70. package/dist/viewer/index.js +26 -26
  71. package/dist/viewer/index.js.br +0 -0
  72. package/dist/viewer/index.js.gz +0 -0
  73. package/dist/viewer/index.mjs +5 -5
  74. package/dist/viewer/index.mjs.br +0 -0
  75. package/dist/viewer/index.mjs.gz +0 -0
  76. package/package.json +1 -1
  77. package/dist/AiChatPanel-NQFSMKIJ.mjs.br +0 -0
  78. package/dist/AiChatPanel-NQFSMKIJ.mjs.gz +0 -0
  79. package/dist/AiChatPanel-T6UN6LME.js.br +0 -0
  80. package/dist/AiChatPanel-T6UN6LME.js.gz +0 -0
  81. package/dist/Model3DScene-4D4GSRIB.mjs.br +0 -0
  82. package/dist/Model3DScene-4D4GSRIB.mjs.gz +0 -0
  83. package/dist/Model3DScene-SIST7CIH.js.br +0 -0
  84. package/dist/Model3DScene-SIST7CIH.js.gz +0 -0
  85. package/dist/SurfaceChart3DScene-GRM24VBC.js.br +0 -0
  86. package/dist/SurfaceChart3DScene-GRM24VBC.js.gz +0 -0
  87. package/dist/SurfaceChart3DScene-ZT7L27U4.mjs.gz +0 -0
  88. package/dist/chunk-6F76GHPE.mjs.br +0 -0
  89. package/dist/chunk-6F76GHPE.mjs.gz +0 -0
  90. package/dist/chunk-DYGKE2LY.js.br +0 -0
  91. package/dist/chunk-DYGKE2LY.js.gz +0 -0
  92. package/dist/chunk-GUDJDY4J.js.br +0 -0
  93. package/dist/chunk-GUDJDY4J.js.gz +0 -0
  94. package/dist/chunk-H36QL5T5.js.br +0 -0
  95. package/dist/chunk-H36QL5T5.js.gz +0 -0
  96. package/dist/chunk-NI5GSVZU.mjs.br +0 -0
  97. package/dist/chunk-NI5GSVZU.mjs.gz +0 -0
  98. package/dist/chunk-PUBYHZYJ.mjs.br +0 -0
  99. package/dist/chunk-PUBYHZYJ.mjs.gz +0 -0
  100. package/dist/chunk-RZYOOWZN.js.br +0 -0
  101. package/dist/chunk-RZYOOWZN.js.gz +0 -0
  102. package/dist/chunk-VDQD3ZOU.mjs.br +0 -0
  103. package/dist/chunk-VDQD3ZOU.mjs.gz +0 -0
  104. package/dist/chunk-YDYAOW6D.js.br +0 -0
  105. package/dist/chunk-YDYAOW6D.js.gz +0 -0
  106. package/dist/chunk-YZHBUMVU.mjs.br +0 -0
  107. package/dist/chunk-YZHBUMVU.mjs.gz +0 -0
  108. package/dist/useViewerBuildingBlocks-DpzU8NZ_.d.ts.map +0 -1
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkRZYOOWZN_js = require('./chunk-RZYOOWZN.js');
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 chunkRZYOOWZN_js.PptxMarkdownConverter(
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(chunkRZYOOWZN_js.ThemePresets)
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, partitionTemplateElements, UNGROUPED_SECTION_ID, buildSaveSlides, DEFAULT_TABLE_ROWS, DEFAULT_TABLE_COLUMNS, executeMediaCommand, buildPdfFromImageData, buildNotesPdf, EMU_PER_PX, GRID_SIZE, DEFAULT_TEXT_FONT_SIZE } from './chunk-6F76GHPE.mjs';
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-PUBYHZYJ.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, 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((prevSlides) => applyFindReplacements(prevSlides, toReplace, replaceQuery));
2882
+ onUpdateSlides(
2883
+ (prevSlides) => applyFindReplacements(prevSlides, toReplace, replaceQuery).slides
2884
+ );
2970
2885
  onMarkDirty();
2971
2886
  },
2972
2887
  [replaceQuery, onUpdateSlides, onMarkDirty]
Binary file
Binary file