{
  "version": 3,
  "sources": ["/cdn/shop/t/31/assets/zuofun-polish.js?zf=20260927-gallery"],
  "sourcesContent": ["(() => {\n  const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\n  const revealSelector = '#MainContent > .shopify-section:not(:first-child)';\n  let revealObserver;\n  let scrollTicking = false;\n\n  const updateScrollState = () => {\n    const scrollTop = window.scrollY || document.documentElement.scrollTop;\n\n    document.body.classList.toggle('zuofun-has-scrolled', scrollTop > 12);\n    scrollTicking = false;\n  };\n\n  const onScroll = () => {\n    if (scrollTicking) return;\n    scrollTicking = true;\n    window.requestAnimationFrame(updateScrollState);\n  };\n\n  const revealImmediately = (element) => element.classList.add('is-zuofun-visible');\n\n  const prepareReveals = (scope = document) => {\n    const sections = scope.matches?.(revealSelector)\n      ? [scope]\n      : Array.from(scope.querySelectorAll?.(revealSelector) || []);\n\n    sections.forEach((section, index) => {\n      // A transformed ancestor changes the containing block for fixed UI.\n      // Keep product sticky purchase bars anchored to the viewport bottom.\n      if (section.querySelector('sticky-add-to-cart')) {\n        section.removeAttribute('data-zuofun-reveal');\n        section.classList.remove('is-zuofun-visible');\n        section.style.removeProperty('--zuofun-reveal-delay');\n        return;\n      }\n\n      if (section.hasAttribute('data-zuofun-reveal')) return;\n      section.setAttribute('data-zuofun-reveal', '');\n      section.style.setProperty('--zuofun-reveal-delay', `${Math.min(index * 35, 140)}ms`);\n\n      if (reduceMotion.matches || !revealObserver) revealImmediately(section);\n      else revealObserver.observe(section);\n    });\n  };\n\n  const prepareLazyVideos = (scope = document) => {\n    const deferredVideos = Array.from(scope.querySelectorAll?.('deferred-media[autoplay]') || []);\n\n    if (reduceMotion.matches || !('IntersectionObserver' in window)) return;\n\n    const videoObserver = new IntersectionObserver(\n      (entries, observer) => {\n        entries.forEach((entry) => {\n          if (!entry.isIntersecting) return;\n          const posterButton = entry.target.querySelector('.deferred-media__poster-button');\n          if (posterButton) posterButton.click();\n          observer.unobserve(entry.target);\n        });\n      },\n      { rootMargin: '320px 0px', threshold: 0.01 }\n    );\n\n    deferredVideos.forEach((video) => {\n      if (!video.querySelector('video, iframe')) videoObserver.observe(video);\n    });\n  };\n\n  const activateVisibleHeroVideo = () => {\n    document.querySelectorAll('[data-testid*=\"hero-\"][data-testid*=\"-video-\"]').forEach((video) => {\n      const isVisible = video.getClientRects().length > 0 && video.getBoundingClientRect().width > 0;\n      if (isVisible) {\n        video.play().catch(() => {});\n      } else {\n        video.pause();\n      }\n    });\n  };\n\n  if (!reduceMotion.matches && 'IntersectionObserver' in window) {\n    revealObserver = new IntersectionObserver(\n      (entries, observer) => {\n        entries.forEach((entry) => {\n          if (!entry.isIntersecting) return;\n          revealImmediately(entry.target);\n          observer.unobserve(entry.target);\n        });\n      },\n      { rootMargin: '0px 0px -8% 0px', threshold: 0.08 }\n    );\n  }\n\n  document.documentElement.classList.add('zuofun-motion-ready');\n  prepareReveals();\n  prepareLazyVideos();\n  activateVisibleHeroVideo();\n  updateScrollState();\n  window.addEventListener('scroll', onScroll, { passive: true });\n  window.addEventListener('resize', activateVisibleHeroVideo, { passive: true });\n\n  document.addEventListener('click', (event) => {\n    const trigger = event.target.closest(\n      '#quick-add-dialog dialog[open] .product-media__image, #quick-add-dialog dialog[open] .slideshow-control--previous, #quick-add-dialog dialog[open] .slideshow-control--next'\n    );\n    if (!trigger) return;\n\n    const gallery = trigger.closest('.product-information__media');\n    const slides = [...(gallery?.querySelectorAll('slideshow-slide') || [])];\n    if (slides.length < 2) return;\n\n    event.preventDefault();\n    event.stopImmediatePropagation();\n\n    const current = Math.max(0, slides.findIndex((slide) => slide.getAttribute('aria-hidden') === 'false'));\n    const direction = trigger.classList.contains('slideshow-control--previous') ? -1 : 1;\n    const target = (current + direction + slides.length) % slides.length;\n\n    slides.forEach((slide, index) => {\n      const selected = index === target;\n      slide.setAttribute('aria-hidden', String(!selected));\n      slide.toggleAttribute('data-zf-selected', selected);\n    });\n\n    gallery.querySelectorAll('.slideshow-controls__thumbnail').forEach((thumbnail, index) => {\n      thumbnail.setAttribute('aria-selected', String(index === target));\n    });\n  }, true);\n\n  document.addEventListener('shopify:section:load', (event) => {\n    prepareReveals(event.target);\n    prepareLazyVideos(event.target);\n    activateVisibleHeroVideo();\n  });\n  reduceMotion.addEventListener('change', () => {\n    document.querySelectorAll('[data-zuofun-reveal]').forEach(revealImmediately);\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
