UNPKG

smart-view

Version:

Moq (​mo​​bile ​q​​uality assessment) is a tool used to measure an online ad viewability

69 lines (61 loc) 2.06 kB
import { MraidAPI } from "./MraidAPI"; import { SafeFrame } from "./SafeFrame"; import { RequestAnimationFrame } from "./RequestAnimationFrame"; import { IntersectionObserverAPI } from "./IntersectionObserverAPI"; import { Geometry } from "./Geometry"; import { IViewAbility } from "./IViewAbility"; export class SmartView { public methodName = ""; private ad: HTMLElement; constructor(el: HTMLElement) { this.ad = el; } public getMethod = (m: number): IViewAbility => { switch (m) { case 0: let geometry = new Geometry(this.ad); if (geometry.isSupported()) { this.methodName = "geometry"; return geometry; } let intersectionObserverAPI = new IntersectionObserverAPI(this.ad); if (intersectionObserverAPI.isSupported()) { this.methodName = "intersectionObserver"; } let safeFrame = new SafeFrame(this.ad); if (safeFrame.isSupported()) { this.methodName = "safeFrame"; return safeFrame; } let requestAnimationFrame = new RequestAnimationFrame(this.ad); if (requestAnimationFrame.isSupported()) { this.methodName = "requestAnimationFrame"; return requestAnimationFrame; } let mraidAPI = new MraidAPI(); if (mraidAPI.isSupported()) { this.methodName = "mraid"; return mraidAPI; } break; case 1: this.methodName = "geometry"; return new Geometry(this.ad); case 2: this.methodName = "intersectionObserver"; return new IntersectionObserverAPI(this.ad); case 3: this.methodName = "safeFrame"; return new SafeFrame(this.ad); case 4: this.methodName = "requestAnimationFrame"; return new RequestAnimationFrame(this.ad); case 5: this.methodName = "mraid"; return new MraidAPI(); default: return null; } return null; } }