{
  "version": 3,
  "sources": ["/cdn/shop/t/33/assets/custom.js?cb=1787087109512"],
  "sourcesContent": ["/* GG mobile add-to-cart \u2014 async, freeze-safe, self-healing.\n   Mobile-only: the sole add-to-cart orchestrator (the theme's synchronous one is\n   disabled on mobile in snippets/warranty-card-styles.liquid because it froze the\n   page). Flow: overlay -> let theme+apps add natively -> wait for the cart to stop\n   changing -> re-add the device if it was dropped (adopting/minting an _io group so\n   the warranty stays linked) -> add the warranty if the count did not rise versus\n   page load -> go to /cart. Everything is checked before adding, so nothing can\n   duplicate; repeat taps are ignored. Desktop is untouched. */\n(function () {\n  if (!(window.matchMedia && window.matchMedia('(max-width: 767px)').matches)) return;\n  var d = document, busy = false;\n\n  // Warranties already in the cart. Measured again on every click (a page-load\n  // value goes stale as soon as the cart changes), so \"did THIS add produce a\n  // warranty?\" is always judged against the cart as it was when the tap happened.\n  var warrantyBefore = 0;\n  var warrantyBeforeReady = cartJson().then(function (c) { warrantyBefore = countWarranties(c); }, function () {});\n\n  // Diagnostics: OFF for customers. Append ?ggdebug=1 to any URL to turn it on for\n  // that browsing session; a readout then appears on the cart page.\n  var DEBUG = false, LOGKEY = '__gg_atc_log';\n  try {\n    if (/[?&]ggdebug=1/.test(location.search)) sessionStorage.setItem('__gg_debug', '1');\n    DEBUG = sessionStorage.getItem('__gg_debug') === '1';\n  } catch (_) {}\n  function log(tag, data) {\n    if (!DEBUG) return;\n    try {\n      var a = JSON.parse(sessionStorage.getItem(LOGKEY) || '[]');\n      var e = { tag: tag };\n      for (var k in data) { if (Object.prototype.hasOwnProperty.call(data, k)) e[k] = data[k]; }\n      a.push(e);\n      sessionStorage.setItem(LOGKEY, JSON.stringify(a.slice(-40)));\n    } catch (_) {}\n  }\n\n  if (location.pathname.indexOf('/cart') === 0) reconcileCart();\n\n  d.addEventListener('click', function (e) {\n    var btn = e.target && e.target.closest && e.target.closest('.product-form__add-button');\n    if (!btn) return;\n    var form = btn.form || (btn.closest && btn.closest('form.product-form'));\n    if (!form) return;\n    if (busy) { e.preventDefault(); e.stopImmediatePropagation(); return; } // ignore repeat taps\n    var idEl = form.querySelector('[name=\"id\"]');\n    var qEl = form.querySelector('[name=\"quantity\"]');\n    var variantId = idEl ? String(idEl.value) : null;\n    var qty = (qEl && parseInt(qEl.value, 10) > 0) ? parseInt(qEl.value, 10) : 1;\n    if (!variantId) return;\n    var warrantyPrice = readWarrantyPrice();   // captured at click time\n    busy = true;\n    showOverlay();\n    log('click', { variant: variantId, priceRead: warrantyPrice, wBefore: warrantyBefore });\n    // NOTE: the baseline is deliberately the PAGE-LOAD count (measured above).\n    // Re-measuring at click time would race the warranty app: if its add lands\n    // first, this tap's own warranty would be counted as \"already there\" and\n    // skipped \u2014 which is exactly the failure we are fixing.\n    // Let the native add + apps run (do NOT preventDefault the first tap).\n    setTimeout(function () { settle(variantId, qty, warrantyPrice); }, 700);\n  }, true);\n\n  function readWarrantyPrice() {\n    var cont = d.getElementById('infiniteoptions-container');\n    var chk = d.querySelector('#infiniteoptions-container input[type=\"checkbox\"]');\n    var selected = (chk && chk.checked) || (cont && cont.classList.contains('wc-active'));\n    if (!selected) return null;\n    var sources = [];\n    if (chk) sources.push(chk.value);\n    var hp = d.querySelector('input[name=\"properties[Green Gadgets Warranty]\"]');\n    if (hp) sources.push(hp.value);\n    if (cont) { var pe = cont.querySelector('.wc-price'); if (pe) sources.push(pe.textContent); }\n    for (var i = 0; i < sources.length; i++) {\n      var m = String(sources[i] || '').match(/\\$\\s*([\\d.,]+)/);\n      if (m) return m[1].replace(/,/g, '').replace(/\\.0+$/, '');\n    }\n    return null;\n  }\n\n  function settle(variantId, qty, warrantyPrice) {\n    var start = Date.now(), lastCount = -1, stableSince = Date.now();\n    (function poll() {\n      cartJson().then(function (cart) {\n        if (cart.item_count !== lastCount) { lastCount = cart.item_count; stableSince = Date.now(); }\n        var settled = (Date.now() - stableSince) > 1200;   // cart stopped changing\n        var timedOut = (Date.now() - start) > 9000;\n        if (settled || timedOut) ensureDevice(cart, variantId, qty, warrantyPrice);\n        else setTimeout(poll, 400);\n      }, function () { setTimeout(poll, 500); });\n    })();\n  }\n\n  function ensureDevice(cart, variantId, qty, warrantyPrice) {\n    var existing = null;\n    (cart.items || []).forEach(function (i) { if (String(i.variant_id) === variantId) existing = i; });\n    if (existing) {\n      var g = existing.properties && existing.properties._io_order_group;\n      // The device line carries the customer's choice as a visible property\n      // (\"Green Gadgets Warranty: 24 Months ($59)\"). That is authoritative \u2014 it is\n      // what the form actually submitted \u2014 so fall back to it when the click-time\n      // DOM read came back empty, which happens if the warranty widget re-rendered\n      // between the tap and the read. Without this the warranty is silently never\n      // added: the cart shows the selection but nothing is charged for it.\n      var wp = warrantyPrice || priceFromProps(existing.properties);\n      log('device', { present: true, group: g || null, priceUsed: wp });\n      ensureWarranty(qty, wp, g || null);\n      return;\n    }\n    // Device was dropped \u2014 re-add it. Adopt the orphaned warranty's group when there is\n    // one; otherwise mint a fresh group id, so that a warranty we add ourselves can still\n    // be linked to this device. An unlinked warranty stays in the cart but is no longer\n    // removed together with its device, which is what we must avoid.\n    var group = findOrphanGroup(cart) || String(Date.now());\n    var body = { id: parseInt(variantId, 10), quantity: qty, properties: { _io_order_group: group } };\n    addJson(body).then(\n      function () { ensureWarranty(qty, warrantyPrice, group); },\n      function () { ensureWarranty(qty, warrantyPrice, group); }\n    );\n  }\n\n  // Warranty price as recorded on a cart line by the form, e.g. \"24 Months ($59)\".\n  function priceFromProps(props) {\n    if (!props) return null;\n    var v = props['Green Gadgets Warranty'];\n    if (!v) return null;\n    var m = String(v).match(/\\$\\s*([\\d.,]+)/);\n    return m ? m[1].replace(/,/g, '').replace(/\\.0+$/, '') : null;\n  }\n\n  function findOrphanGroup(cart) {\n    var parents = {};\n    (cart.items || []).forEach(function (i) {\n      var g = i.properties && i.properties._io_order_group;\n      if (g !== undefined && g !== null) parents[g] = true;\n    });\n    var orphan = null;\n    (cart.items || []).forEach(function (i) {\n      var pg = i.properties && i.properties._io_parent_order_group;\n      if (pg !== undefined && pg !== null && !parents[pg]) orphan = pg;\n    });\n    return orphan;\n  }\n\n  // Is THIS device already covered? Judged per device via the Infinite Options\n  // link (warranty._io_parent_order_group === device._io_order_group), never by a\n  // global warranty count: with several devices in one cart, a rising total says\n  // nothing about whether *this* device got its warranty. That global count is\n  // what let a 2nd device silently end up uncovered.\n  function hasWarrantyFor(cart, group) {\n    if (!group) return null;                   // no link available \u2014 cannot tell\n    return (cart.items || []).some(function (i) {\n      return i.properties && String(i.properties._io_parent_order_group) === String(group) &&\n             (/Extended Warranty/i.test(i.title || '') || i.properties._io_field_name);\n    });\n  }\n\n  function ensureWarranty(qty, warrantyPrice, group) {\n    if (!warrantyPrice) { log('warranty', { decision: 'no-price' }); go(); return; }\n    cartJson().then(function (cart) {\n      var covered = hasWarrantyFor(cart, group);\n      log('warranty', { covered: covered, price: warrantyPrice, group: group || null, total: countWarranties(cart), before: warrantyBefore });\n      // Fall back to the count heuristic only when the device carries no group at\n      // all, so there is nothing to match a warranty against.\n      if (covered === null) covered = countWarranties(cart) > warrantyBefore;\n      if (!covered) { addWarranty(qty, warrantyPrice, group); return; }\n      // Covered \u2014 but the app can still roll its own line back a moment later.\n      // Re-check once before leaving; a selected warranty must never be missing\n      // when the customer reaches the cart.\n      setTimeout(function () {\n        cartJson().then(function (c2) {\n          var still = hasWarrantyFor(c2, group);\n          if (still === null) still = countWarranties(c2) > warrantyBefore;\n          if (still) go(); else addWarranty(qty, warrantyPrice, group);\n        }, go);\n      }, 900);\n    }, go);\n  }\n\n  function addWarranty(qty, warrantyPrice, group) {\n    fetch('/products/' + warrantyPrice + '-green-gadgets-extended-warranty-24-months.js', { headers: { 'Accept': 'application/json' } })\n      .then(function (r) { if (!r.ok) throw 0; return r.json(); })\n      .then(function (p) {\n        var vid = p && p.variants && p.variants[0] && p.variants[0].id;\n        if (!vid) { log('addWarranty', { error: 'no-variant' }); go(); return; }\n        var props = { '_io_field_name': 'Green Gadgets Warranty' };\n        // Link the warranty to its device so the cart page removes them together.\n        if (group) props['_io_parent_order_group'] = group;\n        addJson({ id: vid, quantity: qty, properties: props }).then(\n          function (r) { log('addWarranty', { variant: vid, status: r && r.status }); go(); },\n          function () { log('addWarranty', { status: 'network-error' }); go(); }\n        );\n      }, function () { log('addWarranty', { error: 'fetch-failed', price: warrantyPrice }); go(); });\n  }\n\n  function countWarranties(cart) {\n    return (cart.items || []).filter(function (i) {\n      return /Extended Warranty/i.test(i.title || '') || (i.properties && i.properties._io_field_name);\n    }).reduce(function (s, i) { return s + (i.quantity || 1); }, 0);\n  }\n  function cartJson() { return fetch('/cart.js', { headers: { 'Accept': 'application/json' } }).then(function (r) { return r.json(); }); }\n  function addJson(body) {\n    return fetch('/cart/add.js', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n      body: JSON.stringify(body)\n    });\n  }\n  function go() { window.location.href = '/cart'; }\n\n  // Debug readout on the cart page (only when ?ggdebug=1 armed the session).\n  if (DEBUG && location.pathname.indexOf('/cart') === 0) {\n    try {\n      var entries = JSON.parse(sessionStorage.getItem(LOGKEY) || '[]');\n      if (entries.length) {\n        var box = d.createElement('details');\n        box.style.cssText = 'position:fixed;left:8px;right:8px;bottom:8px;z-index:99998;background:#fff;border:1px solid #cfe0bf;border-radius:8px;padding:8px 10px;font:11px/1.35 monospace;color:#2f3a2a;box-shadow:0 2px 10px rgba(0,0,0,.15);max-height:45vh;overflow:auto';\n        var sum = d.createElement('summary');\n        sum.style.cssText = 'cursor:pointer;font-weight:700';\n        sum.textContent = 'ATC diagnostic (' + entries.length + ') \u2014 tap to open';\n        box.appendChild(sum);\n        var pre = d.createElement('pre');\n        pre.style.cssText = 'margin:6px 0 0;white-space:pre-wrap;word-break:break-all';\n        pre.textContent = entries.map(function (e) {\n          var parts = [];\n          for (var k in e) { if (k !== 'tag' && Object.prototype.hasOwnProperty.call(e, k)) parts.push(k + '=' + e[k]); }\n          return e.tag + ': ' + parts.join(' ');\n        }).join('\\n');\n        box.appendChild(pre);\n        if (d.body) d.body.appendChild(box);\n        else d.addEventListener('DOMContentLoaded', function () { d.body.appendChild(box); });\n      }\n    } catch (_) {}\n  }\n\n  // --- Cart-page reconciler -------------------------------------------------\n  // Last line of defence, and the important one: when the warranty app does not\n  // intercept the form, the browser performs a native POST and LEAVES the product\n  // page, so none of the recovery above ever runs. The device still lands in the\n  // cart carrying \"Green Gadgets Warranty: 24 Months ($X)\" while nothing is\n  // charged for it. Here we re-check on the cart page itself: every device line\n  // that records a chosen warranty must have a warranty line paired to it.\n  function isWarrantyLine(i) {\n    return /Extended Warranty/i.test(i.title || '') || !!(i.properties && i.properties._io_field_name);\n  }\n\n  function reconcileCart() {\n    var last = 0;\n    try { last = parseInt(sessionStorage.getItem('__gg_recon') || '0', 10); } catch (_) {}\n    if (Date.now() - last < 15000) return;              // never loop on reload\n    cartJson().then(function (cart) {\n      var items = cart.items || [];\n      var warranties = [];\n      items.forEach(function (i) { if (isWarrantyLine(i)) warranties.push(i); });\n      var used = {}, missing = [];\n      items.forEach(function (it) {\n        if (isWarrantyLine(it)) return;\n        var price = priceFromProps(it.properties);\n        if (!price) return;                              // no warranty chosen here\n        var g = it.properties && it.properties._io_order_group;\n        var hit = -1;\n        warranties.forEach(function (w, wi) {            // prefer the explicit link\n          if (used[wi] || hit > -1 || !g) return;\n          var wg = w.properties && w.properties._io_parent_order_group;\n          if (String(wg) === String(g)) hit = wi;\n        });\n        warranties.forEach(function (w, wi) {            // else an unlinked one of the same price\n          if (used[wi] || hit > -1) return;\n          var wg = w.properties && w.properties._io_parent_order_group;\n          if (!wg && new RegExp('\\\\$\\\\s*' + price + '(\\\\D|$)').test(w.title || '')) hit = wi;\n        });\n        if (hit > -1) used[hit] = true;\n        else missing.push({ price: price, group: g || null, qty: it.quantity || 1 });\n      });\n      log('reconcile', { lines: items.length, warranties: warranties.length, missing: missing.length });\n      if (!missing.length) return;\n      try { sessionStorage.setItem('__gg_recon', String(Date.now())); } catch (_) {}\n      var done = 0;\n      missing.forEach(function (m) {\n        addWarrantyLine(m, function () { if (++done === missing.length) location.reload(); });\n      });\n    }, function () {});\n  }\n\n  function addWarrantyLine(m, done) {\n    fetch('/products/' + m.price + '-green-gadgets-extended-warranty-24-months.js', { headers: { 'Accept': 'application/json' } })\n      .then(function (r) { if (!r.ok) throw 0; return r.json(); })\n      .then(function (p) {\n        var vid = p && p.variants && p.variants[0] && p.variants[0].id;\n        if (!vid) { log('reconcileAdd', { error: 'no-variant', price: m.price }); done(); return; }\n        var props = { '_io_field_name': 'Green Gadgets Warranty' };\n        if (m.group) props['_io_parent_order_group'] = m.group;\n        addJson({ id: vid, quantity: m.qty, properties: props }).then(\n          function (r) { log('reconcileAdd', { price: m.price, status: r && r.status }); done(); },\n          function () { log('reconcileAdd', { price: m.price, status: 'error' }); done(); }\n        );\n      }, function () { log('reconcileAdd', { error: 'fetch-failed', price: m.price }); done(); });\n  }\n\n  function showOverlay() {\n    try {\n      if (d.getElementById('gg-atc-overlay')) return;\n      var o = d.createElement('div');\n      o.id = 'gg-atc-overlay';\n      o.setAttribute('role', 'status');\n      o.style.cssText = 'position:fixed;inset:0;z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:rgba(255,255,255,.85);font-family:inherit;color:#2f3a2a;';\n      o.innerHTML = '<div style=\"width:38px;height:38px;border:3px solid #cfe0bf;border-top-color:#5f8a2e;border-radius:50%;animation:ggspin .8s linear infinite\"></div><div style=\"font-size:15px;font-weight:600\">Adding to cart\u2026</div><style>@keyframes ggspin{to{transform:rotate(360deg)}}</style>';\n      d.body.appendChild(o);\n    } catch (_) {}\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
