import { IViewAbility } from "./IViewAbility";
declare var mraid: any;

export class MraidAPI implements IViewAbility {
    private isReady = false;
    constructor() {
        if (typeof mraid !== "undefined") {
            this.doReadyCheck();
        }
    }
    public isSupported = (cb?: Function): boolean => {
        let status = true;
        if (this.isReady) {
            status = false;
        }
        if (typeof cb === "function") {
            cb(status);
        }
        return status;
    }
    public isView = (): boolean => {
        return mraid.isViewable();
    }
    private doReadyCheck = () => {
        if (mraid.getState() === "loading") {
            mraid.addEventListener("ready", this.mraidIsReady);
        } else {
            this.isReady = true;
        }
    }
    private mraidIsReady = () => {
        mraid.removeEventListener("ready", this.mraidIsReady);
    }
}
