1let theProduct,isProcessingWarranty=!1,isModalOpen=!1,isAddingWarrantyInternally=!1,eventProcessTimeout=null,isCartEventBound=!1,lastProcessedCartItemKey=null,lastProcessedAt=0;const hideMulberry=["/products/6100-max-tnsr","/products/8200-max-tnsr","/products/netgate-8300-base-tnsr-secure-router","/products/netgate-8300-max-tnsr-secure-router","/products/netgate-8300-taa-tnsr-secure-router"],CART_EVENT_DELAY=0,MODAL_OPEN_DELAY=0,CART_EVENT_COOLDOWN=0;console.log("Mulberry script initialized");function wait(ms){return new Promise(resolve=>setTimeout(resolve,ms))}async function closeCartDrawerIfOpen(){const cartDrawer=document.querySelector("#CartDrawer");if(!cartDrawer?.classList.contains("drawer--is-open"))return;document.dispatchEvent(new CustomEvent("cart:close"));const closeButton=cartDrawer.querySelector(".js-drawer-close");cartDrawer.classList.contains("drawer--is-open")&&closeButton&&closeButton.click(),await wait(550)}function getCurrentlySelectedVariant(product){let selectedVariant=product.variants.find(i=>i.id==mulberryShop.selectedVariantId);return selectedVariant||(selectedVariant=product.variants[0]),mulberryShop.selectedVariantId=selectedVariant.id,selectedVariant}function getMainVariant(product){const mainVariant=product.variants[0];return mulberryShop.selectedVariantId=mainVariant.id,mainVariant}function isWarrantyProduct(item){if(!item)return!1;if(item.title?.includes("Guarantee")||item.title?.includes("Protection")||item.title?.includes("Warranty"))return!0;if(item.properties){const propsStr=JSON.stringify(item.properties).toLowerCase();if(propsStr.includes("warranty")||propsStr.includes("mulberry")||propsStr.includes("guarantee"))return!0}return!!(item.vendor?.toLowerCase().includes("mulberry")||item.vendor?.toLowerCase().includes("warranty")||item.vendor?.toLowerCase().includes("guarantee"))}async function handleProductAddedToCart(event){if(console.log("Product added to cart event detected:",event),isAddingWarrantyInternally){console.log("[SKIPPED] Event ignored - internally adding warranty");return}clearTimeout(eventProcessTimeout),eventProcessTimeout=setTimeout(async()=>{try{if(isAddingWarrantyInternally){console.log("[SKIPPED] Timeout ignored - internally adding warranty");return}const cart=await(await fetch("/cart.js")).json();if(!cart.items||cart.items.length===0)return;const lastCartItem=[...cart.items].reverse()[0];if(isWarrantyProduct(lastCartItem)){console.log("Latest cart item is a warranty product, skipping modal flow");return}const lastNonWarrantyItem=[...cart.items].reverse().find(item=>!isWarrantyProduct(item));if(!lastNonWarrantyItem){console.log("No non-warranty items found in cart");return}console.log("Product added to cart:",lastNonWarrantyItem.title);const cartItemKey=[lastNonWarrantyItem.id,lastNonWarrantyItem.key,lastNonWarrantyItem.quantity].filter(Boolean).join(":");if(cartItemKey&&cartItemKey===lastProcessedCartItemKey&&Date.now()-lastProcessedAt<CART_EVENT_COOLDOWN){console.log("Duplicate cart event detected, skipping");return}if(!window.offers||window.offers.length===0){console.log("No warranty offers available");return}const hasWarrantySelected=!!window.selectedWarranty;if(hasWarrantySelected&&isAddingWarrantyInternally){console.log("Warranty already selected and being added, skipping modal flow");return}if(hasWarrantySelected&&!isProcessingWarranty){console.log("Product added with warranty selected, adding warranty"),isProcessingWarranty=!0,isAddingWarrantyInternally=!0;try{const offer=window.selectedWarranty.offer||window.selectedWarranty;if(!offer){console.error("Invalid warranty object:",window.selectedWarranty);return}const result=await window.mulberryShop.getWarrantyVariant(offer);await wait(300);const resp=await window.mulberryShop.addWarrantyToCart(result.shopify_variant_id,{...window.productForWarranty,variantId:`${window.selectedVariant.id}`,quantity:lastNonWarrantyItem.quantity||1},offer),cart2=await mulberryShop.cart.fetchCart();window.dispatchEvent(new CustomEvent("mulberry:buildCart",{detail:cart2})),lastProcessedCartItemKey=cartItemKey,lastProcessedAt=Date.now()}catch(err){console.error("Warranty add failed:",err)}finally{isProcessingWarranty=!1,isAddingWarrantyInternally=!1,window.selectedWarranty=null,window.mulberry?.inline?.deselectOffer&&window.mulberry.inline.deselectOffer()}}else!hasWarrantySelected&&!isModalOpen&&!isProcessingWarranty?(console.log("Product added, opening warranty modal"),lastProcessedCartItemKey=cartItemKey,lastProcessedAt=Date.now(),isModalOpen=!0,setTimeout(()=>{try{closeCartDrawerIfOpen().then(()=>
1{if(isAddingWarrantyInternally||window.selectedWarranty){console.log("Skipping modal open because warranty is selected or being added"),isModalOpen=!1;return}window.mulberry?.modal?.open?window.mulberry.modal.open():(console.error("Modal not available"),isModalOpen=!1)}).catch(err=>{console.error("Drawer close error:",err),isModalOpen=!1})}catch(err){console.error("Modal error:",err),isModalOpen=!1}},MODAL_OPEN_DELAY)):console.log("Modal already open or warranty processing, skipping")}catch(err){console.error("Error handling product added event:",err)}},CART_EVENT_DELAY)}document.addEventListener("DOMContentLoaded",function(){document.addEventListener("mulberry-shopify:loaded",async function(){window.mb_gtm_is_disabled=!0,await removeAndSyncWarranties(),location.href.includes("/products/")&&!hideMulberry.includes(location.pathname)&&initMulberry(),isCartEventBound||(window.addEventListener("itemAdded",handleProductAddedToCart),isCartEventBound=!0);let lastUrl=location.href,currentVariant;function getUrlParam(name){const match=new RegExp("[?&]"+name+"=([^&]*)").exec(location.search);return match?decodeURIComponent(match[1]):""}async function handleUrlChange(){const variant=getUrlParam("variant");if(variant&&variant!==currentVariant&&window.pdpInline){currentVariant=variant,window.selectedWarranty=null,window.pdpInline.deselectOffer(),mulberryShop.selectedVariantId=variant;const selectedVariant=getCurrentlySelectedVariant(theProduct),mainVariant=getMainVariant(theProduct);window.offers=await mulberry.core.getWarrantyOffer({id:selectedVariant.id,title:theProduct.title,price:mainVariant.price,detail:theProduct}),window.offers?.length?(document.querySelector("#mulberry-container").style.display="block",document.querySelector("#whats-covered-faq").style.display="flex",window.pdpInline.updateOffer(window.offers),window.mulberry.modal.updateOffer(window.offers)):(document.querySelector("#mulberry-container").style.display="none",document.querySelector("#whats-covered-faq").style.display="none")}}new MutationObserver(()=>{location.href!==lastUrl&&(lastUrl=location.href,handleUrlChange())}).observe(document.body,{childList:!0,subtree:!0}),handleUrlChange()})});async function getOffers(){const product=(await window.mulberryShop.getProductData(window.mulberryShop.getProductUrl())).product;if(theProduct=product,window.selectedVariant=product.variants.find(i=>i.id==window.mulberryShop.selectedVariantId)||product.variants[0],window.mainVariant=product.variants[0],window.selectedVariant?.price)return window.mulberry.core.getWarrantyOffer({detail:{...product,id:window.selectedVariant.id},title:product.title,id:window.selectedVariant.id,price:window.mainVariant.price})}async function initMulberry(){window.offers=await getOffers(),console.log("Mulberry initialized:",window.offers),window.pdpInline=await window.mulberry.inline.init({offers:window.offers,settings:window.mulberry.core.settings,selector:"#mulberry-container",layout:{ctaText:!0,faq:!1,input:"buttons",logo:!0,stacked:!0},onWarrantyToggle:warranty=>{warranty.isSelected?(window.selectedWarranty=warranty,window.productForWarranty=theProduct):(window.selectedWarranty=null,window.productForWarranty=null)}}),offers.length>0&&(mulberry.faq.init({coverage:mulberry.core.offers[0],settings:mulberry.core.settings}),document.querySelector("#whats-covered-faq").removeAttribute("style"),document.querySelector("#whats-covered-faq")?.addEventListener("click",function(){mulberry.faq.open()})),window.mulberry.modal.init({offers:window.offers,settings:window.mulberry.core.settings,onWarrantySelect:async warranty=>{console.log("Warranty selected from modal:",warranty),isAddingWarrantyInternally=!0;try{await closeCartDrawerIfOpen();const offer=warranty.offer||warranty;if(!offer){console.error("Invalid warranty object:",warranty);return}const result=await window.mulberryShop.getWarrantyVariant(offer);await wait(300);try{const resp=await window.mulberryShop.addWarrantyToCart(result.shopify_variant_id,{...theProduct,variantId:`${window.selectedVariant.id}`,quantity:1},offer),cart=await mulberryShop.cart.fetchCart();window.dispatchEvent(new CustomEvent("mulberry:buildCart",{detail:cart}))}catch(err){console.error("Add warranty error:",err)}console.log("Warranty added (modal)")}catch(err){console.error("Warranty add failed:",err)}finally{window.mulberry.modal.close(),isModalOpen=!1,setTimeout(()=>{isAddingWarrantyInternally=!1},500)}},onWarrantyDecline:()=>{console.log("Warranty declined"),window.mulberry.modal.close(),isModalOpen=!1}})}async function removeAndSyncWarranties(){try{const cart=await(await fetch("/cart.js")).json();cart.items=cart.items.filter(item=>item?.properties?._variantId!=="sectional");const newCart=await mulberryShop.removeDetachedWarranty(cart),data=await mulberryShop.cart.syncQuantities(newCart);console.log(cart),console.log(data),location.pathname==="/cart"&&cart.total_price!=data.total_price&&location.reload()}catch(err){console.error("Cart sync error:",err)}}document.addEventListener("mulberry-shopify:warranty-added",()=>{location.pathname==="/cart"&&location.reload()}); 2//# sourceMappingURL=/cdn/shop/t/69/assets/mulberry.js.map?v=57209738013898075381790175733
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.