{"version":3,"file":"index.umd.js","sources":["../../../../node_modules/detect-browser/es/index.js","../src/compareVersion.js","../src/default-config.js","../src/index.js"],"sourcesContent":["var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /Edg\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FBAV\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n var versionParts = match[1] && match[1].split(/[._]/).slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArrays(versionParts, createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length));\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","const isRightVersion = (browserVer,configVer) => {\n const browserVerArr = browserVer.split('.');\n const configVerArr = configVer.split('.');\n const configVerArrLen = configVerArr.length;\n for(let i=0 ; i`;\nconst html = function (hintText, closeText, downloadText) {\n return `\n
\n

${svg}${hintText}

\n
\n \n \n
\n
\n`\n};\n\nconst css = `\n .browser-hint-dialog-wrapper {\n margin: 0; padding: 0;\n position: fixed;\n width: 100%;\n height: 100%;\n left: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.6);\n z-index: baseIndex;\n font-family: \"Segoe UI\", Roboto, \"Helvetica Neue\", \"PingFang SC\", \"Hiragino Sans GB\", \"Heiti SC\", \"Microsoft YaHei\", sans-serif\n }\n .browser-hint-dialog {\n position: absolute;\n width: 450px;\n background: white;\n left: 50%;\n top: 35%;\n transform: translate(-50%, -50%);\n border-radius: 2px;\n padding: 32px 32px 24px 32px;\n }\n .browser-hint-dialog .buttons{\n display: flex;\n justify-content: flex-end;\n }\n .browser-hint-dialog .content {\n display: flex;\n align-items: flex-start;\n line-height: 26px;\n margin: 1em 0;\n }\n .browser-hint-dialog .question {\n width: 20px;\n height: 20px;\n margin-right: 12px;\n margin-top: 3px;\n }\n .browser-hint-dialog .button {\n padding: 0 16px;\n min-width: 60px;\n height: 32px;\n border-color: transparent;\n background: #3c8cff;\n color: white;\n outline: none;\n cursor: pointer;\n border-radius: 2px;\n font-size: 14px;\n }\n\n .browser-hint-dialog .button.bh-cancel {\n border: 1px solid #cccccc;\n background: white;\n color: #333333;\n margin-right: 12px;\n }\n\n`;\n\n(function(){\n\n const textMap = {\n close: {\n zh: '关闭',\n en: 'Close',\n ja: '閉じる'\n },\n download: {\n zh: '去下载',\n en: 'Download',\n ja: 'ダウンロード'\n }\n }\n\n const userConfig = window.runtime_browser_config;\n const config = defaultConfig;\n\n if (userConfig.hintText) {\n config.hintText = Object.assign(defaultConfig.hintText, userConfig.hintText)\n }\n\n if (userConfig && Array.isArray(userConfig.browserList)) {\n config.browserList = userConfig.browserList;\n }\n\n const isObject = (obj)=>{\n return Object.prototype.toString.call(obj)==='[object Object]'\n }\n\n if(userConfig && isObject(userConfig.browserVersionMap)) {\n config.browserVersionMap = userConfig.browserVersionMap;\n }\n\n if (userConfig.language !== undefined) {\n config.language = userConfig.language;\n }\n\n if (userConfig.remindInterval !== undefined) {\n config.remindInterval = userConfig.remindInterval;\n }\n\n if (userConfig.baseIndex !== undefined) {\n config.baseIndex = userConfig.baseIndex;\n }\n\n if (userConfig.ignoreMobile !== undefined) {\n config.ignoreMobile = userConfig.ignoreMobile\n }\n\n const browser = detect();\n\n if (!browser) return;\n\n if (config.ignoreMobile) {\n const mobileList = ['iOS', 'Android OS','BlackBerry OS','Windows Mobile'];\n if (mobileList.includes(browser.os)) {\n return;\n }\n }\n\n if (config.browserList.indexOf('chrome') > -1) {\n config.browserList.push('edge-chromium')\n }\n\n // 留一个空方法,防止业务方调用报错\n window.runtime_browser_set_language = function () {}\n\n const configVersion = config.browserVersionMap[browser.name];\n\n if (config.browserList.indexOf(browser.name) > -1) {\n if (configVersion) {\n if(isRightVerion(browser.version,configVersion)){\n return;\n }\n }else{\n return;\n }\n }\n\n const LS_KEY = 'browser-hint-config';\n\n const configStr = localStorage.getItem(LS_KEY);\n\n if (configStr) {\n try {\n const config = JSON.parse(configStr);\n if (config.remindInterval < 0) {\n return;\n }\n if (config.leftTimes > 1) {\n config.leftTimes --;\n localStorage.setItem(LS_KEY, JSON.stringify(config));\n return;\n }\n } catch (e) {\n\n }\n }\n\n const dialogDom = document.createElement('div');\n dialogDom.setAttribute('class', 'browser-hint-dialog-wrapper');\n dialogDom.innerHTML = html(\n config.hintText[config.language],\n textMap.close[config.language], textMap.download[config.language]);\n const cssDom = document.createElement('style');\n cssDom.innerHTML = css.replace('baseIndex', config.baseIndex + 1000);\n\n dialogDom.addEventListener('click', event => {\n const classList = event.target.getAttribute('class');\n if (classList && (classList.indexOf('bh-confirm') > -1 || classList.indexOf('bh-cancel') > -1)) {\n if (classList.indexOf('bh-confirm') > -1 ) {\n window.open('https://www.google.com/chrome/')\n } else if (classList.indexOf('bh-cancel') > -1 ) {\n dialogDom.style.display = 'none';\n }\n localStorage.setItem(LS_KEY, JSON.stringify({leftTimes: config.remindInterval}));\n }\n });\n\n window.runtime_browser_set_language = lang => {\n config.language = lang;\n dialogDom.innerHTML = html(\n config.hintText[config.language],\n textMap.close[config.language], textMap.download[config.language]);\n }\n\n document.head.appendChild(cssDom);\n document.body.appendChild(dialogDom)\n\n})();\n"],"names":["__spreadArrays","s","i","il","arguments","length","r","Array","k","a","j","jl","BrowserInfo","name","version","os","this","type","NodeInfo","process","platform","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","userAgentRules","operatingSystemRules","detect","userAgent","parseUserAgent","document","navigator","product","slice","ua","matchedRule","reduce","matched","_a","browser","regex","uaMatch","exec","matchUserAgent","match","versionParts","split","count","output","ii","push","createVersionParts","join","detectOS","searchBotMatch","browserVer","configVer","browserVerArr","configVerArr","configVerArrLen","hintText","zh","en","ja","language","browserList","browserVersionMap","chrome","ignoreMobile","remindInterval","baseIndex","html","closeText","downloadText","css","textMap","close","download","userConfig","window","runtime_browser_config","config","defaultConfig","Object","assign","isArray","obj","prototype","toString","call","undefined","includes","indexOf","runtime_browser_set_language","configVersion","isRightVerion","LS_KEY","configStr","localStorage","getItem","JSON","parse","leftTimes","setItem","stringify","e","dialogDom","createElement","setAttribute","innerHTML","cssDom","replace","addEventListener","event","classList","target","getAttribute","open","style","display","lang","head","appendChild","body"],"mappings":"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"}