import { FiltersMap, OptionalFiltersMap } from '@wix/bex-core'; import { useWixPatternsContainer, CollectionConfigWithConditionals, useCreateCollection, } from '@wix/bex-core/react'; import { TableState } from '../state'; import { useOptionalCachedState } from './useOptionalCachedState'; import { AiAssistant } from '../aiAssistant'; export type TableCollectionConfig< T, F extends FiltersMap, > = CollectionConfigWithConditionals & { aiAssistant?: AiAssistant; }; type TableCollection = ( config: TableCollectionConfig, ) => TableState; export const useTableCollection: TableCollection = < T, F extends FiltersMap = OptionalFiltersMap, >( config: TableCollectionConfig, ): TableState => { const container = useWixPatternsContainer(); const createCollection = useCreateCollection(); const state = useOptionalCachedState(() => { return new TableState({ collection: createCollection(config), container, }); }); config.aiAssistant?.useAiAssistant({ collection: state.collection, loadingRowState: state.loadingRowState, }); return state; };