{
  "version": 3,
  "sources": ["/cdn/shop/t/34/assets/mg-ring-options.js?x=1792160541"],
  "sourcesContent": ["/* 91P-e. Ring options (snippets/mg-ring-options.liquid), 2026-10-13.\n   - Shows the chosen value beside each option name.\n   - Copies the property choices ([data-mg-prop] groups) into the sticky bar's own form as hidden\n     properties, so either Add to Cart button carries them (the rail's inputs belong to the main\n     form via form=\"\").\n   - Stops Add to Cart until every option is chosen: the first missing option scrolls into\n     view with a short message. Runs in the capture phase, before the theme's ProductForm.\n   - Choosing a metal shows that metal's photo through the existing View in buttons.\n   2026-10-15 (pricing workbook), variant mode (data-mg-mode=\"variant\"): once Metal, Stone type,\n   Carat weight and Quality are all chosen, the matching radios in the theme's hidden variant\n   picker (#variant-picker-<section>) are checked and one change event is sent, so the theme\n   updates the price, the form's variant id, the URL and Add to Cart. Diamond = \"<stone>, <quality>\".\n   A combination with no variant shows the price-on-request note ([data-mg-por]).\n   2026-10-15 (pricing r2): until all four are chosen, the price (rail and sticky bar) reads \"From $X\" for the\n   cheapest variant that fits the choices made so far, so each choice shows what it does to the price.\n   2026-10-15 (opts-r1): the running price line under the choices ([data-mg-total]) copies the rail price\n   after every change, so the price stays on screen while the ring is built. */\n(function () {\n  var REDUCE = window.matchMedia('(prefers-reduced-motion: reduce)');\n\n  function init(root) {\n    if (root.__mgOpts) return;\n    root.__mgOpts = true;\n    var mainId = root.dataset.form;\n    var stickyId = root.dataset.stickyForm;\n    var isVariant = root.dataset.mgMode === 'variant';\n    var groups = Array.prototype.slice.call(root.querySelectorAll('[data-mg-group]'));\n    var propGroups = groups.filter(function (g) { return g.hasAttribute('data-mg-prop'); });\n    var section = root.closest('.product-section') || root.closest('[id^=\"shopify-section\"]') || document;\n    var por = root.querySelector('[data-mg-por]');\n\n    function group(name) {\n      for (var i = 0; i < groups.length; i++) if (groups[i].dataset.mgGroup === name) return groups[i];\n      return null;\n    }\n    function valueOf(g) {\n      var r = g.querySelector('input:checked');\n      if (r) return r.value;\n      var s = g.querySelector('select');\n      return s ? s.value : '';\n    }\n    function shortOf(g) {\n      var r = g.querySelector('input:checked');\n      if (r) return r.dataset.short || r.value;\n      var s = g.querySelector('select');\n      return s && s.value ? s.options[s.selectedIndex].text : '';\n    }\n    function showValue(g) {\n      var v = g.querySelector('[data-mg-value]');\n      if (v) v.textContent = shortOf(g);\n    }\n    function setError(g, on) {\n      var e = g.querySelector('[data-mg-error]');\n      g.classList.toggle('mg-opt--missing', on);\n      if (e) e.textContent = on ? g.dataset.mgMissing : '';\n    }\n    function syncSticky() {\n      var f = document.getElementById(stickyId);\n      if (!f) return;\n      propGroups.forEach(function (g) {\n        var name = 'properties[' + g.dataset.mgGroup + ']';\n        var h = null;\n        Array.prototype.forEach.call(f.querySelectorAll('input[type=\"hidden\"][data-mg-prop]'), function (x) {\n          if (x.name === name) h = x;\n        });\n        var v = valueOf(g);\n        if (!v) { if (h) h.remove(); return; }\n        if (!h) {\n          h = document.createElement('input');\n          h.type = 'hidden';\n          h.name = name;\n          h.setAttribute('data-mg-prop', '');\n          f.appendChild(h);\n        }\n        h.value = v;\n      });\n    }\n    function showMetalPhoto(input) {\n      var view = input && input.dataset.view;\n      if (!view) return;\n      var btn = section.querySelector('.mg-view__opt--' + view);\n      if (btn && btn.getAttribute('aria-pressed') !== 'true') btn.click();\n    }\n    function firstMissing() {\n      var first = null;\n      groups.forEach(function (g) {\n        var miss = !valueOf(g);\n        setError(g, miss);\n        if (miss && !first) first = g;\n      });\n      return first;\n    }\n\n    // variant mode: drive the theme's hidden picker\n    function picker() {\n      return document.getElementById('variant-picker-' + root.dataset.section);\n    }\n    function variantValues() {\n      var metal = valueOf(group('Metal'));\n      var stone = valueOf(group('Stone type'));\n      var carat = valueOf(group('Carat weight'));\n      var quality = valueOf(group('Diamond quality'));\n      if (!metal || !stone || !carat || !quality) return null;\n      return [metal, stone + ', ' + quality, carat];\n    }\n    var allVariants = null;\n    function variantList() {\n      if (allVariants) return allVariants;\n      var p = picker(), s = p && p.querySelector('[data-all-variants-no-high]');\n      try { allVariants = s ? JSON.parse(s.textContent) : []; } catch (err) { allVariants = []; }\n      return allVariants;\n    }\n    function money(cents) {\n      var fmt = (window.theme && window.theme.moneyFormat) || '${{amount}}';\n      if (cents % 100 === 0) fmt = fmt.replace(/\\{\\{\\s*amount\\s*\\}\\}/, '{{amount_no_decimals}}');\n      if (typeof window.formatMoney === 'function') return window.formatMoney(cents, fmt);\n      return '$' + (cents / 100).toLocaleString('en-US');\n    }\n    // fewer than four choices: \"From $X\" for the cheapest variant that fits them\n    // pdp r7 (2026-10-22): all four chosen: that variant's own price at once, from the list already in the page (the\n    // theme's fetch rewrites the same figure about a second later)\n    function exactPrice(vals) {\n      var hit = null;\n      variantList().forEach(function (v) {\n        if (!hit && v.option1 === vals[0] && v.option2 === vals[1] && v.option3 === vals[2]) hit = v;\n      });\n      if (!hit) return;\n      ['price-', 'price-sticky-'].forEach(function (pre) {\n        var box = document.getElementById(pre + root.dataset.section);\n        if (!box || box.querySelector('.price--on-sale')) return;\n        Array.prototype.forEach.call(box.querySelectorAll('.price__regular .price-item--regular'), function (el) {\n          el.textContent = money(hit.price);\n        });\n      });\n    }\n    function partialPrice() {\n      var full = variantValues();\n      if (full) { exactPrice(full); return; }\n      var metal = valueOf(group('Metal')), stone = valueOf(group('Stone type'));\n      var carat = valueOf(group('Carat weight')), quality = valueOf(group('Diamond quality'));\n      var min = null;\n      variantList().forEach(function (v) {\n        if (metal && v.option1 !== metal) return;\n        if (stone && v.option2.indexOf(stone + ', ') !== 0) return;\n        if (quality && v.option2.slice(-(quality.length + 2)) !== ', ' + quality) return;\n        if (carat && v.option3 !== carat) return;\n        if (min === null || v.price < min) min = v.price;\n      });\n      var text = min === null ? 'Price on request' : 'From ' + money(min);\n      if (por) por.hidden = min !== null;\n      ['price-', 'price-sticky-'].forEach(function (pre) {\n        var box = document.getElementById(pre + root.dataset.section);\n        if (!box) return;\n        Array.prototype.forEach.call(box.querySelectorAll('.price-item--regular, .price-item--sale'), function (el) {\n          if (el.closest('.price__compare')) return;\n          el.textContent = text;\n        });\n      });\n    }\n    function hasVariant(p, vals) {\n      var s = p.querySelector('[data-all-variants-no-high]');\n      if (!s) return true;\n      try {\n        return JSON.parse(s.textContent).some(function (v) {\n          return v.option1 === vals[0] && v.option2 === vals[1] && v.option3 === vals[2];\n        });\n      } catch (err) { return true; }\n    }\n    function applyVariant() {\n      var vals = variantValues();\n      if (!vals) return;\n      var p = picker();\n      if (!p) return;\n      var last = null;\n      vals.forEach(function (val, i) {\n        var pos = String(i + 1);\n        var fs = null;\n        Array.prototype.forEach.call(p.querySelectorAll('[data-option-position]'), function (x) {\n          if (x.getAttribute('data-option-position') === pos) fs = x;\n        });\n        if (!fs) return;\n        var sel = fs.querySelector('select');\n        if (sel) { sel.value = val; last = sel; return; }\n        Array.prototype.forEach.call(fs.querySelectorAll('input[type=\"radio\"]'), function (r) {\n          if (r.value === val) { r.checked = true; last = r; }\n        });\n      });\n      var priced = hasVariant(p, vals);\n      if (por) por.hidden = priced;\n      if (last) last.dispatchEvent(new Event('change', { bubbles: true }));\n      // the theme has just marked Add to Cart \"Unavailable\"; say why\n      if (!priced) {\n        [mainId, stickyId].forEach(function (id) {\n          var f = document.getElementById(id);\n          var b = f && f.querySelector('[name=\"add\"]');\n          var l = b && (b.querySelector('.button__label') || b.querySelector('span'));\n          if (l) l.textContent = 'Price on request';\n        });\n      }\n    }\n\n    // opts-r1: the running price follows the rail price (the theme rewrites it after a variant change,\n    // partialPrice() writes \"From $X\") and reads \"Price on request\" while that note shows\n    var total = root.querySelector('[data-mg-total]');\n    function showTotal() {\n      if (!total) return;\n      var text = '';\n      if (por && !por.hidden) text = 'Price on request';\n      else {\n        var box = document.getElementById('price-' + root.dataset.section);\n        var onSale = box && box.querySelector('.price--on-sale');\n        var el = box && box.querySelector(onSale ? '.price__sale .price-item--sale' : '.price__regular .price-item--regular');\n        text = el ? el.textContent.trim() : '';\n      }\n      if (text && total.textContent !== text) total.textContent = text;\n    }\n\n    // 2026-10-16 (vimg-r1): the variants carry their metal photo now (for checkout, emails and Shopping), and the\n    // theme would jump the gallery to it on every choice (Platinum's photo is the White Gold render, its video stays\n    // in View in). The metal choice already shows its photo through View in, so the theme's jump is off for these pickers\n    if (isVariant) {\n      Array.prototype.forEach.call(document.querySelectorAll('variant-radios, variant-selects'), function (el) {\n        if (el.dataset.section === root.dataset.section) el.updateMediaForVariant = function () {};\n      });\n    }\n\n    // phone r1 (2026-10-22): ring size as the carat row's chips (3 to 9 in halves, then the free-sizer line); the\n    // select stays, hidden, as the value the main form sends\n    (function sizeChips() {\n      var g = group('Ring size'), sel = g && g.querySelector('select');\n      if (!sel || g.querySelector('.mg-size')) return;\n      var name = 'mg-size-' + (root.dataset.section || '');\n      var list = document.createElement('div');\n      list.className = 'mg-opt__list mg-opt__list--7 mg-size';\n      list.setAttribute('role', 'radiogroup');\n      list.setAttribute('aria-label', 'Ring size');\n      var unsure = null;\n      Array.prototype.forEach.call(sel.options, function (o) {\n        if (!o.value) return;\n        var lab = document.createElement('label'), inp = document.createElement('input'), sp = document.createElement('span');\n        inp.className = 'mg-opt__input'; inp.type = 'radio'; inp.name = name; inp.value = o.value; inp.checked = sel.value === o.value;\n        sp.textContent = o.text;\n        if (/^\\d/.test(o.value)) { lab.className = 'mg-pill mg-pill--size'; sp.className = 'mg-pill__name'; lab.appendChild(inp); lab.appendChild(sp); list.appendChild(lab); }\n        else { lab.className = 'mg-size__unsure'; lab.appendChild(inp); lab.appendChild(sp); unsure = lab; }\n      });\n      var box = sel.closest('.mg-select') || sel;\n      box.parentNode.insertBefore(list, box.nextSibling);\n      if (unsure) list.parentNode.insertBefore(unsure, list.nextSibling);\n      var lab0 = g.querySelector('label.mg-opt__label'); if (lab0) lab0.removeAttribute('for');\n      g.classList.add('mg-opt--chips');\n      // set the select before the group's own listener reads the choice\n      g.addEventListener('change', function (e) { if (e.target && e.target.name === name) sel.value = e.target.value; }, true);\n    })();\n\n    // phone r1: the bar names the build once all four are chosen (name and price, then \"14k White Gold \u00B7 1.0 ct\")\n    var barInfo = isVariant && section.querySelector('.product-sticky-add-bar__info'), barBuild = null;\n    if (barInfo) {\n      barBuild = document.createElement('span'); barBuild.className = 'mg-bar__build'; barBuild.hidden = true;\n      var barTitle = barInfo.querySelector('.product-sticky-add-bar__title');\n      if (barTitle) barTitle.parentNode.insertBefore(barBuild, barTitle.nextSibling); else barInfo.insertBefore(barBuild, barInfo.firstChild);\n    }\n    function showBuild() {\n      if (!barBuild) return;\n      var done = !!variantValues();\n      if (done) barBuild.textContent = valueOf(group('Metal')) + ' \u00B7 ' + valueOf(group('Carat weight'));\n      barBuild.hidden = !done;\n    }\n\n    // ring r1 (2026-10-22): the ring follows the shopper for the visit. Every choice is kept (sessionStorage mgBuild)\n    // and the listings follow the metal (mgWallMetal); a ring page reached without a set build makes the saved choices\n    // that exist on this ring again (below), and \"Clear my choices\" forgets them.\n    var BUILD = 'mgBuild', ORDER = ['Metal', 'Stone type', 'Carat weight', 'Diamond quality', 'Ring size'];\n    function readBuild() { try { return JSON.parse(sessionStorage.getItem(BUILD) || '{}') || {}; } catch (err) { return {}; } }\n    // each choice is merged into what is kept, so a choice this ring doesn't offer (a 4.5 ct) stays for the next ring\n    function saveBuild() {\n      if (!isVariant) return;\n      var b = readBuild();\n      ORDER.forEach(function (n) { var g = group(n), v = g && valueOf(g); if (v) b[n] = v; });\n      try {\n        sessionStorage.setItem(BUILD, JSON.stringify(b));\n        var k = !b.Metal ? '' : /platinum/i.test(b.Metal) ? 'p' : /white/i.test(b.Metal) ? 'w' : /rose/i.test(b.Metal) ? 'r' : /yellow/i.test(b.Metal) ? 'y' : '';\n        if (k) sessionStorage.setItem('mgWallMetal', k);\n      } catch (err) { /* private mode: this page only */ }\n    }\n\n    groups.forEach(function (g) {\n      g.addEventListener('change', function (e) {\n        setError(g, false);\n        showValue(g);\n        syncSticky();\n        if (g.dataset.mgGroup === 'Metal') showMetalPhoto(e.target);\n        if (isVariant && g.dataset.mgGroup !== 'Ring size') { partialPrice(); applyVariant(); showTotal(); showBuild(); }\n        saveBuild();\n      });\n      showValue(g);\n    });\n    syncSticky();\n    // fix r2 (2026-10-22): a card's metal dot links with ?metal=y|w|r|p: choose that metal and nothing else\n    var mq = /[?&]metal=([ywrp])(&|$)/.exec(location.search);\n    if (mq && !/[?&]variant=/.test(location.search) && group('Metal') && !group('Metal').querySelector('input:checked')) {\n      var want = { y: '14k Yellow Gold', w: '14k White Gold', r: '14k Rose Gold', p: 'Platinum' }[mq[1]];\n      Array.prototype.forEach.call(group('Metal').querySelectorAll('input[type=\"radio\"]'), function (r) {\n        if (r.value === want && !r.disabled) { r.checked = true; r.dispatchEvent(new Event('change', { bubbles: true })); }\n      });\n    }\n    // ring r1: the saved choices that exist on this ring come back (a card's ?metal= has already chosen the metal)\n    var restored = false;\n    if (isVariant && !/[?&]variant=/.test(location.search)) {\n      var saved = readBuild();\n      ORDER.forEach(function (n) {\n        var g = group(n), v = saved[n];\n        if (!g || !v || g.querySelector('input:checked')) return;\n        Array.prototype.forEach.call(g.querySelectorAll('input[type=\"radio\"]'), function (r) {\n          if (r.value === v && !r.disabled && !r.checked) { r.checked = true; r.dispatchEvent(new Event('change', { bubbles: true })); restored = true; }\n        });\n      });\n    }\n    var totalLabel = root.querySelector('.mg-opt__total-label');\n    if (restored && totalLabel && !root.querySelector('.mg-opt__clear')) {\n      var clear = document.createElement('button');\n      clear.type = 'button'; clear.className = 'mg-opt__clear'; clear.textContent = 'Clear my choices';\n      clear.addEventListener('click', function () {\n        try { sessionStorage.removeItem(BUILD); } catch (err) { /* nothing kept */ }\n        location.replace(location.pathname);\n      });\n      totalLabel.appendChild(clear);\n    }\n    // ring r1: an appointment booked from here arrives knowing the ring (?about=ring + sessionStorage mgAsk: the\n    // product and its choices only)\n    if (isVariant && !window.mgAskRing) {\n      window.mgAskRing = true;\n      var chosen = function (n) { var g = group(n); return g ? valueOf(g) : ''; };\n      document.addEventListener('click', function (e) {\n        var a = e.target && e.target.closest ? e.target.closest('a[href*=\"/pages/book-a-meeting\"]') : null;\n        if (!a) return;\n        var h1 = document.querySelector('.product__title');\n        var name = h1 ? h1.textContent.replace(/\\s+/g, ' ').trim() : document.title;\n        var img = section.querySelector('.product__media-img img:not(.mg-ghost)');\n        var ask = { kind: 'ring', name: name, url: location.href, img: img ? (img.currentSrc || img.src) : '',\n          shape: (/\\b(Round|Oval|Pear|Emerald|Cushion|Radiant|Marquise|Princess|Asscher|Heart)\\b/.exec(name) || [])[1] || '',\n          metal: chosen('Metal'), stone: chosen('Stone type'), carat: chosen('Carat weight'), quality: chosen('Diamond quality'), size: chosen('Ring size') };\n        try { sessionStorage.setItem('mgAsk', JSON.stringify(ask)); } catch (err) { return; }\n        var u = new URL(a.getAttribute('href'), location.href);\n        u.searchParams.set('about', 'ring');\n        a.setAttribute('href', u.pathname + u.search + u.hash);\n      }, true);\n    }\n    showBuild();\n    // a ?variant= link arrives with its four choices made: check it is a priced one\n    if (isVariant) {\n      var vals0 = variantValues(), p0 = picker();\n      if (vals0 && p0 && por) por.hidden = hasVariant(p0, vals0);\n    }\n    // the theme may replace the price box after a variant change, so watch its parent\n    if (total) {\n      var priceBox = document.getElementById('price-' + root.dataset.section);\n      if (priceBox && priceBox.parentNode && window.MutationObserver) {\n        new MutationObserver(showTotal).observe(priceBox.parentNode, { childList: true, subtree: true, characterData: true });\n      }\n      showTotal();\n    }\n\n    // 91P-f: the Quality explainer\n    Array.prototype.forEach.call(root.querySelectorAll('[data-mg-toggle]'), function (btn) {\n      var panel = document.getElementById(btn.getAttribute('aria-controls'));\n      if (!panel) return;\n      btn.addEventListener('click', function () {\n        var open = btn.getAttribute('aria-expanded') === 'true';\n        btn.setAttribute('aria-expanded', String(!open));\n        panel.hidden = open;\n      });\n    });\n\n    document.addEventListener('submit', function (e) {\n      var f = e.target;\n      // the theme's forms hold an input named \"id\" (the variant), so f.id is that input: read the attribute\n      var fid = f && f.getAttribute ? f.getAttribute('id') : '';\n      if (fid !== mainId && fid !== stickyId) return;\n      var miss = firstMissing();\n      if (!miss) { syncSticky(); return; }\n      e.preventDefault();\n      e.stopImmediatePropagation();\n      miss.scrollIntoView({ behavior: REDUCE.matches ? 'auto' : 'smooth', block: 'center' });\n      var focusEl = miss.querySelector('input, select');\n      if (focusEl) setTimeout(function () { focusEl.focus({ preventScroll: true }); }, REDUCE.matches ? 0 : 400);\n    }, true);\n  }\n\n  function boot() {\n    Array.prototype.forEach.call(document.querySelectorAll('[data-mg-opts]'), init);\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot);\n  else boot();\n})();\n"],
  "mappings": "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",
  "names": []
}
