{"version":3,"file":"327.min.js?t=1743173738202","mappings":"2KAKe,MAAMA,EACnBC,iBAAmB,CACjBC,UAAW,wBACXC,WAAY,uBACZC,KAAM,QAGRC,WAAAA,CAAYC,GACVC,KAAKD,QAAUA,EACfC,KAAKC,iBAAmBC,EAAAA,EAAUC,cAElCH,KAAKI,WACLJ,KAAKK,YAEDL,KAAKM,OACPN,KAAKO,OACIP,KAAKQ,YACdR,KAAKS,iBAELC,QAAQC,KAAK,8BAEjB,CAEAJ,IAAAA,GACEP,KAAKI,WACLJ,KAAKY,cACP,CAKAH,cAAAA,GACE,MAAMI,EAAW,IAAIC,kBAAkBC,IACrCf,KAAKK,YAEHU,EAAcC,MACXC,GAA+B,cAAlBA,EAASC,MAAwBlB,KAAKM,WAGtDN,KAAKO,OACLM,EAASM,aACX,IAEFN,EAASO,QAAQpB,KAAKQ,YAAa,CAAEa,WAAW,GAClD,CAEAhB,UAAYA,KACV,MAAMiB,EAAOtB,KAAKD,QAAQwB,cAAc9B,EAAa+B,UAAU3B,MAE/DG,KAAKM,OAASgB,GAAQ,IAAI,EAG5BlB,QAAAA,GACEJ,KAAKyB,aAAeC,MAAMC,KACxB3B,KAAKD,QAAQ6B,iBAAiBnC,EAAa+B,UAAU7B,YAGvDK,KAAKQ,YAAcR,KAAKD,QAAQwB,cAC9B9B,EAAa+B,UAAU5B,WAE3B,CAKAgB,YAAAA,GACEZ,KAAKyB,aAAaI,SAASC,IACzBA,EAAGC,iBAAiB,SAAU/B,KAAKgC,qBAAqB,IAG1DhC,KAAKM,OAAOyB,iBAAiB,SAAU/B,KAAKiC,aAE5CjC,KAAKM,OAAOyB,iBAAiB,SAAU/B,KAAKkC,aAC9C,CAKAC,YAAAA,GACEnC,KAAKyB,aAAaI,SAASC,IACzBA,EAAGM,oBAAoB,SAAUpC,KAAKgC,qBAAqB,IAG7DhC,KAAKM,OAAO8B,oBAAoB,SAAUpC,KAAKiC,aAE/CjC,KAAKM,OAAO8B,oBAAoB,SAAUpC,KAAKkC,aACjD,CAMAF,qBAAwBK,IACtB,IAAIC,EAAiB,KAEC,eAAlBD,EAAEE,OAAOrB,MAAyBmB,EAAEE,OAAOC,UAC7CF,EAAiBD,EAAEE,OAAOC,QAAQH,EAAEE,OAAOE,gBAG7CzC,KAAKC,iBAAiByC,iBAAiB,sBAAuB,CAC5DC,QAAS3C,KAAKM,QAAQsC,IAAM5C,KAAKQ,aAAaqC,SAASC,aAAe,GACtEC,SAAUV,EAAEE,OAAOK,GACnBI,WAAYX,EAAEE,QAAQM,SAASI,eAAiB,GAChDC,YAAaZ,EAAiBA,EAAea,UAAYd,EAAEE,OAAOa,OAClE,EAMJnB,YAAcA,KACZjC,KAAKC,iBAAiByC,iBAAiB,aAAc,CACnDC,QAAS3C,KAAKM,QAAQsC,IAAM5C,KAAKQ,aAAaqC,SAASC,aAAe,GACtEO,iBAAkBC,OAAOC,SAASC,OAMpCxD,KAAKM,OAAO8B,oBAAoB,SAAUpC,KAAKiC,YAAY,EAM7DC,aAAeA,KACblC,KAAKC,iBAAiByC,iBAAiB,cAAe,CACpDC,QAAS3C,KAAKM,QAAQsC,IAAM5C,KAAKQ,aAAaqC,SAASC,aAAe,GACtEO,iBAAkBC,OAAOC,SAASC,MAClC,EAMJC,OAAAA,GACEzD,KAAKmC,cACP,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 static SELECTORS = {\n ANALYTICS: '[data-analytics-form]',\n FORM_BLOCK: '[data-form-block-id]',\n FORM: 'form'\n }\n\n constructor(element) {\n this.element = element\n this.analyticsService = Analytics.getInstance()\n\n this.cacheDom()\n this.cacheForm()\n\n if (this.formEl) {\n this.init()\n } else if (this.formBlockEl) {\n this.createObserver()\n } else {\n console.warn('DynamicsForm: No form found')\n }\n }\n\n init() {\n this.cacheDom()\n this.attachEvents()\n }\n\n /**\n * Creates a MutationObserver to watch for when the form is added to the DOM\n */\n createObserver() {\n const observer = new MutationObserver((mutationsList) => {\n this.cacheForm()\n if (\n mutationsList.some(\n (mutation) => mutation.type === 'childList' && this.formEl\n )\n ) {\n this.init()\n observer.disconnect()\n }\n })\n observer.observe(this.formBlockEl, { childList: true })\n }\n\n cacheForm = () => {\n const form = this.element.querySelector(DynamicsForm.SELECTORS.FORM)\n\n this.formEl = form || null\n }\n\n cacheDom() {\n this.analyticsEls = Array.from(\n this.element.querySelectorAll(DynamicsForm.SELECTORS.ANALYTICS)\n )\n\n this.formBlockEl = this.element.querySelector(\n DynamicsForm.SELECTORS.FORM_BLOCK\n )\n }\n\n /**\n * Add event listeners\n */\n attachEvents() {\n this.analyticsEls.forEach((el) => {\n el.addEventListener('change', this.onTrackedInputChange)\n })\n\n this.formEl.addEventListener('change', this.onFormStart)\n\n this.formEl.addEventListener('submit', this.onFormSubmit)\n }\n\n /**\n * Remove event listeners\n */\n detachEvents() {\n this.analyticsEls.forEach((el) => {\n el.removeEventListener('change', this.onTrackedInputChange)\n })\n\n this.formEl.removeEventListener('change', this.onFormStart)\n\n this.formEl.removeEventListener('submit', this.onFormSubmit)\n }\n\n /**\n * Callback for when a tracked input changes to trigger the analytics event with the input data\n * @param {*} e\n */\n onTrackedInputChange = (e) => {\n let selectedOption = null\n\n if (e.target.type === 'select-one' && e.target.options) {\n selectedOption = e.target.options[e.target.selectedIndex]\n }\n\n this.analyticsService.trackInteraction('dynamics_form_input', {\n form_id: this.formEl?.id || this.formBlockEl?.dataset?.formBlockId || '',\n input_id: e.target.id,\n input_name: e.target?.dataset?.analyticsForm || '',\n input_value: selectedOption ? selectedOption.innerText : e.target.value\n })\n }\n\n /**\n * Callback for when the form is started to trigger the analytics event with the form data\n */\n onFormStart = () => {\n this.analyticsService.trackInteraction('form_start', {\n form_id: this.formEl?.id || this.formBlockEl?.dataset?.formBlockId || '',\n form_destination: window.location.href\n })\n\n /**\n * Remove the event listener after the form has been started\n */\n this.formEl.removeEventListener('change', this.onFormStart)\n }\n\n /**\n * Callback for when the form is submitted to trigger the analytics event with the form data\n */\n onFormSubmit = () => {\n this.analyticsService.trackInteraction('form_submit', {\n form_id: this.formEl?.id || this.formBlockEl?.dataset?.formBlockId || '',\n form_destination: window.location.href\n })\n }\n\n /**\n * Destroy the component\n */\n destroy() {\n this.detachEvents()\n }\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":""}