Files
lynkeduppro-crm/vendor/photo-gallery-sdk/src/hooks/useViewMedia.ts
T

42 lines
1.4 KiB
TypeScript

'use client';
import { useMemo } from 'react';
import { useGallery } from '../store/context';
import { mediaForView } from '../store/selectors';
import type { GalleryState } from '../store/store';
import type { MediaItem } from '../types';
/** The media items for the active view (filters + search + object-focus applied). */
export function useViewMedia(): MediaItem[] {
const media = useGallery((s) => s.media);
const albums = useGallery((s) => s.albums);
const view = useGallery((s) => s.view);
const gridFilter = useGallery((s) => s.gridFilter);
const searchQuery = useGallery((s) => s.searchQuery);
const objectFocus = useGallery((s) => s.objectFocus);
const tagFocus = useGallery((s) => s.tagFocus);
const personFocus = useGallery((s) => s.personFocus);
const searchPreset = useGallery((s) => s.searchPreset);
const semanticResults = useGallery((s) => s.semanticResults);
const recentlyViewed = useGallery((s) => s.recentlyViewed);
return useMemo(
() =>
mediaForView({
media,
albums,
view,
gridFilter,
searchQuery,
objectFocus,
tagFocus,
personFocus,
searchPreset,
semanticResults,
recentlyViewed,
} as GalleryState),
[media, albums, view, gridFilter, searchQuery, objectFocus, tagFocus, personFocus, searchPreset, semanticResults, recentlyViewed],
);
}