{
  "version": 3,
  "sources": ["/cdn/shop/t/13/assets/product-card-qty.js?lbreq=3"],
  "sourcesContent": ["/**\n * Product card qty stepper \u2014 syncs pricing display and live cart when line exists.\n */\n(function () {\n  var syncTimers = new WeakMap();\n\n  function routesRoot() {\n    return (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) || \"/\";\n  }\n\n  function isFeeItem(item) {\n    if (!item) return true;\n    if (window.LbRemoveFee && typeof window.LbRemoveFee.isFeeItem === \"function\") {\n      return window.LbRemoveFee.isFeeItem(item);\n    }\n    return String(item.handle || item.product_handle || \"\").trim() === \"lb-order-margin\";\n  }\n\n  function formatMoneyCents(cents) {\n    if (window.Shopify && typeof window.Shopify.formatMoney === \"function\") {\n      return window.Shopify.formatMoney(\n        cents,\n        window.Shopify.money_format || \"${{amount}}\"\n      );\n    }\n    return \"$\" + (Number(cents) / 100).toFixed(2);\n  }\n\n  function maxQtyPerItem() {\n    if (window.LbQtyLimit && typeof window.LbQtyLimit.max === \"function\") {\n      return window.LbQtyLimit.max();\n    }\n    var n = Number(window.LB_MAX_QTY_PER_ITEM);\n    return Number.isFinite(n) && n > 0 ? Math.floor(n) : 24;\n  }\n\n  function parseQty(raw) {\n    var n = Number(raw);\n    if (!Number.isFinite(n) || n < 1) return 1;\n    n = Math.floor(n);\n    var max = maxQtyPerItem();\n    return n > max ? max : n;\n  }\n\n  function cardFromNode(node) {\n    return node && node.closest ? node.closest(\"[data-product-card]\") : null;\n  }\n\n  function readQtyInput(card) {\n    var input = card.querySelector(\"[data-card-qty]\");\n    if (!input) return 1;\n    return parseQty(input.value);\n  }\n\n  function setQtyInput(card, qty) {\n    var input = card.querySelector(\"[data-card-qty]\");\n    if (!input) return;\n    input.value = String(qty);\n    input.setAttribute(\"max\", String(maxQtyPerItem()));\n  }\n\n  function syncQtyButtons(card) {\n    if (!card) return;\n    var input = card.querySelector(\"[data-card-qty]\");\n    if (!input || input.disabled) return;\n    var qty = parseQty(input.value);\n    var minus = card.querySelector('[data-card-qty-delta=\"-1\"]');\n    var plus = card.querySelector('[data-card-qty-delta=\"1\"]');\n    if (minus) minus.disabled = qty <= 1;\n    if (plus) plus.disabled = qty >= maxQtyPerItem();\n  }\n\n  function cardVariantId(card) {\n    var addBtn = card.querySelector(\"[data-card-add]\");\n    return addBtn ? addBtn.getAttribute(\"data-variant-id\") : null;\n  }\n\n  function updatePricing() {}\n\n  function scheduleCartSync(card) {\n    var prev = syncTimers.get(card);\n    if (prev) clearTimeout(prev);\n    syncTimers.set(\n      card,\n      setTimeout(function () {\n        syncCardQtyToCart(card);\n      }, 350)\n    );\n  }\n\n  async function syncCardQtyToCart(card) {\n    var variantId = cardVariantId(card);\n    if (!variantId) return;\n\n    var qty = readQtyInput(card);\n    var cartRes = await fetch(routesRoot() + \"cart.js\", {\n      headers: { Accept: \"application/json\" },\n      credentials: \"same-origin\",\n    });\n    if (!cartRes.ok) return;\n\n    var cart = await cartRes.json();\n    var line = null;\n    (cart.items || []).forEach(function (item) {\n      if (!item || isFeeItem(item)) return;\n      if (String(item.variant_id) === String(variantId)) line = item;\n    });\n    if (!line || line.quantity === qty) return;\n\n    var changeRes = await fetch(routesRoot() + \"cart/change.js\", {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n      credentials: \"same-origin\",\n      body: JSON.stringify({ id: line.key, quantity: qty }),\n    });\n    if (!changeRes.ok) return;\n\n    cart = await changeRes.json();\n    document.dispatchEvent(new CustomEvent(\"lb:cart-updated\", { detail: { cart: cart } }));\n  }\n\n  function applyQty(card, qty, syncCart) {\n    var requested = Number(qty);\n    qty = parseQty(qty);\n    setQtyInput(card, qty);\n    syncQtyButtons(card);\n    updatePricing(card, qty);\n    if (syncCart !== false) scheduleCartSync(card);\n    if (requested > qty && window.LbQtyLimit && typeof window.LbQtyLimit.notify === \"function\") {\n      window.LbQtyLimit.notify();\n    }\n  }\n\n  document.addEventListener(\n    \"click\",\n    function (event) {\n      var deltaBtn =\n        event.target && event.target.closest\n          ? event.target.closest(\"[data-card-qty-delta]\")\n          : null;\n      if (!deltaBtn || deltaBtn.disabled) return;\n\n      var card = cardFromNode(deltaBtn);\n      if (!card) return;\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      var delta = parseInt(deltaBtn.getAttribute(\"data-card-qty-delta\") || \"0\", 10) || 0;\n      applyQty(card, readQtyInput(card) + delta);\n    },\n    true\n  );\n\n  document.addEventListener(\n    \"change\",\n    function (event) {\n      var input = event.target;\n      if (!input || !input.matches || !input.matches(\"[data-card-qty]\")) return;\n      var card = cardFromNode(input);\n      if (!card) return;\n      applyQty(card, input.value);\n    },\n    true\n  );\n\n  document.addEventListener(\n    \"input\",\n    function (event) {\n      var input = event.target;\n      if (!input || !input.matches || !input.matches(\"[data-card-qty]\")) return;\n      var card = cardFromNode(input);\n      if (!card) return;\n      var qty = parseQty(input.value);\n      if (Number(input.value) > qty) {\n        input.value = String(qty);\n        if (window.LbQtyLimit && typeof window.LbQtyLimit.notify === \"function\") {\n          window.LbQtyLimit.notify();\n        }\n      }\n      if (String(qty) !== input.value.trim()) return;\n      updatePricing(card, qty);\n      syncQtyButtons(card);\n      scheduleCartSync(card);\n    },\n    true\n  );\n\n  function initCard(card) {\n    var input = card.querySelector(\"[data-card-qty]\");\n    if (input) input.setAttribute(\"max\", String(maxQtyPerItem()));\n    applyQty(card, readQtyInput(card), false);\n  }\n\n  function initAll() {\n    document.querySelectorAll(\"[data-product-card]\").forEach(initCard);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initAll);\n  } else {\n    initAll();\n  }\n\n  document.addEventListener(\"lb:cards-rendered\", initAll);\n})();\n"],
  "mappings": "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",
  "names": []
}
