{"version":3,"file":"773.min.js?t=1744984834426","mappings":"qLAKe,MAAMA,EACpBC,iBAAmB,CAClBC,UAAW,+BACXC,UAAW,+CACXC,OAAQ,yBACRC,wBAAyB,yBACzBC,kBAAmB,mCAGpBL,eAAiB,CAChBM,OAAQ,4BAGTN,cAAgB,CACfO,YAAa,oBAGdC,WAAAA,CAAYC,GACXC,KAAKD,QAAUA,EACfC,KAAKC,GAAKF,GAASE,IAAM,GACzBD,KAAKE,SAAWC,EAAAA,EAASC,cAEzBJ,KAAKK,cAAgBL,KAAKE,SAASG,cACnCL,KAAKM,oBAAsBN,KAAKE,SAASI,oBAEzCN,KAAKO,WACLP,KAAKQ,eACLR,KAAKS,cACLT,KAAKU,WACN,CAMAA,SAAAA,GAEC,GAA4D,SAAxDV,KAAKD,QAAQY,aAAa,0BAAsC,CACnE,MAAMC,EAASC,SAASC,cACvBzB,EAAY0B,UAAUrB,yBAEjBsB,EAAeH,SAASC,cAC7B,oCAIGE,EACHA,EAAaC,WAAWC,aACvBlB,KAAKD,QACLiB,EAAaG,aAGdP,EAAOQ,QAAQpB,KAAKD,SAErBC,KAAKD,QAAQsB,UAAUC,OAAO,SAC/B,CACD,CAKAf,QAAAA,GACCP,KAAKuB,WAAavB,KAAKD,QAAQe,cAC9BzB,EAAY0B,UAAUvB,WAGnBqB,SAASC,cAAczB,EAAY0B,UAAUtB,UAChDO,KAAKwB,OAASX,SAASC,cAAczB,EAAY0B,UAAUtB,SAG5DO,KAAKyB,WAAapC,EAAYqC,OAAO7B,YAAcG,KAAKC,GACxDD,KAAK2B,aAAcC,EAAAA,EAAAA,IAAU5B,KAAKyB,WACnC,CAKAjB,YAAAA,GACCR,KAAKuB,WAAWM,iBAAiB,QAAS7B,KAAK8B,eAEvB,MAApB9B,KAAK2B,aAAuB3B,KAAKwB,SAEpCxB,KAAKK,cAAc0B,YAAY/B,KAAKgC,qBACpChC,KAAKM,oBAAoB2B,GACxB9B,EAAAA,EAAS+B,OAAOC,eAChBnC,KAAKgC,qBAGR,CAKAI,YAAAA,GACCpC,KAAKuB,WAAWc,oBAAoB,QAASrC,KAAK8B,eAE1B,MAApB9B,KAAK2B,aAAuB3B,KAAKwB,QACpCxB,KAAKK,cAAciC,eAAetC,KAAKgC,oBAEzC,CAKAO,OAAAA,GACCvC,KAAKoC,cACN,CAKAJ,oBAAsBA,KACrBhC,KAAKM,oBAAoBkC,KAAK,cAAexC,KAAKD,QAAQ,EAQ3D+B,cAAiBW,IAChBzC,KAAK0C,mBAAmB,EASzBA,iBAAAA,GACC1C,KAAKD,QAAQsB,UAAUC,OAAOjC,EAAYsD,QAAQ/C,QAE1B,MAApBI,KAAK2B,cACRiB,EAAAA,EAAAA,IAAU5C,KAAKyB,WAAY,KAGvBzB,KAAKD,QAAQsB,UAAUwB,SAASxD,EAAYsD,QAAQ/C,UACpDI,KAAKwB,QACRxB,KAAKgC,sBAENhC,KAAK8C,cAAc9C,KAAKD,QAAS,UAEnC,CASAU,WAAAA,GACKT,KAAKD,UACgB,MAApBC,KAAK2B,aACR3B,KAAKD,QAAQsB,UAAU0B,IAAI1D,EAAYsD,QAAQ/C,QAC/CI,KAAKgD,eAAehD,KAAKD,QAAS,UAE9BC,KAAKwB,QACRxB,KAAKgC,uBAGNhC,KAAK8C,cAAc9C,KAAKD,QAAS,UAGpC,CASAiD,cAAAA,CAAeC,EAAOC,GACP,WAAVA,IACHD,EAAME,aAAa,gBAAiB,QACpCF,EAAME,aAAa,cAAe,SAEpC,CAUAL,aAAAA,CAAcG,EAAOC,GACN,WAAVA,IACHD,EAAME,aAAa,gBAAiB,SACpCF,EAAME,aAAa,cAAe,QAEpC,E","sources":["webpack://@hero-digital/masonite/./src/components/modules/AlertBanner/AlertBanner.js"],"sourcesContent":["import { setCookie, getCookie } from '../../../js/utilities/utilities'\nimport Services from '../../../js/services'\n\n// Alert Banner Module:\n// displays important information above the global header\nexport default class AlertBanner {\n\tstatic SELECTORS = {\n\t\tCOMPONENT: '[data-cmp-is=\"alert-banner\"]',\n\t\tBTN_CLOSE: '[data-cmp-alert-banner=\"button-close-alert\"]',\n\t\tHEADER: '[data-cmp-is=\"header\"]',\n\t\tHEADER_STICKY_CONTAINER: '.module-header__sticky',\n\t\tPAGE_ALERT_BANNER: '[data-page-alert-banner=\"true\"]'\n\t}\n\n\tstatic CLASSES = {\n\t\tACTIVE: 'mod-alert-banner--active'\n\t}\n\n\tstatic VALUES = {\n\t\tCOOKIE_NAME: 'msnt_alertBanner'\n\t}\n\n\tconstructor(element) {\n\t\tthis.element = element // ref to component element\n\t\tthis.id = element?.id || '' // ref to component id\n\t\tthis.services = Services.getInstance()\n\n\t\tthis.ResizeService = this.services.ResizeService\n\t\tthis.EventEmitterService = this.services.EventEmitterService\n\n\t\tthis.cacheDom()\n\t\tthis.attachEvents()\n\t\tthis.cookieState()\n\t\tthis.moveAlert()\n\t}\n\n\t/**\n\t * Move Alert in the dom to be in header\n\t */\n\n\tmoveAlert() {\n\t\t// if page specific alert exists move it to be with the other alert in the header.\n\t\tif (this.element.getAttribute('data-page-alert-banner') === 'true') {\n\t\t\tconst parent = document.querySelector(\n\t\t\t\tAlertBanner.SELECTORS.HEADER_STICKY_CONTAINER\n\t\t\t)\n\t\t\tconst globalBanner = document.querySelector(\n\t\t\t\t'[data-page-alert-banner=\"false\"]'\n\t\t\t)\n\n\t\t\t// if the global alert is also showing\n\t\t\tif (globalBanner) {\n\t\t\t\tglobalBanner.parentNode.insertBefore(\n\t\t\t\t\tthis.element,\n\t\t\t\t\tglobalBanner.nextSibling\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\tparent.prepend(this.element)\n\t\t\t}\n\t\t\tthis.element.classList.remove('hidden')\n\t\t}\n\t}\n\n\t/**\n\t * Cache the dom refs needed for the component\n\t */\n\tcacheDom() {\n\t\tthis.alertClose = this.element.querySelector(\n\t\t\tAlertBanner.SELECTORS.BTN_CLOSE\n\t\t)\n\n\t\tif (document.querySelector(AlertBanner.SELECTORS.HEADER)) {\n\t\t\tthis.header = document.querySelector(AlertBanner.SELECTORS.HEADER)\n\t\t}\n\n\t\tthis.cookieName = AlertBanner.VALUES.COOKIE_NAME + this.id\n\t\tthis.alertCookie = getCookie(this.cookieName)\n\t}\n\n\t/**\n\t * Attach component event listeners\n\t */\n\tattachEvents() {\n\t\tthis.alertClose.addEventListener('click', this.toggleHandler)\n\n\t\tif (this.alertCookie == null && this.header) {\n\t\t\t// set up listener for header height\n\t\t\tthis.ResizeService.addCallback(this.dispatchAlertUpdate)\n\t\t\tthis.EventEmitterService.on(\n\t\t\t\tServices.EVENTS.MODULES_LOADED,\n\t\t\t\tthis.dispatchAlertUpdate\n\t\t\t)\n\t\t}\n\t}\n\n\t/**\n\t * Detach component event listeners\n\t */\n\tdetachEvents() {\n\t\tthis.alertClose.removeEventListener('click', this.toggleHandler)\n\n\t\tif (this.alertCookie == null && this.header) {\n\t\t\tthis.ResizeService.removeCallback(this.dispatchAlertUpdate)\n\t\t}\n\t}\n\n\t/**\n\t * Destroy the component and clean up event listeners\n\t */\n\tdestroy() {\n\t\tthis.detachEvents()\n\t}\n\n\t/**\n\t * Dispatches an event that the banner has been updated\n\t */\n\tdispatchAlertUpdate = () => {\n\t\tthis.EventEmitterService.emit('alert event', this.element)\n\t}\n\n\t/**\n\t * Handler for 'click' and 'keydown' events.\n\t *\n\t * @param {Event} event A Javascript event.\n\t */\n\ttoggleHandler = (event) => {\n\t\tthis.toggleAlertBanner()\n\t}\n\n\t/**\n\t * toggleAlertBanner method: remove Alert Banner's existing active class\n\t * if there's no cookie set, set the cookie\n\t * and set aria attributes to hidden\n\t *\n\t */\n\ttoggleAlertBanner() {\n\t\tthis.element.classList.remove(AlertBanner.CLASSES.ACTIVE)\n\n\t\tif (this.alertCookie == null) {\n\t\t\tsetCookie(this.cookieName, 'a')\n\t\t}\n\n\t\tif (!this.element.classList.contains(AlertBanner.CLASSES.ACTIVE)) {\n\t\t\tif (this.header) {\n\t\t\t\tthis.dispatchAlertUpdate()\n\t\t\t}\n\t\t\tthis.setAriaHidden(this.element, 'banner')\n\t\t}\n\t}\n\n\t/**\n\t * cookieState method: if the Alert Banner exists,\n\t * if there's no cookie set: set the cookie, if there's no cookie set,\n\t * add the active class to the alert banner, set aria visibility\n\t * else: set aria attributes to hidden\n\t *\n\t */\n\tcookieState() {\n\t\tif (this.element) {\n\t\t\tif (this.alertCookie == null) {\n\t\t\t\tthis.element.classList.add(AlertBanner.CLASSES.ACTIVE)\n\t\t\t\tthis.setAriaVisible(this.element, 'banner')\n\n\t\t\t\tif (this.header) {\n\t\t\t\t\tthis.dispatchAlertUpdate()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setAriaHidden(this.element, 'banner')\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * setAriaVisible method: set aria visible\n\t * on close btn and alert banner\n\t *\n\t * @param {HTMLElement} $this target The DOM object that the event is triggered on.\n\t * @param {String} $type A string key to identify if it's the 'banner' else 'btn'.\n\t */\n\tsetAriaVisible($this, $type) {\n\t\tif ($type === 'banner') {\n\t\t\t$this.setAttribute('aria-expanded', 'true')\n\t\t\t$this.setAttribute('aria-hidden', 'false')\n\t\t}\n\t}\n\n\t/**\n\t * setAriaHidden method: set aria hidden\n\t * on close btn and alert banner\n\t *\n\t * @param {HTMLElement} $this target The DOM object that the event is triggered on.\n\t * @param {String} $type A string key to identify if it's the 'banner' else 'btn'.\n\t *\n\t */\n\tsetAriaHidden($this, $type) {\n\t\tif ($type === 'banner') {\n\t\t\t$this.setAttribute('aria-expanded', 'false')\n\t\t\t$this.setAttribute('aria-hidden', 'true')\n\t\t}\n\t}\n}\n"],"names":["AlertBanner","static","COMPONENT","BTN_CLOSE","HEADER","HEADER_STICKY_CONTAINER","PAGE_ALERT_BANNER","ACTIVE","COOKIE_NAME","constructor","element","this","id","services","Services","getInstance","ResizeService","EventEmitterService","cacheDom","attachEvents","cookieState","moveAlert","getAttribute","parent","document","querySelector","SELECTORS","globalBanner","parentNode","insertBefore","nextSibling","prepend","classList","remove","alertClose","header","cookieName","VALUES","alertCookie","getCookie","addEventListener","toggleHandler","addCallback","dispatchAlertUpdate","on","EVENTS","MODULES_LOADED","detachEvents","removeEventListener","removeCallback","destroy","emit","event","toggleAlertBanner","CLASSES","setCookie","contains","setAriaHidden","add","setAriaVisible","$this","$type","setAttribute"],"sourceRoot":""}