@combine-labs/combine-polaris
Version:
Combine Lab's product component library. Forked from Shopify's Polaris.
43 lines (42 loc) • 1.08 kB
TypeScript
export interface Message {
message: string;
data: any;
}
export interface Handler {
(data: object): void;
}
export interface HandlerMap {
[type: string]: Handler;
}
export interface Options {
name: string;
targetOrigin: string;
debug?: boolean;
}
export default class Messenger {
private target;
private handlers;
static Messages: Readonly<{
SET_WINDOW_LOCATION: string;
}>;
targetOrigin: string;
private name;
private debug;
private queue;
private callbacks;
private callbacksToID;
private callbackIndex;
constructor(target: Window | null | undefined, handlers: HandlerMap, options: Options);
setTarget(target: Window | null | undefined): void;
send(message: Message['message'], data?: Message['data']): Message['data'];
private tryToDequeue;
private log;
private warn;
private storeCallback;
private normalizePayload;
private handleMessage;
private isFromTargetOrigin;
private invokeCallback;
private invokeHandler;
private windowLocation;
}