{"version":3,"sources":["webpack:///./src/client/default/js/components/promoSwitchViewComponent.js","webpack:///./src/client/default/js/base/baseComponent.js","webpack:///./src/client/default/js/utilities/youMightNotNeedJQuery.js"],"names":["promoSwitchViewComponent","element","targets","$el","querySelectorAll","SELECTORS","currentElement","forEach","el","classList","add","CLASSES","hidden","querySelector","length","makeVisible","$on","event","targetId","currentTarget","getAttribute","setAttribute","toggle","newCurrentElement","fadeOutCurrentElement","$triggers","triggers","show","this","_triggers","fadeIn","console","log","$options","remove","fadeOut","BaseComponent","_componentElement","_checkMessages","compOptions","options","dataset","Object","keys","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","replace","convertType","deepFreeze","events","cb","elements","Bean","on","e","stopPropagation","one","off","fire","container","message","_loading","EMIT","CUSTOM_MESSAGES","LOADER_EVENTS","document","body","error","icon","setTimeout","hide","option","optionReturn","key","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent","outerWidth","width","offsetWidth","style","getComputedStyle","parseInt","marginLeft","marginRight","appendChildren","children","HTMLCollection","HTMLElement","documentFragment","createDocumentFragment","child","Array","isArray","appendChild","isObject","value","type","_typeof","Symbol","iterator","obj","constructor","prototype","opacity","fade","val","parseFloat","requestAnimationFrame"],"mappings":"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","file":"js/component-promoSwitchViewComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../base/baseComponent';\nimport { fadeIn, fadeOut } from '../utilities/youMightNotNeedJQuery';\n\nexport default class promoSwitchViewComponent extends BaseComponent {\n get SELECTORS() {\n return {\n targets: '.transition-target',\n triggers: '.transition-trigger',\n currentElement: '.transition-active-element'\n };\n }\n\n get CLASSES() {\n return {\n show: 'transition-show',\n hidden: 'transition-hidden',\n currentElement: 'transition-active-element'\n };\n }\n\n constructor(element) {\n super(element);\n let targets = /** @type {HTMLElement[]} */ ([...this.$el.querySelectorAll(`${this.SELECTORS.targets}:not(${this.SELECTORS.currentElement})`)]);\n targets.forEach((el) => el.classList.add(this.CLASSES.hidden));\n let currentElement = /** @type {HTMLElement} */ this.$el.querySelector(this.SELECTORS.currentElement);\n if (!currentElement && targets.length > 0) this.makeVisible(targets[0]);\n this.$on(\n 'click',\n /** @param {Event} event */ (event) => {\n let target = /** @type {HTMLElement}*/ (event.currentTarget);\n let targetId = /** @type {string} */ (target.getAttribute('data-option-target'));\n this.$el.querySelector('.promo-switch').setAttribute('data-active', targetId);\n this.$el.querySelector('.transition-trigger.active').classList.toggle('active');\n this.$el.querySelector(`[data-option-target=\"${targetId}\"]`).classList.toggle('active');\n if (!targetId) return;\n let newCurrentElement = /** @type {HTMLElement} */ (this.$el.querySelector(`#${targetId}`));\n if (!newCurrentElement) return;\n this.fadeOutCurrentElement();\n this.makeVisible(newCurrentElement);\n },\n this.$el,\n this.$triggers\n );\n }\n\n /**\n * @returns {HTMLElement[]}\n */\n get $triggers() {\n if (!this._triggers) this._triggers = /** @type {HTMLElement[]} */ ([...this.$el.querySelectorAll(this.SELECTORS.triggers)]);\n return this._triggers;\n }\n\n /**\n * @param {HTMLElement} el\n */\n makeVisible(el) {\n el.classList.add(this.CLASSES.currentElement);\n fadeIn(el);\n console.log(this.$options);\n }\n\n fadeOutCurrentElement() {\n let currentElement = /** @type {HTMLElement} */ (this.$el.querySelector(this.SELECTORS.currentElement));\n if (!currentElement) return;\n currentElement.classList.remove(this.CLASSES.currentElement);\n fadeOut(currentElement);\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","/**\n * Function that behaves like jquery outerWidth\n * @param {HTMLElement} el\n */\nexport function outerWidth(el) {\n var width = el.offsetWidth;\n var style = getComputedStyle(el);\n\n width += parseInt(style.marginLeft) + parseInt(style.marginRight);\n return width;\n}\n\n/**\n * append multiple childs\n * @param {HTMLElement} el\n * @param {HTMLElement|HTMLElement[]|HTMLCollection} children\n */\nexport function appendChildren(el, children) {\n if (!el || !children) return;\n if (children instanceof HTMLCollection) children = /** @type {HTMLElement[]}*/ ([...children]);\n if (children instanceof HTMLElement) children = [children];\n // use a document Fragment to prevent reflow.\n const documentFragment = document.createDocumentFragment();\n children.forEach((child) => {\n if (Array.isArray(child)) {\n child.forEach((child) => documentFragment.appendChild(child));\n } else {\n documentFragment.appendChild(child);\n }\n });\n el.appendChild(documentFragment);\n}\n\n/**\n * Function that behaves like jquery position\n * @param {HTMLElement} el\n */\nexport function position(el) {\n return { left: el.offsetLeft, top: el.offsetTop };\n}\n\nexport function isObject(value) {\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n return type === 'function' || (type === 'object' && !!value);\n}\n\nexport const _typeof =\n typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'\n ? function(obj) {\n return typeof obj;\n }\n : function(obj) {\n return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n };\n\n/**\n * Function that simulates jquery effect of fade in\n * @param {HTMLElement} el\n * @param {String} [display]\n */\nexport function fadeIn(el, display = 'block') {\n el.style.opacity = '0';\n el.classList.remove('transition-hidden');\n el.classList.add('transition-show');\n\n (function fade() {\n let val = parseFloat(el.style.opacity);\n if ((val += 0.1) <= 1) {\n el.style.opacity = `${val}`;\n requestAnimationFrame(fade);\n }\n })();\n}\n\n/**\n * Function that simulates jquery effect of fade in\n * @param {HTMLElement} el\n */\nexport function fadeOut(el) {\n el.style.opacity = '1';\n\n (function fade() {\n let val = parseFloat(el.style.opacity);\n if ((val -= 0.1) < 0) {\n el.classList.remove('transition-show');\n el.classList.add('transition-hidden');\n } else {\n el.style.opacity = `${val}`;\n requestAnimationFrame(fade);\n }\n })();\n}\n"],"sourceRoot":""}