{"version":3,"file":"forms.js","mappings":"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","sources":["webpack://TMF/./src/js/general/await-dynamics.ts","webpack://TMF/./src/js/general/data-layer.ts","webpack://TMF/./src/js/general/populate-utm-fields.ts","webpack://TMF/webpack/bootstrap","webpack://TMF/webpack/runtime/define property getters","webpack://TMF/webpack/runtime/hasOwnProperty shorthand","webpack://TMF/./src/js/components/forms.ts"],"sourcesContent":["export default function awaitDynamics(callback: () => void) {\n let counter = 0;\n\n const interval = setInterval(() => {\n const { MsCrmMkt } = window;\n\n if (MsCrmMkt !== undefined) {\n callback();\n clearInterval(interval);\n }\n\n counter++;\n\n if (counter >= 50) {\n clearInterval(interval);\n throw new Error(\n 'Counter exedeed 50 iterations: MsCrmMkt was not defined'\n );\n }\n }, 250);\n}\n","declare global {\n interface Window {\n dataLayer: Record[];\n }\n}\n\ntype SearchAndFilterEvent = Record<'category' | 'click_text', string | number>;\n\nconst handleDataPush = (\n eventname: string,\n values?: { [key: string]: string | number }\n) => {\n const { dataLayer } = window;\n\n if (typeof dataLayer == 'undefined')\n return console.warn('dataLayer is not defined');\n\n const data = { event: eventname, ...values };\n\n dataLayer.push(data);\n};\n\nexport function DLNavClick({\n nav_category,\n nav_level,\n click_text,\n}: Record<'nav_category' | 'nav_level' | 'click_text', string | number>) {\n handleDataPush('nav_click', {\n nav_category,\n nav_level,\n click_text,\n });\n}\n\nexport function DLSearchResultsClick({\n category,\n click_text,\n}: SearchAndFilterEvent) {\n handleDataPush('search_results_click', {\n category,\n click_text,\n });\n}\n\nexport function DLKnowledgehubView({\n knowledgehub_type,\n}: Record<'knowledgehub_type', string>) {\n handleDataPush('knowledgehub_view', {\n knowledgehub_type,\n });\n}\n\nexport function DLFilterClick({ category, click_text }: SearchAndFilterEvent) {\n handleDataPush('filter_click', {\n category,\n click_text,\n });\n}\n\nexport function DLCtaClick({\n component_title,\n block_name,\n click_text,\n}: Record<'component_title' | 'block_name' | 'click_text', string | number>) {\n handleDataPush('cta_click', {\n component_title,\n block_name,\n click_text,\n });\n}\n\nexport function DLFormStart({\n form_name,\n form_type,\n service_line,\n region,\n}: Record<'form_name' | 'form_type' | 'service_line' | 'region', string>) {\n const event = `${form_type || 'generic'}_form_start`;\n\n handleDataPush(event, {\n form_name,\n form_type,\n service_line,\n region,\n });\n}\n\nexport function DLFormSubmit({\n form_name,\n form_type,\n service_line,\n region,\n}: Record<'form_name' | 'form_type' | 'service_line' | 'region', string>) {\n const event = `${form_type || 'generic'}_form_submit`;\n\n handleDataPush(event, {\n form_name,\n form_type,\n service_line,\n region,\n });\n}\n\n// Handle CTA click event\nconst ctas = document.querySelectorAll('[data-layer-cta-click]');\n\nctas.forEach(cta => {\n const { layerCtaClick } = cta.dataset,\n data = JSON.parse(layerCtaClick.replace(/(\\r\\n|\\n|\\r)/gm, ' '));\n\n if (!data) return;\n\n const { title, block, text } = data;\n\n cta.addEventListener('click', () =>\n DLCtaClick({ component_title: title, block_name: block, click_text: text })\n );\n});\n","export default function populateUTMFields() {\n const cookiesArr = document.cookie.split(';');\n const utmCookies = cookiesArr\n .map(cookie => {\n const [nameRaw, value] = cookie.split('=');\n const name = nameRaw.trim();\n\n if (!window.UTM_COOKIES.includes(name)) return;\n\n return [name, value];\n })\n .filter(i => i);\n\n for (const [key, val] of utmCookies) {\n const field = document.getElementById(key) as HTMLInputElement;\n\n if (!field || !val) return;\n\n field.value = val;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import awaitDynamics from '../general/await-dynamics';\nimport { DLFormStart, DLFormSubmit } from '../general/data-layer';\nimport populateUTMFields from '../general/populate-utm-fields';\n\nconst forms = document.querySelectorAll('.js-data-layer-form');\n\nconst handleForm = (form: HTMLElement) => {\n const data = JSON.parse(form.dataset.layerForm),\n { formName, formType, serviceLine, region } = data,\n isOptiForm = data.isOptiForm === 'True';\n\n const handleDataLayer = () => {\n DLFormSubmit({\n form_name: formName,\n form_type: formType.trim(),\n service_line: serviceLine,\n region,\n });\n };\n\n const handleFormStart = () => {\n const callback = () => {\n DLFormStart({\n form_name: formName,\n form_type: formType.trim(),\n service_line: serviceLine,\n region,\n });\n form.removeEventListener('click', callback);\n };\n\n form.addEventListener('click', callback);\n };\n\n if (isOptiForm && typeof $$epiforms !== 'undefined') {\n const formEl = form.querySelector('form');\n $$epiforms(formEl).on('formsSubmitted', handleDataLayer);\n } else {\n awaitDynamics(() => {\n const { MsCrmMkt } = window;\n\n MsCrmMkt.MsCrmFormLoader.on('afterFormLoad', populateUTMFields);\n\n MsCrmMkt.MsCrmFormLoader.on('afterFormSubmit', handleDataLayer);\n });\n }\n\n handleFormStart();\n};\n\nforms.forEach(handleForm);\n"],"names":["awaitDynamics","callback","counter","interval","setInterval","undefined","window","MsCrmMkt","clearInterval","Error","handleDataPush","eventname","values","dataLayer","console","warn","data","_objectSpread","event","push","DLFormStart","_ref6","form_name","form_type","service_line","region","concat","DLFormSubmit","_ref7","document","querySelectorAll","forEach","cta","layerCtaClick","dataset","JSON","parse","replace","title","block","text","addEventListener","component_title","_ref5","block_name","click_text","populateUTMFields","_step","_iterator","_createForOfIteratorHelper","cookie","split","map","_cookie$split2","_slicedToArray","nameRaw","value","name","trim","UTM_COOKIES","includes","filter","i","s","n","done","_step$value","key","val","field","getElementById","err","e","f","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","d","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","form","layerForm","formName","formType","serviceLine","isOptiForm","handleDataLayer","$$epiforms","formEl","querySelector","on","MsCrmFormLoader","removeEventListener"],"sourceRoot":""}