{
  "version": 3,
  "sources": ["/cdn/shop/t/967/assets/cart-metrics.js?utm_bot_source=7516fd43adaa"],
  "sourcesContent": ["\r\nlet startTimestamp = null;\r\nlet currentOperation = null;\r\nlet cartUpdateDebounceTimer = null;\r\nconst debounceDelay = 300;\r\n\r\n// --- Helper: Push to Data Layer ---\r\nfunction pushToDataLayer(operation, duration) {\r\n  if (!window.dataLayer) return;\r\n  const finalDuration = (duration / 1000).toFixed(3);\r\n  window.dataLayer.push({\r\n    event: 'cart-perf-metrics',\r\n    cart_operation: operation,\r\n    Env: 'Naked Discounts',\r\n    Duration: finalDuration + 's',\r\n    Duration_Value: parseFloat(finalDuration)\r\n  });\r\n  console.log(`[Cart metrics] ${operation} took ${finalDuration}s`);\r\n}\r\n\r\nfunction handleCartUpdate() {\r\n  if (cartUpdateDebounceTimer) clearTimeout(cartUpdateDebounceTimer);\r\n\r\n  cartUpdateDebounceTimer = setTimeout(function() {\r\n    if (startTimestamp) {\r\n      const endTimestamp = performance.now();\r\n      const duration = endTimestamp - startTimestamp - debounceDelay;\r\n      pushToDataLayer(currentOperation, duration);\r\n      // Reset\r\n      startTimestamp = null;\r\n      currentOperation = null;\r\n      document.documentElement.removeEventListener('wetheme-cart-update', handleCartUpdate);\r\n    }\r\n  }, debounceDelay);\r\n}\r\n\r\n// --- 1. Track Add to Cart (ATC) ---\r\nfunction logAtcStart() {\r\n  startTimestamp = performance.now();\r\n  currentOperation = 'add_to_cart';\r\n  document.documentElement.addEventListener('wetheme-cart-update', handleCartUpdate);\r\n}\r\n\r\ndocument.querySelectorAll('.custom-add-to-bag, .quick-add-button').forEach(btn => {\r\n  btn.addEventListener('click', logAtcStart);\r\n});\r\ndocument.addEventListener('click', (event) => {\r\n  const btn = event.target.closest('.quick-add-button.minicart-upsell-btn');\r\n  if (btn) {\r\n    logAtcStart(event);\r\n  }\r\n});\r\n\r\n// ---  Track Side-Cart Interactions (Delete & Update) ---\r\ndocument.addEventListener('click', function(e) {\r\n  const target = e.target;\r\n  // Delete Button\r\n  const deleteBtn = target.closest('.sidecart-item__remove');\r\n  if (deleteBtn) {\r\n    startTimestamp = performance.now();\r\n    currentOperation = 'item_delete';\r\n    document.documentElement.addEventListener('wetheme-cart-update', handleCartUpdate, { once: true });\r\n  }\r\n  // Quantity Update\r\n  const qtyBtn = target.closest('.sidecart-item__qty-btn, .sidecart-item__qty-input');\r\n  if (qtyBtn) {\r\n    startTimestamp = performance.now();\r\n    currentOperation = 'quantity_update';\r\n    document.documentElement.addEventListener('wetheme-cart-update', handleCartUpdate, { once: true });\r\n  }\r\n});\r\n\r\n// --- Coupon Apply Listener ---\r\n// Capture click on Apply button and Enter key on discount input\r\nfunction startCouponApplyTimer() {\r\n  startTimestamp = performance.now();\r\n  currentOperation = 'apply_coupon';\r\n  document.addEventListener('cart-discount:applied', handleCartUpdate, { once: true });\r\n}\r\ndocument.addEventListener('click', function(e) {\r\n  if (e.target.closest('.cart-discount__button')) {\r\n    startCouponApplyTimer();\r\n  }\r\n}, { capture: true });\r\ndocument.addEventListener('keydown', function(e) {\r\n  if (e.key === 'Enter' && e.target.closest('.cart-discount__input')) {\r\n    startCouponApplyTimer();\r\n  }\r\n}, { capture: true });\r\n\r\n// --- Token Discount (auto-applied from URL ?token= param) ---\r\nif (new URLSearchParams(window.location.search).get('token')) {\r\n  startCouponApplyTimer();\r\n}\r\n\r\n// --- Coupon Remove Listener ---\r\n// We use 'capture: true' to intercept the click before the component calls stopPropagation\r\ndocument.addEventListener('click', function(e) {\r\n  const removeCoupon = e.target.closest('.cart-discount__pill-remove');\r\n  if (removeCoupon) {\r\n    startTimestamp = performance.now();\r\n    currentOperation = 'remove_discount_coupon';\r\n    document.documentElement.addEventListener('wetheme-cart-update', handleCartUpdate, { once: true });\r\n  }\r\n}, { capture: true });\r\n"],
  "mappings": "AACA,IAAI,eAAiB,KACjB,iBAAmB,KACnB,wBAA0B,KAC9B,MAAM,cAAgB,IAGtB,SAAS,gBAAgB,UAAW,SAAU,CAC5C,GAAI,CAAC,OAAO,UAAW,OACvB,MAAM,eAAiB,SAAW,KAAM,QAAQ,CAAC,EACjD,OAAO,UAAU,KAAK,CACpB,MAAO,oBACP,eAAgB,UAChB,IAAK,kBACL,SAAU,cAAgB,IAC1B,eAAgB,WAAW,aAAa,CAC1C,CAAC,EACD,QAAQ,IAAI,kBAAkB,SAAS,SAAS,aAAa,GAAG,CAClE,CAEA,SAAS,kBAAmB,CACtB,yBAAyB,aAAa,uBAAuB,EAEjE,wBAA0B,WAAW,UAAW,CAC9C,GAAI,eAAgB,CAElB,MAAM,SADe,YAAY,IAAI,EACL,eAAiB,cACjD,gBAAgB,iBAAkB,QAAQ,EAE1C,eAAiB,KACjB,iBAAmB,KACnB,SAAS,gBAAgB,oBAAoB,sBAAuB,gBAAgB,CACtF,CACF,EAAG,aAAa,CAClB,CAGA,SAAS,aAAc,CACrB,eAAiB,YAAY,IAAI,EACjC,iBAAmB,cACnB,SAAS,gBAAgB,iBAAiB,sBAAuB,gBAAgB,CACnF,CAEA,SAAS,iBAAiB,uCAAuC,EAAE,QAAQ,KAAO,CAChF,IAAI,iBAAiB,QAAS,WAAW,CAC3C,CAAC,EACD,SAAS,iBAAiB,QAAU,OAAU,CAChC,MAAM,OAAO,QAAQ,uCAAuC,GAEtE,YAAY,KAAK,CAErB,CAAC,EAGD,SAAS,iBAAiB,QAAS,SAAS,EAAG,CAC7C,MAAM,OAAS,EAAE,OAEC,OAAO,QAAQ,wBAAwB,IAEvD,eAAiB,YAAY,IAAI,EACjC,iBAAmB,cACnB,SAAS,gBAAgB,iBAAiB,sBAAuB,iBAAkB,CAAE,KAAM,EAAK,CAAC,GAGpF,OAAO,QAAQ,oDAAoD,IAEhF,eAAiB,YAAY,IAAI,EACjC,iBAAmB,kBACnB,SAAS,gBAAgB,iBAAiB,sBAAuB,iBAAkB,CAAE,KAAM,EAAK,CAAC,EAErG,CAAC,EAID,SAAS,uBAAwB,CAC/B,eAAiB,YAAY,IAAI,EACjC,iBAAmB,eACnB,SAAS,iBAAiB,wBAAyB,iBAAkB,CAAE,KAAM,EAAK,CAAC,CACrF,CACA,SAAS,iBAAiB,QAAS,SAAS,EAAG,CACzC,EAAE,OAAO,QAAQ,wBAAwB,GAC3C,sBAAsB,CAE1B,EAAG,CAAE,QAAS,EAAK,CAAC,EACpB,SAAS,iBAAiB,UAAW,SAAS,EAAG,CAC3C,EAAE,MAAQ,SAAW,EAAE,OAAO,QAAQ,uBAAuB,GAC/D,sBAAsB,CAE1B,EAAG,CAAE,QAAS,EAAK,CAAC,EAGhB,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE,IAAI,OAAO,GACzD,sBAAsB,EAKxB,SAAS,iBAAiB,QAAS,SAAS,EAAG,CACxB,EAAE,OAAO,QAAQ,6BAA6B,IAEjE,eAAiB,YAAY,IAAI,EACjC,iBAAmB,yBACnB,SAAS,gBAAgB,iBAAiB,sBAAuB,iBAAkB,CAAE,KAAM,EAAK,CAAC,EAErG,EAAG,CAAE,QAAS,EAAK,CAAC",
  "names": []
}
