{"version":3,"file":"component-einsteinCarousel.chunk.js","mappings":"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","sources":["webpack:///./assets/src/scripts/base/baseComponent.ts","webpack:///./assets/src/scripts/base/commonInterface.ts","webpack:///./assets/src/scripts/components/einsteinCarousel.ts","webpack:///./assets/src/scripts/components/productCarousel.ts","webpack:///./assets/src/scripts/constants/styles.ts","webpack:///./assets/src/scripts/utils/carouselUtils.ts","webpack:///./assets/src/scripts/utils/focusableElementUtils.ts"],"sourcesContent":["import deepFreeze from '../utils/freeze';\nimport CommonInterface from './commonInterface';\nimport Bean from 'bean';\nexport default class BaseComponent extends CommonInterface {\n /**\n *\n * constructor\n *\n * @param {Element} element\n */\n constructor(element) {\n super();\n this.observer = new IntersectionObserver(entries => {\n if (entries[0].isIntersecting) {\n const items = [...entries[0].target.querySelectorAll('[data-animated=\"false\"]')];\n items.forEach((item, i) => {\n setTimeout(() => {\n item.setAttribute('data-animated', 'true');\n }, 300 * i);\n });\n this.observer.unobserve(entries[0].target);\n }\n }, {\n threshold: 0.5\n });\n this._componentElement = element;\n this._componentElement.setAttribute('data-component-init', 'true');\n this.observer.observe(this._componentElement);\n }\n /**\n * @returns {HTMLElement}\n */\n get $el() {\n return this._componentElement;\n }\n get $options() {\n const compOptions = {};\n const options = Object.assign({}, 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 }\n else {\n optionValue = BaseComponent.convertType(options[entry]);\n }\n compOptions[cleanEntry] = optionValue;\n });\n return deepFreeze(compOptions);\n }\n get COMPONENT_NAME() {\n return this.__proto__.constructor.name;\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 return optionReturn;\n }\n static cleanOptionKey(key) {\n const str = key.replace('option', '');\n return `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\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)\n return;\n if (!elements) {\n Bean.on(element, events, (e) => {\n if (e)\n e.stopPropagation();\n cb(e);\n });\n }\n else {\n Bean.on(element, events, elements, (e) => {\n if (e)\n e.stopPropagation();\n cb(e);\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 * $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 * $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 * @param {HTMLElement} [container]\n */\n loading(container, message = '') {\n this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.show, {\n container: container || this.$el,\n message\n });\n }\n /**\n *\n * @param {HTMLElement} [container]\n * @param {String} [message]\n * @param {String} [icon]\n * @param {Boolean} [error=false]\n */\n endLoading(container, message, icon, error = false, time) {\n this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.hide, {\n container: container || this.$el,\n message,\n icon,\n error,\n time\n });\n }\n}\n","import config from 'gia/config';\nimport EventBus from '../libs/eventBus';\nimport CustomMessages from '../constants/customMessages';\nimport { getFirstFocusable, getAllFocusableElements } from '../utils/focusableElementUtils';\nexport default class CommonInterface {\n constructor() {\n config.set('log', true);\n this._grabMessages();\n }\n get CUSTOM_MESSAGES() {\n return CustomMessages;\n }\n get Messages() {\n return {};\n }\n _checkMessages() {\n for (const message in this.Messages) {\n if (window.eventQueue.get(message)) {\n const ref = this.Messages[message].bind(this);\n window.eventQueue.get(message).map((payload) => {\n ref(payload);\n });\n window.eventQueue.delete(message);\n }\n }\n }\n _grabMessages() {\n this._messages = {};\n for (const message in this.Messages) {\n if (this.Messages[message]) {\n const __ref__ = this.Messages[message].bind(this);\n this._messages[message] = __ref__;\n this.GRAB(message, __ref__);\n }\n }\n }\n _ungrabMessages() {\n for (const message in this._messages) {\n this.UNGRAB(message, this._messages[message]);\n }\n }\n objectIsEmpty(object) {\n for (var key in object) {\n if (object.hasOwnProperty(key))\n return false;\n }\n return true;\n }\n /**\n *\n * EMIT\n *\n * @param {string} message\n * @param {Object} payload\n */\n EMIT(message, payload) {\n return EventBus.emit(message, payload);\n }\n /**\n *\n * GRAB\n *\n * @param {string} message\n * @param {Function} callBack\n */\n GRAB(message, callBack) {\n if (!callBack)\n return;\n EventBus.on(message, callBack);\n }\n /**\n *\n * UNGRAB\n *\n * @param {string} message\n * @param {Function} callBack\n */\n UNGRAB(message, callBack) {\n if (!callBack)\n return;\n EventBus.off(message, callBack);\n }\n getFirstFocusable(parent) {\n return getFirstFocusable(parent);\n }\n getFocusableElements(parent) {\n return getAllFocusableElements(parent);\n }\n _destroy() {\n this._ungrabMessages();\n }\n}\n","// import BaseComponent from '../base/baseComponent';\n// import Swiper, { A11y, Navigation, Autoplay } from 'swiper';\nimport productCarousel from './productCarousel';\nimport get from 'axios';\nimport carouselUtils from '../utils/carouselUtils';\nimport Swiper from 'swiper';\nimport { MQ } from '../constants/styles';\n// Swiper.use([Navigation, A11y, Autoplay]);\nexport default class einsteinCarousel extends productCarousel {\n constructor(element) {\n super(element);\n }\n init() {\n this.getEinsteinRecommendations();\n }\n getEinsteinRecommendations() {\n const einsteinUtils = this.getEinsteinUtils();\n if (einsteinUtils) {\n let parentElement = this.$el;\n return this.processRecommendationsTile(parentElement, einsteinUtils);\n }\n }\n processRecommendationsTile(parentElement, einsteinUtils) {\n const recommender = parentElement.dataset.recommender;\n if (recommender) {\n try {\n let params = {\n userId: einsteinUtils.getCQUserId(),\n cookieId: einsteinUtils.getCQCookieId(),\n ccver: '1.01'\n };\n if (this.$el.dataset.recommenderType === 'product-to-product' || this.$el.dataset.recommenderType === 'complete-the-set') {\n let anchors = [];\n let productsToachor = document.querySelectorAll('[data-einstein-pid]');\n productsToachor.forEach((productEl) => {\n anchors.push({\n id: productEl.dataset.einsteinPid,\n sku: null,\n type: 'vgroup',\n alt_id: productEl.dataset.einsteinMasterid,\n });\n });\n params.anchors = anchors;\n }\n const recommendationsReceived = (einsteinResponse) => {\n this.fillDomElement(einsteinResponse, parentElement);\n };\n const recommendationsNotReceived = (einsteinResponse) => {\n super.swiperHandler();\n };\n if (einsteinUtils.getRecs) {\n einsteinUtils.getRecs(einsteinUtils.clientId, recommender, params, recommendationsReceived, recommendationsNotReceived);\n }\n else {\n einsteinUtils.widgets = einsteinUtils.widgets || [];\n einsteinUtils.widgets.push({\n recommenderName: recommender,\n parameters: params,\n callback: recommendationsReceived\n });\n }\n }\n catch (error) {\n console.error(error);\n }\n }\n }\n async fillDomElement(einsteinResponse, parentElement) {\n const recommendedProducts = einsteinResponse[parentElement.dataset.recommender].recs;\n const recommenderName = einsteinResponse[parentElement.dataset.recommender].displayMessage.toLowerCase();\n if (recommendedProducts && recommendedProducts.length > 0) {\n let components = [];\n components = recommendedProducts.map((recommendedProduct) => {\n let tileDefinition = {};\n tileDefinition.model = {\n type: 'product',\n id: recommendedProduct.id\n };\n return tileDefinition;\n });\n let url = this.$el.dataset.recommenderUrl;\n if (url && url !== null && url !== 'null') {\n const { data } = await get(url, {\n params: {\n components: JSON.stringify(components),\n recommenderName: recommenderName\n }\n });\n this.mountRecommenderCarousel(data);\n }\n }\n else {\n // remove carousel if empty\n this.autoRemoveCarousel();\n }\n }\n mountRecommenderCarousel(content) {\n let carouselList = this.$el.querySelector('.' + this.CLASSES.swiper.list);\n // carouselList.innerHTML = content;\n this.setInnerHTML(carouselList, content);\n // this.removeNavigationCarousel(carouselList);\n carouselUtils.setSwiperMarkup({\n $el: this.$el,\n hasArrows: true,\n hasBullets: false,\n });\n this.swiperHandler();\n this.prepareDatalayer();\n }\n setInnerHTML(elm, html) {\n elm.innerHTML = html;\n Array.from(elm.querySelectorAll(\"script\"))\n .forEach((oldScriptEl) => {\n const newScriptEl = document.createElement(\"script\");\n Array.from(oldScriptEl.attributes).forEach(attr => {\n newScriptEl.setAttribute(attr.name, attr.value);\n });\n const scriptText = document.createTextNode(oldScriptEl.innerHTML);\n newScriptEl.appendChild(scriptText);\n oldScriptEl.parentNode.replaceChild(newScriptEl, oldScriptEl);\n });\n }\n getEinsteinUtils() {\n let einsteinUtils = window.CQuotient;\n if (einsteinUtils && typeof einsteinUtils.getCQUserId === 'function' && typeof einsteinUtils.getCQCookieId === 'function') {\n return einsteinUtils;\n }\n return null;\n }\n swiperHandler() {\n const listLength = this.getNumberOfSlides(this.$el.querySelector('.' + this.CLASSES.swiper.list));\n if (listLength === 0) {\n this.autoRemoveCarousel();\n return;\n }\n const swiper = new Swiper(this.$el, {\n slidesPerView: 1.5,\n centeredSlides: false,\n loop: (this.$options.loop && listLength > 3) || false,\n spaceBetween: 2,\n autoplay: this.$options.autoplay\n ? {\n delay: 1,\n disableOnInteraction: true,\n }\n : false,\n speed: this.$options.autoplay ? 4000 : 300,\n breakpoints: {\n [MQ.tabletPortrait]: {\n slidesPerView: 2.6,\n },\n [MQ.tabletLandscape]: {\n slidesPerView: 4,\n },\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n a11y: {\n enabled: true,\n },\n });\n this.EMIT(this.CUSTOM_MESSAGES.WISHLIST.verify, {});\n this.handlePlayPause(swiper);\n }\n}\n","import BaseComponent from '../base/baseComponent';\nimport { MQ } from '../constants/styles';\nimport analyticsUtils from '../utils/analyticsUtils';\nimport carouselUtils from '../utils/carouselUtils';\nimport Swiper, { A11y, Navigation, Autoplay } from 'swiper';\nSwiper.use([Navigation, A11y, Autoplay]);\nexport default class productCarousel extends BaseComponent {\n constructor(element) {\n super(element);\n this.autoplayStatus = this.$options.autoplay;\n this.init();\n }\n get CLASSES() {\n return {\n swiper: {\n main: 'swiper',\n list: 'swiper-wrapper',\n slide: 'swiper-slide',\n },\n };\n }\n get SELECTORS() {\n return {\n context: '.product-carousel',\n product: '.producttile',\n buttons: {\n play: '.productcarousel-playbutton',\n },\n };\n }\n init() {\n if ([...this.$el.querySelectorAll(this.SELECTORS.product)].length > 0) {\n carouselUtils.setSwiperMarkup({\n $el: this.$el,\n hasArrows: true,\n hasBullets: false,\n });\n this.swiperHandler();\n this.prepareDatalayer();\n }\n else {\n if (this.$el.closest('.experience-component')) {\n this.$el.closest('.experience-component').remove();\n }\n }\n }\n getNumberOfSlides(list) {\n let cards = list.querySelectorAll('.' + this.CLASSES.swiper.slide);\n return cards.length;\n }\n handlePlayPause(swiper) {\n let playButton = document.querySelector(this.SELECTORS.buttons.play);\n if (playButton) {\n playButton.addEventListener('click', () => {\n if (this.autoplayStatus) {\n playButton.classList.add('play');\n playButton.classList.remove('pause');\n this.autoplayStatus = false;\n swiper.autoplay.stop();\n swiper.params.speed = 300;\n swiper.update();\n }\n else {\n playButton.classList.add('pause');\n playButton.classList.remove('play');\n this.autoplayStatus = true;\n swiper.autoplay.start();\n swiper.params.speed = 4000;\n swiper.update();\n }\n });\n }\n }\n swiperHandler() {\n const listLength = this.getNumberOfSlides(this.$el.querySelector('.' + this.CLASSES.swiper.list));\n if (listLength === 0) {\n this.autoRemoveCarousel();\n return;\n }\n const swiper = new Swiper(this.$el, {\n slidesPerView: 1.5,\n centeredSlides: false,\n loop: this.$options.loop && listLength > 3,\n spaceBetween: 2,\n autoplay: this.$options.autoplay\n ? {\n delay: 1,\n disableOnInteraction: true,\n }\n : false,\n speed: this.$options.autoplay ? 4000 : 300,\n breakpoints: {\n [MQ.tabletPortrait]: {\n slidesPerView: 2.6,\n },\n [MQ.tabletLandscape]: {\n slidesPerView: 4,\n },\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n a11y: {\n enabled: true,\n },\n });\n this.handlePlayPause(swiper);\n }\n autoRemoveCarousel() {\n if (this.$el.closest('.experience-component')) {\n this.$el.closest('.experience-component').remove();\n }\n }\n // datalayer\n async prepareDatalayer() {\n let tile = this.$el.querySelector(this.SELECTORS.product);\n let data = {\n 'forcedPipeline': 'ProductImpressions',\n 'pids': analyticsUtils.getListPids(this.$el),\n 'item_list_name': analyticsUtils.getTileListName(tile),\n 'offset': 1,\n };\n analyticsUtils.passThroughProcessor(data);\n }\n}\n","export const MQ = {\n mobile: 0,\n tabletPortrait: 768,\n tabletLandscape: 1024,\n desktop: 1280\n};\n","const carouselUtils = {\n setSwiperMarkup: ({ $el, hasArrows = true, hasBullets = true, }) => {\n if (!$el) {\n throw 'setSwiperMarkup requires an element';\n }\n $el.classList.add('swiper');\n let $inner = $el.firstElementChild;\n $inner.classList.add('swiper-wrapper');\n for (let $child of $inner.children) {\n $child.classList.add('swiper-slide');\n }\n if (hasArrows) {\n let $prev = document.createElement('button');\n $prev.classList.add('swiper-button-prev');\n $prev.setAttribute('aria-label', 'Previous');\n $prev.setAttribute('type', 'button');\n let $next = document.createElement('button');\n $next.classList.add('swiper-button-next');\n $prev.setAttribute('aria-label', 'Next');\n $prev.setAttribute('type', 'button');\n $el.appendChild($prev);\n $el.appendChild($next);\n }\n if (hasBullets) {\n let $bullets = document.createElement('div');\n $bullets.classList.add('swiper-pagination');\n $el.appendChild($bullets);\n }\n },\n};\nexport default carouselUtils;\n","const focusableSelectors = 'button, [href]:not([aria-hidden=\"true\"]), input, select, textarea, [tabindex]:not([tabindex=\"-1\"]), [role=\"button\"]';\nexport const getFirstFocusable = (parent) => parent.querySelector(focusableSelectors);\nexport const getAllFocusableElements = (parent) => parent.querySelectorAll(focusableSelectors);\n"],"names":["BaseComponent","constructor","config","this","_grabMessages","CUSTOM_MESSAGES","Messages","_checkMessages","message","window","eventQueue","get","ref","bind","map","payload","delete","_messages","__ref__","GRAB","_ungrabMessages","UNGRAB","objectIsEmpty","object","key","hasOwnProperty","EMIT","callBack","getFirstFocusable","parent","getFocusableElements","_destroy","element","super","observer","IntersectionObserver","entries","isIntersecting","target","querySelectorAll","forEach","item","i","setTimeout","setAttribute","unobserve","threshold","_componentElement","observe","$el","$options","compOptions","options","Object","assign","dataset","keys","filter","entry","includes","cleanEntry","cleanOptionKey","optionValue","JSON","parse","replace","convertType","COMPONENT_NAME","__proto__","name","static","option","optionReturn","str","charAt","toLocaleLowerCase","slice","$on","events","cb","elements","e","stopPropagation","$one","$off","$fire","loading","container","LOADER_EVENTS","show","endLoading","icon","error","time","hide","einsteinCarousel","init","getEinsteinRecommendations","einsteinUtils","getEinsteinUtils","parentElement","processRecommendationsTile","recommender","params","userId","getCQUserId","cookieId","getCQCookieId","ccver","recommenderType","anchors","document","productEl","push","id","einsteinPid","sku","type","alt_id","einsteinMasterid","recommendationsReceived","einsteinResponse","fillDomElement","recommendationsNotReceived","swiperHandler","getRecs","clientId","widgets","recommenderName","parameters","callback","console","async","recommendedProducts","recs","displayMessage","toLowerCase","length","components","recommendedProduct","tileDefinition","model","url","recommenderUrl","data","stringify","mountRecommenderCarousel","autoRemoveCarousel","content","carouselList","querySelector","CLASSES","swiper","list","setInnerHTML","hasArrows","hasBullets","prepareDatalayer","elm","html","innerHTML","Array","from","oldScriptEl","newScriptEl","createElement","attributes","attr","value","scriptText","createTextNode","appendChild","parentNode","replaceChild","CQuotient","listLength","getNumberOfSlides","slidesPerView","centeredSlides","loop","spaceBetween","autoplay","delay","disableOnInteraction","speed","breakpoints","MQ","navigation","nextEl","prevEl","a11y","enabled","WISHLIST","verify","handlePlayPause","productCarousel","autoplayStatus","main","slide","SELECTORS","context","product","buttons","play","closest","remove","playButton","addEventListener","classList","add","stop","update","start","tile","mobile","tabletPortrait","tabletLandscape","desktop","setSwiperMarkup","$inner","firstElementChild","$child","children","$prev","$next","$bullets","focusableSelectors","getAllFocusableElements"],"sourceRoot":""}