{
  "version": 3,
  "sources": ["/cdn/shop/t/60/assets/wv-landing.js?x=1"],
  "sourcesContent": ["/*\n * Women's Vitality Blend landing page (templates/page.womens-vitality.json).\n * Everything here is progressive enhancement: with no JS the preselected option's permalink still\n * works, the gallery still scrolls, and the video poster links nowhere but costs nothing.\n */\n(function () {\n  if (window.__wvLanding) return;\n  window.__wvLanding = true;\n\n  function ready(fn) {\n    if (document.readyState !== 'loading') fn();\n    else document.addEventListener('DOMContentLoaded', fn);\n  }\n\n  ready(function () {\n    var heroOffer = document.querySelector('.wv-hero [data-wv-offer]');\n    var dock = document.querySelector('[data-wv-dock]');\n    var dockPrice = document.querySelector('[data-wv-dock-price]');\n    var dockBtn = document.querySelector('[data-wv-dock-btn]');\n\n    /* ---- Offer: the checked option drives the button's permalink and label ---- */\n    function syncOffer(offer) {\n      var checked = offer.querySelector('input[type=\"radio\"]:checked');\n      var cta = offer.querySelector('[data-wv-cta]');\n      if (!checked || !cta) return;\n      var qty = checked.value;\n      var price = checked.getAttribute('data-price') || '';\n      cta.setAttribute('href', checked.getAttribute('data-href') || (offer.getAttribute('data-cart-url') + '/' + offer.getAttribute('data-variant') + ':' + qty));\n      var text = cta.querySelector('[data-wv-cta-text]');\n      if (text) text.textContent = (cta.getAttribute('data-label') || '').replace('[price]', price);\n      if (offer === heroOffer) {\n        if (dockPrice) dockPrice.textContent = (qty === '2' ? '2 bottles \u00B7 ' : '1 bottle \u00B7 ') + price;\n        if (dockBtn) dockBtn.setAttribute('href', cta.getAttribute('href'));\n      }\n    }\n    document.querySelectorAll('[data-wv-offer]').forEach(function (offer) {\n      syncOffer(offer);\n      offer.addEventListener('change', function () { syncOffer(offer); });\n    });\n\n    /* ---- Gallery: thumbnails jump to a slide; the active one follows the swipe ---- */\n    document.querySelectorAll('[data-wv-gallery]').forEach(function (gallery) {\n      var track = gallery.querySelector('[data-wv-track]');\n      var thumbs = gallery.querySelectorAll('[data-wv-thumb]');\n      if (!track || thumbs.length < 2) return;\n      function setActive(i) {\n        thumbs.forEach(function (t, n) {\n          var on = n === i;\n          t.classList.toggle('is-active', on);\n          if (on) t.setAttribute('aria-current', 'true'); else t.removeAttribute('aria-current');\n        });\n      }\n      thumbs.forEach(function (t) {\n        t.addEventListener('click', function () {\n          var i = parseInt(t.getAttribute('data-wv-thumb'), 10) || 0;\n          track.scrollTo({ left: i * track.clientWidth, behavior: 'smooth' });\n          setActive(i);\n        });\n      });\n      var ticking = false;\n      track.addEventListener('scroll', function () {\n        if (ticking) return;\n        ticking = true;\n        requestAnimationFrame(function () {\n          setActive(Math.round(track.scrollLeft / Math.max(1, track.clientWidth)));\n          ticking = false;\n        });\n      }, { passive: true });\n    });\n\n    /* ---- Video: load YouTube only when asked ---- */\n    document.querySelectorAll('[data-wv-video]').forEach(function (btn) {\n      btn.addEventListener('click', function () {\n        var id = btn.getAttribute('data-wv-video');\n        var iframe = document.createElement('iframe');\n        iframe.src = 'https://www.youtube-nocookie.com/embed/' + encodeURIComponent(id) + '?autoplay=1&rel=0&modestbranding=1&playsinline=1';\n        iframe.title = btn.getAttribute('aria-label') || 'Video';\n        iframe.allow = 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share';\n        iframe.allowFullscreen = true;\n        var holder = document.createElement('div');\n        holder.className = 'wv-video';\n        holder.appendChild(iframe);\n        btn.replaceWith(holder);\n      }, { once: true });\n    });\n\n    /* ---- Sticky bar: shown whenever the hero's own button is off screen \u2014 below the fold on\n       first load (phones, where the photo is large) or scrolled past \u2014 and hidden over the\n       closing offer, which has its own button. ---- */\n    var heroCta = heroOffer && heroOffer.querySelector('[data-wv-cta]');\n    var closing = document.querySelector('#wv-offer');\n    if (dock && heroCta && 'IntersectionObserver' in window) {\n      dock.hidden = false;\n      var heroGone = false, closingIn = false;\n      function update() { dock.classList.toggle('is-visible', heroGone && !closingIn); }\n      new IntersectionObserver(function (entries) {\n        entries.forEach(function (e) { heroGone = !e.isIntersecting; });\n        update();\n      }).observe(heroCta);\n      if (closing) {\n        new IntersectionObserver(function (entries) {\n          entries.forEach(function (e) { closingIn = e.isIntersecting; });\n          update();\n        }, { threshold: 0.15 }).observe(closing);\n      }\n    }\n  });\n})();\n"],
  "mappings": "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",
  "names": ["update"]
}
