put gallery in a container

This commit is contained in:
Chuck Dries 2022-10-24 18:59:53 -07:00
parent 78c9126300
commit f2f44393cb
No known key found for this signature in database
GPG Key ID: A00B7AEAE1DC5BE6
2 changed files with 36 additions and 11 deletions

View File

@ -8,7 +8,8 @@ import useBreakpoint from "use-breakpoint";
// @ts-ignore // @ts-ignore
import themeBreakpoints from "../breakpoints"; import themeBreakpoints from "../breakpoints";
import classNames from "classnames"; import classNames from "classnames";
import { GalleryImage } from "../pages/photogallery"; import useDimensions from "react-cool-dimensions";
import { GalleryImage } from "../pages";
interface Row { interface Row {
aspect: number; aspect: number;
@ -17,10 +18,10 @@ interface Row {
} }
interface MasonryGalleryProps { interface MasonryGalleryProps {
images: (GalleryImage)[]; images: GalleryImage[];
aspectsByBreakpoint: { aspectsByBreakpoint: {
[breakpoint: string]: number; [breakpoint: string]: number;
} };
debugHue?: boolean; debugHue?: boolean;
debugRating?: boolean; debugRating?: boolean;
linkState?: object; linkState?: object;
@ -37,8 +38,25 @@ const MasonryGallery = ({
() => R.pick(R.keys(aspectTargetsByBreakpoint), themeBreakpoints), () => R.pick(R.keys(aspectTargetsByBreakpoint), themeBreakpoints),
[aspectTargetsByBreakpoint] [aspectTargetsByBreakpoint]
); );
console.log(
"🚀 ~ file: MasonryGallery.tsx ~ line 41 ~ breakpoints",
breakpoints
);
const { breakpoint } = useBreakpoint(breakpoints, "sm"); const {
observe,
width: containerWidth,
currentBreakpoint: breakpoint,
} = useDimensions({
breakpoints,
});
// console.log(
// "🚀 ~ file: MasonryGallery.tsx ~ line 47 ~ currentBreakpoint",
// currentBreakpoint
// );
// const { breakpoint } = useBreakpoint(breakpoints, "sm");
console.log("🚀 ~ file: MasonryGallery.tsx ~ line 46 ~ breakpoint", breakpoint)
const aspectRatios = React.useMemo( const aspectRatios = React.useMemo(
() => R.map(getAspectRatio, images).filter(Boolean), () => R.map(getAspectRatio, images).filter(Boolean),
@ -93,7 +111,8 @@ const MasonryGallery = ({
return ( return (
<> <>
<div <div
className="flex items-center flex-wrap" className="flex items-center flex-wrap sm:container mx-auto"
ref={observe}
style={{ style={{
position: "relative", position: "relative",
}} }}
@ -107,10 +126,10 @@ const MasonryGallery = ({
const rowAspectRatioSum = currentRow.aspect; const rowAspectRatioSum = currentRow.aspect;
const ar = getAspectRatio(image); const ar = getAspectRatio(image);
let width; let width;
let height = `calc(100vw / ${rowAspectRatioSum} - 10px)`; let height = `calc(${containerWidth}px / ${rowAspectRatioSum} - 10px)`;
if (rowAspectRatioSum < targetAspect * 0.66) { if (rowAspectRatioSum < targetAspect * 0.66) {
// incomplete row, render stuff at "ideal" sizes instead of filling width // incomplete row, render stuff at "ideal" sizes instead of filling width
width = `calc(100vw / ${targetAspect / ar})`; width = `calc(${containerWidth}px / ${targetAspect / ar})`;
height = "unset"; height = "unset";
} else { } else {
const widthNumber = ((ar / rowAspectRatioSum) * 100).toFixed(7); const widthNumber = ((ar / rowAspectRatioSum) * 100).toFixed(7);
@ -150,8 +169,14 @@ const MasonryGallery = ({
<span className="text-white z-20 absolute bg-black"> <span className="text-white z-20 absolute bg-black">
hsl( hsl(
{image.fields?.imageMeta?.dominantHue?.[0]},{" "} {image.fields?.imageMeta?.dominantHue?.[0]},{" "}
{(image.fields?.imageMeta?.dominantHue?.[1] ?? 0 * 100).toFixed(2)}%,{" "} {(
{(image.fields?.imageMeta?.dominantHue?.[2] ?? 0 * 100).toFixed(2)}% ) image.fields?.imageMeta?.dominantHue?.[1] ?? 0 * 100
).toFixed(2)}
%,{" "}
{(
image.fields?.imageMeta?.dominantHue?.[2] ?? 0 * 100
).toFixed(2)}
% )
</span> </span>
)} )}
{debugRating && ( {debugRating && (

View File

@ -186,7 +186,7 @@ const GalleryPage = ({ data }: PageProps<Queries.GalleryPageQueryQuery>) => {
<h2 className="">Full Stack Software Engineer & Photographer</h2> <h2 className="">Full Stack Software Engineer & Photographer</h2>
</div> </div>
</div> </div>
<div className="flex flex-col md:flex-row md:items-end justify-between"> <div className="flex flex-col md:flex-row md:items-end justify-between sm:container sm:mx-auto">
<KeywordsPicker <KeywordsPicker
keywords={[ keywords={[
"night", "night",
@ -226,7 +226,7 @@ const GalleryPage = ({ data }: PageProps<Queries.GalleryPageQueryQuery>) => {
md: 4, md: 4,
lg: 4, lg: 4,
xl: 5, xl: 5,
"2xl": 6.1, "2xl": 5.1,
"3xl": 7.5, "3xl": 7.5,
}} }}
debugHue={sortKey === "hue_debug"} debugHue={sortKey === "hue_debug"}