{
  "version": 3,
  "sources": ["/cdn/shop/t/48/assets/kosmo.js?x=13518"],
  "sourcesContent": ["/* K\u014CSMOPELLIS \u2014 interactions premium l\u00E9g\u00E8res */\n(function () {\n  'use strict';\n\n  // R\u00E9v\u00E9lation au d\u00E9filement\n  function initReveal() {\n    var els = document.querySelectorAll('.kp-reveal');\n    if (!els.length) return;\n    if (!('IntersectionObserver' in window)) {\n      els.forEach(function (el) { el.classList.add('kp-in'); });\n      return;\n    }\n    var io = new IntersectionObserver(function (entries) {\n      entries.forEach(function (entry) {\n        if (entry.isIntersecting) {\n          entry.target.classList.add('kp-in');\n          io.unobserve(entry.target);\n        }\n      });\n    }, { rootMargin: '0px 0px -8% 0px', threshold: 0.08 });\n    els.forEach(function (el, i) {\n      el.style.transitionDelay = (Math.min(i % 4, 3) * 80) + 'ms';\n      io.observe(el);\n    });\n  }\n\n  // Filet de s\u00E9curit\u00E9 : tout r\u00E9v\u00E9ler apr\u00E8s 1,5s\n  function safety() {\n    setTimeout(function () {\n      document.querySelectorAll('.kp-reveal:not(.kp-in)').forEach(function (el) {\n        el.classList.add('kp-in');\n      });\n    }, 1500);\n  }\n\n  function init() { initReveal(); safety(); }\n\n  if (document.readyState !== 'loading') init();\n  else document.addEventListener('DOMContentLoaded', init);\n\n  // R\u00E9-init dans l'\u00E9diteur de th\u00E8me\n  document.addEventListener('shopify:section:load', initReveal);\n})();\n\n/* Barre livraison offerte \u2014 maj client-side sur tout changement de panier\n   PERF 90 / correctif 18/10 : Dawn d\u00E9clare PUB_SUB_EVENTS avec \u00AB const \u00BB (constants.js) \u2192 ce n'est PAS une propri\u00E9t\u00E9 de window.\n   L'ancien test window.PUB_SUB_EVENTS \u00E9tait donc toujours faux : la barre ne se mettait jamais \u00E0 jour sur /cart apr\u00E8s suppression\n   (constat\u00E9 : 214,60 \u20AC \u2192 36,80 \u20AC, \u00AB livraison offerte \u00BB restait affich\u00E9). On lit d\u00E9sormais la constante globale.\n   La barre met aussi \u00E0 jour son ic\u00F4ne (camion / coche), sa progression accessible, et se masque quand le panier est vide. */\n(function () {\n  var SVG_OPEN = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">';\n  var ICO_TRUCK = SVG_OPEN + '<path d=\"M3 6h11v9H3z\"/><path d=\"M14 9h4l3 3v3h-7z\"/><circle cx=\"7\" cy=\"18\" r=\"1.6\"/><circle cx=\"17.5\" cy=\"18\" r=\"1.6\"/></svg>';\n  var ICO_CHECK = SVG_OPEN + '<path d=\"M20 6L9 17l-5-5\"/></svg>';\n  function events() { return (typeof PUB_SUB_EVENTS !== 'undefined') ? PUB_SUB_EVENTS : window.PUB_SUB_EVENTS; }\n  function setHtml(el, html) { if (el && el.innerHTML !== html) el.innerHTML = html; }\n  function fmtEur(c) { return (c / 100).toFixed(2).replace('.', ',') + ' \u20AC'; }\n  function update(total) {\n    document.querySelectorAll('[data-kp-shipbar]').forEach(function(bar){ updateBar(bar, total); });\n  }\n  function updateBar(bar, total) {\n    if (!bar) return;\n    var threshold = parseInt(bar.getAttribute('data-threshold'), 10) || 5900;\n    var pct = Math.min(100, Math.round((total * 100) / threshold));\n    var fill = bar.querySelector('.kp-shipbar__fill');\n    var msg = bar.querySelector('.kp-shipbar__msg');\n    var txt = bar.querySelector('.kp-shipbar__txt');\n    var ico = bar.querySelector('.kp-shipbar__ico');\n    var track = bar.querySelector('.kp-shipbar__track');\n    bar.hidden = total <= 0;\n    if (fill) fill.style.width = pct + '%';\n    if (track) track.setAttribute('aria-valuenow', pct);\n    if (total >= threshold) {\n      bar.classList.add('is-done');\n      if (msg) msg.classList.add('kp-shipbar__msg--done');\n      if (ico && ico.getAttribute('data-kp-state') !== 'done') { ico.innerHTML = ICO_CHECK; ico.setAttribute('data-kp-state', 'done'); }\n      setHtml(txt, 'F\u00E9licitations ! La <strong>livraison est offerte</strong>.');\n    } else {\n      bar.classList.remove('is-done');\n      if (msg) msg.classList.remove('kp-shipbar__msg--done');\n      if (ico && ico.getAttribute('data-kp-state') !== 'todo') { ico.innerHTML = ICO_TRUCK; ico.setAttribute('data-kp-state', 'todo'); }\n      setHtml(txt, 'Plus que <strong>' + fmtEur(threshold - total) + '</strong> pour la <strong>livraison offerte</strong> !');\n    }\n  }\n  function refresh() {\n    fetch((window.routes ? window.routes.cart_url : '/cart') + '.js', { cache: 'no-store' })\n      .then(function (r) { return r.json(); })\n      .then(function (c) { if (c && typeof c.total_price === 'number') update(c.total_price); })\n      .catch(function () {});\n  }\n  window.kpShipbarRefresh = refresh;\n  var timer = null;\n  function schedule() { clearTimeout(timer); timer = setTimeout(refresh, 300); }\n  document.addEventListener('DOMContentLoaded', function () {\n    var ev = events();\n    if (typeof subscribe === 'function' && ev && ev.cartUpdate) {\n      subscribe(ev.cartUpdate, schedule);\n    }\n    // Filet : Dawn ne publie pas cartUpdate quand la suppression du DERNIER article l\u00E8ve une erreur de rendu (panier vide) ;\n    // on suit donc aussi les changements du contenu du panier (page /cart et tiroir). La barre est hors de ces zones : pas de boucle.\n    if ('MutationObserver' in window && document.querySelector('[data-kp-shipbar]')) {\n      new MutationObserver(function (muts) {\n        for (var i = 0; i < muts.length; i++) {\n          var t = muts[i].target;\n          if (t && t.closest && t.closest('cart-items, cart-drawer-items')) { schedule(); return; }\n        }\n      }).observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['class'] });\n    }\n  });\n})();\n\n/* Upsell panier \u2014 ajout d'un produit sugg\u00E9r\u00E9 + re-render du drawer */\n(function () {\n  function addUpsell(btn) {\n    var variantId = btn.getAttribute('data-variant-id');\n    if (!variantId) return;\n    // 19/10 : un seul ajout en vol par bouton (double clic sur r\u00E9seau lent = deux articles sinon).\n    if (btn.getAttribute('aria-busy') === 'true' || btn.disabled) return;\n    var drawer = document.querySelector('cart-drawer');\n    var sections = (drawer && typeof drawer.getSectionsToRender === 'function')\n      ? drawer.getSectionsToRender().map(function (s) { return s.id; }).join(',')\n      : 'cart-drawer,cart-icon-bubble';\n    btn.setAttribute('aria-busy', 'true');\n    var addUrl = (window.routes && window.routes.cart_add_url) ? window.routes.cart_add_url : '/cart/add';\n    fetch(addUrl, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json', 'Accept': 'application/javascript' },\n      body: JSON.stringify({\n        items: [{ id: variantId, quantity: 1 }],\n        sections: sections,\n        sections_url: window.location.pathname\n      })\n    })\n      .then(function (r) { return r.json(); })\n      .then(function (data) {\n        if (data.status) { btn.removeAttribute('aria-busy'); return; }\n        if (drawer && typeof drawer.renderContents === 'function') {\n          drawer.renderContents(data);\n        }\n        var ev = (typeof PUB_SUB_EVENTS !== 'undefined') ? PUB_SUB_EVENTS : window.PUB_SUB_EVENTS; // correctif 18/10 : constante Dawn \u00AB const \u00BB, absente de window\n        if (typeof publish === 'function' && ev && ev.cartUpdate) {\n          publish(ev.cartUpdate, { source: 'kp-cart-upsell', productVariantId: variantId, cartData: data });\n        }\n      })\n      .catch(function () { btn.removeAttribute('aria-busy'); })\n      .then(function () { if (btn.isConnected) btn.removeAttribute('aria-busy'); });\n  }\n  document.addEventListener('click', function (e) {\n    var btn = e.target.closest ? e.target.closest('[data-kp-upsell-add]') : null;\n    if (btn) { e.preventDefault(); addUpsell(btn); }\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
