{"version":3,"sources":["../../../dev/j/components/userAgentDetect.js"],"names":["window","avastGlobals","resetPlatform","html","classList","remove","hashValueToHtml","hash","location","substring","platforms","includes","add","document","documentElement","userAgent","navigator","toLowerCase","userLanguage","language","platform","browserName","browserVersion","os","osVersion","userAgentData","undefined","brands","length","test","item","browser","brand","version","match","detect","isChrome","isSafari","isFirefox","isInternetExplorer","isAvast","isEdge","isEdgeChromium","isOpera","name","isWindows","isMac","isAndroid","isIOS","isLinux","isUnix","isWindowsPhone","detectedBrowser","isBrowser","detectedOs","isOs","addEventListener"],"mappings":"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","file":"userAgentDetect.js","sourcesContent":["/**\n * User Agent Browser, OS, platform and brand detection.\n * Detects user's browser, OS, inlcuding versions. Adds correct platform class (e.g. 'js-pc') on . Pushes detected values to avastGlobals object\n * @version 1.0.0\n * @author Vendula Fryzlova \n * @copyright Avast Software s.r.o ©2022\n */\n\n/* eslint-disable complexity */\n\nwindow.avastGlobals = window.avastGlobals || {};\n\n(function() {\n\t'use strict';\n\n\tvar html = document.documentElement,\n\t\thash = window.location.hash.substring(1),\n\t\tuserAgent = navigator.userAgent.toLowerCase(),\n\t\tuserLanguage = navigator.language.toLowerCase(),\n\t\tplatform = 'pc',\n\t\tplatforms = ['android', 'ios', 'mac', 'pc'],\n\t\tbrowserName = '',\n\t\tbrowserVersion = '',\n\t\tos = '',\n\t\tosVersion = '';\n\n\t// Check if the browser supports the Client Hints\n\tif (navigator.userAgentData !== undefined && navigator.userAgentData.brands.length > 0 && navigator.userAgentData.platform !== undefined) {\n\t\t// Client Hints os and platform detection\n\t\tos = navigator.userAgentData.platform.toLowerCase();\n\n\t\tif (/windows/.test(os)) {\n\t\t\tos = 'Windows';\n\t\t} else if (/linux/.test(os)) {\n\t\t\tos = 'Linux';\n\t\t} else if (/android/.test(os)) {\n\t\t\tplatform = 'android';\n\t\t\tos = 'Android';\n\t\t} else if (/ios/.test(os)) {\n\t\t\tplatform = 'ios';\n\t\t\tos = 'IOS';\n\t\t} else if (/macos/.test(os)) {\n\t\t\tplatform = 'mac';\n\t\t\tos = 'Mac';\n\t\t}\n\n\t\t// Client Hints browser detection\n\t\tvar brands = navigator.userAgentData.brands;\n\t\tfor (var item in brands) {\n\t\t\tvar browser = brands[item];\n\n\t\t\tif (/Chrome/.test(browser.brand)) {\n\t\t\t\tbrowserName = 'Chrome';\n\t\t\t\tbrowserVersion = browser.version;\n\t\t\t} else if (/Opera/.test(browser.brand)) {\n\t\t\t\tbrowserName = 'Opera';\n\t\t\t\tbrowserVersion = browser.version;\n\t\t\t} else if (/Edge/.test(browser.brand)) {\n\t\t\t\tbrowserName = 'EdgeChromium';\n\t\t\t\tbrowserVersion = browser.version;\n\t\t\t} else if (/Avast|AVG|CCleaner|Avira|Norton/.test(browser.brand)) {\n\t\t\t\tbrowserName = 'Avast';\n\t\t\t\tbrowserVersion = browser.version;\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// User agent strings os and platform detection\n\t\tif (/windows phone/.test(userAgent)) {\n\t\t\tos = 'WindowsPhone';\n\t\t} else if (/windows/.test(userAgent)) {\n\t\t\tos = 'Windows';\n\t\t} else if (/linux/.test(userAgent) && /linux\\s([^;]+)/.test(userAgent)) {\n\t\t\tos = 'Linux';\n\t\t} else if (/x11/.test(userAgent)) {\n\t\t\tos = 'Unix';\n\t\t} else if (/android/.test(userAgent)) {\n\t\t\tos = 'Android';\n\t\t\tplatform = 'android';\n\t\t} else if (/iphone|ipad|ipod/.test(userAgent)) {\n\t\t\tos = 'IOS';\n\t\t\tplatform = 'ios';\n\t\t} else if (/mac/.test(userAgent)) {\n\t\t\tos = 'Mac';\n\t\t\tplatform = 'mac';\n\t\t}\n\n\t\t// User agent strings browser detection\n\t\tif (/avastium|avast|avg|ccleaner|avira|norton/.test(userAgent)) {\n\t\t\tbrowserName = 'Avast';\n\t\t\tbrowserVersion = userAgent.match(/(?:avastium\\s\\()(\\d+(?:\\.\\d+)+)|\\s(avast|avg|ccleaner)\\/\\K(\\d+(?:\\.\\d+)+)/)[1];\n\t\t} else if (/edge|edgios/.test(userAgent)) {\n\t\t\tbrowserName = 'Edge';\n\t\t\tif (userAgent.match(/(?:edge|edgios)\\/(\\d+(?:\\.\\d+)+)/)) {\n\t\t\t\tbrowserVersion = userAgent.match(/(?:edge|edgios)\\/(\\d+(?:\\.\\d+)+)/)[1];\n\t\t\t}\n\t\t} else if (/edg/.test(userAgent)) {\n\t\t\tbrowserName = 'EdgeChromium';\n\t\t\tif (userAgent.match(/(?:edg)\\/(\\d+(?:\\.\\d+)+)/)) {\n\t\t\t\tbrowserVersion = userAgent.match(/(?:edg)\\/(\\d+(?:\\.\\d+)+)/)[1];\n\t\t\t}\n\t\t} else if (/opr|opera/.test(userAgent)) {\n\t\t\tbrowserName = 'Opera';\n\t\t\tif (userAgent.match(/(?:opr\\/|opera(?:\\s|\\/)|version\\/)(\\d+(?:\\.\\d+)+)/)) {\n\t\t\t\tbrowserVersion = userAgent.match(/(?:opr\\/|opera(?:\\s|\\/)|version\\/)(\\d+(?:\\.\\d+)+)/)[1];\n\t\t\t}\n\t\t} else if (/yabrowser|yowser/.test(userAgent)) {\n\t\t\tbrowserName = 'Yandex';\n\t\t} else if (/chrome|crios|crmo/.test(userAgent)) {\n\t\t\tbrowserName = 'Chrome';\n\t\t\tif (userAgent.match(/(?:chrome|crios|crmo)\\/(\\d+(?:\\.\\d+)+)/)) {\n\t\t\t\tbrowserVersion = userAgent.match(/(?:chrome|crios|crmo)\\/(\\d+(?:\\.\\d+)+)/)[1];\n\t\t\t}\n\t\t} else if (/firefox|iceweasel|fxios/.test(userAgent)) {\n\t\t\tbrowserName = 'Firefox';\n\t\t\tif (userAgent.match(/(?:firefox|iceweasel|fxios)\\/(\\d+(?:\\.\\d+)+)/)) {\n\t\t\t\tbrowserVersion = userAgent.match(/(?:firefox|iceweasel|fxios)\\/(\\d+(?:\\.\\d+)+)/)[1];\n\t\t\t}\n\t\t} else if (/safari/.test(userAgent)) {\n\t\t\tbrowserName = 'Safari';\n\t\t\tif (userAgent.match(/(?:version|safari)\\/(\\d+(?:\\.\\d+)+)/)) {\n\t\t\t\tbrowserVersion = userAgent.match(/(?:version|safari)\\/(\\d+(?:\\.\\d+)+)/)[1];\n\t\t\t}\n\t\t} else if (/msie|trident/.test(userAgent)) {\n\t\t\tbrowserName = 'InternetExplorer';\n\t\t\tif (userAgent.match(/(?:rv:|msie\\s)(\\d+(?:\\.\\d+)+)/)) {\n\t\t\t\tbrowserVersion = userAgent.match(/(?:rv:|msie\\s)(\\d+(?:\\.\\d+)+)/)[1];\n\t\t\t}\n\t\t}\n\t}\n\n\t// User agent strings os version detection\n\tif (os === 'Windows') {\n\t\tif (/windows nt 10.0/.test(userAgent)) {\n\t\t\tosVersion = '10';\n\t\t} else if (/windows nt 6.3/.test(userAgent)) {\n\t\t\tosVersion = '8.1';\n\t\t} else if (/windows nt 6.2/.test(userAgent)) {\n\t\t\tosVersion = '8';\n\t\t} else if (/windows nt 6.1/.test(userAgent)) {\n\t\t\tosVersion = '7';\n\t\t} else if (/windows nt 6.0/.test(userAgent)) {\n\t\t\tosVersion = 'Vista';\n\t\t} else if (/windows nt (?:5.1|5.2)/.test(userAgent)) {\n\t\t\tosVersion = 'XP';\n\t\t} else if (/windows nt 5.0/.test(userAgent)) {\n\t\t\tosVersion = '2000';\n\t\t}\n\t} else if (os === 'Android' && userAgent.match(/android (\\d+(?:\\.\\d+)*)/)) {\n\t\tosVersion = userAgent.match(/android (\\d+(?:\\.\\d+)*)/)[1];\n\t} else if (os === 'IOS' && userAgent.match(/cpu\\s(?:iphone\\s)?os\\s(\\d+(?:_\\d+)+)/)) {\n\t\tosVersion = userAgent.match(/cpu\\s(?:iphone\\s)?os\\s(\\d+(?:_\\d+)+)/)[1];\n\t} else if (os === 'Mac' && userAgent.match(/mac\\sos\\sx\\s(\\d+(?:_|.?\\d+)+)/)) {\n\t\tosVersion = userAgent.match(/mac\\sos\\sx\\s(\\d+(?:_|.?\\d+)+)/)[1];\n\t} else if (os === 'Linux' && userAgent.match(/linux\\s(\\w\\d+_?\\d+)?/)) {\n\t\tosVersion = userAgent.match(/linux\\s(\\w\\d+_?\\d+)?/)[1];\n\t} else if (os === 'Unix' && userAgent.match(/x11;\\s(?:u;)?([^;]+)/)) {\n\t\tosVersion = userAgent.match(/x11;\\s(?:u;)?([^;]+)/)[1];\n\t}\n\n\t// Set platform in URL after #\n\tif (!window.location.hash) {\n\t\twindow.location.hash = platform;\n\t}\n\n\t// Push data to avastGlobals\n\twindow.avastGlobals = window.avastGlobals || {};\n\twindow.avastGlobals.detect = {\n\t\tbrowser: {\n\t\t\tisChrome: false,\n\t\t\tisSafari: false,\n\t\t\tisFirefox: false,\n\t\t\tisInternetExplorer: false,\n\t\t\tisAvast: false,\n\t\t\tisEdge: false,\n\t\t\tisEdgeChromium: false,\n\t\t\tisOpera: false,\n\t\t\tplatform: platform,\n\t\t\tuserAgent: userAgent,\n\t\t\tuserLanguage: userLanguage,\n\t\t\tname: browserName,\n\t\t\tversion: browserVersion\n\t\t},\n\t\tos: {\n\t\t\tisWindows: false,\n\t\t\tisMac: false,\n\t\t\tisAndroid: false,\n\t\t\tisIOS: false,\n\t\t\tisLinux: false,\n\t\t\tisUnix: false,\n\t\t\tisWindowsPhone: false,\n\t\t\tname: os,\n\t\t\tversion: osVersion\n\t\t}\n\t};\n\n\t// Based on the detected browser, set 'true' as a value for browser\n\tif (browserName !== '') {\n\t\tfor (var detectedBrowser in window.avastGlobals.detect.browser) {\n\t\t\tvar isBrowser = detectedBrowser.substring(2);\n\n\t\t\tif (isBrowser.match(window.avastGlobals.detect.browser.name)) {\n\t\t\t\twindow.avastGlobals.detect.browser[detectedBrowser] = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Based on the detected OS, set 'true' as a value for os\n\tif (os !== '') {\n\t\tfor (var detectedOs in window.avastGlobals.detect.os) {\n\t\t\tvar isOs = detectedOs.substring(2);\n\n\t\t\tif (isOs.match(window.avastGlobals.detect.os.name)) {\n\t\t\t\tif (!isOs.match('WindowsPhone')) {\n\t\t\t\t\twindow.avastGlobals.detect.os[detectedOs] = true;\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (isOs.match('WindowsPhone') && window.avastGlobals.detect.os.name.match('WindowsPhone')) {\n\t\t\t\t\twindow.avastGlobals.detect.os.isWindowsPhone = true;\n\t\t\t\t\twindow.avastGlobals.detect.os.isWindows = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Reset platform class on \n\tfunction resetPlatform() {\n\t\thtml.classList.remove('js-pc');\n\t\thtml.classList.remove('js-android');\n\t\thtml.classList.remove('js-ios');\n\t\thtml.classList.remove('js-mac');\n\t}\n\n\t// Add platform classes to \n\tfunction setPlatform() {\n\t\tresetPlatform();\n\t\thtml.classList.add('js-root-' + platform);\n\t\thtml.classList.add('js-' + platform);\n\t}\n\n\tsetPlatform();\n\n\tfunction hashValueToHtml() {\n\t\thash = window.location.hash.substring(1);\n\t\tif (platforms.includes(hash)) {\n\t\t\tresetPlatform();\n\t\t\thtml.classList.add('js-' + hash);\n\t\t}\n\t}\n\n\t// If content after # in URL changes and matches item in array 'platforms', remove class 'js-platform' from and add new one accordingly\n\twindow.addEventListener('hashchange', hashValueToHtml);\n\n\thashValueToHtml();\n\n\t// // Output check\n\t// console.log('Script detected:' +\n\t// \t\t'\\n\\nbrowser: ' +\n\t// \t\tavastGlobals.detect.browser.name +\n\t// \t\t'\\nbrowser version: ' +\n\t// \t\tavastGlobals.detect.browser.version +\n\t// \t\t'\\nos: ' +\n\t// \t\tavastGlobals.detect.os.name +\n\t// \t\t'\\nos version: ' +\n\t// \t\tavastGlobals.detect.os.version +\n\t// \t\t'\\nplatform: ' +\n\t// \t\tavastGlobals.detect.browser.platform);\n})();\n\n"]}