import { Spinner } from '@wordpress/components'; import { useState, useEffect } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { useInView } from 'react-intersection-observer'; import Masonry from 'react-masonry-css'; import { usePatterns } from '@library/hooks/usePatterns'; import { BlockPreviewButton } from './BlockPreviewButton'; export const ModalContent = ({ insertPattern, siteType, category }) => { const { data, isLoading, setSize } = usePatterns({ siteType: siteType?.slug, category, }); const [showLoading, setShowLoading] = useState(true); const [loadMoreRef, inView] = useInView(); const noMore = data?.at(-1)?.length < 9; // hard coded for now useEffect(() => { if (isLoading) { return setShowLoading(true); } const id = setTimeout(() => { setShowLoading(false); }, 750); return () => clearTimeout(id); }, [isLoading]); useEffect(() => { if (!inView || isLoading) return; setSize((size) => size + 1); }, [inView, isLoading, setSize]); if (isLoading || !data?.length) { return (