{"version":3,"file":"index.umd.js","sources":["../../../../common/temp/node_modules/.pnpm/detect-browser@5.3.0/node_modules/detect-browser/es/index.js","../src/compareVersion.js","../src/default-config.js","../src/index.js"],"sourcesContent":["var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\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|curl|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', /EdgA?\\/([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 ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\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', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\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 ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\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 // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\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":["__spreadArray","to","from","pack","arguments","length","ar","i","l","Array","prototype","slice","call","concat","BrowserInfo","name","version","os","this","type","NodeInfo","process","platform","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","userAgentRules","operatingSystemRules","detect","userAgent","parseUserAgent","document","navigator","product","ua","matchedRule","reduce","matched","_a","browser","regex","uaMatch","exec","matchUserAgent","match","versionParts","split","join","count","output","ii","push","createVersionParts","detectOS","searchBotMatch","isRightVerion","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","toString","undefined","includes","indexOf","runtime_browser_set_language","configVersion","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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"}