{
  "version": 3,
  "sources": ["/cdn/shop/t/27/assets/pg-atc-tracking.js?nocache=1783652327406"],
  "sourcesContent": ["/*\n  Phantasmagorical: reliable \"Added to Cart\" tracking for Klaviyo.\n  WHY: the theme + iCart add to cart via AJAX (/cart/add.js) and the\n  Shopify-native Added to Cart event under-fires, which starved Klaviyo's\n  Added to Cart metric and its abandoned-cart flow. This intercepts every\n  /cart/add call (theme Add to Bag, iCart, quick-add) and fires a single\n  reliable Klaviyo 'Added to Cart' event with full cart context.\n  Upgrade-safe: loaded via snippets/theme-globals.liquid. No core files touched.\n*/\n(function () {\n  'use strict';\n  if (window.__pgAtcTrackingInstalled) return;\n  window.__pgAtcTrackingInstalled = true;\n\n  var origFetch = window.fetch ? window.fetch.bind(window) : null;\n\n  function klaviyoTrack(eventName, props) {\n    // Modern klaviyo.js exposes a global object with a .track() method.\n    // The legacy array-command push(['track', ...]) is NOT supported by it,\n    // so call track() directly and fall back to the _learnq queue.\n    try {\n      var k = window.klaviyo;\n      if (k && typeof k.track === 'function') { k.track(eventName, props); return; }\n      var lq = window._learnq || (window._learnq = []);\n      lq.push(['track', eventName, props]);\n    } catch (e) { /* no-op */ }\n  }\n\n  function money(cents) { return (typeof cents === 'number') ? cents / 100 : cents; }\n\n  function isAddUrl(url) {\n    if (!url) return false;\n    try { url = String(url); } catch (e) { return false; }\n    return /\\/cart\\/add(\\.js)?(\\?|$)/.test(url);\n  }\n\n  function fireAddedToCart(addedItem) {\n    var getCart = origFetch\n      ? origFetch('/cart.js', { headers: { 'Accept': 'application/json' }, credentials: 'same-origin' }).then(function (r) { return r.json(); })\n      : Promise.resolve(null);\n\n    getCart.then(function (cart) {\n      var item = addedItem || {};\n      var items = (cart && cart.items) || [];\n      var itemNames = items.map(function (i) { return i.product_title || i.title; });\n      var props = {\n        '$value': cart ? money(cart.total_price) : money(item.price),\n        'AddedItemProductName': item.product_title || item.title,\n        'AddedItemProductID': item.product_id,\n        'AddedItemVariantID': item.variant_id || item.id,\n        'AddedItemSKU': item.sku,\n        'AddedItemPrice': money(item.price),\n        'AddedItemQuantity': item.quantity,\n        'AddedItemURL': item.url ? (location.origin + item.url) : location.href,\n        'AddedItemImageURL': item.image || (item.featured_image && item.featured_image.url),\n        'ItemNames': itemNames,\n        'ItemCount': cart ? cart.item_count : item.quantity,\n        'CheckoutURL': location.origin + '/checkout',\n        'Items': items.map(function (i) {\n          return {\n            ProductID: i.product_id,\n            SKU: i.sku,\n            ProductName: i.product_title || i.title,\n            Quantity: i.quantity,\n            ItemPrice: money(i.price),\n            RowTotal: money(i.line_price),\n            ProductURL: location.origin + i.url,\n            ImageURL: i.image\n          };\n        })\n      };\n      klaviyoTrack('Added to Cart', props);\n      try { document.dispatchEvent(new CustomEvent('pg:added-to-cart', { detail: props })); } catch (e) {}\n    }).catch(function () {\n      klaviyoTrack('Added to Cart', {\n        '$value': money((addedItem && addedItem.price) || 0),\n        'AddedItemProductName': addedItem && (addedItem.product_title || addedItem.title),\n        'AddedItemVariantID': addedItem && (addedItem.variant_id || addedItem.id),\n        'AddedItemQuantity': addedItem && addedItem.quantity,\n        'CheckoutURL': location.origin + '/checkout'\n      });\n    });\n  }\n\n  // Intercept fetch (theme + most modern cart/drawer apps)\n  if (window.fetch) {\n    window.fetch = function (input, init) {\n      var url = (input && input.url) ? input.url : input;\n      var isAdd = isAddUrl(url);\n      var p = origFetch(input, init);\n      if (isAdd) {\n        p.then(function (res) {\n          if (res && res.ok) {\n            res.clone().json().then(function (data) {\n              var item = data && data.items ? data.items[0] : data;\n              fireAddedToCart(item);\n            }).catch(function () { fireAddedToCart(null); });\n          }\n        }).catch(function () {});\n      }\n      return p;\n    };\n  }\n\n  // Intercept XMLHttpRequest (jQuery / legacy / some app adds)\n  var origOpen = XMLHttpRequest.prototype.open;\n  var origSend = XMLHttpRequest.prototype.send;\n  XMLHttpRequest.prototype.open = function (method, url) {\n    this.__pgIsAdd = isAddUrl(url);\n    return origOpen.apply(this, arguments);\n  };\n  XMLHttpRequest.prototype.send = function () {\n    if (this.__pgIsAdd) {\n      var xhr = this;\n      this.addEventListener('load', function () {\n        if (xhr.status >= 200 && xhr.status < 300) {\n          var data = null;\n          try { data = JSON.parse(xhr.responseText); } catch (e) {}\n          var item = data && data.items ? data.items[0] : data;\n          fireAddedToCart(item);\n        }\n      });\n    }\n    return origSend.apply(this, arguments);\n  };\n})();\n"],
  "mappings": "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",
  "names": []
}
