{"version":3,"sources":["webpack:///./src/js/components/NewsLetterComponent.js","webpack:///./src/js/abstracts/BaseComponent.js","webpack:///./src/js/libs/Axios.js","webpack:///./src/js/utilities/SerializeForm.js","webpack:///./src/js/utilities/FormErros.js","webpack:///./src/js/abstracts/BaseFormComponent.js","webpack:///./src/js/utilities/DataLayer.js"],"names":["NewsLetterComponent","element","handleSubmit","error","hidden","this","onSubmit","e","action","formButton","loading","formData","SerializeForm","currentTarget","getData","langPrefix","language","substring","get","params","then","data","$el","querySelector","SELECTORS","innerHTML","message","classList","remove","CLASSES","DataLayerUtils","push","event","gaHitType","category","label","catch","console","erorr","endLoading","BaseFormComponent","BaseComponent","_componentElement","setAttribute","compOptions","options","dataset","Object","keys","filter","entry","includes","forEach","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","e2","convertType","Freeze","getAttribute","events","cb","elements","Bean","on","stopPropagation","one","off","fire","container","EMIT","CUSTOM_MESSAGES","LOADER_EVENTS","show","icon","hide","option","optionReturn","Number","key","str","charAt","toLocaleLowerCase","slice","CommonInterface","recaptchaToken","a","googleRecaptchaAction","googleRecaptchaClientSide","Promise","resolve","reject","window","grecaptcha","ready","execute","token","axios","Axios","create","transformRequest","headers","entries","FormData","value","append","interceptors","request","use","config","googleRecaptchaToken","CancelToken","post","all","spread","form","serialize","dataType","getFormDataArray","getFormDataObject","join","map","tempData","split","name","newArrayString","nodeName","el","disabled","BLACK_LIST","type","isValidForm","isvalidElement","opt","selected","checked","scrollConfig","behavior","block","inline","inputErrorMsg","messageEl","document","createElement","add","innerText","showFieldsErrors","errors","parent","closest","appendChild","scrollIntoView","showFieldError","fieldName","addEventListener","handleFocus","parentElement","removeAttribute","removeChild","removeEventListener","showGlobalError","button","parentNode","errorEl","insertBefore","$on","preventDefault","stopImmediatePropagation","cleanCustomError","res","handleRes","errorFields","errorMessage","errorMsg","stringError","querySelectorAll","globaError","length","err","Serialize","dataLayer"],"mappings":"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","file":"js/component-NewsLetterComponent-js.chunks.js","sourcesContent":["import { get } from '../libs/Axios';\nimport { DataLayerUtils } from '../utilities/DataLayer';\nimport BaseFormComponent from '../abstracts/BaseFormComponent';\nimport SerializeForm from '../utilities/SerializeForm';\n\nexport default class NewsLetterComponent extends BaseFormComponent {\n  get SELECTORS() {\n    return {\n      error: '.js-error'\n    };\n  }\n\n  get CLASSES() {\n    return {\n      hidden: 'hide'\n    };\n  }\n\n  constructor(element) {\n    super(element);\n\n    this.handleSubmit();\n  }\n\n  handleSubmit() {\n    this.onSubmit((e, action, formButton) => {\n      this.loading(formButton);\n      const formData = new SerializeForm(e.currentTarget).getData('object');\n      const siteLanguage = formData.language;\n      const langPrefix = siteLanguage.substring(0, 2);\n      get(action, {\n        params: formData\n      }).then(({ data }) => {\n        if (data.error) {\n          const error = this.$el.querySelector(this.SELECTORS.error);\n          error.innerHTML = data.message;\n          error.classList.remove(this.CLASSES.hidden);\n        } else {\n          this.$el.innerHTML = data;\n\n          DataLayerUtils.push({\n            event: 'asyncAction',\n            gaHitType: 'event',\n            category: 'iscrizione_newsletter',\n            action: 'ok',\n            label: langPrefix\n          });\n        }\n      })\n        .catch(console.erorr)\n        .then(() => this.endLoading(formButton));\n    });\n  }\n}\n","\nimport Bean from 'bean';\nimport Freeze from '../utilities/Freeze';\nimport CommonInterface from './CommonInterface';\n\nexport default class BaseComponent extends CommonInterface {\n  get $el() {\n    return this._componentElement;\n  }\n\n  get $options() {\n    const compOptions = {};\n    const options = { ...this.$el.dataset };\n    const optionsEntires = Object.keys(options).filter(entry => entry.includes('option'));\n    optionsEntires.forEach((entry) => {\n      try {\n        const cleanEntry = BaseComponent.cleanOptionKey(entry);\n        let optionValue;\n        if (options[entry].includes('{') && options[entry].includes('}')) {\n\n          // PDB-786 JSON.parse(\"{\\\"address1\\\":\\\"2 Rue d'Orsel\\\"}\".replace(/'/g, '\"')) => SyntaxError: Unexpected token O in JSON at position 21\n          try {\n            optionValue = JSON.parse(options[entry].replace(/'/g, '\"'));\n          } catch (e2) {\n            optionValue = JSON.parse(options[entry]);\n          }\n\n        } else {\n          optionValue = BaseComponent.convertType(options[entry]);\n        }\n        compOptions[cleanEntry] = optionValue;\n      } catch (e) {\n        console.error('get $options() from component => ', this._componentElement, e);\n      }\n    });\n    return Freeze(compOptions);\n  }\n\n  get COMPONENT_NAME() {\n    return this.$el.getAttribute('data-component');\n  }\n\n  /**\n   *\n   * constructor\n   *\n   * @param {Element} element\n   */\n  constructor(element) {\n    super();\n    this._componentElement = element;\n    this._componentElement.setAttribute('data-component-init', true);\n  }\n\n  static convertType(option) {\n    let optionReturn;\n    if (Number(option)) return Number(option);\n    switch (option) {\n      case 'false':\n        optionReturn = false;\n        break;\n      case 'true':\n        optionReturn = true;\n        break;\n      case 'null':\n        optionReturn = null;\n        break;\n      default:\n        optionReturn = option;\n        break;\n    }\n\n    return optionReturn;\n  }\n\n  static cleanOptionKey(key) {\n    const str = key.replace('option', '');\n    const cleanedKey = `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\n    return cleanedKey;\n  }\n\n  /**\n   *\n   * $on\n   *\n   * @param {String} events\n   * @param {Function} cb\n   * @param {Element} [element = this.$el]\n   * @param {Array|String|Element} [elements = null]\n   */\n  $on(events, cb, element = this.$el, elements = null) {\n    if (!element || !events || !cb) return;\n    if (!elements) {\n      Bean.on(element, events, (e) => {\n        if (e) e.stopPropagation();\n        cb(e);\n      });\n    } else {\n      Bean.on(element, events, elements, (e) => {\n        if (e) e.stopPropagation();\n        cb(e);\n      });\n    }\n  }\n\n  /**\n   *\n   * $one\n   *\n   * @param {String} events\n   * @param {Function} cb\n   * @param {Element} [element = this.$el]\n   */\n  $one(events, cb, element = this.$el) {\n    Bean.one(element, events, cb);\n  }\n\n  /**\n   *\n   * $off\n   *\n   * @param {String} events\n   * @param {Element} [element = this.$el]\n   */\n  $off(events, element = this.$el) {\n    Bean.off(element, events);\n  }\n\n  /**\n   *\n   * $fire\n   *\n   * @param {String} events\n   * @param {Element} [element = this.$el]\n   */\n  $fire(events, element = this.$el) {\n    Bean.fire(element, events);\n  }\n\n  /**\n   *\n   * @param {HTMLElement} [container]\n   */\n  loading(container, message) {\n    this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.show, {\n      container: container || this.$el,\n      message\n    });\n  }\n\n  /**\n   *\n   * @param {HTMLElement} [container]\n   * @param {String} [message]\n   * @param {String} [icon]\n   * @param {Boolean} [error=false]\n   */\n  endLoading(container, message, error = false, icon) {\n    this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.hide, {\n      container: container || this.$el,\n      message,\n      icon,\n      error\n    });\n  }\n}\n","import Axios from 'axios';\n\nconst recaptchaToken = async ({ googleRecaptchaAction, googleRecaptchaClientSide }) => new Promise((resolve, reject) => {\n  window.grecaptcha.ready(() => {\n    window.grecaptcha.execute(googleRecaptchaClientSide, { action: googleRecaptchaAction }).then((token) => {\n      resolve(token);\n    });\n  });\n});\n\nconst axios = Axios.create({\n  transformRequest: [function (data, headers) {\n    if (data && Object.entries(data)) {\n      const formData = new FormData();\n      for (const [key, value] of Object.entries(data)) {\n        formData.append(key, value);\n      }\n      return formData;\n    }\n  }],\n});\n\n// Add a request interceptor\naxios.interceptors.request.use(async (config) => {\n  // Do something before request is sent\n  if (config.data && config.data.googleRecaptchaAction && config.data.googleRecaptchaClientSide) {\n    const token = await recaptchaToken(config.data);\n    config.data.googleRecaptchaToken = token;\n    return config;\n  }\n  return config;\n}, function (error) {\n  // Do something with request error\n  return Promise.reject(error);\n});\n\nexport const { CancelToken } = Axios;\n\nexport const {\n  get, post, all, spread\n} = axios;\n","class SerializeForm {\n  static get BLACK_LIST() {\n    return {\n      elements: ['button', 'file', 'reset', 'submit']\n    };\n  }\n\n  /**\n   *\n   * @param {HTMLFormElement} form\n   */\n  constructor(form) {\n    this.form = SerializeForm.serialize(form);\n  }\n\n  /**\n   * Get the form serialization data by format\n   *\n   * @param {String} [dataType] The data type to return ('array', 'object' or empty to return string)\n   * @returns {*}\n   */\n  getData(dataType) {\n    switch (dataType) {\n      case 'array':\n        return SerializeForm.getFormDataArray(this.form);\n      case 'object':\n        return SerializeForm.getFormDataObject(this.form);\n      default:\n        return this.form.join('&')\n          .replace(/%20/g, '+');\n    }\n  }\n\n  /**\n   * Get the form serialization data string\n   *\n   * @returns {String}\n   */\n  toString() {\n    return this.form.join('&').replace(/%20/g, '+');\n  }\n\n  /**\n   * Get the form serialization data array\n   *\n   * @returns {Array}\n   */\n  toArray() {\n    return SerializeForm.getFormDataArray(this.form);\n  }\n\n  /**\n   * Get the form serialization data object\n   *\n   * @returns {Object}\n   */\n  toObject() {\n    return SerializeForm.getFormDataObject(this.form);\n  }\n\n  /**\n   *\n   * @param {HTMLFormElement} form\n   * @return {Array<Object>}\n   */\n  static getFormDataArray(form) {\n    return [\n      ...form.map((data) => {\n        const tempData = data.split('=');\n        return {\n          name: tempData[0],\n          value: tempData[1]\n        };\n      })\n    ];\n  }\n\n  /**\n   *\n   * @param {HTMLFormElement} form\n   */\n  static getFormDataObject(form) {\n    const formData = {};\n    form.forEach((data) => {\n      const tempData = data.split('=');\n      if (formData[tempData[0]]) {\n        const newArrayString = `${typeof formData[tempData[0]] === 'object' ? formData[tempData[0]].join('&') : formData[tempData[0]]}&${tempData[1]}`;\n        formData[tempData[0]] = newArrayString.split('&');\n      } else {\n        formData[tempData[0]] = tempData[1];\n      }\n    });\n\n    return formData;\n  }\n\n  /**\n   *\n   * @param {HTMLFormElement} form\n   * @return {boolean}\n   */\n  static isValidForm(form) {\n    return typeof form === 'object' && form.nodeName === 'FORM';\n  }\n\n  /**\n   *\n   * @param {HTMLElement} el\n   * @return {boolean}\n   */\n  static isvalidElement(el) {\n    return el.name && !el.disabled && !SerializeForm.BLACK_LIST.elements.includes(el.type);\n  }\n\n  /**\n   *\n   * @param {HTMLFormElement} form\n   * @return {Array}\n   */\n  static serialize(form) {\n    const data = [];\n    if (SerializeForm.isValidForm(form)) {\n      [...form.elements].forEach((el) => {\n        if (SerializeForm.isvalidElement(el)) {\n          if (el.type !== 'checkbox' && el.type !== 'radio') {\n            let value = el.value || '';\n            data.push(`${el.name}=${value}`);\n          } else if (el.type === 'select-multiple') {\n            el.options.forEach((opt) => {\n              if (opt.selected) data.push(`${el.name}=${opt.value}`);\n            });\n          } else if (el.checked && el.type === 'checkbox') {\n            let value = el.value || true;\n            data.push(`${el.name}=${value}`);\n          } else if (el.checked && el.type === 'radio' && el.value) {\n            let value = el.value;\n            data.push(`${el.name}=${value}`);\n          }\n        }\n      });\n    }\n    return data;\n  }\n}\n\nexport default SerializeForm;\n","const scrollConfig = {\n  behavior: 'smooth',\n  block: 'center',\n  inline: 'center'\n};\n\nconst inputErrorMsg = (message) => {\n  const messageEl = document.createElement('div');\n  messageEl.classList.add('error-message', 'js-error-message');\n  messageEl.innerText = message;\n  return messageEl;\n};\n\nconst formErroMessage = (message) => {\n  const messageEl = document.createElement('div');\n  messageEl.classList.add('warning', 'js-form-warning');\n  messageEl.innerHTML += '<span class=\"icon icon-error\"></span>';\n  messageEl.innerHTML += message;\n  return messageEl;\n};\n\nexport const cleanInputs = (form, cb) => {\n  const inputs = form.querySelectorAll('input, select');\n  [...inputs].forEach((el) => {\n    const parent = error.parentElement;\n    const error = parent.querySelector('.error-message');\n    el.classList.remove('error');\n    el.removeAttribute('aria-describedby');\n    el.removeAttribute('aria-invalid');\n    parent.removeChild(error);\n  });\n};\n\n/**\n * @param {Element}\n  */\nexport const showFieldsErrors = (form, errors) => {\n  for (const [key, value] of Object.entries(errors)) {\n    const el = form.querySelector(`[name=\"${key}\"]`);\n    const parent = el.closest('.js-form-input');\n    el.classList.add('error');\n    el.setAttribute('aria-describedby', `bouncer-error_${key}`);\n    el.setAttribute('aria-invalid', true);\n    parent.appendChild(inputErrorMsg(value));\n  }\n  const error = form.querySelector('.error-message');\n  if (error) {\n    error.scrollIntoView(scrollConfig);\n  }\n};\n\nexport const showFieldError = (fieldName, message) => {\n  const el = document.querySelector(`[name*=\"${fieldName}\"]`);\n  const parent = el.closest('.js-form-input');\n  el.classList.add('error');\n  el.setAttribute('aria-describedby', `bouncer-error_${el.name}`);\n  el.setAttribute('aria-invalid', true);\n  if (message) parent.appendChild(inputErrorMsg(message));\n  parent.scrollIntoView(scrollConfig);\n  el.addEventListener('focus', handleFocus, false);\n};\n\nconst handleFocus = (e) => {\n  const el = e.currentTarget;\n  const parent = el.parentElement;\n  const error = parent.querySelector('.error-message');\n  el.classList.remove('error');\n  el.removeAttribute('aria-describedby');\n  el.removeAttribute('aria-invalid');\n  parent.removeChild(error);\n  el.removeEventListener('focus', handleFocus, false);\n};\n\nexport const showGlobalError = (form, error) => {\n  const button = form.querySelector('button[type=\"submit\"]');\n  const parent = button.parentNode;\n  const errorEl = formErroMessage(error);\n  parent.insertBefore(errorEl, button);\n};\n","import Serialize from '../utilities/SerializeForm';\nimport BaseComponent from './BaseComponent';\nimport { showFieldsErrors, showGlobalError } from '../utilities/FormErros';\n\nexport default class BaseFormComponent extends BaseComponent {\n  constructor(element) {\n    super(element);\n  }\n\n  /**\n   *\n   * @param {CallableFunction} cb - The callback function\n   * @return {function}\n   */\n  onSubmit(cb) {\n    return this.$on('bouncerFormValid', async (e) => {\n      e.preventDefault();\n      e.stopImmediatePropagation();\n      const formButton = e.currentTarget.querySelector('button[type=\"submit\"]');\n      const action = e.currentTarget.getAttribute('action');\n      this.cleanCustomError();\n      const res = await cb(e, action, formButton);\n      if (res) this.handleRes(res, formButton);\n    });\n  }\n\n  handleRes(res, formButton) {\n    const {\n      error, errorFields, errorMessage, errorMsg\n    } = res;\n    if (errorFields) {\n      showFieldsErrors(this.$el, errorFields);\n    }\n    const stringError = errorMessage || errorMsg;\n    if (stringError) {\n      showGlobalError(this.$el, stringError);\n    } else if (error) {\n      showGlobalError(this.$el, error);\n    }\n\n    if (error || errorFields || errorMessage || errorMsg) {\n      this.endLoading(formButton);\n    }\n  }\n\n  cleanCustomError() {\n    const errorFields = this.$el.querySelectorAll('.js-error-message');\n    const globaError = this.$el.querySelectorAll('.js-form-warning');\n\n    if (globaError.length > 0) {\n      [...globaError].forEach((err) => {\n        const parent = err.parentElement;\n        parent.removeChild(err);\n      });\n    }\n    if (errorFields.length > 0) {\n      [...errorFields].forEach((err) => {\n        try {\n          const parent = err.parentElement;\n          parent.classList.remove(err);\n          parent.removeChild(err);\n          err.removeAttribute('aria-describedby');\n          err.removeAttribute('aria-invalid');\n        } catch (e) {\n          // TODO error...\n        }\n      });\n    }\n  }\n\n  /**\n   *\n   * @param {String} action\n   *\n   */\n  recaptchaClientSide(action) {\n    const googleRecaptchaClientSide = document.querySelector('input[name=\"googleRecaptchaClientSide\"]');\n    if (googleRecaptchaClientSide) {\n      window.grecaptcha.ready(() => {\n        window.grecaptcha.execute(googleRecaptchaClientSide.value, { action }).then((token) => {\n          this.$el.innerHTML += `<input type=\"hidden\" name=\"googleRecaptchaToken\" value=\"${token}\">`;\n          this.$el.innerHTML += `<input type=\"hidden\" name=\"googleRecaptchaAction\" value=\"${action}\">`;\n        });\n      });\n    }\n  }\n\n\n  /**\n   *\n   * @param {HTMLFormElement} form\n   * @return {SerializeForm}\n   */\n  serializeForm(form) {\n    return new Serialize(form);\n  }\n}\n","export const DataLayerUtils = {\n  push(data) {\n    window.dataLayer.push(data);\n  }\n}\n"],"sourceRoot":""}