ibembed
Version:
Instabook Embed JavaScript SDK
74 lines (73 loc) • 2.29 kB
TypeScript
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 };