@interopio/react-hooks
Version:
React Hooks Wrapper for IO Connect Desktop and Browser
44 lines (38 loc) • 1.83 kB
TypeScript
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;