PageSourceSearch

https://mamaearth.in/cdn/shop/t/80/assets/copy-code.js?v=50500376356668477671789554704

js mamaearth.in collected 2026-09-24 10:18:49 UTC 168,531 bytes, 41 lines download raw bytes

1(function(){function applyCouponCustomerHeader(headers){const customerId=window.__copyCodeCouponUi&&window.__copyCodeCouponUi.customerId;return customerId&&(headers["X-Customer-Id"]=customerId),headers}const COUPONS_NS="__copyCodeCoupons";window[COUPONS_NS]||(window[COUPONS_NS]={listenersAttached:!1,loadInFlight:!1,pendingReload:!1,lastCartData:null,debounceTimer:null,couponSheetData:{},couponSheetUiAttached:!1,manualHeightListenerAttached:!1,lastRenderedHtml:"",lastRenderKey:"",lastCouponList:null,lastAppliedCode:"",lastCountText:"",widgetLastHtml:"",widgetLastKey:"",couponListRequestId:0,couponCheckInProgress:!1,couponRemovalBarrier:null,discountRevalidateRequestId:0,discountRevalidateInFlight:!1,discountRevalidateDebounceTimer:null,couponCelebration:null,couponCelebrationTimer:null,couponCelebrationPendingCart:null,manualCouponCelebration:null,manualCouponCelebrationTimer:null,manualInputCardScrollLock:!1,manualCouponCarouselRenderedFor:"",manualCouponCelebrationShown:!1,manualCouponError:"",popupInputCelebration:null,popupInputCelebrationTimer:null,popupCardCelebration:null,popupCardCelebrationTimer:null,couponSuccessAssetsPreloaded:!1,popupInputError:"",popupCardError:null,popupApplySource:null,viewAllPopupListenersAttached:!1,couponApiCartSnapshot:null,couponSnapshotRefreshInFlight:!1,couponSnapshotRefreshPromise:null,couponSnapshotRefreshedAt:0,pendingApplyCompositionChanged:!1,splitLineNormalizationInFlight:!1,lastSplitLineNormalizationSignature:"",highValueCartDeferForCoupon:!1,highValueCartLastToPayCents:null,highValueCartLastOrderTotalCents:null,highValueCartLastBlocked:!1,highValueCartHasSynced:!1,highValueCartDomGeneration:0,highValueCartLastAppliedGeneration:-1});const COUPON_APPLY_CELEBRATION_MS=3e3,COUPON_LIST_CACHE_KEY="applied_coupon_list_cache",COLD_START_REVALIDATE_KEY="coupon_cold_start_revalidated",CART_RECOVERY_RELOAD_KEY="coupon_cart_recovery_reloaded",COUPON_TICK_ICON_URL="https://cdn.shopify.com/s/files/1/0721/7558/3279/files/tickGreenCircle.svg",state=window[COUPONS_NS];state.couponSheetData||(state.couponSheetData={}),typeof state.couponSheetUiAttached>"u"&&(state.couponSheetUiAttached=!1),typeof state.discountRevalidateRequestId>"u"&&(state.discountRevalidateRequestId=0),typeof state.discountRevalidateInFlight>"u"&&(state.discountRevalidateInFlight=!1),typeof state.manualCouponCelebration>"u"&&(state.manualCouponCelebration=null),typeof state.manualCouponCelebrationTimer>"u"&&(state.manualCouponCelebrationTimer=null),typeof state.manualInputCardScrollLock>"u"&&(state.manualInputCardScrollLock=!1),typeof state.manualCouponCarouselRenderedFor>"u"&&(state.manualCouponCarouselRenderedFor=""),typeof state.manualCouponCelebrationShown>"u"&&(state.manualCouponCelebrationShown=!1),typeof state.manualCouponError>"u"&&(state.manualCouponError=""),typeof state.popupInputCelebration>"u"&&(state.popupInputCelebration=null),typeof state.popupInputCelebrationTimer>"u"&&(state.popupInputCelebrationTimer=null),typeof state.popupCardCelebration>"u"&&(state.popupCardCelebration=null),typeof state.popupCardCelebrationTimer>"u"&&(state.popupCardCelebrationTimer=null),typeof state.couponSuccessAssetsPreloaded>"u"&&(state.couponSuccessAssetsPreloaded=!1),typeof state.popupInputError>"u"&&(state.popupInputError=""),typeof state.popupCardError>"u"&&(state.popupCardError=null),typeof state.popupApplySource>"u"&&(state.popupApplySource=null),typeof state.viewAllPopupListenersAttached>"u"&&(state.viewAllPopupListenersAttached=!1),typeof state.couponApiCartSnapshot>"u"&&(state.couponApiCartSnapshot=null),typeof state.couponSnapshotRefreshInFlight>"u"&&(state.couponSnapshotRefreshInFlight=!1),typeof state.couponSnapshotRefreshPromise>"u"&&(state.couponSnapshotRefreshPromise=null),typeof state.couponSnapshotRefreshedAt>"u"&&(state.couponSnapshotRefreshedAt=0),typeof state.pendingApplyCompositionChanged>"u"&&(state.pendingApplyCompositionChanged=!1),typeof state.splitLineNormalizationInFlight>"u"&&(state.splitLineNormalizationInFlight=!1),typeof state.lastSplitLineNormalizationSignature>"u"&&(state.lastSplitLineNormalizationSignature=""),typeof state.orphanFreeItemCheckInFlight>"u"&&(state.orphanFreeItemCheckInFlight=!1),typeof state.orphanFreeItemCartCleared>"u"&&(state.orphanFreeItemCartCleared=!1),typeof state.unknownDiscountStripInFlight>"u"&&(state.unknownDiscountStripInFlight=!1),typeof state.unknownDiscountStripped>"u"&&(state.unknownDiscountStripped=!1),typeof state.coldStartRevalidateDone>"u"&&(state.coldStartRevalidateDone=!1),typeof state.highValueCartDeferForCoupon>"u"&&(state.highValueCartDeferForCoupon=!1),typeof state.highValueCartLastToPayCents>"u"&&(state.highValueCartLastToPayCents=null),typeof state.highValueCartLastOrderTotalCents>"u"&&(state.highValueCartLastOrderTotalCents=null),typeof state.highValueCartLastBlocked>"u"&&(state.highValueCartLastBlocked=!1),typeof state.highValueCartHasSynced>"u"&&(state.highValueCartHasSynced=!1),typeof state.highValueCartDomGeneration>"u"&&(state.highValueCartDomGeneration=0),typeof state.highValueCartLastAppliedGeneration>"u"&&(state.highValueCartLastAppliedGeneration=-1);try{const storedDiscountForSnapshot=localStorage.getItem("applied_discount");if(storedDiscountForSnapshot){const parsedSnapshot=JSON.parse(storedDiscountForSnapshot);parsedSnapshot&&parsedSnapshot.updatedCart&&(state.couponApiCartSnapshot=parsedSnapshot.updatedCart),parsedSnapshot&&parsedSnapshot.timestamp&&(state.couponSnapshotRefreshedAt=parsedSnapshot.timestamp)}}catch{}restoreCouponListFromPersistentCache(),typeof window.couponCheckInProgress>"u"&&(window.couponCheckInProgress=!1);let isLoadingCoupons=!1,lastCartData=state.lastCartData;function startCartActionLoader(preferredScope,fromElement){var scope=null;return preferredScope&&(scope=preferredScope),window.HdtCartLoader&&typeof window.HdtCartLoader.getScope=="function"&&(scope=scope||window.HdtCartLoader.getScope(fromElement)),scope||(document.getElementById("CartDrawer")&&document.getElementById("CartDrawer").hasAttribute("open")?scope="cart-drawer":
1document.getElementById("hdt-page-cart")&&(scope="cart-page")),scope?(window.HdtCartLoader&&typeof window.HdtCartLoader.start=="function"?window.HdtCartLoader.start(scope):document.dispatchEvent(new CustomEvent("theme:loading:doing",{bubbles:!0,detail:{scope,fromElement}})),scope):null}function getPopupCartLoaderScope(){return document.getElementById("hdt-page-cart")?"cart-page":"cart-drawer"}function startPopupOverlayLoader(){const root=document.getElementById("coupon_view_all_root");if(!root)return;const overlay=root.querySelector(".coupon-full-overlay");overlay&&(overlay.classList.add("is-busy"),overlay.setAttribute("aria-busy","true"))}function endPopupOverlayLoader(){const root=document.getElementById("coupon_view_all_root");if(!root)return;const overlay=root.querySelector(".coupon-full-overlay");overlay&&(overlay.classList.remove("is-busy"),overlay.removeAttribute("aria-busy"))}function endCartActionLoader(scope){scope&&(window.HdtCartLoader&&typeof window.HdtCartLoader.end=="function"?window.HdtCartLoader.end(scope):document.dispatchEvent(new CustomEvent("theme:loading:done",{bubbles:!0,detail:{scope}})))}const DEBOUNCE_DELAY=800;function cacheCartData(cart){!cart||typeof cart!="object"||!Array.isArray(cart.items)||(state.cartCacheEpoch=(state.cartCacheEpoch||0)+1,lastCartData=cart,state.lastCartData=cart)}function getCouponUiRoots(){return Array.from(document.querySelectorAll("[data-copy-code-root]"))}function getCouponUiParts(root){return{root,container:root.querySelector("[data-coupons-container]"),countText:root.querySelector("[data-offer-count-text]")}}function getAllCouponUiParts(){return getCouponUiRoots().map(getCouponUiParts).filter(function(p){return p.container&&p.countText})}function getManualCouponFields(root){if(!root)return null;const card=root.querySelector(".coupon-input-card");return{inputField:root.querySelector(".manual-coupon-code"),codeDisplay:root.querySelector(".manual-coupon-display"),applyButton:root.querySelector(".manual-apply-btn"),errorEl:root.querySelector("[data-manual-coupon-error]"),card}}function syncManualApplyButtonStyle(fields){if(!fields||!fields.applyButton)return;const isRemove=fields.applyButton.classList.contains("cpnBtn-remove");fields.applyButton.classList.toggle("cpnBtn-disabled",!1),isRemove||fields.applyButton.classList.add("cpnBtn")}function clearManualCouponError(fields){fields&&(state.manualCouponError="",fields.inputField&&fields.inputField.classList.remove("coupon-input--error"),fields.errorEl&&(fields.errorEl.hidden=!0,fields.errorEl.innerHTML=""),syncManualApplyButtonStyle(fields))}function setManualCouponError(fields,message){!fields||!message||(state.manualCouponError=message,fields.inputField&&fields.inputField.classList.add("coupon-input--error"),fields.errorEl&&(fields.errorEl.hidden=!1,String(message).trim().split(/\s+/).filter(Boolean).length>6?fields.errorEl.innerHTML='<marquee class="manual-coupon-error-marquee" direction="left" scrollamount="3" width="100%">'+escapeHtml(message)+"</marquee>":fields.errorEl.textContent=message),syncManualApplyButtonStyle(fields))}function clearStaleCouponInputErrors(){state.manualCouponError="",state.popupInputError="",state.popupCardError=null,forEachManualCouponRoot(clearManualCouponError),clearPopupInputError()}function forEachManualCouponRoot(callback){getCouponUiRoots().forEach(function(root){const fields=getManualCouponFields(root);fields&&fields.inputField&&fields.applyButton&&callback(fields,root)})}function syncStaleCouponRoots(){!getAllCouponUiParts().filter(function(p){return!p.container.querySelector(".coupon-card")&&(p.container.querySelector("[data-coupon-skeleton]")||/loading offers/i.test(p.countText.textContent||""))}).length||state.loadInFlight||isLoadingCoupons||rehydrateCouponsFromCache()||loadCoupons(!1,state.lastCartData)}function debounce(func,delay,timerKey){return function(...args){state.debounceTimers||(state.debounceTimers={});const key=timerKey||"default";clearTimeout(state.debounceTimers[key]),state.debounceTimers[key]=setTimeout(()=>func.apply(this,args),delay)}}function createShimmerUI(){return`<div class="coupon-shimmer">${Array(3).fill(0).map(()=>`
2        <div class="coupon-shimmer-card">
3          <div class="coupon-shimmer-panel">
4            <div class="coupon-shimmer-content">
5              <div class="coupon-shimmer-title"></div>
6              <div class="coupon-shimmer-subtitle"></div>
7              <div class="coupon-shimmer-subtitle"></div>
8            </div>
9          </div>
10          <div class="coupon-shimmer-code-area">
11            <div class="coupon-shimmer-code"></div>
12            <div class="coupon-shimmer-button"></div>
13          </div>
14        </div>
15      `).join("")}</div>`}function getDeviceId(){if(window.getDeviceId)return window.getDeviceId();let deviceId=localStorage.getItem("shp_device_id");return deviceId||(deviceId="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(c){const r=Math.random()*16|0;return(c==="x"?r:r&3|8).toString(16)}),localStorage.setItem("shp_device_id",deviceId)),deviceId}function getCartToken(){const name="cart=",parts=decodeURIComponent(document.cookie).split("; ").find(c=>c.startsWith(name));return parts?parts.substring(name.length):""}function mapCartItemForCouponApi(item){return{id:item.id,properties:item.properties||{},quantity:item.quantity,variant_id:item.variant_id,key:item.key,title:item.title,price:item.price,original_price:item.original_price||item.price,presentment_price:item.price/100,discounted_price:item.discounted_price||item.price,line_price:item.line_price||item.price*item.quantity,original_line_price:item.original_line_price||item.price*item.quantity,total_discount:item.total_discount||0,discounts:item.discounts||[],sku:item.sku,grams:item.grams||0,vendor:item.vendor,taxable:item.taxable!==!1,product_id:item.product_id,product_has_only_default_variant:item.product_has_only_default_variant||!1,gift_card:item.gift_card||!1,final_price:item.final_price||item.price,final_line_price:item.final_line_price||item.price*item.quantity,url:item.url,featured_image:item.featured_image,image:item.image,handle:item.handle,requires_shipping:item.requires_shipping!==!1,product_type:item.product_type,product_title:item.product_title,product_description:item.product_description,variant_title:item.variant_title,variant_options:item.variant_options||[],options_with_values:item.options_with_values||[],line_level_discount_allocations:item.line_level_discount_allocations||[],line_level_total_discount:item.line_level_total_discount||0,quantity_rule:item.quantity_rule||{min:1,max:null,increment:1},has_components:item.has_components||!1,properties_stringified:JSON.stringify(item.properties||{})}}function transformCartForAPI(cartData){return{cart:{token:getCartToken(),note:cartData.note||"",attributes:cartData.attributes||{},original_total_price:cartData.original_total_price||cartData.total_price||0,total_price:cartData.total_price||0,total_discount:cartData.total_discount||0,total_weight:cartData.total_weight||0,item_count:cartData.item_count||0,items:(cartData.items||[]).map(mapCartItemForCouponApi),requires_shipping:cartData.requires_shipping!==!1,currency:cartData.currency||"INR",items_subtotal_price:cartData.items_subtotal_price||cartData.total_price||0,cart_level_discount_applications:cartData.cart_level_discount_applications||[],discount_codes:cartData.discount_codes||[],gokwik_source_channel:"shopify_checkout"}}}function getAppliedCouponUpdatedCart(){const storedDiscount=getDiscountFromStorage();return!storedDiscount||!storedDiscount.code?null:storedDiscount.updatedCart||state.couponApiCartSnapshot||null}
15function scaleLineItemToQuantity(item,quantity){const qty=Number(quantity)||0,unitFinal=Number(item.final_price!=null?item.final_price:item.discounted_price!=null?item.discounted_price:item.price)||0,unitOriginal=Number(item.original_price!=null?item.original_price:item.price)||unitFinal;return Object.assign({},item,{quantity:qty,line_price:unitFinal*qty,original_line_price:unitOriginal*qty,final_line_price:unitFinal*qty})}function sumDisplayCartLineTotals(items){let originalTotal=0,totalPrice=0;return(items||[]).forEach(function(item){originalTotal+=Number(item.original_line_price)||0,totalPrice+=Number(item.final_line_price!=null?item.final_line_price:item.line_price)||0}),{originalTotal,totalPrice,totalDiscount:Math.max(0,originalTotal-totalPrice)}}function mergeShopifyCartWithUpdatedCart(shopifyCart,updatedCart,storedDiscount){if(!shopifyCart||!updatedCart||!Array.isArray(updatedCart.items)||!updatedCart.items.length)return shopifyCart;const liveItems=shopifyCart.items||[],mergedItems=[],consumedLiveIndexes={};function getItemIdentity(item){return item?item.variant_id!=null&&item.variant_id!==""?"v:"+String(item.variant_id):item.id!=null&&item.id!==""?"id:"+String(item.id):"":""}updatedCart.items.forEach(function(snapItem){const snapIdentity=getItemIdentity(snapItem);if(!snapIdentity)return;const matchingIndexes=[];for(let i=0;i<liveItems.length;i++){if(consumedLiveIndexes[i])continue;getItemIdentity(liveItems[i])===snapIdentity&&matchingIndexes.push(i)}if(!matchingIndexes.length)return;let mergedQty=0;matchingIndexes.forEach(function(idx){consumedLiveIndexes[idx]=!0,mergedQty+=Number(liveItems[idx]&&liveItems[idx].quantity)||0}),mergedQty<=0&&(mergedQty=Number(snapItem.quantity)||0),mergedQty<=0&&(mergedQty=1);const firstLiveItem=liveItems[matchingIndexes[0]];mergedItems.push(Object.assign(scaleLineItemToQuantity(snapItem,mergedQty),{key:firstLiveItem&&firstLiveItem.key,id:firstLiveItem&&firstLiveItem.id!=null?firstLiveItem.id:snapItem.id}))}),liveItems.forEach(function(liveItem,idx){consumedLiveIndexes[idx]||mergedItems.push(liveItem)});let itemCount=0;mergedItems.forEach(function(item){itemCount+=item.quantity||0});const lineTotals=sumDisplayCartLineTotals(mergedItems),snapshotFresh=isCouponSnapshotFresh(updatedCart,shopifyCart),couponCode=storedDiscount&&storedDiscount.code,displayCart=Object.assign({},shopifyCart,{note:updatedCart.note!=null?updatedCart.note:shopifyCart.note||"",attributes:shopifyCart.attributes||updatedCart.attributes||{},original_total_price:snapshotFresh&&updatedCart.original_total_price!=null?updatedCart.original_total_price:lineTotals.originalTotal,total_price:snapshotFresh&&updatedCart.total_price!=null?updatedCart.total_price:lineTotals.totalPrice,total_discount:snapshotFresh&&updatedCart.total_discount!=null?updatedCart.total_discount:lineTotals.totalDiscount,total_weight:shopifyCart.total_weight||updatedCart.total_weight||0,item_count:itemCount||shopifyCart.item_count,items:mergedItems,requires_shipping:updatedCart.requires_shipping!==!1,currency:updatedCart.currency||shopifyCart.currency||"INR",items_subtotal_price:snapshotFresh&&updatedCart.items_subtotal_price!=null?updatedCart.items_subtotal_price:lineTotals.totalPrice,cart_level_discount_applications:[],discount_codes:couponCode?[{code:couponCode,applicable:!0}]:[],discount:updatedCart.discount||storedDiscount&&storedDiscount.data||null,_displaySource:"updatedCart"});return updatedCart.overwritten_automatic_discount&&(displayCart.overwritten_automatic_discount=updatedCart.overwritten_automatic_discount),updatedCart.payment_offer_discount!=null&&(displayCart.payment_offer_discount=updatedCart.payment_offer_discount),displayCart}function getDisplayCart(shopifyCartHint){const shopifyCart=shopifyCartHint&&typeof shopifyCartHint.item_count<"u"?shopifyCartHint:state.lastCartData||lastCartData;if(!shopifyCart)return null;const storedDiscount=getDiscountFromStorage(),updatedCart=getAppliedCouponUpdatedCart();return storedDiscount&&storedDiscount.code&&updatedCart&&Array.isArray(updatedCart.items)&&updatedCart.items.length?mergeShopifyCartWithUpdatedCart(shopifyCart,updatedCart,storedDiscount):shopifyCart}function buildLinePropertiesSignature(item){if(!item||!item.properties)return"{}";
15try{return JSON.stringify(item.properties)}catch{return"{}"}}function maybeNormalizeSplitPaidLines(shopifyCart){if(!shopifyCart||!Array.isArray(shopifyCart.items)||!shopifyCart.items.length||state.splitLineNormalizationInFlight||!getDiscountFromStorage()?.code)return!1;const groups={};shopifyCart.items.forEach(function(item){if(!item||!item.key)return;const unitFinal=Number(item.final_price!=null?item.final_price:item.discounted_price!=null?item.discounted_price:item.price)||0;if(unitFinal<=0)return;const variantId=item.variant_id||item.id;if(!variantId)return;const groupKey=String(variantId)+"|"+unitFinal+"|"+buildLinePropertiesSignature(item);groups[groupKey]||(groups[groupKey]=[]),groups[groupKey].push(item)});const updates={},signatureParts=[];if(Object.keys(groups).forEach(function(groupKey){const lines=groups[groupKey];if(!lines||lines.length<2)return;let totalQty=0;lines.forEach(function(line){totalQty+=Number(line.quantity)||0}),!(totalQty<=0)&&(lines.forEach(function(line,idx){updates[line.key]=idx===0?totalQty:0}),signatureParts.push(groupKey+":"+lines.map(function(line){return String(line.key)+"="+(Number(line.quantity)||0)}).join(",")))}),!Object.keys(updates).length)return!1;const signature=signatureParts.sort().join("||");if(!signature||state.lastSplitLineNormalizationSignature===signature)return!1;state.lastSplitLineNormalizationSignature=signature,state.splitLineNormalizationInFlight=!0;const updatesArray=[];return shopifyCart.items.forEach(function(item,idx){!item||!item.key||(updates[item.key]!=null?updatesArray[idx]=updates[item.key]:updatesArray[idx]=item.quantity||0)}),console.log("[Cart] Merging split paid lines:",updatesArray),fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({updates:updatesArray})}).then(function(res){if(!res.ok)throw new Error("Failed to normalize split paid lines");return res.json()}).then(function(updatedCart){!updatedCart||typeof updatedCart!="object"||(cacheCartData(updatedCart),setTimeout(function(){document.dispatchEvent(new CustomEvent("cart:refresh",{detail:{cart:updatedCart}}))},50))}).catch(function(err){console.warn("Split-line normalization failed:",err)}).finally(function(){setTimeout(function(){state.splitLineNormalizationInFlight=!1},300)}),!0}function buildCouponListApiPayload(cartData){const transformed=transformCartForAPI(cartData);return transformed.cart.discount_codes=[],transformed.cart.cart_level_discount_applications=[],transformed}function saveCouponListCache(coupons){if(!(!coupons||!coupons.length))try{localStorage.setItem(COUPON_LIST_CACHE_KEY,JSON.stringify({coupons,ts:Date.now()}))}catch{}}function getCouponListCache(){try{const raw=localStorage.getItem(COUPON_LIST_CACHE_KEY);if(!raw)return null;const parsed=JSON.parse(raw);return!parsed||!Array.isArray(parsed.coupons)||!parsed.coupons.length?null:parsed.coupons}catch{return null}}function clearCouponListCache(){try{localStorage.removeItem(COUPON_LIST_CACHE_KEY)}catch{}}function resetCouponListCache(){state.lastCouponList=null,state.lastAppliedCode="",state.lastRenderKey="",state.lastRenderedHtml="",state.lastCountText="",state.viewAllCoupons=[],clearCouponListCache()}function beginCouponRemovalBarrier(){state.couponListRequestId+=1;let release;return state.couponRemovalBarrier=new Promise(function(resolve){release=resolve}),release}function endCouponRemovalBarrier(release){typeof release=="function"&&release(),state.couponRemovalBarrier=null}function isCartCompositionUnchanged(cartBefore,cartAfter){if(!cartBefore||!cartAfter||!Array.isArray(cartBefore.items)||!Array.isArray(cartAfter.items)||cartBefore.items.length!==cartAfter.items.length||cartBefore.item_count!==cartAfter.item_count)return!1;const buildMap=function(items){const map={};return items.forEach(function(item){const key=String(item.variant_id||item.id);map[key]=(map[key]||0)+(item.quantity||0)}),map},beforeMap=buildMap(cartBefore.items),afterMap=buildMap(cartAfter.items),beforeKeys=Object.keys(beforeMap).sort(),afterKeys=Object.keys(afterMap).sort();if(beforeKeys.length!==afterKeys.length)return!1;for(let i=0;i<beforeKeys.length;i++)if(beforeKeys[i]!==afterKeys[i]||beforeMap[beforeKeys[i]]!==afterMap[afterKeys[i]])return!1;return!0}
15function reRenderCouponsFromCacheAfterRemove(){if(!state.lastCouponList||!state.lastCouponList.length)return!1;const storeCarouselCoupons=state.lastCouponList.filter(function(coupon){return String(coupon&&coupon.offerType||"").toLowerCase()==="store_offer"});return state.lastAppliedCode="",state.lastRenderKey="",renderCouponsList(state.lastCouponList,storeCarouselCoupons,""),!0}function restoreCouponListFromPersistentCache(){if(state.lastCouponList&&state.lastCouponList.length)return state.lastCouponList;const cached=getCouponListCache();return cached&&cached.length?(state.lastCouponList=cached,cached):null}function isCouponSnapshotFresh(snapshot,cartData){if(!snapshot||!Array.isArray(snapshot.items)||!snapshot.items.length)return!1;const liveItems=cartData&&cartData.items?cartData.items:[];return!liveItems.length||liveItems.length!==snapshot.items.length?!1:liveItems.every(function(liveItem){const snapItem=snapshot.items.find(function(s){return s.variant_id===liveItem.variant_id||String(s.id)===String(liveItem.id)});return snapItem&&Number(snapItem.quantity)===Number(liveItem.quantity)})}async function fetchCouponsFromAPI(cartData){const requestId=++state.couponListRequestId;try{const deviceId=getDeviceId(),transformedCart=buildCouponListApiPayload(cartData),headers=applyCouponCu
15stomerHeader({"x-source":"web-app","x-platform":"web","x-device-id":deviceId,"Content-Type":"application/json"}),response=await fetch("https://api-v1.mamaearth.in/v1/coupons/list",{method:"POST",headers,body:JSON.stringify(transformedCart)});if(requestId!==state.couponListRequestId)return null;if(!response.ok)throw new Error("Failed to fetch coupons");const result=await response.json();return requestId!==state.couponListRequestId?null:!result.success||!Array.isArray(result.data)?[]:result.data.filter(function(item){if(!item)return!1;const t=String(item.offerType||"").toLowerCase();return t==="store_offer"||t==="payment_offer"})}catch(error){return requestId!==state.couponListRequestId?null:(console.error("Error fetching coupons:",error),[])}}function escapeHtml(text){const map={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};return String(text).replace(/[&<>"']/g,function(m){return map[m]})}function escapeJS(text){return String(text).replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r")}function couponSanitizeUrl(url){const u=String(url||"").trim();return u&&(/^https?:\/\//i.test(u)||u.startsWith("/"))?u:""}function getCouponSavingsLine(coupon){const raw=coupon.savingsMessage||coupon.savings_message||coupon.highlightMessage||coupon.highlight_message||coupon.offerHighlight||coupon.offer_highlight||coupon.extraSavingText||coupon.extra_saving_text||coupon.savingsText||coupon.savings_text||coupon.subtitle||coupon.sub_title||coupon.subTitle||"";return String(raw||"").trim()}function isCouponSaveLine(text){const s=String(text||"").trim();return s?/^save\b/i.test(s)||/\bwith this offer\b/i.test(s)||/\bwith this code\b/i.test(s):!1}function resolveCouponSavingsLine(coupon){const dedicated=getCouponSavingsLine(coupon);if(dedicated)return dedicated;const msg=String(coupon.message||"").trim();return isCouponSaveLine(msg)?msg:""}function resolveCouponDisplayMessage(coupon,savingsLine){const msg=String(coupon.message||"").trim();return!msg||savingsLine&&msg===savingsLine||savingsLine&&isCouponSaveLine(msg)?"":msg}function formatCouponSavingsLineHtml(savingsLine){const s=String(savingsLine||"").trim();if(!s)return"";const ranges=[],amountRe=/(?:₹|\u20B9|Rs\.?\s*|INR\s*)[\d,]+(?:\.\d+)?/gi;let match;for(;(match=amountRe.exec(s))!==null;)ranges.push({start:match.index,end:match.index+match[0].length,text:match[0]});if(!ranges.length&&/^save\b/i.test(s)){const saveMatch=s.match(/^save\s+((?:₹|\u20B9|Rs\.?\s*|INR\s*)?[\d,]+(?:\.\d+)?)/i);if(saveMatch&&saveMatch.index!=null&&saveMatch[1]){const start=saveMatch.index+saveMatch[0].length-saveMatch[1].length;ranges.push({start,end:start+saveMatch[1].length,text:saveMatch[1]})}}if(!ranges.length)return escapeHtml(s);ranges.sort(function(a,b){return a.start-b.start});let html="",lastIndex=0;return ranges.forEach(function(range){range.start<lastIndex||(html+=escapeHtml(s.slice(lastIndex,range.start)),html+='<strong class="coupon-savings__amount">'+escapeHtml(range.text)+"</strong>",lastIndex=range.end)}),html+=escapeHtml(s.slice(lastIndex)),html}function isCouponCelebrationActive(){return!!(state.couponCelebration&&Date.now()<state.couponCelebration.until)}function isCouponEntryValid(couponEntry){return!!(couponEntry&&couponEntry.isValid===!0)}function findCouponEntryInApplyResult(result,code){const normalizedCode=String(code||"").toLowerCase();return normalizedCode&&(result&&result.data&&Array.isArray(result.data.coupons)?result.data.coupons:[]).find(function(c){return String(c.code||c.title||"").toLowerCase()===normalizedCode})||null}function resolveValidAppliedCoupon(result,code){const entry=findCouponEntryInApplyResult(result,code);return isCouponEntryValid(entry)?entry:null}function findInvalidCouponEntry(result,code){const entry=findCouponEntryInApplyResult(result,code);return!entry||isCouponEntryValid(entry)?null:entry}function clearAllCouponApplyCelebrations(){state.couponCelebrationTimer&&(clearTimeout(state.couponCelebrationTimer),state.couponCelebrationTimer=null);const carouselCode=state.couponCelebration&&state.couponCelebration.code;state.couponCelebration=null,state.couponCelebrationPendingCart=null,carouselCode&&hideCouponApplyCelebration(carouselCode),state.manualCouponCelebrationTimer&&(clearTimeout(state.manualCouponCelebrationTimer),state.manualCouponCelebrationTimer=null),state.manualCouponCelebration=null,state.manualInputCardScrollLock=!1,state.manualCouponCarouselRenderedFor="",state.manualCouponCelebrationShown=!1,hideManualCouponCelebration(),state.popupInputCelebrationTimer&&(clearTimeout(state.popupInputCelebrationTimer),state.popupInputCelebrationTimer=null),state.popupCardCelebrationTimer&&(clearTimeout(state.popupCardCelebrationTimer),state.popupCardCelebrationTimer=null),hidePopupInputCelebration(),state.popupCardCelebration&&state.popupCardCelebration.code&&hidePopupCardCelebration(state.popupCardCelebration.code),state.popupInputCelebration=null,state.popupCardCelebration=null}function formatCouponCelebrationSavings(discountData,savingsLine){const fromLine=String(savingsLine||"").trim().match(/(?:₹|\u20B9|Rs\.?\s*|INR\s*)([\d,]+(?:\.\d+)?)/i);if(fromLine)return"\u20B9"+fromLine[1].replace(/,/g,"");const amt=Number(discountData&&discountData.total_discount);return isFinite(amt)&&amt>0?formatMoneyFromDiscountTotalPrice(amt)||"\u20B9"+amt.toFixed(2):""}const COUPON_SUCCESS_CLOSE_ICON='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M20.4894 3.51075C15.8086 -1.17002 8.19199 -1.17048 3.51075 3.51075C-1.17048 8.19199 -1.17002 15.8081 3.51075 20.4894C8.19153 25.1706 15.8081 25.1706 20.4894 20.4894C25.1701 15.8081 25.1701 8.19153 20.4894 3.51075ZM16.7344 16.7344C16.3738 17.095 15.7892 17.095 15.4286 16.7344L12.0001 13.3059L8.40855 16.8974C8.04793 17.258 7.46335 17.258 7.10272 16.8974C6.74209 16.5368 6.74209 15.9522 7.10272 15.5916L10.6942 12.0001L7.26572 8.57155C6.90509 8.21092 6.90509 7.62588 7.26572 7.26572C7.62635 6.90509 8.21092 6.90509 8.57155 7.26572L12.0001 10.6942L15.2651 7.42918C15.6257 7.06855 16.2103 7.06855 16.5709 7.42918C16.9316 7.78981 16.9316 8.37438 16.5709 8.73501L13.3059 12.0001L16.7344 15.4286C17.095 15.7892 17.095 16.3738 16.7344 16.7344Z" fill="#CCCCCC"/></svg>';
15function ensureCouponSuccessPopup(){patchCartDrawerForCouponSheets();let root=document.getElementById("coupon_success_popup_root");if(root)return bindCouponSheetPointerGuards(root),mountCouponSheetToBody(root);root=document.createElement("div"),root.id="coupon_success_popup_root",root.hidden=!0,root.innerHTML='<div class="coupon-success-overlay" aria-hidden="true" role="presentation"><div class="coupon-success-backdrop" tabindex="-1"></div><div class="coupon-success-float"><button type="button" class="coupon-success-close" aria-label="Close">'+COUPON_SUCCESS_CLOSE_ICON+'</button><div class="coupon-success-popup" role="dialog" aria-modal="true" aria-labelledby="coupon_success_headline"><div class="coupon-success-popup__anim"><span class="coupon-success-popup__tick" aria-hidden="true"></span><p class="coupon-success-popup__congrats">Congratulations</p><p class="coupon-success-popup__headline" id="coupon_success_headline" data-success-headline></p></div><div class="coupon-success-popup__cashback" data-success-cashback hidden><span class="coupon-success-popup__cashback-text" data-success-cashback-text></span></div></div></div></div>',mountCouponSheetToBody(root),bindCouponSheetPointerGuards(root);const overlay=root.querySelector(".coupon-success-overlay"),backdrop=root.querySelector(".coupon-success-backdrop"),closeBtn=root.querySelector(".coupon-success-close");return overlay.addEventListener("click",function(e){e.target===backdrop&&dismissCouponSuccessPopup()}),closeBtn.addEventListener("click",function(e){e.stopPropagation(),dismissCouponSuccessPopup()}),root}function buildCouponSuccessHeadline(code,savedText){const upper=String(code||"").toUpperCase();return upper?savedText?upper+" applied and you saved "+savedText:upper+" applied successfully":savedText?"Coupon applied and you saved "+savedText:"Coupon applied successfully"}function resolveCouponSuccessCashback(discountData){const direct=discountData&&(discountData.cashback_data||discountData.cashbackData);return resolveCashbackBannerContent(direct||getCashbackDataFromCart(state.lastCartData))}function openCouponSuccessPopup(opts){const options=opts||{},root=ensureCouponSuccessPopup(),overlay=root.querySelector(".coupon-success-overlay");if(!overlay)return!1;const headlineEl=root.querySelector("[data-success-headline]");headlineEl&&(headlineEl.textContent=buildCouponSuccessHeadline(options.code,options.savedText));const cashbackEl=root.querySelector("[data-success-cashback]"),cashbackTextEl=root.querySelector("[data-success-cashback-text]");if(cashbackEl&&cashbackTextEl){const cashback=resolveCouponSuccessCashback(options.discountData);cashback&&cashback.html?(cashbackTextEl.innerHTML=cashback.html,cashbackEl.hidden=!1):cashback&&cashback.text?(cashbackTextEl.textContent=cashback.text,cashbackEl.hidden=!1):(cashbackTextEl.textContent="",cashbackEl.hidden=!0)}return overlay.dataset.source=options.source||"",overlay.classList.contains("is-open")||(root.hidden=!1,overlay.style.display="flex",overlay.setAttribute("aria-hidden","false"),window.requestAnimationFrame(function(){overlay.classList.add("is-open")}),syncCartDrawerFocusTrapForCouponSheets()),!0}function closeCouponSuccessPopup(source){const root=document.getElementById("coupon_success_popup_root");if(!root)return;const overlay=root.querySelector(".coupon-success-overlay");if(!overlay||!overlay.classList.contains("is-open")||source&&overlay.dataset.source!==source)return;overlay.classList.remove("is-open");const popup=root.querySelector(".coupon-success-popup");let finished=!1;function finishClose(ev){ev&&ev.propertyName&&ev.propertyName!=="transform"||finished||(finished=!0,popup&&popup.removeEventListener("transitionend",finishClose),overlay.classList.contains("is-open")||(overlay.setAttribute("aria-hidden","true"),overlay.style.display="none",overlay.dataset.source="",root.hidden=!0,syncCartDrawerFocusTrapForCouponSheets()))}popup&&popup.addEventListener("transitionend",finishClose),window.setTimeout(finishClose,400)}function endActiveCouponCelebrationsNow(){const now=Date.now();state.couponCelebration&&(state.couponCelebration.until=now,scheduleCouponCelebrationEnd()),state.manualCouponCelebration&&(state.manualCouponCelebration.until=now,scheduleManualCouponCelebrationEnd()),state.popupInputCelebration&&(state.popupInputCelebration.until=now,schedulePopupInputCelebrationEnd()),state.popupCardCelebration&&(state.popupCardCelebration.until=now,schedulePopupCardCelebrationEnd())}function dismissCouponSuccessPopup(){closeCouponSuccessPopup(),endActiveCouponCelebrationsNow()}function preloadCouponSuccessAssets(){if(state.couponSuccessAssetsPreloaded||typeof window.Image!="function")return;const root=ensureCouponSuccessPopup();root&&(state.couponSuccessAssetsPreloaded=!0,[".coupon-success-popup__tick",".coupon-success-popup__anim"].forEach(function(selector){const el=root.querySelector(selector);if(!el)return;const bg=window.getComputedStyle(el).backgroundImage,match=/url\(\s*["']?(.*?)["']?\s*\)/.exec(bg||""),url=match&&match[1];if(!url||url==="none")return;const img=new Image;img.decoding="async",img.src=url}))}function schedulePreloadCouponSuccessAssets(){if(state.couponSuccessAssetsPreloaded)return;const run=function(){try{preloadCouponSuccessAssets()}catch(err){console.error("Error preloading coupon success assets:",err)}};typeof window.requestIdleCallback=="function"?window.requestIdleCallback(run,{timeout:2e3}):setTimeout(run,300)}function findCouponCardElement(code){const c=String(code||"").toLowerCase();return c?document.querySelector('.coupon-card[data-coupon-code="'+c+'"]'):null}function showCouponApplyCelebration(code,discountData,savingsLine){return openCouponSuccessPopup({source:"carousel",code,savedText:formatCouponCelebrationSavings(discountData,savingsLine),discountData})}function hideCouponApplyCelebration(){closeCouponSuccessPopup("carousel")}function getCarouselAppliedCodeForRender(storedAppliedCode){return isCouponCelebrationActive()||isManualCouponCelebrationActive()?"":storedAppliedCode||""}function carouselHasCouponCards(){const parts=getAllCouponUiParts();return parts.length>0&&parts.some(function(p){return p.container&&p.container.querySelector(".coupon-card")!==null})}function refreshManualCouponCarouselUi(coupons,storeCarouselCoupons,appliedCouponCode){const parts=getAllCouponUiParts();if(!parts.length)return!1;const carouselCoupons=storeCarouselCoupons||[],couponCount=carouselCoupons.length,newCountText="Available offer"+(couponCount>1?"s":"")+" for you ("+couponCount+")";
15return parts.forEach(function(p){p.countText&&p.countText.textContent!==newCountText&&(p.countText.textContent=newCountText),p.container&&p.container.setAttribute("aria-busy","false")}),coupons&&coupons.length&&(state.viewAllCoupons=coupons),state.viewAllAppliedCouponCode=appliedCouponCode||"",state.lastAppliedCode=appliedCouponCode||"",renderAvailableOffersWidget(coupons||state.viewAllCoupons||state.lastCouponList||[],carouselCoupons,appliedCouponCode),initManualCouponInput(),restoreManualCouponInput(),resumeManualCouponCelebrationAfterRender(),ensureManualCouponInputCardInView("auto"),!0}function orderCarouselCouponsWithAppliedFirst(coupons,appliedCode){if(!appliedCode||!coupons||!coupons.length)return coupons;const normalizedApplied=String(appliedCode).toLowerCase();let appliedIndex=-1;for(let i=0;i<coupons.length;i++)if(coupons[i]&&String(coupons[i].code||"").toLowerCase()===normalizedApplied){appliedIndex=i;break}if(appliedIndex<=0)return coupons;const ordered=coupons.slice();return ordered.unshift(ordered.splice(appliedIndex,1)[0]),ordered}function finalizeCouponApplyCelebration(opts){const options=opts||{},compositionChanged=options.compositionChanged===!0||state.pendingApplyCompositionChanged===!0;state.pendingApplyCompositionChanged=!1,options.syncPopupInput!==!1&&options.fromPopupTray&&syncViewAllPopupInputState(),options.cardCode&&hidePopupCardCelebration(options.cardCode),options.carouselCode&&hideCouponApplyCelebration(options.carouselCode),window.couponCheckInProgress=!1,state.couponCheckInProgress=!1;const applied=getDiscountFromStorage()?.code?.toLowerCase()||"";if(state.lastAppliedCode=applied,state.lastRenderKey="",compositionChanged)typeof window.loadCoupons=="function"&&window.loadCoupons(!0,state.lastCartData);else if(state.lastCouponList&&state.lastCouponList.length){const storeCarouselCoupons=state.lastCouponList.filter(function(coupon){return String(coupon&&coupon.offerType||"").toLowerCase()==="store_offer"});renderCouponsList(state.lastCouponList,storeCarouselCoupons,applied)}else typeof window.loadCoupons=="function"&&window.loadCoupons(!0,state.lastCartData);options.refreshPopupBody&&refreshViewAllPopupBodyIfOpen()}function scheduleCouponCelebrationEnd(){if(state.couponCelebrationTimer&&(clearTimeout(state.couponCelebrationTimer),state.couponCelebrationTimer=null),!state.couponCelebration)return;const remaining=Math.max(0,state.couponCelebration.until-Date.now()),code=state.couponCelebration.code;state.couponCelebrationTimer=setTimeout(async function(){const pendingCart=state.couponCelebrationPendingCart;if(state.couponCelebrationPendingCart=null,pendingCart)try{await refreshCart(pendingCart)}catch(refreshErr){console.error("Error refreshing cart after coupon celebration:",refreshErr)}state.couponCelebration=null,state.couponCelebrationTimer=null,finalizeCouponApplyCelebration({carouselCode:code})},remaining)}function resumeCouponCelebrationAfterRender(){const cel=state.couponCelebration;if(!cel||Date.now()>=cel.until)return;const storedCode=getDiscountFromStorage()?.code?.toLowerCase()||"";!storedCode||storedCode!==String(cel.code||"").toLowerCase()||(showCouponApplyCelebration(cel.code,cel.discountData,cel.savingsLine),scheduleCouponCelebrationEnd())}function isManualCouponCelebrationActive(){return!!(state.manualCouponCelebration&&Date.now()<state.manualCouponCelebration.until)}function showManualCouponCelebration(code,discountData,savingsLine){openCouponSuccessPopup({source:"manual",code,savedText:formatCouponCelebrationSavings(discountData,savingsLine),discountData})}function hideManualCouponCelebration(){closeCouponSuccessPopup("manual")}function scheduleManualCouponCelebrationEnd(){if(state.manualCouponCelebrationTimer&&(clearTimeout(state.manualCouponCelebrationTimer),state.manualCouponCelebrationTimer=null),!state.manualCouponCelebration)return;const remaining=Math.max(0,state.manualCouponCelebration.until-Date.now());state.manualCouponCelebrationTimer=setTimeout(function(){state.manualCouponCelebration=null,state.manualCouponCelebrationTimer=null,state.manualInputCardScrollLock=!1,state.manualCouponCarouselRenderedFor="",state.manualCouponCelebrationShown=!1,hideManualCouponCelebration(),window.couponCheckInProgress=!1,state.couponCheckInProgress=!1,typeof window.loadCoupons=="function"&&window.loadCoupons(!0)},remaining)}function showManualCouponCelebrationOnce(){const cel=state.manualCouponCelebration;if(!cel||Date.now()>=cel.until||state.manualCouponCelebrationShown)return!1;const storedCode=getDiscountFromStorage()?.code?.toLowerCase()||"";return!storedCode||storedCode!==String(cel.code||"").toLowerCase()||!document.querySelector(".coupon-input-card")?!1:(showManualCouponCelebration(cel.code,cel.discountData,cel.savingsLine),state.manualCouponCelebrationShown=!0,state.manualCouponCelebrationTimer||scheduleManualCouponCelebrationEnd(),!0)}function finishManualCouponApplyPresentation(){initManualCouponInput(),restoreManualCouponInput(),showManualCouponCelebrationOnce(),refreshAvailableOffersWidgetFromCache(),ensureManualCouponInputCardInView("auto")}function resumeManualCouponCelebrationAfterRender(){showManualCouponCelebrationOnce()&&ensureManualCouponInputCardInView("auto")}function scrollManualCouponInputCardIntoView(scrollBehavior){const behavior=scrollBehavior||"auto";
15getCouponUiRoots().forEach(function(root){const container=root.querySelector("[data-coupons-container]"),card=root.querySelector(".coupon-input-card");if(!container||!card)return;const maxScroll=Math.max(0,container.scrollWidth-container.clientWidth);let target=card.offsetLeft-12;target>maxScroll&&(target=maxScroll),target<0&&(target=0),container.scrollTo({left:target,behavior})})}function ensureManualCouponInputCardInView(scrollBehavior){!state.manualInputCardScrollLock&&!isManualCouponCelebrationActive()||requestAnimationFrame(function(){scrollManualCouponInputCardIntoView(scrollBehavior||"auto")})}function isViewAllPopupOpen(){const root=document.getElementById("coupon_view_all_root");if(!root||root.hidden)return!1;const overlay=root.querySelector(".coupon-full-overlay");return!!(overlay&&overlay.classList.contains("is-open"))}function getViewAllPopupElements(){const root=document.getElementById("coupon_view_all_root");return root?{root,input:root.querySelector("#viewall_coupon_code_input"),applyBtn:root.querySelector("#viewall_coupon_apply_btn"),inputWrap:root.querySelector(".coupon-full-input-wrap"),inputError:root.querySelector("[data-popup-input-error]"),body:root.querySelector("#coupon_full_body")}:null}function syncViewAllPopupAppliedCode(){const stored=getDiscountFromStorage();state.viewAllAppliedCouponCode=stored&&stored.code?String(stored.code).toLowerCase():""}function clearPopupInputError(){state.popupInputError="";const els=getViewAllPopupElements();!els||!els.inputError||(els.inputError.hidden=!0,els.inputError.innerHTML="")}function setPopupInputError(message){if(!message)return;state.popupInputError=String(message),state.popupApplySource="text";const els=getViewAllPopupElements();!els||!els.inputError||(els.inputError.hidden=!1,els.inputError.textContent=message)}function isPopupInputCelebrationActive(){return!!(state.popupInputCelebration&&Date.now()<state.popupInputCelebration.until)}function isPopupCardCelebrationActive(){return!!(state.popupCardCelebration&&Date.now()<state.popupCardCelebration.until)}function hidePopupInputCelebration(){closeCouponSuccessPopup("popup-input")}function showPopupInputCelebration(code,discountData,savingsLine){return openCouponSuccessPopup({source:"popup-input",code,savedText:formatCouponCelebrationSavings(discountData,savingsLine),discountData})}function renderOutsideCouponsFromCache(appliedCouponCode){if(!state.lastCouponList||!state.lastCouponList.length)return!1;const applied=appliedCouponCode!=null?String(appliedCouponCode).toLowerCase():getDiscountFromStorage()?.code?.toLowerCase()||"";state.lastAppliedCode=applied,state.lastRenderKey="";const storeCarouselCoupons=state.lastCouponList.filter(function(coupon){return String(coupon&&coupon.offerType||"").toLowerCase()==="store_offer"});return renderCouponsList(state.lastCouponList,storeCarouselCoupons,applied)}function scheduleOutsideCouponsLoadRetry(delayMs,cartHint){setTimeout(function(){typeof window.loadCoupons=="function"&&window.loadCoupons(!0,cartHint||state.lastCartData)},delayMs||150)}function finalizePopupTrayApplyWindow(opts){const options=opts||{};finalizeCouponApplyCelebration({fromPopupTray:!0,syncPopupInput:options.syncPopupInput,refreshPopupBody:options.refreshPopupBody,cardCode:options.cardCode,compositionChanged:options.compositionChanged})}function schedulePopupInputCelebrationEnd(){if(state.popupInputCelebrationTimer&&(clearTimeout(state.popupInputCelebrationTimer),state.popupInputCelebrationTimer=null),!state.popupInputCelebration)return;const remaining=Math.max(0,state.popupInputCelebration.until-Date.now());state.popupInputCelebrationTimer=setTimeout(function(){state.popupInputCelebration=null,state.popupInputCelebrationTimer=null,hidePopupInputCelebration(),finalizePopupTrayApplyWindow(),closeCouponViewAllSheet()},remaining)}function hidePopupCardCelebration(){closeCouponSuccessPopup("popup-card")}function showPopupCardCelebration(code,savingsLine){return openCouponSuccessPopup({source:"popup-card",code,savedText:formatCouponCelebrationSavings(null,savingsLine)})}function schedulePopupCardCelebrationEnd(){if(state.popupCardCelebrationTimer&&(clearTimeout(state.popupCardCelebrationTimer),state.popupCardCelebrationTimer=null),!state.popupCardCelebration)return;const remaining=Math.max(0,state.popupCardCelebration.until-Date.now()),code=state.popupCardCelebration.code;state.popupCardCelebrationTimer=setTimeout(function(){state.popupCardCelebration=null,state.popupCardCelebrationTimer=null,finalizePopupTrayApplyWindow({syncPopupInput
15:!1,refreshPopupBody:!0,cardCode:code}),closeCouponViewAllSheet()},remaining)}function clearPopupTrayCelebrations(){const hadPendingPopupApply=isPopupInputCelebrationActive()||isPopupCardCelebrationActive()||!!(state.popupInputCelebrationTimer||state.popupCardCelebrationTimer);state.popupInputCelebrationTimer&&(clearTimeout(state.popupInputCelebrationTimer),state.popupInputCelebrationTimer=null),state.popupCardCelebrationTimer&&(clearTimeout(state.popupCardCelebrationTimer),state.popupCardCelebrationTimer=null),state.popupInputCelebration&&(hidePopupInputCelebration(),state.popupInputCelebration=null),state.popupCardCelebration&&(hidePopupCardCelebration(state.popupCardCelebration.code),state.popupCardCelebration=null),hadPendingPopupApply&&finalizePopupTrayApplyWindow({syncPopupInput:!1})}function resumePopupTrayCelebrationsAfterRender(){const storedCode=getDiscountFromStorage()?.code?.toLowerCase()||"",inputCel=state.popupInputCelebration;inputCel&&Date.now()<inputCel.until&&storedCode&&storedCode===String(inputCel.code||"").toLowerCase()&&(showPopupInputCelebration(inputCel.code,inputCel.discountData,inputCel.savingsLine),schedulePopupInputCelebrationEnd());const cardCel=state.popupCardCelebration;cardCel&&Date.now()<cardCel.until&&storedCode&&storedCode===String(cardCel.code||"").toLowerCase()&&(showPopupCardCelebration(cardCel.code,cardCel.savingsLine),schedulePopupCardCelebrationEnd())}function syncViewAllPopupInputState(){const els=getViewAllPopupElements();if(!els||!els.input||!els.applyBtn)return;const stored=getDiscountFromStorage(),applied=stored&&stored.code?String(stored.code).toLowerCase():"",hasInputError=!!(state.popupInputError&&state.popupApplySource==="text");if(applied&&!hasInputError)els.input.value=applied.toUpperCase(),els.input.disabled=!0,els.applyBtn.textContent="Remove",els.applyBtn.classList.remove("is-disabled"),els.applyBtn.style.pointerEvents="auto";else if(!isPopupInputCelebrationActive()){els.input.disabled=!1,els.applyBtn.textContent="Apply";const empty=!String(els.input.value||"").trim();els.applyBtn.classList.toggle("is-disabled",empty),els.applyBtn.style.pointerEvents=empty?"none":"auto"}}function buildViewAllPopupBodyHtml(){const coupons=Array.isArray(state.viewAllCoupons)?state.viewAllCoupons:[],appliedCouponCode=String(state.viewAllAppliedCouponCode||getDiscountFromStorage()&&getDiscountFromStorage().code||"").toLowerCase(),paymentCoupons=[],storeCoupons=[];coupons.forEach(function(coupon){String(coupon.offerType||"").toLowerCase()==="payment_offer"?paymentCoupons.push(coupon):storeCoupons.push(coupon)});const bestCoupons=[],otherCoupons=[];storeCoupons.forEach(function(coupon){bestCoupons.length===0&&coupon.isApplicable!==!1?bestCoupons.push(coupon):otherCoupons.push(coupon)});let html="";return html+=renderCouponSection("Best offer",bestCoupons,appliedCouponCode),html+=renderCouponSection("Other offers",otherCoupons,appliedCouponCode),html+=renderCouponSection("Payment offers",paymentCoupons,appliedCouponCode),html||(html='<div class="coupon-full-empty">No offers available right now.</div>'),html}function refreshViewAllPopupBodyIfOpen(){const els=getViewAllPopupElements();!els||!els.body||!isViewAllPopupOpen()||(syncViewAllPopupAppliedCode(),els.body.innerHTML=buildViewAllPopupBodyHtml(),resumePopupTrayCelebrationsAfterRender())}function buildCouponCardFooterHTML(couponCode,isApplicable,isApplied){const upper=escapeHtml(String(couponCode||"").toUpperCase()),safeCode=escapeHtml(couponCode),safeJS=escapeJS(couponCode);return isApplied?'<div class="coupon-code-status"><span class="cpnCode">'+upper+'</span><span class="coupon-applied-status"><img class="coupon-applied-status__icon" src="'+COUPON_TICK_ICON_URL+`" width="12" height="12" alt="" aria-hidden="true">Applied</span></div><span class="cpnBtn cpnBtn-remove" onclick="window.removeCouponFn('`+safeJS+`', this)" data-code="`+safeCode+'">Remove</span>':isApplicable?'<span class="cpnCode">'+upper+`</span><span class="cpnBtn" onclick="window.applyCouponFn('`+safeJS+`', this)" data-code="`+safeCode+'">Apply</span>':'<span class="cpnCode">'+upper+'</span><span class="cpnBtn cpnBtn-disabled">Apply</span>'}function getCouponAdditionalDetailsBullets(coupon){const raw=coupon.additionalDetails||coupon.additional_details;return Array.isArray(raw)?raw.map(function(item){return String(item||"").trim()}
15).filter(Boolean):[]}function getCouponSheetDescription(coupon){const bullets=getCouponAdditionalDetailsBullets(coupon);return bullets.length?bullets[0]:""}function formatCouponMessageCurrency(text){const s=String(text||"").trim();return s?s.replace(/(?:₹|\u20B9)\s*([\d,]+(?:\.\d+)?)/gi,function(match,num){const n=parseFloat(String(num).replace(/,/g,""));return isFinite(n)?"\u20B9"+Math.round(n).toLocaleString("en-IN"):match}):""}function getCouponSheetActionMessage(coupon){const raw=String(coupon.message||coupon.applyMessage||"").trim();return formatCouponMessageCurrency(raw)}function renderCouponFullItemBulletsHtml(bullets){if(!bullets||!bullets.length)return"";let html='<ul class="coupon-full-item__bullets">';return bullets.forEach(function(line){html+="<li>"+escapeHtml(line)+"</li>"}),html+="</ul>",html}function splitCouponMessageToBullets(message){const s=String(message||"").trim();if(!s)return[];const byNl=s.split(/\r?\n/).map(function(x){return x.replace(/^\s*[•\-\*]\s*/,"").trim()}).filter(Boolean);if(byNl.length>1)return byNl;const one=byNl[0]||s;return one.indexOf("\u2022")!==-1?one.split("\u2022").map(function(x){return x.trim()}).filter(Boolean):[one]}function formatAppliedFooterSaveLine(savingsLine){let s=String(savingsLine||"").trim().replace(/^\s*[•\-\*]\s*/,"");return s?(s=s.replace(/\bwith this offer\b/gi,"with this code").replace(/\bthis offer\b/gi,"this code"),/^save\b/i.test(s)||(s="Save "+s.replace(/^save\s+/i,"")),s):""}function getCouponDetailsUrl(coupon){const fromApi=coupon.detailsUrl||coupon.details_url||coupon.termsUrl||coupon.terms_url||coupon.tncUrl||coupon.tnc_url||coupon.viewDetailsUrl||coupon.view_details_url||"",apiTrim=String(fromApi||"").trim();if(apiTrim)return couponSanitizeUrl(apiTrim);const fb=window.__copyCodeCouponUi&&window.__copyCodeCouponUi.viewDetailsFallbackUrl||"";return couponSanitizeUrl(fb)}function getCouponDetailsText(coupon){const raw=coupon.details||coupon.terms||coupon.longDescription||coupon.long_description||coupon.tncText||coupon.tnc_text||coupon.offerDetails||coupon.offer_details||"";return String(raw||"").trim()}function getCouponEligibilityHint(coupon){const raw=coupon.eligibilityMessage||coupon.eligibility_message||coupon.nonApplicableReason||coupon.non_applicable_reason||coupon.hint||coupon.howToApply||coupon.how_to_apply||coupon.cartHint||coupon.cart_hint||"",t=String(raw||"").trim();if(t)return t;const msg=String(coupon.message||"").trim();return msg||"Add eligible items to your cart to use this offer."}function mountCouponSheetToBody(root){return root&&document.body.appendChild(root),root}function isCouponSheetEventTarget(target){return!target||typeof target.closest!="function"?!1:!!(target.closest("#coupon_view_all_root")||target.closest("#coupon_offer_sheet_root")||target.closest("#coupon_success_popup_root"))}function patchCartDrawerForCouponSheets(){const drawer=document.getElementById("CartDrawer");if(!drawer||drawer.__couponSheetsPatched)return;drawer.__couponSheetsPatched=!0;const originalHide=drawer.hideForOutsideClickTarget?drawer.hideForOutsideClickTarget.bind(drawer):function(target){return!drawer.contains(target)},originalAllow=drawer.allowOutsideClickForTarget?drawer.allowOutsideClickForTarget.bind(drawer):function(){return!1};drawer.hideForOutsideClickTarget=function(target){return isCouponSheetEventTarget(target)?!1:originalHide(target)},drawer.allowOutsideClickForTarget=function(target){return isCouponSheetEventTarget(target)?!0:originalAllow(target)}}function syncCartDrawerFocusTrapForCouponSheets(){const drawer=document.getElementById("CartDrawer");if(!drawer)return;const trap=drawer.focusTrap;if(!trap||typeof trap.updateContainerElements!="function")return;const containers=[drawer];drawer.shadowRoot&&containers.push(drawer.shadowRoot);const viewAll=document.getElementById("coupon_view_all_root");viewAll&&!viewAll.hidden&&containers.push(viewAll);const offerSheet=document.getElementById("coupon_offer_sheet_root");offerSheet&&!offerSheet.hidden&&containers.push(offerSheet);const successPopup=document.getElementById("coupon_success_popup_root");successPopup&&!successPopup.hidden&&containers.push(successPopup),trap.updateContainerElements(containers
15)}function bindCouponSheetPointerGuards(root){!root||root.dataset.pointerGuardsBound==="true"||(root.dataset.pointerGuardsBound="true",["pointerdown","mousedown","touchstart","click"].forEach(function(evt){root.addEventListener(evt,function(e){e.stopPropagation()},{passive:!0})}))}function isCouponViewAllSheetOpen(){const root=document.getElementById("coupon_view_all_root");if(!root||root.hidden)return!1;const overlay=root.querySelector(".coupon-full-overlay");return!!(overlay&&overlay.classList.contains("is-open"))}function ensureCouponOfferSheet(){patchCartDrawerForCouponSheets();let root=document.getElementById("coupon_offer_sheet_root");if(root)return bindCouponSheetPointerGuards(root),mountCouponSheetToBody(root);root=document.createElement("div"),root.id="coupon_offer_sheet_root",root.hidden=!0,root.innerHTML='<div class="coupon-offer-sheet-overlay" aria-hidden="true" role="presentation"><div class="coupon-offer-sheet-backdrop" tabindex="-1"></div><div class="coupon-offer-sheet-float"><div class="coupon-offer-sheet-stack"><button type="button" class="coupon-offer-sheet-close" aria-label="Close"><span class="coupon-offer-sheet-close-icon" aria-hidden="true">&times;</span></button><div class="coupon-offer-sheet" role="dialog" aria-modal="true" aria-labelledby="coupon_offer_sheet_title"><div class="coupon-offer-sheet-inner"><h2 id="coupon_offer_sheet_title" class="coupon-offer-sheet-h2">Offer Details</h2><h3 class="coupon-offer-sheet-offer-title" data-sheet-offer-title></h3><p class="coupon-offer-sheet-desc" data-sheet-desc></p><div class="coupon-offer-sheet-code" data-sheet-code-display></div><a class="coupon-offer-sheet-external" data-sheet-external href="#" target="_blank" rel="noopener noreferrer" hidden>Full terms</a><hr class="coupon-offer-sheet-rule" aria-hidden="true"><div class="coupon-offer-sheet-action"><p class="coupon-offer-sheet-hint" data-sheet-hint></p><button type="button" class="coupon-offer-sheet-apply" data-sheet-apply></button></div><hr class="coupon-offer-sheet-rule" aria-hidden="true"><ul class="coupon-offer-sheet-foot"><li><span class="coupon-offer-sheet-check" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.5 4.5L6.5 11.5L2.5 7.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span>Other T&amp;C may apply</li><li><span class="coupon-offer-sheet-check" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.5 4.5L6.5 11.5L2.5 7.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span>This Offer is personalised for you</li></ul></div></div></div></div></div>',mountCouponSheetToBody(root),bindCouponSheetPointerGuards(root);const overlay=root.querySelector(".coupon-offer-sheet-overlay"),backdrop=root.querySelector(".coupon-offer-sheet-backdrop"),closeBtn=root.querySelector(".coupon-offer-sheet-close");return overlay.addEventListener("click",function(e){e.target===backdrop&&closeCouponOfferSheet()}),closeBtn.addEventListener("click",function(e){e.stopPropagation(),closeCouponOfferSheet()}),root.addEventListener("click",function(e){const applyEl=e.target.closest(".coupon-offer-sheet-apply");if(!applyEl||(e.preventDefault(),applyEl.disabled||applyEl.classList.contains("is-muted")))return;const codeRaw=applyEl.getAttribute("data-sheet-code");if(!codeRaw)return;const cardSel='.coupon-card[data-coupon-code="'+codeRaw.toLowerCase()+'"]';if(applyEl.classList.contains("is-remove")){const rb=document.querySelector(cardSel+" .cpnBtn-remove");window.removeCouponFn(codeRaw,rb||null)}else{const ab=document.querySelector(cardSel+" .cpnBtn:not(.cpnBtn-disabled):not(.cpnBtn-remove)");ab?window.applyCouponFn(codeRaw,ab):window.applyCouponFn(codeRaw,applyEl)}closeCouponOfferSheet()}),root}function closeCouponOfferSheet(){const root=document.getElementById("coupon_offer_sheet_root");if(!root)return;const overlay=root.querySelector(".coupon-offer-sheet-overlay");if(!overlay||!overlay.classList.contains("is-open"))return;overlay.classList.remove("is-open"),document.body.style.overflow="";const float=root.querySelector(".coupon-offer-sheet-float");let finished=!1;function finishClose(ev){ev&&ev.propertyName&&ev.propertyName!=="transform"||finished||(finished=!0,float.removeEventListener("transitionend",onTe),overlay.classList.contains("is-open")||(overlay.setAttribute("aria-hidden","true"),overlay.style.display="none",root.hidden=!0,syncCartDrawerFocusTrapForCouponS
15heets()))}function onTe(ev){finishClose(ev)}float.addEventListener("transitionend",onTe),window.setTimeout(finishClose,400)}function openCouponOfferSheet(card){if(!card)return;const codeAttr=card.getAttribute("data-coupon-code");if(!codeAttr)return;const payload=Object.assign({},state.couponSheetData[codeAttr]||{}),listCoupon=(state.lastCouponList||[]).find(function(c){return String(c.code||"").toLowerCase()===codeAttr});listCoupon&&(payload.title=payload.title||listCoupon.title||"",payload.description=payload.description||getCouponSheetDescription(listCoupon),payload.actionMessage=payload.actionMessage||getCouponSheetActionMessage(listCoupon),payload.code=payload.code||listCoupon.code||"",payload.isApplicable==null&&(payload.isApplicable=listCoupon.isApplicable!==!1)),payload.isApplicable=!card.classList.contains("coupon-not-applicable"),payload.isApplied=!!card.querySelector(".cpnBtn-remove");const root=ensureCouponOfferSheet(),overlay=root.querySelector(".coupon-offer-sheet-overlay"),inner=root.querySelector(".coupon-offer-sheet-inner"),elOfferTitle=root.querySelector("[data-sheet-offer-title]"),elDesc=root.querySelector("[data-sheet-desc]"),elExternal=root.querySelector("[data-sheet-external]"),elCode=root.querySelector("[data-sheet-code-display]"),elHint=root.querySelector("[data-sheet-hint]"),elApply=root.querySelector("[data-sheet-apply]"),offerTitleText=payload.title||"";elOfferTitle.textContent=offerTitleText,elOfferTitle.style.display=offerTitleText?"":"none";const descText=String(payload.description||"").trim();elDesc.textContent=descText,elDesc.style.display=descText?"":"none";const dUrl=couponSanitizeUrl(payload.detailsUrl||"");dUrl?(elExternal.setAttribute("href",dUrl),elExternal.hidden=!1):(elExternal.hidden=!0,elExternal.removeAttribute("href")),elCode.textContent=(payload.code||"").toString().toUpperCase();const actionMessage=String(payload.actionMessage||payload.message||"").trim(),isSaveAction=payload.isApplicable&&isCouponSaveLine(actionMessage);elHint.classList.remove("coupon-offer-sheet-hint--savings","coupon-offer-sheet-hint--muted"),actionMessage?(elHint.innerHTML=isSaveAction?formatCouponSavingsLineHtml(actionMessage):escapeHtml(actionMessage),elHint.hidden=!1,isSaveAction?elHint.classList.add("coupon-offer-sheet-hint--savings"):payload.isApplicable||elHint.classList.add("coupon-offer-sheet-hint--muted")):(elHint.textContent="",elHint.hidden=!0),inner.classList.toggle("coupon-offer-sheet-inner--inactive",!payload.isApplicable),elApply.setAttribute("data-sheet-code",payload.code||codeAttr),elApply.classList.remove("is-remove","is-muted","is-active"),elApply.disabled=!1,payload.isApplicable?payload.isApplied?(elApply.textContent="Remove",elApply.classList.add("is-remove")):(elApply.textContent="Apply",elApply.classList.add("is-active")):(elApply.textContent="Apply",elApply.classList.add("is-muted"),elApply.disabled=!0),root.hidden=!1,overlay.style.display="flex",overlay.setAttribute("aria-hidden","false"),syncCartDrawerFocusTrapForCouponSheets(),requestAnimationFrame(function(){requestAnimationFrame(function(){overlay.classList.add("is-open")})}),document.body.style.overflow="hidden"}function onCouponSheetEscape(e){if(e.key!=="Escape")return;const root=document.getElementById("coupon_offer_sheet_root");if(!root)return;const overlay=root.querySelector(".coupon-offer-sheet-overlay");overlay&&overlay.classList.contains("is-open")&&closeCouponOfferSheet()}function attachCouponSheetUiOnce(){state.couponSheetUiAttached||(state.couponSheetUiAttached=!0,document.addEventListener("click",function(e){const trigger=e.target.closest(".coupon-view-details");if(!trigger)return;const card=trigger.closest(".coupon-card");card&&(e.preventDefault(),openCouponOfferSheet(card))}),document.addEventListener("keydown",onCouponSheetEscape))}function getCouponCategory(coupon){const raw=coupon.category||coupon.offerCategory||coupon.offer_category||coupon.group||coupon.groupName||"";return String(raw||"").trim().toLowerCase()}function couponButtonHTML(coupon,isApplied){const couponCode=String(coupon.code||""),safeCode=escapeHtml(couponCode),safeJSCode=escapeJS(couponCode),isApplicable=coupon.isApplicable!==!1;return isApplied?`<span class="cpnBtn cpnBtn-remove" onclick="window.removeCouponFn('`+safeJSCode+`', this)" data-code="`+safe
15Code+'">Remove</span>':isApplicable?`<span class="cpnBtn" onclick="window.applyCouponFn('`+safeJSCode+`', this)" data-code="`+safeCode+'">Apply</span>':'<span class="cpnBtn cpnBtn-disabled">Apply</span>'}function getPopupCouponCardError(couponCode){return state.popupCardError&&state.popupApplySource==="card"&&String(state.popupCardError.code||"").toLowerCase()===String(couponCode||"").toLowerCase()?String(state.popupCardError.message||""):""}function buildCouponListItem(coupon,appliedCouponCode){const couponCode=String(coupon.code||""),couponTitle=String(coupon.title||""),isApplicable=coupon.isApplicable!==!1,isApplied=appliedCouponCode&&couponCode.toLowerCase()===appliedCouponCode,savingsLine=resolveCouponSavingsLine(coupon),couponMessage=resolveCouponDisplayMessage(coupon,savingsLine),actionLine=isApplicable?savingsLine:getCouponEligibilityHint(coupon),cardError=getPopupCouponCardError(couponCode),codeAttr=' data-coupon-code="'+escapeHtml(couponCode.toLowerCase())+'"';if(isApplied){let bullets2=getCouponAdditionalDetailsBullets(coupon);bullets2.length||(bullets2=splitCouponMessageToBullets(couponMessage));const footerSave=formatAppliedFooterSaveLine(savingsLine),checkSvg='<svg class="coupon-full-item__check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><circle cx="7.59961" cy="8" r="6" fill="#64BA47" stroke="#64BA47" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M4.7998 7.9999L6.3998 9.5999L9.5998 6.3999" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg>';let html2='<div class="coupon-full-item coupon-full-item--applied"'+codeAttr+">";return html2+='<div class="coupon-full-item__head">',html2+='<div class="coupon-full-item__head-text">',html2+='<div class="coupon-full-item__title">'+escapeHtml(couponTitle)+"</div>",savingsLine&&(html2+='<div class="coupon-full-item__save-text">'+formatCouponSavingsLineHtml(savingsLine)+"</div>"),html2+="</div></div>",html2+=renderCouponFullItemBulletsHtml(bullets2),html2+='<div class="coupon-full-item__applied-strip">',html2+='<span class="coupon-full-item__applied-code">'+escapeHtml(couponCode.toUpperCase())+"</span>",html2+='<span class="coupon-full-item__applied-status">'+checkSvg+"Applied</span>",html2+="</div>",html2+='<div class="coupon-full-item__footer">',footerSave?html2+='<div class="coupon-full-item__footer-save">'+formatCouponSavingsLineHtml(footerSave)+"</div>":html2+='<div class="coupon-full-item__footer-fill"></div>',html2+=couponButtonHTML(coupon,isApplied),html2+="</div>",cardError&&(html2+='<div class="coupon-full-item__error">'+escapeHtml(cardError)+"</div>"),html2+="</div>",html2}const bullets=getCouponAdditionalDetailsBullets(coupon);let html='<div class="coupon-full-item'+(isApplicable?"":" coupon-not-applicable")+'"'+codeAttr+'><div class="coupon-full-item__title">'+escapeHtml(couponTitle)+"</div>";return bullets.length?html+=renderCouponFullItemBulletsHtml(bullets):couponMessage&&(html+='<div class="coupon-full-item__msg">\u2022 '+escapeHtml(couponMessage)+"</div>"),html+='<div class="coupon-full-item__code-row"><span class="coupon-full-item__code">'+escapeHtml(couponCode.toUpperCase())+"</span></div>",html+='<div class="coupon-full-item__action-row">',html+='<div class="coupon-full-item__save'+(isApplicable?"":" is-muted")+'">'+(isApplicable&&savingsLine?formatCouponSavingsLineHtml(actionLine):escapeHtml(actionLine||""))+"</div>",html+=couponButtonHTML(coupon,isApplied),html+="</div>",cardError&&(html+='<div class="coupon-full-item__error">'+escapeHtml(cardError)+"</div>"),html+="</div>",html}function renderCouponSection(title,coupons,appliedCouponCode){if(!coupons||!coupons.length)return"";let html='<div class="coupon-full-section">';return title&&(html+='<div class="coupon-full-section__title">'+escapeHtml(title)+"</div>"),coupons.forEach(function(coupon){html+=buildCouponListItem(coupon,appliedCouponCode)}),html+="</div>",html}function findCouponByCode(coupons,code){const normalized=String(code||"").toLowerCase();return!normalized||!coupons||!coupons.length?null:coupons.find(function(c){return c&&String(c.code||"").toLowerCase()===normalized})||null}function buildAppliedCouponWidgetOffer(appliedCouponCode){const code=String(appliedCouponCode||"").trim();if(!code)return null;const stored=getDiscountFromStorage(),celebration=state.manualCouponCelebration,source=stored&&stored.data||celebration&&celebration.discountData||{},title=String(source.title||source.message||source.discount_title||source.description||celebration&&celebration.savingsLine||"").trim();return{code,title,isApplicable:!0}}function resolveAvailableOffersWidgetOffer(allCoupons,storeCoupons,appliedCouponCode){const safeAppliedCode=String(appliedCouponCode||"").toLowerCase(),allStoreCoupons=storeCoupons||[],applicableStoreCoupons=allStoreCoupons.filter(function(c){return c&&c.isApplicable!==!1});let bestOffer=null;return safeAppliedCode&&(bestOffer=findCouponByCode(storeCoupons,safeAppliedCode)||findCouponByCode(allCoupons,safeAppliedCode)||buildAppliedCouponWidgetOffer(appliedCouponCode)),bestOffer||(bestOffer=applicableStoreCoupons[0]||null),{bestOffer,applicableCount:applicableStoreCoupons.length,totalStoreCouponCount:allStoreCoupons.length}}function refreshAvailableOffersWidgetFromCache(appliedCouponCode){const applied=appliedCouponCode!=null?String(appliedCouponCode).toLowerCase():getDiscountFromStorage()?.code?.toLowerCase()||"",storeCarouselCoupons=(state.lastCouponList||[]).filter(function(coupon){return String(coupon&&
15coupon.offerType||"").toLowerCase()==="store_offer"});renderAvailableOffersWidget(state.lastCouponList||[],storeCarouselCoupons,applied)}function renderAvailableOffersWidget(allCoupons,storeCoupons,appliedCouponCode){const widget=document.getElementById("available_offers_widget");if(!widget)return;const safeAppliedCode=String(appliedCouponCode||"").toLowerCase(),resolved=resolveAvailableOffersWidgetOffer(allCoupons,storeCoupons,appliedCouponCode),bestOffer=resolved.bestOffer,applicableCount=resolved.applicableCount,totalStoreCouponCount=resolved.totalStoreCouponCount;let displayOfferCount=totalStoreCouponCount,bodyHTML="",widgetRenderKey="";if(bestOffer){const code=String(bestOffer.code||""),title=String(bestOffer.title||""),safeCode=escapeHtml(code),safeJSCode=escapeJS(code),safeTitle=escapeHtml(title),isApplied=!!safeAppliedCode&&code.toLowerCase()===safeAppliedCode,appliedInStoreList=!!(safeAppliedCode&&findCouponByCode(storeCoupons,safeAppliedCode)),isInputCardAppliedOnWidget=isApplied&&!appliedInStoreList&&!findCouponByCode(allCoupons,safeAppliedCode);displayOfferCount=appliedInStoreList?totalStoreCouponCount:Math.max(totalStoreCouponCount,isApplied?1:0);const buttonHTML=isApplied?'<button type="button" class="available-offers-widget__apply available-offers-widget__apply--remove" data-code="'+safeCode+`" onclick="window.removeCouponFn && window.removeCouponFn('`+safeJSCode+`', this)">Remove</button>`:'<button type="button" class="available-offers-widget__apply" data-code="'+safeCode+`" onclick="window.applyCouponFn && window.applyCouponFn('`+safeJSCode+`', this)">Apply</button>`;bodyHTML='<div class="available-offers-widget__body">'+(isApplied?"":'<div class="available-offers-widget__ribbon">Special offer for you</div>')+'<div class="available-offers-widget__row"><div class="available-offers-widget__copy">'+(isInputCardAppliedOnWidget?'<span class="available-offers-widget__copy-text"><strong>'+escapeHtml(code.toUpperCase())+"</strong> applied</span>":(safeTitle?'<span class="available-offers-widget__copy-text">'+safeTitle+"</span>":"")+(code?'<span class="available-offers-widget__copy-code"> with code <strong>'+safeCode+"</strong></span>":""))+"</div>"+buttonHTML+"</div></div>";const widgetCopyKey=isInputCardAppliedOnWidget?code.toLowerCase()+":applied":title;widgetRenderKey=code.toLowerCase()+"|"+(isApplied?"1":"0")+"|"+applicableCount+"|"+widgetCopyKey}else bodyHTML='<div class="available-offers-widget__body" hidden></div>',widgetRenderKey="_header_only_|"+totalStoreCouponCount;const html='<div class="available-offers-widget__inner"><button type="button" class="available-offers-widget__header" aria-label="View all offers" onclick="window.couponViewAllFn && window.couponViewAllFn()"><span class="available-offers-widget__header-left"><span class="available-offers-widget__ticket-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><g clip-path="url(#aow_clip0_33973_267)"><path d="M14.8632 5.61292L14.8632 7.38219" stroke="#1D1D1D" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M14.8632 10.9569V12.7262" stroke="#1D1D1D" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M14.8632 16.3009V18.0702" stroke="#1D1D1D" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><path d="M4.9159 4.63106L18.8534 4.63106C19.395 4.63106 19.8825 4.82965 20.2616 5.13657C20.6408 5.47959 20.8393 5.93093 20.8393 6.40033L20.8393 10.0723C20.2977 10.0723 19.8103 10.2709 19.4311 10.5778C19.052 10.8847 18.8534 11.3722 18.8534 11.8416C18.8534 12.311 19.052 12.7623 19.4312 13.1053C19.8103 13.4484 20.3158 13.6289 20.8393 13.6108L20.8393 17.3189C20.8393 17.7883 20.6408 18.2396 20.2616 18.5827C19.8825 18.9257 19.377 19.1062 18.8534 19.0882L4.9159 19.0882C4.37429 19.0882 3.86878 18.9076 3.48965 18.5646C3.11052 18.2216 2.91193 17.7703 2.91193 17.3009L2.91193 13.6289C3.45354 13.6289 3.941 13.4303 4.32013 13.1234C4.69926 12.7804 4.89785 12.329 4.89785 11.8596C4.89785 11.3902 4.69925 10.9389 4.32013 10.5959C3.941 10.2528 3.43549 10.0723 2.91193 10.0903L2.91193 6.41839C2.91193 5.94899 3.11052 5.49764 3.48965 5.15462C3.86878 4.8116 4.37429 4.63106 4.9159 4.63106Z" stroke="#1D1D1D" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></g><defs><clipPath id="aow_clip0_33973_267"><rect width="24" height="24" fill="white"/></clipPath></defs></svg></span><span class="available-offers-widget__title">Available offers ('+displayOfferCount+')</span></span><span class="available-offers-widget__chevron" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="10" height="16" viewB
15ox="0 0 10 16" fill="none"><path d="M1.5 1L8.5 8L1.5 15" stroke="#111" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg></span></button>'+bodyHTML+"</div>";state.widgetLastKey===widgetRenderKey&&state.widgetLastHtml===html&&!widget.hidden||(widget.innerHTML=html,widget.hidden=!1,state.widgetLastHtml=html,state.widgetLastKey=widgetRenderKey)}function upgradeViewAllPopupStructure(){const root=document.getElementById("coupon_view_all_root");if(!root)return;const header=root.querySelector(".coupon-full-header"),bar=root.querySelector(".coupon-full-input-bar"),wrap=root.querySelector(".coupon-full-input-wrap");if(!bar||!wrap)return;if(header&&bar&&!root.querySelector(".coupon-full-saving-slot")){const savingSlot=document.createElement("div");savingSlot.className="coupon-full-saving-slot",header.parentNode.insertBefore(savingSlot,bar)}if(!bar.querySelector(".coupon-full-input-manager")){const manager2=document.createElement("div");manager2.className="coupon-full-input-manager",bar.insertBefore(manager2,wrap),manager2.appendChild(wrap)}const manager=bar.querySelector(".coupon-full-input-manager");if(manager&&!manager.querySelector("[data-popup-input-error]")){const err=document.createElement("div");err.className="coupon-full-input-error",err.setAttribute("data-popup-input-error",""),err.hidden=!0,err.setAttribute("aria-live","polite"),manager.appendChild(err)}const input=root.querySelector("#viewall_coupon_code_input");input&&(input.placeholder="Enter coupon code here")}function attachViewAllPopupListenersOnce(){const els=getViewAllPopupElements();!els||!els.input||!els.applyBtn||els.input.dataset.viewAllListenersBound!=="1"&&(els.input.dataset.viewAllListenersBound="1",state.viewAllPopupListenersAttached=!0,els.input.addEventListener("keydown",function(e){e.key==="Enter"&&(e.preventDefault(),typeof window.applyViewAllCouponFn=="function"&&window.applyViewAllCouponFn(els.applyBtn))}),els.input.addEventListener("input",function(){const pos=els.input.selectionStart;if(els.input.value=String(els.input.value||"").toUpperCase(),typeof pos=="number")try{els.input.setSelectionRange(pos,pos)}catch{}clearPopupInputError(),state.popupCardError=null,syncViewAllPopupInputState()}))}function ensureCouponViewAllSheet(){patchCartDrawerForCouponSheets();let root=document.getElementById("coupon_view_all_root");return root?(mountCouponSheetToBody(root),bindCouponSheetPointerGuards(root),upgradeViewAllPopupStructure(),attachViewAllPopupListenersOnce(),root):(root=document.createElement("div"),root.id="coupon_view_all_root",root.hidden=!0,root.innerHTML='<div class="coupon-full-overlay" aria-hidden="true"><div class="coupon-full-sheet"><div class="coupon-full-header"><button type="button" class="coupon-full-back" aria-label="Back"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="15" viewBox="0 0 14 15" fill="none"><path d="M0.292893 6.65691C-0.0976311 7.04743 -0.0976311 7.6806 0.292893 8.07112L6.65685 14.4351C7.04738 14.8256 7.68054 14.8256 8.07107 14.4351C8.46159 14.0446 8.46159 13.4114 8.07107 13.0209L2.41421 7.36401L8.07107 1.70716C8.46159 1.31664 8.46159 0.68347 8.07107 0.292946C7.68054 -0.0975785 7.04738 -0.0975785 6.65685 0.292946L0.292893 6.65691ZM12.3902 8.36401C12.9425 8.36401 13.3902 7.9163 13.3902 7.36401C13.3902 6.81173 12.9425 6.36401 12.3902 6.36401V7.36401V8.36401ZM1 7.36401V8.36401H12.3902V7.36401V6.36401H1V7.36401Z" fill="#1D1D1D"/></svg></button><div class="coupon-full-title">Available offers</div></div><div class="coupon-full-saving-slot"></div><div class="coupon-full-input-bar"><div class="coupon-full-input-manager"><div class="coupon-full-input-wrap"><input type="text" id="viewall_coupon_code_input" class="coupon-full-input" placeholder="Enter coupon code here" autocomplete="off" /><button type="button" id="viewall_coupon_apply_btn" class="coupon-full-input-apply is-disabled" onclick="window.applyViewAllCouponFn && window.applyViewAllCouponFn(this)">Apply</button></div><div class="coupon-full-input-error" data-popup-input-error hidden aria-live="polite"></div></div></div><div class="coupon-full-body" id="coupon_full_body"></div></div></div>
15',mountCouponSheetToBody(root),bindCouponSheetPointerGuards(root),root.querySelector(".coupon-full-back").addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),closeCouponViewAllSheet()}),upgradeViewAllPopupStructure(),attachViewAllPopupListenersOnce(),root)}function closeCouponViewAllSheet(){const root=document.getElementById("coupon_view_all_root");if(!root)return;clearPopupTrayCelebrations(),state.popupInputError="",state.popupCardError=null,state.popupApplySource=null,clearPopupInputError();const overlay=root.querySelector(".coupon-full-overlay");overlay&&(overlay.classList.remove("is-open"),overlay.setAttribute("aria-hidden","true"),overlay.style.display="none",root.hidden=!0,syncCartDrawerFocusTrapForCouponSheets())}function openCouponViewAllSheet(){patchCartDrawerForCouponSheets();const root=ensureCouponViewAllSheet();upgradeViewAllPopupStructure(),attachViewAllPopupListenersOnce(),clearPopupInputError();const overlay=root.querySelector(".coupon-full-overlay"),body=root.querySelector("#coupon_full_body"),title=root.querySelector(".coupon-full-title");if(!overlay||!body||!title)return;const coupons=Array.isArray(state.viewAllCoupons)?state.viewAllCoupons:[];syncViewAllPopupAppliedCode(),title.textContent="Available offers ("+coupons.length+")";const popupInput=root.querySelector("#viewall_coupon_code_input"),popupApplyBtn=root.querySelector("#viewall_coupon_apply_btn"),stored=getDiscountFromStorage(),appliedCode=stored&&stored.code?String(stored.code):"";popupInput&&(appliedCode?syncViewAllPopupInputState():(popupInput.value="",popupInput.disabled=!1,popupInput.classList.remove("coupon-full-input--error"))),popupApplyBtn&&(popupApplyBtn.textContent=appliedCode?"Remove":"Apply",popupApplyBtn.style.pointerEvents="auto"),body.innerHTML=buildViewAllPopupBodyHtml(),resumePopupTrayCelebrationsAfterRender(),syncCartHeaderSaving(state.lastCartData||lastCartData),root.hidden=!1,overlay.style.display="block",overlay.setAttribute("aria-hidden","false"),syncCartDrawerFocusTrapForCouponSheets(),requestAnimationFrame(function(){overlay.classList.add("is-open")})}function buildCouponCard(coupon,isApplied=!1){const couponCode=coupon.code||"",couponTitle=coupon.title||"",isApplicable=coupon.isApplicable!==!1,showAsApplicable=isApplicable||isApplied,savingsLine=resolveCouponSavingsLine(coupon),couponMessage=resolveCouponDisplayMessage(coupon,savingsLine),detailsUrl=getCouponDetailsUrl(coupon),detailsText=getCouponDetailsText(coupon);let cardHTML='<div class="coupon-card gXMwoP'+(showAsApplicable?"":" coupon-not-applicable")+(isApplied?" coupon-card--applied":"")+'" data-coupon-code="'+escapeHtml(couponCode.toLowerCase())+'">';return cardHTML+='<div class="coupon-wrapper">',cardHTML+='<div class="coupon-panel">',cardHTML+='<div class="coupon-content">',cardHTML+="<h3>"+escapeHtml(couponTitle)+"</h3>",couponMessage&&(cardHTML+='<div class="subHeading"><p>'+escapeHtml(couponMessage)+"</p></div>"),savingsLine&&(cardHTML+='<p class="coupon-savings'+(showAsApplicable?"":" coupon-savings--muted")+'">'+formatCouponSavingsLineHtml(savingsLine)+"</p>"),cardHTML+='<button type="button" class="coupon-view-details">View details</button>',cardHTML+="</div>",cardHTML+="</div>",cardHTML+='<div class="coupon-code-area">',cardHTML+='<div class="coupon-row">',cardHTML+=buildCouponCardFooterHTML(couponCode,isApplicable,isApplied),cardHTML+="</div>",cardHTML+="</div>",cardHTML+="</div>",cardHTML+="</div>",couponCode&&(state.couponSheetData[String(couponCode).toLowerCase()]={title:couponTitle,description:getCouponSheetDescription(coupon),actionMessage:getCouponSheetActionMessage(coupon),message:couponMessage,savings:savingsLine,details:detailsText,detailsUrl,code:couponCode,isApplicable:showAsApplicable,isApplied,eligibilityHint:getCouponEligibilityHint(coupon)}),cardHTML}async function applyCouponAPI(couponCode,cartData){schedulePreloadCouponSuccessAssets();try{const deviceId=getDeviceId(),transformedCart=transformCartForAPI(cartData);transformedCart.cart.discount_codes=[],transformedCart.cart.cart_level_discount_applications=[];const payload={...transformedCart,couponCodes:[couponCode]}
15,headers=applyCouponCustomerHeader({"x-source":"web-app","x-platform":"web","x-device-id":deviceId,"Content-Type":"application/json"}),response=await fetch("https://api-v1.mamaearth.in/v1/coupons/apply",{method:"POST",headers,body:JSON.stringify(payload)});if(!response.ok)throw new Error("Failed to apply coupon");return await response.json()}catch(error){return console.error("Error applying coupon:",error),{success:!1,error:error.message}}}async function removeCouponAPI(couponCode,cartData){try{const deviceId=getDeviceId(),transformedCart=transformCartForAPI(cartData),storedDiscount=getDiscountFromStorage();storedDiscount&&storedDiscount.data&&(transformedCart.cart.discount=storedDiscount.data);const payload={...transformedCart,couponCodes:[couponCode]},headers=applyCouponCustomerHeader({"x-source":"web-app","x-platform":"web","x-device-id":deviceId,"Content-Type":"application/json"}),response=await fetch("https://api-v1.mamaearth.in/v1/coupons/remove",{method:"POST",headers,body:JSON.stringify(payload)});if(!response.ok)throw new Error("Failed to remove coupon");return await response.json()}catch(error){return console.error("Error removing coupon:",error),{success:!1,error:error.message}}}async function clearDiscountCartAttributes(){try{const response=await fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({attributes:{discount_code:"",discount_amount:"",discounted_total:"",discount_type:"",discount_applied:""}})});if(!response.ok)throw new Error("Failed to clear cart discount attributes");const cart=await response.json();return cacheCartData(cart),cart}catch(error){return console.error("Error clearing cart discount attributes:",error),null}}function saveDiscountToStorage(discountData,couponCode,updatedCart){const discountInfo={code:couponCode,amount:discountData.total_discount||0,total:discountData.total_price||0,data:discountData,updatedCart:updatedCart||null,timestamp:Date.now()};localStorage.setItem("applied_discount",JSON.stringify(discountInfo)),state.couponSnapshotRefreshedAt=Date.now(),updatedCart&&(state.couponApiCartSnapshot=updatedCart)}function getDiscountFromStorage(){try{const stored=localStorage.getItem("applied_discount");return stored?JSON.parse(stored):null}catch{return null}}function clearDiscountFromStorage(){localStorage.removeItem("applied_discount"),state.couponApiCartSnapshot=null,state.couponSnapshotRefreshedAt=0,clearCouponListCache()}function freeProductsEscapeHtml(value){return value==null?"":String(value).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function freeProductsExtractImage(item){if(!item)return"";const candidate=item.image||item.image_url||item.imageUrl||item.featured_image||item.featuredImage||item.product_image||item.thumbnail||"";return candidate?typeof candidate=="string"?candidate:candidate.url||candidate.src||"":""}function freeProductsExtractTitle(item){return item&&(item.title||item.product_title||item.name||item.productTitle||item.product_name)||""}function freeProductsExtractPrice(item){if(!item)return null;const shopifyCentFields=["original_price","price","final_price","line_price","final_line_price","compare_at_price"];for(let i=0;i<shopifyCentFields.length;i++){const raw=item[shopifyCentFields[i]];if(raw!=null){const num=Number(raw);if(isFinite(num))return num/100}}const altFields=["selling_price","mrp","sellingPrice"];for(let i=0;i<altFields.length;i++){const raw=item[altFields[i]];if(raw!=null){const num=Number(raw);if(isFinite(num))return num}}return null}function freeProductsExtractQuantity(item){if(!item)return 1;const raw=item.free_quantity!=null?item.free_quantity:item.gwp_free_quantity!=null?item.gwp_free_quantity:item.quantity!=null?item.quantity:1,num=Number(raw);return isFinite(num)&&num>0?Math.floor(num):1}function freeProductsExtractUrl(item){if(!item)return"";if(item.handle)return"/products/"+item.handle;if(!item.url)return"";let url=String(item.url).trim();if(!url)return"";url=url.replace(/^https?:\/\//i,"");const slashIdx=url.indexOf("/");return slashIdx===-1?url.charAt(0)==="/"?url:"":url.substring(slashIdx)}function saveFreeProductsToStorage(freeProducts,couponCode){try{const list=Array.isArray(freeProducts)?freeProducts:[];if(!list.length){localStorage.removeItem("applied_free_products");return}localStorage.setItem("applied_free_products",JSON.stringify({code:couponCode||"",items:list,timestamp:Date.now()}))}catch{}}function getFreeProductsFromStorage(){try{const stored=localStorage.getItem("applied_free_products");if(!stored)return null;const info=JSON.parse(stored);return!Array.isArray(info.items)||info.items.length===0?null:info}catch{return null}}function clearFreeProductsFromStorage(){localStorage.removeItem("applied_free_products")}function getCartItemsForFreeProductCheck(){const cart=state.lastCartData||lastCartData;return cart&&Array.isArray(cart.items)?cart.items:null}function freeProductComparableIds(freeProduct){if(!freeProduct)return[];const ids=[];return["product_id","variant_id","id"].forEach(function(field){const val=freeProduct[field];val!=null&&val!==""&&ids.push(String(val))}),ids}function cartLineComparableIds(cartItem){if(!cartItem)return[];const ids=[];return["product_id","variant_id","id"].forEach(function(field){const val=cartItem[field];val!=null&&val!==""&&ids.push(String(val))}),ids}function freeProductMatchesCartLine(freeProduct,cartItem){const freeIds=freeProductComparableIds(freeProduct),lineIds=cartLineComparableIds(cartItem);return!freeIds.length||!lineIds.length?!1:freeIds.some(function(fid){return lineIds.indexOf(fid)!==-1})}function filterFreeProductsNotInCart(freeProducts,cartItems){const list=Array.isArray(freeProducts)?freeProducts.filter(
15Boolean):[];return list.length?!Array.isArray(cartItems)||!cartItems.length?list:list.filter(function(fp){return!cartItems.some(function(item){return freeProductMatchesCartLine(fp,item)})}):[]}function syncFreeProductsUi(freeProducts,couponCode,cartHint){const list=Array.isArray(freeProducts)?freeProducts.filter(Boolean):[],cartItems=cartHint&&Array.isArray(cartHint.items)&&cartHint.items||getCartItemsForFreeProductCheck();if(!list.length){clearFreeProductsFromStorage(),hideFreeProductsInCart();return}saveFreeProductsToStorage(list,couponCode);const toShow=filterFreeProductsNotInCart(list,cartItems);if(!toShow.length){hideFreeProductsInCart();return}showFreeProductsInCart(toShow,couponCode)}function buildFreeProductCardHtml(item){const title=freeProductsEscapeHtml(freeProductsExtractTitle(item)),image=freeProductsExtractImage(item),safeImage=freeProductsEscapeHtml(image),price=freeProductsExtractPrice(item),quantity=freeProductsExtractQuantity(item),url=freeProductsExtractUrl(item),safeUrl=freeProductsEscapeHtml(url),priceText=price!=null?"\u20B9"+price.toFixed(price%1===0?0:2):"",qtyText=quantity>1?" \xD7 "+quantity:"",priceHtml=priceText?'<div class="applied-free-product__price"><span class="applied-free-product__price-cut">'+priceText+"</span>"+(qtyText?'<span class="applied-free-product__qty">'+qtyText+"</span>":"")+"</div>":qtyText?'<div class="applied-free-product__price">Qty:'+qtyText+"</div>":"",imgHtml=image?'<img class="applied-free-product__img" src="'+safeImage+'" alt="'+title+'" loading="lazy" width="60" height="60">':'<span class="applied-free-product__img applied-free-product__img--placeholder" aria-hidden="true"></span>',titleNode=safeUrl?'<a class="applied-free-product__title" href="'+safeUrl+'">'+title+"</a>":'<div class="applied-free-product__title">'+title+"</div>";return'<div class="applied-free-product" data-freebie-source="coupon-api"><div class="applied-free-product__media">'+imgHtml+'</div><div class="applied-free-product__info">'+titleNode+priceHtml+'</div><div class="applied-free-product__tag">FREE</div></div>'}function getFreeProductsHostContainers(){const hosts=[],main=document.querySelector(".hdt-mini-cart__items");main&&hosts.push(main);const mainCart=document.querySelector(".hdt-cart-items");mainCart&&hosts.push(mainCart);const shadow=document.querySelector("shadow-dom-container")?.shadowRoot;if(shadow){const shadowMain=shadow.querySelector(".hdt-mini-cart__items");shadowMain&&hosts.push(shadowMain)}return hosts}function hideCouponApiFreeProductsInCart(){const selector='.applied-free-products-wrap[data-freebie-source="coupon-api"]';document.querySelectorAll(selector).forEach(node=>node.remove());const shadow=document.querySelector("shadow-dom-container")?.shadowRoot;shadow&&shadow.querySelectorAll(selector).forEach(node=>node.remove())}function hideFreeProductsInCart(){hideCouponApiFreeProductsInCart()}function showFreeProductsInCart(freeProducts,couponCode){hideCouponApiFreeProductsInCart();const list=Array.isArray(freeProducts)?freeProducts.filter(Boolean):[];if(!list.length)return;const cardsHtml=list.map(buildFreeProductCardHtml).join(""),wrapHtml='<div class="applied-free-products-wrap" data-freebie-source="coupon-api" data-coupon-code="'+freeProductsEscapeHtml(couponCode||"")+'">'+cardsHtml+"</div>";getFreeProductsHostContainers().forEach(host=>{const title=host.querySelector(".cart_title"),tmp=document.createElement("div");tmp.innerHTML=wrapHtml;const node=tmp.firstElementChild;node&&(title&&title.parentNode===host?title.insertAdjacentElement("afterend",node):host.insertAdjacentElement("afterbegin",node))})}async function restoreFreeProductsInCart(){const stored=getFreeProductsFromStorage();if(!stored||!stored.items||stored.items.length===0){hideFreeProductsInCart();return}if(!getDiscountFromStorage()){clearFreeProductsFromStorage(),hideFreeProductsInCart();return}let cartItems=getCartItemsForFreeProductCheck();if(!cartItems)try{const response=await fetch("/cart.js");if(response.ok){const freshCart=await response.json();cacheCartData(freshCart),cartItems=Array.isArray(freshCart.items)?freshCart.items:null}}catch{}if(!cartItems||!cartItems.length){hideFreeProductsInCart();return}const toShow=filterFreeProductsNotInCart(stored.items,cartItems);if(!toShow.length){hideFreeProductsInCart();return}showFreeProductsInCart(toShow,stored.code)}async function refreshCart(cartHint){try{let cartData=cartHint||state.lastCartData||lastCartData;if(!cartData||typeof cartData.item_count>"u"){const response=await fetch("/cart.js");if(!response.ok)throw new Error("Failed to fetch cart");cartData=await response.json()}cacheCartData(cartData),document.dispatchEvent(new CustomEvent("cart:refresh",{detail:{cart:cartData}}))}catch(error){console.error("Error refreshing cart:",error),document.dispatchEvent(new CustomEvent("cart:refresh",{detail:{cart:{sections:{}}}}))}}function formatMoneyFromDiscountTotalPrice(raw){const rawNum=Number(raw);if(!isFinite(rawNum))return null;const cents=Math.abs(rawNum-Math.round(rawNum))<1e-9&&rawNum>=1e4?Math.round(rawNum):Math.round(rawNum*100);return typeof Shopify<"u"&&typeof Shopify.formatMoney=="function"?Shopify.formatMoney(cents):"\u20B9"+(cents/100).toFixed(2)}function formatMoneyFromCartCents(cents){const raw=Number(cents);if(!isFinite(raw))return null;const rounded=Math.round(raw);return typeof Shopify<"u"&&typeof Shopify.formatMoney=="function"?Shopify.formatMoney(rounded):"\u20B9"+(rounded/100).toFixed(2)}const SHIPPING_FEE_CENTS=window.__copyCodeCouponUi&&window.__copyCodeCouponUi.shippingFeeCents||4e3,FREE_SHIPPING_THRESHOLD_CENTS=window.__copyCodeCouponUi&&window.__copyCodeCouponUi.freeShippingThresholdCents||39900,PREPAID_DISCOUNT_PERCENT=window.__copyCodeCouponUi&&window.__copyCodeCouponUi.prepaidDiscountPercent||5,PREPAID_DISCOUNT_MAX_CENTS=window.__copyCodeCouponUi&&window.__copyCodeCouponUi.prepaidDiscountMaxCents||5e3,HIGH_VALUE_CART_ENABLED=!!(window.__copyCodeCouponUi&&window.__copyCodeCouponUi.highValueCartRestrictionEnabled),HIGH_VALUE_CART_MAX_PAYABLE_CENTS=Number(window.__copyCodeCouponUi&&window.__copyCodeCouponUi.highValueCartMaxPayableCartCents||0);function getCartOrderTotalCents(cart){if(!cart)return 0;if(cart._displaySource==="updatedCart"){const netSubtotal=getCart
15NetSubtotalCents(cart),itemDiscount=computeOfferDiscountCentsFromCart(cart),reconstructedTotal=netSubtotal+itemDiscount;if(reconstructedTotal>0)return reconstructedTotal}const orderTotal=Number(cart.original_total_price);return isFinite(orderTotal)&&orderTotal>0?orderTotal:Number(cart.total_price)||0}function getCartNetSubtotalCents(cart){return cart?cart._displaySource==="updatedCart"&&cart.discount&&cart.discount.total_price!=null?discountAmountToCents(cart.discount.total_price):Number(cart.total_price)||0:0}function computeCartTotals(cart){const orderTotalCents=getCartOrderTotalCents(cart),netSubtotalCents=getCartNetSubtotalCents(cart),shippingCents=netSubtotalCents>FREE_SHIPPING_THRESHOLD_CENTS?0:SHIPPING_FEE_CENTS,prepaidDiscountRaw=Math.round(netSubtotalCents*PREPAID_DISCOUNT_PERCENT/100),prepaidDiscountCents=Math.min(prepaidDiscountRaw,PREPAID_DISCOUNT_MAX_CENTS),toPayCents=netSubtotalCents+shippingCents-prepaidDiscountCents;return{orderTotalCents,netSubtotalCents,shippingCents,prepaidDiscountCents,toPayCents}}function getCartTotals(shopifyCartHint){const cart=getDisplayCart(shopifyCartHint);return!cart||typeof cart.item_count>"u"?null:Object.assign(computeCartTotals(cart),{shippingFeeCents:SHIPPING_FEE_CENTS,freeShippingThresholdCents:FREE_SHIPPING_THRESHOLD_CENTS})}let highValueCartApplyTimer=null;try{!state.highValueCartHasSynced&&window.__hdtHighValueCartRestrictionConfig&&typeof window.__hdtHighValueCartRestrictionConfig.shouldBlock=="boolean"&&(state.highValueCartLastBlocked=!!window.__hdtHighValueCartRestrictionConfig.shouldBlock)}catch{}function shouldBlockCheckoutWithPayableCents(payableCents){return HIGH_VALUE_CART_ENABLED&&HIGH_VALUE_CART_MAX_PAYABLE_CENTS>0&&Number(payableCents)>HIGH_VALUE_CART_MAX_PAYABLE_CENTS}function updateHighValueCartAlertMessage(){const alertEl=document.getElementById("high_value_cart_alert"),alertMessageEl=alertEl?alertEl.querySelector(".hdt-high-value-cart-alert__message"):null;if(!alertMessageEl||typeof state.highValueCartLastToPayCents!="number")return;const headingTemplate=window.__copyCodeCouponUi&&window.__copyCodeCouponUi.highValueCartAlertHeadingTemplate||"Order Limit %threshold% Reached",template=window.__copyCodeCouponUi&&window.__copyCodeCouponUi.highValueCartAlertMessageTemplate||"",maxMoney=String(formatMoneyFromCartCents(HIGH_VALUE_CART_MAX_PAYABLE_CENTS)||"").replace(/\.00/g,""),payableMoney=String(formatMoneyFromCartCents(state.highValueCartLastToPayCents)||"").replace(/\.00/g,""),replacePlaceholders=function(value){return String(value||"").split("%threshold%").join(maxMoney).split("%payable_total%").join(payableMoney)},headingText=replacePlaceholders(headingTemplate),bodyText=replacePlaceholders(template),headingEl=alertMessageEl.querySelector(".hdt-high-value-cart-alert__heading"),bodyEl=alertMessageEl.querySelector(".hdt-high-value-cart-alert__body");headingEl||bodyEl?(headingEl&&(headingEl.textContent=headingText),bodyEl&&(bodyEl.textContent=bodyText)):alertMessageEl.textContent=[headingText,bodyText].filter(Boolean).join(`
16`)}function applyHighValueCartRestrictionDOM(shouldBlock){const alertEl=document.getElementById("high_value_cart_alert");alertEl&&(alertEl.hidden=!shouldBlock,alertEl.setAttribute("aria-hidden",shouldBlock?"false":"true"),shouldBlock&&updateHighValueCartAlertMessage()),[document.querySelector("#CartDrawer .hdt-mini-cart__bottom-wrap"),document.querySelector("#hdt-page-cart .hdt-page-cart__bottom-wrap")].forEach(function(el){el&&el.classList.toggle("high_value_cart_alert_active",shouldBlock)});const proceedWrapper=document.getElementById("proceed_to_checkout_btn");if(proceedWrapper){proceedWrapper.setAttribute("data-hvc-should-block",shouldBlock?"true":"false"),proceedWrapper.classList.toggle("hdt-high-value-cart--blocked",shouldBlock);const payBtn=proceedWrapper.querySelector(".hdt-mini-cart__checkout-pay");payBtn&&(payBtn.disabled=shouldBlock,payBtn.setAttribute("aria-disabled",shouldBlock?"true":"false")),proceedWrapper.querySelectorAll(".gokwik-checkout button, .shopifycheckoutbtn, .hdt-main-cart__button-checkout").forEach(function(btn
16){const wasDisabledByRestriction=btn.dataset.hvcDisabled==="true";shouldBlock?(btn.dataset.hvcDisabled="true",btn.disabled=!0,btn.classList.add("disabled"),btn.setAttribute("aria-disabled","true")):(btn.setAttribute("aria-disabled","false"),wasDisabledByRestriction&&(delete btn.dataset.hvcDisabled,btn.disabled=!1,btn.classList.remove("disabled")))})}}function applyHighValueCartRestriction(shouldBlock,options){var force=options&&options.force;shouldBlock=!!shouldBlock,state.highValueCartLastBlocked=shouldBlock,window.__hdtHighValueCartRestrictionBlocked=shouldBlock,window.__hdtHighValueCartRestrictionShouldBlock=function(){return state.highValueCartLastToPayCents==null?state.highValueCartLastBlocked:shouldBlockCheckoutWithPayableCents(state.highValueCartLastToPayCents)},!(!force&&state.highValueCartLastAppliedGeneration===state.highValueCartDomGeneration)&&(state.highValueCartLastAppliedGeneration=state.highValueCartDomGeneration,applyHighValueCartRestrictionDOM(shouldBlock))}function scheduleReapplyHighValueCartRestriction(){clearTimeout(highValueCartApplyTimer),highValueCartApplyTimer=setTimeout(function(){var shouldBlock=shouldBlockCheckoutWithPayableCents(state.highValueCartLastToPayCents);shouldBlock===state.highValueCartLastBlocked&&state.highValueCartLastAppliedGeneration===state.highValueCartDomGeneration||applyHighValueCartRestriction(shouldBlock,{force:!0})},520)}function flushHighValueCartAfterCouponSettle(){if(!state.highValueCartDeferForCoupon)return;state.highValueCartDeferForCoupon=!1;const shopifyCart=state.lastCartData||lastCartData;if(!shopifyCart||typeof shopifyCart.item_count>"u")return;const displayCart=getDisplayCart(shopifyCart),totals=computeCartTotals(displayCart||shopifyCart);syncHighValueCartRestriction(totals.toPayCents)}function syncHighValueCartRestriction(toPayCents){state.highValueCartLastToPayCents=toPayCents,state.highValueCartHasSynced=!0;var shouldBlock=shouldBlockCheckoutWithPayableCents(toPayCents);if(shouldBlock===state.highValueCartLastBlocked){shouldBlock&&updateHighValueCartAlertMessage();return}state.highValueCartDomGeneration++,applyHighValueCartRestriction(shouldBlock),scheduleReapplyHighValueCartRestriction()}function reapplyHighValueCartRestrictionOnDrawerRender(){state.highValueCartDomGeneration++;var blocked=state.highValueCartLastBlocked;if(!state.highValueCartHasSynced){var proceedEl=document.getElementById("proceed_to_checkout_btn");(proceedEl&&proceedEl.getAttribute("data-hvc-should-block")==="true"||window.__hdtHighValueCartRestrictionConfig&&window.__hdtHighValueCartRestrictionConfig.shouldBlock)&&(blocked=!0),state.highValueCartLastBlocked=blocked}if(applyHighValueCartRestrictionDOM(blocked),state.highValueCartLastAppliedGeneration=state.highValueCartDomGeneration,!blocked){var proceedWrapper=document.getElementById("proceed_to_checkout_btn");proceedWrapper&&proceedWrapper.querySelectorAll(".gokwik-checkout button, .shopifycheckoutbtn, .hdt-main-cart__button-checkout").forEach(function(btn){btn.disabled=!1,btn.classList.remove("disabled"),btn.setAttribute("aria-disabled","false"),delete btn.dataset.hvcDisabled})}}function removeItemsDiscountRow(){const row=document.querySelector(".items-discount-row");row&&row.remove()}function cartAttributesObject(cart){const a=cart&&cart.attributes;if(!a)return{};if(typeof a=="string")try{return JSON.parse(a)}catch{return{}}return a}function cartHasDiscountAttributes(cart){const attrs=cartAttributesObject(cart);return!!(attrs.discount_applied==="true"||attrs.discount_applied===!0||attrs.discount_code||attrs.discount_amount!=null&&attrs.discount_amount!=="")}async function ensureDiscountCartAttributesClean(cartHint){let cart=cartHint;if(!cart||typeof cart.item_count>"u")try{const res=await fetch("/cart.js");if(!res.ok)return null;cart=await res.json(),cacheCartData(cart)}catch{return null}return cartHasDiscountAttributes(cart)&&await clearDiscountCartAttributes()||cart}function deleteCookieAllScopes(name){const host=window.location.hostname,parts=host.split("."),scopes=[null,host];for(let i=0;i<parts.length-1;i++)scopes.push("."+parts.slice(i).join("."));
16scopes.forEach(function(domain){document.cookie=name+"=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(domain?"; domain="+domain:"")})}function isFreeCartLine(item){if(!item)return!1;const finalPrice=Number(item.final_price!=null?item.final_price:item.price);return!isFinite(finalPrice)||finalPrice!==0?!1:(item.line_level_discount_allocations||[]).some(function(alloc){return(alloc&&alloc.discount_application||{}).type==="discount_code"&&Number(alloc.amount)>0})}function cartHasFreeLineItem(cart){return!!(cart&&Array.isArray(cart.items)&&cart.items.some(isFreeCartLine))}function reloadAfterCartRecovery(){if(!document.querySelector("wrapp-hdt-cart-page-form"))return!1;try{if(sessionStorage.getItem(CART_RECOVERY_RELOAD_KEY)==="1")return!1;sessionStorage.setItem(CART_RECOVERY_RELOAD_KEY,"1")}catch{return!1}return window.location.reload(),!0}function cartHasUnknownDiscountCode(cart){return!cart||!Array.isArray(cart.discount_codes)||!cart.discount_codes.length?!1:!getDiscountFromStorage()?.code}async function stripUnknownDiscountCodes(cartHint){if(state.unknownDiscountStripInFlight||state.unknownDiscountStripped||window.couponCheckInProgress||state.couponCheckInProgress||state.discountRevalidateInFlight)return null;let cart=cartHint;if(!cart||!Array.isArray(cart.discount_codes)||!cartHasUnknownDiscountCode(cart))return null;state.unknownDiscountStripInFlight=!0;try{const res=await fetch("/cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({discount:""})});if(!res.ok)throw new Error("Failed to strip cart discount codes");const updated=await res.json();return window.couponCheckInProgress||state.couponCheckInProgress?null:(state.unknownDiscountStripped=!0,cacheCartData(updated),document.cookie="discount_code=; path=/; max-age=0",resetCouponListCache(),Array.isArray(updated.discount_codes)&&updated.discount_codes.length===0&&reloadAfterCartRecovery()||(await refreshCart(updated),await syncCartDrawerToPayFromShopifyCart(updated)),updated)}catch(error){return console.error("Error stripping unknown cart discount codes:",error),null}finally{state.unknownDiscountStripInFlight=!1}}async function clearCartIfFreeItemHasNoCoupon(cartHint){if(state.orphanFreeItemCartCleared||state.orphanFreeItemCheckInFlight||window.couponCheckInProgress||state.couponCheckInProgress||state.discountRevalidateInFlight)return null;const stored=getDiscountFromStorage();if(stored&&stored.code)return null;state.orphanFreeItemCheckInFlight=!0;try{let cart=cartHint;if(!cart||typeof cart.item_count>"u"){const res=await fetch("/cart.js");if(!res.ok)return null;cart=await res.json(),cacheCartData(cart)}if(window.couponCheckInProgress||state.couponCheckInProgress)return null;const storedNow=getDiscountFromStorage();if(storedNow&&storedNow.code||!cart.item_count||!cartHasFreeLineItem(cart))return null;const clearRes=await fetch("/cart/clear.js",{method:"POST",headers:{"Content-Type":"application/json"}});if(!clearRes.ok)throw new Error("Failed to clear cart");const clearedCart=await clearRes.json();state.orphanFreeItemCartCleared=!0,cacheCartData(clearedCart),deleteCookieAllScopes("cart"),deleteCookieAllScopes("discount_code"),clearDiscountFromStorage(),clearFreeProductsFromStorage(),resetCouponListCache();const discountRow=document.querySelector(".applied-coupon-discount");return discountRow&&discountRow.remove(),hideFreeProductsInCart(),window.appliedDiscount=null,!clearedCart.item_count&&reloadAfterCartRecovery()||(await refreshCart(clearedCart),await syncCartDrawerToPayFromShopifyCart(clearedCart)),clearedCart}catch(error){return console.error("Error clearing cart with orphaned free item:",error),null}finally{state.orphanFreeItemCheckInFlight=!1}}function hasAppliedCouponOnCart(cart){if(cart&&cart._displaySource==="updatedCart")return!0;const attrs=cartAttributesObject(cart);return attrs.discount_applied==="true"||attrs.discount_applied===!0||(cart.discount_codes||[]).some(function(c){return c.applicable})?!0:(cart.cart_level_discount_applications||[]).length>0}function computeLineItemsDiscountCents(cart){let total=0;
16return(cart.items||[]).forEach(function(item){const orig=Number(item.original_line_price)||0,fin=item.final_line_price!=null?Number(item.final_line_price):orig;total+=Math.max(0,orig-fin)}),total}function computeCouponLineDiscountCents(cart){let total=0;return(cart.items||[]).forEach(function(item){(item.line_level_discount_allocations||[]).forEach(function(alloc){(alloc.discount_application||{}).type==="discount_code"&&(total+=Number(alloc.amount)||0)})}),total}function computeProductItemsDiscountCents(cart){return Math.max(0,computeLineItemsDiscountCents(cart)-computeCouponLineDiscountCents(cart))}function removeDynamicPriceSummaryDiscountRows(subtotalContainer){subtotalContainer&&subtotalContainer.querySelectorAll(".items-discount-row, .applied-coupon-discount, .prepaid-discount-row, [data-cart-summary-discount]").forEach(function(row){row.remove()})}function paintItemsDiscountRow(cents,subtotalContainer){const amount=Number(cents);if(!amount||amount<=0||!subtotalContainer)return;const formatted="-"+formatMoneyFromCartCents(amount),row=document.createElement("div");row.className="hdt-price-summary__row hdt-price-summary__row--discount items-discount-row",row.innerHTML='<span>Items Discount</span><span class="hdt-price-summary__discount hdt-money">'+formatted+"</span>",insertPriceSummaryRowBeforeShipping(row,subtotalContainer)}function insertPriceSummaryRowBeforeDivider(row,subtotalContainer){const divider=subtotalContainer&&subtotalContainer.querySelector(".hdt-price-summary__divider");return divider&&divider.parentNode?(divider.parentNode.insertBefore(row,divider),!0):!1}function paintPrepaidDiscountRow(cents,subtotalContainer){const amount=Number(cents);if(!amount||amount<=0||!subtotalContainer)return;const row=document.createElement("div");row.className="hdt-price-summary__row hdt-price-summary__row--discount prepaid-discount-row",row.innerHTML='<span>Prepaid Discount</span><span class="hdt-price-summary__discount hdt-money">-'+formatMoneyFromCartCents(amount)+"</span>",insertPriceSummaryRowBeforeDivider(row,subtotalContainer)}function discountAmountToCents(raw){const rawNum=Number(raw);return isFinite(rawNum)?Math.abs(rawNum-Math.round(rawNum))<1e-9&&rawNum>=1e4?Math.round(rawNum):Math.round(rawNum*100):0}function meaningfulCartDiscountCents(raw){const cents=Math.round(Number(raw));return isFinite(cents)&&cents>=1?cents:0}function computeOfferDiscountCentsFromCart(cart){if(cart&&cart._displaySource==="updatedCart"){const totalDiscount=meaningfulCartDiscountCents(cart.total_discount);if(totalDiscount>0)return totalDiscount;if(cart.discount&&cart.discount.total_discount!=null){const couponDiscount=discountAmountToCents(cart.discount.total_discount);if(couponDiscount>0)return couponDiscount}const orig=Number(cart.original_total_price)||0,net=Number(cart.total_price)||0;if(orig>net)return orig-net}let total=0;if((cart.cart_level_discount_applications||[]).forEach(function(app){const amt=app.total_allocated_amount!=null?Number(app.total_allocated_amount):Number(app.amount||0);amt>0&&(total+=amt)}),total>0||((cart.items||[]).forEach(function(item){(item.line_level_discount_allocations||[]).forEach(function(alloc){if((alloc.discount_application||{}).type==="discount_code"){const amt=Number(alloc.amount)||0;amt>0&&(total+=amt)}})}),total>0))return total;const attrs=cartAttributesObject(cart),attrAmt=Number(attrs.discount_amount);return attrAmt>0?Math.round(attrAmt*100):meaningfulCartDiscountCents(cart.total_discount)}function paintOfferDiscountRow(cart,subtotalContainer){const amt=computeOfferDiscountCentsFromCart(cart);if(!amt||amt<=0||!subtotalContainer)return;const applicableCode=(cart.discount_codes||[]).find(function(c){return c.applicable}),attrs=cartAttributesObject(cart),couponCode=applicableCode&&applicableCode.code||attrs.discount_code||"offer",row=document.createElement("div");row.className="hdt-price-summary__row hdt-price-summary__row--discount applied-coupon-discount",row.setAttribute("data-cart-summary-discount",""),row.setAttribute("data-coupon-code",String(couponCode).toLowerCase()),row.innerHTML="<span>"+(cart&&cart._displaySource==="updatedCart"?"Item Discounts":"Offer Discount")+'</span><span class="hdt-price-summary__discount hdt-money">-'+formatMoneyFromCartCents(amt)+"</span>",insertPriceSummaryRowBeforeShipping(row,subtotalContainer)}function computeHeaderSavingCents(cart){if(!cart)return 0;let total=computeProductItemsDiscountCents(cart);return hasAppliedCouponOnCart(cart)&&(total+=computeOfferDiscountCentsFromCart(cart)),Number(cart.item_count)>0&&(total+=computeCartTotals(cart).prepaidDiscountCents),total}function buildHeaderSavingBanner(){const banner=document.createElement("div");return banner.className="hdt-mini-cart__header-saving",banner.setAttribute("role","status"),banner.setAttribute("aria-live","polite"),banner.innerHTML='<div class="hdt-mini-cart__header-saving-row"><span class="hdt-mini-cart__header-saving-icon" aria-hidden="true"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16.8 8.3999L9.64043 15.5999L7.19995 13.1456" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="hdt-mini-cart__header-saving-message">You saved <strong></strong>
16 on this order</span></div><div class="hdt-mini-cart__header-cashback-row"><span class="hdt-mini-cart__header-cashback-icon" aria-hidden="true"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16.8 8.3999L9.64043 15.5999L7.19995 13.1456" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="hdt-mini-cart__header-cashback-message"></span></div>',banner}function updateHeaderSavingBanner(banner,savingCents,cashbackContent){if(!banner)return!1;const savingRow=banner.querySelector(".hdt-mini-cart__header-saving-row"),cashbackRow=banner.querySelector(".hdt-mini-cart__header-cashback-row"),hasSaving=Number(savingCents)>0,hasCashback=!!cashbackContent;if(savingRow)if(hasSaving){const formatted=formatMoneyFromCartCents(savingCents),strong=savingRow.querySelector("strong");strong&&formatted&&(strong.textContent=formatted),savingRow.style.display="flex"}else savingRow.style.display="none";if(cashbackRow){const messageEl=cashbackRow.querySelector(".hdt-mini-cart__header-cashback-message");hasCashback?(messageEl&&(cashbackContent.html?messageEl.innerHTML=cashbackContent.html:messageEl.textContent=cashbackContent.text||""),cashbackRow.style.display="flex"):(messageEl&&(messageEl.textContent="",messageEl.innerHTML=""),cashbackRow.style.display="none")}return hasSaving||hasCashback}function ensureHeaderSavingBannerStructure(banner){if(!banner)return null;if(banner.querySelector(".hdt-mini-cart__header-saving-row")&&banner.querySelector(".hdt-mini-cart__header-cashback-row"))return banner;const upgraded=buildHeaderSavingBanner();return banner.replaceWith(upgraded),upgraded}function syncHeaderSavingSlot(slot,savingCents,cashbackContent){if(!slot)return;const showBanner=Number(savingCents)>0||!!cashbackContent;let banner=slot.querySelector(".hdt-mini-cart__header-saving");if(!showBanner){banner&&banner.remove();return}banner?banner=ensureHeaderSavingBannerStructure(banner):(banner=buildHeaderSavingBanner(),slot.appendChild(banner)),updateHeaderSavingBanner(banner,savingCents,cashbackContent)}function getCashbackDataFromCart(cart){const discount=cart&&cart.discount;if(discount){if(discount.cashback_data)return discount.cashback_data;if(discount.cashbackData)return discount.cashbackData}const stored=getDiscountFromStorage();return stored&&stored.data&&(stored.data.cashback_data||stored.data.cashbackData)||null}function resolveCashbackBannerContent(cashbackData){if(!cashbackData||typeof cashbackData!="object")return null;const amount=Number(cashbackData.amount);if(isFinite(amount)&&amount>0)return{html:"Cashback of <strong>\u20B9"+(Math.abs(amount-Math.round(amount))<1e-9?String(Math.round(amount)):String(amount))+"</strong> to be credited after delivery"};const customMessage=cashbackData.custom_message!=null?String(cashbackData.custom_message).trim():"";return customMessage?{text:customMessage}:null}function syncCartHeaderSaving(cart){if(!cart||typeof cart.item_count>"u")return;const displayCart=getDisplayCart(cart)||cart,savingCents=computeHeaderSavingCents(displayCart),cashbackContent=resolveCashbackBannerContent(getCashbackDataFromCart(displayCart)),showBanner=savingCents>0||!!cashbackContent,drawer=document.getElementById("CartDrawer");if(drawer){let banner=drawer.querySelector(".hdt-mini-cart__header-saving");if(!showBanner)banner&&banner.remove();else{if(banner)banner=ensureHeaderSavingBannerStructure(banner);else{banner=buildHeaderSavingBanner();const threshold=drawer.querySelector(".hdt-mini-cart__threshold"),wrap=drawer.querySelector(".hdt-mini-cart__wrap");threshold?drawer.insertBefore(banner,threshold):wrap?drawer.insertBefore(banner,wrap):drawer.appendChild(banner)}updateHeaderSavingBanner(banner,savingCents,cashbackContent)}}const popupSlot=document.querySelector("#coupon_view_all_root .coupon-full-saving-slot");syncHeaderSavingSlot(popupSlot,savingCents,cashbackContent)}function buildLineItemPriceHtml(item){const finalPrice=Number(item.final_price!=null?item.final_price:item.discounted_price!=null?item.discounted_price:item.price)||0,originalPrice=Number(item.original_price!=null?item.original_price:item.price)||finalPrice,lineFinal=item.final_line_price!=null?Number(item.final_line_price):finalPrice*(item.quantity||1);if(finalPrice===0||lineFinal===0)return'<div class="hdt-price__item hdt-price__list hdt-price__item--free hdt-price-wrapp"><hdt-compare-at-price class="hdt-compare-at-price"><span class="hdt-money">'+formatMoneyFromCartCents(originalPrice)+'</span></hdt-compare-at-price><span class="hdt-line-item-free-label">FREE</span></div>';const saleFormatted=formatMoneyFromCartCents(finalPrice),compareFormatted=formatMoneyFromCartCents(originalPrice),showCompare=originalPrice>finalPrice,discountPct=showCompare?Math.round((originalPrice-finalPrice)*100/originalPrice):0;let html='<div class="hdt-price__item hdt-price__list hdt-price-wrapp">';return html+='<hdt-price class="hdt-price"><span class="sr-only">Sale price</span><span class="hdt-money">'+saleFormatted+"</span></hdt-price>",showCompare&&(html+='<hdt-compare-at-price class="hdt-compare-at-price"><span class="sr-only">Regular price</span><span class="hdt-money">'+compareFormatted+"</span></hdt-compare-at-price>"),discountPct>
160&&(html+='<span class="hdt-line-discount-percentage">'+discountPct+"%OFF</span>"),html+="</div>",html}function syncCartLineItemPrices(displayCart){!displayCart||!Array.isArray(displayCart.items)||displayCart.items.forEach(function(item){const variantId=item.variant_id;variantId&&document.querySelectorAll('hdt-line-item[data-variant-id="'+variantId+'"]').forEach(function(lineEl){const priceWrap=lineEl.querySelector(".hdt-mini-cart__price");priceWrap&&(priceWrap.innerHTML=buildLineItemPriceHtml(item))})})}function syncPriceSummaryFromCart(shopifyCartHint){const shopifyCart=shopifyCartHint&&typeof shopifyCartHint.item_count<"u"?shopifyCartHint:state.lastCartData||lastCartData,cart=getDisplayCart(shopifyCart);if(!cart||typeof cart.item_count>"u")return;syncCartLineItemPrices(cart);const totals=computeCartTotals(cart);syncHighValueCartRestriction(totals.toPayCents);const toPay=formatMoneyFromCartCents(totals.toPayCents);document.querySelectorAll(".hdt-cart-totals-discounts").forEach(function(subtotalContainer){syncShippingDisplayInPriceSummary(cart,subtotalContainer);const orderTotalEl=subtotalContainer.querySelector("[data-price-summary-order-total]"),orderTotalCents=totals.orderTotalCents;if(orderTotalEl)orderTotalEl.textContent=formatMoneyFromCartCents(orderTotalCents);else{const firstMoney=subtotalContainer.querySelector(".hdt-price-summary__row .hdt-money");firstMoney&&(firstMoney.textContent=formatMoneyFromCartCents(orderTotalCents))}removeDynamicPriceSummaryDiscountRows(subtotalContainer);const itemsDisc=computeProductItemsDiscountCents(cart);(hasAppliedCouponOnCart(cart)?computeOfferDiscountCentsFromCart(cart):0)>0?paintOfferDiscountRow(cart,subtotalContainer):itemsDisc>0&&paintItemsDiscountRow(itemsDisc,subtotalContainer),cart.item_count>0&&paintPrepaidDiscountRow(totals.prepaidDiscountCents,subtotalContainer)}),toPay&&updateCartDrawerToPayDisplays(toPay),syncCartHeaderSaving(cart)}function getPriceSummaryShippingRow(subtotalContainer){return subtotalContainer&&subtotalContainer.querySelector(".hdt-price-summary__row--shipping")||null}function insertPriceSummaryRowBeforeShipping(row,subtotalContainer){const shippingRow=getPriceSummaryShippingRow(subtotalContainer);if(shippingRow&&shippingRow.parentNode)return shippingRow.parentNode.insertBefore(row,shippingRow),!0;const divider=subtotalContainer&&subtotalContainer.querySelector(".hdt-price-summary__divider");return divider&&divider.parentNode?(divider.parentNode.insertBefore(row,divider),!0):!1}function showItemsDiscountRow(totalDiscountCents){const amount=Number(totalDiscountCents);if(!amount||amount<=0){removeItemsDiscountRow();return}const subtotalContainer=document.querySelector(".hdt-cart-totals-discounts");subtotalContainer&&(removeItemsDiscountRow(),paintItemsDiscountRow(amount,subtotalContainer))}function syncShippingDisplayInPriceSummary(cart,subtotalContainer){const shippingWrap=(subtotalContainer||document).querySelector(".hdt-price-summary__row--shipping .hdt-price-summary__shipping");if(!shippingWrap||!cart)return;const feeFormatted=formatMoneyFromCartCents(SHIPPING_FEE_CENTS);getCartNetSubtotalCents(cart)>FREE_SHIPPING_THRESHOLD_CENTS?shippingWrap.innerHTML='<span class="hdt-price-summary__free">Free</span><span class="hdt-price-summary__shipping-cut hdt-money">'+feeFormatted+"</span>":shippingWrap.innerHTML='<span class="hdt-money">'+feeFormatted+"</span>"}function updateCartDrawerToPayDisplays(formattedText){formattedText&&(document.querySelectorAll(".hdt-price-summary__row--total .hdt-mini-cart__value").forEach(function(el){el.textContent=formattedText}),document.querySelectorAll(".hdt-mini-cart__checkout-pay-amount").forEach(function(el){el.textContent=formattedText}))}function applyCartDrawerToPayFromCart(cart){syncPriceSummaryFromCart(cart)}async function syncCartDrawerToPayFromShopifyCart(cartHint){const shopifyCart=cartHint||state.lastCartData||lastCartData;if(shopifyCart&&typeof shopifyCart.item_count<"u"){applyCartDrawerToPayFromCart(shopifyCart);return}try{const r=await fetch("/cart.js");if(!r.ok)return;const cart=await r.json();cacheCartData(cart),applyCartDrawerToPayFromCart(cart)}catch{}}function normalizeCouponLabelForDedupe(s){return String(s||"").trim().toLowerCase().replace(/\s+/g," ")}function trackCouponAnalyticsEvent(eventName,couponCode){const normalizedCode=String(couponCode||"").trim();if(!normalizedCode)return;const payload={coupon_name:normalizedCode,couponName:normalizedCode};window.dataLayer=window.dataLayer||[],window.dataLayer.push(Object.assign({event:eventName},payload));try{typeof window.trackME=="function"&&window.trackME(eventName,payload)}catch(e){console.warn("MoEngage track failed:",eventName,e)}}function pushCouponSuccessToDataLayer(couponCode){trackCouponAnalyticsEvent("coupon_success",couponCode)}function pushCouponAppliedToDataLayer(couponCode){trackCouponAnalyticsEvent("coupon_applied",couponCode),trackCouponAnalyticsEvent("applyCoupon",couponCode)}function pushCouponRemovedToDataLayer(couponCode){trackCouponAnalyticsEvent("coupon_removed",couponCode)}window.pushCouponSuccessToDataLayer=pushCouponSuccessToDataLayer,window.pushCouponAppliedToDataLayer=pushCouponAppliedToDataLayer,window.pushCouponRemovedToDataLayer=pushCouponRemovedToDataLayer;
16function removeShopifyPriceSummaryRowsMatchingCoupon(subtotalContainer,couponCode,discountData){const codeNorm=normalizeCouponLabelForDedupe(couponCode),titleNorm=normalizeCouponLabelForDedupe(discountData&&(discountData.title||discountData.discount_title||discountData.message));subtotalContainer.querySelectorAll(".hdt-price-summary__row--discount:not(.applied-coupon-discount)").forEach(function(row){const labelEl=row.querySelector("span");if(!labelEl)return;const labelNorm=normalizeCouponLabelForDedupe(labelEl.textContent);if(labelNorm){if(codeNorm&&labelNorm===codeNorm){row.remove();return}titleNorm&&labelNorm===titleNorm&&row.remove()}})}function showDiscountInSubtotal(discountData,couponCode,updatedCart){window.appliedDiscount={code:couponCode,amount:discountData&&discountData.total_discount||0,total:discountData&&discountData.total_price||0,data:discountData},saveDiscountToStorage(discountData,couponCode,updatedCart),restoreDiscount(state.lastCartData||lastCartData)}function restoreDiscount(cartHint){const shopifyCart=cartHint||state.lastCartData||lastCartData;if(shopifyCart&&typeof shopifyCart.item_count<"u"){syncPriceSummaryFromCart(shopifyCart);return}syncCartDrawerToPayFromShopifyCart()}function cancelRevalidateDebounce(){clearTimeout(state.discountRevalidateDebounceTimer),state.discountRevalidateDebounceTimer=null,state.highValueCartDeferForCoupon&&!state.discountRevalidateInFlight&&(state.highValueCartDeferForCoupon=!1)}async function clearInvalidAppliedCoupon(couponCode,cartData){cancelRevalidateDebounce(),window.couponCheckInProgress=!0,state.couponCheckInProgress=!0;var compositionChanged=!1;try{const cartBeforeRemove=cartData;try{await removeCouponAPI(couponCode,cartData)}catch{}const updatedCart=await clearDiscountCartAttributes();compositionChanged=!isCartCompositionUnchanged(cartBeforeRemove,updatedCart||cartData),document.cookie="discount_code=; path=/; max-age=0",clearDiscountFromStorage(),clearFreeProductsFromStorage(),compositionChanged?resetCouponListCache():state.lastAppliedCode="";const discountRow=document.querySelector(".applied-coupon-discount");discountRow&&discountRow.remove(),hideFreeProductsInCart(),window.appliedDiscount=null,restoreManualCouponInput(),await refreshCart(updatedCart),await syncCartDrawerToPayFromShopifyCart(updatedCart||state.lastCartData)}finally{setTimeout(function(){window.couponCheckInProgress=!1,state.couponCheckInProgress=!1,compositionChanged?typeof window.loadCoupons=="function"&&window.loadCoupons(!0,state.lastCartData):reRenderCouponsFromCacheAfterRemove()},1e3)}}function restoreCouponSession(cartHint,options){const opts=options||{},delay=opts.immediate?0:100,cart=cartHint||state.lastCartData;rehydrateCouponsFromCache(),cart&&typeof cart.item_count<"u"?syncPriceSummaryFromCart(cart):syncCartDrawerToPayDebounced(),setTimeout(restoreFreeProductsInCart,delay+20),setTimeout(initManualCouponInput,delay+50),setTimeout(restoreManualCouponInput,delay+100),!opts.skipListLoad&&typeof window.loadCoupons=="function"&&window.loadCoupons(opts.forceListRefresh===!0,cartHint||state.lastCartData)}async function revalidateAppliedDiscount(cartHint){const storedDiscount=getDiscountFromStorage();if(!storedDiscount||!storedDiscount.code)return flushHighValueCartAfterCouponSettle(),!1;if(state.discountRevalidateInFlight)return!1;if(window.couponCheckInProgress||state.couponCheckInProgress)return state.highValueCartDeferForCoupon=!1,!1;const couponCode=storedDiscount.code,requestId=++state.discountRevalidateRequestId;state.discountRevalidateInFlight=!0;var releaseCouponRemovalBarrier=beginCouponRemovalBarrier();try{let cartData=cartHint||state.lastCartData||lastCartData;if(!cartData||typeof cartData.item_count>"u"){const cartResponse=await fetch("/cart.js");if(!cartResponse.ok)throw new Error("Failed to fetch cart");cartData=await cartResponse.json()}if(requestId!==state.discountRevalidateRequestId)return!1;if(cacheCartData(cartData),!cartData.item_count){clearDiscountFromStorage(),clearFreeProductsFromStorage();const discountRow=document.querySelector(".applied-coupon-discount");return discountRow&&discountRow.remove(),hideFreeProductsInCart(),window.appliedDiscount=null,await syncCartDrawerToPayFromShopifyCart(cartData),!0}const snapshot=getAppliedCouponUpdatedCart();if(state.couponSnapshotRefreshedAt&&Date.now()-state.couponSnapshotRefreshedAt<3e4&&snapshot&&isCouponSnapshotFresh(snapshot,cartData)){restoreDiscount(cartData);const storedForFree=getDiscountFromStorage();if(storedForFree&&storedForFree.code){const freeStored=getFreeProductsFromStorage();freeStored&&freeStored.code===storedForFree.code&&syncFreeProductsUi(freeStored.items||[],storedForFree.code,cartData)}
16return renderOutsideCouponsFromCache(),!0}const result=await applyCouponAPI(couponCode,cartData);if(requestId!==state.discountRevalidateRequestId)return!1;if(!result.success)return restoreDiscount(cartData),!1;const appliedCoupon=resolveValidAppliedCoupon(result,couponCode);if(appliedCoupon){const discountData=result.data?.updatedCart?.discount||appliedCoupon,updatedCartForStorage=result.data?.updatedCart||storedDiscount.updatedCart||null;showDiscountInSubtotal(discountData,couponCode,updatedCartForStorage);const freeProducts=appliedCoupon.free_products||[];return syncFreeProductsUi(freeProducts,couponCode,cartData),renderOutsideCouponsFromCache(couponCode),!0}return await clearInvalidAppliedCoupon(couponCode,cartData),!0}catch(error){return console.error("Error revalidating applied discount:",error),restoreDiscount(state.lastCartData),!1}finally{endCouponRemovalBarrier(releaseCouponRemovalBarrier),requestId===state.discountRevalidateRequestId&&(state.discountRevalidateInFlight=!1),flushHighValueCartAfterCouponSettle()}}function hasRunColdStartRevalidation(){try{if(sessionStorage.getItem(COLD_START_REVALIDATE_KEY)==="1")return!0}catch{}return state.coldStartRevalidateDone===!0}function markColdStartRevalidationRun(){state.coldStartRevalidateDone=!0;try{sessionStorage.setItem(COLD_START_REVALIDATE_KEY,"1")}
16catch{}}function unmarkColdStartRevalidationRun(){state.coldStartRevalidateDone=!1;try{sessionStorage.removeItem(COLD_START_REVALIDATE_KEY)}catch{}}function revalidateAppliedDiscountOncePerSession(cartHint){hasRunColdStartRevalidation()||getDiscountFromStorage()?.code&&(state.discountRevalidateInFlight||window.couponCheckInProgress||state.couponCheckInProgress||(markColdStartRevalidationRun(),state.highValueCartDeferForCoupon=!0,Promise.resolve(revalidateAppliedDiscount(cartHint)).then(function(evaluated){evaluated||unmarkColdStartRevalidationRun()}).catch(function(){unmarkColdStartRevalidationRun()})))}function revalidateAppliedDiscountDebounced(){getDiscountFromStorage()?.code&&(window.couponCheckInProgress||state.couponCheckInProgress||(clearTimeout(state.discountRevalidateDebounceTimer),state.discountRevalidateDebounceTimer=setTimeout(function(){state.discountRevalidateDebounceTimer=null,revalidateAppliedDiscount(state.lastCartData)},DEBOUNCE_DELAY)))}window.removeCouponFn=async function(code,buttonElement){const couponCode=code||buttonElement&&buttonElement.getAttribute("data-code")||window.appliedDiscount&&window.appliedDiscount.code||getDiscountFromStorage()&&getDiscountFromStorage().code;if(!couponCode)return;const fromPopup=!!(buttonElement&&buttonElement.closest&&buttonElement.closest("#coupon_view_all_root")||isViewAllPopupOpen());state.couponCelebrationTimer&&(clearTimeout(state.couponCelebrationTimer),state.couponCelebrationTimer=null),state.couponCelebration&&(hideCouponApplyCelebration(state.couponCelebration.code),state.couponCelebration=null),clearPopupTrayCelebrations(),state.popupInputError="",state.popupCardError=null,state.popupApplySource=null,cancelRevalidateDebounce(),window.couponCheckInProgress=!0,state.couponCheckInProgress=!0;var releaseCouponRemovalBarrier=beginCouponRemovalBarrier(),cartLoaderScope=startCartActionLoader(null,buttonElement);fromPopup&&startPopupOverlayLoader();var compositionChanged=!1;let originalText="Remove";buttonElement&&(originalText=buttonElement.innerHTML,buttonElement.innerHTML="Removing...",buttonElement.style.pointerEvents="none");try{const cartResponse=await fetch("/cart.js");if(!cartResponse.ok)throw new Error("Failed to fetch cart");const cartData=await cartResponse.json();cacheCartData(cartData);const cartBeforeRemove=cartData,result=await removeCouponAPI(couponCode,cartData);if(result.success)if(result.data?.coupons?.find(c=>c.code?.toLowerCase()===couponCode.toLowerCase()&&c.removed)){pushCouponRemovedToDataLayer(couponCode),cancelRevalidateDebounce();const updatedCart=await clearDiscountCartAttributes();compositionChanged=!isCartCompositionUnchanged(cartBeforeRemove,updatedCart||cartData),document.cookie="discount_code=; path=/; max-age=0",clearDiscountFromStorage(),compositionChanged?resetCouponListCache():state.lastAppliedCode="";const discountRow=document.querySelector(".applied-coupon-discount");discountRow&&discountRow.remove(),clearFreeProductsFromStorage(),hideFreeProductsInCart(),window.appliedDiscount=null,buttonElement&&(buttonElement.innerHTML="Apply",buttonElement.classList.remove("cpnBtn-remove"),buttonElement.onclick=function(){window.applyCouponFn(couponCode,this)}),await refreshCart(updatedCart),await syncCartDrawerToPayFromShopifyCart(updatedCart||state.lastCartData),isViewAllPopupOpen()&&(syncViewAllPopupAppliedCode(),syncViewAllPopupInputState(),refreshViewAllPopupBodyIfOpen())}else{const errorMsg=result.data?.coupons?.find(c=>c.code?.toLowerCase()===couponCode.toLowerCase())?.error_message||"Failed to remove coupon";buttonElement&&(buttonElement.innerHTML=originalText,buttonElement.style.pointerEvents="auto")}else throw new Error(result.error||"Failed to remove coupon")}catch(error){console.error("Error removing coupon:",error),buttonElement&&(buttonElement.innerHTML=originalText,buttonElement.style.pointerEvents="auto")}finally{fromPopup&&endPopupOverlayLoader(),endCartActionLoader(cartLoaderScope),endCouponRemovalBarrier(releaseCouponRemovalBarrier),setTimeout(()=>{window.couponCheckInProgress=!1,state.couponCheckInProgress=!1,compositionChanged?typeof window.loadCoupons=="function"&&window.loadCoupons(!0):reRenderCouponsFromCac
16heAfterRemove()},1e3)}},window.applyCouponFn=async function(code,buttonElement){if(!code)return;if(!buttonElement){console.warn("applyCouponFn: button element required");return}const fromPopup=!!(buttonElement.closest&&buttonElement.closest("#coupon_view_all_root"));var cartLoaderScope=startCartActionLoader(null,buttonElement);fromPopup&&startPopupOverlayLoader();const originalText=buttonElement.innerHTML;buttonElement.innerHTML="Applying...",buttonElement.style.pointerEvents="none",cancelRevalidateDebounce(),window.couponCheckInProgress=!0,state.couponCheckInProgress=!0;var compositionChanged=!1;try{const cartResponse=await fetch("/cart.js");if(!cartResponse.ok)throw new Error("Failed to fetch cart");const cartData=await cartResponse.json();cacheCartData(cartData);const cartBeforeApply=cartData,result=await applyCouponAPI(code,cartData);if(result.success){const appliedCoupon=resolveValidAppliedCoupon(result,code);if(appliedCoupon){const applyUpdatedCart=result.data?.updatedCart||null,discountData=applyUpdatedCart?.discount||appliedCoupon;document.cookie=`discount_code=${code}; path=/; max-age=${3600*24*7}`,compositionChanged=!isCartCompositionUnchanged(cartBeforeApply,cartData),state.pendingApplyCompositionChanged=compositionChanged,showDiscountInSubtotal(discountData,code,applyUpdatedCart),pushCouponAppliedToDataLayer(code),pushCouponSuccessToDataLayer(code);const freeProducts=appliedCoupon.free_products||[];syncFreeProductsUi(freeProducts,code,cartData);let celebrationSavingsLine="";if(state.lastCouponList){const listCoupon=state.lastCouponList.find(function(c){return String(c&&c.code||"").toLowerCase()===code.toLowerCase()});listCoupon&&(celebrationSavingsLine=resolveCouponSavingsLine(listCoupon))}if(!celebrationSavingsLine){const liveCard=findCouponCardElement(code),savingsEl=liveCard&&liveCard.querySelector(".coupon-savings");savingsEl&&(celebrationSavingsLine=savingsEl.textContent.trim())}if(state.lastCouponList&&state.lastCouponList.length&&renderAvailableOffersWidget(state.lastCouponList,state.lastCouponList.filter(function(c){return String(c&&c.offerType||"").toLowerCase()==="store_offer"}),code.toLowerCase()),fromPopup){state.popupApplySource="card",state.popupCardError=null,clearPopupInputError();let popupSavingsLine=celebrationSavingsLine;if(!popupSavingsLine){const saved=formatCouponCelebrationSavings(discountData,"");saved&&(popupSavingsLine="You saved "+saved)}state.popupCardCelebration={code:code.toLowerCase(),until:Date.now()+COUPON_APPLY_CELEBRATION_MS,savingsLine:popupSavingsLine},buttonElement.innerHTML=originalText,buttonElement.style.pointerEvents="auto",syncViewAllPopupAppliedCode(),await refreshCart(cartData),refreshViewAllPopupBodyIfOpen(),showPopupCardCelebration(code.toLowerCase(),popupSavingsLine),schedulePopupCardCelebrationEnd()}else state.couponCelebration={code:code.toLowerCase(),until:Date.now()+COUPON_APPLY_CELEBRATION_MS,discountData,savingsLine:celebrationSavingsLine},buttonElement.innerHTML=originalText,buttonElement.style.pointerEvents="none",state.couponCelebrationPendingCart=cartData,showCouponApplyCelebration(code.toLowerCase(),discountData,celebrationSavingsLine),scheduleCouponCelebrationEnd()}else{clearAllCouponApplyCelebrations();const errorMsg=findInvalidCouponEntry(result,code)?.error_message||"Coupon could not be applied";fromPopup?(state.popupApplySource="card",state.popupCardError={code:code.toLowerCase(),message:errorMsg},buttonElement.innerHTML=originalText,buttonElement.style.pointerEvents="auto",refreshViewAllPopupBodyIfOpen()):(buttonElement.innerHTML="Failed",buttonElement.classList.add("cpnBtn-failed"),setTimeout(()=>{buttonElement.innerHTML=originalText,buttonElement.classList.remove("cpnBtn-failed"),buttonElement.style.pointerEvents="auto"},2e3))}}else throw new Error(result.error||"Failed to apply coupon")}catch(error){console.error("Error applying coupon:",error),clearAllCouponApplyCelebrations(),fromPopup?(state.popupApplySource="card",state.popupCardError={code:String(code||"").toLowerCase(),message:error.message||"Coupon could not be applied"},buttonElement.innerHTML=originalText,buttonElement.style.pointerEvents="auto",refreshViewAllPopupBodyIfOpen()):(buttonElement.innerHTML="Failed",buttonElement.classList.add("cpnBtn-failed"),setTimeout(()=>{buttonElement.innerHTML=originalText,buttonElement.classList.remove("cpnBtn-failed"),buttonElement.style.pointerEvents="auto"},2e3))}finally{fromPopup&&endPopupOverlayLoader(),endCartActionLoader(cartLoaderScope),setTimeout(function(){!isCouponCelebrationActive()&&!isPopupInputCelebrationActive()&&!isPopupCardCelebrationActive()?finalizeCouponApplyCelebration({compositionChanged}):(window.couponCheckInProgress=!1,state.couponCheckInProgress=!1)},1e3)}},window.applyManualCouponFn=async function(buttonElement){const root=buttonElement&&buttonElement.closest?buttonElement.closest("[data-copy-code-root]"):null,fields=getManualCouponFields(root)||getManualCouponFields(getCouponUiRoots()[0]),inputField=fields&&fields.inputField,applyButton=fields&&fields.applyButton;if(!inputField||!applyButton)return;const code=inputField.value.trim().toUpperCase();if(!code){inputField.focus();return}var cartLoaderScope=startCartActionLoader(null,buttonElement);cancelRevalidateDebounce(),window.couponCheckInProgress=!0,state.couponCheckInProgress=!0,clearManualCouponError(fields);let manualApplyHadError=!1;applyButton.innerHTML="Applying...",applyButton.style.pointerEvents="none",inputField.disabled=!0;try{const cartResponse=await fetch("/cart.js");if(!cartResponse.ok)throw new Error("Failed to fetch cart");const cartData=await cartResponse.json();cacheCartData(cartData);const result=await applyCouponAPI(code,cartData);if(result.success){const appliedCoupon=resolveValidAppliedCoupon(result,code);
16if(appliedCoupon){const applyUpdatedCart=result.data?.updatedCart||null,discountData=applyUpdatedCart?.discount||appliedCoupon;document.cookie=`discount_code=${code}; path=/; max-age=${3600*24*7}`,showDiscountInSubtotal(discountData,code,applyUpdatedCart),pushCouponAppliedToDataLayer(code),pushCouponSuccessToDataLayer(code);const freeProducts=appliedCoupon.free_products||[];syncFreeProductsUi(freeProducts,code,cartData);let celebrationSavingsLine="";const saved=formatCouponCelebrationSavings(discountData,"");saved&&(celebrationSavingsLine="You saved "+saved),state.manualCouponCelebration={code:code.toLowerCase(),until:Date.now()+COUPON_APPLY_CELEBRATION_MS,discountData,savingsLine:celebrationSavingsLine},state.manualInputCardScrollLock=!0,state.manualCouponCarouselRenderedFor="",state.manualCouponCelebrationShown=!1,state.lastCouponList&&state.lastCouponList.length&&renderAvailableOffersWidget(state.lastCouponList,state.lastCouponList.filter(function(c){return String(c&&c.offerType||"").toLowerCase()==="store_offer"}),code.toLowerCase()),await refreshCart(cartData),carouselHasCouponCards()||rehydrateCouponsFromCache(),await new Promise(function(resolve){requestAnimationFrame(function(){requestAnimationFrame(resolve)})}),finishManualCouponApplyPresentation()}else{clearAllCouponApplyCelebrations();const errorMsg=findInvalidCouponEntry(result,code)?.error_message||"Coupon could not be applied";manualApplyHadError=!0,applyButton.innerHTML="APPLY",applyButton.classList.remove("cpnBtn-failed","cpnBtn-applied","cpnBtn-remove"),applyButton.classList.add("cpnBtn"),applyButton.style.pointerEvents="auto",applyButton.onclick=function(){window.applyManualCouponFn(this)},inputField.value=code,inputField.disabled=!1,setManualCouponError(fields,errorMsg)}}else throw new Error(result.error||"Failed to apply coupon")}catch(error){console.error("Error applying manual coupon:",error),clearAllCouponApplyCelebrations(),manualApplyHadError=!0,applyButton.innerHTML="APPLY",applyButton.classList.remove("cpnBtn-failed","cpnBtn-applied","cpnBtn-remove"),applyButton.classList.add("cpnBtn"),applyButton.style.pointerEvents="auto",applyButton.onclick=function(){window.applyManualCouponFn(this)},inputField.disabled=!1,setManualCouponError(fields,error.message||"Coupon could not be applied")}finally{endCartActionLoader(cartLoaderScope),setTimeout(function(){window.couponCheckInProgress=!1,state.couponCheckInProgress=!1,!isManualCouponCelebrationActive()&&!manualApplyHadError&&typeof window.loadCoupons=="function"&&window.loadCoupons(!0)},1e3)}},window.applyViewAllCouponFn=async function(buttonEl){const els=getViewAllPopupElements();if(!els||!els.input||!buttonEl)return;const stored=getDiscountFromStorage(),appliedCode=stored&&stored.code?String(stored.code):"";if(appliedCode){var cartLoaderScope=startCartActionLoader(getPopupCartLoaderScope(),buttonEl);startPopupOverlayLoader();const originalText2=buttonEl.textContent;buttonEl.textContent="Removing...",buttonEl.style.pointerEvents="none";try{clearPopupInputError(),state.popupCardError=null,await window.removeCouponFn(appliedCode,null),els.input.value="",els.input.disabled=!1,els.input.classList.remove("coupon-full-input--error"),buttonEl.textContent="Apply",buttonEl.classList.add("is-disabled"),buttonEl.style.pointerEvents="none",syncViewAllPopupAppliedCode(),refreshViewAllPopupBodyIfOpen()}finally{endPopupOverlayLoader(),endCartActionLoader(cartLoaderScope),getDiscountFromStorage()?.code||(buttonEl.textContent="Apply")}return}const code=String(els.input.value||"").trim().toUpperCase();if(!code){els.input.focus();return}var cartLoaderScope=startCartActionLoader(getPopupCartLoaderScope(),buttonEl);startPopupOverlayLoader(),cancelRevalidateDebounce(),window.couponCheckInProgress=!0,state.couponCheckInProgress=!0,clearPopupInputError(),state.popupCardError=null,state.popupApplySource="text";const originalText=buttonEl.textContent;buttonEl.textContent="Applying...",buttonEl.style.pointerEvents="none",els.input.disabled=!0;let popupApplyHadError=!1;var compositionChanged=!1;try{const currentApplied=getDiscountFromStorage()?.code;currentApplied&&currentApplied.toLowerCase()!==code.toLowerCase()&&await window.removeCouponFn(currentApplied,null);const cartResponse=await fetch("/cart.js");if(!cartResponse.ok)throw new Error("Failed to fetch cart");const cartData=await cartResponse.json();cacheCartData(cartData);const cartBeforeApply=cartData,result=await applyCouponAPI(code,cartData);if(result.success){const appliedCoupon=resolveValidAppliedCoupon(result,code);
16if(appliedCoupon){const applyUpdatedCart=result.data?.updatedCart||null,discountData=applyUpdatedCart?.discount||appliedCoupon;document.cookie=`discount_code=${code}; path=/; max-age=${3600*24*7}`,compositionChanged=!isCartCompositionUnchanged(cartBeforeApply,cartData),state.pendingApplyCompositionChanged=compositionChanged,showDiscountInSubtotal(discountData,code,applyUpdatedCart),pushCouponAppliedToDataLayer(code),pushCouponSuccessToDataLayer(code);const freeProducts=appliedCoupon.free_products||[];syncFreeProductsUi(freeProducts,code,cartData);let celebrationSavingsLine="";const saved=formatCouponCelebrationSavings(discountData,"");saved&&(celebrationSavingsLine=saved),state.popupInputCelebration={code:code.toLowerCase(),until:Date.now()+COUPON_APPLY_CELEBRATION_MS,discountData,savingsLine:celebrationSavingsLine},els.input.value=code,els.input.disabled=!0,buttonEl.textContent="Remove",buttonEl.classList.remove("is-disabled"),buttonEl.style.pointerEvents="auto",showPopupInputCelebration(code,discountData,celebrationSavingsLine),schedulePopupInputCelebrationEnd(),state.lastCouponList&&state.lastCouponList.length&&renderAvailableOffersWidget(state.lastCouponList,state.lastCouponList.filter(function(c){return String(c&&c.offerType||"").toLowerCase()==="store_offer"}),code.toLowerCase()),syncViewAllPopupAppliedCode(),refreshViewAllPopupBodyIfOpen(),await refreshCart(cartData)}else{clearAllCouponApplyCelebrations();const errorMsg=findInvalidCouponEntry(result,code)?.error_message||"Coupon could not be applied";popupApplyHadError=!0,els.input.value=code,els.input.disabled=!1,setPopupInputError(errorMsg)}}else throw new Error(result.error||"Failed to apply coupon")}catch(error){console.error("View-all popup apply error:",error),clearAllCouponApplyCelebrations(),popupApplyHadError=!0,els.input.disabled=!1,setPopupInputError(error.message||"Coupon could not be applied")}finally{if(endPopupOverlayLoader(),endCartActionLoader(cartLoaderScope),!isPopupInputCelebrationActive())if(popupApplyHadError){buttonEl.textContent="Apply";const empty=!String(els.input.value||"").trim();buttonEl.classList.toggle("is-disabled",empty),buttonEl.style.pointerEvents=empty?"none":"auto"}else syncViewAllPopupInputState();!isPopupInputCelebrationActive()&&!isPopupCardCelebrationActive()&&setTimeout(function(){finalizeCouponApplyCelebration({compositionChanged})},1e3)}},window.removeManualCouponFn=async function(buttonElement){const root=buttonElement&&buttonElement.closest?buttonElement.closest("[data-copy-code-root]"):null,fields=getManualCouponFields(root)||getManualCouponFields(getCouponUiRoots()[0]),inputField=fields&&fields.inputField,applyButton=fields&&fields.applyButton,couponCode=inputField?.value?.trim()||getDiscountFromStorage()&&getDiscountFromStorage().code;if(!couponCode)return;state.manualCouponCelebrationTimer&&(clearTimeout(state.manualCouponCelebrationTimer),state.manualCouponCelebrationTimer=null),state.manualCouponCelebration=null,state.manualInputCardScrollLock=!1,state.manualCouponCarouselRenderedFor="",state.manualCouponCelebrationShown=!1,hideManualCouponCelebration(),clearManualCouponError(fields),cancelRevalidateDebounce(),window.couponCheckInProgress=!0,state.couponCheckInProgress=!0;var cartLoaderScope=startCartActionLoader(null,buttonElement),compositionChanged=!1;const originalText=buttonElement.innerHTML;buttonElement.innerHTML="Removing...",buttonElement.style.pointerEvents="none";try{const cartResponse=await fetch("/cart.js");if(!cartResponse.ok)throw new Error("Failed to fetch cart");const cartData=await cartResponse.json();cacheCartData(cartData);const cartBeforeRemove=cartData,result=await removeCouponAPI(couponCode,cartData);if(result.success)if(result.data?.coupons?.find(c=>c.code?.toLowerCase()===couponCode.toLowerCase()&&c.removed)){pushCouponRemovedToDataLayer(couponCode),cancelRevalidateDebounce();const updatedCart=await clearDiscountCartAttributes();compositionChanged=!isCartCompositionUnchanged(cartBeforeRemove,updatedCart||cartData),document.cookie="discount_code=; path=/; max-age=0",clearDiscountFromStorage(),compositionChanged?resetCouponListCache():state.lastAppliedCode="";const discountRow=document.querySelector(".applied-coupon-discount");discountRow&&discountRow.remove(),clearFreeProductsFromStorage(),hideFreeProductsInCart(),window.appliedDiscount=null,applyButton&&(applyButton.innerHTML="APPLY",applyButton.classList.remove("cpnBtn-remove"),applyButton.classList.add("cpnBtn"),applyButton.style.pointerEvents="auto",applyButton.onclick=function(){window.applyManualCouponFn(this)}),inputField&&(inputField.value="",inputField.disabled=!1),await refreshCart(updatedCart),await syncCartDrawerToPayFromShopifyCart(updatedCart||state.lastCartData)}else throw new Error("Failed to remove coupon");else throw new Error(result.error||"Failed to remove coupon")}catch(error){console.error("Error removing manual coupon:",error),buttonElement.innerHTML=originalText,buttonElement.style.pointerEvents="auto"}finally{endCartActionLoader(cartLoaderScope),setTimeout(()=>{window.couponCheckInProgress=!1,state.couponCheckInProgress=!1,compositionChanged?typeof window.loadCoupons=="function"&&window.loadCoupons(!0):reRenderCouponsFromCac
16heAfterRemove()},1e3)}};function initManualCouponInput(){getCouponUiRoots().forEach(function(root){root.dataset.manualCouponDelegated!=="true"&&(root.dataset.manualCouponDelegated="true",root.addEventListener("input",function(e){const inputField=e.target&&e.target.closest?e.target.closest(".manual-coupon-code"):null;if(!inputField||!root.contains(inputField))return;const storedDiscount=getDiscountFromStorage();if(storedDiscount&&storedDiscount.code)return;inputField.value=inputField.value.toUpperCase();const fields=getManualCouponFields(root);clearManualCouponError(fields),syncManualApplyButtonStyle(fields)}),root.addEventListener("keypress",function(e){if(e.key!=="Enter")return;const inputField=e.target&&e.target.closest?e.target.closest(".manual-coupon-code"):null;if(!inputField||!root.contains(inputField))return;e.preventDefault();const fields=getManualCouponFields(root);fields&&fields.applyButton&&fields.applyButton.click()}))})}function syncCouponCarouselHeights(){const couponWrappers=Array.from(document.querySelectorAll(".coupon-card .coupon-wrapper"));if(!couponWrappers.length)return;let maxHeight=0;if(couponWrappers.forEach(el=>{const h=el.getBoundingClientRect().height;h>maxHeight&&(maxHeight=h)}),maxHeight<=0)return;const px=Math.ceil(maxHeight)+"px",manualWrapper=document.querySelector(".coupon-input-card .coupon-wrapper");manualWrapper&&(manualWrapper.style.height="",manualWrapper.style.minHeight="",manualWrapper.style.height=px);const viewAllCard=document.querySelector(".coupon-view-all-card");viewAllCard&&(viewAllCard.style.height="",viewAllCard.style.minHeight="",viewAllCard.style.height=px)}window.couponViewAllFn=function(){openCouponViewAllSheet()},window.closeCouponViewAllFn=function(){closeCouponViewAllSheet()},window.isCouponViewAllSheetOpenFn=function(){return isCouponViewAllSheetOpen()};function renderCouponsList(coupons,storeCarouselCoupons,appliedCouponCode){const parts=getAllCouponUiParts();if(!parts.length)return!1;const celebrationCode=state.manualCouponCelebration&&state.manualCouponCelebration.code?String(state.manualCouponCelebration.code).toLowerCase():"";if(isManualCouponCelebrationActive()&&celebrationCode&&state.manualCouponCarouselRenderedFor===celebrationCode&&carouselHasCouponCards())return refreshManualCouponCarouselUi(coupons,storeCarouselCoupons,appliedCouponCode);const container=parts[0].container,countText=parts[0].countText,carouselAppliedCode=getCarouselAppliedCodeForRender(appliedCouponCode||""),orderedCarouselCoupons=orderCarouselCouponsWithAppliedFirst(storeCarouselCoupons,carouselAppliedCode),couponCount=(storeCarouselCoupons||[]).length;if(!coupons||coupons.length===0)return parts.forEach(function(p){p.root.style.display="none"}),renderAvailableOffersWidget([],[],appliedCouponCode||""),state.lastRenderedHtml="",state.lastRenderKey="",!0;parts.forEach(function(p){p.root.style.display=""});const newCountText="Available offer"+(couponCount>1?"s":"")+" for you ("+couponCount+")",renderKey=JSON.stringify({applied:appliedCouponCode||"",celebrating:isCouponCelebrationActive()&&state.couponCelebration.code||"",count:couponCount,carousel:orderedCarouselCoupons.map(function(c){return{code:c.code||"",title:c.title||"",message:c.message||"",isApplicable:c.isApplicable!==!1,savingsLine:resolveCouponSavingsLine(c)}}),nector:!!(window.Shopify&&window.Shopify.nectorCoupon),total:coupons.length});state.couponSheetData={};let couponsHTML="";window.Shopify&&window.Shopify.nectorCoupon&&(couponsHTML+=window.Shopify.nectorCoupon),orderedCarouselCoupons.forEach(function(coupon){const isApplied=carouselAppliedCode&&coupon.code?.toLowerCase()===carouselAppliedCode;couponsHTML+=buildCouponCard(coupon,isApplied)}),state.viewAllCoupons=coupons,state.viewAllAppliedCouponCode=appliedCouponCode;const manualInputCardHTML=`
17        <div class="coupon-input-card">
18          <div class="coupon-wrapper">
19            <div class="coupon-panel">
20              <div class="coupon-content">
21                <h3>Have a coupon code</h3>
22                <div class="coupon-input-field">
23                  <input
24                    type="text"
25                    class="coupon-input manual-coupon-code"
26                    placeholder="Enter coupon code"
27                    autocomplete="off"
28                  >
29                </div>
30              </div>
31            </div>
32            <div class="coupon-code-area manual-coupon-code-area">
33              <div class="coupon-row manual-coupon-footer-row">
34                <div class="manual-coupon-error-message" data-manual-coupon-error hidden aria-live="polite"></div>
35                <span class="cpnBtn manual-apply-btn" onclick="window.applyManualCouponFn(this)">APPLY</span>
36              </div>
37            </div>
38          </div>
39        </div>
40      `,viewAllCardHTML='<div class="coupon-view-all-card gXMwoP"><button type="button" class="coupon-view-all-btn" aria-label="View all offers" onclick="window.couponViewAllFn && window.couponViewAllFn()"><span class="coupon-view-all-title">View All Offers</span><span class="coupon-view-all-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewBox="0 0 23 23" fill="none"><g id="Group 38116"><circle id="Ellipse 813" cx="11.5" cy="11.5" r="10.75" fill="white" stroke="#00AEEF" stroke-width="1.5"/><path id="Vector 53" d="M10.3867 8.16113L14.097 11.8714L10.3867 15.5816" stroke="#00AEEF" stroke-width="1.6" stroke-linecap="round"/></g></svg></span></button></div>';if(couponsHTML+=manualInputCardHTML,couponsHTML+=viewAllCardHTML,parts.every(function(p){return p.container.querySelector(".coupon-card")!==null&&state.lastRenderKey===renderKey&&p.container.dataset.couponRenderKey===renderKey}))return parts.forEach(function(p){p.countText.textContent!==newCountText&&(p.countText.textContent=newCountText),p.container.setAttribute("aria-busy","false")}),resumeCouponCelebrationAfterRender(),resumeManualCouponCelebrationAfterRender(),!1;isManualCouponCelebrationActive()&&celebrationCode&&(state.manualCouponCarouselRenderedFor=celebrationCode);const preserveManualInputScroll=state.manualInputCardScrollLock||isManualCouponCelebrationActive();return parts.forEach(function(p){p.countText.textContent=newCountText;const savedScroll=preserveManualInputScroll?p.container.scrollLeft:0;p.container.innerHTML=couponsHTML,preserveManualInputScroll&&(p.container.scrollLeft=savedScroll),p.container.dataset.couponRenderKey=renderKey,p.container.setAttribute("aria-busy","false")}),state.lastRenderedHtml=couponsHTML,state.lastRenderKey=renderKey,state.lastCountText=newCountText,renderAvailableOffersWidget(coupons,storeCarouselCoupons,appliedCouponCode),refreshViewAllPopupBodyIfOpen(),setTimeout(()=>{syncCouponCarouselHeights(),state.manualCouponCelebrationShown||(initManualCouponInput(),restoreManualCouponInput()),isManualCouponCelebrationActive()&&!state.manualCouponCelebrationShown?resumeManualCouponCelebrationAfterRender():(state.manualInputCardScrollLock||isManualCouponCelebrationActive())&&ensureManualCouponInputCardInView("auto")},50),setTimeout(syncCouponCarouselHeights,180),resumeCouponCelebrationAfterRender(),isManualCouponCelebrationActive()||resumeManualCouponCelebrationAfterRender(),!0}function rehydrateCouponsFromCache(){if(restoreCouponListFromPersistentCache(),!state.lastCouponList||!state.lastCouponList.length)return!1;const parts=getAllCouponUiParts();if(!parts.length)return!1;const storedDiscount=getDiscountFromStorage(),appliedCouponCode=storedDiscount&&storedDiscount.code?storedDiscount.code.toLowerCase():"";if(parts.every(function(p){return p.container.dataset.couponRenderKey===state.lastRenderKey&&p.container.querySelector(".coupon-card")!==null&&state.lastAppliedCode===appliedCouponCode&&!isCouponCelebrationActive()&&!isManualCouponCelebrationActive()}))return resumeCouponCelebrationAfterRender(),resumeManualCouponCelebrationAfterRender(),!0;const storeCarouselCoupons=state.lastCouponList.filter(function(coupon){return String(coupon&&coupon.offerType||"").toLowerCase()==="store_offer"});return state.lastAppliedCode=appliedCouponCode,isManualCouponCelebrationActive()&&carouselHasCouponCards()?refreshManualCouponCarouselUi(state.lastCouponList,storeCarouselCoupons,appliedCouponCode):(state.lastRenderKey="",renderCouponsList(state.lastCouponList,storeCarouselCoupons,appliedCouponCode),!0)}async function loadCoupons(forceRefresh=!1,cartHint=null){if(isCouponCelebrationActive()){state.pendingReload=!0;return}if(state.loadInFlight||isLoadingCoupons){state.pendingReload=!0;return}const parts=getAllCouponUiParts();if(!parts.length){scheduleOutsideCouponsLoadRetry(150,cartHint);return}
40const container=parts[0].container,countText=parts[0].countText,hasExistingCoupons=parts.some(function(p){return p.container.querySelector(".coupon-card")!==null}),hasServerSkeleton=parts.some(function(p){return p.container.querySelector("[data-coupon-skeleton]")!==null}),canRehydrate=!!(state.lastCouponList&&state.lastCouponList.length);if(!hasExistingCoupons&&!hasServerSkeleton&&!canRehydrate){const shimmerHTML=createShimmerUI();parts.forEach(function(p){p.container.innerHTML=shimmerHTML,p.countText.textContent="Loading offers..."})}else!hasExistingCoupons&&canRehydrate&&rehydrateCouponsFromCache();isLoadingCoupons=!0,state.loadInFlight=!0;try{let cartData=cartHint||lastCartData||state.lastCartData;const epochAtStart=state.cartCacheEpoch||0;if(!cartData||typeof cartData.item_count>"u"){const response=await fetch("/cart.js");if(!response.ok)throw new Error("Failed to fetch cart");const fetchedCart=await response.json();(state.cartCacheEpoch||0)>epochAtStart&&state.lastCartData&&typeof state.lastCartData.item_count<"u"?cartData=state.lastCartData:(cartData=fetchedCart,cacheCartData(cartData))}else cartHint&&cacheCartData(cartData);if((Number(cartData.item_count)||0)===0&&state.lastCartData&&(Number(state.lastCartData.item_count)||0)>0&&(state.cartCacheEpoch||0)>epochAtStart&&(cartData=state.lastCartData),state.couponRemovalBarrier&&(await state.couponRemovalBarrier,cartData=state.lastCartData||cartData),cartData.item_count===0){parts.forEach(function(p){p.root.style.display="none"});const emptyWidget=document.getElementById("available_offers_widget");emptyWidget&&(emptyWidget.hidden=!0,emptyWidget.innerHTML=""),state.lastCouponList=null,state.lastAppliedCode="",state.lastRenderKey="",state.lastRenderedHtml="",clearCouponListCache();return}const appliedCouponCode=getDiscountFromStorage()?.code?.toLowerCase()||"",coupons=await fetchCouponsFromAPI(cartData);if(coupons===null)return;let resolvedCoupons=coupons;if(!resolvedCoupons||!resolvedCoupons.length){if(appliedCouponCode)restoreCouponListFromPersistentCache(),appliedCouponCode&&state.lastCouponList&&state.lastCouponList.length&&(resolvedCoupons=state.lastCouponList);else if(resetCouponListCache(),forceRefresh)try{const freshResponse=await fetch("/cart.js");if(freshResponse.ok){const freshCart=await freshResponse.json();cacheCartData(freshCart);const retryCoupons=await fetchCouponsFromAPI(freshCart);retryCoupons!==null&&retryCoupons.length&&(resolvedCoupons=retryCoupons,cartData=freshCart)}}catch(retryErr){console.error("Coupon list retry after cart refresh failed:",retryErr)}}const storeCarouselCoupons=resolvedCoupons.filter(function(coupon){return String(coupon&&coupon.offerType||"").toLowerCase()==="store_offer"});resolvedCoupons&&resolvedCoupons.length?(state.lastCouponList=resolvedCoupons,saveCouponListCache(resolvedCoupons)):appliedCouponCode||resetCouponListCache(),state.lastAppliedCode=appliedCouponCode,appliedCouponCode||(state.lastRenderKey=""),!renderCouponsList(resolvedCoupons,storeCarouselCoupons,appliedCouponCode)&&!getAllCouponUiParts().length&&scheduleOutsideCouponsLoadRetry(150,cartData),document.dispatchEvent(new CustomEvent("coupons:list-updated",{detail:{coupons:resolvedCoupons,appliedCouponCode}}))}catch(error){console.error("Error loading coupons:",error),parts.forEach(function(p){p.container.innerHTML='<div class="coupon-error">Unable to load offers</div>'})}finally{isLoadingCoupons=!1,state.loadInFlight=!1,state.pendingReload&&(state.pendingReload=!1,setTimeout(function(){typeof window.loadCoupons=="function"&&window.loadCoupons(!0,state.lastCartData)},50))}}window[COUPONS_NS].loadCouponsDebounced||(window[COUPONS_NS].loadCouponsDebounced=debounce(function(cartHint){if(typeof window.loadCoupons!="function")return;let hint=cartHint;(hint&&(Number(hint.item_count)||0)===0&&state.lastCartData&&(Number(state.lastCartData.item_count)||0)>0||!hint||typeof hint.item_count>"u")&&(hint=state.lastCartData),window.loadCoupons(!0,hint)},DEBOUNCE_DELAY,"loadCoupons"));const loadCouponsDebounced=window[COUPONS_NS].loadCouponsDebounced;window[COUPONS_NS].syncCartDrawerToPayDebounced||(window[COUPONS_NS].syncCartDrawerToPayDebounced=debounce(function(){typeof window.syncCartDrawerToPayFromShopifyCart=="function"&&window.syncCartDrawerToPayFromShopifyCart(state.lastCartData)},DEBOUNCE_DELAY,"syncCartDrawerToPay"));const syncCartDrawerToPayDebounced=window[COUPONS_NS].syncCartDrawerToPayDebounced;function restoreManualCouponInput(){forEachManualCouponRoot(function(fields){const inputField=fields.inputField,applyButton=fields.applyButton;if(!inputField||!applyButton)return;const storedDiscount=getDiscountFromStorage();storedDiscount&&storedDiscount.code?(clearManualCouponError(fields),inputField.value=storedDiscount.code.toUpperCase(),inputField.disabled=!0,applyButton.innerHTML="Remove",applyButton.classList.add("cpnBtn","cpnBtn-remove"),applyButton.onclick=function(){window.removeManualCouponFn(this)}):(inputField.disabled=!1,state.manualCouponError?setManualCouponError(fields,state.manualCouponError):clearManualCouponError(fields),applyButton.innerHTML="APPLY",applyButton.classList.remove("cpnBtn-remove"),applyButton.classList.add("cpnBtn"),applyButton.onclick=function(){window.applyManualCouponFn(this)}),syncManualApplyButtonStyle(fields)}),resumeManualCouponCelebrationAfterRender()}function initCouponsAndDiscount(){if(Promise.resolve(ensureDiscountCartAttributesClean(state.lastCartData)).then(function(cart){const known=cart||state.lastCartData;return Promise.resolve(stripUnknownDiscountCodes(known)).then(function(stripped){return stripped||known})}).then(function(cart){return clearCartIfFreeItemHasNoCoupon(cart||state.lastCartData)}).catch(function(){}
40),rehydrateCouponsFromCache(),revalidateAppliedDiscountOncePerSession(state.lastCartData),!state.listenersAttached){getDiscountFromStorage()?.code?restoreCouponSession(state.lastCartData,{forceListRefresh:!1}):(loadCoupons(!1,state.lastCartData),state.lastCartData?syncPriceSummaryFromCart(state.lastCartData):syncCartDrawerToPayDebounced(),setTimeout(restoreFreeProductsInCart,120),setTimeout(initManualCouponInput,150),setTimeout(restoreManualCouponInput,200));return}if(syncStaleCouponRoots(),getDiscountFromStorage()?.code){const hasCouponCards=getAllCouponUiParts().some(function(p){return p.container&&p.container.querySelector(".coupon-card")});restoreCouponSession(state.lastCartData,{forceListRefresh:!hasCouponCards,skipListLoad:hasCouponCards})}else state.lastCartData&&syncPriceSummaryFromCart(state.lastCartData),setTimeout(restoreFreeProductsInCart,120),setTimeout(initManualCouponInput,150),setTimeout(restoreManualCouponInput,200)}function bootCopyCodeCouponUi(){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initCouponsAndDiscount):initCouponsAndDiscount(),attachCouponSheetUiOnce(),schedulePreloadCouponSuccessAssets()}if(window.__copyCodeCouponUiBoot=bootCopyCodeCouponUi,bootCopyCodeCouponUi(),!state.listenersAttached){let handleCartDataUpdate2=function(event){const cart=event?.detail?.cart;if(window.couponCheckInProgress||state.couponCheckInProgress){getDiscountFromStorage()?.code&&rehydrateCouponsFromCache(),cart&&typeof cart=="object"&&Array.isArray(cart.items)&&cacheCartData(cart),setTimeout(function(){restoreDiscount(cart||state.lastCartData)},100),setTimeout(restoreFreeProductsInCart,120);return}const previousCart=state.lastCartData,cartCompositionUnchanged=cart&&typeof cart=="object"&&Array.isArray(cart.items)&&previousCart&&isCartCompositionUnchanged(previousCart,cart);cart&&previousCart&&!cartCompositionUnchanged&&!getDiscountFromStorage()?.code&&clearStaleCouponInputErrors(),getDiscountFromStorage()?.code&&(state.highValueCartDeferForCoupon=!0),cart&&typeof cart=="object"&&Array.isArray(cart.items)?(cacheCartData(cart),syncPriceSummaryFromCart(cart)):syncCartDrawerToPayDebounced(),cartCompositionUnchanged&&rehydrateCouponsFromCache(),getDiscountFromStorage()?.code?revalidateAppliedDiscountDebounced():(state.highValueCartDeferForCoupon=!1,setTimeout(function(){restoreDiscount(cart||state.lastCartData)},100),setTimeout(restoreFreeProductsInCart,120)),cartCompositionUnchanged||loadCouponsDebounced(cart||state.lastCartData)},handleCartRefreshRestore2=function(event){const cart=event?.detail?.cart;if(window.couponCheckInProgress||state.couponCheckInProgress){cart&&typeof cart=="object"&&Array.isArray(cart.items)&&cacheCartData(cart),setTimeout(function(){restoreDiscount(cart||state.lastCartData)},100),setTimeout(restoreFreeProductsInCart,120);return}if(cart&&typeof cart=="object"&&Array.isArray(cart.items)){if(cacheCartData(cart),maybeNormalizeSplitPaidLines(cart))return;syncPriceSummaryFromCart(cart)}rehydrateCouponsFromCache(),setTimeout(function(){restoreDiscount(cart||state.lastCartData)},100),setTimeout(restoreFreeProductsInCart,120),setTimeout(restoreManualCouponInput,200),setTimeout(function(){cart&&!state.splitLineNormalizationInFlight&&maybeNormalizeSplitPaidLines(cart)},500)},handleCartDrawerRender2=function(){reapplyHighValueCartRestrictionOnDrawerRender();const cart=state.lastCartData;if(window.couponCheckInProgress||state.couponCheckInProgress){setTimeout(function(){restoreDiscount(cart)},100),setTimeout(restoreFreeProductsInCart,120);return}if(getDiscountFromStorage()?.code){if(cart&&maybeNormalizeSplitPaidLines(cart))return;restoreCouponSession(cart,{skipListLoad:!0})}else rehydrateCouponsFromCache(),cart&&syncPriceSummaryFromCart(cart),setTimeout(restoreFreeProductsInCart,120),setTimeout(restoreManualCouponInput,200)};var handleCartDataUpdate=handleCartDataUpdate2,handleCartRefreshRestore=handleCartRefreshRestore2,handleCartDrawerRender=handleCartDrawerRender2;state.listenersAttached=!0,state.manualHeightListenerAttached||(state.manualHeightListenerAttached=!0,window.addEventListener("resize",debounce(syncCouponCarouselHeights,120,"couponCarouselHeight"))),document.addEventListener("cart:change",handleCartDataUpdate2),document.addEventListener("cart:refresh",handleCartRefreshRestore2),document.addEventListener("cart:drawer:render",handleCartDrawerRender2)}window.HS_SLIDE_CART_LOADED=initCouponsAndDiscount,window.HS_SLIDE_CART_UPDATED=initCouponsAndDiscount,window.HS_SLIDE_CART_OPENED=initCouponsAndDiscount,window.fetchCouponsFromAPI=fetchCouponsFromAPI,window.getDiscountFromStorage=getDiscountFromStorage,window.buildCouponCard=buildCouponCard,window.loadCoupons=loadCoupons,window.rehydrateCouponsFromCac
40he=rehydrateCouponsFromCache,window.restoreCouponSession=restoreCouponSession,window.resetCouponListCache=resetCouponListCache,window.showDiscountInSubtotal=showDiscountInSubtotal,window.revalidateAppliedDiscount=revalidateAppliedDiscount,window.saveDiscountToStorage=saveDiscountToStorage,window.clearDiscountFromStorage=clearDiscountFromStorage,window.clearDiscountCartAttributes=clearDiscountCartAttributes,window.ensureDiscountCartAttributesClean=ensureDiscountCartAttributesClean,window.closeCouponOfferSheet=closeCouponOfferSheet,window.syncCartDrawerToPayFromShopifyCart=syncCartDrawerToPayFromShopifyCart,window.syncPriceSummaryFromCart=syncPriceSummaryFromCart,window.getCartTotals=getCartTotals,window.getDisplayCart=getDisplayCart,window.showFreeProductsInCart=showFreeProductsInCart,window.hideFreeProductsInCart=hideFreeProductsInCart,window.restoreFreeProductsInCart=restoreFreeProductsInCart,window.saveFreeProductsToStorage=saveFreeProductsToStorage,window.getFreeProductsFromStorage=getFreeProductsFromStorage,window.clearFreeProductsFromStorage=clearFreeProductsFromStorage,window.forEachManualCouponRoot=forEachManualCouponRoot,window.maybeNormalizeSplitPaidLines=maybeNormalizeSplitPaidLines})();
41//# sourceMappingURL=/cdn/shop/t/80/assets/copy-code.js.map?v=50500376356668477671789554704

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.