{
  "version": 3,
  "sources": ["/cdn/shop/t/46/assets/mx-collection.js?t=1791563374491"],
  "sourcesContent": ["/* mx4ever collection pages: the current rider's size on product cards (\"Simon: XL\") and a results bar above the grid\n   (\"12 of these come in Simon's size (XL) \u00B7 Show only Simon's size\").\n   Size data per product comes from /collections/<handle>?view=mx-sizes (templates/collection.mx-sizes.liquid),\n   sizes from MxSizeEngine (mx-rider.js). Rendered by the Garage strip section on collection templates. */\n(() => {\n  if (customElements.get('mx-rider-results')) return;\n  const esc = (s) =>\n    String(s == null ? '' : s).replace(/[&<>\"']/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]));\n  const gen = (x) => (/[sxz]$/i.test(String(x)) ? `${x}'` : `${x}s`); // Danish possessive\n  const norm = (s) => {\n    const n = String(s).toUpperCase().replace(/[\\s-]+/g, '');\n    const map = { SMALL: 'S', MEDIUM: 'M', LARGE: 'L', XLARGE: 'XL', XXLARGE: 'XXL', '2XL': 'XXL', XXXL: '3XL', XSMALL: 'XS', EXTRASMALL: 'XS', EXTRALARGE: 'XL' };\n    return map[n] || n;\n  };\n  // small rider icon (same figure as the Garage strip's rider pill)\n  const ICON =\n    '<svg class=\"mx-card-size__icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><circle cx=\"12\" cy=\"8\" r=\"4\"></circle><path d=\"M4 21c1-4 4-6 8-6s7 2 8 6\"></path></svg>';\n  const SIZE_PARAM = /^filter\\.v\\.option\\.(size|st.rrelse)$/i;\n\n  class MxRiderResults extends HTMLElement {\n    connectedCallback() {\n      if (this._ready) return;\n      this._ready = true;\n      this.strings = JSON.parse(this.querySelector('script[type=\"application/json\"]').textContent);\n      this.bar = this.querySelector('[data-bar]');\n      this.grid = document.getElementById('ProductGridContainer');\n      if (!this.grid || !window.MxRiders || !window.MxSizeEngine) return;\n      this.grid.before(this); // sits between the filters and the product grid\n      this.loadedFor = null;\n      this.update = this.update.bind(this);\n      document.addEventListener('mx-rider:change', () => this.paint());\n      // Dawn replaces the grid when filters/sorting change (and the URL with it)\n      let queued = false;\n      this.observer = new MutationObserver(() => {\n        if (queued) return;\n        queued = true;\n        // a timer (not requestAnimationFrame, which pauses in background tabs) also lets Dawn update the URL first\n        setTimeout(() => {\n          queued = false;\n          this.update();\n        }, 60);\n      });\n      this.observer.observe(this.grid, { childList: true, subtree: true });\n      this.update();\n    }\n\n    t(key, vars) {\n      let s = this.strings[key] || key;\n      if (vars) for (const [k, v] of Object.entries(vars)) s = s.split(`{${k}}`).join(v);\n      return s;\n    }\n\n    // data for the current filters (sorting and page don't change the set)\n    dataUrl() {\n      const p = new URLSearchParams(location.search);\n      ['page', 'sort_by', 'view', 'section_id'].forEach((k) => p.delete(k));\n      p.set('view', 'mx-sizes');\n      return `${location.pathname}?${p.toString()}`;\n    }\n\n    async update() {\n      const url = this.dataUrl();\n      if (url !== this.loadedFor) {\n        this.loadedFor = url;\n        try {\n          const txt = await fetch(url, { credentials: 'same-origin' }).then((r) => r.text());\n          if (url !== this.loadedFor) return; // filters changed again meanwhile\n          this.data = JSON.parse(txt);\n        } catch (e) {\n          this.data = null;\n        }\n      }\n      this.paint();\n    }\n\n    // rider's result for one product (null = no chip: unsized, or the wrong range like a youth jersey for an adult)\n    resultFor(handle, rider) {\n      const p = this.data && this.data.products[handle];\n      const table = p && this.data.tables[p.t];\n      if (!table) return null;\n      const byBody = !['helmet', 'boot', 'hat'].includes(table.category);\n      const youthRider = rider.group === 'youth';\n      if (byBody && youthRider !== (table.group === 'youth')) return null;\n      if (byBody && table.group === 'women' && rider.group !== 'women') return null;\n      const sizes = {};\n      for (const v of p.v) {\n        const hit = String(v)\n          .split('/')\n          .map((part) => {\n            const row = table.rows.find((r) => [r.size, ...Object.values(r.aliases || {})].some((n) => norm(n) === norm(part)));\n            return row ? row.size : null;\n          });\n        sizes[v] = hit.every(Boolean) ? hit : null;\n      }\n      const r = window.MxSizeEngine.recommend(rider, table, { use: p.use, sizes });\n      return { r, category: table.category };\n    }\n\n    paint() {\n      const rider = window.MxRiders.store.current();\n      const cards = [...this.grid.querySelectorAll('.grid__item')];\n      const fits = new Map(); // size as sold -> number of products\n      let sized = 0;\n      let category = null;\n      for (const card of cards) {\n        const link = card.querySelector('a[href*=\"/products/\"]');\n        const handle = link ? decodeURIComponent(link.pathname.split('/products/')[1] || '').split('/')[0] : '';\n        const res = rider && handle ? this.resultFor(handle, rider) : null;\n        let html = null;\n        let none = false;\n        if (res) {\n          const { r } = res;\n          if (r.fit === 'good' || r.fit === 'between') html = `${ICON}<span>${esc(rider.name)}</span> <strong>${esc(r.size)}</strong>`;\n          else if (r.fit === 'not_offered') {\n            html = `${ICON}<span>${esc(this.t('chip_none', { name: rider.name, name_gen: gen(rider.name) }))}</span>`;\n            none = true;\n          }\n        }\n        this.chip(card, html, none);\n      }\n      // the bar counts every product in the (filtered) collection, not just this page of the grid\n      if (rider && this.data) {\n        for (const handle of Object.keys(this.data.products)) {\n          const res = this.resultFor(handle, rider);\n          if (!res) continue;\n          sized++;\n          category = category || res.category;\n          if (res.r.fit === 'good' || res.r.fit === 'between') fits.set(res.r.size, (fits.get(res.r.size) || 0) + 1);\n        }\n      }\n      this.paintBar(rider, sized, fits, category);\n    }\n\n    chip(card, html, none) {\n      // Dawn cards have two info blocks; the one inside .card__inner is hidden on standard cards, so use the last\n      const infos = card.querySelectorAll('.card__information');\n      const info = infos[infos.length - 1];\n      if (!info) return;\n      const old = info.querySelector('.mx-card-size');\n      if (!html) {\n        if (old) old.remove();\n        return;\n      }\n      if (old && old.dataset.key === html && old.classList.contains('mx-card-size--none') === none) return; // unchanged\n      const el = old || document.createElement('span');\n      el.className = `mx-card-size${none ? ' mx-card-size--none' : ''}`;\n      el.dataset.key = html;\n      el.innerHTML = html;\n      if (!old) {\n        const after = info.querySelector('.card-information');\n        if (after) info.insertBefore(el, after);\n        else info.append(el);\n      }\n    }\n\n    // links to the rider's other gear (saved by the homepage rider tab for this visit), or back to that tab\n    moreLinks(rider) {\n      const vars = { name: rider.name, name_gen: gen(rider.name) };\n      let saved = null;\n      try {\n        saved = JSON.parse(sessionStorage.getItem('mx:finder-links'));\n      } catch (e) {}\n      // links are saved per language (locale root '' or '/da'); only use this language's set\n      const set = saved && saved.rider === `${rider.id}|${rider.updated}` && saved.byRoot && saved.byRoot[this.root().replace(/\\/+$/, '')];\n      if (set) {\n        const here = location.pathname.replace(/\\/+$/, '');\n        const links = (set.order || Object.keys(set.items))\n          .map((k) => set.items[k])\n          .filter((it) => it && new URL(it.href, location.origin).pathname.replace(/\\/+$/, '') !== here)\n          .map((it) => `<a class=\"link underlined-link\" href=\"${esc(it.href)}\">${esc(it.label)} (${esc(it.count)})</a>`);\n        if (links.length) return `<p class=\"mx-results__more\">${esc(this.t('more_lead', vars))} ${links.join(' \u00B7 ')}</p>`;\n        return '';\n      }\n      return `<p class=\"mx-results__more\"><a class=\"link underlined-link\" href=\"${esc(this.root())}\" data-to-rider-tab>${esc(this.t('more_link', vars))}</a></p>`;\n    }\n\n    root() {\n      return (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) || '/';\n    }\n\n    paintBar(rider, sized, fits, category) {\n      if (!rider || !sized) {\n        this.hidden = true;\n        this.bar.innerHTML = '';\n        this._barHtml = '';\n        return;\n      }\n      const sizes = [...fits.keys()].sort((a, b) => (isNaN(parseFloat(a)) || isNaN(parseFloat(b)) ? 0 : parseFloat(a) - parseFloat(b)));\n      const label = sizes.length ? (category === 'boot' ? `EU ${sizes.join(' / ')}` : sizes.join(' / ')) : '';\n      const vars = { name: rider.name, name_gen: gen(rider.name), sizes: label, n: [...fits.values()].reduce((a, b) => a + b, 0) };\n      const params = new URLSearchParams(location.search);\n      const active = [...params.entries()].filter(([k]) => SIZE_PARAM.test(k));\n      // the store's size filter values that mean the rider's sizes (Search & Discovery groups \"Small\", \"X Large\" \u2026)\n      const wanted = [];\n      const seen = new Set();\n      document.querySelectorAll('input[name^=\"filter.v.option.\"]').forEach((input) => {\n        if (!SIZE_PARAM.test(input.name) || seen.has(input.value)) return;\n        const lab = document.querySelector(`label[for=\"${CSS.escape(input.id)}\"]`);\n        const text = (lab ? lab.textContent : input.value).replace(/\\(.*$/s, '').trim().split('\\n')[0];\n        if (sizes.some((s) => norm(s) === norm(text))) {\n          seen.add(input.value);\n          wanted.push([input.name, input.value]);\n        }\n      });\n      const base = new URLSearchParams(location.search);\n      [...base.keys()].filter((k) => SIZE_PARAM.test(k) || k === 'page').forEach((k) => base.delete(k));\n      const allUrl = `${location.pathname}${base.toString() ? `?${base}` : ''}`;\n      const only = new URLSearchParams(base);\n      wanted.forEach(([k, v]) => only.append(k, v));\n      const onlyUrl = `${location.pathname}?${only}`;\n      const onlyActive =\n        active.length && wanted.length && active.length === wanted.length && active.every(([, v]) => wanted.some(([, w]) => w === v));\n\n      let html;\n      if (!sizes.length) html = `<p>${esc(this.t('bar_none', vars))}</p>`;\n      else if (onlyActive)\n        html = `<p><strong>${esc(this.t('bar_on', vars))}</strong></p><a class=\"link underlined-link\" href=\"${esc(allUrl)}\">${esc(this.t('bar_all'))}</a>`;\n      else\n        html = `<p>${esc(this.t('bar_offer', vars))}</p>${\n          wanted.length ? `<a class=\"link underlined-link\" href=\"${esc(onlyUrl)}\">${esc(this.t('bar_only', vars))}</a>` : ''\n        }`;\n      html += this.moreLinks(rider);\n      if (this._barHtml !== html) {\n        this._barHtml = html;\n        this.bar.innerHTML = `<div class=\"mx-results__bar\">${html}</div>`;\n        const back = this.bar.querySelector('[data-to-rider-tab]');\n        if (back)\n          back.addEventListener('click', () => {\n            try {\n              sessionStorage.setItem('mx:finder-tab', 'rider');\n            } catch (e) {}\n          });\n      }\n      this.hidden = false;\n    }\n  }\n\n  customElements.define('mx-rider-results', MxRiderResults);\n})();\n"],
  "mappings": "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",
  "names": ["r"]
}
