{
  "version": 3,
  "sources": ["/cdn/shop/t/150/assets/product-media-analytics.js?sn_dtc=a6465fa45c42"],
  "sourcesContent": ["(function (root) {\n  \"use strict\";\n\n  var core = root.SNDTCProductMediaCore;\n  if (!core && typeof module !== \"undefined\" && module.exports) core = require(\"./product-media-core.js\");\n\n  function validConfig(config) {\n    return !!(config && /^[a-z0-9][a-z0-9-]*$/.test(config.store_id || \"\") &&\n      /^[a-z0-9.-]+\\.[a-z]{2,}$/i.test(config.shopify_domain || \"\") &&\n      /^G-[A-Z0-9]+$/.test(config.ga4_measurement_id || \"\") &&\n      typeof config.analytics_namespace === \"string\" && config.analytics_namespace.length);\n  }\n\n  function createAdapter(options) {\n    options = options || {};\n    var win = options.window || root;\n    var doc = options.document || win.document;\n    var config = options.config || win.SNDTCProductMediaConfig;\n    var registry = core && core.createMediaRegistry();\n    var invalid = !core || !validConfig(config);\n    var observer;\n    var delegatedClickBound = false;\n    var clickDedupe = {};\n    var imageVisibility = typeof WeakMap === \"function\" ? new WeakMap() : new Map();\n    var pendingCustomEvents = [];\n\n    function selectors(name) {\n      return (config.selectors && config.selectors[name]) || [];\n    }\n    function all(scope, values) {\n      var output = [];\n      for (var i = 0; i < values.length; i += 1) {\n        var nodes = scope.querySelectorAll(values[i]);\n        for (var j = 0; j < nodes.length; j += 1) output.push(nodes[j]);\n      }\n      return output;\n    }\n    function roots() {\n      return all(doc, selectors(\"product_roots\")).concat(all(doc, selectors(\"collection_roots\")), all(doc, selectors(\"quick_view_roots\")));\n    }\n    function data(node, key) {\n      return node && node.dataset ? node.dataset[key] : undefined;\n    }\n    function inheritedData(node, key) {\n      var current = node;\n      while (current && current !== doc && current.dataset) {\n        if (current.dataset[key] !== undefined) return current.dataset[key];\n        current = current.parentElement;\n      }\n      return undefined;\n    }\n    function pageProduct(key) {\n      return win.SNDTCPageProduct && win.SNDTCPageProduct[key];\n    }\n    function mediaUrl(media) {\n      var childImage = media.querySelector && media.querySelector(\"img\");\n      var childVideo = media.querySelector && media.querySelector(\"video\");\n      return inheritedData(media, \"snImageUrl\") || media.currentSrc || media.src ||\n        (childImage && (childImage.currentSrc || childImage.src)) ||\n        (childVideo && (childVideo.currentSrc || childVideo.src));\n    }\n    function fallbackMediaId(media) {\n      var url = mediaUrl(media) || \"\";\n      var clean = url.split(\"?\")[0].split(\"#\")[0];\n      var explicitMediaId = inheritedData(media, \"snMediaId\");\n      var themeMediaId = inheritedData(media, \"mediaId\");\n      if (explicitMediaId) return explicitMediaId;\n      if (themeMediaId) {\n        var numericThemeMediaId = String(themeMediaId).match(/(\\d+)$/);\n        return numericThemeMediaId ? numericThemeMediaId[1] : String(themeMediaId);\n      }\n      return clean.split(\"/\").filter(Boolean).pop() || undefined;\n    }\n    function mediaContext(node, media) {\n      var url = mediaUrl(media);\n      var childImage = media.querySelector && media.querySelector(\"img\");\n      var childVideo = media.querySelector && media.querySelector(\"video\");\n      var inferredType = childVideo ? \"video\" : childImage ? \"image\" : (media.tagName || \"image\").toLowerCase();\n      return {\n        store_id: config.store_id,\n        shopify_domain: config.shopify_domain,\n        page_type: config.page_type || \"product\",\n        product_id: data(node, \"snProductId\") || pageProduct(\"product_id\"), product_handle: data(node, \"snProductHandle\") || pageProduct(\"product_handle\"), variant_id: data(node, \"snVariantId\") || pageProduct(\"variant_id\"),\n        media_id: fallbackMediaId(media), media_type: inheritedData(media, \"snMediaType\") || inferredType,\n        media_position: Number(inheritedData(media, \"snMediaPosition\")) || undefined,\n        image_url: url,\n      };\n    }\n    function viewportVisibilityRatio(media) {\n      if (!media || typeof media.getBoundingClientRect !== \"function\" || !win || !win.innerWidth || !win.innerHeight) return 0;\n      var rect = media.getBoundingClientRect();\n      var width = Math.max(0, Number(rect.width) || (rect.right - rect.left) || 0);\n      var height = Math.max(0, Number(rect.height) || (rect.bottom - rect.top) || 0);\n      if (!width || !height) return 0;\n      var visibleWidth = Math.max(0, Math.min(rect.right, win.innerWidth) - Math.max(rect.left, 0));\n      var visibleHeight = Math.max(0, Math.min(rect.bottom, win.innerHeight) - Math.max(rect.top, 0));\n      return (visibleWidth * visibleHeight) / (width * height);\n    }\n    function publishClarity(name, envelope) {\n      if (typeof win.clarity !== \"function\") return;\n      var properties = envelope.properties || {};\n      var tags = { sn_event: name, sn_event_id: envelope.event_id, sn_store: envelope.store_id, sn_product: properties.product_id, sn_media: properties.media_id, sn_media_type: properties.media_type, sn_video_progress: properties.progress_percent, sn_video_watch_msec: properties.watch_time_msec };\n      for (var key in tags) if (tags[key] !== undefined) win.clarity(\"set\", key, String(tags[key]));\n    }\n    function flushCustomEvents(attempt) {\n      if (!pendingCustomEvents.length) return;\n      if (win.SNDTC && typeof win.SNDTC.emitCustom === \"function\") {\n        var pending = pendingCustomEvents;\n        pendingCustomEvents = [];\n        for (var i = 0; i < pending.length; i += 1) {\n          pending[i].result = win.SNDTC.emitCustom(pending[i].name, pending[i].properties);\n          if (pending[i].result && pending[i].result.envelope) pending[i].onDelivered(pending[i].result.envelope);\n        }\n        return;\n      }\n      if ((win.__snConsent && win.__snConsent.analytics === false) || attempt >= 20) {\n        pendingCustomEvents = [];\n        return;\n      }\n      win.setTimeout(function () { flushCustomEvents(attempt + 1); }, 250);\n    }\n    function emitCustom(name, properties, onDelivered) {\n      if (win.SNDTC && typeof win.SNDTC.emitCustom === \"function\") {\n        var result = win.SNDTC.emitCustom(name, properties);\n        if (result && result.envelope) onDelivered(result.envelope);\n        return result;\n      }\n      if (win.__snConsent && win.__snConsent.analytics === false) return;\n      pendingCustomEvents.push({ name: name, properties: properties, onDelivered: onDelivered });\n      if (pendingCustomEvents.length === 1) flushCustomEvents(0);\n    }\n    function projectCanonicalEvent(name, envelope) {\n      var properties = envelope.properties || {};\n      var auditEnvelope = Object.assign({ event: name }, envelope, properties);\n      delete auditEnvelope.properties;\n      // shopify_shop is retained only in local audit projections for legacy consumers.\n      auditEnvelope.shopify_shop = envelope.shopify_domain;\n      publishClarity(name, envelope);\n      return auditEnvelope;\n    }\n    function publish(name, params) {\n      var projected;\n      var result = emitCustom(name, Object.assign({}, params), function (envelope) {\n        projected = projectCanonicalEvent(name, envelope);\n      });\n      return projected || (result && result.envelope) || undefined;\n    }\n    function mediaKey(context) {\n      return core.logicalMediaKey({ productId: context.product_id, mediaId: context.media_id, mediaUrl: context.image_url, context: data(context.root, \"snContext\") || \"pdp\" });\n    }\n    function matchesAny(node, values) {\n      if (!node || typeof node.matches !== \"function\") return false;\n      for (var i = 0; i < values.length; i += 1) {\n        try {\n          if (node.matches(values[i])) return true;\n        } catch (error) {}\n      }\n      return false;\n    }\n    function rootFor(media) {\n      var current = media && media.parentElement;\n      while (current && current !== doc) {\n        if (matchesAny(current, selectors(\"product_roots\")) || matchesAny(current, selectors(\"collection_roots\")) || matchesAny(current, selectors(\"quick_view_roots\"))) return current;\n        current = current.parentElement;\n      }\n      return undefined;\n    }\n    function mediaForClick(target) {\n      var current = target && target.nodeType === 3 ? target.parentElement : target;\n      while (current && current !== doc) {\n        if (matchesAny(current, selectors(\"media_nodes\")) || matchesAny(current, selectors(\"thumbnail_nodes\"))) {\n          var rootNode = rootFor(current);\n          if (rootNode) return { root: rootNode, media: current };\n        }\n        current = current.parentElement;\n      }\n      return undefined;\n    }\n    function mainMediaForThumbnail(rootNode, thumbnail) {\n      var thumbnailMediaId = fallbackMediaId(thumbnail);\n      if (!thumbnailMediaId || !rootNode || typeof rootNode.querySelectorAll !== \"function\") return thumbnail;\n      var selectorsToCheck = selectors(\"media_nodes\");\n      for (var selectorIndex = 0; selectorIndex < selectorsToCheck.length; selectorIndex += 1) {\n        var candidates;\n        try {\n          candidates = rootNode.querySelectorAll(selectorsToCheck[selectorIndex]);\n        } catch (error) {\n          candidates = [];\n        }\n        for (var candidateIndex = 0; candidateIndex < candidates.length; candidateIndex += 1) {\n          var candidate = candidates[candidateIndex];\n          if (candidate !== thumbnail && fallbackMediaId(candidate) === thumbnailMediaId) return candidate;\n        }\n      }\n      return thumbnail;\n    }\n    function handleMediaClick(rootNode, media, event) {\n      if (!event || (!event.pointerType && event.type !== \"keydown\" && event.type !== \"click\")) return;\n      var isThumbnail = matchesAny(media, selectors(\"thumbnail_nodes\"));\n      var sourceMedia = isThumbnail ? mainMediaForThumbnail(rootNode, media) : media;\n      var context = mediaContext(rootNode, sourceMedia);\n      context.root = rootNode;\n      var key = mediaKey(context);\n      delete context.root;\n      var isVideo = (context.media_type || \"\").toLowerCase() === \"video\" || (sourceMedia.tagName || \"\").toLowerCase() === \"video\";\n      var now = Date.now();\n      if (clickDedupe[key] && now - clickDedupe[key] < 500) return;\n      clickDedupe[key] = now;\n      var clickTarget = event.target && inheritedData(event.target, \"snClickTarget\");\n      publish(isVideo ? \"product_video_clicked\" : \"product_image_clicked\", Object.assign({ click_target: clickTarget || (isThumbnail ? \"thumbnail\" : data(media, \"snClickTarget\")) || (isVideo ? \"pdp_video\" : \"main_image\") }, context));\n    }\n    function bindDelegatedClick() {\n      if (delegatedClickBound || !doc || typeof doc.addEventListener !== \"function\") return;\n      delegatedClickBound = true;\n      doc.addEventListener(\"click\", function (event) {\n        var match = mediaForClick(event && event.target);\n        if (match) handleMediaClick(match.root, match.media, event);\n      }, true);\n    }\n    function bindVideo(rootNode, media, context) {\n      if (media.__snProductMediaVideoBound) return;\n      media.__snProductMediaVideoBound = true;\n      var session = core.createVideoSession({ durationSeconds: Number(media.duration) || 0, emit: function (event) { publish(event.name, Object.assign({}, context, event)); } });\n      function syncDuration() { session.onDuration(media.duration); }\n      media.addEventListener(\"loadedmetadata\", syncDuration);\n      media.addEventListener(\"durationchange\", syncDuration);\n      media.addEventListener(\"play\", function () { syncDuration(); session.onPlay(Date.now()); });\n      media.addEventListener(\"pause\", function () { session.onPause(Date.now()); });\n      media.addEventListener(\"timeupdate\", function () { session.onTimeUpdate(media.currentTime, Date.now()); });\n      media.addEventListener(\"seeked\", function () { session.onSeeked(media.currentTime, Date.now()); });\n      media.addEventListener(\"ended\", function () { session.onEnded(Date.now()); });\n      if (doc && typeof doc.addEventListener === \"function\") {\n        doc.addEventListener(\"visibilitychange\", function () {\n          if (doc.hidden) session.onPageHidden(Date.now(), \"page_hidden\");\n        });\n      }\n      if (win && typeof win.addEventListener === \"function\") win.addEventListener(\"pagehide\", function () { session.onPageHidden(Date.now(), \"pagehide\"); });\n      if (typeof win.IntersectionObserver === \"function\") new win.IntersectionObserver(function (entries) { for (var i = 0; i < entries.length; i += 1) session.onVisibility(entries[i].intersectionRatio, Date.now()); }, { threshold: [0, 0.5] }).observe(media);\n    }\n    function bindMedia(rootNode, media) {\n      if (media.getAttribute && media.getAttribute(\"data-sn-product-media-bound\") === \"true\") return;\n      if (media.setAttribute) media.setAttribute(\"data-sn-product-media-bound\", \"true\");\n      var context = mediaContext(rootNode, media);\n      context.root = rootNode;\n      var key = mediaKey(context);\n      delete context.root;\n      var isVideo = (context.media_type || \"\").toLowerCase() === \"video\" || (media.tagName || \"\").toLowerCase() === \"video\";\n      var visibility = { visible: false, ratio: 0, timer: null };\n      imageVisibility.set(media, visibility);\n      function cancelVisibility(state) {\n        if (state.timer) win.clearTimeout(state.timer);\n        state.timer = null;\n      }\n      function scheduleVisibility(state, ratio) {\n        state.visible = ratio >= 0.5;\n        state.ratio = Math.round(ratio * 100);\n        if (!state.visible) {\n          cancelVisibility(state);\n          return;\n        }\n        if (state.timer || registry.hasViewed(key)) return;\n        state.timer = win.setTimeout(function () {\n          state.timer = null;\n          if (state.visible && registry.markViewed(key)) publish(isVideo ? \"product_video_visible\" : \"product_image_viewed\", Object.assign({ view_method: \"visible_50pct_1s\", visibility_ratio: state.ratio }, context));\n        }, 1000);\n      }\n      if (typeof win.IntersectionObserver === \"function\") {\n        new win.IntersectionObserver(function (entries) {\n          for (var entryIndex = 0; entryIndex < entries.length; entryIndex += 1) {\n            var entry = entries[entryIndex];\n            var state = imageVisibility.get(entry.target);\n            if (!state) continue;\n            scheduleVisibility(state, entry.intersectionRatio);\n          }\n        }, { threshold: [0, 0.5] }).observe(media);\n      }\n      function syncCarouselActiveVisibility() {\n        if (!media.classList || !media.classList.contains(\"is-active\")) return;\n        scheduleVisibility(visibility, viewportVisibilityRatio(media));\n        // Carousel libraries often toggle the active class before their transform\n        // finishes. Recheck after the transition frame so a real active slide can\n        // still satisfy the same 50%-visible-for-1s rule.\n        win.setTimeout(function () { scheduleVisibility(visibility, viewportVisibilityRatio(media)); }, 300);\n      }\n      syncCarouselActiveVisibility();\n      if (typeof win.MutationObserver === \"function\") {\n        new win.MutationObserver(syncCarouselActiveVisibility).observe(media, { attributes: true, attributeFilter: [\"class\"] });\n      }\n      media.addEventListener(\"click\", function (event) {\n        handleMediaClick(rootNode, media, event);\n      }, true);\n      if ((context.media_type || \"\").toLowerCase() === \"video\" || (media.tagName || \"\").toLowerCase() === \"video\") bindVideo(rootNode, media, context);\n      var childVideo = media.querySelector && media.querySelector(\"video\");\n      if (childVideo && childVideo !== media) {\n        var childContext = mediaContext(rootNode, childVideo);\n        childContext.media_type = \"video\";\n        bindVideo(rootNode, childVideo, childContext);\n      }\n    }\n    function scan() {\n      if (invalid) return;\n      var configuredRoots = roots();\n      for (var i = 0; i < configuredRoots.length; i += 1) {\n        var nodes = all(configuredRoots[i], selectors(\"media_nodes\"));\n        for (var j = 0; j < nodes.length; j += 1) bindMedia(configuredRoots[i], nodes[j]);\n      }\n    }\n    function start() {\n      if (invalid) {\n        if (win.console && typeof win.console.error === \"function\") win.console.error(\"[SNDTC] product media disabled: invalid store configuration\");\n        return false;\n      }\n      scan();\n      bindDelegatedClick();\n      if (typeof win.MutationObserver === \"function\" && !observer) {\n        observer = new win.MutationObserver(scan);\n        observer.observe(doc.documentElement || doc.body, { childList: true, subtree: true });\n      }\n      return true;\n    }\n    return { start: start, scan: scan, publish: publish, valid: function () { return !invalid; } };\n  }\n\n  var api = { createAdapter: createAdapter, validConfig: validConfig };\n  if (typeof module !== \"undefined\" && module.exports) module.exports = api;\n  root.SNDTCProductMediaAnalytics = api;\n})(typeof globalThis !== \"undefined\" ? globalThis : this);\n"],
  "mappings": "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",
  "names": []
}
