{
  "version": 3,
  "sources": ["/cdn/shop/t/14/assets/theme.js?rev=10"],
  "sourcesContent": ["/* Downforce 3D theme \u2014 shared behaviour.\n *\n * \u2B50 Deliberately small. The React app carried framer-motion, radix, lucide and react-router to do\n * what a server-rendered theme gets for free. The only thing genuinely worth keeping is the\n * scroll-reveal, because it is visible brand behaviour on every section of the current site.\n *\n * \u2B50 2026-09-19: gallery IIFE is the LIVE rev (dynamic mainsNow / thumbsNow + df3d:gallery-rebuilt\n * / df3d:gallery-show). Clarity CRO swipe + tap-to-advance sit on that base. Do not revert to the\n * boot-time mains snapshot \u2014 Circuit Hex starts with 0\u20131 photos and syncGallery injects more.\n * Hex STAGE (rev=6): in-card prev/next; no vertical scrollIntoView after Add;\n * Circuit Hex / circuit-hex-10-inch bottom gallery stays first-load static\n * (syncGallery still runs in configurator.js &rev=28 \u2014 this file restores);\n * strip Special instructions blocks on hex-list rebuild;\n * strip \u201CChoose Your Edition\u201D on preset Hex pages (rev=7);\n * header is NOT pinned (rev=8); hex-strip centers the active card.\n * Policy: docs/mobile-desktop-split.md\n * MOBILE-ONLY (rev=9): enhanceHexCards / centerCardX / strip tap-jump \u2014 isMobileHexUx().\n * DESKTOP (rev=10): Circuit Hex gallery follows track pick like live (skip freeze \u22651024).\n * OPEN (ungated, Josh undecided): stripNotes, edition strip.\n */\n(function () {\n  'use strict';\n\n  /* \u2500\u2500 scroll reveal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   * Replaces framer-motion's `whileInView` entrances.\n   *\n   * \u26D4 THE ELEMENTS START VISIBLE IN THE MARKUP. The hiding class is applied by THIS script,\n   * immediately before the observer takes over. That ordering is deliberate: if JS never runs \u2014\n   * blocked, failed, ancient browser \u2014 the visitor sees a complete page rather than a blank one.\n   * The React version had the opposite failure mode, and on a store about to buy paid traffic an\n   * invisible page is an invisible product.\n   */\n  var revealables = document.querySelectorAll('[data-reveal]');\n\n  if (!('IntersectionObserver' in window) || !revealables.length) return;\n\n  // Respect the user's motion preference \u2014 reveal instantly, no transition.\n  if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n\n  var observer = new IntersectionObserver(function (entries) {\n    entries.forEach(function (entry) {\n      if (!entry.isIntersecting) return;\n      entry.target.classList.remove('reveal-ready');\n      entry.target.classList.add('reveal-in');\n      observer.unobserve(entry.target);\n    });\n  }, { rootMargin: '0px 0px -10% 0px', threshold: 0.05 });\n\n  revealables.forEach(function (el) {\n    // \u26A0 Anything already on screen at load is never hidden at all \u2014 hiding then revealing content\n    // the visitor is already looking at reads as a flicker, not an animation.\n    var box = el.getBoundingClientRect();\n    if (box.top < window.innerHeight && box.bottom > 0) {\n      el.classList.add('reveal-in');\n      return;\n    }\n    el.classList.add('reveal-ready');\n    observer.observe(el);\n  });\n})();\n\n/* \u2500\u2500 product gallery \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n * Lives in theme.js, NOT configurator.js: the gallery is on every product page including the\n * desk stand, where the configurator deliberately does not render at all.\n *\n * \u26D4 Query the slides on every show(). configurator.js syncGallery() replaces [data-gallery]\n * innerHTML and fires df3d:gallery-rebuilt. A boot-time NodeList goes stale; Circuit Hex would\n * look like it had no gallery after the first pick.\n * \u26A0 Progressive enhancement \u2014 with JS off the markup already shows image 1.\n */\n(function () {\n  'use strict';\n  var root = document.querySelector('[data-gallery]');\n  if (!root) return;\n\n  function mainsNow() {\n    return [].slice.call(root.querySelectorAll('[data-gallery-main]'));\n  }\n  function thumbsNow() {\n    return [].slice.call(root.querySelectorAll('[data-gallery-thumb]'));\n  }\n\n  var at = 0;\n\n  function show(i) {\n    var mains = mainsNow();\n    var thumbs = thumbsNow();\n    if (!mains.length) return;\n    // \u26D4 Wrap rather than clamp \u2014 arrows that stop dead at the ends read as broken on a 2-photo set.\n    at = (i + mains.length) % mains.length;\n    mains.forEach(function (img, n) { img.classList.toggle('hidden', n !== at); });\n    thumbs.forEach(function (t, n) {\n      t.classList.toggle('border-primary', n === at);\n      t.classList.toggle('border-border', n !== at);\n    });\n    var counter = root.querySelector('[data-gallery-count]');\n    if (counter) counter.textContent = (at + 1) + ' / ' + mains.length;\n  }\n\n  root.addEventListener('df3d:gallery-rebuilt', function () {\n    at = 0;\n    show(0);\n    /* Hex STAGE redo: do not scroll this gallery into view after Add. Photo\n     * browse lives on the hex-card arrows in the side-scroll strip. */\n  });\n\n  /* MOBILE-ONLY: Circuit Hex first-load freeze. DESKTOP \u22651024: leave\n     configurator syncGallery in place so the right-side photos follow\n     the selected track \u2014 same as live. configurator.js stays &rev=28. */\n  function isDesktopGalleryLive() {\n    return !!(window.matchMedia && window.matchMedia('(min-width: 1024px)').matches);\n  }\n  var cfg = document.getElementById('df3d-configurator');\n  var hexHandle = cfg && cfg.getAttribute('data-product-handle');\n  if (hexHandle === 'circuit-hex' || hexHandle === 'circuit-hex-10-inch') {\n    var firstLoad = root.innerHTML;\n    root.addEventListener('df3d:gallery-rebuilt', function () {\n      if (isDesktopGalleryLive()) {\n        root.removeAttribute('data-df3d-gallery-frozen');\n        return;\n      }\n      var key = root.getAttribute('data-df3d-key');\n      var set = root.getAttribute('data-df3d-set');\n      root.innerHTML = firstLoad;\n      if (key) root.setAttribute('data-df3d-key', key);\n      if (set) root.setAttribute('data-df3d-set', set);\n      root.setAttribute('data-df3d-gallery-frozen', '1');\n      at = 0;\n      show(0);\n    });\n  }\n  root.addEventListener('df3d:gallery-show', function (e) {\n    var i = e && e.detail ? e.detail.index : 0;\n    if (typeof i === 'number' && i >= 0) show(i);\n  });\n\n  var touchX = 0;\n  var touchY = 0;\n  var swiped = false;\n\n  root.addEventListener('click', function (e) {\n    if (e.target.closest('[data-gallery-next]')) { e.preventDefault(); show(at + 1); return; }\n    if (e.target.closest('[data-gallery-prev]')) { e.preventDefault(); show(at - 1); return; }\n    var t = e.target.closest('[data-gallery-thumb]');\n    if (t) { e.preventDefault(); show(parseInt(t.getAttribute('data-gallery-thumb'), 10) || 0); return; }\n    /* CLARITY CRO: tap on the photo advances \u2014 people were already doing this; a dead main image\n     * is the gallery half of the Road America / Sonoma dead-click callout. */\n    if (!swiped && e.target.closest('[data-gallery-stage], [data-gallery-main]')) {\n      if (e.target.closest('[data-gallery-next], [data-gallery-prev], [data-gallery-count]')) return;\n      if (mainsNow().length < 2) return;\n      e.preventDefault();\n      show(at + 1);\n    }\n  });\n\n  root.addEventListener('touchstart', function (e) {\n    if (!e.changedTouches || !e.changedTouches[0]) return;\n    if (e.target.closest('[data-gallery-thumb], [data-gallery-next], [data-gallery-prev]')) return;\n    touchX = e.changedTouches[0].clientX;\n    touchY = e.changedTouches[0].clientY;\n    swiped = false;\n  }, { passive: true });\n\n  root.addEventListener('touchend', function (e) {\n    if (!e.changedTouches || !e.changedTouches[0]) return;\n    if (e.target.closest('[data-gallery-thumb], [data-gallery-next], [data-gallery-prev]')) return;\n    var dx = e.changedTouches[0].clientX - touchX;\n    var dy = e.changedTouches[0].clientY - touchY;\n    if (Math.abs(dx) < 40 || Math.abs(dx) < Math.abs(dy)) return;\n    if (mainsNow().length < 2) return;\n    swiped = true;\n    if (dx < 0) show(at + 1);\n    else show(at - 1);\n  }, { passive: true });\n\n  /* \u2B50 Arrow keys only once the gallery has been touched \u2014 binding them globally would hijack\n   * arrow keys while someone is typing engraving text in the configurator below. */\n  var engaged = false;\n  root.addEventListener('click', function () { engaged = true; });\n  document.addEventListener('keydown', function (e) {\n    if (!engaged) return;\n    var tag = (document.activeElement && document.activeElement.tagName) || '';\n    if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return;\n    if (e.key === 'ArrowRight') show(at + 1);\n    else if (e.key === 'ArrowLeft') show(at - 1);\n  });\n})();\n\n/* \u2500\u2500 hex-card photos + in-strip arrows (Hex STAGE, theme.js not configurator.js) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n * MOBILE-ONLY (\u22641023): rewrite src to 800 + prev/next chrome + centerCardX.\n * Desktop: leave stacked configurator thumbs (live-ish). unwrapHexStages on resize.\n * OPEN: stripNotes still runs at every width (SI hide undecided).\n * Configurator stays &rev=28.\n */\n(function () {\n  'use strict';\n  var list = document.querySelector('[data-hex-list]');\n  if (!list) return;\n\n  function isMobileHexUx() {\n    return !!(window.matchMedia && window.matchMedia('(max-width: 1023px)').matches);\n  }\n\n  function atWidth(url, w) {\n    var u = String(url || '');\n    return /[?&]width=\\d+/.test(u) ? u.replace(/([?&])width=\\d+/, '$1width=' + w) : u;\n  }\n  function assetKey(url) {\n    return String(url || '').split('?')[0].replace(/^https?:/, '');\n  }\n  function readCat(id) {\n    var el = document.getElementById(id);\n    if (!el) return [];\n    try { return JSON.parse(el.textContent); } catch (e) { return []; }\n  }\n  function catalogueImages() {\n    return readCat('df3d-catalogue-medium').concat(readCat('df3d-catalogue-large'));\n  }\n  function imagesForSrc(src) {\n    var key = assetKey(src);\n    if (!key) return [];\n    var entries = catalogueImages();\n    for (var i = 0; i < entries.length; i++) {\n      var imgs = entries[i] && entries[i].images;\n      if (!imgs || !imgs.length) continue;\n      for (var j = 0; j < imgs.length; j++) {\n        if (assetKey(imgs[j]) === key) return imgs;\n      }\n    }\n    return [];\n  }\n\n  function showHexPhoto(stage, i) {\n    var urls = [];\n    try { urls = JSON.parse(stage.getAttribute('data-hex-urls') || '[]'); } catch (e) { urls = []; }\n    if (!urls.length) return;\n    var at = ((i % urls.length) + urls.length) % urls.length;\n    stage.setAttribute('data-hex-at', String(at));\n    var img = stage.querySelector('img');\n    if (img) {\n      img.setAttribute('src', atWidth(urls[at], 800));\n      img.setAttribute('width', '800');\n      img.setAttribute('height', '800');\n    }\n    var count = stage.querySelector('[data-hex-count]');\n    if (count) count.textContent = (at + 1) + ' / ' + urls.length;\n  }\n\n  function stripNotes() {\n    var tas = list.querySelectorAll('textarea[data-field=\"notes\"]');\n    for (var i = 0; i < tas.length; i++) {\n      var block = tas[i].parentNode;\n      if (block && block.style) block.style.display = 'none';\n    }\n  }\n\n  function unwrapHexStages() {\n    var stages = list.querySelectorAll('[data-hex-stage]');\n    var i;\n    for (i = 0; i < stages.length; i++) {\n      var stage = stages[i];\n      var img = stage.querySelector('img');\n      var parent = stage.parentNode;\n      if (img && parent) parent.insertBefore(img, stage);\n      if (stage.parentNode) stage.parentNode.removeChild(stage);\n    }\n  }\n\n  function enhanceHexCards() {\n    stripNotes();\n    if (!isMobileHexUx()) {\n      unwrapHexStages();\n      return;\n    }\n    var cards = list.querySelectorAll('[data-hex]');\n    for (var c = 0; c < cards.length; c++) {\n      var card = cards[c];\n      if (card.querySelector('[data-hex-stage]')) continue;\n      var img = card.querySelector('img');\n      if (!img) continue;\n      var src = img.getAttribute('src') || '';\n      var urls = imagesForSrc(src);\n      var next = atWidth(src, 800);\n      if (next !== src) img.setAttribute('src', next);\n      img.setAttribute('width', '800');\n      img.setAttribute('height', '800');\n      if (urls.length < 2) continue;\n\n      var stage = document.createElement('div');\n      stage.className = 'df3d-hex-stage';\n      stage.setAttribute('data-hex-stage', '');\n      stage.setAttribute('data-hex-at', '0');\n      stage.setAttribute('data-hex-urls', JSON.stringify(urls));\n      img.parentNode.insertBefore(stage, img);\n      stage.appendChild(img);\n\n      var prev = document.createElement('button');\n      prev.type = 'button';\n      prev.setAttribute('data-hex-prev', '');\n      prev.setAttribute('aria-label', 'Previous photo');\n      prev.textContent = '\\u2039';\n      var nxt = document.createElement('button');\n      nxt.type = 'button';\n      nxt.setAttribute('data-hex-next', '');\n      nxt.setAttribute('aria-label', 'Next photo');\n      nxt.textContent = '\\u203A';\n      var count = document.createElement('span');\n      count.setAttribute('data-hex-count', '');\n      count.textContent = '1 / ' + urls.length;\n      stage.appendChild(prev);\n      stage.appendChild(nxt);\n      stage.appendChild(count);\n    }\n  }\n\n  list.addEventListener('click', function (e) {\n    var btn = e.target.closest('[data-hex-prev], [data-hex-next]');\n    if (btn) {\n      e.preventDefault();\n      e.stopPropagation();\n      var stage = btn.closest('[data-hex-stage]');\n      if (!stage) return;\n      var at = parseInt(stage.getAttribute('data-hex-at'), 10) || 0;\n      showHexPhoto(stage, btn.hasAttribute('data-hex-next') ? at + 1 : at - 1);\n      return;\n    }\n    /* MOBILE-ONLY: keep photo browse in the strip. Do not let data-jumpgallery\n     * scroll the left gallery into view after a card tap. */\n    if (e.target.closest('[data-hex-stage], [data-hex] img')) {\n      if (isMobileHexUx()) e.stopPropagation();\n    }\n  }, true);\n\n  /* MOBILE-ONLY: center the new card so both neighbors peek. */\n  function centerCardX(card) {\n    if (!card || !isMobileHexUx()) return 0;\n    var listW = list.clientWidth;\n    var x = card.offsetLeft - (listW - card.offsetWidth) / 2;\n    var max = Math.max(0, list.scrollWidth - listW);\n    if (x < 0) x = 0;\n    if (x > max) x = max;\n    return x;\n  }\n\n  var keepX = 0;\n  var lastCount = list.querySelectorAll('[data-hex]').length;\n  list.addEventListener('scroll', function () {\n    if (isMobileHexUx()) keepX = list.scrollLeft;\n  }, { passive: true });\n\n  enhanceHexCards();\n\n  var mq = window.matchMedia && window.matchMedia('(max-width: 1023px)');\n  function onHexMq() {\n    keepX = 0;\n    enhanceHexCards();\n  }\n  if (mq) {\n    if (mq.addEventListener) mq.addEventListener('change', onHexMq);\n    else if (mq.addListener) mq.addListener(onHexMq);\n  }\n\n  if (!window.MutationObserver) return;\n  var obs = new MutationObserver(function () {\n    enhanceHexCards();\n    var cards = list.querySelectorAll('[data-hex]');\n    var n = cards.length;\n    if (!isMobileHexUx()) {\n      lastCount = n;\n      return;\n    }\n    if (n > lastCount && cards[n - 1]) {\n      keepX = centerCardX(cards[n - 1]);\n    }\n    list.scrollLeft = keepX;\n    lastCount = n;\n  });\n  obs.observe(list, { childList: true });\n})();\n\n/* OPEN: kill \u201CChoose Your Edition\u201D on Hex (not route / custom). All widths.\n * Circuit Hex now has Size+Color variants, so sellable_count > 1 re-opens the\n * old edition <select>. Size is per-hex chips. Leave a hidden name=\"id\".\n */\n(function () {\n  'use strict';\n  var cfg = document.getElementById('df3d-configurator');\n  if (cfg && cfg.getAttribute('data-mode') === 'custom') return;\n\n  function isEditionLabel(el) {\n    var t = (el.textContent || '').replace(/\\s+/g, ' ').trim();\n    return /^choose your edition$/i.test(t);\n  }\n\n  var labels = document.querySelectorAll('label');\n  var i;\n  for (i = 0; i < labels.length; i++) {\n    if (!isEditionLabel(labels[i])) continue;\n    var forId = labels[i].getAttribute('for');\n    var sel = (forId && document.getElementById(forId)) || labels[i].nextElementSibling;\n    if (sel && sel.tagName === 'SELECT' && sel.getAttribute('name') === 'id') {\n      var hid = document.createElement('input');\n      hid.type = 'hidden';\n      hid.name = 'id';\n      hid.value = sel.value || '';\n      sel.parentNode.insertBefore(hid, sel);\n      sel.remove();\n    }\n    var wrap = labels[i].parentNode;\n    labels[i].remove();\n    if (wrap && wrap !== document.body && !wrap.querySelector('input, select, textarea, button, [data-hex], [data-add-slot]')) {\n      wrap.remove();\n    }\n  }\n\n  if (cfg && cfg.getAttribute('data-mode') === 'preset') {\n    var leftover = document.getElementById('variant-id');\n    if (leftover && leftover.tagName === 'SELECT') {\n      var h2 = document.createElement('input');\n      h2.type = 'hidden';\n      h2.name = leftover.getAttribute('name') || 'id';\n      h2.value = leftover.value || '';\n      leftover.parentNode.insertBefore(h2, leftover);\n      leftover.remove();\n      var lab = document.querySelector('label[for=\"variant-id\"]');\n      if (lab) lab.remove();\n    }\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
