{"version":3,"sources":["webpack:///./cartridges/LINK_cybersource_tfg/cartridge/client/default/js/productDetail.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/product/detail.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/recommendations.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/components/searchStores.js","webpack:///./cartridges/LINK_cybersource_tfg/cartridge/client/default/js/product/detail.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/productNav.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/sizeChart.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/stockCheck.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/productReviews.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/deliveryReturns.js","webpack:///./node_modules/stickybits/dist/stickybits.es.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/stickyComponents.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/productCarousels.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/backInStockSubscription.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/stickyBar.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/handlePDPScroll.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/components/pdpRecomendationCarousel.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/product/detail.js","webpack:///./cartridges/app_tfg/cartridge/client/default/js/sfra/productDetail.js","webpack:///./cartridges/app_tfg/cartridge/scripts/helpers/urlHelpers.js","webpack:///./cartridges/int_cloudinary_sfra/cartridge/client/default/js/cloudinary/cloudinary.js","webpack:///./cartridges/int_cloudinary_sfra/cartridge/client/default/js/product/cloudinarydetail.js","webpack:///./cartridges/int_cloudinary_sfra/cartridge/client/default/js/productDetail.js","webpack:///./cartridges/int_cybersource_sfra/cartridge/client/default/js/product/detail.js","webpack:///./cartridges/plugin_wishlists/cartridge/client/default/js/product/details.js","webpack:///./cartridges/plugin_wishlists/cartridge/client/default/js/productDetail.js"],"names":["base","availability","addToCart","updateAttributesAndDetails","$","$productContainer","data","showSpinner","updateAttribute","response","updateAddToCart","enable","updateAvailability","allAvailable","allReady","sizeChart","$sizeChart","e","url","type","dataType","success","RECOMM_CACHE","getRecommendationCarousels","document","querySelectorAll","persistRecommendations","forEach","carousel","id","innerHTML","restoreRecommendations","restoredCallback","carouselRestored","DEFAULT_COORDS","lat","long","getLatLong","address","country","geocoder","google","maps","Geocoder","Promise","resolve","params","componentRestrictions","geocode","results","status","geometry","location","lng","coodrs","getPosition","reject","navigator","geolocation","getCurrentPosition","position","search","form","coords","updatedUrl","replaceUrlParams","setAttribute","loadContent","content","searchStores","trigger","getAttribute","classList","contains","latitude","longitude","querySelector","value","countryField","initApplePayButton","baseInitApplePayButton","on","setTimeout","applePayButton","product","enableApplePayOnPDP","remove","SELECTORS","PRODUCT_NAV","navContainer","hash","window","length","indexOf","parseQueryString","CONTENT_TYPES","TEXT","sizeChartContainer","sizeChartContainers","fc","initFlyout","PANE","FORM","RESULT","ATTRIBUTE","SWATCH_ICON","DETECT_LOCATION","NEAREST_STOCKED_FORM","STORE_LABEL","ACTIVE_STORE_LABEL","BACK_TO_TOP_BTN","STORECHECK_LINK","initStockCheckFlyout","stockCheckPane","stockCheckPanes","onEvent","googleScriptTag","linkHolder","googleApi","delegateTarget","dataset","createElement","head","appendChild","linkHolders","linkHoldr","stockUrl","fetch","fetchOptionsGet","text","initAttrSelect","swatchIcon","attrVal","selectedOptions","swatchUrl","style","backgroundImage","handleStoreSelect","label","target","add","initSearch","resultContainer","preventDefault","parentElement","nextElementSibling","addBackToTopHandler","button","disabled","CONSTANTS","HASH_TRIGGER","CONTAINER","REVIEW_SECTION","REVIEW","LOAD_MORE_BUTTON","VISIBLE_REVIEWS_COUNT","ITEMS_CONTAINER","SORT_DROPDOWN","getReviews","Array","prototype","slice","call","getReviewValue","item","valueField","rawValue","numberValue","parseFloat","dateValue","Date","parse","initReviewsPagination","loadMoreButton","visibleCountContainer","pageSizeStr","pageSize","parseInt","Number","isNaN","addEventListener","items","firstPageIndex","findIndex","el","lastPageIndex","Math","min","pageItems","initReviewsSorting","sortDropdown","reviewsContainer","sort","split","sortField","sortDirection","visibleItemsCount","filter","sortedItems","concat","itemA","itemB","valueA","valueB","index","toggle","sortedItemsContent","reduce","html","outerHTML","goToPage","showPage","handleDisplayOnLoad","replace","hashParts","collapse","hashNoReviews","part","join","pageNumber","itemsPerPage","itemsPage","each","key","val","removeClass","start","end","i","reviwTotal","currentPage","totalPages","maxVisiblePages","updatePagination","pageNumbersContainer","getElementById","startPage","max","floor","endPage","createPageNumber","createEllipsis","hasClass","hide","show","page","textContent","className","onclick","ellipsis","prevPage","dataVal","current","updatePaginationArrow","addClass","nextPage","scrollPostion","ctaContainer","scrollTo","reviewsSection","sortReviewsDrowpdown","reviewItemsContainer","loadMoreReviewsButton","visibleReviewsCountContainer","isLazyLoadEnabled","initProductReviews","deliveryContainer","GLOBALS","STICKY_DESCRIPTION","STICKY_PRODUCT_SET_IMAGE","isProductSet","referenceIsFresh","ref","els","body","initStickyDescriptionObject","STICKY_DESCRIPTION_OPTIONS","useStickyClasses","stickyBitStickyOffset","ceil","innerHeight","offsetHeight","stickybits","isLG","cleanup","INITIALIZED","CLASSES","HIDDEN","CAROUSEL_TABS","CAROUSELS","PRODUCTS","TAB_LINK","TAB","TAB_VISIBLE","TAB_ACTIVE_HIDDEN","handleCarouselVisibility","carousels","carouselTabContainers","hasProducts","toggleTab","closest","recommendationsHeading","recommendationCallout","recentlyViewedCallout","recentlyViewedHeading","carouselTabs","activeTabHidden","firstVisibleTab","tab","bind","flyoutContainer","hashNoFlyout","handleFlyoutContainer","flyout","initialized","container","flyoutContainers","scrollToAddToBag","handleAddToBagButtonClick","animate","scrollTop","offset","top","height","addToCartButton","click","event","stickyAddToCartButton","inPageAddToCartButton","isInViewport","rect","getBoundingClientRect","stickyHeader","bottom","documentElement","clientHeight","toggleStickyBar","backToTopButton","stickyBarMenu","inPageATB","ready","display","addToWishlist","handleAddToWishlistButtonClick","syncStickyBarButtons","representedProductAdded","error","handleUSPClick","handleUSPLinkScroll","clickedItem","currentTarget","headingThree","collapseThree","scrollElement","returnBlock","scrollIntoView","block","NAVIGATORS","ARROWS","CustomLength","glide","Components","Events","addToBagCarouselEvents","handleSlider","Sizes","settings","perView","disable","Html","root","destroy","mount","FixBoundPeek","GlideComponent","modify","translate","isBound","Run","isType","focusAt","bound","isEnd","peek","Peek","after","PDPWaystowear","sliders","glideBreakpoints","before","tileRow","breakpointsData","parsedBreakpoints","JSON","rewind","gap","breakpoints","Glide","mutate","PDPCarouselInit","PDPCarouselYouMightLike","slider","PDPEinsteinRecsCarouselInit","onload","mediaQuery","matchMedia","handleGlideCarousel","matches","handlePageElements","initSizeChart","initStockCheck","initReviews","deliveryReturns","initAttributes","handleCarousel","initPDPRecCarousel","handleStickyComponents","handleProductCarousels","handleProductSubscriptionForm","cldGalleryElement","initImageGallery","pageBehavior","initProductNav","stickyBar","handlePDPScroll","videoPlayer","PDPBrandFocusInit","startAt","closeSizeSelectorDropdown","elementsToCheck","clickedInside","some","element","list","hideTimeout","showContainer","opacity","hideContainer","scheduleHide","clearTimeout","addToBag","clickCount","productDetail","closestDropdown","dropdownList","selected","setItems","getElementsByClassName","handleProductDescTab","tabLinks","link","currentId","currentHref","newId","newHref","substring","bottomSection","tabContents","STYLE_WITH_CONTAINER","$currentDropDown","not","next","toggleClass","focus","colorSwatchPlaceholder","swatchDropdown","selectedColorValue","matchingOption","from","options","find","option","tippyContent","fitStyleELE","selectedFitValue","checked","previousElementSibling","waysToWearComponent","activeIndex","subProductsArray","looksTitlesArray","targetElement","clickedClass","cls","startsWith","module","superModule","baseAppendQueryParams","appendQueryParams","resultUrl","toString","Object","keys","paramName","paramValue","paramPattern","newParamPair","encodeURIComponent","newParamPart","RegExp","separator","queryParamsToAppend","isArray","queryString","obj","query","splitQuery","exports","updateCloudinaryGalleryWidget","cloudinary","cldGallery","cloudinaryData","temp","detail","processInclude","require","exportDetails"],"mappings":"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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC,2BAA2B;;AAE3B;AACA;;AAEA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC;;AAExC;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,2BAA2B;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEe,4DAAU,EAAC;;;;;;AC1c1B;CAEA;;AACA;AAEA,MAAMC,OAAO,GAAG;AACdC,oBAAkB,EAAE,IADN;AAEdC,0BAAwB,EAAE;AAFZ,CAAhB;AAKA,MAAMtL,0BAAS,GAAG;AAChBqL,oBAAkB,EAAE,yCADJ;AAEhBC,0BAAwB,EAAE;AAFV,CAAlB;AAKA,MAAMC,YAAY,GAAGtP,QAAQ,CAACoD,aAAT,CAAuB,qBAAvB,MAAkD,IAAvE;AAEA;;;;;;;;;AAQA,MAAMmM,gBAAgB,GAAGC,GAAG,IAAIA,GAAG,IAAIA,GAAG,CAACC,GAAJ,CAAQ,CAAR,CAAP,IAAqBzP,QAAQ,CAAC0P,IAAT,CAAczM,QAAd,CAAuBuM,GAAG,CAACC,GAAJ,C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","file":"js/productDetail.js","sourcesContent":["/**\n * The productDetail.js module in LINK_cybersource requires the detail.js module twice,\n * once relatively from its own directory, and once from the 'base' path.\n *\n * This cannot work with the dependency chain plugin, since it would just lead\n * to the top-most detail.js being executed twice.\n *\n * This is why the LINK_cybersource productDetail.js module is just skipped -\n * this has the same effect as the original code, as the two detail.js modules will be chained,\n * and the resulting top-level module will be executed\n */\nimport '~base/~base';\n","'use strict';\nvar base = require('./base');\n\nmodule.exports = {\n    availability: base.availability,\n\n    addToCart: base.addToCart,\n\n    updateAttributesAndDetails: function () {\n        $('body').on('product:statusUpdate', function (e, data) {\n            var $productContainer = $('.product-detail[data-pid=\"' + data.id + '\"]');\n\n            $productContainer.find('.description-and-detail .product-attributes')\n                .empty()\n                .html(data.attributesHtml);\n\n            if (data.shortDescription) {\n                $productContainer.find('.description-and-detail .description')\n                    .removeClass('hidden-xl-down');\n                $productContainer.find('.description-and-detail .description .content')\n                    .empty()\n                    .html(data.shortDescription);\n            } else {\n                $productContainer.find('.description-and-detail .description')\n                    .addClass('hidden-xl-down');\n            }\n\n            if (data.longDescription) {\n                $productContainer.find('.description-and-detail .details')\n                    .removeClass('hidden-xl-down');\n                $productContainer.find('.description-and-detail .details .content')\n                    .empty()\n                    .html(data.longDescription);\n            } else {\n                $productContainer.find('.description-and-detail .details')\n                    .addClass('hidden-xl-down');\n            }\n        });\n    },\n\n    showSpinner: function () {\n        $('body').on('product:beforeAddToCart product:beforeAttributeSelect', function () {\n            $.spinner().start();\n        });\n    },\n    updateAttribute: function () {\n        $('body').on('product:afterAttributeSelect', function (e, response) {\n            if ($('.product-detail>.bundle-items').length) {\n                response.container.data('pid', response.data.product.id);\n                response.container.find('.product-id').text(response.data.product.id);\n            } else if ($('.product-set-detail').eq(0)) {\n                response.container.data('pid', response.data.product.id);\n                response.container.find('.product-id').text(response.data.product.id);\n            } else {\n                $('.product-id').text(response.data.product.id);\n                $('.product-detail:not(\".bundle-item\")').data('pid', response.data.product.id);\n            }\n        });\n    },\n    updateAddToCart: function () {\n        $('body').on('product:updateAddToCart', function (e, response) {\n            // update local add to cart (for sets)\n            $('button.add-to-cart', response.$productContainer).attr('disabled',\n                (!response.product.readyToOrder || !response.product.available));\n\n            var enable = $('.product-availability').toArray().every(function (item) {\n                return $(item).data('available') && $(item).data('ready-to-order');\n            });\n            $('button.add-to-cart-global').attr('disabled', !enable);\n        });\n    },\n    updateAvailability: function () {\n        $('body').on('product:updateAvailability', function (e, response) {\n            $('div.availability', response.$productContainer)\n                .data('ready-to-order', response.product.readyToOrder)\n                .data('available', response.product.available);\n\n            $('.availability-msg', response.$productContainer)\n                .empty().html(response.message);\n\n            if ($('.global-availability').length) {\n                var allAvailable = $('.product-availability').toArray()\n                    .every(function (item) { return $(item).data('available'); });\n\n                var allReady = $('.product-availability').toArray()\n                    .every(function (item) { return $(item).data('ready-to-order'); });\n\n                $('.global-availability')\n                    .data('ready-to-order', allReady)\n                    .data('available', allAvailable);\n\n                $('.global-availability .availability-msg').empty()\n                    .html(allReady ? response.message : response.resources.info_selectforstock);\n            }\n        });\n    },\n    sizeChart: function () {\n        var $sizeChart = $('.size-chart-collapsible');\n        $('.size-chart a').on('click', function (e) {\n            e.preventDefault();\n            var url = $(this).attr('href');\n            if ($sizeChart.is(':empty')) {\n                $.ajax({\n                    url: url,\n                    type: 'get',\n                    dataType: 'json',\n                    success: function (data) {\n                        $sizeChart.append(data.content);\n                    }\n                });\n            }\n            $sizeChart.toggleClass('active');\n        });\n\n        $('body').on('click touchstart', function (e) {\n            if ($('.size-chart').has(e.target).length <= 0) {\n                $sizeChart.removeClass('active');\n            }\n        });\n    }\n};\n","const RECOMM_CACHE = {};\n\nconst getRecommendationCarousels = () => document.querySelectorAll('[id^=\"cq_recomm_slot\"]');\n\nexport const persistRecommendations = () => {\n  getRecommendationCarousels().forEach((carousel) => {\n    RECOMM_CACHE[carousel.id] = carousel.innerHTML;\n  });\n};\n\nexport const restoreRecommendations = (restoredCallback) => {\n  let carouselRestored = false;\n\n  getRecommendationCarousels().forEach((carousel) => {\n    if (RECOMM_CACHE[carousel.id]) {\n      carousel.innerHTML = RECOMM_CACHE[carousel.id];\n\n      carouselRestored = true;\n      delete RECOMM_CACHE[carousel.id];\n    }\n  });\n\n  if (carouselRestored && typeof restoredCallback === 'function') {\n    restoredCallback();\n  }\n};\n","/* globals google */\nimport { loadContent } from '../util/fetchutils'; // eslint-disable-line\nimport { replaceUrlParams } from '../../../../scripts/helpers/urlHelpers';\n\nconst DEFAULT_COORDS = { lat: 0, long: 0 };\n\nconst getLatLong = (address, country) => {\n  const geocoder = new google.maps.Geocoder();\n  return new Promise((resolve) => {\n    const params = { address };\n\n    if (country) {\n      params.componentRestrictions = { country };\n    }\n\n    geocoder.geocode(params, (results, status) => {\n      if (status === 'OK') {\n        const lat = results[0].geometry.location.lat();\n        const long = results[0].geometry.location.lng();\n\n        const coodrs = { lat, long };\n\n        return resolve(coodrs);\n      }\n\n      return resolve(DEFAULT_COORDS);\n    });\n  });\n};\n\nconst getPosition = () => new Promise(((resolve, reject) => {\n  if (!navigator.geolocation) {\n    reject();\n  } else {\n    navigator.geolocation.getCurrentPosition(async position => resolve(position));\n  }\n}));\n\nconst search = async (form, url, coords) => {\n  // Adding coords to action url in order to use them for the filter logic\n  const updatedUrl = replaceUrlParams(url, coords);\n  form.setAttribute('action', updatedUrl);\n\n  const { content } = await loadContent(form, null, coords);\n\n  return content;\n};\n\n// eslint-disable-next-line import/prefer-default-export\nexport const searchStores = async (form, trigger) => {\n  let coords = DEFAULT_COORDS;\n  const url = form.getAttribute('action');\n\n  if (trigger && trigger.classList.contains('detect-location')) {\n    const position = await getPosition();\n\n    coords = {\n      lat: position.coords.latitude,\n      long: position.coords.longitude,\n    };\n  } else {\n    const address = form.querySelector('[name=\"postalCode\"]').value;\n\n    const countryField = form.querySelector('[name$=\"_country\"]');\n    const country = countryField ? countryField.value : '';\n\n    try {\n      coords = await getLatLong(address, country);\n    } catch (e) {\n      // Fallback to 0, 0\n    }\n  }\n\n  return search(form, url, coords);\n};\n","/**\n * The LINK_cybersource detail.js module only exports a single function\n * rather than extending its base module, and the two are executed one after the other.\n *\n * This cannot work with the dependency chain plugin, since any requests that resolve\n * to the base detail.js will result in the LINK_cybersource module instead,\n * leading to the base code being lost and only the LINK_cybersource function being executed.\n *\n * This is why this module does what the LINK_cybersource module should have done in the first place,\n * merging the two modules and resolving any requires to the top-level one with the merge result.\n *\n * CommonJS needs to be used instead of ES6 modules, since this needs to work in tandem with the base\n */\nimport $ from 'jquery';\nimport base from '~base/~base';\nimport baseInitApplePayButton from '~base';\n\nbase.initApplePayButton = () => {\n  baseInitApplePayButton();\n\n  $('body').on('product:updateAddToCart', (e, response) => {\n    setTimeout(() => { // Execute after the base handler\n      const applePayButton = response.$productContainer[0].querySelector('.apple-pay-pdp');\n\n      if (applePayButton && !response.product.enableApplePayOnPDP) {\n        applePayButton.remove();\n      }\n    }, 1);\n  });\n};\n\nexport default base;\n","import { loadContent, CONTENT_TYPES } from '../../util/fetchutils';\nimport { parseQueryString } from '../../util/urlutils';\n\nconst SELECTORS = {\n  PRODUCT_NAV: '.product-detail__nav-row__nav',\n};\nexport default async () => {\n  const navContainer = document.querySelector(SELECTORS.PRODUCT_NAV);\n\n  if (navContainer && navContainer.getAttribute('initialized') !== 'true') {\n    const { hash } = window.location;\n\n    if (hash && hash.length && hash.indexOf('pos=') >= 0 && navContainer) {\n      const { content, type } = await loadContent(navContainer, null, parseQueryString(hash));\n\n      if (type === CONTENT_TYPES.TEXT) {\n        navContainer.innerHTML = content;\n      }\n    }\n\n    navContainer.setAttribute('initialized', 'true');\n  }\n};\n","import { initFlyout } from '../../components/flyoutUnderHeader';\n\nexport default () => {\n  const sizeChartContainer = document.querySelector('.product-detail__size-chart__pane');\n\n  if (sizeChartContainer && sizeChartContainer.getAttribute('initialized') !== 'true') {\n    if (document.querySelector('.product-set-detail .set-items')) {\n      const sizeChartContainers = document.querySelectorAll('.product-detail__size-chart__pane');\n      sizeChartContainers.forEach((fc) => {\n        initFlyout(fc);\n        if (fc.getAttribute('initialized') !== 'true') {\n          fc.setAttribute('initialized', 'true');\n        }\n      });\n    } else {\n      initFlyout(sizeChartContainer);\n      if (sizeChartContainer.getAttribute('initialized') !== 'true') {\n        sizeChartContainer.setAttribute('initialized', 'true');\n      }\n    }\n  }\n};\n","import { onEvent } from '../../util/domutils'; // eslint-disable-line import/named\nimport { loadContent, fetchOptionsGet } from '../../util/fetchutils'; // eslint-disable-line import/named\nimport { initFlyout } from '../../components/flyoutUnderHeader';\nimport { searchStores } from '../../components/searchStores';\nimport { addBackToTopHandler } from '../../components/backToTop';\n\nconst SELECTORS = {\n  PANE: '.product-detail__stock-check__pane',\n  FORM: '.product-detail__stock-check__form',\n  RESULT: '.product-detail__stock-check__result',\n  ATTRIBUTE: '.product-detail__stock-check__form__attribute',\n  SWATCH_ICON: '.product-detail__stock-check__form__fields__background',\n  DETECT_LOCATION: '.product-detail__stock-check__form .detect-location',\n  NEAREST_STOCKED_FORM: '.product-detail__stock-check__result__nearest-stocked-check',\n  STORE_LABEL: '.product-detail__stock-check__result__row--store',\n  ACTIVE_STORE_LABEL: '.product-detail__stock-check__result__row--store.active',\n  BACK_TO_TOP_BTN: '.product-detail__stock-check__result__table__back-to-top',\n  STORECHECK_LINK: '.product-detail__stock-check__link',\n};\n\nconst initStockCheckFlyout = () => {\n  const stockCheckPane = document.querySelector(SELECTORS.PANE);\n\n  if (stockCheckPane) {\n    if (document.querySelector('.product-set-detail .set-items')) {\n      const stockCheckPanes = document.querySelectorAll(SELECTORS.PANE);\n      stockCheckPanes.forEach((fc) => {\n        initFlyout(fc);\n        if (fc.getAttribute('initialized') !== 'true') {\n          fc.setAttribute('initialized', 'true');\n        }\n      });\n    } else {\n      initFlyout(stockCheckPane);\n      if (stockCheckPane.getAttribute('initialized') !== 'true') {\n        stockCheckPane.setAttribute('initialized', 'true');\n      }\n    }\n  }\n\n  onEvent(document, 'click', SELECTORS.STORECHECK_LINK, async (e) => {\n    let googleScriptTag;\n    const linkHolder = document.querySelector('.countryField-holder');\n    // eslint-disable-next-line prefer-template\n    const googleApi = document.querySelector('script[src=\"' + e.delegateTarget.dataset.googleApi + '\"]');\n    if (!googleApi && e.delegateTarget.dataset.googleApi !== 'null') {\n      googleScriptTag = document.createElement('script');\n      googleScriptTag.setAttribute('src', e.delegateTarget.dataset.googleApi);\n      document.head.appendChild(googleScriptTag);\n    }\n    if (linkHolder) {\n      if (document.querySelector('.product-set-detail .set-items')) {\n        const linkHolders = document.querySelectorAll('.countryField-holder');\n        linkHolders.forEach(async (linkHoldr) => {\n          const stockUrl = linkHoldr.dataset.url;\n          if (linkHoldr.innerHTML.length <= 0) {\n            const response = await fetch(stockUrl, fetchOptionsGet());\n            const content = await response.text();\n            linkHoldr.innerHTML = content;\n          }\n        });\n      } else {\n        const stockUrl = linkHolder.dataset.url;\n        if (linkHolder.innerHTML.length <= 0) {\n          const response = await fetch(stockUrl, fetchOptionsGet());\n          const content = await response.text();\n          linkHolder.innerHTML = content;\n        }\n      }\n    }\n  });\n};\n\nconst initAttrSelect = () => {\n  const swatchIcon = document.querySelector(SELECTORS.SWATCH_ICON);\n\n  if (swatchIcon) {\n    onEvent(document, 'change', SELECTORS.ATTRIBUTE, async (e) => {\n      const attrVal = e.delegateTarget.selectedOptions[0];\n\n      if (attrVal && attrVal.dataset.swatchUrl) {\n        swatchIcon.style.backgroundImage = `url(\"${attrVal.dataset.swatchUrl}\")`;\n      }\n    });\n  }\n};\n\nconst handleStoreSelect = () => {\n  onEvent(document, 'click', SELECTORS.STORE_LABEL, async (e) => {\n    document.querySelectorAll(SELECTORS.ACTIVE_STORE_LABEL).forEach((label) => {\n      label.classList.remove('active');\n    });\n\n    const target = e.delegateTarget;\n    target.classList.add('active');\n  });\n};\n\nconst initSearch = () => {\n  const resultContainer = document.querySelector(SELECTORS.RESULT);\n\n  if (resultContainer && resultContainer.getAttribute('initialized') !== 'true') {\n    onEvent(document, 'click', SELECTORS.DETECT_LOCATION, async (e) => {\n      e.preventDefault();\n\n      const trigger = e.delegateTarget;\n      const { form } = trigger;\n      const content = await searchStores(form, trigger);\n\n      resultContainer.innerHTML = content;\n    });\n\n    onEvent(document, 'submit', SELECTORS.FORM, async (e) => {\n      e.preventDefault();\n\n      const form = e.delegateTarget;\n      const content = await searchStores(form);\n\n      form.parentElement.nextElementSibling.innerHTML = content;\n\n      addBackToTopHandler(SELECTORS.BACK_TO_TOP_BTN);\n\n      handleStoreSelect();\n    });\n\n    onEvent(document, 'submit', SELECTORS.NEAREST_STOCKED_FORM, async (e) => {\n      e.preventDefault();\n\n      const { content } = await loadContent(e.delegateTarget);\n\n      resultContainer.innerHTML = content;\n    });\n\n    resultContainer.setAttribute('initialized', 'true');\n  }\n\n  // The buttons are rendered disabled to prevent the form from being submitted without AJAX,\n  // resulting in a partial page being rendered\n  document.querySelectorAll(`${SELECTORS.FORM} button`).forEach((button) => {\n    button.disabled = false;\n  });\n};\n\nexport default () => {\n  initStockCheckFlyout();\n  initAttrSelect();\n  initSearch();\n};\n","/* eslint-disable jquery/no-class */\nimport $ from 'jquery';\nimport { initFlyout } from '../../components/flyoutUnderHeader';\nimport scrollTo from '../../util/scrollTo';\nimport { loadContent, CONTENT_TYPES } from '../../util/fetchutils';\n\nconst CONSTANTS = {\n  HASH_TRIGGER: 'reviews',\n};\n\nconst SELECTORS = {\n  CONTAINER: '.product-reviews',\n  REVIEW_SECTION: '.reviewSection',\n  REVIEW: '.product_reviews .product-detail__rating__review',\n  LOAD_MORE_BUTTON: '.product-detail__rating__more-btn',\n  VISIBLE_REVIEWS_COUNT: '.product-detail__rating__visible-reviews',\n  ITEMS_CONTAINER: '.product-detail__rating__reviews',\n  SORT_DROPDOWN: '.product-detail__rating__reviews-sort',\n};\n\nconst getReviews = () => Array.prototype.slice.call(document.querySelectorAll(SELECTORS.REVIEW));\n\nconst getReviewValue = (item, valueField) => {\n  const rawValue = item.dataset[valueField];\n  const numberValue = parseFloat(rawValue);\n  const dateValue = Date.parse(rawValue);\n  const value = numberValue || dateValue || rawValue;\n\n  return value;\n};\n\nconst initReviewsPagination = (loadMoreButton, visibleCountContainer) => {\n  const { pageSize: pageSizeStr } = loadMoreButton.dataset;\n\n  if (pageSizeStr) {\n    const pageSize = parseInt(pageSizeStr, 10);\n\n    if (!Number.isNaN(pageSize)) {\n      loadMoreButton.addEventListener('click', () => {\n        const items = getReviews();\n        const firstPageIndex = items.findIndex(el => el.classList.contains('d-none'));\n        const lastPageIndex = Math.min(items.length, firstPageIndex + pageSize);\n        const pageItems = items.slice(firstPageIndex, lastPageIndex);\n\n        pageItems.forEach((item) => {\n          item.classList.remove('d-none');\n        });\n\n        if (lastPageIndex >= items.length) {\n          loadMoreButton.remove();\n        }\n\n        if (visibleCountContainer) {\n          visibleCountContainer.innerHTML = lastPageIndex;\n        }\n      });\n    }\n  }\n};\n\nconst initReviewsSorting = (sortDropdown, reviewsContainer) => {\n  if (sortDropdown && reviewsContainer) {\n    sortDropdown.addEventListener('change', (e) => {\n      const items = getReviews();\n\n      const sort = e.target.value;\n      const [sortField, sortDirection] = sort.split('_');\n\n      const visibleItemsCount = items.filter(item => !item.classList.contains('d-none')).length;\n\n      const sortedItems = items.concat().sort((itemA, itemB) => {\n        const valueA = getReviewValue(itemA, sortField);\n        const valueB = getReviewValue(itemB, sortField);\n\n        if (valueA > valueB) {\n          return sortDirection === 'asc' ? 1 : -1;\n        }\n\n        if (valueA < valueB) {\n          return sortDirection === 'asc' ? -1 : 1;\n        }\n\n        return 0;\n      });\n\n      sortedItems.forEach((item, index) => {\n        item.classList.toggle('d-none', index >= visibleItemsCount);\n      });\n\n      const sortedItemsContent = sortedItems.reduce((html, item) => html + item.outerHTML, '');\n\n      reviewsContainer.innerHTML = sortedItemsContent;\n      goToPage(1);\n      showPage(1);\n    });\n  }\n};\n\nconst handleDisplayOnLoad = (reviewsContainer) => {\n  const hash = window.location.hash.replace('#', '');\n  const hashParts = hash.split('&');\n\n  if (hashParts.indexOf(CONSTANTS.HASH_TRIGGER) >= 0) {\n    $(reviewsContainer).collapse('show');\n\n    // Remove the reviews trigger from the current hash so they don't get opened\n    // again on refresh or on attribute change\n    const hashNoReviews = hashParts.filter(part => part !== CONSTANTS.HASH_TRIGGER).join('&');\n\n    window.location.hash = hashNoReviews;\n  }\n};\n\nfunction showPage(pageNumber) {\n  const itemsPerPage = 4;\n  const itemsPage = document.querySelectorAll('.product-detail__rating__review');\n  // Hide all items first\n  // eslint-disable-next-line jquery/no-each\n  $.each(itemsPage, (key, val) => {\n    $(val).removeClass('show');\n  });\n\n  // eslint-disable-next-line jquery/no-html\n  $('.product-detail__rating__reviews').html(itemsPage);\n\n  // Calculate start and end indices for the items to show\n  const start = (pageNumber - 1) * itemsPerPage;\n  const end = start + itemsPerPage;\n\n  // Show the items for the current page\n  for (let i = start; i < end && i < itemsPage.length; i++) {\n    itemsPage[i].classList.add('show');\n  }\n\n  const reviwTotal = $('.product-detail__rating__review.show').length;\n  // eslint-disable-next-line jquery/no-text\n  $('.product-detail__rating__visible-reviews').text(reviwTotal);\n\n  if ($('.currentPage').length > 0) {\n    $('.currentPage')[0].innerHTML = pageNumber;\n  }\n}\n\n// Pagination\n\nlet currentPage = 1;\n// eslint-disable-next-line jquery/no-data\nlet totalPages = $('.pagination-container').data('total');\nconst maxVisiblePages = 3; // Maximum visible page numbers\n\nfunction updatePagination() {\n  const pageNumbersContainer = document.getElementById('page-numbers');\n  // eslint-disable-next-line jquery/no-data\n  totalPages = $('.pagination-container').data('total');\n  pageNumbersContainer.innerHTML = ''; // Clear previous page numbers\n\n  // Calculate start and end pages for the range\n  let startPage = Math.max(1, currentPage - Math.floor(maxVisiblePages / 2));\n  const endPage = Math.min(totalPages, startPage + maxVisiblePages - 1);\n\n  // Adjust startPage if endPage is near the end\n  if (endPage - startPage + 1 < maxVisiblePages) {\n    startPage = Math.max(1, endPage - maxVisiblePages + 1);\n  }\n\n  // Add \"1\" and \"2\" if startPage > 2\n  if (startPage > 1) {\n    createPageNumber(1);\n    if (startPage > 2) {\n      createEllipsis();\n    }\n  }\n\n  // Add page numbers in the range\n  for (let i = startPage; i <= endPage; i++) {\n    createPageNumber(i);\n  }\n\n  // Add ellipsis and last page if endPage < totalPages\n  if (endPage < totalPages) {\n    if (endPage < totalPages - 1) {\n      createEllipsis();\n    }\n    createPageNumber(totalPages);\n  }\n\n  // Update buttons\n  if (totalPages > 4) {\n    document.getElementById('prev-btn').disabled = currentPage === 1;\n    document.getElementById('next-btn').disabled = currentPage === totalPages;\n    // eslint-disable-next-line no-cond-assign\n    if (document.getElementById('prev-btn').disabled = currentPage === 1 && !$('#prev-btn').hasClass('keep')) {\n      // eslint-disable-next-line jquery/no-hide\n      $('#prev-btn').hide();\n    } else {\n      // eslint-disable-next-line jquery/no-show\n      $('#prev-btn').show();\n    }\n  }\n}\n\nfunction createPageNumber(page) {\n  const pageNumber = document.createElement('div');\n  pageNumber.textContent = page;\n  pageNumber.dataset.item = page;\n  pageNumber.className = 'page-number reviewcount';\n  if (page === currentPage) {\n    pageNumber.classList.add('active');\n  }\n  pageNumber.onclick = () => goToPage(page);\n  document.getElementById('page-numbers').appendChild(pageNumber);\n}\n\nfunction createEllipsis() {\n  const ellipsis = document.createElement('div');\n  ellipsis.textContent = '...';\n  ellipsis.className = 'page-number disabled';\n  document.getElementById('page-numbers').appendChild(ellipsis);\n}\n\nfunction goToPage(page) {\n  currentPage = page;\n  updatePagination();\n}\n\nfunction prevPage() {\n  if (currentPage > 1) {\n    currentPage--;\n    // eslint-disable-next-line jquery/no-data\n    const dataVal = $('.reviewcount.active').data('item');\n    const current = dataVal - 1;\n    updatePagination();\n    showPage(current);\n    updatePaginationArrow(current);\n  }\n}\n\nfunction updatePaginationArrow(current) {\n  if ($('#next-btn').hasClass('keep')) {\n    if (current === totalPages) {\n      $('#next-btn').addClass('disabled');\n    }\n    if (current !== totalPages && $('#next-btn').hasClass('disabled')) {\n      $('#next-btn').removeClass('disabled');\n    }\n  }\n  if ($('#prev-btn').hasClass('keep')) {\n    if (current !== 1 && $('#prev-btn').hasClass('disabled')) {\n      $('#prev-btn').removeClass('disabled');\n    }\n    if (current === 1) {\n      $('#prev-btn').addClass('disabled');\n    }\n  }\n}\n\nfunction nextPage() {\n  if (currentPage < totalPages) {\n    currentPage++;\n    // eslint-disable-next-line jquery/no-data\n    const dataVal = $('.reviewcount.active').data('item');\n    const current = dataVal + 1;\n    updatePagination();\n    showPage(current);\n    updatePaginationArrow(current);\n  }\n}\n\n// Initialize pagination on page load\n$(document).on('click', '#next-btn', () => {\n  nextPage();\n  scrollPostion();\n});\n\n$(document).on('click', '#prev-btn', () => {\n  prevPage();\n  scrollPostion();\n});\n\nif (totalPages > 1) {\n  updatePagination();\n}\n\nfunction scrollPostion() {\n  const ctaContainer = document.querySelector('.productreviews-section');\n  scrollTo(ctaContainer, true);\n}\n\n// END\n\nexport default () => {\n  const reviewsContainer = document.querySelector(SELECTORS.CONTAINER);\n  const reviewsSection = document.querySelector(SELECTORS.REVIEW_SECTION);\n\n  if (reviewsContainer) {\n    const sortReviewsDrowpdown = reviewsContainer.querySelector(SELECTORS.SORT_DROPDOWN);\n    const reviewItemsContainer = reviewsContainer.querySelector(SELECTORS.ITEMS_CONTAINER);\n    const loadMoreReviewsButton = reviewsContainer.querySelector(SELECTORS.LOAD_MORE_BUTTON);\n    const visibleReviewsCountContainer = reviewsContainer.querySelector(SELECTORS.VISIBLE_REVIEWS_COUNT);\n\n    initFlyout(reviewsContainer);\n\n    if (sortReviewsDrowpdown && reviewItemsContainer) {\n      initReviewsSorting(sortReviewsDrowpdown, reviewItemsContainer);\n    }\n\n    if (loadMoreReviewsButton && visibleReviewsCountContainer) {\n      initReviewsPagination(loadMoreReviewsButton, visibleReviewsCountContainer);\n    }\n\n    handleDisplayOnLoad(reviewsContainer);\n\n    reviewsContainer.setAttribute('initialized', 'true');\n  }\n\n  if (reviewsSection) {\n    const isLazyLoadEnabled = reviewsSection.getAttribute('data-lazy-load');\n    const initProductReviews = async () => {\n      const { type, content } = await loadContent(reviewsSection, null, null, false);\n      if (type === CONTENT_TYPES.TEXT) {\n        reviewsSection.innerHTML = content;\n        reviewsSection.setAttribute('initialized', 'true');\n        updatePagination();\n        showPage(currentPage);\n        const sortReviewsDrowpdown = reviewsContainer.querySelector(SELECTORS.SORT_DROPDOWN);\n        const reviewItemsContainer = reviewsContainer.querySelector(SELECTORS.ITEMS_CONTAINER);\n        if (sortReviewsDrowpdown && reviewItemsContainer) {\n          initReviewsSorting(sortReviewsDrowpdown, reviewItemsContainer);\n        }\n      }\n    };\n    if (isLazyLoadEnabled === 'true' && reviewsSection.getAttribute('initialized') !== 'true') {\n      initProductReviews();\n    }\n  }\n\n  $(document).on('click', '.reviewcount ', (e) => {\n    // eslint-disable-next-line radix, jquery/no-text\n    const pageNumber = $(e.target).text();\n    showPage(pageNumber);\n    scrollPostion();\n  });\n  // Show the first page by default\n  showPage(currentPage);\n\n  $(document).on('click', '.rating-scroll ', () => {\n    scrollPostion();\n  });\n};\n","import { initFlyout } from '../../components/flyoutUnderHeader';\n\nconst SELECTORS = {\n  CONTAINER: '.product-detail__delivery__pane',\n};\n\nexport default () => {\n  const deliveryContainer = document.querySelector(SELECTORS.CONTAINER);\n\n  if (deliveryContainer) {\n    initFlyout(deliveryContainer);\n  }\n};\n","/**\n  stickybits - Stickybits is a lightweight alternative to `position: sticky` polyfills\n  @version v3.6.1\n  @link https://github.com/dollarshaveclub/stickybits#readme\n  @author Jeff Wainwright <yowainwright@gmail.com> (https://jeffry.in)\n  @license MIT\n**/\n/*\n  STICKYBITS 💉\n  --------\n  > a lightweight alternative to `position: sticky` polyfills 🍬\n  --------\n  - each method is documented above it our view the readme\n  - Stickybits does not manage polymorphic functionality (position like properties)\n  * polymorphic functionality: (in the context of describing Stickybits)\n    means making things like `position: sticky` be loosely supported with position fixed.\n    It also means that features like `useStickyClasses` takes on styles like `position: fixed`.\n  --------\n  defaults 🔌\n  --------\n  - version = `package.json` version\n  - userAgent = viewer browser agent\n  - target = DOM element selector\n  - noStyles = boolean\n  - offset = number\n  - parentClass = 'string'\n  - scrollEl = window || DOM element selector || DOM element\n  - stickyClass = 'string'\n  - stuckClass = 'string'\n  - useStickyClasses = boolean\n  - useFixed = boolean\n  - useGetBoundingClientRect = boolean\n  - verticalPosition = 'string'\n  --------\n  props🔌\n  --------\n  - p = props {object}\n  --------\n  instance note\n  --------\n  - stickybits parent methods return this\n  - stickybits instance methods return an instance item\n  --------\n  nomenclature\n  --------\n  - target => el => e\n  - props => o || p\n  - instance => item => it\n  --------\n  methods\n  --------\n  - .definePosition = defines sticky or fixed\n  - .addInstance = an array of objects for each Stickybits Target\n  - .getClosestParent = gets the parent for non-window scroll\n  - .getTopPosition = gets the element top pixel position from the viewport\n  - .computeScrollOffsets = computes scroll position\n  - .toggleClasses = older browser toggler\n  - .manageState = manages sticky state\n  - .removeClass = older browser support class remover\n  - .removeInstance = removes an instance\n  - .cleanup = removes all Stickybits instances and cleans up dom from stickybits\n*/\nvar Stickybits =\n/*#__PURE__*/\nfunction () {\n  function Stickybits(target, obj) {\n    var o = typeof obj !== 'undefined' ? obj : {};\n    this.version = '3.6.1';\n    this.userAgent = window.navigator.userAgent || 'no `userAgent` provided by the browser';\n    this.props = {\n      customStickyChangeNumber: o.customStickyChangeNumber || null,\n      noStyles: o.noStyles || false,\n      stickyBitStickyOffset: o.stickyBitStickyOffset || 0,\n      parentClass: o.parentClass || 'js-stickybit-parent',\n      scrollEl: typeof o.scrollEl === 'string' ? document.querySelector(o.scrollEl) : o.scrollEl || window,\n      stickyClass: o.stickyClass || 'js-is-sticky',\n      stuckClass: o.stuckClass || 'js-is-stuck',\n      stickyChangeClass: o.stickyChangeClass || 'js-is-sticky--change',\n      useStickyClasses: o.useStickyClasses || false,\n      useFixed: o.useFixed || false,\n      useGetBoundingClientRect: o.useGetBoundingClientRect || false,\n      verticalPosition: o.verticalPosition || 'top'\n      /*\n        define positionVal\n        ----\n        -  uses a computed (`.definePosition()`)\n        -  defined the position\n      */\n\n    };\n    this.props.positionVal = this.definePosition() || 'fixed';\n    this.instances = [];\n    var _this$props = this.props,\n        positionVal = _this$props.positionVal,\n        verticalPosition = _this$props.verticalPosition,\n        noStyles = _this$props.noStyles,\n        stickyBitStickyOffset = _this$props.stickyBitStickyOffset,\n        useStickyClasses = _this$props.useStickyClasses;\n    var verticalPositionStyle = verticalPosition === 'top' && !noStyles ? stickyBitStickyOffset + \"px\" : '';\n    var positionStyle = positionVal !== 'fixed' ? positionVal : '';\n    this.els = typeof target === 'string' ? document.querySelectorAll(target) : target;\n    if (!('length' in this.els)) this.els = [this.els];\n\n    for (var i = 0; i < this.els.length; i++) {\n      var el = this.els[i]; // set vertical position\n\n      el.style[verticalPosition] = verticalPositionStyle;\n      el.style.position = positionStyle;\n\n      if (positionVal === 'fixed' || useStickyClasses) {\n        var instance = this.addInstance(el, this.props); // instances are an array of objects\n\n        this.instances.push(instance);\n      }\n    }\n  }\n  /*\n    setStickyPosition ✔️\n    --------\n    —  most basic thing stickybits does\n    => checks to see if position sticky is supported\n    => defined the position to be used\n    => stickybits works accordingly\n  */\n\n\n  var _proto = Stickybits.prototype;\n\n  _proto.definePosition = function definePosition() {\n    var stickyProp;\n\n    if (this.props.useFixed) {\n      stickyProp = 'fixed';\n    } else {\n      var prefix = ['', '-o-', '-webkit-', '-moz-', '-ms-'];\n      var test = document.head.style;\n\n      for (var i = 0; i < prefix.length; i += 1) {\n        test.position = prefix[i] + \"sticky\";\n      }\n\n      stickyProp = test.position ? test.position : 'fixed';\n      test.position = '';\n    }\n\n    return stickyProp;\n  }\n  /*\n    addInstance ✔️\n    --------\n    — manages instances of items\n    - takes in an el and props\n    - returns an item object\n    ---\n    - target = el\n    - o = {object} = props\n      - scrollEl = 'string' | object\n      - verticalPosition = number\n      - off = boolean\n      - parentClass = 'string'\n      - stickyClass = 'string'\n      - stuckClass = 'string'\n    ---\n    - defined later\n      - parent = dom element\n      - state = 'string'\n      - offset = number\n      - stickyStart = number\n      - stickyStop = number\n    - returns an instance object\n  */\n  ;\n\n  _proto.addInstance = function addInstance(el, props) {\n    var _this = this;\n\n    var item = {\n      el: el,\n      parent: el.parentNode,\n      props: props\n    };\n    this.isWin = this.props.scrollEl === window;\n    var se = this.isWin ? window : this.getClosestParent(item.el, item.props.scrollEl);\n    this.computeScrollOffsets(item);\n    item.parent.className += \" \" + props.parentClass;\n    item.state = 'default';\n\n    item.stateContainer = function () {\n      return _this.manageState(item);\n    };\n\n    se.addEventListener('scroll', item.stateContainer);\n    return item;\n  }\n  /*\n    --------\n    getParent 👨‍\n    --------\n    - a helper function that gets the target element's parent selected el\n    - only used for non `window` scroll elements\n    - supports older browsers\n  */\n  ;\n\n  _proto.getClosestParent = function getClosestParent(el, match) {\n    // p = parent element\n    var p = match;\n    var e = el;\n    if (e.parentElement === p) return p; // traverse up the dom tree until we get to the parent\n\n    while (e.parentElement !== p) {\n      e = e.parentElement;\n    } // return parent element\n\n\n    return p;\n  }\n  /*\n    --------\n    getTopPosition\n    --------\n    - a helper function that gets the topPosition of a Stickybit element\n    - from the top level of the DOM\n  */\n  ;\n\n  _proto.getTopPosition = function getTopPosition(el) {\n    if (this.props.useGetBoundingClientRect) {\n      return el.getBoundingClientRect().top + (this.props.scrollEl.pageYOffset || document.documentElement.scrollTop);\n    }\n\n    var topPosition = 0;\n\n    do {\n      topPosition = el.offsetTop + topPosition;\n    } while (el = el.offsetParent);\n\n    return topPosition;\n  }\n  /*\n    computeScrollOffsets 📊\n    ---\n    computeScrollOffsets for Stickybits\n    - defines\n      - offset\n      - start\n      - stop\n  */\n  ;\n\n  _proto.computeScrollOffsets = function computeScrollOffsets(item) {\n    var it = item;\n    var p = it.props;\n    var el = it.el;\n    var parent = it.parent;\n    var isCustom = !this.isWin && p.positionVal === 'fixed';\n    var isTop = p.verticalPosition !== 'bottom';\n    var scrollElOffset = isCustom ? this.getTopPosition(p.scrollEl) : 0;\n    var stickyStart = isCustom ? this.getTopPosition(parent) - scrollElOffset : this.getTopPosition(parent);\n    var stickyChangeOffset = p.customStickyChangeNumber !== null ? p.customStickyChangeNumber : el.offsetHeight;\n    var parentBottom = stickyStart + parent.offsetHeight;\n    it.offset = scrollElOffset + p.stickyBitStickyOffset;\n    it.stickyStart = isTop ? stickyStart - it.offset : 0;\n    it.stickyChange = it.stickyStart + stickyChangeOffset;\n    it.stickyStop = isTop ? parentBottom - (el.offsetHeight + it.offset) : parentBottom - window.innerHeight;\n    return it;\n  }\n  /*\n    toggleClasses ⚖️\n    ---\n    toggles classes (for older browser support)\n    r = removed class\n    a = added class\n  */\n  ;\n\n  _proto.toggleClasses = function toggleClasses(el, r, a) {\n    var e = el;\n    var cArray = e.className.split(' ');\n    if (a && cArray.indexOf(a) === -1) cArray.push(a);\n    var rItem = cArray.indexOf(r);\n    if (rItem !== -1) cArray.splice(rItem, 1);\n    e.className = cArray.join(' ');\n  }\n  /*\n    manageState 📝\n    ---\n    - defines the state\n      - normal\n      - sticky\n      - stuck\n  */\n  ;\n\n  _proto.manageState = function manageState(item) {\n    // cache object\n    var it = item;\n    var e = it.el;\n    var p = it.props;\n    var state = it.state;\n    var start = it.stickyStart;\n    var change = it.stickyChange;\n    var stop = it.stickyStop;\n    var stl = e.style; // cache props\n\n    var ns = p.noStyles;\n    var pv = p.positionVal;\n    var se = p.scrollEl;\n    var sticky = p.stickyClass;\n    var stickyChange = p.stickyChangeClass;\n    var stuck = p.stuckClass;\n    var vp = p.verticalPosition;\n    var isTop = vp !== 'bottom';\n    /*\n      requestAnimationFrame\n      ---\n      - use rAF\n      - or stub rAF\n    */\n\n    var rAFStub = function rAFDummy(f) {\n      f();\n    };\n\n    var rAF = !this.isWin ? rAFStub : window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || rAFStub;\n    /*\n      define scroll vars\n      ---\n      - scroll\n      - notSticky\n      - isSticky\n      - isStuck\n    */\n\n    var tC = this.toggleClasses;\n    var scroll = this.isWin ? window.scrollY || window.pageYOffset : se.scrollTop;\n    var notSticky = scroll > start && scroll < stop && (state === 'default' || state === 'stuck');\n    var isSticky = isTop && scroll <= start && (state === 'sticky' || state === 'stuck');\n    var isStuck = scroll >= stop && state === 'sticky';\n    /*\n      Unnamed arrow functions within this block\n      ---\n      - help wanted or discussion\n      - view test.stickybits.js\n        - `stickybits .manageState  `position: fixed` interface` for more awareness 👀\n    */\n\n    if (notSticky) {\n      it.state = 'sticky';\n      rAF(function () {\n        tC(e, stuck, sticky);\n        stl.position = pv;\n        if (ns) return;\n        stl.bottom = '';\n        stl[vp] = p.stickyBitStickyOffset + \"px\";\n      });\n    } else if (isSticky) {\n      it.state = 'default';\n      rAF(function () {\n        tC(e, sticky);\n        tC(e, stuck);\n        if (pv === 'fixed') stl.position = '';\n      });\n    } else if (isStuck) {\n      it.state = 'stuck';\n      rAF(function () {\n        tC(e, sticky, stuck);\n        if (pv !== 'fixed' || ns) return;\n        stl.top = '';\n        stl.bottom = '0';\n        stl.position = 'absolute';\n      });\n    }\n\n    var isStickyChange = scroll >= change && scroll <= stop;\n    var isNotStickyChange = scroll < change / 2 || scroll > stop;\n    var stub = 'stub'; // a stub css class to remove\n\n    if (isNotStickyChange) {\n      rAF(function () {\n        tC(e, stickyChange);\n      });\n    } else if (isStickyChange) {\n      rAF(function () {\n        tC(e, stub, stickyChange);\n      });\n    }\n\n    return it;\n  };\n\n  _proto.update = function update(updatedProps) {\n    if (updatedProps === void 0) {\n      updatedProps = null;\n    }\n\n    for (var i = 0; i < this.instances.length; i += 1) {\n      var instance = this.instances[i];\n      this.computeScrollOffsets(instance);\n\n      if (updatedProps) {\n        for (var updatedProp in updatedProps) {\n          instance.props[updatedProp] = updatedProps[updatedProp];\n        }\n      }\n    }\n\n    return this;\n  }\n  /*\n    removes an instance 👋\n    --------\n    - cleanup instance\n  */\n  ;\n\n  _proto.removeInstance = function removeInstance(instance) {\n    var e = instance.el;\n    var p = instance.props;\n    var tC = this.toggleClasses;\n    e.style.position = '';\n    e.style[p.verticalPosition] = '';\n    tC(e, p.stickyClass);\n    tC(e, p.stuckClass);\n    tC(e.parentNode, p.parentClass);\n  }\n  /*\n    cleanup 🛁\n    --------\n    - cleans up each instance\n    - clears instance\n  */\n  ;\n\n  _proto.cleanup = function cleanup() {\n    for (var i = 0; i < this.instances.length; i += 1) {\n      var instance = this.instances[i];\n      instance.props.scrollEl.removeEventListener('scroll', instance.stateContainer);\n      this.removeInstance(instance);\n    }\n\n    this.manageState = false;\n    this.instances = [];\n  };\n\n  return Stickybits;\n}();\n/*\n  export\n  --------\n  exports StickBits to be used 🏁\n*/\n\n\nfunction stickybits(target, o) {\n  return new Stickybits(target, o);\n}\n\nexport default stickybits;\n","import stickybits from 'stickybits';\nimport { isLG } from '../../util/domutils';\n// eslint-disable-next-line no-unused-vars\nimport { functions as headerFunctions } from '../../components/header';\n\nconst GLOBALS = {\n  STICKY_DESCRIPTION: null,\n  STICKY_PRODUCT_SET_IMAGE: null,\n};\n\nconst SELECTORS = {\n  STICKY_DESCRIPTION: '.product-detail__details-section-sticky',\n  STICKY_PRODUCT_SET_IMAGE: '.product-set-main-image-sticky',\n};\n\nconst isProductSet = document.querySelector('.product-set-detail') !== null;\n\n/**\n * Checks whether the passed in parameter is a Stickybits reference\n * and if so, whether the wrapped element is still part of the DOM.\n * Used to determine whether the sticky description needs to be reinitialized\n *\n * @param  {Stickybits?} ref The Stickybits reference to Check\n * @return {boolean}         True if the reference exists and wraps a DOM element\n */\nconst referenceIsFresh = ref => ref && ref.els[0] && document.body.contains(ref.els[0]);\n\nconst initStickyDescriptionObject = () => {\n  if (!GLOBALS.STICKY_DESCRIPTION || !referenceIsFresh(GLOBALS.STICKY_DESCRIPTION)\n    || !GLOBALS.STICKY_PRODUCT_SET_IMAGE || !referenceIsFresh(GLOBALS.STICKY_PRODUCT_SET_IMAGE)) {\n    if (document.querySelector(SELECTORS.STICKY_DESCRIPTION)) {\n      const STICKY_DESCRIPTION_OPTIONS = {\n        useStickyClasses: true,\n        // eslint-disable-next-line max-len\n        stickyBitStickyOffset: Math.ceil(window.innerHeight - document.querySelector('.product-detail__details-section-sticky').offsetHeight),\n      };\n      if (isProductSet) {\n        GLOBALS.STICKY_PRODUCT_SET_IMAGE = stickybits(SELECTORS.STICKY_PRODUCT_SET_IMAGE, STICKY_DESCRIPTION_OPTIONS);\n      } else {\n        GLOBALS.STICKY_DESCRIPTION = stickybits(SELECTORS.STICKY_DESCRIPTION, STICKY_DESCRIPTION_OPTIONS);\n      }\n    }\n  }\n};\n\nexport default () => {\n  if (isLG()\n    && (!referenceIsFresh(GLOBALS.STICKY_DESCRIPTION) || !referenceIsFresh(GLOBALS.STICKY_PRODUCT_SET_IMAGE))) {\n    initStickyDescriptionObject();\n  } else if (referenceIsFresh(GLOBALS.STICKY_DESCRIPTION)) {\n    GLOBALS.STICKY_DESCRIPTION.cleanup();\n    GLOBALS.STICKY_DESCRIPTION = null;\n  } else if (referenceIsFresh(GLOBALS.STICKY_PRODUCT_SET_IMAGE)) {\n    GLOBALS.STICKY_PRODUCT_SET_IMAGE.cleanup();\n    GLOBALS.STICKY_PRODUCT_SET_IMAGE = null;\n  }\n};\n","import $ from 'jquery';\nimport { persistRecommendations, restoreRecommendations } from '../../components/recommendations';\n\nlet INITIALIZED = false;\n\nconst CLASSES = {\n  HIDDEN: 'd-none',\n};\n\nconst SELECTORS = {\n  CAROUSEL_TABS: '.product-detail__product-carousel-tabs',\n  CAROUSELS: '.product-detail__product-carousel',\n  PRODUCTS: '.product',\n  TAB_LINK: '.nav-link',\n  TAB: '.nav-item',\n  get TAB_VISIBLE() { return `${this.TAB}:not(.${CLASSES.HIDDEN})`; },\n  get TAB_ACTIVE_HIDDEN() { return `${this.TAB}.${CLASSES.HIDDEN} .active`; },\n};\n\nconst handleCarouselVisibility = () => {\n  const carousels = document.querySelectorAll(SELECTORS.CAROUSELS);\n  const carouselTabContainers = document.querySelectorAll(SELECTORS.CAROUSEL_TABS);\n\n  carousels.forEach((carousel) => {\n    const hasProducts = !!carousel.querySelector(SELECTORS.PRODUCTS);\n    const toggle = carousel.id && document.querySelector(`[href=\"#${carousel.id}\"]`);\n\n    carousel.classList.toggle(CLASSES.HIDDEN, !hasProducts);\n\n    if (toggle) {\n      const toggleTab = toggle.closest(SELECTORS.TAB);\n\n      if (toggleTab) {\n        toggleTab.classList.toggle(CLASSES.HIDDEN, !hasProducts);\n      }\n    }\n  });\n\n  const recommendationsHeading = document.querySelector('#recommendation-heading');\n\n  if (recommendationsHeading) {\n    const recommendationCallout = document.querySelector('#recommendations .product-recommendations__heading span');\n\n    if (recommendationCallout !== null && recommendationsHeading !== null) {\n      recommendationsHeading.innerHTML = recommendationCallout.innerHTML;\n      recommendationsHeading.classList.remove('d-none');\n      document.querySelector('#recommendations .product-recommendations__heading').classList.add('d-block');\n      document.querySelector('#recommendations .product-recommendations__heading').classList.add('d-sm-none');\n    }\n  }\n  const recentlyViewedCallout = document.querySelector('#pdp-dynamic-recently-viewed span');\n  const recentlyViewedHeading = document.querySelector('.product-detail__recently-viewed .heading');\n\n  if (recentlyViewedCallout !== null && recentlyViewedHeading !== null) {\n    recentlyViewedHeading.innerHTML = recentlyViewedCallout.innerHTML;\n    recentlyViewedHeading.classList.remove('d-none');\n  }\n\n\n  // Ensure that:\n  //   - Tab containers that don't have any visible products in them remain hidden\n  //   - Tab containers whose active tab got hidden get shown with the next available tab selected\n  carouselTabContainers.forEach((carouselTabs) => {\n    const activeTabHidden = !!carouselTabs.querySelector(SELECTORS.TAB_ACTIVE_HIDDEN);\n\n    if (activeTabHidden) {\n      const firstVisibleTab = carouselTabs.querySelector(SELECTORS.TAB_VISIBLE);\n\n      if (firstVisibleTab) {\n        $(`${SELECTORS.TAB_VISIBLE} ${SELECTORS.TAB_LINK}`).tab('show');\n\n        carouselTabs.classList.remove(CLASSES.HIDDEN);\n      }\n    } else {\n      carouselTabs.classList.remove(CLASSES.HIDDEN);\n    }\n  });\n};\n\nexport default () => {\n  handleCarouselVisibility();\n\n  if (!INITIALIZED) {\n    document.addEventListener('product:beforeAttributeSelect', persistRecommendations);\n    document.addEventListener('product:afterAttributeSelect', restoreRecommendations.bind(handleCarouselVisibility));\n\n    document.addEventListener('product:carousel-init', handleCarouselVisibility);\n\n    INITIALIZED = true;\n  }\n};\n","import $ from 'jquery';\nimport { onEvent } from '../../util/domutils'; // eslint-disable-line import/named\nimport { loadContent } from '../../util/fetchutils'; // eslint-disable-line import/named\nimport { initFlyout } from '../../components/flyoutUnderHeader';\n\nconst CONSTANTS = {\n  HASH_TRIGGER: 'continuity-flyout',\n};\n\nconst SELECTORS = {\n  FORM: '.continuity-flyout__form',\n  CONTAINER: '.continuity-flyout__container',\n  PANE: '.continuity-flyout__pane',\n};\n\nconst handleDisplayOnLoad = (flyoutContainer) => {\n  const hash = window.location.hash.replace('#', '');\n  const hashParts = hash.split('&');\n\n  if (hashParts.indexOf(CONSTANTS.HASH_TRIGGER) >= 0) {\n    $(flyoutContainer).collapse('show');\n\n    // Remove the contnuity flyout trigger from the current hash so it doesn't get opened\n    // again on refresh or on attribute change\n    const hashNoFlyout = hashParts.filter(part => part !== CONSTANTS.HASH_TRIGGER).join('&');\n\n    window.location.hash = hashNoFlyout;\n  }\n};\n\nconst handleFlyoutContainer = (flyout) => {\n  initFlyout(flyout);\n  handleDisplayOnLoad(flyout);\n\n  if (!flyout.dataset.initialized) {\n    onEvent(flyout, 'submit', SELECTORS.FORM, async (e) => {\n      e.preventDefault();\n\n      const { content } = await loadContent(e.delegateTarget);\n\n      let container = document.querySelector(SELECTORS.CONTAINER);\n      if (document.querySelector('.product-set-detail .set-items')) {\n        container = e.delegateTarget.closest(SELECTORS.CONTAINER);\n      }\n      container.innerHTML = content;\n    });\n\n    flyout.dataset.initialized = 'true';\n  }\n};\n\nexport default () => {\n  const flyoutContainer = document.querySelector(SELECTORS.PANE);\n\n  if (flyoutContainer) {\n    if (document.querySelector('.product-set-detail .set-items')) {\n      const flyoutContainers = document.querySelectorAll(SELECTORS.PANE);\n      flyoutContainers.forEach((fc) => {\n        handleFlyoutContainer(fc);\n      });\n    } else {\n      handleFlyoutContainer(flyoutContainer);\n    }\n  }\n};\n","/* eslint-disable prefer-const */\nimport $ from 'jquery';\n\nconst scrollToAddToBag = () => {\n  let handleAddToBagButtonClick = true;\n  if (handleAddToBagButtonClick) {\n    handleAddToBagButtonClick = false;\n    $(document).on('click', '.stickyAddToBag', () => {\n      // eslint-disable-next-line jquery/no-animate\n      $('html,body').animate({\n        scrollTop: $('.product-detail__details-section-sticky-container').offset().top - $('.header-sticky').height(),\n      },\n      'slow');\n      const addToCartButton = document.querySelector('.product-detail__add-to-cart .add-to-cart');\n      if (addToCartButton) {\n        if (addToCartButton && addToCartButton.disabled) {\n          addToCartButton.disabled = false;\n          $('.product-detail__add-to-cart .add-to-cart').click();\n          addToCartButton.disabled = true;\n        } else {\n          $('.product-detail__add-to-cart .add-to-cart').click();\n          addToCartButton.classList.add('buttonActive');\n        }\n      }\n      handleAddToBagButtonClick = true;\n    });\n  }\n\n  $(document).on('click', '.product-detail__add-to-cart .add-to-cart', () => {\n    if (document.querySelector('.stickyAddToBag')) {\n      document.querySelector('.stickyAddToBag').classList.add('buttonActive');\n    }\n  });\n\n  $(document).on('click', 'body', (event) => {\n    const stickyAddToCartButton = document.querySelector('.stickyAddToBag');\n    const inPageAddToCartButton = document.querySelector('.product-detail__add-to-cart .add-to-cart');\n    if (stickyAddToCartButton && inPageAddToCartButton\n      && event.target !== stickyAddToCartButton && event.target !== inPageAddToCartButton) {\n      document.querySelector('.stickyAddToBag').classList.remove('buttonActive');\n      document.querySelector('.product-detail__add-to-cart .add-to-cart').classList.remove('buttonActive');\n    }\n  });\n};\n\nconst isInViewport = function (el) {\n  const rect = el.getBoundingClientRect();\n  const stickyHeader = document.querySelector('.header-sticky');\n  return (\n    rect.bottom - stickyHeader.offsetHeight >= 0\n    && rect.top - 20 < (document.documentElement.clientHeight || window.innerHeight)\n  );\n};\n\nconst toggleStickyBar = () => {\n  const backToTopButton = document.querySelector('.back-to-top');\n  const stickyBarMenu = document.querySelector('.stickyBarMenu');\n  $(window).on('resize scroll', () => {\n    const inPageATB = document.querySelector('.product-detail__add-to-cart .add-to-cart');\n    if (inPageATB && isInViewport(inPageATB)) {\n      // eslint-disable-next-line jquery/no-class\n      $('.stickyBarMenu').removeClass('stickyBarMenuShow');\n    } else {\n      // eslint-disable-next-line jquery/no-class\n      $('.stickyBarMenu').addClass('stickyBarMenuShow');\n      backToTopButton.classList.add('d-none');\n    }\n  });\n  $(document).ready(() => {\n    if (stickyBarMenu) {\n      backToTopButton.style.display = 'none';\n    }\n    const inPageATB = document.querySelector('.product-detail__add-to-cart .add-to-cart');\n    if (inPageATB && isInViewport(inPageATB)) {\n      // eslint-disable-next-line jquery/no-class\n      $('.stickyBarMenu').removeClass('stickyBarMenuShow');\n    } else {\n      // eslint-disable-next-line jquery/no-class\n      $('.stickyBarMenu').addClass('stickyBarMenuShow');\n      backToTopButton.classList.add('d-none');\n    }\n  });\n};\n\nconst addToWishlist = () => {\n  let handleAddToWishlistButtonClick = true;\n  $(document).on('click', '.stickyAddToWishlist', () => {\n    if (handleAddToWishlistButtonClick) {\n      $('.add-to-wish-list').click();\n      handleAddToWishlistButtonClick = false;\n    }\n    setTimeout(() => {\n      handleAddToWishlistButtonClick = true;\n    }, 1000);\n  });\n};\n\nconst syncStickyBarButtons = () => {\n  $(document.body).on('product:afterAddToCart', (e, data) => {\n    let representedProductAdded = document.querySelector('.stickyAddToBag')\n      ? document.querySelector('.stickyAddToBag').classList.contains('buttonActive')\n      : null;\n    if (representedProductAdded && data && !data.error) {\n      // eslint-disable-next-line max-len\n      if (document.querySelector('.stickyBarBagButton.stickyViewToBag') && document.querySelector('.stickyBarBagButton.stickyAddToBag')) {\n        document.querySelector('.stickyBarBagButton.stickyViewToBag').classList.remove('inactive');\n        document.querySelector('.stickyBarBagButton.stickyAddToBag').classList.add('inactive');\n      }\n    }\n  });\n  document.addEventListener('product:removedFromWishlist', () => {\n    // eslint-disable-next-line max-len\n    if (document.querySelector('.stickyBarBagButton.stickyViewToWishlist') && document.querySelector('.stickyBarBagButton.stickyAddToWishlist')) {\n      document.querySelector('.stickyBarBagButton.stickyViewToWishlist').classList.remove('active');\n      document.querySelector('.stickyBarBagButton.stickyAddToWishlist').classList.add('active');\n    }\n  });\n  document.addEventListener('product:addedToWishlist', () => {\n    // eslint-disable-next-line max-len\n    if (document.querySelector('.stickyBarBagButton.stickyViewToWishlist') && document.querySelector('.stickyBarBagButton.stickyAddToWishlist')) {\n      document.querySelector('.stickyBarBagButton.stickyViewToWishlist').classList.add('active');\n      document.querySelector('.stickyBarBagButton.stickyAddToWishlist').classList.remove('active');\n    }\n  });\n};\n\nexport default () => {\n  scrollToAddToBag();\n  toggleStickyBar();\n  addToWishlist();\n  syncStickyBarButtons();\n};\n","import $ from 'jquery';\n\nlet handleUSPClick = true;\nconst handleUSPLinkScroll = () => {\n  $(document).on('click', '.usp-link', (event) => {\n    if (handleUSPClick) {\n      handleUSPClick = false;\n      const clickedItem = event.currentTarget;\n      const headingThree = document.querySelector('#headingThree button');\n      const collapseThree = document.querySelector('#collapseThree');\n      if (headingThree && collapseThree) {\n        if (!collapseThree.classList.contains('show')) {\n          headingThree.click();\n        }\n      }\n      let scrollElement = '#headingThree';\n      const returnBlock = document.querySelector('.return_block');\n      if (returnBlock && clickedItem.classList.contains('return-link')) {\n        scrollElement = '.return_block';\n      }\n      if (!collapseThree.classList.contains('product-detail__delivery__pane')) {\n        setTimeout(() => {\n          if ($('.primary-images').height() > $('.product-detail__details-section').height()) {\n            document.querySelector('.primary-images').scrollIntoView({ block: 'center' });\n          }\n          setTimeout(() => {\n            // eslint-disable-next-line jquery/no-animate\n            $('html,body').animate({\n              scrollTop: $(scrollElement).offset().top - $('.header-sticky').height(),\n            },\n            200);\n          }, 300);\n        }, 200);\n      }\n      handleUSPClick = true;\n    }\n  });\n};\n\nexport default () => {\n  handleUSPLinkScroll();\n};\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable indent */\n/* eslint-disable max-len */\nimport Glide from '@glidejs/glide';\nimport $ from 'jquery';\nimport { isLG } from '../../util/domutils';\n\nconst SELECTORS = {\n  NAVIGATORS: {\n    ARROWS: '.glide__arrows',\n  },\n  PRODUCTS: '.product',\n};\n\n  const CustomLength = function (glide, Components, Events) {\n    const addToBagCarouselEvents = {\n      handleSlider() {\n        if (Components.Sizes.length <= glide.settings.perView) {\n          glide.disable();\n          Components.Html.root.querySelector(SELECTORS.NAVIGATORS.ARROWS).classList.add('d-none');\n        } else {\n          glide.enable();\n          Components.Html.root.querySelector(SELECTORS.NAVIGATORS.ARROWS).classList.remove('d-none');\n        }\n        if (!isLG() && glide) {\n          glide.destroy();\n        }\n      },\n      mount() {\n        this.handleSlider();\n      },\n    };\n    Events.on('resize', () => {\n      addToBagCarouselEvents.handleSlider();\n    });\n    return addToBagCarouselEvents;\n  };\n\n  const FixBoundPeek = function (GlideComponent, Components) {\n    return {\n      modify(translate) {\n        let { isBound } = Components.Run.isBound;\n        if (typeof isBound !== 'function') {\n          isBound = function () {\n            // eslint-disable-next-line max-len\n            return GlideComponent.isType('slider') && GlideComponent.settings.focusAt !== 'center' && GlideComponent.settings.bound;\n          };\n        }\n\n        if (isBound() && Components.Run.isEnd() && Components.Sizes.length > GlideComponent.settings.perView) {\n          const peek = Components.Peek.value;\n          if (typeof peek === 'object' && peek.after && (Components.Sizes.length > GlideComponent.settings.perView)) {\n            return translate - peek.after;\n          }\n          if (typeof peek !== 'object') {\n            return translate - peek;\n          }\n        }\n        return translate;\n      },\n    };\n  };\n\n  const PDPWaystowear = function () {\n    if ($('.waystowear-sub-products .recommendation-carousel-pdp').length) {\n      const sliders = document.querySelectorAll('.waystowear-sub-products .recommendation-carousel-pdp');\n      let glideBreakpoints = {\n        4000: {\n          perView: 5,\n          peek: { before: 0, after: 0 },\n        },\n        991: {\n          perView: 3,\n          peek: { before: 0, after: 90 },\n        },\n        767: {\n          perView: 1,\n          peek: { before: 0, after: 120 },\n        },\n      };\n      for (let i = 0; i < sliders.length; i++) {\n        const hasProducts = !!sliders[i].querySelector(SELECTORS.PRODUCTS);\n        if (hasProducts) {\n          if (sliders[i].closest('.product-detail__product-carousel')) {\n            sliders[i].closest('.product-detail__product-carousel').classList.remove('d-none');\n          }\n\n          const tileRow = sliders[i].closest('.waystowear-sub-products');\n\n          if (tileRow && tileRow.getAttribute('data-breakpoints')) {\n            const breakpointsData = tileRow.getAttribute('data-breakpoints');\n\n            try {\n              const parsedBreakpoints = JSON.parse(breakpointsData);\n              if (typeof parsedBreakpoints === 'object' && parsedBreakpoints !== null) {\n                glideBreakpoints = parsedBreakpoints;\n              }\n            } catch (e) {\n              throw e;\n            }\n          }\n\n          const settings = {\n            type: 'slider',\n            rewind: false,\n            gap: 8,\n            bound: true,\n            breakpoints: glideBreakpoints,\n          };\n\n          const glide = new Glide(sliders[i], settings);\n          if (isLG()) {\n            glide.mutate([FixBoundPeek]).mount({ CustomLength });\n          }\n        }\n      }\n    }\n  };\n\n  // eslint-disable-next-line no-unused-vars\n  const PDPCarouselInit = function () {\n    if ($('.recommendation-carousel-pdp').length) {\n      const sliders = document.querySelectorAll('.recommendation-carousel-pdp');\n      let glideBreakpoints = {\n        4000: {\n          perView: 5,\n          peek: { before: 0, after: 0 },\n        },\n        991: {\n          perView: 3,\n          peek: { before: 0, after: 90 },\n        },\n        767: {\n          perView: 1,\n          peek: { before: 0, after: 120 },\n        },\n      };\n      for (let i = 0; i < sliders.length; i++) {\n        const hasProducts = !!sliders[i].querySelector(SELECTORS.PRODUCTS);\n        if (hasProducts) {\n          if (sliders[i].closest('.product-detail__product-carousel')) {\n            sliders[i].closest('.product-detail__product-carousel').classList.remove('d-none');\n          }\n\n          const tileRow = document.querySelector('.style_with_product_recs_container ');\n\n          if (tileRow && tileRow.getAttribute('data-breakpoints')) {\n            const breakpointsData = tileRow.getAttribute('data-breakpoints');\n\n            try {\n              const parsedBreakpoints = JSON.parse(breakpointsData);\n              if (typeof parsedBreakpoints === 'object' && parsedBreakpoints !== null) {\n                glideBreakpoints = parsedBreakpoints;\n              }\n            } catch (e) {\n              throw e;\n            }\n          }\n\n          const settings = {\n            type: 'slider',\n            rewind: false,\n            gap: 8,\n            bound: true,\n            breakpoints: glideBreakpoints,\n          };\n\n          const glide = new Glide(sliders[i], settings);\n          if (isLG()) {\n            glide.mutate([FixBoundPeek]).mount({ CustomLength });\n          }\n        }\n      }\n    }\n  };\n\n  const PDPCarouselYouMightLike = function () {\n    const slider = document.querySelector('.product-detail_you-might-also-like .pdp-glide-container');\n\n    if (slider) {\n      let glideBreakpoints = {\n        4000: {\n          perView: 5,\n          peek: { before: 0, after: 0 },\n        },\n        991: {\n          perView: 3,\n          peek: { before: 0, after: 90 },\n        },\n        767: {\n          perView: 1,\n          peek: { before: 0, after: 120 },\n        },\n      };\n\n      const tileRow = document.querySelector('.product-detail_you-might-also-like');\n\n      if (tileRow && tileRow.getAttribute('data-breakpoints')) {\n        const breakpointsData = tileRow.getAttribute('data-breakpoints');\n\n        try {\n          const parsedBreakpoints = JSON.parse(breakpointsData);\n          if (typeof parsedBreakpoints === 'object' && parsedBreakpoints !== null) {\n            glideBreakpoints = parsedBreakpoints;\n          }\n        } catch (e) {\n          throw e;\n        }\n      }\n\n      try {\n        const hasProducts = !!slider.querySelector('.product');\n        if (hasProducts) {\n          if (slider.closest('.product-detail__product-carousel')) {\n            slider.closest('.product-detail__product-carousel').classList.remove('d-none');\n          }\n        }\n        const glide = new Glide(slider, {\n          type: 'slider',\n          bound: true,\n          rewind: false,\n          gap: 8,\n          breakpoints: glideBreakpoints,\n        });\n\n        if (isLG()) {\n          glide.mutate([FixBoundPeek]).mount({ CustomLength });\n        }\n      } catch (e) {\n        throw e;\n      }\n    }\n  };\n\n  const PDPEinsteinRecsCarouselInit = function () {\n    const slider = document.querySelector('.product-detail__recently-viewed .pdp-glide-container');\n\n    if (slider) {\n      let glideBreakpoints = {\n        4000: {\n          perView: 5,\n          peek: { before: 0, after: 0 },\n        },\n        991: {\n          perView: 3,\n          peek: { before: 0, after: 90 },\n        },\n        767: {\n          perView: 1,\n          peek: { before: 0, after: 120 },\n        },\n      };\n\n      const tileRow = document.querySelector('.product-detail__recently-viewed');\n\n      if (tileRow && tileRow.getAttribute('data-breakpoints')) {\n        const breakpointsData = tileRow.getAttribute('data-breakpoints');\n\n        try {\n          const parsedBreakpoints = JSON.parse(breakpointsData);\n          if (typeof parsedBreakpoints === 'object' && parsedBreakpoints !== null) {\n            glideBreakpoints = parsedBreakpoints;\n          }\n        } catch (e) {\n          throw e;\n        }\n      }\n\n      try {\n        const hasProducts = !!slider.querySelector('.product');\n        if (hasProducts) {\n          if (slider.closest('.product-detail__product-carousel')) {\n            slider.closest('.product-detail__product-carousel').classList.remove('d-none');\n          }\n        }\n\n        const glide = new Glide(slider, {\n          type: 'slider',\n          bound: true,\n          rewind: false,\n          gap: 8,\n          breakpoints: glideBreakpoints,\n        });\n\n        if (isLG()) {\n          glide.mutate([FixBoundPeek]).mount({ CustomLength });\n        }\n      } catch (e) {\n        throw e;\n      }\n    }\n  };\n\n  export default () => {\n    $(document).ready(() => {\n      PDPCarouselInit();\n      PDPCarouselYouMightLike();\n      PDPEinsteinRecsCarouselInit();\n      PDPWaystowear();\n    });\n    window.onload = () => {\n      PDPCarouselInit();\n      PDPWaystowear();\n    };\n    // $(document).on('change', '.product-detail__tile-row-container', () => { PDPCarouselInit(); });\n    document.addEventListener('product:afterloadEinstienSlot', () => { PDPCarouselInit(); });\n    document.addEventListener('product:afterAttributeSelect', () => {\n      PDPCarouselInit();\n      PDPWaystowear();\n    });\n    document.addEventListener('product:carousel-init', () => {\n      PDPEinsteinRecsCarouselInit();\n      PDPCarouselYouMightLike();\n  });\n  const mediaQuery = window.matchMedia('(min-width: 992px)');\n\n  function handleGlideCarousel(event) {\n    if (event.matches) {\n      PDPCarouselYouMightLike();\n      PDPEinsteinRecsCarouselInit();\n    }\n  }\n  // Initial check\n  handleGlideCarousel(mediaQuery);\n\n  // Listen for changes in media query status\n  mediaQuery.addEventListener('change', handleGlideCarousel);\n};\n","import base from '~base';\nimport initAttributes from './components/attributes';\nimport initProductNav from './components/productNav';\nimport initSizeChart from './components/sizeChart';\nimport initStockCheck from './components/stockCheck';\nimport videoPlayer from './components/videoPlayer';\nimport initReviews from './components/productReviews';\nimport deliveryReturns from './components/deliveryReturns';\nimport handleCarousel from './components/imageCarousel';\nimport { initImageGallery } from './components/imageGallery';\nimport handleStickyComponents from './components/stickyComponents';\nimport handleProductCarousels from './components/productCarousels';\nimport handleProductSubscriptionForm from './components/backInStockSubscription';\nimport stickyBar from './components/stickyBar';\nimport handlePDPScroll from './components/handlePDPScroll';\nimport initPDPRecCarousel from './components/pdpRecomendationCarousel';\n\nconst handlePageElements = () => {\n  initSizeChart();\n  initStockCheck();\n  initReviews();\n  deliveryReturns();\n  initAttributes();\n  handleCarousel();\n  initPDPRecCarousel();\n  handleStickyComponents();\n  handleProductCarousels();\n  handleProductSubscriptionForm();\n\n  const cldGalleryElement = document.getElementById('cld-gallery');\n  if (!cldGalleryElement) {\n    initImageGallery();\n  }\n};\n\nbase.pageBehavior = () => {\n  window.addEventListener('resize', handlePageElements);\n\n  document.addEventListener('product:afterAttributeSelect', handlePageElements);\n\n  initProductNav();\n  handlePageElements();\n};\n\nbase.stickyBar = () => {\n  stickyBar();\n  handlePDPScroll();\n};\n\nbase.videoPlayer = () => {\n  videoPlayer();\n};\nexport default base;\n","import 'app_storefront_base/productDetail';\nimport $ from 'jquery';\nimport Glide from '@glidejs/glide';\nimport scrollTo from '../util/scrollTo';\nimport { isLG } from '../util/domutils';\n\nconst SELECTORS = {\n  NAVIGATORS: {\n    ARROWS: '.glide__arrows',\n  },\n  PRODUCTS: '.product',\n};\n\nconst CustomLength = function (glide, Components, Events) {\n  const addToBagCarouselEvents = {\n    handleSlider() {\n      if (Components.Sizes.length <= glide.settings.perView) {\n        glide.disable();\n        Components.Html.root.querySelector(SELECTORS.NAVIGATORS.ARROWS).classList.add('d-none');\n      } else {\n        glide.enable();\n        Components.Html.root.querySelector(SELECTORS.NAVIGATORS.ARROWS).classList.remove('d-none');\n      }\n    },\n    mount() {\n      this.handleSlider();\n    },\n  };\n  Events.on('resize', () => {\n    addToBagCarouselEvents.handleSlider();\n  });\n  return addToBagCarouselEvents;\n};\n\nconst PDPBrandFocusInit = function () {\n  if ($('.USPwide').length) {\n    const sliders = document.querySelectorAll('.USPwide');\n    for (let i = 0; i < sliders.length; i++) {\n      const glide = new Glide(sliders[i], {\n        type: 'slider',\n        startAt: 0,\n        bound: true,\n        rewind: false,\n        gap: 8,\n        peek: { before: 0, after: 0 },\n        breakpoints: {\n          4000: {\n            perView: 3,\n            peek: { before: 0, after: 110 },\n          },\n          1279: {\n            perView: 2,\n            peek: { before: 0, after: 200 },\n          },\n          1023: {\n            perView: 3,\n            peek: { before: 0, after: 90 },\n          },\n          767: {\n            perView: 1,\n            peek: { before: 0, after: 145 },\n          },\n        },\n      });\n\n      glide.mount({ CustomLength });\n    }\n  }\n};\n\nconst closeSizeSelectorDropdown = function () {\n  document.addEventListener('click', (event) => {\n    const elementsToCheck = document.querySelectorAll(\n      '.select-dropdown__button, .select-dropdown__list, .product-detail button.add-to-cart, .stickyAddToBag',\n    );\n    const clickedInside = [...elementsToCheck].some(element => element.contains(event.target));\n\n    if (!clickedInside) {\n      document.querySelectorAll('.select-dropdown__button').forEach((button) => {\n        button.classList.remove('active');\n      });\n      document.querySelectorAll('.select-dropdown__list').forEach((list) => {\n        list.classList.remove('active');\n      });\n      if (!isLG()) {\n        // eslint-disable-next-line jquery/no-class\n        $('body,html').removeClass('overflow-text');\n      }\n    }\n  });\n};\n\n$(document).ready(() => {\n  let hideTimeout;\n  const ctaContainer = document.querySelector('.customer-rating-cta-container');\n\n  function showContainer() {\n    if (ctaContainer) {\n      ctaContainer.style.display = 'flex'; // Show the container\n      setTimeout(() => {\n        ctaContainer.style.opacity = '1'; // Fade in effect\n      }, 50); // Delay of 50 milliseconds to ensure opacity transition applies\n    }\n  }\n\n  // Function to handle hiding the container\n  function hideContainer() {\n    ctaContainer.style.opacity = '0';\n    if (ctaContainer) {\n      ctaContainer.style.display = 'none';\n    }\n  }\n\n  // Set a timeout to hide the container after 8 seconds\n  function scheduleHide() {\n    hideTimeout = setTimeout(() => {\n      hideContainer();\n      clearTimeout(hideTimeout);\n    }, 10000);\n  }\n\n  if (ctaContainer) {\n    // Set a timeout to show the container after 2 seconds\n    setTimeout(showContainer, 2000);\n    scheduleHide();\n  }\n\n  $('.back-to-tops').click(() => {\n    // eslint-disable-next-line jquery/no-animate\n    $('html, body').animate({ scrollTop: 0 }, 500);\n  });\n\n  document.querySelectorAll('.product-detail button.add-to-cart').forEach((addToBag) => {\n    let clickCount = 0;\n\n    addToBag.addEventListener('click', () => {\n      clickCount++;\n\n      // Find the nearest product-detail container\n      let productDetail = addToBag.closest('.product-detail');\n      if (addToBag.closest('.set-item')) {\n        productDetail = addToBag.closest('.set-item');\n      }\n      const closestDropdown = productDetail.querySelector('.product-detail__attribute--size');\n      const dropdownList = closestDropdown.querySelector('.select-dropdown__list');\n      const selected = closestDropdown.querySelector('.Selected');\n\n      if (!selected) {\n        if (clickCount === 1) {\n          closestDropdown.classList.add('active');\n          dropdownList.classList.add('active');\n          if (!isLG()) {\n            // eslint-disable-next-line jquery/no-class\n            $('body,html').addClass('overflow-text');\n          }\n        } else if (clickCount === 2) {\n          closestDropdown.classList.remove('active');\n          dropdownList.classList.remove('active');\n          if (!isLG()) {\n            // eslint-disable-next-line jquery/no-class\n            $('body,html').removeClass('overflow-text');\n          }\n        }\n      }\n    });\n  });\n\n  const setItems = document.getElementsByClassName('set-items');\n  if (setItems.length > 0) {\n    $(document).on('click', '.set-shop-outfit', () => {\n      scrollTo(setItems[0], true);\n    });\n  }\n\n  handleProductDescTab();\n  document.addEventListener('product:afterAttributeSelect', () => { handleProductDescTab(); });\n  closeSizeSelectorDropdown();\n  PDPBrandFocusInit();\n});\n\nfunction handleProductDescTab() {\n  if ($('.product-desc-desktop').length > 0) {\n    const tabLinks = document.querySelectorAll('.bottom-section-header .nav-pills a');\n\n    // Loop through each tab link and update the id and href attributes\n    tabLinks.forEach((link) => {\n      // Get the current id and href\n      const currentId = link.id;\n      const currentHref = link.getAttribute('href');\n\n      // Update the id and href\n      const newId = `desktop-${currentId}`;\n      const newHref = `#desktop-${currentHref.substring(1)}`;\n\n      link.id = newId;\n      link.setAttribute('href', newHref);\n\n      // Update the aria-controls attribute\n      link.setAttribute('aria-controls', `desktop-${link.getAttribute('aria-controls')}`);\n    });\n\n    // Select all the tab content divs\n    const bottomSection = document.querySelector('.bottom-section-header');\n    const tabContents = bottomSection.querySelectorAll('.tab-content .tab-pane');\n\n    // Loop through each tab content div and update the id\n    tabContents.forEach((content) => {\n      // Get the current id\n      const currentId = content.id;\n      // Update the id\n      const newId = `desktop-${currentId}`;\n      content.id = newId;\n    });\n  }\n}\n\n$(document).on('click', '.style-with-CTA', () => {\n  const STYLE_WITH_CONTAINER = '.style_with_product_recs_container';\n  scrollTo(STYLE_WITH_CONTAINER, true);\n});\n\n$(document).on('click', '.select-dropdown__button', (e) => {\n  const $currentDropDown = $(e.currentTarget);\n  // eslint-disable-next-line jquery/no-class\n  $('.select-dropdown__button').not($currentDropDown).removeClass('active');\n  // eslint-disable-next-line jquery/no-class\n  $('.select-dropdown__list').not($currentDropDown.next('.select-dropdown__list')).removeClass('active');\n  // eslint-disable-next-line jquery/no-class\n  $currentDropDown.toggleClass('active');\n  // eslint-disable-next-line jquery/no-class\n  $currentDropDown.next('.select-dropdown__list').toggleClass('active');\n\n  if (!isLG()) {\n    // eslint-disable-next-line jquery/no-class\n    if ($currentDropDown.hasClass('active')) {\n      // eslint-disable-next-line jquery/no-class\n      $('body, html').addClass('overflow-text');\n    } else {\n      // eslint-disable-next-line jquery/no-class\n      $('body, html').removeClass('overflow-text');\n    }\n  }\n});\n\n$(document).on('click', '.header-search', () => {\n  // eslint-disable-next-line jquery/no-toggle, jquery/no-class\n  $('.search-container').toggleClass('active');\n  $('.search-field').focus();\n  // eslint-disable-next-line jquery/no-class\n  $('.compact-header').toggleClass('bak-Color');\n});\n\n$(document).on('click', '.header-element__menu', () => {\n  // eslint-disable-next-line jquery/no-class\n  $('.compact-header').removeClass('bak-Color');\n  // eslint-disable-next-line jquery/no-toggle, jquery/no-class\n  $('.search-container').removeClass('active');\n});\n\n$(document).on('click', '.select-dropdown__list-item', function () {\n  // eslint-disable-next-line jquery/no-class, jquery/no-closest\n  $(this).closest('.select-dropdown__list').toggleClass('active');\n});\n\n$('.sizeguidelabel .close-icon, #sizeGuideAccordion, .continuity-flyout__close').on('click', () => {\n  // eslint-disable-next-line jquery/no-class\n  $('.select-dropdown__list,.select-dropdown__button').removeClass('active');\n  // eslint-disable-next-line jquery/no-class\n  if (!isLG()) {\n    // eslint-disable-next-line jquery/no-class\n    $('body ,html').removeClass('overflow-text');\n  }\n});\n\n$(document).on('click', '.dropdown-swatch', (e) => {\n  // eslint-disable-next-line max-len\n  const colorSwatchPlaceholder = document.querySelector('.product-detail__stock-check__swatch-label .product-detail__attribute__display-value');\n  const swatchDropdown = document.querySelector('.product-detail__stock-check__form__attribute--color');\n  const selectedColorValue = e.currentTarget.dataset.value;\n\n  const matchingOption = Array.from(swatchDropdown.options).find(option => option.value === selectedColorValue);\n\n  // eslint-disable-next-line jquery/no-class\n  $('.dropdown-swatch').removeClass('attribute_current');\n  e.currentTarget.classList.add('attribute_current');\n  colorSwatchPlaceholder.innerHTML = e.currentTarget.dataset.tippyContent;\n\n  if (matchingOption) {\n    matchingOption.selected = true;\n  }\n});\n\n$(document).on('click', '.product-detail__stock-check__container  .fit-style', (e) => {\n  const fitStyleELE = document.querySelector('.product-detail__stock-check__form__attribute--fitType');\n  const selectedFitValue = e.currentTarget.dataset.length;\n\n  const matchingOption = Array.from(fitStyleELE.options).find(option => option.value === selectedFitValue);\n\n  // eslint-disable-next-line jquery/no-class\n  $('.product-detail__stock-check__container .fit-style').removeClass('selectedFitVariant');\n  e.currentTarget.classList.add('selectedFitVariant');\n\n  if (matchingOption) {\n    matchingOption.selected = true;\n  }\n});\n\n$(document).on('keypress', '.store-postal-code', (event) => {\n  if (event.key === 'Enter') {\n    event.preventDefault(); // Prevent default form submission\n    // eslint-disable-next-line jquery/no-find, jquery/no-closest\n    $(event.target).closest('form').find('.btn-storelocator-search').click(); // Submit the form\n  }\n});\n\n$(document).on('click', '.product-detail__stock-check__result__store-details-toggle', (event) => {\n  if (event.target.checked && event.target.classList.contains('stock-body-active')) {\n    event.target.checked = false;\n    event.target.classList.remove('stock-body-active');\n    event.target.previousElementSibling.classList.remove('active');\n  } else {\n    // eslint-disable-next-line jquery/no-class\n    $('.product-detail__stock-check__result__store-details-toggle').removeClass('stock-body-active');\n    event.target.classList.add('stock-body-active');\n  }\n});\n\nconst waysToWearComponent = document.querySelector('.waystowear');\n\nif (waysToWearComponent) {\n  $(waysToWearComponent).on('slid.bs.carousel', (event) => {\n    const activeIndex = [...event.target.querySelectorAll('.carousel-item')].findIndex(\n      item => item.classList.contains('active'),\n    );\n    const subProductsArray = document.querySelectorAll('.waystowear-sub-products');\n    const looksTitlesArray = document.querySelectorAll('.waystowear-looks');\n    subProductsArray.forEach((item) => {\n      item.classList.remove('active');\n    });\n    looksTitlesArray.forEach((item) => {\n      item.classList.remove('active');\n    });\n    subProductsArray[activeIndex].classList.add('active');\n    looksTitlesArray[activeIndex].classList.add('active');\n  });\n}\n\ndocument.addEventListener('click', (event) => {\n  if (event.target.closest('.carousel-pips')) {\n    return;\n  }\n\n  const targetElement = event.target.closest('[class*=\"look-\"]');\n\n  if (targetElement) {\n    const clickedClass = [...targetElement.classList].find(cls => cls.startsWith('look-'));\n\n    if (clickedClass) {\n      document.querySelectorAll('.waystowear .looks').forEach((element) => {\n        element.classList.remove('active');\n      });\n\n      document.querySelectorAll(`.${clickedClass}`).forEach((element) => {\n        element.classList.add('active');\n      });\n    }\n  }\n});\n","'use strict';\n\nconst base = module.superModule || {};\nconst baseAppendQueryParams = base.appendQueryParams;\n\n/**\n * Replaces query param values in a URL, or adds them if they don't exist\n *\n * @param {string} target An URL endpoint with or without query params\n *     e.g. http://someresource or http://someresource?xyz=123\n * @param {Object} params Object of query params to replace on the URL\n *     e.g. { var1: val1, var2: val2 }\n * @return {string} Target URL with query param values replaced\n */\nbase.replaceUrlParams = function (url, params) {\n  let resultUrl = url.toString();\n\n  Object.keys(params).forEach(function (paramName) {\n    let paramValue = params[paramName];\n    let paramPattern = '(&|\\\\?)' + paramName + '=[^&?]+';\n    let newParamPair = paramName + '=' + encodeURIComponent(paramValue);\n\n    if (resultUrl.search(paramPattern) >= 0) {\n      let newParamPart = '$1' + newParamPair;\n\n      resultUrl = resultUrl.replace(new RegExp(paramPattern), newParamPart);\n    } else {\n      let separator = resultUrl.indexOf('?') >= 0 ? '&' : '?';\n\n      resultUrl = resultUrl + separator + newParamPair;\n    }\n  });\n\n  return resultUrl;\n};\n\n/**\n * The SFRA QueryString class cannot handle URLs without a query string (that don't contain a '?'),\n * returning an object that contains an entry whose key is the URL, and whose value is undefined.\n * The base appendQueryParams logic ignores this case, whichi leads to broken search permalinks\n * when storefront category URLs are enabled\n *\n * This function intercepts such cases and calls replaceUrlParams isntead, which handles them correctly\n *\n * @param {string} target - An URL endpoint with or without query params\n *     e.g. http://someresource or http://someresource?xyz=123\n * @param {Object|string[]} queryParamsToAppend - Object or list of query params strings with or\n *     without resource path prepended, where resource path is discarded\n *     e.g., ['xyz=123'] or ['http://someresource?xyz=123'] or { var1: val1, var2: val2 }\n * @return {string} - Target URL appended with query params from sourceQueryString\n */\nbase.appendQueryParams = function (target, queryParamsToAppend) {\n  if (Array.isArray(queryParamsToAppend) || target.indexOf('?') >= 0) {\n    return baseAppendQueryParams.call(null, target, queryParamsToAppend);\n  }\n\n  return base.replaceUrlParams(target, queryParamsToAppend);\n};\n\nbase.parseQueryString = function (queryString) {\n  if (queryString) {\n    return queryString.split('&').reduce(function (obj, query) {\n      const splitQuery = query.split('=');\n      obj[splitQuery[0]] = splitQuery[1];\n      return obj;\n    }, {});\n  }\n  return {};\n};\n\nmodule.exports = base;\n","/**\n * Updates product gallery widget for variant products\n */\nmodule.exports = {\n    updateCloudinaryGalleryWidget: function (cloudinary) {\n        if (cloudinary && cloudinary.isEnabled && cloudinary.isGalleryEnabled && cloudinary.galleryWidget && cloudinary.galleryWidget.options\n            && cloudinary.galleryWidget.options.mediaAssets && cloudinary.galleryWidget.options.mediaAssets.length > 0) {\n            if (typeof cldGallery !== 'undefined' && cldGallery) { // eslint-disable-line no-undef\n                cldGallery.update(cloudinary.galleryWidget.options); // eslint-disable-line no-undef\n            }\n        }\n    }\n};\n","'use strict';\n// updating this at base cartidge due to stucture of js in TFG is venila format. and require base/details is adding only base code not tfg one.\nimport cloudinary from '../cloudinary/cloudinary';\n\nmodule.exports = function () {\n    // Custom Start: Make cart product images responsive //\n    $(document).on('product:afterAttributeSelect', function (e, response) {\n        // custom start: update cloudinary PGW\n        let cloudinaryData = document.querySelector('.cloudinary-data');\n        if (cloudinaryData) {\n            cloudinaryData = cloudinaryData.innerHTML;\n            const temp = { detail: JSON.parse(cloudinaryData) };\n            cloudinary.updateCloudinaryGalleryWidget(temp.detail);\n            // custom end: update cloudinary PGW\n            if (response) {\n                if ($('.product-detail>.bundle-items').length) {\n                    response.container.data('pid', response.data.product.id);\n                    response.container.find('.product-id').text(response.data.product.id);\n                } else if ($('.product-set-detail').eq(0)) {\n                    response.container.data('pid', response.data.product.id);\n                    response.container.find('.product-id').text(response.data.product.id);\n                } else {\n                    $('.product-id').text(response.data.product.id);\n                    $('.product-detail:not(\".bundle-item\")').data('pid', response.data.product.id);\n                }\n            }\n        }\n    });\n    // Custom End: Make cart product images responsive //\n};\n","'use strict';\n\nvar processInclude = require('base/util');\n\nimport '~base';\n\n$(document).ready(function () {\n    processInclude(require('./product/cloudinarydetail'));\n});\n","'use strict';\n\nmodule.exports = function () {\n    $('body').on('product:updateAddToCart', function (e, response) {\n        if (response.product.readyToOrder) {\n            var applePayButton = $('.apple-pay-pdp', response.$productContainer);\n            if (applePayButton.length !== 0) {\n                applePayButton.attr('sku', response.product.id);\n            } else {\n                if ($('.apple-pay-pdp').length === 0) { // eslint-disable-line no-lonely-if\n                    $('.cart-and-ipay').append('<isapplepay class=\"apple-pay-pdp btn\"'\n                        + 'sku=' + response.product.id + '></isapplepay>');\n                }\n            }\n        } else {\n            $('.apple-pay-pdp').remove();\n        }\n    });\n};\n","'use strict';\n\nvar base = require('base/product/base');\nvar detail = require('base/product/detail');\n\nvar exportDetails = $.extend({}, base, detail, {});\n\nmodule.exports = exportDetails;\n","'use strict';\n\nvar processInclude = require('base/util');\n\n$(document).ready(function () {\n    processInclude(require('./product/details'));\n    processInclude(require('./product/wishlist'));\n});\n"],"sourceRoot":""}