{"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 (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('');\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":""}