{
  "version": 3,
  "sources": ["/cdn/shop/t/76/assets/search-recommendations.js?cb=20260821a"],
  "sourcesContent": ["/**\r\n * Search Recommendations \u2014 Initial state when search modal opens\r\n * Data sources:\r\n * - Recently viewed: localStorage (trdst_search_recent_products)\r\n * - Popular search terms: GA4 BigQuery \u2192 Shopify metafields (server-rendered in Liquid)\r\n * - Most viewed products: GA4 BigQuery \u2192 Shopify metafields (server-rendered in Liquid)\r\n */\r\n(function () {\r\n  'use strict';\r\n\r\n  var RECENT_KEY = 'trdst_search_recent_products';\r\n  var SEARCH_TERMS_KEY = 'trdst_search_terms';\r\n\r\n  function log() {\r\n    console.log.apply(console, ['[TRDST Search]'].concat(Array.prototype.slice.call(arguments)));\r\n  }\r\n\r\n  function formatPrice(cents) {\r\n    var num = typeof cents === 'string' ? parseFloat(cents) : cents;\r\n    if (isNaN(num) || num === 0) return '';\r\n    var krw = Math.round(num / 100);\r\n    return new Intl.NumberFormat('ko-KR').format(krw) + '\\uC6D0';\r\n  }\r\n\r\n  function escapeHTML(str) {\r\n    var div = document.createElement('div');\r\n    div.textContent = str || '';\r\n    return div.innerHTML;\r\n  }\r\n\r\n  function productCardHTML(p) {\r\n    var url = p.url || '/products/' + p.handle;\r\n    var imgSrc = p.image || '';\r\n    var vendor = escapeHTML(p.vendor);\r\n    var title = escapeHTML(p.title);\r\n    var price = p.price ? formatPrice(p.price) : '';\r\n\r\n    return '<a href=\"' + url + '\" class=\"search-reco__product link link--text\">' +\r\n      '<div class=\"search-reco__product-image-wrap\">' +\r\n        (imgSrc ? '<img class=\"search-reco__product-image\" src=\"' + imgSrc + '\" alt=\"' + title + '\" loading=\"lazy\">' : '') +\r\n      '</div>' +\r\n      (vendor ? '<span class=\"search-reco__product-vendor\">' + vendor + '</span>' : '') +\r\n      '<p class=\"search-reco__product-title\">' + title + '</p>' +\r\n      (price ? '<span class=\"search-reco__product-price\">' + price + '</span>' : '') +\r\n    '</a>';\r\n  }\r\n\r\n  // ====== Recently Viewed ======\r\n  function renderRecentlyViewed() {\r\n    var section = document.getElementById('search-reco-recent');\r\n    var list = document.getElementById('search-reco-recent-list');\r\n    if (!section || !list) return;\r\n\r\n    try {\r\n      var data = localStorage.getItem(RECENT_KEY);\r\n      var products = data ? JSON.parse(data) : [];\r\n\r\n      if (!products.length) {\r\n        section.style.display = 'none';\r\n        return;\r\n      }\r\n\r\n      list.innerHTML = products.slice(0, 4).map(function(p) {\r\n        return productCardHTML(p);\r\n      }).join('');\r\n      section.style.display = 'block';\r\n    } catch (e) {\r\n      section.style.display = 'none';\r\n    }\r\n  }\r\n\r\n  // ====== Search Term Tracking ======\r\n  function trackSearchTerm(term) {\r\n    if (!term || term.length < 2) return;\r\n    try {\r\n      var data = JSON.parse(localStorage.getItem(SEARCH_TERMS_KEY) || '{}');\r\n      var key = term.toLowerCase().trim();\r\n      if (!data[key]) data[key] = { term: term, count: 0 };\r\n      data[key].count++;\r\n      data[key].lastSearched = Date.now();\r\n      localStorage.setItem(SEARCH_TERMS_KEY, JSON.stringify(data));\r\n    } catch (e) { /* ignore */ }\r\n  }\r\n\r\n  // ====== Keyword Pill Click Handlers ======\r\n  function setupKeywordClicks() {\r\n    var pills = document.querySelectorAll('.search-reco__keyword-pill');\r\n    pills.forEach(function (pill) {\r\n      pill.addEventListener('click', function (e) {\r\n        e.preventDefault();\r\n        var term = pill.getAttribute('data-search-term');\r\n        if (!term) return;\r\n\r\n        trackSearchTerm(term);\r\n\r\n        var searchEl = pill.closest('predictive-search');\r\n        var input = searchEl\r\n          ? searchEl.querySelector('input[type=\"search\"]')\r\n          : document.querySelector('.search-modal input[type=\"search\"]');\r\n\r\n        if (input) {\r\n          input.value = term;\r\n          input.dispatchEvent(new Event('input', { bubbles: true }));\r\n          input.focus();\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  // ====== Search form submit tracking ======\r\n  function setupSearchTracking() {\r\n    document.addEventListener('submit', function(e) {\r\n      var form = e.target;\r\n      if (form.getAttribute('role') === 'search' || (form.action && form.action.indexOf('/search') !== -1)) {\r\n        var input = form.querySelector('input[name=\"q\"]');\r\n        if (input && input.value.trim()) {\r\n          trackSearchTerm(input.value.trim());\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  // ====== Public API ======\r\n  window.SearchRecommendations = {\r\n    show: function () {\r\n      var el = document.getElementById('search-recommendations');\r\n      if (!el) return;\r\n\r\n      el.style.display = 'block';\r\n      renderRecentlyViewed();\r\n      setupKeywordClicks();\r\n    },\r\n\r\n    hide: function () {\r\n      var el = document.getElementById('search-recommendations');\r\n      if (el) el.style.display = 'none';\r\n    },\r\n\r\n    isVisible: function () {\r\n      var el = document.getElementById('search-recommendations');\r\n      return el && el.style.display !== 'none';\r\n    },\r\n\r\n    trackSearch: trackSearchTerm\r\n  };\r\n\r\n  setupSearchTracking();\r\n  log('Search recommendations module loaded (GA4 data)');\r\n})();\r\n"],
  "mappings": "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",
  "names": []
}
