{
  "version": 3,
  "sources": ["/cdn/shop/t/29/assets/sticky-atb-sync-neelesh.js?cb=1790789882096"],
  "sourcesContent": ["/**\r\n * sticky-atb-sync-neelesh.js\r\n * Makes the AI-generated sticky Add to Bag bar follow the main product form:\r\n * - price mirrors the gifting \"Your order\" total (variant + qty + gift)\r\n * - image follows the selected variant\r\n * - its button clicks the MAIN Add to Bag button, so the correct variant,\r\n *   card validation, line item properties and gift bow all apply\r\n * - quantity stays in sync both ways\r\n */\r\n(function () {\r\n  'use strict';\r\n  if (window.__stickyAtbSync) return;\r\n  window.__stickyAtbSync = true;\r\n\r\n  var bar, VARIANT_IMAGES = null, rafId = null, lastImgVariant = null;\r\n\r\n  function findBar() {\r\n    return document.querySelector('[data-trigger-offset][class*=\"ai-sticky-atb-\"]') ||\r\n           document.querySelector('[class*=\"ai-sticky-atb-\"]');\r\n  }\r\n\r\n  function mainBtn() {\r\n    return document.querySelector('form[action*=\"/cart/add\"] [name=\"add\"]');\r\n  }\r\n\r\n  function mainForm() {\r\n    var b = mainBtn();\r\n    return b ? b.closest('form') : null;\r\n  }\r\n\r\n  function mainQty() {\r\n    return document.querySelector('product-info input[name=\"quantity\"]') ||\r\n           document.querySelector('input[name=\"quantity\"]');\r\n  }\r\n\r\n  function stickyQty()   { return bar && bar.querySelector('[class*=\"ai-sticky-atb-qty-input\"]'); }\r\n  function stickyPrice() { return bar && bar.querySelector('[class*=\"ai-sticky-atb-price\"]'); }\r\n  function stickyImg()   { return bar && bar.querySelector('[class*=\"ai-sticky-atb-image\"] img'); }\r\n\r\n  function currentVariantId() {\r\n    var f = mainForm();\r\n    var i = f && f.querySelector('[name=\"id\"]');\r\n    return i ? String(i.value) : null;\r\n  }\r\n\r\n  /* \u2500\u2500 PRICE \u2500\u2500 */\r\n  function priceText() {\r\n    var total = document.getElementById('lgb-sum-total');\r\n    if (total && total.textContent.trim()) return total.textContent.trim();\r\n    var p = document.querySelector('product-info .price-item--last') ||\r\n            document.querySelector('product-info .price-item--regular') ||\r\n            document.querySelector('.price-item--regular');\r\n    return p ? p.textContent.trim() : '';\r\n  }\r\n\r\n  function updatePrice() {\r\n    var el = stickyPrice();\r\n    if (!el) return;\r\n    var t = priceText();\r\n    if (t && el.textContent.trim() !== t) el.textContent = t;\r\n  }\r\n\r\n  /* \u2500\u2500 IMAGE \u2500\u2500 */\r\n  async function loadVariantImages() {\r\n    try {\r\n      var handle = (window.location.pathname.split('/products/')[1] || '').split(/[?#/]/)[0];\r\n      if (!handle) return;\r\n      var res = await fetch('/products/' + handle + '.js');\r\n      if (!res.ok) return;\r\n      var data = await res.json();\r\n      VARIANT_IMAGES = {};\r\n      data.variants.forEach(function (v) {\r\n        if (v.featured_image && v.featured_image.src) VARIANT_IMAGES[String(v.id)] = v.featured_image.src;\r\n      });\r\n      lastImgVariant = null;\r\n      updateImage();\r\n    } catch (e) { /* image sync is optional */ }\r\n  }\r\n\r\n  function updateImage() {\r\n    var img = stickyImg();\r\n    var id = currentVariantId();\r\n    if (!img || !id || !VARIANT_IMAGES || id === lastImgVariant) return;\r\n    lastImgVariant = id;\r\n    var src = VARIANT_IMAGES[id];\r\n    if (!src) return;\r\n    var sized = src + (src.indexOf('?') === -1 ? '?' : '&') + 'width=200';\r\n    img.removeAttribute('srcset');\r\n    img.src = sized;\r\n  }\r\n\r\n  /* \u2500\u2500 QUANTITY SYNC \u2500\u2500 */\r\n  function syncQtyToMain() {\r\n    var s = stickyQty(), m = mainQty();\r\n    if (!s || !m) return;\r\n    var v = Math.max(1, parseInt(s.value, 10) || 1);\r\n    if (String(m.value) !== String(v)) {\r\n      m.value = v;\r\n      m.dispatchEvent(new Event('change', { bubbles: true }));\r\n    }\r\n  }\r\n\r\n  function syncQtyToSticky() {\r\n    var s = stickyQty(), m = mainQty();\r\n    if (!s || !m) return;\r\n    if (String(s.value) !== String(m.value)) s.value = m.value;\r\n  }\r\n\r\n  function refresh() {\r\n    if (rafId) return;\r\n    rafId = setTimeout(function () {\r\n      rafId = null;\r\n      updatePrice();\r\n      updateImage();\r\n    }, 50);\r\n  }\r\n\r\n  /* \u2500\u2500 INIT \u2500\u2500 */\r\n  function init() {\r\n    bar = findBar();\r\n    if (!bar) return;\r\n\r\n    // Sticky Add to Bag -> click the main button instead.\r\n    // Capture phase on document runs BEFORE the sticky block's own handler.\r\n    document.addEventListener('click', function (e) {\r\n      var sBtn = e.target.closest && e.target.closest('[data-add-to-cart]');\r\n      if (!sBtn || !bar.contains(sBtn)) return;\r\n      e.preventDefault();\r\n      e.stopImmediatePropagation();\r\n\r\n      syncQtyToMain();\r\n      var main = mainBtn();\r\n      if (!main) return;\r\n      if (main.disabled || main.getAttribute('aria-disabled') === 'true') {\r\n        main.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n        return;\r\n      }\r\n      main.click();\r\n    }, true);\r\n\r\n    // Sticky +/- buttons and typing in sticky qty box\r\n    document.addEventListener('click', function (e) {\r\n      var q = e.target.closest && e.target.closest('[data-action=\"increase\"], [data-action=\"decrease\"]');\r\n      if (!q || !bar.contains(q)) return;\r\n      setTimeout(function () { syncQtyToMain(); refresh(); }, 0);\r\n    });\r\n    var sq = stickyQty();\r\n    if (sq) {\r\n      sq.addEventListener('change', function () { syncQtyToMain(); refresh(); });\r\n      sq.addEventListener('input',  function () { syncQtyToMain(); refresh(); });\r\n    }\r\n\r\n    // Main qty changed -> copy to sticky\r\n    document.addEventListener('change', function (e) {\r\n      if (e.target && e.target.name === 'quantity' && !bar.contains(e.target)) {\r\n        syncQtyToSticky();\r\n        setTimeout(refresh, 50);\r\n      }\r\n    });\r\n\r\n    // Variant change / gift toggle / total change -> refresh sticky\r\n    var scope = document.querySelector('product-info') || document.body;\r\n    new MutationObserver(refresh).observe(scope, { childList: true, subtree: true, characterData: true });\r\n    var total = document.getElementById('lgb-sum-total');\r\n    if (total && !scope.contains(total)) {\r\n      new MutationObserver(refresh).observe(total, { childList: true, subtree: true, characterData: true });\r\n    }\r\n\r\n    syncQtyToSticky();\r\n    loadVariantImages();\r\n    refresh();\r\n  }\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', init);\r\n  } else {\r\n    init();\r\n  }\r\n})();"],
  "mappings": "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",
  "names": []
}
