{"version":3,"sources":["app/js/common/cookie-consent.js","app/js/common/trustpilot.js","app/js/common/footer.js","app/js/common/navigation.js","app/js/common/desktop-menu-behaviour.js","app/js/common/mobile-menu-behaviour.js","app/js/common/email-obfuscation.js","app/js/common/promo-banner.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"layout.js","sourcesContent":["PES = PES || {}\r\nPES.CookieConset = function () {\r\n var init = function () {\r\n $(document).ready(function () {\r\n const isOldCookiePresent = document.cookie.indexOf(\"cookieconsent_status\") > 0;\r\n const oldCookieBanner = document.getElementById(\"cookie-banner\");\r\n let dimissCookie = document.getElementById('cookie_consent--dismiss');\r\n\r\n const addOldCookie = function () {\r\n let date = new Date();\r\n date.setFullYear(date.getFullYear() + 1);\r\n const expires = \"expires=\" + date.toUTCString();\r\n document.cookie = \"cookieconsent_status=dismiss; \" + expires + \"; path=/\";\r\n oldCookieBanner.classList.remove(\"show-banner\");\r\n dimissCookie.removeEventListener('click', addOldCookie);\r\n };\r\n\r\n const showCookieBotBanner = function () {\r\n const showOldBanner = window.Cookiebot?.isOutOfRegion;\r\n if (showOldBanner && !isOldCookiePresent) {\r\n oldCookieBanner.classList.add(\"show-banner\");\r\n dimissCookie.addEventListener('click', addOldCookie);\r\n }\r\n }\r\n\r\n window.addEventListener(\"CookiebotOnDialogInit\", showCookieBotBanner);\r\n window.addEventListener(\"CookiebotOnLoad\", showCookieBotBanner);\r\n }); \r\n\r\n return function () {\r\n window.removeEventListener(\"CookiebotOnDialogInit\", showCookieBotBanner);\r\n window.removeEventListener(\"CookiebotOnLoad\", showCookieBotBanner);\r\n }\r\n }\r\n return {\r\n init: init\r\n }\r\n}();\r\n\r\n","var PES = PES || {};\r\nPES.TrustPilot = function () {\r\n var trustPilotKey = \"trust-pilot-data\";\r\n var cacheDurationMs = 1000 * 60 * 60 * 24 * 7;\r\n var defaultScore = { TrustScore: 4.5, Stars: 4.5, TotalReviewers: 5489 }\r\n\r\n var setTrustPilotData = function (data) {\r\n $(\".trust-score-anchor\").html(data.TrustScore);\r\n $(\".total-reviewers-anchor\").html(data.TotalReviewers);\r\n //$(\".current-star-rating > .stars\").css(\"width\", data.Stars * 20 + \"%\");\r\n };\r\n\r\n var trustPilotExists = function () {\r\n return ($(\".total-reviewers-anchor\").length && $(\".trust-score-anchor\").length) || $(\".current-star-rating > .stars\").length ;\r\n };\r\n\r\n var localStorageAvailable = function() {\r\n return typeof (Storage) !== \"undefined\";\r\n };\r\n\r\n var cacheExpired = function(timestamp) {\r\n if (timestamp) {\r\n var currentTime = (new Date()).getTime();\r\n return currentTime - timestamp > cacheDurationMs;\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n var loadTrustScore = function (trustPilotUrl) {\r\n $.get(trustPilotUrl)\r\n .done(function (response) {\r\n setTrustPilotData(response);\r\n if (localStorageAvailable()) {\r\n response.Timestamp = (new Date()).getTime();\r\n localStorage.setItem(trustPilotKey, JSON.stringify(response));\r\n }\r\n })\r\n .fail(function () {\r\n setTrustPilotData(defaultScore);\r\n });\r\n };\r\n\r\n var init = function (trustPilotUrl) {\r\n if (trustPilotExists()) {\r\n if (localStorageAvailable()) {\r\n var trustScore = localStorage.getItem(trustPilotKey);\r\n if (trustScore) {\r\n var data = JSON.parse(trustScore);\r\n if (!cacheExpired(data.Timestamp)) {\r\n setTrustPilotData(data);\r\n } else {\r\n loadTrustScore(trustPilotUrl);\r\n }\r\n } else {\r\n loadTrustScore(trustPilotUrl);\r\n }\r\n } else {\r\n loadTrustScore(trustPilotUrl);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n init: init\r\n };\r\n}();","PES = PES || {}\r\nPES.Footer = function () {\r\n var initCollapsiblePanels = function () {\r\n $(\"footer .collapse.in\").prev(\".panel-heading\").addClass(\"active\");\r\n $(\"footer #footer-menu\")\r\n .on(\"show.bs.collapse\", function (a) {\r\n $(a.target).prev(\".panel-heading\").addClass(\"active\");\r\n })\r\n .on(\"hide.bs.collapse\", function (a) {\r\n $(a.target).prev(\".panel-heading\").removeClass(\"active\");\r\n });\r\n };\r\n\r\n var initFooterResponsive = function () {\r\n var setupResponsive = function () {\r\n var showPanels = function () {\r\n $.each($(\".responsive-panel\"), function (i, element) {\r\n if (!$(element).hasClass(\"in\")) {\r\n $(element).addClass(\"in\");\r\n }\r\n });\r\n $.each($(\".responsive-panel-heading\"), function (i, element) {\r\n $(element).css(\"cursor\", \"default\");\r\n });};\r\n var hidePanels = function () {\r\n $.each($(\".responsive-panel\"), function (i, element) {\r\n if ($(element).hasClass(\"in\")) {\r\n $(element).removeClass(\"in\");\r\n }\r\n });\r\n\r\n $.each($(\".responsive-panel-heading\"), function (i, element) {\r\n $(element).css(\"cursor\", \"pointer\");\r\n });\r\n };\r\n\r\n var minDesktopWidth = 1360;\r\n if (window.innerWidth < minDesktopWidth) {\r\n hidePanels();\r\n $(\".footer-component > .panel-heading\").css(\"pointer-events\", \"auto\");\r\n } else {\r\n showPanels();\r\n $(\".footer-component > .panel-heading\").css(\"pointer-events\", \"none\");\r\n }\r\n };\r\n\r\n setupResponsive();\r\n\r\n window.addEventListener(\"resize\", function () { setupResponsive(); });\r\n };\r\n\r\n var init = function () {\r\n initCollapsiblePanels();\r\n initFooterResponsive();\r\n };\r\n\r\n return {\r\n init: init\r\n }\r\n}();","var PES = PES || {};\r\n\r\nPES.Navigation = function () {\r\n\r\n function showElements() {\r\n \r\n var logOut = $(\".logoff\");\r\n\r\n $(document).on('click tap', '.logoff', function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n \r\n localStorage.removeItem(\".OfficeTimeline.Cookies.SPE\");\r\n var form = $(this).siblings(\"form\");\r\n form.submit();\r\n });\r\n\r\n $(\".ui-loader.ui-loader-default\").hide();\r\n }\r\n\r\n\r\n var basketAnchorExists = function() {\r\n return $(\".shopping-bag\").length;\r\n };\r\n\r\n var loadBasketIems = function(basketItemsUrl) {\r\n if (basketAnchorExists()) {\r\n $.get(basketItemsUrl)\r\n .done(function(response) {\r\n if (response && response.count > 0) {\r\n $('#item-counter').html(response.count);\r\n $('#item-counter').addClass('not-empty');\r\n }\r\n });\r\n }\r\n };\r\n\r\n var userInfoAnchorExists = function() {\r\n return $(\".user-logged-menu\").length;\r\n };\r\n\r\n var loadUserInfo = function(userInfoUrl) {\r\n if (userInfoAnchorExists()) {\r\n $.get(userInfoUrl)\r\n }\r\n };\r\n\r\n var loadAccount = function (userInfoUrl, basketItemsUrl) {\r\n loadUserInfo(userInfoUrl);\r\n loadBasketIems(basketItemsUrl);\r\n };\r\n\r\n var init = function (userInfoUrl, basketItemsUrl) {\r\n $.ajaxSetup({ cache: false });\r\n loadAccount(userInfoUrl, basketItemsUrl);\r\n showElements();\r\n };\r\n\r\n return {\r\n init: init\r\n };\r\n}();","var PES = PES || {};\r\n\r\nPES.DesktopNavigation = function () {\r\n\r\n function showNewUserRespect() {\r\n let userCreated = localStorage.getItem('userCreated');\r\n if (userCreated === 'true') {\r\n $('.js-account-created-message').show();\r\n localStorage.removeItem('userCreated');\r\n }\r\n }\r\n\r\n function manageDropdown() {\r\n let mainNavContainer = '.site-nav';\r\n let hasDropdown = '.main-btn[data-has-dropdown]';\r\n let submenu = $('div[data-menu-open]');\r\n\r\n $(hasDropdown).on('click', function (e) {\r\n let targetSubmenu = $(this).attr('data-has-dropdown');\r\n\r\n $(hasDropdown).not($(this)).removeClass('active');\r\n $(this).toggleClass('active');\r\n\r\n $(submenu).each(function () {\r\n if ($(this).hasClass(targetSubmenu)) {\r\n $(this).attr('data-menu-open', true);\r\n } else {\r\n $(this).attr('data-menu-open', false);\r\n }\r\n })\r\n });\r\n\r\n $(document).on('click', function (e) {\r\n var target = e.target;\r\n\r\n if (!$(target).closest(mainNavContainer).length\r\n || (!$(target).closest('.main-btn.active').length && !$(target).closest('div[data-menu-open]').length)) {\r\n $(hasDropdown).removeClass('active');\r\n $(submenu).attr('data-menu-open', false);\r\n }\r\n });\r\n\r\n $(document).on('keydown', function (event) {\r\n let openedDropdowns = $(submenu).filter(function () {\r\n return $(this).attr('data-menu-open') === 'true';\r\n })\r\n\r\n if (event.key === \"Escape\" && openedDropdowns.length) {\r\n $(hasDropdown).removeClass('active').blur();\r\n $(submenu).attr('data-menu-open', false);\r\n }\r\n });\r\n }\r\n\r\n var init = function () {\r\n showNewUserRespect();\r\n manageDropdown();\r\n };\r\n\r\n return {\r\n init: init\r\n };\r\n}();","var PES = PES || {};\r\n\r\nPES.MobileNavigation = function () {\r\n\r\n function showElements() {\r\n let openMenu = '.main-btn__mobile';\r\n let mobileMenu = '.mobile__menu';\r\n let closeMobileMenu = '.main-btn__mobile--close';\r\n let hasMobileDropdown = '[data-mobile-dropdown]';\r\n let mobileMenuMainItems = '.mobile__menu--content > h3';\r\n\r\n $(hasMobileDropdown).on('click', function (e) {\r\n let target = e.target;\r\n $(target).closest('h3')\r\n .toggleClass('active')\r\n .siblings('h3')\r\n .removeClass('active');\r\n });\r\n\r\n function closeMenu() {\r\n $(mobileMenu).removeAttr('data-show-menu');\r\n $('body').removeAttr('data-scroll-locked');\r\n $(mobileMenuMainItems).removeClass('active');\r\n };\r\n\r\n $(openMenu).on('click', function () {\r\n $(mobileMenu).attr('data-show-menu', true);\r\n $('body').attr('data-scroll-locked', true);\r\n })\r\n\r\n $(closeMobileMenu).on('click', function () {\r\n closeMenu();\r\n })\r\n\r\n $(document).on('keydown', function (event) {\r\n if (event.key === \"Escape\" && ($(mobileMenu).attr('data-show-menu') !== false || $(mobileMenu).attr('data-show-menu') !== undefined)) {\r\n closeMenu();\r\n }\r\n });\r\n\r\n $(window).on('resize', function () {\r\n if (window.outerWidth > 1200 && $(closeMobileMenu).is(':visible')) {\r\n $(closeMobileMenu).trigger('click');\r\n }\r\n })\r\n }\r\n\r\n var init = function () {\r\n showElements();\r\n };\r\n\r\n return {\r\n init: init\r\n };\r\n}();","PES = PES || {};\r\nPES.ObfuscateEmail = function () {\r\n\r\n function reverseString(str) {\r\n return str.split(\"\").reverse().join(\"\");\r\n }\r\n \r\n function getEmailTargets() {\r\n let emailAnchors = $(\"a[data-email-target]\").toArray();\r\n\r\n emailAnchors.forEach(email => {\r\n $(email).one(\"focus\", function () {\r\n $(this).attr(\"href\", `mailto:${reverseString(this.text)}`)\r\n .css(\"direction\", \"ltr\")\r\n .text(reverseString(this.text));\r\n })\r\n })\r\n }\r\n\r\n var init = function () {\r\n getEmailTargets();\r\n };\r\n return {\r\n init: init\r\n }\r\n}();","var PES = PES || {};\r\nPES.PromoBanner = function () {\r\n\r\n //avoid page scroll being memorised and used on page refresh\r\n if ('scrollRestoration' in history) {\r\n history.scrollRestoration = 'manual';\r\n }\r\n\r\n let displayPromoBanner = function (pageUrl) {\r\n const hostname = new URL(pageUrl).hostname;\r\n const port = new URL(pageUrl).port\r\n const apiString = \"/api/content-marketing-banner?state=live&locale\";\r\n const banner = document.getElementById(\"top-promo-banner\");\r\n const locale = banner.dataset.locale;\r\n const textContainer = document.getElementsByClassName('promo-banner__content--text')[0];\r\n const ctaButton = document.querySelector('[data-cta-button]');\r\n const ctaText = document.querySelector('[data-cta-text]');\r\n const ctaIcon = document.querySelector('[data-icon]');\r\n const closeButton = document.querySelector('[data-button-close]');\r\n let localStorageData = JSON.parse(localStorage.getItem(\"hideUtilityBanner\"));\r\n\r\n const domain = hostname == \"localhost\" ? \"localhost\" : hostname.match(/([a-z0-9-]+\\.[a-z]+)$/i)[0];\r\n\r\n let cmsHost = \"\";\r\n\r\n if (domain !== \"officetimeline.com\") {\r\n cmsHost = domain == \"localhost\" ? `http://localhost:1337${apiString}=${locale}` : `https://compass.pes-test.com${apiString}=${locale}`\r\n } else {\r\n cmsHost = `https://compass.${domain}${apiString}=${locale}`\r\n }\r\n\r\n const router = { pathname: window.location.pathname };\r\n function hideUtilityBanner(data) {\r\n let bannerState = { hide: true, bannerData: null };\r\n\r\n function isPathInArray(paths) {\r\n const currentPath = router.pathname;\r\n return paths.some((path) => {\r\n if (path.includes(\"*\")) {\r\n const basePath = path.replace(\"*\", \"\");\r\n return currentPath.startsWith(basePath);\r\n }\r\n return currentPath === path;\r\n });\r\n }\r\n\r\n data.map((elem) => {\r\n if (elem) {\r\n let isBannerVisible = false;\r\n let visibleBannerData = null;\r\n\r\n for (const item of data) {\r\n const includePaths = item.includePaths?.split(\"\\n\") || [];\r\n const excludePaths = item.excludePaths?.split(\"\\n\") || [];\r\n\r\n const isRouteIncluded = includePaths.length > 0 ? isPathInArray(includePaths) : true;\r\n const isRouteExcluded = excludePaths.length > 0 ? isPathInArray(excludePaths) : false;\r\n\r\n if (isRouteIncluded && !isRouteExcluded) {\r\n visibleBannerData = item;\r\n\r\n const isIdInLocalStorage = localStorageData?.some(\r\n (storedItem) => storedItem.id === item.id\r\n );\r\n\r\n if (!isIdInLocalStorage) {\r\n isBannerVisible = true;\r\n break;\r\n } else {\r\n isBannerVisible = false;\r\n }\r\n }\r\n }\r\n\r\n bannerState = { hide: !isBannerVisible, bannerData: visibleBannerData };\r\n } else {\r\n bannerState = { hide: true, bannerData: null };\r\n }\r\n }); \r\n\r\n return bannerState;\r\n }\r\n function fetchData(apiUrl) {\r\n return fetch(apiUrl)\r\n .then(response => {\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok ' + response.statusText);\r\n }\r\n return response.json();\r\n })\r\n .then(data => {\r\n return data;\r\n })\r\n .catch(error => {\r\n console.error('There was a problem with the fetch operation:', error);\r\n });\r\n }\r\n\r\n // Usage\r\n fetchData(cmsHost).then(data => {\r\n const bannerInfo = data.banners;\r\n const { bannerData, hide } = hideUtilityBanner(bannerInfo);\r\n const { type, localizations, ctaArray, content } = bannerData;\r\n\r\n textContainer.innerHTML = content;\r\n ctaButton?.setAttribute(\"href\", ctaArray[0]?.path);\r\n banner.setAttribute(\"data-banner-type\", type);\r\n ctaText.innerText = ctaArray[0]?.label;\r\n ctaIcon.setAttribute(\"data-icon\", type);\r\n\r\n function setDismissUtilityBanner(hide) {\r\n banner.setAttribute(\"data-banner-is-visible\", !hide);\r\n }\r\n\r\n function isPathInArray(paths) {\r\n const currentPath = window.location.pathname;\r\n\r\n // Check if the currentPath matches any path in the paths array\r\n return paths.some((path) => {\r\n if (path.includes(\"*\")) {\r\n const basePath = path.replace(\"*\", \"\"); // Remove the wildcard\r\n return currentPath.startsWith(basePath);\r\n }\r\n return currentPath === path;\r\n });\r\n }\r\n\r\n // Function to simulate the original `useHideUtilityBanner` hook\r\n\r\n\r\n if (bannerData) {\r\n const bannerLocales = bannerData.localizations;\r\n let localStorageData = null;\r\n\r\n try {\r\n localStorageData = JSON.parse(localStorage.getItem(\"hideUtilityBanner\"));\r\n } catch (e) {\r\n localStorageData = null;\r\n }\r\n\r\n if (localStorageData) {\r\n const existingItem = localStorageData.find((obj) => obj.id === bannerData.id);\r\n let hide = false;\r\n\r\n if (existingItem) {\r\n const dismissAt = new Date(existingItem.dismissAt);\r\n const publishedAt = new Date(bannerData.publishedAt);\r\n\r\n if (dismissAt > publishedAt) {\r\n hide = true;\r\n } else {\r\n hide = false;\r\n localStorage.removeItem(\"hideUtilityBanner\");\r\n }\r\n\r\n // Check if the banner is hidden in other languages\r\n bannerLocales.forEach((elem) => {\r\n const existingLocale = localStorageData.find((obj) => obj.id === elem.id);\r\n if (existingLocale) {\r\n const dismissAtLocale = new Date(existingLocale.dismissAt);\r\n const publishedAtLocale = new Date(elem.publishedAt);\r\n\r\n if (dismissAtLocale > publishedAtLocale) {\r\n hide = true;\r\n } else {\r\n hide = false;\r\n localStorage.removeItem(\"hideUtilityBanner\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n setDismissUtilityBanner(hide);\r\n } else {\r\n setDismissUtilityBanner(false);\r\n }\r\n\r\n }\r\n\r\n function closeBanner(id) {\r\n banner.setAttribute(\"data-banner-is-visible\", false);\r\n\r\n if (localStorageData === null) {\r\n const newData = [];\r\n newData.push({ id: id, dismissAt: new Date() });\r\n //* If banner has translations hide them as well\r\n if (localizations) {\r\n localizations.map((elem) => {\r\n newData.push({ id: elem.id, dismissAt: new Date() });\r\n });\r\n localStorage.setItem(\"hideUtilityBanner\", JSON.stringify(newData));\r\n }\r\n } else {\r\n // Find the index of the object with the same id, if it exists\r\n const existingIndex = localStorageData.findIndex((obj) => obj.id === id);\r\n if (existingIndex > -1) {\r\n // Update the dismissAt date of the existing object\r\n localStorageData[existingIndex].dismissAt = new Date();\r\n } else {\r\n // Add the new object to the array\r\n localStorageData.push({ id: id, dismissAt: new Date() });\r\n }\r\n localizations.map((elem) => {\r\n const existingLocale = localStorageData.findIndex((obj) => {\r\n if (obj.id === elem.id) {\r\n return elem.id;\r\n }\r\n });\r\n if (existingLocale > -1) {\r\n localStorageData[existingLocale].dismissAt = new Date();\r\n } else {\r\n localStorageData.push({ id: elem.id, dismissAt: new Date() });\r\n }\r\n });\r\n localStorage.setItem(\"hideUtilityBanner\", JSON.stringify(localStorageData));\r\n }\r\n }\r\n\r\n function hideBanner() {\r\n closeBanner(bannerData.id);\r\n closeButton.removeEventListener(\"click\", hideBanner);\r\n };\r\n\r\n closeButton.addEventListener(\"click\", hideBanner)\r\n })\r\n .then(() => {\r\n try {\r\n localStorageData = JSON.parse(localStorage.getItem(\"hideUtilityBanner\"));\r\n } catch (e) {\r\n localStorageData = null;\r\n } \r\n localStorageData == null ? banner.setAttribute(\"data-banner-is-visible\", true) : localStorageData;\r\n });\r\n }\r\n\r\n var init = function (envUrl) {\r\n displayPromoBanner(envUrl);\r\n };\r\n\r\n return {\r\n init: init\r\n };\r\n}();"]}