{"version":3,"sources":["webpack:///./src/client/default/js/components/citrusComponent.js","webpack:///./src/client/default/js/base/baseComponent.js","webpack:///./src/client/default/js/libs/Axios.js"],"names":["CitrusComponent","element","initCall","a","get","this","$options","endpoint","params","placement","category","slotId","slotid","maxAdsNumber","maxnumberofads","variantName","itemType","searchTerm","isPromo","isWeb","data","parentDiv","insertBefore","$el","closest","parsedHTML","DOMParser","parseFromString","body","childNodes","child","innerHTML","console","error","BaseComponent","_componentElement","setAttribute","_checkMessages","compOptions","options","dataset","Object","keys","filter","entry","includes","forEach","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","convertType","deepFreeze","getAttribute","events","cb","elements","Bean","on","e","stopPropagation","one","off","fire","container","message","_loading","EMIT","CUSTOM_MESSAGES","LOADER_EVENTS","show","document","icon","setTimeout","hide","option","optionReturn","key","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent","axios","Axios","create","transformRequest","headers","skiptransform","entries","formData","FormData","value","append","recaptchaToken","googleRecaptchaAction","googleRecaptchaClientSide","Promise","resolve","reject","window","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","length","orderedPush","sort","promoA","promoB","rank","notifications","pushPromoPost","CancelToken","post","all","spread"],"mappings":"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","file":"js/component-citrusComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\nimport { get } from '../libs/Axios';\n\nexport default class CitrusComponent extends BaseComponent {\n constructor(element) {\n super(element);\n this.initCall();\n }\n\n async initCall() {\n try {\n const { data } = await get(this.$options.endpoint, {\n params: {\n placement: this.$options.placement,\n category: this.$options.category,\n slotId: this.$options.slotid,\n maxAdsNumber: this.$options.maxnumberofads,\n variantName: this.$options.variantName,\n itemType: this.$options.itemType,\n searchTerm: this.$options.searchTerm,\n isPromo: this.$options.isPromo,\n isWeb: true\n }\n });\n if (data) {\n let parentDiv = this.$options.insertBefore ? this.$el.closest(this.$options.insertBefore) : null;\n if (!parentDiv) {\n this.$el.innerHTML = data;\n } else {\n let parsedHTML = new DOMParser().parseFromString(data, 'text/html');\n for (let child of parsedHTML.body.childNodes) {\n parentDiv.insertBefore(child, this.$el);\n }\n }\n }\n } catch (err) {\n console.error(err);\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":""}