@plattar/plattar-ar-adapter
Version:
Plattar AR Adapter for interfacing with Google & Apple WebAR
97 lines (96 loc) • 3.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Util = void 0;
/**
* Static Utility Functions
*/
class Util {
static isValidServerLocation(server) {
if (!server) {
return false;
}
switch (server.toLowerCase()) {
case "staging.plattar.space":
case "cdn-staging.plattar.space":
case "staging":
case "app.plattar.com":
case "cdn.plattar.com":
case "prod":
case "production":
case "review.plattar.com":
case "review":
case "qa":
case "dev":
case "developer":
case "development":
case "local":
case "localhost":
return true;
}
return false;
}
static canAugment() {
return Util.canQuicklook() || Util.canSceneViewer();
}
static canQuicklook() {
if (Util.isIOS()) {
const isWKWebView = Boolean((window && window).webkit && window.webkit.messageHandlers);
if (isWKWebView) {
return Boolean(/CriOS\/|EdgiOS\/|FxiOS\/|GSA\/|DuckDuckGo\//.test(navigator.userAgent));
}
const tempAnchor = document.createElement("a");
return tempAnchor.relList && tempAnchor.relList.supports && tempAnchor.relList.supports("ar");
}
return false;
}
static canSceneViewer() {
return Util.isAndroid() && !Util.isFirefox() && !Util.isOculus();
}
static canRealityViewer() {
return Util.isIOS() && Util.getIOSVersion()[0] >= 13;
}
static isSafariOnIOS() {
return Util.isIOS() && Util.isSafari();
}
static isChromeOnIOS() {
return Util.isIOS() && /CriOS\//.test(navigator.userAgent);
}
static isIOS() {
return (/iPad|iPhone|iPod/.test(navigator.userAgent) && !self.MSStream) || (navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1);
}
static isAndroid() {
return /android/i.test(navigator.userAgent);
}
static isFirefox() {
return /firefox/i.test(navigator.userAgent);
}
static isOculus() {
return /OculusBrowser/.test(navigator.userAgent);
}
static isSafari() {
return Util.isIOS() && /Safari\//.test(navigator.userAgent);
}
static getIOSVersion() {
if (/iP(hone|od|ad)/.test(navigator.platform)) {
const v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
if (v !== null) {
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3], 10)];
}
}
if (/Mac/.test(navigator.platform)) {
const v = (navigator.appVersion).match(/Version\/(\d+)\.(\d+)\.?(\d+)?/);
if (v !== null) {
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3], 10)];
}
}
return [-1, -1, -1];
}
static getChromeVersion() {
const raw = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
if (raw !== null) {
return parseInt(raw[2], 10);
}
return 1;
}
}
exports.Util = Util;