{
  "version": 3,
  "sources": ["/cdn/shop/t/38/assets/cart-recommendation-ranking.js?nc=9987"],
  "sourcesContent": ["(function (root) {\n  const normalize = value => String(value || '').normalize('NFD').replace(/[\\u0300-\\u036f]/g, '').toLowerCase();\n  function relevance(product, cart) {\n    if (product.recommendation_intent === 'complementary') return 3;\n    const context = normalize((cart.items || []).map(item => item.product_title || item.title).join(' '));\n    const title = normalize(product.title);\n    const pairs = [\n      [/mascara|eyeliner|crayon.*yeux/, /demaquillant|demaquill|goupillon/],\n      [/palette|fard|poudre|fond de teint|bb creme|bronza/, /pinceau|eponge/],\n      [/pinceau|eponge/, /nettoyant.*pinceau|nettoyeur.*pinceau/],\n      [/rouge a levres|creme a levres|velours a levres/, /exfoliant.*levres|baume.*levres/]\n    ];\n    if (pairs.some(([source, complement]) => source.test(context) && complement.test(title))) return 2;\n    return product.recommendation_intent === 'related' ? 1 : 0;\n  }\n  function thresholdFit(product, cart, tiers) {\n    const price = Number(product.variants?.[0]?.price || 0);\n    const gifts = (cart.items || []).filter(item => item.properties?._source === 'gwp_free_product').reduce((sum, item) => sum + Number(item.original_line_price || 0), 0);\n    const before = Math.max(0, Number(cart.original_total_price || 0) - gifts);\n    const after = Number(cart.total_price || 0);\n    if (!before || !price) return { reaches: false, excess: Infinity };\n    const pending = tiers.filter(tier => tier.type !== 'gwp-tier-shipping' && tier.basis !== 'after' && Number(tier.threshold) > before).sort((a, b) => a.threshold - b.threshold);\n    const results = [];\n    if (pending.length) {\n      const remaining = pending[0].threshold - before;\n      if (price >= remaining) results.push(price - remaining);\n    }\n    const shipping = tiers.find(tier => tier.type === 'gwp-tier-shipping' && tier.threshold > after);\n    if (shipping) {\n      const discounts = tiers.filter(tier => tier.type === 'gwp-tier-discount');\n      const rates = discounts.map(tier => ({ ...tier, rate: /^\\s*(\\d+(?:[.,]\\d+)?)\\s*%\\s*$/.exec(tier.label || '') }));\n      const knownRates = rates.every(tier => tier.rate && Number(tier.rate[1].replace(',', '.')) < 100 && tier.basis !== 'after');\n      if (knownRates) {\n        const observedRate = Math.max(0, Math.min(1, 1 - after / before));\n        const futureRate = rates.filter(tier => tier.threshold <= before + price).reduce((max, tier) => Math.max(max, Number(tier.rate[1].replace(',', '.')) / 100), observedRate);\n        const projected = Math.min(after + Math.floor(price * (1 - observedRate)), Math.floor((before + price) * (1 - futureRate)));\n        if (projected >= shipping.threshold) results.push(projected - shipping.threshold);\n      }\n    }\n    return { reaches: results.length > 0, excess: results.length ? Math.min(...results) : Infinity };\n  }\n  function rank(products, cart, tiers) {\n    const inCart = new Set((cart.items || []).map(item => String(item.product_id)));\n    const unique = new Map();\n    for (const product of products) {\n      if (inCart.has(String(product.id)) || product.variants?.length !== 1 || !product.variants[0].available || product.requires_selling_plan) continue;\n      const prior = unique.get(String(product.id));\n      if (!prior || relevance(product, cart) > relevance(prior, cart)) unique.set(String(product.id), product);\n    }\n    return [...unique.values()].map((product, index) => ({ product, index, relevance: relevance(product, cart), fit: thresholdFit(product, cart, tiers) })).sort((a, b) => b.relevance - a.relevance || Number(b.fit.reaches) - Number(a.fit.reaches) || (a.fit.reaches ? a.fit.excess - b.fit.excess : 0) || a.index - b.index).map(entry => entry.product);\n  }\n  if (typeof module !== 'undefined' && module.exports) module.exports = { rank, thresholdFit, relevance };\n  else root.artistCartRecommendations = { rank, thresholdFit, relevance };\n})(typeof window !== 'undefined' ? window : this);\n"],
  "mappings": "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",
  "names": []
}
