{
  "version": 3,
  "sources": ["/cdn/shop/t/11/assets/product-short-videos-v5.js?cb=1781260558"],
  "sourcesContent": ["(function () {\n  'use strict';\n\n  var instances = new WeakMap();\n\n  function clamp(value, min, max) {\n    return Math.min(Math.max(value, min), max);\n  }\n\n  function getScrollStep(section) {\n    var firstSlide = section.querySelector('[data-product-short-video-slide]');\n    var gap = parseFloat(getComputedStyle(section).getPropertyValue('--product-short-videos-gap')) || 10;\n    return firstSlide ? firstSlide.getBoundingClientRect().width + gap : 180;\n  }\n\n  function getYouTubeId(rawUrl) {\n    try {\n      var url = new URL(rawUrl, window.location.origin);\n      var host = url.hostname.replace(/^www\\./, '');\n      var path = url.pathname.split('/').filter(Boolean);\n\n      if (host === 'youtu.be') return path[0] || '';\n      if (path[0] === 'shorts' || path[0] === 'embed') return path[1] || '';\n\n      return url.searchParams.get('v') || '';\n    } catch (error) {\n      return '';\n    }\n  }\n\n  function getTikTokId(rawUrl) {\n    var match = String(rawUrl || '').match(/\\/video\\/(\\d+)/);\n    return match ? match[1] : '';\n  }\n\n  function getInstagramEmbed(rawUrl) {\n    try {\n      var url = new URL(rawUrl, window.location.origin);\n      var match = url.pathname.match(/\\/(reel|p|tv)\\/([^/?#]+)/);\n      if (!match) return '';\n      return 'https://www.instagram.com/' + match[1] + '/' + match[2] + '/embed';\n    } catch (error) {\n      return '';\n    }\n  }\n\n  function isEmbedProvider(provider) {\n    return provider === 'youtube' || provider === 'tiktok' || provider === 'instagram';\n  }\n\n  function shouldUseNativeMp4Player() {\n    return window.innerWidth < 768 ||\n      (window.matchMedia && window.matchMedia('(hover: none)').matches) ||\n      (navigator.maxTouchPoints && navigator.maxTouchPoints > 0);\n  }\n\n  function isAppleMobileDevice() {\n    var userAgent = navigator.userAgent || '';\n    var platform = navigator.platform || '';\n\n    return /iP(hone|od|ad)/.test(userAgent) ||\n      (platform === 'MacIntel' && navigator.maxTouchPoints && navigator.maxTouchPoints > 1);\n  }\n\n  function canAutoplayProvider(provider) {\n    return provider === 'mp4' || provider === 'youtube' || provider === 'tiktok';\n  }\n\n  var QUALITY_ORDER = ['1080', '720', '480'];\n  var hlsManifestCache = {};\n  var hlsLibraryPromise = null;\n\n  function toPositiveNumber(value) {\n    var number = parseInt(value, 10);\n    return Number.isFinite(number) && number > 0 ? number : 0;\n  }\n\n  function inferHeightFromUrl(url) {\n    var match = String(url || '').match(/(?:^|[._-])(?:HD-|SD-)?(\\d{3,4})p(?:[._-]|$)/i);\n    if (!match) match = String(url || '').match(/(\\d{3,4})p/i);\n    return match ? toPositiveNumber(match[1]) : 0;\n  }\n\n  function getQualityFromHeight(height) {\n    if (height >= 1000) return '1080';\n    if (height >= 700) return '720';\n    if (height >= 400) return '480';\n    return height ? String(height) : 'original';\n  }\n\n  function getQualityLabel(quality) {\n    if (quality === 'auto') return 'Auto';\n    if (quality === 'original') return 'Original';\n    return quality + 'p';\n  }\n\n  function absolutizeUrl(url) {\n    if (!url) return '';\n    if (String(url).indexOf('//') === 0) return window.location.protocol + url;\n\n    try {\n      return new URL(url, window.location.origin).toString();\n    } catch (error) {\n      return url;\n    }\n  }\n\n  function getThemeAssetUrl(fileName) {\n    var currentScript = document.currentScript;\n\n    if (!currentScript || !currentScript.src) {\n      var scripts = document.querySelectorAll('script[src*=\"product-short-videos\"]');\n      currentScript = scripts.length ? scripts[scripts.length - 1] : null;\n    }\n\n    if (!currentScript || !currentScript.src) return fileName;\n\n    return currentScript.src.replace(/\\/assets\\/[^/?]+(?:\\?.*)?$/i, '/assets/' + fileName);\n  }\n\n  function loadHlsLibrary() {\n    if (canPlayHlsWithLibrary()) return Promise.resolve(true);\n    if (hlsLibraryPromise) return hlsLibraryPromise;\n\n    hlsLibraryPromise = new Promise(function (resolve) {\n      var script = document.createElement('script');\n      script.src = getThemeAssetUrl('hls.min.js');\n      script.async = true;\n      script.onload = function () {\n        resolve(canPlayHlsWithLibrary());\n      };\n      script.onerror = function () {\n        resolve(false);\n      };\n      document.head.appendChild(script);\n    });\n\n    return hlsLibraryPromise;\n  }\n\n  function isHlsUrl(url) {\n    return /\\.m3u8(?:\\?|$)/i.test(String(url || ''));\n  }\n\n  function isHlsSource(source) {\n    if (!source) return false;\n\n    var type = String(source.type || source.mime_type || '').toLowerCase();\n    var format = String(source.format || '').toLowerCase();\n\n    return source.isHls ||\n      format === 'm3u8' ||\n      type.indexOf('mpegurl') !== -1 ||\n      isHlsUrl(source.url);\n  }\n\n  function normalizeVideoSource(source) {\n    if (!source) return null;\n\n    var url = typeof source === 'string' ? source : source.url;\n    if (!url) return null;\n\n    var height = toPositiveNumber(source.height) || inferHeightFromUrl(url);\n    var width = toPositiveNumber(source.width);\n    var type = String(source.type || source.mime_type || '').toLowerCase();\n    var format = String(source.format || '').toLowerCase();\n\n    if (format === 'm3u8' || type.indexOf('mpegurl') !== -1 || isHlsUrl(url)) {\n      return null;\n    }\n\n    return {\n      url: absolutizeUrl(url),\n      type: type,\n      format: format,\n      height: height,\n      width: width,\n      quality: getQualityFromHeight(height)\n    };\n  }\n\n  function normalizeHlsMasterSource(source) {\n    if (!source) return null;\n\n    var url = typeof source === 'string' ? source : source.url;\n    if (!url || !isHlsSource(source)) return null;\n\n    var height = toPositiveNumber(source.height) || inferHeightFromUrl(url);\n    var width = toPositiveNumber(source.width);\n\n    return {\n      url: absolutizeUrl(url),\n      type: 'application/x-mpegURL',\n      format: 'm3u8',\n      height: height,\n      width: width,\n      quality: 'auto',\n      isHls: true,\n      isAuto: true\n    };\n  }\n\n  function getDerivedHlsUrlFromMp4(url) {\n    if (!url) return '';\n\n    var absoluteUrl = absolutizeUrl(url);\n    var withoutQuery = absoluteUrl.split('?')[0];\n    var query = absoluteUrl.indexOf('?') !== -1 ? absoluteUrl.slice(absoluteUrl.indexOf('?')) : '';\n    var match = withoutQuery.match(/\\/([^/]+)\\.[^/]+\\.mp4$/i);\n\n    if (!match) return '';\n\n    return withoutQuery.replace(/\\/([^/]+)\\.[^/]+\\.mp4$/i, '/' + match[1] + '.m3u8') + query;\n  }\n\n  function sortSourcesByHeight(sources) {\n    return sources.sort(function (a, b) {\n      if (!a.height && !b.height) return 0;\n      if (!a.height) return -1;\n      if (!b.height) return 1;\n      return a.height - b.height;\n    });\n  }\n\n  function mergeVideoSources(sources) {\n    var seen = {};\n    var merged = [];\n\n    sources.forEach(function (source) {\n      if (!source || !source.url || seen[source.url]) return;\n      seen[source.url] = true;\n      merged.push(source);\n    });\n\n    return sortSourcesByHeight(merged);\n  }\n\n  function getRawVideoSources(slide) {\n    if (!slide) return [];\n\n    var rawSources = [];\n    var sourceNode = slide.querySelector('[data-product-short-video-sources]');\n\n    if (sourceNode && sourceNode.textContent) {\n      try {\n        rawSources = JSON.parse(sourceNode.textContent);\n      } catch (error) {\n        rawSources = [];\n      }\n    }\n\n    if (!Array.isArray(rawSources)) rawSources = [];\n\n    if (slide.dataset.videoSrc) {\n      rawSources.push({\n        url: slide.dataset.videoSrc,\n        type: 'video/mp4'\n      });\n    }\n\n    return rawSources;\n  }\n\n  function getSlideVideoSources(slide) {\n    return mergeVideoSources(getRawVideoSources(slide).map(normalizeVideoSource));\n  }\n\n  function getSlideHlsMasterSource(slide) {\n    var rawSources = getRawVideoSources(slide);\n    var master = null;\n\n    rawSources.some(function (source) {\n      master = normalizeHlsMasterSource(source);\n      return !!master;\n    });\n\n    if (master) return master;\n\n    var derivedUrl = getDerivedHlsUrlFromMp4(slide && slide.dataset.videoSrc);\n    return derivedUrl ? normalizeHlsMasterSource({\n      url: derivedUrl,\n      type: 'application/x-mpegURL',\n      format: 'm3u8'\n    }) : null;\n  }\n\n  function parseHlsAttributeList(value) {\n    var attrs = {};\n    var pattern = /([A-Z0-9-]+)=(\"[^\"]*\"|[^,]*)/gi;\n    var match;\n\n    while ((match = pattern.exec(value || ''))) {\n      attrs[match[1].toUpperCase()] = String(match[2] || '').replace(/^\"|\"$/g, '');\n    }\n\n    return attrs;\n  }\n\n  function parseHlsManifest(masterSource, manifestText) {\n    var lines = String(manifestText || '').split(/\\r?\\n/);\n    var sources = [masterSource];\n\n    lines.forEach(function (line, index) {\n      var trimmed = line.trim();\n      if (trimmed.indexOf('#EXT-X-STREAM-INF:') !== 0) return;\n\n      var attrs = parseHlsAttributeList(trimmed.slice('#EXT-X-STREAM-INF:'.length));\n      var variantPath = '';\n\n      for (var i = index + 1; i < lines.length; i++) {\n        variantPath = lines[i].trim();\n        if (variantPath && variantPath.charAt(0) !== '#') break;\n      }\n\n      if (!variantPath || variantPath.charAt(0) === '#') return;\n\n      var resolution = String(attrs.RESOLUTION || '').match(/(\\d+)x(\\d+)/);\n      var width = resolution ? toPositiveNumber(resolution[1]) : 0;\n      var height = resolution ? toPositiveNumber(resolution[2]) : inferHeightFromUrl(variantPath);\n\n      sources.push({\n        url: new URL(variantPath, masterSource.url).toString(),\n        type: 'application/x-mpegURL',\n        format: 'm3u8',\n        height: height,\n        width: width,\n        bandwidth: toPositiveNumber(attrs.BANDWIDTH),\n        quality: getQualityFromHeight(height),\n        isHls: true\n      });\n    });\n\n    return mergeVideoSources(sources);\n  }\n\n  function getSlideHlsSources(slide) {\n    var masterSource = getSlideHlsMasterSource(slide);\n    if (!masterSource || !window.fetch) return Promise.resolve([]);\n\n    if (!hlsManifestCache[masterSource.url]) {\n      hlsManifestCache[masterSource.url] = fetch(masterSource.url, {\n        credentials: 'same-origin'\n      }).then(function (response) {\n        if (!response.ok) throw new Error('Unable to load HLS manifest');\n        return response.text();\n      }).then(function (manifestText) {\n        return parseHlsManifest(masterSource, manifestText);\n      }).catch(function () {\n        return [masterSource];\n      });\n    }\n\n    return hlsManifestCache[masterSource.url];\n  }\n\n  function getSlideVideoSourcesAsync(slide) {\n    if (!slide) return Promise.resolve([]);\n\n    if (slide._productShortVideoSourcesPromise) {\n      return slide._productShortVideoSourcesPromise;\n    }\n\n    var mp4Sources = getSlideVideoSources(slide);\n    slide._productShortVideoSourcesPromise = getSlideHlsSources(slide).then(function (hlsSources) {\n      return mergeVideoSources(mp4Sources.concat(hlsSources || []));\n    });\n\n    return slide._productShortVideoSourcesPromise;\n  }\n\n  function getConcreteSources(sources) {\n    return (sources || []).filter(function (source) {\n      return source && !source.isAuto;\n    });\n  }\n\n  function getHighestSource(sources) {\n    var concreteSources = getConcreteSources(sources);\n    return concreteSources.length ? concreteSources[concreteSources.length - 1] : null;\n  }\n\n  function findSourceForQuality(sources, quality) {\n    if (!sources || !sources.length) return null;\n    if (quality === 'auto') {\n      return sources.find(function (source) {\n        return source && source.isAuto;\n      }) || null;\n    }\n\n    var target = toPositiveNumber(quality);\n    var concreteSources = getConcreteSources(sources);\n    if (!target) return getHighestSource(sources);\n\n    var exact = concreteSources.find(function (source) {\n      return source.quality === quality || (source.height && Math.abs(source.height - target) <= 80);\n    });\n    if (exact) return exact;\n\n    var below = null;\n    concreteSources.forEach(function (source) {\n      if (source.height && source.height <= target) below = source;\n    });\n    if (below) return below;\n\n    return concreteSources.find(function (source) {\n      return source.height && source.height > target;\n    }) || getHighestSource(sources);\n  }\n\n  function hasConcreteQuality(sources, quality) {\n    var target = toPositiveNumber(quality);\n    return getConcreteSources(sources).some(function (source) {\n      return source.quality === quality || (source.height && Math.abs(source.height - target) <= 80);\n    });\n  }\n\n  function getAvailableQualityOptions(sources) {\n    if (!sources || !sources.length) return [];\n\n    var options = QUALITY_ORDER.filter(function (quality) {\n      return hasConcreteQuality(sources, quality);\n    }).map(function (quality) {\n      return {\n        value: quality,\n        label: getQualityLabel(quality)\n      };\n    });\n\n    var hasAutoSource = !!findSourceForQuality(sources, 'auto');\n    if (!options.length) return [];\n\n    if (hasAutoSource || options.length > 1) {\n      options.unshift({\n        value: 'auto',\n        label: 'Auto'\n      });\n    }\n\n    return options.length > 1 ? options : [];\n  }\n\n  function getPreviewVideoSource(slide) {\n    var sources = getSlideVideoSources(slide);\n    return findSourceForQuality(sources, '720') || findSourceForQuality(sources, '480') || getHighestSource(sources);\n  }\n\n  function getPreviewVideoSourceAsync(slide) {\n    return getSlideVideoSourcesAsync(slide).then(function (sources) {\n      return findSourceForQuality(sources, '720') || findSourceForQuality(sources, '480') || getHighestSource(sources);\n    });\n  }\n\n  function getDefaultModalSource(slide) {\n    var sources = getSlideVideoSources(slide);\n    return findSourceForQuality(sources, '1080') || getHighestSource(sources);\n  }\n\n  function getDefaultModalSourceAsync(slide) {\n    return getSlideVideoSourcesAsync(slide).then(function (sources) {\n      return findSourceForQuality(sources, '1080') || getHighestSource(sources);\n    });\n  }\n\n  function getAutoModalSourceFromSources(sources) {\n    var hlsAutoSource = findSourceForQuality(sources, 'auto');\n    if (hlsAutoSource) return hlsAutoSource;\n\n    var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;\n\n    if (connection && connection.saveData) {\n      return findSourceForQuality(sources, '480') || getHighestSource(sources);\n    }\n\n    if (connection && /(^|-)2g$|slow-2g/i.test(connection.effectiveType || '')) {\n      return findSourceForQuality(sources, '480') || getHighestSource(sources);\n    }\n\n    if (connection && /3g/i.test(connection.effectiveType || '')) {\n      return findSourceForQuality(sources, '720') || getHighestSource(sources);\n    }\n\n    var displayHeight = Math.min(window.innerHeight * 0.88, 1080) * (window.devicePixelRatio || 1);\n    if (displayHeight <= 820) {\n      return findSourceForQuality(sources, '720') || getHighestSource(sources);\n    }\n\n    return findSourceForQuality(sources, '1080') || getHighestSource(sources);\n  }\n\n  function setVideoSource(video, source, options) {\n    if (!video || !source || !source.url) return false;\n\n    options = options || {};\n\n    if (video.dataset.currentSrc === source.url) return true;\n\n    var resumeTime = options.keepTime ? video.currentTime || 0 : 0;\n    var shouldPlay = options.play === true || (options.play !== false && !video.paused);\n    var useHls = isHlsSource(source);\n\n    if (useHls && !canPlayNativeHls(video) && !canPlayHlsWithLibrary()) {\n      loadHlsLibrary().then(function (isReady) {\n        if (isReady) {\n          setVideoSource(video, source, options);\n        }\n      });\n      return true;\n    }\n\n    video.dataset.currentSrc = source.url;\n    video.dataset.currentQuality = source.quality || 'original';\n\n    if (resumeTime > 0) {\n      video.addEventListener('loadedmetadata', function handleLoadedMetadata() {\n        video.removeEventListener('loadedmetadata', handleLoadedMetadata);\n        try {\n          var maxTime = Number.isFinite(video.duration) ? Math.max(video.duration - 0.3, 0) : resumeTime;\n          video.currentTime = Math.min(resumeTime, maxTime);\n        } catch (error) {}\n      });\n    }\n\n    if (useHls && !canPlayNativeHls(video)) {\n      destroyVideoHls(video);\n      video.removeAttribute('src');\n\n      var hls = new window.Hls();\n      video._productShortVideosHls = hls;\n      hls.loadSource(source.url);\n      hls.attachMedia(video);\n    } else {\n      destroyVideoHls(video);\n      video.src = source.url;\n      video.load();\n    }\n\n    if (shouldPlay) {\n      video.play().catch(function () {});\n    }\n\n    return true;\n  }\n\n  function setActiveQualityButton(controls, quality) {\n    if (!controls) return;\n\n    controls.querySelectorAll('[data-product-short-video-quality]').forEach(function (button) {\n      var isActive = button.dataset.productShortVideoQuality === quality;\n      button.classList.toggle('is-active', isActive);\n      button.setAttribute('aria-pressed', isActive ? 'true' : 'false');\n    });\n  }\n\n  function canPlayNativeHls(video) {\n    if (!video || typeof video.canPlayType !== 'function') return false;\n\n    return !!(\n      video.canPlayType('application/vnd.apple.mpegurl') ||\n      video.canPlayType('application/x-mpegURL')\n    );\n  }\n\n  function canPlayHlsWithLibrary() {\n    return !!(window.Hls && typeof window.Hls.isSupported === 'function' && window.Hls.isSupported());\n  }\n\n  function destroyVideoHls(video) {\n    if (!video || !video._productShortVideosHls) return;\n\n    try {\n      video._productShortVideosHls.destroy();\n    } catch (error) {}\n\n    video._productShortVideosHls = null;\n  }\n\n  function buildEmbedUrl(provider, rawUrl, options) {\n    options = options || {};\n    var shouldAutoplay = options.autoplay !== false;\n\n    if (provider === 'youtube') {\n      var youtubeId = getYouTubeId(rawUrl);\n      if (!youtubeId) return '';\n\n      var youtubeParams = new URLSearchParams({\n        autoplay: shouldAutoplay ? '1' : '0',\n        mute: shouldAutoplay ? '1' : '0',\n        rel: '0',\n        modestbranding: '1',\n        playsinline: '1',\n        iv_load_policy: '3',\n        controls: options.controls === false ? '0' : '1',\n        fs: options.inline ? '0' : '1'\n      });\n\n      return 'https://www.youtube.com/embed/' + youtubeId + '?' + youtubeParams.toString();\n    }\n\n    if (provider === 'tiktok') {\n      var tiktokId = getTikTokId(rawUrl);\n      if (!tiktokId) return '';\n\n      var tiktokParams = new URLSearchParams({\n        autoplay: shouldAutoplay ? '1' : '0',\n        loop: '1',\n        mute: '1',\n        muted: '1',\n        playsinline: '1',\n        controls: '0',\n        rel: '0',\n        music_info: '0',\n        description: '0',\n        native_context_menu: '0',\n        closed_caption: '0',\n        play_button: '0',\n        progress_bar: '0',\n        volume_control: '0',\n        fullscreen_button: '0'\n      });\n\n      return 'https://www.tiktok.com/player/v1/' + tiktokId + '?' + tiktokParams.toString();\n    }\n\n    if (provider === 'instagram') {\n      return getInstagramEmbed(rawUrl);\n    }\n\n    return '';\n  }\n\n  function ProductShortVideos(section) {\n    this.section = section;\n    this.viewport = section.querySelector('[data-product-short-videos-viewport]');\n    this.track = section.querySelector('[data-product-short-videos-track]');\n    this.modal = section.querySelector('[data-product-short-videos-modal]');\n    this.modalMedia = section.querySelector('[data-product-short-videos-modal-media]');\n    this.prevButton = section.querySelector('[data-product-short-videos-prev]');\n    this.nextButton = section.querySelector('[data-product-short-videos-next]');\n    this.hoverPlay = section.dataset.hoverPlay === 'true';\n    this.mute = section.dataset.mute !== 'false';\n    this.videoTitleFallback = section.dataset.videoTitleFallback || 'Video';\n    this.resizeTimer = null;\n    this.scrollRaf = null;\n    this.scrollPlaybackTimer = null;\n    this.defaultPlaybackTimer = null;\n    this.defaultPlaybackIdle = null;\n    this.defaultPlaybackTriggered = false;\n    this.manualPlaybackPauseUntil = 0;\n    this.nativePlaybackVideo = null;\n    this.nativePlaybackSlide = null;\n    this.defaultPlaybackObserver = null;\n    this.lazyObserver = null;\n    this.isDestroyed = false;\n    this.drag = {\n      down: false,\n      startX: 0,\n      scrollLeft: 0,\n      moved: false,\n      suppressClick: false\n    };\n\n    this.init();\n  }\n\n  ProductShortVideos.prototype.init = function () {\n    this.updateColumns();\n    this.setupCards();\n    this.setupControls();\n    this.setupDrag();\n    this.setupModal();\n    this.setupLazyLoading();\n    this.setupDefaultPlayback();\n    this.updateOverflowState();\n\n    this.handleResize = this.onResize.bind(this);\n    window.addEventListener('resize', this.handleResize);\n  };\n\n  ProductShortVideos.prototype.onResize = function () {\n    var self = this;\n    clearTimeout(this.resizeTimer);\n    this.resizeTimer = setTimeout(function () {\n      self.updateColumns();\n      self.updateOverflowState();\n      self.scheduleVisiblePlayback(160);\n    }, 120);\n  };\n\n  ProductShortVideos.prototype.updateColumns = function () {\n    var desktopCards = parseFloat(this.section.dataset.desktopCards || '3');\n    var mobileCards = parseFloat(this.section.dataset.mobileCards || '1.65');\n    var isMobile = window.innerWidth < 768;\n    var columns = isMobile ? mobileCards : desktopCards;\n\n    if (!columns || columns < 1) columns = isMobile ? 1.65 : 3;\n    if (!isMobile) {\n      columns = clamp(columns, 1, 3);\n    } else {\n      columns = clamp(Math.max(columns, window.innerWidth < 390 ? 1.55 : 1.65), 1.5, 2);\n    }\n\n    this.section.style.setProperty('--product-short-videos-columns', columns);\n  };\n\n  ProductShortVideos.prototype.updateOverflowState = function () {\n    if (!this.viewport || !this.track) return;\n\n    var hasOverflow = this.viewport.scrollWidth > this.viewport.clientWidth + 2;\n    this.section.classList.toggle('has-overflow', hasOverflow);\n    this.track.classList.toggle('is-centered', !hasOverflow);\n\n    var isMobile = window.innerWidth < 768;\n    var controls = this.section.querySelector('[data-product-short-videos-controls]');\n    if (controls) {\n      controls.hidden = !hasOverflow || isMobile;\n    }\n\n    if (this.prevButton) {\n      this.prevButton.hidden = !hasOverflow || isMobile || this.viewport.scrollLeft <= 2;\n    }\n\n    if (this.nextButton) {\n      var atEnd = this.viewport.scrollLeft + this.viewport.clientWidth >= this.viewport.scrollWidth - 2;\n      this.nextButton.hidden = !hasOverflow || isMobile || atEnd;\n    }\n  };\n\n  ProductShortVideos.prototype.loadVideo = function (card, options) {\n    var video = card && card.querySelector('video');\n    if (!video) return null;\n\n    options = options || {};\n    if (options.preload) {\n      video.preload = options.preload;\n    }\n\n    var slide = card.closest('[data-product-short-video-slide]');\n\n    if (!video.getAttribute('src') && video.dataset.src) {\n      var previewSource = getPreviewVideoSource(slide) || normalizeVideoSource({\n        url: video.dataset.src,\n        type: 'video/mp4'\n      });\n\n      if (previewSource) {\n        setVideoSource(video, previewSource, { play: false });\n      } else {\n        video.setAttribute('src', video.dataset.src);\n        video.load();\n      }\n\n      video.removeAttribute('data-src');\n    }\n\n    if (slide && !video.dataset.productShortVideoPreviewResolved) {\n      video.dataset.productShortVideoPreviewResolved = 'true';\n      getPreviewVideoSourceAsync(slide).then(function (previewSource) {\n        if (!previewSource || video.dataset.currentSrc === previewSource.url) return;\n        if (!document.documentElement.contains(video)) return;\n\n        setVideoSource(video, previewSource, {\n          keepTime: true,\n          play: !video.paused\n        });\n      });\n    }\n\n    return video;\n  };\n\n  ProductShortVideos.prototype.createEmbedIframe = function (provider, rawUrl, title, options) {\n    var embedUrl = buildEmbedUrl(provider, rawUrl, options);\n\n    if (!embedUrl) return null;\n\n    var iframe = document.createElement('iframe');\n    iframe.src = embedUrl;\n    iframe.title = title || this.videoTitleFallback || 'Video';\n    iframe.loading = 'lazy';\n    iframe.allow = 'autoplay; encrypted-media; picture-in-picture; fullscreen';\n    iframe.allowFullscreen = true;\n    iframe.dataset.provider = provider;\n    iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin allow-presentation');\n\n    return iframe;\n  };\n\n  ProductShortVideos.prototype.clearInlineEmbeds = function (exceptSlide) {\n    this.section.querySelectorAll('[data-product-short-video-inline-frame]').forEach(function (iframe) {\n      var slide = iframe.closest('[data-product-short-video-slide]');\n      if (exceptSlide && slide === exceptSlide) return;\n\n      var card = slide && slide.querySelector('[data-product-short-video-card]');\n      var playButton = card && card.querySelector('.social-video-card__direct-play-button');\n\n      iframe.remove();\n\n      if (card) {\n        card.classList.remove('playing', 'is-embed-playing');\n      }\n\n      if (playButton) {\n        playButton.classList.remove('is-playing');\n      }\n    });\n  };\n\n  ProductShortVideos.prototype.pauseInlineVideos = function (exceptVideo, exceptSlide) {\n    this.section.querySelectorAll('.product-short-videos__video').forEach(function (video) {\n      if (video === exceptVideo) return;\n\n      video.pause();\n      var card = video.closest('[data-product-short-video-card]');\n      if (card) {\n        card.classList.remove('playing');\n        var playButton = card.querySelector('.social-video-card__direct-play-button');\n        if (playButton) playButton.classList.remove('is-playing');\n      }\n    });\n\n    this.clearInlineEmbeds(exceptSlide || null);\n  };\n\n  ProductShortVideos.prototype.toggleInlineVideo = function (card, slide) {\n    var video = this.loadVideo(card, { preload: 'auto' });\n    if (!video) return;\n    var wasPaused = video.paused;\n\n    this.pauseInlineVideos(video, slide || null);\n\n    if (wasPaused) {\n      this.manualPlaybackPauseUntil = 0;\n      video.muted = true;\n      video.defaultMuted = true;\n      video.play().catch(function () {});\n    } else {\n      this.manualPlaybackPauseUntil = Date.now() + 1600;\n      video.pause();\n    }\n  };\n\n  ProductShortVideos.prototype.playInlineEmbed = function (slide, options) {\n    if (!slide || !isEmbedProvider(slide.dataset.provider)) return false;\n\n    options = options || {};\n\n    var card = slide.querySelector('[data-product-short-video-card]');\n    var media = slide.querySelector('.product-short-videos__media');\n    var existingIframe = slide.querySelector('[data-product-short-video-inline-frame]');\n\n    if (!card || !media) return false;\n\n    if (existingIframe) {\n      if (options.auto) return true;\n\n      this.manualPlaybackPauseUntil = Date.now() + 1600;\n      existingIframe.remove();\n      card.classList.remove('playing', 'is-embed-playing');\n      var currentPlayButton = card.querySelector('.social-video-card__direct-play-button');\n      if (currentPlayButton) currentPlayButton.classList.remove('is-playing');\n      return false;\n    }\n\n    var provider = slide.dataset.provider;\n    var rawUrl = slide.dataset.videoUrl || '';\n    var title = slide.dataset.videoTitle || this.videoTitleFallback || 'Video';\n    var iframe = this.createEmbedIframe(provider, rawUrl, title, {\n      inline: true,\n      autoplay: true,\n      controls: provider !== 'tiktok'\n    });\n\n    if (!iframe) return false;\n\n    iframe.className = 'product-short-videos__inline-frame';\n    iframe.setAttribute('data-product-short-video-inline-frame', '');\n\n    if (!options.auto) this.manualPlaybackPauseUntil = 0;\n    this.pauseInlineVideos(null, slide);\n    media.appendChild(iframe);\n\n    card.classList.add('playing', 'is-embed-playing');\n    var playButton = card.querySelector('.social-video-card__direct-play-button');\n    if (playButton) playButton.classList.add('is-playing');\n\n    return true;\n  };\n\n  ProductShortVideos.prototype.playSlideInline = function (slide, options) {\n    if (!slide) return false;\n\n    options = options || {};\n    if (options.auto && Date.now() < this.manualPlaybackPauseUntil) return false;\n    if (this.nativePlaybackVideo) return false;\n\n    var provider = slide.dataset.provider;\n    var card = slide.querySelector('[data-product-short-video-card]');\n\n    if (provider === 'mp4') {\n      var video = this.loadVideo(card, { preload: 'auto' });\n      if (!video) return false;\n\n      video.muted = true;\n      video.defaultMuted = true;\n      this.pauseInlineVideos(video, slide);\n      this.defaultPlaybackTriggered = true;\n      video.play().catch(function () {});\n\n      return true;\n    }\n\n    if (isEmbedProvider(provider)) {\n      return this.playInlineEmbed(slide, options);\n    }\n\n    return false;\n  };\n\n  ProductShortVideos.prototype.openNativeMp4Player = function (slide, sourceVideo) {\n    if (!slide) return false;\n    var self = this;\n\n    var card = slide.querySelector('[data-product-short-video-card]');\n    var video = card ? this.loadVideo(card, { preload: 'auto' }) : sourceVideo;\n    if (!video) return false;\n\n    this.closeModal();\n    this.pauseInlineVideos(video, slide);\n    this.clearInlineEmbeds(slide);\n    clearTimeout(this.scrollPlaybackTimer);\n    this.scrollPlaybackTimer = null;\n    this.manualPlaybackPauseUntil = Date.now() + 60000;\n    this.nativePlaybackVideo = video;\n    this.nativePlaybackSlide = slide;\n\n    var hadControls = video.controls;\n    var hadMuted = video.muted;\n    var hadDefaultMuted = video.defaultMuted;\n    var usesWebkitNativePlayer = isAppleMobileDevice() && (\n      typeof video.webkitEnterFullscreen === 'function' ||\n      typeof video.webkitEnterFullScreen === 'function'\n    );\n\n    video.controls = true;\n    video.preload = 'auto';\n    video.muted = false;\n    video.defaultMuted = false;\n\n    var restoreControls = function () {\n      video.controls = hadControls;\n      video.muted = hadMuted;\n      video.defaultMuted = hadDefaultMuted;\n      if (self.nativePlaybackVideo === video) {\n        self.nativePlaybackVideo = null;\n        self.nativePlaybackSlide = null;\n        self.manualPlaybackPauseUntil = Date.now() + 1600;\n      }\n      video.removeEventListener('webkitendfullscreen', restoreControls);\n      document.removeEventListener('fullscreenchange', restoreFromDocumentFullscreen);\n      document.removeEventListener('webkitfullscreenchange', restoreFromDocumentFullscreen);\n    };\n\n    var restoreFromDocumentFullscreen = function () {\n      var fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement;\n      if (fullscreenElement === video) return;\n\n      restoreControls();\n    };\n\n    video.addEventListener('webkitendfullscreen', restoreControls);\n    if (!usesWebkitNativePlayer) {\n      document.addEventListener('fullscreenchange', restoreFromDocumentFullscreen);\n      document.addEventListener('webkitfullscreenchange', restoreFromDocumentFullscreen);\n    }\n\n    var enteredNativePlayer = false;\n\n    try {\n      if (typeof video.webkitEnterFullscreen === 'function') {\n        video.webkitEnterFullscreen();\n        enteredNativePlayer = true;\n      } else if (typeof video.webkitEnterFullScreen === 'function') {\n        video.webkitEnterFullScreen();\n        enteredNativePlayer = true;\n      } else if (typeof video.requestFullscreen === 'function') {\n        video.requestFullscreen().catch(function () {});\n        enteredNativePlayer = true;\n      } else if (typeof video.webkitRequestFullscreen === 'function') {\n        video.webkitRequestFullscreen();\n        enteredNativePlayer = true;\n      }\n    } catch (error) {\n      enteredNativePlayer = false;\n    }\n\n    if (!enteredNativePlayer) {\n      restoreControls();\n      return false;\n    }\n\n    video.play().catch(function () {});\n    return true;\n  };\n\n  ProductShortVideos.prototype.openModal = function (slide, sourceVideo) {\n    if (!this.modal || !this.modalMedia || !slide) return;\n\n    var provider = slide.dataset.provider;\n    var videoSrc = slide.dataset.videoSrc || '';\n    var rawUrl = slide.dataset.videoUrl || '';\n    var title = slide.dataset.videoTitle || this.videoTitleFallback || 'Video';\n\n    if (provider === 'mp4') {\n      if (isAppleMobileDevice()) {\n        this.openNativeMp4Player(slide, sourceVideo);\n        return;\n      }\n\n      if (shouldUseNativeMp4Player() &&\n          !getSlideHlsMasterSource(slide) &&\n          !getAvailableQualityOptions(getSlideVideoSources(slide)).length &&\n          this.openNativeMp4Player(slide, sourceVideo)) {\n        return;\n      }\n    }\n\n    this.pauseInlineVideos(sourceVideo || null);\n    this.modalMedia.innerHTML = '';\n\n    if (provider === 'mp4' && videoSrc) {\n      var modalSource = getDefaultModalSource(slide) || normalizeVideoSource({\n        url: sourceVideo && (sourceVideo.currentSrc || sourceVideo.src) ? sourceVideo.currentSrc || sourceVideo.src : videoSrc,\n        type: 'video/mp4'\n      });\n\n      if (!modalSource) return;\n\n      var video = document.createElement('video');\n      video.controls = true;\n      video.autoplay = true;\n      video.loop = true;\n      video.playsInline = true;\n      video.muted = this.mute;\n      video.preload = 'auto';\n      this.modalMedia.appendChild(video);\n      setVideoSource(video, modalSource, { play: true });\n      this.renderQualityControls(slide, video, modalSource.quality);\n    } else {\n      var iframe = this.createEmbedIframe(provider, rawUrl, title, {\n        inline: false,\n        autoplay: true,\n        controls: provider !== 'tiktok'\n      });\n\n      if (!iframe) return;\n\n      this.modalMedia.appendChild(iframe);\n    }\n\n    this.modal.classList.add('is-open');\n    this.modal.setAttribute('aria-hidden', 'false');\n    if (this.modal.parentNode !== document.body) {\n      document.body.appendChild(this.modal);\n    }\n    document.body.style.overflow = 'hidden';\n\n    if (sourceVideo) {\n      sourceVideo.pause();\n    }\n  };\n\n  ProductShortVideos.prototype.renderQualityControls = function (slide, video, currentQuality) {\n    if (!this.modalMedia || !slide || !video) return;\n\n    var self = this;\n    var renderControls = function (sources) {\n      if (!self.modalMedia || !document.documentElement.contains(video)) return;\n\n      var existingControls = self.modalMedia.querySelector('.product-short-videos__modal-quality');\n      if (existingControls) existingControls.remove();\n\n      var options = getAvailableQualityOptions(sources);\n      if (!options.length) return;\n\n      var controls = document.createElement('div');\n      controls.className = 'product-short-videos__modal-quality';\n      controls.setAttribute('aria-label', 'Video quality');\n\n      options.forEach(function (option) {\n        var button = document.createElement('button');\n        button.type = 'button';\n        button.className = 'product-short-videos__modal-quality-button';\n        button.dataset.productShortVideoQuality = option.value;\n        button.textContent = option.label;\n        button.setAttribute('aria-pressed', 'false');\n\n        button.addEventListener('click', function () {\n          var selectedQuality = button.dataset.productShortVideoQuality;\n          var selectedSource = selectedQuality === 'auto'\n            ? getAutoModalSourceFromSources(sources)\n            : findSourceForQuality(sources, selectedQuality);\n\n          if (!selectedSource) return;\n\n          if (setVideoSource(video, selectedSource, {\n            keepTime: true,\n            play: true\n          })) {\n            setActiveQualityButton(controls, selectedQuality);\n          }\n        });\n\n        controls.appendChild(button);\n      });\n\n      self.modalMedia.appendChild(controls);\n      setActiveQualityButton(controls, currentQuality || video.dataset.currentQuality || '1080');\n    };\n\n    renderControls(getSlideVideoSources(slide));\n    getSlideVideoSourcesAsync(slide).then(renderControls);\n  };\n\n  ProductShortVideos.prototype.closeModal = function () {\n    if (!this.modal || !this.modalMedia) return;\n\n    this.modal.classList.remove('is-open');\n    this.modal.setAttribute('aria-hidden', 'true');\n    this.modalMedia.querySelectorAll('video').forEach(destroyVideoHls);\n    this.modalMedia.innerHTML = '';\n    document.body.style.overflow = '';\n  };\n\n  ProductShortVideos.prototype.setupCards = function () {\n    var self = this;\n\n    this.section.querySelectorAll('[data-product-short-video-card]').forEach(function (card) {\n      var slide = card.closest('[data-product-short-video-slide]');\n      var provider = slide ? slide.dataset.provider : '';\n      var fullscreenButton = card.querySelector('[data-product-short-video-fullscreen]');\n      var playButton = card.querySelector('.social-video-card__direct-play-button');\n      var video = card.querySelector('video');\n\n      card.addEventListener('click', function (event) {\n        if (event.target.closest('a') || event.target.closest('[data-product-short-video-fullscreen]')) return;\n        if (!slide) return;\n\n        event.preventDefault();\n\n        if (provider === 'mp4') {\n          self.toggleInlineVideo(card, slide);\n        } else if (isEmbedProvider(provider)) {\n          self.playInlineEmbed(slide);\n        } else {\n          self.openModal(slide, video || null);\n        }\n      });\n\n      card.addEventListener('keydown', function (event) {\n        if (event.key !== 'Enter' && event.key !== ' ') return;\n\n        event.preventDefault();\n        if (provider === 'mp4') {\n          self.toggleInlineVideo(card, slide);\n        } else if (isEmbedProvider(provider)) {\n          self.playInlineEmbed(slide);\n        } else {\n          self.openModal(slide, video || null);\n        }\n      });\n\n      if (fullscreenButton) {\n        fullscreenButton.addEventListener('click', function (event) {\n          event.preventDefault();\n          event.stopPropagation();\n\n          if (provider === 'mp4' && isAppleMobileDevice()) {\n            self.openNativeMp4Player(slide, video || null);\n            return;\n          }\n\n          self.openModal(slide, video || null);\n        });\n      }\n\n      if (video) {\n        video.addEventListener('play', function () {\n          card.classList.add('playing');\n          if (playButton) playButton.classList.add('is-playing');\n        });\n\n        video.addEventListener('pause', function () {\n          card.classList.remove('playing');\n          if (playButton) playButton.classList.remove('is-playing');\n        });\n\n        video.addEventListener('ended', function () {\n          card.classList.remove('playing');\n          if (playButton) playButton.classList.remove('is-playing');\n        });\n      }\n\n      if (self.hoverPlay && provider === 'mp4') {\n        card.addEventListener('mouseenter', function () {\n          if (window.innerWidth < 768) return;\n          var loadedVideo = self.loadVideo(card, { preload: 'auto' });\n          if (!loadedVideo) return;\n\n          self.manualPlaybackPauseUntil = 0;\n          loadedVideo.muted = true;\n          loadedVideo.defaultMuted = true;\n          self.pauseInlineVideos(loadedVideo, slide);\n          loadedVideo.play().catch(function () {});\n        });\n      }\n    });\n  };\n\n  ProductShortVideos.prototype.setupControls = function () {\n    var self = this;\n    if (!this.viewport) return;\n\n    if (this.prevButton) {\n      this.prevButton.addEventListener('click', function () {\n        self.viewport.scrollBy({ left: -getScrollStep(self.section), behavior: 'smooth' });\n      });\n    }\n\n    if (this.nextButton) {\n      this.nextButton.addEventListener('click', function () {\n        self.viewport.scrollBy({ left: getScrollStep(self.section), behavior: 'smooth' });\n      });\n    }\n\n    this.viewport.addEventListener('scroll', function () {\n      if (!self.scrollRaf) {\n        self.scrollRaf = window.requestAnimationFrame(function () {\n          self.scrollRaf = null;\n          self.updateOverflowState();\n        });\n      }\n\n      self.scheduleVisiblePlayback();\n    }, { passive: true });\n\n    this.viewport.addEventListener('touchend', function () {\n      self.scheduleVisiblePlayback(220);\n    }, { passive: true });\n\n    this.viewport.addEventListener('scrollend', function () {\n      self.scheduleVisiblePlayback(40);\n    }, { passive: true });\n  };\n\n  ProductShortVideos.prototype.scheduleVisiblePlayback = function (delay) {\n    var self = this;\n\n    clearTimeout(this.scrollPlaybackTimer);\n    this.scrollPlaybackTimer = window.setTimeout(function () {\n      self.scrollPlaybackTimer = null;\n      if (Date.now() < self.manualPlaybackPauseUntil) return;\n      self.playMostVisibleVideo();\n    }, typeof delay === 'number' ? delay : 180);\n  };\n\n  ProductShortVideos.prototype.playMostVisibleVideo = function () {\n    if (!this.viewport) return false;\n    if (Date.now() < this.manualPlaybackPauseUntil) return false;\n\n    var viewportRect = this.viewport.getBoundingClientRect();\n    var bestSlide = null;\n    var bestRatio = 0;\n\n    this.section.querySelectorAll('[data-product-short-video-slide]').forEach(function (slide) {\n      if (!canAutoplayProvider(slide.dataset.provider)) return;\n\n      var rect = slide.getBoundingClientRect();\n      var visibleWidth = Math.max(0, Math.min(rect.right, viewportRect.right) - Math.max(rect.left, viewportRect.left));\n      var visibleHeight = Math.max(0, Math.min(rect.bottom, viewportRect.bottom) - Math.max(rect.top, viewportRect.top));\n      var area = Math.max(1, rect.width * rect.height);\n      var ratio = (visibleWidth * visibleHeight) / area;\n\n      if (ratio > bestRatio) {\n        bestRatio = ratio;\n        bestSlide = slide;\n      }\n    });\n\n    if (!bestSlide || bestRatio < 0.35) return false;\n\n    return this.playSlideInline(bestSlide, { auto: true });\n  };\n\n  ProductShortVideos.prototype.scheduleDefaultPlayback = function (delay) {\n    var self = this;\n\n    if (this.defaultPlaybackTriggered) return;\n\n    clearTimeout(this.defaultPlaybackTimer);\n    if (this.defaultPlaybackIdle && 'cancelIdleCallback' in window) {\n      window.cancelIdleCallback(this.defaultPlaybackIdle);\n      this.defaultPlaybackIdle = null;\n    }\n\n    this.defaultPlaybackTimer = window.setTimeout(function () {\n      self.defaultPlaybackTimer = null;\n      if (self.isDestroyed || self.defaultPlaybackTriggered) return;\n\n      if ('requestIdleCallback' in window) {\n        self.defaultPlaybackIdle = window.requestIdleCallback(function () {\n          self.defaultPlaybackIdle = null;\n          if (!self.isDestroyed) self.playFirstVideo();\n        }, { timeout: 1200 });\n      } else {\n        self.playFirstVideo();\n      }\n    }, typeof delay === 'number' ? delay : 500);\n  };\n\n  ProductShortVideos.prototype.setupDrag = function () {\n    var self = this;\n    var viewport = this.viewport;\n    if (!viewport) return;\n\n    viewport.addEventListener('pointerdown', function (event) {\n      if (event.pointerType === 'touch') return;\n      if (event.button !== 0) return;\n\n      self.drag.down = true;\n      self.drag.startX = event.clientX;\n      self.drag.scrollLeft = viewport.scrollLeft;\n      self.drag.moved = false;\n    });\n\n    viewport.addEventListener('pointermove', function (event) {\n      if (event.pointerType === 'touch') return;\n      if (!self.drag.down) return;\n\n      var delta = event.clientX - self.drag.startX;\n      if (Math.abs(delta) > 4) {\n        self.drag.moved = true;\n        viewport.classList.add('is-dragging');\n        viewport.scrollLeft = self.drag.scrollLeft - delta;\n        event.preventDefault();\n      }\n    });\n\n    ['pointerup', 'pointercancel', 'pointerleave'].forEach(function (eventName) {\n      viewport.addEventListener(eventName, function () {\n        if (!self.drag.down) return;\n\n        self.drag.down = false;\n        viewport.classList.remove('is-dragging');\n        self.drag.suppressClick = self.drag.moved;\n        if (self.drag.moved) self.scheduleVisiblePlayback(80);\n        self.drag.moved = false;\n      });\n    });\n\n    viewport.addEventListener('click', function (event) {\n      if (!self.drag.suppressClick) return;\n\n      event.preventDefault();\n      event.stopPropagation();\n      self.drag.suppressClick = false;\n    }, true);\n  };\n\n  ProductShortVideos.prototype.setupLazyLoading = function () {\n    var self = this;\n\n    if (!('IntersectionObserver' in window)) return;\n\n    this.lazyObserver = new IntersectionObserver(function (entries) {\n      entries.forEach(function (entry) {\n        if (!entry.isIntersecting) return;\n\n        var card = entry.target.querySelector('[data-product-short-video-card]');\n        if (card) self.loadVideo(card, { preload: 'metadata' });\n        self.lazyObserver.unobserve(entry.target);\n      });\n    }, {\n      root: this.viewport || null,\n      rootMargin: '0px 80px',\n      threshold: 0.01\n    });\n\n    this.section.querySelectorAll('[data-provider=\"mp4\"]').forEach(function (slide) {\n      self.lazyObserver.observe(slide);\n    });\n  };\n\n  ProductShortVideos.prototype.setupDefaultPlayback = function () {\n    var self = this;\n\n    if (!('IntersectionObserver' in window)) {\n      this.scheduleDefaultPlayback(600);\n      return;\n    }\n\n    this.defaultPlaybackObserver = new IntersectionObserver(function (entries) {\n      entries.forEach(function (entry) {\n        if (!entry.isIntersecting) return;\n\n        self.scheduleDefaultPlayback(500);\n        if (self.defaultPlaybackObserver) self.defaultPlaybackObserver.unobserve(self.section);\n      });\n    }, {\n      threshold: 0.25\n    });\n\n    this.defaultPlaybackObserver.observe(this.section);\n  };\n\n  ProductShortVideos.prototype.playFirstVideo = function () {\n    if (this.defaultPlaybackTriggered) return false;\n\n    var firstSlide = this.section.querySelector('[data-product-short-video-slide]');\n    if (!firstSlide || !canAutoplayProvider(firstSlide.dataset.provider)) return false;\n\n    return this.playSlideInline(firstSlide, { auto: true });\n  };\n\n  ProductShortVideos.prototype.setupModal = function () {\n    var self = this;\n    var closeButton = this.section.querySelector('[data-product-short-videos-close]');\n\n    if (!this.modal) return;\n\n    if (closeButton) {\n      closeButton.addEventListener('click', function () {\n        self.closeModal();\n      });\n    }\n\n    this.modal.addEventListener('click', function (event) {\n      if (event.target === self.modal) {\n        self.closeModal();\n      }\n    });\n\n    this.handleEscape = function (event) {\n      if (event.key === 'Escape' && self.modal.classList.contains('is-open')) {\n        self.closeModal();\n      }\n    };\n\n    document.addEventListener('keydown', this.handleEscape);\n  };\n\n  ProductShortVideos.prototype.destroy = function () {\n    this.isDestroyed = true;\n    this.clearInlineEmbeds(null);\n    window.removeEventListener('resize', this.handleResize);\n    if (this.handleEscape) document.removeEventListener('keydown', this.handleEscape);\n    if (this.defaultPlaybackObserver) this.defaultPlaybackObserver.disconnect();\n    if (this.lazyObserver) this.lazyObserver.disconnect();\n    if (this.scrollRaf) window.cancelAnimationFrame(this.scrollRaf);\n    clearTimeout(this.resizeTimer);\n    clearTimeout(this.scrollPlaybackTimer);\n    clearTimeout(this.defaultPlaybackTimer);\n    if (this.defaultPlaybackIdle && 'cancelIdleCallback' in window) {\n      window.cancelIdleCallback(this.defaultPlaybackIdle);\n    }\n  };\n\n  function initAll() {\n    document.querySelectorAll('[data-product-short-videos]').forEach(function (section) {\n      if (!instances.has(section)) {\n        instances.set(section, new ProductShortVideos(section));\n      }\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initAll);\n  } else {\n    initAll();\n  }\n\n  document.addEventListener('shopify:section:load', initAll);\n  document.addEventListener('shopify:section:unload', function (event) {\n    var section = event.target && event.target.querySelector && event.target.querySelector('[data-product-short-videos]');\n    if (!section || !instances.has(section)) return;\n\n    instances.get(section).destroy();\n    instances.delete(section);\n  });\n})();\n"],
  "mappings": "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",
  "names": ["previewSource"]
}
