UNPKG

ibembed

Version:
74 lines (73 loc) 2.29 kB
interface EmbedParams { [key: string]: any; } interface EmbedOption { id: string; version?: string; businessID: string; fitContent?: boolean; showLoader?: boolean; locale?: string; appearance?: string; customCSS?: string | string[]; embedParams?: EmbedParams; } // Define event types declare enum EventType { IFRAME_LOAD = "iframe:load", EMBED_IFRAME_READY = "iframe:ready", IFRAME_ERROR = "iframe:error", IFRAME_RESIZE = "iframe:resize" } interface IframeResizeType { height: number; } interface EventDataMap { [EventType.EMBED_IFRAME_READY]?: any; [EventType.IFRAME_ERROR]?: any; [EventType.IFRAME_LOAD]?: any; [EventType.IFRAME_RESIZE]?: IframeResizeType; } // Define callback interface // Define callback interface based on event data type EventCallbacks = { [K in keyof EventDataMap]?: ((data: EventDataMap[K]) => void)[]; }; declare class InstabookEmbed extends EventTarget { iframe: HTMLIFrameElement | undefined; iframeContainer: HTMLElement | null; loaderElement?: HTMLElement | null; iframeId: string; options: EmbedOption; private isReady; eventCallbacks: EventCallbacks; customStyles: HTMLStyleElement | null; constructor(options: EmbedOption); init(): void; // Register callback for a specific event type on<T extends EventType>(eventType: T, callback: (eventData?: EventDataMap[T]) => void): void; // Remove an event listener for a specific event type removeEventListener<T extends EventType>(eventType: T, callback: (data: EventDataMap[T]) => void): void; addEventListener<T extends EventType>(eventType: T, callback: (data: EventDataMap[T]) => void): void; private triggerEvent; // Stop the video reload(): void; // Get video duration getSomething(): number; // Send a message to the iframe sendMessage(message: string, data: any): void; // Event handler for messages private handleMessage; buildQueryString({ params, origin }: { params?: EmbedParams; origin: string; }): string; private onResize; private onReady; private onLoad; private onError; // Create the iframe private createIframe; reset(): void; } export { InstabookEmbed as default };