@wisdomgarden/cloak-plugin-inappbrowser
Version:
Open an in-app browser window for Cloak Framework
60 lines (51 loc) • 1.96 kB
TypeScript
import { Plugin, Cloak, ESObject, CloakPlugins } from "@wisdomgarden/cloak";
// the type prefixed with `I` means it is copied from ets definition
export interface IBrowserExecutePayload {
code: string;
}
export type IBrowserEvent = "loadstart" | "loadstop" | "loaderror" | "exit";
export type IOpenTarget = "_self" | "_blank" | "_system" | null;
export interface ICreateBrowserOptions {
clearCache?: boolean | null;
clearcache?: boolean | null;
clearSessionCache?: boolean | null;
clearsessioncache?: boolean | null;
session?: string | null;
closeButtonCaption?: string | null;
closebuttoncaption?: string | null;
footer?: boolean | null;
footerColor?: string | null;
footercolor?: string | null;
hideNavigationButtons?: boolean | null;
hidenavigationbuttons?: boolean | null;
}
export interface IBrowserEventPayload {
event: IBrowserEvent;
url: string;
}
export interface InAppBrowserObject {
open: () => boolean;
close: () => boolean;
show: () => boolean;
hide: () => boolean;
executeScript: (payload: IBrowserExecutePayload) => Promise<ESObject>;
insertCSS: (payload: IBrowserExecutePayload) => Promise<ESObject>;
addEventListener: (event: IBrowserEvent, handler?: (event: IBrowserEventPayload) => void) => void;
}
export interface InAppBrowserInstanceRxjs extends InAppBrowserObject {
on: (event: IBrowserEvent) => {
subscribe: (handler: (event: IBrowserEventPayload) => void) => void;
};
}
export interface InAppBrowserPlugin extends Plugin {
currentBrowser: InAppBrowserObject | null;
create(url: string, target?: IOpenTarget, options?: ICreateBrowserOptions): InAppBrowserInstanceRxjs;
createBrowser(url: string, target?: string, options?: ICreateBrowserOptions): InAppBrowserObject;
}
export const register: () => void;
export const InAppBrowser: InAppBrowserPlugin;
declare module "@wisdomgarden/cloak" {
export interface CloakPlugins {
InAppBrowser: InAppBrowserPlugin;
}
}