{
  "version": 3,
  "sources": ["/cdn/shop/t/117/assets/cart-metrics.js?utm_bot_source=7516fd43adaa"],
  "sourcesContent": ["\ndocument.addEventListener('DOMContentLoaded', function() {\n  // console.log('[Cart metrics] Script initialized');\n  let startTimestamp = null;\n  let currentOperation = null; // Tracks 'atc', 'delete', or 'update'\n  let cartUpdateDebounceTimer = null;\n  const debounceDelay = 300;\n\n  // --- Helper: Push to Data Layer ---\n  function pushToDataLayer(operation, duration) {\n    const finalDuration = (duration / 1000).toFixed(3);\n    window.dataLayer.push({\n      event: 'cart-perf-metrics',\n      cart_operation: operation,\n      Env: 'Production',\n      Duration: finalDuration + 's',\n      Duration_Value: parseFloat(finalDuration) // Recommended for averages in GA4\n    });\n    // console.log(`[Cart metrics] ${operation} took ${finalDuration}s`);\n  }\n  function handleCartUpdate() {\n    if (cartUpdateDebounceTimer) clearTimeout(cartUpdateDebounceTimer);\n\n    cartUpdateDebounceTimer = setTimeout(function() {\n      if (startTimestamp) {\n        const endTimestamp = performance.now();\n        const duration = endTimestamp - startTimestamp - debounceDelay;\n        // console.log('[Cart metrics] final Duration:',duration)\n        pushToDataLayer(currentOperation, duration);\n        // Reset\n        startTimestamp = null;\n        currentOperation = null;\n        document.documentElement.removeEventListener('wetheme-cart-update', handleCartUpdate);\n      }\n    }, debounceDelay);\n  }\n  // --- 1. Track Add to Cart (ATC) ---\n  function logAtcStart() {\n    startTimestamp = performance.now();\n    // console.log('[Cart metrics] ATC Event started at:', startTimestamp);\n    currentOperation = 'add_to_cart';\n    document.documentElement.addEventListener('wetheme-cart-update', handleCartUpdate);\n    // console.log('[Cart metrics] Product Add To Cart started');\n  }\n\n  document.querySelectorAll('.custom-add-to-bag, .quick-add-button').forEach(btn => {\n    btn.addEventListener('click', logAtcStart);\n  });\n  document.addEventListener('click', (event) => {\n    // Check if the clicked element (or its parent) matches your button classes\n    const btn = event.target.closest('.quick-add-button.minicart-upsell-btn');\n\n    if (btn) {\n      logAtcStart(event);\n      // console.log('Upsell Add to Cart Triggered');\n    }\n  });\n\n  // ---  Track Side-Cart Interactions (Delete & Update) ---\n  // We use delegation because these buttons are often re-rendered dynamically\n // --- 1. General Click Listener (for Delete and Update) ---\n  document.addEventListener('click', function(e) {\n    const target = e.target;\n    // Delete Button\n    const deleteBtn = target.closest('.sidecart-item__remove');\n    if (deleteBtn) {\n      startTimestamp = performance.now();\n      currentOperation = 'item_delete';\n      document.documentElement.addEventListener('wetheme-cart-update', handleCartUpdate, { once: true });\n      // console.log('[Cart metrics] Delete started');\n    }\n    // Quantity Update\n    const qtyBtn = target.closest('.sidecart-item__qty-btn, .sidecart-item__qty-input');\n    if (qtyBtn) {\n      startTimestamp = performance.now();\n      currentOperation = 'quantity_update';\n      document.documentElement.addEventListener('wetheme-cart-update', handleCartUpdate, { once: true });\n      // console.log('[Cart metrics] Quantity update started');\n    }\n\n    // Remove Coupon\n    const removeCoupon = target.closest('.limoniapps-discountninja-cartdiscountfield-discountcode-close');\n    if (removeCoupon) {\n      startTimestamp = performance.now();\n      currentOperation = 'remove_discount_coupon';\n      document.documentElement.addEventListener('wetheme-cart-update', handleCartUpdate, { once: true });\n      // console.log('[Cart metrics] Remove Coupon started');\n    }\n  });\n  // --- Coupon Apply Listener (Moved Outside with Capture) ---\n  // We use 'capture: true' to intercept the click before other scripts stop it\n  document.addEventListener('click', function(e) {\n    const couponBtn = e.target.closest('.limoniapps-discountninja-cartdiscountfield-apply');\n    if (couponBtn) {\n      startTimestamp = performance.now();\n      currentOperation = 'apply_coupon';\n      // Stop the timer when Discount Ninja finishes its own update\n      document.addEventListener('la:dn:cart:updated', handleCartUpdate, { once: true });\n      // Fallback for standard theme updates\n      document.documentElement.addEventListener('wetheme-cart-update', handleCartUpdate, { once: true });\n      // console.log('[Cart metrics] Coupon apply started');\n    }\n  }, { capture: true });\n\n});"],
  "mappings": "AACA,SAAS,iBAAiB,mBAAoB,UAAW,CAEvD,IAAI,eAAiB,KACjB,iBAAmB,KACnB,wBAA0B,KAC9B,MAAM,cAAgB,IAGtB,SAAS,gBAAgB,UAAW,SAAU,CAC5C,MAAM,eAAiB,SAAW,KAAM,QAAQ,CAAC,EACjD,OAAO,UAAU,KAAK,CACpB,MAAO,oBACP,eAAgB,UAChB,IAAK,aACL,SAAU,cAAgB,IAC1B,eAAgB,WAAW,aAAa,CAC1C,CAAC,CAEH,CACA,SAAS,kBAAmB,CACtB,yBAAyB,aAAa,uBAAuB,EAEjE,wBAA0B,WAAW,UAAW,CAC9C,GAAI,eAAgB,CAElB,MAAM,SADe,YAAY,IAAI,EACL,eAAiB,cAEjD,gBAAgB,iBAAkB,QAAQ,EAE1C,eAAiB,KACjB,iBAAmB,KACnB,SAAS,gBAAgB,oBAAoB,sBAAuB,gBAAgB,CACtF,CACF,EAAG,aAAa,CAClB,CAEA,SAAS,aAAc,CACrB,eAAiB,YAAY,IAAI,EAEjC,iBAAmB,cACnB,SAAS,gBAAgB,iBAAiB,sBAAuB,gBAAgB,CAEnF,CAEA,SAAS,iBAAiB,uCAAuC,EAAE,QAAQ,KAAO,CAChF,IAAI,iBAAiB,QAAS,WAAW,CAC3C,CAAC,EACD,SAAS,iBAAiB,QAAU,OAAU,CAEhC,MAAM,OAAO,QAAQ,uCAAuC,GAGtE,YAAY,KAAK,CAGrB,CAAC,EAKD,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,GAIpF,OAAO,QAAQ,oDAAoD,IAEhF,eAAiB,YAAY,IAAI,EACjC,iBAAmB,kBACnB,SAAS,gBAAgB,iBAAiB,sBAAuB,iBAAkB,CAAE,KAAM,EAAK,CAAC,GAK9E,OAAO,QAAQ,gEAAgE,IAElG,eAAiB,YAAY,IAAI,EACjC,iBAAmB,yBACnB,SAAS,gBAAgB,iBAAiB,sBAAuB,iBAAkB,CAAE,KAAM,EAAK,CAAC,EAGrG,CAAC,EAGD,SAAS,iBAAiB,QAAS,SAAS,EAAG,CAC3B,EAAE,OAAO,QAAQ,mDAAmD,IAEpF,eAAiB,YAAY,IAAI,EACjC,iBAAmB,eAEnB,SAAS,iBAAiB,qBAAsB,iBAAkB,CAAE,KAAM,EAAK,CAAC,EAEhF,SAAS,gBAAgB,iBAAiB,sBAAuB,iBAAkB,CAAE,KAAM,EAAK,CAAC,EAGrG,EAAG,CAAE,QAAS,EAAK,CAAC,CAEtB,CAAC",
  "names": []
}
