import React, { createContext, PropsWithChildren, useContext, useMemo, } from 'react'; import LeafyGreenProvider from '@leafygreen-ui/leafygreen-provider'; import { LGRowData } from '../useLeafyGreenTable'; import { getLgIds } from '../utils'; import { type TableProviderProps } from './TableContext.types'; export const TableContext = createContext>({ lgIds: getLgIds(), }); export const useTableContext = () => useContext>( TableContext as React.Context>, ); const TableContextProvider = ({ children, darkMode, shouldAlternateRowColor, isVirtual, isSelectable, shouldTruncate, virtualTable, verticalAlignment, lgIds, shouldMemoizeRows, }: PropsWithChildren>) => { /** The appropriately typed context provider */ const TableProvider = (TableContext as React.Context>) .Provider; const tableProviderData = useMemo(() => { return { shouldAlternateRowColor, darkMode, isVirtual, isSelectable, shouldTruncate, verticalAlignment, virtualTable, lgIds, shouldMemoizeRows, }; }, [ shouldAlternateRowColor, darkMode, isVirtual, isSelectable, shouldTruncate, verticalAlignment, virtualTable, lgIds, shouldMemoizeRows, ]); return ( {children} ); }; export default TableContextProvider;