{"version":3,"file":"327.min.js?t=1747897310300","mappings":"2KAKe,MAAMA,EACpBC,iBAAmB,CAClBC,UAAW,wBACXC,WAAY,uBACZC,KAAM,QAGPC,WAAAA,CAAYC,GACXC,KAAKD,QAAUA,EACfC,KAAKC,iBAAmBC,EAAAA,EAAUC,cAElCH,KAAKI,WACLJ,KAAKK,YAEDL,KAAKM,OACRN,KAAKO,OACKP,KAAKQ,YACfR,KAAKS,iBAELC,QAAQC,KAAK,8BAEf,CAEAJ,IAAAA,GACCP,KAAKI,WACLJ,KAAKY,cACN,CAKAH,cAAAA,GACC,MAAMI,EAAW,IAAIC,kBAAkBC,IACtCf,KAAKK,YAEJU,EAAcC,MACZC,GAA+B,cAAlBA,EAASC,MAAwBlB,KAAKM,WAGrDN,KAAKO,OACLM,EAASM,aACV,IAEDN,EAASO,QAAQpB,KAAKQ,YAAa,CAAEa,WAAW,GACjD,CAEAhB,UAAYA,KACX,MAAMiB,EAAOtB,KAAKD,QAAQwB,cAAc9B,EAAa+B,UAAU3B,MAE/DG,KAAKM,OAASgB,GAAQ,IAAI,EAG3BlB,QAAAA,GACCJ,KAAKyB,aAAeC,MAAMC,KACzB3B,KAAKD,QAAQ6B,iBAAiBnC,EAAa+B,UAAU7B,YAGtDK,KAAKQ,YAAcR,KAAKD,QAAQwB,cAC/B9B,EAAa+B,UAAU5B,WAEzB,CAKAgB,YAAAA,GACCZ,KAAKyB,aAAaI,SAASC,IAC1BA,EAAGC,iBAAiB,SAAU/B,KAAKgC,qBAAqB,IAGzDhC,KAAKM,OAAOyB,iBAAiB,SAAU/B,KAAKiC,aAE5CjC,KAAKM,OAAOyB,iBAAiB,SAAU/B,KAAKkC,aAC7C,CAKAC,YAAAA,GACCnC,KAAKyB,aAAaI,SAASC,IAC1BA,EAAGM,oBAAoB,SAAUpC,KAAKgC,qBAAqB,IAG5DhC,KAAKM,OAAO8B,oBAAoB,SAAUpC,KAAKiC,aAE/CjC,KAAKM,OAAO8B,oBAAoB,SAAUpC,KAAKkC,aAChD,CAMAF,qBAAwBK,IACvB,IAAIC,EAAiB,KAEC,eAAlBD,EAAEE,OAAOrB,MAAyBmB,EAAEE,OAAOC,UAC9CF,EAAiBD,EAAEE,OAAOC,QAAQH,EAAEE,OAAOE,gBAG5CzC,KAAKC,iBAAiByC,iBAAiB,sBAAuB,CAC7DC,QACC3C,KAAKM,QAAQsC,IAAM5C,KAAKQ,aAAaqC,SAASC,aAAe,GAC9DC,SAAUV,EAAEE,OAAOK,GACnBI,WAAYX,EAAEE,QAAQM,SAASI,eAAiB,GAChDC,YAAaZ,EAAiBA,EAAea,UAAYd,EAAEE,OAAOa,OACjE,EAMHnB,YAAcA,KACbjC,KAAKC,iBAAiByC,iBAAiB,aAAc,CACpDC,QACC3C,KAAKM,QAAQsC,IAAM5C,KAAKQ,aAAaqC,SAASC,aAAe,GAC9DO,iBAAkBC,OAAOC,SAASC,OAMnCxD,KAAKM,OAAO8B,oBAAoB,SAAUpC,KAAKiC,YAAY,EAM5DC,aAAeA,KACdlC,KAAKC,iBAAiByC,iBAAiB,cAAe,CACrDC,QACC3C,KAAKM,QAAQsC,IAAM5C,KAAKQ,aAAaqC,SAASC,aAAe,GAC9DO,iBAAkBC,OAAOC,SAASC,MACjC,EAMHC,OAAAA,GACCzD,KAAKmC,cACN,E","sources":["webpack://@hero-digital/masonite/./src/components/modules/DynamicsForm/DynamicsForm.js"],"sourcesContent":["import Analytics from 'services/Analytics/Analytics'\n\n/**\n * Component to handle the Microsoft Dynamics Forms\n */\nexport default class DynamicsForm {\n\tstatic SELECTORS = {\n\t\tANALYTICS: '[data-analytics-form]',\n\t\tFORM_BLOCK: '[data-form-block-id]',\n\t\tFORM: 'form'\n\t}\n\n\tconstructor(element) {\n\t\tthis.element = element\n\t\tthis.analyticsService = Analytics.getInstance()\n\n\t\tthis.cacheDom()\n\t\tthis.cacheForm()\n\n\t\tif (this.formEl) {\n\t\t\tthis.init()\n\t\t} else if (this.formBlockEl) {\n\t\t\tthis.createObserver()\n\t\t} else {\n\t\t\tconsole.warn('DynamicsForm: No form found')\n\t\t}\n\t}\n\n\tinit() {\n\t\tthis.cacheDom()\n\t\tthis.attachEvents()\n\t}\n\n\t/**\n\t * Creates a MutationObserver to watch for when the form is added to the DOM\n\t */\n\tcreateObserver() {\n\t\tconst observer = new MutationObserver((mutationsList) => {\n\t\t\tthis.cacheForm()\n\t\t\tif (\n\t\t\t\tmutationsList.some(\n\t\t\t\t\t(mutation) => mutation.type === 'childList' && this.formEl\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthis.init()\n\t\t\t\tobserver.disconnect()\n\t\t\t}\n\t\t})\n\t\tobserver.observe(this.formBlockEl, { childList: true })\n\t}\n\n\tcacheForm = () => {\n\t\tconst form = this.element.querySelector(DynamicsForm.SELECTORS.FORM)\n\n\t\tthis.formEl = form || null\n\t}\n\n\tcacheDom() {\n\t\tthis.analyticsEls = Array.from(\n\t\t\tthis.element.querySelectorAll(DynamicsForm.SELECTORS.ANALYTICS)\n\t\t)\n\n\t\tthis.formBlockEl = this.element.querySelector(\n\t\t\tDynamicsForm.SELECTORS.FORM_BLOCK\n\t\t)\n\t}\n\n\t/**\n\t * Add event listeners\n\t */\n\tattachEvents() {\n\t\tthis.analyticsEls.forEach((el) => {\n\t\t\tel.addEventListener('change', this.onTrackedInputChange)\n\t\t})\n\n\t\tthis.formEl.addEventListener('change', this.onFormStart)\n\n\t\tthis.formEl.addEventListener('submit', this.onFormSubmit)\n\t}\n\n\t/**\n\t * Remove event listeners\n\t */\n\tdetachEvents() {\n\t\tthis.analyticsEls.forEach((el) => {\n\t\t\tel.removeEventListener('change', this.onTrackedInputChange)\n\t\t})\n\n\t\tthis.formEl.removeEventListener('change', this.onFormStart)\n\n\t\tthis.formEl.removeEventListener('submit', this.onFormSubmit)\n\t}\n\n\t/**\n\t * Callback for when a tracked input changes to trigger the analytics event with the input data\n\t * @param {*} e\n\t */\n\tonTrackedInputChange = (e) => {\n\t\tlet selectedOption = null\n\n\t\tif (e.target.type === 'select-one' && e.target.options) {\n\t\t\tselectedOption = e.target.options[e.target.selectedIndex]\n\t\t}\n\n\t\tthis.analyticsService.trackInteraction('dynamics_form_input', {\n\t\t\tform_id:\n\t\t\t\tthis.formEl?.id || this.formBlockEl?.dataset?.formBlockId || '',\n\t\t\tinput_id: e.target.id,\n\t\t\tinput_name: e.target?.dataset?.analyticsForm || '',\n\t\t\tinput_value: selectedOption ? selectedOption.innerText : e.target.value\n\t\t})\n\t}\n\n\t/**\n\t * Callback for when the form is started to trigger the analytics event with the form data\n\t */\n\tonFormStart = () => {\n\t\tthis.analyticsService.trackInteraction('form_start', {\n\t\t\tform_id:\n\t\t\t\tthis.formEl?.id || this.formBlockEl?.dataset?.formBlockId || '',\n\t\t\tform_destination: window.location.href\n\t\t})\n\n\t\t/**\n\t\t * Remove the event listener after the form has been started\n\t\t */\n\t\tthis.formEl.removeEventListener('change', this.onFormStart)\n\t}\n\n\t/**\n\t * Callback for when the form is submitted to trigger the analytics event with the form data\n\t */\n\tonFormSubmit = () => {\n\t\tthis.analyticsService.trackInteraction('form_submit', {\n\t\t\tform_id:\n\t\t\t\tthis.formEl?.id || this.formBlockEl?.dataset?.formBlockId || '',\n\t\t\tform_destination: window.location.href\n\t\t})\n\t}\n\n\t/**\n\t * Destroy the component\n\t */\n\tdestroy() {\n\t\tthis.detachEvents()\n\t}\n}\n"],"names":["DynamicsForm","static","ANALYTICS","FORM_BLOCK","FORM","constructor","element","this","analyticsService","Analytics","getInstance","cacheDom","cacheForm","formEl","init","formBlockEl","createObserver","console","warn","attachEvents","observer","MutationObserver","mutationsList","some","mutation","type","disconnect","observe","childList","form","querySelector","SELECTORS","analyticsEls","Array","from","querySelectorAll","forEach","el","addEventListener","onTrackedInputChange","onFormStart","onFormSubmit","detachEvents","removeEventListener","e","selectedOption","target","options","selectedIndex","trackInteraction","form_id","id","dataset","formBlockId","input_id","input_name","analyticsForm","input_value","innerText","value","form_destination","window","location","href","destroy"],"sourceRoot":""}