{
  "version": 3,
  "sources": ["/cdn/shop/t/5/assets/lurve-visual-currency.js?lurve_currency_version=8"],
  "sourcesContent": ["(() => {\n  const CURRENCY_BY_COUNTRY = {\n    AD: 'EUR', AL: 'ALL', AT: 'EUR', AU: 'AUD', AX: 'EUR', BA: 'BAM', BE: 'EUR', BG: 'BGN', BR: 'BRL',\n    BY: 'BYN', CA: 'CAD', CH: 'CHF', CY: 'EUR', CZ: 'CZK', DE: 'EUR', DK: 'DKK', EE: 'EUR', ES: 'EUR',\n    FI: 'EUR', FO: 'DKK', FR: 'EUR', GB: 'GBP', GG: 'GBP', GI: 'GIP', GR: 'EUR', HR: 'EUR', HU: 'HUF',\n    IE: 'EUR', IM: 'GBP', IS: 'ISK', IT: 'EUR', JE: 'GBP', LI: 'CHF', LT: 'EUR', LU: 'EUR', LV: 'EUR',\n    MC: 'EUR', MD: 'MDL', ME: 'EUR', MK: 'MKD', MT: 'EUR', NL: 'EUR', NO: 'NOK', PL: 'PLN', PT: 'EUR',\n    RO: 'RON', RS: 'RSD', RU: 'RUB', SE: 'SEK', SI: 'EUR', SJ: 'NOK', SK: 'EUR', SM: 'EUR', UA: 'UAH',\n    US: 'USD', VA: 'EUR', XK: 'EUR'\n  };\n  const CURRENCY_SYMBOLS = {\n    ALL: 'L', AUD: '$', BAM: 'KM', BGN: '\u043B\u0432', BRL: 'R$', BYN: 'Br', CAD: '$', CHF: 'CHF', CZK: 'K\u010D',\n    DKK: 'kr.', EUR: '\u20AC', GBP: '\u00A3', GIP: '\u00A3', HUF: 'Ft', ISK: 'kr', MDL: 'L', MKD: '\u0434\u0435\u043D', NOK: 'kr',\n    PLN: 'z\u0142', RON: 'Lei', RSD: '\u0420\u0421\u0414', RUB: '\u20BD', SEK: 'kr', UAH: '\u20B4', USD: '$'\n  };\n  const FALLBACK_RATES = {\n    ALL: 83.5, AUD: 1.43, BAM: 1.68, BGN: 1.68, BRL: 5.42, BYN: 3.28, CAD: 1.38, CHF: 0.80,\n    CZK: 20.9, DKK: 6.42, EUR: 0.86, GBP: 0.74, GIP: 0.74, HUF: 337, ISK: 122, MDL: 16.9,\n    MKD: 53, NOK: 10.1, PLN: 3.65, RON: 4.37, RSD: 101, RUB: 81, SEK: 9.42, UAH: 41.3\n  };\n  const RATES_CACHE_KEY = 'lurve-usd-rates-v2';\n  const PRICE_AREAS = [\n    '.lurve-announcement-marquee',\n    '.lurve-service-strip',\n    '.lurve-shipping-timeline',\n    'product-price',\n    '.sticky-add-to-cart__price',\n    '.cart-items__wrapper',\n    '.cart-drawer__summary',\n    '.cart-totals',\n    '.cart__checkout-total',\n    '.lurve-cart-progress',\n    '.lurve-cart-recommendations',\n    '.lurve-cross-sell',\n    '.quick-add-modal__content',\n    '.volume-pricing',\n    '.price-filter',\n    '.facets__price'\n  ].join(',');\n  const USD_BEFORE = /(?:US\\$|USD\\s+|(?<![A-Za-z])\\$)\\s*([0-9][0-9,]*(?:\\.[0-9]+)?)(?:\\s*USD)?/g;\n  const USD_AFTER = /([0-9][0-9,]*(?:\\.[0-9]+)?)\\s*USD/g;\n\n  let currency = 'USD';\n  let rate = 1;\n  let scheduled = false;\n  const convertedNodes = new WeakMap();\n\n  function readCache(key, maxAge) {\n    try {\n      const cached = JSON.parse(localStorage.getItem(key) || 'null');\n      return cached?.savedAt && Date.now() - cached.savedAt < maxAge ? cached.value : null;\n    } catch (_) {\n      return null;\n    }\n  }\n\n  function writeCache(key, value) {\n    try {\n      localStorage.setItem(key, JSON.stringify({ savedAt: Date.now(), value }));\n    } catch (_) {}\n  }\n\n  function currencyForCountry(country) {\n    return CURRENCY_BY_COUNTRY[country] || 'USD';\n  }\n\n  function updateCurrentCurrencyLabels(root = document) {\n    if (root instanceof Element && root.matches('.mobile-localization--country .currency-code')) {\n      root.textContent = currency;\n    }\n    root.querySelectorAll?.('.mobile-localization--country .currency-code').forEach(element => {\n      element.textContent = currency;\n    });\n  }\n\n  async function exchangeRate(targetCurrency) {\n    const cachedRates = readCache(RATES_CACHE_KEY, 86400000);\n    if (cachedRates?.[targetCurrency]) return cachedRates[targetCurrency];\n\n    try {\n      const response = await fetch('https://open.er-api.com/v6/latest/USD');\n      const data = response.ok ? await response.json() : null;\n      if (data?.rates?.[targetCurrency]) {\n        writeCache(RATES_CACHE_KEY, data.rates);\n        return data.rates[targetCurrency];\n      }\n    } catch (_) {}\n    return FALLBACK_RATES[targetCurrency] || 1;\n  }\n\n  function parseUsd(value) {\n    return Number(value.replace(/,/g, ''));\n  }\n\n  function formatUsdAmount(value) {\n    const formatted = new Intl.NumberFormat(document.documentElement.lang || 'en', {\n      style: 'currency',\n      currency,\n      currencyDisplay: 'narrowSymbol',\n      minimumFractionDigits: 2,\n      maximumFractionDigits: 2\n    }).format(value * rate);\n    return `${formatted} ${currency}`;\n  }\n\n  function convertText(text) {\n    if (/\\b(?:CAD|EUR|GBP)\\b/.test(text)) return text;\n    let converted = text.replace(USD_BEFORE, (match, amount) => {\n      const value = parseUsd(amount);\n      return Number.isFinite(value) && value < 10000000 ? formatUsdAmount(value) : match;\n    });\n    converted = converted.replace(USD_AFTER, (match, amount) => {\n      const value = parseUsd(amount);\n      return Number.isFinite(value) && value < 10000000 ? formatUsdAmount(value) : match;\n    });\n    return converted;\n  }\n\n  function convertArea(area) {\n    const walker = document.createTreeWalker(area, NodeFilter.SHOW_TEXT);\n    const nodes = [];\n    while (walker.nextNode()) nodes.push(walker.currentNode);\n    for (const node of nodes) {\n      if (node.parentElement?.closest('script, style, template')) continue;\n      const current = node.nodeValue || '';\n      if (convertedNodes.get(node) === current) continue;\n      const next = convertText(current);\n      if (next !== current) {\n        convertedNodes.set(node, next);\n        node.nodeValue = next;\n      } else {\n        convertedNodes.delete(node);\n      }\n    }\n  }\n\n  function convertRoot(root = document) {\n    const areas = [];\n    if (root instanceof Element) {\n      const closest = root.closest(PRICE_AREAS);\n      if (closest) areas.push(closest);\n      if (root.matches(PRICE_AREAS)) areas.push(root);\n    }\n    if (root.querySelectorAll) areas.push(...root.querySelectorAll(PRICE_AREAS));\n    for (const area of new Set(areas)) convertArea(area);\n\n    document.querySelectorAll('[data-testid=\"localization-currency-code\"]').forEach(element => {\n      element.textContent = currency;\n    });\n    updateCurrentCurrencyLabels();\n    document.documentElement.dataset.displayCurrency = currency;\n  }\n\n  function addCheckoutNotice() {\n    document.querySelectorAll('.cart-drawer__summary, #MainContent .cart__ctas').forEach(container => {\n      if (container.querySelector('.lurve-currency-notice')) return;\n      const note = document.createElement('p');\n      note.className = 'lurve-currency-notice';\n      note.textContent = `Prices shown in ${currency}. Checkout is processed in USD.`;\n      container.prepend(note);\n    });\n  }\n\n  function updateLocalizationLabels() {\n    document.querySelectorAll('.localization-form__list-item[data-value]').forEach(item => {\n      const country = item.dataset.value?.toUpperCase();\n      const localCurrency = currencyForCountry(country);\n      const countryLabel = item.querySelector('.country');\n      if (!countryLabel) return;\n      const countryName = countryLabel.dataset.lurveCountryName || countryLabel.textContent.trim();\n      countryLabel.dataset.lurveCountryName = countryName;\n      const label = `${countryName} (${localCurrency} ${CURRENCY_SYMBOLS[localCurrency] || localCurrency})`;\n      countryLabel.textContent = label;\n      item.setAttribute('aria-label', label);\n    });\n  }\n\n  function render(root = document) {\n    if (currency === 'USD') return;\n    convertRoot(root);\n    addCheckoutNotice();\n  }\n\n  function schedule() {\n    if (scheduled) return;\n    scheduled = true;\n    requestAnimationFrame(() => {\n      scheduled = false;\n      render(document);\n    });\n  }\n\n  function observeDynamicPrices() {\n    new MutationObserver(mutations => {\n      for (const mutation of mutations) {\n        const parent = mutation.target instanceof Element ? mutation.target : mutation.target.parentElement;\n        const mobileCurrencyLabel = parent?.closest('.mobile-localization--country .currency-code');\n        if (mobileCurrencyLabel && mobileCurrencyLabel.textContent.trim() !== currency) {\n          mobileCurrencyLabel.textContent = currency;\n        }\n        if (parent?.closest(PRICE_AREAS)) {\n          schedule();\n          return;\n        }\n        for (const node of mutation.addedNodes) {\n          if (node instanceof Element) updateCurrentCurrencyLabels(node);\n          if (node instanceof Element && (node.matches('.localization-form__list-item[data-value]') || node.querySelector('.localization-form__list-item[data-value]'))) {\n            updateLocalizationLabels();\n          }\n          if (node instanceof Element && (node.matches(PRICE_AREAS) || node.querySelector(PRICE_AREAS))) {\n            schedule();\n            return;\n          }\n        }\n      }\n    }).observe(document.body, { childList: true, subtree: true, characterData: true });\n  }\n\n  async function initialize() {\n    const country = String(window.Shopify?.country || 'US').toUpperCase();\n    currency = currencyForCountry(country);\n    updateCurrentCurrencyLabels();\n    updateLocalizationLabels();\n    if (currency === 'USD') {\n      observeDynamicPrices();\n      return;\n    }\n    rate = await exchangeRate(currency);\n    render();\n    observeDynamicPrices();\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initialize, { once: true });\n  else initialize();\n})();\n"],
  "mappings": "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",
  "names": []
}
