@contentful/experiences-visual-editor-react 3.2.0-dev-20250812T1256-c477cd9.0 → 3.2.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/dist/renderApp.js CHANGED
@@ -50290,7 +50290,7 @@ const collectNodeCoordinates = (node, nodeToCoordinatesMap) => {
50290
50290
  node.children.forEach((child) => collectNodeCoordinates(child, nodeToCoordinatesMap));
50291
50291
  };
50292
50292
  function waitForImageToBeLoaded(imageNode) {
50293
- if (imageNode.complete) {
50293
+ if (imageNode.complete && (imageNode.naturalWidth > 0 || imageNode.naturalHeight > 0)) {
50294
50294
  return Promise.resolve();
50295
50295
  }
50296
50296
  return new Promise((resolve, reject) => {
@@ -50324,8 +50324,8 @@ const useCanvasGeometryUpdates = ({ tree, canvasMode }) => {
50324
50324
  trailing: true,
50325
50325
  }), []);
50326
50326
  const debouncedCollectImages = reactExports.useMemo(() => debounce(() => {
50327
- return Array.from(document.querySelectorAll('img'));
50328
- }, 300, { leading: true, trailing: true }), []);
50327
+ setImages((prev) => ({ ...prev, allImages: findAllImages() }));
50328
+ }, 300, { trailing: true }), []);
50329
50329
  // Store tree in a ref to avoid the need to deactivate & reactivate the mutation observer
50330
50330
  // when the tree changes. This is important to avoid missing out on some mutation events.
50331
50331
  const treeRef = reactExports.useRef(tree);
@@ -50334,13 +50334,17 @@ const useCanvasGeometryUpdates = ({ tree, canvasMode }) => {
50334
50334
  }, [tree]);
50335
50335
  // Handling window resize events
50336
50336
  reactExports.useEffect(() => {
50337
- const resizeEventListener = () => debouncedUpdateGeometry(treeRef.current, 'resize');
50337
+ const resizeEventListener = () => {
50338
+ debouncedUpdateGeometry(treeRef.current, 'resize');
50339
+ // find all images on resize
50340
+ debouncedCollectImages();
50341
+ };
50338
50342
  window.addEventListener('resize', resizeEventListener);
50339
50343
  return () => window.removeEventListener('resize', resizeEventListener);
50340
- }, [debouncedUpdateGeometry]);
50344
+ }, [debouncedCollectImages, debouncedUpdateGeometry]);
50341
50345
  const [{ allImages, loadedImages }, setImages] = reactExports.useState(() => {
50342
- const allImages = debouncedCollectImages();
50343
- const loadedImages = new WeakSet();
50346
+ const allImages = findAllImages();
50347
+ const loadedImages = new WeakMap();
50344
50348
  return { allImages, loadedImages };
50345
50349
  });
50346
50350
  // Handling DOM mutations
@@ -50348,8 +50352,7 @@ const useCanvasGeometryUpdates = ({ tree, canvasMode }) => {
50348
50352
  const observer = new MutationObserver(() => {
50349
50353
  debouncedUpdateGeometry(treeRef.current, 'mutation');
50350
50354
  // find all images on any DOM change
50351
- const allImages = debouncedCollectImages();
50352
- setImages((prevState) => ({ ...prevState, allImages }));
50355
+ debouncedCollectImages();
50353
50356
  });
50354
50357
  // send initial geometry in case the tree is empty
50355
50358
  debouncedUpdateGeometry(treeRef.current, 'mutation');
@@ -50365,13 +50368,14 @@ const useCanvasGeometryUpdates = ({ tree, canvasMode }) => {
50365
50368
  reactExports.useEffect(() => {
50366
50369
  let isCurrent = true;
50367
50370
  allImages.forEach(async (imageNode) => {
50368
- if (loadedImages.has(imageNode)) {
50371
+ const lastSrc = loadedImages.get(imageNode);
50372
+ if (lastSrc === imageNode.currentSrc) {
50369
50373
  return;
50370
50374
  }
50371
50375
  // update the geometry after each image is loaded, as it can shift the layout
50372
50376
  await waitForImageToBeLoaded(imageNode);
50373
50377
  if (isCurrent) {
50374
- loadedImages.add(imageNode);
50378
+ loadedImages.set(imageNode, imageNode.currentSrc);
50375
50379
  debouncedUpdateGeometry(treeRef.current, 'imageLoad');
50376
50380
  }
50377
50381
  });
@@ -50398,6 +50402,9 @@ const useCanvasGeometryUpdates = ({ tree, canvasMode }) => {
50398
50402
  return () => document.removeEventListener('wheel', onWheel);
50399
50403
  }, [canvasMode]);
50400
50404
  };
50405
+ function findAllImages() {
50406
+ return Array.from(document.querySelectorAll('img'));
50407
+ }
50401
50408
 
50402
50409
  const RootRenderer = ({ inMemoryEntitiesStore, canvasMode }) => {
50403
50410
  useEditorSubscriber(inMemoryEntitiesStore);