{
  "version": 3,
  "sources": ["/cdn/shop/t/42/assets/tier-meter.js?tl=tier1"],
  "sourcesContent": ["/* Staffel display. Never invent euro savings. Confirmed amounts come from Shopify allocations. */\n(function () {\n  'use strict';\n  if (customElements.get('titanore-tier-meter')) return;\n  class TitanoreTierMeter extends HTMLElement {\n    constructor() {\n      super();\n      this.attachShadow({ mode: 'open' });\n      this.shadowRoot.innerHTML = `\n        <style>\n          :host{display:block;color:#151515;font-family:Inter,Archivo,system-ui,sans-serif}\n          *{box-sizing:border-box}h2,p{margin:0}\n          .box{border:1px solid #e8e2d8;background:#fcfaf6;padding:16px 16px 14px}\n          .heading{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:12px}\n          h2{font-size:15px;font-weight:650;letter-spacing:-.01em}\n          .tag{font-size:11px;color:#5c5854;white-space:nowrap}\n          .tiers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}\n          .tier{text-align:center;padding:10px 4px;background:#fff;border:1px solid #e8e2d8;min-height:72px}\n          .tier[data-active=true]{background:#151515;color:#fff;border-color:#151515}\n          .tier[data-passed=true]{border-color:#151515}\n          .qty{font-size:11px;display:block;margin-bottom:4px;line-height:1.25}\n          .percent{font-size:18px;font-weight:650;letter-spacing:-.03em;display:block}\n          .extra{font-size:10px;display:block;margin-top:2px;line-height:1.3}\n          .track{height:3px;background:#e8e2d8;margin-top:12px;overflow:hidden}\n          .fill{height:100%;width:0;background:#7c141b;transition:width .18s ease}\n          .status{font-size:13px;line-height:1.45;font-weight:650;margin-top:12px}\n          .next{font-size:12px;line-height:1.45;color:#5c5854;margin-top:3px}\n          :host([compact]) .box{padding:12px}\n          :host([compact]) h2{font-size:14px}\n          :host([compact]) .tier{min-height:64px;padding:8px 3px}\n          :host([compact]) .percent{font-size:16px}\n          @media(max-width:359px){.box{padding:12px}.percent{font-size:16px}.qty,.extra{font-size:10px}}\n          @media(prefers-reduced-motion:reduce){.fill{transition:none}}\n        </style>\n        <section class=\"box\" aria-label=\"Setvoordeel\">\n          <div class=\"heading\"><h2>Setvoordeel</h2><span class=\"tag\">Automatisch in checkout</span></div>\n          <div class=\"tiers\">\n            <div class=\"tier\" data-min=\"1\"><span class=\"qty\">1 product</span><span class=\"percent\">0%</span><span class=\"extra\">start</span></div>\n            <div class=\"tier\" data-min=\"2\"><span class=\"qty\">2 producten</span><span class=\"percent\">10%</span><span class=\"extra\">extra voordeel</span></div>\n            <div class=\"tier\" data-min=\"3\"><span class=\"qty\">3+ producten</span><span class=\"percent\">20%</span><span class=\"extra\">extra voordeel</span></div>\n          </div>\n          <div class=\"track\" role=\"progressbar\" aria-label=\"Voortgang staffelvoordeel\" aria-valuemin=\"0\" aria-valuemax=\"3\" aria-valuenow=\"0\"><div class=\"fill\"></div></div>\n          <div aria-live=\"polite\" aria-atomic=\"true\">\n            <p class=\"status\">Voeg 2 producten toe voor 10% extra voordeel.</p>\n            <p class=\"next\">Een set telt als 1 product. Alleen de hoogste staffel geldt.</p>\n          </div>\n        </section>`;\n    }\n    setState(state) {\n      const api = window.TitanoreTier;\n      if (!api) return;\n      const $ = (sel) => this.shadowRoot.querySelector(sel);\n      const count = Number.isSafeInteger(state && state.eligibleQuantity) ? state.eligibleQuantity : 0;\n      const expected = api.tierFor(count);\n      const confirmed = state && state.status === 'confirmed';\n      const pending = state && state.status === 'pending';\n      const hasMoney = Number.isSafeInteger(state && state.discountCents) && state.discountCents >= 0;\n      const moneyOk = expected.percent === 0\n        ? (state && state.discountCents === 0)\n        : (hasMoney && state.discountCents > 0);\n      const showConfirmed = confirmed && moneyOk && state.actualPercent === expected.percent;\n\n      this.shadowRoot.querySelectorAll('.tier').forEach((el) => {\n        const min = Number(el.dataset.min);\n        if (count <= 0) {\n          el.dataset.active = 'false';\n          el.dataset.passed = 'false';\n          return;\n        }\n        if (min === 1) {\n          el.dataset.active = String(count === 1);\n          el.dataset.passed = String(count > 1);\n        } else if (min === 2) {\n          el.dataset.active = String(count === 2);\n          el.dataset.passed = String(count >= 3);\n        } else {\n          el.dataset.active = String(count >= 3);\n          el.dataset.passed = 'false';\n        }\n      });\n\n      const step = count <= 0 ? 0 : Math.min(count, 3);\n      $('.fill').style.width = (step / 3 * 100) + '%';\n      $('.track').setAttribute('aria-valuenow', String(step));\n      $('.tag').textContent = showConfirmed && expected.percent > 0 ? 'Actief in winkelmand' : 'Automatisch in checkout';\n\n      if (pending && expected.percent > 0 && !showConfirmed) {\n        $('.status').textContent = expected.percent + '% extra voordeel wordt toegepast in je winkelmand.';\n        $('.next').textContent = 'Even geduld. Checkout toont het definitieve bedrag.';\n        $('.track').setAttribute('aria-valuetext', 'Setvoordeel wordt gecontroleerd');\n        return;\n      }\n\n      if (count <= 0) {\n        $('.status').textContent = 'Voeg 2 producten toe voor 10% extra voordeel.';\n        $('.next').textContent = 'Een set telt als 1 product. Alleen de hoogste staffel geldt.';\n      } else if (count === 1) {\n        $('.status').textContent = 'Voeg nog 1 product toe voor 10% extra voordeel.';\n        $('.next').textContent = 'Een set telt als 1 product. Alleen de hoogste staffel geldt.';\n      } else if (count === 2) {\n        $('.status').textContent = showConfirmed\n          ? '10% extra voordeel actief. Voeg nog 1 product toe voor 20%.'\n          : '10% extra voordeel wordt toegepast. Voeg nog 1 product toe voor 20%.';\n        $('.next').textContent = showConfirmed && state.discountCents\n          ? api.formatMoney(state.discountCents, state.currency || 'EUR') + ' extra voordeel op deelnemende producten.'\n          : 'Checkout past het extra setvoordeel automatisch toe.';\n      } else {\n        $('.status').textContent = showConfirmed\n          ? '20% extra voordeel actief.'\n          : '20% extra voordeel wordt toegepast.';\n        $('.next').textContent = showConfirmed && state.discountCents\n          ? api.formatMoney(state.discountCents, state.currency || 'EUR') + ' extra voordeel op deelnemende producten.'\n          : 'Checkout past het extra setvoordeel automatisch toe.';\n      }\n      $('.track').setAttribute('aria-valuetext', count + ' deelnemende producten');\n    }\n    connectedCallback() {\n      if (this.closest('.tl-staffel--compact')) this.setAttribute('compact', '');\n      if (window.TitanoreTier) {\n        this.setState({ status: 'confirmed', eligibleQuantity: 0, actualPercent: 0, discountCents: 0, currency: 'EUR' });\n      }\n    }\n  }\n  customElements.define('titanore-tier-meter', TitanoreTierMeter);\n})();\n"],
  "mappings": "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",
  "names": []
}
