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