smart-view
Version:
Moq (mobile quality assessment) is a tool used to measure an online ad viewability
69 lines (61 loc) • 2.06 kB
text/typescript
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;
}
}