{"version":3,"sources":["webpack:///./src/client/default/js/components/paybackBadgeComponent.js","webpack:///./src/client/default/js/base/baseComponent.js","webpack:///./src/client/default/js/utilities/SerializeForm.js","webpack:///./src/client/default/js/utilities/formErrors.js","webpack:///./src/client/default/js/base/baseFormComponent.js"],"names":["PaybackBadgeComponent","element","readCookie","SHOW","HIDE","paybackPointsValue","cntNoCard","pbPointsCookieValue","Cookies","get","document","querySelectorAll","this","SELECTORS","forEach","el","classList","replace","CLASSES","add","setPointsDisplay","length","innerHTML","BaseFormComponent","BaseComponent","_componentElement","setAttribute","_checkMessages","compOptions","options","$el","dataset","Object","keys","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","convertType","deepFreeze","getAttribute","events","cb","elements","Bean","on","e","stopPropagation","one","off","fire","container","message","_loading","EMIT","CUSTOM_MESSAGES","LOADER_EVENTS","show","body","error","icon","setTimeout","hide","option","optionReturn","key","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent","SerializeForm","form","serialize","dataType","getFormDataArray","getFormDataObject","join","map","data","tempData","split","name","value","formData","fieldKey","fieldVale","encodeURIComponent","newArrayString","decodeURIComponent","nodeName","disabled","BLACK_LIST","type","isValidForm","isvalidElement","opt","selected","push","checked","scrollConfig","behavior","block","inline","formErrorsConfig","HAS_ERRORS","GROUP_ERROR","ERROR_MESSAGE","JS_ERROR_MESSAGE","JS_FORM_WARNING","FORM_GROUP_FEEDBACK","BTN_SUBMIT","MODAL_ACTIONS","showFieldsErrors","errors","entries","querySelector","parent","closest","appendChild","messageEl","createElement","scrollIntoView","showGlobalError","button","parentNode","modalActions","modalParent","errorEl","insertBefore","setState","valid","$on","a","preventDefault","stopImmediatePropagation","formButton","currentTarget","action","cleanCustomError","res","handleRes","errorFields","errorMessage","globaError","err","parentElement","removeChild","remove","removeAttribute","Serialize"],"mappings":"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","file":"js/component-paybackBadgeComponent-js.chunks.js","sourcesContent":["import BaseFormComponent from '../base/baseFormComponent';\nimport Cookies from 'js-cookie';\n\nexport default class PaybackBadgeComponent extends BaseFormComponent {\n  get CLASSES() {\n    return {\n      SHOW: 'visible',\n      HIDE: 'hidden'\n    };\n  }\n\n  get SELECTORS() {\n    return {\n      paybackPointsValue: '.js-payback__points',\n      cntNoCard: '.js-pb-cnt-nocard'\n    };\n  }\n\n  constructor(element) {\n    super(element);\n    this.readCookie();\n  }\n\n  readCookie() {\n    var pbPointsCookieValue = Cookies.get('pbPoints');\n\n    if (pbPointsCookieValue == null || pbPointsCookieValue == '') {\n      document.querySelectorAll(this.SELECTORS.cntNoCard)?.forEach((el) => el.classList.replace(this.CLASSES.HIDE, this.CLASSES.SHOW));\n      document.querySelectorAll('.js-pb-cnt')?.forEach((el) => el.classList.add(this.CLASSES.HIDE));\n    } else if (pbPointsCookieValue === '1') {\n      this.setPointsDisplay();\n      document.querySelectorAll('.js-pb-cnt-point')?.forEach((el) => el.classList.replace(this.CLASSES.HIDE, this.CLASSES.SHOW));\n    } else {\n      this.setPointsDisplay(pbPointsCookieValue);\n      document.querySelectorAll('.js-pb-cnt-points')?.forEach((el) => el.classList.replace(this.CLASSES.HIDE, this.CLASSES.SHOW));\n    }\n  }\n\n  setPointsDisplay(pbPointsCookieValue) {\n    document.querySelectorAll(this.SELECTORS.cntNoCard)?.forEach((el) => el.classList.replace(this.CLASSES.SHOW, this.CLASSES.HIDE));\n    const paybackPointsValue = document.querySelectorAll(this.SELECTORS.paybackPointsValue);\n    if (paybackPointsValue.length > 0) {\n      paybackPointsValue.forEach((el) => el.innerHTML = pbPointsCookieValue);\n    }\n  }\n}\n","/* eslint-disable new-cap */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable no-underscore-dangle */\n\nimport Bean from 'bean';\nimport deepFreeze from '../utilities/freeze';\nimport BaseGiaComponent from './baseGiaComponent';\n\nexport default class BaseComponent extends BaseGiaComponent {\n  /**\n   * @returns {HTMLElement}\n   */\n  get $el() {\n    return /** @type {HTMLElement} */ (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      const cleanEntry = BaseComponent.cleanOptionKey(entry);\n      let optionValue;\n      if (options[entry].includes('{') && options[entry].includes('}')) {\n        optionValue = JSON.parse(options[entry].replace(/'/g, '\"'));\n      } else {\n        optionValue = BaseComponent.convertType(options[entry]);\n      }\n      compOptions[cleanEntry] = optionValue;\n    });\n    return deepFreeze(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(element);\n    this._componentElement = element;\n    this._componentElement.setAttribute('data-component-init', 'true');\n    this._checkMessages();\n  }\n\n  static convertType(option) {\n    let optionReturn;\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    return `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\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   * Activate loader\n   *\n   * @param {HTMLElement} [container]\n   * @param {String} [message]\n   */\n  loading(container, message) {\n    this._loading = true;\n    this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.show, {\n      container: container || document.body,\n      message: message ?? null\n    });\n  }\n\n  /**\n   *\n   * Deactivate loader\n   *\n   * @param {HTMLElement} [container]\n   * @param {String} [message]\n   * @param {Boolean} [error=false]\n   * @param {String} [icon]\n   */\n  endLoading(container, message, error = false, icon) {\n    this._loading = false;\n    setTimeout(() => {\n      if (!this._loading) {\n        this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.hide, {\n          container: container || document.body,\n          message,\n          error,\n          icon\n        });\n      }\n    }, 400);\n  }\n}\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('&').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.slice(1).join('=')\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      let fieldKey = tempData[0];\n      let fieldVale = tempData.slice(1).join('=');\n      if (formData[fieldKey]) {\n        fieldVale = encodeURIComponent(fieldVale);\n        const newArrayString = `${\n          typeof formData[fieldKey] === 'object' ? formData[fieldKey].map(encodeURIComponent).join('&') : encodeURIComponent(formData[fieldKey])\n        }&${fieldVale}`;\n        formData[fieldKey] = newArrayString.split('&').map(decodeURIComponent);\n      } else {\n        formData[fieldKey] = fieldVale;\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 === 'select-multiple') {\n            el.options.forEach((opt) => {\n              if (opt.selected) data.push(`${el.name}=${opt.value}`);\n            });\n          } else if ((el.type !== 'checkbox' && el.type !== 'radio') || el.checked) {\n            data.push(`${el.name}=${el.value}`);\n          }\n        }\n      });\n    }\n    return data;\n  }\n}\n\nexport default SerializeForm;\n","/**\n * @type {ScrollIntoViewOptions}\n */\nconst scrollConfig = {\n  behavior: 'smooth',\n  block: 'center',\n  inline: 'center'\n};\n\nexport const formErrorsConfig = {\n  CLASSES: {\n    HAS_ERRORS: 'error',\n    GROUP_ERROR: 'form-group-error',\n    ERROR_MESSAGE: 'error-message',\n    JS_ERROR_MESSAGE: 'js-error-message',\n    JS_FORM_WARNING: 'js-form-warning'\n  },\n  SELECTORS: {\n    ERROR_MESSAGE: '.error-message',\n    FORM_GROUP_FEEDBACK: '.form-group',\n    JS_ERROR_MESSAGE: '.js-error-message',\n    JS_FORM_WARNING: '.js-form-warning',\n    BTN_SUBMIT: 'button[type=\"submit\"]',\n    MODAL_ACTIONS: '.modal-actions'\n  }\n};\n\n/**\n * @param {string} message\n * @returns {HTMLDivElement}\n */\nconst inputErrorMsg = (message) => {\n  const messageEl = document.createElement('div');\n  messageEl.classList.add(formErrorsConfig.CLASSES.ERROR_MESSAGE, formErrorsConfig.CLASSES.JS_ERROR_MESSAGE);\n  messageEl.innerHTML = message;\n  messageEl.closest(formErrorsConfig.SELECTORS.FORM_GROUP_FEEDBACK)?.classList.add(formErrorsConfig.CLASSES.GROUP_ERROR);\n  return messageEl;\n};\n\n/**\n * @param {string} message\n * @returns {HTMLSpanElement}\n */\nconst formErroMessage = (message) => {\n  const messageEl = document.createElement('span');\n  messageEl.classList.add(formErrorsConfig.CLASSES.HAS_ERRORS, formErrorsConfig.CLASSES.JS_FORM_WARNING);\n  messageEl.innerHTML += message;\n  return messageEl;\n};\n\n/**\n * @param {HTMLFormElement} form\n * @param {Function} cb\n */\nexport const cleanInputs = (form, cb) => {\n  const inputs = form.querySelectorAll('input, select');\n  [...inputs].forEach(\n    /**\n     * @param {HTMLInputElement | HTMLSelectElement} el\n     */\n    (el) => {\n      const error = el.parentElement.querySelector(formErrorsConfig.SELECTORS.ERROR_MESSAGE);\n      const parent = error.parentElement;\n      el.closest(formErrorsConfig.SELECTORS.FORM_GROUP_FEEDBACK)?.classList.add(formErrorsConfig.CLASSES.GROUP_ERROR);\n      el.classList.remove(formErrorsConfig.CLASSES.HAS_ERRORS);\n      el.removeAttribute('aria-invalid');\n      parent.removeChild(error);\n    }\n  );\n};\n\n/**\n * @param {HTMLFormElement} form\n * @param {Object} errors\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(formErrorsConfig.SELECTORS.FORM_GROUP_FEEDBACK);\n    el.classList.add(formErrorsConfig.CLASSES.HAS_ERRORS);\n    el.setAttribute('aria-invalid', 'true');\n    parent.appendChild(inputErrorMsg(value));\n  }\n  const error = form.querySelector(formErrorsConfig.SELECTORS.ERROR_MESSAGE);\n  if (error) {\n    error.scrollIntoView(scrollConfig);\n  }\n};\n\n/**\n * @param {HTMLFormElement} form\n * @param {string} error\n */\nexport const showGlobalError = (form, error) => {\n  const button = form.querySelector(formErrorsConfig.SELECTORS.BTN_SUBMIT);\n  const parent = button.parentNode;\n  const modalActions = form.querySelector(formErrorsConfig.SELECTORS.MODAL_ACTIONS);\n  const modalParent = modalActions ? modalActions.parentNode : '';\n  const errorEl = formErroMessage(error);\n  modalActions ? modalParent.appendChild(errorEl, button) : parent.insertBefore(errorEl, button);\n};\n","/* eslint-disable sonarjs/no-redundant-boolean */\n// import SerializeAll from 'form-serialize-all';\nimport Serialize from '../utilities/SerializeForm';\nimport BaseComponent from './baseComponent';\nimport { showFieldsErrors, showGlobalError, formErrorsConfig } from '../utilities/formErrors';\n\nexport default class BaseFormComponent extends BaseComponent {\n  /**\n   * @param {Element} element\n   */\n  constructor(element) {\n    super(element);\n    this.setState({ valid: false });\n  }\n\n  /**\n   * @returns {HTMLFormElement}\n   */\n  get $el() {\n    return /** @type {HTMLFormElement} */ (super.$el);\n  }\n\n  /**\n   * @param {CallableFunction} cb - The callback function\n   */\n  onSubmit(cb) {\n    this.$on('bouncerFormValid', async (e) => {\n      e.preventDefault();\n      e.stopImmediatePropagation();\n      const formButton = e.currentTarget.querySelector(formErrorsConfig.SELECTORS.BTN_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);\n    });\n  }\n\n  /**\n   * @param {{ error: any; errorFields: any; errorMessage: any; }} res\n   */\n  handleRes(res) {\n    const { error, errorFields, errorMessage } = res;\n    if (error == 'PASSWORD_ORCKESTRA_MISMATCH') {\n      return;\n    }\n    if (errorFields) {\n      showFieldsErrors(this.$el, errorFields);\n    }\n    if (errorMessage) {\n      showGlobalError(this.$el, errorMessage);\n    } else if (error && error != true) {\n      showGlobalError(this.$el, error);\n    }\n  }\n\n  cleanCustomError() {\n    const errorFields = this.$el.querySelectorAll(formErrorsConfig.SELECTORS.JS_ERROR_MESSAGE); //.js-input-error-message\n    const globaError = this.$el.querySelectorAll(formErrorsConfig.SELECTORS.JS_FORM_WARNING); // .js-form-error-message\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.removeChild(err);\n          // TODO: use a clean function to do this\n          parent.querySelector('input').classList.remove(formErrorsConfig.CLASSES.HAS_ERRORS);\n          err.classList.remove(formErrorsConfig.CLASSES.HAS_ERRORS);\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 {HTMLFormElement} form\n   * @return {Object} form data in json format\n   */\n  serializeForm(form) {\n    return new Serialize(form);\n  }\n}\n"],"sourceRoot":""}