{"version":3,"sources":["webpack:///./src/client/default/js/components/slotContainerComponent.js","webpack:///./src/client/default/js/base/baseComponent.js"],"names":["slotContainerComponent","element","handleClick","promoClick","elements","this","$el","querySelectorAll","SELECTORS","length","forEach","el","addEventListener","e","dataset","promovalues","data","JSON","parse","stringify","filteredPromoDataset","Object","keys","filter","key","includes","reduce","obj","window","dataLayer","push","event","ecommerce","promotions","ga4TrackingObj","ga4tracking","promo_title","promoTitle","promo_template","promoTemplate","promo_type","promoType","promo_format","promoFormat","BaseComponent","_componentElement","setAttribute","_checkMessages","compOptions","options","entry","optionValue","cleanEntry","cleanOptionKey","replace","convertType","deepFreeze","getAttribute","events","cb","Bean","on","stopPropagation","one","off","fire","container","message","_loading","EMIT","CUSTOM_MESSAGES","LOADER_EVENTS","show","document","body","error","icon","setTimeout","hide","option","optionReturn","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent"],"mappings":"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","file":"js/component-slotContainerComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\n\nexport default class slotContainerComponent extends BaseComponent {\n  get SELECTORS() {\n    return {\n      promoClick: '.promoclick'\n    };\n  }\n  constructor(element) {\n    super(element);\n    this.handleClick();\n  }\n\n  handleClick() {\n    var elements = this.$el.querySelectorAll(this.SELECTORS.promoClick);\n    if (elements && elements.length > 0) {\n      elements.forEach((el) => {\n        el.addEventListener('click', (e) => {\n          if (!!el && !!el.dataset) {\n            let promovalues = ['id', 'name', 'creative', 'position'];\n            let data = JSON.parse(JSON.stringify(el.dataset));\n            let filteredPromoDataset = Object.keys(data)\n              .filter((key) => promovalues.includes(key))\n              .reduce((obj, key) => {\n                obj[key] = data[key];\n                return obj;\n              }, {});\n            window.dataLayer.push({\n              event: 'promotion click',\n              ecommerce: {\n                promoClick: {\n                  promotions: [filteredPromoDataset]\n                }\n              }\n            });\n            let ga4TrackingObj = {};\n            if (data && data.ga4tracking == 'true') {\n              ga4TrackingObj = {\n                event: 'promo_click',\n                promo_title: data.promoTitle != 'null' ? data.promoTitle : '',\n                promo_template: data.promoTemplate != 'null' ? data.promoTemplate : '',\n                promo_type: data.promoType != 'null' ? data.promoType : '',\n                promo_format: data.promoFormat != 'null' ? data.promoFormat : ''\n              };\n            }\n            if (Object.keys(ga4TrackingObj).length > 0) {\n              window.dataLayer.push(ga4TrackingObj);\n            }\n          }\n        });\n      });\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"],"sourceRoot":""}