/** * External dependencies */ import clsx from 'clsx'; /** * WordPress dependencies */ import { Spinner } from '@wordpress/components'; import { Stack } from '@wordpress/ui'; /** * Internal dependencies */ import type { ViewActivityProps } from '../../../types'; import getDataByGroup from '../utils/get-data-by-group'; import ActivityGroup from './activity-group'; import ActivityItems from './activity-items'; import { useDelayedLoading } from '../../../hooks/use-delayed-loading'; export default function ViewActivity< Item >( props: ViewActivityProps< Item > ) { const { empty, data, fields, isLoading, view, className } = props; const isDelayedLoading = useDelayedLoading( !! isLoading ); const hasData = !! data?.length; // Check if data should be grouped const groupField = view.groupBy?.field ? fields.find( ( field ) => field.id === view.groupBy?.field ) : null; const dataByGroup = hasData && groupField ? getDataByGroup( data, groupField ) : null; const isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup; if ( ! hasData ) { return (