react-img-component
Version:
A responsive lazy-loading image component for React
41 lines • 1.07 kB
JavaScript
// src/Image.tsx
import { useState, useEffect, useRef } from "react";
import { jsx } from "react/jsx-runtime";
function ReactImage(props) {
const { src, alt, placeholderSrc, ...restProps } = props;
const [isVisible, setIsVisible] = useState(false);
const imgRef = useRef(null);
useEffect(() => {
const observer = new IntersectionObserver(
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
setIsVisible(true);
observer.disconnect();
}
});
},
{ threshold: 0.1 }
);
if (imgRef.current) observer.observe(imgRef.current);
return () => observer.disconnect();
}, []);
return /* @__PURE__ */ jsx(
"img",
{
ref: imgRef,
src: isVisible ? src : placeholderSrc,
alt,
style: {
filter: isVisible ? "none" : "blur(10px)",
transition: "filter 0.3s ease-in-out"
},
...restProps
}
);
}
var Image_default = ReactImage;
export {
Image_default as default
};
//# sourceMappingURL=index.mjs.map