{"version":3,"sources":["blocks/m-notification-badge.js"],"names":["define","utility","cookie","mNotificationBadgeFn","notificationHeight","init","elm","cookieNameAttr","cookieName","mNotificationBadge","remove","wrapperElm","document","querySelector","classList","add","get","elmId","setAttribute","setupCloseButton","setupResizeObserver","close","setupApiFunctions","show","contains","showHide","hide","addEventListener","closeElm","preventDefault","FRAMEWORK","locale","settings","closeText","append","secureCookie","location","e","slideToggle","callback","set","removeEventListener","secure","path","sameSite","announceClose","showNotification","timings","current","t350ms","variant","windowResizeListener","window","fromResize","ariaHidden","newDisplayType","fontSize","singleRow","offsetHeight","countrySelectorBtn","barElm","elmResizeObserver","listener","removeMeasurementSuffix","getComputedStyle","contentBoxSize","observe","siteSwitcherBtn","cookieMessageText","cookieMessage","createElement","ResizeObserver","entries","setTimeout","timeoutFn","forEach","entry","blockSize","success","createTextNode","failed","body","initInstance","el"],"mappings":"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","file":"blocks/m-notification-badge.js","sourcesContent":["define( [ 'utility', 'vendor/cookie' ], function run( utility, cookie ) {\r\n\t'use strict';\r\n\r\n\tvar mNotificationBadgeFn = {\r\n\r\n\t\tnotificationHeight : 2.1875, /* 35px / 16px */\r\n\r\n\t\tinit : function( elm ) {\r\n\t\t\tvar elmId,\r\n\t\t\t\twrapperElm,\r\n\t\t\t\tcookieName = 'ion_notification',\r\n\t\t\t\tcookieNameAttr;\r\n\r\n\t\t\tif ( !elm.mNotificationBadge ) {\r\n\t\t\t\telm.mNotificationBadge = {}; // Setup mNotificationBadge object\r\n\t\t\t}\r\n\r\n\t\t\tif ( cookie.cookie.get( cookieName ) === 'True' ) {\r\n\t\t\t\telm.remove();\r\n\t\t\t\twrapperElm = document.querySelector( '.m-site-country-selection__notification' );\r\n\t\t\t\tif ( wrapperElm ) {\r\n\t\t\t\t\twrapperElm.remove();\r\n\t\t\t\t}\r\n\t\t\t} else if ( elm.classList.contains( 'js-m-notification-badge' ) ) {\r\n\t\t\t\t// Do nothing\r\n\t\t\t} else {\r\n\t\t\t\telm.classList.add( 'js-m-notification-badge' );\r\n\r\n\t\t\t\telm.mNotificationBadge.wrapperElm = document.querySelector( '.m-site-country-selection__notification' );\r\n\r\n\t\t\t\t// Set the cookie name to custom name if provided\r\n\t\t\t\tcookieNameAttr = elm.getAttribute( 'data-cookie-name' );\r\n\t\t\t\tif ( cookieNameAttr !== null && cookieNameAttr !== '' ) {\r\n\t\t\t\t\tcookieName = cookieNameAttr;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If the cookie has already been set remove the notification straight away\r\n\t\t\t\tif ( cookie.cookie.get( cookieName ) === 'True' ) {\r\n\t\t\t\t\telm.remove();\r\n\t\t\t\t\tif ( elm.mNotificationBadge.wrapperElm ) {\r\n\t\t\t\t\t\telm.mNotificationBadge.wrapperElm.remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\telmId = elm.getAttribute( 'id' );\r\n\t\t\t\t\tif ( !elmId ) {\r\n\t\t\t\t\t\telmId = utility.makeId( 'm-notification-badge-' );\r\n\t\t\t\t\t\telm.setAttribute( 'id', elmId );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmNotificationBadgeFn.setupCloseButton( elm, elmId, cookieName );\r\n\r\n\t\t\t\t\tmNotificationBadgeFn.setupResizeObserver( elm );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tmNotificationBadgeFn.setupApiFunctions( elm, cookieName );\r\n\r\n\t\t\treturn elm.mNotificationBadge;\r\n\t\t},\r\n\r\n\t\tsetupApiFunctions : function( elm, cookieName ) {\r\n\t\t\telm.mNotificationBadge.close = function close() {\r\n\t\t\t\tif ( elm.classList.contains( 'js-m-notification-badge' ) ) {\r\n\t\t\t\t\tmNotificationBadgeFn.close( elm, cookieName );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\telm.mNotificationBadge.show = function show() {\r\n\t\t\t\tif ( elm.classList.contains( 'js-m-notification-badge' ) && elm.mNotificationBadge.wrapperElm ) {\r\n\t\t\t\t\tmNotificationBadgeFn.showHide( elm, true );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\telm.mNotificationBadge.hide = function hide() {\r\n\t\t\t\tif ( elm.classList.contains( 'js-m-notification-badge' ) && elm.mNotificationBadge.wrapperElm ) {\r\n\t\t\t\t\tmNotificationBadgeFn.showHide( elm, false );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\tsetupCloseButton : function( elm, elmId, cookieName ) {\r\n\t\t\tvar closeElm = elm.querySelector( '.m-notification-badge__close' );\r\n\r\n\t\t\t// If there is no close button already create one\r\n\t\t\tif ( !closeElm ) {\r\n\t\t\t\tcloseElm = utility.htmlStringToElement( '' );\r\n\t\t\t\telm.append( closeElm );\r\n\t\t\t}\r\n\r\n\t\t\tcloseElm.setAttribute( 'aria-controls', elmId );\r\n\r\n\t\t\tcloseElm.addEventListener( 'click', function listener( e ) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tmNotificationBadgeFn.close( elm, cookieName );\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tclose : function( elm, cookieName ) {\r\n\t\t\tvar secureCookie = true;\r\n\r\n\t\t\tif ( cookie.cookie.enabled() ) {\r\n\t\t\t\t// If cookies are enabled set a cookie so this message no longer appears\r\n\t\t\t\tif ( document.location.protocol === 'http:' ) {\r\n\t\t\t\t\tsecureCookie = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcookie.cookie.set( cookieName, 'True', {\r\n\t\t\t\t\tsecure : secureCookie,\r\n\t\t\t\t\tpath : '/',\r\n\t\t\t\t\tsameSite : 'Strict',\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmNotificationBadgeFn.announceClose( true );\r\n\t\t\t} else {\r\n\t\t\t\tmNotificationBadgeFn.announceClose( false );\r\n\t\t\t}\r\n\r\n\t\t\tutility.slideToggle( elm, FRAMEWORK.timings.current.t350ms, {\r\n\t\t\t\tvariant : 'up',\r\n\t\t\t\tcallback : function() {\r\n\t\t\t\t\telm.remove();\r\n\t\t\t\t\tif ( elm.mNotificationBadge.wrapperElm ) {\r\n\t\t\t\t\t\telm.mNotificationBadge.wrapperElm.remove();\r\n\t\t\t\t\t\twindow.removeEventListener( 'resize', elm.mNotificationBadge.windowResizeListener );\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tshowHide : function( elm, showNotification, fromResize ) {\r\n\t\t\tvar ariaHidden = 'true',\r\n\t\t\t\tnewDisplayType = 'none';\r\n\r\n\t\t\tif ( showNotification || elm.mNotificationBadge.singleRow ) {\r\n\t\t\t\tariaHidden = 'false';\r\n\t\t\t\tnewDisplayType = 'flex';\r\n\t\t\t}\r\n\t\t\telm.mNotificationBadge.wrapperElm.setAttribute( 'aria-hidden', ariaHidden );\r\n\t\t\telm.mNotificationBadge.wrapperElm.style.display = newDisplayType;\r\n\r\n\t\t\tif ( showNotification && !fromResize ) {\r\n\t\t\t\telm.mNotificationBadge.windowResizeListener();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsetupResizeObserver : function( elm ) {\r\n\t\t\tvar elmResizeObserver;\r\n\r\n\t\t\tif ( elm.mNotificationBadge.wrapperElm ) {\r\n\t\t\t\telm.mNotificationBadge.barElm = document.querySelector( '.m-site-country-selection' );\r\n\t\t\t\telm.mNotificationBadge.countrySelectorBtn = document.querySelector( '.js-m-site-country-selection__country' );\r\n\t\t\t\telm.mNotificationBadge.siteSwitcherBtn = document.querySelector( '.m-site-country-selection__site-switcher a' );\r\n\r\n\t\t\t\telm.mNotificationBadge.windowResizeListener = utility.debounce( function debounceFunc() {\r\n\t\t\t\t\tvar fontSize = utility.removeMeasurementSuffix( window.getComputedStyle( elm.mNotificationBadge.barElm ).fontSize );\r\n\r\n\t\t\t\t\telm.mNotificationBadge.barElm.classList.add( 'm-site-country-selection--single-row' );\r\n\t\t\t\t\telm.mNotificationBadge.singleRow = true;\r\n\t\t\t\t\tmNotificationBadgeFn.showHide( elm, true, true );\r\n\t\t\t\t\tif ( elm.offsetHeight > ( mNotificationBadgeFn.notificationHeight * fontSize ) ) {\r\n\t\t\t\t\t\telm.mNotificationBadge.barElm.classList.remove( 'm-site-country-selection--single-row' );\r\n\t\t\t\t\t\telm.mNotificationBadge.singleRow = false;\r\n\t\t\t\t\t\tif ( elm.mNotificationBadge.countrySelectorBtn && elm.mNotificationBadge.countrySelectorBtn.classList.contains( 'is-open' ) ) {\r\n\t\t\t\t\t\t\tmNotificationBadgeFn.showHide( elm, false, true );\r\n\t\t\t\t\t\t} else if ( elm.mNotificationBadge.siteSwitcherBtn && elm.mNotificationBadge.siteSwitcherBtn.classList.contains( 'is-open' ) ) {\r\n\t\t\t\t\t\t\tmNotificationBadgeFn.showHide( elm, false, true );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 10 );\r\n\r\n\t\t\t\twindow.addEventListener( 'resize', elm.mNotificationBadge.windowResizeListener );\r\n\t\t\t\telm.mNotificationBadge.windowResizeListener();\r\n\t\t\t}\r\n\r\n\t\t\tif ( 'ResizeObserver' in window ) {\r\n\t\t\t\t// Check if the notification is a single line. If so apply alternative styling.\r\n\t\t\t\telmResizeObserver = new ResizeObserver( function listener( entries ) {\r\n\t\t\t\t\tvar fontSize = utility.removeMeasurementSuffix( window.getComputedStyle( elm.mNotificationBadge.barElm ).fontSize );\r\n\r\n\t\t\t\t\tentries.forEach( function loop( entry ) {\r\n\t\t\t\t\t\tif ( entry.contentBoxSize[ 0 ].blockSize > ( mNotificationBadgeFn.notificationHeight * fontSize ) ) {\r\n\t\t\t\t\t\t\telm.classList.remove( 'm-notification-badge--shallow' );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telm.classList.add( 'm-notification-badge--shallow' );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\telmResizeObserver.observe( elm );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tannounceClose : function( success ) {\r\n\t\t\t// Enable aria alert that cookie policy settings successfully saved\r\n\t\t\tvar cookieMessage,\r\n\t\t\t\tcookieMessageText;\r\n\r\n\t\t\tif ( success ) {\r\n\t\t\t\t// Do nothing\r\n\t\t\t} else {\r\n\t\t\t\tcookieMessageText = document.createTextNode( FRAMEWORK.locale.settings.mNotificationBadge.failed );\r\n\r\n\t\t\t\tcookieMessage = document.createElement( 'p' );\r\n\t\t\t\tcookieMessage.setAttribute( 'role', 'alert' );\r\n\t\t\t\tcookieMessage.classList.add( 'u-hidden--visually' );\r\n\t\t\t\tcookieMessage.append( cookieMessageText );\r\n\t\t\t\tdocument.body.append( cookieMessage );\r\n\r\n\t\t\t\t// Time out to remove cookie successfully saved message\r\n\t\t\t\tsetTimeout( function timeoutFn() {\r\n\t\t\t\t\tcookieMessage.remove();\r\n\t\t\t\t}, 5000 );\r\n\t\t\t}\r\n\t\t},\r\n\t};\r\n\r\n\treturn {\r\n\t\tinitInstance : function( el ) {\r\n\t\t\treturn mNotificationBadgeFn.init( el );\r\n\t\t},\r\n\t};\r\n});\r\n"]}