'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _bowser = require('bowser'); var _bowser2 = _interopRequireDefault(_bowser); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var vendorPrefixes = { Webkit: ['chrome', 'safari', 'ios', 'android', 'phantom', 'opera', 'webos', 'blackberry', 'bada', 'tizen', 'chromium', 'vivaldi'], Moz: ['firefox', 'seamonkey', 'sailfish'], ms: ['msie', 'msedge'] }; var browsers = { chrome: [['chrome'], ['chromium']], safari: [['safari']], firefox: [['firefox']], edge: [['msedge']], opera: [['opera'], ['vivaldi']], ios_saf: [['ios', 'mobile'], ['ios', 'tablet']], ie: [['msie']], op_mini: [['opera', 'mobile'], ['opera', 'tablet']], and_uc: [['android', 'mobile'], ['android', 'tablet']], android: [['android', 'mobile'], ['android', 'tablet']] }; var browserByInfo = function browserByInfo(info) { if (info.firefox) { return 'firefox'; } var name = ''; Object.keys(browsers).forEach(function (browser) { browsers[browser].forEach(function (condition) { var match = 0; condition.forEach(function (single) { if (info[single]) { match += 1; } }); if (condition.length === match) { name = browser; } }); }); return name; }; /** * Uses bowser to get default browser information such as version and name * Evaluates bowser info and adds vendorPrefix information * @param {string} userAgent - userAgent that gets evaluated */ exports.default = function (userAgent) { if (!userAgent) { return false; } var info = _bowser2.default._detect(userAgent); Object.keys(vendorPrefixes).forEach(function (prefix) { vendorPrefixes[prefix].forEach(function (browser) { if (info[browser]) { info.prefix = { inline: prefix, css: '-' + prefix.toLowerCase() + '-' }; } }); }); info.browser = browserByInfo(info); // For cordova IOS 8 the version is missing, set truncated osversion to prevent NaN info.version = info.version ? parseFloat(info.version) : parseInt(parseFloat(info.osversion), 10); info.osversion = parseFloat(info.osversion); // iOS forces all browsers to use Safari under the hood // as the Safari version seems to match the iOS version // we just explicitely use the osversion instead // https://github.com/rofrischmann/inline-style-prefixer/issues/72 if (info.browser === 'ios_saf' && info.version > info.osversion) { info.version = info.osversion; info.safari = true; } // seperate native android chrome // https://github.com/rofrischmann/inline-style-prefixer/issues/45 if (info.browser === 'android' && info.chrome && info.version > 37) { info.browser = 'and_chr'; } // For android < 4.4 we want to check the osversion // not the chrome version, see issue #26 // https://github.com/rofrischmann/inline-style-prefixer/issues/26 if (info.browser === 'android' && info.osversion < 5) { info.version = info.osversion; } return info; }; module.exports = exports['default'];