{
  "version": 3,
  "sources": ["/cdn/shop/t/18/assets/carton-auto.js?nocache=1789119280296"],
  "sourcesContent": ["/*\r\n  Remise \u00AB \u20135 % par carton \u00BB\r\n\r\n  Panier : chaque groupe de 6 bouteilles d'une m\u00EAme variante est remplac\u00E9 par la\r\n  variante \u00AB Carton de 6 \u00BB du m\u00EAme mill\u00E9sime, d\u00E9j\u00E0 vendue 6 \u00D7 bouteille \u00D7 0,95.\r\n  13 bouteilles -> 2 cartons + 1 bouteille.\r\n\r\n  Fiche produit : \u00AB Acheter maintenant \u00BB saute le panier, il est donc masqu\u00E9 d\u00E8s\r\n  que la quantit\u00E9 choisie remplit un carton, avec un message explicatif.\r\n\r\n  Les produits sont lus \u00E0 la racine du site (langue principale) : les options\r\n  \u00AB Bouteille\u2026 \u00BB / \u00AB Carton(s) de N\u2026 \u00BB y sont en fran\u00E7ais quelle que soit la\r\n  langue du visiteur (/en/, /de/\u2026 renvoient des options traduites).\r\n\r\n  Rendu par snippets/carton-auto.liquid.\r\n*/\r\n(() => {\r\n  if (window.cartonAuto) return;\r\n  window.cartonAuto = true;\r\n\r\n  const BOTTLE_OPTION = /^\\s*bouteille\\b/i;\r\n  const CARTON_OPTION = /^\\s*cartons?\\s+de\\s+(\\d+)\\b/i;\r\n  const NOTICE_KEY = 'carton-auto-converted';\r\n\r\n  const STRINGS = {\r\n    fr: {\r\n      label: '\u20135 % par carton',\r\n      converted: 'Vos bouteilles ont \u00E9t\u00E9 regroup\u00E9es par 6 en cartons : \u20135 % par carton.',\r\n      hint: '\u20135 % par carton : ajoutez au panier, vos bouteilles y sont regroup\u00E9es automatiquement par 6.',\r\n    },\r\n    en: {\r\n      label: '\u20135% per box',\r\n      converted: 'Your bottles have been grouped into boxes of 6: \u20135% per box.',\r\n      hint: '\u20135% per box: add to cart and your bottles are automatically grouped by 6.',\r\n    },\r\n    de: {\r\n      label: '\u20135 % pro Karton',\r\n      converted: 'Ihre Flaschen wurden zu Kartons mit 6 Flaschen zusammengefasst: \u20135 % pro Karton.',\r\n      hint: '\u20135 % pro Karton: In den Warenkorb legen, dort werden Ihre Flaschen automatisch zu je 6 zusammengefasst.',\r\n    },\r\n    it: {\r\n      label: '\u20135% per cartone',\r\n      converted: 'Le tue bottiglie sono state raggruppate in cartoni da 6: \u20135% per cartone.',\r\n      hint: '\u20135% per cartone: aggiungi al carrello, le bottiglie vengono raggruppate automaticamente per 6.',\r\n    },\r\n    nl: {\r\n      label: '\u20135% per doos',\r\n      converted: 'Je flessen zijn gegroepeerd in dozen van 6: \u20135% per doos.',\r\n      hint: '\u20135% per doos: voeg toe aan je winkelwagen, je flessen worden daar automatisch per 6 gegroepeerd.',\r\n    },\r\n  };\r\n\r\n  const lang = (document.documentElement.lang || 'fr').slice(0, 2).toLowerCase();\r\n  const t = (key) => (STRINGS[lang] || STRINGS.fr)[key];\r\n\r\n  const products = {};\r\n  function getProduct(handle) {\r\n    if (!products[handle]) {\r\n      products[handle] = fetch(`/products/${encodeURIComponent(handle)}.js`).then((response) => {\r\n        if (!response.ok) throw new Error(`carton-auto : produit ${handle} introuvable (${response.status})`);\r\n        return response.json();\r\n      });\r\n    }\r\n    return products[handle];\r\n  }\r\n\r\n  // Variante carton du m\u00EAme mill\u00E9sime que la bouteille, ou null.\r\n  // Les prix sont ceux du march\u00E9 du visiteur : un carton qui ne co\u00FBte pas moins cher\r\n  // que ses bouteilles (prix fixe de march\u00E9 oubli\u00E9, par exemple) n'est jamais propos\u00E9.\r\n  function findCarton(product, variantId) {\r\n    const bottle = product.variants.find((variant) => variant.id === variantId);\r\n    if (!bottle) return null;\r\n\r\n    const position = bottle.options.findIndex((value) => BOTTLE_OPTION.test(value));\r\n    if (position === -1) return null;\r\n\r\n    for (const variant of product.variants) {\r\n      const match = CARTON_OPTION.exec(variant.options[position] || '');\r\n      if (!match) continue;\r\n      const sameVintage = variant.options.every(\r\n        (value, index) => index === position || value === bottle.options[index]\r\n      );\r\n      if (!sameVintage) continue;\r\n\r\n      const size = parseInt(match[1], 10);\r\n      return variant.price < bottle.price * size ? { carton: variant, size } : null;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function isCarton(product, variantId) {\r\n    const variant = product.variants.find((candidate) => candidate.id === variantId);\r\n    return !!variant && variant.options.some((value) => CARTON_OPTION.test(value));\r\n  }\r\n\r\n  function postJSON(url, body) {\r\n    return fetch(url, {\r\n      method: 'POST',\r\n      headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\r\n      body: JSON.stringify(body),\r\n    });\r\n  }\r\n\r\n  // Regroupe les bouteilles du panier en cartons. Renvoie true si le panier a chang\u00E9.\r\n  async function convertCart(onStart) {\r\n    const cart = await fetch('/cart.js').then((response) => response.json());\r\n    let started = false;\r\n    let changed = false;\r\n\r\n    for (const item of cart.items) {\r\n      if (item.selling_plan_allocation || Object.keys(item.properties || {}).length > 0) continue;\r\n\r\n      let found = null;\r\n      try {\r\n        found = findCarton(await getProduct(item.handle), item.variant_id);\r\n      } catch (error) {\r\n        console.error(error);\r\n      }\r\n      if (!found || !found.carton.available || item.quantity < found.size) continue;\r\n\r\n      if (!started) {\r\n        started = true;\r\n        onStart();\r\n      }\r\n\r\n      // Le carton d'abord : s'il est refus\u00E9 (stock), les bouteilles restent intactes.\r\n      const cartons = Math.floor(item.quantity / found.size);\r\n      const added = await postJSON('/cart/add.js', { items: [{ id: found.carton.id, quantity: cartons }] });\r\n      if (!added.ok) continue;\r\n\r\n      await postJSON('/cart/change.js', { id: item.key, quantity: item.quantity % found.size });\r\n      changed = true;\r\n    }\r\n\r\n    return changed;\r\n  }\r\n\r\n  async function labelCartonLines() {\r\n    const cart = await fetch('/cart.js').then((response) => response.json());\r\n\r\n    for (const [index, item] of cart.items.entries()) {\r\n      const details = document.querySelector(`#CartItem-${index + 1} .cart-item__details`);\r\n      if (!details || details.querySelector('.carton-auto-label')) continue;\r\n\r\n      try {\r\n        if (!isCarton(await getProduct(item.handle), item.variant_id)) continue;\r\n      } catch (error) {\r\n        console.error(error);\r\n        continue;\r\n      }\r\n\r\n      const label = document.createElement('p');\r\n      label.className = 'carton-auto-label';\r\n      label.textContent = t('label');\r\n      const discounts = details.querySelector('.discounts');\r\n      discounts ? discounts.before(label) : details.append(label);\r\n    }\r\n  }\r\n\r\n  function initCartPage() {\r\n    const cartForm = document.getElementById('cart');\r\n    const cartItems = document.getElementById('main-cart-items');\r\n    if (!cartForm || !cartItems) return;\r\n\r\n    let running = false;\r\n    const setBusy = (busy) => {\r\n      cartItems.classList.toggle('cart__items--disabled', busy);\r\n      document.querySelectorAll('button[name=\"checkout\"]').forEach((button) => (button.disabled = busy));\r\n    };\r\n\r\n    let justConverted = false;\r\n    try {\r\n      justConverted = sessionStorage.getItem(NOTICE_KEY) === '1';\r\n      sessionStorage.removeItem(NOTICE_KEY);\r\n    } catch (error) {\r\n      // stockage indisponible (navigation priv\u00E9e stricte) : pas de message, sans cons\u00E9quence\r\n    }\r\n    if (justConverted) {\r\n      const notice = document.createElement('p');\r\n      notice.className = 'carton-auto-notice';\r\n      notice.setAttribute('role', 'status');\r\n      notice.textContent = t('converted');\r\n      cartForm.before(notice);\r\n    }\r\n\r\n    const run = async () => {\r\n      if (running) return;\r\n      running = true;\r\n      let busy = false;\r\n\r\n      try {\r\n        const changed = await convertCart(() => {\r\n          busy = true;\r\n          setBusy(true);\r\n        });\r\n        if (changed) {\r\n          try {\r\n            sessionStorage.setItem(NOTICE_KEY, '1');\r\n          } catch (error) {\r\n            // voir plus haut\r\n          }\r\n          // Rechargement complet : totaux, barre de livraison offerte et apps restent coh\u00E9rents.\r\n          window.location.reload();\r\n          return;\r\n        }\r\n      } catch (error) {\r\n        console.error(error);\r\n      }\r\n\r\n      if (busy) setBusy(false);\r\n      running = false;\r\n      labelCartonLines().catch((error) => console.error(error));\r\n    };\r\n\r\n    if (typeof subscribe === 'function') {\r\n      subscribe(PUB_SUB_EVENTS.cartUpdate, (event) => {\r\n        if (event.source === 'cart-items') run();\r\n      });\r\n    }\r\n\r\n    // Filet de s\u00E9curit\u00E9 : une quantit\u00E9 modifi\u00E9e juste avant \u00AB Paiement \u00BB est regroup\u00E9e elle aussi.\r\n    cartForm.addEventListener('submit', async (event) => {\r\n      if (!event.submitter || event.submitter.name !== 'checkout') return;\r\n      event.preventDefault();\r\n      if (running) return;\r\n      running = true;\r\n      setBusy(true);\r\n\r\n      try {\r\n        // Applique les quantit\u00E9s affich\u00E9es, comme l'aurait fait le formulaire.\r\n        await fetch('/cart/update.js', {\r\n          method: 'POST',\r\n          headers: { 'Content-Type': 'application/x-www-form-urlencoded', Accept: 'application/json' },\r\n          body: new URLSearchParams(new FormData(cartForm)),\r\n        });\r\n        await convertCart(() => {});\r\n      } catch (error) {\r\n        console.error(error);\r\n      }\r\n\r\n      // Formulaire neuf : les quantit\u00E9s de la page ne correspondent plus au panier.\r\n      const checkoutForm = document.createElement('form');\r\n      checkoutForm.method = 'post';\r\n      checkoutForm.action = (window.routes && window.routes.cart_url) || '/cart';\r\n      checkoutForm.innerHTML = '<input type=\"hidden\" name=\"checkout\" value=\"\">';\r\n      document.body.append(checkoutForm);\r\n      checkoutForm.submit();\r\n    });\r\n\r\n    run();\r\n  }\r\n\r\n  function initProductPage() {\r\n    document.querySelectorAll('[data-carton-auto-handle]').forEach((marker) => {\r\n      const section = marker.closest('.shopify-section') || document;\r\n      const productForm = section.querySelector('product-form');\r\n      const form = productForm && productForm.querySelector('form');\r\n      if (!form) return;\r\n      const handle = marker.dataset.cartonAutoHandle;\r\n\r\n      const hint = document.createElement('p');\r\n      hint.className = 'carton-auto-hint';\r\n      hint.textContent = t('hint');\r\n      productForm.append(hint);\r\n\r\n      const update = async () => {\r\n        // form.elements inclut le champ quantit\u00E9 plac\u00E9 hors du <form> (attribut form=\"\u2026\").\r\n        const quantityInput = form.elements.namedItem('quantity');\r\n        const quantity = parseInt(quantityInput && quantityInput.value, 10) || 1;\r\n        const variantId = parseInt(form.elements.namedItem('id').value, 10);\r\n\r\n        let grouped = false;\r\n        if (quantity > 1) {\r\n          try {\r\n            const found = findCarton(await getProduct(handle), variantId);\r\n            grouped = !!found && found.carton.available && quantity >= found.size;\r\n          } catch (error) {\r\n            console.error(error);\r\n          }\r\n        }\r\n        productForm.classList.toggle('carton-auto--grouped', grouped);\r\n      };\r\n\r\n      const onFieldChange = (event) => {\r\n        if (event.target.form === form && ['id', 'quantity'].includes(event.target.name)) update();\r\n      };\r\n      document.addEventListener('change', onFieldChange);\r\n      document.addEventListener('input', onFieldChange);\r\n      update();\r\n    });\r\n  }\r\n\r\n  const init = () => {\r\n    initCartPage();\r\n    initProductPage();\r\n  };\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', init);\r\n  } else {\r\n    init();\r\n  }\r\n})();\r\n"],
  "mappings": "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",
  "names": []
}
