{"version":3,"sources":["emailbreach.js"],"names":["$","fn","emailBreach","options","icoElem","iElem","prgElem","popover","defaults","iconContainerId","this","attr","settings","extend","elem","contentMsg","timerVar","state","resetIcon","tip","_config","content","setContent","setBreachedIcon","bc","setSafeIcon","setUnknownIcon","showProgress","show","hide","checkBreaches","email","val","test","ajax","url","serviceUrl","type","contentType","headers","globalConfig","version","data","JSON","stringify","success","result","breachCount","error","xhr","ajaxOptions","thrownError","complete","initialize","on","e","clearTimeout","setTimeout","appendTo","find","bootstrap","Popover","trigger","placement","jQuery"],"mappings":"CAAA,SAAWA,GACVA,EAAEC,GAAGC,YAAc,SAAUC,GAE5B,IAMIC,EAASC,EAAOC,EAASC,EANzBC,EAAW,CACdC,gBAAiBC,KAAKC,KAAK,MAAQ,QAEhCC,EAAWZ,EAAEa,OAAO,GAAIL,EAAUL,GAElCW,EAAOJ,KAC2BK,EAAa,iEAC/CC,EAAW,KACXC,EAAQ,EAqGZ,OAnGAP,KAAKQ,UAAY,WAChBb,EAAMM,KAAK,QAAS,uCACpBI,EAAa,iEACbE,EAAQ,EACLV,EAAQY,MACVZ,EAAQa,QAAQC,QAAUN,EAC1BR,EAAQe,eAIVZ,KAAKa,gBAAkB,SAAUC,GAChCnB,EAAMM,KAAK,QAAS,4CACpBI,EAAa,mDAAmDS,kBAAyB,GAANA,EAAU,GAAK,yGAClGP,EAAQ,GAGTP,KAAKe,YAAc,WAClBpB,EAAMM,KAAK,QAAS,4CACpBI,EAAa,+DACbE,EAAQ,GAGTP,KAAKgB,eAAiB,WACrBrB,EAAMM,KAAK,QAAS,2CACpBI,EAAa,6CACbE,EAAQ,GAGTP,KAAKiB,aAAe,SAAUC,GACzBA,GACHvB,EAAMwB,OACNtB,EAAQsB,OACRvB,EAAQsB,SAGRtB,EAAQuB,OACRxB,EAAMuB,OACNrB,EAAQqB,OAERrB,EAAQa,QAAQC,QAAUN,EAC1BR,EAAQe,eAIVZ,KAAKoB,cAAgB,WACpB,IAAIC,EAAQjB,EAAKkB,MACb,oIAAoIC,KAAKF,KAC5IjB,EAAKa,cAAa,GAClB3B,EAAEkC,KAAK,CACNC,IAAKvB,EAASwB,WAAa,wBAC3BC,KAAM,OACNC,YAAa,mBACbC,QAAS,IAAKC,aAAaC,SAAW,CAAEA,QAASD,aAAaC,UAC9DC,KAAOC,KAAKC,UAAU,CAACb,MAASA,IAChCc,QAAS,SAAUC,GACbA,IAAiC,GAAvBA,EAAOC,YAES,GAAtBD,EAAOC,YACfjC,EAAKW,cAELX,EAAKS,gBAAgBuB,EAAOC,aAJ5BjC,EAAKY,kBAMPsB,MAAO,SAAUC,EAAKC,EAAaC,GAClCrC,EAAKY,kBAEN0B,SAAU,WACTtC,EAAKa,cAAa,QAMtBjB,KAAK2C,WAAa,WAyBjB,OAxBA3C,KAAK4C,GAAG,eAAe,SAAUC,GAChCzC,EAAKI,YACDF,GACHwC,aAAaxC,GACdA,EAAWyC,WAAW3C,EAAKgB,cAAe,QAE3CpB,KAAK4C,GAAG,cAAc,SAAUC,GAC3BvC,GACHwC,aAAaxC,GACD,GAATC,GACHH,EAAKgB,mBAGP1B,EAAUJ,EAAE,IAAMY,EAASH,iBAC3BT,EAAE,8LAA8L0D,SAAStD,GACzMC,EAAQD,EAAQuD,KAAK,KACrBrD,EAAUF,EAAQuD,KAAK,OACvBpD,EAAU,IAAIqD,UAAUC,QAAQxD,EAAO,CACtCgB,QAAS,iEACTyC,QAAS,QACTC,UAAW,UAGZrD,KAAKQ,YACER,MAEDA,KAAK2C,cAhHd,CAkHGW","file":"../emailbreach.js","sourcesContent":["(function ($) {\n\t$.fn.emailBreach = function (options) {\n\n\t\tvar defaults = {\n\t\t\ticonContainerId: this.attr('id') + \"_ico\"\n\t\t};\n\t\tvar settings = $.extend({}, defaults, options);\n\n\t\tvar elem = this;\n\t\tvar icoElem, iElem, prgElem, popover, contentMsg = \"Will check if your email has been compromised in a data breach\";\n\t\tvar timerVar = null;\n\t\tvar state = 0;\n\n\t\tthis.resetIcon = function () {\n\t\t\tiElem.attr('class', 'i-circled i-light i-small icon-info');\n\t\t\tcontentMsg = 'Will check if your email has been compromised in a data breach';\n\t\t\tstate = 0;\n\t\t\tif(popover.tip) {\n\t\t\t\tpopover._config.content = contentMsg;\n\t\t\t\tpopover.setContent();\n\t\t\t}\n\t\t}\n\n\t\tthis.setBreachedIcon = function (bc) {\n\t\t\tiElem.attr('class', 'i-circled bg-warning i-small icon-email3');\n\t\t\tcontentMsg = `Your email address has been compromised through ${bc} breached site${bc == 1 ? '' : 's'}.\\nCheck your email on NameScan's \"Free Compromised Email Check\" page for more detailed information`;\n\t\t\tstate = 1;\n\t\t}\n\n\t\tthis.setSafeIcon = function () {\n\t\t\tiElem.attr('class', 'i-circled bg-success i-small icon-email3');\n\t\t\tcontentMsg = 'Your email address is not associated with any data breaches.';\n\t\t\tstate = 2;\n\t\t}\n\n\t\tthis.setUnknownIcon = function () {\n\t\t\tiElem.attr('class', 'i-circled bg-info i-small icon-question');\n\t\t\tcontentMsg = 'Could not check your email in data breach.';\n\t\t\tstate = 3;\n\t\t}\n\n\t\tthis.showProgress = function (show) {\n\t\t\tif (show) {\n\t\t\t\tiElem.hide();\n\t\t\t\tpopover.hide();\n\t\t\t\tprgElem.show();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tprgElem.hide();\n\t\t\t\tiElem.show();\n\t\t\t\tpopover.show();\n\n\t\t\t\tpopover._config.content = contentMsg;\n\t\t\t\tpopover.setContent();\n\t\t\t}\n\t\t}\n\n\t\tthis.checkBreaches = function () {\n\t\t\tvar email = elem.val();\n\t\t\tif (/^[a-zA-Z0-9_\\-\\!#\\$%&'\\*\\+/=\\?^`{\\|}~](\\.?[a-zA-Z0-9_\\-\\!#\\$%&'\\*\\+/=\\?^`{\\|}~])*@[a-zA-Z0-9](\\.?[a-zA-Z0-9\\-])*\\.[a-zA-Z]{2,20}$/.test(email)) {\n\t\t\t\telem.showProgress(true);\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: settings.serviceUrl + 'emails/breaches/check',\n\t\t\t\t\ttype: 'post',\n\t\t\t\t\tcontentType: 'application/json',\n\t\t\t\t\theaders: {...(globalConfig.version && { version: globalConfig.version })},\n\t\t\t\t\tdata: JSON.stringify({'email': email}),\n\t\t\t\t\tsuccess: function (result) {\n\t\t\t\t\t\tif (!result || result.breachCount == -1)\n\t\t\t\t\t\t\telem.setUnknownIcon();\n\t\t\t\t\t\telse if (result.breachCount == 0)\n\t\t\t\t\t\t\telem.setSafeIcon();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\telem.setBreachedIcon(result.breachCount);\n\t\t\t\t\t},\n\t\t\t\t\terror: function (xhr, ajaxOptions, thrownError) {\n\t\t\t\t\t\telem.setUnknownIcon();\n\t\t\t\t\t},\n\t\t\t\t\tcomplete: function () {\n\t\t\t\t\t\telem.showProgress(false);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.initialize = function () {\n\t\t\tthis.on('input.email', function (e) {\n\t\t\t\telem.resetIcon();\n\t\t\t\tif (timerVar)\n\t\t\t\t\tclearTimeout(timerVar);\n\t\t\t\ttimerVar = setTimeout(elem.checkBreaches, 2000);\n\t\t\t});\n\t\t\tthis.on('blur.email', function (e) {\n\t\t\t\tif (timerVar)\n\t\t\t\t\tclearTimeout(timerVar);\n\t\t\t\tif (state == 0)\n\t\t\t\t\telem.checkBreaches();\n\t\t\t});\n\n\t\t\ticoElem = $('#' + settings.iconContainerId);\n\t\t\t$('').appendTo(icoElem);\n\t\t\tiElem = icoElem.find('i');\n\t\t\tprgElem = icoElem.find('img');\n\t\t\tpopover = new bootstrap.Popover(iElem, {\n\t\t\t\tcontent: \"Will check if your email has been compromised in a data breach\",\n\t\t\t\ttrigger: \"hover\",\n\t\t\t\tplacement: \"right\"\n\t\t\t});\n\n\t\t\tthis.resetIcon();\n\t\t\treturn this;\n\t\t};\n\t\treturn this.initialize();\n\t}\n})(jQuery);\n\n"]}