{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/add-to-cart/add-to-cart.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/add-to-cart/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/button-loader/button-loader.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/button-loader/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/add-alert-message/add-alert-message.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/add-alert-message/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/create-message-string/create-message-string.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/create-message-string/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/api-error-handler/api-error-handler.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/api-error-handler/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/error-handler/error-handler.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/error-handler/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/remove-alert-message/remove-alert-message.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/errors/remove-alert-message/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/etmc-cart-event/etmc-cart-event.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/etmc-cart-event/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/min-max-value/get-max-value/get-max-value.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/min-max-value/get-max-value/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/product/get-product-options.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/product/get-child-products.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/product/get-quantity-selected.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/product/get-pid-value.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/product/get-add-to-cart-url.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/product/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/screen-dimensions/screen-dimensions.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/screen-dimensions/index.js","webpack:///./cartridges/app_designholding_flos/cartridge/client/default/js/components/add-to-cart/add-to-cart.js","webpack:///./cartridges/app_designholding_flos/cartridge/client/default/js/components/add-to-cart/index.js"],"names":["ADDTOCART_TOP_POSITION_NAMESPACE","JS_HOOK_ADD_TO_CART","JS_HOOK_PRODUCT_DETAIL","JS_HOOK_SET_ITEMS","JS_HOOK_BUNDLE_ITEMS_FORM","JS_HOOK_PRODUCT_LINE_ITEM","JS_HOOK_STICKY_BUTTON","JS_HOOK_HEADER","JS_HOOK_ADDED_TO_CART_MODAL","JS_HOOK_GTM_DATA","JS_HOOK_ADD_TO_CART_CONFIRMATION","HEADER_SCROLLUP_CLASS","HIDDEN_CLASS","MODAL_TIMER","AddToCart","constructor","element","product","url","reload","dataset","gtmStringObject","document","querySelector","gtmObj","ga4StringObject","ga4Obj","JSON","parse","productDataString","addToCartUrl","forceReload","pidsObj","buttonLoader","ButtonLoader","addedToCartModal","addToCartPid","pid","addToCartIsASet","set","header","updateButtonTopPosition","bindEvents","checkSetItems","setProductsWrapper","closest","setProducts","querySelectorAll","forEach","push","qty","quantity","triggerSuccessEvents","data","recommendedProduct","recommendedGtmObj","recommendedGa4Obj","index","length","currentRecommendedGtmObj","currentRecommendedGa4Obj","Events","$trigger","ecommerce","etmcCartEvent","cart","items","window","location","modalId","setTimeout","addToCartButtons","button","buttonNextSibling","nextElementSibling","hasAttribute","classList","add","remove","addToCartSuccess","error","hide","apiErrorHandler","removeAlertMessage","addToCartError","errorHandler","addToCart","show","API","post","form","then","response","catch","setVariables","getPidValue","productContainer","updateAddToCartForm","stringify","bundleItems","childProducts","getChildProducts","inputs","handleAddToCart","disabled","handleButtonClick","event","preventDefault","getMaxValue","getQuantitySelected","ScreenDimensions","isTabletLandscapeAndBigger","stickyParentEl","headerHeight","offsetHeight","html","contains","style","transform","removeAttribute","addEventListener","RafThrottle","namespace","fn","SUCCESS_CLASS","SUCCESS_TIMER","shouldAnimate","setAttribute","target","showSucces","focus","JS_HOOK_MESSAGE","JS_HOOK_CONTENT","addAlertMessage","message","hook","type","scroll","selector","status","el","content","innerHTML","variantClass","className","replace","offset","createMessageString","errors","errorHtml","redirectUrl","href","serverErrors","errorMessage","responseJSON","Error","JS_HOOK_CLOSE_BTN","errorEl","closeButton","cartItems","_etmc","userEmail","mid","body","email","formatEtmcCart","map","obj","item","id","toString","price","sales","formatted","unique_id","value","maxValue","callback","parseInt","getProductOptions","options","option","elOption","urlValue","selectedValueId","valueId","optionId","elements","JS_HOOK_QTY_INPUT","getQuantitySelector","quantitySelectorQty","isvisible","offsetWidth","quickViewModal","productSet","innerText","pidValue","JS_HOOK_ADD_TO_CART_CONTAINER","getAddToCartUrl","container","installMediaQueryWatcher","mediaQuery","layoutChangedCallback","mql","matchMedia","addListener","matches","media","MEDIA_QUERIES","reference","breakpoint","screenHeight","height","screenWidth","width","updateWidth","mqObject","innerWidth","innerHeight","ADDTOCART_SECTION","ONORDER_SECTION","ADDTOCART_ELEMENT","ONORDER_ELEMENT","addToCartSection","onOrderSection","addToCartButton","onOrderButton","CTAButton","ATCPosition","getBoundingClientRect","ATCPHeight","screen","bottom"],"mappings":"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","file":"js/AddToCart.js","sourcesContent":["import API from '@utilities/api';\nimport RafThrottle from '@utilities/raf-throttle';\nimport { html } from '@utilities/dom-elements';\nimport ScreenDimensions from '@utilities/screen-dimensions';\nimport apiErrorHandler from '@utilities/errors/api-error-handler';\nimport errorHandler from '@utilities/errors/error-handler';\nimport Events from '@utilities/events';\nimport removeAlertMessage from '@utilities/errors/remove-alert-message';\nimport getMaxValue from '@utilities/min-max-value/get-max-value';\nimport ButtonLoader from '@components/button-loader';\n\nimport {\n getChildProducts,\n getPidValue,\n // getProductOptions,\n getQuantitySelected,\n} from '@utilities/product';\nimport etmcCartEvent from '@utilities/etmc-cart-event';\n\nconst ADDTOCART_TOP_POSITION_NAMESPACE = 'addToCartTopPosition';\n\nconst JS_HOOK_ADD_TO_CART = '[js-hook-add-to-cart]';\nconst JS_HOOK_PRODUCT_DETAIL = '[js-hook-product-detail]';\nconst JS_HOOK_SET_ITEMS = '[js-hook-set-items]';\n// const JS_HOOK_BUNDLE_ITEM = '[js-hook-bundle-item]';\nconst JS_HOOK_BUNDLE_ITEMS_FORM = '[js-hook-bundle-items-form]';\nconst JS_HOOK_PRODUCT_LINE_ITEM = '[js-hook-product-line-item]';\nconst JS_HOOK_STICKY_BUTTON = '[js-hook-product-detail-sticky-button]';\nconst JS_HOOK_HEADER = '[js-hook-header]';\nconst JS_HOOK_ADDED_TO_CART_MODAL = '[js-hook-added-to-cart-modal]';\nconst JS_HOOK_GTM_DATA = '[js-hook-product-add-to-cart-data]';\n\nconst JS_HOOK_ADD_TO_CART_CONFIRMATION = 'js-hook-add-to-cart-confirmation';\n\nconst HEADER_SCROLLUP_CLASS = 'header--is-scrolled-up';\nconst HIDDEN_CLASS = 'u-hidden';\n\nconst MODAL_TIMER = 1000;\n\nclass AddToCart {\n constructor(element) {\n this.element = element;\n const { product, url, reload } = this.element.dataset || {};\n\n const gtmStringObject = document.querySelector(JS_HOOK_GTM_DATA).dataset.gtmObj;\n const ga4StringObject = document.querySelector(JS_HOOK_GTM_DATA).dataset.ga4Obj;\n this.gtmObj = gtmStringObject === '' ? false : JSON.parse(gtmStringObject);\n this.ga4Obj = ga4StringObject === '' ? false : JSON.parse(ga4StringObject);\n\n this.productDataString = product || '';\n this.addToCartUrl = url || '';\n this.forceReload = reload || false;\n this.pidsObj = null;\n this.buttonLoader = new ButtonLoader(this.element);\n this.addedToCartModal = document.querySelector(JS_HOOK_ADDED_TO_CART_MODAL);\n this.addToCartPid = this.element.dataset.pid;\n\n this.addToCartIsASet = this.element.dataset.set;\n\n this.header = document.querySelector(JS_HOOK_HEADER);\n\n this.updateButtonTopPosition();\n this.bindEvents();\n }\n\n /**\n * Checks whether add-to-cart happens on a Set Product(Detail).\n * If true; adds all the product ids to the pids object\n */\n checkSetItems() {\n this.pidsObj = [];\n\n if (this.addToCartIsASet) {\n const setProductsWrapper = this.element.closest(JS_HOOK_SET_ITEMS);\n const setProducts = [...setProductsWrapper.querySelectorAll(JS_HOOK_PRODUCT_LINE_ITEM)];\n\n setProducts.forEach((product) => {\n this.pidsObj.push({\n pid: product.dataset.pid,\n qty: product.dataset.quantity,\n });\n });\n }\n\n // Old code for set PDP\n // Might need it later\n\n // if (\n // document.querySelector(JS_HOOK_SET_ITEMS) &&\n // this.element.getAttribute('data-global') === true\n // ) {\n // [...document.querySelectorAll(JS_HOOK_PRODUCT_DETAIL)].forEach(detail => {\n // const id = detail.querySelector('[js-hook-product-id]');\n // const quantitySelect = detail.querySelector('[js-hook-quantity-select]');\n //\n // if (\n // detail.dataset &&\n // detail.hasAttribute('js-hook-product-set-detail') &&\n // id &&\n // quantitySelect\n // ) {\n // this.pidsObj.push({\n // pid: id.innerText,\n // qty: quantitySelect.value,\n // options: getProductOptions(detail)\n // });\n // }\n // });\n // }\n }\n\n /**\n * Updates the minicart quantity value after the customer has pressed the \"Add to Cart\" button\n * @param {String} data - ajax response from clicking the add to cart button\n */\n triggerSuccessEvents(data) {\n if (this.element.dataset.recommendedProduct) {\n // gtm event add_to_cart/add_to_cart_ga when add recommended product\n let recommendedGtmObj = this.element.dataset.gtmObj ? this.element.dataset.gtmObj : false;\n let recommendedGa4Obj = this.element.dataset.ga4Obj ? this.element.dataset.ga4Obj : false;\n\n if (recommendedGtmObj && recommendedGa4Obj) {\n recommendedGtmObj = JSON.parse(recommendedGtmObj);\n recommendedGa4Obj = JSON.parse(recommendedGa4Obj);\n\n for (let index = 0; index < recommendedGtmObj.length; index++) {\n const currentRecommendedGtmObj = recommendedGtmObj[index];\n const currentRecommendedGa4Obj = recommendedGa4Obj[index];\n\n Events.$trigger('gtm::push', { data: currentRecommendedGtmObj });\n Events.$trigger('gtm::push', { data: { ecommerce: null } });\n Events.$trigger('gtm::push', { data: currentRecommendedGa4Obj });\n }\n }\n\n } else {\n // default adding to cart\n const gtmStringObject = document.querySelector(JS_HOOK_GTM_DATA).dataset.gtmObj;\n const ga4StringObject = document.querySelector(JS_HOOK_GTM_DATA).dataset.ga4Obj;\n\n this.gtmObj = gtmStringObject === '' ? false : JSON.parse(gtmStringObject);\n this.ga4Obj = ga4StringObject === '' ? false : JSON.parse(ga4StringObject);\n\n Events.$trigger('gtm::push', { data: this.gtmObj });\n Events.$trigger('gtm::push', { data: { ecommerce: null } });\n Events.$trigger('gtm::push', { data: this.ga4Obj });\n }\n\n etmcCartEvent(data.cart.items);\n\n if (this.forceReload) {\n window.location.reload();\n return;\n }\n\n if (this.addedToCartModal) {\n const modalId = `recommendation-modal-${this.pid}`;\n\n setTimeout(() => {\n Events.$trigger(`modal[${modalId}]::open`);\n }, MODAL_TIMER);\n }\n\n if (this.addToCartIsASet) {\n const addToCartButtons = [...document.querySelectorAll(JS_HOOK_ADD_TO_CART)];\n\n addToCartButtons.forEach((button) => {\n const buttonNextSibling = button.nextElementSibling;\n\n if (buttonNextSibling?.hasAttribute(JS_HOOK_ADD_TO_CART_CONFIRMATION)) {\n button.classList.add(HIDDEN_CLASS);\n buttonNextSibling.classList.remove(HIDDEN_CLASS);\n }\n });\n }\n\n Events.$trigger('minicart::update', { data });\n }\n\n /**\n * Succes handler of Axios response\n *\n * @param {Object} data - Axios response\n * @return {undefined}\n */\n addToCartSuccess(data) {\n if (data.error) {\n this.buttonLoader.hide();\n apiErrorHandler(data);\n } else {\n this.buttonLoader.hide(true);\n removeAlertMessage();\n this.triggerSuccessEvents(data);\n }\n }\n\n /**\n * Process API error for addToCart\n *\n * @param {Object|string} error\n */\n addToCartError(error) {\n this.buttonLoader.hide();\n errorHandler(error);\n }\n\n addToCart() {\n this.buttonLoader.show();\n\n API.post(this.addToCartUrl, this.form)\n .then((response) => this.addToCartSuccess(response.data))\n .catch((error) => this.addToCartError(error));\n }\n\n /**\n * Set variables on class scope for later use\n */\n setVariables() {\n if (this.addToCartPid) {\n this.pid = getPidValue(this.element);\n }\n this.productContainer = this.element.closest(JS_HOOK_PRODUCT_DETAIL);\n }\n\n /**\n * Prepare add to cart form for api serialization\n */\n updateAddToCartForm(quantity) {\n this.form = {\n pid: this.pid,\n pidsObj: this.pidsObj.length > 0 ? JSON.stringify(this.pidsObj) : null,\n quantity,\n };\n\n const bundleItems = document.querySelector(JS_HOOK_BUNDLE_ITEMS_FORM);\n if (bundleItems) {\n this.form.childProducts = getChildProducts(this.inputs);\n }\n\n // Not sure what this is suppose to do, doesn't seem to be used.\n\n // if (!document.querySelector(JS_HOOK_BUNDLE_ITEM)) {\n // this.form.options = getProductOptions(this.productContainer);\n // }\n }\n\n /**\n * Function to handle quantity from event\n *\n * @param {Number} quantity - quantity amount\n */\n handleAddToCart(quantity) {\n if (this.element.disabled) return;\n this.checkSetItems();\n this.setVariables();\n this.updateAddToCartForm(quantity);\n\n if (this.addToCartUrl) {\n this.addToCart();\n }\n }\n\n /**\n * Event handler for add to cart button\n *\n * @param {Object} event - the event object\n */\n handleButtonClick(event) {\n event.preventDefault();\n let quantity = null;\n\n if (this.addToCartPid) {\n quantity = getMaxValue(getQuantitySelected(this.element));\n }\n\n this.handleAddToCart(quantity);\n }\n\n // depending on header postiion > reposition add to cart\n updateButtonTopPosition() {\n if (ScreenDimensions.isTabletLandscapeAndBigger) return;\n\n const stickyParentEl = this.element.closest(JS_HOOK_STICKY_BUTTON);\n const headerHeight = this.header.offsetHeight;\n\n if (!stickyParentEl) return;\n\n if (html.classList.contains(HEADER_SCROLLUP_CLASS)) {\n stickyParentEl.style.transform = `translate3d(0,${headerHeight}px,0)`;\n } else {\n stickyParentEl.removeAttribute('style');\n }\n }\n\n /**\n * Bind all events\n */\n bindEvents() {\n this.element.addEventListener('click', (event) => this.handleButtonClick(event));\n\n RafThrottle.set([\n {\n element: window,\n event: 'scroll',\n namespace: ADDTOCART_TOP_POSITION_NAMESPACE,\n fn: () => this.updateButtonTopPosition(),\n },\n ]);\n }\n}\n\nexport default AddToCart;\n","\nimport AddToCart from './add-to-cart';\n\nexport default AddToCart;\n","import Events from '@utilities/events';\n\nconst SUCCESS_CLASS = 'is--success';\nconst SUCCESS_TIMER = 3000;\n\nclass ButtonLoader {\n constructor(element, shouldAnimate = true) {\n this.element = element;\n this.shouldAnimate = shouldAnimate;\n }\n\n /**\n * Shows the loader\n */\n show() {\n if (!this.element) return;\n this.element.classList.add('disabled');\n this.element.classList.remove(SUCCESS_CLASS);\n this.element.setAttribute('disabled', 'disabled');\n this.element.setAttribute('tabindex', '-1');\n if (this.shouldAnimate) Events.$trigger('loader::show', { data: { target: this.element } });\n }\n\n /**\n * Hides the loader\n */\n hide(showSucces = false) {\n if (!this.element) return;\n if (this.shouldAnimate) Events.$trigger('loader::hide');\n this.element.classList.remove('disabled');\n this.element.removeAttribute('disabled');\n this.element.removeAttribute('tabindex');\n if (this.shouldAnimate) this.element.focus();\n\n if (showSucces) {\n this.element.classList.add(SUCCESS_CLASS);\n setTimeout(() => {\n this.element.classList.remove(SUCCESS_CLASS);\n }, SUCCESS_TIMER);\n }\n }\n}\n\nexport default ButtonLoader;\n","import ButtonLoader from './button-loader'\n\nexport default ButtonLoader\n","import Events from '@utilities/events'\n\nconst JS_HOOK_MESSAGE = '[js-hook-message]'\nconst JS_HOOK_CONTENT = '[js-hook-alert-content]'\n\n/**\n * Add alert message to page\n *\n * @param {String} message - the message string to show\n * @param {String} hook - [js-hook-message] or custom hook\n * @param {String} type - success, warning or error type\n */\nconst addAlertMessage = function ({ message, hook, type, scroll = false }) {\n const selector = hook || JS_HOOK_MESSAGE\n const status = type || 'error'\n\n const el = document.querySelector(selector)\n\n if (!el) return\n const content = el.querySelector(JS_HOOK_CONTENT)\n content.innerHTML = message\n\n // Add classes and show\n const variantClass = `alert--${status}`;\n el.className = el.className.replace(/(?:^|\\W)alert--(\\w+)(?!\\w)/g, ` ${variantClass}`)\n if(!el.classList.contains(variantClass)) el.classList.add(variantClass)\n el.classList.remove('u-hidden')\n el.removeAttribute('aria-hidden')\n el.focus()\n\n // Scroll to alert\n if (!el.classList.contains('is--relative') && !scroll) return\n Events.$trigger('scroll-to::scroll', {\n data: {\n target: el,\n offset: 130,\n },\n })\n}\nexport default addAlertMessage\n","import addAlertMessage from './add-alert-message'\n\nexport default addAlertMessage\n","const createMessageString = function (errors) {\n let errorHtml = ''\n errors.forEach((error) => {\n errorHtml += `<p>${error}</p>`\n })\n return errorHtml\n}\nexport default createMessageString\n","import createMessageString from './create-message-string'\n\nexport default createMessageString\n","import createMessageString from '@utilities/errors/create-message-string'\nimport addAlertMessage from '../add-alert-message'\n\n/**\n * Process API error\n *\n * @param {Object|String} error - error message\n * @param {string} selector - error message selector\n */\nconst apiErrorHandler = function (error, selector) {\n if (!error) return\n const { redirectUrl } = error\n if (redirectUrl) {\n window.location.href = redirectUrl\n } else if (error.serverErrors && error.serverErrors.length) {\n addAlertMessage({\n message: createMessageString(error.serverErrors),\n hook: selector,\n type: 'error',\n scroll: 'true'\n })\n } else {\n const errorMessage = error.errorMessage || error.message || error.responseJSON\n if (!errorMessage) return\n addAlertMessage({ message: errorMessage, hook: selector, type: 'error', scroll: 'true' })\n }\n}\n\nexport default apiErrorHandler\n","import apiErrorHandler from './api-error-handler'\n\nexport default apiErrorHandler\n","import idx from 'idx'\nimport Events from '@utilities/events'\nimport apiErrorHandler from '../api-error-handler'\n\n/**\n * Process errors from API or JS errors\n *\n * @param {Object} error - error message\n */\nconst errorHandler = function (error) {\n Events.$trigger('loader::hide')\n const data = idx(error, (_) => _.response.data)\n if (data) {\n apiErrorHandler(data)\n } else {\n throw new Error(`JAVASCRIPT ERROR: ${error}`)\n }\n}\n\nexport default errorHandler\n","import errorHandler from './error-handler'\n\nexport default errorHandler\n","const JS_HOOK_MESSAGE = '[js-hook-message]'\nconst JS_HOOK_CLOSE_BTN = '[js-hook-alert-close]'\n\nconst removeAlertMessage = function (hook) {\n const selector = hook || JS_HOOK_MESSAGE\n const errorEl = document.querySelector(selector)\n if (!errorEl) return\n errorEl.classList.add('u-hidden')\n errorEl.setAttribute('aria-hidden', true)\n\n const closeButton = errorEl.querySelector(JS_HOOK_CLOSE_BTN)\n if (closeButton) {\n closeButton.setAttribute('tabindex', -1)\n }\n}\nexport default removeAlertMessage\n","import removeAlertMessage from './remove-alert-message'\n\nexport default removeAlertMessage\n","import { body } from '@utilities/dom-elements'\n\nexport default function etmcCartEvent(cartItems) {\n if (window._etmc) {\n const { userEmail, mid } = body.dataset\n\n if (mid) window._etmc.push(['setOrgId', mid])\n if (userEmail !== 'null') window._etmc.push(['setUserInfo', { email: userEmail }])\n window._etmc.push(['trackCart', { cart: cartItems.length ? formatEtmcCart(cartItems) : [] }])\n }\n}\n\nfunction formatEtmcCart(items) {\n return items.map((obj) => ({\n item: obj.id,\n quantity: obj.quantity.toString(),\n price: obj.price.sales.formatted,\n unique_id: obj.id,\n }))\n}\n","import etmcCartEvent from './etmc-cart-event';\n\nexport default etmcCartEvent;\n","/**\n * validate against a maximum value.\n * return original or maximum value if original is > max value\n *\n * @param {string|number} value - inserted value to compare\n * @param {string|number} maxValue - maximum value to compare against\n * @param {Function} callback - Callback for maxFunction statement\n * @returns {number} the quantity value\n */\nconst getMaxValue = function (value, maxValue, callback) {\n if (parseInt(value, 10) > parseInt(maxValue, 10)) {\n // Make sure the callback is a function\n if (typeof callback === \"function\") {\n // Execute the callback function\n callback();\n }\n return maxValue;\n }\n return value;\n};\n\nexport default getMaxValue;\n","\nimport getMaxValue from './get-max-value';\n\nexport default getMaxValue;\n","/**\n * Retrieve product options\n *\n * @param {HTMLElement} productContainer - DOM element for current product\n * @return {string} - Product options and their selected values\n */\nconst getProductOptions = function(productContainer) {\n if (!productContainer) return [];\n const options = [...productContainer.querySelectorAll('[js-hook-product-option]')].map(option => {\n const elOption = option.querySelector('.options-select');\n const urlValue = elOption.value;\n const selectedValueId = elOption.querySelector(`option[value=\"${urlValue}]`).dataset.valueId;\n\n return {\n optionId: option.dataset.optionId,\n selectedValueId\n };\n });\n\n return options.length ? JSON.stringify(options) : [];\n};\n\nexport default getProductOptions;\n","/**\n * Retrieves the bundle product item ID's for the Controller to replace bundle master product\n * items with their selected variants\n *\n * @return {string[]} - List of selected bundle product item ID's\n */\nconst getChildProducts = function (elements, stringify = true) {\n const childProducts = [];\n [...elements].forEach((item) => {\n const { pid, quantity } = item.dataset;\n\n childProducts.push({\n pid,\n quantity,\n });\n });\n\n if(stringify) return childProducts.length ? JSON.stringify(childProducts) : [];\n\n return childProducts.length ? childProducts : [];\n};\n\nexport default getChildProducts;\n","const JS_HOOK_QTY_INPUT = '[js-hook-quantity-input]';\n/**\n * Retrieve contextual quantity selector\n * @param {jquery} el - DOM container for the relevant quantity\n * @return {jquery} - quantity selector DOM container\n */\nconst getQuantitySelector = function (el) {\n return el && document.querySelector('[js-hook-set-items]') ?\n el.closest('[js-hook-product-detail]')?.querySelector(JS_HOOK_QTY_INPUT) :\n document.querySelector(JS_HOOK_QTY_INPUT);\n}\n\n/**\n * Retrieves the value associated with the Quantity pull-down menu\n * @param {HTMLElement} el - DOM container for the relevant quantity\n * @return {string} - value found in the quantity input\n */\nconst getQuantitySelected = function (el) {\n const { quantity } = el.dataset;\n const quantitySelectorQty = getQuantitySelector(el) ? getQuantitySelector(el).value : 1;\n return quantity || quantitySelectorQty;\n};\n\n\nexport default getQuantitySelected;\n","function isvisible(obj) {\n return obj.offsetWidth > 0 && obj.offsetHeight > 0;\n}\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nconst getPidValue = function (el) {\n\n let pid;\n const quickViewModal = document.querySelector('#quickViewModal');\n const productSet = document.querySelector('.product-set');\n\n if (quickViewModal && isvisible(quickViewModal) && !productSet) {\n pid = el.closest('.modal-content').querySelector('.product-quickview').dataset.id;\n } else if (document.querySelector('.product-set-detail') || productSet) {\n pid = el.closest('.product-detail').querySelector('.product-id').innerText;\n } else if (el.dataset.pid) {\n const { pid: pidValue } = el.dataset\n pid = pidValue\n } else {\n pid = document.querySelector('.product-detail:not(.bundle-item)').dataset.id;\n }\n\n return pid;\n};\n\n\nexport default getPidValue;\n","/**\n * Retrieves url to use when adding a product to the cart\n *\n * @params {HTMLElement} element -Html element of add to cart button\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nconst JS_HOOK_ADD_TO_CART_CONTAINER = '[js-hook-add-to-cart-container]';\nconst getAddToCartUrl = function(element) {\n const container = element.closest(JS_HOOK_ADD_TO_CART_CONTAINER);\n return container\n ? container.querySelector('.add-to-cart-url').value\n : document.querySelector('.add-to-cart-url').value;\n};\n\nexport default getAddToCartUrl;\n","import getProductOptions from './get-product-options';\nimport getChildProducts from './get-child-products';\nimport getQuantitySelected from './get-quantity-selected';\nimport getPidValue from './get-pid-value';\nimport getAddToCartUrl from './get-add-to-cart-url';\n\n/* eslint-disable import/prefer-default-export */\nexport {\n getProductOptions,\n getChildProducts,\n getQuantitySelected,\n getPidValue,\n getAddToCartUrl,\n}\n","import RafThrottle from '@utilities/raf-throttle'\n\nconst installMediaQueryWatcher = (mediaQuery, layoutChangedCallback) => {\n const mql = window.matchMedia(mediaQuery)\n mql.addListener((event) => layoutChangedCallback(event.matches, event.media))\n layoutChangedCallback(mql.matches, mql.media)\n}\n\nconst MEDIA_QUERIES = [\n {\n reference: 'isMobile',\n breakpoint: 320,\n },\n {\n reference: 'isMobilePlus',\n breakpoint: 480,\n },\n {\n reference: 'isTabletPortrait',\n breakpoint: 768,\n },\n {\n reference: 'isTabletLandscape',\n breakpoint: 1024,\n },\n {\n reference: 'isLaptop',\n breakpoint: 1240,\n },\n {\n reference: 'isDesktop',\n breakpoint: 1600,\n },\n {\n reference: 'isWidescreen',\n breakpoint: 1920,\n },\n]\n\nclass ScreenDimensions {\n get screenHeight() {\n return this.height\n }\n\n get screenWidth() {\n return this.width\n }\n\n constructor() {\n RafThrottle.set([\n {\n element: window,\n event: 'resize',\n namespace: 'ScreenDimensionsWidthChange',\n fn: () => this.updateWidth(),\n },\n ])\n\n MEDIA_QUERIES.forEach((mqObject, index) => {\n const { breakpoint } = mqObject\n\n installMediaQueryWatcher(`(min-width: ${breakpoint}px)`, (matches) => {\n this[`${mqObject.reference}AndBigger`] = matches\n })\n\n if (!index) {\n installMediaQueryWatcher(`(max-width: ${breakpoint}px)`, (matches) => {\n this[mqObject.reference] = matches\n })\n } else if (MEDIA_QUERIES[index + 1]) {\n installMediaQueryWatcher(\n `(min-width: ${breakpoint}px) and (max-width: ${\n MEDIA_QUERIES[index + 1].breakpoint - 1\n }px)`,\n (matches) => {\n this[mqObject.reference] = matches\n },\n )\n } else {\n installMediaQueryWatcher(`(min-width: ${breakpoint}px)`, (matches) => {\n this[mqObject.reference] = matches\n })\n }\n })\n\n this.updateWidth()\n }\n\n updateWidth() {\n // eslint-disable-next-line\n ;(this.width = window.innerWidth), (this.height = window.innerHeight)\n }\n}\n\nexport default new ScreenDimensions()\n","/**\n * @shelf-version: 1.1.0\n */\n\nimport ScreenDimensions from './screen-dimensions'\n\nexport default ScreenDimensions\n","import API from '@utilities/api';\nimport RafThrottle from '@utilities/raf-throttle';\nimport { html } from '@utilities/dom-elements';\nimport ScreenDimensions from '@utilities/screen-dimensions';\nimport apiErrorHandler from '@utilities/errors/api-error-handler';\nimport errorHandler from '@utilities/errors/error-handler';\nimport Events from '@utilities/events';\nimport removeAlertMessage from '@utilities/errors/remove-alert-message';\nimport getMaxValue from '@utilities/min-max-value/get-max-value';\nimport ButtonLoader from '@components/button-loader';\n\nimport {\n getChildProducts,\n getPidValue,\n // getProductOptions,\n getQuantitySelected,\n} from '@utilities/product';\nimport etmcCartEvent from '@utilities/etmc-cart-event';\n\nconst ADDTOCART_TOP_POSITION_NAMESPACE = 'addToCartTopPosition';\n\nconst ADDTOCART_SECTION = '.fl-addtocart-section';\nconst ONORDER_SECTION = '.fl-onorder-section';\n\nconst ADDTOCART_ELEMENT = '.fl-content-add-to-cart';\nconst ONORDER_ELEMENT = '.fl-content-on-order';\n\nconst JS_HOOK_ADD_TO_CART = '[js-hook-add-to-cart]';\nconst JS_HOOK_PRODUCT_DETAIL = '[js-hook-product-detail]';\nconst JS_HOOK_SET_ITEMS = '[js-hook-set-items]';\n// const JS_HOOK_BUNDLE_ITEM = '[js-hook-bundle-item]';\nconst JS_HOOK_BUNDLE_ITEMS_FORM = '[js-hook-bundle-items-form]';\nconst JS_HOOK_PRODUCT_LINE_ITEM = '[js-hook-product-line-item]';\nconst JS_HOOK_STICKY_BUTTON = '[js-hook-product-detail-sticky-button]';\nconst JS_HOOK_HEADER = '[js-hook-header]';\nconst JS_HOOK_ADDED_TO_CART_MODAL = '[js-hook-added-to-cart-modal]';\nconst JS_HOOK_GTM_DATA = '[js-hook-product-add-to-cart-data]';\n\nconst JS_HOOK_ADD_TO_CART_CONFIRMATION = 'js-hook-add-to-cart-confirmation';\n\nconst HEADER_SCROLLUP_CLASS = 'header--is-scrolled-up';\nconst HIDDEN_CLASS = 'u-hidden';\n\nconst MODAL_TIMER = 1000;\n\nclass AddToCart {\n constructor(element) {\n this.element = element;\n const { product, url, reload } = this.element.dataset || {};\n\n const gtmStringObject = document.querySelector(JS_HOOK_GTM_DATA).dataset.gtmObj;\n const ga4StringObject = document.querySelector(JS_HOOK_GTM_DATA).dataset.ga4Obj;\n this.gtmObj = gtmStringObject === '' ? false : JSON.parse(gtmStringObject);\n this.ga4Obj = ga4StringObject === '' ? false : JSON.parse(ga4StringObject);\n\n this.productDataString = product || '';\n this.addToCartUrl = url || '';\n this.forceReload = reload || false;\n this.pidsObj = null;\n this.buttonLoader = new ButtonLoader(this.element);\n this.addedToCartModal = document.querySelector(JS_HOOK_ADDED_TO_CART_MODAL);\n this.addToCartPid = this.element.dataset.pid;\n\n this.addToCartIsASet = this.element.dataset.set;\n\n this.header = document.querySelector(JS_HOOK_HEADER);\n\n this.updateButtonTopPosition();\n this.bindEvents();\n }\n\n /**\n * Checks whether add-to-cart happens on a Set Product(Detail).\n * If true; adds all the product ids to the pids object\n */\n checkSetItems() {\n this.pidsObj = [];\n\n if (this.addToCartIsASet) {\n const setProductsWrapper = this.element.closest(JS_HOOK_SET_ITEMS);\n const setProducts = [...setProductsWrapper.querySelectorAll(JS_HOOK_PRODUCT_LINE_ITEM)];\n\n setProducts.forEach((product) => {\n this.pidsObj.push({\n pid: product.dataset.pid,\n qty: product.dataset.quantity,\n });\n });\n }\n }\n\n /**\n * Updates the minicart quantity value after the customer has pressed the \"Add to Cart\" button\n * @param {String} data - ajax response from clicking the add to cart button\n */\n triggerSuccessEvents(data) {\n if (this.element.dataset.recommendedProduct) {\n // gtm event add_to_cart/add_to_cart_ga when add recommended product\n let recommendedGtmObj = this.element.dataset.gtmObj ? this.element.dataset.gtmObj : false;\n let recommendedGa4Obj = this.element.dataset.ga4Obj ? this.element.dataset.ga4Obj : false;\n\n if (recommendedGtmObj && recommendedGa4Obj) {\n recommendedGtmObj = JSON.parse(recommendedGtmObj);\n recommendedGa4Obj = JSON.parse(recommendedGa4Obj);\n\n for (let index = 0; index < recommendedGtmObj.length; index++) {\n const currentRecommendedGtmObj = recommendedGtmObj[index];\n const currentRecommendedGa4Obj = recommendedGa4Obj[index];\n\n Events.$trigger('gtm::push', { data: currentRecommendedGtmObj });\n Events.$trigger('gtm::push', { data: { ecommerce: null } });\n Events.$trigger('gtm::push', { data: currentRecommendedGa4Obj });\n }\n }\n\n } else {\n // default adding to cart\n const gtmStringObject = document.querySelector(JS_HOOK_GTM_DATA).dataset.gtmObj;\n const ga4StringObject = document.querySelector(JS_HOOK_GTM_DATA).dataset.ga4Obj;\n\n this.gtmObj = gtmStringObject === '' ? false : JSON.parse(gtmStringObject);\n this.ga4Obj = ga4StringObject === '' ? false : JSON.parse(ga4StringObject);\n\n Events.$trigger('gtm::push', { data: this.gtmObj });\n Events.$trigger('gtm::push', { data: { ecommerce: null } });\n Events.$trigger('gtm::push', { data: this.ga4Obj });\n }\n\n etmcCartEvent(data.cart.items);\n\n if (this.forceReload) {\n window.location.reload();\n return;\n }\n\n if (this.addedToCartModal) {\n const modalId = `recommendation-modal-${this.pid}`;\n\n setTimeout(() => {\n Events.$trigger(`modal[${modalId}]::open`);\n }, MODAL_TIMER);\n }\n\n if (this.addToCartIsASet) {\n const addToCartButtons = [...document.querySelectorAll(JS_HOOK_ADD_TO_CART)];\n\n addToCartButtons.forEach((button) => {\n const buttonNextSibling = button.nextElementSibling;\n\n if (buttonNextSibling?.hasAttribute(JS_HOOK_ADD_TO_CART_CONFIRMATION)) {\n button.classList.add(HIDDEN_CLASS);\n buttonNextSibling.classList.remove(HIDDEN_CLASS);\n }\n });\n }\n\n Events.$trigger('minicart::update', { data });\n }\n\n /**\n * Succes handler of Axios response\n *\n * @param {Object} data - Axios response\n * @return {undefined}\n */\n addToCartSuccess(data) {\n if (data.error) {\n this.buttonLoader.hide();\n apiErrorHandler(data);\n } else {\n this.buttonLoader.hide(true);\n removeAlertMessage();\n this.triggerSuccessEvents(data);\n }\n }\n\n /**\n * Process API error for addToCart\n *\n * @param {Object|string} error\n */\n addToCartError(error) {\n this.buttonLoader.hide();\n errorHandler(error);\n }\n\n addToCart() {\n this.buttonLoader.show();\n\n API.post(this.addToCartUrl, this.form)\n .then((response) => this.addToCartSuccess(response.data))\n .catch((error) => this.addToCartError(error));\n }\n\n /**\n * Set variables on class scope for later use\n */\n setVariables() {\n if (this.addToCartPid) {\n this.pid = getPidValue(this.element);\n }\n this.productContainer = this.element.closest(JS_HOOK_PRODUCT_DETAIL);\n }\n\n /**\n * Prepare add to cart form for api serialization\n */\n updateAddToCartForm(quantity) {\n this.form = {\n pid: this.pid,\n pidsObj: this.pidsObj.length > 0 ? JSON.stringify(this.pidsObj) : null,\n quantity,\n };\n\n const bundleItems = document.querySelector(JS_HOOK_BUNDLE_ITEMS_FORM);\n if (bundleItems) {\n this.form.childProducts = getChildProducts(this.inputs);\n }\n }\n\n /**\n * Function to handle quantity from event\n *\n * @param {Number} quantity - quantity amount\n */\n handleAddToCart(quantity) {\n if (this.element.disabled) return;\n this.checkSetItems();\n this.setVariables();\n this.updateAddToCartForm(quantity);\n\n if (this.addToCartUrl) {\n this.addToCart();\n }\n }\n\n /**\n * Event handler for add to cart button\n *\n * @param {Object} event - the event object\n */\n handleButtonClick(event) {\n event.preventDefault();\n let quantity = null;\n\n if (this.addToCartPid) {\n quantity = getMaxValue(getQuantitySelected(this.element));\n }\n\n this.handleAddToCart(quantity);\n }\n\n // depending on header postiion > reposition add to cart\n updateButtonTopPosition() {\n if (ScreenDimensions.isTabletLandscapeAndBigger) return;\n\n const stickyParentEl = this.element.closest(JS_HOOK_STICKY_BUTTON);\n const headerHeight = this.header.offsetHeight;\n\n const addToCartSection = document.querySelector(ADDTOCART_SECTION);\n const onOrderSection = document.querySelector(ONORDER_SECTION);\n\n const addToCartButton = document.querySelector(ADDTOCART_ELEMENT).querySelector('button');\n const onOrderButton = document.querySelector(ONORDER_ELEMENT).querySelector('button');\n\n let CTAButton = addToCartSection.classList.contains('d-none') && !onOrderSection.classList.contains('d-none') ? onOrderButton : addToCartButton;\n if (!CTAButton) CTAButton = addToCartButton;\n\n const ATCPosition = CTAButton.getBoundingClientRect();\n const ATCPHeight = CTAButton.offsetHeight / 2;\n const screenHeight = window.screen.height;\n \n if (!stickyParentEl) return;\n\n if (CTAButton) {\n if (html.classList.contains(HEADER_SCROLLUP_CLASS)) {\n if (ATCPosition.bottom > screenHeight || ATCPosition.bottom < headerHeight + ATCPHeight) {\n stickyParentEl.removeAttribute('style');\n } else {\n stickyParentEl.style.transform = `translate3d(0,${headerHeight}px,0)`;\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (ATCPosition.bottom > screenHeight || ATCPosition.bottom < ATCPHeight) {\n stickyParentEl.removeAttribute('style');\n } else {\n stickyParentEl.style.transform = `translate3d(0,${headerHeight}px,0)`;\n }\n }\n }\n }\n\n /**\n * Bind all events\n */\n bindEvents() {\n this.element.addEventListener('click', (event) => this.handleButtonClick(event));\n\n RafThrottle.set([\n {\n element: window,\n event: 'scroll',\n namespace: ADDTOCART_TOP_POSITION_NAMESPACE,\n fn: () => this.updateButtonTopPosition(),\n },\n ]);\n }\n}\n\nexport default AddToCart;\n","\nimport AddToCart from './add-to-cart';\n\nexport default AddToCart;\n"],"sourceRoot":""}