{"version":3,"file":"offSiteLinks.js","mappings":"+yBAIA,IAEMA,EAAY,WAChB,SAAAA,K,4FAAcC,CAAA,KAAAD,GACZE,KAAKC,YACP,C,QAmFC,O,EAnFAH,G,EAAA,EAAAI,IAAA,aAAAC,MAED,WACE,GAA+B,oBAApBC,gBAAiC,CAC1C,IAAMC,EAAWC,SAASC,iBAAiB,KAE3C,GAAIF,EAAU,CACZ,IAAMG,EAAc,CAClB,iBACA,oBACA,oBACA,iBACA,4BACA,gCACA,wBACA,sCACA,gCACA,iCACA,mBACA,sCAGIC,EAAkB,CACtBC,cAAe,uBAGjBL,EAASM,SAAQ,SAAAC,GAEf,IAAIJ,EAAYK,MAAK,SAAAC,GAAS,OAAIF,EAAKG,UAAUC,SAASF,EAAU,IAApE,CAIA,IAAMG,EAAOL,EAAKK,KAElB,GAAKA,GAIAA,EAAKC,SAAS,UAIfD,EAAKC,SAASd,iBAAlB,CAIA,IACMe,EAAaP,EAAKO,WAClBC,EAAaD,EAAW,GACxBE,EAAqBD,EAAaA,EAAWE,SAASC,cAAgB,GAE5E,GAA0B,IAAtBJ,EAAWK,SALc,CAAC,MAAO,MAAO,SAAU,WAKFN,SAASG,GAA7D,CAKA,GAAII,OAAOC,KAAKjB,GAAiBI,MAAK,SAAAC,GAAS,OAAIF,EAAKG,UAAUC,SAASF,EAAU,IAAG,CACtF,IAAMa,EAAiBf,EAAKgB,cAC1BnB,EACEgB,OAAOC,KAAKjB,GAAiBoB,MAAK,SAAAf,GAAS,OAAIF,EAAKG,UAAUC,SAASF,EAAU,MAIjFa,IACFf,EAAOe,EAEX,CAEA,IAAMG,EAAYxB,SAASyB,cAAc,QACnCC,EAAgB1B,SAASyB,cAAc,QAC7CD,EAAUf,UAAUkB,IAAI,uBACxBH,EAAUI,aAAa,cAAe,QACtCJ,EAAUK,UAAY,gBACtBH,EAAcjB,UAAUkB,IAAI,sBAC5BD,EAAcG,UAAYvB,EAAKuB,UAE/BvB,EAAKuB,UAAY,GACjBvB,EAAKwB,YAAYJ,GACjBpB,EAAKG,UAAUkB,IAAI,gBACnBrB,EAAKwB,YAAYN,EA1BjB,CATA,CAdA,CAkDF,GACF,CACF,CACF,M,oEAAChC,CAAA,CAtFe,GAyFlB,W","sources":["webpack://cornell-engineering/./static/js/components/offSiteLinks.js"],"sourcesContent":["/**\n * Tags links that have an offsite URL.\n */\n\n/* global ceNetworkDomain */\n\nclass offSiteLinks {\n  constructor() {\n    this.initialize();\n  }\n\n  initialize() {\n    if (typeof ceNetworkDomain !== 'undefined') {\n      const allLinks = document.querySelectorAll('a');\n\n      if (allLinks) {\n        const skipClasses = [\n          'nav__logo-link',\n          'footer__logo-link',\n          'social-item__link',\n          'nav__seal-link',\n          'news-topper__feature-link',\n          'news-topper__latest-item-link',\n          'news-home-press__link',\n          'news-home-around-cornell__item-link',\n          'ce-block__card-list-item-link',\n          'ce-block__people-list-art-link',\n          'tease__art__link',\n          'program-table__program-degree-link',\n        ];\n\n        const retargetClasses = {\n          tease__hgroup: '.tease__h-underline',\n        };\n\n        allLinks.forEach(link => {\n          // Check to see if the link classList has any skipClasses classes.\n          if (skipClasses.some(className => link.classList.contains(className))) {\n            return;\n          }\n\n          const href = link.href;\n\n          if (!href) {\n            return;\n          }\n\n          if (!href.includes('http')) {\n            return;\n          }\n\n          if (href.includes(ceNetworkDomain)) {\n            return;\n          }\n\n          const excludeOnlyChildTags = ['img', 'svg', 'figure', 'picture'];\n          const childNodes = link.childNodes;\n          const firstChild = childNodes[0];\n          const firstChildNodeName = firstChild ? firstChild.nodeName.toLowerCase() : '';\n\n          if (childNodes.length === 1 && excludeOnlyChildTags.includes(firstChildNodeName)) {\n            return;\n          }\n\n          // Check to see if the link classList has any retargetClasses classes.\n          if (Object.keys(retargetClasses).some(className => link.classList.contains(className))) {\n            const maybeNewTarget = link.querySelector(\n              retargetClasses[\n                Object.keys(retargetClasses).find(className => link.classList.contains(className))\n              ],\n            );\n\n            if (maybeNewTarget) {\n              link = maybeNewTarget;\n            }\n          }\n\n          const arrowSpan = document.createElement('span');\n          const arrowSpanText = document.createElement('span');\n          arrowSpan.classList.add('offsite-link__arrow');\n          arrowSpan.setAttribute('aria-hidden', 'true');\n          arrowSpan.innerHTML = ' ↗';\n          arrowSpanText.classList.add('offsite-link__text');\n          arrowSpanText.innerHTML = link.innerHTML;\n\n          link.innerHTML = '';\n          link.appendChild(arrowSpanText);\n          link.classList.add('offsite-link');\n          link.appendChild(arrowSpan);\n        });\n      }\n    }\n  }\n}\n\nexport default offSiteLinks;\n"],"names":["offSiteLinks","_classCallCheck","this","initialize","key","value","ceNetworkDomain","allLinks","document","querySelectorAll","skipClasses","retargetClasses","tease__hgroup","forEach","link","some","className","classList","contains","href","includes","childNodes","firstChild","firstChildNodeName","nodeName","toLowerCase","length","Object","keys","maybeNewTarget","querySelector","find","arrowSpan","createElement","arrowSpanText","add","setAttribute","innerHTML","appendChild"],"sourceRoot":""}