{
  "version": 3,
  "sources": ["/cdn/shop/t/1559/assets/cust-community-ugc-video.js?community_ugc_revision=4"],
  "sourcesContent": ["/** InsCoder WANG.J 2026-07-21 B + Shoppable UGC dialog, media controls, carousel and cart actions. **/\nif (!customElements.get('community-ugc-video')) {\n  customElements.define(\n    'community-ugc-video',\n    class CommunityUgcVideo extends HTMLElement {\n      connectedCallback() {\n        if (this.initialized) return;\n        this.initialized = true;\n        this.dataset.ugcReady = 'true';\n\n        this.track = this.querySelector('[data-ugc-track]');\n        this.dialog = this.querySelector('[data-ugc-dialog]');\n        this.cards = [...this.querySelectorAll('[data-ugc-card]')];\n        this.panels = [...this.querySelectorAll('[data-ugc-panel]')];\n        this.progressItems = [...this.querySelectorAll(':scope > .cust-community-ugc__navigation .cust-community-ugc__progress span')];\n        this.isMobile = window.matchMedia('(max-width: 749px)').matches;\n        this.mobileStartIndex = 0;\n        this.activeIndex = 0;\n        this.sectionInView = false;\n        this.cardVisibility = new Map();\n\n        this.bindCarousel();\n        this.bindCardControls();\n        this.bindVisibilityPlayback();\n        this.bindDialog();\n        this.bindCartActions();\n        this.bindProgress();\n        this.bindProductProgress();\n        this.setActiveCard(this.activeIndex, false);\n        this.querySelectorAll('[data-ugc-card-play]').forEach((btn) => btn.classList.add('is-paused'));\n        // this.querySelectorAll('[data-ugc-toggle-play]').forEach((btn) => btn.classList.add('is-paused'));\n        if (this.isMobile && this.cards[this.mobileStartIndex]) {\n          window.requestAnimationFrame(() => {\n            const trackLeft = this.track.getBoundingClientRect().left;\n            const cardLeft = this.cards[this.mobileStartIndex].getBoundingClientRect().left;\n            this.track.scrollLeft += cardLeft - trackLeft - 15;\n          });\n        }\n      }\n\n      bindCarousel() {\n        let scrollFrame;\n        this.track?.addEventListener(\n          'scroll',\n          () => {\n            window.cancelAnimationFrame(scrollFrame);\n            scrollFrame = window.requestAnimationFrame(() => {\n              const trackCenter = this.track.scrollLeft + this.track.clientWidth / 2;\n              const nearestIndex = this.cards.reduce((nearest, card, index) => {\n                const cardCenter = card.offsetLeft + card.offsetWidth / 2;\n                const nearestCard = this.cards[nearest];\n                const nearestCenter = nearestCard.offsetLeft + nearestCard.offsetWidth / 2;\n                return Math.abs(cardCenter - trackCenter) < Math.abs(nearestCenter - trackCenter) ? index : nearest;\n              }, 0);\n              const activeCardChanged = nearestIndex !== this.activeIndex;\n              this.setActiveCard(nearestIndex, false);\n              if (this.isMobile && this.sectionInView && activeCardChanged) {\n                this.playCard(nearestIndex);\n              } else if (!this.isMobile && this.sectionInView) {\n                window.clearTimeout(this.trackScrollTimer);\n                this.trackScrollTimer = window.setTimeout(() => this.playCard(nearestIndex), 120);\n              }\n            });\n          },\n          { passive: true }\n        );\n\n        this.querySelector('[data-ugc-prev]')?.addEventListener('click', () => {\n          const previousIndex = Math.max(0, this.activeIndex - 1);\n          this.setActiveCard(previousIndex, true);\n          if (this.sectionInView) this.playCard(previousIndex);\n        });\n\n        this.querySelector('[data-ugc-next]')?.addEventListener('click', () => {\n          const nextIndex = Math.min(this.cards.length - 1, this.activeIndex + 1);\n          this.setActiveCard(nextIndex, true);\n          if (this.sectionInView) this.playCard(nextIndex);\n        });\n      }\n\n      setActiveCard(index, shouldScroll) {\n        if (!this.cards.length) return;\n        this.activeIndex = index;\n        this.cards.forEach((card, cardIndex) => {\n          const isActive = cardIndex === index;\n          card.classList.toggle('is-active', isActive);\n          const video = card.querySelector('video');\n          if (!video) return;\n          if (!isActive) {\n            delete card.dataset.ugcUserPaused;\n            this.pauseCard(card);\n          }\n        });\n        const progressIndex = index;\n        this.progressItems.forEach((item, itemIndex) => item.classList.toggle('is-active', itemIndex === progressIndex));\n        if (shouldScroll) this.cards[index].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n      }\n\n      playCard(index) {\n        const card = this.cards[index];\n        const video = card?.querySelector('video');\n        if (!card || !video || this.dialog?.open) return;\n\n        delete card.dataset.ugcUserPaused;\n        this.setActiveCard(index, false);\n        card.classList.add('is-playing');\n        this.syncCardPlayButton(card, false);\n        video.play().catch(() => {\n          card.classList.remove('is-playing');\n          this.syncCardPlayButton(card, true);\n        });\n      }\n\n      pauseCard(card, resetPlaying = true) {\n        const video = card?.querySelector('video');\n        if (!video) return;\n        video.pause();\n        if (resetPlaying) card.classList.remove('is-playing');\n        this.syncCardPlayButton(card, true);\n      }\n\n      pauseAllCards() {\n        this.cards.forEach((card) => this.pauseCard(card));\n      }\n\n      syncCardPlayButton(card, isPaused) {\n        const button = card?.querySelector('[data-ugc-card-play]');\n        if (!button) return;\n        button.classList.toggle('is-paused', isPaused);\n        button.setAttribute('aria-label', isPaused ? 'Play video' : 'Pause video');\n      }\n\n      /** InsCoder WANG.J 2026-08-04 B + Autoplay the desktop entry card and the most visible mobile card. **/\n      bindVisibilityPlayback() {\n        if (!('IntersectionObserver' in window) || !this.cards.length) return;\n\n        this.sectionObserver = new IntersectionObserver(\n          ([entry]) => {\n            const wasInView = this.sectionInView;\n            this.sectionInView = entry.isIntersecting && entry.intersectionRatio >= 0.1;\n\n            if (!this.sectionInView) {\n              this.pauseAllCards();\n              return;\n            }\n            if (wasInView) return;\n\n            if (this.isMobile) {\n              this.playMostVisibleMobileCard();\n            } else {\n              this.playCard(0);\n            }\n          },\n          { threshold: [0, 0.1, 0.25] }\n        );\n        this.sectionObserver.observe(this);\n\n        if (!this.isMobile) return;\n        this.cardObserver = new IntersectionObserver(\n          (entries) => {\n            entries.forEach((entry) => this.cardVisibility.set(entry.target, entry.intersectionRatio));\n            if (this.sectionInView) this.playMostVisibleMobileCard();\n          },\n          { threshold: [0, 0.35, 0.5, 0.75, 1] }\n        );\n        this.cards.forEach((card) => this.cardObserver.observe(card));\n      }\n\n      playMostVisibleMobileCard() {\n        let visibleIndex = -1;\n        let highestRatio = 0;\n        this.cards.forEach((card, index) => {\n          if (!card.querySelector('video')) return;\n          const ratio = this.cardVisibility.get(card) || 0;\n          if (ratio > highestRatio) {\n            highestRatio = ratio;\n            visibleIndex = index;\n          }\n        });\n        if (visibleIndex >= 0 && highestRatio >= 0.35 && visibleIndex !== this.activeIndex) {\n          this.playCard(visibleIndex);\n        } else if (visibleIndex >= 0 && highestRatio >= 0.35) {\n          const activeVideo = this.cards[visibleIndex].querySelector('video');\n          if (activeVideo?.paused && this.cards[visibleIndex].dataset.ugcUserPaused !== 'true') {\n            this.playCard(visibleIndex);\n          }\n        }\n      }\n      /** InsCoder WANG.J 2026-08-04 E + Autoplay the desktop entry card and the most visible mobile card. **/\n\n      bindCardControls() {\n        this.querySelectorAll('[data-ugc-card-play]').forEach((button) => {\n          button.addEventListener('click', (event) => {\n            event.stopPropagation();\n            const video = button.closest('[data-ugc-card]')?.querySelector('video');\n            if (!video) return;\n            if (video.paused) {\n              const card = button.closest('[data-ugc-card]');\n              this.playCard(this.cards.indexOf(card));\n            } else {\n              const card = button.closest('[data-ugc-card]');\n              card.dataset.ugcUserPaused = 'true';\n              this.pauseCard(card, false);\n            }\n          });\n        });\n\n        this.querySelectorAll('[data-ugc-card-sound]').forEach((button) => {\n          button.addEventListener('click', (event) => {\n            event.stopPropagation();\n            const video = button.closest('[data-ugc-card]')?.querySelector('video');\n            if (!video) return;\n            video.muted = !video.muted;\n            button.classList.toggle('is-muted', video.muted);\n            button.setAttribute('aria-label', video.muted ? 'Unmute video' : 'Mute video');\n          });\n        });\n\n        this.querySelectorAll('[data-ugc-open]').forEach((button) => {\n          button.addEventListener('click', () => this.openDialog(button.dataset.ugcOpen));\n        });\n\n        /** InsCoder WANG.J 2026-07-26 B + Hover card to apply is-active (desktop only). **/\n        if (!this.isMobile) {\n          this.cards.forEach((card) => {\n            card.addEventListener('mouseenter', () => {\n              const index = this.cards.indexOf(card);\n              if (index === -1) return;\n              this.playCard(index);\n            });\n            card.addEventListener('mouseleave', () => {\n              this.pauseCard(card);\n            });\n          });\n        }\n        /** InsCoder WANG.J 2026-07-26 E + Hover card to apply is-active (desktop only). **/\n      }\n\n      bindDialog() {\n        this.querySelectorAll('[data-ugc-close]').forEach((button) => {\n          button.addEventListener('click', () => this.closeDialog());\n        });\n\n        this.dialog?.addEventListener('click', (event) => {\n          if (event.target === this.dialog) this.closeDialog();\n        });\n\n        this.dialog?.addEventListener('cancel', (event) => {\n          event.preventDefault();\n          this.closeDialog();\n        });\n\n        this.querySelectorAll('[data-ugc-toggle-play]').forEach((button) => {\n          button.addEventListener('click', () => {\n            const video = button.closest('[data-ugc-panel]')?.querySelector('video');\n            if (!video) return;\n            if (video.paused) {\n              video.play().catch(() => {});\n              button.classList.remove('is-paused');\n              button.setAttribute('aria-label', 'Pause video');\n            } else {\n              video.pause();\n              button.classList.add('is-paused');\n              button.setAttribute('aria-label', 'Play video');\n            }\n          });\n        });\n\n        this.querySelectorAll('[data-ugc-toggle-sound]').forEach((button) => {\n          button.addEventListener('click', () => {\n            const video = button.closest('[data-ugc-panel]')?.querySelector('video');\n            if (!video) return;\n            video.muted = !video.muted;\n            button.classList.toggle('is-muted', video.muted);\n            button.setAttribute('aria-label', video.muted ? 'Unmute video' : 'Mute video');\n          });\n        });\n      }\n\n      openDialog(blockId) {\n        this.pauseAllCards();\n        this.panels.forEach((panel) => {\n          panel.hidden = panel.dataset.ugcPanel !== blockId;\n        });\n        this.dialog?.showModal();\n        const activePanel = this.panels.find((panel) => !panel.hidden);\n        activePanel?.querySelector('video')?.play().catch(() => {});\n      }\n\n      closeDialog() {\n        this.dialog?.querySelectorAll('video').forEach((video) => video.pause());\n        if (this.dialog?.open) this.dialog.close();\n        if (!this.sectionInView) return;\n        if (this.isMobile) {\n          this.playMostVisibleMobileCard();\n        } else {\n          this.playCard(this.activeIndex);\n        }\n      }\n\n      disconnectedCallback() {\n        this.sectionObserver?.disconnect();\n        this.cardObserver?.disconnect();\n        window.clearTimeout(this.trackScrollTimer);\n      }\n\n      bindCartActions() {\n        this.querySelectorAll('[data-ugc-add-one]').forEach((button) => {\n          button.addEventListener('click', () => {\n            const panel = button.closest('[data-ugc-panel]');\n            const item = button.closest('[data-variant-id]');\n            const id = Number(item?.dataset.variantId);\n            if (!panel || !id || item?.dataset.variantAvailable === 'false') return;\n            this.addItems(panel, [{ id, quantity: 1 }], button);\n          });\n        });\n\n        this.querySelectorAll('[data-ugc-quick-add]').forEach((button) => {\n          button.addEventListener('click', (event) => {\n            event.stopPropagation();\n            const card = button.closest('[data-ugc-card]');\n            if (!card) return;\n            const panel = this.panels.find((item) => item.dataset.ugcPanel === card.dataset.ugcCard);\n            if (!panel) return;\n            const quantities = new Map();\n            panel.querySelectorAll('[data-variant-id]').forEach((item) => {\n              const id = Number(item.dataset.variantId);\n              if (!id || item.dataset.variantAvailable === 'false') return;\n              quantities.set(id, (quantities.get(id) || 0) + 1);\n            });\n            const items = [...quantities].map(([id, quantity]) => ({ id, quantity }));\n            this.addItems(card, items, button);\n          });\n        });\n      }\n\n      async addItems(container, items, button) {\n        const status = container.querySelector('[data-ugc-status], [data-ugc-card-status]');\n        if (!items.length) {\n          if (status) status.textContent = 'Select products in the Theme Editor.';\n          return;\n        }\n\n        button.disabled = true;\n        if (status) status.textContent = 'Adding\u2026';\n\n        const controller = new AbortController();\n        const timeoutId = window.setTimeout(() => controller.abort(), 15000);\n\n        try {\n          const response = await fetch('/cart/add.js', {\n            method: 'POST',\n            credentials: 'same-origin',\n            headers: {\n              'Content-Type': 'application/json',\n              'X-Requested-With': 'XMLHttpRequest'\n            },\n            body: JSON.stringify({ items }),\n            signal: controller.signal\n          });\n          let data = null;\n          try {\n            data = await response.json();\n          } catch {\n            // Shopify may return an empty or non-JSON error response.\n          }\n          if (!response.ok) {\n            throw new Error(data?.description || data?.message || `Unable to add products (${response.status})`);\n          }\n          if (status) status.textContent = 'Added to cart';\n          const cartObj = document.querySelector('cart-notification');\n          if (cartObj) {\n            try {\n              await cartObj.renderContents();\n              await cartObj.open();\n            } catch (drawerError) {\n              console.error('Unable to refresh cart drawer:', drawerError);\n            }\n          }\n        } catch (error) {\n          const message = error.name === 'AbortError' ? 'Unable to add products. Please try again.' : error.message;\n          if (status) status.textContent = message;\n        } finally {\n          window.clearTimeout(timeoutId);\n          button.disabled = false;\n          window.setTimeout(() => {\n            if (status) status.textContent = '';\n          }, 3000);\n        }\n      }\n      bindProgress() {\n        const progressBars = [...this.querySelectorAll('[data-ugc-mobile-progress]')];\n        if (!progressBars.length) return;\n\n        this.querySelectorAll('video').forEach((video) => {\n          video.addEventListener(\n            'timeupdate',\n            () => {\n              const card = video.closest('[data-ugc-card]');\n              if (!card) return;\n              const progressBar = card.querySelector('[data-ugc-mobile-progress]');\n              if (!progressBar) return;\n              const percent = video.duration ? (video.currentTime / video.duration) * 100 : 0;\n              progressBar.style.setProperty('--ugc-progress', percent + '%');\n            },\n            { passive: true }\n          );\n        });\n      }\n\n      bindProductProgress() {\n        this.querySelectorAll('.cust-community-ugc__product-grid').forEach((grid) => {\n          const panel = grid.closest('[data-ugc-panel]');\n          if (!panel) return;\n          const progress = panel.querySelector('.cust-community-ugc__products .cust-community-ugc__progress');\n          if (!progress) return;\n          const segments = [...progress.querySelectorAll('span')];\n          const products = [...grid.querySelectorAll('.cust-community-ugc__product')];\n          if (!segments.length || !products.length) return;\n\n          grid.addEventListener(\n            'scroll',\n            () => {\n              const gridLeft = grid.scrollLeft;\n              const gridCenter = gridLeft + grid.clientWidth / 2;\n              let nearestIndex = 0;\n              let minDistance = Infinity;\n              products.forEach((product, index) => {\n                const productCenter = product.offsetLeft + product.offsetWidth / 2;\n                const distance = Math.abs(productCenter - gridCenter);\n                if (distance < minDistance) {\n                  minDistance = distance;\n                  nearestIndex = index;\n                }\n              });\n              segments.forEach((seg, i) => seg.classList.toggle('is-active', i === nearestIndex));\n            },\n            { passive: true }\n          );\n        });\n      }\n    }\n  );\n}\n/** InsCoder WANG.J 2026-07-21 E + Shoppable UGC dialog, media controls, carousel and cart actions. **/\n"],
  "mappings": "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",
  "names": []
}
