{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/stemo-vat-display.js?stemo_vat=drawer2"],
  "sourcesContent": ["/**\n * STEMO: display-only inkl/exkl VAT toggle + first-visit popup.\n * Activates only when T-Selector has no taxConfig (e.g. DE shop).\n * Does NOT change Shopify checkout tax \u2014 display rewrite only.\n */\n(function () {\n  'use strict';\n\n  var COOKIE = 'stemo_vat_view';\n  var POPUP_COOKIE = 'stemo_vat_popup_seen';\n  var DAYS = 7;\n\n  var RATES = {\n    DE: 19, AT: 20, BE: 21, CH: 8.1, CZ: 21, FR: 20, IT: 22,\n    LU: 17, NL: 21, PL: 23, SK: 20, SE: 25, DK: 25, FI: 25.5, NO: 25\n  };\n\n  var PRICE_SEL =\n    '.price-list .sale-price, .price-list .compare-at-price, sale-price, compare-at-price, .vat-price, .omg-money-discount, .omg-money-origin, .omg-picker-price-discounted';\n\n  function tSelectorReady() {\n    try {\n      var tc = window.vatSwitcher && window.vatSwitcher.taxConfig;\n      return tc && typeof tc === 'object' && Object.keys(tc).length > 0;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  function country() {\n    try {\n      return (window.Shopify && Shopify.country) || 'DE';\n    } catch (e) {\n      return 'DE';\n    }\n  }\n\n  function useGermanCopy() {\n    var lang = ((window.Shopify && Shopify.locale) || 'de').slice(0, 2);\n    var cc = country();\n    return lang === 'de' || cc === 'DE' || cc === 'AT' || cc === 'CH';\n  }\n\n  function rate() {\n    var c = country();\n    return RATES[c] != null ? RATES[c] : 19;\n  }\n\n  function taxesIncluded() {\n    var el = document.getElementById('stemo-vat-display-config');\n    if (el && el.dataset.taxesIncluded === 'false') return false;\n    return true;\n  }\n\n  function readCookie(name) {\n    var m = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n    return m ? decodeURIComponent(m[1]) : null;\n  }\n\n  function writeCookie(name, val) {\n    var max = DAYS * 24 * 60 * 60;\n    document.cookie =\n      name + '=' + encodeURIComponent(val) + '; path=/; max-age=' + max + '; SameSite=Lax';\n  }\n\n  function parseMoney(text) {\n    if (!text) return null;\n    var cleaned = String(text).replace(/[^\\d,.\\-]/g, '').trim();\n    if (!cleaned) return null;\n    if (cleaned.indexOf(',') >= 0 && cleaned.lastIndexOf(',') > cleaned.lastIndexOf('.')) {\n      cleaned = cleaned.replace(/\\./g, '').replace(',', '.');\n    } else {\n      cleaned = cleaned.replace(/,/g, '');\n    }\n    var n = parseFloat(cleaned);\n    return isNaN(n) ? null : n;\n  }\n\n  function formatMoney(amount) {\n    var locale = (window.Shopify && Shopify.locale) || 'de';\n    var currency = (window.Shopify && Shopify.currency && Shopify.currency.active) || 'EUR';\n    try {\n      return new Intl.NumberFormat(locale, {\n        style: 'currency',\n        currency: currency,\n        minimumFractionDigits: 2,\n        maximumFractionDigits: 2\n      }).format(amount);\n    } catch (e) {\n      return amount.toFixed(2).replace('.', ',') + ' \u20AC';\n    }\n  }\n\n  function labels() {\n    var de = useGermanCopy();\n    return {\n      btnExcl: de ? 'exkl. MwSt' : 'excl. VAT',\n      btnIncl: de ? 'inkl. MwSt' : 'incl. VAT',\n      title: de ? 'Willkommen bei STEMO' : 'Welcome to STEMO',\n      sub: de\n        ? 'Wie m\u00F6chten Sie die Preise sehen? (MwSt wird in Deutschland an der Kasse berechnet.)'\n        : 'How would you like to see prices? (VAT is charged at checkout in Germany.)',\n      business: de ? 'Unternehmen' : 'Business',\n      businessHelper: de ? 'Preise exkl. MwSt' : 'Prices excl. VAT',\n      private: de ? 'Privat' : 'Private',\n      privateHelper: de ? 'Preise inkl. MwSt' : 'Prices incl. VAT'\n    };\n  }\n\n  function toDisplay(catalogAmount, mode) {\n    var r = rate() / 100;\n    var included = taxesIncluded();\n    if (included) {\n      return mode === 'excl' ? catalogAmount / (1 + r) : catalogAmount;\n    }\n    return mode === 'incl' ? catalogAmount * (1 + r) : catalogAmount;\n  }\n\n  function ensureCatalog(el) {\n    if (el.dataset.stemoCatalog) return parseFloat(el.dataset.stemoCatalog);\n    var n = parseMoney(el.textContent);\n    if (n == null) return null;\n    el.dataset.stemoCatalog = String(n);\n    return n;\n  }\n\n  function rewritePrices(mode) {\n    document.querySelectorAll(PRICE_SEL).forEach(function (el) {\n      if (el.closest && el.closest('.stemo-vat-display, .stemo-vat-popup')) return;\n      var catalog = ensureCatalog(el);\n      if (catalog == null) return;\n      el.textContent = formatMoney(toDisplay(catalog, mode));\n    });\n  }\n\n  function buildFloating(mode) {\n    var anchor = document.querySelector('.stemo-vat-floating-anchor');\n    if (!anchor) return;\n    if (anchor.querySelector('.vat-switcher, .ts-switcher, [class*=\"t-selector\"]')) return;\n\n    var L = labels();\n    var current = mode === 'incl' ? L.btnIncl : L.btnExcl;\n    var wasOpen = anchor.classList.contains('is-open');\n\n    anchor.innerHTML = '';\n    anchor.classList.add('stemo-vat-display');\n    anchor.classList.toggle('is-open', wasOpen);\n\n    var drawer = document.createElement('div');\n    drawer.className = 'stemo-vat-drawer';\n    drawer.innerHTML =\n      '<button type=\"button\" class=\"stemo-vat-drawer__tab\" aria-expanded=\"' +\n      wasOpen +\n      '\" aria-controls=\"stemo-vat-drawer-panel\">' +\n      '<span class=\"stemo-vat-drawer__tab-label\">' +\n      current +\n      '</span>' +\n      '<span class=\"stemo-vat-drawer__chevron\" aria-hidden=\"true\"></span>' +\n      '</button>' +\n      '<div id=\"stemo-vat-drawer-panel\" class=\"stemo-vat-drawer__panel\" role=\"group\" hidden>' +\n      '<button type=\"button\" class=\"stemo-vat-display__btn\" data-mode=\"excl\" aria-pressed=\"' +\n      (mode === 'excl') +\n      '\">' +\n      L.btnExcl +\n      '</button>' +\n      '<button type=\"button\" class=\"stemo-vat-display__btn\" data-mode=\"incl\" aria-pressed=\"' +\n      (mode === 'incl') +\n      '\">' +\n      L.btnIncl +\n      '</button>' +\n      '</div>';\n\n    var tab = drawer.querySelector('.stemo-vat-drawer__tab');\n    var panel = drawer.querySelector('.stemo-vat-drawer__panel');\n\n    function setOpen(open) {\n      anchor.classList.toggle('is-open', open);\n      tab.setAttribute('aria-expanded', open ? 'true' : 'false');\n      if (open) panel.removeAttribute('hidden');\n      else panel.setAttribute('hidden', '');\n    }\n\n    tab.addEventListener('click', function (e) {\n      e.stopPropagation();\n      setOpen(!anchor.classList.contains('is-open'));\n    });\n\n    drawer.querySelectorAll('.stemo-vat-display__btn').forEach(function (btn) {\n      btn.addEventListener('click', function (e) {\n        e.stopPropagation();\n        choose(btn.getAttribute('data-mode'), false);\n        setOpen(false);\n      });\n    });\n\n    if (!window.__stemoVatDrawerDocBound) {\n      window.__stemoVatDrawerDocBound = true;\n      document.addEventListener('click', function () {\n        var a = document.querySelector('.stemo-vat-floating-anchor.stemo-vat-display');\n        if (a && a.classList.contains('is-open')) {\n          a.classList.remove('is-open');\n          var t = a.querySelector('.stemo-vat-drawer__tab');\n          var p = a.querySelector('.stemo-vat-drawer__panel');\n          if (t) t.setAttribute('aria-expanded', 'false');\n          if (p) p.setAttribute('hidden', '');\n        }\n      });\n    }\n\n    anchor.appendChild(drawer);\n    setOpen(wasOpen);\n  }\n\n  function closePopup() {\n    var el = document.getElementById('stemo-vat-popup');\n    if (el) el.remove();\n    document.documentElement.classList.remove('stemo-vat-popup-open');\n  }\n\n  function showPopup() {\n    if (document.getElementById('stemo-vat-popup')) return;\n    var L = labels();\n    var overlay = document.createElement('div');\n    overlay.id = 'stemo-vat-popup';\n    overlay.className = 'stemo-vat-popup';\n    overlay.setAttribute('role', 'dialog');\n    overlay.setAttribute('aria-modal', 'true');\n    overlay.innerHTML =\n      '<div class=\"stemo-vat-popup__card\">' +\n      '<h2 class=\"stemo-vat-popup__title\">' +\n      L.title +\n      '</h2>' +\n      '<p class=\"stemo-vat-popup__sub\">' +\n      L.sub +\n      '</p>' +\n      '<div class=\"stemo-vat-popup__actions\">' +\n      '<button type=\"button\" class=\"stemo-vat-popup__choice\" data-mode=\"excl\">' +\n      '<span class=\"stemo-vat-popup__choice-label\">' +\n      L.business +\n      '</span>' +\n      '<span class=\"stemo-vat-popup__choice-helper\">' +\n      L.businessHelper +\n      '</span>' +\n      '</button>' +\n      '<button type=\"button\" class=\"stemo-vat-popup__choice\" data-mode=\"incl\">' +\n      '<span class=\"stemo-vat-popup__choice-label\">' +\n      L.private +\n      '</span>' +\n      '<span class=\"stemo-vat-popup__choice-helper\">' +\n      L.privateHelper +\n      '</span>' +\n      '</button>' +\n      '</div>' +\n      '</div>';\n\n    overlay.querySelectorAll('[data-mode]').forEach(function (btn) {\n      btn.addEventListener('click', function () {\n        choose(btn.getAttribute('data-mode'), true);\n      });\n    });\n\n    document.body.appendChild(overlay);\n    document.documentElement.classList.add('stemo-vat-popup-open');\n  }\n\n  function choose(mode, fromPopup) {\n    writeCookie(COOKIE, mode);\n    if (fromPopup) writeCookie(POPUP_COOKIE, '1');\n    closePopup();\n    buildFloating(mode);\n    rewritePrices(mode);\n  }\n\n  function apply(mode) {\n    buildFloating(mode);\n    rewritePrices(mode);\n  }\n\n  function start() {\n    if (tSelectorReady()) return;\n\n    var saved = readCookie(COOKIE);\n    var seen = readCookie(POPUP_COOKIE);\n    var mode = saved === 'incl' || saved === 'excl' ? saved : 'excl';\n\n    apply(mode);\n\n    // First visit, cleared cookies, or ?vat_popup=1 for testing\n    var forcePopup = /(?:\\?|&)vat_popup=1(?:&|$)/.test(location.search);\n    if (!seen || forcePopup) {\n      showPopup();\n    }\n\n    var obs = new MutationObserver(function () {\n      clearTimeout(obs._t);\n      obs._t = setTimeout(function () {\n        if (tSelectorReady()) return;\n        rewritePrices(readCookie(COOKIE) || mode);\n      }, 80);\n    });\n    obs.observe(document.body, { childList: true, subtree: true });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function () {\n      setTimeout(start, 350);\n    });\n  } else {\n    setTimeout(start, 350);\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
