{"version":3,"file":"ExternalLinkCheck-a630cac0.js","names":["define","Moduler","create","defaults","event","contentElement","replaceHtmlAfterClose","activeCssClass","targetUrl","target","validDomains","init","self","this","document","querySelector","options","contentElementHtml","innerHTML","initEvents","querySelectorAll","forEach","el","addEventListener","e","currentHost","window","location","host","targetHost","linkIsInWhiteList","preventDefault","stopPropagation","err","closeDialog","open","focus","openDialog","parentElement","matches","remove","appendChild","classList","add","evt","CustomEvent","dispatchEvent","loadModules","link","domain","replace","toLowerCase","isInWhiteList","i","length","validDomain","endsWith","getAttribute"],"sources":["ExternalLinkCheck.js"],"mappings":"AAAAA,OAAO,CAAC,YAAY,SAAUC,GAC1B,aAEA,OAAOA,EAAQC,OAAO,CAClBC,SAAU,CACNC,MAAO,QACPC,eAAgB,KAChBC,uBAAuB,EACvBC,eAAgB,YAChBC,UAAW,GACXC,OAAQ,GACRC,aAAc,IAGlBC,KAAM,WACF,IAAIC,EAAOC,KAEXD,EAAKP,eAAiBS,SAASC,cAAcH,EAAKI,QAAQX,gBAC1DO,EAAKK,mBAAqBL,EAAKP,eAAea,UAE9CL,KAAKM,YACT,EAEAA,WAAY,WAER,IAAIP,EAAOC,KAEXC,SAASM,iBAAiB,sBAAsBC,SAAQ,SAAUC,GAC9DA,EAAGC,iBAAiB,SAAS,SAAUC,GACnC,IACI,IAAIC,EAAcC,OAAOC,SAASC,KAC9BC,EAAahB,KAAKe,KACtB,GAAIC,SAAkE,KAAfA,GAAqBA,IAAeJ,EAAa,CAGpG,GAAKb,EAAKkB,kBAAkBD,EAAYL,EAAGZ,EAFhCC,MAMP,OAAO,EAHPW,EAAEO,iBACFP,EAAEQ,iBAIV,CACJ,CAAE,MAAOC,GACL,OAAO,CACX,CACJ,GACJ,IAGArB,EAAKP,eAAee,iBAAiB,6BAA6BC,SAAQ,SAAUC,GAChFA,EAAGC,iBAAiB,SAAS,SAAUC,GACnCA,EAAEO,iBACFnB,EAAKsB,aACT,GACJ,IAGAtB,EAAKP,eAAee,iBAAiB,sBAAsBC,SAAQ,SAAUC,GACzEA,EAAGC,iBAAiB,SAAS,SAAUC,GACnCA,EAAEO,iBACFnB,EAAKsB,cACKR,OAAOS,KAAKvB,EAAKI,QAAQR,UAAW,UAC1C4B,OACR,GACJ,GACJ,EAEAC,WAAY,WACR,IAAIzB,EAAOC,KAGND,EAAKP,eAAeiC,cAAcC,QAAQ,UAC3C3B,EAAKP,eAAemC,SACpB1B,SAASC,cAAc,QAAQ0B,YAAY7B,EAAKP,iBAGpDO,EAAKP,eAAeqC,UAAUC,IAAI/B,EAAKI,QAAQT,gBAE/C,IAAIqC,EAAM,IAAIC,YAAY,cAC1BjC,EAAKP,eAAeyC,cAAcF,GAClChC,EAAKU,GAAGwB,cAAcF,EAC1B,EAEAV,YAAa,WACT,IAAItB,EAAOC,KAEXD,EAAKP,eAAeqC,UAAUF,OAAO5B,EAAKI,QAAQT,gBAE9CK,EAAKI,QAAQV,wBACbM,EAAKP,eAAea,UAAYN,EAAKK,mBACrChB,EAAQ8C,YAAYnC,EAAKP,gBAEzBO,EAAKO,cAGT,IAAIyB,EAAM,IAAIC,YAAY,eAC1BjC,EAAKP,eAAeyC,cAAcF,GAClChC,EAAKU,GAAGwB,cAAcF,EAC1B,EAEAd,kBAAmB,SAAUF,EAAMJ,EAAGZ,EAAMoC,GAGxC,IAFA,IAAIC,EAASrB,EAAKsB,QAAQ,OAAQ,IAAIC,cAClCC,GAAgB,EACXC,EAAI,EAAGA,EAAIzC,EAAKI,QAAQN,aAAa4C,OAAQD,IAAK,CACvD,IAAIE,EAAc3C,EAAKI,QAAQN,aAAa2C,GAAGF,cAC/C,GAAIF,EAAOO,SAASD,GAAc,CAC9BH,GAAgB,EAChB,KACJ,CACJ,CAOA,OALKA,IACDxC,EAAKI,QAAQR,UAAYwC,EAAKS,aAAa,QAC3C7C,EAAKI,QAAQP,OAASuC,EAAKS,aAAa,UACxC7C,EAAKyB,cAEFe,CACX,GAER","sourcesContent":["define(['moduler'], function (Moduler) {\r\n 'use strict';\r\n\r\n return Moduler.create({\r\n defaults: {\r\n event: 'click', // the event to open the modal on\r\n contentElement: null, // selector for the Modal component\r\n replaceHtmlAfterClose: true, // if true will restore the html to the initial state\r\n activeCssClass: 'is-active',\r\n targetUrl: '',\r\n target: '',\r\n validDomains: []\r\n },\r\n\r\n init: function () {\r\n var self = this;\r\n\r\n self.contentElement = document.querySelector(self.options.contentElement);\r\n self.contentElementHtml = self.contentElement.innerHTML;\r\n\r\n this.initEvents();\r\n },\r\n\r\n initEvents: function () {\r\n\r\n var self = this;\r\n\r\n document.querySelectorAll(\"a:not(.js-noCheck)\").forEach(function (el) {\r\n el.addEventListener('click', function (e) {\r\n try {\r\n var currentHost = window.location.host;\r\n var targetHost = this.host;\r\n if (targetHost !== undefined && targetHost !== null && targetHost !== '' && targetHost !== currentHost) {\r\n var link = this;\r\n //Do whitelist check\r\n if (!self.linkIsInWhiteList(targetHost, e, self, link)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } else {\r\n return true;\r\n }\r\n }\r\n } catch (err) {\r\n return true; // if this fails, we dont want to break every link on the page...\r\n }\r\n });\r\n });\r\n\r\n // closing window by clicking close link\r\n self.contentElement.querySelectorAll('a:not(.js-acceptAndClose)').forEach(function (el) {\r\n el.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n self.closeDialog();\r\n });\r\n });\r\n\r\n // closing window by clicking close link\r\n self.contentElement.querySelectorAll('.js-acceptAndClose').forEach(function (el) {\r\n el.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n self.closeDialog();\r\n var tab = window.open(self.options.targetUrl, '_blank');\r\n tab.focus();\r\n });\r\n });\r\n },\r\n\r\n openDialog: function () {\r\n var self = this;\r\n\r\n // move modal element to body to avoid z-index issues.\r\n if (!self.contentElement.parentElement.matches('body')) {\r\n self.contentElement.remove();\r\n document.querySelector('body').appendChild(self.contentElement);\r\n }\r\n\r\n self.contentElement.classList.add(self.options.activeCssClass);\r\n\r\n var evt = new CustomEvent('modal-open');\r\n self.contentElement.dispatchEvent(evt);\r\n self.el.dispatchEvent(evt);\r\n },\r\n\r\n closeDialog: function () {\r\n var self = this;\r\n\r\n self.contentElement.classList.remove(self.options.activeCssClass);\r\n\r\n if (self.options.replaceHtmlAfterClose) {\r\n self.contentElement.innerHTML = self.contentElementHtml;\r\n Moduler.loadModules(self.contentElement);\r\n\r\n self.initEvents();\r\n }\r\n\r\n var evt = new CustomEvent('modal-close');\r\n self.contentElement.dispatchEvent(evt);\r\n self.el.dispatchEvent(evt);\r\n },\r\n\r\n linkIsInWhiteList: function (host, e, self, link) {\r\n var domain = host.replace('www.', '').toLowerCase();\r\n var isInWhiteList = false;\r\n for (var i = 0; i < self.options.validDomains.length; i++) {\r\n var validDomain = self.options.validDomains[i].toLowerCase();\r\n if (domain.endsWith(validDomain)) {\r\n isInWhiteList = true;\r\n break;\r\n }\r\n }\r\n \r\n if (!isInWhiteList) {\r\n self.options.targetUrl = link.getAttribute('href');\r\n self.options.target = link.getAttribute('target');\r\n self.openDialog();\r\n }\r\n return isInWhiteList;\r\n }\r\n });\r\n});"]}