import { BlockPreviewButton } from '@library/components/BlockPreviewButton'; import { usePatterns } from '@library/hooks/usePatterns'; import { Spinner } from '@wordpress/components'; import { useEffect, useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { useInView } from 'react-intersection-observer'; import Masonry from 'react-masonry-css'; export const ModalContent = ({ insertPattern, category }) => { const { data, isLoading, setSize } = usePatterns({ 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 (