import React from 'react' import PhotoItemCard from './PhotoItemCard' import Pagination from '../Search/Pagination' import GridWrapper from '../Grid/GridWrapper' import GridItem from '../Grid/GridItem' import splitItemsIntoRows from '../../utils/splitItemsIntoRows' import NoResultsFound from '../Search/NoResultsFound' import styles from './SearchResults.module.scss' const SearchResults = ({ searchResults, searchParams, onSearchSubmitted, layout }) => { if (searchResults.results.search_query_result.search_payload.total_hits === 0) { return } const getBreakpointsImages = (items) => { const breakpoints = [ { breakpoint: 'large', itemsPerRow: 5, gutterWidth: 1.1 } ] const numberOfRows = Number.MAX_SAFE_INTEGER let sliceIndex = 0 const breakpointsImages = breakpoints.map((breakpoint, i) => { const itemRows = splitItemsIntoRows(items, breakpoint.itemsPerRow, numberOfRows) const imagesConfig = itemRows.map((itemRow, rowIndex) => itemRow.items.map((item, imageIndex) => { const numOfGutters = itemRow.items.length - 1 const smallLastRow = rowIndex === itemRows.length - 1 && itemRow.size < breakpoint.itemsPerRow * 0.75 // scale up if close enough const rowSize = smallLastRow ? breakpoint.itemsPerRow : itemRow.size const { aspectRatio = 1 } = item const calculatedMasonryWidth = (aspectRatio / rowSize) * (100 - numOfGutters * breakpoint.gutterWidth) return { ...item, calculatedMasonryWidth } }) ) if (sliceIndex < imagesConfig.length) sliceIndex = imagesConfig.length return { breakpoint: { ...breakpoint, // size: idx(gridBreakpoints, (_) => _[breakpoint.breakpoint]) || 0, size: breakpoint.breakpoint || 0 }, images: imagesConfig.flat() } }) return { breakpointsImages, sliceIndex } } const pagination = () => ( ) if (layout === 'masonry') { const { breakpointsImages } = getBreakpointsImages(searchResults.results.search_query_result.search_payload.items) const items = breakpointsImages[0].images return ( <>
{items.map(item => ( ))}
{pagination()} ) } return ( <> {searchResults.results.search_query_result.search_payload.items.map(item => ( ))} {pagination()} ) } export default SearchResults