Untitled

 avatar
unknown
plain_text
2 months ago
880 B
3
Indexable
const LazyPage = ({ pageNumber, containerWidth }) => {
  const ref = useRef(null);
  const [inView, setInView] = useState(false);

  useEffect(() => {
    const observer = new IntersectionObserver(([entry]) => {
      if (entry.isIntersecting) {
        setInView(true);
        observer.unobserve(ref.current);
      }
    });
    if (ref.current) observer.observe(ref.current);

    return () => {
      if (ref.current) observer.unobserve(ref.current);
    };
  }, []);

  // Ensure a minimum width so the PDF renders correctly
  const pageWidth = Math.max(containerWidth * 0.9, 600);

  return (
    <div ref={ref} className="mb-6 w-full flex justify-center">
      {inView && (
        <Page
          pageNumber={pageNumber}
          renderTextLayer={false}
          width={pageWidth}
          className="bg-white shadow-md rounded"
        />
      )}
    </div>
  );
};
Editor is loading...
Leave a Comment