{
  "version": 3,
  "sources": ["/cdn/shop/t/18/assets/pawlab-variant-snappy.js?pawlab=7"],
  "sourcesContent": ["/**\n * pawlab-variant-snappy.js (v10)\n * Speeds up Clarity PDP variant switches:\n * 1) Prefetch section HTML on option hover/press (+ idle warm of sibling options)\n * 2) Rewrite option_values fetches to section_id (smaller payload when available)\n * 3) Optimistic price from /products/{handle}.js (no network wait after warm)\n * 4) Promote selected variant featured media to gallery position 0 (grid hero)\n * 5) Skip full <media-gallery> remount when media id SET is unchanged (avoids video remount)\n * 6) Re-apply hero promotion after theme section morph (size/pattern picks)\n */\n(function () {\n  'use strict';\n  if (window.__pawlabVariantSnappy) return;\n  window.__pawlabVariantSnappy = true;\n  window.__pawlabVariantSnappyVersion = 9;\n\n  var sectionCache = new Map();\n  var variantIndex = null; // { handle, product, byOptions, byId, featuredByColor }\n  var loadingProduct = null;\n  var preloadedSrc = new Set();\n\n  function onReady(fn) {\n    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', fn, { once: true });\n    else fn();\n  }\n\n  function normalizeSectionUrl(url) {\n    try {\n      var u = new URL(url, window.location.origin);\n      var ov = u.searchParams.get('option_values') || '';\n      var sid = u.searchParams.get('section_id') || '';\n      return u.pathname + '|ov=' + ov + '|sid=' + sid;\n    } catch (e) {\n      return String(url);\n    }\n  }\n\n  function isVariantSectionUrl(url) {\n    return (\n      typeof url === 'string' &&\n      url.indexOf('/products/') !== -1 &&\n      url.indexOf('option_values=') !== -1\n    );\n  }\n\n  function withSectionId(url) {\n    try {\n      var u = new URL(url, window.location.origin);\n      if (u.searchParams.get('section_id')) return u.pathname + u.search;\n      var picker = document.querySelector('variant-picker[data-section-id]');\n      var sid = picker && picker.getAttribute('data-section-id');\n      if (sid) u.searchParams.set('section_id', sid);\n      return u.pathname + '?' + u.searchParams.toString();\n    } catch (e) {\n      return url;\n    }\n  }\n\n  // --- Fetch cache / prefetch / section rewrite ---\n  var origFetch = window.fetch.bind(window);\n  window.fetch = function (input, init) {\n    var url = typeof input === 'string' ? input : input && input.url;\n    if (!url || !isVariantSectionUrl(url)) return origFetch(input, init);\n\n    var rewritten = withSectionId(url);\n    try {\n      var bu = new URL(rewritten, window.location.origin);\n      bu.searchParams.set('pb', 'hero7');\n      rewritten = bu.pathname + '?' + bu.searchParams.toString();\n    } catch (ePb) {}\n    var key = normalizeSectionUrl(rewritten);\n    if (sectionCache.has(key)) {\n      return Promise.resolve(\n        new Response(sectionCache.get(key), {\n          status: 200,\n          headers: { 'Content-Type': 'text/html; charset=utf-8' },\n        })\n      );\n    }\n\n    return origFetch(rewritten, init).then(function (res) {\n      if (!res.ok) return res;\n      return res.text().then(function (text) {\n        sectionCache.set(key, text);\n        // Also cache under original key so either form hits\n        sectionCache.set(normalizeSectionUrl(url), text);\n        return new Response(text, {\n          status: 200,\n          headers: { 'Content-Type': 'text/html; charset=utf-8' },\n        });\n      });\n    });\n  };\n\n  function prefetchUrl(url) {\n    if (!url || !isVariantSectionUrl(url)) return;\n    var rewritten = withSectionId(url);\n    try {\n      var bu = new URL(rewritten, window.location.origin);\n      bu.searchParams.set('pb', 'hero7');\n      rewritten = bu.pathname + '?' + bu.searchParams.toString();\n    } catch (ePb) {}\n    var key = normalizeSectionUrl(rewritten);\n    if (sectionCache.has(key)) return;\n    origFetch(rewritten, { credentials: 'same-origin' })\n      .then(function (r) {\n        return r.ok ? r.text() : null;\n      })\n      .then(function (text) {\n        if (text) {\n          sectionCache.set(key, text);\n          sectionCache.set(normalizeSectionUrl(url), text);\n        }\n      })\n      .catch(function () {});\n  }\n\n  function buildOptionValuesUrl(picker, selectedInput) {\n    if (!picker || !selectedInput) return null;\n    var productUrl =\n      selectedInput.getAttribute('data-connected-product-url') ||\n      picker.getAttribute('data-product-url');\n    if (!productUrl) return null;\n    var ids = [];\n    picker.querySelectorAll('fieldset input:checked, select option[selected]').forEach(function (el) {\n      if (el.tagName === 'INPUT' && selectedInput.name && el.name === selectedInput.name) return;\n      var id = el.getAttribute('data-option-value-id');\n      if (id) ids.push(id);\n    });\n    var selId = selectedInput.getAttribute('data-option-value-id');\n    if (selId) ids.push(selId);\n    if (!ids.length) return null;\n    var base = productUrl.split('?')[0];\n    var sectionId = picker.getAttribute('data-section-id');\n    var qs = 'option_values=' + ids.join(',');\n    if (sectionId) qs = 'section_id=' + encodeURIComponent(sectionId) + '&' + qs;\n    return base + '?' + qs;\n  }\n\n  function bindPrefetch() {\n    document.addEventListener(\n      'pointerdown',\n      function (e) {\n        var t = e.target;\n        if (!(t instanceof Element)) return;\n        var input = null;\n        if (t.matches('input[type=\"radio\"]')) input = t;\n        else {\n          var lab = t.closest('label');\n          if (lab) input = lab.control || document.getElementById(lab.getAttribute('for') || '');\n        }\n        if (!(input instanceof HTMLInputElement)) return;\n        var picker = input.closest('variant-picker');\n        if (!picker) return;\n        var url = buildOptionValuesUrl(picker, input);\n        if (url) prefetchUrl(url);\n      },\n      true\n    );\n\n    document.addEventListener(\n      'mouseover',\n      function (e) {\n        var t = e.target;\n        if (!(t instanceof Element)) return;\n        var lab = t.closest('label');\n        if (!lab || !lab.closest('variant-picker')) return;\n        var input = lab.control || document.getElementById(lab.getAttribute('for') || '');\n        if (!(input instanceof HTMLInputElement) || input.checked) return;\n        var picker = input.closest('variant-picker');\n        var url = buildOptionValuesUrl(picker, input);\n        if (url) prefetchUrl(url);\n      },\n      true\n    );\n  }\n\n  function mediaIdSignature(root) {\n    var ids = Array.prototype.map\n      .call(root.querySelectorAll('[data-media-id]'), function (el) {\n        return el.getAttribute('data-media-id');\n      })\n      .filter(Boolean);\n    // Include featured hero id so color changes never get false-equal skips\n    var hero =\n      (root.getAttribute && root.getAttribute('data-pawlab-hero')) ||\n      (root.querySelector &&\n        (function () {\n          var s = root.querySelector('slideshow-slides > slideshow-slide, slideshow-slide');\n          if (!s) return '';\n          return s.getAttribute('data-media-id') || (s.querySelector('[data-media-id]') || {}).getAttribute?.('data-media-id') || '';\n        })()) ||\n      '';\n    return String(hero) + '|' + Array.from(new Set(ids)).sort().join(',');\n  }\n\n  function firstSlideMediaId(gallery) {\n    if (!gallery) return '';\n    var slide = gallery.querySelector('slideshow-slides > slideshow-slide, slideshow-slide, .product-media-container');\n    if (!slide) return '';\n    var el = slide.matches('[data-media-id]') ? slide : slide.querySelector('[data-media-id]');\n    return (el && el.getAttribute('data-media-id')) || '';\n  }\n\n  // v10: do NOT scroll the page/column on variant click.\n  // Carousel + thumbnail selector already shows the featured frame; scroll jumps\n  // were yanking shoppers down the PDP whenever they changed Color.\n  function scrollMediaColumnToTop(_gallery) {\n    return;\n  }\n\n  /**\n   * One-column grid galleries stack every frame. Theme normally remounts with\n   * featured_media first; we skip remount for speed, so we must move the slide\n   * to index 0 ourselves \u2014 otherwise users must scroll to find the colorway.\n   */\n  function promoteMediaToFront(gallery, mediaId) {\n    if (!gallery || !mediaId) return false;\n    var match = gallery.querySelector('[data-media-id=\"' + mediaId + '\"]');\n    if (!match) return false;\n\n    var slide = match.closest('slideshow-slide') || match.closest('.product-media-container') || match;\n    var list = slide.parentElement;\n    if (!list) return false;\n\n    if (list.firstElementChild !== slide) {\n      list.insertBefore(slide, list.firstElementChild);\n    }\n\n    // Keep thumbnail strip in sync when present\n    var thumb =\n      gallery.querySelector('slideshow-controls [data-media-id=\"' + mediaId + '\"]') ||\n      gallery.querySelector('[ref=\"thumbnails\"] [data-media-id=\"' + mediaId + '\"]');\n    if (thumb) {\n      var thumbItem = thumb.closest('button, li, .thumbnail, [role=\"tab\"]') || thumb;\n      var thumbParent = thumbItem.parentElement;\n      if (thumbParent && thumbParent.firstElementChild !== thumbItem) {\n        thumbParent.insertBefore(thumbItem, thumbParent.firstElementChild);\n      }\n    }\n\n    var img = slide.querySelector('img');\n    if (img) {\n      if (img.loading === 'lazy') img.loading = 'eager';\n      img.setAttribute('fetchpriority', 'high');\n      if (img.dataset && img.dataset.src && !img.getAttribute('src')) img.src = img.dataset.src;\n    }\n\n    var slideshow = gallery.slideshow || gallery.querySelector('slideshow-component');\n    if (slideshow && typeof slideshow.select === 'function') {\n      try {\n        slideshow.select(0, undefined, { animate: false });\n      } catch (e) {}\n    }\n\n    scrollMediaColumnToTop(gallery);\n    return true;\n  }\n\n  function snapGalleryToHero(gallery) {\n    if (!gallery) return;\n    var slideshow = gallery.slideshow || gallery.querySelector('slideshow-component');\n    if (slideshow && typeof slideshow.select === 'function') {\n      try {\n        slideshow.select(0, undefined, { animate: false });\n      } catch (e) {}\n    }\n    scrollMediaColumnToTop(gallery);\n  }\n\n  function selectGalleryMedia(gallery, mediaId, imageUrl, imageAlt) {\n    if (!gallery) {\n      if (imageUrl) swapHeroImage(document, imageUrl, imageAlt);\n      return;\n    }\n\n    if (mediaId && promoteMediaToFront(gallery, mediaId)) {\n      return;\n    }\n\n    // Featured frame not in DOM yet \u2014 paint hero immediately from product.js URL\n    if (imageUrl) {\n      swapHeroImage(gallery, imageUrl, imageAlt);\n      snapGalleryToHero(gallery);\n      return;\n    }\n\n    snapGalleryToHero(gallery);\n  }\n\n  function swapHeroImage(root, imageUrl, imageAlt) {\n    if (!imageUrl || !root) return;\n    // Always target the TOP / hero frame (not the buried colorway node)\n    var img =\n      root.querySelector('slideshow-slides > slideshow-slide:first-child img') ||\n      root.querySelector('slideshow-slide:first-of-type img') ||\n      root.querySelector('.product-media-container--tallest img') ||\n      root.querySelector('media-gallery img') ||\n      root.querySelector('img');\n    if (!img) return;\n\n    var abs = imageUrl;\n    try {\n      abs = new URL(imageUrl, window.location.origin).href;\n    } catch (e) {}\n\n    img.setAttribute('src', abs);\n    if (img.hasAttribute('srcset')) img.removeAttribute('srcset');\n    if (img.hasAttribute('srcSet')) img.removeAttribute('srcSet');\n    img.loading = 'eager';\n    img.setAttribute('fetchpriority', 'high');\n    if (imageAlt) img.setAttribute('alt', imageAlt);\n  }\n\n\n  function ensureHeroAttr() {\n    var gallery = document.querySelector('media-gallery');\n    if (!gallery) return;\n    var hero = gallery.getAttribute('data-pawlab-hero') || '';\n    if (hero) return;\n    var first = firstSlideMediaId(gallery) || firstRealFallback(gallery);\n    if (first) gallery.setAttribute('data-pawlab-hero', first);\n  }\n\n  function firstRealFallback(gallery) {\n    var els = gallery.querySelectorAll('[data-media-id]');\n    for (var i = 0; i < els.length; i++) {\n      var id = els[i].getAttribute('data-media-id') || '';\n      if (id && id.indexOf('pawlab-feat-') !== 0) return id;\n    }\n    return '';\n  }\n\n  // --- Skip identical media-gallery remounts ---\n  function patchMediaGalleryReplace() {\n    var orig = Element.prototype.replaceWith;\n    Element.prototype.replaceWith = function () {\n      var nodes = arguments;\n      if (\n        this &&\n        this.tagName === 'MEDIA-GALLERY' &&\n        nodes[0] &&\n        nodes[0].tagName === 'MEDIA-GALLERY'\n      ) {\n        var oldIds = mediaIdSignature(this);\n        var newIds = mediaIdSignature(nodes[0]);\n        if (oldIds && oldIds === newIds) {\n          // Keep live gallery (esp. video). Promote whatever the server put first.\n          var featuredId = firstSlideMediaId(nodes[0]);\n          if (featuredId) promoteMediaToFront(this, featuredId);\n          return this;\n        }\n      }\n      return orig.apply(this, nodes);\n    };\n  }\n\n  // --- Product JSON / optimistic price ---\n  function formatMoneyFromCents(cents) {\n    var amount = Number(cents);\n    if (!isFinite(amount)) return '';\n    amount = amount / 100;\n    // Match Clarity / Shopify money format used on this storefront (HKD$239.00)\n    return 'HKD$' + amount.toFixed(2);\n  }\n\n  function preloadUrl(src) {\n    if (!src || preloadedSrc.has(src)) return;\n    preloadedSrc.add(src);\n    try {\n      var img = new Image();\n      img.decoding = 'async';\n      img.src = src;\n    } catch (e) {}\n  }\n\n  function loadProductJson(handle) {\n    if (variantIndex && variantIndex.handle === handle) return Promise.resolve(variantIndex);\n    if (loadingProduct) return loadingProduct;\n    // .js has featured_image + prices in cents; .json often omits featured_image\n    loadingProduct = origFetch('/products/' + handle + '.js', { credentials: 'omit', cache: 'force-cache' })\n      .then(function (r) {\n        return r.json();\n      })\n      .then(function (product) {\n        var byOptions = new Map();\n        var byId = new Map();\n        var featuredByFirstOption = new Map();\n        (product.variants || []).forEach(function (v) {\n          var key = [v.option1 || '', v.option2 || '', v.option3 || ''].join('|||');\n          byOptions.set(key, v);\n          byId.set(String(v.id), v);\n          if (v.option1 && !featuredByFirstOption.has(v.option1)) {\n            var fi = v.featured_image || {};\n            var fm = v.featured_media || {};\n            featuredByFirstOption.set(v.option1, {\n              mediaId: String(fm.id || ''),\n              src: fi.src || (fm.preview_image && fm.preview_image.src) || '',\n              alt: fi.alt || fm.alt || v.option1,\n            });\n          }\n        });\n        variantIndex = {\n          handle: handle,\n          product: product,\n          byOptions: byOptions,\n          byId: byId,\n          featuredByFirstOption: featuredByFirstOption,\n        };\n        loadingProduct = null;\n        // Preload every first-option featured image so first click is paint-ready\n        featuredByFirstOption.forEach(function (f) {\n          if (f.src) preloadUrl(f.src);\n        });\n        (product.media || []).forEach(function (m) {\n          if (m.media_type === 'image' && m.src) preloadUrl(m.src);\n        });\n        return variantIndex;\n      })\n      .catch(function () {\n        loadingProduct = null;\n        return null;\n      });\n    return loadingProduct;\n  }\n\n  function selectedOptionValues(picker) {\n    var vals = [];\n    picker.querySelectorAll('fieldset').forEach(function (fs) {\n      var checked = fs.querySelector('input:checked');\n      vals.push(checked ? checked.value : '');\n    });\n    return vals;\n  }\n\n  function updatePriceDom(cents) {\n    var formatted = formatMoneyFromCents(cents);\n    if (!formatted) return;\n    // Update every visible price node (regular + non-hidden sale + sticky ATC)\n    var nodes = document.querySelectorAll(\n      'product-price .price__regular .price, product-price .price__sale:not(.price__hidden) .price, product-price .price-item--sale, product-price .price-item--regular, .sticky-add-to-cart__price .price, .sticky-add-to-cart__price'\n    );\n    if (!nodes.length) {\n      nodes = document.querySelectorAll('product-price .price, product-price .money');\n    }\n    Array.prototype.forEach.call(nodes, function (el) {\n      if (el.closest && el.closest('.price__hidden')) return;\n      if (el.childElementCount === 0) {\n        el.textContent = formatted;\n      } else {\n        var money = el.querySelector('.money, .price') || el;\n        money.textContent = formatted;\n      }\n    });\n  }\n\n  function applyVariantVisuals(variant, firstOptionValue) {\n    if (!variant) return;\n    updatePriceDom(variant.price);\n    var fi = variant.featured_image || {};\n    var fm = variant.featured_media || {};\n    // Only MediaImage ids match data-media-id in the gallery DOM.\n    var mediaId = String(fm.id || '');\n    var src = fi.src || (fm.preview_image && fm.preview_image.src) || '';\n    var alt = fi.alt || fm.alt || firstOptionValue || '';\n    if (variantIndex && variantIndex.featuredByFirstOption) {\n      var fb =\n        variantIndex.featuredByFirstOption.get(firstOptionValue || variant.option1 || '') ||\n        variantIndex.featuredByFirstOption.get(variant.option1 || '');\n      if (fb) {\n        mediaId = mediaId || fb.mediaId;\n        src = src || fb.src;\n        alt = alt || fb.alt;\n      }\n    }\n    if (src) preloadUrl(src);\n    var gallery = document.querySelector('media-gallery');\n    selectGalleryMedia(gallery, mediaId, src, alt);\n  }\n\n  function optimisticFromPicker(picker) {\n    if (!picker) return;\n    var handle = (picker.getAttribute('data-product-url') || '').split('/').pop();\n    if (!handle) {\n      var m = location.pathname.match(/\\/products\\/([^/?#]+)/);\n      handle = m && m[1];\n    }\n    if (!handle) return;\n\n    var vals = selectedOptionValues(picker);\n    var key = [vals[0] || '', vals[1] || '', vals[2] || ''].join('|||');\n\n    // Sync path when already warmed\n    if (variantIndex && variantIndex.handle === handle) {\n      var v = variantIndex.byOptions.get(key);\n      if (v) applyVariantVisuals(v, vals[0]);\n      return;\n    }\n\n    loadProductJson(handle).then(function (idx) {\n      if (!idx) return;\n      var variant = idx.byOptions.get(key);\n      if (!variant) return;\n      applyVariantVisuals(variant, vals[0]);\n    });\n  }\n\n  function scheduleVariantVisuals(picker) {\n    if (!picker) return;\n    optimisticFromPicker(picker);\n    setTimeout(function () {\n      optimisticFromPicker(picker);\n    }, 0);\n    setTimeout(function () {\n      optimisticFromPicker(picker);\n    }, 120);\n    setTimeout(function () {\n      optimisticFromPicker(picker);\n    }, 400);\n  }\n\n  function bindOptimistic() {\n    function fromEventTarget(t) {\n      if (!(t instanceof HTMLInputElement) && !(t instanceof HTMLSelectElement)) return;\n      var picker = t.closest && t.closest('variant-picker');\n      if (!picker) return;\n      scheduleVariantVisuals(picker);\n    }\n\n    // pointerdown: apply before theme starts section fetch (feels instant)\n    document.addEventListener(\n      'pointerdown',\n      function (e) {\n        var t = e.target;\n        if (!(t instanceof Element)) return;\n        var input = t.matches('input[type=\"radio\"]')\n          ? t\n          : (t.closest('label') && (t.closest('label').control || document.getElementById(t.closest('label').getAttribute('for') || '')));\n        if (!(input instanceof HTMLInputElement) || !input.closest('variant-picker')) return;\n        // Temporarily reflect the pending selection for lookup\n        var prev = input.checked;\n        var name = input.name;\n        var siblings = name\n          ? input.closest('fieldset')\n            ? input.closest('fieldset').querySelectorAll('input[type=\"radio\"]')\n            : []\n          : [];\n        var prevChecked = [];\n        Array.prototype.forEach.call(siblings, function (s) {\n          prevChecked.push(s.checked);\n          s.checked = s === input;\n        });\n        if (!siblings.length) input.checked = true;\n        scheduleVariantVisuals(input.closest('variant-picker'));\n        // Restore until real click/change commits (avoid fighting native radio)\n        Array.prototype.forEach.call(siblings, function (s, i) {\n          s.checked = prevChecked[i];\n        });\n        if (!siblings.length) input.checked = prev;\n      },\n      true\n    );\n\n    document.addEventListener(\n      'change',\n      function (e) {\n        fromEventTarget(e.target);\n      },\n      true\n    );\n\n    document.addEventListener('variant:selected', function (e) {\n      var picker =\n        e.target && e.target.closest\n          ? e.target.closest('variant-picker')\n          : document.querySelector('variant-picker');\n      scheduleVariantVisuals(picker);\n    });\n  }\n\n  function warmProductJson() {\n    var m = location.pathname.match(/\\/products\\/([^/?#]+)/);\n    if (m) loadProductJson(m[1]);\n  }\n\n  function idlePrefetchSiblings() {\n    var picker = document.querySelector('variant-picker');\n    if (!picker) return;\n    var run = function () {\n      var inputs = picker.querySelectorAll('fieldset input[type=\"radio\"]:not(:checked)');\n      // Cap to avoid flooding: all unchecked colors + a few sizes\n      var queue = [];\n      inputs.forEach(function (input) {\n        if (/Color|Pattern/i.test(input.name || '')) queue.push(input);\n      });\n      inputs.forEach(function (input) {\n        if (/Size/i.test(input.name || '') && queue.length < 12) queue.push(input);\n      });\n      queue.forEach(function (input, i) {\n        setTimeout(function () {\n          var url = buildOptionValuesUrl(picker, input);\n          if (url) prefetchUrl(url);\n        }, 80 * i);\n      });\n    };\n    if ('requestIdleCallback' in window) {\n      requestIdleCallback(run, { timeout: 2500 });\n    } else {\n      setTimeout(run, 1200);\n    }\n  }\n\n  onReady(function () {\n    if (!/\\/products\\//.test(location.pathname)) return;\n    patchMediaGalleryReplace();\n    ensureHeroAttr();\n    bindPrefetch();\n    bindOptimistic();\n    warmProductJson();\n    idlePrefetchSiblings();\n  });\n})();\n\n/* pawlab-snappy-cdn-bust v10-no-variant-scroll */\n"],
  "mappings": "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",
  "names": []
}
