{"version":3,"sources":["webpack:///./src/client/default/js/components/searchBarComponent.js","webpack:///./src/client/default/js/base/baseComponent.js","webpack:///./src/client/default/js/libs/Axios.js"],"names":["SearchBar","element","$extWrapper","$el","querySelector","$wrapper","$input","$clearSearch","SELECTORS","clearSearch","$multiSearch","multiSearch","init","addSearchButtonOnClickAnalytics","document","activeElement","open","$on","childElementCount","close","lastEl","querySelectorAll","at","multiSearchButton","focus","e","preventDefault","classList","remove","CLASSES","showClear","value","getSuggestions","setState","isOpen","this","CUSTOM_MESSAGES","PRODUCT_SEARCH_EVENTS","closeSearchBar","input","wrapper","header","submitButton","extWrapper","staticBanner","citrusBanner","active","showSuggestions","innerText","add","state","changes","timeslotExpiryAlert","EMIT","INTERACTION","PUSH","id","bind","startSuggestions","body","clickOutsite","blur","REMOVE","innerHTML","checkSuggestionsContent","$off","BODY","TOGGLE_OVERLAY","query","a","cleanQuery","trim","length","get","dataset","popularUrl","data","success","result","endLoading","addSearchSuggestionsOnClickAnalytics","loading","url","encodeURIComponent","debounce","currentTarget","contains","target","that","forEach","btn","onclick","onClickAnalytics","bannerButton","searchResultsProducts","getElementsByClassName","appendOnClickToSearchResults","searchResultsCategory","searchResultsPopular","searchResults","searchSection","slice","call","children","child","searchAction","searchSelection","categoriesNames","getKeywords","productsNames","suggestionNames","searchTerm","getElementsByName","el","inputValue","searchSuggestion","window","dataLayer","push","event","search_term","search_action","search_suggestion","join","search_selection","search_section","listClassName","htmlList","map","BaseComponent","_componentElement","setAttribute","_checkMessages","compOptions","options","Object","keys","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","convertType","deepFreeze","getAttribute","events","cb","elements","Bean","on","stopPropagation","one","off","fire","container","message","_loading","LOADER_EVENTS","show","error","icon","setTimeout","hide","option","optionReturn","key","str","charAt","toLocaleLowerCase","BaseGiaComponent","axios","Axios","create","transformRequest","headers","skiptransform","entries","formData","FormData","append","recaptchaToken","googleRecaptchaAction","googleRecaptchaClientSide","Promise","resolve","reject","grecaptcha","ready","execute","action","then","token","defaults","common","interceptors","request","use","config","googleRecaptchaToken","response","commonInterface","CommonInterface","pushState","replaceState","history","redirectUrl","location","href","hrefUrl","paybackParam","isPaybackPopupActive","indexOf","trialParam","subscriptionTrialModalNotEligibleAfterLogin","fromEntries","res","notificationPush","showNotification","pushPromoPre","orderedPush","sort","promoA","promoB","rank","notifications","pushPromoPost","CancelToken","post","all","spread"],"mappings":"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","file":"js/component-searchBarComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\nimport { debounce } from 'underscore';\nimport { get } from '../libs/Axios';\n\nexport default class SearchBar extends BaseComponent {\n get Messages() {\n return {\n [this.CUSTOM_MESSAGES.PRODUCT_SEARCH_EVENTS.closeSearchBar]: this.close\n };\n }\n\n get SELECTORS() {\n return {\n input: '.input-bar',\n clearSearch: '.js-clear-btn',\n wrapper: '.suggestions-wrapper',\n header: 'header.header',\n multiSearch: '.multi-search',\n submitButton: '.js-search-btn',\n extWrapper: '.suggestions-ext-wrapper',\n staticBanner: '.search-bar-banner',\n citrusBanner: '.citrus-component-wrapper'\n };\n }\n\n get CLASSES() {\n return {\n showClear: 'show',\n active: 'active',\n showSuggestions: 'suggestions-true'\n };\n }\n\n constructor(element) {\n super(element);\n this.$extWrapper = /** @type {HTMLElement} */ (this.$el.querySelector('.suggestions-ext-wrapper'));\n this.$wrapper = /** @type {HTMLElement} */ (this.$el.querySelector('.suggestions-wrapper'));\n this.$input = /** @type {HTMLInputElement} */ (this.$el.querySelector('.input-bar'));\n this.$clearSearch = /** @type {HTMLElement} */ (this.$el.querySelector(this.SELECTORS.clearSearch));\n this.$multiSearch = /** @type {HTMLElement} */ (this.$el.querySelector(this.SELECTORS.multiSearch));\n\n this.init();\n\n this.addSearchButtonOnClickAnalytics();\n if (this.$input === document.activeElement) {\n this.open();\n }\n this.$on(\n 'focus.openSearchBar',\n () => {\n this.open();\n },\n this.$input\n );\n this.$on(\n 'blur.closeSearchBar',\n () => {\n if (this.$wrapper.childElementCount == 0 && this.$extWrapper.childElementCount == 0) {\n this.close();\n } else {\n let lastEl = [...document.querySelectorAll('#search-results a')].at(-1);\n let multiSearchButton = this.$multiSearch?.querySelector('button');\n this.$on(\n 'blur',\n () => {\n this.close();\n if (multiSearchButton) {\n multiSearchButton.focus();\n }\n },\n lastEl\n );\n }\n },\n this.$input\n );\n this.$on(\n 'click.clearSearchBar',\n (e) => {\n e.preventDefault();\n this.$clearSearch.classList.remove(this.CLASSES.showClear);\n this.$input.value = '';\n this.getSuggestions('');\n },\n this.$clearSearch\n );\n this.$on(\n 'click.closeSearchBar',\n (e) => {\n e.preventDefault();\n this.setState({\n isOpen: false\n });\n },\n this.$clearSearch.querySelector('span')\n );\n }\n\n init() {\n if (document.querySelector('.js-search-keyword')) {\n this.$input.value = document.querySelector('.js-search-keyword').innerText;\n this.$clearSearch.classList.add(this.CLASSES.showClear);\n }\n }\n\n open() {\n this.setState({\n isOpen: true\n });\n /* added this condition for the specific case where the search is already open\n and the user deletes then search the same keyword twice. This generate no changes\n hence stateChange is not triggered and the search must be started manually */\n if (this.state.isOpen && this.$input.value != '') {\n this.$clearSearch.classList.add(this.CLASSES.showClear);\n this.getSuggestions(this.$input.value);\n }\n }\n\n close() {\n this.setState({\n isOpen: false\n });\n }\n\n stateChange(changes) {\n if ('isOpen' in changes) {\n let timeslotExpiryAlert = document.querySelector('.timeslot-expiry-alert');\n if (changes.isOpen) {\n this.$multiSearch ? this.$multiSearch.classList.remove('no-display') : '';\n if (timeslotExpiryAlert) {\n timeslotExpiryAlert.classList.add('under-search');\n }\n this.$el.classList.add(this.CLASSES.active);\n this.EMIT(this.CUSTOM_MESSAGES.INTERACTION.PUSH, {\n id: 'searchBarComponent',\n close: this.close.bind(this)\n });\n this.startSuggestions();\n\n // this.EMIT(this.CUSTOM_MESSAGES.BODY.TOGGLE_OVERLAY, {\n // scroll: false,\n // searchBar: true\n // });\n\n document.querySelector('.header').classList.add('overlay-search-bar');\n document.body.classList.add('no-scroll');\n this.$on('click.outsite', this.clickOutsite.bind(this), document.body);\n this.getSuggestions(this.$input.value);\n } else {\n this.$multiSearch ? this.$multiSearch.classList.add('no-display') : '';\n this.$input.blur();\n this.EMIT(this.CUSTOM_MESSAGES.INTERACTION.REMOVE, {});\n this.$el.classList.remove(this.CLASSES.active);\n if (timeslotExpiryAlert) {\n timeslotExpiryAlert.classList.remove('under-search');\n }\n this.$wrapper.innerHTML = '';\n this.checkSuggestionsContent();\n // this.$input.value = '';\n this.$off('click.outsite', document.body);\n this.EMIT(this.CUSTOM_MESSAGES.BODY.TOGGLE_OVERLAY, {});\n document.querySelector('.header').classList.remove('overlay-search-bar');\n document.body.classList.remove('no-scroll');\n }\n }\n if ('input' in changes) {\n this.getSuggestions(changes.input);\n }\n }\n\n async getSuggestions(query) {\n let cleanQuery = query.trim();\n if (cleanQuery.length < 3) {\n cleanQuery == '' ? this.$clearSearch.classList.remove(this.CLASSES.showClear) : this.$clearSearch.classList.add(this.CLASSES.showClear);\n this.$wrapper.innerHTML = '';\n this.checkSuggestionsContent();\n const { data } = await get(this.$wrapper.dataset.popularUrl);\n const { success, result } = data;\n this.$el.querySelector(this.SELECTORS.staticBanner).classList.remove('d-none');\n this.endLoading(this.$wrapper);\n if (success) {\n this.$wrapper.innerHTML = result;\n this.checkSuggestionsContent();\n } else {\n this.$wrapper.innerHTML = '';\n this.checkSuggestionsContent();\n }\n this.$el.querySelector(this.SELECTORS.citrusBanner)?.classList.add('d-none');\n this.addSearchSuggestionsOnClickAnalytics();\n return;\n }\n this.$clearSearch.classList.add(this.CLASSES.showClear);\n this.$el.querySelector(this.SELECTORS.staticBanner).classList.add('d-none');\n this.$wrapper.innerHTML = '';\n this.loading(this.$wrapper);\n this.checkSuggestionsContent();\n const { data } = await get(this.$wrapper.dataset.url + encodeURIComponent(cleanQuery));\n const { success, result } = data;\n this.endLoading(this.$wrapper);\n if (success) {\n this.$wrapper.innerHTML = result;\n this.checkSuggestionsContent();\n } else {\n this.$wrapper.innerHTML = '';\n this.checkSuggestionsContent();\n }\n this.addSearchSuggestionsOnClickAnalytics();\n this.$el.querySelector(this.SELECTORS.citrusBanner)?.classList.remove('d-none');\n }\n\n startSuggestions() {\n this.$on(\n 'input.search-bar',\n debounce((e) => {\n if (this.$input === document.activeElement) {\n this.open();\n }\n this.setState({\n input: /** @type {HTMLInputElement} */ (e.currentTarget).value\n });\n }, 250),\n this.$input\n );\n }\n\n clickOutsite(e) {\n if (!this.$el.contains(/** @type {HTMLElement} */ (e.target)) && this.$input !== document.activeElement) {\n this.setState({\n isOpen: false\n });\n }\n }\n\n checkSuggestionsContent() {\n this.$el.classList[this.$wrapper.innerHTML == '' ? 'remove' : 'add'](this.CLASSES.showSuggestions);\n }\n\n addSearchButtonOnClickAnalytics() {\n var that = this;\n var submitButtons = [...document.querySelectorAll(this.SELECTORS.submitButton)];\n submitButtons.forEach((btn) => {\n btn.onclick = function() {\n that.onClickAnalytics('Submit', '', '');\n };\n });\n var multiSearchButton = this.$multiSearch?.querySelector('button');\n multiSearchButton.onclick = function() {\n that.onClickAnalytics('Click_Keyword', 'ricerca veloce', 'ricerca veloce');\n };\n var bannerButton = this.$el.querySelector(this.SELECTORS.staticBanner);\n if (bannerButton) {\n bannerButton.onclick = function() {\n that.onClickAnalytics('Click_Keyword', 'search banner', 'search banner');\n };\n }\n }\n\n addSearchSuggestionsOnClickAnalytics() {\n var searchResultsProducts = document.getElementsByClassName('search-results-products');\n this.appendOnClickToSearchResults(searchResultsProducts, 'Keyword_suggestion');\n var searchResultsCategory = document.getElementsByClassName('search-results-category');\n this.appendOnClickToSearchResults(searchResultsCategory, 'listing');\n var searchResultsPopular = document.getElementsByClassName('search-results-recent');\n this.appendOnClickToSearchResults(searchResultsPopular, 'prodotti_piu_cercati');\n }\n\n appendOnClickToSearchResults(searchResults, searchSection) {\n var that = this;\n if (searchResults[0]) {\n [].slice.call(searchResults[0].children).forEach((child) => {\n if (child.children[0]) {\n child.children[0].onclick = function() {\n that.onClickAnalytics('Click_Keyword', child.children[0].innerText, searchSection);\n };\n }\n });\n }\n }\n\n onClickAnalytics(searchAction, searchSelection, searchSection) {\n var categoriesNames = this.getKeywords('search-results-category');\n var productsNames = this.getKeywords('search-results-products');\n var suggestionNames = this.getKeywords('popular-suggestions');\n var searchTerm = null;\n [...document.getElementsByName('search-bar-form')]?.forEach((el) => {\n if (searchTerm) return;\n let inputValue = el.querySelector('.input-bar')?.value;\n if (inputValue) {\n searchTerm = inputValue;\n }\n });\n var searchSuggestion = [...categoriesNames, ...productsNames, ...suggestionNames];\n if (window.dataLayer) {\n window.dataLayer.push({\n event: 'search',\n search_term: searchTerm ? searchTerm : 'search_interaction',\n search_action: searchAction,\n search_suggestion: searchSuggestion.join(','),\n search_selection: searchSelection,\n search_section: searchSection\n });\n }\n }\n\n getKeywords(listClassName) {\n var htmlList = document.getElementsByClassName(listClassName);\n\n return htmlList[0]\n ? [].slice.call(htmlList[0].children).map((child) => {\n return child.innerText;\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","import Axios from 'axios';\nimport CommonInterface from '../base/commonInterface';\nimport CustomMessages from '../constants/customMessages';\n\n\nconst axios = Axios.create({\n transformRequest: [function (data, headers) {\n if (headers && headers.skiptransform) {\n delete headers.skiptransform;\n return data;\n }\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\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\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\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 && window.grecaptcha) {\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\n// Add a response interceptor\naxios.interceptors.response.use(function (response) {\n let commonInterface = new CommonInterface();\n if (response.data && response.data.pushState || response.data.replaceState) {\n response.data.pushState && history.pushState({}, '', response.data.pushState);\n response.data.replaceState && history.replaceState({}, '', response.data.replaceState);\n if (response.data.redirectUrl) {\n setTimeout(() => {\n location.href = response.data.redirectUrl;\n }, 500);\n }\n }\n else if (response.data && response.data.redirectUrl) {\n let hrefUrl=response.data.redirectUrl;\n let paybackParam = '';\n if (response.data.isPaybackPopupActive) {\n paybackParam = hrefUrl.indexOf('?') > -1 ? '&isPaybackPopupActive=true' : '?isPaybackPopupActive=true';\n }\n hrefUrl =hrefUrl+paybackParam;\n let trialParam = '';\n if (response.data.subscriptionTrialModalNotEligibleAfterLogin) {\n trialParam = hrefUrl.indexOf('?') > -1 ? '&subscriptionTrialModalNotEligibleAfterLogin=true' : '?subscriptionTrialModalNotEligibleAfterLogin=true';\n } \n location.href = hrefUrl+trialParam;\n }\n if (response.data && response.data.error) {\n if(response.config.data instanceof FormData) {\n response.config.data = Object.fromEntries(response.config.data);\n response.config.headers['Content-Type'] = \"application/json\"\n }\n commonInterface.EMIT(`error.${response.data.error}`, {res: response});\n }\n\n if (response.data && response.data.notificationPush && response.data.notificationPush.showNotification) {\n commonInterface.EMIT(`notification:push`, response.data.notificationPush);\n }\n\n if (response.data && response.data.pushPromoPre && response.data.pushPromoPre.length > 0) {\n const orderedPush = response.data.pushPromoPre.sort(function(promoA, promoB) {\n return promoA.rank > promoB.rank ? -1 : promoB.rank > promoA.rank ? 1 : 0;\n });\n commonInterface.EMIT(`notification:pushFirstAvailable`, { notifications: orderedPush });\n }\n \n if (response.data && response.data.pushPromoPost) {\n commonInterface.EMIT(`notification:pushall`, response.data.pushPromoPost);\n }\n\n\n // Any status code that lie within the range of 2xx cause this function to trigger\n // Do something with response data\n return response;\n}, function (error) {\n if (error.response?.data && error.response?.data?.redirectUrl) {\n location.href = error.response.data.redirectUrl;\n }\n\n // Any status codes that falls outside the range of 2xx cause this function to trigger\n // Do something with response error\n return Promise.reject(error);\n});\n\nexport const { CancelToken } = Axios;\n\nexport const {\n get, post, all, spread, request\n} = axios;\n"],"sourceRoot":""}