import * as React from 'react';
import { ListContext } from './ListContext';
import { ListFilterContext, usePickFilterContext } from './ListFilterContext';
import { ListSortContext, usePickSortContext } from './ListSortContext';
import {
ListPaginationContext,
usePickPaginationContext,
} from './ListPaginationContext';
import { ListControllerResult } from './useListController';
/**
* Create a List Context and several thematic List subcontext.
*
* Allows children to subscribe to part of the ListContext, and bail out of
* rendering when some parts of the context that they don't depend on change
* (because unfortunately React doesn't allow to use context selectors yet).
*
* @example
*
* const MyList = (props) => {
* const controllerProps = useListController(props);
* return (
*
*
*
* );
* };
*
* const MyListView = () => {
* const { data, filterValues, setFilters } = useListContext();
* // or, to rerender only when filters change but not data
* const { filterValues, setFilters } = useListFilterContext();
* }
*
* @see ListContext
* @see ListFilterContext
*/
export const ListContextProvider = ({
value,
children,
}: {
value: ListControllerResult;
children: React.ReactNode;
}) => (
{children}
);