{
  "version": 3,
  "sources": ["/cdn/shop/t/6/assets/besvol-social-optimizer-v3.js?t=1774203893"],
  "sourcesContent": ["/* Optimizer v3.1 - shares fix - 1773303204.3619382 */\n/**\n * BESVOL Firebase Social - \u6781\u901F\u52A0\u8F7D\u7248 V3.1\n * \u4FEE\u590D\uFF1A\u79FB\u9664\u91CD\u590D\u65B9\u6CD5\u58F0\u660E\n */\nclass BesvolSocialOptimizer {\n  constructor(config = {}) {\n    this.config = {\n      cacheKey: 'besvol_social_v3',\n      cacheTTL: 300000,\n      staleTTL: 86400000,\n      batchSize: 50,\n      preloadOffset: 200,\n      ...config\n    };\n    \n    this.memoryCache = new Map();\n    this.localCache = null;\n    this.updateQueue = [];\n    this.observers = new Map();\n    this.isOnline = navigator.onLine;\n    this.metrics = { cacheHits: 0, firebaseRequests: 0, renderTime: 0 };\n    \n    this.init();\n  }\n\n  async init() {\n    const startTime = performance.now();\n\n    // 1. \u7ACB\u5373\u4ECELocalStorage\u52A0\u8F7D\uFF08\u5FEB\u901F\u663E\u793A\u7F13\u5B58\uFF09\n    this.localCache = this.loadFromLocalStorage();\n    if (this.localCache) {\n      this.hydrateMemoryCache(this.localCache);\n      this.renderVisibleCards();\n      this.metrics.cacheHits++;\n      console.log('[BesvolSocial] \u2705 Cache hit - instant render');\n    }\n\n    // 2. \u540E\u53F0\u8FDE\u63A5Firebase\uFF08\u4E0D\u963B\u585E\uFF0C\u6570\u636E\u66F4\u65B0\u65F6\u81EA\u52A8\u5237\u65B0\uFF09\n    if (this.isOnline) {\n      this.connectFirebase();\n    }\n\n    // 3. \u8BBE\u7F6E\u61D2\u52A0\u8F7D\n    this.setupLazyLoading();\n    this.setupNetworkListener();\n    this.startSyncLoop();\n\n    this.metrics.initTime = performance.now() - startTime;\n    console.log(`[BesvolSocial] \u26A1 Initialized in ${this.metrics.initTime.toFixed(2)}ms`);\n    console.log(`[BesvolSocial] \uD83D\uDCCA Cache status: ${this.memoryCache.size} items`);\n  }\n\n  loadFromLocalStorage() {\n    try {\n      const raw = localStorage.getItem(this.config.cacheKey);\n      if (!raw) return null;\n      \n      const data = JSON.parse(raw);\n      const age = Date.now() - data.timestamp;\n      \n      if (age > this.config.staleTTL) {\n        localStorage.removeItem(this.config.cacheKey);\n        return null;\n      }\n      \n      return { ...data, _isStale: age > this.config.cacheTTL };\n    } catch (e) {\n      return null;\n    }\n  }\n\n  saveToLocalStorage() {\n    try {\n      const data = {\n        timestamp: Date.now(),\n        products: Object.fromEntries(this.memoryCache),\n        version: 'v3'\n      };\n      localStorage.setItem(this.config.cacheKey, JSON.stringify(data));\n    } catch (e) {}\n  }\n\n  hydrateMemoryCache(data) {\n    if (!data.products) return;\n    Object.entries(data.products).forEach(([id, metrics]) => {\n      this.memoryCache.set(id, { ...metrics, _lastUpdate: data.timestamp });\n    });\n  }\n\n  connectFirebase() {\n    console.log('[BesvolSocial] connectFirebase called, besvolDB:', !!window.besvolDB);\n\n    if (!window.besvolDB) {\n      console.log('[BesvolSocial] \u23F3 Firebase not ready, will retry...');\n      setTimeout(() => this.connectFirebase(), 500);\n      return;\n    }\n\n    console.log('[BesvolSocial] \u2705 Firebase connected');\n    const visibleIds = this.getVisibleIds();\n    console.log(`[BesvolSocial] \uD83D\uDC41\uFE0F Visible items: ${visibleIds.length}`);\n    \n    this.fetchBatchData(visibleIds);\n    this.setupRealtimeListeners(visibleIds);\n  }\n\n  getVisibleIds() {\n    const ids = [];\n    const selectors = ['[data-product-id]', '[data-article-id]'];\n    \n    selectors.forEach(selector => {\n      document.querySelectorAll(selector).forEach(el => {\n        const id = el.dataset.productId || el.dataset.articleId;\n        if (id) {\n          const rect = el.getBoundingClientRect();\n          const isVisible = rect.top < window.innerHeight + this.config.preloadOffset \n                           && rect.bottom > -this.config.preloadOffset;\n          if (isVisible && !ids.includes(id)) {\n            ids.push(id);\n          }\n        }\n      });\n    });\n    \n    return ids;\n  }\n\n  async fetchBatchData(ids) {\n    if (!ids.length || !window.besvolDB) return;\n    \n    const db = window.besvolDB;\n    const startTime = performance.now();\n    \n    const promises = ids.map(id => \n      db.ref(`articles/${id}`).once('value')\n        .then(snap => ({ id, data: snap.val() }))\n        .catch(() => null)\n    );\n    \n    const results = await Promise.all(promises);\n    this.metrics.firebaseRequests += ids.length;\n    \n    let hasUpdate = false;\n    results.forEach(result => {\n      if (result?.data) {\n        const cached = this.memoryCache.get(result.id);\n        if (!cached || JSON.stringify(cached) !== JSON.stringify(result.data)) {\n          this.memoryCache.set(result.id, { ...result.data, _lastUpdate: Date.now() });\n          hasUpdate = true;\n        }\n      }\n    });\n    \n    console.log(`[BesvolSocial] \uD83D\uDCE5 Fetched ${ids.length} items in ${(performance.now() - startTime).toFixed(2)}ms`);\n    \n    if (hasUpdate) {\n      this.batchRender();\n      this.saveToLocalStorage();\n    }\n  }\n\n  setupRealtimeListeners(ids) {\n    if (!window.besvolDB) return;\n    \n    ids.forEach(id => {\n      if (this.observers.has(id)) return;\n      \n      const ref = window.besvolDB.ref(`articles/${id}`);\n      const listener = ref.on('value', snap => {\n        const data = snap.val();\n        if (data) {\n          this.memoryCache.set(id, { ...data, _lastUpdate: Date.now() });\n          this.queueUpdate(id, data);\n        }\n      });\n      \n      this.observers.set(id, () => ref.off('value', listener));\n    });\n    \n    console.log(`[BesvolSocial] \uD83D\uDC42 Listening to ${this.observers.size} items`);\n  }\n\n  setupLazyLoading() {\n    if (!('IntersectionObserver' in window)) return;\n    \n    const observer = new IntersectionObserver((entries) => {\n      entries.forEach(entry => {\n        if (entry.isIntersecting) {\n          const el = entry.target;\n          const id = el.dataset.productId || el.dataset.articleId;\n          \n          if (id && !this.memoryCache.has(id) && this.isOnline) {\n            this.fetchBatchData([id]);\n          } else {\n            this.renderItem(id);\n          }\n          \n          if (this.memoryCache.has(id)) {\n            observer.unobserve(el);\n          }\n        }\n      });\n    }, { rootMargin: `${this.config.preloadOffset}px`, threshold: 0.1 });\n    \n    document.querySelectorAll('[data-product-id], [data-article-id]').forEach(el => {\n      observer.observe(el);\n    });\n  }\n\n  queueUpdate(id, data) {\n    this.updateQueue.push({ id, data });\n    if (this.updateTimer) cancelAnimationFrame(this.updateTimer);\n    this.updateTimer = requestAnimationFrame(() => this.flushUpdates());\n  }\n\n  flushUpdates() {\n    if (!this.updateQueue.length) return;\n    \n    const updates = [...this.updateQueue];\n    this.updateQueue = [];\n    \n    const startTime = performance.now();\n    updates.forEach(({ id }) => this.renderItem(id));\n    this.metrics.renderTime += performance.now() - startTime;\n  }\n\n  renderItem(id) {\n    const metrics = this.memoryCache.get(id);\n    if (!metrics) return;\n    \n    // \u67E5\u627E\u5143\u7D20\uFF08\u652F\u6301product-id\u548Carticle-id\uFF09\n    const container = document.querySelector(`[data-product-id=\"${id}\"]`) \n                   || document.querySelector(`[data-article-id=\"${id}\"]`);\n    if (!container) return;\n    \n    const elements = {\n      likes: container.querySelector('[data-social=\"likes\"]'),\n      shares: container.querySelector('[data-social=\"shares\"]'),\n      views: container.querySelector('[data-social=\"views\"]'),\n      votes: container.querySelector('[data-social=\"votes\"]')\n    };\n    \n    Object.entries(elements).forEach(([type, el]) => {\n      if (!el) return;\n      const newValue = this.formatNumber(metrics[type] || 0);\n      if (el.textContent !== newValue) {\n        el.textContent = newValue;\n        el.classList.add('social-update');\n        setTimeout(() => el.classList.remove('social-update'), 300);\n      }\n    });\n  }\n\n  renderVisibleCards() {\n    const visibleIds = this.getVisibleIds();\n    visibleIds.forEach(id => this.renderItem(id));\n  }\n\n  batchRender() {\n    requestAnimationFrame(() => this.renderVisibleCards());\n  }\n\n  formatNumber(num) {\n    if (num >= 1000000) return (num / 1000000).toFixed(1) + 'M';\n    if (num >= 1000) return (num / 1000).toFixed(1) + 'K';\n    return num.toString();\n  }\n\n  setupNetworkListener() {\n    window.addEventListener('online', () => {\n      this.isOnline = true;\n      this.connectFirebase();\n      this.syncPending();\n    });\n    window.addEventListener('offline', () => this.isOnline = false);\n  }\n\n  startSyncLoop() {\n    setInterval(() => { if (this.isOnline) this.syncPending(); }, 30000);\n  }\n\n  async interact(id, action) {\n    const actionKey = `besvol_${id}_${action}`;\n    if (localStorage.getItem(actionKey)) return false;\n    \n    const current = this.memoryCache.get(id) || {};\n    const newValue = (current[action] || 0) + 1;\n    \n    this.memoryCache.set(id, { ...current, [action]: newValue });\n    this.renderItem(id);\n    this.saveToLocalStorage();\n    localStorage.setItem(actionKey, Date.now().toString());\n    \n    if (this.isOnline && window.besvolDB) {\n      try {\n        await window.besvolDB.ref(`articles/${id}/${action}`).set(newValue);\n      } catch (e) {\n        this.queueForSync(id, action, newValue);\n      }\n    } else {\n      this.queueForSync(id, action, newValue);\n    }\n    \n    return true;\n  }\n\n  queueForSync(id, action, value) {\n    const pending = JSON.parse(localStorage.getItem('besvol_pending') || '[]');\n    pending.push({ id, action, value, timestamp: Date.now() });\n    localStorage.setItem('besvol_pending', JSON.stringify(pending));\n  }\n\n  async syncPending() {\n    const pending = JSON.parse(localStorage.getItem('besvol_pending') || '[]');\n    if (!pending.length || !window.besvolDB) return;\n    \n    const results = await Promise.all(\n      pending.map(item => \n        window.besvolDB.ref(`articles/${item.id}/${item.action}`).set(item.value)\n          .then(() => ({ success: true }))\n          .catch(() => ({ success: false, item }))\n      )\n    );\n    \n    const failed = results.filter(r => !r.success).map(r => r.item);\n    localStorage.setItem('besvol_pending', JSON.stringify(failed));\n  }\n\n  getMetrics() {\n    return {\n      ...this.metrics,\n      cacheSize: this.memoryCache.size,\n      observers: this.observers.size,\n      isOnline: this.isOnline,\n      timestamp: Date.now()\n    };\n  }\n\n  destroy() {\n    this.observers.forEach(off => off());\n    this.observers.clear();\n    this.memoryCache.clear();\n  }\n}\n\n// \u521D\u59CB\u5316\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', () => {\n    window.BESVOL = window.BESVOL || {};\n    window.BESVOL.social = new BesvolSocialOptimizer();\n  });\n} else {\n  window.BESVOL = window.BESVOL || {};\n  window.BESVOL.social = new BesvolSocialOptimizer();\n}\n"],
  "mappings": "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",
  "names": []
}
