{"version":3,"sources":["webpack:///./src/js/modules/ms-disclaimer-modal.ts"],"names":["Module","Modal","this","document","el","dataset","window","handleClick","bind","encodedUrl","encodeURIComponent","requestUrl","request","response","JSON","e","modal","classList","contains","event","target","href","Component"],"mappings":"4/CAGMA,E,yTACJ,cAA6B,a,4FAAA,SAC3B,iBACAC,WAAa,EAAbA,OAF2B,E,0CAK7B,WAAgB,gBACdC,KAAA,OACAA,KAAA,MAAaC,uBAAuBD,KAAKE,GAAGC,QAA5C,iBACAH,KAAA,SAAgBA,KAAKE,GAAGC,QAAxB,mBACAH,KAAA,gBAAaA,KAAb,0BAAa,qBAAb,cACAA,KAAA,uBAAoBA,KAApB,0BAAoB,gBAApB,8BACAA,KAAA,oBAAiBA,KAAjB,0BAAiB,gBAAjB,gCACAA,KAAA,qBAAkBA,KAAlB,0BAAkB,gBAAlB,qBACAA,KAAA,0BAAuBA,KAAvB,0BAAuB,gBAAvB,8BAGAA,KAAA,sBAAmBA,KAAnB,0BAAmB,gBAAnB,sB,0BAGF,WACEI,gCAAiCJ,KAAKK,YAAYC,KAAlDF,S,4BAGF,gBACE,IAAMG,EAAaC,mBAAnB,GACMC,EAAa,GAAH,OAAMT,KAAN,yBAAhB,GAEMU,EAAU,IAAhB,eACA,IAGE,GAFAA,mBACAA,aACA,MAAIA,SAAwB,CAC1B,IAC4B,MADtBC,EAAWC,WAAWF,EAA5B,UACIC,WAAJ,cACEX,KAAA,kCACAA,KAAA,qBACA,EACEA,KAAA,uCAA4C,SAAAa,GAC1CT,sDAGFJ,KAAA,oBACAA,KAAA,uBAEFA,KAAA,8BAA2BW,EAA3B,iCAA2BA,EAA3B,UACAX,KAAA,+BAA4BW,EAA5B,iCAA4BA,EAA5B,WACAX,KAAA,oCACEW,EADF,iCACEA,EADF,iBAGAP,qBAGJ,MAAOS,GACPT,uB,yBAIJ,YACE,GAAIJ,KAAKc,QAAUd,KAAKc,MAAMC,UAAUC,SAAxC,cAAgE,CAC9D,MAAId,EAAKe,EAAT,OAEEC,EAFF,QAIA,MAAIhB,YACFA,EAAKA,UAALA,MAGF,IACMA,eAAJ,UACEiB,EAAOjB,eAAPiB,SAGFD,EAAShB,0BAATgB,SACID,WAAiBA,EAArB,WACEC,YAEED,EAAJ,WACEC,aAIJ,IACED,mBACAA,oBAEAjB,KAAA,mBAAkCiB,EAAlC,gBAGFjB,KAAKc,OACLd,KAAKc,MAAMC,UAAUC,SADrB,eAEAC,WAAiBjB,KAHZ,cAKLA,KAAA,yB,iFA7FeoB,aAkGrB","file":"93.bundle.js?v=eb488df7113dfaccc1d0","sourcesContent":["import { Modal } from 'carbon-components';\nimport { Component } from '@verndale/core';\n\nclass Module extends Component {\n constructor(el: HTMLElement) {\n super(el);\n Modal.create(this.modal);\n }\n\n setupDefaults() {\n this.dom = {};\n this.modal = document.querySelector(this.el.dataset.disclaimerModal);\n this.endpoint = this.el.dataset.disclaimerEndpoint;\n this.state = this.modal?.classList.contains('is-visible');\n this.continueLink = this.modal?.querySelector('[data-modal-primary-focus]');\n this.modalText = this.modal?.querySelector('.ms-disclaimer-modal__copy p');\n this.modalTitle = this.modal?.querySelector('#modal-id-heading');\n this.modalButtonText = this.modal?.querySelector(\n '[data-modal-primary-focus]'\n );\n this.closeButton = this.modal?.querySelector('.bx--modal-close');\n }\n\n addListeners() {\n window.addEventListener('click', this.handleClick.bind(this));\n }\n\n checkUrlStatus(url: string, target: string, shiftKey: boolean) {\n const encodedUrl = encodeURIComponent(url);\n const requestUrl = `${this.endpoint}?url=${encodedUrl}`;\n\n const request = new XMLHttpRequest();\n try {\n request.open('GET', requestUrl, false);\n request.send(null);\n if (request.status === 200) {\n const response = JSON.parse(request.response);\n if (response?.displayModal) {\n this.modal.classList.add('is-visible');\n this.continueLink.focus();\n if (shiftKey) {\n this.continueLink.addEventListener('click', e => {\n window.open(url, '_blank', 'location=yes,status=yes');\n });\n } else {\n this.continueLink.href = url;\n this.continueLink.target = target;\n }\n this.modalText.innerHTML = response.modalContent?.modalText;\n this.modalTitle.innerHTML = response.modalContent?.modalTitle;\n this.modalButtonText.innerHTML =\n response.modalContent?.modalButtonText;\n } else {\n window.open(url, target, '');\n }\n }\n } catch (e) {\n window.open(url, target, '');\n }\n }\n\n handleClick(event: MouseEvent) {\n if (this.modal && !this.modal.classList.contains('is-visible')) {\n let el = event.target as HTMLElement,\n href,\n target = '_self';\n\n if (el.tagName !== 'a') {\n el = el.closest('a');\n }\n\n if (el) {\n if (el.hasAttribute('href')) {\n href = el.getAttribute('href');\n }\n\n target = el.getAttribute('target') || '_self';\n if (event.metaKey || event.ctrlKey) {\n target = '_blank';\n }\n if (event.shiftKey) {\n target = '_blank';\n }\n }\n\n if (href) {\n event.preventDefault();\n event.stopPropagation();\n\n this.checkUrlStatus(href, target, event.shiftKey);\n }\n } else if (\n this.modal &&\n this.modal.classList.contains('is-visible') &&\n event.target === this.continueLink\n ) {\n this.closeButton.click();\n }\n }\n}\n\nexport default Module;\n"],"sourceRoot":""}