import { FiltersMap } from '@wix/bex-core'; import { useWixPatternsContainer, useWixPatternsContainerOverrides, } from '@wix/bex-core/react'; import { useCallback } from 'react'; import { TableGridSwitchFoldersState } from '../state/TableGridSwitchFoldersState'; import { CollectionFoldersBaseConfig } from './CollectionFoldersBaseConfig'; import { useOptionalCachedState } from './useOptionalCachedState'; export interface TableGridSwitchFoldersConfig< T1, F1 extends FiltersMap, T2, F2 extends FiltersMap, > extends CollectionFoldersBaseConfig {} export type TableGridSwitchFoldersFactory = < T1, F1 extends FiltersMap, T2, F2 extends FiltersMap, >( config: TableGridSwitchFoldersConfig, ) => TableGridSwitchFoldersState; export function useCreateTableGridSwitchFolders() { const container = useWixPatternsContainer(); const containerOverrides = useWixPatternsContainerOverrides(); return useCallback(({ items, folders }) => { return new TableGridSwitchFoldersState({ items, folders, container, containerOverrides, }); }, []); } export function useTableGridSwitchFolders< T1, F1 extends FiltersMap, T2, F2 extends FiltersMap, >(config: TableGridSwitchFoldersConfig) { const factory = useCreateTableGridSwitchFolders(); const state = useOptionalCachedState(() => factory(config)); return state; }