{"version":3,"sources":["webpack:///./src/client/default/js/components/miniCartComponent.js","webpack:///./src/client/default/js/base/baseComponent.js"],"names":["MiniCartComponent","element","initClickEvent","checkScrollTop","this","CUSTOM_MESSAGES","UPDATE_CART_EVENTS","quantityUpdate","updateBadgeQty","totalPriceUpdate","updateTotalPrice","closeMinicart","resetLayer","maxLineItemsExceeded","BREAKPOINTER","BREAKPOINT_CHANGE","onBreakpointChange","infoStrip","mainHeader","badge","tooltip","priceBadge","totalPrice","button","closeButton","pushApp","floatingError","floatingErrorMessage","HIDE_BADGE","NO_HOVER","SHOW_TOOLTIP","SCROLL_TOP","SHOW_MINICART_TOOLTIP","cartQty","anchorButtonReplacer","parseInt","$el","dataset","appPostMessage","qtyInCart","error","console","_this","$on","EVENTS_ID","event","handleEmptyCartClick","e","preventDefault","miniCartTooltip","querySelector","SELECTORS","classList","contains","CLASSES","remove","add","setTimeout","value","$off","innerHTML","setAttribute","total","replace","trim","lastScrollTop","window","addEventListener","st","pageYOffset","document","documentElement","scrollTop","$options","sidebar","initialStateButton","ariaLabel","getAttribute","isMobile","tagName","anchor","createElement","href","removeChild","appendChild","isDesktop","body","className","moveInfostrip","scrollTo","insertBefore","nextSibling","firstChild","message","timeout","closeBtn","innerText","style","display","clearTimeout","action","BaseComponent","_componentElement","_checkMessages","compOptions","options","Object","keys","filter","entry","includes","forEach","optionValue","cleanEntry","cleanOptionKey","JSON","parse","convertType","deepFreeze","events","cb","elements","Bean","on","stopPropagation","one","off","fire","container","_loading","EMIT","LOADER_EVENTS","show","icon","hide","option","optionReturn","key","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent"],"mappings":"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","file":"js/component-miniCartComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\nimport { appPostMessage } from '../utilities/postMessage';\n\nexport default class MiniCartComponent extends BaseComponent {\n  get Messages() {\n    return {\n      [this.CUSTOM_MESSAGES.UPDATE_CART_EVENTS.quantityUpdate]: this.updateBadgeQty,\n      [this.CUSTOM_MESSAGES.UPDATE_CART_EVENTS.totalPriceUpdate]: this.updateTotalPrice,\n      [this.CUSTOM_MESSAGES.UPDATE_CART_EVENTS.closeMinicart]: this.resetLayer,\n      [this.CUSTOM_MESSAGES.UPDATE_CART_EVENTS.maxLineItemsExceeded]: this.maxLineItemsExceeded,\n      [this.CUSTOM_MESSAGES.BREAKPOINTER.BREAKPOINT_CHANGE]: this.onBreakpointChange\n    };\n  }\n\n  get SELECTORS() {\n    return {\n      infoStrip: '.information-strip.is-visible',\n      mainHeader: 'header.header',\n      badge: '.minicart__badge',\n      tooltip: '.minicart__tooltip',\n      priceBadge: '.minicart__pricebadge',\n      totalPrice: '.minicart__totalprice',\n      button: '.minicart__button',\n      closeButton: '.minicart-close',\n      pushApp: '.push-app-content-wrapper',\n      floatingError: '.floating-error',\n      floatingErrorMessage: '.floating-error-message'\n    };\n  }\n\n  get CLASSES() {\n    return {\n      HIDE_BADGE: 'no-show',\n      NO_HOVER: 'no-hover',\n      SHOW_TOOLTIP: 'visible',\n      SCROLL_TOP: 'scroll-top'\n    };\n  }\n\n  get EVENTS_ID() {\n    return {\n      SHOW_MINICART_TOOLTIP: 'click.miniCart'\n    };\n  }\n\n  constructor(element) {\n    super(element);\n\n    this.initClickEvent();\n    this.checkScrollTop();\n  }\n\n  initClickEvent() {\n    let cartQty;\n    this.anchorButtonReplacer();\n    try {\n      cartQty = parseInt(this.$el.dataset.cartQty);\n      appPostMessage({ qtyInCart: cartQty });\n    } catch (error) {\n      console.error(error);\n    }\n    if (cartQty == 0) {\n      const _this = this;\n      this.$on(this.EVENTS_ID.SHOW_MINICART_TOOLTIP, (event) => this.handleEmptyCartClick(event, _this));\n    }\n  }\n\n  handleEmptyCartClick(e, _this) {\n    e.preventDefault();\n    const miniCartTooltip = _this.$el.querySelector(_this.SELECTORS.tooltip);\n    if (miniCartTooltip) {\n      if (miniCartTooltip.classList.contains(_this.CLASSES.SHOW_TOOLTIP)) {\n        miniCartTooltip.classList.remove(_this.CLASSES.SHOW_TOOLTIP);\n      } else {\n        miniCartTooltip.classList.add(_this.CLASSES.SHOW_TOOLTIP);\n        setTimeout(() => {\n          miniCartTooltip.classList.remove(_this.CLASSES.SHOW_TOOLTIP);\n        }, 2500);\n      }\n    }\n  }\n\n  updateBadgeQty(value) {\n    const badge = this.$el.querySelector(this.SELECTORS.badge);\n    this.$off(this.EVENTS_ID.SHOW_MINICART_TOOLTIP);\n    if (parseInt(value.value) > 0) {\n      badge.classList.remove(this.CLASSES.HIDE_BADGE);\n      this.$el.classList.add(this.CLASSES.NO_HOVER);\n    } else {\n      const _this = this;\n      this.$el.classList.remove(this.CLASSES.NO_HOVER);\n      this.$on(this.EVENTS_ID.SHOW_MINICART_TOOLTIP, (event) => this.handleEmptyCartClick(event, _this));\n      badge.classList.add(this.CLASSES.HIDE_BADGE);\n    }\n    badge.innerHTML = value.value;\n    let button = this.$el.querySelector(this.SELECTORS.button);\n    if (button) {\n      button.setAttribute(\n        'aria-label',\n        `Carrello${parseInt(value.value) > 0 ? ', ' + parseInt(value.value) + (parseInt(value.value) > 1 ? ' prodotti' : ' prodotto') : ''}${\n          value.total && parseInt(value.value) > 0 ? ', totale ' + value.total.replace('€', '').trim() + '€' : ''\n        }`\n      );\n    }\n    appPostMessage({ qtyInCart: value.value });\n  }\n\n  updateTotalPrice(value) {\n    const priceBadge = this.$el.querySelector(this.SELECTORS.priceBadge);\n    const totalPrice = this.$el.querySelector(this.SELECTORS.totalPrice);\n    if (value.value != 0) {\n      priceBadge.classList.remove(this.CLASSES.HIDE_BADGE);\n    } else {\n      priceBadge.classList.add(this.CLASSES.HIDE_BADGE);\n    }\n    totalPrice.innerHTML = value.value.replace('€', '').trim() + '€';\n    // appPostMessage({ priceInCart: value.value });\n  }\n\n  checkScrollTop() {\n    var lastScrollTop = 0;\n    window.addEventListener(\n      'scroll',\n      () => {\n        var st = window.pageYOffset || document.documentElement.scrollTop;\n        if (st > lastScrollTop && this.$el.classList.contains(this.CLASSES.SCROLL_TOP)) {\n          this.$el.classList.remove(this.CLASSES.SCROLL_TOP);\n        } else if (st < lastScrollTop && !this.$el.classList.contains(this.CLASSES.SCROLL_TOP)) {\n          this.$el.classList.add(this.CLASSES.SCROLL_TOP);\n        }\n        lastScrollTop = st <= 0 ? 0 : st;\n      },\n      false\n    );\n  }\n\n  onBreakpointChange() {\n    this.anchorButtonReplacer();\n  }\n\n  anchorButtonReplacer() {\n    if (this.$options.sidebar && !document.querySelector('body').classList.contains('cart')) {\n      let initialStateButton = this.$el.querySelector(this.SELECTORS.button);\n      let ariaLabel = initialStateButton.getAttribute('aria-label');\n      if (window.isMobile() && initialStateButton.tagName == 'BUTTON') {\n        var anchor = document.createElement('a');\n        anchor.setAttribute('href', this.$options.href);\n        anchor.setAttribute('class', 'minicart__button');\n        anchor.setAttribute('aria-label', ariaLabel);\n        this.$el.removeChild(initialStateButton);\n        this.$el.appendChild(anchor);\n      } else if (window.isDesktop() && initialStateButton.tagName == 'A') {\n        var button = document.createElement('button');\n        button.setAttribute('class', 'minicart__button');\n        button.setAttribute('aria-label', ariaLabel);\n        button.setAttribute('aria-haspopup', 'dialog');\n        button.setAttribute('aria-controls', 'carrello');\n        this.$el.removeChild(initialStateButton);\n        this.$el.appendChild(button);\n      }\n    }\n  }\n\n  resetLayer() {\n    setTimeout(() => {\n      document.body.className = document.body.className.replace(/\\bopenStoresList.*?\\b/g, '');\n      if (this.$options.moveInfostrip && document.querySelector(this.SELECTORS.infoStrip)) {\n        window.scrollTo(0, 0);\n        document.querySelector(this.SELECTORS.mainHeader).classList.remove('moveinfostrip');\n        document.querySelector(this.SELECTORS.mainHeader).classList.add('noanimation');\n        document\n          .querySelector(this.SELECTORS.mainHeader)\n          .insertBefore(\n            document.querySelector(this.SELECTORS.infoStrip),\n            document.querySelector(this.SELECTORS.pushApp)\n              ? document.querySelector(this.SELECTORS.pushApp).nextSibling\n              : document.querySelector(this.SELECTORS.mainHeader).firstChild\n          );\n      }\n      document.body.className = document.body.className.replace(/\\bopenExtraLayer.*?\\b/g, '');\n      document.body.className = document.body.className.replace(/\\bopenStoresList.*?\\b/g, '');\n      document.body.className = document.body.className.replace(/\\bopenSingleStoreDeliveryList.*?\\b/g, '');\n    }, 400);\n  }\n\n  maxLineItemsExceeded(message) {\n    var floatingError = document.querySelector(this.SELECTORS.floatingError);\n    var floatingErrorMessage = document.querySelector(this.SELECTORS.floatingErrorMessage);\n    var timeout;\n    if (floatingError && floatingErrorMessage) {\n      var closeBtn = floatingError.querySelector('.icon-close');\n      floatingErrorMessage.innerText = message.message;\n      floatingError.style.display = 'flex';\n      closeBtn.addEventListener('click', function() {\n        clearTimeout(timeout);\n        floatingError.style.display = 'none';\n      });\n      clearTimeout(timeout);\n      timeout = setTimeout(function() {\n        floatingError.style.display = 'none';\n      }, 6000);\n    } else {\n      appPostMessage({ action: 'MAX_ITEM_IN_CART', message: message.message });\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":""}