tfcconnection/static/js/cljs-runtime/goog.labs.useragent.platform.js

141 lines
4.5 KiB
JavaScript

goog.loadModule(function(exports) {
"use strict";
goog.module("goog.labs.userAgent.platform");
goog.module.declareLegacyNamespace();
const googString = goog.require("goog.string.internal");
const util = goog.require("goog.labs.userAgent.util");
const {AsyncValue, Version} = goog.require("goog.labs.userAgent.highEntropy.highEntropyValue");
const {platformVersion} = goog.require("goog.labs.userAgent.highEntropy.highEntropyData");
const {useClientHints} = goog.require("goog.labs.userAgent");
function useUserAgentDataPlatform(ignoreClientHintsFlag = false) {
if (util.ASSUME_CLIENT_HINTS_SUPPORT) {
return true;
}
if (!ignoreClientHintsFlag && !useClientHints()) {
return false;
}
const userAgentData = util.getUserAgentData();
return !!userAgentData && !!userAgentData.platform;
}
function isAndroid() {
if (useUserAgentDataPlatform()) {
return util.getUserAgentData().platform === "Android";
}
return util.matchUserAgent("Android");
}
function isIpod() {
return util.matchUserAgent("iPod");
}
function isIphone() {
return util.matchUserAgent("iPhone") && !util.matchUserAgent("iPod") && !util.matchUserAgent("iPad");
}
function isIpad() {
return util.matchUserAgent("iPad");
}
function isIos() {
return isIphone() || isIpad() || isIpod();
}
function isMacintosh() {
if (useUserAgentDataPlatform()) {
return util.getUserAgentData().platform === "macOS";
}
return util.matchUserAgent("Macintosh");
}
function isLinux() {
if (useUserAgentDataPlatform()) {
return util.getUserAgentData().platform === "Linux";
}
return util.matchUserAgent("Linux");
}
function isWindows() {
if (useUserAgentDataPlatform()) {
return util.getUserAgentData().platform === "Windows";
}
return util.matchUserAgent("Windows");
}
function isChromeOS() {
if (useUserAgentDataPlatform()) {
return util.getUserAgentData().platform === "Chrome OS";
}
return util.matchUserAgent("CrOS");
}
function isChromecast() {
return util.matchUserAgent("CrKey");
}
function isKaiOS() {
return util.matchUserAgentIgnoreCase("KaiOS");
}
function getVersion() {
const userAgentString = util.getUserAgent();
let version = "", re;
if (isWindows()) {
re = /Windows (?:NT|Phone) ([0-9.]+)/;
const match = re.exec(userAgentString);
if (match) {
version = match[1];
} else {
version = "0.0";
}
} else if (isIos()) {
re = /(?:iPhone|iPod|iPad|CPU)\s+OS\s+(\S+)/;
const match = re.exec(userAgentString);
version = match && match[1].replace(/_/g, ".");
} else if (isMacintosh()) {
re = /Mac OS X ([0-9_.]+)/;
const match = re.exec(userAgentString);
version = match ? match[1].replace(/_/g, ".") : "10";
} else if (isKaiOS()) {
re = /(?:KaiOS)\/(\S+)/i;
const match = re.exec(userAgentString);
version = match && match[1];
} else if (isAndroid()) {
re = /Android\s+([^\);]+)(\)|;)/;
const match = re.exec(userAgentString);
version = match && match[1];
} else if (isChromeOS()) {
re = /(?:CrOS\s+(?:i686|x86_64)\s+([0-9.]+))/;
const match = re.exec(userAgentString);
version = match && match[1];
}
return version || "";
}
function isVersionOrHigher(version) {
return googString.compareVersions(getVersion(), version) >= 0;
}
class PlatformVersion {
constructor() {
this.preUachHasLoaded_ = false;
}
getIfLoaded() {
if (useUserAgentDataPlatform(true)) {
const loadedPlatformVersion = platformVersion.getIfLoaded();
if (loadedPlatformVersion === undefined) {
return undefined;
}
return new Version(loadedPlatformVersion);
} else if (!this.preUachHasLoaded_) {
return undefined;
} else {
return new Version(getVersion());
}
}
async load() {
if (useUserAgentDataPlatform(true)) {
return new Version(await platformVersion.load());
} else {
this.preUachHasLoaded_ = true;
return new Version(getVersion());
}
}
resetForTesting() {
platformVersion.resetForTesting();
this.preUachHasLoaded_ = false;
}
}
const version = new PlatformVersion();
exports = {getVersion, isAndroid, isChromeOS, isChromecast, isIos, isIpad, isIphone, isIpod, isKaiOS, isLinux, isMacintosh, isVersionOrHigher, isWindows, version,};
return exports;
});
//# sourceMappingURL=goog.labs.useragent.platform.js.map