UNPKG

@interopio/react-hooks

Version:

React Hooks Wrapper for IO Connect Desktop and Browser

44 lines (38 loc) 1.83 kB
import { ReactNode, Context, FC } from "react"; import { IOConnectBrowser, IOConnectBrowserFactoryFunction } from "@interopio/browser"; import { IOConnectDesktop } from "@interopio/desktop"; import { IOConnectBrowserPlatform, IOConnectBrowserPlatformFactoryFunction } from "@interopio/browser-platform"; export type IOConnectReactConfig = IOConnectBrowser.Config | IOConnectDesktop.Config; export type IOConnectReactFactory = (config?: IOConnectReactConfig) => Promise<IOConnectBrowser.API | IOConnectDesktop.API>; type IOConnectDesktopFactory = (config?: IOConnectDesktop.Config) => Promise<IOConnectDesktop.API>; export interface IOConnectProviderProps { children: ReactNode; settings: IOConnectInitSettings; fallback?: NonNullable<ReactNode> | null; onInitError?: (error: Error) => void; } export interface IOConnectInitSettings { browser?: { config?: IOConnectBrowser.Config; factory?: IOConnectBrowserFactoryFunction; }; browserPlatform?: { config?: IOConnectBrowserPlatform.Config; factory?: IOConnectBrowserPlatformFactoryFunction; }; desktop?: { config?: IOConnectDesktop.Config; factory?: IOConnectDesktopFactory; }; } export type UseIOInitFunc = ( settings: IOConnectInitSettings, onInitError?: (error: Error) => void ) => IOConnectBrowser.API | IOConnectDesktop.API; export declare const IOConnectContext: Context<IOConnectBrowser.API | IOConnectDesktop.API>; export declare const IOConnectProvider: FC<IOConnectProviderProps>; export declare const useIOConnect: <K = IOConnectBrowser.API | IOConnectDesktop.API, T = void>( cb: (glue: K, ...dependencies: any[]) => T | Promise<T>, dependencies?: any[] ) => T; export declare const useIOConnectInit: UseIOInitFunc;