{
  "version": 3,
  "sources": ["/cdn/shop/t/31/assets/set-composer.js?cb=15"],
  "sourcesContent": ["/* ======================================================================\n   SET COMPOSER / \u00AB Composez votre set \u00BB \u2014 custom element\n   Popup curated (rendu a l'echelle a gauche, checklist a droite),\n   ajout groupe au panier. Donnees serialisees par snippets/set-composer.liquid.\n   Porte du handoff design (set-popup-d.jsx + set-render.jsx).\n   ====================================================================== */\n(function () {\n  if (customElements.get('set-composer')) return;\n\n  /* --- format monetaire (mini Shopify.formatMoney) --- */\n  function formatMoney(cents, fmt) {\n    fmt = fmt || '{{amount}} \u20AC';\n    var v = (cents / 100);\n    var useComma = /comma_separator/.test(fmt);\n    var noDec = /no_decimals/.test(fmt);\n    var dec = noDec ? 0 : 2;\n    var s = Math.abs(v).toFixed(dec);\n    var parts = s.split('.');\n    var thou = useComma ? '.' : '\u202F';\n    var decSep = useComma ? ',' : ',';\n    parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thou);\n    var amount = parts[1] ? parts[0] + decSep + parts[1] : parts[0];\n    return fmt.replace(/\\{\\{\\s*(amount[^}]*)\\s*\\}\\}/g, amount);\n  }\n\n  /* --- silhouettes couverts (decoratives, remplacables par PNG) --- */\n  function forkSVG(h) {\n    return '<svg width=\"' + (h * 0.16) + '\" height=\"' + h + '\" viewBox=\"0 0 16 100\" fill=\"none\" aria-hidden=\"true\">' +\n      '<g fill=\"#9c947f\"><rect x=\"2\" y=\"2\" width=\"1.5\" height=\"22\" rx=\"0.75\"/><rect x=\"5.4\" y=\"2\" width=\"1.5\" height=\"22\" rx=\"0.75\"/>' +\n      '<rect x=\"8.8\" y=\"2\" width=\"1.5\" height=\"22\" rx=\"0.75\"/><rect x=\"12.2\" y=\"2\" width=\"1.5\" height=\"22\" rx=\"0.75\"/>' +\n      '<path d=\"M2 22 q6 6 6 12 v62 a1.5 1.5 0 0 0 3 0 V34 q0-6 5.7-12 z\" opacity=\"0.92\"/></g></svg>';\n  }\n  function knifeSVG(h) {\n    return '<svg width=\"' + (h * 0.16) + '\" height=\"' + h + '\" viewBox=\"0 0 16 100\" fill=\"none\" aria-hidden=\"true\">' +\n      '<g fill=\"#9c947f\"><path d=\"M5 2 q9 1 9 16 q0 14 -5 22 l0 56 a1.6 1.6 0 0 1 -3.2 0 V40 q-3-4 -3-20 q0-16 2.2-18 z\"/></g></svg>';\n  }\n\n  function esc(s) { return String(s == null ? '' : s).replace(/[&<>\"]/g, function (c) { return ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' })[c]; }); }\n\n  // icone \"ouvrir dans une nouvelle page\" (external-link, hairline)\n  var EXTLINK = '<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/><polyline points=\"15 3 21 3 21 9\"/><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"/></svg>';\n\n  class SetComposer extends HTMLElement {\n    connectedCallback() {\n      if (this._init) return; this._init = true;\n      try {\n        this.pool = JSON.parse((this.querySelector('[data-sx-pool]') || {}).textContent || '[]');\n        this.serverCurrent = JSON.parse((this.querySelector('[data-sx-current]') || {}).textContent || 'null');\n        this.cfg = JSON.parse((this.querySelector('[data-sx-config]') || {}).textContent || '{}');\n      } catch (e) { this.pool = []; this.cfg = {}; this.serverCurrent = null; }\n      this.cats = this.cfg.cats || [];\n      this.copy = this.cfg.copy || {};\n      this.cap = this.cfg.cap || 3;\n      this.money = this.cfg.moneyFormat || '{{amount}} \u20AC';\n      this.scale = this.cfg.scale || { maxDia: 33, fill: 0.86, cutleryCm: 24 };\n      this.cutleryImg = this.cfg.cutlery || null;\n      this.expanded = {};\n      this.added = false;\n      // variante produit actuellement selectionnee sur la page (suivie sans reload)\n      this.currentId = this._readSelectedVariantId();\n      document.addEventListener('variant:change', function (ev) {\n        var v = ev && ev.detail && ev.detail.variant; if (v && v.id) this.currentId = v.id;\n      }.bind(this));\n      var btn = this.querySelector('[data-sx-open]');\n      if (btn) btn.addEventListener('click', this.open.bind(this));\n    }\n\n    _readSelectedVariantId() {\n      var el = document.querySelector('variant-picker script[data-variant]');\n      if (el) { try { var v = JSON.parse(el.textContent); if (v && v.id) return v.id; } catch (e) {} }\n      var inp = document.querySelector('[name=\"id\"]');\n      if (inp && inp.value) return inp.value;\n      return this.serverCurrent && this.serverCurrent.id;\n    }\n\n    _resolveCurrent() {\n      var id = this.currentId;\n      var found = id ? this.pool.find(function (p) { return String(p.id) === String(id); }) : null;\n      return found || this.serverCurrent || null;\n    }\n\n    /* ---------- ouverture / fermeture ---------- */\n    open() {\n      if (this.overlay) return;\n      // pre-place la variante actuellement selectionnee sur la page\n      this.current = this._resolveCurrent();\n      this.pieces = {};\n      if (this.current && this.current.cat) this.pieces[this.current.cat] = this.current;\n      this.lastAdded = this.current ? this.current.cat : null;\n      this.added = false;\n      var c = this.copy;\n      var ov = document.createElement('div');\n      ov.className = 'sx-pop';\n      ov.setAttribute('role', 'dialog');\n      ov.setAttribute('aria-modal', 'true');\n      ov.setAttribute('aria-label', c.eyebrow || 'Compose your set');\n      ov.innerHTML =\n        '<div class=\"sx-pop__sheet\">' +\n          '<button type=\"button\" class=\"sx-pop__close\" data-sx-close aria-label=\"' + esc(c.close) + '\">&times;</button>' +\n          '<div class=\"sx-visual\">' +\n            '<div class=\"sx-eyebrow\">' + esc(c.eyebrow) + '</div>' +\n            '<h2 class=\"sx-title\">' + esc(c.title) + '</h2>' +\n            '<p class=\"sx-lede\">' + esc(c.lede) + '</p>' +\n            '<div class=\"sx-render-wrap\"><div class=\"sx-render\" data-sx-render></div></div>' +\n            '<div class=\"sx-foot-line\"><span class=\"sx-foot-line__hint\">' + esc(c.hint) + '</span>' +\n              '<span class=\"sx-foot-line__cut\">' + esc(c.cutlery) + '</span></div>' +\n          '</div>' +\n          '<div class=\"sx-compose\">' +\n            '<div class=\"sx-compose__scroll\"><div class=\"sx-compose__eyebrow\">' + esc(c.four) + '</div>' +\n              '<div data-sx-sections></div></div>' +\n            '<div class=\"sx-recap\">' +\n              '<div class=\"sx-recap__line\"><span class=\"sx-recap__label\" data-sx-reclabel></span>' +\n                '<span class=\"sx-recap__total\" data-sx-total></span></div>' +\n              '<button type=\"button\" class=\"sx-cta\" data-sx-cta></button>' +\n              '<div class=\"sx-recap__sub\" data-sx-sub></div>' +\n              '<div class=\"sx-preorder\" data-sx-preorder hidden></div>' +\n            '</div>' +\n          '</div>' +\n        '</div>';\n      document.body.appendChild(ov);\n      this.overlay = ov;\n      this._prevOverflow = document.documentElement.style.overflow;\n      document.documentElement.style.overflow = 'hidden';\n\n      // listeners (delegation)\n      ov.addEventListener('click', this._onClick.bind(this));\n      this._onKey = function (e) { if (e.key === 'Escape') this.close(); }.bind(this);\n      document.addEventListener('keydown', this._onKey);\n      if (window.ResizeObserver) {\n        this._ro = new ResizeObserver(this.renderScale.bind(this));\n        this._ro.observe(ov.querySelector('[data-sx-render]'));\n      } else {\n        this._onResize = this.renderScale.bind(this);\n        window.addEventListener('resize', this._onResize);\n      }\n\n      this.renderAll();\n      requestAnimationFrame(function () { ov.classList.add('is-open'); });\n      var close = ov.querySelector('[data-sx-close]'); if (close) close.focus();\n    }\n\n    close() {\n      if (!this.overlay) return;\n      if (this._ro) { this._ro.disconnect(); this._ro = null; }\n      if (this._onResize) { window.removeEventListener('resize', this._onResize); this._onResize = null; }\n      document.removeEventListener('keydown', this._onKey);\n      document.documentElement.style.overflow = this._prevOverflow || '';\n      this.overlay.remove(); this.overlay = null;\n      var t = this.querySelector('[data-sx-open]'); if (t) t.focus();\n    }\n\n    _onClick(e) {\n      if (e.target === this.overlay) { this.close(); return; }\n      var card = e.target.closest('[data-sx-card]');\n      if (card) { this.toggle(card.getAttribute('data-cat'), card.getAttribute('data-id')); return; }\n      var more = e.target.closest('[data-sx-more]');\n      if (more) { var k = more.getAttribute('data-cat'); this.expanded[k] = !this.expanded[k]; this.renderSections(); return; }\n      if (e.target.closest('[data-sx-close]')) { this.close(); return; }\n      if (e.target.closest('[data-sx-cta]')) { this.addAll(); return; }\n      if (e.target.closest('[data-sx-po-toggle]')) {\n        var pbox = this.overlay.querySelector('[data-sx-preorder]');\n        var ppanel = pbox.querySelector('[data-sx-po-panel]');\n        var willOpen = ppanel.hidden;\n        ppanel.hidden = !willOpen;\n        pbox.querySelector('[data-sx-po-toggle]').setAttribute('aria-expanded', willOpen ? 'true' : 'false');\n        pbox.classList.toggle('is-open', willOpen);\n        return;\n      }\n      var pstep = e.target.closest('[data-sx-po-step]');\n      if (pstep) {\n        var pq = this.overlay.querySelector('[data-sx-po-qty]');\n        var nv = (parseInt(pq.textContent, 10) || this._poMin || 1) + parseInt(pstep.getAttribute('data-sx-po-step'), 10);\n        if (nv < (this._poMin || 1)) nv = this._poMin || 1;\n        if (nv > 99) nv = 99;\n        pq.textContent = nv; this._updatePoCount();\n        return;\n      }\n      if (e.target.closest('[data-sx-po-send]')) { this.submitPreorder(); return; }\n      if (e.target.closest('[data-sx-po-close]')) {\n        var cbox = this.overlay.querySelector('[data-sx-preorder]');\n        cbox.querySelector('[data-sx-po-panel]').hidden = true;\n        cbox.querySelector('[data-sx-po-toggle]').setAttribute('aria-expanded', 'false');\n        cbox.classList.remove('is-open');\n        return;\n      }\n    }\n\n    /* ---------- logique ---------- */\n    optionsFor(catId) {\n      var cur = this.current || {};\n      var items = this.pool.filter(function (p) { return p.cat === catId; });\n      return items.map(function (p, i) { return { p: p, i: i }; }).sort(function (a, b) {\n        var sa = (a.p.collId === cur.collId ? 0 : 1) + (a.p.available ? 0 : 10);\n        var sb = (b.p.collId === cur.collId ? 0 : 1) + (b.p.available ? 0 : 10);\n        return (sa - sb) || (a.i - b.i);\n      }).map(function (o) { return o.p; });\n    }\n\n    toggle(catId, id) {\n      var item = this.pool.find(function (p) { return String(p.id) === String(id) && p.cat === catId; });\n      if (!item) return;\n      var cur = this.pieces[catId];\n      if (cur && String(cur.id) === String(id)) delete this.pieces[catId];\n      else this.pieces[catId] = item;\n      this.lastAdded = catId; this.added = false;\n      this.renderAll();\n    }\n\n    addAll() {\n      var self = this;\n      var sel = this.cats.map(function (c) { return self.pieces[c.id]; }).filter(Boolean);\n      // garde-fou : on n'ajoute pas tant qu'une piece epuisee est selectionnee\n      if (sel.some(function (p) { return !p.available; })) { this.renderRecap(); return; }\n      var items = sel.map(function (p) { return { id: p.id, quantity: 1 }; });\n      if (!items.length) return;\n      var cta = this.overlay.querySelector('[data-sx-cta]'); if (cta) cta.disabled = true;\n      var root = (window.Shopify && Shopify.routes && Shopify.routes.root) || '/';\n      // sections a rafraichir : le <cart-drawer> et le compteur s'ajoutent via cet event (natif Impact)\n      var sections = [];\n      document.documentElement.dispatchEvent(new CustomEvent('cart:prepare-bundled-sections', { bubbles: true, detail: { sections: sections } }));\n      fetch(root + 'cart/add.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' },\n        body: JSON.stringify({ items: items, sections: sections.join(','), sections_url: window.location.pathname })\n      }).then(function (r) {\n        if (!r.ok) throw new Error('add failed');\n        return r.json();\n      }).then(function (addJson) {\n        return fetch(root + 'cart.js').then(function (r) { return r.json(); }).then(function (cart) {\n          cart.sections = addJson.sections || {};\n          self.added = true; self.renderRecap();\n          // rafraichit le compteur + le contenu du tiroir (mecanisme natif du theme)\n          document.documentElement.dispatchEvent(new CustomEvent('cart:change', { bubbles: true, detail: { baseEvent: 'variant:add', cart: cart } }));\n          // ouvre le tiroir (CartDrawer ecoute variant:add ; fallback show() direct)\n          self.dispatchEvent(new CustomEvent('variant:add', { bubbles: true, detail: { items: addJson.items || [addJson], cart: cart } }));\n          var d = document.querySelector('cart-drawer');\n          setTimeout(function () { self.close(); if (d && typeof d.show === 'function') { try { d.show(); } catch (e) {} } }, 500);\n        });\n      }).catch(function () {\n        if (cta) cta.disabled = false;\n        var sub = self.overlay && self.overlay.querySelector('[data-sx-sub]');\n        if (sub) sub.textContent = 'Une erreur est survenue, r\u00E9essayez.';\n      });\n    }\n\n    /* ---------- rendu ---------- */\n    renderAll() { this.renderScale(); this.renderSections(); this.renderRecap(); }\n\n    renderScale() {\n      if (!this.overlay) return;\n      var frame = this.overlay.querySelector('[data-sx-render]');\n      if (!frame) return;\n      var self = this, c = this.copy;\n      var present = this.cats.map(function (cat) { return self.pieces[cat.id]; }).filter(Boolean);\n      var w = frame.clientWidth || 520;\n      var pxPerCm = (w * (this.scale.fill || 0.86)) / (this.scale.maxDia || 33);\n\n      if (!present.length) {\n        frame.innerHTML = '<div class=\"sx-render__empty\">' + esc(c.empty) + '</div>';\n        return;\n      }\n      var biggest = Math.max.apply(null, present.map(function (p) { return p.dia; }));\n      var biggestPx = biggest * pxPerCm;\n      var cutleryH = (this.scale.cutleryCm || 24) * pxPerCm;\n      var html = '';\n      // couverts (decoratifs) : decales hors de la plus grande assiette, mais\n      // clampes pour rester dans le cadre (sinon coupes par l'overflow:hidden).\n      // Sur les grandes assiettes de presentation, le couvert se cale sous le bord\n      // (z-index < assiettes) au lieu d'etre rogne. Les assiettes ne sont pas reduites.\n      var cutAR = 0.14; // largeur/hauteur max des couverts (fork 0.131, knife 0.091) + marge\n      var cutleryW = cutleryH * cutAR;\n      var maxOffX = (w / 2) - (cutleryW / 2) - (w * 0.02);\n      var offX = Math.min((biggestPx / 2) + cutleryH * 0.13, maxOffX);\n      var ci = this.cutleryImg || {};\n      var forkEl = ci.fork ? '<img src=\"' + esc(ci.fork) + '\" alt=\"\" style=\"height:' + cutleryH + 'px;width:auto;display:block\">' : forkSVG(cutleryH);\n      var knifeEl = ci.knife ? '<img src=\"' + esc(ci.knife) + '\" alt=\"\" style=\"height:' + cutleryH + 'px;width:auto;display:block\">' : knifeSVG(cutleryH);\n      html += '<div class=\"sx-cutlery\" style=\"transform:translate(-50%,-50%) translateX(' + (-offX) + 'px)\">' + forkEl + '</div>';\n      html += '<div class=\"sx-cutlery\" style=\"transform:translate(-50%,-50%) translateX(' + (offX) + 'px)\">' + knifeEl + '</div>';\n      // assiettes concentriques (presentation dessous -> pain dessus)\n      this.cats.forEach(function (cat, idx) {\n        var p = self.pieces[cat.id]; if (!p) return;\n        var d = p.dia * pxPerCm;\n        var style = 'width:' + d + 'px;height:' + d + 'px;z-index:' + (10 + idx) + ';';\n        if (p.img) {\n          html += '<div class=\"sx-plate\" data-cat=\"' + cat.id + '\" style=\"' + style + '\"><img src=\"' + esc(p.img) + '\" alt=\"\" onerror=\"this.parentNode.classList.add(\\'sx-plate--css\\');this.remove();\"></div>';\n        } else {\n          html += '<div class=\"sx-plate sx-plate--css\" data-cat=\"' + cat.id + '\" style=\"' + style + '\"></div>';\n        }\n      });\n      frame.innerHTML = html;\n      // animation : seul le dernier ajoute s'anime, les autres apparaissent direct\n      var plates = frame.querySelectorAll('.sx-plate');\n      plates.forEach(function (el) {\n        if (el.getAttribute('data-cat') === self.lastAdded) {\n          requestAnimationFrame(function () { el.classList.add('is-shown'); });\n        } else {\n          el.style.transition = 'none'; el.classList.add('is-shown');\n          requestAnimationFrame(function () { el.style.transition = ''; });\n        }\n      });\n    }\n\n    renderSections() {\n      if (!this.overlay) return;\n      var self = this, c = this.copy, cur = this.current || {};\n      var host = this.overlay.querySelector('[data-sx-sections]');\n      if (!host) return;\n      var html = '';\n      this.cats.forEach(function (cat) {\n        var opts = self.optionsFor(cat.id);\n        var chosen = self.pieces[cat.id];\n        var visible = opts.slice(0, self.cap);\n        if (chosen && !visible.some(function (o) { return String(o.id) === String(chosen.id); })) {\n          var extra = opts.find(function (o) { return String(o.id) === String(chosen.id); });\n          if (extra) visible = [extra].concat(visible.slice(0, self.cap - 1));\n        }\n        var shown = self.expanded[cat.id] ? opts : visible;\n        var hidden = opts.length - visible.length;\n\n        html += '<div class=\"sx-section\">' +\n          '<div class=\"sx-section__head\"><span class=\"sx-section__name\">' + esc(cat.label) + '</span>' +\n          '<span class=\"sx-section__range\">' + esc(cat.range) + ' \u00B7 ' + esc(c.optional) + '</span></div>' +\n          '<div class=\"sx-cards\">';\n        shown.forEach(function (o) {\n          var on = chosen && String(chosen.id) === String(o.id);\n          var oos = !o.available;\n          var isCur = cur.id && String(o.id) === String(cur.id);\n          var openTtl = self.cfg.lang === 'fr' ? 'Voir la fiche' : 'View the plate';\n          html += '<div class=\"sx-card-wrap\">' +\n            '<button type=\"button\" class=\"sx-card' + (on ? ' is-selected' : '') + (oos ? ' is-oos' : '') + '\"' +\n            ' data-sx-card data-cat=\"' + cat.id + '\" data-id=\"' + esc(o.id) + '\"' + (oos ? ' aria-disabled=\"true\"' : '') + '>' +\n            '<span class=\"sx-tick\">' + (on ? '\u2713' : '') + '</span>' +\n            '<span class=\"sx-thumb\">' + (o.img ? '<img src=\"' + esc(o.img) + '\" alt=\"\" loading=\"lazy\" decoding=\"async\">' : '') + '</span>' +\n            '<span class=\"sx-card__body\">' +\n              '<span class=\"sx-card__name\">' + esc(o.coll) + (o.variant ? ' <em class=\"sx-vlabel\">\u00B7 ' + esc(o.variant) + '</em>' : '') + (isCur ? ' <em>\u00B7 ' + esc(c.thisPlate) + '</em>' : '') + '</span>' +\n              '<span class=\"sx-card__meta\">\u2300 ' + esc(o.dia) + ' cm' + (oos ? ' \u00B7 <em class=\"sx-oosflag\">' + esc(c.oos) + '</em>' : '') + '</span>' +\n            '</span>' +\n            '<span class=\"sx-card__price\">' + esc(o.price) + '</span>' +\n            '</button>' +\n            (o.url ? '<a class=\"sx-card__open\" href=\"' + esc(o.url) + '\" target=\"_blank\" rel=\"noopener\" title=\"' + esc(openTtl) + '\" aria-label=\"' + esc(openTtl) + '\">' + EXTLINK + '</a>' : '') +\n          '</div>';\n        });\n        html += '</div>';\n        if (hidden > 0) {\n          var lbl = self.expanded[cat.id] ? c.fewer : ('+ ' + hidden + ' ' + (hidden === 1 ? c.more1 : c.more));\n          html += '<button type=\"button\" class=\"sx-more\" data-sx-more data-cat=\"' + cat.id + '\">' + esc(lbl) + '</button>';\n        }\n        html += '</div>';\n      });\n      host.innerHTML = html;\n    }\n\n    renderRecap() {\n      if (!this.overlay) return;\n      var self = this, c = this.copy;\n      var list = this.cats.map(function (cat) { return self.pieces[cat.id]; }).filter(Boolean);\n      var count = list.length;\n      var total = list.reduce(function (s, p) { return s + (p.priceN || 0); }, 0);\n      var lab = this.overlay.querySelector('[data-sx-reclabel]');\n      var tot = this.overlay.querySelector('[data-sx-total]');\n      var cta = this.overlay.querySelector('[data-sx-cta]');\n      var sub = this.overlay.querySelector('[data-sx-sub]');\n      var oosSel = list.filter(function (p) { return !p.available; });\n      if (lab) lab.innerHTML = esc(c.total) + ' <em>\u00B7 ' + count + ' ' + esc(count === 1 ? c.piece : c.pieces) + '</em>';\n      if (tot) tot.textContent = formatMoney(total, this.money);\n      if (cta) { cta.textContent = this.added ? c.added : c.cta; cta.disabled = (count === 0) || (oosSel.length > 0 && !this.added); }\n      if (sub) {\n        if (oosSel.length > 0 && !this.added) {\n          var names = oosSel.map(function (p) { return p.coll + ' \u2300' + p.dia; }).join(', ');\n          var tmpl = oosSel.length === 1 ? c.oosBlock1 : c.oosBlockN;\n          sub.textContent = (tmpl || '{n}').replace('{n}', names);\n          sub.classList.add('is-warn'); sub.classList.remove('is-added');\n        } else {\n          sub.textContent = this.added ? c.addedSub : c.idleSub;\n          sub.classList.remove('is-warn'); sub.classList.toggle('is-added', this.added);\n        }\n      }\n      this.renderPreorder(oosSel, list);\n    }\n\n    renderPreorder(oosList, list) {\n      var box = this.overlay && this.overlay.querySelector('[data-sx-preorder]');\n      if (!box) return;\n      var show = oosList.length > 0 && !this.added;\n      box.hidden = !show;\n      if (!show) return;\n      var c = this.copy, po = c.preorder || {};\n      if (box.getAttribute('data-built') !== '1') {\n        var addr = function (pfx, ac) {\n          return '<div class=\"sx-preorder__addr\" data-sx-po-addr=\"' + pfx + '\">' +\n            '<input type=\"text\" class=\"sx-preorder__in\" data-f=\"address1\" placeholder=\"' + esc(po.addr1) + '\" autocomplete=\"' + ac + ' address-line1\">' +\n            '<input type=\"text\" class=\"sx-preorder__in\" data-f=\"address2\" placeholder=\"' + esc(po.addr2) + '\" autocomplete=\"' + ac + ' address-line2\">' +\n            '<div class=\"sx-preorder__pair\">' +\n              '<input type=\"text\" class=\"sx-preorder__in\" data-f=\"zip\" placeholder=\"' + esc(po.zip) + '\" autocomplete=\"' + ac + ' postal-code\">' +\n              '<input type=\"text\" class=\"sx-preorder__in\" data-f=\"city\" placeholder=\"' + esc(po.city) + '\" autocomplete=\"' + ac + ' address-level2\">' +\n            '</div>' +\n            '<input type=\"text\" class=\"sx-preorder__in\" data-f=\"country\" placeholder=\"' + esc(po.country) + '\" autocomplete=\"' + ac + ' country-name\">' +\n          '</div>';\n        };\n        box.innerHTML =\n          '<button type=\"button\" class=\"sx-preorder__link\" data-sx-po-toggle aria-expanded=\"false\">' +\n            esc(po.cta) + '<span class=\"sx-preorder__tip\">' + esc(po.text) + '</span>' +\n          '</button>' +\n          '<div class=\"sx-preorder__panel\" data-sx-po-panel hidden>' +\n            '<button type=\"button\" class=\"sx-preorder__close\" data-sx-po-close aria-label=\"' + esc(po.close) + '\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button>' +\n            '<div class=\"sx-preorder__body\">' +\n            '<p class=\"sx-preorder__text\">' + esc(po.text) + '</p>' +\n            '<div class=\"sx-preorder__qty\">' +\n              '<button type=\"button\" class=\"sx-preorder__step\" data-sx-po-step=\"-1\" aria-label=\"moins\">\u2212</button>' +\n              '<span class=\"sx-preorder__qval\" data-sx-po-qty>1</span>' +\n              '<button type=\"button\" class=\"sx-preorder__step\" data-sx-po-step=\"1\" aria-label=\"plus\">+</button>' +\n              '<span class=\"sx-preorder__count\" data-sx-po-count></span>' +\n            '</div>' +\n            '<p class=\"sx-preorder__minnote\" data-sx-po-minnote></p>' +\n            '<input type=\"text\" class=\"sx-preorder__in\" data-sx-po-name placeholder=\"' + esc(po.name) + '\" autocomplete=\"name\">' +\n            '<input type=\"email\" class=\"sx-preorder__in\" data-sx-po-email placeholder=\"' + esc(po.email) + '\" autocomplete=\"email\">' +\n            '<input type=\"tel\" class=\"sx-preorder__in\" data-sx-po-phone placeholder=\"' + esc(po.phone) + '\" autocomplete=\"tel\">' +\n            '<input type=\"text\" class=\"sx-preorder__hp\" data-sx-po-company tabindex=\"-1\" autocomplete=\"off\" aria-hidden=\"true\">' +\n            '<p class=\"sx-preorder__lbl\">' + esc(po.ship) + '</p>' +\n            addr('ship', 'shipping') +\n            '<label class=\"sx-preorder__check\"><input type=\"checkbox\" data-sx-po-billdiff><span>' + esc(po.billdiff) + '</span></label>' +\n            '<div data-sx-po-billwrap hidden><p class=\"sx-preorder__lbl\">' + esc(po.bill) + '</p>' + addr('bill', 'billing') + '</div>' +\n            '<p class=\"sx-preorder__nopay\">' + esc(po.nopay) + '</p>' +\n            '<p class=\"sx-preorder__err\" data-sx-po-err role=\"alert\" hidden></p>' +\n            '<button type=\"button\" class=\"sx-preorder__send\" data-sx-po-send>' + esc(po.send) + '</button>' +\n            '<div class=\"sx-preorder__done\" data-sx-po-done role=\"status\" hidden></div>' +\n            '</div>' +\n          '</div>';\n        var bd = box.querySelector('[data-sx-po-billdiff]');\n        if (bd) bd.addEventListener('change', function () {\n          var w = box.querySelector('[data-sx-po-billwrap]');\n          if (w) w.hidden = !bd.checked;\n        });\n        box.setAttribute('data-built', '1');\n      }\n      var nb = list.length;\n      var minSets = Math.max(1, Math.ceil((this.cfg.minPieces || 8) / nb));\n      var compChanged = this._poNb !== nb;\n      this._poMin = minSets; this._poNb = nb;\n      var qEl = box.querySelector('[data-sx-po-qty]');\n      // si la composition du set change, on recale la quantite sur le nouveau\n      // minimum (sinon on garde le choix du client, borne par le minimum)\n      if (compChanged || (parseInt(qEl.textContent, 10) || 0) < minSets) qEl.textContent = minSets;\n      var mn = box.querySelector('[data-sx-po-minnote]');\n      if (mn) {\n        mn.textContent = (po.minNote || '')\n          .replace('{n}', minSets)\n          .replace('{p}', minSets * nb);\n      }\n      this._updatePoCount();\n    }\n\n    _updatePoCount() {\n      var box = this.overlay && this.overlay.querySelector('[data-sx-preorder]');\n      if (!box) return;\n      var qEl = box.querySelector('[data-sx-po-qty]'), cEl = box.querySelector('[data-sx-po-count]');\n      if (!qEl || !cEl) return;\n      var sets = parseInt(qEl.textContent, 10) || this._poMin || 1;\n      var pieces = sets * (this._poNb || 1);\n      var c = this.copy;\n      cEl.textContent = '= ' + pieces + ' ' + (pieces === 1 ? c.piece : c.pieces);\n    }\n\n    submitPreorder() {\n      var box = this.overlay && this.overlay.querySelector('[data-sx-preorder]');\n      if (!box) return;\n      var po = this.copy.preorder || {};\n      var val = function (sel) { var el = box.querySelector(sel); return el ? (el.value || '').trim() : ''; };\n      var name = val('[data-sx-po-name]'), email = val('[data-sx-po-email]'), phone = val('[data-sx-po-phone]');\n      var billEl = box.querySelector('[data-sx-po-billdiff]'); var billDiff = billEl && billEl.checked;\n      var readAddr = function (pfx) {\n        var w = box.querySelector('[data-sx-po-addr=\"' + pfx + '\"]'); if (!w) return null;\n        var g = function (f) { var el = w.querySelector('[data-f=\"' + f + '\"]'); return el ? (el.value || '').trim() : ''; };\n        return { address1: g('address1'), address2: g('address2'), zip: g('zip'), city: g('city'), country: g('country') };\n      };\n      var addrOk = function (a) { return !!(a && a.address1 && a.zip && a.city && a.country); };\n      var ship = readAddr('ship');\n      var bill = billDiff ? readAddr('bill') : null;\n      var miss = (!name) || (email.indexOf('@') < 1) || (!phone) || (!addrOk(ship)) || (billDiff && !addrOk(bill));\n      var errEl = box.querySelector('[data-sx-po-err]');\n      box.classList.toggle('sx-preorder--err', !!miss);\n      if (miss) { if (errEl) { errEl.textContent = po.err || 'Champs manquants.'; errEl.hidden = false; } return; }\n      if (errEl) errEl.hidden = true;\n      var self = this;\n      var list = this.cats.map(function (cat) { return self.pieces[cat.id]; }).filter(Boolean);\n      var sets = parseInt(box.querySelector('[data-sx-po-qty]').textContent, 10) || this._poMin || 1;\n      var hp = box.querySelector('[data-sx-po-company]');\n      var payload = {\n        name: name, email: email, phone: phone,\n        shipping: ship, billing: billDiff ? bill : ship,\n        sets: sets, pieces: sets * list.length,\n        items: list.map(function (p) { return { id: p.id, coll: p.coll, type: p.type, dia: p.dia, variant: p.variant, available: p.available }; }),\n        company: hp ? (hp.value || '') : ''\n      };\n      var done = box.querySelector('[data-sx-po-done]');\n      var sendBtn = box.querySelector('[data-sx-po-send]');\n      var showDone = function () {\n        done.textContent = po.thanks || 'Merci'; done.hidden = false;\n        box.querySelector('[data-sx-po-panel]').classList.add('is-sent');\n      };\n      if (!po.endpoint) { if (window.console && console.log) { console.log('[set-composer] precommande (sans endpoint) :', payload); } showDone(); return; }\n      if (sendBtn) { sendBtn.disabled = true; sendBtn.setAttribute('data-label', sendBtn.textContent); sendBtn.textContent = po.sending || '\u2026'; }\n      fetch(po.endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) })\n        .then(function (r) { if (!r.ok) throw new Error('HTTP ' + r.status); return r.json(); })\n        .then(function () { showDone(); })\n        .catch(function () {\n          if (sendBtn) { sendBtn.disabled = false; sendBtn.textContent = sendBtn.getAttribute('data-label') || (po.send || ''); }\n          if (errEl) { errEl.textContent = po.errSend || po.err || 'Erreur'; errEl.hidden = false; }\n        });\n    }\n  }\n\n  customElements.define('set-composer', SetComposer);\n})();\n"],
  "mappings": "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",
  "names": []
}
