import { useEffect, useState } from 'react' import { useInView } from 'react-intersection-observer' import { LmComponentRender } from '@LmComponentRender' import { LmCardListProps } from './cardTypes' import Grid from '@mui/material/Unstable_Grid2' import { COLUMN_COUNT } from './cardListStyles' import Box from '@mui/material/Box' import clsx from 'clsx' const chunkSize = 30 export default function LmCardList({ content, disablePagination }: LmCardListProps): JSX.Element { const { body = [], ...rest } = content const gutterSize = content.column_gap ? Number(content.column_gap) : 24 const enableInView = !disablePagination && body.length > chunkSize const [intersectionLoadMoreRef, loadMoreInView] = useInView() const [page, setPage] = useState(1) const data = (!disablePagination ? body.slice(0, page * chunkSize) : body) || [] useEffect(() => { if (!disablePagination && loadMoreInView) { setPage((v) => v + 1) } }, [disablePagination, loadMoreInView, setPage]) const variant = content.variant || [] return ( div': { borderRadius: content.image_border_radius } }} className={clsx( variant.map((i) => `card__${i}`), { [`ratio-${content.image_ratio}`]: !!content.image_ratio } )} > .MuiGrid2-root > .MuiCard-root, &.MuiGrid2-container > .MuiGrid2-root > .MuiCard-root > .MuiCardActionArea-root': { height: content.variant?.includes('equal-heights') ? '100%' : 'auto' } }} > {data.map((item) => ( ))}
) }