{"version":3,"file":"components-subscribe-form.4e30f46861096ac84ca1.js","mappings":"kKAIA,MAAMA,EAAmBA,CAACC,EAAQC,EAASC,EAASC,KAClDH,EAAOI,MAAMC,QAAU,QACvBL,EAAOM,UAAYL,EAEfC,EACFF,EAAOO,UAAUC,OAAO,sBAExBR,EAAOO,UAAUE,IAAI,sBAGnBN,GACFO,YAAW,KACTV,EAAOI,MAAMC,QAAU,MAAM,GAC5B,IACL,EAGIM,EAAgBC,IACpBA,EAAaC,UAAYD,EAAaC,SACtCD,EAAaL,UAAUO,OAAO,cAAc,GAG9CC,EAAAA,EAAAA,IAAG,SAAU,mBAAoBC,IAC/BA,EAAEC,iBAEF,MAAMC,EAAOF,EAAEG,OACTC,EAAQJ,EAAEG,OAAOE,cAAc,kBAC/BC,EAAeJ,EAAKG,cAAc,kBAClCT,EAAeM,EAAKG,cAAc,iBAIxC,GAFAV,EAAaC,GAETQ,EAAMG,SAASC,cAAgBJ,EAAMG,SAASE,aAGhD,YAFA1B,EAAiBuB,EAAc,8BAA8B,GAAO,GAKtE,MAAMI,EAAW,IAAIC,SAAST,GAE9BU,EAAAA,EACGC,IAAIX,EAAKY,QACTC,KAAKL,GACLM,OACAC,MAAMC,IACDA,EAAIhC,UACFgC,EAAIC,IACND,EAAIC,GAAGC,SAASC,IAAUC,EAAAA,EAAAA,IAAqBD,KAGjDnB,EAAKqB,SAGLC,EAAAA,EAAAA,GAAKC,SAASC,gBAAiB,kBAAmB,CAChDxB,KAAMA,EACNyB,KAAM,OACNd,IAAK,IAAIe,IAAI1B,EAAKY,QAClBe,gBAAiB,IAAIC,gBAAgBpB,GAAUqB,cAI/Cb,EAAIjC,SACNF,EAAiBuB,EAAcY,EAAIjC,QAASiC,EAAIhC,SAAS,EAC3D,IAED8C,OAAOhC,IACNiC,QAAQC,IAAIlC,GACZjB,EAAiBuB,EAAc,mDAAmD,GAAO,EAAK,IAE/F6B,SAAQ,KACPxC,EAAaC,EAAa,GAC1B,G,uECxENwC,EAAAA,EAAOC,QAAQ,CACbC,QAAS,CAAE,mBAAoB,oBAGjC,SAAeF,EAAAA,EAAAA,KAASG,MAAMC,EAAAA,E,8ECLiBf,SAASC,gBAGtD,mBAAmBe,KAAKC,UAAUC,WAAqC,aAAvBD,UAAUC,UAA2BD,UAAUE,eAH1F,MAKMC,EAAc,SAAC3C,GAAoB,IAAd4C,EAAIC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACpCG,EAASJ,EAETA,aAAgBnC,UAAa,IAC/BuC,EAAS,CAAC,EAEVJ,EAAK1B,SAAQ,CAAC+B,EAAOC,IAASF,EAAOE,GAAOD,KAG9C,MAAME,EAAQC,IAAAA,UAAaJ,EAAQ,CAAEK,OAAQA,CAACC,EAAGL,IAAUA,QAASF,IAC9DQ,EAAWJ,EAAS,IAAGA,IAAU,GAEvC,MAAQ,GAAEnD,EAAKY,SAAS2C,GAC1B,EAEanC,EAAwBD,IAC/BqC,OAAOC,WACTD,OAAOC,UAAUC,KAAKvC,EACxB,C","sources":["webpack://silverstripe-base/./themes/app/src/components/subscribe-form.js","webpack://silverstripe-base/./themes/app/src/scripts/common/ajax.js","webpack://silverstripe-base/./themes/app/src/scripts/common/util.js"],"sourcesContent":["import { on, fire } from 'delegated-events'\nimport ajax from '@common/ajax'\nimport { trackGoogleAnalytics } from '@common/util'\n\nconst showFormMessages = (holder, message, success, autoHide) => {\n holder.style.display = 'block'\n holder.innerHTML = message\n\n if (success) {\n holder.classList.remove('form-message-error')\n } else {\n holder.classList.add('form-message-error')\n }\n\n if (autoHide) {\n setTimeout(() => {\n holder.style.display = 'none'\n }, 5000)\n }\n}\n\nconst toggleSubmit = (submitButton) => {\n submitButton.disabled = !submitButton.disabled\n submitButton.classList.toggle('btn-loading')\n}\n\non('submit', '.subscribe-form', (e) => {\n e.preventDefault()\n\n const form = e.target\n const email = e.target.querySelector('[type=\"email\"]')\n const formMessages = form.querySelector('.form-messages')\n const submitButton = form.querySelector('[type=submit]')\n\n toggleSubmit(submitButton)\n\n if (email.validity.valueMissing || email.validity.typeMismatch) {\n showFormMessages(formMessages, 'Please enter a valid email', false, true)\n\n return\n }\n\n const formData = new FormData(form)\n\n ajax\n .url(form.action)\n .body(formData)\n .post()\n .json((res) => {\n if (res.success) {\n if (res.ga) {\n res.ga.forEach((event) => trackGoogleAnalytics(event))\n }\n\n form.reset()\n\n // Allow other scripts to hook into this submit\n fire(document.documentElement, 'ajaxform:submit', {\n form: form,\n type: 'post',\n url: new URL(form.action),\n queryParameters: new URLSearchParams(formData).toString(),\n })\n }\n\n if (res.message) {\n showFormMessages(formMessages, res.message, res.success, true)\n }\n })\n .catch((e) => {\n console.log(e)\n showFormMessages(formMessages, 'Sorry, there was a problem with your submission', false, true)\n })\n .finally(() => {\n toggleSubmit(submitButton)\n })\n})\n","import wretch from 'wretch'\nimport QueryStringAddon from 'wretch/addons/queryString'\n\nwretch.options({\n headers: { 'X-Requested-With': 'XMLHttpRequest' },\n})\n\nexport default wretch().addon(QueryStringAddon)\n","import qs from 'qs'\n\nexport const isTouchDevice = 'ontouchstart' in document.documentElement\n\nexport const isIos =\n /iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)\n\nexport const generateUrl = (form, data = {}) => {\n let params = data\n\n if (data instanceof FormData === true) {\n params = {}\n\n data.forEach((value, key) => (params[key] = value))\n }\n\n const query = qs.stringify(params, { filter: (_, value) => value || undefined })\n const queryStr = query ? `?${query}` : ''\n\n return `${form.action}${queryStr}`\n}\n\nexport const trackGoogleAnalytics = (event) => {\n if (window.dataLayer) {\n window.dataLayer.push(event)\n }\n}\n"],"names":["showFormMessages","holder","message","success","autoHide","style","display","innerHTML","classList","remove","add","setTimeout","toggleSubmit","submitButton","disabled","toggle","on","e","preventDefault","form","target","email","querySelector","formMessages","validity","valueMissing","typeMismatch","formData","FormData","ajax","url","action","body","post","json","res","ga","forEach","event","trackGoogleAnalytics","reset","fire","document","documentElement","type","URL","queryParameters","URLSearchParams","toString","catch","console","log","finally","wretch","options","headers","addon","QueryStringAddon","test","navigator","platform","maxTouchPoints","generateUrl","data","arguments","length","undefined","params","value","key","query","qs","filter","_","queryStr","window","dataLayer","push"],"sourceRoot":""}