import api from"./modules/api-promise.js";import alerts from"./modules/alerts-promise.js";import BMClerk from"bm-clerk";import Template from"./modules/template.js";import ProductSlider from"./modules/product-slider.js";import loadComponent from"../modules/load-component.js";import responseHandler from"./modules/response-handler.js";var favoritesLoading={};window.med24={addProductToCart:(productID,quantity)=>{api.cart.add(productID,quantity).then(response=>{var alertMessage,doneCallback=()=>{response.TMAddToCartCode&&window?.dataLayer?.push(response.TMAddToCartCode),response.TMAddToCartCodeMatomo&&window?._paq?.push(...response.TMAddToCartCodeMatomo),med24.updateCartItemCount(),0===response.status&&med24.showPowerstepPopup(productID)};0!==response.status?(-2===response.status?(alertMessage=new Template("onlyMembersSampleAlertMessage").compile(),alerts.alert(alertMessage,"info","html")):alerts.alert(response.message)).then(doneCallback):doneCallback()})},addDiscountCodeFromURL:async code=>{code=await api.discountCode.add(code);0!==code.status&&responseHandler(code)},updateCartItemCount:selector=>(selector=selector||"header div.links span.cartQuantity, header .stickyHeader span.cartQuantity",api.cart.getItemCount(!1).then(response=>{for(const cartQuantity of document.querySelectorAll(selector))cartQuantity.textContent=response.itemCount})),updateFavoritesCount:count=>{const favoritesIcon=document.querySelector("header div.links .image.favorites");void 0===count?api.customer.getFavoritesCount().then(response=>{favoritesIcon.setAttribute("data-count",response.favoritesCount)}):favoritesIcon.setAttribute("data-count",count)},showPowerstepPopup:productID=>{if(window.innerWidth<375)med24.showCartPopup();else{"string"==typeof productID&&(productID=parseInt(productID.replace(/[^0-9]+/gi,"")));const powerstepHTML=new Template("powerstep").compile(),productGrid=powerstepHTML.querySelector(".productGrid");BMClerk.addRelatedProducts(productGrid,{productIDs:[productID],limit:4,filter:"soldOut = false and isSample = false and categories contains not 2657 and categories contains not 131"}).then(()=>{var existingPowerstepOverlay=document.querySelector(".powerstepOverlay");existingPowerstepOverlay&&existingPowerstepOverlay.remove();const overlay=alerts.createOverlay(!0,["powerstepOverlay"]);powerstepHTML.querySelectorAll(".continueShopping, .closeIcon").forEach(elm=>elm.addEventListener("click",event=>overlay.close())),powerstepHTML.addEventListener("click",event=>event.stopPropagation()),overlay.overlay.addEventListener("click",event=>overlay.close()),overlay.overlay.append(powerstepHTML),new ProductSlider(productGrid).initialize()})}},showCartPopup:async()=>{var cartDialogTpl=new Template("cartPopup"),cartDialogProductTpl=new Template("cartPopupProductRow"),productsPromise=api.cart.getProducts(),totalPromise=api.cart.getProductTotal(),[productsResponse,productsPromise]=await Promise.all([productsPromise,totalPromise]);const cartPopup=cartDialogTpl.compile({productTotal:productsPromise.total});var productContainer=cartPopup.querySelector("div.products");for(const productKey in productsResponse.products){const product=productsResponse.products[productKey];var cartDialogProduct=cartDialogProductTpl.compile(product);cartDialogProduct.querySelector("button.remove").addEventListener("click",async()=>{var response=await api.cart.remove(product.productID);response.TMAddToCartCodeMatomo&&window?._paq?.push(...response.TMAddToCartCodeMatomo),await med24.updateCartItemCount(),med24.showCartPopup()}),productContainer.appendChild(cartDialogProduct)}cartPopup.querySelector("button.continueShopping").addEventListener("click",event=>cartPopup.remove());totalPromise=document.querySelector("header>div.cartPopup"),totalPromise&&totalPromise.remove(),cartDialogTpl=document.querySelector("header");cartDialogTpl&&cartDialogTpl.appendChild(cartPopup);const clickOutsideHandler=event=>{let targetElement=event.target;do{if(targetElement==cartPopup)return}while(targetElement=targetElement.parentNode);cartPopup.remove(),document.removeEventListener("mouseup",clickOutsideHandler)};document.addEventListener("mouseup",clickOutsideHandler)},initFavorite:(favoritesQuery,productID)=>{var favorites=document.querySelectorAll(favoritesQuery);if((window.customer||{}).loaded){for(const favorite of favorites)favorite.addEventListener("click",async event=>{event.preventDefault(),event.stopPropagation();const target=event.currentTarget,toggleFavorite=()=>{void 0===favoritesLoading[productID]&&(favoritesLoading[productID]=!0,api.customer.toggleFavoriteProduct(productID).then(response=>{response.favorited&&response.TMAddToCartCodeMatomo&&window?._paq?.push(...response.TMAddToCartCodeMatomo),target.classList[response.favorited?"add":"remove"]("favorited"),med24.updateFavoritesCount(response.favoritedProductCount),delete favoritesLoading[productID]}))};if(customer.loggedIn)toggleFavorite();else{await loadComponent("login-or-signup-popup");const overlay=alerts.createOverlay(!1);event=document.createElement("login-or-signup-popup");const emailInput=event.shadowRoot.querySelector('.login input[name="email"]');event.addEventListener("close",event=>overlay.close()),event.addEventListener("login-completed",event=>{api.customer.getData().then(response=>{window.customer=response.customerData,window.customer.loaded=!0,-1===customer.favoritedProductIDs.indexOf(productID)&&toggleFavorite(),location.reload()})}),overlay.overlay.append(event),overlay.show(),setTimeout(()=>{emailInput.focus()},100)}});for(const favorite of favorites)favorite.classList[-1!==customer.favoritedProductIDs.indexOf(productID)?"add":"remove"]("favorited"),favorite.classList.remove("hidden")}else window.addEventListener("fetchedCustomerData",event=>{event.detail.customerID;med24.initFavorite(favoritesQuery,productID)})},initProductThumb:productID=>{med24.initFavorite('.productThumb[data-product-id="'+productID+'"] .favorite',productID)},imageHovered(event){event=event.target.querySelector(".scaleImage");event.setAttribute("src",event.dataset.hoverSrc)},imageUnHovered(event){event=event.target.querySelector(".scaleImage");event.setAttribute("src",event.dataset.src)}},console.debug("%cmed24loaded","color:blue;"),window.dispatchEvent(new Event("med24loaded"));
//# sourceMappingURL=/resources/compiled/js/med24/med24.js.map