{
  "version": 3,
  "sources": ["/cdn/shop/t/245/assets/sp-save-ring.js?cb=6893.5"],
  "sourcesContent": ["/* sp-save-ring v2 \u2014 2026-08-03 (v1 + adversarial review fixes)\n * The $657k leak: carts evaporate in ~8 minutes and 0/259 cart-stage prospects\n * have an email. This module captures the email ON-SITE, in the moment, and\n * gives the shopper a link that rebuilds their exact cart (line properties\n * included, so paired diamond+setting carts come back intact).\n * NO hold/reserve promises anywhere \u2014 save + link/email only (owner's call).\n * Placements: cart sidebar box, \"Save this ring\" on the final-ring view,\n * back-from-checkout slide-in (never on /cart). Additive; delete to revert.\n */\n(function () {\n  'use strict';\n  if (window.SPJ_DISABLED) return;\n  if (window.__SPJ_SR__) return;\n  window.__SPJ_SR__ = 1;\n\n  var ENDPOINT = 'https://zkvdtxlhzucquktwyrjw.supabase.co/functions/v1/ring-save';\n  var AUTH = 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InprdmR0eGxoenVjcXVrdHd5cmp3Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODUzMzcwODMsImV4cCI6MjEwMDkxMzA4M30.T6p6Z4_URBOQHm8kLZXEhVUEf_xAZUk2_t7HpYI1shg';\n  var WRITE_KEY = 'sjp_wk_9f27c1e84ab35d60';\n  var EMAIL_RE = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]{2,}$/;\n  var onCartPage = location.pathname.replace(/\\/$/, '') === '/cart';\n\n  function visitorId() {\n    var m = document.cookie.match(/(?:^|;\\s*)_shopify_y=([^;]+)/);\n    return m ? decodeURIComponent(m[1]).slice(0, 64) : null;\n  }\n\n  function tfetch(url, opts, ms) {\n    // fetch with a hard timeout so no widget state can hang forever\n    var ctl = typeof AbortController !== 'undefined' ? new AbortController() : null;\n    var o = opts || {};\n    if (ctl) { o.signal = ctl.signal; setTimeout(function () { ctl.abort(); }, ms || 10000); }\n    return fetch(url, o);\n  }\n\n  function klPush(arr) {\n    // never assign an array to window.klaviyo \u2014 that can pre-empt the official\n    // proxy and kill sitewide Klaviyo. Use it only if it's already functional.\n    try {\n      if (window.klaviyo && typeof window.klaviyo.push === 'function') window.klaviyo.push(arr);\n      else (window._klOnsite = window._klOnsite || []).push(arr);\n    } catch (err) {}\n  }\n\n  function injectCss() {\n    if (document.getElementById('spj-sr-css')) return;\n    var s = document.createElement('style');\n    s.id = 'spj-sr-css';\n    s.textContent =\n      '.spj-sr{background:#fff;border:1px solid #e3e6ea;border-radius:8px;padding:16px 18px;margin-top:14px}' +\n      '.spj-sr__h{font-weight:600;font-size:15px;color:#0A1D2E;margin:0 0 4px}' +\n      '.spj-sr__p{font-size:13px;color:#5a6572;margin:0 0 10px;line-height:1.45}' +\n      '.spj-sr__row{display:flex;gap:8px}' +\n      '.spj-sr__in{flex:1;min-width:0;border:1px solid #cfd5db;border-radius:6px;padding:9px 11px;font-size:14px;color:#0A1D2E;background:#fff}' +\n      '.spj-sr__in:focus{outline:2px solid #0A1D2E;outline-offset:-1px}' +\n      '.spj-sr__btn{border:0;border-radius:6px;background:#0A1D2E;color:#fff;font-size:13px;font-weight:600;padding:9px 14px;cursor:pointer;white-space:nowrap}' +\n      '.spj-sr__btn[disabled]{opacity:.55;cursor:default}' +\n      '.spj-sr__ok{font-size:13px;color:#0A1D2E;font-weight:600;margin:6px 0 0}' +\n      '.spj-sr__err{font-size:12px;color:#8a2222;margin:6px 0 0}' +\n      '.spj-sr__note{font-size:13px;color:#0A1D2E;background:#fff;border:1px solid #e3e6ea;border-radius:8px;padding:12px 14px;margin-top:14px}' +\n      '.spj-sr--slide{position:fixed;left:16px;right:16px;bottom:16px;z-index:9998;max-width:420px;margin:0 auto;box-shadow:0 8px 30px rgba(10,29,46,.18)}' +\n      '.spj-sr__x{position:absolute;top:8px;right:10px;border:0;background:none;font-size:16px;color:#8a94a0;cursor:pointer;padding:4px}' +\n      '.spj-sr--inline{margin-top:10px}' +\n      '.spj-sr__link{background:none;border:0;padding:0;font-size:13px;color:#0A1D2E;text-decoration:underline;cursor:pointer}' +\n      '@media (max-width:600px){.spj-sr__row{flex-direction:column}.spj-sr__btn{padding:11px 14px}}';\n    document.head.appendChild(s);\n  }\n\n  function boxHtml(placement, withClose) {\n    return (\n      (withClose ? '<button type=\"button\" class=\"spj-sr__x\" aria-label=\"Dismiss\">\u2715</button>' : '') +\n      '<p class=\"spj-sr__h\">' + (placement === 'comeback' ? 'Take your ring with you' : 'Not ready to decide?') + '</p>' +\n      '<p class=\"spj-sr__p\">Save your exact selection to your email \u2014 you\u2019ll get a link that rebuilds it on any device.</p>' +\n      '<div class=\"spj-sr__row\">' +\n      '<input class=\"spj-sr__in\" type=\"email\" inputmode=\"email\" autocomplete=\"email\" placeholder=\"you@email.com\" aria-label=\"Email address\">' +\n      '<button type=\"button\" class=\"spj-sr__btn\">Save it</button>' +\n      '</div><div class=\"spj-sr__msg\"></div>'\n    );\n  }\n\n  function cleanPropVal(v) {\n    return String(v).replace(/[<>]/g, '').slice(0, 512);\n  }\n\n  function snapshotFromCart(cart) {\n    // mirror the server's caps so a rich cart can never fail validation\n    var items = [];\n    var lines = (cart.items || []).slice(0, 30);\n    for (var i = 0; i < lines.length; i++) {\n      var it = lines[i];\n      var props = {};\n      var src = it.properties || {};\n      var keys = Object.keys(src);\n      keys.sort(function (a, b) { // pairing-critical _-props first\n        return (b.charAt(0) === '_' ? 1 : 0) - (a.charAt(0) === '_' ? 1 : 0);\n      });\n      for (var k = 0; k < keys.length && k < 25; k++) {\n        var v = src[keys[k]];\n        if (typeof v === 'string' || typeof v === 'number') props[keys[k].slice(0, 64)] = cleanPropVal(v);\n      }\n      items.push({\n        variant_id: it.variant_id,\n        qty: Math.max(1, Math.min(10, it.quantity || 1)),\n        properties: props,\n        title: (it.product_title || it.title || '').slice(0, 160),\n        price_cents: it.price,\n        image: it.image ? String(it.image).slice(0, 512) : null\n      });\n    }\n    return items;\n  }\n\n  function submit(box, placement) {\n    var input = box.querySelector('.spj-sr__in');\n    var btn = box.querySelector('.spj-sr__btn');\n    var msg = box.querySelector('.spj-sr__msg');\n    if (btn.disabled) return; // Enter shares the same gate as click\n    var email = (input.value || '').trim();\n    if (!EMAIL_RE.test(email)) {\n      msg.innerHTML = '<p class=\"spj-sr__err\">Please enter a valid email.</p>';\n      return;\n    }\n    btn.disabled = true;\n    var done = function (ok, token) {\n      if (ok) {\n        box.querySelector('.spj-sr__row').style.display = 'none';\n        var url = location.origin + '/cart?spjr=' + token;\n        msg.innerHTML =\n          '<p class=\"spj-sr__ok\">Saved! This link rebuilds it (works for 90 days):</p>' +\n          '<div class=\"spj-sr__row\" style=\"margin-top:6px\">' +\n          '<input class=\"spj-sr__in\" type=\"text\" readonly aria-label=\"Your saved ring link\">' +\n          '<button type=\"button\" class=\"spj-sr__btn spj-sr__copy\">Copy</button></div>';\n        var ci = msg.querySelector('input'), cb = msg.querySelector('.spj-sr__copy');\n        ci.value = url;\n        cb.addEventListener('click', function () {\n          ci.select();\n          try { navigator.clipboard.writeText(url); } catch (err) { try { document.execCommand('copy'); } catch (e2) {} }\n          cb.textContent = 'Copied';\n        });\n      } else {\n        btn.disabled = false;\n        msg.innerHTML = '<p class=\"spj-sr__err\">Something went wrong \u2014 please try again.</p>';\n      }\n    };\n\n    var payloadItems, valueCents = null, cartToken = null;\n    var send = function () {\n      tfetch(ENDPOINT, {\n        method: 'POST',\n        headers: { 'content-type': 'application/json', 'Authorization': AUTH },\n        body: JSON.stringify({\n          k: WRITE_KEY, email: email, placement: placement,\n          visitor_id: visitorId(), cart_token: cartToken,\n          items: payloadItems, value_cents: valueCents\n        })\n      }, 10000).then(function (r) { return r.ok ? r.json() : Promise.reject(r.status); })\n        .then(function (d) {\n          done(true, d.token);\n          klPush(['identify', { email: email }]);\n          klPush(['track', 'Saved Ring', {\n            restore_url: location.origin + '/cart?spjr=' + d.token,\n            placement: placement,\n            item_count: payloadItems.length,\n            value: valueCents !== null ? valueCents / 100 : null,\n            items: payloadItems.map(function (it) {\n              return { title: it.title, image: it.image, price: it.price_cents != null ? it.price_cents / 100 : null };\n            }).slice(0, 10)\n          }]);\n        })\n        .catch(function () { done(false); });\n    };\n\n    if (placement === 'final_ring') {\n      // pre-cart: the built ring lives in the page URL, not the cart yet\n      var form = document.querySelector('form[action*=\"/cart/add\"]');\n      var vid = form && form.querySelector('input[name=\"id\"], select[name=\"id\"]');\n      payloadItems = [{\n        variant_id: (vid && Number(vid.value)) || 1,\n        qty: 1,\n        properties: { _resume_url: (location.pathname + location.search).slice(0, 500) },\n        title: document.title.slice(0, 160),\n        price_cents: null,\n        image: null\n      }];\n      send();\n    } else {\n      tfetch('/cart.js', null, 8000).then(function (r) { return r.json(); }).then(function (cart) {\n        if (!cart.items || !cart.items.length) { done(false); return; }\n        payloadItems = snapshotFromCart(cart);\n        valueCents = cart.total_price;\n        cartToken = String(cart.token || '').split('?')[0].slice(0, 64) || null;\n        send();\n      }).catch(function () { done(false); });\n    }\n  }\n\n  function wireBox(box, placement) {\n    box.querySelector('.spj-sr__btn').addEventListener('click', function () { submit(box, placement); });\n    box.querySelector('.spj-sr__in').addEventListener('keydown', function (e) {\n      if (e.key === 'Enter') { e.preventDefault(); submit(box, placement); }\n    });\n    var x = box.querySelector('.spj-sr__x');\n    if (x) x.addEventListener('click', function () {\n      box.parentNode && box.parentNode.removeChild(box);\n      try { sessionStorage.setItem('spj_sr_shown', '1'); } catch (err) {}\n    });\n  }\n\n  function showNote(text) {\n    var host = document.querySelector('.sw-cart__cta-card');\n    var n = document.createElement('div');\n    n.className = 'spj-sr__note';\n    n.textContent = text;\n    if (host && host.parentNode) host.parentNode.insertBefore(n, host.nextSibling);\n    else { n.classList.add('spj-sr--slide'); document.body.appendChild(n); setTimeout(function () { n.remove(); }, 9000); }\n  }\n\n  // ---- placement 1: cart page box ----\n  function mountCart() {\n    if (!onCartPage) return;\n    var note = null;\n    try { note = sessionStorage.getItem('spj_sr_note'); sessionStorage.removeItem('spj_sr_note'); } catch (err) {}\n    if (note === 'partial') showNote('Part of your saved selection is no longer available \u2014 the rest is in your cart.');\n    if (note === 'expired') showNote('That saved link has expired.');\n    var host = document.querySelector('.sw-cart__cta-card');\n    if (!host || document.querySelector('.spj-sr--cart')) return;\n    tfetch('/cart.js', null, 8000).then(function (r) { return r.json(); }).then(function (cart) {\n      if (!cart.item_count || document.querySelector('.spj-sr--cart')) return;\n      var box = document.createElement('div');\n      box.className = 'spj-sr spj-sr--cart';\n      box.innerHTML = boxHtml('cart', false);\n      host.parentNode.insertBefore(box, host.nextSibling);\n      wireBox(box, 'cart');\n    }).catch(function () {});\n  }\n\n  // ---- placement 2: final-ring link \u2014 REMOVED by owner request 8/03\n  // (the \"Save this ring for later\" link on ?view=final-ring; cart box and\n  // back-from-checkout slide-in remain. Restore still honors old final_ring\n  // saves via _resume_url.)\n  function mountFinalRing() {}\n\n  // ---- placement 3: back-from-checkout slide-in (never on /cart) ----\n  document.addEventListener('click', function (e) {\n    var b = e.target && e.target.closest ? e.target.closest('button[name=\"checkout\"], input[name=\"checkout\"], a[href^=\"/checkout\"]') : null;\n    if (b) { try { sessionStorage.setItem('spj_ck_ts', String(Date.now())); } catch (err) {} }\n  }, { capture: true, passive: true });\n\n  function mountComeback() {\n    if (onCartPage) return; // the cart page has its own box\n    var p = location.pathname;\n    if (p.indexOf('/checkout') === 0 || p.indexOf('/orders/') === 0 || p.indexOf('/checkouts/') === 0) return;\n    var ts = 0, shown = null;\n    try { ts = Number(sessionStorage.getItem('spj_ck_ts') || 0); shown = sessionStorage.getItem('spj_sr_shown'); } catch (err) {}\n    if (!ts || shown || Date.now() - ts > 20 * 60 * 1000) return;\n    if (document.querySelector('.spj-sr--slide')) return;\n    tfetch('/cart.js', null, 8000).then(function (r) { return r.json(); }).then(function (cart) {\n      if (!cart.item_count || document.querySelector('.spj-sr--slide')) return;\n      var box = document.createElement('div');\n      box.className = 'spj-sr spj-sr--slide';\n      box.innerHTML = boxHtml('comeback', true);\n      document.body.appendChild(box);\n      wireBox(box, 'comeback');\n      try { sessionStorage.setItem('spj_sr_shown', '1'); } catch (err) {}\n    }).catch(function () {});\n  }\n\n  // ---- restore: /cart?spjr=<token> rebuilds the saved cart ----\n  function restore() {\n    if (!onCartPage) return false;\n    var m = location.search.match(/[?&]spjr=([0-9a-f-]{36})/);\n    if (!m) return false;\n    var token = m[1];\n    // strip the token from the URL immediately \u2014 before analytics can read it\n    try { history.replaceState(null, '', '/cart'); } catch (err) {}\n\n    var fail = function (kind) {\n      if (kind) { try { sessionStorage.setItem('spj_sr_note', kind); } catch (err) {} }\n      mountCart();\n    };\n\n    // explicit consent gate: a link must never rewrite a cart on its own\n    injectCss();\n    var gate = document.createElement('div');\n    gate.className = 'spj-sr spj-sr--slide';\n    gate.innerHTML =\n      '<button type=\"button\" class=\"spj-sr__x\" aria-label=\"Dismiss\">\u2715</button>' +\n      '<p class=\"spj-sr__h\">Restore your saved ring?</p>' +\n      '<p class=\"spj-sr__p\">We\u2019ll add your saved selection back into this cart.</p>' +\n      '<div class=\"spj-sr__row\"><button type=\"button\" class=\"spj-sr__btn spj-sr__go\">Restore it</button></div>';\n    document.body.appendChild(gate);\n    gate.querySelector('.spj-sr__x').addEventListener('click', function () {\n      gate.remove(); mountCart();\n    });\n    gate.querySelector('.spj-sr__go').addEventListener('click', function () {\n      gate.querySelector('.spj-sr__go').disabled = true;\n      runRestore();\n    });\n    function runRestore() {\n    gate.remove();\n    tfetch(ENDPOINT + '?t=' + token, { headers: { 'Authorization': AUTH } }, 10000)\n      .then(function (r) {\n        if (r.status === 404 || r.status === 410) return Promise.reject('expired');\n        return r.ok ? r.json() : Promise.reject(r.status);\n      })\n      .then(function (d) {\n        var items = (d.items || []).filter(function (it) { return it && Number(it.variant_id) > 1; });\n        var withUrl = (d.items || []).filter(function (it) { return it && it.properties && it.properties._resume_url; });\n\n        if (withUrl.length && !items.length) {\n          // final-ring save: resume the build \u2014 same-origin, known paths only\n          var ru = String(withUrl[0].properties._resume_url);\n          var u = null;\n          try { u = new URL(ru, location.origin); } catch (err) {}\n          if (u && u.origin === location.origin && /^\\/(products|pages|collections)\\//.test(u.pathname)) {\n            location.replace(u.pathname + u.search);\n          } else fail(null);\n          return;\n        }\n        if (!items.length) { fail(null); return; }\n\n        tfetch('/cart.js', null, 8000).then(function (r) { return r.json(); }).then(function (cart) {\n          var have = {};\n          (cart.items || []).forEach(function (it) { have[it.variant_id] = true; });\n\n          // group paired diamond+setting lines so a pair restores atomically\n          // (the cart section pairs positionally \u2014 a half-restored pair renders wrong)\n          var byVid = {};\n          items.forEach(function (it) { byVid[it.variant_id] = it; });\n          var used = {}, groups = [];\n          items.forEach(function (it) {\n            if (used[it.variant_id]) return;\n            var mateVid = it.properties && Number(it.properties._paired_diamond_variant_id);\n            var mate = mateVid && byVid[mateVid];\n            if (mate && !used[mateVid]) {\n              used[it.variant_id] = used[mateVid] = true;\n              groups.push([mate, it]); // diamond first: sold stone skips its setting\n            } else {\n              used[it.variant_id] = true;\n              groups.push([it]);\n            }\n          });\n\n          var anySkipped = false;\n          var chain = Promise.resolve();\n          groups.forEach(function (g) {\n            var overlap = g.some(function (it) { return have[it.variant_id]; });\n            if (overlap) return; // already in cart \u2014 never double a pair\n            chain = chain.then(function () {\n              var groupOk = true;\n              var gc = Promise.resolve();\n              g.forEach(function (it) {\n                gc = gc.then(function () {\n                  if (!groupOk) return null;\n                  return tfetch('/cart/add.js', {\n                    method: 'POST',\n                    headers: { 'content-type': 'application/json' },\n                    body: JSON.stringify({ id: it.variant_id, quantity: it.qty, properties: it.properties || {} })\n                  }, 8000).then(function (r) {\n                    if (!r.ok) { groupOk = false; anySkipped = true; }\n                  }).catch(function () { groupOk = false; anySkipped = true; });\n                });\n              });\n              return gc;\n            });\n          });\n          chain.then(function () {\n            if (anySkipped) { try { sessionStorage.setItem('spj_sr_note', 'partial'); } catch (err) {} }\n            location.reload();\n          }).catch(function () { location.reload(); });\n        }).catch(function () { fail(null); });\n      })\n      .catch(function (e) { fail(e === 'expired' ? 'expired' : null); });\n    }\n    return true;\n  }\n\n  function init() {\n    injectCss();\n    if (restore()) return;\n    // UI PARKED 8/03 by owner (\"hide it for now, I will show you how to\n    // properly do it\") \u2014 capture UI hidden, restore links keep working.\n    // Re-enable: restore the three mount calls + the pageshow listener.\n    // mountCart();\n    // mountFinalRing();\n    // mountComeback();\n  }\n\n  // window.addEventListener('pageshow', function (e) {\n  //   if (e.persisted) mountComeback();\n  // });\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n  else init();\n})();\n"],
  "mappings": "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",
  "names": []
}
