lepont
Version:
A native <-> browser (webview) bridge library for react-native
28 lines (27 loc) • 1 kB
TypeScript
import { Message, BridgePayload } from './types';
declare type WebView = {
injectJavaScript: (s: string) => void;
};
export declare type Bridge = {
sendMessage: <T>(m: Message<T>) => void;
};
export declare type BridgeImpl<T> = (payload: T, bridge: Bridge) => unknown;
export declare type BridgeOption = (registry: Registry) => unknown;
declare type WebViewRef = (wv: WebView | null) => void;
declare type WebViewOnMessage = (event: any) => unknown;
export declare function useBridge(...options: BridgeOption[]): [WebViewRef, WebViewOnMessage, {
registry: Registry;
}];
export declare class Registry implements Bridge {
webView: WebView | null;
registry: {
[key: string]: BridgeImpl<any>;
};
register<T>(type: string, handler: BridgeImpl<T>): void;
ref: (webView: WebView | null) => void;
clear: () => void;
onMessage: <T>(e: any) => Promise<void>;
sendMessage<T>(message: Message<T>): void;
send<T, S>(p: BridgePayload<T, S>): void;
}
export {};