UNPKG

@mui/x-data-grid

Version:

The Community plan edition of the Data Grid components (MUI X).

43 lines (42 loc) 2.42 kB
import { RefObject } from '@mui/x-internals/types'; import { Selector, SelectorResultArray } from 'reselect'; import type { GridCoreApi } from '../models/api/gridCoreApi'; export interface OutputSelector<State, Result> { (apiRef: RefObject<{ state: State; instanceId: GridCoreApi['instanceId']; }>): Result; (state: State, instanceId: GridCoreApi['instanceId']): Result; acceptsApiRef: boolean; } export interface OutputSelectorV8<State, Args, Result> { (apiRef: RefObject<{ state: State; instanceId: GridCoreApi['instanceId']; }>, args?: Args): Result; (state: State, instanceId: GridCoreApi['instanceId']): Result; acceptsApiRef: boolean; } type StateFromSelector<T> = T extends (first: infer F, ...args: any[]) => any ? F extends { state: infer F2; } ? F2 : F : never; type StateFromSelectorList<Selectors extends readonly any[]> = Selectors extends [ f: infer F, ...other: infer R ] ? StateFromSelector<F> extends StateFromSelectorList<R> ? StateFromSelector<F> : StateFromSelectorList<R> : {}; type SelectorArgs<Selectors extends ReadonlyArray<Selector<any>>, Result> = [selectors: [...Selectors], combiner: (...args: SelectorResultArray<Selectors>) => Result] | [...Selectors, (...args: SelectorResultArray<Selectors>) => Result]; type SelectorResultArrayWithArgs<Selectors extends ReadonlyArray<Selector<any>>, Args> = [ ...SelectorResultArray<Selectors>, Args ]; type SelectorArgsV8<Selectors extends ReadonlyArray<Selector<any>>, Args, Result> = [ selectors: [...Selectors], combiner: (...args: SelectorResultArrayWithArgs<Selectors, Args>) => Result ] | [...Selectors, (...args: SelectorResultArrayWithArgs<Selectors, Args>) => Result]; type CreateSelectorFunction = <Selectors extends ReadonlyArray<Selector<any>>, Result>(...items: SelectorArgs<Selectors, Result>) => OutputSelector<StateFromSelectorList<Selectors>, Result>; type CreateSelectorFunctionV8 = <Selectors extends ReadonlyArray<Selector<any>>, Args, Result>(...items: SelectorArgsV8<Selectors, Args, Result>) => OutputSelectorV8<StateFromSelectorList<Selectors>, Args, Result>; export declare const createSelector: CreateSelectorFunction; export declare const createSelectorV8: CreateSelectorFunctionV8; export declare const createSelectorMemoized: CreateSelectorFunction; export declare const createSelectorMemoizedV8: CreateSelectorFunctionV8; export {};