{
  "version": 3,
  "sources": ["/cdn/shop/t/36/assets/product.js?gallery_v=20261001"],
  "sourcesContent": ["/* ============================================================\n   SARTE LEATHER \u2014 product.js\n   PDP gallery (thumbs, arrows, swipe, zoom, lightbox),\n   variant selection, sticky ATC.\n   ============================================================ */\n(function () {\n  'use strict';\n\n  var $ = function (s, c) { return (c || document).querySelector(s); };\n  var $$ = function (s, c) { return Array.prototype.slice.call((c || document).querySelectorAll(s)); };\n  var reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  var root = $('[data-pdp]');\n  if (!root) return;\n\n  /* ================= VARIANTS ================= */\n  var productDataEl = $('[data-product-json]', root);\n  if (!productDataEl) return;\n  var product;\n  try { product = JSON.parse(productDataEl.textContent); } catch (e) { return; }\n\n  var variantInput = $('[data-variant-id-input]', root);\n  var priceEl = $('[data-pdp-price]', root);\n  var compareEl = $('[data-pdp-compare]', root);\n  var badgeEl = $('[data-pdp-badge]', root);\n  var atcBtn = $('[data-pdp-atc]', root);\n  var buyBtn = $('[data-buy-now]', root);\n  var optionEls = $$('[data-option-input]', root);\n  var mainWrap = $('[data-gallery-main]', root);\n  var thumbs = $$('[data-gallery-thumb]', root);\n  var imgs = $$('.gallery__main img.slide-img', root);\n  var counter = $('[data-gallery-count]', root);\n  var current = 0;\n  var stickyBar = $('[data-sticky-atc]', root);\n  var stickyPriceEl = $('[data-sticky-price]', root);\n  var stickyBtn = $('[data-sticky-atc-btn]', root);\n\n  function money(cents) {\n    var sym = window.SARTE && window.SARTE.currency ? window.SARTE.currency : 'Rs.';\n    return sym + ' ' + (cents / 100).toLocaleString('en-PK');\n  }\n\n  function optionKey(value) {\n    return String(value || '').trim().toLowerCase();\n  }\n\n  function selectedOptions() {\n    return product.options.map(function (name) {\n      var key = optionKey(name);\n      var selected = optionEls.find(function (input) {\n        return optionKey(input.getAttribute('data-option-input')) === key && input.checked;\n      });\n      return selected ? selected.value : null;\n    });\n  }\n\n  function findVariant(opts) {\n    for (var i = 0; i < product.variants.length; i++) {\n      var v = product.variants[i];\n      var match = true;\n      for (var j = 0; j < opts.length; j++) {\n        if (v.options[j] !== opts[j]) { match = false; break; }\n      }\n      if (match) return v;\n    }\n    return null;\n  }\n\n  function findAvailableVariant(opts) {\n    // exact match\n    var v = findVariant(opts);\n    if (v && v.available) return v;\n    // relax from the end\n    for (var drop = opts.length - 1; drop >= 0; drop--) {\n      var relaxed = opts.slice();\n      relaxed[drop] = null;\n      for (var i = 0; i < product.variants.length; i++) {\n        var ok = true;\n        for (var j = 0; j < relaxed.length; j++) {\n          if (relaxed[j] !== null && product.variants[i].options[j] !== relaxed[j]) { ok = false; break; }\n        }\n        if (ok && product.variants[i].available) return product.variants[i];\n      }\n    }\n    return null;\n  }\n\n  function updateOptionAvailability(selected) {\n    optionEls.forEach(function (input) {\n      var optIndex = product.options.findIndex(function (name) {\n        return optionKey(name) === optionKey(input.getAttribute('data-option-input'));\n      });\n      if (optIndex < 0) return;\n\n      var possible = false;\n      for (var i = 0; i < product.variants.length; i++) {\n        var variant = product.variants[i];\n        if (!variant.available) continue;\n        var matches = true;\n        for (var j = 0; j < selected.length; j++) {\n          if (j === optIndex) continue;\n          if (selected[j] !== null && variant.options[j] !== selected[j]) {\n            matches = false;\n            break;\n          }\n        }\n        if (matches && variant.options[optIndex] === input.value) {\n          possible = true;\n          break;\n        }\n      }\n      input.disabled = !possible && !input.checked;\n      input.setAttribute('aria-disabled', String(!possible && !input.checked));\n      var label = input.closest('.variant-opt');\n      if (label) label.classList.toggle('is-unavailable', !possible && !input.checked);\n    });\n  }\n\n  function syncSelectedOptionUI() {\n    $$('[data-selected-option]', root).forEach(function (output) {\n      var key = optionKey(output.getAttribute('data-selected-option'));\n      var selected = optionEls.find(function (input) {\n        return optionKey(input.getAttribute('data-option-input')) === key && input.checked;\n      });\n      output.textContent = selected ? selected.value : '';\n    });\n    $$('.variant-opt', root).forEach(function (label) {\n      var input = $('input', label);\n      label.classList.toggle('is-selected', !!(input && input.checked));\n    });\n  }\n\n  function update() {\n    var opts = selectedOptions();\n    syncSelectedOptionUI();\n    var incomplete = opts.some(function (o) { return o === null; });\n    var variant = incomplete ? null : findVariant(opts);\n\n    if (variant) {\n      if (variantInput) variantInput.value = variant.id;\n      if (priceEl) priceEl.textContent = money(variant.price);\n      if (compareEl) {\n        if (variant.compare_at_price && variant.compare_at_price > variant.price) {\n          compareEl.textContent = money(variant.compare_at_price);\n          compareEl.style.display = '';\n          if (badgeEl) {\n            var pct = Math.round(((variant.compare_at_price - variant.price) / variant.compare_at_price) * 100);\n            badgeEl.textContent = '-' + pct + '%';\n            badgeEl.style.display = '';\n          }\n        } else {\n          compareEl.style.display = 'none';\n          if (badgeEl) badgeEl.style.display = 'none';\n        }\n      }\n      if (atcBtn) {\n        atcBtn.disabled = !variant.available;\n        atcBtn.querySelector('span').textContent = variant.available ? 'Add to Cart' : 'Sold Out';\n      }\n      // update gallery to variant image\n      var featuredMediaId = null;\n      if (variant.featured_media && variant.featured_media.id) featuredMediaId = variant.featured_media.id;\n      else if (variant.featured_image && variant.featured_image.id) featuredMediaId = variant.featured_image.id;\n      if (featuredMediaId) {\n        var idx = -1;\n        imgs.forEach(function (img, i) {\n          if (parseInt(img.getAttribute('data-media-id'), 10) === parseInt(featuredMediaId, 10)) idx = i;\n        });\n        if (idx > -1) document.dispatchEvent(new CustomEvent('sarte:gallery:show', { detail: { mediaId: featuredMediaId } }));\n      }\n      var avail = $('[data-pdp-availability]', root);\n      if (avail) {\n        avail.textContent = variant.available ? 'In stock' : 'Currently unavailable';\n        avail.classList.toggle('is-unavailable', !variant.available);\n      }\n      if (stickyPriceEl) stickyPriceEl.textContent = money(variant.price);\n      var metaAvail = $('[data-pdp-meta-availability]', root);\n      if (metaAvail) metaAvail.textContent = variant.available ? 'In stock' : 'Currently unavailable';\n      if (stickyBtn) {\n        stickyBtn.disabled = !variant.available;\n        stickyBtn.textContent = variant.available ? 'Add to Cart' : 'Sold Out';\n      }\n    } else {\n      // check if some combination exists for disabled-state feedback\n      if (atcBtn && !incomplete) {\n        atcBtn.disabled = true;\n        atcBtn.querySelector('span').textContent = 'Unavailable';\n      }\n    }\n    var specAvail = $('[data-pdp-spec-availability]', root);\n    if (specAvail) specAvail.textContent = variant && variant.available ? 'In stock' : 'Currently unavailable';\n    updateOptionAvailability(opts);\n    // update URL\n    if (variant && history.replaceState) {\n      var url = new URL(window.location.href);\n      product.options.forEach(function (name, i) {\n        url.searchParams.set('option[' + (i + 1) + ']', opts[i]);\n      });\n      history.replaceState({}, '', url.toString());\n    }\n  }\n\n  optionEls.forEach(function (input) {\n    input.addEventListener('change', update);\n  });\n\n  // Initialize from URL params\n  (function initFromURL() {\n    var url = new URL(window.location.href);\n    var matched = false;\n    product.options.forEach(function (name, i) {\n      var val = url.searchParams.get('option[' + (i + 1) + ']');\n      if (val) {\n        optionEls.forEach(function (input) {\n          if (optionKey(input.getAttribute('data-option-input')) === optionKey(name) && input.value === val) {\n            input.checked = true;\n            matched = true;\n          }\n        });\n      }\n    });\n    update();\n  })();\n\n\n/* ---------- Sticky ATC ---------- */\n  var anchor = $('[data-pdp-anchor]', root);\n  var stickyQuery = window.matchMedia('(max-width:989px)');\n  if (stickyBar && anchor) {\n    var syncSticky = function () {\n      var mobile = stickyQuery.matches;\n      if (!mobile) {\n        stickyBar.classList.remove('is-visible');\n        document.body.classList.remove('pdp-sticky-active');\n        return;\n      }\n      var r = anchor.getBoundingClientRect();\n      var past = r.bottom < 0;\n      var doc = document.documentElement;\n      var nearBottom = window.innerHeight + window.scrollY > doc.scrollHeight - 240;\n      var visible = past && !nearBottom;\n      stickyBar.classList.toggle('is-visible', visible);\n      document.body.classList.toggle('pdp-sticky-active', visible);\n    };\n    window.addEventListener('scroll', syncSticky, { passive: true });\n    window.addEventListener('resize', syncSticky, { passive: true });\n    if (stickyQuery.addEventListener) stickyQuery.addEventListener('change', syncSticky);\n    syncSticky();\n    if (stickyBtn) {\n      stickyBtn.addEventListener('click', function () {\n        if (atcBtn && !atcBtn.disabled) atcBtn.click();\n      });\n    }\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
