UNPKG

easy-dialogs

Version:

Function based dialogs manager for React

31 lines 1.23 kB
import React from 'react'; type DialogElementType = { id: string; component: React.ComponentType<any>; props?: any; useExitAnimation?: boolean; }; type InferDialogIdType<Dialogs> = Dialogs extends readonly { id: infer Id; }[] ? Id : never; type InferDialogType<Dialogs> = Dialogs extends readonly (infer D)[] ? D : never; type InferDialogProps<Dialogs, TId> = Extract<InferDialogType<Dialogs>, { id: TId; }> extends { component: React.ComponentType<infer P>; } ? P extends { additionalProps?: infer A; } ? A extends undefined ? Record<string, never> : A : Record<string, never> : never; type InferDialogOnCloseReturnType<Dialogs, TId> = Extract<InferDialogType<Dialogs>, { id: TId; }> extends { component: React.ComponentType<infer P>; } ? P extends { onClose?: (result: infer R) => void; } ? R : void : void; export declare const useDialogManager: <Dialogs extends readonly DialogElementType[]>(dialogDefinitions: Dialogs) => { callDialog: <T extends InferDialogIdType<Dialogs>>(id: T, additionalProps?: InferDialogProps<Dialogs, T>) => Promise<InferDialogOnCloseReturnType<Dialogs, T>>; closeAllDialogs: () => void; }; export {}; //# sourceMappingURL=useDialogManager.d.ts.map