{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./assets/src/js/mailchimp.js","webpack:///./assets/src/js/modules/epi-helpers.js","webpack:///./assets/src/js/events/site-events.js","webpack:///./assets/src/js/utils/optimizely-experimentation-utils.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","form","document","querySelector","formBtn","errDiv","errMsgDiv","isErrDiv","origErrMsg","textContent","formHelpers","window","epiHelpers","displayErrorMessage","msg","reenableSubmitButton","classList","remove","onFormSubmitSuccess","data","status","Error","add","formMainBodyDiv","formConfirmationDiv","onEpiFormSubmitSuccess","detail","onFormSubmitFail","addEventListener","event","preventDefault","disableSubmitButtonOnSend","validateForm","validatePhoneIfExists","sendLeadToMailchimp","success","fail","scrollFormToFirstError","options","dealerOptin","getElementByMailchimpName","length","getCheckedRadioByMailchimpField","indexOf","getCheckedByMailchimpField","tags","getValByMailchimpField","split","trim","push","interests","productLineInterestName","interestInputValues","getMultipleValsByMailchimpField","campaign","currentDate","Date","newDealerSampling","dataLayer","userID","utmCampaign","utmContent","utmMedium","utmSource","utmTerm","optimizelyExperiments","getOptimizelyExperimentationString","_dcq","email","first_name","last_name","phone","address1","address2","city","state","zip","country","source","gclid","design_studio_id","visualizer_source","d_opt_in","viz_key","product_interests","page_submitted_from","location","href","last_form_submitted_date","user_id","checkStringLength","utm_campaign","utm_content","utm_medium","utm_source","utm_term","optimizely_experiments","selected_bundle","store_number","company_number","company_name","company_contact","who_is_your_graber_tsm","console","log","failure","dispatchSiteEvent","siteEventNames","ON_FORM_SUBMIT_SUCCESS","optin","isValid","fieldErrorList","$","each","el","type","this","removeClass","find","attr","fieldError","simpleEpiValidationByType","addClass","focus","val","RegExp","test","par","parent","hasClass","$prev","match","eq","is","lastIndexOf","substr","animate","scrollTop","offset","top","resetMailchimpForm","prop","$btn","btn","jQuery","setAttribute","removeAttribute","getAttribute","convertInputTypeToPassword","str","ADD_EXPERT","ADD_SWATCH","DEALER_PHONE_CLICK","DEALER_WEBSITE_CLICK","ON_ACCOUNT_CREATED","ON_DEALER_SEARCH","ON_LOGGED_IN","ON_ORDER_SUBMITTED","ON_ORDER_CONFIRMATION","ON_RECAPTCHA_LOAD","REMOVE_SWATCH","eventName","siteEventRegistry","keys","forEach","dispatchEvent","getEventData","initSiteEvents","Event","formantExperimentString","optimizely_experiment","optimizely_variant","filter","map","item","reduce","acc","curr","index"],"mappings":"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","file":"mailchimp.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import './modules/epi-helpers';\n\n(() => {\n const form = document.querySelector('.mailchimp-form');\n if (form === null) {\n return;\n }\n const formBtn = form.querySelector('.o-form__submit');\n const errDiv = form.querySelector('.Form__Errors');\n const errMsgDiv = form.querySelector('.Form__Errors .error-msg');\n const isErrDiv = errDiv && errMsgDiv;\n const origErrMsg = isErrDiv ? errMsgDiv.textContent : '';\n const displaySelector = 'hidden';\n // Temp reference fix for 'epiHelers'\n const formHelpers = window.epiHelpers;\n\n const validate = () => (\n formHelpers.validateForm() && formHelpers.validatePhoneIfExists()\n );\n\n const displayErrorMessage = (msg) => {\n formHelpers.reenableSubmitButton(formBtn);\n if (!isErrDiv) return;\n errMsgDiv.textContent = msg;\n errDiv.classList.remove(displaySelector);\n };\n\n const onFormSubmitSuccess = (data) => {\n // Mailchimp error will come through as a 200 from webservice\n // Need to check response for status:400, 500\n if (data.status !== undefined) {\n if (data.status !== 200) {\n displayErrorMessage(data.detail);\n return;\n }\n }\n if (data.Error !== undefined) {\n // The underlying connection was closed: An unexpected error occurred on a send\n displayErrorMessage(data.Error);\n return;\n }\n // Show confirmation & remove any error messages\n if (isErrDiv) {\n errDiv.classList.add(displaySelector);\n }\n const formMainBodyDiv = form.querySelector('.Form__MainBody');\n if (formMainBodyDiv) {\n formMainBodyDiv.classList.add(displaySelector);\n }\n const formConfirmationDiv = form.querySelector('.Form__Confirmation');\n if (formConfirmationDiv) {\n formConfirmationDiv.classList.remove(displaySelector);\n }\n // 10/10/2024 - Should be added as parameter instead of using window?\n if (window.onEpiFormSubmitSuccess) {\n window.onEpiFormSubmitSuccess();\n }\n };\n\n const onFormSubmitFail = () => (\n displayErrorMessage(origErrMsg)\n );\n\n formBtn.addEventListener('click', (event) => {\n event.preventDefault();\n formHelpers.disableSubmitButtonOnSend(formBtn);\n const options = {\n success: onFormSubmitSuccess,\n fail: onFormSubmitFail,\n };\n if (validate()) {\n formHelpers.sendLeadToMailchimp(options);\n } else {\n formHelpers.reenableSubmitButton(formBtn);\n formHelpers.scrollFormToFirstError();\n }\n });\n})();\n","import {\n dispatchSiteEvent,\n siteEventNames,\n} from '../events/site-events';\n\nimport { getOptimizelyExperimentationString } from '../utils/optimizely-experimentation-utils';\n\nwindow.epiHelpers = function epiHelpers() {};\n\n/* options: {\n success: ,\n fail: \n }\n*/\nepiHelpers.sendLeadToMailchimp = function(options) {\n // Get timestamp if required for Dealer interest\n var date = '';\n // Detect whether new/old INTEREST_DEALER by length;\n var dealerOptin = false;\n if (epiHelpers.getElementByMailchimpName('INTEREST_DEALER').length > 1) {\n // *NEW* Radio group, get selected value\n var selectedVal = epiHelpers.getCheckedRadioByMailchimpField('INTEREST_DEALER');\n if (selectedVal.indexOf('yes') != -1) {\n dealerOptin = true;\n }\n dealerOptin = epiHelpers.getCheckedRadioByMailchimpField('INTEREST_DEALER');\n } else {\n dealerOptin = epiHelpers.getCheckedByMailchimpField('INTEREST_DEALER');\n }\n var tags = [];\n if (epiHelpers.getValByMailchimpField('DRIP_TAGS') !== '') {\n tags = epiHelpers.getValByMailchimpField('DRIP_TAGS').split(',');\n }\n // Trim whitespace\n for (var i = 0; i <= tags.length; i++) {\n if (tags[i]) {\n tags[i].trim();\n }\n }\n // Add opt-in tag\n if (epiHelpers.getCheckedByMailchimpField('INTEREST_BRAND')) {\n tags.push('Opted In');\n }\n // Add date for dealer opt-in\n if (dealerOptin) {\n tags.push('Consumer Lead to Pickup');\n }\n var interests = '';\n // If product page\n if (window.productLineInterestName) {\n interests = window.productLineInterestName;\n }\n // If find a dealer\n var interestInputValues = epiHelpers.getMultipleValsByMailchimpField('PRODUCT_INTERESTS');\n if (interestInputValues != '') {\n interests = interestInputValues;\n }\n // Switch visualization campaigns\n var campaign = epiHelpers.getValByMailchimpField('CAMPAIGN');\n if (epiHelpers.getMultipleValsByMailchimpField('VIZ_KEY') !== '') {\n campaign = epiHelpers.getValByMailchimpField('CAMPAIGN_WITH_VISUALIZATION')\n }\n // Get Google Click Id (if exists for the form)\n let currentDate = new Date();\n // New Dealer Sampling page - Check if the form has an ide of #new-dealer-sampling-form. If so, the form will submit additional values from that form for drip\n let newDealerSampling = (document.querySelector('#new-dealer-sampling-form')) ? true : false;\n let { userID, utmCampaign, utmContent, utmMedium, utmSource, utmTerm } = window.dataLayer[0];\n let optimizelyExperiments = getOptimizelyExperimentationString();\n // Drip Call\n _dcq.push(\n [\n 'identify',\n {\n email: epiHelpers.getValByMailchimpField('EMAIL'),\n first_name: epiHelpers.getValByMailchimpField('FNAME'),\n last_name: epiHelpers.getValByMailchimpField('LNAME'),\n phone: epiHelpers.getValByMailchimpField('PHONE'),\n address1: epiHelpers.getValByMailchimpField('ADDR_LINE1'),\n address2: epiHelpers.getValByMailchimpField('ADDR_LINE2'),\n city: epiHelpers.getValByMailchimpField('ADDR_CITY'),\n state: epiHelpers.getValByMailchimpField('ADDR_STATE'),\n zip: epiHelpers.getValByMailchimpField('ADDR_ZIP'),\n country: epiHelpers.getValByMailchimpField('ADDR_CNTRY'),\n source: epiHelpers.getValByMailchimpField('SOURCE'),\n gclid: epiHelpers.getValByMailchimpField('GCLID'),\n design_studio_id: epiHelpers.getValByMailchimpField('DESIGN_STUDIO_ID'),\n visualizer_source: epiHelpers.getValByMailchimpField('VISUALIZER_SOURCE'),\n d_opt_in: date,\n viz_key: epiHelpers.getMultipleValsByMailchimpField('VIZ_KEY'),\n campaign,\n product_interests: interests,\n page_submitted_from: window.location.href,\n tags: tags,\n last_form_submitted_date: currentDate,\n user_id: userID,\n ...(epiHelpers.checkStringLength(utmCampaign) && { utm_campaign: utmCampaign }),\n ...(epiHelpers.checkStringLength(utmContent) && { utm_content: utmContent }),\n ...(epiHelpers.checkStringLength(utmMedium) && { utm_medium: utmMedium }),\n ...(epiHelpers.checkStringLength(utmSource) && { utm_source: utmSource }),\n ...(epiHelpers.checkStringLength(utmTerm) && { utm_term: utmTerm }),\n ...(epiHelpers.checkStringLength(optimizelyExperiments) && { optimizely_experiments: optimizelyExperiments }),\n ...(newDealerSampling && { selected_bundle: epiHelpers.getValByMailchimpField('SELECTED_BUNDLE') }),\n ...(newDealerSampling && { store_number: epiHelpers.getValByMailchimpField('STORE_NUMBER')}),\n ...(newDealerSampling && { company_number: epiHelpers.getValByMailchimpField('COMPANY_NUMBER') }),\n ...(newDealerSampling && { company_name: epiHelpers.getValByMailchimpField('COMPANY_NAME') }),\n ...(newDealerSampling && { company_contact: epiHelpers.getValByMailchimpField('COMPANY_CONTACT') }),\n ...(newDealerSampling && { who_is_your_graber_tsm: epiHelpers.getValByMailchimpField('WHO_IS_YOUR_GRABER_TSM') }),\n success: function(data) {\n console.log(data);\n if (options !== undefined) {\n if (options.success !== undefined) {\n options.success(data);\n }\n }\n },\n failure: function(data) {\n console.log(data);\n if (options !== undefined) {\n if (options.fail !== undefined) {\n options.fail(data);\n }\n }\n },\n },\n ]\n );\n // GTM Call\n dispatchSiteEvent(siteEventNames.ON_FORM_SUBMIT_SUCCESS, {\n optin: epiHelpers.getCheckedByMailchimpField('INTEREST_BRAND'),\n });\n};\n\nepiHelpers.validateForm = function() {\n var isValid = true;\n var fieldErrorList = [];\n $('#epiFormWrapper form div.Form__Element.ValidationRequired').each(function() {\n // Remove error class\n $(this).removeClass('ValidationFail');\n // Determine select/input... or other\n var el, type;\n if ($(this).find('input').length !== 0) {\n // Determine input text or select, or radio\n el = $(this).find('input');\n type = el.attr('type');\n } else if ($(this).find('select') !== 0) {\n el = $(this).find('select');\n type = 'select';\n } else if ($(this).find('textarea') !== 0) {\n el = $(this).find('textarea');\n type = 'text';\n }\n if (el !== undefined) {\n const fieldWrapper = this;\n const fieldError = fieldWrapper.querySelector('.text-danger');\n if (!epiHelpers.simpleEpiValidationByType(el, type)) {\n isValid = false;\n $(this).addClass('ValidationFail');\n fieldErrorList.push(el);\n if (fieldError) {\n fieldError.classList.add('field-validation-error');\n fieldError.classList.remove('field-validation-valid');\n }\n } else {\n if (fieldError) {\n fieldError.classList.remove('field-validation-error');\n fieldError.classList.add('field-validation-valid');\n }\n }\n }\n });\n // Add focus to first error, if form is invalid\n // console.log(fieldErrorList.length);\n if (fieldErrorList.length > 0) {\n // form.classList.add('form-validation-failed');\n fieldErrorList[0].focus();\n }\n return isValid;\n};\n\nepiHelpers.validatePhoneIfExists = function() {\n var val = epiHelpers.getValByMailchimpField('PHONE');\n if (val === '') {\n // No value, note entered, no validation needed\n return true;\n } else {\n // Validate\n var isValid = new RegExp(/^(\\+\\d{1,2}\\s)?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/).test(val),\n par = $('form [data-mailchimp=\"PHONE\"]').parent();\n if (isValid) {\n par.removeClass('ValidationFail');\n } else {\n par.addClass('ValidationFail');\n }\n return isValid;\n }\n};\n\nepiHelpers.simpleEpiValidationByType = function(el, type) {\n var val = el.val();\n if (el.hasClass('u-validation__email')) {\n return new RegExp(/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/).test(val);\n } else if (el.hasClass('u-validation__phone')) {\n return new RegExp(/^(\\+\\d{1,2}\\s)?\\(?\\d{3}\\)?[\\s.-]?\\d{3}[\\s.-]?\\d{4}$/).test(val);\n } else if (el.hasClass('u-validation__zip')) {\n return new RegExp(/(^\\d{5}(-\\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]{1}\\d{1}[A-Z]{1} *\\d{1}[A-Z]{1}\\d{1}$)/).test(val);\n } else if (el.hasClass('u-validation__passwordMatch')) {\n // Validate for password strength\n if (!new RegExp(/^(?=.*[a-z])(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#\\$%\\^&\\*])(?=.{8,})/).test(val)) {\n return false;\n }\n // Check for match\n var $prev;\n var match = true;\n $('form .u-validation__passwordMatch').each(function() {\n if ($prev) {\n if ($prev.val() !== $(this).val()) {\n match = false;\n }\n }\n $prev = $(this);\n });\n if (val.length === 0) {\n match = false;\n }\n return match;\n } else {\n // Just check to see if empty\n if (type === 'text' || type === 'select' || type === 'hidden') { \n if (val !== undefined && val !== null) {\n if (val.length === 0) {\n return false;\n } \n }\n // For selects\n if (val === null) {\n return false;\n }\n }\n if (type === 'radio') {\n // Check to see if at least one radio is checked\n var checkedRadio = $(`[name=\"${el.attr('name')}\"]:checked`);\n if (checkedRadio.length === 0) {\n return false;\n }\n }\n }\n return true;\n};\n\nepiHelpers.getMultipleValsByMailchimpField = function(name) {\n var el = epiHelpers.getElementByMailchimpName(name);\n var s = '';\n for (var i = 0; i < el.length; i++) {\n if (el.eq(i).is(':checked')) {\n s += el.eq(i).val() + ',';\n }\n }\n if (s.lastIndexOf(',') !== -1) {\n s = s.substr(0, s.lastIndexOf(','))\n }\n return s;\n}\n\nepiHelpers.getCheckedRadioByMailchimpField = function(name) {\n var el = epiHelpers.getElementByMailchimpName(name);\n for (var i = 0; i < el.length; i++) {\n if (el.eq(i).is(':checked')) {\n return el.eq(i).val();\n }\n }\n return '';\n}\n\nepiHelpers.getCheckedByMailchimpField = function(name) {\n var el = epiHelpers.getElementByMailchimpName(name);\n if (el.length === 1) {\n return el.is(':checked');\n } else {\n return false;\n }\n};\n\nepiHelpers.getValByMailchimpField = function(name) {\n var el = epiHelpers.getElementByMailchimpName(name);\n if (el.length === 1) {\n return el.val();\n } else if (el.length > 1) {\n var s = '';\n for (var i = 0; i < el.length; i++) {\n s += el.eq(i).val() + ',';\n }\n return s;\n } else {\n return '';\n }\n};\n\nepiHelpers.getElementByMailchimpName = function(name) {\n return $('form [data-mailchimp=\"' + name + '\"]');\n}\n\nepiHelpers.scrollFormToFirstError = function() {\n $('html, body').animate({\n scrollTop: $('#epiFormWrapper').offset().top - 140\n }, 250);\n};\n\nepiHelpers.resetMailchimpForm = function() {\n epiHelpers.getElementByMailchimpName('FNAME').val('');\n epiHelpers.getElementByMailchimpName('LNAME').val('');\n epiHelpers.getElementByMailchimpName('EMAIL').val('');\n epiHelpers.getElementByMailchimpName('PHONE').val('');\n epiHelpers.getElementByMailchimpName('ADDR_LINE1').val('');\n epiHelpers.getElementByMailchimpName('ADDR_LINE2').val('');\n epiHelpers.getElementByMailchimpName('ADDR_CITY').val('');\n epiHelpers.getElementByMailchimpName('ADDR_STATE').val('');\n epiHelpers.getElementByMailchimpName('ADDR_ZIP').val('');\n epiHelpers.getElementByMailchimpName('ADDR_CNTRY').val('');\n epiHelpers.getElementByMailchimpName('INTEREST_BRAND').prop('checked', true);\n epiHelpers.getElementByMailchimpName('INTEREST_DEALER').prop('checked', true);\n};\n\nepiHelpers.disableSubmitButtonOnSend = function($btn) {\n var btn = ($btn instanceof jQuery) ? $btn[0] : $btn;\n btn.classList.add('o-form__submit--disabled');\n btn.setAttribute('data-prevvalue', btn.textContent);\n btn.setAttribute('disabled', 'disabled');\n btn.textContent = 'Submitting...';\n};\n\nepiHelpers.reenableSubmitButton = function($btn) {\n var btn = ($btn instanceof jQuery) ? $btn[0] : $btn;\n btn.classList.remove('o-form__submit--disabled');\n btn.removeAttribute('disabled');\n btn.textContent = btn.getAttribute('data-prevvalue');\n};\n\nepiHelpers.convertInputTypeToPassword = function() {\n $('#epiFormWrapper form .o-form__input--password').each(function() {\n $(this).attr('type', 'password');\n });\n}\n\nepiHelpers.checkStringLength = function(str) {\n return str.length > 0;\n}\n","const siteEventNames = {\n ADD_EXPERT: 'addexpert',\n ADD_SWATCH: 'addswatch',\n DEALER_PHONE_CLICK: 'dealerphoneclick',\n DEALER_WEBSITE_CLICK: 'dealerwebsiteclick',\n ON_ACCOUNT_CREATED: 'onaccountcreated',\n ON_DEALER_SEARCH: 'ondealersearch',\n ON_FORM_SUBMIT_SUCCESS: 'onformsubmitsuccess',\n ON_LOGGED_IN: 'onloggedin',\n ON_ORDER_SUBMITTED: 'onordersubmitted',\n ON_ORDER_CONFIRMATION: 'onorderconfirmation',\n ON_RECAPTCHA_LOAD: 'onrecaptchaload',\n REMOVE_SWATCH: 'removeswatch',\n};\n\nconst initSiteEvents = () => {\n if (window.siteEventRegistry) {\n return;\n }\n // Init events and add them to window scope here\n window.siteEventRegistry = {};\n Object.keys(siteEventNames).forEach((key) => {\n const value = siteEventNames[key];\n siteEventRegistry[value] = {\n event: new Event(value),\n data: {},\n }\n });\n};\n\nconst getEventData = (eventName) => {\n const { siteEventRegistry } = window;\n let data = {};\n Object.keys(siteEventRegistry).forEach((key) => {\n if (key === eventName) {\n data = siteEventRegistry[key].data;\n }\n });\n return data;\n}\n\nconst dispatchSiteEvent = (eventName, data) => {\n const { siteEventRegistry } = window;\n Object.keys(siteEventRegistry).forEach((key) => {\n if (key === eventName) {\n const event = siteEventRegistry[key].event;\n siteEventRegistry[key].data = data;\n window.dispatchEvent(event);\n }\n });\n};\n\nexport {\n dispatchSiteEvent,\n getEventData,\n initSiteEvents,\n siteEventNames,\n};\n","const getExperimentsInDataLayer = () => {\n const { dataLayer } = window;\n if (dataLayer === undefined) {\n return [];\n }\n return dataLayer\n .filter(item => item.event === 'optimizely_decision_web')\n .map(item => ({\n optimizely_experiment: item.optimizely_experiment,\n optimizely_variant: item.optimizely_variant,\n }));\n};\n\nconst formantExperimentString = data => (\n `${data.optimizely_experiment}**${data.optimizely_variant}`\n);\n\nconst getOptimizelyExperimentationString = () => (\n getExperimentsInDataLayer()\n .reduce((acc, curr, index) => (\n index === 0 ? formantExperimentString(curr) : `${acc}****${formantExperimentString(curr)}`\n ), '')\n);\n/* eslint-disable import/prefer-default-export */\nexport {\n getOptimizelyExperimentationString,\n};\n/* eslint-enable import/prefer-default-export */\n"],"sourceRoot":""}