{
  "version": 3,
  "sources": ["/cdn/shop/t/46/assets/matchy-related-fallback.js?matchy_v=20260521"],
  "sourcesContent": ["(() => {\n  const version = '20260906';\n\n  const escapeHtml = (value) =>\n    String(value || '').replace(/[&<>\"']/g, (char) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#039;' }[char]));\n\n  const addStyles = () => {\n    if (document.getElementById('matchy-related-fallback-style')) return;\n\n    const style = document.createElement('style');\n    style.id = 'matchy-related-fallback-style';\n    style.textContent = `\n      .matchy-related-fallback-grid {\n        display: grid;\n        grid-template-columns: repeat(4, minmax(0, 1fr));\n        gap: var(--grid-desktop-horizontal-spacing, 24px);\n        list-style: none;\n        margin: 0;\n        padding: 0;\n      }\n\n      .matchy-related-fallback__card {\n        display: block;\n        color: rgb(var(--color-foreground));\n        text-align: center;\n        text-decoration: none;\n      }\n\n      .matchy-related-fallback__card img {\n        display: block;\n        width: 100%;\n        aspect-ratio: 1 / 1;\n        object-fit: cover;\n        background: #fbf5f6;\n      }\n\n      .matchy-related-fallback__card span {\n        display: block;\n        margin-top: 1.2rem;\n        font-size: 1.45rem;\n        line-height: 1.35;\n      }\n\n      .matchy-related-fallback__card small {\n        display: block;\n        margin-top: 0.4rem;\n        color: rgba(var(--color-foreground), 0.7);\n        font-size: 1.3rem;\n      }\n\n      @media screen and (max-width: 749px) {\n        .matchy-related-fallback-grid {\n          grid-template-columns: repeat(2, minmax(0, 1fr));\n          gap: var(--grid-mobile-horizontal-spacing, 12px);\n        }\n      }\n    `;\n    document.head.appendChild(style);\n  };\n\n  const formatPrice = (price) => {\n    const numericPrice = Number(price);\n    const currency = window.Shopify?.currency?.active || 'AUD';\n\n    if (!Number.isFinite(numericPrice)) return '';\n\n    return `${numericPrice.toLocaleString(undefined, {\n      style: 'currency',\n      currency,\n      minimumFractionDigits: 2,\n      maximumFractionDigits: 2,\n    })} ${currency}`;\n  };\n\n  const ensurePanel = (section) => {\n    const tabs = section.querySelector('.matchy-related-tabs');\n    let panel = section.querySelector('[data-matchy-related-panel=\"recommendations\"]');\n\n    if (!panel && tabs) {\n      panel = document.createElement('div');\n      panel.className = 'matchy-related-panel is-active';\n      panel.dataset.matchyRelatedPanel = 'recommendations';\n      panel.innerHTML = '<ul class=\"matchy-related-fallback-grid product-grid\" role=\"list\" data-matchy-related-fallback></ul>';\n      tabs.insertAdjacentElement('afterend', panel);\n    }\n\n    return panel;\n  };\n\n  const renderFallback = (section) => {\n    if (!['loaded', 'error'].includes(section.dataset.matchyRecommendationsState)) return;\n    const panel = ensurePanel(section);\n\n    if (!panel || panel.querySelector('.grid__item, .matchy-related-fallback__item') || section.dataset.matchyRelatedFallbackLoading === 'true') {\n      return;\n    }\n\n    const list = panel.querySelector('[data-matchy-related-fallback]') || panel.querySelector('ul');\n    const currentHandle = section.dataset.currentHandle;\n    if (!list) return;\n\n    addStyles();\n    section.dataset.matchyRelatedFallbackLoading = 'true';\n\n    fetch(`/products.json?limit=20&matchy_related=${version}`, { headers: { Accept: 'application/json' } })\n      .then((response) => (response.ok ? response.json() : null))\n      .then((data) => {\n        if (!section.isConnected || panel.querySelector('.grid__item')) return;\n        const products = (data?.products || [])\n          .filter((item) => item.handle && item.handle !== currentHandle)\n          .slice(0, Number(section.dataset.matchyCardTarget) || 16);\n\n        list.innerHTML = products\n          .map((item) => {\n            const image = item.images?.[0]?.src;\n            const price = formatPrice(item.variants?.[0]?.price);\n\n            return `\n              <li class=\"matchy-related-fallback__item\">\n                <a href=\"/products/${escapeHtml(item.handle)}\" class=\"matchy-related-fallback__card\">\n                  ${image ? `<img src=\"${escapeHtml(image)}\" alt=\"${escapeHtml(item.title)} press-on nails by Matchy Nails\" loading=\"lazy\">` : ''}\n                  <span>${escapeHtml(item.title)}</span>\n                  ${price ? `<small>${escapeHtml(price)}</small>` : ''}\n                </a>\n              </li>\n            `;\n          })\n          .join('');\n      })\n      .catch(() => {})\n      .finally(() => {\n        section.dataset.matchyRelatedFallbackLoading = 'false';\n      });\n  };\n\n  const initSection = (section) => {\n    if (!section || section.dataset.matchyRelatedFallbackVersion === version) return;\n\n    section.dataset.matchyRelatedFallbackVersion = version;\n    renderFallback(section);\n    section.addEventListener('recommendations:loaded', () => renderFallback(section));\n    section.addEventListener('recommendations:error', () => renderFallback(section));\n  };\n\n  const init = () => {\n    document.querySelectorAll('product-recommendations.related-products').forEach(initSection);\n  };\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n\n})();\n"],
  "mappings": "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",
  "names": []
}
