[Bug]: Whenver i call  editorInstance.createAssets with network url it renders it twice on canvas, except this other images renders only once
### What happened?

Even if you try github example mentioned for the images that are not network images are rendered once but when image is network image with https://url it renders it twice on canvas

this code create assets twice if network image is there and once if image is a like file.png or base64image etc. I want network image to be rendered once. How to resolve this. Thanks
```
  await editorInstance.createAssets([
          {
            id: assetId,
            type: "image",
            typeName: "asset",
            props: {
              name: `generated-image-${index + 1}.png`,
              src: link , //network image url present here
              w: imageWidth,
              h: imageHeight,
              mimeType: "image/png",
              isAnimated: false,
            },
            meta: {},
          },
        ]);
```
 Here is the code
```
import { useCallback, useState } from "react";
import {
  Editor,
  createShapeId,
  AssetRecordType,
  TLShape,
  TLParentId,
} from "tldraw";

const useHandleMount = (
  cloudinaryImageLink: string[],
  setEditor: React.Dispatch<React.SetStateAction<Editor | null>>,
  setImageAdded: React.Dispatch<React.SetStateAction<boolean>>,
  imageAdded: boolean,
  imageHeight: number,
  imageWidth: number
) => {
  const [shapeIds, setShapeIds] = useState<string[]>([]);
  const [processedUrls] = useState(new Set());

  return useCallback((editorInstance: Editor) => {
    editorInstance.updateInstanceState({ isGridMode: true });
    setEditor(editorInstance);
    
    console.log("Tldraw mounted");

    if (!cloudinaryImageLink.length || imageAdded) {
      console.log("Invalid image link or image already added");
      return;
    }

    // Clear previously processed URLs if starting fresh
    if (!imageAdded) {
      processedUrls.clear();
    }

    const newShapeIds: string[] = [];

    cloudinaryImageLink.forEach(async (link, index) => {
      // Skip if this URL has already been processed
      if (processedUrls.has(link)) {
        console.log("Skipping already processed image:", link);
        return;
      }

      processedUrls.add(link);
      
      try {
        const assetId = AssetRecordType.createId();
        await editorInstance.createAssets([
          {
            id: assetId,
            type: "image",
            typeName: "asset",
            props: {
              name: `generated-image-${index + 1}.png`,
              src: link,
              w: imageWidth,
              h: imageHeight,
              mimeType: "image/png",
              isAnimated: false,
            },
            meta: {},
          },
        ]);

        const id = createShapeId();
        editorInstance.createShape({
          id: id,
          type: "image",
          x: (window.innerWidth - imageWidth) / 2,
          y: (window.innerHeight - imageHeight) / 2,
          props: {
            assetId,
            w: imageWidth,
            h: imageHeight,
          },
        });

        newShapeIds.push(id);

        if (index === cloudinaryImageLink.length - 1) {
          setShapeIds((prevIds) => [...prevIds, ...newShapeIds]);
    
          const shapes: TLShape[] = newShapeIds
            .map((id) => editorInstance.getShape(id as TLParentId))
            .filter((shape): shape is TLShape => shape !== undefined);

          editorInstance
            .alignShapes(shapes, "center-horizontal")
            .alignShapes(shapes, "center-vertical")
            .packShapes(shapes, 32)
            .selectAll()
            .zoomToBounds(editorInstance.getSelectionPageBounds()!)
            .selectNone();

          setImageAdded(true);
        }
      } catch (error) {
        console.error("Error adding image:", error);
      }
    });
  }, [cloudinaryImageLink, imageAdded, setEditor, setImageAdded, imageHeight, imageWidth, processedUrls]);
};

export default useHandleMount;
```

### How can we reproduce the bug?

_No response_

### What browsers are you seeing the problem on?

_No response_

### Where did this happen?

The developer package

### Contact Details

_No response_

### Code of Conduct

- [X] I agree to follow this project's Code of Conduct