{
  "version": 3,
  "sources": ["/cdn/shop/t/104/assets/venom-collection-stock-order-v71.js?venom_rev=venom-20261023-01"],
  "sourcesContent": ["/*\n * VENOM Technology \u2014 Collection Stock Ordering V71\n * Purpose: keep all products visible, globally partition the selected Shopify order as:\n *          IN STOCK first, OUT OF STOCK last, while retaining Shopify pagination.\n * Proprietary Venom storefront customization. See VENOM_PROPRIETARY_NOTICE_V66.txt.\n */\n(function () {\n  'use strict';\n\n  const GRID_SELECTOR = '[data-venom-stock-order-grid]';\n  const CARD_SELECTOR = 'product-card[data-venom-stock]';\n  let runToken = 0;\n\n  function pageUrl(page) {\n    const url = new URL(window.location.href);\n    url.searchParams.set('page', String(page));\n    return url.toString();\n  }\n\n  function cardKey(card) {\n    return card.getAttribute('data-product-id') ||\n      (card.querySelector('a[href*=\"/products/\"]') || {}).href ||\n      card.textContent.trim().slice(0, 120);\n  }\n\n  function partition(cards) {\n    const inStock = [];\n    const outOfStock = [];\n    cards.forEach(function (card) {\n      if (card.getAttribute('data-venom-stock') === 'out-of-stock') outOfStock.push(card);\n      else inStock.push(card);\n    });\n    return inStock.concat(outOfStock);\n  }\n\n  function updateShowing(total, inStockCount) {\n    const el = document.getElementById('products-showing');\n    if (!el) return;\n    const sold = Math.max(0, total - inStockCount);\n    el.textContent = total + ' \u0645\u0646\u062A\u062C \u2014 ' + inStockCount + ' \u0645\u062A\u0627\u062D' + (sold ? ' \u2022 ' + sold + ' \u063A\u064A\u0631 \u0645\u062A\u0627\u062D \u0641\u064A \u0627\u0644\u0622\u062E\u0631' : '');\n  }\n\n  async function reorderGrid(grid) {\n    if (!grid || grid.dataset.venomStockBusy === '1' || grid.dataset.venomStockDone === '1') return;\n\n    const pages = Math.max(1, parseInt(grid.dataset.venomPages || '1', 10));\n    const currentPage = Math.max(1, parseInt(grid.dataset.venomCurrentPage || '1', 10));\n    const pageSize = Math.max(1, parseInt(grid.dataset.venomPageSize || '50', 10));\n\n    // One page: server-side two-pass rendering is already globally correct.\n    if (pages === 1) {\n      const cards = Array.from(grid.querySelectorAll(':scope > ' + CARD_SELECTOR));\n      const ordered = partition(cards);\n      if (ordered.length) grid.replaceChildren.apply(grid, ordered);\n      grid.dataset.venomStockDone = '1';\n      updateShowing(ordered.length, ordered.filter(c => c.dataset.venomStock !== 'out-of-stock').length);\n      return;\n    }\n\n    grid.dataset.venomStockBusy = '1';\n    const token = ++runToken;\n\n    try {\n      const perPage = new Array(pages);\n      perPage[currentPage - 1] = Array.from(grid.querySelectorAll(':scope > ' + CARD_SELECTOR));\n\n      const requests = [];\n      for (let page = 1; page <= pages; page++) {\n        if (page === currentPage) continue;\n        requests.push(\n          fetch(pageUrl(page), { credentials: 'same-origin', headers: { 'X-Venom-Stock-Order': 'V71' } })\n            .then(function (res) { if (!res.ok) throw new Error('HTTP ' + res.status); return res.text(); })\n            .then(function (html) {\n              const doc = new DOMParser().parseFromString(html, 'text/html');\n              const remoteGrid = doc.querySelector(GRID_SELECTOR);\n              perPage[page - 1] = remoteGrid ? Array.from(remoteGrid.querySelectorAll(':scope > ' + CARD_SELECTOR)) : [];\n            })\n        );\n      }\n      await Promise.all(requests);\n      if (token !== runToken || !document.contains(grid)) return;\n\n      // Preserve the active Shopify sort order within each availability group.\n      const seen = new Set();\n      const all = [];\n      perPage.forEach(function (cards) {\n        (cards || []).forEach(function (card) {\n          const key = cardKey(card);\n          if (seen.has(key)) return;\n          seen.add(key);\n          all.push(card);\n        });\n      });\n\n      const ordered = partition(all);\n      const start = (currentPage - 1) * pageSize;\n      const slice = ordered.slice(start, start + pageSize);\n      const inStockCount = ordered.filter(c => c.dataset.venomStock !== 'out-of-stock').length;\n\n      grid.replaceChildren.apply(grid, slice);\n      grid.dataset.venomStockDone = '1';\n      updateShowing(ordered.length, inStockCount);\n    } catch (err) {\n      // Fail safe: never break the collection page. Keep current server page ordered in-stock then sold-out.\n      console.warn('[VENOM V71] Global stock ordering fallback:', err);\n      const cards = Array.from(grid.querySelectorAll(':scope > ' + CARD_SELECTOR));\n      const ordered = partition(cards);\n      if (ordered.length) grid.replaceChildren.apply(grid, ordered);\n      grid.dataset.venomStockDone = '1';\n    } finally {\n      delete grid.dataset.venomStockBusy;\n    }\n  }\n\n  function run() {\n    document.querySelectorAll(GRID_SELECTOR).forEach(reorderGrid);\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', run, { once: true });\n  else run();\n\n  // Filters/sorting may replace the grid through AJAX. Re-apply to the new grid only.\n  const observer = new MutationObserver(function () {\n    window.clearTimeout(observer._venomTimer);\n    observer._venomTimer = window.setTimeout(run, 80);\n  });\n  observer.observe(document.documentElement, { childList: true, subtree: true });\n})();\n"],
  "mappings": "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",
  "names": []
}
