"use client"; import { forwardRef, type ImgHTMLAttributes, useState } from "react"; type Props = Omit, "src"> & { src: string; sourceKey: string }; export const CanvasPreviewImage = forwardRef(function CanvasPreviewImage( { src, sourceKey, onLoad, style, ...props }, ref, ) { const [displayed, setDisplayed] = useState({ sourceKey, src }); const visibleSrc = displayed.sourceKey === sourceKey ? displayed.src : src; const sources = visibleSrc === src ? [src] : [visibleSrc, src]; return <>{sources.map(candidate => { const visible = candidate === visibleSrc; return {visible { const image = event.currentTarget; onLoad?.(event); void image.decode().then(() => { if (image.isConnected && candidate === src) setDisplayed({ sourceKey, src: candidate }); }).catch(() => undefined); }} />; })}; });