{
  "version": 3,
  "sources": ["/cdn/shop/t/13/assets/vsp-tirage.js?cb=17920965394020"],
  "sourcesContent": ["/* Loterie VSwissPlugs : script de la section. Parle au serveur via l'app proxy Shopify (m\u00EAme domaine, aucune cl\u00E9 expos\u00E9e). */\n(function () {\n  'use strict';\n\n  var I18N = {\n    fr: {\n      opens: \"Ouverture des inscriptions dans\", closed: \"Inscriptions closes.\",\n      days: \"jours\", hours: \"heures\", min: \"min\", sec: \"sec\", winner: \"Gagnant(s)\",\n      ruleCommandes: \"{n} ticket(s) par commande pay\u00E9e\",\n      ruleAchats: \"{n} ticket(s) par tranche de CHF {per} d'achats (hors livraison)\",\n      ruleVente: \"Sinon, un ticket co\u00FBte CHF {prix}\",\n      tickets: \"{tickets} tickets \u00B7 {participants} participants\",\n      ticketsCap: \"{tickets} / {max} tickets \u00B7 {participants} participants\",\n      remaining: \"Il en reste {remaining}.\", full: \"Complet : tous les tickets sont pris.\",\n      prize: \"Lot {n} : {prize}\", odds: \"Tes chances : {odds}\",\n      error: \"La loterie est momentan\u00E9ment indisponible. R\u00E9essaie plus tard.\"\n    },\n    de: {\n      opens: \"Die Teilnahme startet in\", closed: \"Teilnahme beendet.\",\n      days: \"Tage\", hours: \"Std.\", min: \"Min.\", sec: \"Sek.\", winner: \"Gewinner\",\n      ruleCommandes: \"{n} Ticket(s) pro bezahlte Bestellung\",\n      ruleAchats: \"{n} Ticket(s) pro CHF {per} Einkaufswert (ohne Versand)\",\n      ruleVente: \"Alternativ kostet ein Ticket CHF {prix}\",\n      tickets: \"{tickets} Tickets \u00B7 {participants} Teilnehmer\",\n      ticketsCap: \"{tickets} / {max} Tickets \u00B7 {participants} Teilnehmer\",\n      remaining: \"Noch {remaining} verf\u00FCgbar.\", full: \"Ausverkauft: Alle Tickets sind vergeben.\",\n      prize: \"Preis {n}: {prize}\", odds: \"Deine Chancen: {odds}\",\n      error: \"Die Lotterie ist vor\u00FCbergehend nicht verf\u00FCgbar. Versuche es sp\u00E4ter erneut.\"\n    },\n    en: {\n      opens: \"Entries open in\", closed: \"Entries closed.\",\n      days: \"days\", hours: \"hours\", min: \"min\", sec: \"sec\", winner: \"Winner(s)\",\n      ruleCommandes: \"{n} ticket(s) per paid order\",\n      ruleAchats: \"{n} ticket(s) for every CHF {per} spent (excluding shipping)\",\n      ruleVente: \"Or buy a ticket for CHF {prix}\",\n      tickets: \"{tickets} tickets \u00B7 {participants} participants\",\n      ticketsCap: \"{tickets} / {max} tickets \u00B7 {participants} participants\",\n      remaining: \"{remaining} left.\", full: \"Full: all tickets are taken.\",\n      prize: \"Prize {n}: {prize}\", odds: \"Your odds: {odds}\",\n      error: \"The lottery is temporarily unavailable. Please try again later.\"\n    }\n  };\n  var LOCALES = { fr: 'fr-CH', de: 'de-CH', en: 'en-GB' };\n\n  function init(root) {\n    var ep = (root.dataset.endpoint || '/apps/tirage').replace(/\\/$/, '');\n    var loggedIn = root.dataset.loggedIn === '1';\n    var lang = I18N[root.dataset.lang] ? root.dataset.lang : 'fr';\n    var q = function (k) { return root.querySelector('[data-vsp=\"' + k + '\"]'); };\n    var t = function (k) { return I18N[lang][k] || ''; };\n    var pad = function (n) { return String(n).padStart(2, '0'); };\n    var fmt = function (n) { return Number(n).toLocaleString(LOCALES[lang]); };\n    var pct = function (x) { return (x * 100).toLocaleString(LOCALES[lang], { minimumFractionDigits: 1, maximumFractionDigits: 1 }) + ' %'; };\n    var timer = null, draw = null, wasPre = false;\n\n    function fail() {\n      var e = q('error'); e.textContent = t('error'); e.hidden = false;\n    }\n    function get(path) {\n      return fetch(ep + path, { credentials: 'same-origin', headers: { accept: 'application/json' } }).then(function (r) {\n        if (!r.ok) throw new Error(r.status); return r.json();\n      });\n    }\n    function getDraw() { return get('/draw?lang=' + lang); }\n\n    function isPre() { return !!(draw && draw.startsAt && Date.parse(draw.startsAt) > Date.now()); }\n    function tick() {\n      var box = q('countdown'), lab = q('cdlabel');\n      if (!draw || draw.status === 'drawn') { box.textContent = ''; if (lab) lab.hidden = true; return; }\n      var pre = isPre();\n      if (wasPre && !pre) { wasPre = false; getDraw().then(render).catch(function () { /* on r\u00E9essaie au rechargement */ }); }\n      wasPre = pre;\n      if (lab) { lab.hidden = !pre; lab.textContent = pre ? t('opens') : ''; }\n      var ms = Date.parse(pre ? draw.startsAt : draw.endsAt) - Date.now();\n      if (ms <= 0) { box.textContent = t('closed'); return; }\n      var s = Math.floor(ms / 1000);\n      var parts = [[Math.floor(s / 86400), t('days')], [pad(Math.floor(s % 86400 / 3600)), t('hours')], [pad(Math.floor(s % 3600 / 60)), t('min')], [pad(s % 60), t('sec')]];\n      var rots = [-2, 1.5, -1, 2];\n      box.textContent = '';\n      parts.forEach(function (p, i) {\n        var d = document.createElement('div'); d.className = 'vsp-t__stub'; d.style.setProperty('--rot', rots[i] + 'deg');\n        var b = document.createElement('b'); b.textContent = p[0];\n        var sp = document.createElement('span'); sp.textContent = p[1];\n        d.appendChild(b); d.appendChild(sp); box.appendChild(d);\n      });\n    }\n\n    function renderEarn(rules, full, open) {\n      var ul = q('earn'); if (!ul || !rules) return;\n      ul.textContent = '';\n      if (full) {\n        var fl = document.createElement('li'); fl.className = 'vsp-t__full'; fl.textContent = t('full'); ul.appendChild(fl);\n      }\n      [['commandes', 'ruleCommandes'], ['achats', 'ruleAchats']].forEach(function (x) {\n        var r = rules[x[0]];\n        if (!r || !r.on || !r.tickets) return;\n        var li = document.createElement('li');\n        li.textContent = t(x[1]).replace('{n}', r.tickets).replace('{per}', r.per || '');\n        ul.appendChild(li);\n      });\n      var sale = rules.vente && rules.vente.on;\n      if (sale) {\n        var li = document.createElement('li');\n        li.textContent = t('ruleVente').replace('{prix}', rules.vente.prix);\n        ul.appendChild(li);\n      }\n      var buy = q('buy');\n      if (buy) {\n        if (!buy.dataset.label) buy.dataset.label = buy.textContent;\n        buy.textContent = buy.dataset.label.replace('{prix}', sale ? rules.vente.prix : '');\n        buy.hidden = !sale || !!full || open === false; // pas de vente avant l'ouverture, apr\u00E8s la fin ni quand la loterie est compl\u00E8te\n      }\n    }\n\n    function render(d) {\n      draw = d;\n      var cap = d.maxTickets > 0, full = cap && d.remaining === 0 && d.status !== 'drawn';\n      renderEarn(d.rules, full, d.open);\n      q('title').textContent = d.title;\n      var prizes = q('prizes'); prizes.textContent = '';\n      (d.prizes || []).forEach(function (p, i) {\n        var li = document.createElement('li'); li.textContent = t('prize').replace('{n}', i + 1).replace('{prize}', p); prizes.appendChild(li);\n      });\n      prizes.hidden = !(d.prizes && d.prizes.length);\n      var stats = (cap ? t('ticketsCap') : t('tickets')).replace('{tickets}', fmt(d.tickets)).replace('{max}', fmt(d.maxTickets)).replace('{participants}', fmt(d.participants));\n      if (cap && d.status !== 'drawn') stats += ' \u00B7 ' + (full ? t('full') : t('remaining').replace('{remaining}', fmt(d.remaining)));\n      q('stats').textContent = stats;\n      var res = q('result');\n      if (d.results && d.results.winners.length) {\n        res.hidden = false; res.textContent = '';\n        var label = document.createElement('span'); label.textContent = t('winner'); res.appendChild(label);\n        d.results.winners.forEach(function (w) {\n          var name = document.createElement('b'); name.textContent = w.name; res.appendChild(name);\n          if (w.prize) { var pz = document.createElement('small'); pz.textContent = w.prize; res.appendChild(pz); }\n        });\n      } else { res.hidden = true; }\n      tick();\n      clearInterval(timer); timer = setInterval(tick, 1000);\n    }\n\n    function loadMe() {\n      if (!loggedIn) return;\n      get('/me').then(function (m) {\n        if (!m.loggedIn) return;\n        q('mytickets').textContent = m.tickets;\n        q('myodds').textContent = m.tickets > 0 && m.totalTickets > 0 ? t('odds').replace('{odds}', pct(m.tickets / m.totalTickets)) : '';\n      }).catch(function () { /* le reste de la page reste utilisable */ });\n    }\n\n    getDraw().then(render).then(loadMe).catch(fail);\n  }\n\n  document.querySelectorAll('.vsp-t').forEach(init);\n})();\n"],
  "mappings": "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",
  "names": ["li"]
}
