pxt-core
Version:
Microsoft MakeCode provides Blocks / JavaScript / Python tools and editors
38 lines (37 loc) • 1.44 kB
TypeScript
/// <reference path="../../localtypings/pxteditor.d.ts" />
declare type MessageHandler = (response: any) => void;
interface PendingMessage {
original: pxt.editor.EditorMessageRequest;
resolve: MessageHandler;
reject: MessageHandler;
}
/**
* Abstract class for driving communication with an embedded iframe
*/
export declare abstract class IframeDriver {
iframe: HTMLIFrameElement;
protected readyForMessages: boolean;
protected messageQueue: pxt.editor.EditorMessageRequest[];
protected nextId: number;
protected pendingMessages: {
[index: string]: PendingMessage;
};
protected editorEventListeners: {
[index: string]: MessageHandler[];
};
protected port: MessagePort;
protected portRequestPending: boolean;
protected frameId: string;
constructor(iframe: HTMLIFrameElement);
protected abstract handleMessage(message: MessageEvent): void;
dispose(): void;
addEventListener(event: string, handler: (ev: any) => void): void;
removeEventListener(event: string, handler: (ev: any) => void): void;
protected onMessageReceived: (event: MessageEvent) => void;
protected resolvePendingMessage(event: MessageEvent): void;
protected fireEvent(event: string, data: any): void;
protected sendRequest(message: any): Promise<unknown>;
protected sendMessageCore(message?: any): void;
protected createMessagePort(): void;
}
export {};