|
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = getBrowserInformation;
-
- var _bowser = require('bowser');
-
- var _bowser2 = _interopRequireDefault(_bowser);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var prefixByBrowser = {
- chrome: 'Webkit',
- safari: 'Webkit',
- ios: 'Webkit',
- android: 'Webkit',
- phantom: 'Webkit',
- opera: 'Webkit',
- webos: 'Webkit',
- blackberry: 'Webkit',
- bada: 'Webkit',
- tizen: 'Webkit',
- chromium: 'Webkit',
- vivaldi: 'Webkit',
- firefox: 'Moz',
- seamoney: 'Moz',
- sailfish: 'Moz',
- msie: 'ms',
- msedge: 'ms'
- };
-
-
- var browserByCanIuseAlias = {
- chrome: 'chrome',
- chromium: 'chrome',
- safari: 'safari',
- firfox: 'firefox',
- msedge: 'edge',
- opera: 'opera',
- vivaldi: 'opera',
- msie: 'ie'
- };
-
- function getBrowserName(browserInfo) {
- if (browserInfo.firefox) {
- return 'firefox';
- }
-
- if (browserInfo.mobile || browserInfo.tablet) {
- if (browserInfo.ios) {
- return 'ios_saf';
- } else if (browserInfo.android) {
- return 'android';
- } else if (browserInfo.opera) {
- return 'op_mini';
- }
- }
-
- for (var browser in browserByCanIuseAlias) {
- if (browserInfo.hasOwnProperty(browser)) {
- return browserByCanIuseAlias[browser];
- }
- }
- }
-
- /**
- * Uses bowser to get default browser browserInformation such as version and name
- * Evaluates bowser browserInfo and adds vendorPrefix browserInformation
- * @param {string} userAgent - userAgent that gets evaluated
- */
- function getBrowserInformation(userAgent) {
- var browserInfo = _bowser2.default._detect(userAgent);
-
- if (browserInfo.yandexbrowser) {
- browserInfo = _bowser2.default._detect(userAgent.replace(/YaBrowser\/[0-9.]*/, ''));
- }
-
- for (var browser in prefixByBrowser) {
- if (browserInfo.hasOwnProperty(browser)) {
- var prefix = prefixByBrowser[browser];
-
- browserInfo.jsPrefix = prefix;
- browserInfo.cssPrefix = '-' + prefix.toLowerCase() + '-';
- break;
- }
- }
-
- browserInfo.browserName = getBrowserName(browserInfo);
-
- // For cordova IOS 8 the version is missing, set truncated osversion to prevent NaN
- if (browserInfo.version) {
- browserInfo.browserVersion = parseFloat(browserInfo.version);
- } else {
- browserInfo.browserVersion = parseInt(parseFloat(browserInfo.osversion), 10);
- }
-
- browserInfo.osVersion = parseFloat(browserInfo.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 (browserInfo.browserName === 'ios_saf' && browserInfo.browserVersion > browserInfo.osVersion) {
- browserInfo.browserVersion = browserInfo.osVersion;
- }
-
- // seperate native android chrome
- // https://github.com/rofrischmann/inline-style-prefixer/issues/45
- if (browserInfo.browserName === 'android' && browserInfo.chrome && browserInfo.browserVersion > 37) {
- browserInfo.browserName = '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 (browserInfo.browserName === 'android' && browserInfo.osVersion < 5) {
- browserInfo.browserVersion = browserInfo.osVersion;
- }
-
- // Samsung browser are basically build on Chrome > 44
- // https://github.com/rofrischmann/inline-style-prefixer/issues/102
- if (browserInfo.browserName === 'android' && browserInfo.samsungBrowser) {
- browserInfo.browserName = 'and_chr';
- browserInfo.browserVersion = 44;
- }
-
- return browserInfo;
- }
- module.exports = exports['default'];
|