{"version":3,"file":"uppsala.alertbanner.min.js","names":["define","cookiePrefix","init","cookieBaseName","autoRemoveBanners","closeButtons","btn","banner","i","id","toRemove","document","getElementsByClassName","length","getAlertBanner","getId","cookieName","cookies","cookie","split","trim","existsCookie","getCookieName","push","addEventListener","e","event","currentTarget","bannerElem","expiresYearsFromNow","cookieExpire","Date","cookieExpirationOption","setFullYear","getFullYear","toUTCString","setCloseCookie","removeElement","closeAlertBanner","preventDefault","dataset","alertBannerId","Error","closeButton","parent","parentElement","selector","matches","elem","parentNode","removeChild"],"sources":["components/uppsala.alertbanner.js"],"mappings":"AAAAA,QAAO,WACH,IAAIC,EA4BJ,MA1BkB,CAEdC,KAAM,SAAUC,EAAyBC,GACrC,IAAIC,EAAcC,EAAKC,EAAQC,EAyD/BC,EAzDkCC,EAAW,GAM7C,IAJAT,EAAeE,EAAiB,IAEhCE,EAAeM,SAASC,uBAAuB,wBAE1CJ,EAAI,EAAGA,EAAIH,EAAaQ,OAAQL,IAEjCD,EAASO,EADTR,EAAMD,EAAaG,IAEfJ,IAgDRK,WAAKM,EAhDuCR,GAgFpD,SAAsBS,GAClB,IAAIR,EAAGS,EAEP,IAAKN,SAASO,OACV,OAAO,EAIX,IADAD,EAAUN,SAASO,OAAOC,MAAM,KAC3BX,EAAI,EAAGA,EAAIS,EAAQJ,OAAQL,IAE5B,GADOS,EAAQT,GAAGW,MAAM,KAAK,GAAGC,SACnBJ,EACT,OAAO,EAIf,OAAO,CACX,CA7CWK,CAFUC,EAAcb,KAhDnBC,EAASa,KAAKhB,GAEAD,EAcdkB,iBAAiB,SAAS,SAAUC,GAC5C,IAAIlB,EAASO,EAAeY,MAAMC,gBAqB1C,SAA0BC,GACtB,IAAInB,EAAKM,EAAMa,IAhBnB,SAAwBnB,EAAIoB,GACxB,IAAIX,EACAF,EAAaM,EAAcb,GAC3BqB,EAAe,IAAIC,KACnBC,EAAyB,GAEzBH,IACAC,EAAaG,YAAYH,EAAaI,cAAgBL,GACtDG,EAAyB,WAAaF,EAAaK,cAAgB,MAGvEjB,EAASF,EAAa,UAAYgB,EAAyB,uBAC3DrB,SAASO,OAASA,CACtB,EAKIkB,CAAe3B,GACf4B,EAAcT,EAClB,CAzBQU,CAAiB/B,GACjBkB,EAAEc,gBACN,IAAG,GAbC,IAAK/B,EAAI,EAAGA,EAAIE,EAASG,OAAQL,IAC7B6B,EAAc3B,EAASF,GAE/B,GA2CJ,SAASO,EAAMa,GACX,IAAKA,EAAWY,UAAYZ,EAAWY,QAAQC,cAC3C,MAAM,IAAIC,MAAM,4DAEpB,OAAOd,EAAWY,QAAQC,aAC9B,CAEA,SAASnB,EAAcb,GACnB,OAAOR,EAAeQ,CAC1B,CAEA,SAASK,EAAe6B,GAIpB,IAHA,IAAIC,EAASD,EAAYE,cACrBC,EAAW,yBAERF,IAAWA,EAAOG,QAAQD,IAC7BF,EAASA,EAAOC,cAGpB,IAAKD,EACD,MAAM,IAAIF,MAAM,yGAA2GI,EAAW,KAG1I,OAAOF,CACX,CAoBA,SAASP,EAAcW,GACnBA,EAAKC,WAAWC,YAAYF,EAChC,CAEJ","ignoreList":[],"sourcesContent":["define(function () {\n var cookiePrefix;\n\n var alertbanner = {\n\n init: function (cookieBaseName, /*bool*/ autoRemoveBanners) {\n var closeButtons, btn, banner, i, toRemove = [];\n\n cookiePrefix = cookieBaseName + '_';\n\n closeButtons = document.getElementsByClassName(\"js-alertbannerbutton\");\n\n for (i = 0; i < closeButtons.length; i++) {\n btn = closeButtons[i];\n banner = getAlertBanner(btn);\n if (autoRemoveBanners && shouldBeClosed(banner)) {\n toRemove.push(banner);\n } else {\n addClickEvent(btn);\n }\n }\n\n // remove elements after iterating through the element list\n for (i = 0; i < toRemove.length; i++) {\n removeElement(toRemove[i]);\n }\n }\n };\n\n return alertbanner;\n\n function addClickEvent(closeButton) {\n closeButton.addEventListener(\"click\", function (e) {\n var banner = getAlertBanner(event.currentTarget);\n closeAlertBanner(banner);\n e.preventDefault();\n }, false);\n }\n\n function setCloseCookie(id, expiresYearsFromNow) {\n var cookie,\n cookieName = getCookieName(id),\n cookieExpire = new Date(),\n cookieExpirationOption = \"\";\n\n if (expiresYearsFromNow) {\n cookieExpire.setFullYear(cookieExpire.getFullYear() + expiresYearsFromNow);\n cookieExpirationOption = \"expires=\" + cookieExpire.toUTCString() + \"; \";\n }\n\n cookie = cookieName + \"=True; \" + cookieExpirationOption + \"path=/; SameSite=lax\";\n document.cookie = cookie;\n }\n\n function closeAlertBanner(bannerElem) {\n var id = getId(bannerElem);\n\n setCloseCookie(id);\n removeElement(bannerElem);\n }\n\n function shouldBeClosed(bannerElem) {\n // a banner should be auto-closed if there's a close cookie present\n var id = getId(bannerElem),\n cookieName = getCookieName(id);\n\n return existsCookie(cookieName);\n }\n\n function getId(bannerElem) {\n if (!bannerElem.dataset || !bannerElem.dataset.alertBannerId) {\n throw new Error(\"An alert banner must have an ID! Missing data attribute.\");\n }\n return bannerElem.dataset.alertBannerId;\n }\n\n function getCookieName(id) {\n return cookiePrefix + id;\n }\n\n function getAlertBanner(closeButton) {\n var parent = closeButton.parentElement,\n selector = '[data-alert-banner-id]';\n\n while (parent && !parent.matches(selector)) {\n parent = parent.parentElement;\n }\n\n if (!parent) {\n throw new Error(\"An alert banner button must be located inside an alert banner!. Could not find parent banner matching \" + selector + \".\");\n }\n\n return parent;\n }\n\n function existsCookie(cookieName) {\n var i, cookies, name;\n\n if (!document.cookie) {\n return false;\n }\n\n cookies = document.cookie.split(';');\n for (i = 0; i < cookies.length; i++) {\n name = cookies[i].split('=')[0].trim();\n if (name === cookieName) {\n return true;\n }\n }\n\n return false;\n }\n\n function removeElement(elem) {\n elem.parentNode.removeChild(elem);\n }\n\n});\n"]}