{"version":3,"file":"Swatches.js","names":["Swatches","a","setters","Registry","default","Event","Component","on","off","trigger","debounce","deepMerge","mix","Accessibility","execute","with","constructor","element","options","arguments","length","templateName","dataModelId","reloadOnProductUpdate","changeImageOnHover","changeImageOnSelectSwatch","classNames","selected","shadesContentUrl","cssPath","containerDataModelId","preventClickOnDisabled","trackFocusedElements","initCache","selectors","swatches","querySelectorAll","selectedSwatches","carousel","querySelector","toggleControl","viewAll","viewAllLink","selectedShade","classes","hidden","initState","state","originalImage","getAttribute","selectedPid","loading","expanded","pid","uuid","bindEvents","e","onSwatchClick","onSwatchKeyboardControl","bind","onProductUpdated","onMouseOver","onMouseOut","onCarouselUpdated","onSwatchesUpdate","onViewAllLinkClick","onToggleMoreShadesClick","afterInit","restoreLastFocusState","afterRegistered","then","bubbles","event","detail","swatchUpdate","isProductUpdated","source","id","variationAttributeId","selectSwatch","model","getModel","data","render","stopLoading","targetElement","currentTarget","preventDefault","classList","contains","update","indexOf","key","swatch","target","matches","closest","newImage","updateImage","forEach","remove","removeAttribute","setAttribute","add","selectedSwatch","previousPid","index","parentElement","isArrowsInside","scrollToSwatch","innerHTML","getComponentKey","saveLastFocusState","url","href","displayValue","value","upc","backgroundColor","style","backgroundImage","onUpdate","imageUrl","isRestoreOriginal","emit","contentUrl","beforeClose","beforeShadeSelectorClose","container","enableStacking","analytics","virtualPageURL","virtualPageTitle","unexpandSwatches","expandSwatches","getComponent","expandSlides","unexpandSlides","selectedSwatchCarouselItem","selectedSwatchCarouselItemIndex","goTo","closeActionTargetType","unbindEvents","destroy"],"sources":["components/product/Swatches.js"],"sourcesContent":["/* eslint max-lines: [\"error\", {\"max\": 350, \"skipBlankLines\": true, \"skipComments\": true }] */\nimport Registry from 'core/ComponentRegistry';\nimport { Event } from 'services/EventEmitter';\nimport Component from 'core/Component';\nimport { on, off, trigger } from 'toolbox/event';\nimport { debounce } from 'toolbox/debounce';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport { mix } from 'core/mixwith';\nimport Accessibility from 'mixins/Accessibility';\n\n/**\n * This is a description of the Swatches constructor function.\n * @class\n * @classdesc This is a description of the Swatches class.\n * @extends Component\n */\nexport default class Swatches extends mix(Component).with(Accessibility) {\n /**\n * @typedef {Object} optionsObject\n * @property {String} dataModelId - the data model name needed to render the component on client side.\n * @property {Boolean} reloadOnProductUpdate - if true, this component will be reloaded on \"product.updated\" event.\n * Please refer product/Product component for more info.\n * @property {Boolean} changeImageOnHover - if true, then trigger an event on hover on swatch to switch product image\n * @property {Boolean} changeImageOnSelectSwatch - if true, then trigger an event on select swatch to switch product image\n * @property {Object} classNames\n */\n\n /**\n * @constructor\n * @param {HTMLElement} element Component DOM node\n * @param {optionsObject} options - Component Options\n */\n constructor(element, options = {}) {\n super(element, deepMerge({\n templateName: 'product/swatches',\n dataModelId: 'swatches',\n reloadOnProductUpdate: false,\n changeImageOnHover: false,\n changeImageOnSelectSwatch: true, // if true, then trigger an event on select swatch to switch product image\n classNames: {\n selected: 'm-selected',\n },\n shadesContentUrl: null,\n cssPath: 'shade-selector.css',\n containerDataModelId: 'variationselection',\n preventClickOnDisabled: false,\n trackFocusedElements: true, // enable tracking of focused elements\n }, options));\n }\n\n /**\n * All selectors must be cached. Never cache elements that are out of the component scope\n */\n initCache() {\n this.selectors.swatches = this.element.querySelectorAll('[data-js-swatch]');\n this.selectors.selectedSwatches = this.element.querySelectorAll('[data-js-selected]');\n this.selectors.carousel = this.element.querySelector('.c-carousel');\n this.selectors.toggleControl = this.element.querySelector('[data-js-swatches-toggle-control]');\n this.selectors.viewAll = this.element.querySelector('[data-js-swatches-view-all]');\n this.selectors.viewAllLink = this.element.querySelector('[data-js-swatches-view-all-link]');\n this.selectors.selectedShade = this.element.querySelector('[data-js-shade-selected]');\n\n this.classes = {\n hidden: 'h-hidden',\n };\n }\n\n /**\n * Init the different state of the component\n * It helps to avoid heavy DOM manipulation\n */\n initState() {\n const { selectedSwatches } = this.selectors;\n if (selectedSwatches && selectedSwatches.length) {\n this.state.originalImage = selectedSwatches[0].getAttribute('data-js-productimgsrc');\n this.state.selectedPid = selectedSwatches[0].getAttribute('data-js-pid');\n }\n this.state.loading = false;\n this.state.expanded = false;\n this.state.pid = this.options.pid;\n this.state.uuid = this.options.uuid;\n }\n\n /**\n * Should contain only event listeners and nothing else\n * All the event handlers should be into a separated function. No usage of anonymous function\n */\n bindEvents() {\n super.bindEvents();\n\n on('click', this.selectors.swatches, e => this.onSwatchClick(e));\n on('keydown', this.selectors.swatches, this.onSwatchKeyboardControl.bind(this));\n\n on('product.updated', this.element, this.onProductUpdated.bind(this));\n\n if (this.options.changeImageOnHover) {\n on('mouseover', this.element, debounce(this.onMouseOver.bind(this)));\n on('mouseout', this.element, debounce(this.onMouseOut.bind(this)));\n }\n\n if (this.selectors.carousel) {\n on('carousel.updated', this.element, this.onCarouselUpdated.bind(this));\n }\n\n on('swatches.update', this.element, this.onSwatchesUpdate.bind(this));\n\n if (this.selectors.viewAllLink) {\n on('click', this.selectors.viewAllLink, this.onViewAllLinkClick.bind(this));\n }\n if (this.selectors.toggleControl) {\n on('click', this.selectors.toggleControl, this.onToggleMoreShadesClick.bind(this));\n }\n }\n\n /**\n * After init\n * Run any script after the component is fully initialized\n */\n afterInit() {\n this.restoreLastFocusState();\n\n // Triggers the 'carousel.updated' event in case if the Carousel class has alredy been initiliazed\n // prior to the Swatches class to initlize swatches on page loaded\n if (this.selectors.carousel) {\n Registry.afterRegistered(this.selectors.carousel).then(() => {\n trigger('carousel.updated', this.element, {\n bubbles: true,\n });\n });\n }\n }\n\n /**\n * 'swatches.update' event handler\n * @param {Object} event event data\n */\n onSwatchesUpdate(event) {\n const { detail } = event;\n\n this.swatchUpdate(detail);\n }\n\n /**\n * Updates swatches\n * @param {Object} detail event details\n * @param {Boolean} isProductUpdated if true, gets data from product updated event\n */\n swatchUpdate(detail, isProductUpdated = false) {\n this.state.loading = false;\n // do not update swatches if this component is an initiator of product update.\n if (detail.source === this.id) {\n return;\n }\n\n // if the same variation ID updated, no need to reload an entire component.\n // Only selected swatch needs to be changed\n if (detail.variationAttributeId === this.options.variationAttributeId) {\n this.selectSwatch(detail.pid);\n } else {\n const model = this.getModel(isProductUpdated ? detail.data : detail);\n if (model) {\n this.render(model);\n }\n }\n }\n\n /**\n * Set loading state to false\n * Can be used in case if no need to reload component after selection\n */\n stopLoading() {\n this.state.loading = false;\n }\n\n /**\n * Update current component if other variation attribute is changed.\n *\n * @param {Object} event event data\n */\n onProductUpdated(event) {\n const { detail } = event;\n\n this.swatchUpdate(detail, true);\n }\n\n /**\n * Find model for swatch by dataModelId\n * @param {Object} data array of components models\n * @returns {Object|null} model object\n */\n getModel(data) {\n const { containerDataModelId } = this.options;\n\n if (data) {\n if (data[containerDataModelId] && data[containerDataModelId][this.options.dataModelId]) {\n return data[containerDataModelId][this.options.dataModelId];\n }\n\n if (data[this.options.dataModelId]) {\n return data[this.options.dataModelId];\n }\n }\n\n return null;\n }\n\n /**\n * Click event handler\n *\n * @param {Object} e - Event object\n */\n onSwatchClick(e) {\n const targetElement = e.currentTarget;\n\n e.preventDefault();\n if (targetElement.classList.contains(this.options.classNames.selected) || this.state.loading) {\n return;\n }\n\n // prevent click for disabled swatches\n if (this.options.preventClickOnDisabled && targetElement.classList.contains('m-disabled')) {\n return;\n }\n\n this.selectSwatch(targetElement.getAttribute('data-js-pid'));\n this.update(targetElement);\n }\n\n /**\n * Keydown event handler\n *\n * @param {Object} event Event object\n */\n onSwatchKeyboardControl(event) {\n if (['Enter', ' '].indexOf(event.key) !== -1) {\n event.preventDefault();\n this.onSwatchClick(event);\n }\n }\n\n /**\n * Mouse over event handler\n *\n * @param {Object} e - Event object\n */\n onMouseOver(e) {\n // find swatch element from event target\n const swatch = e.target.matches('[data-js-swatch]') ? e.target : e.target.closest('[data-js-swatch]');\n\n if (!swatch || swatch.classList.contains(this.options.classNames.selected)) {\n return;\n }\n\n const newImage = swatch.getAttribute('data-js-productimgsrc');\n this.updateImage(newImage, false);\n }\n\n /**\n * Mouse out event handler\n *\n * @param {Object} e - Event object\n */\n onMouseOut(e) {\n // find swatch element from event target\n const swatch = e.target.matches('[data-js-swatch]') ? e.target : e.target.closest('[data-js-swatch]');\n\n if (!swatch) {\n return;\n }\n\n this.updateImage(this.state.originalImage, true);\n }\n\n /* eslint-disable complexity */\n /**\n * Marks target swatch as selected.\n * @param {String} pid - swatch product ID to select\n */\n selectSwatch(pid) {\n const selectedSwatches = this.element.querySelectorAll(`.${this.options.classNames.selected}`);\n if (selectedSwatches) {\n selectedSwatches.forEach((swatch) => {\n swatch.classList.remove(this.options.classNames.selected);\n swatch.removeAttribute('data-js-selected');\n if (swatch.querySelector('[data-js-selected-text]')) {\n swatch.querySelector('[data-js-selected-text]').setAttribute('aria-hidden', 'true');\n }\n swatch.removeAttribute('aria-live');\n swatch.removeAttribute('aria-relevant');\n });\n }\n this.selectors.selectedSwatches = this.element.querySelectorAll(`[data-js-pid=\"${pid}\"]`);\n this.selectors.selectedSwatches.forEach((swatch) => {\n swatch.classList.add(this.options.classNames.selected);\n swatch.setAttribute('data-js-selected', '');\n if (swatch.querySelector('[data-js-selected-text]')) {\n swatch.querySelector('[data-js-selected-text]').setAttribute('aria-hidden', 'false');\n }\n swatch.setAttribute('aria-live', 'polite');\n swatch.setAttribute('aria-relevant', 'text');\n });\n\n if (this.selectors.selectedSwatches && this.selectors.selectedSwatches.length) {\n const selectedSwatch = this.selectors.selectedSwatches[0];\n this.state.originalImage = selectedSwatch.getAttribute('data-js-productimgsrc');\n this.state.previousPid = this.state.selectedPid;\n this.state.selectedPid = pid;\n if (this.options.changeImageOnSelectSwatch) {\n this.updateImage(this.state.originalImage, true);\n }\n if (this.selectors.carousel && !this.state.expanded) {\n let index = Number(selectedSwatch.parentElement.getAttribute('data-index'));\n\n // Prevent the selected swatch overlapping with arrow\n if (this.options.isArrowsInside && index !== 0) {\n index -= 1;\n }\n this.scrollToSwatch(index);\n }\n\n if (this.selectors.selectedShade) {\n this.selectors.selectedShade.innerHTML = this.selectors.selectedSwatches[0].getAttribute('data-js-title');\n }\n }\n }\n /* eslint-enable complexity */\n\n /**\n * Returns component key\n * @override from Analytics\n * @returns {String} component key\n */\n getComponentKey() {\n return `${super.getComponentKey()}$${this.state.pid}`;\n }\n\n /**\n * Fire event to update product variation.\n * @param {HTMLElement} targetElement - selected swatch\n */\n update(targetElement) {\n if (this.state.loading) {\n return;\n }\n const previousPid = this.state.pid || this.state.previousPid;\n this.state.pid = targetElement.getAttribute('data-js-pid');\n this.saveLastFocusState();\n const data = {\n previousPid,\n pid: this.state.pid,\n url: targetElement.href,\n source: this.id,\n variationAttributeId: this.options.variationAttributeId,\n displayValue: targetElement.getAttribute('data-js-title'),\n value: targetElement.getAttribute('data-js-value'),\n upc: targetElement.getAttribute('data-js-upc'),\n backgroundColor: targetElement.style.backgroundColor,\n backgroundImage: targetElement.style.backgroundImage,\n onUpdate: () => this.stopLoading(),\n bubbles: true,\n };\n\n this.state.loading = true;\n\n trigger('swatch.change', this.element, data);\n trigger('product.variation.update', this.element, data);\n }\n\n /**\n * Updating a producttile image\n *\n * @param {String} imageUrl - Image url string\n * @param {Boolean} isRestoreOriginal - if true, than image should be restored to the original one.\n */\n updateImage(imageUrl, isRestoreOriginal) {\n trigger('product.image.update', this.element, { bubbles: true, imageUrl, isRestoreOriginal });\n }\n\n /**\n * Carousel updated event handler\n * Check carousel state and hide \"More Shades\" or \"See All Shades\" toggle if all shades are visible and carousel is disabled\n */\n onCarouselUpdated() {\n if (this.selectors.toggleControl) {\n if (this.selectors.carousel.classList.contains('m-disabled')) {\n this.selectors.toggleControl.classList.add(this.classes.hidden);\n } else {\n this.selectors.toggleControl.classList.remove(this.classes.hidden);\n }\n }\n\n if (this.selectors.viewAll) {\n if (this.selectors.carousel.classList.contains('m-disabled')) {\n this.selectors.viewAll.classList.add(this.classes.hidden);\n } else {\n this.selectors.viewAll.classList.remove(this.classes.hidden);\n }\n }\n }\n\n /**\n * Scrolling to the selected swatch\n *\n * @param {Number} index - index of the selected swatch\n */\n scrollToSwatch(index) {\n trigger('carousel.scrollto', this.selectors.carousel, { index });\n }\n\n /**\n * 'ViewAllLink' click event handler\n */\n onViewAllLinkClick() {\n if (this.state.selectedPid) {\n Event.emit('modal.open', {\n options: {\n cssPath: this.options.cssPath,\n contentUrl: `${this.options.shadesContentUrl}?pid=${this.state.selectedPid}`,\n beforeClose: this.beforeShadeSelectorClose.bind(this),\n classNames: { container: ['m-shade-selector'] },\n enableStacking: true,\n analytics: {\n virtualPageURL: this.analytics.virtualPageURL,\n virtualPageTitle: this.analytics.virtualPageTitle,\n },\n },\n });\n }\n }\n\n /**\n * 'More Shades' click event handler\n */\n onToggleMoreShadesClick() {\n if (this.state.expanded) {\n this.unexpandSwatches();\n } else {\n this.expandSwatches();\n }\n }\n\n /**\n * Expand the swatches carousel\n */\n expandSwatches() {\n const carousel = Registry.getComponent(this.selectors.carousel);\n this.selectors.toggleControl.classList.add('m-active');\n this.selectors.toggleControl.setAttribute('aria-expanded', 'true');\n carousel.expandSlides();\n this.state.expanded = true;\n }\n\n /**\n * Unexpand the swatches carousel\n */\n unexpandSwatches() {\n const carousel = Registry.getComponent(this.selectors.carousel);\n this.selectors.toggleControl.classList.remove('m-active');\n this.selectors.toggleControl.setAttribute('aria-expanded', 'false');\n carousel.unexpandSlides();\n this.state.expanded = false;\n\n // if a swatch is selected, display the carousel view where the swatch is\n const { selectedSwatches } = this.selectors;\n if (selectedSwatches && selectedSwatches.length) {\n const selectedSwatchCarouselItem = selectedSwatches[0].closest('[data-js-carousel-item]');\n if (selectedSwatchCarouselItem) {\n const selectedSwatchCarouselItemIndex = Number(selectedSwatchCarouselItem.getAttribute('data-index') || 0);\n carousel.goTo(selectedSwatchCarouselItemIndex, 500);\n }\n }\n }\n\n /**\n * ShadeSelector model beforeClose callback handler\n *\n * @param {HTMLElement} element Component DOM node\n * @param {Object} options - object with params\n */\n beforeShadeSelectorClose(element, options) {\n const selected = element.querySelector('[data-js-selected]');\n\n if (selected && options.closeActionTargetType === 'submit') {\n const previousPid = this.state.pid || this.state.previousPid;\n this.state.pid = selected.getAttribute('data-js-pid');\n const data = {\n previousPid,\n pid: this.state.pid,\n url: selected.href,\n variationAttributeId: this.options.variationAttributeId,\n displayValue: selected.getAttribute('title'),\n value: selected.getAttribute('data-js-value'),\n bubbles: true,\n };\n\n if (this.state.uuid) {\n data.uuid = this.state.uuid;\n }\n\n trigger('product.variation.update', this.element, data);\n }\n }\n\n /**\n * Unbind event handlers\n */\n unbindEvents() {\n off('click keydown', this.selectors.swatches);\n\n if (this.options.changeImageOnHover) {\n off('mouseover', this.element);\n off('mouseout', this.element);\n }\n\n off('product.updated', this.element);\n off('swatches.update', this.element);\n\n if (this.selectors.viewAllLink) {\n off('click', this.selectors.viewAllLink);\n }\n\n if (this.selectors.carousel) {\n off('carousel.updated', this.element);\n }\n\n if (this.selectors.toggleControl) {\n off('click', this.selectors.toggleControl);\n }\n }\n\n /**\n * Destroy is called automatically after the component is being removed from the DOM\n * You must always destroy the listeners attached to an element to avoid any memory leaks\n */\n destroy() {\n super.destroy();\n this.unbindEvents();\n }\n}\n"],"mappings":"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","ignoreList":[]}