/** * External dependencies */ import clsx from 'clsx'; /** * WordPress dependencies */ import { Spinner } from '@wordpress/components'; import { __, sprintf } from '@wordpress/i18n'; import { Stack } from '@wordpress/ui'; /** * Internal dependencies */ import type { ViewGridProps } from '../../../types'; import getDataByGroup from '../utils/get-data-by-group'; import CompositeGrid from './composite-grid'; import { useDelayedLoading } from '../../../hooks/use-delayed-loading'; function ViewGrid< Item >( { actions, data, fields, getItemId, isLoading, onChangeSelection, onClickItem, isItemClickable, renderItemLink, selection, view, className, empty, }: ViewGridProps< Item > ) { const isDelayedLoading = useDelayedLoading( !! isLoading ); const hasData = !! data?.length; const groupField = view.groupBy?.field ? fields.find( ( f ) => f.id === view.groupBy?.field ) : null; const dataByGroup = groupField ? getDataByGroup( data, groupField ) : null; const isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup; if ( ! hasData ) { return (