{
  "version": 3,
  "sources": ["/cdn/shop/t/35/assets/lb-home-stack.js?x=27054"],
  "sourcesContent": ["/* Home \"build your setup\" (sections/lb-home-stack.liquid): pre-rendered frames on a canvas, scrubbed by scroll,\n   one frame set per base; the chips switch the set, Add to cart posts the base's product. */\n(function () {\n  var root = document.querySelector('[data-lb-hs]');\n  if (!root) return;\n  var box = root.querySelector('.lb-hs__box'), track = root.querySelector('.lb-hs__track');\n  var canvas = root.querySelector('canvas'), ctx = canvas.getContext('2d');\n  var chips = [].slice.call(root.querySelectorAll('[data-lb-hs-chip]'));\n  var buys = [].slice.call(root.querySelectorAll('[data-lb-hs-buy]'));\n  var stepEls = [].slice.call(root.querySelectorAll('.lb-hs__step'));\n  var dotsBox = root.querySelector('.lb-hs__dots');\n  var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  var START = Math.min(0.9, Math.max(0, parseFloat(root.getAttribute('data-start')) || 0));   // skip this share of the frames: the scroll starts part-way into the animation\n  var HOLD_IN = 0.04, HOLD_OUT = 0.1;               // share of the scroll before the board starts to move / after it has seated\n  var sets = chips.map(function (c) { return { prefix: c.dataset.prefix, n: +c.dataset.count, ext: c.dataset.ext || 'webp', imgs: [], started: false }; });\n  var cur = 0, m = reduce ? 1 : 0, shown = null, seated = false;\n\n  function url(s, i) { return s.prefix + ('000' + i).slice(-3) + '.' + s.ext; }\n  function startIdx(s) { return Math.round(START * (s.n - 1)); }\n  function frame(s) { return Math.round((START + m * (1 - START)) * (s.n - 1)); }\n  function load(s, i) {\n    if (s.imgs[i]) return;\n    var im = new Image(); im.decoding = 'async';\n    im.onload = function () { if (s === sets[cur]) draw(); };\n    im.src = url(s, i); s.imgs[i] = im;\n  }\n  function ready(s, i) { var im = s.imgs[i]; return im && im.complete && im.naturalWidth; }\n  function loadAll(s) {\n    if (s.started) return; s.started = true;\n    var a = startIdx(s); load(s, a); load(s, s.n - 1);\n    var order = [], i, off; for (off = 0; off < 3; off++) for (i = a + 1 + off; i < s.n - 1; i += 3) order.push(i);\n    var k = 0; (function pump() { for (var c = 0; c < 5 && k < order.length; c++) load(s, order[k++]); if (k < order.length) setTimeout(pump, 70); })();\n  }\n  function draw() {\n    var s = sets[cur], want = frame(s), j = want;\n    while (j >= 0 && !ready(s, j)) j--;\n    if (j < 0) { j = want; while (j < s.n && !ready(s, j)) j++; if (j >= s.n) return; }\n    if (shown && shown.s === cur && shown.j === j) return;\n    var im = s.imgs[j];\n    if (canvas.width !== im.naturalWidth || canvas.height !== im.naturalHeight) { canvas.width = im.naturalWidth; canvas.height = im.naturalHeight; }\n    ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.drawImage(im, 0, 0); shown = { s: cur, j: j };\n  }\n  var lastStep = -1;\n  function baseSteps() { return stepEls.filter(function (el) { return +el.dataset.for === cur; }); }\n  function buildDots() {\n    var n = baseSteps().length; dotsBox.innerHTML = '';\n    for (var k = 0; k < n; k++) dotsBox.appendChild(document.createElement('i'));\n    lastStep = -1;\n  }\n  function captions() {\n    var list = baseSteps(), n = list.length || 1;\n    var idx = reduce ? n - 1 : Math.min(n - 1, Math.floor(m * n));\n    if (idx !== lastStep) {\n      lastStep = idx;\n      list.forEach(function (el, k) { el.classList.toggle('is-on', reduce || k === idx); });\n      [].slice.call(dotsBox.children).forEach(function (d, k) { d.classList.toggle('is-on', k <= idx); });\n    }\n    var done = m >= 0.98;\n    if (done !== seated) { seated = done; root.classList.toggle('is-seated', done); }\n  }\n  function choose(i) {\n    cur = i;\n    chips.forEach(function (c, k) { var on = k === i; c.classList.toggle('is-on', on); c.setAttribute('aria-pressed', on ? 'true' : 'false'); });\n    buys.forEach(function (b) { b.hidden = +b.dataset.lbHsBuy !== i; });\n    stepEls.forEach(function (el) { el.hidden = +el.dataset.for !== i; el.classList.remove('is-on'); });\n    buildDots(); loadAll(sets[i]); draw(); captions();\n  }\n  function update() {\n    if (reduce) { draw(); return; }\n    var r = track.getBoundingClientRect(), top = box.getBoundingClientRect().top - r.top;\n    var travel = Math.max(1, r.height - box.offsetHeight);\n    var stuck = parseFloat(getComputedStyle(root).getPropertyValue('--lb-hs-top')) || 0;\n    var p = Math.min(1, Math.max(0, (stuck - r.top) / travel));\n    m = Math.min(1, Math.max(0, (p - HOLD_IN) / (1 - HOLD_IN - HOLD_OUT)));\n    draw(); captions();\n  }\n  var tick = false;\n  function onScroll() { if (tick) return; tick = true; requestAnimationFrame(function () { tick = false; update(); }); }\n\n  chips.forEach(function (c, i) {\n    c.addEventListener('click', function () { choose(i); });\n    ['mouseenter', 'focus', 'touchstart'].forEach(function (ev) { c.addEventListener(ev, function () { loadAll(sets[i]); }, { passive: true }); });\n  });\n\n  function refreshCount() {\n    fetch('/cart.js', { headers: { Accept: 'application/json' } }).then(function (r) { return r.json(); }).then(function (c) {\n      var n = document.querySelector('.header__cart-count');\n      if (n) { n.dataset.n = c.item_count; var num = n.querySelector('.header__cart-count-number'); if (num) num.textContent = c.item_count; }\n      document.dispatchEvent(new CustomEvent('cart:refresh', { detail: c }));\n    }).catch(function () {});\n  }\n  root.addEventListener('click', function (e) {\n    var b = e.target.closest('[data-lb-hs-add]'); if (!b) return;\n    var buy = b.closest('[data-vid]'); b.disabled = true;\n    fetch('/cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ items: [{ id: +buy.dataset.vid, quantity: 1 }] }) })\n      .then(function (r) { if (!r.ok) throw new Error('add'); return r.json(); })\n      .then(function () { b.textContent = 'Added \u2713'; refreshCount(); setTimeout(function () { b.textContent = 'Add to cart'; b.disabled = false; }, 1600); })\n      .catch(function () { b.textContent = 'Try again'; b.disabled = false; });\n  });\n\n  if ('IntersectionObserver' in window) {\n    new IntersectionObserver(function (es) { if (es[0].isIntersecting) loadAll(sets[cur]); }, { rootMargin: '1500px 0px' }).observe(root);\n  } else { loadAll(sets[cur]); }\n  load(sets[cur], startIdx(sets[cur]));\n  window.addEventListener('scroll', onScroll, { passive: true });\n  window.addEventListener('resize', onScroll);\n  choose(0); update();\n})();\n"],
  "mappings": "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",
  "names": []
}
