{
  "version": 3,
  "sources": ["/cdn/shop/t/28/assets/te-pdp-mobile.js?nocache=1793702454447"],
  "sourcesContent": ["/* Mobile buy box. Progressive enhancement only: without JS the native size buttons keep working.\n   The theme re-renders parts of the product block, so every render reads the live nodes. */\n(() => {\n  const state = { gender: null };\n  const get = () => {\n    const root = document.querySelector('.te-mobile-purchase');\n    const hint = root && root.querySelector('[data-te-size-hint]');\n    if (!hint) return null;\n    const box = root.querySelector('[data-te-size-option]');\n    const inputs = box ? [...box.querySelectorAll('input[type=\"radio\"]')] : [];\n    let data = null;\n    try { data = JSON.parse(hint.querySelector('[data-te-size-stock-data]').textContent); } catch (e) { data = null; }\n    /* Double labels = letter sizes only (XS/S, M/L...). Sock sizes such as 36/40 keep the normal picker. */\n    return { root, hint, box, inputs, data, doubles: inputs.length > 1 && inputs.every((i) => /^X{0,3}[SML]\\/X{0,3}[SML]$/.test(i.value)) };\n  };\n  const gender = (hint) => {\n    if (!state.gender) {\n      try { state.gender = sessionStorage.getItem('te-size-gender'); } catch (e) { /* storage unavailable */ }\n      state.gender = state.gender || (hint.dataset.teGenderDefault === 'H' ? 'H' : 'F');\n    }\n    return state.gender;\n  };\n\n  const mobile = window.matchMedia('(max-width: 767px)');\n  const render = () => {\n    if (!mobile.matches) return;\n    const el = get();\n    if (!el) return;\n    /* Lien vers l'autre version (homme / femme) : sous les tailles, \u00E0 droite, hors de la ligne note + OFG. */\n    const ver = document.querySelector('.te-purchase-heading .te-product-version-inline');\n    if (ver && el.hint.firstElementChild !== ver) {\n      ver.style.cssText = 'display:block;text-align:right;margin:6px 0 4px;font-size:13px;line-height:18px';\n      el.hint.prepend(ver);\n      const sep = ver.querySelector('span[aria-hidden=\"true\"]');\n      if (sep) sep.hidden = true;\n    }\n    const g = gender(el.hint);\n    const word = g === 'F' ? 'femme' : 'homme';\n    const part = (value) => value.split('/')[g === 'F' ? 1 : 0];\n    const current = el.root.dataset.teRequireSize === 'true' ? null : el.inputs.find((i) => i.checked);\n    const model = el.hint.querySelector('[data-te-size-model]');\n    const out = el.hint.querySelector('[data-te-size-stock]');\n    if (el.doubles) {\n      const label = el.box.querySelector('.radio__legend .radio__legend__label');\n      if (label) {\n        label.textContent = 'Votre taille';\n        let toggle = el.box.querySelector('.te-gender-toggle');\n        if (!toggle) {\n          toggle = document.createElement('div');\n          toggle.className = 'te-gender-toggle';\n          toggle.setAttribute('role', 'group');\n          toggle.setAttribute('aria-label', 'Tailles femme ou homme');\n          toggle.innerHTML = '<button type=\"button\" data-gender=\"F\"><span>Femme</span></button><button type=\"button\" data-gender=\"H\"><span>Homme</span></button>';\n          label.after(toggle);\n        }\n        toggle.querySelectorAll('button').forEach((b) => b.setAttribute('aria-pressed', String(b.dataset.gender === g)));\n      }\n      el.inputs.forEach((input) => {\n        const title = el.box.querySelector(`label[for=\"${CSS.escape(input.id)}\"] .option-title`);\n        const html = `${part(input.value)}<span class=\"visually-hidden\"> en ${word}, \u00E9tiquette ${input.value}</span>`;\n        if (title && title.innerHTML !== html) title.innerHTML = html;\n      });\n      if (model) {\n        const fit = g === 'F' ? el.hint.dataset.teFitWoman : el.hint.dataset.teFitMan;\n        if (current) model.textContent = `Vous recevrez l\u2019\u00E9tiquette ${current.value}.`;\n        else if (fit) model.textContent = `${fit}.`;\n      }\n    }\n    if (out) {\n      const q = current && el.data ? el.data.stock[current.value] : null;\n      let text = '';\n      if (q != null && q > 0 && q <= el.data.threshold) {\n        if (el.doubles) text = ` Plus que ${q} dans cette taille.`;\n        else text = q === 1 ? ` Derni\u00E8re pi\u00E8ce en ${current.value}.` : ` Plus que ${q} en ${current.value}.`;\n      }\n      if (out.textContent !== text) out.textContent = text;\n    }\n  };\n\n  /* Mockup B: switching women / men brings the matching model photo forward (file name holds femme / homme; detail shots skipped). */\n  const showModelPhoto = (g) => {\n    const slider = document.querySelector('.te-mobile-purchase [data-product-single-media-slider]');\n    const instance = slider && window.theme && window.theme.Flickity && window.theme.Flickity.data(slider);\n    if (!instance) return;\n    const re = new RegExp(`(^|[^a-z])${g === 'F' ? 'femme' : 'homme'}([^a-z]|$)`);\n    const link = [...slider.closest('[data-product-single-media-group]').querySelectorAll('[data-te-thumb-rail] a[data-te-media-id]')].find((a) => {\n      const file = (a.getAttribute('href') || '').split('/').pop().split('?')[0].toLowerCase();\n      return re.test(file) && !/detail|fiche|descriptif|texture|packshot/.test(file);\n    });\n    if (!link) return;\n    const index = [...slider.querySelectorAll('[data-product-slide]')].findIndex((s) => s.dataset.id === link.dataset.teMediaId);\n    if (index >= 0 && index !== instance.selectedIndex) instance.select(index);\n  };\n\n  let queued = false;\n  const schedule = () => {\n    if (queued) return;\n    queued = true;\n    setTimeout(() => { queued = false; render(); }, 30);\n  };\n  document.addEventListener('click', (e) => {\n    const b = e.target.closest && e.target.closest('.te-mobile-purchase .te-gender-toggle button[data-gender]');\n    if (!b) return;\n    state.gender = b.dataset.gender;\n    try { sessionStorage.setItem('te-size-gender', state.gender); } catch (err) { /* storage unavailable */ }\n    render();\n    showModelPhoto(state.gender);\n  });\n  document.addEventListener('change', (e) => {\n    if (e.target.matches && e.target.matches('.te-mobile-purchase [data-te-size-option] input[type=\"radio\"]')) schedule();\n  });\n  /* The theme swaps the whole product section on variant change: watch main and the theme event. */\n  const main = document.querySelector('main') || document.body;\n  if ('MutationObserver' in window) {\n    new MutationObserver((records) => {\n      if (records.some((r) => [...r.addedNodes].some((n) => n.nodeType === 1 && (n.matches('.te-mobile-purchase, [data-te-size-option], variant-selects, [id^=\"shopify-section\"]') || n.querySelector('[data-te-size-option]'))))) schedule();\n    }).observe(main, { childList: true, subtree: true });\n  }\n  if (window.subscribe && window.theme && window.theme.PUB_SUB_EVENTS && window.theme.PUB_SUB_EVENTS.variantChange) {\n    window.subscribe(window.theme.PUB_SUB_EVENTS.variantChange, () => setTimeout(schedule, 0));\n  }\n  /* Passage desktop vers mobile sans rechargement (aper\u00E7u redimensionn\u00E9, tablette pivot\u00E9e). */\n  const onMedia = () => { if (mobile.matches) render(); };\n  if (mobile.addEventListener) mobile.addEventListener('change', onMedia); else if (mobile.addListener) mobile.addListener(onMedia);\n  render();\n})();\n"],
  "mappings": "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",
  "names": []
}
