import { FiltersMap, OptionalFiltersMap } from '@wix/bex-core'; import { useWixPatternsContainer, useWixPatternsContainerOverrides, CollectionConfigWithConditionals, useCreateCollection, useCreateOptimisticActions, } from '@wix/bex-core/react'; import { LayoutSwitchState, LayoutSwitchStateParams, SpreadsheetLayoutConfig, TableLayoutConfig, GridLayoutConfig, } from '../state/LayoutSwitchState'; import { useOptionalCachedState } from './useOptionalCachedState'; export type LayoutSwitchCollectionConfig< T, F extends FiltersMap, > = CollectionConfigWithConditionals & { table?: TableLayoutConfig; grid?: GridLayoutConfig; spreadsheet?: Omit, 'createOptimisticActions'>; }; export const useLayoutSwitchCollection = < T, F extends FiltersMap = OptionalFiltersMap, >( config: LayoutSwitchCollectionConfig, ): LayoutSwitchState => { const container = useWixPatternsContainer(); const containerOverrides = useWixPatternsContainerOverrides(); const createCollection = useCreateCollection(); const createOptimisticActions = useCreateOptimisticActions(); const state = useOptionalCachedState(() => { const collection = createCollection(config); const spreadsheet: LayoutSwitchStateParams['spreadsheet'] = config.spreadsheet ? { ...config.spreadsheet, createOptimisticActions: (c) => createOptimisticActions(c), } : undefined; return new LayoutSwitchState({ collection, container, containerOverrides, table: config.table, grid: config.grid, spreadsheet, }); }); return state; };