{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/es-bfi-swatches.js?x=1792634555379"],
  "sourcesContent": ["/* EuroSpeed - BFI-only image swatches (2026-10-21).\n   Black Forest Industries sells shift boots/knobs in dozens of colour + stitch combinations and shows a photo swatch for each\n   on its own site. This turns the native <select> for an option into a grid of photo swatches when (and only when) that option's\n   values map to distinct variant photos. It is loaded only for product.vendor == 'BFI' (snippets/es-bfi-swatches.liquid), drives the\n   existing hidden select (so esGuardSelection / esSyncToVariant / gallery switching / cart all keep working unchanged), and does\n   nothing at all if the data block is missing. */\n(function () {\n  'use strict';\n  var dataEl = document.getElementById('es-bfi-swatch-data');\n  if (!dataEl) return;\n  var data;\n  try { data = JSON.parse(dataEl.textContent); } catch (e) { return; }\n  if (!data || !data.length) return;\n\n  var css = '' +\n    '.es-selector-wrapper[data-es-bfi-sw=\"1\"]{display:block!important}' +\n    '.es-selector-wrapper[data-es-bfi-sw=\"1\"] label{display:block!important;width:100%!important;float:none!important}' +\n    '.es-bfi-sw__sel{display:block;width:100%;clear:both}' +\n    '.es-bfi-sw{width:100%;box-sizing:border-box;display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));grid-auto-rows:auto;align-items:start;gap:8px;margin:2px 0 4px;max-height:392px;overflow:auto;padding:2px}' +\n    '.es-bfi-sw__b{height:auto!important;min-height:0!important;line-height:normal;overflow:visible;appearance:none;-webkit-appearance:none;background:#fff;border:2px solid #dedede;border-radius:10px;padding:5px;margin:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;font:inherit;color:#1f1f1f;text-align:center;transition:border-color .12s,box-shadow .12s}' +\n    '.es-bfi-sw__b.is-textonly{justify-content:center;min-height:54px!important;padding:8px 6px}' +\n    '.es-bfi-sw__b:hover{border-color:#9ec5fb}' +\n    '.es-bfi-sw__b:focus-visible{outline:2px solid #0070f3;outline-offset:2px}' +\n    '.es-bfi-sw__b[aria-checked=\"true\"]{border-color:#0070f3;box-shadow:0 0 0 2px rgba(0,112,243,.18)}' +\n    '.es-bfi-sw__b.is-oos{opacity:.45}' +\n    '.es-bfi-sw__im{display:block;width:100%;aspect-ratio:1/1;border-radius:6px;background:#f4f4f4 center/contain no-repeat}' +\n    '.es-bfi-sw__t{display:block;font-size:11px;line-height:1.25;color:#444;word-break:break-word}' +\n    '.es-bfi-sw__sel{font-size:13px;color:#555;margin:0 0 6px}.es-bfi-sw__sel strong{color:#111}' +\n    '.es-bfi-sw-native{position:absolute!important;opacity:0!important;width:1px!important;height:1px!important;pointer-events:none!important;overflow:hidden}' +\n    '@media (max-width:620px){.es-bfi-sw{grid-template-columns:repeat(auto-fill,minmax(72px,1fr));max-height:340px}}';\n  var st = document.createElement('style');\n  st.setAttribute('data-es-bfi-swatches', '1');\n  st.appendChild(document.createTextNode(css));\n  document.head.appendChild(st);\n\n  function build(wrapper) {\n    var sel = wrapper.querySelector('select.single-option-selector');\n    if (!sel || wrapper.getAttribute('data-es-bfi-sw') === '1') return;\n    var idx = parseInt(sel.getAttribute('data-option-index'), 10);\n    if (isNaN(idx)) return;\n    var vals = [];\n    Array.prototype.forEach.call(sel.options, function (o) { if (o.value) vals.push(o.value); });\n    var map = {};\n    data.forEach(function (v) {\n      var val = v.o && v.o[idx];\n      if (val != null && v.i && !map[val]) map[val] = v.i;\n    });\n    var have = vals.filter(function (x) { return map[x]; });\n    var distinct = {};\n    have.forEach(function (x) { distinct[map[x]] = 1; });\n    // Only swatch an option whose values really are photographed (most values, and not one shared image).\n    if (have.length < Math.ceil(vals.length * 0.6) || Object.keys(distinct).length < 3) return;\n\n    wrapper.setAttribute('data-es-bfi-sw', '1');\n    var label = wrapper.querySelector('label');\n    var selected = document.createElement('div');\n    selected.className = 'es-bfi-sw__sel';\n    var grid = document.createElement('div');\n    grid.className = 'es-bfi-sw';\n    grid.setAttribute('role', 'radiogroup');\n    grid.setAttribute('aria-label', label ? label.textContent : 'Options');\n    var btns = [];\n    vals.forEach(function (val) {\n      var b = document.createElement('button');\n      b.type = 'button';\n      b.className = 'es-bfi-sw__b';\n      b.setAttribute('role', 'radio');\n      b.setAttribute('aria-checked', 'false');\n      b.setAttribute('title', val);\n      b.setAttribute('data-v', val);\n      var im = document.createElement('span');\n      im.className = 'es-bfi-sw__im';\n      if (map[val]) im.style.backgroundImage = 'url(\"' + map[val] + '\")';\n      else { im.style.display = 'none'; b.classList.add('is-textonly'); }\n      var t = document.createElement('span');\n      t.className = 'es-bfi-sw__t';\n      t.textContent = val;\n      b.appendChild(im);\n      b.appendChild(t);\n      b.addEventListener('click', function () {\n        if (sel.value !== val) {\n          sel.value = val;\n          sel.dispatchEvent(new Event('change', { bubbles: true }));\n        }\n        sync();\n        setTimeout(sync, 60);\n      });\n      grid.appendChild(b);\n      btns.push(b);\n    });\n    function sync() {\n      selected.innerHTML = '';\n      selected.appendChild(document.createTextNode('Selected: '));\n      var s = document.createElement('strong');\n      s.textContent = sel.value;\n      selected.appendChild(s);\n      btns.forEach(function (b) {\n        var v = b.getAttribute('data-v');\n        b.setAttribute('aria-checked', v === sel.value ? 'true' : 'false');\n        var oos = false;\n        Array.prototype.forEach.call(sel.options, function (o) { if (o.value === v && o.dataset.esOos === '1') oos = true; });\n        b.classList.toggle('is-oos', oos);\n      });\n    }\n    sel.classList.add('es-bfi-sw-native');\n    sel.parentNode.insertBefore(selected, sel);\n    sel.parentNode.insertBefore(grid, sel);\n    sync();\n    document.addEventListener('change', function (e) { if (e.target === sel) { setTimeout(sync, 0); setTimeout(sync, 80); } });\n    window.addEventListener('load', function () { setTimeout(sync, 0); setTimeout(sync, 400); });\n  }\n\n  function init() {\n    var opts = document.getElementById('es-options');\n    if (!opts) return;\n    opts.querySelectorAll('.es-selector-wrapper').forEach(build);\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', function () { setTimeout(init, 0); });\n  else setTimeout(init, 0);\n  window.addEventListener('load', function () { setTimeout(init, 50); });\n})();\n"],
  "mappings": "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",
  "names": []
}
