@mui/x-data-grid
Version:
The Community plan edition of the Data Grid components (MUI X).
43 lines (42 loc) • 2.42 kB
TypeScript
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 {};