{
  "version": 3,
  "sources": ["/cdn/shop/t/27/assets/smp-bike.js?nocache=1791543433132"],
  "sourcesContent": ["/*\n * SMParts \u2014 Bike-Waehler\n *\n * Ablauf: Marke -> Modell -> Baujahr. Auswahl liegt lokal im Browser.\n * Modelle nach Baureihen gruppiert (smp-bike-gruppen.liquid).\n *\n * Bewusst noch OHNE Filterwirkung: es wird gespeichert und angezeigt,\n * aber nichts ueber Passform behauptet und nichts gefiltert. Das kommt\n * erst, wenn echte Passdaten an den Produkten haengen.\n */\n(function () {\n  'use strict';\n\n  var STORAGE_KEY = 'smp:bike';\n\n  /*\n   * Der Waehler steht zweimal auf der Seite (Drawer und Footer). Ohne\n   * Signal wuesste die eine Instanz nichts von der Auswahl in der\n   * anderen \u2014 der Footer wuerde noch \"Waehle dein Bike\" zeigen, obwohl\n   * im Drawer laengst ein Bike gesetzt ist. Beim Speichern feuert\n   * deshalb ein Ereignis, auf das jede Instanz ihren Status neu zeichnet.\n   */\n  var EVENT_CHANGED = 'smp:bike-changed';\n\n  function read() {\n    try {\n      var raw = window.localStorage.getItem(STORAGE_KEY);\n      var b = raw ? JSON.parse(raw) : null;\n      return b && b.marke ? b : null;\n    } catch (e) {\n      return null;\n    }\n  }\n\n  function write(bike) {\n    try {\n      if (bike) window.localStorage.setItem(STORAGE_KEY, JSON.stringify(bike));\n      else window.localStorage.removeItem(STORAGE_KEY);\n    } catch (e) {\n      /* Private Mode \u2014 Auswahl gilt dann nur fuer diese Sitzung */\n    }\n    // Nach dem Schreiben, damit jede Instanz den fertigen Stand liest\n    document.dispatchEvent(new CustomEvent(EVENT_CHANGED));\n  }\n\n  function label(bike) {\n    if (!bike) return '';\n    return [bike.marke, bike.modell, bike.baujahr].filter(Boolean).join(' \u00B7 ');\n  }\n\n  function setup(root) {\n    /*\n     * Ein Waehler wird nur einmal eingerichtet.\n     *\n     * init() laeuft inzwischen auch bei shopify:section:load erneut, und\n     * ohne diese Sperre haengen danach zwei Saetze Ereignisse an\n     * denselben Schaltern: \"Aendern\" wuerde auf- und im selben Klick\n     * wieder zuklappen.\n     */\n    if (root.smpBereit) return;\n    root.smpBereit = true;\n\n    var dataEl = document.querySelector('[data-smp-bike-data]');\n    if (!dataEl) return;\n\n    var DATA;\n    try {\n      DATA = JSON.parse(dataEl.textContent);\n    } catch (e) {\n      return; // kaputte Daten: Waehler bleibt einfach aus\n    }\n\n    /*\n     * Logos je Marke (smp-bike-logos.liquid). Fehlen sie, laeuft der\n     * Waehler wie bisher ohne Bilder.\n     */\n    var LOGOS = {};\n    try {\n      var logoEl = document.querySelector('[data-smp-bike-logos]');\n      if (logoEl) LOGOS = JSON.parse(logoEl.textContent) || {};\n    } catch (e) {\n      LOGOS = {};\n    }\n\n    var GRUPPEN = {};\n    try {\n      var gruppenEl = document.querySelector('[data-smp-bike-gruppen]');\n      if (gruppenEl) GRUPPEN = JSON.parse(gruppenEl.textContent) || {};\n    } catch (e) {\n      GRUPPEN = {};\n    }\n\n    function logoKnoten(marke) {\n      if (!LOGOS[marke]) return null;\n      var s = document.createElement('span');\n      s.className = 'smp-bike__logo';\n      s.setAttribute('aria-hidden', 'true');\n      var img = document.createElement('img');\n      img.src = LOGOS[marke];\n      img.alt = '';\n      img.loading = 'lazy';\n      img.decoding = 'async';\n      s.appendChild(img);\n      return s;\n    }\n\n    /*\n     * Dawn haengt in global.js (MenuDrawer.bindEvents) an JEDEN Button\n     * innerhalb des Menue-Drawers einen Schliessen-Handler:\n     *\n     *   this.querySelectorAll('button:not(.localization-selector)...')\n     *     .forEach(b => b.addEventListener('click', this.onCloseButtonClick...))\n     *\n     * Jeder Klick auf \"\u00C4ndern\", \"Zur\u00FCck\" oder eine Marke wuerde also den\n     * ganzen Drawer schliessen. Ein Klon des Knotens traegt keine fremden\n     * Listener mehr \u2014 danach binden wir unsere eigenen.\n     *\n     * Betrifft nur die fest im Markup stehenden Schalter. Die Marken-,\n     * Modell- und Baujahr-Buttons entstehen erst spaeter per JS, da hat\n     * Dawn seine Bindung laengst durchgefuehrt.\n     */\n    function loesen(node) {\n      if (!node || !node.closest('menu-drawer, header-drawer')) return node;\n      var klon = node.cloneNode(true);\n      node.parentNode.replaceChild(klon, node);\n      return klon;\n    }\n\n    var el = {\n      current:  root.querySelector('[data-smp-bike-current]'),\n      value:    root.querySelector('[data-smp-bike-value]'),\n      change:   loesen(root.querySelector('[data-smp-bike-change]')),\n      start:    loesen(root.querySelector('[data-smp-bike-start]')),\n      panel:    root.querySelector('[data-smp-bike-panel]'),\n      step:     root.querySelector('[data-smp-bike-step]'),\n      back:     loesen(root.querySelector('[data-smp-bike-back]')),\n      close:    loesen(root.querySelector('[data-smp-bike-close]')),\n      searchW:  root.querySelector('[data-smp-bike-search-wrap]'),\n      search:   root.querySelector('[data-smp-bike-search]'),\n      options:  root.querySelector('[data-smp-bike-options]'),\n      empty:    root.querySelector('[data-smp-bike-empty]'),\n      remove:   loesen(root.querySelector('[data-smp-bike-remove]')),\n      removeRow: root.querySelector('[data-smp-bike-remove-row]')\n    };\n\n    var state = { schritt: 'marke', marke: null, modell: null, filter: '', weitere: false };\n\n    /* --------------------------------------------------------- Anzeige */\n\n    function renderStatus() {\n      var bike = read();\n      el.current.hidden = !bike;\n      el.start.hidden = !!bike;\n      if (el.removeRow) el.removeRow.hidden = !bike;\n      if (bike) el.value.textContent = label(bike);\n    }\n\n    /*\n     * Baureihen je Marke (smp-bike-gruppen.liquid).\n     *\n     * Was dort fehlt, landet in einer Gruppe \"Weitere Modelle\" \u2014 ein\n     * neues Modell in der Bike-Liste darf nicht unsichtbar werden, nur\n     * weil niemand die Gruppen nachgezogen hat. Ohne Gruppendaten laeuft\n     * der Waehler als eine Liste wie frueher.\n     */\n    function gruppenFuer(marke) {\n      var alle = Object.keys(DATA.marken[marke] || {});\n      var def = GRUPPEN[marke] || [];\n      var gesehen = {};\n      var out = [];\n      def.forEach(function (g) {\n        var m = (g.m || []).filter(function (x) {\n          if (gesehen[x] || alle.indexOf(x) === -1) return false;\n          gesehen[x] = true;\n          return true;\n        });\n        if (m.length) out.push({ n: g.n, i: g.i || '', m: m, w: !!g.w });\n      });\n      var rest = alle.filter(function (x) { return !gesehen[x]; });\n      if (rest.length) out.push({ n: def.length ? 'Weitere Modelle' : '', i: '', m: rest, w: false });\n      return out;\n    }\n\n    function gruppenKopf(g) {\n      var k = document.createElement('p');\n      k.className = 'smp-bike__gruppe';\n      var n = document.createElement('span');\n      n.className = 'smp-bike__gruppe-name';\n      n.textContent = g.n;\n      k.appendChild(n);\n      if (g.i) {\n        var i = document.createElement('span');\n        i.className = 'smp-bike__gruppe-info';\n        i.textContent = g.i;\n        k.appendChild(i);\n      }\n      return k;\n    }\n\n    function button(text, cls) {\n      var b = document.createElement('button');\n      b.type = 'button';\n      b.className = 'smp-bike__option' + (cls ? ' ' + cls : '');\n      b.textContent = text;\n      return b;\n    }\n\n    function renderOptions() {\n      el.options.textContent = '';\n      el.options.classList.toggle('smp-bike__options--years', state.schritt === 'baujahr');\n\n      var items = [];\n\n      if (state.schritt === 'marke') {\n        el.step.textContent = 'Marke w\u00E4hlen';\n        el.back.hidden = true;\n        el.searchW.hidden = false;\n        el.search.placeholder = 'Marke suchen';\n\n        var alle = Object.keys(DATA.marken);\n        var f = state.filter.trim().toLowerCase();\n        // Ohne Suchbegriff zuerst die haeufigen Marken, danach der Rest\n        var reihenfolge = f\n          ? alle.filter(function (m) { return m.toLowerCase().indexOf(f) !== -1; })\n          : DATA.haeufig.filter(function (m) { return alle.indexOf(m) !== -1; })\n              .concat(alle.filter(function (m) { return DATA.haeufig.indexOf(m) === -1; }));\n\n        reihenfolge.forEach(function (marke) {\n          var leer = Object.keys(DATA.marken[marke] || {}).length === 0;\n          var b = button(marke, leer ? 'smp-bike__option--empty' : '');\n          var logo = logoKnoten(marke);\n          if (logo) {\n            b.classList.add('smp-bike__option--logo');\n            b.textContent = '';\n            b.appendChild(logo);\n            var name = document.createElement('span');\n            name.className = 'smp-bike__option-name';\n            name.textContent = marke;\n            b.appendChild(name);\n          }\n          b.addEventListener('click', function () {\n            state.marke = marke;\n            state.schritt = 'modell';\n            state.filter = '';\n            state.weitere = false;\n            el.search.value = '';\n            renderOptions();\n            el.search.focus();\n          });\n          items.push(b);\n        });\n      } else if (state.schritt === 'modell') {\n        el.step.textContent = state.marke + ' \u2014 Modell';\n        var stufenLogo = logoKnoten(state.marke);\n        if (stufenLogo) {\n          stufenLogo.classList.add('smp-bike__logo--klein');\n          el.step.insertBefore(stufenLogo, el.step.firstChild);\n        }\n        el.back.hidden = false;\n        // Husqvarna hat 37 Modelle, KTM 34 \u2014 ohne Suche ist das Raster\n        // auf dem Handy eine Scrollstrecke.\n        el.searchW.hidden = false;\n        el.search.placeholder = 'Modell suchen';\n\n        var mf = state.filter.trim().toLowerCase();\n        var gruppen = gruppenFuer(state.marke);\n        var versteckt = 0;\n\n        gruppen.forEach(function (g) {\n          var treffer = g.m.filter(function (m) {\n            return !mf || m.toLowerCase().indexOf(mf) !== -1;\n          });\n          if (!treffer.length) return;\n          /* Beim Suchen ist alles offen \u2014 sonst f\u00E4nde man ein altes\n             Modell nur, wenn man vorher \"Weitere\" aufklappt. */\n          if (g.w && !mf && !state.weitere) {\n            versteckt += treffer.length;\n            return;\n          }\n          if (gruppen.length > 1 || g.i) items.push(gruppenKopf(g));\n          treffer.forEach(function (modell) {\n            var b = button(modell);\n            b.addEventListener('click', function () {\n              state.modell = modell;\n              state.schritt = 'baujahr';\n              renderOptions();\n            });\n            items.push(b);\n          });\n        });\n\n        if (versteckt) {\n          var mehr = button('Weitere Modelle anzeigen (' + versteckt + ')', 'smp-bike__mehr');\n          mehr.addEventListener('click', function () {\n            state.weitere = true;\n            renderOptions();\n          });\n          items.push(mehr);\n        }\n      } else {\n        el.step.textContent = state.modell + ' \u2014 Baujahr';\n        el.back.hidden = false;\n        el.searchW.hidden = true;\n\n        var spanne = DATA.marken[state.marke][state.modell] || [];\n        var von = spanne[0];\n        var bis = spanne[1];\n        for (var jahr = bis; jahr >= von; jahr--) {\n          (function (j) {\n            var b = button(String(j));\n            b.addEventListener('click', function () {\n              write({ marke: state.marke, modell: state.modell, baujahr: String(j) });\n              schliessen();\n              renderStatus();\n              /* Erst jetzt ist \"Aendern\" sichtbar \u2014 dorthin mit dem Fokus,\n                 damit das Menue offen bleibt und \"Teile ansehen\" klickbar ist. */\n              fokusHalten();\n            });\n            items.push(b);\n          })(jahr);\n        }\n      }\n\n      items.forEach(function (b) { el.options.appendChild(b); });\n      el.empty.hidden = items.length > 0;\n      fokusHalten();\n    }\n\n    /*\n     * Fokus im Waehler halten.\n     *\n     * Jeder Schritt baut die Knoepfe neu auf \u2014 der gerade angeklickte\n     * verschwindet, der Fokus faellt auf <body>. Im Rechner-Menue \"Dein\n     * Motorrad\" ist das fatal: Dawns details-disclosure schliesst das\n     * Menue, sobald der Fokus es verlaesst. Man klickte eine Marke, dann\n     * ein Modell, und das Menue klappte mitten in der Auswahl zu.\n     * Deshalb den Fokus auf einen sichtbaren Knopf im Waehler setzen.\n     */\n    function fokusHalten() {\n      var aktiv = document.activeElement;\n      var sichtbar = aktiv && aktiv.isConnected && aktiv.offsetParent !== null;\n      if (aktiv && aktiv !== document.body && sichtbar) return;\n      /* Nur eingreifen, wenn der Fokus verloren ist (body) oder auf einem\n         jetzt versteckten Knopf DIESES Waehlers sitzt \u2014 nie einem anderen\n         Waehler auf der Seite den Fokus wegnehmen. */\n      if (aktiv && aktiv !== document.body && !root.contains(aktiv)) return;\n      var kandidaten = [el.options.querySelector('button'), el.change, el.start, el.back];\n      for (var i = 0; i < kandidaten.length; i++) {\n        var k = kandidaten[i];\n        if (k && k.offsetParent !== null) {\n          k.focus({ preventScroll: true });\n          return;\n        }\n      }\n    }\n\n    function oeffnen() {\n      state.schritt = 'marke';\n      state.marke = null;\n      state.modell = null;\n      state.filter = '';\n      el.search.value = '';\n      el.panel.hidden = false;\n      if (el.removeRow) el.removeRow.hidden = !read();\n      renderOptions();\n      zustandMerken(true);\n    }\n\n    function schliessen() {\n      el.panel.hidden = true;\n      zustandMerken(false);\n      fokusHalten();\n    }\n\n    /*\n     * Zustand am Wurzelelement und an den Schaltern hinterlegen: das CSS\n     * dreht daran den Pfeil, und Screenreader lesen aria-expanded vor.\n     */\n    function zustandMerken(offen) {\n      root.classList.toggle('smp-bike--offen', offen);\n      [el.start, el.change].forEach(function (b) {\n        if (b) b.setAttribute('aria-expanded', offen ? 'true' : 'false');\n      });\n    }\n\n    /*\n     * Zweiter Klick auf denselben Schalter klappt wieder zu.\n     * Vorher oeffnete jeder Klick nur \u2014 das Panel liess sich ausser\n     * ueber das X gar nicht mehr schliessen.\n     */\n    function umschalten() {\n      if (el.panel.hidden) oeffnen();\n      else schliessen();\n    }\n\n    /* ----------------------------------------------------------- Events */\n\n    el.start.addEventListener('click', umschalten);\n    el.change.addEventListener('click', umschalten);\n    el.close.addEventListener('click', schliessen);\n\n    el.back.addEventListener('click', function () {\n      if (state.schritt === 'baujahr') state.schritt = 'modell';\n      else if (state.schritt === 'modell') state.schritt = 'marke';\n      // Sonst filtert der Modellbegriff anschliessend die Markenliste\n      state.filter = '';\n      el.search.value = '';\n      renderOptions();\n    });\n\n    if (el.remove) {\n      el.remove.addEventListener('click', function () {\n        write(null);\n        schliessen();\n        renderStatus();\n      });\n    }\n\n    el.search.addEventListener('input', function () {\n      state.filter = el.search.value;\n      renderOptions();\n    });\n\n    // Auswahl in der jeweils anderen Instanz uebernehmen\n    document.addEventListener(EVENT_CHANGED, function () {\n      renderStatus();\n      // Ein offenes Panel zeigt sonst weiter den alten Schritt\n      if (!el.panel.hidden) schliessen();\n    });\n\n    /*\n     * Anderer Tab, gleicher Shop: das storage-Ereignis feuert nur in den\n     * uebrigen Tabs, nicht im ausloesenden. Genau richtig hier.\n     */\n    window.addEventListener('storage', function (event) {\n      if (event.key === STORAGE_KEY) renderStatus();\n    });\n\n    // Damit die Zeile \"Meine Bike-Garage\" den Waehler aufklappen kann\n    root.smpOeffnen = oeffnen;\n\n    zustandMerken(false);\n    renderStatus();\n  }\n\n  function init() {\n    document.querySelectorAll('[data-smp-bike]').forEach(setup);\n\n    /*\n     * \"Meine Bike-Garage\" im Fussbereich der Seitenleiste klappt den\n     * Waehler weiter oben auf und scrollt ihn ins Bild.\n     */\n    document.querySelectorAll('[data-smp-garage]').forEach(function (link) {\n      if (link.smpBereit) return;\n      link.smpBereit = true;\n\n      link.addEventListener('click', function (event) {\n        event.preventDefault();\n        var root = link.closest('#menu-drawer')\n          ? link.closest('#menu-drawer').querySelector('[data-smp-bike]')\n          : document.querySelector('[data-smp-bike]');\n        if (!root) return;\n        if (typeof root.smpOeffnen === 'function') root.smpOeffnen();\n        root.scrollIntoView({ block: 'center', behavior: 'smooth' });\n      });\n    });\n  }\n\n  /*\n   * Kleine Schnittstelle nach aussen.\n   *\n   * Die Passform-Anzeige auf der Produktseite braucht dasselbe\n   * gespeicherte Bike und dasselbe Aenderungs-Signal. Statt den\n   * Speicherschluessel und den Ereignisnamen dort zu wiederholen \u2014 und\n   * beim naechsten Umbau eine der beiden Stellen zu vergessen \u2014 gibt es\n   * sie hier einmal zentral.\n   */\n  window.SMPBike = {\n    read: read,\n    onChange: function (fn) {\n      document.addEventListener(EVENT_CHANGED, fn);\n      window.addEventListener('storage', function (event) {\n        if (event.key === STORAGE_KEY) fn();\n      });\n    }\n  };\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n\n  /*\n   * Der Theme-Editor ersetzt beim Bearbeiten das komplette HTML einer\n   * Section. Die neuen Knoten tragen dann keine Ereignisse mehr \u2014 der\n   * Bike-Waehler war im Editor nach der ersten Aenderung tot, ohne dass\n   * auf der fertigen Seite etwas zu sehen gewesen waere. Deshalb noch\n   * einmal einrichten, sobald eine Section neu geladen oder ein Drawer\n   * geoeffnet wird.\n   */\n  document.addEventListener('shopify:section:load', init);\n  document.addEventListener('shopify:section:select', init);\n})();\n"],
  "mappings": "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",
  "names": []
}
