feat: add core domain types for Photo Gallery SDK including media items, albums, and annotations
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
'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],
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user