{
  "version": 3,
  "sources": ["/cdn/shop/t/22/assets/townwine-collector-stats.js?rev=20260523a"],
  "sourcesContent": ["(function () {\n  var PRODUCT_WIDGET_SELECTOR = '[data-townwine-collector-stats]';\n  var SUMMARY_WIDGET_SELECTOR = '[data-townwine-collector-summary]';\n  var DEFAULT_PROXY_BASE = '/apps/townwine-follow';\n  var followRefreshTimer = null;\n  var snapshotRequestCache = new Map();\n  var SNAPSHOT_RETRY_LIMIT = 2;\n  var PENDING_FOLLOW_EVENT_TTL_MS = 5000;\n  var pendingOptimisticFollowEvents = new Map();\n\n  function normalizeProxyBase(value) {\n    var trimmedValue = String(value || '').trim();\n\n    if (!trimmedValue) {\n      return DEFAULT_PROXY_BASE;\n    }\n\n    return trimmedValue.endsWith('/') ? trimmedValue.slice(0, -1) : trimmedValue;\n  }\n\n  function normalizeHandle(value) {\n    return String(value || '')\n      .trim()\n      .replace(/^@+/, '')\n      .replace(/\\/+$/, '')\n      .toLowerCase();\n  }\n\n  function getRequestShop() {\n    var shop = '';\n\n    if (window.Shopify && typeof window.Shopify.shop === 'string') {\n      shop = window.Shopify.shop;\n    }\n\n    return String(shop || '').trim().toLowerCase();\n  }\n\n  function getProductWidgets(root) {\n    return Array.prototype.slice.call((root || document).querySelectorAll(PRODUCT_WIDGET_SELECTOR));\n  }\n\n  function getSummaryWidgets(root) {\n    return Array.prototype.slice.call((root || document).querySelectorAll(SUMMARY_WIDGET_SELECTOR));\n  }\n\n  function getSummaryWidgetMatchHandles(widget) {\n    var aliases = [];\n    var extraHandles = String(widget.dataset.collectorMatchHandles || '')\n      .split(',')\n      .map(normalizeHandle)\n      .filter(Boolean);\n    var primaryHandle = normalizeHandle(widget.dataset.influencerHandle || '');\n\n    [primaryHandle]\n      .concat(extraHandles)\n      .forEach(function (value) {\n        if (value && aliases.indexOf(value) === -1) {\n          aliases.push(value);\n        }\n      });\n\n    return aliases;\n  }\n\n  function collectGroups(root) {\n    var groups = new Map();\n\n    getProductWidgets(root || document).forEach(function (widget) {\n      if (!(widget instanceof HTMLElement)) {\n        return;\n      }\n\n      var productId = String(widget.dataset.productId || '').trim();\n\n      if (!productId) {\n        return;\n      }\n\n      var proxyBase = normalizeProxyBase(widget.dataset.proxyBase);\n      var group = groups.get(proxyBase) || {\n        productWidgets: [],\n        summaryWidgets: [],\n        productIds: new Set(),\n        handles: new Set(),\n      };\n\n      group.productWidgets.push(widget);\n      group.productIds.add(productId);\n      groups.set(proxyBase, group);\n    });\n\n    getSummaryWidgets(root || document).forEach(function (widget) {\n      if (!(widget instanceof HTMLElement)) {\n        return;\n      }\n\n      var handles = getSummaryWidgetMatchHandles(widget);\n\n      if (!handles.length) {\n        return;\n      }\n\n      var proxyBase = normalizeProxyBase(widget.dataset.proxyBase);\n      var group = groups.get(proxyBase) || {\n        productWidgets: [],\n        summaryWidgets: [],\n        productIds: new Set(),\n        handles: new Set(),\n      };\n\n      group.summaryWidgets.push(widget);\n      handles.forEach(function (handle) {\n        group.handles.add(handle);\n      });\n      groups.set(proxyBase, group);\n    });\n\n    return groups;\n  }\n\n  function setText(scope, selector, value) {\n    scope.querySelectorAll(selector).forEach(function (element) {\n      if (element instanceof HTMLElement) {\n        element.textContent = value;\n      }\n    });\n  }\n\n  function formatInteger(value) {\n    var safeValue = Number(value);\n\n    if (!Number.isFinite(safeValue)) {\n      return '0';\n    }\n\n    return new Intl.NumberFormat('ko-KR').format(Math.max(0, Math.trunc(safeValue)));\n  }\n\n  function toCount(value) {\n    var parsedValue = Number(String(value == null ? '' : value).trim());\n\n    if (!Number.isFinite(parsedValue)) {\n      return null;\n    }\n\n    return Math.max(0, Math.trunc(parsedValue));\n  }\n\n  function toCountFromLabel(value) {\n    var rawValue = String(value == null ? '' : value).trim().toLowerCase();\n\n    if (!rawValue) {\n      return null;\n    }\n\n    var compactMatch = rawValue.match(/(\\d+(?:\\.\\d+)?)\\s*k\\b/);\n    if (compactMatch) {\n      var compactValue = Number(compactMatch[1]);\n\n      if (Number.isFinite(compactValue)) {\n        return Math.max(0, Math.trunc(compactValue * 1000));\n      }\n    }\n\n    var digitMatches = rawValue.match(/\\d+/g);\n    if (!digitMatches || !digitMatches.length) {\n      return null;\n    }\n\n    var parsedValue = Number(digitMatches.join(''));\n\n    if (!Number.isFinite(parsedValue)) {\n      return null;\n    }\n\n    return Math.max(0, Math.trunc(parsedValue));\n  }\n\n  function formatFollowerCount(value) {\n    var safeValue = Number(value);\n\n    if (!Number.isFinite(safeValue)) {\n      return '0 \uD314\uB85C\uC6CC';\n    }\n\n    safeValue = Math.max(0, Math.trunc(safeValue));\n\n    if (safeValue >= 1000) {\n      return (safeValue / 1000).toFixed(1).replace(/\\.0$/, '') + 'k \uD314\uB85C\uC6CC';\n    }\n\n    return formatInteger(safeValue) + ' \uD314\uB85C\uC6CC';\n  }\n\n  function wait(milliseconds) {\n    return new Promise(function (resolve) {\n      window.setTimeout(resolve, milliseconds);\n    });\n  }\n\n  function getDealsLabel(widget, snapshot) {\n    if (!(widget instanceof HTMLElement) || !snapshot) {\n      return '\uB204\uC801 \uACF5\uAD6C 0\uD68C';\n    }\n\n    var dealsFormat = String(widget.dataset.dealsFormat || '').trim();\n\n    if (dealsFormat) {\n      return dealsFormat.replace('{count}', formatInteger(snapshot.dealCount || 0));\n    }\n\n    return snapshot.dealsLabel || '\uB204\uC801 \uACF5\uAD6C 0\uD68C';\n  }\n\n  function setLoadingState(widget) {\n    if (!(widget instanceof HTMLElement) || widget.dataset.statsReady === 'true') {\n      return;\n    }\n\n    setText(widget, '[data-collector-followers]', widget.dataset.loadingFollowersLabel || '\uC9D1\uACC4 \uC911');\n    setText(widget, '[data-collector-deals]', widget.dataset.loadingDealsLabel || '\uC9D1\uACC4 \uC911');\n  }\n\n  function applySnapshot(widget, snapshot) {\n    if (!(widget instanceof HTMLElement) || !snapshot) {\n      return;\n    }\n\n    widget.dataset.followerCount = String(snapshot.followerCount || 0);\n    widget.dataset.dealCount = String(snapshot.dealCount || 0);\n    widget.dataset.liveDealCount = String(snapshot.liveDealCount || 0);\n    widget.dataset.upcomingDealCount = String(snapshot.upcomingDealCount || 0);\n    widget.dataset.statsReady = 'true';\n\n    var collectorCard = widget.closest('[data-collector-card]');\n    if (collectorCard instanceof HTMLElement) {\n      collectorCard.dataset.followerCount = String(snapshot.followerCount || 0);\n      collectorCard.dataset.dealCount = String(snapshot.dealCount || 0);\n      collectorCard.dataset.liveDealCount = String(snapshot.liveDealCount || 0);\n      collectorCard.dataset.upcomingDealCount = String(snapshot.upcomingDealCount || 0);\n\n      setText(collectorCard, '[data-collector-live-deals]', formatInteger(snapshot.liveDealCount || 0));\n      setText(\n        collectorCard,\n        '[data-collector-upcoming-deals]',\n        formatInteger(snapshot.upcomingDealCount || 0),\n      );\n    }\n\n    setText(widget, '[data-collector-followers]', snapshot.followersLabel || '0 \uD314\uB85C\uC6CC');\n    setText(widget, '[data-collector-deals]', getDealsLabel(widget, snapshot));\n    setText(widget, '[data-collector-live-deals]', formatInteger(snapshot.liveDealCount || 0));\n    setText(widget, '[data-collector-upcoming-deals]', formatInteger(snapshot.upcomingDealCount || 0));\n  }\n\n  function buildSnapshotRequestKey(proxyBase, productIds, handles) {\n    return [\n      proxyBase,\n      getRequestShop(),\n      productIds.slice().sort().join(','),\n      handles.slice().sort().join(','),\n    ].join('::');\n  }\n\n  function requestSnapshots(url, attempt) {\n    return fetch(url, {\n      credentials: 'same-origin',\n      headers: {\n        Accept: 'application/json',\n      },\n    }).then(function (response) {\n      if (!response.ok) {\n        if (attempt < SNAPSHOT_RETRY_LIMIT) {\n          return wait(250 * (attempt + 1)).then(function () {\n            return requestSnapshots(url, attempt + 1);\n          });\n        }\n\n        throw new Error('COLLECTOR_STATS_REQUEST_FAILED');\n      }\n\n      return response.json();\n    });\n  }\n\n  function fetchSnapshots(proxyBase, productIds, handles) {\n    var url = new URL(proxyBase + '/collector-stats', window.location.origin);\n    var requestKey = buildSnapshotRequestKey(proxyBase, productIds, handles);\n    var requestShop = getRequestShop();\n\n    productIds.forEach(function (productId) {\n      url.searchParams.append('productId', productId);\n    });\n\n    handles.forEach(function (handle) {\n      url.searchParams.append('handle', handle);\n    });\n\n    if (requestShop) {\n      url.searchParams.set('shop', requestShop);\n    }\n\n    if (snapshotRequestCache.has(requestKey)) {\n      return snapshotRequestCache.get(requestKey);\n    }\n\n    var requestPromise = requestSnapshots(url.toString(), 0).finally(function () {\n      snapshotRequestCache.delete(requestKey);\n    });\n\n    snapshotRequestCache.set(requestKey, requestPromise);\n\n    return requestPromise;\n  }\n\n  function getEventMatchHandles(detail) {\n    var aliases = [];\n    var matchHandles = detail && detail.matchHandles;\n    var values = [];\n\n    if (Array.isArray(matchHandles)) {\n      values = matchHandles;\n    } else if (typeof matchHandles === 'string') {\n      values = matchHandles.split(',');\n    }\n\n    [detail && detail.influencerHandle]\n      .concat(values)\n      .map(normalizeHandle)\n      .filter(Boolean)\n      .forEach(function (value) {\n        if (aliases.indexOf(value) === -1) {\n          aliases.push(value);\n        }\n      });\n\n    return aliases;\n  }\n\n  function getFollowEventKey(detail) {\n    if (!detail) {\n      return '';\n    }\n\n    var handles = getEventMatchHandles(detail);\n    var primaryHandle = normalizeHandle((detail && detail.influencerHandle) || '');\n    var eventHandle = primaryHandle || (handles[0] || '');\n    var proxyBase = normalizeProxyBase((detail && detail.proxyBase) || DEFAULT_PROXY_BASE);\n    var followingState =\n      detail && typeof detail.following === 'boolean' ? String(detail.following) : '';\n\n    if (!eventHandle || !followingState) {\n      return '';\n    }\n\n    return [proxyBase, eventHandle, followingState].join('::');\n  }\n\n  function prunePendingOptimisticFollowEvents(now) {\n    pendingOptimisticFollowEvents.forEach(function (timestamp, key) {\n      if (now - timestamp > PENDING_FOLLOW_EVENT_TTL_MS) {\n        pendingOptimisticFollowEvents.delete(key);\n      }\n    });\n  }\n\n  function rememberPendingOptimisticFollowEvent(detail) {\n    var eventKey = getFollowEventKey(detail);\n\n    if (!eventKey) {\n      return;\n    }\n\n    var now = Date.now();\n    prunePendingOptimisticFollowEvents(now);\n    pendingOptimisticFollowEvents.set(eventKey, now);\n  }\n\n  function consumePendingOptimisticFollowEvent(detail) {\n    var eventKey = getFollowEventKey(detail);\n\n    if (!eventKey || !pendingOptimisticFollowEvents.has(eventKey)) {\n      return false;\n    }\n\n    var now = Date.now();\n    var timestamp = pendingOptimisticFollowEvents.get(eventKey) || 0;\n    pendingOptimisticFollowEvents.delete(eventKey);\n\n    return now - timestamp <= PENDING_FOLLOW_EVENT_TTL_MS;\n  }\n\n  function clearInversePendingOptimisticFollowEvent(detail) {\n    if (!detail || typeof detail.following !== 'boolean') {\n      return;\n    }\n\n    var eventKey = getFollowEventKey({\n      proxyBase: detail.proxyBase,\n      influencerHandle: detail.influencerHandle,\n      matchHandles: detail.matchHandles,\n      following: !detail.following,\n    });\n\n    if (eventKey) {\n      pendingOptimisticFollowEvents.delete(eventKey);\n    }\n  }\n\n  function getSnapshotScore(snapshot) {\n    if (!snapshot) {\n      return -1;\n    }\n\n    return (\n      Math.max(0, Number(snapshot.dealCount || 0)) * 1000000 +\n      Math.max(0, Number(snapshot.followerCount || 0))\n    );\n  }\n\n  function getPreferredSummarySnapshot(widget, snapshots) {\n    var handles = getSummaryWidgetMatchHandles(widget);\n    var bestSnapshot = null;\n    var bestScore = -1;\n\n    handles.forEach(function (handle) {\n      var snapshot = snapshots[handle];\n\n      if (!snapshot) {\n        return;\n      }\n\n      var score = getSnapshotScore(snapshot);\n\n      if (score > bestScore) {\n        bestSnapshot = snapshot;\n        bestScore = score;\n      }\n    });\n\n    if (bestSnapshot) {\n      return bestSnapshot;\n    }\n\n    return snapshots[normalizeHandle(widget.dataset.influencerHandle || '')] || null;\n  }\n\n  function applyOptimisticFollowChange(detail) {\n    if (!detail || typeof detail.following !== 'boolean') {\n      return;\n    }\n\n    var delta = detail.following ? 1 : -1;\n    var matchHandles = getEventMatchHandles(detail);\n\n    if (!matchHandles.length) {\n      return;\n    }\n\n    getSummaryWidgets(document).forEach(function (widget) {\n      if (!(widget instanceof HTMLElement)) {\n        return;\n      }\n\n      var widgetHandles = getSummaryWidgetMatchHandles(widget);\n      var isMatched = widgetHandles.some(function (handle) {\n        return matchHandles.indexOf(handle) !== -1;\n      });\n\n      if (!isMatched || widget.dataset.statsReady !== 'true') {\n        return;\n      }\n\n      var currentFollowerCount = toCount(widget.dataset.followerCount);\n      var currentDealCount = toCount(widget.dataset.dealCount);\n      var currentLiveDealCount = toCount(widget.dataset.liveDealCount);\n      var currentUpcomingDealCount = toCount(widget.dataset.upcomingDealCount);\n\n      if (currentFollowerCount == null) {\n        var followerNode = widget.querySelector('[data-collector-followers]');\n        currentFollowerCount = toCountFromLabel(\n          followerNode && typeof followerNode.textContent === 'string'\n            ? followerNode.textContent\n            : '',\n        );\n      }\n\n      if (currentDealCount == null) {\n        var dealNode = widget.querySelector('[data-collector-deals]');\n        currentDealCount = toCountFromLabel(\n          dealNode && typeof dealNode.textContent === 'string' ? dealNode.textContent : '',\n        );\n      }\n\n      if (currentFollowerCount == null || currentDealCount == null) {\n        return;\n      }\n\n      var nextFollowerCount = Math.max(0, currentFollowerCount + delta);\n\n      applySnapshot(widget, {\n        followerCount: nextFollowerCount,\n        dealCount: currentDealCount,\n        liveDealCount: currentLiveDealCount == null ? 0 : currentLiveDealCount,\n        upcomingDealCount: currentUpcomingDealCount == null ? 0 : currentUpcomingDealCount,\n        followersLabel: formatFollowerCount(nextFollowerCount),\n        dealsLabel: '\uB204\uC801 \uACF5\uAD6C ' + formatInteger(currentDealCount) + '\uD68C',\n      });\n    });\n  }\n\n  function refresh(root) {\n    var groups = collectGroups(root || document);\n\n    groups.forEach(function (group, proxyBase) {\n      var productIds = Array.from(group.productIds);\n      var handles = Array.from(group.handles);\n\n      if (!productIds.length && !handles.length) {\n        return;\n      }\n\n      group.productWidgets.forEach(setLoadingState);\n      group.summaryWidgets.forEach(setLoadingState);\n\n      fetchSnapshots(proxyBase, productIds, handles)\n        .then(function (payload) {\n          var snapshots = (payload && payload.snapshots) || {};\n\n          group.productWidgets.forEach(function (widget) {\n            if (!(widget instanceof HTMLElement)) {\n              return;\n            }\n\n            var productId = String(widget.dataset.productId || '').trim();\n            applySnapshot(widget, snapshots[productId]);\n          });\n\n          group.summaryWidgets.forEach(function (widget) {\n            if (!(widget instanceof HTMLElement)) {\n              return;\n            }\n\n            applySnapshot(widget, getPreferredSummarySnapshot(widget, snapshots));\n          });\n\n          document.dispatchEvent(\n            new CustomEvent('townwine:collector-stats-updated', {\n              detail: {\n                proxyBase: proxyBase,\n              },\n            }),\n          );\n        })\n        .catch(function (error) {\n          console.warn('[collector-stats] failed to fetch snapshots', error);\n        });\n    });\n  }\n\n  function initialize(root) {\n    refresh(root || document);\n  }\n\n  document.addEventListener('shopify:section:load', function (event) {\n    initialize(event.target);\n  });\n\n  function scheduleFollowRefresh() {\n    if (followRefreshTimer) {\n      window.clearTimeout(followRefreshTimer);\n    }\n\n    followRefreshTimer = window.setTimeout(function () {\n      followRefreshTimer = null;\n      refresh(document);\n    }, 1200);\n  }\n\n  document.addEventListener('townwine:follow-change', function (event) {\n    var detail = (event && event.detail) || null;\n    var phase = String((detail && detail.phase) || '').trim().toLowerCase();\n\n    if (phase === 'optimistic') {\n      rememberPendingOptimisticFollowEvent(detail);\n      applyOptimisticFollowChange(detail);\n      scheduleFollowRefresh();\n      return;\n    }\n\n    if (phase === 'rollback') {\n      clearInversePendingOptimisticFollowEvent(detail);\n      applyOptimisticFollowChange(detail);\n      scheduleFollowRefresh();\n      return;\n    }\n\n    if (!consumePendingOptimisticFollowEvent(detail)) {\n      applyOptimisticFollowChange(detail);\n    }\n\n    scheduleFollowRefresh();\n  });\n\n  window.TownWineCollectorStats = {\n    init: initialize,\n    refresh: refresh,\n  };\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function () {\n      initialize(document);\n    });\n    return;\n  }\n\n  initialize(document);\n})();\n"],
  "mappings": "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",
  "names": []
}
