{
  "version": 3,
  "sources": ["/cdn/shop/t/132/assets/ns-native-promo-cart-guard-v1-refreshfix.js?ns_refresh_loop_qa=20260805g"],
  "sourcesContent": ["(function () {\n  var cartState = null;\n  var handling = false;\n  function routesRoot() { return window.Shopify && window.Shopify.routes && window.Shopify.routes.root || '/'; }\n  function requestJson(url, options) { return fetch(url, options).then(function (response) { return response.json().catch(function () { return {}; }).then(function (payload) { if (!response.ok) throw new Error(payload.description || payload.message || 'The cart could not be updated.'); return payload; }); }); }\n  function property(item, name) { return item && item.properties ? item.properties[name] : null; }\n  function bundles(cart) { var grouped = {}; (cart.items || []).forEach(function (item) { var token = property(item, '_NS promotion bundle'); if (!token) return; (grouped[token] || (grouped[token] = [])).push(item); }); return grouped; }\n  function valid(items) { var offers = items.filter(function (item) { return property(item, '_NS promotion offer') === 'true'; }); var gifts = items.filter(function (item) { return property(item, '_NS promotion gift') === 'true'; }); return offers.length === 1 && offers[0].quantity >= 1 && gifts.length === 1 && gifts[0].quantity === 1; }\n  function remainingCodes(cart, codes) { return (cart.discount_codes || []).map(function (discount) { return discount.code; }).filter(function (code) { return code && codes.indexOf(String(code).toUpperCase()) === -1; }); }\n  function hasActiveCodeChange(cart, codes) { var activeCodes = (cart.discount_codes || []).map(function (discount) { return String(discount && discount.code || '').toUpperCase(); }); return codes.some(function (code) { return activeCodes.indexOf(String(code).toUpperCase()) !== -1; }); }\n  function cleanup(cart) {\n    var updates = {}, removeCodes = [];\n    Object.keys(bundles(cart)).forEach(function (token) {\n      var items = bundles(cart)[token];\n      if (valid(items)) return;\n      var offers = items.filter(function (item) { return property(item, '_NS promotion offer') === 'true'; });\n      var gifts = items.filter(function (item) { return property(item, '_NS promotion gift') === 'true'; });\n      // A customer may remove a gift. Keep every paid saber line and remove\n      // only an orphaned gift and the native code that applied to it.\n      gifts.forEach(function (item) { updates[item.key] = 0; });\n      var code = property((offers[0] || gifts[0] || items[0]), '_NS promotion key');\n      if (code) removeCodes.push(String(code).toUpperCase());\n    });\n    if (!Object.keys(updates).length && !hasActiveCodeChange(cart, removeCodes)) return Promise.resolve({ cart: cart, changed: false });\n    return requestJson(routesRoot() + 'cart/update.js', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ updates: updates, discount: remainingCodes(cart, removeCodes).join(',') }) }).then(function (updated) { return { cart: updated, changed: true }; });\n  }\n  function load() { return requestJson(routesRoot() + 'cart.js').then(function (cart) { cartState = cart; return cleanup(cart); }).then(function (result) { cartState = result.cart; if (result.changed) window.location.reload(); }); }\n  function findItem(url) { var key = url.searchParams.get('id'); if (key) { var byKey = (cartState.items || []).find(function (item) { return item.key === key; }); if (byKey) return byKey; } var line = Number(url.searchParams.get('line') || 0); return line ? cartState.items[line - 1] : null; }\n  document.addEventListener('click', function (event) {\n    if (handling || !cartState || !event.target || typeof event.target.closest !== 'function') return;\n    var link = event.target.closest('a[href*=\"/cart/change\"]');\n    if (!link) return;\n    var url = new URL(link.href, window.location.href);\n    if (url.searchParams.get('quantity') !== '0') return;\n    var item = findItem(url);\n    if (!item || !property(item, '_NS promotion bundle')) return;\n    event.preventDefault(); event.stopImmediatePropagation(); handling = true;\n    var updates = {}; updates[item.key] = 0;\n    requestJson(routesRoot() + 'cart/update.js', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ updates: updates }) }).then(function () { return requestJson(routesRoot() + 'cart.js'); }).then(cleanup).then(function () { window.location.reload(); }).catch(function () { window.location.assign(link.href); });\n  }, true);\n  load().catch(function () {});\n})();"],
  "mappings": "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",
  "names": []
}
