import * as React from "react"; import { LoadOptionsHandler, OptionValues, ReactAsyncSelectProps, ReactCreatableSelectProps, ReactSelectProps, } from "react-select"; import { ListProps } from "react-virtualized"; export interface VirtualizedOptionRenderOptions<T> { focusedOption: T; focusedOptionIndex: number; focusOption(option: T): void; key: string; labelKey: keyof T; listProps: ListProps; option: T; options: T[]; selectValue(option: T): void; style: Record<string, string>; valueArray: T[]; } export interface AdditionalVirtualizedSelectProps<TValue> { maxHeight?: number | undefined; optionHeight?: number | ((options: { option: TValue }) => number) | undefined; optionRenderer?(options: VirtualizedOptionRenderOptions<TValue>): React.JSX.Element; selectComponent?: React.ComponentClass<any> | React.FunctionComponent<any> | undefined; } type VirtualizedSelectProps<TValue = OptionValues> = | (ReactCreatableSelectProps<TValue> & ReactAsyncSelectProps<TValue> & AdditionalVirtualizedSelectProps<TValue> & { async: true; }) | ReactCreatableSelectProps<TValue> & ReactSelectProps<TValue> & AdditionalVirtualizedSelectProps<TValue>; declare class VirtualizedSelect<TValue = OptionValues> extends React.PureComponent<VirtualizedSelectProps<TValue>> {} export default VirtualizedSelect;