UNPKG

jshow-device-detect

Version:
141 lines 4.46 kB
import { BROWSER_TYPES, DEVICE_TYPES, OS_TYPES } from '../constants'; import { getNavigator } from '../utils/brower'; import UAParser from './parser'; class UADetect { constructor(ua) { this._parser = new UAParser(ua); } get parser() { return this._parser; } get userAgent() { return this._parser.userAgent; } set userAgent(value) { this._parser.reset(value); } get browser() { return this._parser.browser; } get engine() { return this._parser.engine; } get os() { return this._parser.os; } get device() { return this._parser.device; } get cpu() { return this._parser.cpu; } reset(ua) { this._parser.reset(ua); return this; } isMobile(ua) { const device = ua ? this._parser.getDevice(ua) : this._parser.device; switch (device.type) { case DEVICE_TYPES.MOBILE: case DEVICE_TYPES.TABLET: return true; default: return false; } } isSafari(ua, onlyMobile = false) { const browser = ua ? this._parser.getBrowser(ua) : this._parser.browser; switch (browser.name) { case BROWSER_TYPES.SAFARI: return !onlyMobile; case BROWSER_TYPES.MOBILE_SAFARI: return true; default: return false; } } isFirefox(ua) { const browser = ua ? this._parser.getBrowser(ua) : this._parser.browser; return browser.name === BROWSER_TYPES.FIREFOX; } isIE(ua) { const browser = ua ? this._parser.getBrowser(ua) : this._parser.browser; switch (browser.name) { case BROWSER_TYPES.INTERNET_EXPLORER: case BROWSER_TYPES.IE: return true; default: return false; } } isEdge(ua, type) { const isChromium = this.isEdgeChromium(ua); switch (type) { case 'Chromium': if (isChromium) return true; break; case 'Legacy': if (isChromium) return false; break; } const browser = ua ? this._parser.getBrowser(ua) : this._parser.browser; return browser.name === BROWSER_TYPES.EDGE; } isWindows(ua, onlyMobile = false) { const os = ua ? this._parser.getOS(ua) : this._parser.os; return os.name === (onlyMobile ? OS_TYPES.WINDOWS_PHONE : OS_TYPES.WINDOWS); } isAndroid(ua) { const os = ua ? this._parser.getOS(ua) : this._parser.os; return os.name === OS_TYPES.ANDROID; } isMac(ua) { const os = ua ? this._parser.getOS(ua) : this._parser.os; return os.name === OS_TYPES.MAC_OS; } isIOS(ua) { const os = ua ? this._parser.getOS(ua) : this._parser.os; return os.name === OS_TYPES.IOS || this.isIOS13('iPad'); } isIOS13(type) { const nav = getNavigator(); if (!nav) return false; const platform = nav.platform; if (!platform) return false; return ((type ? platform.indexOf(type) !== -1 : /iPad|iPhone|iPod/.test(platform)) || (platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream)); } isMIUI(ua) { const browser = ua ? this._parser.getBrowser(ua) : this._parser.browser; return browser.name === BROWSER_TYPES.MIUI; } isElectron(ua) { const _ua = (ua || this._parser.userAgent).toLowerCase(); return _ua ? /electron/.test(_ua) : false; } isPad(ua) { const device = ua ? this._parser.getDevice(ua) : this._parser.device; return (device.type === DEVICE_TYPES.TABLET) || this.isIOS13('iPad'); } isWechat(ua, type = 'mobile') { const browser = ua ? this._parser.getBrowser(ua) : this._parser.browser; switch (browser.name) { case BROWSER_TYPES.WECHAT: return !(type !== 'mobile'); case BROWSER_TYPES.WECHAT_DESKTOP: return !(type !== 'desktop'); default: return false; } } isEdgeChromium(ua) { const _ua = ua || this._parser.userAgent; return _ua.indexOf('Edg/') !== -1; } } export default UADetect; //# sourceMappingURL=detect.js.map