Add debugging tools for grid density
This commit is contained in:
parent
03616391aa
commit
2d9048efd0
@ -86,12 +86,14 @@ export default function CommandKClient({
|
|||||||
hiddenPhotosCount,
|
hiddenPhotosCount,
|
||||||
selectedPhotoIds,
|
selectedPhotoIds,
|
||||||
setSelectedPhotoIds,
|
setSelectedPhotoIds,
|
||||||
|
isGridHighDensity,
|
||||||
arePhotosMatted,
|
arePhotosMatted,
|
||||||
shouldShowBaselineGrid,
|
shouldShowBaselineGrid,
|
||||||
shouldDebugImageFallbacks,
|
shouldDebugImageFallbacks,
|
||||||
setIsCommandKOpen: setIsOpen,
|
setIsCommandKOpen: setIsOpen,
|
||||||
setShouldRespondToKeyboardCommands,
|
setShouldRespondToKeyboardCommands,
|
||||||
setShouldShowBaselineGrid,
|
setShouldShowBaselineGrid,
|
||||||
|
setIsGridHighDensity,
|
||||||
setArePhotosMatted,
|
setArePhotosMatted,
|
||||||
setShouldDebugImageFallbacks,
|
setShouldDebugImageFallbacks,
|
||||||
} = useAppState();
|
} = useAppState();
|
||||||
@ -240,6 +242,10 @@ export default function CommandKClient({
|
|||||||
label: 'Toggle Photo Matting',
|
label: 'Toggle Photo Matting',
|
||||||
action: () => setArePhotosMatted?.(prev => !prev),
|
action: () => setArePhotosMatted?.(prev => !prev),
|
||||||
annotation: arePhotosMatted ? <FaCheck size={12} /> : undefined,
|
annotation: arePhotosMatted ? <FaCheck size={12} /> : undefined,
|
||||||
|
}, {
|
||||||
|
label: 'Toggle High Density Grid',
|
||||||
|
action: () => setIsGridHighDensity?.(prev => !prev),
|
||||||
|
annotation: isGridHighDensity ? <FaCheck size={12} /> : undefined,
|
||||||
}, {
|
}, {
|
||||||
label: 'Toggle Image Fallbacks',
|
label: 'Toggle Image Fallbacks',
|
||||||
action: () => setShouldDebugImageFallbacks?.(prev => !prev),
|
action: () => setShouldDebugImageFallbacks?.(prev => !prev),
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { Photo, PhotoSetAttributes } from '.';
|
|||||||
import PhotoMedium from './PhotoMedium';
|
import PhotoMedium from './PhotoMedium';
|
||||||
import { clsx } from 'clsx/lite';
|
import { clsx } from 'clsx/lite';
|
||||||
import AnimateItems from '@/components/AnimateItems';
|
import AnimateItems from '@/components/AnimateItems';
|
||||||
import { GRID_ASPECT_RATIO, HIGH_DENSITY_GRID } from '@/site/config';
|
import { GRID_ASPECT_RATIO } from '@/site/config';
|
||||||
import { useAppState } from '@/state/AppState';
|
import { useAppState } from '@/state/AppState';
|
||||||
import SelectTileOverlay from '@/components/SelectTileOverlay';
|
import SelectTileOverlay from '@/components/SelectTileOverlay';
|
||||||
|
|
||||||
@ -45,6 +45,7 @@ export default function PhotoGrid({
|
|||||||
isUserSignedIn,
|
isUserSignedIn,
|
||||||
selectedPhotoIds,
|
selectedPhotoIds,
|
||||||
setSelectedPhotoIds,
|
setSelectedPhotoIds,
|
||||||
|
isGridHighDensity,
|
||||||
} = useAppState();
|
} = useAppState();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -53,7 +54,7 @@ export default function PhotoGrid({
|
|||||||
'grid gap-0.5 sm:gap-1',
|
'grid gap-0.5 sm:gap-1',
|
||||||
small
|
small
|
||||||
? 'grid-cols-3 xs:grid-cols-6'
|
? 'grid-cols-3 xs:grid-cols-6'
|
||||||
: HIGH_DENSITY_GRID
|
: isGridHighDensity
|
||||||
? 'grid-cols-2 xs:grid-cols-4 lg:grid-cols-6'
|
? 'grid-cols-2 xs:grid-cols-4 lg:grid-cols-6'
|
||||||
: 'grid-cols-2 sm:grid-cols-4 md:grid-cols-3 lg:grid-cols-4',
|
: 'grid-cols-2 sm:grid-cols-4 md:grid-cols-3 lg:grid-cols-4',
|
||||||
'items-center',
|
'items-center',
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
import { clsx } from 'clsx/lite';
|
import { clsx } from 'clsx/lite';
|
||||||
import {
|
import {
|
||||||
Photo,
|
Photo,
|
||||||
@ -8,12 +10,12 @@ import {
|
|||||||
import ShareButton from '@/components/ShareButton';
|
import ShareButton from '@/components/ShareButton';
|
||||||
import AnimateItems from '@/components/AnimateItems';
|
import AnimateItems from '@/components/AnimateItems';
|
||||||
import { ReactNode } from 'react';
|
import { ReactNode } from 'react';
|
||||||
import { HIGH_DENSITY_GRID } from '@/site/config';
|
|
||||||
import DivDebugBaselineGrid from '@/components/DivDebugBaselineGrid';
|
import DivDebugBaselineGrid from '@/components/DivDebugBaselineGrid';
|
||||||
import PhotoPrevNext from './PhotoPrevNext';
|
import PhotoPrevNext from './PhotoPrevNext';
|
||||||
import PhotoLink from './PhotoLink';
|
import PhotoLink from './PhotoLink';
|
||||||
import { formatDate } from '@/utility/date';
|
import { formatDate } from '@/utility/date';
|
||||||
import ResponsiveText from '@/components/primitives/ResponsiveText';
|
import ResponsiveText from '@/components/primitives/ResponsiveText';
|
||||||
|
import { useAppState } from '@/state/AppState';
|
||||||
|
|
||||||
export default function PhotoHeader({
|
export default function PhotoHeader({
|
||||||
tag,
|
tag,
|
||||||
@ -40,6 +42,8 @@ export default function PhotoHeader({
|
|||||||
count?: number
|
count?: number
|
||||||
dateRange?: PhotoDateRange
|
dateRange?: PhotoDateRange
|
||||||
} & PhotoSetAttributes) {
|
} & PhotoSetAttributes) {
|
||||||
|
const { isGridHighDensity } = useAppState();
|
||||||
|
|
||||||
const { start, end } = dateRangeForPhotos(photos, dateRange);
|
const { start, end } = dateRangeForPhotos(photos, dateRange);
|
||||||
|
|
||||||
const selectedPhotoIndex = selectedPhoto
|
const selectedPhotoIndex = selectedPhoto
|
||||||
@ -78,13 +82,13 @@ export default function PhotoHeader({
|
|||||||
key="PhotosHeader"
|
key="PhotosHeader"
|
||||||
className={clsx(
|
className={clsx(
|
||||||
'grid gap-0.5 sm:gap-1 items-start grid-cols-4',
|
'grid gap-0.5 sm:gap-1 items-start grid-cols-4',
|
||||||
HIGH_DENSITY_GRID
|
isGridHighDensity
|
||||||
? 'lg:grid-cols-6'
|
? 'lg:grid-cols-6'
|
||||||
: 'md:grid-cols-3 lg:grid-cols-4',
|
: 'md:grid-cols-3 lg:grid-cols-4',
|
||||||
)}>
|
)}>
|
||||||
<span className={clsx(
|
<span className={clsx(
|
||||||
'inline-flex uppercase',
|
'inline-flex uppercase',
|
||||||
HIGH_DENSITY_GRID
|
isGridHighDensity
|
||||||
? 'col-span-2 sm:col-span-1 lg:col-span-2'
|
? 'col-span-2 sm:col-span-1 lg:col-span-2'
|
||||||
: 'col-span-2 md:col-span-1',
|
: 'col-span-2 md:col-span-1',
|
||||||
)}>
|
)}>
|
||||||
@ -93,7 +97,10 @@ export default function PhotoHeader({
|
|||||||
photo={selectedPhoto}
|
photo={selectedPhoto}
|
||||||
className="uppercase font-bold"
|
className="uppercase font-bold"
|
||||||
>
|
>
|
||||||
{selectedPhoto.title || formatDate(selectedPhoto.takenAt, 'tiny')}
|
{
|
||||||
|
selectedPhoto.title ||
|
||||||
|
formatDate(selectedPhoto.takenAt, 'tiny')
|
||||||
|
}
|
||||||
</PhotoLink>)}
|
</PhotoLink>)}
|
||||||
</span>
|
</span>
|
||||||
<span className={clsx(
|
<span className={clsx(
|
||||||
@ -101,10 +108,10 @@ export default function PhotoHeader({
|
|||||||
'gap-2 self-start',
|
'gap-2 self-start',
|
||||||
'uppercase text-dim',
|
'uppercase text-dim',
|
||||||
isPhotoSet
|
isPhotoSet
|
||||||
? HIGH_DENSITY_GRID
|
? isGridHighDensity
|
||||||
? 'col-span-2 sm:col-span-1 md:col-span-2 lg:col-span-3'
|
? 'col-span-2 sm:col-span-1 md:col-span-2 lg:col-span-3'
|
||||||
: 'col-span-2 sm:col-span-1 lg:col-span-2'
|
: 'col-span-2 sm:col-span-1 lg:col-span-2'
|
||||||
: HIGH_DENSITY_GRID
|
: isGridHighDensity
|
||||||
? 'sm:col-span-2 lg:col-span-3'
|
? 'sm:col-span-2 lg:col-span-3'
|
||||||
: 'lg:col-span-2',
|
: 'lg:col-span-2',
|
||||||
)}>
|
)}>
|
||||||
|
|||||||
@ -27,6 +27,8 @@ export interface AppStateContext {
|
|||||||
isPerformingSelectEdit?: boolean
|
isPerformingSelectEdit?: boolean
|
||||||
setIsPerformingSelectEdit?: Dispatch<SetStateAction<boolean>>
|
setIsPerformingSelectEdit?: Dispatch<SetStateAction<boolean>>
|
||||||
// DEBUG
|
// DEBUG
|
||||||
|
isGridHighDensity?: boolean
|
||||||
|
setIsGridHighDensity?: Dispatch<SetStateAction<boolean>>
|
||||||
arePhotosMatted?: boolean
|
arePhotosMatted?: boolean
|
||||||
setArePhotosMatted?: Dispatch<SetStateAction<boolean>>
|
setArePhotosMatted?: Dispatch<SetStateAction<boolean>>
|
||||||
shouldDebugImageFallbacks?: boolean
|
shouldDebugImageFallbacks?: boolean
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import { AnimationConfig } from '@/components/AnimateItems';
|
|||||||
import usePathnames from '@/utility/usePathnames';
|
import usePathnames from '@/utility/usePathnames';
|
||||||
import { getAuthAction } from '@/auth/actions';
|
import { getAuthAction } from '@/auth/actions';
|
||||||
import useSWR from 'swr';
|
import useSWR from 'swr';
|
||||||
import { MATTE_PHOTOS } from '@/site/config';
|
import { HIGH_DENSITY_GRID, MATTE_PHOTOS } from '@/site/config';
|
||||||
import { getPhotosHiddenMetaCachedAction } from '@/photo/actions';
|
import { getPhotosHiddenMetaCachedAction } from '@/photo/actions';
|
||||||
|
|
||||||
export default function AppStateProvider({
|
export default function AppStateProvider({
|
||||||
@ -39,6 +39,8 @@ export default function AppStateProvider({
|
|||||||
const [isPerformingSelectEdit, setIsPerformingSelectEdit] =
|
const [isPerformingSelectEdit, setIsPerformingSelectEdit] =
|
||||||
useState(false);
|
useState(false);
|
||||||
// DEBUG
|
// DEBUG
|
||||||
|
const [isGridHighDensity, setIsGridHighDensity] =
|
||||||
|
useState(HIGH_DENSITY_GRID);
|
||||||
const [arePhotosMatted, setArePhotosMatted] =
|
const [arePhotosMatted, setArePhotosMatted] =
|
||||||
useState(MATTE_PHOTOS);
|
useState(MATTE_PHOTOS);
|
||||||
const [shouldDebugImageFallbacks, setShouldDebugImageFallbacks] =
|
const [shouldDebugImageFallbacks, setShouldDebugImageFallbacks] =
|
||||||
@ -101,6 +103,8 @@ export default function AppStateProvider({
|
|||||||
isPerformingSelectEdit,
|
isPerformingSelectEdit,
|
||||||
setIsPerformingSelectEdit,
|
setIsPerformingSelectEdit,
|
||||||
// DEBUG
|
// DEBUG
|
||||||
|
isGridHighDensity,
|
||||||
|
setIsGridHighDensity,
|
||||||
arePhotosMatted,
|
arePhotosMatted,
|
||||||
setArePhotosMatted,
|
setArePhotosMatted,
|
||||||
shouldDebugImageFallbacks,
|
shouldDebugImageFallbacks,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user