{
  "version": 3,
  "sources": ["/cdn/shop/t/107/assets/custom.js?enable_js_minification=1"],
  "sourcesContent": ["/*\n* Pipeline Theme\n*\n* Use this file to add custom Javascript to Pipeline.  Keeping your custom\n* Javascript in this fill will make it easier to update Pipeline. In order\n* to use this file you will need to open layout/theme.liquid and uncomment\n* the custom.js script import line near the bottom of the file.\n*\n*/\n\n\n(function() {\n\n  // Below are example event listeners.  They listen for theme events that Pipeline\n  // fires in order to make it easier for you to add customizations.\n\n  // Keep your scripts inside this IIFE function call to avoid leaking your\n  // variables into the global scope.\n\n\n  document.addEventListener('theme:variant:change', function(event) {\n    // You might use something like this to write a pre-order feature or a\n    // custom swatch feature.\n    return;\n    var variant = event.detail.variant;\n    var container = event.target;\n    if (variant) {\n      console.log('Container \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u2193');\n      console.log(container);\n      console.log('Variant \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u2193');\n      console.log(variant);\n      // ... update some element on the page\n    }\n  });\n\n  document.addEventListener('theme:cart:change', function(event) {\n    var cart = event.detail.cart;\n    if (cart) {\n      // console.log('Cart \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u2193');\n      // console.log(cart);\n      // ... update an app or a custom shipping caluclator\n      //document.dispatchEvent(new CustomEvent(\"zapiet:start\"));\n    } else {\n      console.warn('theme:cart:change fired withotu cart object.  This is probably a bug.');\n    }\n  });\n  // Fired when page loads to update header values\n  document.addEventListener('theme:cart:init', (e) => {\n    return;\n    console.log('theme:cart:init');\n    console.log(e);\n  });\n\n  // Debounced scroll listeners.  Up and down only fire on direction changes\n  // These events are useful for creating sticky elements and popups.\n  /*document.addEventListener('theme:scroll', e => { console.log(e); });\n  document.addEventListener('theme:scroll:up', e => { console.log(e); });\n  document.addEventListener('theme:scroll:down', e => { console.log(e); });*/\n\n  // Debounced resize listener to bundle changes that trigger document reflow\n  document.addEventListener('theme:resize', e => {\n    return;\n    console.log(e);\n  });\n\n  // Locks and unlocks page scroll for modals and drawers\n  // These are commented out because firing them will lock the page scroll\n  // the lock event must set `detail` to the modal or drawer body so the\n  // scroll locking code knows what element should maintain scoll.\n  // document.dispatchEvent(new CustomEvent('theme:scroll:lock', {bubbles: true, detail: scrollableInnerElement}));\n  // document.dispatchEvent(new CustomEvent('theme:scroll:unlock', {bubbles: true}));\n\n\n  /* Customization to enlarge CO2 exchange refills on variant change */\n  const co2_refill_template = document.querySelector('.temaplte__co2');\n  if ( co2_refill_template ) {\n    function setActiveLabelContainers() {\n      $('.radio__fieldset .radio__button input:checked ~ label').each(function(){\n        $(this).closest('.radio__button').addClass('active');\n      });\n    }\n    $(document).ready(function() {\n      const $button_containers = $('.form__selectors .radio__button');\n      $button_containers.each(function(){\n        const $label_container = $(this);\n        $label_container.get(0).style.setProperty(\"--base-width\", $label_container.outerWidth());\n        $label_container.get(0).style.setProperty(\"--base-height\", $label_container.outerHeight());\n\n        const $label = $label_container.find('label');\n        $label.get(0).style.setProperty(\"--base-width\", $label.outerWidth());\n        $label.get(0).style.setProperty(\"--base-height\", $label.outerHeight());\n      });\n\n      setActiveLabelContainers();\n      document.addEventListener('theme:variant:change', function() {\n        $button_containers.removeClass('active');\n        setActiveLabelContainers();\n      });\n    });\n  }\n\n  /* jQueryUI Tooltips for desktop header icons */\n  $(function(){\n    $('.header__desktop__buttons').tooltip({\n      position: { my: \"center center\", at: \"center bottom\" }\n    });\n  });\n\n  /* Duplicate scroll to anchor target to fix scrolling on desktop for https://sodastream.sg/pages/contact#contact-us */\n  window.addEventListener('load', function(e) {\n    setTimeout(function() {\n      if(window.location.hash.length > 0) {\n        const anchor = document.querySelector(window.location.hash);\n        if (anchor) {\n          anchor.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start'});\n        }\n      }\n    }, 0);\n  });\n\n  /* Header v2 Cart Counter Integration */\n  // Update cart counter on cart change\n  document.addEventListener('theme:cart:change', function(event) {\n    var cart = event.detail.cart;\n    if (cart) {\n      updateHeaderV2CartCounter(cart);\n    }\n  });\n\n  // Update on page load\n  document.addEventListener('theme:cart:init', function() {\n    fetch('/cart.js')\n      .then(function(response) { return response.json(); })\n      .then(function(cart) {\n        updateHeaderV2CartCounter(cart);\n      })\n      .catch(function(error) {\n        console.error('Failed to fetch cart for header-v2:', error);\n      });\n  });\n\n  function updateHeaderV2CartCounter(cart) {\n    var counters = document.querySelectorAll('.v2-cart-counter');\n    counters.forEach(function(counter) {\n      if (cart.item_count > 0) {\n        counter.textContent = cart.item_count;\n        counter.style.display = 'flex';\n      } else {\n        counter.style.display = 'none';\n      }\n    });\n  }\n\n  // ^^ Keep your scripts inside this IIFE function call to avoid leaking your\n  // variables into the global scope.\n})();\n\n// region Media type filter for product gallery\n(function () {\n  function initGalleryFilter() {\n    document.querySelectorAll('[data-media-type-filter]').forEach(function (filterEl) {\n      var wrapper = filterEl.closest('.product__media__wrapper');\n      if (!wrapper) return;\n      var slideshow = wrapper.querySelector('[data-product-slideshow]');\n      if (!slideshow) return;\n\n      var filterBtns = filterEl.querySelectorAll('[data-filter-type]');\n      var lastImageMediaId = null;\n      var currentVariantMediaId = null;\n\n      wrapper.querySelectorAll('[data-slideshow-thumbnail]').forEach(function (thumb) {\n        thumb.addEventListener('click', function () {\n          var mediaId = thumb.dataset.mediaSelect;\n          var slide = slideshow.querySelector('[data-media-id=\"' + mediaId + '\"]');\n          if (slide) {\n            var t = slide.dataset.type || 'image';\n            if (t.indexOf('video') === -1 && t !== 'model') {\n              lastImageMediaId = mediaId;\n            }\n          }\n        });\n      });\n\n      document.addEventListener('theme:variant:change', function (e) {\n        var variant = e.detail && e.detail.variant;\n        if (variant && variant.featured_media && variant.featured_media.id) {\n          var fid = String(variant.featured_media.id);\n          if (slideshow.querySelector('[data-media-id=\"' + fid + '\"]')) {\n            currentVariantMediaId = fid;\n          }\n        }\n      });\n\n      filterBtns.forEach(function (btn) {\n        btn.addEventListener('click', function () {\n          var filterType = btn.dataset.filterType;\n\n          filterBtns.forEach(function (b) { b.classList.remove('is-active'); });\n          btn.classList.add('is-active');\n\n          if (filterType !== 'all') {\n            var slides = slideshow.querySelectorAll('[data-media-slide]');\n            var firstMatchId = null;\n            for (var i = 0; i < slides.length; i++) {\n              var slideType = slides[i].dataset.type || 'image';\n              var normalized = slideType.indexOf('video') !== -1 ? 'video' : slideType;\n              if (normalized === filterType) { firstMatchId = slides[i].dataset.mediaId; break; }\n            }\n            if (firstMatchId) {\n              var matchingThumb = wrapper.querySelector('[data-slideshow-thumbnail][data-media-select=\"' + firstMatchId + '\"]');\n              if (matchingThumb) {\n                matchingThumb.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n                matchingThumb.click();\n              }\n            }\n          } else {\n            var targetId = lastImageMediaId;\n\n            if (!targetId && currentVariantMediaId) {\n              if (slideshow.querySelector('[data-media-id=\"' + currentVariantMediaId + '\"]')) {\n                targetId = currentVariantMediaId;\n              }\n            }\n\n            if (!targetId) {\n              var allSlides = slideshow.querySelectorAll('[data-media-slide]');\n              for (var j = 0; j < allSlides.length; j++) {\n                var st = allSlides[j].dataset.type || 'image';\n                if (st.indexOf('video') === -1 && st !== 'model') {\n                  targetId = allSlides[j].dataset.mediaId;\n                  break;\n                }\n              }\n            }\n\n            if (targetId) {\n              var allThumb = wrapper.querySelector('[data-slideshow-thumbnail][data-media-select=\"' + targetId + '\"]');\n              if (allThumb) {\n                allThumb.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n                allThumb.click();\n              }\n            }\n          }\n        });\n      });\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initGalleryFilter);\n  } else {\n    initGalleryFilter();\n  }\n})();\n// endregion Media type filter for product gallery\n\n// region Makers PDP inline description \"Read more\"\n(function() {\n  function initDescReadMore() {\n    document.querySelectorAll('[data-jsc-desc-btn]').forEach(function(btn) {\n      btn.addEventListener('click', function() {\n        btn.closest('[data-jsc-desc-holder]').classList.add('jsc-expanded');\n      });\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initDescReadMore);\n  } else {\n    initDescReadMore();\n  }\n})();\n// endregion Makers PDP inline description \"Read more\"\n"],
  "mappings": "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",
  "names": ["setActiveLabelContainers"]
}
