{"version":3,"file":"news.min.mjs","mappings":"sIAEAA,OAAOC,SAASC,OAAM,KACpB,MAAMC,EAAOF,SAASG,cAAc,gCAClCC,EAAmBF,EAAKC,cAAc,uBACtC,QAAEE,GAAYH,EAAKI,QAEnBC,EAAcC,IACZN,EAAKO,iBAAiB,iBAAiBC,SAASC,IAC9CA,EAAMC,UAAYJ,CAAM,GACxB,EAGJK,EAAiB,CAACC,EAASC,KACzB,MAAMC,EAAWd,EAAKC,cAAc,kBAAkBY,EAAU,UAAY,oBAE1EE,EAAMjB,SAASkB,cAAc,OAC/BD,EAAIE,UAAYH,EAASG,UACzBF,EAAId,cAAc,UAAUgB,UAAYL,EAExCV,EAAiBe,UAAY,GAC7Bf,EAAiBgB,YAAYH,EAAI,EAGnCI,EAAc,KACZd,GAAW,GACXM,EAAe,iFAAiF,EAG/FR,GACHE,GAAW,GAGbL,EAAKoB,iBAAiB,UAAWC,IAC/BA,EAAEC,iBAEF,MAAMC,EAAW,IAAIC,SAASxB,GAE9BK,GAAW,IAEX,QAAKF,GAASsB,MAAMC,IAClBA,EAAUC,QAAQ,gBAAgBF,MAAMG,IACtC,MAAMC,EAAO,CACXC,mBAAoBF,GAEtBL,EAASf,SAAQ,CAACuB,EAAOC,KACvBH,EAAKG,GAAOD,CAAK,IAGnBE,MAAMjC,EAAKkC,aAAa,UAAW,CACjCC,OAAQnC,EAAKkC,aAAa,UAC1BE,QAAS,CACP,eAAgB,oBAElBC,KAAMC,KAAKC,UAAUV,KAEpBJ,MAAMe,IACeA,EAASJ,QAAQK,IAAI,gBACxBC,WAAW,oBAK1BF,EAASG,OAAOlB,MAAMkB,IAChBH,EAASI,IACX5C,EAAK6C,QACLxC,GAAW,GACXM,EAAe,sJAEyC,IAExDA,EAAegC,EAAKG,OAAOC,OAAOC,KAAKL,EAAKG,QAAQ,IAAI,IAAI,EAC9D,IACCG,OAAM,IAAM9B,MAdfqB,EAASU,OAAOzB,MAAMyB,IACpBvC,EAAeuC,GAAM,EAAM,GAc/B,IAEDD,OAAM,IAAM9B,KAAc,GAC7B,GACF,GACF,G","sources":["webpack://@felicity/felicity-website/./wwwsrc/scripts/components/NewsletterSubscription.mjs"],"sourcesContent":["import { load } from 'recaptcha-v3';\n\nwindow.document.ready(() => {\n const form = document.querySelector('form.newsletter-subscription'),\n messageContainer = form.querySelector('.message-container'),\n { siteKey } = form.dataset,\n\n enableForm = (enable) => {\n form.querySelectorAll('input, button').forEach((input) => {\n input.disabled = !enable; // eslint-disable-line no-param-reassign\n });\n },\n\n displayMessage = (message, success) => {\n const template = form.querySelector(`template[name=\"${success ? 'success' : 'error'}Message\"]`),\n\n div = document.createElement('div');\n div.innerHTML = template.innerHTML;\n div.querySelector('.alert').innerHTML = message;\n\n messageContainer.innerHTML = '';\n messageContainer.appendChild(div);\n },\n\n handleError = () => {\n enableForm(true);\n displayMessage('An error occured during registering your subscription. Please try again later.');\n };\n\n if (!siteKey) {\n enableForm(false);\n }\n\n form.addEventListener('submit', (e) => {\n e.preventDefault();\n\n const formData = new FormData(form);\n\n enableForm(false);\n\n load(siteKey).then((recaptcha) => {\n recaptcha.execute('subscription').then((token) => {\n const data = {\n gRecaptchaResponse: token\n };\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n fetch(form.getAttribute('action'), {\n method: form.getAttribute('method'),\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(data)\n })\n .then((response) => {\n const contentType = response.headers.get('Content-Type');\n if (!contentType.startsWith('application/json')) {\n response.text().then((text) => {\n displayMessage(text, false);\n });\n } else {\n response.json().then((json) => {\n if (response.ok) {\n form.reset();\n enableForm(true);\n displayMessage(`\n Thank you for your subscription.
\n A confirmation message has been sent to your account.`, true);\n } else {\n displayMessage(json.errors[Object.keys(json.errors)[0]][0], false);\n }\n }).catch(() => handleError());\n }\n })\n .catch(() => handleError());\n });\n });\n });\n});\n"],"names":["window","document","ready","form","querySelector","messageContainer","siteKey","dataset","enableForm","enable","querySelectorAll","forEach","input","disabled","displayMessage","message","success","template","div","createElement","innerHTML","appendChild","handleError","addEventListener","e","preventDefault","formData","FormData","then","recaptcha","execute","token","data","gRecaptchaResponse","value","key","fetch","getAttribute","method","headers","body","JSON","stringify","response","get","startsWith","json","ok","reset","errors","Object","keys","catch","text"],"sourceRoot":""}