// Copyright (C) 2017-2023 Smart code 203358507 import React, { useCallback, useLayoutEffect, useState } from 'react'; type Props = { className: string, src: string, alt: string, fallbackSrc: string, renderFallback: () => React.ReactNode, onError: (event: React.SyntheticEvent) => void, }; const Image = ({ className, src, alt, fallbackSrc, renderFallback, ...props }: Props) => { const [broken, setBroken] = useState(false); const onError = useCallback((event: React.SyntheticEvent) => { if (typeof props.onError === 'function') { props.onError(event); } setBroken(true); }, [props.onError]); useLayoutEffect(() => { setBroken(false); }, [src]); return (broken || typeof src !== 'string' || src.length === 0) && (typeof renderFallback === 'function' || typeof fallbackSrc === 'string') ? typeof renderFallback === 'function' ? renderFallback() : {alt} : {alt}; }; export default Image;