import { FiltersMap } from '@wix/bex-core'; import { useWixPatternsContainer } from '@wix/bex-core/react'; import { useCallback } from 'react'; import { GridFoldersState } from '../state/GridFoldersState'; import { CollectionFoldersBaseConfig } from './CollectionFoldersBaseConfig'; import { useOptionalCachedState } from './useOptionalCachedState'; export interface GridFoldersConfig< T1, F1 extends FiltersMap, T2, F2 extends FiltersMap, > extends CollectionFoldersBaseConfig {} export type GridFoldersFactory = < T1, F1 extends FiltersMap, T2, F2 extends FiltersMap, >( config: GridFoldersConfig, ) => GridFoldersState; export function useCreateGridFolders() { const container = useWixPatternsContainer(); return useCallback(({ items, folders }) => { return new GridFoldersState({ items, folders, container, }); }, []); } export function useGridFolders< T1, F1 extends FiltersMap, T2, F2 extends FiltersMap, >(config: GridFoldersConfig) { const createGridFolders = useCreateGridFolders(); const state = useOptionalCachedState(() => createGridFolders(config), ); return state; }