{"version":3,"sources":["webpack:///./src/client/default/js/constants/searchConstants.js","webpack:///./src/client/default/js/components/loadMoreComponent.js","webpack:///./src/client/default/js/base/baseComponent.js"],"names":["deepFreeze","SEARCH_ELEMENTS","LOAD_MORE","FILTERS","loadMoreComponent","_baseComponent","element","_this","_classCallCheck","_callSuper","_defineProperty","countTile","handleClick","infinityScroll","_inherits","_createClass","key","get","this","CUSTOM_MESSAGES","PROGRESSIVE_LOAD_PRODUCTS","updategrid","clickCta","value","_ref2","size","$el","click","name","url","arguments","length","undefined","window","location","href","replace","regex","RegExp","results","exec","decodeURIComponent","_this2","srule","getParameterByName","query","concat","$options","start","join","$on","e","loadMore","_this3","isLoadingEnded","document","querySelector","infinity","footer","classList","add","hash","indexOf","place","IntersectionObserver","entries","observer","isIntersecting","queque","disconnect","rootMargin","threshold","observe","isInfinity","remove","appPostMessage","action","EMIT","LOAD_MORE_EVENTS","clicked","SEARCH_CONSTANTS","TRACKING_EVENTS","update","eventCategory","eventAction","nProduct","extraTile","firstRegion","secondRegion","querySelectorAll","innerHTML","baseComponent","BaseComponent","_BaseGiaComponent","_componentElement","setAttribute","_checkMessages","compOptions","options","_objectSpread","dataset","Object","keys","filter","entry","includes","forEach","optionValue","cleanEntry","cleanOptionKey","JSON","parse","convertType","getAttribute","events","cb","elements","Bean","on","stopPropagation","one","off","fire","container","message","_loading","LOADER_EVENTS","show","body","error","icon","setTimeout","hide","option","optionReturn","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent"],"mappings":"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","file":"js/component-loadMoreComponent-js.chunks.js","sourcesContent":["import deepFreeze from '../utilities/freeze';\n\nexport default deepFreeze({\n  SEARCH_ELEMENTS: {\n    LOAD_MORE: 'search:load:more',\n    FILTERS: 'search:filters'\n  }\n});\n","import baseComponent from '../base/baseComponent';\nimport SEARCH_CONSTANTS from '../constants/searchConstants';\nimport { appPostMessage } from '../utilities/postMessage';\n\nexport default class loadMoreComponent extends baseComponent {\n  queque = false;\n  get Messages() {\n    return {\n      [this.CUSTOM_MESSAGES.PROGRESSIVE_LOAD_PRODUCTS.updategrid]: this.clickCta\n    };\n  }\n\n  get SELECTORS() {\n    return {};\n  }\n\n  constructor(element) {\n    super(element);\n    this.countTile();\n    this.handleClick();\n    this.infinityScroll();\n  }\n\n  clickCta({ size }) {\n    this.size = size;\n    this.$el.click();\n  }\n\n  getParameterByName(name, url = window.location.href) {\n    // eslint-disable-next-line no-useless-escape\n    name = name.replace(/[\\[\\]]/g, '\\\\$&');\n    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\n      results = regex.exec(url);\n    if (!results) return null;\n    if (!results[2]) return '';\n    return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n  }\n\n  handleClick() {\n    let srule = this.getParameterByName('srule');\n\n    const query = [].concat(srule ? `srule=${srule}` : null, `start=${this.$options.start}`, `sz=${this.$options.size}`).join('&');\n    this.$on('click.LoadMore', (e) => {\n      this.loadMore(query);\n    });\n  }\n\n  infinityScroll() {\n    let isLoadingEnded = document.querySelector('.js-infinity');\n\n    let observerOpt = { rootMargin: '0px 0px 400px 0px', threshold: [0.1] };\n\n    let observerCallback = (entries, observer) => {\n      if (!entries[0].isIntersecting) return;\n      if (!this.queque) {\n        let srule = this.getParameterByName('srule');\n        const query = [].concat(srule ? `srule=${srule}` : null, `start=${this.$options.start}`, `sz=${this.$options.size}`).join('&');\n        this.queque = true;\n        this.loadMore(query, true);\n        observer.disconnect();\n      }\n    };\n    if (this.$options.infinity) {\n      let footer = document.querySelector('footer');\n      if (footer) {\n        footer.classList.add('d-none');\n      }\n    }\n    if ((isLoadingEnded || window.location.hash.indexOf('size') == -1) && this.$options.infinity && this.$options.place !== 'Volantini') {\n      let observer = new IntersectionObserver(observerCallback, observerOpt);\n      observer.observe(this.$el);\n    }\n  }\n\n  loadMore(query, isInfinity) {\n    if (isInfinity) {\n      document.querySelector('body').classList.remove('js-infinity');\n    }\n    appPostMessage({ action: 'prodottiSuccessivi' });\n    this.EMIT(this.CUSTOM_MESSAGES.LOAD_MORE_EVENTS.clicked, {\n      value: query,\n      element: SEARCH_CONSTANTS.SEARCH_ELEMENTS.LOAD_MORE,\n      size: this.size,\n      isInfinity: isInfinity\n    });\n    if (this.$options.place == 'Volantini') {\n      this.EMIT(this.CUSTOM_MESSAGES.TRACKING_EVENTS.update, {\n        eventCategory: 'Volantini',\n        eventAction: 'Prodotti Succesivi'\n      });\n    }\n  }\n\n  countTile() {\n    var nProduct = document.querySelector('.number-of-product');\n    if (nProduct) {\n      var extraTile = 0;\n      var firstRegion = document.querySelector('.experience-firstComponent');\n      var secondRegion = document.querySelector('.experience-secondComponent');\n      var highlighted = document.querySelectorAll('.content-item-highlighted');\n      if (highlighted) {\n        extraTile = extraTile - document.querySelectorAll('.content-item-highlighted').length;\n      }\n      if (firstRegion && firstRegion.querySelector('.product.tile')) {\n        extraTile = extraTile + 1;\n      }\n      if (secondRegion && secondRegion.querySelectorAll('.product.tile')) {\n        extraTile = extraTile + secondRegion.querySelectorAll('.product.tile').length;\n      }\n      nProduct.innerHTML = +document.querySelector('.number-of-product').innerHTML + extraTile;\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":""}