import { useRef } from "react"; import { useTheme } from "@mui/material/styles"; import Box from "@mui/material/Box"; import { FixedSizeList as List } from "react-window"; import { useTranslation } from "react-i18next"; import { getLanguageDirection } from "../i18n"; import { convertNumberToPersian, formatNumber, useWindowSize, } from "../lib/utils"; import { Donation } from "../types"; type Props = { donations: Donation[]; }; export const DonationList = (props: Props) => { const theme = useTheme(); const { i18n } = useTranslation(); const _ = useWindowSize(); // rerender on resize const { donations } = props; const listRef = useRef(null); const wiewWidth = listRef.current?.scrollWidth || 0; const itemWidth = 65; const itemHeight = 140; const itemsPerRow = Math.floor(wiewWidth / itemWidth); const rowCount = Math.ceil(donations.length / itemsPerRow); const listHeight = 300; return ( {({ index, style }) => { const items = donations.slice( index * itemsPerRow, index * itemsPerRow + itemsPerRow, ); return ( {items.map((d) => ( ))} ); }} ); };