{
  "version": 3,
  "sources": ["/cdn/shop/t/8/assets/event10-discount-popup.js?debug=1786804288710"],
  "sourcesContent": ["/**\n * Five Three \u2014 Notification de r\u00E9duction EVENT10\n * Affiche une notification discr\u00E8te lorsque le code promo EVENT10\n * (g\u00E9n\u00E9ralement appliqu\u00E9 via le lien du QR code) est actif sur le panier.\n * S'affiche une seule fois par session pour ne pas d\u00E9ranger la navigation.\n */\n(function () {\n  var DISCOUNT_CODE = 'EVENT10';\n  var STORAGE_KEY = 'fiveThreeEvent10PopupShown';\n  var AUTO_HIDE_MS = 6000;\n\n  function alreadyShown() {\n    try {\n      return sessionStorage.getItem(STORAGE_KEY) === '1';\n    } catch (e) {\n      return false;\n    }\n  }\n\n  function markShown() {\n    try {\n      sessionStorage.setItem(STORAGE_KEY, '1');\n    } catch (e) {}\n  }\n\n  function injectStyles() {\n    if (document.getElementById('event10-popup-styles')) return;\n    var style = document.createElement('style');\n    style.id = 'event10-popup-styles';\n    style.textContent = [\n      '.event10-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,16px);',\n      'width:calc(100% - 32px);max-width:380px;background:#000;color:#fff;',\n      'border:1px solid #333;border-radius:10px;padding:16px 18px;',\n      'box-shadow:0 10px 30px rgba(0,0,0,.35);z-index:99999;opacity:0;',\n      'transition:opacity .35s ease,transform .35s ease;display:flex;',\n      'align-items:flex-start;gap:12px;font-family:Montserrat,-apple-system,sans-serif;}',\n      '.event10-toast.is-visible{opacity:1;transform:translate(-50%,0);}',\n      '.event10-toast__icon{flex:0 0 auto;width:22px;height:22px;margin-top:2px;color:#fff;}',\n      '.event10-toast__body{flex:1 1 auto;}',\n      '.event10-toast__title{font-family:Oswald,Montserrat,-apple-system,sans-serif;',\n      'text-transform:uppercase;letter-spacing:.04em;font-size:13px;font-weight:600;',\n      'color:#fff;margin:0 0 4px;}',\n      '.event10-toast__text{font-size:13px;line-height:1.4;color:#cccccc;margin:0;}',\n      '.event10-toast__close{flex:0 0 auto;background:none;border:0;color:#aaaaaa;',\n      'font-size:16px;line-height:1;cursor:pointer;padding:2px;margin:-2px -2px 0 0;}',\n      '.event10-toast__close:hover{color:#fff;}',\n      '@media (min-width:590px){.event10-toast{left:auto;right:24px;bottom:24px;',\n      'transform:translateY(16px);}',\n      '.event10-toast.is-visible{transform:translateY(0);}}'\n    ].join('');\n    document.head.appendChild(style);\n  }\n\n  function showToast() {\n    injectStyles();\n\n    var toast = document.createElement('div');\n    toast.className = 'event10-toast';\n    toast.setAttribute('role', 'status');\n    toast.setAttribute('aria-live', 'polite');\n    toast.innerHTML =\n      '<svg class=\"event10-toast__icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">' +\n      '<path d=\"M20 6L9 17l-5-5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>' +\n      '</svg>' +\n      '<div class=\"event10-toast__body\">' +\n      '<p class=\"event10-toast__title\">R\u00E9duction EVENT10 appliqu\u00E9e</p>' +\n      '<p class=\"event10-toast__text\">10 $ de rabais ajust\u00E9s automatiquement \u00E0 ta commande.</p>' +\n      '</div>' +\n      '<button type=\"button\" class=\"event10-toast__close\" aria-label=\"Fermer\">&times;</button>';\n\n    document.body.appendChild(toast);\n\n    requestAnimationFrame(function () {\n      toast.classList.add('is-visible');\n    });\n\n    var hideTimer = setTimeout(hide, AUTO_HIDE_MS);\n\n    function hide() {\n      clearTimeout(hideTimer);\n      toast.classList.remove('is-visible');\n      setTimeout(function () {\n        if (toast.parentNode) toast.parentNode.removeChild(toast);\n      }, 400);\n    }\n\n    toast.querySelector('.event10-toast__close').addEventListener('click', hide);\n  }\n\n  function cartHasDiscount(cart) {\n    if (!cart) return false;\n\n    // Cas 1 : r\u00E9duction au niveau du panier (certains th\u00E8mes/versions de Shopify).\n    var apps = cart.cart_level_discount_applications || [];\n    for (var i = 0; i < apps.length; i++) {\n      var title = (apps[i] && apps[i].title) || '';\n      if (title.toUpperCase().indexOf(DISCOUNT_CODE) !== -1) return true;\n    }\n\n    // Cas 2 : liste des codes de r\u00E9duction actifs sur le panier (cart.discount_codes).\n    // NOTE : on ne se fie plus \u00E0 `applicable` \u2014 quand le panier est vide (ex. arriv\u00E9e\n    // via le lien /discount/EVENT10 sans article), Shopify enregistre quand m\u00EAme le\n    // code sur le panier mais avec applicable=false tant qu'aucune ligne n'existe.\n    // On consid\u00E8re donc le code comme \"actif\" d\u00E8s qu'il est pr\u00E9sent sur le panier,\n    // qu'il soit d\u00E9j\u00E0 applicable ou seulement en attente d'un premier article.\n    var codes = cart.discount_codes || [];\n    for (var j = 0; j < codes.length; j++) {\n      var code = (codes[j] && codes[j].code) || '';\n      if (code.toUpperCase() === DISCOUNT_CODE) return true;\n    }\n\n    // Cas 3 : r\u00E9duction appliqu\u00E9e ligne par ligne (comportement observ\u00E9 sur ce th\u00E8me :\n    // items[].discounts[].title porte le nom du code).\n    var items = cart.items || [];\n    for (var k = 0; k < items.length; k++) {\n      var lineDiscounts = (items[k] && items[k].discounts) || [];\n      for (var m = 0; m < lineDiscounts.length; m++) {\n        var lineTitle = (lineDiscounts[m] && lineDiscounts[m].title) || '';\n        if (lineTitle.toUpperCase().indexOf(DISCOUNT_CODE) !== -1) return true;\n      }\n    }\n\n    // Repli : certains th\u00E8mes exposent les codes appliqu\u00E9s via la note du panier.\n    if (cart.total_discount > 0 && (cart.note || '').toUpperCase().indexOf(DISCOUNT_CODE) !== -1) {\n      return true;\n    }\n\n    return false;\n  }\n\n  function checkCart() {\n    fetch('/cart.js', { credentials: 'same-origin' })\n      .then(function (res) {\n        return res.ok ? res.json() : null;\n      })\n      .then(function (cart) {\n        if (cartHasDiscount(cart)) {\n          markShown();\n          showToast();\n        }\n      })\n      .catch(function (err) {\n        if (window.console && console.warn) console.warn('EVENT10 popup: cart check failed', err);\n        });\n      }\n\n  function init() {\n    if (alreadyShown()) return;\n\n    var params = new URLSearchParams(window.location.search);\n    var urlHintsDiscount =\n      (params.get('discount') || '').toUpperCase() === DISCOUNT_CODE ||\n      window.location.pathname.toUpperCase().indexOf('/DISCOUNT/' + DISCOUNT_CODE) !== -1;\n\n    // Le lien /discount/EVENT10 redirige avant que le cookie soit lisible ici,\n    // donc on v\u00E9rifie toujours l'\u00E9tat r\u00E9el du panier plut\u00F4t que de se fier\n    // uniquement \u00E0 l'URL. Si l'URL indique clairement le code (ex. juste apr\u00E8s\n    // la redirection /discount/EVENT10), on affiche imm\u00E9diatement sans attendre\n    // la r\u00E9ponse de /cart.js, au cas o\u00F9 le panier serait vide.\n    if (urlHintsDiscount) {\n      markShown();\n      showToast();\n    } else {\n      checkCart();\n    }\n\n    if (urlHintsDiscount) {\n      // Petite marge pour laisser Shopify terminer l'application du code\n      // avant de relire le panier. Les redirections/QR codes sur mobile\n      // sont souvent plus lentes (navigateur int\u00E9gr\u00E9, r\u00E9seau, cookie),\n      // donc on r\u00E9essaie plusieurs fois avec un d\u00E9lai croissant plut\u00F4t\n      // qu'une seule fois \u00E0 800ms.\n      [500, 1200, 2500, 4000].forEach(function (delay) {\n        setTimeout(checkCart, delay);\n      });\n    }\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n\n  // Sur mobile, une navigation retour (back/forward-cache) restaure la\n  // page sans red\u00E9clencher DOMContentLoaded. On revalide donc le panier\n  // \u00E0 chaque pageshow pour ne pas manquer le popup apr\u00E8s un retour arri\u00E8re.\n  window.addEventListener('pageshow', function (event) {\n  if (event.persisted) checkCart();\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
