{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/theme.js?kkk=84708"],
  "sourcesContent": ["\"use-strict\";\nimport \"./cart-components.js\";\n\nfunction initComparisons() {\n  var x, i;\n  x = document.getElementsByClassName(\"img-comp-overlay\");\n  for (i = 0; i < x.length; i++) {\n    compareImages(x[i]);\n  }\n  function compareImages(img) {\n    var slider,\n      img,\n      clicked = 0,\n      w;\n    w = img.offsetWidth;\n    const icc = img.closest(\".img-comp-container\");\n    if (icc) {\n      slider = icc.querySelector(\".image-comparison__button\");\n    }\n    if (slider) {\n      slider.addEventListener(\"touchstart\", slideReady);\n      slider.addEventListener(\"mousedown\", slideReady);\n    }\n    window.addEventListener(\"mouseup\", slideFinish);\n    window.addEventListener(\"touchend\", slideFinish);\n    function slideReady(e) {\n      e.preventDefault();\n      clicked = 1;\n      window.addEventListener(\"mousemove\", slideMove);\n      window.addEventListener(\"touchmove\", slideMove);\n    }\n    function slideFinish() {\n      clicked = 0;\n    }\n    function slideMove(e) {\n      var pos;\n      if (clicked == 0) return false;\n      pos = getCursorPos(e);\n      if (pos < 0) pos = 0;\n      if (pos > w) pos = w;\n      slide(pos);\n    }\n    function getCursorPos(e) {\n      e = e.changedTouches ? e.changedTouches[0] : e;\n      const a = img.getBoundingClientRect();\n      let x = e.clientX - a.left + 14;\n      x = Math.max(0, Math.min(x, w));\n\n      return x;\n    }\n\n    function slide(x) {\n      if (slider) {\n        const sliderHalfWidth = slider.offsetWidth / 2;\n        let percent = ((x - sliderHalfWidth) / w) * 100;\n        let min = (sliderHalfWidth / icc.getBoundingClientRect().width) * 100;\n        console.log(min - 0.1);\n        percent = Math.max(min - 0.1, Math.min(percent, 100));\n        img\n          .closest(\".img-comp-container\")\n          .setAttribute(\"style\", \"--percent: \" + percent + \"%;\");\n      }\n    }\n  }\n}\n\ninitComparisons();\nlet resizeTimeout;\nwindow.addEventListener(\"resize\", () => {\n  clearTimeout(resizeTimeout);\n  resizeTimeout = setTimeout(() => {\n    initComparisons();\n  }, 200);\n});\n\nfunction eventFlashingBrowseTab() {\n  var enable = window.flashingBrowseTab?.enable,\n    myTimer,\n    message,\n    titleTag = document.getElementsByTagName(\"title\")[0],\n    first_notification = window.flashingBrowseTab?.firstNotification,\n    secondary_notification = window.flashingBrowseTab?.secondaryNotification;\n  if (enable && titleTag) {\n    var originalTitle = titleTag.innerText;\n    var isActive = true;\n    document.addEventListener(\"visibilitychange\", () => {\n      document.visibilityState === \"visible\"\n        ? (function () {\n            if (isActive) return;\n            clearInterval(myTimer), (titleTag.innerText = originalTitle);\n          })()\n        : (function () {\n            var i = 1;\n            if (\n              ((isActive = false),\n              !first_notification || !secondary_notification)\n            )\n              return;\n            myTimer = setInterval(function () {\n              if (i == 1) {\n                message = first_notification;\n                i = 2;\n              } else {\n                message = secondary_notification;\n                i = 1;\n              }\n              titleTag.innerText = message;\n            }, 2000);\n          })();\n    });\n  }\n}\neventFlashingBrowseTab();\n\nfunction initializeLazyLoad() {\n  const videoPlaceholders = document.querySelectorAll(\".lazy-video-link\");\n  const loadYouTubeVideo = (element) => {\n    const videoId = element.getAttribute(\"data-video-id\");\n    const iframe = document.createElement(\"iframe\");\n    iframe.src = `https://www.youtube.com/embed/${videoId}?controls=0&autoplay=1&mute=1&playsinline=1&loop=1&playlist=${videoId}`;\n    iframe.allowFullscreen = true;\n    iframe.frameBorder = \"0\";\n    iframe.allow =\n      \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\";\n    element.innerHTML = \"\";\n    element.appendChild(iframe);\n  };\n  const loadVimeoVideo = (element) => {\n    const videoId = element.getAttribute(\"data-video-id\");\n    const iframe = document.createElement(\"iframe\");\n    iframe.src = `https://player.vimeo.com/video/${videoId}?controls=0background=1&autoplay=1&muted=1&loop=1`;\n    iframe.allowFullscreen = true;\n    iframe.allow = \"autoplay; fullscreen; picture-in-picture\";\n    iframe.frameBorder = \"0\";\n    element.innerHTML = \"\";\n    element.appendChild(iframe);\n  };\n  const loadVideo = (element) => {\n    const videoType = element.getAttribute(\"data-video-type\");\n    if (videoType === \"youtube\") {\n      loadYouTubeVideo(element);\n    } else if (videoType === \"vimeo\") {\n      loadVimeoVideo(element);\n    }\n  };\n  const lazyLoadVideos = () => {\n    const observer = new IntersectionObserver((entries, observer) => {\n      entries.forEach((entry) => {\n        if (entry.isIntersecting) {\n          loadVideo(entry.target);\n          observer.unobserve(entry.target);\n        }\n      });\n    });\n    videoPlaceholders.forEach((videoPlaceholder) => {\n      observer.observe(videoPlaceholder);\n    });\n  };\n  lazyLoadVideos();\n}\ninitializeLazyLoad();\ndocument.addEventListener(\"shopify:section:load\", initializeLazyLoad);\n\nconst slideAnime = (() => {\n  let isAnimating = false;\n\n  return (setOptions) => {\n    const defaultOptions = {\n      target: false,\n      animeType: \"slideToggle\",\n      duration: 250,\n      easing: \"ease\",\n      isDisplayStyle: \"block\",\n      parent: false,\n      addFunction: () => {},\n    };\n    const options = Object.assign({}, defaultOptions, setOptions);\n    const target = options.target;\n    const ownAnimate = options.ownAnimate;\n    if (ownAnimate) {\n      isAnimating = false;\n    }\n    const parent = options.parent;\n    if (!target) {\n      return;\n    }\n\n    if (isAnimating) {\n      return;\n    }\n    isAnimating = true;\n    parent.classList?.toggle(\"opened\");\n\n    let animeType = options.animeType;\n    const styles = getComputedStyle(target);\n    if (animeType === \"slideToggle\") {\n      animeType = styles.display === \"none\" ? \"slideDown\" : \"slideUp\";\n    }\n    if (\n      (animeType === \"slideUp\" && styles.display === \"none\") ||\n      (animeType === \"slideDown\" && styles.display !== \"none\") ||\n      (animeType !== \"slideUp\" && animeType !== \"slideDown\")\n    ) {\n      isAnimating = false;\n      return false;\n    }\n    target.style.overflow = \"hidden\";\n    const duration = options.duration;\n    const easing = options.easing;\n    const isDisplayStyle = options.isDisplayStyle;\n\n    if (animeType === \"slideDown\") {\n      target.style.display = isDisplayStyle;\n    }\n    const heightVal = {\n      height: target.getBoundingClientRect().height + \"px\",\n      marginTop: styles.marginTop,\n      marginBottom: styles.marginBottom,\n      paddingTop: styles.paddingTop,\n      paddingBottom: styles.paddingBottom,\n    };\n\n    Object.keys(heightVal).forEach((key) => {\n      if (parseFloat(heightVal[key]) === 0) {\n        delete heightVal[key];\n      }\n    });\n    if (Object.keys(heightVal).length === 0) {\n      isAnimating = false;\n      return false;\n    }\n    let slideAnime;\n    if (animeType === \"slideDown\") {\n      Object.keys(heightVal).forEach((key) => {\n        target.style[key] = 0;\n      });\n      slideAnime = target.animate(heightVal, {\n        duration: duration,\n        easing: easing,\n      });\n    } else if (animeType === \"slideUp\") {\n      Object.keys(heightVal).forEach((key) => {\n        target.style[key] = heightVal[key];\n        heightVal[key] = 0;\n      });\n      slideAnime = target.animate(heightVal, {\n        duration: duration,\n        easing: easing,\n      });\n    }\n    slideAnime.finished.then(() => {\n      options.addFunction();\n      target.style.overflow = \"\";\n      Object.keys(heightVal).forEach((key) => {\n        target.style[key] = \"\";\n      });\n      if (animeType === \"slideUp\") {\n        target.style.display = \"none\";\n      }\n      isAnimating = false;\n    });\n  };\n})();\n\nclass CollectionOverviews extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    this.initSections();\n\n    document.addEventListener(\"shopify:section:load\", (event) => {\n      if (this.contains(event.target)) {\n        this.initSection(event.target);\n      }\n    });\n\n    document.addEventListener(\"shopify:section:reorder\", (event) => {\n      if (this.contains(event.target)) {\n        this.initSection(event.target);\n      }\n    });\n  }\n\n  initSections() {\n    const sections = this.querySelectorAll(\".section__block-inner\");\n    sections.forEach((section) => {\n      this.initSection(section);\n    });\n  }\n\n  initSection(section) {\n    const blocks = section.querySelectorAll(\".content-overview-block\");\n    const banners = section.querySelectorAll(\".banner__media-collection\");\n    banners.forEach((banner) => {\n      banner.classList.remove(\"active\");\n      Motion.animate(banner, \n        { \n          opacity: 0,\n          scale: 0.95\n        }, \n        { \n          duration: 0.2,\n          easing: \"ease-out\"\n        }\n      );\n    });\n\n    blocks.forEach((block) => {\n      block.classList.remove(\"active\");\n    });\n\n    if (banners.length > 0) {\n      banners[0].classList.add(\"active\");\n      Motion.animate(banners[0], \n        { \n          opacity: [0, 1],\n          scale: [0.95, 1]\n        }, \n        { \n          duration: 0.4,\n          easing: \"ease-out\"\n        }\n      );\n    }\n\n    if (blocks.length > 0) {\n      blocks[0].classList.add(\"active\");\n    }\n\n    blocks.forEach((block) => {\n      block.addEventListener(\"mouseenter\", () => {\n        if (block.classList.contains(\"active\")) {\n          return;\n        }\n        const blockIndex = block.getAttribute(\"data-index\");\n\n        const currentActiveBanners = section.querySelectorAll(\".banner__media-collection.active\");\n        const fadeOutPromises = Array.from(currentActiveBanners).map(banner => {\n          banner.classList.remove(\"active\");\n          return Motion.animate(banner, \n            { \n              opacity: 0,\n              scale: 0.95\n            }, \n            { \n              duration: 0.2,\n              easing: \"ease-in\"\n            }\n          );\n        });\n\n        blocks.forEach((b) => {\n          b.classList.remove(\"active\");\n        });\n\n        const targetBanner = section.querySelector(\n          `.banner__media-collection[data-index=\"${blockIndex}\"]`\n        );\n\n        Promise.all(fadeOutPromises).then(() => {\n          if (targetBanner) {\n            targetBanner.classList.add(\"active\");\n            Motion.animate(targetBanner, \n              { \n                opacity: [0, 1],\n                scale: [0.95, 1]\n              }, \n              { \n                duration: 0.3,\n                easing: \"ease-out\"\n              }\n            );\n          }\n        });\n\n        block.classList.add(\"active\");\n      });\n    });\n  }\n}\n\ncustomElements.define(\"collection-overviews\", CollectionOverviews);\n\nclass MultiContent extends SlideSection {\n  constructor() {\n    super();\n    this.enable = this.dataset.enable;\n    this.id = this.dataset.id;\n    this.swiperSlideInnerHtml = this.innerHTML;\n    this.init();\n  }\n  init() {\n    if (this.enable == \"true\") {\n      let width = window.innerWidth;\n      window.addEventListener(\"resize\", () => {\n        const newWidth = window.innerWidth;\n        if (newWidth <= 767 && width > 767) {\n          this.actionOnMobile();\n        }\n        if (newWidth > 767 && width <= 767) {\n          this.actionOutMobile();\n        }\n        width = newWidth;\n      });\n      if (width <= 576) {\n        this.actionOnMobile();\n      } else {\n        this.actionOutMobile();\n      }\n    }\n  }\n  actionOnMobile() {\n    this.classList.add(\"swiper\");\n    const html = this.swiperSlideInnerHtml.replaceAll(\n      \"section__block\",\n      \"swiper-slide\"\n    );\n    const wrapper = `<div class='swiper-wrapper'>${html}</div> <div\n    class=\"swiper-pagination swiper-pagination-${this.id}  ${\n      this.enable && this.dataset.mobile != 1.5 ? \"flex\" : \"hidden\"\n    } px-15 lh-1 bottom-30 justify-content-center\"\n    style=\"--swiper-pagination-bottom: 3rem;--swiper-pagination-position: static;\"\n  ></div> `;\n    this.innerHTML = wrapper;\n    this.initSlide();\n  }\n  actionOutMobile() {\n    if (this.classList.contains(\"swiper\")) {\n      this.classList.remove(\"swiper\");\n      this.innerHTML = this.swiperSlideInnerHtml;\n    }\n  }\n}\ncustomElements.define(\"multi-content\", MultiContent);\nvar wishlistHeader = (function () {\n  return {\n    init: function () {\n      this.handleCount();\n    },\n    handleCount: function () {\n      const wishlist = document.querySelectorAll(\".wishlist-count\");\n      const items = JSON.parse(localStorage.getItem(\"glozin__wishlist-items\"));\n      wishlist.forEach((item) => {\n        item.innerText = items !== null && items.length != 0 ? items.length : 0;\n      });\n    },\n  };\n})();\nwishlistHeader.init();\n\nfunction HoverIntent(exitTime, elements, userConfig) {\n  const defaultOptions = {\n    exitDelay: exitTime,\n    interval: 100,\n    sensitivity: 6,\n  };\n  let config = {};\n  let currX, currY, prevX, prevY;\n  let allElems, pollTimer, exitTimer;\n  const extend = function (defaults, userArgs) {\n    for (let i in userArgs) {\n      defaults[i] = userArgs[i];\n    }\n    return defaults;\n  };\n  const mouseTrack = function (ev) {\n    currX = ev.pageX;\n    currY = ev.pageY;\n  };\n  const mouseCompare = function (targetElem) {\n    const distX = prevX - currX,\n      distY = prevY - currY;\n    const distance = Math.sqrt(distX * distX + distY * distY);\n    if (distance < config.sensitivity) {\n      clearTimeout(exitTimer);\n      for (let elem of allElems) {\n        if (elem.isActive) {\n          config.onExit(elem);\n          elem.isActive = false;\n        }\n      }\n      config.onEnter(targetElem);\n      targetElem.isActive = true;\n    } else {\n      prevX = currX;\n      prevY = currY;\n      pollTimer = setTimeout(function () {\n        mouseCompare(targetElem);\n      }, config.interval);\n    }\n  };\n  const init = function (exitTime, elements, userConfig) {\n    if (!userConfig || !userConfig.onEnter || !userConfig.onExit) {\n      throw \"onEnter and onExit callbacks must be provided\";\n    }\n    config = extend(defaultOptions, userConfig);\n    allElems = elements;\n    for (let elem of allElems) {\n      if (!elem) return;\n      elem.isActive = false;\n      elem.addEventListener(\"mousemove\", mouseTrack);\n      elem.addEventListener(\"mouseenter\", function (ev) {\n        prevX = ev.pageX;\n        prevY = ev.pageY;\n        if (elem.isActive) {\n          clearTimeout(exitTimer);\n          return;\n        }\n        pollTimer = setTimeout(function () {\n          mouseCompare(elem);\n        }, config.interval);\n      });\n      elem.addEventListener(\"mouseleave\", function (ev) {\n        clearTimeout(pollTimer);\n        if (!elem.isActive) return;\n        exitTimer = setTimeout(function () {\n          config.onExit(elem);\n          elem.isActive = false;\n        }, config.exitDelay);\n      });\n    }\n  };\n  init(exitTime, elements, userConfig);\n}\n\nlet BlsMainMenuShopify = (function () {\n  return {\n    init: function () {\n      this.initMenu();\n      this.initMainMenu();\n      this.initMobileMenu();\n      this.initVerticalMenu();\n    },\n\n    initMenu: function () {\n      const header = document.querySelector(\"header\");\n      if (!header) return;\n\n      // Cache DOM elements\n      const elements = {\n        categoriesListMenuMobile: document.querySelector(\n          \".categories-list-menu-mobile\"\n        ),\n        categoriesListMenu: document.querySelector(\n          '[data-menu=\"categories-list\"]'\n        ),\n        categoriesListMenuVertical: document.querySelector(\n          '[data-menu=\"verticalmenu-list\"]'\n        ),\n        categoriesListMenuVerticalMobile: document.querySelector(\n          \".verticalmenu-mobile\"\n        ),\n        horizontalList: document.querySelector(\"nav.mobile .horizontal-list\"),\n      };\n\n      // Calculate section padding bottom value\n      const sectionPbValue = this.calculateSectionPadding(header);\n\n      // Initialize fade-in-down animation if present\n      this.initFadeInDownAnimation(header, sectionPbValue);\n\n      // Handle menu tab switching\n      this.setupMenuTabSwitching(elements);\n\n      // Initialize menu tab state based on window width\n      this.updateMenuTabState(elements);\n      this.updateMenuVerticalMobile(elements);\n\n      // Add resize event listener for responsive behavior\n      window.addEventListener(\"resize\", () =>\n        this.updateMenuTabState(elements)\n      );\n      window.addEventListener(\"resize\", () =>\n        this.updateMenuVerticalMobile(elements)\n      );\n    },\n\n    calculateSectionPadding: function (header) {\n      let sectionPbValue = parseInt(\n        getComputedStyle(header).getPropertyValue(\"--section-pb\").trim()\n      );\n      if (header.querySelector(\".header__layout-2\")) {\n        sectionPbValue = 0;\n      }\n      return sectionPbValue;\n    },\n\n    initFadeInDownAnimation: function (header, sectionPbValue) {\n      const fadeInDown = document.querySelector(\".fade-in-down\");\n      if (!fadeInDown) {\n        // Simple hover intent for non-fade-in menus\n        this.setupSimpleHoverIntent(180, \".menu-parent__horizontal\");\n        return;\n      }\n\n      HoverIntent(180, document.querySelectorAll(\".menu-parent__horizontal\"), {\n        onEnter: (targetItem) =>\n          this.handleMenuEnter(targetItem, header, sectionPbValue),\n        onExit: (targetItem) => this.handleMenuExit(targetItem, header),\n      });\n    },\n\n    setupSimpleHoverIntent: function (time, selector) {\n      HoverIntent(time, document.querySelectorAll(selector), {\n        onEnter: function (targetItem) {\n          targetItem.classList.add(\"visible\");\n        },\n        onExit: function (targetItem) {\n          targetItem.classList.remove(\"visible\");\n        },\n      });\n    },\n\n    handleMenuEnter: function (targetItem, header, sectionPbValue) {\n      const submenu = targetItem.querySelector(\".submenu-horizontal\");\n      if (!submenu) return;\n\n      const width = window.innerWidth;\n      if (width < 1024) return;\n\n      const sticky = header?.getAttribute(\"data-sticky\");\n      if (sticky == \"on-scroll-up\") {\n        header.classList.add(\"open-submenu\");\n      }\n\n      if (document.documentElement.classList.contains(\"open-search\")) {\n        this.handleMenuEnterWithSearchOpen(targetItem, submenu, sectionPbValue);\n      } else {\n        this.handleStandardMenuEnter(targetItem, submenu, header);\n      }\n    },\n\n    handleStandardMenuEnter: function (targetItem, submenu, header) {\n      const outerRect = header.getBoundingClientRect();\n      const innerRect = targetItem.getBoundingClientRect();\n      const heightScrollDown = outerRect.bottom - innerRect.bottom;\n\n      Motion.animate(\n        submenu,\n        {\n          y: [\"-105%\", heightScrollDown],\n          visibility: [\"hidden\", \"visible\"],\n        },\n        {\n          ease: [0.7, 0, 0.2, 1],\n          duration: 0.35,\n        }\n      );\n\n      targetItem.classList.add(\"visible\");\n      if (!header.classList.contains(\"border-bottom\")) {\n        header.classList.add(\"active\");\n      }\n    },\n\n    handleMenuEnterWithSearchOpen: function (\n      targetItem,\n      submenu,\n      sectionPbValue\n    ) {\n      const ps = document.querySelector(\".popup-search\");\n      const overlay_search = document.querySelector(\".overlay_search\");\n      const sf = document.querySelector(\".search-full\");\n\n      if (!ps || !overlay_search || !sf) return;\n\n      overlay_search.classList.remove(\"open\");\n      let topCaculate = sf.getBoundingClientRect().bottom + 10;\n\n      Promise.all([\n        Motion.animate(\n          ps,\n          {\n            y: [topCaculate, \"-105%\"],\n            visibility: [\"visible\", \"hidden\"],\n          },\n          {\n            ease: [0.7, 0, 0.2, 1],\n            duration: 0.2,\n          }\n        ),\n        Motion.animate(\n          overlay_search,\n          {\n            opacity: [1, 0],\n            visibility: [\"visible\", \"hidden\"],\n          },\n          {\n            ease: [0.7, 0, 0.2, 1],\n            duration: 0.2,\n          }\n        ),\n      ]).then(() => {\n        setTimeout(() => {\n          // Update document classes\n          if (document.documentElement.classList.contains(\"open-minicart\")) {\n            document.documentElement.classList.remove(\"open-search\");\n          } else {\n            document.documentElement.classList.remove(\n              \"open-drawer\",\n              \"open-search\"\n            );\n            root.style.removeProperty(\"padding-right\");\n          }\n\n          // Show submenu with animation\n          Motion.animate(\n            submenu,\n            {\n              y: [\"-105%\", sectionPbValue],\n              visibility: [\"hidden\", \"visible\"],\n            },\n            {\n              ease: [0.7, 0, 0.2, 1],\n              duration: 0.35,\n            }\n          );\n          targetItem.classList.add(\"visible\");\n        }, 20);\n      });\n    },\n\n    handleMenuExit: function (targetItem, header) {\n      const submenu = targetItem.querySelector(\".submenu-horizontal\");\n      if (!submenu) return;\n\n      const width = window.innerWidth;\n      if (width < 1024) return;\n\n      const sticky = header?.getAttribute(\"data-sticky\");\n      const outerRect = header.getBoundingClientRect();\n      const innerRect = targetItem.getBoundingClientRect();\n      const heightScrollDown = outerRect.bottom - innerRect.bottom;\n\n      if (sticky == \"on-scroll-up\") {\n        header.classList.remove(\"open-submenu\");\n      }\n\n      Motion.animate(\n        submenu,\n        {\n          y: [heightScrollDown, \"-105%\"],\n          visibility: [\"visible\", \"hidden\"],\n        },\n        {\n          ease: [0.7, 0, 0.2, 1],\n          duration: 0.4,\n        }\n      );\n\n      targetItem.classList.remove(\"visible\");\n      if (header.classList.contains(\"active\")) {\n        header.classList.remove(\"active\");\n      }\n    },\n\n    setupMenuTabSwitching: function (elements) {\n      document.querySelectorAll(\".menu-mobile-title a\").forEach((tabToggle) => {\n        tabToggle.addEventListener(\"click\", (e) => {\n          e.preventDefault();\n          const target = e.currentTarget;\n          const data = target.dataset.menu;\n\n          // Reset active state on all tabs\n          document\n            .querySelectorAll(\".menu-mobile-title a\")\n            .forEach((item) => item.classList.remove(\"active\"));\n\n          // Set current tab as active\n          target.classList.add(\"active\");\n\n          // Show appropriate menu based on selected tab\n          this.showMenuForTab(data, elements);\n        });\n      });\n    },\n\n    showMenuForTab: function (tabId, elements) {\n      const { horizontalList, categoriesListMenuMobile } = elements;\n      const categoriesListMenuVerticalMobile = document.querySelector(\n        \".verticalmenu-mobile\"\n      );\n\n      if (!horizontalList) return;\n\n      // Hide horizontal list if we're showing a specific menu\n      horizontalList.style.display =\n        tabId !== \"horizontal-list\" ? \"none\" : \"block\";\n\n      // Show appropriate menu based on tab\n      if (tabId === \"categories-list\") {\n        if (categoriesListMenuMobile)\n          categoriesListMenuMobile.style.display = \"block\";\n        if (categoriesListMenuVerticalMobile)\n          categoriesListMenuVerticalMobile.style.display = \"none\";\n      } else if (tabId === \"verticalmenu-list\") {\n        if (categoriesListMenuMobile)\n          categoriesListMenuMobile.style.display = \"none\";\n        if (categoriesListMenuVerticalMobile)\n          categoriesListMenuVerticalMobile.style.display = \"block\";\n      } else {\n        if (categoriesListMenuMobile)\n          categoriesListMenuMobile.style.display = \"none\";\n        if (categoriesListMenuVerticalMobile)\n          categoriesListMenuVerticalMobile.style.display = \"none\";\n      }\n    },\n\n    updateMenuVerticalMobile: function (elements) {\n      const windowWidth = window.innerWidth;\n      if (windowWidth <= 1024) {\n        const headerVertical = document.querySelector(\".header-vertical\");\n        const headerVerticalMobile = document.querySelector(\n          \".verticalmenu-mobile\"\n        );\n        const titleVertical = headerVerticalMobile?.dataset.title;\n        const menuMobileTitle = document.querySelector(\".menu-mobile-title\");\n        if (!headerVertical) return;\n        if (!menuMobileTitle.querySelector('[data-menu=\"verticalmenu-list\"]')) {\n          const contentAppendTitleVertical = `\n            <a\n              class=\"no-underline heading-style py-10\"\n              data-menu=\"verticalmenu-list\"\n              role=\"link\"\n              aria-disabled=\"true\"\n            >\n              ${titleVertical}\n            </a>\n          `;\n          menuMobileTitle.insertAdjacentHTML(\n            \"beforeend\",\n            contentAppendTitleVertical\n          );\n          const newTabButton = menuMobileTitle.querySelector(\n            '[data-menu=\"verticalmenu-list\"]'\n          );\n          if (newTabButton) {\n            newTabButton.addEventListener(\"click\", (e) => {\n              e.preventDefault();\n              document\n                .querySelectorAll(\".menu-mobile-title a\")\n                .forEach((item) => item.classList.remove(\"active\"));\n              newTabButton.classList.add(\"active\");\n              this.showMenuForTab(\"verticalmenu-list\", elements);\n            });\n          }\n        }\n        const wrapperVerticalmenu = document.querySelector(\n          \".verticalmenu-mobile\"\n        );\n        const navigationMenuContent = document.querySelector(\n          \".navigation__menu-content-mobile\"\n        );\n        if (!wrapperVerticalmenu || !navigationMenuContent) {\n          return;\n        }\n        if (!navigationMenuContent.querySelector(\".verticalmenu-mobile\")) {\n          const cloneWrapper = wrapperVerticalmenu.cloneNode(true);\n          navigationMenuContent.appendChild(cloneWrapper);\n        }\n      }\n    },\n\n    updateMenuTabState: function (elements) {\n      const windowWidth = window.innerWidth;\n      const {\n        horizontalList,\n        categoriesListMenu,\n        categoriesListMenuVertical,\n        categoriesListMenuMobile,\n        categoriesListMenuVerticalMobile,\n      } = elements;\n\n      if (!horizontalList || !categoriesListMenu) return;\n\n      if (windowWidth <= 1024) {\n        // Mobile view\n        if (\n          categoriesListMenu?.classList.contains(\"active\") ||\n          categoriesListMenuVertical?.classList.contains(\"active\")\n        ) {\n          horizontalList.style.display = \"none\";\n        }\n\n        if (\n          categoriesListMenuVerticalMobile &&\n          categoriesListMenuVertical?.classList.contains(\"active\")\n        ) {\n          categoriesListMenuVerticalMobile.style.display = \"block\";\n        }\n      } else {\n        // Desktop view\n        if (\n          categoriesListMenuMobile &&\n          categoriesListMenu?.classList.contains(\"active\")\n        ) {\n          categoriesListMenuMobile.style.display = \"none\";\n        }\n\n        if (\n          categoriesListMenuVerticalMobile &&\n          categoriesListMenuVertical?.classList.contains(\"active\")\n        ) {\n          categoriesListMenuVerticalMobile.style.display = \"none\";\n        }\n\n        if (\n          categoriesListMenu?.classList.contains(\"active\") ||\n          categoriesListMenuVertical?.classList.contains(\"active\")\n        ) {\n          horizontalList.style.display = \"inline-flex\";\n        }\n      }\n    },\n\n    initMainMenu: function () {\n      const header = document.querySelector(\"header\");\n      if (!header) return;\n\n      this.setupNavToggle();\n      this.setupMenuMouseEvents();\n      this.setupHeaderAttributes();\n      this.initStickyHeader(header);\n      this.initSubMenu();\n    },\n\n    setupNavToggle: function () {\n      document.querySelectorAll(\".nav-toggle\").forEach((navToggle) => {\n        navToggle.addEventListener(\"click\", (e) => {\n          const target = e.currentTarget;\n          const main_menu = document.querySelector(\".navigation.horizontal\");\n\n          if (document.documentElement.classList.contains(\"nav-open\")) {\n            // Close menu\n            root.style.removeProperty(\"padding-right\");\n            document.documentElement.classList.remove(\n              \"nav-open\",\n              \"open-drawer\"\n            );\n            target.classList.remove(\"open\");\n            if (!main_menu) {\n              document.documentElement.classList.remove(\"nav-verticalmenu\");\n            }\n          } else {\n            // Open menu\n            root.style.setProperty(\n              \"padding-right\",\n              getScrollBarWidth.init() + \"px\"\n            );\n            document.documentElement.classList.add(\"nav-open\", \"open-drawer\");\n            target.classList.add(\"open\");\n            if (!main_menu) {\n              document.documentElement.classList.add(\"nav-verticalmenu\");\n            }\n          }\n        });\n      });\n    },\n\n    setupMenuMouseEvents: function () {\n      let width = screen.width;\n      if (width <= 1024) return;\n\n      document\n        .querySelectorAll(\"li.menu-parent .submenu\")\n        .forEach((menuItem) => {\n          menuItem.addEventListener(\"mouseenter\", (e) => {\n            const target = e.currentTarget;\n            target.closest(\".menu-parent\").classList.add(\"active-submenu\");\n          });\n\n          menuItem.addEventListener(\"mouseleave\", (e) => {\n            const target = e.currentTarget;\n            target.closest(\".menu-parent\").classList.remove(\"active-submenu\");\n          });\n        });\n    },\n\n    setupHeaderAttributes: function () {\n      let headerpage = document.querySelector(\"header\")?.clientHeight || 0;\n      const body = document.querySelector(\"body\");\n      body.style.setProperty('--height-header', `${headerpage}px`);\n    },\n\n    initStickyHeader: function (header) {\n      const sticky = header?.getAttribute(\"data-sticky\");\n      const sticky_mobile = header?.getAttribute(\"data-sticky-mobile\");\n\n      if (sticky === \"none\") return;\n      if (sticky_mobile === \"false\" && window.innerWidth < 1025) return;\n\n      // Setup header sticky behavior\n      const headerSpaceH =\n        document.getElementById(\"header-sticky\")?.offsetHeight || 0;\n      const announcement_bar =\n        document.querySelector(\".section-announcement-bar\")?.clientHeight || 0;\n      const top_bar =\n        document.querySelector(\".section-top-bar\")?.clientHeight || 0;\n      const headerh = announcement_bar + top_bar + headerSpaceH;\n      this.lastScrollPosition = 0; // Initialize lastScrollPosition property\n      const sec_header = header.closest(\".section-header\");\n\n      if (!sec_header) return;\n\n      if (sticky === \"on-scroll-up\") {\n        sec_header.classList.add(\"scroll-up\");\n      }\n\n      window.addEventListener(\"scroll\", () => {\n        if (header.classList.contains(\"open-submenu\")) return;\n        this.updateStickyHeader(sec_header, sticky, headerh);\n      });\n    },\n\n    updateStickyHeader: function (sec_header, sticky, headerh) {\n      let wpy = window.scrollY;\n\n      if (sticky === \"always\") {\n        // Always sticky behavior\n        if (wpy > headerh) {\n          sec_header.classList.add(\"shopify-section-header-sticky\", \"animate\");\n        } else {\n          sec_header.classList.remove(\n            \"shopify-section-header-sticky\",\n            \"animate\"\n          );\n        }\n      } else {\n        // Scroll-up sticky behavior\n        if (wpy > 0) {\n          if (wpy > headerh) {\n            sec_header.classList.add(\"scr-pass-header\");\n\n            if (wpy > this.lastScrollPosition) {\n              sec_header.classList.add(\"shopify-section-header-hidden\");\n            } else {\n              sec_header.classList.remove(\"shopify-section-header-hidden\");\n              sec_header.classList.add(\"animate\");\n            }\n            sec_header.classList.add(\n              \"header-sticky\",\n              \"shopify-section-header-sticky\"\n            );\n            this.lastScrollPosition = wpy;\n          } else {\n            sec_header.classList.remove(\"header-sticky\", \"scr-pass-header\");\n            this.lastScrollPosition = 0;\n          }\n        } else {\n          sec_header.classList.remove(\n            \"shopify-section-header-hidden\",\n            \"header-sticky\",\n            \"animate\",\n            \"shopify-section-header-sticky\"\n          );\n        }\n      }\n    },\n\n    initSubMenu: function () {\n      const main_menu = document.querySelector(\".navigation.horizontal\");\n      if (!main_menu || window.innerWidth <= 1024) return;\n\n      this.addCssSubMenu();\n\n      window.addEventListener(\"resize\", () => {\n        if (window.innerWidth > 1024) {\n          this.addCssSubMenu();\n        }\n      });\n    },\n\n    addCssSubMenu: function () {\n      const bodyWidth =\n        document.documentElement.clientWidth || document.body.clientWidth;\n      const header = document.querySelector(\"header\");\n      const submenu_center = document.querySelector(\".submenu-center\");\n      const width_sub_center = 800;\n\n      if (!header || bodyWidth < 1024) return;\n\n      const padding = 30;\n      document\n        .querySelectorAll(\".horizontal-list .mega-menu-fix-width\")\n        .forEach((submenu) => {\n          if (submenu_center) {\n            // Handle center aligned submenu\n            const submenu_data = submenu.getBoundingClientRect();\n            const width = submenu_data.width;\n            const left = submenu_data.left;\n            const right = submenu_data.right;\n\n            if (width_sub_center <= width) {\n              const left_style = (left - (right - bodyWidth)) / 2;\n              submenu.style.left = left_style + \"px\";\n            }\n          } else {\n            // Handle default submenu positioning\n            const elementWidth = submenu.clientWidth;\n            const elementLeft = submenu.offsetLeft;\n\n            if (bodyWidth - (elementWidth + elementLeft) < 0) {\n              let left = bodyWidth - (elementWidth + elementLeft);\n              left = left + elementLeft - padding;\n\n              if (elementLeft < 0) {\n                left = 0;\n              }\n\n              submenu.style.left = left + \"px\";\n            }\n          }\n        });\n    },\n\n    initVerticalMenu: function () {\n      const article = document.querySelector(\".verticalmenu-html\");\n      if (!article) return;\n\n      const verticalMenu = document.querySelector(\".vertical-menu\");\n      if (!verticalMenu) return;\n      verticalMenu.addEventListener(\"mouseenter\", function () {\n        setTimeout(function () {\n          verticalMenu.classList.add(\"open-vertical\");\n        }, 150);\n      });\n      verticalMenu.addEventListener(\"mouseleave\", function () {\n        verticalMenu.classList.remove(\"open-vertical\");\n      });\n      this.setupSimpleHoverIntent(1, \".menu-parent__vertical\");\n    },\n\n    initMobileMenu: function () {\n      // Reserved for mobile menu specific initialization\n    },\n  };\n})();\nBlsMainMenuShopify.init();\nvar BlsSearchShopify = (function () {\n  return {\n    init: function () {\n      var predictive = document.querySelector(\"#predictive-search\");\n      if (predictive) {\n        this.setupEventListeners();\n      }\n      const form = document.querySelector(\"#search-form\");\n      document.querySelectorAll(\".top-search-toggle\").forEach((navToggle) => {\n        navToggle.onclick = (e) => {\n          const target = e.currentTarget;\n          if (!form.classList.contains(\"open\")) {\n            form.classList.add(\"open\");\n            target.classList.add(\"open\");\n            document.documentElement.classList.add(\n              \"open-drawer\",\n              \"open-search\"\n            );\n            root.style.setProperty(\n              \"padding-right\",\n              getScrollBarWidth.init() + \"px\"\n            );\n            setTimeout(function () {\n              form.querySelector('input[type=\"search\"]').focus();\n            }, 100);\n          } else {\n            form.classList.remove(\"open\");\n            target.classList.remove(\"open\");\n            setTimeout(() => {\n              document.documentElement.classList.remove(\"open-drawer\");\n              root.style.removeProperty(\"padding-right\");\n            }, 300);\n\n            document.documentElement.classList.remove(\"open-search\");\n          }\n        };\n      });\n      document.querySelectorAll(\".btn-search-close\").forEach((navToggle) => {\n        navToggle.onclick = () => {\n          form.classList.remove(\"open\");\n          document\n            .querySelector(\".dropdown-toggle .top-search-toggle\")\n            ?.classList.remove(\"open\");\n          document.documentElement.classList.remove(\"open-search\");\n          setTimeout(() => {\n            document.documentElement.classList.remove(\"open-drawer\");\n            root.style.removeProperty(\"padding-right\");\n          }, 300);\n        };\n        const overlay_search = document.querySelector(\".overlay_search\");\n        if (overlay_search) {\n          overlay_search.onclick = () => {\n            navToggle.click();\n          };\n        }\n      });\n      const sf = document.querySelector(\".search-full\");\n      if (sf) {\n        const hs = sf.closest(\".header_search\");\n        var unSubcribeCloseCanvas;\n        if (unSubcribeCloseCanvas) {\n          unSubcribeCloseCanvas();\n          unSubcribeCloseCanvas = null;\n        }\n        unSubcribeCloseCanvas = subscribe(\"closeCanvas\", (data) => {\n          if (document.documentElement.classList.contains(\"open-search\")) {\n            const width = window.innerWidth;\n            const ps = document.querySelector(\".popup-search\");\n            if (width >= 767.95 && ps) {\n              this.closeDefaultSearch();\n            }\n          }\n        });\n        this._boundHandleClickSearch =\n          this._boundHandleClickSearch || this.handleClickSearch.bind(this);\n\n        document.removeEventListener(\"click\", this._boundHandleClickSearch);\n\n        document.addEventListener(\"click\", this._boundHandleClickSearch);\n      }\n    },\n    handleClickSearch: function (e) {\n      const sf = document.querySelector(\".search-full\");\n      const hs = sf.closest(\".header_search\");\n      const ehs = e.target.closest(\".header_search\");\n\n      const search_container = e.target.closest(\"header-search\");\n\n      if (ehs || search_container) {\n        const ps = document.querySelector(\".popup-search\");\n        const width = window.innerWidth;\n        if (ps) {\n          ps.classList.add(\"popup-search-show\");\n          if (document.documentElement.classList.contains(\"open-search\")) {\n            return;\n          }\n          if (width >= 767.95) {\n            this.openDefaultSearch();\n          }\n        }\n      } else {\n        if (hs) {\n          if (document.documentElement.classList.contains(\"open-search\")) {\n            const width = window.innerWidth;\n            if (width >= 767.95) {\n              this.closeDefaultSearch();\n            } else {\n              const form = document.querySelector(\"#search-form\");\n              form.classList.remove(\"open\");\n              if (\n                document.documentElement.classList.contains(\"open-minicart\")\n              ) {\n                document.documentElement.classList.remove(\"open-search\");\n              } else {\n                document.documentElement.classList.remove(\n                  \"open-drawer\",\n                  \"open-search\"\n                );\n                root.style.removeProperty(\"padding-right\");\n              }\n            }\n          }\n        }\n      }\n    },\n    openDefaultSearch: function () {\n      const headerNavigation = document.querySelector(\n        \".header-bottom__navigation\"\n      );\n      const headerTopActions = document.querySelector(\".header-top__actions\");\n      const headerWrapper = document.querySelector(\"header\");\n      if (headerNavigation && headerWrapper) {\n        const headerNavigationHeight = headerNavigation.offsetHeight;\n        headerNavigation.style.opacity = \"0\";\n        headerNavigation.style.transition = \"opacity 0.3s ease\";\n        headerNavigation.style.display = \"none\";\n        headerWrapper.style.marginBottom = `${headerNavigationHeight}px`;\n      }\n      const overlay_search = document.querySelector(\".overlay_search\");\n      overlay_search.classList.add(\"open\");\n      const containsHeaderLayoutOne =\n        document.querySelector(\".header__layout-1\");\n      const containsHeaderLayoutTwo =\n        document.querySelector(\".header__layout-2\");\n      const containsHeaderLayoutThree =\n        document.querySelector(\".header__layout-3\");\n      const sf = document.querySelector(\n        containsHeaderLayoutOne\n          ? \"header\"\n          : containsHeaderLayoutTwo\n          ? \"header-inner\"\n          : containsHeaderLayoutThree\n          ? \".header-mega-store\"\n          : \".search-full\"\n      );\n      let topCaculate = sf.getBoundingClientRect().bottom;\n      const ps = document.querySelector(\".popup-search\");\n      document.documentElement.classList.add(\"open-drawer\");\n      root.style.setProperty(\"padding-right\", getScrollBarWidth.init() + \"px\");\n      Promise.all([\n        Motion.animate(\n          ps,\n          {\n            y: [\"-105%\", topCaculate],\n            visibility: [\"hidden\", \"visible\"],\n          },\n          {\n            ease: [0.7, 0, 0.2, 1],\n            duration: 0.4,\n          }\n        ),\n\n        Motion.animate(\n          overlay_search,\n          {\n            opacity: [0, 1],\n            visibility: [\"hidden\", \"visible\"],\n          },\n          {\n            ease: [0.7, 0, 0.2, 1],\n            duration: 0.4,\n          }\n        ),\n      ]).then(() => {\n        setTimeout(() => {\n          document.documentElement.classList.add(\"open-search\");\n        }, 20);\n      });\n    },\n\n    closeDefaultSearch: function () {\n      const headerNavigation = document.querySelector(\n        \".header-bottom__navigation\"\n      );\n      const headerWrapper = document.querySelector(\"header\");\n      const ps = document.querySelector(\".popup-search\");\n      const sf = document.querySelector(\".search-full\");\n      const overlay_search = document.querySelector(\".overlay_search\");\n      overlay_search.classList.remove(\"open\");\n      ps.classList.remove(\"popup-search-show\");\n      let topCaculate = sf.getBoundingClientRect().bottom + 10;\n      if (headerNavigation && headerWrapper) {\n        headerNavigation.style.opacity = \"\";\n        headerNavigation.style.transition = \"\";\n        headerNavigation.style.display = \"\";\n        headerWrapper.style.marginBottom = \"\";\n      }\n      Promise.all([\n        Motion.animate(\n          ps,\n          {\n            y: [topCaculate, \"-105%\"],\n            visibility: [\"visible\", \"hidden\"],\n          },\n          {\n            ease: [0.7, 0, 0.2, 1],\n            duration: 0.4,\n          }\n        ),\n\n        Motion.animate(\n          overlay_search,\n          {\n            opacity: [1, 0],\n            visibility: [\"visible\", \"hidden\"],\n          },\n          {\n            ease: [0.7, 0, 0.2, 1],\n            duration: 0.4,\n          }\n        ),\n      ]).then(() => {\n        setTimeout(() => {\n          if (document.documentElement.classList.contains(\"open-minicart\")) {\n            document.documentElement.classList.remove(\"open-search\");\n          } else {\n            document.documentElement.classList.remove(\n              \"open-drawer\",\n              \"open-search\"\n            );\n            root.style.removeProperty(\"padding-right\");\n          }\n        }, 20);\n      });\n    },\n\n    setupEventListeners: function () {\n      const input = document.querySelector('input[type=\"search\"]');\n      const form = document.querySelector(\"form.search\");\n      if (!input || !form) return;\n      form.addEventListener(\"submit\", this.onFormSubmit.bind(this));\n      input.addEventListener(\n        \"input\",\n        this.debounce((event) => {\n          this.onChange(event);\n        }, 300).bind(this)\n      );\n      input.addEventListener(\"focus\", this.onFocus.bind(this));\n      document.addEventListener(\"focusout\", this.onFocusOut.bind(this));\n      document.addEventListener(\"keyup\", this.onKeyup.bind(this));\n    },\n\n    debounce: function (fn, wait) {\n      let t;\n      return (...args) => {\n        clearTimeout(t);\n        t = setTimeout(() => fn.apply(this, args), wait);\n      };\n    },\n\n    getQuery: function () {\n      return document.querySelector('input[type=\"search\"]').value.trim();\n    },\n\n    onChange: function () {\n      const searchTerm = this.getQuery();\n\n      if (!searchTerm.length) {\n        this.close(true);\n        return;\n      }\n\n      this.getSearchResults(searchTerm);\n    },\n\n    onFormSubmit: function (event) {\n      if (\n        !this.getQuery().length ||\n        this.querySelector('[aria-selected=\"true\"] a')\n      )\n        event.preventDefault();\n    },\n\n    onFocus: function () {\n      const searchTerm = this.getQuery();\n      if (!searchTerm.length) return;\n      if (\n        document\n          .querySelector(\"#predictive-search\")\n          .classList.contains(\"results\")\n      ) {\n        this.open();\n      } else {\n        this.getSearchResults(searchTerm);\n      }\n    },\n\n    onFocusOut: function () {\n      setTimeout(() => {\n        if (!document.contains(document.activeElement)) this.close();\n      });\n    },\n\n    onKeyup: function (event) {\n      if (!this.getQuery().length) this.close(true);\n      event.preventDefault();\n\n      switch (event.code) {\n        case \"ArrowUp\":\n          this.switchOption(\"up\");\n          break;\n        case \"ArrowDown\":\n          this.switchOption(\"down\");\n          break;\n        case \"Enter\":\n          this.selectOption();\n          break;\n      }\n    },\n\n    switchOption: function (direction) {\n      if (!this.getAttribute(\"open\")) return;\n      const moveUp = direction === \"up\";\n      const selectedElement = document.querySelector('[aria-selected=\"true\"]');\n      const allElements = document.querySelectorAll(\"li\");\n      let activeElement = document.querySelector(\"li\");\n\n      if (moveUp && !selectedElement) return;\n\n      this.statusElement.textContent = \"\";\n\n      if (!moveUp && selectedElement) {\n        activeElement = selectedElement.nextElementSibling || allElements[0];\n      } else if (moveUp) {\n        activeElement =\n          selectedElement.previousElementSibling ||\n          allElements[allElements.length - 1];\n      }\n\n      if (activeElement === selectedElement) return;\n\n      activeElement.setAttribute(\"aria-selected\", true);\n      if (selectedElement) selectedElement.setAttribute(\"aria-selected\", false);\n      document\n        .querySelector('input[type=\"search\"]')\n        .setAttribute(\"aria-activedescendant\", activeElement.id);\n    },\n\n    selectOption: function () {\n      const selectedProduct = document.querySelector(\n        '[aria-selected=\"true\"] a, [aria-selected=\"true\"] button'\n      );\n\n      if (selectedProduct) selectedProduct.click();\n    },\n\n    getSearchResults: function (searchTerm) {\n      const cachedResults = {};\n      const queryKey = searchTerm.replace(\" \", \"-\").toLowerCase();\n      this.setLiveRegionLoadingState();\n      if (cachedResults[queryKey]) {\n        this.renderSearchResults(cachedResults[queryKey]);\n        return;\n      }\n      var loading = document.querySelector(\".search__loading-state\");\n      var collection_suggest = document.querySelector(\".collection-suggest\");\n\n      if (collection_suggest) {\n        collection_suggest.style.display = \"none\";\n      }\n      var section_id = \"search-predictive-grid\";\n      if (document.querySelector(\".predictive_search_suggest\")) {\n        var search_url = `${\n          routes?.predictive_search_url\n        }?q=${encodeURIComponent(\n          searchTerm\n        )}&resources[options][fields]=title,tag,vendor,product_type,variants.title,variants.sku&resources[options][prefix]=last&resources[options][unavailable_products]=last&resources[type]=query,product,collection,page,article&section_id=${section_id}`;\n      } else {\n        var search_url = `${routes.search_url}?q=${encodeURIComponent(\n          searchTerm\n        )}&options[prefix]=last&options[unavailable_products]=last&type=query,product,collection,page,article&section_id=${section_id}`;\n      }\n      fetch(`${search_url}`)\n        .then((response) => {\n          if (!response.ok) {\n            var error = new Error(response.status);\n            this.close();\n            throw error;\n          }\n          return response.text();\n        })\n        .then((text) => {\n          const resultsMarkup = new DOMParser()\n            .parseFromString(text, \"text/html\")\n            .querySelector(\"#shopify-section-\" + section_id + \"\").innerHTML;\n          cachedResults[queryKey] = resultsMarkup;\n          this.renderSearchResults(resultsMarkup);\n          BlsLazyloadImg.init();\n        })\n        .catch((error) => {\n          this.close();\n          throw error;\n        });\n    },\n\n    setLiveRegionLoadingState: function () {\n      document.querySelector(\"#search_mini_form\").classList.add(\"loading\");\n      document.querySelector(\"#predictive-search\").classList.add(\"loading\");\n    },\n\n    setLiveRegionResults: function () {\n      document.querySelector(\"#search_mini_form\").classList.remove(\"loading\");\n      document.querySelector(\"#predictive-search\").classList.remove(\"loading\");\n    },\n\n    renderSearchResults: function (resultsMarkup) {\n      document.querySelector(\"[data-predictive-search]\").innerHTML =\n        resultsMarkup;\n      document.querySelector(\"#predictive-search\").classList.add(\"results\");\n      if (document.querySelector(\".search-not-sugges\")) {\n        document\n          .querySelector(\".search-not-sugges\")\n          .classList.remove(\"search-hidden\");\n        document.documentElement.classList.add(\"open-drawer\", \"open-search\");\n        root.style.setProperty(\n          \"padding-right\",\n          getScrollBarWidth.init() + \"px\"\n        );\n      }\n      const quick_search = document.querySelector(\"#quick-search\");\n      if (quick_search) {\n        quick_search.classList.add(\"hidden\");\n      }\n      this.setLiveRegionResults();\n      this.open();\n    },\n\n    open: function () {\n      document\n        .querySelector('input[type=\"search\"]')\n        .setAttribute(\"aria-expanded\", true);\n      this.isOpen = true;\n    },\n\n    close: function (clearSearchTerm = false) {\n      if (clearSearchTerm) {\n        document.querySelector('input[type=\"search\"]').value = \"\";\n        document\n          .querySelector(\"#predictive-search\")\n          .classList.remove(\"results\");\n        if (document.querySelector(\".search-not-sugges\")) {\n          document\n            .querySelector(\".search-not-sugges\")\n            .classList.add(\"search-hidden\");\n          document.documentElement.classList.remove(\n            \"open-drawer\",\n            \"open-search\"\n          );\n          root.style.removeProperty(\"padding-right\");\n        }\n\n        const quick_search = document.querySelector(\"#quick-search\");\n        if (quick_search) {\n          quick_search.classList.remove(\"hidden\");\n        }\n      }\n      const selected = document.querySelector('[aria-selected=\"true\"]');\n      if (selected) selected.setAttribute(\"aria-selected\", false);\n      document\n        .querySelector('input[type=\"search\"]')\n        .setAttribute(\"aria-activedescendant\", \"\");\n      document\n        .querySelector('input[type=\"search\"]')\n        .setAttribute(\"aria-expanded\", false);\n      this.resultsMaxHeight = false;\n      document\n        .querySelector(\"[data-predictive-search]\")\n        .removeAttribute(\"style\");\n      this.isOpen = false;\n    },\n  };\n})();\nBlsSearchShopify.init();\nclass HeaderSearch extends HTMLElement {\n  constructor() {\n    super();\n    this.init();\n  }\n  init() {\n    const _this = this;\n    const header = document.querySelector(\"header\");\n    const button_search_default = document.querySelector(\n      \"#button_search_default\"\n    );\n    if (\n      header.classList.contains(\"popup-search-mobile\") &&\n      this.classList.contains(\"search_type_default\")\n    ) {\n      let sectionId = \"top-search\";\n      if (window.innerWidth <= 767) {\n        _this.fetchUrl(\n          `${window.location.pathname}?section_id=${sectionId}&type=popup&ajax=1`,\n          \"popup\"\n        );\n        button_search_default.classList.add(\"top-search-toggle\");\n      }\n      let width = window.innerWidth;\n      window.addEventListener(\"resize\", function () {\n        const newWidth = window.innerWidth;\n\n        if (newWidth <= 767 && width > 767) {\n          const overlay_search = document.querySelector(\".overlay_search\");\n          overlay_search.style.visibility = \"hidden\";\n          overlay_search.style.opacity = 0;\n          overlay_search.classList.remove(\"open\");\n          _this.fetchUrl(\n            `${window.location.pathname}?section_id=${sectionId}&type=popup&ajax=1`,\n            \"popup\"\n          );\n          button_search_default.classList.add(\"top-search-toggle\");\n        }\n        if (newWidth > 767 && width <= 767) {\n          button_search_default.classList.remove(\"top-search-toggle\");\n          _this.fetchUrl(\n            `${window.location.pathname}?section_id=${sectionId}&type=default&ajax=1`\n          );\n          var popup_search_form_popup = document.querySelector(\n            \".search__type-popup\"\n          );\n          if (popup_search_form_popup) {\n            popup_search_form_popup.style.display = \"none\";\n          }\n        }\n        width = newWidth;\n      });\n    } else {\n      let width = window.innerWidth;\n      window.addEventListener(\"resize\", function () {\n        const newWidth = window.innerWidth;\n        var popup_search_form_popup = document.querySelector(\n          \".search__type-popup\"\n        );\n        if (newWidth <= 767 && width > 767) {\n          if (\n            popup_search_form_popup &&\n            !document.documentElement.classList.contains(\"open-search\")\n          ) {\n            popup_search_form_popup.style.display = \"none\";\n            setTimeout(() => {\n              popup_search_form_popup.style.display = \"block\";\n            }, 20);\n          }\n        }\n        if (newWidth > 767 && width <= 767) {\n          if (\n            popup_search_form_popup &&\n            !document.documentElement.classList.contains(\"open-search\")\n          ) {\n            popup_search_form_popup.style.display = \"none\";\n            setTimeout(() => {\n              popup_search_form_popup.style.display = \"block\";\n            }, 20);\n          }\n        }\n\n        width = newWidth;\n      });\n    }\n  }\n  fetchUrl(url, type = \"default\") {\n    var input = document.querySelector(\".search__input\");\n    if (type == \"default\") {\n      input.setAttribute(\"type\", \"search\");\n    } else {\n      input.removeAttribute(\"type\");\n    }\n    fetch(url)\n      .then((response) => response.text())\n      .then((responseText) => {\n        const newSection = new DOMParser()\n          .parseFromString(responseText, \"text/html\")\n          .querySelector(\"header-search\").innerHTML;\n        document.querySelector(\"header-search\").innerHTML = newSection;\n      })\n      .catch((e) => {\n        throw e;\n      })\n      .finally(() => {\n        if (document.documentElement.classList.contains(\"open-search\")) {\n          document.documentElement.classList.remove(\n            \"open-search\",\n            \"open-drawer\"\n          );\n        }\n        BlsSearchShopify.init();\n      });\n  }\n}\n\ncustomElements.define(\"header-search\", HeaderSearch);;\nclass QuantityInput extends HTMLElement {\n  constructor() {\n    super();\n    this.input = this.querySelector(\"input\");\n    this.changeEvent = new Event(\"change\", { bubbles: true });\n    this.input.addEventListener(\"change\", this.onInputChange.bind(this));\n    this.querySelectorAll(\"button\").forEach((button) =>\n      button.addEventListener(\"click\", this.onButtonClick.bind(this))\n    );\n  }\n\n  quantityUpdateUnsubscriber = undefined;\n\n  connectedCallback() {\n    this.validateQtyRules();\n    this.quantityUpdateUnsubscriber = subscribe(\n      PUB_SUB_EVENTS.quantityUpdate,\n      this.validateQtyRules.bind(this)\n    );\n  }\n\n  disconnectedCallback() {\n    if (this.quantityUpdateUnsubscriber) {\n      this.quantityUpdateUnsubscriber();\n    }\n  }\n\n  onInputChange() {\n    this.validateQtyRules();\n  }\n\n  onButtonClick(event) {\n    event.preventDefault();\n    const previousValue = this.input.value;\n\n    event.target.name === \"plus\" ||\n    event.target.closest(\"button\").name === \"plus\"\n      ? this.input.stepUp()\n      : this.input.stepDown();\n    if (previousValue !== this.input.value)\n      this.input.dispatchEvent(this.changeEvent);\n  }\n\n  validateQtyRules() {\n    const value = parseInt(this.input.value);\n    if (this.input.min) {\n      const min = parseInt(this.input.min);\n      const buttonMinus = this.querySelector(\".quantity__button[name='minus']\");\n      buttonMinus.classList.toggle(\"disabled\", value <= min);\n    }\n    if (this.input.max) {\n      const max = parseInt(this.input.max);\n      const buttonPlus = this.querySelector(\".quantity__button[name='plus']\");\n      buttonPlus.classList.toggle(\"disabled\", value >= max);\n    }\n  }\n}\n\ncustomElements.define(\"quantity-input\", QuantityInput);\n\nclass ProgressBar extends HTMLElement {\n  constructor() {\n    super();\n    const orders = this.dataset.order;\n    this.init(orders);\n  }\n  init(orders) {\n    const fe_unavaiable = this.dataset.feUnavaiable;\n    const fe_avaiable = this.dataset.feAvaiable;\n    const rate = Number(Shopify.currency.rate);\n    const min = Number(this.dataset.feAmount);\n    if (!min || !rate) return;\n    const order = Number(orders) / 100;\n    const min_by_currency = min * rate;\n    if (order == undefined) return;\n    if ((order / min_by_currency) * 100 > 100) {\n      this.setProgressBar(100);\n    } else {\n      this.setProgressBar((order / min_by_currency) * 100);\n    }\n    this.setProgressBarTitle(\n      order,\n      min_by_currency,\n      fe_unavaiable,\n      fe_avaiable\n    );\n  }\n  setProgressBarTitle(order, min_by_currency, fe_unavaiable, fe_avaiable) {\n    const title = this.querySelector(\".free-shipping-message\");\n    if (!title) return;\n    title.classList.remove(\"opacity-0\");\n    if (order >= min_by_currency) {\n      title.innerHTML = fe_avaiable;\n    } else {\n      const ammount = \"{{ amount }}\";\n      title.innerHTML = fe_unavaiable.replace(\n        ammount.trim(),\n        Shopify.formatMoney(\n          (min_by_currency - order) * 100,\n          cartStrings.money_format\n        )\n      );\n    }\n  }\n  setProgressBar(progress) {\n    const p = this.querySelector(\".progress\");\n    p.style.width = progress + \"%\";\n    if (progress === 100) {\n      this.classList.add(\"cart_shipping_free\");\n    } else {\n      this.classList.remove(\"cart_shipping_free\");\n    }\n  }\n}\ncustomElements.define(\"free-ship-progress-bar\", ProgressBar);\n\nclass OpenChildrenToggle extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener(\"click\", this.onToggle.bind(this), false);\n  }\n  onToggle() {\n    const parent = this.parentElement;\n    if (parent) {\n      if (!parent.classList.contains(\"is-open\")) {\n        parent.classList.add(\"is-open\");\n      } else {\n        parent.classList.remove(\"is-open\");\n      }\n    }\n  }\n}\ncustomElements.define(\"open-children-toggle\", OpenChildrenToggle);\n\nclass CloseMenu extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener(\"click\", this.onClose.bind(this), false);\n  }\n  onClose() {\n    document.querySelector(\".nav-toggle\").classList.remove(\"open\");\n    document.querySelectorAll(\"menu-item\").forEach((item) => {\n      item.classList.remove(\"is-open\");\n    });\n    document.documentElement.classList.remove(\"nav-open\");\n    setTimeout(() => {\n      document.documentElement.classList.remove(\"open-drawer\");\n      root.style.removeProperty(\"padding-right\");\n    }, 400);\n  }\n}\ncustomElements.define(\"close-menu\", CloseMenu);\n\nclass ReviewProduct extends HTMLElement {\n  constructor() {\n    super();\n    this.productHandle = this.dataset.productHandle;\n\n    if (document.body.classList.contains(\"index\")) {\n      this.fetchDataReviewProduct();\n      window.addEventListener(\"scroll\", () => {\n        this.fetchDataReviewProduct();\n      });\n      let pos = window.pageYOffset;\n      if (pos > 0 || document.body.classList.contains(\"review-lazy\")) {\n        this.fetchDataReviewProduct();\n      }\n    } else {\n      this.fetchDataReviewProduct();\n    }\n  }\n  fetchDataReviewProduct() {\n    if (!this.classList.contains(\"review-product-added\")) {\n      return;\n    }\n    this.classList.remove(\"review-product-added\");\n    this.innerHTML = this.querySelector(\".product-review-json\").innerHTML;\n    this.classList.remove(\"inline-loading\");\n  }\n}\ncustomElements.define(\"review-product\", ReviewProduct);\n\nclass BackMenu extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener(\"click\", this.onBackMenu.bind(this), false);\n  }\n  onBackMenu() {\n    if (this.classList.contains(\"back-lv1\")) {\n      this.closest(\".level-1\")\n        .querySelector(\"menu-item\")\n        .classList.remove(\"is-open\");\n    } else {\n      this.closest(\".level0\")\n        .querySelector(\"menu-item\")\n        .classList.remove(\"is-open\");\n    }\n  }\n}\ncustomElements.define(\"back-menu\", BackMenu);\n\nvar BlsLoginPopup = (function () {\n  return {\n    init: function () {\n      this.showLogin();\n    },\n    clickTab: function (modal) {\n      const hidden = document.querySelectorAll(\"[data-login-hidden]\");\n      const show = document.querySelectorAll(\"[data-login-show]\");\n      const iTitle = document.querySelector(\"#login-popup .login-heading\");\n      show.forEach((e) => {\n        var s = e?.dataset.loginShow;\n        e.addEventListener(\"click\", function (el) {\n          el.preventDefault();\n          hidden.forEach((eh) => {\n            var h = eh?.dataset.loginHidden;\n            if (eh.getAttribute(\"aria-hidden\") === \"true\" && s === h) {\n              eh.setAttribute(\"aria-hidden\", \"false\");\n              if (iTitle) {\n                iTitle.innerText = s;\n              }\n            } else {\n              eh.setAttribute(\"aria-hidden\", \"true\");\n            }\n          });\n        });\n      });\n    },\n    showLogin: function () {\n      const action = document.querySelector(\".action-login-popup\");\n      const _this = this;\n      if (action) {\n        action.addEventListener(\"click\", (e) => {\n          e.preventDefault();\n          _this.fetchDataLogin(e);\n        });\n      }\n    },\n    fetchDataLogin: function (event) {\n      const _this = this;\n      const currentTarget = event.currentTarget;\n      const template = currentTarget.querySelector(\"template\");\n      if (template) {\n        const content = template.content.firstElementChild.cloneNode(true).outerHTML;\n        if (content) {\n            const modal = new tingle.modal({\n              footer: false,\n              stickyFooter: false,\n              closeMethods: [\"overlay\", \"button\", \"escape\"],\n              closeLabel: \"Close\",\n              cssClass: [\"login-popup-modal\"],\n              onOpen: function () {},\n              onClose: function () {},\n              beforeOpen: function () {},\n              beforeClose: function () {\n                return true;\n              },\n            });\n            modal.setContent(content);\n            modal.open();\n            document\n              .querySelectorAll(\".login__popup-button-close\")\n              .forEach((navToggle) => {\n                navToggle.addEventListener(\n                  \"click\",\n                  (e) => {\n                    e.preventDefault();\n                    modal.close();\n                  },\n                  false\n                );\n              });\n        }\n        _this.clickTab();\n      }\n    },\n  };\n})();\nBlsLoginPopup.init();\n\nclass BackToTop extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener(\"click\", this.backToTop.bind(this), false);\n  }\n\n  connectedCallback() {\n    window.addEventListener(\"scroll\", this.updateScrollPercentage.bind(this));\n  }\n\n  backToTop() {\n    if (document.documentElement.scrollTop > 0 || document.body.scrollTop > 0) {\n      window.scrollTo({\n        top: 0,\n        behavior: \"smooth\",\n      });\n    }\n  }\n\n  updateScrollPercentage() {\n    const scrollHeight =\n      document.documentElement.scrollHeight || document.body.scrollHeight;\n    const scrollTop =\n      document.documentElement.scrollTop || document.body.scrollTop;\n    const clientHeight =\n      document.documentElement.clientHeight || document.body.clientHeight;\n    const scrollPercentage = (scrollTop / (scrollHeight - clientHeight)) * 100;\n    this.style.setProperty(\"--height\", scrollPercentage.toFixed(2) + \"%\");\n    if (scrollTop > 200) {\n      this.classList.add(\"show\");\n    } else {\n      this.classList.remove(\"show\");\n    }\n  }\n}\ncustomElements.define(\"back-to-top\", BackToTop);\n\nclass LocalizationForm extends HTMLElement {\n  constructor() {\n    super();\n    this.elements = {\n      input: this.querySelector(\n        'input[name=\"language_code\"], input[name=\"country_code\"]'\n      ),\n      button: this.querySelector(\".button-localization\"),\n      panel: this.querySelector(\"ul\"),\n    };\n    this.elements.button.addEventListener(\n      \"click\",\n      this.openSelector.bind(this)\n    );\n    this.elements.button.addEventListener(\n      \"focusout\",\n      this.closeSelector.bind(this)\n    );\n    this.addEventListener(\"keyup\", this.onContainerKeyUp.bind(this));\n    this.querySelectorAll(\"a\").forEach((item) =>\n      item.addEventListener(\"click\", this.onItemClick.bind(this))\n    );\n    this.onBodyClick = this.handleBodyClick.bind(this);\n  }\n\n  handleBodyClick(evt) {\n    const target = evt.target;\n    if (target != this && !target.closest(\"localization-form\")) {\n      this.hidePanel();\n    }\n  }\n\n  hidePanel() {\n    document.body.removeEventListener(\"click\", this.onBodyClick);\n    this.elements.button.classList.remove(\"open\");\n  }\n\n  onContainerKeyUp(event) {\n    if (event.code.toUpperCase() !== \"ESCAPE\") return;\n    this.hidePanel();\n    this.elements.button.focus();\n  }\n\n  onItemClick(event) {\n    event.preventDefault();\n    const form = this.querySelector(\"form\");\n    this.elements.input.value = event.currentTarget.dataset.value;\n    if (form) form.submit();\n  }\n\n  openSelector() {\n    if (this.elements.button.classList.contains(\"open\")) {\n      this.hidePanel();\n    } else {\n      document.body.addEventListener(\"click\", this.onBodyClick);\n      this.elements.button.focus();\n      for (var item of document.querySelectorAll(\".button-localization\")) {\n        item.classList.remove(\"open\");\n      }\n      this.elements.button.classList.add(\"open\");\n    }\n  }\n\n  closeSelector(event) {\n    const shouldClose =\n      event.relatedTarget && event.relatedTarget.nodeName === \"BUTTON\";\n    if (event.relatedTarget === null || shouldClose) {\n      this.hidePanel();\n    }\n  }\n}\ncustomElements.define(\"localization-form\", LocalizationForm);\n\nclass CollapsibleBlock extends HTMLElement {\n  constructor() {\n    super();\n    const _this = this;\n    const block = _this.querySelectorAll(\".collapsible-heading\");\n    block.forEach((event) => {\n      event.addEventListener(\"click\", (e) => {\n        const target = e.currentTarget;\n        const parent = target.parentElement;\n        const footerContent = parent.querySelector(\".collapsible-content\");\n        if (\n          _this.closest(\".collection-filter\") &&\n          _this\n            .closest(\".collection-filter\")\n            .classList.contains(\"horizontal\") &&\n          window.innerWidth > 1024\n        ) {\n          if (!_this.classList.contains(\"active\")) {\n            if (document.querySelector(\"collapsible-block.active\")) {\n              document\n                .querySelector(\"collapsible-block.active\")\n                .classList.remove(\"active\");\n            }\n            _this.classList.add(\"active\");\n          } else {\n            _this.classList.remove(\"active\");\n          }\n        } else {\n          slideAnime({\n            target: footerContent,\n            animeType: \"slideToggle\",\n          });\n          if (!_this.classList.contains(\"active\")) {\n            _this.classList.add(\"active\");\n          } else {\n            _this.classList.remove(\"active\");\n          }\n        }\n      });\n    });\n    document.body.addEventListener(\"click\", this.handleBodyClick.bind(this));\n    if (this.classList.contains(\"collection\")) {\n      this.actionInMobile();\n      window.addEventListener(\"resize\", () => {\n        this.actionInMobile();\n      });\n    }\n  }\n\n  actionInMobile() {\n    var _this = this;\n    var width = window.innerWidth;\n    if (width <= 1024) {\n      const footerContent = _this.querySelector(\".collapsible-content\");\n      if (footerContent) footerContent.style.display = \"block\";\n      _this.classList.add(\"active\");\n    }\n  }\n\n  handleBodyClick(evt) {\n    const target = evt.target;\n    if (\n      target != this &&\n      !target.closest(\"collapsible-block\") &&\n      document.querySelector(\".collection-filter\") &&\n      document\n        .querySelector(\".collection-filter\")\n        .classList.contains(\"horizontal\") &&\n      window.innerWidth > 1024\n    ) {\n      const block = document\n        .querySelector(\".collection-filter\")\n        .querySelectorAll(\"collapsible-block\");\n      block.forEach((collapsible) => {\n        collapsible.classList.remove(\"active\");\n      });\n    }\n  }\n}\ncustomElements.define(\"collapsible-block\", CollapsibleBlock);\n\nclass StickyElement extends HTMLElement {\n  constructor() {\n    super();\n    this.collapsibleHeading = this.querySelector(\".collapsible-bundle\");\n    this.contentWrapper = this.querySelector(\".bundle-items__wrapper\");\n    this.isOpen = true;\n    this.isMobile = window.innerWidth <= 1024;\n    this.init();\n  }\n\n  init() {\n    if (this.isMobile) {\n      this.setupCollapsible();\n    }\n\n    window.addEventListener(\"resize\", this.onResize.bind(this));\n  }\n\n  setupCollapsible() {\n    if (!this.collapsibleHeading || !this.contentWrapper) return;\n\n    if (this.isMobile) {\n      this.isOpen = false;\n      this.contentWrapper.style.display = \"none\";\n      this.classList.remove(\"opened\");\n    }\n\n    if (!this.collapsibleHeading.hasEventListener) {\n      this.collapsibleHeading.hasEventListener = true;\n      this.collapsibleHeading.addEventListener(\n        \"click\",\n        this.toggleCollapse.bind(this)\n      );\n    }\n  }\n\n  toggleCollapse(event) {\n    if (!this.isMobile) return;\n\n    event.preventDefault();\n\n    this.isOpen = !this.isOpen;\n\n    slideAnime({\n      target: this.contentWrapper,\n      animeType: \"slideToggle\",\n      parent: this,\n    });\n  }\n\n  onResize() {\n    const wasMobile = this.isMobile;\n    this.isMobile = window.innerWidth <= 1024;\n\n    if (wasMobile !== this.isMobile) {\n      if (this.isMobile) {\n        this.setupCollapsible();\n      } else {\n        if (this.contentWrapper) {\n          this.contentWrapper.style.display = \"block\";\n          this.contentWrapper.style.height = \"auto\";\n        }\n      }\n    }\n  }\n\n  showContent() {\n    if (this.isMobile && !this.isOpen && this.contentWrapper) {\n      this.isOpen = true;\n      slideAnime({\n        target: this.contentWrapper,\n        animeType: \"slideDown\",\n        parent: this,\n      });\n      this.classList.add(\"opened\");\n    }\n  }\n}\n\ncustomElements.define(\"sticky-element\", StickyElement);\n\nclass AnnouncementBar extends HTMLElement {\n  constructor() {\n    super();\n    const _this = this;\n    const close = _this.querySelector(\".announcement-bar-close\");\n    if (!close) {\n      return;\n    }\n    close.addEventListener(\"click\", (e) => {\n      slideAnime({\n        target: _this,\n        animeType: \"slideToggle\",\n      });\n      sessionStorage.setItem(\"announcement_bar\", \"false\");\n    });\n  }\n}\ncustomElements.define(\"announcement-bar\", AnnouncementBar);\n\nclass VideoSection extends HTMLElement {\n  constructor() {\n    super();\n    this.thumb = this.querySelector(\".video-thumbnail\");\n    this.video_iframe = this.querySelector(\".video-has-bg iframe\");\n    this.init();\n  }\n\n  init() {\n    if (this.video_iframe) {\n      this.video_iframe.addEventListener(\"load\", () => {\n        if (this.thumb) {\n          this.thumb.remove();\n        }\n      });\n    }\n  }\n}\ncustomElements.define(\"video-section\", VideoSection);\n\nclass AgeVerifier extends HTMLElement {\n  constructor() {\n    super();\n    this.ageVerifyDetail = this.querySelector(\".age-verify-detail\");\n    this.declineVerifyDetail = this.querySelector(\".decline-verify-detail\");\n    this.init();\n    this.mainFunction();\n  }\n  init() {\n    const _this = this;\n    if (!Shopify.designMode) {\n      if (!getCookie(\"age_verifier\")) {\n        this.classList.add(\"active\");\n        this.declineVerifyDetail.classList.add(\"hidden\");\n        this.ageVerifyDetail.classList.remove(\"hidden\");\n      } else {\n        if (getCookie(\"age_verifier\") == \"false\") {\n          this.classList.add(\"active\");\n          this.declineVerifyDetail.classList.remove(\"hidden\");\n          this.ageVerifyDetail.classList.add(\"hidden\");\n        } else {\n          this.remove();\n        }\n      }\n    }\n  }\n\n  mainFunction() {\n    const approve = this.querySelector(\".age-verifier-approve\");\n    const decline = this.querySelector(\".age-verifier-decline\");\n    const returnBtn = this.querySelector(\".age-verifier-return\");\n    if (returnBtn) {\n      returnBtn.addEventListener(\"click\", () => this.handleReturn());\n    }\n\n    if (!approve || !decline) return;\n    approve.addEventListener(\"click\", () => this.handleApprove());\n    decline.addEventListener(\"click\", () => this.handleDecline());\n  }\n  handleReturn() {\n    if (!Shopify.designMode) {\n      setCookie(\"age_verifier\", \"false\", \"-1\");\n      this.init();\n    }\n  }\n  handleDecline() {\n    if (!Shopify.designMode) {\n      setCookie(\"age_verifier\", \"false\", \"365\");\n      this.init();\n    }\n  }\n  handleApprove() {\n    setCookie(\"age_verifier\", \"true\", \"false\");\n    this.classList.add(\"fadeOut\");\n    setTimeout(() => {\n      this.remove();\n    }, 1000);\n  }\n}\ncustomElements.define(\"age-verifier\", AgeVerifier);\n\nclass PromotionPopup extends HTMLElement {\n  constructor() {\n    super();\n    setTimeout(() => {\n      this.init();\n    }, 15000);\n  }\n\n  init() {\n    const _this = this;\n    const s = _this?.dataset.show;\n    const m = _this?.dataset.showMb === \"true\";\n    if (!Shopify.designMode) {\n      if (s === \"show-on-all-pages\" || s === \"show-on-homepage\") {\n        if (getCookie(\"promotion-popup\") === \"\") {\n          const modal = new tingle.modal({\n            footer: false,\n            stickyFooter: false,\n            closeMethods: [\"overlay\", \"button\", \"escape\"],\n            closeLabel: \"Close\",\n            cssClass: [\n              `promotion-popup-modal`,\n              `${m ? \"enable-on-mobile\" : \"show-all\"}`,\n            ],\n          });\n          modal.setContent(_this.innerHTML);\n          modal.open();\n          _this.copyPromotion();\n          _this.checkNotShowPromotion();\n        }\n      }\n    }\n  }\n  checkNotShowPromotion() {\n    const check = document.querySelector(\n      \".promotion-popup-modal .do-not-show-again\"\n    );\n    if (check) {\n      check.addEventListener(\"click\", (e) => {\n        setCookie(\"promotion-popup\", 1, 1);\n        document\n          .querySelector(\".promotion-popup-modal .tingle-modal__close\")\n          .click();\n      });\n    }\n  }\n  copyPromotion() {\n    const cp = document.querySelectorAll(\".promotion-popup-modal .discount\");\n    if (cp !== null) {\n      cp.forEach((e) => {\n        e.addEventListener(\"click\", (el) => {\n          el.preventDefault();\n          navigator.clipboard.writeText(e?.dataset.code);\n          e.classList.add(\"action-copy\");\n          setTimeout(() => {\n            e.classList.remove(\"action-copy\");\n          }, 1500);\n        });\n      });\n    }\n  }\n}\ncustomElements.define(\"promotion-popup\", PromotionPopup);\n\nclass NewsletterPopup extends HTMLElement {\n  constructor() {\n    super();\n    setTimeout(() => {\n      this.init();\n    }, 12000);\n  }\n  init() {\n    const sectionId = this.dataset.sectionId;\n    const url = `${window.location.pathname}?section_id=${sectionId}&ajax=1`;\n    fetch(`${url}`)\n      .then((response) => {\n        if (!response.ok) {\n          var error = new Error(response.status);\n          throw error;\n        }\n        return response.text();\n      })\n      .then((responseText) => {\n        const newSection = new DOMParser()\n          .parseFromString(responseText, \"text/html\")\n          .querySelector(\"newsletter-popup\").innerHTML;\n        document.querySelector(\"newsletter-popup\").innerHTML = newSection;\n      })\n      .catch((error) => {\n        throw error;\n      })\n      .finally(() => {\n        this.initPopup();\n      });\n  }\n\n  initPopup() {\n    const _this = this;\n    const s = _this?.dataset.show;\n    const m = _this?.dataset.showMb === \"true\";\n    if (!Shopify.designMode) {\n      const cookie = getCookie(\"newsletter_popup\");\n      const width = window.innerWidth;\n      if (!m && width < 768) {\n        return false;\n      }\n      if ((s == \"show_homepage\" || s == \"show_all_page\") && cookie === \"\") {\n        const modal = new tingle.modal({\n          footer: false,\n          stickyFooter: false,\n          closeMethods: [\"overlay\", \"button\", \"escape\"],\n          closeLabel: \"Close\",\n          beforeOpen: function () {\n            CloseAllPopup();\n          },\n          cssClass: [\n            `newsletter-popup-modal`,\n            `${m ? \"show-all\" : \"disable-on-mobile\"}`,\n          ],\n        });\n        modal.setContent(_this.innerHTML);\n        modal.open();\n        _this.onShowNewletter();\n      }\n    }\n  }\n\n  onShowNewletter() {\n    const _this = this;\n    const setC = document.querySelector(\n      \".newsletter-popup-modal .newsletter-popup__dont-show\"\n    );\n    if (!setC) return;\n    setC.addEventListener(\"click\", _this.notShow.bind(_this));\n    setC.addEventListener(\n      \"keypress\",\n      function (event) {\n        if (event.key === \"Enter\") {\n          _this.notShow.bind(_this)(event);\n        }\n      }.bind(_this),\n      false\n    );\n  }\n\n  notShow(e) {\n    e.preventDefault();\n    setCookie(\"newsletter_popup\", 30, 1);\n    document\n      .querySelector(\".newsletter-popup-modal .tingle-modal__close\")\n      .click();\n  }\n}\ncustomElements.define(\"newsletter-popup\", NewsletterPopup);\n\nclass TiktokVideo extends HTMLElement {\n  constructor() {\n    super();\n    this.init();\n  }\n  init() {\n    const _this = this;\n    window.addEventListener(\"scroll\", () => {\n      let wpy = window.scrollY;\n      if (wpy > 0) {\n        this.scrollLazyloadVideo();\n      }\n    });\n    let pos = window.pageYOffset;\n    if (pos > 40) {\n      this.scrollLazyloadVideo();\n    }\n  }\n\n  scrollLazyloadVideo() {\n    const _this = this;\n    if (!_this.classList.contains(\"tiktok-loading\")) {\n      return;\n    }\n    _this.classList.remove(\"tiktok-loading\");\n    const sectionId = _this.dataset.sectionId;\n    const url = `${window.location.pathname}?section_id=${sectionId}&ajax=1`;\n    fetch(`${url}`)\n      .then((response) => {\n        if (!response.ok) {\n          var error = new Error(response.status);\n          throw error;\n        }\n        return response.text();\n      })\n      .then((responseText) => {\n        const newSection = new DOMParser()\n          .parseFromString(responseText, \"text/html\")\n          .querySelector(\"tiktok-video\").innerHTML;\n        _this.innerHTML = newSection;\n      })\n      .catch((error) => {\n        throw error;\n      })\n      .finally(() => {\n        var script = document.createElement(\"script\");\n        script.type = \"text/javascript\";\n        script.src = \"https://www.tiktok.com/embed.js\";\n        document.body.appendChild(script);\n      });\n  }\n}\ncustomElements.define(\"tiktok-video\", TiktokVideo);\n\nvar returnMessageWhenSubmit = (function () {\n  return {\n    init: function () {\n      this.checkUrlReturn();\n    },\n    checkUrlReturn: function () {\n      const getUrl = window.location.href;\n      if (\n        getUrl.indexOf(\"customer_posted=true#newsletter-form\") >= 1 ||\n        getUrl.indexOf(\"customer_posted=true\") >= 1\n      ) {\n        this.handleMessageSuccessPopup();\n        setCookie(\"newsletter_popup\", 30, 1);\n        const newURL = location.href.split(\"?\")[0];\n        window.history.pushState(\"object\", document.title, newURL);\n      }\n\n      if (\n        getUrl.indexOf(\"contact%5Btags%5D=newsletter&form_type=customer\") >= 1\n      ) {\n        this.handleMessageErrorPopup();\n        const newURL = location.href.split(\"?\")[0];\n        window.history.pushState(\"object\", document.title, newURL);\n      }\n    },\n\n    handleMessageSuccessPopup: function () {\n      const url = `${window.location.pathname}?section_id=form-message`;\n      fetch(url)\n        .then((response) => response.text())\n        .then((responseText) => {\n          const html = new DOMParser().parseFromString(\n            responseText,\n            \"text/html\"\n          );\n          const elementSuccessMessage = html.querySelector(\n            \".newsletter-form__success-message-wrapper\"\n          );\n          showToast(elementSuccessMessage.innerHTML, 3000, \"modal-success\");\n        })\n        .catch((e) => {\n          throw e;\n        });\n    },\n\n    handleMessageErrorPopup: function () {\n      const url = `${window.location.pathname}?section_id=form-message`;\n      fetch(url)\n        .then((response) => response.text())\n        .then((responseText) => {\n          const html = new DOMParser().parseFromString(\n            responseText,\n            \"text/html\"\n          );\n          const elementErrorMessage = html.querySelector(\n            \".newsletter-form__error-message-wrapper\"\n          );\n          const elementMessage = elementErrorMessage.querySelector(\n            \".newsletter-form__message\"\n          );\n          showToast(elementErrorMessage.innerHTML, 3000, \"modal-error\");\n        })\n        .catch((e) => {\n          throw e;\n        });\n    },\n  };\n})();\nreturnMessageWhenSubmit.init();\nclass NavBar extends HTMLElement {\n  constructor() {\n    super();\n    this.init();\n  }\n  init() {\n    document.body.classList.add(\"mobi-navigation-bar\");\n  }\n}\ncustomElements.define(\"mobile-navigation-bar\", NavBar);\n\nclass CarouselMobile extends SlideSection {\n  constructor() {\n    super();\n    this.enable = this.dataset.enable;\n    this.swiperSlideInnerHtml = this.innerHTML;\n    this.id = this.dataset.id;\n    this.init();\n  }\n  init() {\n    if (this.enable == \"true\") {\n      let width = window.innerWidth;\n      window.addEventListener(\"resize\", () => {\n        const newWidth = window.innerWidth;\n        if (newWidth <= 767 && width > 767) {\n          this.actionOnMobile();\n        }\n        if (newWidth > 767 && width <= 767) {\n          this.actionOutMobile();\n        }\n        width = newWidth;\n      });\n      if (width <= 767) {\n        this.actionOnMobile();\n      } else {\n        this.actionOutMobile();\n      }\n    }\n  }\n  actionOnMobile() {\n    this.classList.add(\"swiper\");\n    this.classList.remove(\"grid\", \"grid-cols\");\n    const html = this.swiperSlideInnerHtml.replaceAll(\n      \"sec__icon-switch-slide\",\n      \"swiper-slide\"\n    );\n    const wrapper = `<div class='swiper-wrapper'>${html}</div> <div\n    class=\"swiper-pagination swiper-pagination-${this.id}  ${\n      this.enable && this.dataset.mobile != 1.5 ? \"flex\" : \"hidden\"\n    } px-15 lh-1 bottom-30 justify-content-center\"\n    style=\"--swiper-pagination-bottom: 3rem;--swiper-pagination-position: static;\"\n  ></div> `;\n    this.innerHTML = wrapper;\n    this.initSlide();\n    this.actionPointer();\n    this.closest(\"motion-items-effect\")?.init();\n  }\n  actionOutMobile() {\n    this.classList.remove(\"swiper\");\n    this.classList.add(\"grid\", \"grid-cols\");\n    this.innerHTML = this.swiperSlideInnerHtml;\n    this.closest(\"motion-items-effect\")?.init();\n  }\n  actionPointer() {\n    this.addEventListener('pointerup', (e) => {\n      const multiContent = this.closest(\"multi-content\");\n      if (!multiContent.swiper) return;\n      multiContent.swiper.allowTouchMove = true;\n    });\n    this.addEventListener('pointerdown', (e) => {\n      const multiContent = this.closest(\"multi-content\");\n      if (!multiContent.swiper) return;\n      multiContent.swiper.allowTouchMove = false;\n    });\n  }\n}\ncustomElements.define(\"carousel-mobile\", CarouselMobile);\n\nclass PaginateLoadmore extends HTMLElement {\n  constructor() {\n    super();\n    this.initLoadMore();\n    if (this.classList.contains(\"collection-list__page\")) {\n      this.querySelector(\"a\").addEventListener(\n        \"click\",\n        async (e) => {\n          this.toggleLoading(e.currentTarget, true);\n          await new Promise((resolve, reject) => {\n            setTimeout(() => {\n              resolve();\n              this.toggleLoading(e.currentTarget, false);\n              this.remove();\n            }, 400);\n          });\n          for (var item of document.querySelectorAll(\n            \".sec__collections-list .collection-item.grid-custom-item\"\n          )) {\n            item.classList.remove(\"hidden\");\n          }\n          const motionCollection = document.querySelector(\".motion-collection\");\n          if (motionCollection) {\n            motionCollection.reloadAnimationEffect();\n          }\n        },\n        false\n      );\n    }\n  }\n  initLoadMore() {\n    this.querySelectorAll(\".actions-loadmore\").forEach((loadMore) => {\n      var _this = this;\n      if (loadMore.classList.contains(\"infinit-scrolling\")) {\n        var observer = new IntersectionObserver(\n          function (entries) {\n            entries.forEach((entry) => {\n              if (entry.intersectionRatio === 1) {\n                _this.loadMoreItem(loadMore);\n              }\n            });\n          },\n          { threshold: 1.0 }\n        );\n        observer.observe(loadMore);\n      } else {\n        loadMore.addEventListener(\n          \"click\",\n          (event) => {\n            event.preventDefault();\n            const target = event.currentTarget;\n            _this.loadMoreItem(target);\n          },\n          false\n        );\n      }\n    });\n  }\n  loadMoreItem(target) {\n    const loadMore_url = target.getAttribute(\"href\");\n    const _this = this;\n    let sectionContainer = document.querySelector(`#product-grid`);\n    sectionContainer?.classList.add(\"bls-image-js\");\n    _this.toggleLoading(target, true);\n    fetch(`${loadMore_url}`)\n      .then((response) => {\n        if (!response.ok) {\n          var error = new Error(response.status);\n          throw error;\n        }\n        return response.text();\n      })\n      .then((responseText) => {\n        const resultNodes = parser.parseFromString(responseText, \"text/html\");\n        const resultNodesHtml = resultNodes.querySelectorAll(\n          \".loadmore-lists .loadmore-item\"\n        );\n        resultNodesHtml.forEach((prodNode) =>\n          document.querySelector(\".loadmore-lists\").appendChild(prodNode)\n        );\n        const load_more = resultNodes.querySelector(\".actions-loadmore\");\n        document.querySelector(\".load-more-bar\").innerHTML =\n          resultNodes.querySelector(\".load-more-bar\").innerHTML;\n        if (load_more) {\n          target.setAttribute(\"href\", load_more.getAttribute(\"href\"));\n        } else {\n          target.remove();\n        }\n        _this.toggleLoading(target, false);\n      })\n      .catch((error) => {\n        throw error;\n      })\n      .finally(async () => {\n        const motionCollection = document.querySelector(\".motion-collection\");\n        if (motionCollection) {\n          motionCollection.reloadAnimationEffect();\n        }\n        initLazyloadItem();\n        BlsLazyloadImg.init();\n      });\n  }\n  toggleLoading(event, loading) {\n    if (event) {\n      const method = loading ? \"add\" : \"remove\";\n      event.classList[method](\"loading\");\n    }\n  }\n}\ncustomElements.define(\"loadmore-button\", PaginateLoadmore);\n\nclass SingleItem extends HTMLElement {\n  constructor() {\n    super();\n    this.position = this.dataset.position;\n    this.section = this.closest(\".section-slide-single\");\n    this.init();\n  }\n  init() {\n    this.addEventListener(\"click\", this.onClick.bind(this));\n  }\n  onClick() {\n    if (this.section && this.position) {\n      const slideSEction = this.section.querySelector(`slide-section-single`);\n      const allDots = this.section.querySelectorAll(`single-item`);\n      allDots.forEach((dot) => {\n        dot.classList.remove(\"active\");\n      });\n      this.classList.add(\"active\");\n      if (slideSEction) {\n        slideSEction.functionGoto(this.position);\n      }\n    }\n  }\n}\ncustomElements.define(\"single-item\", SingleItem);\n\nclass SlideSectionSingle extends SlideSection {\n  constructor() {\n    super();\n    this.init();\n  }\n  init() {\n    this.initSlide();\n  }\n  functionGoto(position) {\n    this.globalSlide.slideToLoop(position - 1, 500);\n  }\n}\ncustomElements.define(\"slide-section-single\", SlideSectionSingle);\nclass VariantRadiosQuickEdit extends SwatchInit {\n  constructor() {\n    super();\n    this.variantData = null;\n    this.currentVariant = null;\n    this.options = [];\n    this.init();\n  }\n\n  init() {\n    const swatchButtons = this.querySelectorAll(\".product__color-swatches--js\");\n    swatchButtons.forEach((btn) => {\n      this.checkSwatches(btn);\n    });\n    \n    const optionSwatches = this.querySelectorAll(\".option-swatch-js\");\n    optionSwatches.forEach((button) => {\n      button.addEventListener(\n        \"click\", \n        this.onVariantChange.bind(this), \n        false\n      );\n    });\n  }\n\n  onVariantChange(event) {\n    event.preventDefault();\n    const target = event.currentTarget;\n    const value = target.getAttribute(\"data-value\");\n    for (var item of target\n      .closest(\"fieldset\")\n      .querySelectorAll(\".option-swatch-js\")) {\n      item.classList.remove(\"active\");\n    }\n    target.classList.toggle(\"active\");\n    target\n      .closest(\"fieldset\")\n      .querySelector(\".swatch-selected-value\").textContent = value;\n    this.options = Array.from(\n      this.querySelectorAll(\".option-swatch-js.active\"),\n      (select) => select.getAttribute(\"data-value\")\n    );\n    this.updateMasterId();\n    this.toggleAddButton(true, \"\", false);\n    this.updateVariantStatuses();\n    if (!this.currentVariant) {\n      this.toggleAddButton(true, \"\", true);\n      this.setUnavailable();\n    } else {\n      this.updateMedia();\n      this.updateVariantInput();\n      this.renderProductInfo();\n    }\n  }\n\n  updateMasterId() {\n    this.currentVariant = this.getVariantData().find((variant) => {\n      return !variant.options\n        .map((option, index) => {\n          return this.options[index] === option;\n        })\n        .includes(false);\n    });\n  }\n\n  updateMedia() {\n    if (!this.currentVariant) return;\n    if (!this.currentVariant.featured_media) return;\n    const form = document.getElementById(\n      `product-form-quick-edit-${this.dataset.section}`\n    );\n    if (form.querySelector(\".product__media img\")) {\n      form.querySelector(\".product__media img\").removeAttribute(\"srcset\");\n      form\n        .querySelector(\".product__media img\")\n        .setAttribute(\n          \"src\",\n          this.currentVariant.featured_media.preview_image.src\n        );\n    }\n  }\n\n  updateVariantInput() {\n    const productForms = document.querySelectorAll(\n      `#product-form-quick-edit-${this.dataset.section}`\n    );\n    productForms.forEach((productForm) => {\n      const input = productForm.querySelector('input[name=\"id\"]');\n      input.value = this.currentVariant.id;\n      input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    });\n  }\n\n  renderProductInfo() {\n    if (!this.currentVariant) return;\n    const compare_at_price = this.currentVariant.compare_at_price;\n    const current_price = this.currentVariant.price;\n    const price_format = Shopify.formatMoney(\n      this.currentVariant.price,\n      cartStrings?.money_format\n    );\n    const form = document.getElementById(\n      `product-form-quick-edit-${this.dataset.section}`\n    );\n    form.querySelector(\".price-regular .price\").innerHTML = price_format;\n    const price = form.querySelector(\".price\");\n    const cardPrice = form.querySelector(\".card-product-price\");\n    price.classList.remove(\"price--sold-out\", \"price--on-sale\");\n    price\n      .querySelector(\".price-regular .price\")\n      .classList.remove(\"special-price\");\n    const cpp = cardPrice.querySelector(\".compare-price\");\n    if (compare_at_price && compare_at_price > current_price) {\n      const compare_format = Shopify.formatMoney(\n        compare_at_price,\n        cartStrings?.money_format\n      );\n      if (!price.querySelector(\".compare-price\")) {\n        var ps = document.createElement(\"div\");\n        var sp = document.createElement(\"span\");\n        var cp = document.createElement(\"s\");\n        cp.classList.add(\"price-item\", \"compare-price\");\n        sp.appendChild(cp);\n        ps.appendChild(sp);\n        ps.classList.add(\"price-regular\");\n        cardPrice.appendChild(ps);\n      }\n      if (price.querySelector(\".compare-price\")) {\n        price.querySelector(\".compare-price\").innerHTML = compare_format;\n      }\n      price.classList.add(\"price--on-sale\");\n      price\n        .querySelector(\".price-regular .price\")\n        .classList.add(\"special-price\", \"primary-color\");\n    } else {\n      if (cpp) {\n        cpp.innerHTML = \"\";\n      }\n      if (cardPrice.querySelector(\".price-regular\")) {\n        cardPrice\n          .querySelector(\".price-regular\")\n          .classList.remove(\"primary-color\");\n      }\n      if (cardPrice.querySelector(\".price-regular .price\")) {\n        cardPrice.querySelector(\".price-regular .price\").innerHTML =\n          price_format;\n        cardPrice\n          .querySelector(\".price-regular .price\")\n          .classList.remove(\"price--special\", \"primary-color\");\n      }\n    }\n    if (!this.currentVariant.available) {\n      price.classList.add(\"price--sold-out\");\n    }\n    this.toggleAddButton(\n      !this.currentVariant.available,\n      window.variantStrings?.soldOut\n    );\n  }\n\n  toggleAddButton(disable = true, text, modifyClass = true) {\n    const productForm = document.getElementById(\n      `product-form-quick-edit-${this.dataset.section}`\n    );\n    if (!productForm) return;\n    const addButton = productForm.querySelector('[name=\"add\"]');\n    const addButtonText = productForm.querySelector('[name=\"add\"] > span');\n    const buttonPayment = productForm.querySelector(\n      \".product-dynamic-checkout\"\n    );\n    if (!addButton) return;\n\n    if (disable) {\n      addButton.setAttribute(\"disabled\", \"disabled\");\n      if (text) addButtonText.textContent = text;\n    } else {\n      addButton.removeAttribute(\"disabled\");\n      addButtonText.textContent = window.variantStrings?.addToCart;\n    }\n\n    if (!modifyClass) return;\n  }\n\n  setUnavailable() {\n    const button = document.getElementById(\n      `product-form-quick-edit-${this.dataset.section}`\n    );\n    const addButton = button.querySelector('[name=\"add\"]');\n    const addButtonText = button.querySelector('[name=\"add\"] > span');\n    const price = document.getElementById(`price-${this.dataset.section}`);\n    if (!addButton) return;\n    addButtonText.textContent = window.variantStrings?.unavailable;\n    if (price) price.classList.add(\"visibility-hidden\");\n  }\n\n  setAvailability(listOfOptions, listOfAvailableOptions) {\n    listOfOptions.forEach((input) => {\n      if (listOfAvailableOptions.includes(input.dataset.value)) {\n        input.classList.remove(\"option-disabled\");\n      } else {\n        input.classList.add(\"option-disabled\");\n      }\n    });\n  }\n\n  updateVariantStatuses() {\n    const selectedOptionOneVariants = this.getVariantData().filter(\n      (variant) =>\n        this.querySelector(\".active\").dataset.value === variant.option1\n    );\n    const inputWrappers = [...this.querySelectorAll(\".product-form__input\")];\n    inputWrappers.forEach((option, index) => {\n      if (index === 0) return;\n      const optionInputs = [...option.querySelectorAll(\".option-swatch-js\")];\n      const previousOptionSelected =\n        inputWrappers[index - 1].querySelector(\".active\").dataset.value;\n      const availableOptionInputsValue = selectedOptionOneVariants\n        .filter(\n          (variant) =>\n            variant.available &&\n            variant[`option${index}`] === previousOptionSelected\n        )\n        .map((variantOption) => variantOption[`option${index + 1}`]);\n      this.setAvailability(optionInputs, availableOptionInputsValue);\n    });\n  }\n\n  getVariantData() {\n    this.variantData =\n      this.variantData ||\n      JSON.parse(this.querySelector('[type=\"application/json\"]').textContent);\n    return this.variantData;\n  }\n}\ncustomElements.define(\"variant-radios-quick-edit\", VariantRadiosQuickEdit);\n\nclass VariantRadiosBundle extends SwatchInit {\n  constructor() {\n    super();\n    this.init();\n  }\n\n  init() {\n    this.querySelectorAll(\".product__color-swatches--js\").forEach((btn) => {\n      this.checkSwatches(btn);\n      this.variantHover(btn);\n    });\n    this.querySelectorAll(\".option-swatch-js\").forEach((button) =>\n      button.addEventListener(\"click\", this.onVariantChange.bind(this), false)\n    );\n  }\n\n  onVariantChange(event) {\n    event.preventDefault();\n    this.productTarget = this.closest(\".product__item-js\");\n    const variantQtyData = JSON.parse(\n      this.productTarget.querySelector(\".productVariantsQty\").textContent\n    );\n    const target = event.currentTarget;\n    const value = target.getAttribute(\"data-value\");\n    for (var item of target\n      .closest(\"fieldset\")\n      .querySelectorAll(\".option-swatch-js\")) {\n      item.classList.remove(\"active\");\n    }\n    target.classList.toggle(\"active\");\n    target\n      .closest(\"fieldset\")\n      .querySelector(\".swatch-selected-value\").textContent = value;\n    this.options = Array.from(\n      this.querySelectorAll(\".option-swatch-js.active\"),\n      (select) => select.getAttribute(\"data-value\")\n    );\n    this.updateMasterId();\n    this.toggleAddButton(true, \"\", false);\n    this.updateVariantStatuses();\n    if (!this.currentVariant) {\n      this.toggleAddButton(true, \"\", true);\n      this.setUnavailable();\n    } else {\n      this.updateVariantInput();\n      this.renderProductInfo(this.productTarget, variantQtyData, target);\n      this.updateMedia();\n    }\n  }\n\n  updateMasterId() {\n    this.currentVariant = this.getVariantData().find((variant) => {\n      return !variant.options\n        .map((option, index) => {\n          return this.options[index] === option;\n        })\n        .includes(false);\n    });\n  }\n\n  async updateMedia() {\n    if (!this.currentVariant) return;\n    if (\n      !this.productTarget\n        .querySelector(\".product__media img\")\n        .classList.contains(\"hidden\")\n    ) {\n      const productItem = this.productTarget\n        .querySelector(\".product__media img\")\n        .closest(\".product-item\");\n      if (\n        productItem.querySelector(\"video\") ||\n        productItem.querySelector(\"iframe\")\n      ) {\n        this.productTarget\n          .querySelector(\".product__media img\")\n          .classList.add(\"hidden\");\n        productItem.querySelector(\"video\")?.classList.remove(\"hidden\");\n        productItem.querySelector(\"iframe\")?.classList.remove(\"hidden\");\n      }\n    }\n    if (!this.currentVariant.featured_media) return;\n    if (this.productTarget.querySelector(\".product__media img\")) {\n      this.productTarget\n        .querySelector(\".product__media img\")\n        .removeAttribute(\"srcset\");\n    }\n    if (\n      this.productTarget\n        .querySelector(\".product__media img\")\n        .classList.contains(\"hidden\")\n    ) {\n      this.productTarget\n        .querySelector(\".product__media img\")\n        .classList.remove(\"hidden\");\n      const productItem = this.productTarget\n        .querySelector(\".product__media img\")\n        .closest(\".product-item\");\n      if (\n        productItem.querySelector(\"video\") ||\n        productItem.querySelector(\"iframe\")\n      ) {\n        productItem.querySelector(\"video\")?.classList.add(\"hidden\");\n        productItem.querySelector(\"iframe\")?.classList.add(\"hidden\");\n      }\n    }\n    if (this.productTarget.querySelector(\".product__media img\")) {\n      await Motion.animate(\n        this.productTarget.querySelector(\".product__media img\"),\n        { opacity: [1, 0] },\n        { duration: 0.1, easing: \"ease-in\" }\n      );\n      this.productTarget\n        .querySelector(\".product__media img\")\n        .setAttribute(\n          \"src\",\n          this.currentVariant.featured_media.preview_image.src\n        );\n      await new Promise((resolve) => {\n        this.productTarget.querySelector(\".product__media img\").onload = () => {\n          resolve();\n        };\n      });\n      Motion.animate(\n        this.productTarget.querySelector(\".product__media img\"),\n        { opacity: [0, 1] },\n        { duration: 0.1, easing: \"ease-in\" }\n      );\n    }\n  }\n\n  updateVariantInput() {\n    const productForms = document.querySelectorAll(\n      `#quick-add-bundle-${this.dataset.section}`\n    );\n    productForms.forEach((productForm) => {\n      const input = productForm.querySelector('input[name=\"id\"]');\n      input.value = this.currentVariant.id;\n      input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    });\n  }\n\n  renderProductInfo(productTarget, variantQtyData, target) {\n    if (!this.currentVariant) return;\n    if (!productTarget) return;\n    let qty = 0;\n    let percent = 0;\n    let sale = false;\n    let soldOut = false;\n    let pre_order = false;\n    let av = this.currentVariant.available;\n    let im = this.currentVariant.inventory_management;\n    const compare_at_price = this.currentVariant.compare_at_price;\n    const current_price = this.currentVariant.price;\n    let avaiable = productTarget.querySelector(\".available-value\");\n    const price_format = Shopify.formatMoney(\n      this.currentVariant.price,\n      cartStrings?.money_format\n    );\n    const typePercent = productTarget.querySelector(\n      \".product__badges-type-percent\"\n    );\n    productTarget.querySelector(\".price-regular .price\").innerHTML =\n      price_format;\n    const price = productTarget.querySelector(\".price\");\n    price.classList.remove(\"price--sold-out\", \"price--on-sale\");\n    productTarget\n      .querySelector(\".price-regular .price\")\n      .classList.remove(\"special-price\");\n    variantQtyData.find((variantQty) => {\n      if (variantQty.id === this.currentVariant.id) {\n        qty = variantQty.qty;\n      }\n    });\n    if (compare_at_price && compare_at_price > current_price) {\n      sale = true;\n      if (typePercent) {\n        percent = ((compare_at_price - current_price) / compare_at_price) * 100;\n      } else {\n        percent = compare_at_price - current_price;\n      }\n\n      const compare_format = Shopify.formatMoney(\n        compare_at_price,\n        cartStrings?.money_format\n      );\n      if (!price.querySelector(\".compare-price\")) {\n        var ps = price.querySelector(\".price__sale\");\n        var sp = document.createElement(\"span\");\n        var cp = document.createElement(\"s\");\n        cp.classList.add(\"price-item\", \"compare-price\");\n        sp.appendChild(cp);\n        if (ps) {\n          ps.appendChild(sp);\n        }\n      }\n      if (price.querySelector(\".compare-price\")) {\n        price.querySelector(\".compare-price\").innerHTML = compare_format;\n      }\n      price.classList.add(\"price--on-sale\");\n      productTarget\n        .querySelector(\".price-regular .price\")\n        .classList.add(\"special-price\");\n    } else if (!this.currentVariant.available) {\n      price.classList.add(\"price--sold-out\");\n    }\n    if (im === null) {\n      soldOut = false;\n      pre_order = false;\n      if (avaiable) {\n        avaiable.innerHTML = window.variantStrings.inStock;\n      }\n    } else {\n      if (av) {\n        if (qty < 1) {\n          pre_order = true;\n          if (avaiable) {\n            avaiable.innerHTML = window.variantStrings.preOrder;\n          }\n        } else {\n          soldOut = false;\n          pre_order = false;\n          if (avaiable) {\n            avaiable.innerHTML = window.variantStrings.inStock;\n          }\n          if (avaiable) {\n            avaiable.innerHTML = window.variantStrings.inStock;\n          }\n        }\n      } else {\n        soldOut = true;\n        if (avaiable) {\n          avaiable.innerHTML = window.variantStrings.outStock;\n        }\n      }\n    }\n    this.toggleAddButton(\n      !this.currentVariant.available,\n      window.variantStrings?.soldOut\n    );\n\n    this.renderLabel(sale, pre_order, soldOut, percent, productTarget);\n  }\n\n  renderLabel(sale, pre_order, soldOut, percent, productTarget) {\n    const label = productTarget.querySelector(\".product__badges\");\n    const sale_badge = productTarget.querySelector(\".sale_badge\");\n    const productBadgesScrolling = productTarget.querySelector(\n      \".product__badges-sale-scrolling\"\n    );\n    if (sale || pre_order || soldOut) {\n      if (!label) {\n        var element = document.createElement(\"div\");\n        element.classList.add(\n          \"product__badges\",\n          \"fs-small\",\n          \"flex\",\n          \"flex-wrap\",\n          \"gap-5\",\n          \"uppercase\"\n        );\n        if (sale_badge) {\n          sale_badge.appendChild(element);\n        }\n      }\n    }\n\n    if (label) {\n      const saleColor = label.dataset.saleColor;\n      const soldOutColor = label.dataset.soldOutColor;\n      const preOrderColor = label.dataset.preOrderColor;\n      const saleBg = label.dataset.saleBg;\n      const soldOutBg = label.dataset.soldOutBg;\n      const preOrderBg = label.dataset.preOrderBg;\n      const show_sale = label?.dataset.showSale === \"true\";\n      const show_pre_order = label?.dataset.showPreorder === \"true\";\n      const show_sold_out = label?.dataset.showSoldOut === \"true\";\n      const prd = Shopify.formatMoney(\n        percent,\n        themeGlobalVariables.settings.money_format\n      );\n      const dsale = label.querySelector(\".product__badges-sale\");\n      const dsoldout = label.querySelector(\".product__badges-sold-out\");\n      const dpreorder = label.querySelector(\".product__badges-pre-order\");\n      const typePrice = label.querySelector(\".product__badges-type-price\");\n      const typePercent = label.querySelector(\".product__badges-type-percent\");\n      if (sale && show_sale) {\n        if (!dsale) {\n          var elementsale = document.createElement(\"div\");\n          elementsale.classList.add(\n            \"product__badges-sale\",\n            \"product__badges-inner\",\n            \"py-8\",\n            \"px-15\",\n            \"align-self-start\",\n            \"sale\",\n            \"inline-flex\",\n            \"content-center\",\n            \"subheading_weight\",\n            \"btn-rounded\",\n            \"lh-normal\",\n            \"text-center\"\n          );\n          elementsale.style.setProperty(\"--badges-color\", saleColor);\n          elementsale.style.setProperty(\"--badges-bg\", saleBg);\n          elementsale.innerHTML = `${\n            window.variantStrings.save ? window.variantStrings.save : \"Save\"\n          } ${prd}`;\n          if (dsoldout) {\n            label.insertBefore(elementsale, dsoldout);\n          } else if (dpreorder) {\n            label.insertBefore(elementsale, dpreorder);\n          } else {\n            label.appendChild(elementsale);\n          }\n        } else {\n          if (typePrice) {\n            dsale.innerHTML = `${\n              window.variantStrings.save ? window.variantStrings.save : \"Save\"\n            } ${prd}`;\n          } else if (typePercent) {\n            dsale.innerHTML = -percent.toFixed(0) + \"%\";\n          }\n        }\n      } else {\n        dsale?.remove();\n      }\n      if (pre_order && show_pre_order) {\n        if (!dpreorder) {\n          var elementpo = document.createElement(\"div\");\n          elementpo.classList.add(\n            \"product__badges-pre-order\",\n            \"product__badges-inner\",\n            \"py-8\",\n            \"px-15\",\n            \"align-self-start\",\n            \"pre-order\",\n            \"inline-flex\",\n            \"content-center\",\n            \"subheading_weight\",\n            \"btn-rounded\",\n            \"lh-normal\",\n            \"text-center\"\n          );\n          elementpo.style.setProperty(\"--badges-color\", preOrderColor);\n          elementpo.style.setProperty(\"--badges-bg\", preOrderBg);\n          elementpo.innerHTML = window.variantStrings.preOrder\n            ? window.variantStrings.preOrder\n            : \"Pre-order\";\n          label.appendChild(elementpo);\n        } else {\n          dpreorder.innerHTML = window.variantStrings.preOrder\n            ? window.variantStrings.preOrder\n            : \"Pre-order\";\n        }\n      } else {\n        dpreorder?.remove();\n      }\n      if (soldOut && show_sold_out) {\n        if (!dsoldout) {\n          var elementso = document.createElement(\"div\");\n          elementso.classList.add(\n            \"product__badges-sold-out\",\n            \"product__badges-inner\",\n            \"py-8\",\n            \"px-15\",\n            \"align-self-start\",\n            \"sold-out\",\n            \"inline-flex\",\n            \"content-center\",\n            \"subheading_weight\",\n            \"btn-rounded\",\n            \"lh-normal\",\n            \"text-center\"\n          );\n          elementso.style.setProperty(\"--badges-color\", soldOutColor);\n          elementso.style.setProperty(\"--badges-bg\", soldOutBg);\n          elementso.innerHTML = window.variantStrings.soldOut\n            ? window.variantStrings.soldOut\n            : \"Sold out\";\n          label.appendChild(elementso);\n        } else {\n          dsoldout.innerHTML = window.variantStrings.soldOut\n            ? window.variantStrings.soldOut\n            : \"Sold out\";\n        }\n      } else {\n        dsoldout?.remove();\n      }\n    }\n\n    if (productBadgesScrolling && sale) {\n      const dataBadgesScrolling =\n        productBadgesScrolling?.dataset.textProductScrolling;\n      const allProductBadgesScrolling = productBadgesScrolling.querySelectorAll(\n        \".content-badges-scrolling\"\n      );\n      allProductBadgesScrolling.forEach((content) => {\n        content.innerText = dataBadgesScrolling.replace(\n          \"[percent_sale]\",\n          percent.toFixed(0) + \"%\"\n        );\n      });\n    }\n  }\n\n  toggleAddButton(disable = true, text, modifyClass = true) {\n    const productForm = document.getElementById(\n      `quick-add-bundle-${this.dataset.section}`\n    );\n    if (!productForm) return;\n    const addButton = productForm.querySelector('[name=\"add\"]');\n    const addButtonText = productForm.querySelector('[name=\"add\"] > span');\n    const buttonPayment = productForm.querySelector(\n      \".product-dynamic-checkout\"\n    );\n    if (!addButton) return;\n\n    if (disable) {\n      addButton.setAttribute(\"disabled\", \"disabled\");\n      if (text) addButtonText.textContent = text;\n    } else {\n      addButton.removeAttribute(\"disabled\");\n      if (addButtonText) {\n        addButtonText.textContent = window.variantStrings?.addToCartBundle;\n      }\n    }\n\n    if (!modifyClass) return;\n  }\n\n  setUnavailable() {\n    const button = document.getElementById(\n      `quick-add-bundle-${this.dataset.section}`\n    );\n    const addButton = button.querySelector('[name=\"add\"]');\n    const addButtonText = button.querySelector('[name=\"add\"] > span');\n    const price = document.getElementById(`price-${this.dataset.section}`);\n    if (!addButton) return;\n    addButtonText.textContent = window.variantStrings?.unavailable;\n    if (price) price.classList.add(\"visibility-hidden\");\n  }\n\n  setAvailability(listOfOptions, listOfAvailableOptions) {\n    listOfOptions.forEach((input) => {\n      if (listOfAvailableOptions.includes(input.dataset.value)) {\n        input.classList.remove(\"option-disabled\");\n      } else {\n        input.classList.add(\"option-disabled\");\n      }\n    });\n  }\n\n  updateVariantStatuses() {\n    const selectedOptionOneVariants = this.getVariantData().filter(\n      (variant) =>\n        this.querySelector(\".active\").dataset.value === variant.option1\n    );\n    const inputWrappers = [...this.querySelectorAll(\".product-form__input\")];\n    inputWrappers.forEach((option, index) => {\n      if (index === 0) return;\n      const optionInputs = [...option.querySelectorAll(\".option-swatch-js\")];\n      const previousOptionSelected =\n        inputWrappers[index - 1].querySelector(\".active\").dataset.value;\n      const availableOptionInputsValue = selectedOptionOneVariants\n        .filter(\n          (variant) =>\n            variant.available &&\n            variant[`option${index}`] === previousOptionSelected\n        )\n        .map((variantOption) => variantOption[`option${index + 1}`]);\n      this.setAvailability(optionInputs, availableOptionInputsValue);\n    });\n  }\n\n  getVariantData() {\n    this.variantData =\n      this.variantData ||\n      JSON.parse(this.querySelector('[type=\"application/json\"]').textContent);\n    return this.variantData;\n  }\n\n  variantHover(e) {\n    const productTarget = e.closest(\".product-item\");\n    if (!productTarget) return;\n\n    const swiperElement = e.closest(\".swiper\");\n    if (!swiperElement) return;\n\n    let timeout;\n\n    const handleMouseOut = () => {\n      swiperElement.classList.remove(\"show-tooltip\");\n    };\n\n    const handleMouseOver = () => {\n      swiperElement.classList.add(\"show-tooltip\");\n    };\n\n    e.addEventListener(\"mouseout\", handleMouseOut, false);\n    e.addEventListener(\"mouseover\", handleMouseOver, false);\n    e.addEventListener(\"mouseenter\", handleMouseOver, false);\n    e.addEventListener(\"mouseleave\", handleMouseOut, false);\n  }\n}\ncustomElements.define(\"variant-radios-bundle\", VariantRadiosBundle);\n\nif (!customElements.get(\"product-form-bundle\")) {\n  customElements.define(\n    \"product-form-bundle\",\n    class ProductForm extends PopupBase {\n      constructor() {\n        super();\n        this.form = this.querySelector(\"form\");\n        this.form.querySelector(\"[name=id]\").disabled = false;\n        this.form.addEventListener(\"submit\", this.onSubmitHandler.bind(this));\n        this.cart =\n          document.querySelector(\"cart-notification\") ||\n          document.querySelector(\"cart-drawer\");\n        this.submitButton = this.querySelector('[type=\"submit\"]');\n        this.hideErrors = this.dataset.hideErrors === \"true\";\n        this.productItem =\n          this.form.closest(\".product-item\") ||\n          this.form.closest(\"sticky-add-cart\");\n      }\n\n      updateBundleButtonStatus() {\n        const productFormBundle = this.closest(\"product-form-bundle\");\n        const minimum = productFormBundle.dataset.minimum;\n        const maximum = productFormBundle.dataset.maximum;\n        const submitButton = document.querySelector(\"button-submit-bundle\");\n        if (!submitButton) return;\n\n        const bundleItems = document.querySelectorAll(\n          \"[data-product-bundle-variant][data-variant-id]\"\n        );\n        if (bundleItems.length >= minimum) {\n          submitButton.classList.remove(\"disabled\");\n        } else {\n          submitButton.classList.add(\"disabled\");\n        }\n        const btnAddCart = this.closest(\"product-bundle\").querySelectorAll(\n          \"product-form-bundle button\"\n        );\n        if (bundleItems.length >= maximum) {\n          btnAddCart.forEach((btn) => {\n            btn.classList.add(\"disabled\");\n          });\n        }\n      }\n\n      onSubmitHandler(evt) {\n        evt.preventDefault();\n        if (this.submitButton.getAttribute(\"aria-disabled\") === \"true\") return;\n\n        this.handleErrorMessage();\n\n        this.submitButton.classList.add(\"disabled\");\n        this.submitButton.textContent =\n          window.variantStrings?.addedToCartBundle;\n\n        const formData = new FormData(this.form);\n        const variantId = formData.get(\"id\");\n        const quantity = formData.get(\"quantity\") || 1;\n        const productHandle = this.dataset.handle || this.dataset.productHandle;\n\n        fetch(\n          `/products/${productHandle}?section_id=bundle-item&variant=${variantId}`\n        )\n          .then((response) => response.text())\n          .then((responseText) => {\n            const doc = parser.parseFromString(responseText, \"text/html\");\n            const bundleContainers = document.querySelectorAll(\n              \"[data-product-bundle-variant]\"\n            );\n            if (!bundleContainers.length) {\n              console.error(\"No bundle container found\");\n              return;\n            }\n\n            let existingItemContainer = null;\n            for (const container of bundleContainers) {\n              if (container.getAttribute(\"data-variant-id\") === variantId) {\n                existingItemContainer = container;\n                break;\n              }\n            }\n\n            if (existingItemContainer) {\n              const currentQty = parseInt(\n                existingItemContainer.getAttribute(\"data-quantity\") || 0\n              );\n              existingItemContainer.setAttribute(\n                \"data-quantity\",\n                currentQty + parseInt(quantity)\n              );\n\n              const quantityDisplay = existingItemContainer.querySelector(\n                \".bundle-item-quantity\"\n              );\n              if (quantityDisplay) {\n                quantityDisplay.textContent = currentQty + parseInt(quantity);\n              }\n\n              existingItemContainer.classList.add(\"flash-highlight\");\n              setTimeout(() => {\n                existingItemContainer.classList.remove(\"flash-highlight\");\n              }, 1500);\n            } else {\n              let targetContainer = null;\n              for (const container of bundleContainers) {\n                if (!container.hasAttribute(\"data-variant-id\")) {\n                  targetContainer = container;\n                  break;\n                }\n              }\n\n              if (!targetContainer) {\n                this.handleErrorMessage(\n                  \"Bundle is full. Please remove an item first.\"\n                );\n                return;\n              }\n\n              const bundleImage = doc.querySelector(\".bundle-image\");\n              const bundleContent = doc.querySelector(\".bundle-content\");\n              const bundleRemoveButton = doc.querySelector(\n                \"bundle-cart-remove-button\"\n              );\n\n              if (!bundleImage || !bundleContent) {\n                console.error(\"Missing required elements in response\", {\n                  bundleImage,\n                  bundleContent,\n                });\n                this.handleErrorMessage(\"Error processing product data\");\n                return;\n              }\n\n              targetContainer.setAttribute(\"data-variant-id\", variantId);\n              targetContainer.setAttribute(\"data-quantity\", quantity);\n              targetContainer.classList.add(\"bundle-item-dev\");\n\n              const mediaContainer = targetContainer.querySelector(\n                \"[data-product-bundle-variant-media]\"\n              );\n              if (mediaContainer && bundleImage) {\n                mediaContainer.classList.remove(\"skeleton\");\n                mediaContainer.innerHTML = bundleImage.innerHTML;\n              }\n\n              const contentContainer = targetContainer.querySelector(\n                \"[data-product-bundle-variant-content]\"\n              );\n              if (contentContainer && bundleContent) {\n                contentContainer\n                  .querySelectorAll(\".horizontal-product__skeleton\")\n                  .forEach((el) => el.remove());\n\n                contentContainer.innerHTML = bundleContent.innerHTML;\n                let bundleActionContainer =\n                  targetContainer.querySelector(\".bundle-action\");\n                if (!bundleActionContainer) {\n                  bundleActionContainer = document.createElement(\"div\");\n                  bundleActionContainer.classList.add(\"bundle-action\");\n                  targetContainer.appendChild(bundleActionContainer);\n                }\n                if (bundleRemoveButton) {\n                  const existingButtons =\n                    bundleActionContainer.querySelectorAll(\n                      \"bundle-cart-remove-button\"\n                    );\n                  existingButtons.forEach((button) => button.remove());\n                  const removeButtonHTML = bundleRemoveButton.outerHTML;\n\n                  bundleActionContainer.insertAdjacentHTML(\n                    \"beforeend\",\n                    removeButtonHTML\n                  );\n\n                  const newRemoveButton = bundleActionContainer.querySelector(\n                    \"bundle-cart-remove-button:last-child\"\n                  );\n\n                  if (newRemoveButton) {\n                    newRemoveButton.addEventListener(\"click\", () => {\n                      const _this = this;\n                      targetContainer.removeAttribute(\"data-variant-id\");\n                      targetContainer.removeAttribute(\"data-quantity\");\n\n                      if (mediaContainer) {\n                        mediaContainer.innerHTML = \"\";\n                      }\n\n                      if (contentContainer) {\n                        contentContainer.innerHTML = `\n                                                <span class=\"horizontal-product__skeleton skeleton-1\"></span>\n                                                <span class=\"horizontal-product__skeleton skeleton-2\"></span>\n                                                <span class=\"horizontal-product__skeleton skeleton-3\"></span>\n                                              `;\n                      }\n                      _this.submitButton.classList.remove(\"disabled\");\n                      _this.submitButton.textContent =\n                        window.variantStrings?.addToCartBundle;\n                      _this.updateContainerOrders();\n                      _this.updateBundleTotal();\n                      document.dispatchEvent(\n                        new CustomEvent(\"bundle:item-changed\")\n                      );\n                      const bundleItems = document.querySelectorAll(\n                        \"[data-product-bundle-variant][data-variant-id]\"\n                      );\n                      const maximum = _this.closest(\"product-form-bundle\")\n                        .dataset.maximum;\n                      if (bundleItems.length < maximum) {\n                        const btnAddCart = _this\n                          .closest(\"product-bundle\")\n                          .querySelectorAll(\n                            \"product-form-bundle button.disabled\"\n                          );\n                        btnAddCart.forEach((btn) => {\n                          const productForm = btn.closest(\n                            \"product-form-bundle\"\n                          );\n                          const productId =\n                            productForm.querySelector('input[name=\"id\"]').value;\n                          const isInBundle = Array.from(bundleItems).some(\n                            (item) =>\n                              item.getAttribute(\"data-variant-id\") === productId\n                          );\n                          if (!isInBundle) {\n                            btn.classList.remove(\"disabled\");\n                          }\n                        });\n                      }\n                      _this.updateBundleButtonStatus();\n                    });\n                  }\n                }\n              }\n\n              targetContainer.classList.add(\"flash-highlight\");\n              setTimeout(() => {\n                targetContainer.classList.remove(\"flash-highlight\");\n              }, 1500);\n            }\n\n            this.form.reset();\n            this.updateBundleTotal();\n          })\n          .catch((error) => {\n            console.error(\"Error adding product to bundle:\", error);\n            this.handleErrorMessage(\"Could not add product to bundle\");\n          })\n          .finally(() => {\n            // this.submitButton.classList.remove('disabled');\n            document.dispatchEvent(new CustomEvent(\"bundle:item-changed\"));\n            this.updateBundleButtonStatus();\n          });\n      }\n\n      updateContainerOrders() {\n        const bundleContainers = document.querySelectorAll(\n          \"[data-product-bundle-variant]\"\n        );\n\n        bundleContainers.forEach((container) => {\n          container.style.order = \"\";\n        });\n\n        let filledCount = 0;\n        let emptyCount = 0;\n\n        bundleContainers.forEach((container, index) => {\n          if (container.hasAttribute(\"data-variant-id\")) {\n            container.style.order = filledCount.toString();\n            filledCount++;\n          } else {\n            container.style.order = (\n              bundleContainers.length + emptyCount\n            ).toString();\n            emptyCount++;\n          }\n        });\n      }\n\n      updateBundleTotal() {\n        let totalPrice = 0;\n        let itemTotalPrice = 0;\n        const bundleItems = document.querySelectorAll(\n          \"[data-product-bundle-variant][data-variant-id]\"\n        );\n        bundleItems.forEach((item) => {\n          const priceElement = item.querySelector(\".price-item--regular\");\n          const price = priceElement?.dataset.price;\n          const quantity = parseInt(item.getAttribute(\"data-quantity\")) || 1;\n          itemTotalPrice += price * quantity;\n          totalPrice = Shopify.formatMoney(\n            itemTotalPrice,\n            cartStrings?.money_format\n          );\n        });\n        const totalElement = document.querySelector(\".subtotal-price__bundle\");\n        if (itemTotalPrice > 0) {\n          totalElement.textContent = totalPrice;\n        } else {\n          totalElement.textContent = Shopify.formatMoney(\n            0,\n            cartStrings?.money_format\n          );\n        }\n      }\n\n      getMainCartSectionRender() {\n        return [\n          {\n            id: \"main-cart-items\",\n            section: document.getElementById(\"main-cart-items\")?.dataset.id,\n            selector: \".js-contents\",\n          },\n        ];\n      }\n\n      getSectionInnerHTML(html, selector) {\n        return new DOMParser()\n          .parseFromString(html, \"text/html\")\n          .querySelector(selector).innerHTML;\n      }\n\n      handleErrorMessage(errorMessage = false) {\n        if (this.hideErrors) return;\n\n        this.errorMessageWrapper =\n          this.errorMessageWrapper ||\n          this.querySelector(\".product-form__error-message-wrapper\");\n        if (!this.errorMessageWrapper) return;\n        this.errorMessage =\n          this.errorMessage ||\n          this.errorMessageWrapper.querySelector(\n            \".product-form__error-message\"\n          );\n\n        this.errorMessageWrapper.toggleAttribute(\"hidden\", !errorMessage);\n\n        if (errorMessage) {\n          this.errorMessage.textContent = errorMessage;\n        }\n      }\n\n      handleErrorMessagePopup(errorMessage = false) {\n        const url = `${window.location.pathname}?section_id=form-message`;\n        fetch(url)\n          .then((response) => response.text())\n          .then((responseText) => {\n            const html = new DOMParser().parseFromString(\n              responseText,\n              \"text/html\"\n            );\n            const elementErrorMessage = html.querySelector(\n              \".product-form__error-message-wrapper\"\n            );\n            const elementMessage = elementErrorMessage.querySelector(\n              \".product-form__error-message\"\n            );\n            elementMessage.textContent = errorMessage;\n            showToast(elementErrorMessage.innerHTML, 3000, \"modal-error\");\n          })\n          .catch((e) => {\n            throw e;\n          });\n      }\n    }\n  );\n}\n\nclass QuantityInputBundle extends HTMLElement {\n  constructor() {\n    super();\n    this.input = this.querySelector(\"input\");\n    this.changeEvent = new Event(\"change\", { bubbles: true });\n\n    this.previousValue = parseInt(this.input.value) || 1;\n\n    this.input.addEventListener(\"change\", this.onInputChange.bind(this));\n    this.querySelectorAll(\"button\").forEach((button) =>\n      button.addEventListener(\"click\", this.onButtonClick.bind(this))\n    );\n  }\n\n  onInputChange() {\n    this.updateBundleQuantity();\n  }\n\n  onButtonClick(event) {\n    event.preventDefault();\n    this.previousValue = parseInt(this.input.value);\n\n    event.target.name === \"plus\" ||\n    event.target.closest(\"button\").name === \"plus\"\n      ? this.input.stepUp()\n      : this.input.stepDown();\n\n    if (this.previousValue !== parseInt(this.input.value)) {\n      this.input.dispatchEvent(this.changeEvent);\n      this.updateBundleQuantity();\n    }\n  }\n\n  updateBundleQuantity() {\n    const bundleContainer = this.closest(\"[data-product-bundle-variant]\");\n    if (!bundleContainer) return;\n\n    const currentValue = parseInt(this.input.value) || 1;\n    bundleContainer.setAttribute(\"data-quantity\", currentValue);\n\n    this.updateBundleTotal();\n  }\n\n  updateBundleTotal() {\n    let itemTotalPrice = 0;\n    const bundleItems = document.querySelectorAll(\n      \"[data-product-bundle-variant][data-variant-id]\"\n    );\n\n    bundleItems.forEach((item) => {\n      const priceElement = item.querySelector(\".price-item--regular\");\n      if (!priceElement || !priceElement.dataset.price) return;\n\n      const price = parseFloat(priceElement.dataset.price);\n      const quantity = parseInt(item.getAttribute(\"data-quantity\")) || 1;\n\n      if (!isNaN(price) && !isNaN(quantity)) {\n        itemTotalPrice += price * quantity;\n      }\n    });\n\n    const totalElement = document.querySelector(\".subtotal-price__bundle\");\n    if (totalElement) {\n      if (itemTotalPrice > 0) {\n        totalElement.textContent = Shopify.formatMoney(\n          itemTotalPrice,\n          cartStrings?.money_format\n        );\n      } else {\n        totalElement.textContent = Shopify.formatMoney(\n          0,\n          cartStrings?.money_format\n        );\n      }\n    }\n  }\n}\n\ncustomElements.define(\"quantity-input-bundle\", QuantityInputBundle);\n\nclass ButtonSubmitBundle extends HTMLElement {\n  constructor() {\n    super();\n    this.submitButton = this;\n    this.addEventListener(\"click\", this.onSubmitHandler.bind(this));\n    this.minimum = this.dataset.minimum;\n    this.maximum = this.dataset.maximum;\n  }\n\n  onSubmitHandler(evt) {\n    evt.preventDefault();\n\n    if (this.classList.contains(\"loading\")) return;\n\n    this.classList.add(\"loading\");\n    this.setAttribute(\"disabled\", \"\");\n    this.querySelector(\"span\").textContent =\n      window.variantStrings?.addingToCart || \"Adding to cart...\";\n\n    const bundleItems = document.querySelectorAll(\n      \"[data-product-bundle-variant][data-variant-id]\"\n    );\n\n    if (!bundleItems.length) {\n      this.handleErrorMessagePopup(\"Please add products to your bundle first\");\n      this.resetButton();\n      return;\n    }\n\n    const items = Array.from(bundleItems).map((item) => {\n      return {\n        id: item.getAttribute(\"data-variant-id\"),\n        quantity: parseInt(item.getAttribute(\"data-quantity\")) || 1,\n      };\n    });\n\n    this.addItemsToCart(items);\n  }\n\n  addItemsToCart(items) {\n    this.cart =\n      document.querySelector(\"cart-notification\") ||\n      document.querySelector(\"cart-drawer\");\n\n    const formData = {\n      items: items,\n      sections: this.cart\n        ? this.cart.getSectionsToRender().map((section) => section.id)\n        : [],\n      sections_url: window.location.pathname,\n    };\n\n    fetch(`${routes?.cart_add_url}`, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Accept: \"application/json\",\n      },\n      body: JSON.stringify(formData),\n    })\n      .then((response) => response.json())\n      .then((response) => {\n        if (response.status) {\n          this.handleErrorMessagePopup(response.description);\n          return;\n        } else if (response.errors) {\n          this.handleErrorMessagePopup(response.errors);\n          return;\n        }\n\n        this.updateCartCount();\n\n        this.clearBundle();\n\n        if (this.cart) {\n          this.updateCartSections(response);\n        }\n\n        if (this.cart) {\n          this.cart.open();\n        } else {\n          window.location = window.routes.cart_url;\n        }\n      })\n      .catch((error) => {\n        throw error;\n      })\n      .finally(() => {\n        this.resetButton();\n      });\n  }\n\n  updateCartCount() {\n    fetch(\"/cart.json\")\n      .then((res) => res.json())\n      .then((cart) => {\n        if (cart.item_count !== undefined) {\n          document.querySelectorAll(\".cart-count\").forEach((el) => {\n            if (el.classList.contains(\"cart-count-drawer\")) {\n              el.innerHTML = `(${cart.item_count})`;\n            } else {\n              el.innerHTML = cart.item_count > 100 ? \"~\" : cart.item_count;\n            }\n          });\n\n          if (document.querySelector(\"header-total-price\")) {\n            document.querySelector(\"header-total-price\").updateTotal(cart);\n          }\n\n          const cartFreeShip = document.querySelector(\"free-ship-progress-bar\");\n          if (cartFreeShip) {\n            cartFreeShip.init(cart.items_subtotal_price);\n          }\n        }\n      })\n      .catch((error) => {\n        console.error(\"Error updating cart count:\", error);\n      });\n  }\n\n  updateCartSections(response) {\n    this.cart.getSectionsToRender().forEach((section) => {\n      const elementToReplace = document.getElementById(section.id);\n      const html = new DOMParser().parseFromString(\n        response.sections[section.id],\n        \"text/html\"\n      );\n\n      if (elementToReplace) {\n        elementToReplace.innerHTML =\n          html.querySelector(\"#minicart-form\").innerHTML;\n      }\n    });\n\n    if (this.cart && typeof this.cart.cartAction === \"function\") {\n      this.cart.cartAction();\n    }\n  }\n\n  clearBundle() {\n    const bundleContainers = document.querySelectorAll(\n      \"[data-product-bundle-variant]\"\n    );\n    bundleContainers.forEach((container) => {\n      container.removeAttribute(\"data-variant-id\");\n      container.removeAttribute(\"data-quantity\");\n\n      const mediaContainer = container.querySelector(\n        \"[data-product-bundle-variant-media]\"\n      );\n      if (mediaContainer) {\n        mediaContainer.innerHTML = \"\";\n      }\n\n      const contentContainer = container.querySelector(\n        \"[data-product-bundle-variant-content]\"\n      );\n      if (contentContainer) {\n        contentContainer.innerHTML = `\n          <span class=\"horizontal-product__skeleton skeleton-1\"></span>\n          <span class=\"horizontal-product__skeleton skeleton-2\"></span>\n          <span class=\"horizontal-product__skeleton skeleton-3\"></span>\n        `;\n      }\n\n      const actionContainer = container.querySelector(\".bundle-action\");\n      if (actionContainer) {\n        actionContainer.innerHTML = \"\";\n      }\n    });\n\n    const totalElement = document.querySelector(\".subtotal-price__bundle\");\n    if (totalElement) {\n      totalElement.textContent = Shopify.formatMoney(\n        0,\n        cartStrings?.money_format\n      );\n    }\n\n    this.updateButtonStatus();\n    document.dispatchEvent(new CustomEvent(\"bundle:item-changed\"));\n  }\n\n  handleErrorMessagePopup(errorMessage = false) {\n    const url = `${window.location.pathname}?section_id=form-message`;\n    fetch(url)\n      .then((response) => response.text())\n      .then((responseText) => {\n        const html = new DOMParser().parseFromString(responseText, \"text/html\");\n        const elementErrorMessage = html.querySelector(\n          \".product-form__error-message-wrapper\"\n        );\n        const elementMessage = elementErrorMessage.querySelector(\n          \".product-form__error-message\"\n        );\n        elementMessage.textContent = errorMessage;\n        showToast(elementErrorMessage.innerHTML, 3000, \"modal-error\");\n      })\n      .catch((e) => {\n        throw e;\n      });\n  }\n\n  resetButton() {\n    this.classList.remove(\"loading\");\n    this.removeAttribute(\"disabled\");\n    this.querySelector(\"span\").textContent =\n      window.variantStrings?.addAllToCart || \"Add all to cart\";\n    this.updateButtonStatus();\n  }\n\n  updateButtonStatus() {\n    const bundleItems = document.querySelectorAll(\n      \"[data-product-bundle-variant][data-variant-id]\"\n    );\n    const sectionId = this.dataset.sectionId;\n    const bundleBtnAddCart = document.querySelectorAll(\n      `#product-bundle-${sectionId} product-form-bundle button`\n    );\n    bundleBtnAddCart.forEach((button) => {\n      if (button.classList.contains(\"disabled\")) {\n        button.classList.remove(\"disabled\");\n      }\n    });\n    let itemCount = 0;\n    if (bundleItems.length > 0) {\n      itemCount = bundleItems.length + 1;\n    }\n\n    if (itemCount >= this.minimum) {\n      this.classList.remove(\"disabled\");\n    } else {\n      this.classList.add(\"disabled\");\n    }\n  }\n}\n\ncustomElements.define(\"button-submit-bundle\", ButtonSubmitBundle);\n\nclass ProgressBundleBar extends HTMLElement {\n  constructor() {\n    super();\n    this.minimum = parseInt(this.dataset.minimum) || 1;\n    this.updateBundleProgress();\n\n    document.addEventListener(\"bundle:item-changed\", () =>\n      this.updateBundleProgress()\n    );\n  }\n\n  updateBundleProgress() {\n    const bundleItems = Array.from(\n      this.closest(\"sticky-element\").querySelectorAll(\n        \"[data-product-bundle-variant][data-variant-id]\"\n      )\n    );\n    const itemCount = bundleItems.length;\n\n    let progressPercentage;\n    if (itemCount >= this.minimum) {\n      progressPercentage = 100;\n    } else {\n      progressPercentage = (itemCount / this.minimum) * 100;\n    }\n\n    this.style.setProperty(\"--progress-width\", `${progressPercentage}%`);\n\n    if (progressPercentage >= 100) {\n      this.classList.add(\"complete\");\n    } else {\n      this.classList.remove(\"complete\");\n    }\n  }\n}\n\ncustomElements.define(\"progress-bundle-bar\", ProgressBundleBar);\n\nif (!customElements.get(\"product-form-quick-edit\")) {\n  customElements.define(\n    \"product-form-quick-edit\",\n    class ProductForm extends HTMLElement {\n      constructor() {\n        super();\n        this.form = this.querySelector(\"form\");\n        this.form.querySelector(\"[name=id]\").disabled = false;\n        this.form.addEventListener(\"submit\", this.onSubmitHandler.bind(this));\n        this.cart =\n          document.querySelector(\"cart-notification\") ||\n          document.querySelector(\"cart-drawer\");\n        this.submitButton = this.querySelector('[type=\"submit\"]');\n      }\n\n      onSubmitHandler(evt) {\n        evt.preventDefault();\n        this.submitButton.setAttribute(\"disabled\", true);\n        this.submitButton.classList.add(\"loading\");\n        const cartRecommend = document.querySelector(\".cart-recommend\");\n        if (cartRecommend && cartRecommend.classList.contains(\"open\")) {\n          cartRecommend.classList.remove(\"open\");\n        }\n        const quick = document.getElementById(\"product-form-quick-edit\");\n        const id = quick.getAttribute(\"data-line\");\n        const quantity = 0;\n        const config_change = fetchConfig(\"json\");\n        config_change.body = JSON.stringify({\n          id,\n          quantity,\n        });\n        fetch(`${routes?.cart_change_url}`, config_change)\n          .then((response) => {\n            return response.text();\n          })\n          .catch((e) => {\n            throw e;\n          })\n          .finally(() => {\n            this.addCartAdd();\n          });\n      }\n\n      addCartAdd() {\n        const config = fetchConfig(\"json\");\n        config.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n        delete config.headers[\"Content-Type\"];\n        const formData = new FormData(this.form);\n        if (this.cart) {\n          formData.append(\n            \"sections\",\n            this.cart.getSectionsToRender().map((section) => section.id)\n          );\n          formData.append(\"sections_url\", window.location.pathname);\n          this.cart.setActiveElement(document.activeElement);\n        }\n        config.body = formData;\n        fetch(`${routes?.cart_add_url}`, config)\n          .then((response) => {\n            return response.text();\n          })\n          .then((state) => {\n            this.submitButton.setAttribute(\"disabled\", true);\n            this.submitButton.querySelector(\"span\").classList.add(\"hidden\");\n            fetch(\"/cart.json\")\n              .then((res) => res.json())\n              .then((cart) => {\n                if (cart.item_count != undefined) {\n                  document.querySelectorAll(\".cart-count\").forEach((el) => {\n                    if (el.classList.contains(\"cart-count-drawer\")) {\n                      el.innerHTML = `(${cart.item_count})`;\n                    } else {\n                      el.innerHTML =\n                        cart.item_count > 100 ? \"~\" : cart.item_count;\n                    }\n                  });\n                  if (document.querySelector(\"header-total-price\")) {\n                    document\n                      .querySelector(\"header-total-price\")\n                      .updateTotal(cart);\n                  }\n                  const cart_free_ship = document.querySelector(\n                    \"free-ship-progress-bar\"\n                  );\n                  if (cart_free_ship) {\n                    cart_free_ship.init(cart.items_subtotal_price);\n                  }\n                }\n              })\n              .catch((error) => {\n                throw error;\n              });\n            const parsedState = JSON.parse(state);\n            if (!parsedState.errors) {\n              this.cart.getSectionsToRender().forEach((section) => {\n                const elementToReplace = document.getElementById(section.id);\n                const html = new DOMParser().parseFromString(\n                  parsedState.sections[section.id],\n                  \"text/html\"\n                );\n                elementToReplace.innerHTML =\n                  html.querySelector(\"#minicart-form\").innerHTML;\n              });\n              if (this.cart && typeof this.cart.cartAction === \"function\") {\n                this.cart.cartAction();\n              }\n              document.querySelector(\".tingle-modal__close\").click();\n            } else {\n              this.submitButton.removeAttribute(\"disabled\");\n              this.submitButton.classList.remove(\"loading\");\n              this.submitButton\n                .querySelector(\"span\")\n                .classList.remove(\"hidden\");\n              this.updateMessageQuickErrors(parsedState.errors);\n            }\n          })\n          .catch((e) => {\n            throw e;\n          })\n          .finally(() => {\n            BlsLazyloadImg.init();\n            this.submitButton.removeAttribute(\"disabled\");\n            this.submitButton.querySelector(\"span\").classList.remove(\"hidden\");\n            this.cart.open();\n            const cartRecommend = document.querySelector(\".cart-recommend\");\n            if (\n              cartRecommend &&\n              !cartRecommend.classList.contains(\"hidden-recommend\")\n            ) {\n              if (cartRecommend.classList.contains(\"cart-recommend-custom\")) {\n                const cartUpsellItem =\n                  document.querySelectorAll(\".cart-upsell-item\");\n                const cartUpsellSlide = document.querySelectorAll(\n                  \".swiper-cart-upsell .swiper-slide\"\n                );\n\n                if (cartUpsellItem.length > 0) {\n                  setTimeout(function () {\n                    cartRecommend.classList.add(\"open\");\n                  }, 800);\n                } else if (cartUpsellSlide.length === 0) {\n                  cartRecommend.classList.remove(\"block\");\n                  cartRecommend.classList.add(\"hidden\");\n                }\n              } else {\n                setTimeout(function () {\n                  cartRecommend.classList.add(\"open\");\n                }, 800);\n              }\n            }\n          });\n      }\n\n      updateMessageQuickErrors(message) {\n        this.querySelector(\".cart-item__error-text\").textContent = message;\n      }\n    }\n  );\n}\n\nclass ShowPassWord extends HTMLElement {\n  constructor() {\n    super();\n    this.init();\n  }\n  init() {\n    this.addEventListener(\"click\", this.onClick.bind(this));\n  }\n  onClick() {\n    var input = this.closest(\".form-field\").querySelector(\"input\");\n    if (input.type === \"password\") {\n      input.type = \"text\";\n      this.classList.add(\"text\");\n    } else {\n      input.type = \"password\";\n      this.classList.remove(\"text\");\n    }\n  }\n}\ncustomElements.define(\"show-pass-word\", ShowPassWord);\n\nclass BeforeYouLeave extends HTMLElement {\n  constructor() {\n    super();\n    setTimeout(() => {\n      this.init();\n    }, 10000);\n  }\n  init() {\n    const sectionId = this.dataset.sectionId;\n    const before_you_leave = document.querySelector(`#${sectionId}`).innerHTML;\n    document.querySelector(\"before-you-leave\").innerHTML = before_you_leave;\n    setTimeout(() => {\n      this.initPopup();\n      BlsLazyloadImg.init();\n    }, 500);\n  }\n  initPopup() {\n    const element = document.querySelector(\"before-you-leave\");\n    const delay = element?.dataset.timeDelay;\n    var action = 0;\n\n    if (element !== null) {\n      var getPopup = setTimeout(() => {\n        getTimeOut();\n      }, (delay - 10) * 1000);\n\n      const addMultipleListeners = (\n        el,\n        types,\n        listener,\n        options,\n        useCapture\n      ) => {\n        types.forEach((type) =>\n          el.addEventListener(type, listener, options, useCapture)\n        );\n      };\n\n      addMultipleListeners(\n        document.querySelector(\"body\"),\n        [\"scroll\", \"click\", \"mousemove\", \"keydown\"],\n        () => {\n          setAction();\n        }\n      );\n      const closeBefore = document.querySelectorAll(\".close-before\");\n      closeBefore.forEach((event) => {\n        event.addEventListener(\"click\", () => {\n          clearTimeout(getPopup);\n          element.classList.remove(\"open\");\n          document.documentElement.classList.remove(\"open-byl\");\n          setTimeout(() => {\n            document.documentElement.classList.remove(\"open-drawer\");\n            root.style.removeProperty(\"padding-right\");\n          }, 550);\n        });\n      });\n\n      function getTimeOut() {\n        action = action + 1;\n        if (action >= 1) {\n          const htmlElement = document.documentElement;\n          const bodyElement = document.body;\n          \n          if (htmlElement.classList.contains(\"open-drawer\") || \n              bodyElement.classList.contains(\"tingle-enabled\")) {\n            return;\n          }\n          document.documentElement.classList.add(\"open-drawer\", \"open-byl\");\n          root.style.setProperty(\n            \"padding-right\",\n            getScrollBarWidth.init() + \"px\"\n          );\n          element.classList.add(\"open\");\n          const cp = element.querySelectorAll(\".discount\");\n          if (cp !== null) {\n            cp.forEach((e) => {\n              e.addEventListener(\"click\", (el) => {\n                el.preventDefault();\n                navigator.clipboard.writeText(e?.dataset.code);\n                e.classList.add(\"action-copy\");\n                setTimeout(() => {\n                  e.classList.remove(\"action-copy\");\n                }, 1500);\n              });\n            });\n          }\n        }\n      }\n      function setAction() {\n        action = action - 1;\n      }\n    }\n  }\n}\ncustomElements.define(\"before-you-leave\", BeforeYouLeave);\n\nclass MiniCartRemoveButton extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener(\"click\", (event) => {\n      event.preventDefault();\n      const wishlist_items = JSON.parse(\n        localStorage.getItem(\"glozin__wishlist-items\")\n      );\n      const productHandle = this.dataset.productHandle;\n      let index = wishlist_items?.indexOf(productHandle);\n      if (this.classList.contains(\"action-add-wishlist\")) {\n        if (index == -1 || index == undefined) {\n          this.closest(\".cart-item\").querySelector(\n            \".minicart__wishlist\"\n          ).style.display = \"block\";\n          this.closest(\".cart-item\").querySelector(\n            \".minicart__product-info\"\n          ).style.display = \"none\";\n        } else {\n          const cartItems = this.closest(\"cart-notification\");\n          cartItems.updateQuantity(this.dataset.index, 0);\n        }\n      } else {\n        const cartItems = this.closest(\"cart-notification\");\n        cartItems.updateQuantity(this.dataset.index, 0);\n      }\n    });\n  }\n}\ncustomElements.define(\"mini-cart-remove-button\", MiniCartRemoveButton);\n\nclass MiniCartWishlistAction extends HTMLElement {\n  constructor() {\n    super();\n    this.actionRemoveWishlist();\n    this.actionAddWishlist();\n    this.actionClose();\n  }\n\n  actionRemoveWishlist() {\n    this.querySelector(\".btn-minicart__remove-js\").addEventListener(\n      \"click\",\n      (event) => {\n        event.preventDefault();\n        const target = event.currentTarget;\n        this.eventRemove(target);\n      }\n    );\n  }\n\n  actionAddWishlist() {\n    this.querySelector(\".btn-minicart__add-wishlist-js\").addEventListener(\n      \"click\",\n      (event) => {\n        event.preventDefault();\n        const target = event.currentTarget;\n        const localListProductIds = localStorage.getItem(\n          \"glozin__wishlist-items\"\n        );\n        let listProductIds = [];\n        let productId = target.dataset.productId;\n        if (localListProductIds) {\n          const parseLocalListProductIds = JSON.parse(localListProductIds);\n          let isProductIdContained =\n            parseLocalListProductIds.includes(productId);\n          if (!isProductIdContained) {\n            listProductIds.push(...parseLocalListProductIds, productId);\n          } else {\n            listProductIds.push(...parseLocalListProductIds);\n          }\n        } else {\n          listProductIds.push(productId);\n        }\n        const stringifyListProductIds = JSON.stringify(listProductIds);\n        localStorage.setItem(\"glozin__wishlist-items\", stringifyListProductIds);\n        this.eventRemove(target);\n      }\n    );\n  }\n\n  eventRemove(target) {\n    const cartItems = document.querySelector(\"cart-notification\");\n    cartItems.updateQuantity(target.dataset.index, 0);\n  }\n\n  actionClose() {\n    document.querySelectorAll(\".cart-close-wishlist\").forEach((items) => {\n      items.addEventListener(\"click\", (e) => {\n        const target = e.currentTarget;\n        e.preventDefault();\n        target\n          .closest(\".cart-item\")\n          .querySelector(\".minicart__wishlist\").style.display = \"none\";\n        target\n          .closest(\".cart-item\")\n          .querySelector(\".minicart__product-info\").style.display = \"block\";\n      });\n    });\n  }\n}\ncustomElements.define(\"minicart-wishlist-action\", MiniCartWishlistAction);\n\nclass CookieBar extends HTMLElement {\n  constructor() {\n    super();\n    this.init();\n  }\n  init() {\n    var _this = this;\n    if (!getCookie(\"cookie_bar\")) {\n      this.classList.remove(\"hidden\");\n    }\n    this.querySelectorAll(\".cookie-dismiss\").forEach((closeCookie) => {\n      closeCookie.addEventListener(\n        \"click\",\n        (e) => {\n          e.preventDefault();\n          const target = e.currentTarget;\n          _this.remove();\n          if (target.id == \"cookie-refuse\") {\n            setCookie(\"cookie_bar\", \"dismiss\", 7);\n          } else {\n            setCookie(\"cookie_bar\", \"dismiss\", 30);\n          }\n        },\n        false\n      );\n    });\n  }\n}\ncustomElements.define(\"cookie-bar\", CookieBar);\n\nclass TermsConditions extends PopupBase {\n  constructor() {\n    super();\n    this.init();\n  }\n  init() {\n    const terms = this.querySelector(\"a\");\n    if (terms) {\n      terms.addEventListener(\"click\", (e) => {\n        const target = e.currentTarget;\n        const popup = document.querySelector(\"#popup-terms-conditions\");\n        if (popup) {\n          const header = popup.getAttribute(\"data-text\");\n          this.initPopup(\n            popup.querySelector(\".terms-conditions-content\").outerHTML,\n            `<h3 class=\"title-popup h5 my-0 px-20 px-md-30 py-20 border-bottom\">${header}</h3>`\n          );\n          target.href = \"javascript: (function(){})();\";\n          target.target = \"_self\";\n        }\n      });\n    }\n    const conditions =\n      this.querySelector(\".conditions_form_minicart\") ||\n      this.querySelector(\".conditions_form_product\");\n    const bpb = document.querySelector(\".btn-checkout\");\n    const dynamicCheckout = this.closest(\"product-form\")?.querySelector(\n      \".btn-checkout-dynamic\"\n    );\n    if (conditions) {\n      if (getCookie(\"term_conditions\")) {\n        conditions.setAttribute(\"checked\", \"\");\n        if (bpb) {\n          bpb.removeAttribute(\"disabled\");\n        }\n        if (dynamicCheckout) {\n          dynamicCheckout.classList.remove(\"disabled\");\n        }\n      }\n      conditions.addEventListener(\"change\", (event) => {\n        if (bpb) {\n          if (event.currentTarget.checked) {\n            bpb.removeAttribute(\"disabled\");\n            setCookie(\"term_conditions\", 1, 1);\n          } else {\n            bpb.setAttribute(\"disabled\", \"\");\n            deleteCookie(\"term_conditions\");\n          }\n        }\n        if (dynamicCheckout) {\n          if (event.currentTarget.checked) {\n            dynamicCheckout.classList.remove(\"disabled\");\n            setCookie(\"term_conditions\", 1, 1);\n          } else {\n            dynamicCheckout.classList.add(\"disabled\");\n            deleteCookie(\"term_conditions\");\n          }\n        }\n      });\n    }\n  }\n}\ncustomElements.define(\"terms-conditions\", TermsConditions);\n\nvar BlsGlozinAdminLi = (function () {\n  return {\n    init: function () {\n      this.BlsCheckLi();\n    },\n    BlsCheckLi: function () {\n      const _this = this;\n      if (typeof glozin_app === \"object\") {\n        if (glozin_app.mode === \"admin\") {\n          if (glozin_app.action === \"active\") {\n            if (_this.checkCookie(glozin_app.lic) === false) {\n              let encrypted = \"\";\n              if (glozin_app._e) {\n                encrypted = glozin_app._e;\n              }\n              console.log(\"encrypted\", encrypted);\n              _this.BlsActive(encrypted);\n            }\n          } else {\n            const url =\n              \"https://api.nextsky.co/glozin/api/remove-license/?code=\" +\n              glozin_app.lic +\n              \"&domain=\" +\n              glozin_app.shop;\n            fetch(url)\n              .then((response) => response.json())\n              .then((responseText) => {\n                if (responseText) {\n                  const dateCreate = new Date(new Date().getTime() - 36e6);\n                  _this.setCookie(glozin_app.lic, dateCreate);\n                }\n                _this.BlsRenderHtml(3);\n              })\n              .catch((e) => {\n                console.log(e);\n              });\n          }\n        }\n      } else {\n        _this.BlsRenderHtml(0);\n      }\n    },\n    BlsRenderHtml: function (cs) {\n      const shop = window.location.hostname.replace(/\\./g, \"-\");\n      if (!document.querySelector(\"#\" + \"bls__\" + shop)) {\n        const container = document.createElement(\"DIV\");\n        const wrapper = document.createElement(\"DIV\");\n        const title = document.createElement(\"h3\");\n        const introText = document.createElement(\"p\");\n        const messages = {\n          1: \"This purchase code was activated for another domain!\",\n          2: \"This purchase code is invalid!\",\n          3: \"Purchase Code deleted successfully!\",\n          0: \"Welcome to Glozin - Shopify Themes OS 2.0 \uD83C\uDF89 \",\n        };\n        title.textContent = messages[cs] || messages[0];\n        title.setAttribute(\"class\", `msg-${cs}`);\n        introText.textContent =\n          \"Follow these simple steps to use Glozin theme:\";\n        const steps = [\n          {\n            title:\n              \"Step 1: Add Glozin theme file to your 'Online store' > 'Theme'.\",\n            content: \"\",\n          },\n          {\n            title: \"Step 2: Insert purchase code\",\n            content:\n              \"Go to 'Theme setting' > 'Purchase code' to insert your purchase code.\",\n          },\n          {\n            title: \"Step 3: Activate purchase code\",\n            content:\n              \"Go to 'Theme setting' > 'Purchase code action' and select 'Active purchase code'.\",\n          },\n        ];\n        const stepElements = steps.map((step, index) => {\n          const stepEl = document.createElement(\"DIV\");\n          stepEl.setAttribute(\"class\", `step-${index + 1}`);\n          const heading = document.createElement(\"h5\");\n          heading.textContent = step.title;\n          stepEl.appendChild(heading);\n\n          if (step.content) {\n            const content = document.createElement(\"p\");\n            content.textContent = step.content;\n            stepEl.appendChild(content);\n          }\n          return stepEl;\n        });\n        const purchaseLink = document.createElement(\"a\");\n        purchaseLink.setAttribute(\"target\", \"_blank\");\n        purchaseLink.setAttribute(\"class\", \"popup-btn\");\n        purchaseLink.setAttribute(\n          \"href\",\n          \"https://nextsky.gitbook.io/glozin-theme/get-started/purchase-code-and-activation\"\n        );\n        purchaseLink.textContent = \"\uD83D\uDC49 Get Glozin purchase code\";\n        stepElements[1].appendChild(purchaseLink);\n        wrapper.appendChild(title);\n        wrapper.appendChild(introText);\n        stepElements.forEach((step) => wrapper.appendChild(step));\n        container.setAttribute(\"id\", \"bls__not-active\");\n        container.appendChild(wrapper);\n        setInterval(() => {\n          if (document.getElementById(\"bls__not-active\")) {\n            document\n              .getElementById(\"bls__not-active\")\n              .setAttribute(\"style\", \"display: block !important;\");\n          } else {\n            document.querySelector(\"body\").appendChild(container);\n          }\n        }, 1000);\n      } else {\n        document.querySelector(\"#\" + \"bls__\" + shop).remove();\n      }\n    },\n    BlsActive: function (encrypted) {\n      const _this = this;\n      const salt = glozin_app._s || glozin_app.shop + \"GlzSalt25\";\n      const url =\n        \"https://api.nextsky.co/glozin/api/check-license/?code=\" +\n        glozin_app.lic +\n        \"&domain=\" +\n        glozin_app.shop +\n        \"&e=\" +\n        encodeURIComponent(encrypted) +\n        \"&s=\" +\n        encodeURIComponent(salt);\n      fetch(url)\n        .then((response) => response.json())\n        .then((responseText) => {\n          if (responseText.d === false) {\n            _this.BlsRenderHtml(responseText.s);\n          } else if (responseText.d === true) {\n            const dateCheck = new Date(new Date().getTime() + 36e6);\n            _this.setCookie(glozin_app.lic, dateCheck);\n          } else if (responseText.d === \"err\") {\n            console.log(\n              responseText.err\n                ? responseText.err.message\n                : \"Please contact to server's adminstrator!!!\"\n            );\n          }\n        })\n        .catch((e) => {\n          console.log(e);\n        });\n    },\n    setCookie: function (cvalue, d) {\n      const v = btoa(cvalue);\n      document.cookie =\n        \"UHVyY2hhc2VDb2Rl\" + \"=\" + v + \";expires=\" + d + \";path=/\";\n    },\n    checkCookie: function (val) {\n      const v = atob(getCookie(\"UHVyY2hhc2VDb2Rl\"));\n      if (val.length !== 0 && v == val) {\n        return true;\n      } else {\n        return false;\n      }\n    },\n  };\n})();\nBlsGlozinAdminLi.init();\n\nclass QuickView extends PopupBase {\n  constructor() {\n    super();\n    this.html = null;\n  }\n\n  onThisClick() {\n    this.classList.add(\"loading\");\n    fetch(this.url)\n      .then((response) => response.text())\n      .then((text) => {\n        this.html = parser\n          .parseFromString(text, \"text/html\")\n          .querySelector(\n            \"#shopify-section-product-quickview .product-quickview__content\"\n          );\n        if (!this.html) return;\n        // Load scripts in the HTML content\n        this.loadScripts(this.html);\n        this.html.classList.remove(\"hidden\");\n        this.initPopup(this.html);\n      })\n      .finally(() => {\n        Shopify.PaymentButton.init();\n        if (!document.querySelector('div[data-animation=\"slide_in\"')) {\n          BlsLazyloadImg.init();\n        }\n        this.classList.remove(\"loading\");\n      })\n      .catch((e) => {\n        this.classList.remove(\"loading\");\n        console.error(e);\n      });\n  }\n\n  loadScripts(html) {\n    const scripts = html.querySelectorAll(\"script\");\n    scripts.forEach((script) => {\n      const newScript = document.createElement(\"script\");\n      newScript.src = script.src;\n      newScript.textContent = script.textContent;\n      document.body.appendChild(newScript).parentNode.removeChild(newScript);\n    });\n  }\n}\n\nclass ButtonQuickView extends QuickView {\n  constructor() {\n    super();\n    this.url = this.dataset.url;\n    this.init();\n  }\n\n  init() {\n    this.addEventListener(\"click\", this.onThisClick.bind(this));\n  }\n}\ncustomElements.define(\"button-quickview\", ButtonQuickView);\n\nclass ButtonSelectOptions extends QuickView {\n  constructor() {\n    super();\n    this.url = this.dataset.url;\n    this.init();\n  }\n\n  init() {\n    this.addEventListener(\"click\", this.onThisClick.bind(this));\n  }\n}\ncustomElements.define(\"select-option\", ButtonSelectOptions);\n\nclass ButtonWishlist extends HTMLElement {\n  constructor() {\n    super();\n    this.productId = this.dataset.productId;\n    this.action = this.dataset.action || \"remove\";\n    this.addTooltip = this.dataset.tooltipAdd || \"Add to wishlist\";\n    this.removeTooltip = this.dataset.tooltipRemove || \"Remove from wishlist\";\n    this.redirectTooltip = this.dataset.tooltipRedirect || \"Browse wishlist\";\n    this.tooltipDiv = this.querySelector(\".tooltip-content\");\n    this.init();\n  }\n\n  init() {\n    this.initializeWishlistStatus();\n    this.addEventListener(\"click\", this.onThisClick.bind(this));\n  }\n\n  initializeWishlistStatus() {\n    const localListProductIds = localStorage.getItem(\"glozin__wishlist-items\");\n    if (!localListProductIds) return;\n    const parseLocalListProductIds = JSON.parse(localListProductIds);\n    const isProductIdContained = parseLocalListProductIds.includes(\n      this.productId\n    );\n    if (isProductIdContained) {\n      this.classList.add(\"active\");\n      if (this.tooltipDiv) {\n        if (this.action === \"remove\") {\n          this.tooltipDiv.textContent = this.removeTooltip;\n        } else {\n          this.tooltipDiv.textContent = this.redirectTooltip;\n        }\n      }\n    }\n  }\n\n  actionWhenClicked(allThisProductIds, isAdd) {\n    allThisProductIds.forEach((_this) => {\n      if (isAdd === true) {\n        _this.classList.add(\"active\");\n        const tooltipDiv = _this.querySelector(\".tooltip-content\");\n        if (tooltipDiv) {\n          if (this.action === \"remove\") {\n            tooltipDiv.textContent = this.removeTooltip;\n          } else {\n            tooltipDiv.textContent = this.redirectTooltip;\n          }\n        }\n      } else {\n        const tooltipDiv = _this.querySelector(\".tooltip-content\");\n        if (tooltipDiv) {\n          tooltipDiv.textContent = this.addTooltip;\n        }\n        _this.classList.remove(\"active\");\n      }\n    });\n  }\n\n  onThisClick() {\n    const localListProductIds = localStorage.getItem(\"glozin__wishlist-items\");\n    const allThisProductIds = document.querySelectorAll(\n      `button-wishlist[data-product-id=\"${this.productId}\"]`\n    );\n    let listProductIds = [];\n    if (!this.productId) return;\n    if (localListProductIds && allThisProductIds.length > 0) {\n      // wishlist localstorage exists\n      const parseLocalListProductIds = JSON.parse(localListProductIds);\n      let isProductIdContained = parseLocalListProductIds.includes(\n        this.productId\n      );\n      if (!isProductIdContained) {\n        // case item is not in wishlist\n        listProductIds.push(...parseLocalListProductIds, this.productId);\n        this.actionWhenClicked(allThisProductIds, true);\n      } else {\n        // case item is in wishlist\n        if (this.action) {\n          if (this.action === \"remove\") {\n            const indexOfProductId = parseLocalListProductIds.indexOf(\n              this.productId\n            );\n            parseLocalListProductIds.splice(indexOfProductId, 1);\n            listProductIds.push(...parseLocalListProductIds);\n            if (this.closest(\".wishlist-page-main\")) {\n              this.closest(\".wishlist-list\").remove();\n              const product = document.querySelectorAll(\n                `.wishlist-page-section .product-item__action button-wishlist`\n              );\n              if (product.length < 1) {\n                document\n                  .querySelector(\".wishlist-no-product-js\")\n                  .classList.remove(\"hidden\");\n              }\n            } else {\n              this.actionWhenClicked(allThisProductIds, false);\n            }\n          } else {\n            listProductIds.push(...parseLocalListProductIds);\n            window.location.href = `${window.shopUrl}${window.Shopify.routes.root}pages/wishlist`;\n          }\n        } else {\n          listProductIds.push(...parseLocalListProductIds);\n        }\n      }\n    } else {\n      // wishlist localstorage not exists ==> create new local storage\n      listProductIds.push(this.productId);\n      this.actionWhenClicked(allThisProductIds, true);\n    }\n    const stringifyListProductIds = JSON.stringify(listProductIds);\n    localStorage.setItem(\"glozin__wishlist-items\", stringifyListProductIds);\n    wishlistHeader.init();\n  }\n}\ncustomElements.define(\"button-wishlist\", ButtonWishlist);\n\nclass ButtonCompare extends HTMLElement {\n  constructor() {\n    super();\n    this.productId = this.dataset.productId;\n    this.action = this.dataset.action || \"remove\";\n    this.addTooltip = this.dataset.tooltipAdd || \"Compare\";\n    this.removeTooltip = this.dataset.tooltipRemove || \"Remove from compare\";\n    this.redirectTooltip = this.dataset.tooltipRedirect || \"Browse compare\";\n    this.tooltipDiv = this.querySelector(\".tooltip-content\");\n    this.action = this.dataset.action || \"remove\";\n    this.init();\n  }\n\n  init() {\n    this.initializeCompareStatus();\n    this.addEventListener(\"click\", this.onThisClick.bind(this));\n  }\n\n  initializeCompareStatus() {\n    const localListProductIds = localStorage.getItem(\"glozin__compare-items\");\n    if (!localListProductIds) return;\n    const parseLocalListProductIds = JSON.parse(localListProductIds);\n    const isProductIdContained = parseLocalListProductIds.includes(\n      this.productId\n    );\n    if (isProductIdContained) {\n      this.classList.add(\"active\");\n      if (this.tooltipDiv) {\n        if (this.action === \"remove\") {\n          this.tooltipDiv.textContent = this.removeTooltip;\n        } else {\n          this.tooltipDiv.textContent = this.redirectTooltip;\n        }\n      }\n    }\n  }\n\n  actionWhenClicked(allThisProductIds, isAdd) {\n    allThisProductIds.forEach((_this) => {\n      if (isAdd === true) {\n        _this.classList.add(\"active\");\n        const tooltipDiv = _this.querySelector(\".tooltip-content\");\n        if (tooltipDiv) {\n          if (this.action === \"remove\") {\n            tooltipDiv.textContent = this.removeTooltip;\n          } else {\n            tooltipDiv.textContent = this.redirectTooltip;\n          }\n        }\n      } else {\n        const tooltipDiv = _this.querySelector(\".tooltip-content\");\n        if (tooltipDiv) {\n          tooltipDiv.textContent = this.addTooltip;\n        }\n        _this.classList.remove(\"active\");\n      }\n    });\n  }\n\n  onThisClick() {\n    const localListProductIds = localStorage.getItem(\"glozin__compare-items\");\n    const allThisProductIds = document.querySelectorAll(\n      `button-compare[data-product-id=\"${this.productId}\"]`\n    );\n    let listProductIds = [];\n    if (!this.productId) return;\n    if (localListProductIds && allThisProductIds.length > 0) {\n      // compare localstorage exists\n      const parseLocalListProductIds = JSON.parse(localListProductIds);\n      let isProductIdContained = parseLocalListProductIds.includes(\n        this.productId\n      );\n      if (!isProductIdContained) {\n        // case item is not in compare\n        listProductIds.push(...parseLocalListProductIds, this.productId);\n        this.actionWhenClicked(allThisProductIds, true);\n      } else {\n        // case item is in compare\n        if (this.action) {\n          if (this.action === \"remove\") {\n            const indexOfProductId = parseLocalListProductIds.indexOf(\n              this.productId\n            );\n            parseLocalListProductIds.splice(indexOfProductId, 1);\n            listProductIds.push(...parseLocalListProductIds);\n            this.actionWhenClicked(allThisProductIds, false);\n          } else {\n            listProductIds.push(...parseLocalListProductIds);\n            window.location.href = `${window.shopUrl}${window.Shopify.routes.root}pages/compare`;\n          }\n        } else {\n          listProductIds.push(...parseLocalListProductIds);\n        }\n      }\n    } else {\n      // compare localstorage not exists ==> create new local storage\n      listProductIds.push(this.productId);\n      this.actionWhenClicked(allThisProductIds, true);\n    }\n    const stringifyListProductIds = JSON.stringify(listProductIds);\n    localStorage.setItem(\"glozin__compare-items\", stringifyListProductIds);\n  }\n}\ncustomElements.define(\"button-compare\", ButtonCompare);\n\nclass SwatchFunctions extends SwatchInit {\n  constructor() {\n    super();\n    this.init();\n  }\n\n  showColorSwatch() {\n    const _this = this;\n    if (_this.show_color_swatch != null) {\n      _this.show_color_swatch.addEventListener(\"click\", (e) => {\n        e.currentTarget.classList.add(\"hidden\");\n        _this\n          .querySelectorAll(\".product__color-swatches--js.hidden\")\n          .forEach((btn) => {\n            btn.classList.remove(\"hidden\");\n\n            setTimeout(() => {\n              console.log(btn);\n              btn.classList.remove(\"opacity-0\");\n            }, 100);\n          });\n      });\n    }\n  }\n\n  init() {\n    this.querySelectorAll(\".product__color-swatches--js\").forEach((btn) => {\n      this.checkSwatches(btn);\n    });\n    this.initAction();\n  }\n\n  initAction() {\n    this.addEventListener(\"change\", this.onVariantChange);\n  }\n\n  onVariantChange(e) {\n    this.productTarget = this.closest(\".product__item-js\");\n    const target = e.target;\n    const variantQtyData = JSON.parse(\n      this.productTarget.querySelector(\".productVariantsQty\").textContent\n    );\n    this.groupFunctionsInit();\n    if (!this.currentVariant) {\n      this.groupFunctionsUnavailable(target);\n    } else {\n      this.groupFunctionsAvailable(variantQtyData, target);\n    }\n  }\n  groupFunctionsInit() {\n    this.updateOptions();\n    this.updateMasterId();\n    this.updatePickupAvailability();\n    this.updateVariantStatuses();\n    this.updateMediaSticky();\n  }\n  groupFunctionsUnavailable(target) {\n    this.toggleAddButton(true, \"\", true);\n    this.setUnavailable(target);\n  }\n  groupFunctionsAvailable(variantQtyData, target) {\n    this.updateURL();\n    this.updateVariantInput();\n    this.updatePrice(this.productTarget);\n    this.renderProductInfor(this.productTarget, variantQtyData, target);\n    this.updateShareUrl();\n    this.setAvailable();\n  }\n  updatePrice(productTarget) {\n    if (!this.currentVariant) return;\n    if (!productTarget) return;\n    const p = document.getElementById(`price-${this.dataset.section}`);\n    if (p) p.classList.remove(\"visibility-hidden\");\n    const compare_at_price = this.currentVariant.compare_at_price;\n    const price = this.currentVariant.price;\n    const unit_price = this.currentVariant.unit_price;\n    const unit_price_measurement = this.currentVariant.unit_price_measurement;\n    const price_format = Shopify.formatMoney(\n      this.currentVariant.price,\n      themeGlobalVariables.settings.money_format\n    );\n    if (unit_price && unit_price_measurement) {\n      const price_num = Shopify.formatMoney(\n        unit_price,\n        themeGlobalVariables.settings.money_format\n      );\n      const price_unit =\n        unit_price_measurement.reference_value != 1\n          ? unit_price_measurement.reference_value\n          : unit_price_measurement.reference_unit;\n      if (productTarget.querySelector(\".unit-price .number\")) {\n        productTarget.querySelector(\".unit-price .number\").innerHTML =\n          price_num;\n      }\n      if (productTarget.querySelector(\".unit-price .unit\")) {\n        productTarget.querySelector(\".unit-price .unit\").innerHTML = price_unit;\n      }\n    }\n    if (productTarget.querySelector(\".price-regular .price\")) {\n      productTarget.querySelector(\".price-regular .price\").innerHTML =\n        price_format;\n    }\n    if (productTarget.classList.contains(\"video-item__popup\")) {\n      productTarget.querySelector(\n        \".shopable-video__product-information .price-regular .price\"\n      ).innerHTML = price_format;\n    }\n    let bls__price = productTarget.querySelector(\".card-product-price\");\n    if (productTarget.classList.contains(\"video-item__popup\")) {\n      bls__price = productTarget.querySelector(\n        \".shopable-video__product-information .card-product-price\"\n      );\n    }\n    if (bls__price) {\n      if (!bls__price.querySelector(\".compare-price\")) {\n        var ps = document.createElement(\"div\");\n        var sp = document.createElement(\"span\");\n        var cp = document.createElement(\"s\");\n        cp.classList.add(\"price-item\", \"compare-price\");\n        sp.appendChild(cp);\n        ps.appendChild(sp);\n        ps.classList.add(\"price-regular\");\n        bls__price.appendChild(ps);\n      }\n      const cpp = bls__price.querySelector(\".compare-price\");\n\n      if (cpp) {\n        if (compare_at_price && compare_at_price > price) {\n          const compare_format = Shopify.formatMoney(\n            compare_at_price,\n            themeGlobalVariables.settings.money_format\n          );\n          cpp.innerHTML = compare_format;\n          if (bls__price.querySelector(\".price-regular\")) {\n            bls__price\n              .querySelector(\".price-regular\")\n              .classList.add(\"primary-color\");\n          }\n          if (bls__price.querySelector(\".price-regular .price\")) {\n            bls__price\n              .querySelector(\".price-regular .price\")\n              .classList.add(\"price--special\", \"primary-color\");\n          }\n        } else {\n          cpp.innerHTML = \"\";\n          if (bls__price.querySelector(\".price-regular\")) {\n            bls__price\n              .querySelector(\".price-regular\")\n              .classList.remove(\"primary-color\");\n          }\n          if (bls__price.querySelector(\".price-regular .price\")) {\n            bls__price.querySelector(\".price-regular .price\").innerHTML =\n              price_format;\n            bls__price\n              .querySelector(\".price-regular .price\")\n              .classList.remove(\"price--special\", \"primary-color\");\n          }\n        }\n        if (!this.currentVariant.available) {\n          bls__price.classList.add(\"price--sold-out\");\n        }\n      }\n    }\n  }\n  toggleAddButton(disable = true, text, modifyClass = true) {\n    const productForm = document.getElementById(\n      `product-form-${this.dataset.section}`\n    );\n    if (!productForm) return;\n    const addButton = productForm.querySelector('[name=\"add\"]');\n    const addButtonText = productForm.querySelector('[name=\"add\"] > span');\n    if (!addButton) return;\n\n    if (disable) {\n      addButton.setAttribute(\"disabled\", \"disabled\");\n      if (text) addButtonText.textContent = text;\n    } else {\n      addButton.removeAttribute(\"disabled\");\n      addButtonText.textContent = window.variantStrings.addToCart;\n    }\n\n    if (!modifyClass) return;\n  }\n  setUnavailable(target) {\n    const button = document.getElementById(\n      `product-form-${this.dataset.section}`\n    );\n    const addButton = button.querySelector('[name=\"add\"]');\n    const addButtonText = button.querySelector('[name=\"add\"] > span');\n    const price = document.getElementById(`price-${this.dataset.section}`);\n    const inventory = document.getElementById(\n      `Inventory-${this.dataset.section}`\n    );\n    const sku = document.getElementById(`Sku-${this.dataset.section}`);\n    const pricePerItem = document.getElementById(\n      `Price-Per-Item-${this.dataset.section}`\n    );\n    const volumeNote = document.getElementById(\n      `Volume-Note-${this.dataset.section}`\n    );\n    const volumeTable = document.getElementById(\n      `Volume-${this.dataset.section}`\n    );\n    const qtyRules = document.getElementById(\n      `Quantity-Rules-${this.dataset.section}`\n    );\n\n    if (target) {\n      const fieldset = target.closest(\"fieldset\");\n      const val = target.value;\n      const optionSelected = fieldset.querySelector(\".option_value\");\n      optionSelected.textContent = val;\n    }\n    if (!addButton) return;\n    addButtonText.textContent = window.variantStrings.unavailable;\n    if (price) price.classList.add(\"hidden\");\n    if (inventory) inventory.classList.add(\"hidden\");\n    if (sku) sku.classList.add(\"hidden\");\n    if (pricePerItem) pricePerItem.classList.add(\"hidden\");\n    if (volumeNote) volumeNote.classList.add(\"hidden\");\n    if (volumeTable) volumeTable.classList.add(\"hidden\");\n    if (qtyRules) qtyRules.classList.add(\"hidden\");\n  }\n\n  setAvailable() {\n    const price = document.getElementById(`price-${this.dataset.section}`);\n    const inventory = document.getElementById(\n      `Inventory-${this.dataset.section}`\n    );\n    const sku = document.getElementById(`Sku-${this.dataset.section}`);\n    const pricePerItem = document.getElementById(\n      `Price-Per-Item-${this.dataset.section}`\n    );\n    const volumeNote = document.getElementById(\n      `Volume-Note-${this.dataset.section}`\n    );\n    const volumeTable = document.getElementById(\n      `Volume-${this.dataset.section}`\n    );\n    const qtyRules = document.getElementById(\n      `Quantity-Rules-${this.dataset.section}`\n    );\n\n    if (price && price.classList.contains(\"hidden\"))\n      price.classList.remove(\"hidden\");\n    if (inventory && inventory.classList.contains(\"hidden\"))\n      inventory.classList.remove(\"hidden\");\n    if (sku && sku.classList.contains(\"hidden\")) sku.classList.remove(\"hidden\");\n    if (pricePerItem && pricePerItem.classList.contains(\"hidden\"))\n      pricePerItem.classList.remove(\"hidden\");\n    if (volumeNote && volumeNote.classList.contains(\"hidden\"))\n      volumeNote.classList.remove(\"hidden\");\n    if (volumeTable && volumeTable.classList.contains(\"hidden\"))\n      volumeTable.classList.remove(\"hidden\");\n    if (qtyRules && qtyRules.classList.contains(\"hidden\"))\n      qtyRules.classList.remove(\"hidden\");\n  }\n  updateMedia(variantGroup = false) {\n    if (!this.productTarget) return;\n    const mediaGalleries = this.productTarget.querySelector(\"media-gallery\");\n    const layout = mediaGalleries?.dataset.layout;\n    if (!layout) return;\n    if (layout === \"thumbnail\") {\n      const swiper = mediaGalleries.querySelector(\"slide-with-thumbs\");\n      if (!swiper) return;\n      const slide_items = swiper.querySelectorAll(\n        \".swiper-wrapper-preview .media-gallery__image.swiper-slide\"\n      );\n\n      if (slide_items.length == 0) return;\n\n      if (!this.currentVariant?.featured_media) return;\n      slide_items.forEach((e, index) => {\n        const mediaId = e.getAttribute(\"data-media-id\");\n        if (\n          mediaId &&\n          mediaId ===\n            `${this.dataset.section}-${this.currentVariant.featured_media.id}`\n        ) {\n          const position = e.getAttribute(\"data-position\");\n          swiper.functionGoto(!variantGroup ? position - 1 : index);\n        }\n      });\n    } else {\n      // mediaGalleries.setActiveMedia(\n      //   `${this.dataset.section}-${this.currentVariant.featured_media.id}`,\n      //   true\n      // );\n      const mediaElement = document.querySelector(\n        `[data-media-id=\"${this.dataset.section}-${this.currentVariant.featured_media.id}\"]`\n      );\n      if (mediaElement) {\n        mediaElement.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n      }\n    }\n  }\n  updateMediaSticky() {\n    if (!this.productTarget) return;\n    if (!this.currentVariant) return;\n    const stickyAddCart = this.productTarget.querySelector(\"sticky-add-cart\");\n    if (!stickyAddCart) return;\n    if (!this.currentVariant.featured_media) return;\n    const imgQuery = stickyAddCart.querySelector(\"img\");\n    imgQuery.src = this.currentVariant.featured_media.preview_image.src;\n    imgQuery.removeAttribute(\"srcset\");\n    imgQuery.removeAttribute(\"sizes\");\n  }\n  renderProductInfor(productTarget, variantQtyData, target) {\n    if (!this.currentVariant) return;\n    if (!productTarget) return;\n    let qty = 0;\n    let percent = 0;\n    let sale = false;\n    let soldOut = false;\n    let pre_order = false;\n    let av = this.currentVariant.available;\n    let sku = this.currentVariant.sku;\n    let im = this.currentVariant.inventory_management;\n    const compare_at_price = this.currentVariant.compare_at_price;\n    const price = this.currentVariant.price;\n    let avaiable = productTarget.querySelector(\".available-value\");\n    let sku_area = productTarget.querySelector(\".product__sku\");\n    // Update option labels\n    const productDetailPicker = productTarget.querySelector(\n      \".product-detail__variant-picker\"\n    );\n    if (productDetailPicker) {\n      const type = productDetailPicker.dataset.type || \"swatches\";\n\n      const updateOptionValues = (selector) => {\n        const optionElements = productTarget.querySelectorAll(selector);\n        optionElements.forEach((element, index) => {\n          const optionValue = this.currentVariant[`option${index + 1}`];\n          if (optionValue) {\n            element.innerHTML = optionValue;\n          }\n        });\n      };\n\n      if (type === \"swatches\") {\n        updateOptionValues(\".option_value\");\n      } else {\n        updateOptionValues(\".option_drop_value .option_value\");\n        updateOptionValues(\"swatch-dropdown-select-value .option_value\");\n\n        const closestSwatchDropdown = target.closest(\"swatch-dropdown\");\n        if (\n          closestSwatchDropdown &&\n          closestSwatchDropdown.classList.contains(\"active\")\n        ) {\n          closestSwatchDropdown.classList.remove(\"active\");\n        }\n      }\n    }\n\n    if (sku_area) sku_area.innerHTML = sku ? sku : \"N/A\";\n    variantQtyData.find((variantQty) => {\n      if (variantQty.id === this.currentVariant.id) {\n        qty = variantQty.qty;\n      }\n    });\n\n    const countdown = document.querySelector(\"stock-countdown\");\n    if (countdown) {\n      const itemsLeft = countdown.dataset.itemsLeft;\n      const message = countdown.dataset.message;\n      if (itemsLeft >= qty && message && qty >= 1) {\n        countdown.classList.add(\"block\");\n        countdown.classList.remove(\"hidden\");\n        const qt = countdown.querySelector(\"span.count\");\n        const progressbar = countdown.querySelector(\".progressbar-stock\");\n        let widthProgress;\n        if ((qty / itemsLeft) * 100 > 100) {\n          widthProgress = 100;\n        } else {\n          widthProgress = (qty / itemsLeft) * 100;\n        }\n        progressbar.style.setProperty(\"--percent\", `100%`);\n\n        setTimeout(() => {\n          progressbar.style.setProperty(\"--percent\", `${widthProgress}%`);\n        }, 850);\n        if (qt) {\n          qt.innerHTML = qty;\n        }\n      } else {\n        countdown.classList.remove(\"block\");\n        countdown.classList.add(\"hidden\");\n      }\n    }\n\n    const typePercent =\n      productTarget.querySelector(\".product__badges\")?.dataset.saleBadgeType;\n    if (compare_at_price && compare_at_price > price && typePercent) {\n      sale = true;\n      if (typePercent === \"percent\") {\n        percent = ((compare_at_price - price) / compare_at_price) * 100;\n      } else if (typePercent === \"price\") {\n        percent = compare_at_price - price;\n      }\n    }\n    if (im === null) {\n      soldOut = false;\n      pre_order = false;\n      if (avaiable) {\n        avaiable.innerHTML = window.variantStrings.inStock;\n      }\n    } else {\n      if (av) {\n        if (qty < 1) {\n          pre_order = true;\n          if (avaiable) {\n            avaiable.innerHTML = window.variantStrings.preOrder;\n          }\n        } else {\n          soldOut = false;\n          pre_order = false;\n          if (avaiable) {\n            avaiable.innerHTML = window.variantStrings.inStock;\n          }\n          if (avaiable) {\n            avaiable.innerHTML = window.variantStrings.inStock;\n          }\n        }\n      } else {\n        soldOut = true;\n        if (avaiable) {\n          avaiable.innerHTML = window.variantStrings.outStock;\n        }\n      }\n    }\n    this.renderLabel(sale, pre_order, soldOut, percent, productTarget);\n    this.renderBtnStatus(productTarget, im, av, qty);\n  }\n  renderLabel(sale, pre_order, soldOut, percent, productTarget) {\n    const label = productTarget.querySelector(\".product__badges\");\n    const sale_badge = productTarget.querySelector(\".sale_badge\");\n    const productBadgesScrolling = productTarget.querySelector(\n      \".product__badges-sale-scrolling\"\n    );\n    if (sale || pre_order || soldOut) {\n      if (!label) {\n        var element = document.createElement(\"div\");\n        element.classList.add(\n          \"product__badges\",\n          \"fs-small\",\n          \"flex\",\n          \"flex-wrap\",\n          \"gap-5\",\n          \"uppercase\"\n        );\n        if (sale_badge) {\n          sale_badge.appendChild(element);\n        }\n      }\n    }\n\n    if (label) {\n      const saleColor = label.dataset.saleColor;\n      const soldOutColor = label.dataset.soldOutColor;\n      const preOrderColor = label.dataset.preOrderColor;\n      const saleBg = label.dataset.saleBg;\n      const soldOutBg = label.dataset.soldOutBg;\n      const preOrderBg = label.dataset.preOrderBg;\n      const show_sale = label?.dataset.showSale === \"true\";\n      const show_pre_order = label?.dataset.showPreorder === \"true\";\n      const show_sold_out = label?.dataset.showSoldOut === \"true\";\n      const saleBadgeType = label?.dataset.saleBadgeType;\n      const prd = Shopify.formatMoney(\n        percent,\n        themeGlobalVariables.settings.money_format\n      );\n      const dsale = label.querySelector(\".product__badges-sale\");\n      const dsoldout = label.querySelector(\".product__badges-sold-out\");\n      const dpreorder = label.querySelector(\".product__badges-pre-order\");\n      if (sale && show_sale) {\n        if (!dsale) {\n          var elementsale = document.createElement(\"div\");\n          elementsale.classList.add(\n            \"product__badges-sale\",\n            \"product__badges-inner\",\n            \"py-8\",\n            \"px-15\",\n            \"align-self-start\",\n            \"sale\",\n            \"inline-flex\",\n            \"content-center\",\n            \"subheading_weight\",\n            \"btn-rounded\",\n            \"lh-normal\",\n            \"text-center\",\n            `${\n              saleBadgeType === \"percent\"\n                ? \"product__badges-type-percent\"\n                : \"badges\"\n            }`\n          );\n          elementsale.style.setProperty(\"--badges-color\", saleColor);\n          elementsale.style.setProperty(\"--badges-bg\", saleBg);\n          if (saleBadgeType === \"price\") {\n            elementsale.innerHTML = `${\n              window.variantStrings.save ? window.variantStrings.save : \"Save\"\n            } ${prd}`;\n          } else if (saleBadgeType === \"percent\") {\n            elementsale.innerHTML = -percent.toFixed(0) + \"%\";\n          } else {\n            elementsale.innerHTML = `${\n              window.variantStrings.sale ? window.variantStrings.sale : \"Sale\"\n            }`;\n          }\n          if (dsoldout) {\n            label.insertBefore(elementsale, dsoldout);\n          } else if (dpreorder) {\n            label.insertBefore(elementsale, dpreorder);\n          } else {\n            label.appendChild(elementsale);\n          }\n        } else {\n          if (saleBadgeType === \"price\") {\n            dsale.innerHTML = `${\n              window.variantStrings.save ? window.variantStrings.save : \"Save\"\n            } ${prd}`;\n          } else if (saleBadgeType === \"percent\") {\n            dsale.innerHTML = -percent.toFixed(0) + \"%\";\n          } else {\n            dsale.innerHTML = `${\n              window.variantStrings.sale ? window.variantStrings.sale : \"Sale\"\n            }`;\n          }\n        }\n      } else {\n        dsale?.remove();\n      }\n      if (pre_order && show_pre_order) {\n        if (!dpreorder) {\n          var elementpo = document.createElement(\"div\");\n          elementpo.classList.add(\n            \"product__badges-pre-order\",\n            \"product__badges-inner\",\n            \"py-8\",\n            \"px-15\",\n            \"align-self-start\",\n            \"pre-order\",\n            \"inline-flex\",\n            \"content-center\",\n            \"subheading_weight\",\n            \"btn-rounded\",\n            \"lh-normal\",\n            \"text-center\"\n          );\n          elementpo.style.setProperty(\"--badges-color\", preOrderColor);\n          elementpo.style.setProperty(\"--badges-bg\", preOrderBg);\n          elementpo.innerHTML = window.variantStrings.preOrder\n            ? window.variantStrings.preOrder\n            : \"Pre-order\";\n          label.appendChild(elementpo);\n        } else {\n          dpreorder.innerHTML = window.variantStrings.preOrder\n            ? window.variantStrings.preOrder\n            : \"Pre-order\";\n        }\n      } else {\n        dpreorder?.remove();\n      }\n      if (soldOut && show_sold_out) {\n        if (!dsoldout) {\n          var elementso = document.createElement(\"div\");\n          elementso.classList.add(\n            \"product__badges-sold-out\",\n            \"product__badges-inner\",\n            \"py-8\",\n            \"px-15\",\n            \"align-self-start\",\n            \"sold-out\",\n            \"inline-flex\",\n            \"content-center\",\n            \"subheading_weight\",\n            \"btn-rounded\",\n            \"lh-normal\",\n            \"text-center\"\n          );\n          elementso.style.setProperty(\"--badges-color\", soldOutColor);\n          elementso.style.setProperty(\"--badges-bg\", soldOutBg);\n          elementso.innerHTML = window.variantStrings.soldOut\n            ? window.variantStrings.soldOut\n            : \"Sold out\";\n          label.appendChild(elementso);\n        } else {\n          dsoldout.innerHTML = window.variantStrings.soldOut\n            ? window.variantStrings.soldOut\n            : \"Sold out\";\n        }\n      } else {\n        dsoldout?.remove();\n      }\n    }\n\n    if (productBadgesScrolling && sale) {\n      const dataBadgesScrolling =\n        productBadgesScrolling?.dataset.textProductScrolling;\n      const allProductBadgesScrolling = productBadgesScrolling.querySelectorAll(\n        \".content-badges-scrolling\"\n      );\n      allProductBadgesScrolling.forEach((content) => {\n        content.innerText = dataBadgesScrolling.replace(\n          \"[percent_sale]\",\n          percent.toFixed(0) + \"%\"\n        );\n      });\n    }\n  }\n  renderBtnStatus(productTarget, im, av, qty) {\n    if (!productTarget) return;\n    let btns_add_cart = productTarget.querySelectorAll(\n      \".product_submit_button\"\n    );\n    btns_add_cart.forEach((btn_add_cart) => {\n      if (btn_add_cart.querySelector(\".btn-label\")) {\n        if (im === null) {\n          btn_add_cart.querySelector(\".btn-label\").innerHTML =\n            window.variantStrings.addToCart;\n          btn_add_cart.disabled = false;\n        } else {\n          if (av) {\n            if (qty < 1) {\n              btn_add_cart.querySelector(\".btn-label\").innerHTML =\n                window.variantStrings.preOrder;\n              btn_add_cart.disabled = false;\n            } else {\n              btn_add_cart.querySelector(\".btn-label\").innerHTML =\n                window.variantStrings.addToCart;\n              btn_add_cart.disabled = false;\n            }\n          } else {\n            btn_add_cart.querySelector(\".btn-label\").innerHTML =\n              window.variantStrings.soldOut;\n            btn_add_cart.disabled = true;\n          }\n        }\n      }\n    });\n  }\n  updateVariantStatuses() {\n    const selectedOptionOneVariants = this.variantData.filter(\n      (variant) => this.querySelector(\":checked\").value === variant.option1\n    );\n    const inputWrappers = [...this.querySelectorAll(\".product-form__input\")];\n    inputWrappers.forEach((option, index) => {\n      if (index === 0) return;\n      const optionInputs = [\n        ...option.querySelectorAll('input[type=\"radio\"], option'),\n      ];\n      const previousOptionSelected =\n        inputWrappers[index - 1].querySelector(\":checked\").value;\n      const availableOptionInputsValue = selectedOptionOneVariants\n        .filter(\n          (variant) =>\n            variant.available &&\n            variant[`option${index}`] === previousOptionSelected\n        )\n        .map((variantOption) => variantOption[`option${index + 1}`]);\n      this.setInputAvailability(optionInputs, availableOptionInputsValue);\n    });\n  }\n  setInputAvailability(elementList, availableValuesList) {\n    elementList.forEach((element) => {\n      const value = element.getAttribute(\"value\");\n      const availableElement = availableValuesList.includes(value);\n\n      if (element.tagName === \"INPUT\") {\n        element.classList.toggle(\"option-disabled\", !availableElement);\n      } else if (element.tagName === \"OPTION\") {\n        element.innerText = availableElement\n          ? value\n          : window.variantStrings.unavailable_with_option.replace(\n              \"[value]\",\n              value\n            );\n      }\n    });\n  }\n  updateOptions() {\n    this.options = [];\n    Array.from(this.querySelectorAll(\"select, fieldset\"), (element) => {\n      if (element.tagName === \"SELECT\") {\n        let array = element.value.split(\" / \");\n        array.forEach((item) => this.options.push(item));\n      }\n      if (element.tagName === \"FIELDSET\") {\n        this.options.push(\n          Array.from(element.querySelectorAll(\"input\")).find(\n            (radio) => radio.checked\n          )?.value\n        );\n      }\n    });\n  }\n  updateMasterId() {\n    this.currentVariant = this.getVariantData().find((variant) => {\n      return !variant.options\n        .map((option, index) => {\n          return this.options[index] === option;\n        })\n        .includes(false);\n    });\n  }\n  updateURL() {\n    const updateUrl = this.productTarget?.dataset.updateUrl == \"true\";\n    if (!this.currentVariant || !updateUrl) return;\n    window.history.replaceState(\n      {},\n      \"\",\n      `${this.dataset.url}?variant=${this.currentVariant.id}`\n    );\n  }\n  updateVariantInput() {\n    const productForms = document.querySelectorAll(\n      `#product-form-${this.dataset.section}, #sticky-addcart-form-${this.dataset.section}`\n    );\n    productForms.forEach((productForm) => {\n      const input = productForm.querySelector('input[name=\"id\"]');\n      input.value = this.currentVariant.id;\n      input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    });\n  }\n  updateShareUrl() {\n    const copyButton = document.getElementById(`Share-${this.dataset.section}`);\n    if (!copyButton || !copyButton.updateUrl) return;\n    copyButton.updateUrl(\n      `${window.shopUrl}${this.dataset.url}?variant=${this.currentVariant.id}`\n    );\n    const copyParent = copyButton.closest(\".share__content\");\n    if (!copyParent) return;\n    const copySpan = copyParent.querySelector(\".copy__url\");\n    if (!copySpan) return;\n    copySpan.innerHTML = `${window.shopUrl}${this.dataset.url}?variant=${this.currentVariant.id}`;\n  }\n  updatePickupAvailability() {\n    const pickUpAvailability = document.querySelector(\"pickup-availability\");\n    if (!pickUpAvailability) return;\n\n    if (this.currentVariant && this.currentVariant.available) {\n      pickUpAvailability.fetchAvailability(this.currentVariant.id);\n    } else {\n      pickUpAvailability.removeAttribute(\"available\");\n      pickUpAvailability.innerHTML = \"\";\n    }\n  }\n  getVariantData() {\n    this.variantData =\n      this.variantData ||\n      JSON.parse(this.querySelector('[type=\"application/json\"]').textContent);\n    return this.variantData;\n  }\n}\n//Function click dropdown variant\nclass SwatchDropdownSelectValue extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener(\"click\", this.activeFilterSort.bind(this), false);\n  }\n\n  activeFilterSort() {\n    // Remove active class from all elements except the clicked one\n    document.querySelectorAll(\".select-custom.active\").forEach((element) => {\n      if (element !== this.closest(\".select-custom\")) {\n        element.classList.remove(\"active\");\n      }\n    });\n\n    // Toggle active class on the clicked element\n    if (this.closest(\".select-custom\").classList.contains(\"active\")) {\n      this.closest(\".select-custom\").classList.remove(\"active\");\n    } else {\n      this.closest(\".select-custom\").classList.add(\"active\");\n    }\n  }\n}\ncustomElements.define(\n  \"swatch-dropdown-select-value\",\n  SwatchDropdownSelectValue\n);\n\n// Function to remove active class when clicking outside\nfunction handleClickOutside(event) {\n  if (!event.target.closest(\".select-custom\")) {\n    document.querySelectorAll(\".select-custom.active\").forEach((element) => {\n      element.classList.remove(\"active\");\n    });\n  }\n}\n\n// Add event listener to the document\ndocument.addEventListener(\"click\", handleClickOutside);\n// End function click dropdown variant\n\nclass VariantRadios extends SwatchFunctions {\n  constructor() {\n    super();\n    this.show_color_swatch = this.querySelector(\".show_color_swatch\");\n    this.showColorSwatch();\n  }\n\n  init() {\n    this.querySelectorAll(\".product__color-swatches--js\").forEach((btn) => {\n      this.checkSwatches(btn);\n      this.variantHover(btn);\n      btn.addEventListener(\"click\", this.onVariantChange.bind(this), false);\n    });\n  }\n\n  variantHover(e) {\n    const productTarget = e.closest(\".product-item\");\n    if (!productTarget) return;\n\n    const swiperElement = e.closest(\".swiper\");\n    if (!swiperElement) return;\n\n    let timeout;\n\n    const handleMouseOut = () => {\n      swiperElement.classList.remove(\"show-tooltip\");\n    };\n\n    const handleMouseOver = () => {\n      swiperElement.classList.add(\"show-tooltip\");\n    };\n\n    e.addEventListener(\"mouseout\", handleMouseOut, false);\n    e.addEventListener(\"mouseover\", handleMouseOver, false);\n    e.addEventListener(\"mouseenter\", handleMouseOver, false);\n    e.addEventListener(\"mouseleave\", handleMouseOut, false);\n  }\n  onVariantChange(e) {\n    e.preventDefault();\n    const target = e.currentTarget;\n    this.productTarget = this.closest(\".product__item-js\");\n    this.position_swatch = target.dataset.position;\n    const variantQtyData = JSON.parse(\n      this.productTarget.querySelector(\".productItemVariantsQty\").textContent\n    );\n    if (!target.classList.contains(\"active\")) {\n      const activeSwatches = target\n        .closest(\".product__color-swatches\")\n        .querySelectorAll(\".product__color-swatches--js\");\n      activeSwatches.forEach((el) => {\n        el.classList.remove(\"active\");\n      });\n      target.classList.toggle(\"active\");\n      this.groupFunctionsInit(this.getVariantData());\n      if (this.currentVariant) {\n        this.groupFunctionsAvailable(variantQtyData);\n      }\n    }\n  }\n  groupFunctionsInit(variantData) {\n    this.updateOptions();\n    this.updateMasterId(variantData);\n  }\n  groupFunctionsAvailable(variantQtyData) {\n    this.updatePrice();\n    this.updateMedia();\n    this.renderProductInfor(variantQtyData);\n  }\n  updatePrice() {\n    if (!this.currentVariant) return;\n    if (!this.productTarget) return;\n    const p = document.getElementById(`price-${this.dataset.section}`);\n    if (p) p.classList.remove(\"visibility-hidden\");\n    const compare_at_price = this.currentVariant.compare_at_price;\n    const price = this.currentVariant.price;\n    const unit_price = this.currentVariant.unit_price;\n    const unit_price_measurement = this.currentVariant.unit_price_measurement;\n    const price_format = Shopify.formatMoney(\n      this.currentVariant.price,\n      themeGlobalVariables.settings.money_format\n    );\n    if (unit_price && unit_price_measurement) {\n      const price_num = Shopify.formatMoney(\n        unit_price,\n        themeGlobalVariables.settings.money_format\n      );\n      const price_unit =\n        unit_price_measurement.reference_value != 1\n          ? unit_price_measurement.reference_value\n          : unit_price_measurement.reference_unit;\n      if (this.productTarget.querySelector(\".unit-price .number\")) {\n        this.productTarget.querySelector(\".unit-price .number\").innerHTML =\n          price_num;\n      }\n      if (this.productTarget.querySelector(\".unit-price .unit\")) {\n        this.productTarget.querySelector(\".unit-price .unit\").innerHTML =\n          price_unit;\n      }\n    }\n    if (this.productTarget.querySelector(\".price-regular .price\")) {\n      this.productTarget.querySelector(\".price-regular .price\").innerHTML =\n        price_format;\n    }\n    const bls__price = this.productTarget.querySelector(\".card-product-price\");\n    if (bls__price) {\n      if (!bls__price.querySelector(\".compare-price\")) {\n        var ps = document.createElement(\"div\");\n        var sp = document.createElement(\"span\");\n        var cp = document.createElement(\"s\");\n        cp.classList.add(\"price-item\", \"dark-gray\", \"compare-price\");\n        sp.appendChild(cp);\n        ps.appendChild(sp);\n        ps.classList.add(\"price-sale\");\n        if (this.productTarget.querySelector(\".card-product-price\")) {\n          this.productTarget\n            .querySelector(\".card-product-price\")\n            .appendChild(ps);\n        }\n      }\n      const cpp = bls__price.querySelector(\".compare-price\");\n      if (cpp) {\n        if (compare_at_price && compare_at_price > price) {\n          const compare_format = Shopify.formatMoney(\n            compare_at_price,\n            themeGlobalVariables.settings.money_format\n          );\n          cpp.innerHTML = compare_format;\n          if (bls__price.querySelector(\".price-regular\")) {\n            bls__price\n              .querySelector(\".price-regular\")\n              .classList.add(\"primary-color\");\n          }\n          if (bls__price.querySelector(\".price-regular .price\")) {\n            bls__price\n              .querySelector(\".price-regular .price\")\n              .classList.add(\"price--special\");\n          }\n        } else {\n          cpp.innerHTML = \"\";\n          if (bls__price.querySelector(\".price-regular\")) {\n            bls__price\n              .querySelector(\".price-regular\")\n              .classList.remove(\"primary-color\");\n          }\n          if (bls__price.querySelector(\".price-regular .price\")) {\n            bls__price\n              .querySelector(\".price-regular .price\")\n              .classList.remove(\"price--special\");\n            bls__price.querySelector(\".price-regular .price\").innerHTML =\n              price_format;\n          }\n        }\n        if (!this.currentVariant.available) {\n          bls__price.classList.add(\"price--sold-out\");\n        }\n      }\n    }\n  }\n  renderProductInfor(variantQtyData) {\n    if (!this.currentVariant) return;\n    if (!this.productTarget) return;\n    let qty = 0;\n    let percent = 0;\n    let sale = false;\n    let soldOut = false;\n    let pre_order = false;\n    let av = false;\n    let im = false;\n    const compare_at_price = this.currentVariant.compare_at_price;\n    const price = this.currentVariant.price;\n    const productTarget = this.productTarget;\n    const productBadgesScrolling = productTarget.querySelector(\n      \".product__badges-sale-scrolling\"\n    );\n    const typePercent = productTarget.querySelector(\n      \".product__badges-type-percent\"\n    );\n    const vqd = variantQtyData.reduce((acc, item) => {\n      const existingItem = acc.find((i) => i.option === item.option);\n      if (existingItem) {\n        existingItem.qty += item.qty;\n        if (item.available === true) {\n          existingItem.available = true;\n        }\n        if (item.mamagement === \"\") {\n          existingItem.mamagement = \"\";\n        }\n      } else {\n        acc.push(item);\n      }\n      return acc;\n    }, []);\n    vqd.find((variantQty) => {\n      if (variantQty.option === this.currentVariant.option1) {\n        qty = variantQty.qty;\n        av = variantQty.available;\n        im = variantQty.mamagement;\n      }\n    });\n    if (compare_at_price && compare_at_price > price) {\n      sale = true;\n      if (productBadgesScrolling || typePercent) {\n        percent = ((compare_at_price - price) / compare_at_price) * 100;\n      } else {\n        percent = compare_at_price - price;\n      }\n    }\n    if (im === \"\") {\n      soldOut = false;\n      pre_order = false;\n    } else {\n      if (av && qty < 1) {\n        pre_order = true;\n      } else if (!av) {\n        soldOut = true;\n      }\n    }\n    this.renderLabel(sale, pre_order, soldOut, percent, this.productTarget);\n  }\n  updateMasterId(variantData) {\n    return (this.currentVariant = variantData.find((variant) => {\n      return !variant.options\n        .map((option, index) => {\n          return this.options[index] === option;\n        })\n        .includes(false);\n    }));\n  }\n  updateOptions() {\n    this.options = Array.from(\n      this.productTarget.querySelectorAll(\n        \".product__color-swatches--js.active\"\n      ),\n      (select) => select.getAttribute(\"data-value\")\n    );\n\n    this.variantData.find((variant) => {\n      if (this.options.length == 1) {\n        const variantOptions = {\n          1: variant.option1,\n          2: variant.option2,\n          3: variant.option3,\n        };\n        if (variantOptions[this.position_swatch] === this.options[0]) {\n          this.options = variant.options;\n        }\n      }\n    });\n  }\n  async updateMedia() {\n    if (!this.currentVariant) return;\n    if (\n      !this.productTarget\n        .querySelector(\".product__media img\")\n        .classList.contains(\"hidden\")\n    ) {\n      const productItem = this.productTarget\n        .querySelector(\".product__media img\")\n        .closest(\".product-item\");\n      if (\n        productItem.querySelector(\"video\") ||\n        productItem.querySelector(\"iframe\")\n      ) {\n        this.productTarget\n          .querySelector(\".product__media img\")\n          .classList.add(\"hidden\");\n        productItem.querySelector(\"video\")?.classList.remove(\"hidden\");\n        productItem.querySelector(\"iframe\")?.classList.remove(\"hidden\");\n      }\n    }\n    if (!this.currentVariant.featured_media) return;\n    if (this.productTarget.querySelector(\".product__media img\")) {\n      this.productTarget\n        .querySelector(\".product__media img\")\n        .removeAttribute(\"srcset\");\n    }\n    if (\n      this.productTarget\n        .querySelector(\".product__media img\")\n        .classList.contains(\"hidden\")\n    ) {\n      this.productTarget\n        .querySelector(\".product__media img\")\n        .classList.remove(\"hidden\");\n      const productItem = this.productTarget\n        .querySelector(\".product__media img\")\n        .closest(\".product-item\");\n      if (\n        productItem.querySelector(\"video\") ||\n        productItem.querySelector(\"iframe\")\n      ) {\n        productItem.querySelector(\"video\")?.classList.add(\"hidden\");\n        productItem.querySelector(\"iframe\")?.classList.add(\"hidden\");\n      }\n    }\n    if (this.productTarget.querySelector(\".product__media img\")) {\n      await Motion.animate(\n        this.productTarget.querySelector(\".product__media img\"),\n        { opacity: [1, 0] },\n        { duration: 0.1, easing: \"ease-in\" }\n      );\n      this.productTarget\n        .querySelector(\".product__media img\")\n        .setAttribute(\n          \"src\",\n          this.currentVariant.featured_media.preview_image.src\n        );\n      await new Promise((resolve) => {\n        this.productTarget.querySelector(\".product__media img\").onload = () => {\n          resolve();\n        };\n      });\n      Motion.animate(\n        this.productTarget.querySelector(\".product__media img\"),\n        { opacity: [0, 1] },\n        { duration: 0.1, easing: \"ease-in\" }\n      );\n    }\n  }\n}\ncustomElements.define(\"variant-radios\", VariantRadios);\n\nclass VariantRadiosDetail extends SwatchFunctions {\n  constructor() {\n    super();\n  }\n  groupFunctionsAvailable(variantQtyData, target) {\n    this.updateURL();\n    this.updateVariantInput();\n    this.updatePrice(this.productTarget);\n    this.renderProductInfor(this.productTarget, variantQtyData, target);\n    this.updateMedia();\n    this.updateShareUrl();\n    this.mapStickyDropdown();\n    this.setAvailable();\n  }\n  mapStickyDropdown() {\n    if (!this.currentVariant || !this.productTarget) return;\n\n    const stickyAddCart = this.productTarget.querySelector(\"sticky-add-cart\");\n    if (!stickyAddCart) return;\n\n    const select = stickyAddCart.querySelector(\"select\");\n    const detailRadio = this.productTarget.querySelector(\n      \"variant-radios-detail, variant-group-detail\"\n    );\n    if (!select && detailRadio) return;\n\n    for (let i = 0; i < select.options.length; i++) {\n      if (select.options[i].value === this.currentVariant.title) {\n        select.options[i].selected = true;\n\n        detailRadio.querySelectorAll(\"fieldset\").forEach((fieldset, index) => {\n          fieldset.querySelectorAll(\"input\").forEach((input) => {\n            input.removeAttribute(\"checked\");\n            if (input.value === this.currentVariant[`option${index + 1}`]) {\n              input.checked = true;\n            }\n          });\n        });\n        break;\n      }\n    }\n  }\n}\ncustomElements.define(\"variant-radios-detail\", VariantRadiosDetail);\n\nclass VariantRadiosSingle extends SwatchFunctions {\n  constructor() {\n    super();\n  }\n  groupFunctionsAvailable(variantQtyData) {\n    this.updateVariantInput();\n    this.updatePrice(this.productTarget);\n    this.renderProductInfor(this.productTarget, variantQtyData);\n    this.updateMedia();\n  }\n}\ncustomElements.define(\"variant-radios-single\", VariantRadiosSingle);\n\nclass VariantGroupDetail extends VariantRadiosDetail {\n  constructor() {\n    super();\n  }\n\n  onVariantChange(e) {\n    this.productTarget = this.closest(\".product__item-js\");\n    const variantQtyData = JSON.parse(\n      this.productTarget.querySelector(\".productVariantsQty\").textContent\n    );\n    this.groupFunctionsInit();\n\n    if (!this.currentVariant) {\n      this.groupFunctionsUnavailable(e.target);\n      this.checkColorGroup(e);\n    } else {\n      this.checkColorGroup(e);\n      this.updateURL();\n      this.updateVariantInput();\n      this.updatePrice(this.productTarget);\n      this.renderProductInfor(this.productTarget, variantQtyData, e.target);\n      this.updateShareUrl();\n      this.mapStickyDropdown();\n      this.setAvailable();\n    }\n  }\n\n  checkColorGroup(e) {\n    const colorString = this.productTarget.dataset.colorTrigger;\n    if (colorString) {\n      const colorArray = colorString.split(\",\");\n      const colorSelector = this.productTarget.querySelector(\n        `[data-value=\"${CSS.escape(e.target.value)}\"]`\n      );\n      const dataName = colorSelector?.dataset.name;\n      const isColorInput = colorArray.includes(\n        dataName ? dataName : e.target.name\n      );\n      if (isColorInput) {\n        const dataValue = colorSelector?.dataset.colorValue;\n        this.updateMediaGroup(dataValue ? dataValue : e.target.value);\n      } else {\n        this.updateMedia();\n      }\n    }\n  }\n\n  updateMediaGroup(altValue) {\n    const productHandle = this.dataset.productHandle;\n    const desktopLayout = this.productTarget.dataset.desktopLayout;\n    const mobileLayout = this.productTarget.dataset.mobileLayout;\n    const zoom = this.productTarget.dataset.zoom;\n    const sectionId = this.productTarget.dataset.section;\n    const zoomAction = this.productTarget.querySelector(\"zoom-action\");\n    const elementFeatureProduct = this.productTarget.dataset.typeElement;\n    if (!productHandle || !sectionId || !desktopLayout) return;\n    if (\n      desktopLayout !== \"grid_1_column\" &&\n      desktopLayout !== \"grid_2_column\" &&\n      desktopLayout !== \"stack\"\n    ) {\n      fetch(`/products/${productHandle}?section_id=media-gallery-slide`)\n        .then((response) => response.text())\n        .then((text) => {\n          const html = parser.parseFromString(text, \"text/html\");\n          if (!html) return;\n          let parentDiv = html.querySelector(\"slide-with-thumbs\");\n          parentDiv.classList.add(desktopLayout);\n          if (desktopLayout === \"thumbnail_left\") {\n            parentDiv.classList.add(\n              \"flex-md\",\n              \"gap-10\",\n              \"overflow-hidden\",\n              \"justify-content-right\"\n            );\n          }\n          parentDiv.dataset.thumbDirection =\n            desktopLayout === \"thumbnail_left\" ? \"vertical\" : \"horizontal\";\n          let parentContainer = parentDiv.querySelector(\n            \".media-main-swiper .swiper-wrapper\"\n          );\n          let wrapperFeatureProduct =\n            this.productTarget.querySelector(\"slide-with-thumbs\");\n          let slidePreviewFeatureProduct = wrapperFeatureProduct.querySelector(\n            \".media-main-swiper .swiper-wrapper\"\n          );\n          if (zoom === \"no_zoom\") {\n            const noZoomItems = html.querySelectorAll(\n              \"div.media-gallery__image[data-pane-container]\"\n            );\n            noZoomItems.forEach((item) => {\n              if (\n                (item.dataset.alt && item.dataset.alt == altValue) ||\n                !this.getAllButtonValue().includes(item.dataset.alt)\n              ) {\n                const mediaDefaultId = item.dataset.media;\n                if (mediaDefaultId) {\n                  item.setAttribute(\n                    \"data-media-id\",\n                    `${sectionId}-${mediaDefaultId}`\n                  );\n                }\n                parentContainer.innerHTML += item.outerHTML;\n              }\n              if (elementFeatureProduct) {\n                slidePreviewFeatureProduct.innerHTML =\n                  parentContainer.innerHTML;\n                wrapperFeatureProduct.updateSlide();\n              }\n            });\n          } else if (zoom !== \"open_lightbox\") {\n            const driftZoomItems = html.querySelectorAll(\n              \"div.media-gallery__image[data-pane-container]\"\n            );\n            driftZoomItems.forEach((item) => {\n              if (\n                (item.dataset.alt && item.dataset.alt == altValue) ||\n                !this.getAllButtonValue().includes(item.dataset.alt)\n              ) {\n                const mediaDefaultId = item.dataset.media;\n                if (mediaDefaultId) {\n                  item.setAttribute(\n                    \"data-media-id\",\n                    `${sectionId}-${mediaDefaultId}`\n                  );\n                }\n                parentDiv.querySelector(\".swiper-wrapper\").innerHTML +=\n                  item.outerHTML;\n              }\n            });\n          } else {\n            const zoomItems = html.querySelectorAll(\"a.media-gallery__image\");\n            zoomItems.forEach((item) => {\n              if (\n                (item.dataset.alt && item.dataset.alt == altValue) ||\n                !this.getAllButtonValue().includes(item.dataset.alt)\n              ) {\n                const mediaDefaultId = item.dataset.media;\n                if (mediaDefaultId) {\n                  item.setAttribute(\n                    \"data-media-id\",\n                    `${sectionId}-${mediaDefaultId}`\n                  );\n                }\n                parentContainer.innerHTML += item.outerHTML;\n              }\n            });\n          }\n          if (desktopLayout !== \"hidden_thumbnail\") {\n            let thumbHtml = html.querySelector(\n              \".media-gallery__append .media-thumb-swiper\"\n            );\n            let thumbHtmlWrapper = thumbHtml.querySelector(\".swiper-wrapper\");\n            let thumbHtmlFeatureProduct = wrapperFeatureProduct.querySelector(\n              \".media-thumb-swiper .swiper-wrapper\"\n            );\n            if (!thumbHtml || !thumbHtmlFeatureProduct) return;\n            if (mobileLayout !== \"show_thumbnails\") {\n              thumbHtml\n                .querySelector(\".thumbnail-slide\")\n                .classList.add(\"thumbnail-slide__mobile--hidden\");\n              parentDiv.innerHTML +=\n                html.querySelector(\".swiper-pagination\").outerHTML;\n            }\n            if (desktopLayout === \"thumbnail_bottom\") {\n              thumbHtml\n                .querySelector(\".thumbnail-slide\")\n                .classList.add(\"mt-10\", \"thumb-bottom\");\n              thumbHtml\n                .querySelector(\".thumbnail-slide\")\n                .setAttribute(\"style\", \"--gap: 15px\");\n            }\n            if (desktopLayout === \"thumbnail_left\") {\n              thumbHtml.classList.add(\"mt-10\");\n              if (\n                thumbHtml\n                  .querySelector(\".thumbnail-slide\")\n                  ?.classList.contains(\"swiper-horizontal\")\n              ) {\n                thumbHtml\n                  .querySelector(\".thumbnail-slide\")\n                  ?.classList.remove(\"swiper-horizontal\");\n                thumbHtml\n                  .querySelector(\".thumbnail-slide\")\n                  ?.classList.add(\"swiper-vertical\");\n              }\n            }\n            const noZoomItems = html.querySelectorAll(\n              \"div.media-gallery__image:not([data-pane-container])\"\n            );\n            noZoomItems.forEach((item) => {\n              if (\n                (item.dataset.alt && item.dataset.alt == altValue) ||\n                !this.getAllButtonValue().includes(item.dataset.alt)\n              ) {\n                const mediaDefaultId = item.dataset.media;\n                if (mediaDefaultId) {\n                  item.setAttribute(\n                    \"data-media-id\",\n                    `${sectionId}-${mediaDefaultId}`\n                  );\n                }\n                thumbHtmlWrapper.innerHTML += item.outerHTML;\n              }\n            });\n            parentDiv.innerHTML += thumbHtml.outerHTML;\n            if (elementFeatureProduct) {\n              thumbHtmlFeatureProduct.innerHTML = thumbHtmlWrapper.innerHTML;\n              wrapperFeatureProduct.updateThumbSlide();\n            }\n          } else {\n            parentDiv.innerHTML +=\n              html.querySelector(\".swiper-pagination\").outerHTML;\n          }\n          if (!zoomAction) return;\n          zoomAction.innerHTML = parentDiv.outerHTML;\n          zoomAction.drift = null;\n        })\n        .finally(() => {\n          this.updateMedia(true);\n          BlsLazyloadImg.init();\n          if (!zoomAction) return;\n          if (zoom !== \"open_lightbox\" && zoom !== \"no_zoom\") {\n            zoomAction.initDrift();\n          }\n          if (zoom === \"open_lightbox\" && zoom !== \"no_zoom\") {\n            zoomAction.initLightBox();\n          }\n        })\n        .catch((e) => {\n          console.error(e);\n        });\n    } else {\n      fetch(`/products/${productHandle}?section_id=media-gallery-grid`)\n        .then((response) => response.text())\n        .then((text) => {\n          const html = parser.parseFromString(text, \"text/html\");\n          if (!html) return;\n          let parentDiv = document.createElement(\"div\");\n          if (desktopLayout === \"stack\") {\n            parentDiv.classList.add(\n              \"stacked\",\n              \"grid\",\n              \"gap-10\",\n              \"grid_scroll\",\n              \"grid-cols\"\n            );\n          }\n          if (\n            desktopLayout === \"grid_1_column\" ||\n            desktopLayout === \"grid_2_column\"\n          ) {\n            parentDiv.classList.add(\"grid-cols\", \"grid\", \"gap\", \"grid_scroll\");\n          }\n          if (\n            desktopLayout === \"stack\" ||\n            desktopLayout === \"grid_1_column\" ||\n            desktopLayout === \"grid_2_column\"\n          ) {\n            parentDiv.id = `GalleryViewer-${sectionId}`;\n          }\n          if (desktopLayout === \"grid_1_column\") {\n            parentDiv.setAttribute(\n              \"style\",\n              \"--col-number: 1;--col-desktop: 1;--col-tablet: 1;--col-gap: 10px;\"\n            );\n          }\n          if (desktopLayout === \"grid_2_column\" || desktopLayout === \"stack\") {\n            if (window.innerWidth > 768) {\n              parentDiv.setAttribute(\n                \"style\",\n                \"--col-number: 2;--col-tablet: 2;--col-gap: 10px;\"\n              );\n            } else {\n              parentDiv.setAttribute(\n                \"style\",\n                \"--col-number: 1.2;--col-tablet: 2;--col-gap: 10px;\"\n              );\n            }\n          }\n          if (zoom === \"no_zoom\") {\n            const noZoomItems = html.querySelectorAll(\n              \"div.media-gallery__image:not([data-pane-container])\"\n            );\n            noZoomItems.forEach((item) => {\n              if (\n                (item.dataset.alt && item.dataset.alt == altValue) ||\n                !this.getAllButtonValue().includes(item.dataset.alt)\n              ) {\n                const mediaDefaultId = item.dataset.media;\n                if (mediaDefaultId) {\n                  item.setAttribute(\n                    \"data-media-id\",\n                    `${sectionId}-${mediaDefaultId}`\n                  );\n                }\n                parentDiv.innerHTML += item.outerHTML;\n              }\n            });\n            if (elementFeatureProduct) {\n              const wrapperGrid = this.productTarget.querySelector(\n                `#GalleryViewer-${sectionId}`\n              );\n              wrapperGrid.innerHTML = parentDiv.innerHTML;\n            }\n          } else if (zoom !== \"open_lightbox\") {\n            const driftZoomItems = html.querySelectorAll(\n              \"div.media-gallery__image[data-pane-container]\"\n            );\n            driftZoomItems.forEach((item) => {\n              if (\n                (item.dataset.alt && item.dataset.alt == altValue) ||\n                !this.getAllButtonValue().includes(item.dataset.alt)\n              ) {\n                const mediaDefaultId = item.dataset.media;\n                if (mediaDefaultId) {\n                  item.setAttribute(\n                    \"data-media-id\",\n                    `${sectionId}-${mediaDefaultId}`\n                  );\n                }\n                parentDiv.innerHTML += item.outerHTML;\n              }\n            });\n          } else {\n            const zoomItems = html.querySelectorAll(\"a.media-gallery__image\");\n            zoomItems.forEach((item) => {\n              if (\n                (item.dataset.alt && item.dataset.alt == altValue) ||\n                !this.getAllButtonValue().includes(item.dataset.alt)\n              ) {\n                const mediaDefaultId = item.dataset.media;\n                if (mediaDefaultId) {\n                  item.setAttribute(\n                    \"data-media-id\",\n                    `${sectionId}-${mediaDefaultId}`\n                  );\n                }\n                parentDiv.innerHTML += item.outerHTML;\n              }\n            });\n          }\n          if (!zoomAction) return;\n          zoomAction.innerHTML = parentDiv.outerHTML;\n          zoomAction.drift = null;\n        })\n        .finally(() => {\n          this.updateMedia(true);\n          BlsLazyloadImg.init();\n          if (!zoomAction) return;\n          if (zoom !== \"open_lightbox\" && zoom !== \"no_zoom\") {\n            zoomAction.initDrift();\n          }\n          if (zoom === \"open_lightbox\" && zoom !== \"no_zoom\") {\n            zoomAction.initLightBox();\n          }\n        })\n        .catch((e) => {\n          console.error(e);\n        });\n    }\n  }\n  getAllButtonValue() {\n    const buttonArray = [];\n    this.querySelectorAll(\n      \".product__color-swatches--js, .product-sticky-js\"\n    ).forEach((btn) => {\n      if (\n        btn.classList.contains(\"product__color-swatches--js\") &&\n        btn.dataset.value\n      ) {\n        buttonArray.push(btn.dataset.value);\n      } else if (\n        btn.classList.contains(\"product-sticky-js\") &&\n        btn.dataset.colorValue\n      ) {\n        buttonArray.push(btn.dataset.colorValue);\n      }\n    });\n    return buttonArray;\n  }\n}\ncustomElements.define(\"variant-group-detail\", VariantGroupDetail);\n\nclass VariantRadiosSticky extends VariantRadiosDetail {\n  constructor() {\n    super();\n  }\n}\ncustomElements.define(\"variant-radios-sticky\", VariantRadiosSticky);\n\nclass VariantGroupSticky extends VariantGroupDetail {\n  constructor() {\n    super();\n  }\n}\ncustomElements.define(\"variant-group-sticky\", VariantGroupSticky);\n\nclass CountdownTimer extends HTMLElement {\n  constructor() {\n    super();\n    this.timeoutMessage = this.dataset.timeoutMessage;\n    this.format = this.dataset.format || \"dd:hh:mm:ss\";\n    this.interval = null;\n    this.init();\n  }\n  init() {\n    const cddl = this.dataset?.endtime;\n\n    const minutesLeft = this.dataset.minutesLeft;\n    const countdownAppend = this.querySelector(\".countdown-inner\");\n    if (countdownAppend) {\n      countdownAppend.innerHTML = this.appendChildHtml(minutesLeft).innerHTML;\n    } else {\n      this.innerHTML = this.appendChildHtml(minutesLeft).innerHTML;\n    }\n\n    if (cddl) {\n      let isoDate = \"\";\n      if (this.isISODate(cddl)) {\n        isoDate = cddl;\n        this.mainFunction(isoDate, minutesLeft);\n      } else {\n        if (this.isValidDateTime(cddl)) {\n          isoDate = new Date(cddl).toISOString();\n          this.mainFunction(isoDate, minutesLeft);\n        } else if (this.isValidDate(cddl)) {\n          const dateParts = cddl.split(\"-\");\n          isoDate =\n            dateParts[2] +\n            \"-\" +\n            dateParts[0].padStart(2, \"0\") +\n            \"-\" +\n            dateParts[1].padStart(2, \"0\") +\n            \"T00:00:00Z\";\n          this.mainFunction(isoDate, minutesLeft);\n        } else {\n          this.mainFunction(isoDate, minutesLeft);\n        }\n      }\n    } else {\n      let isoDate = \"\";\n      this.mainFunction(isoDate, minutesLeft);\n    }\n  }\n\n  mainFunction(isoDate, minutesLeft) {\n    let timeLeft = {};\n    const calculateTimeLeft = (difference) => {\n      let timeLeft = {};\n\n      if (this.format.includes(\"dd\")) {\n        timeLeft.days_timer = Math.floor(difference / (1000 * 60 * 60 * 24));\n      }\n\n      if (this.format.includes(\"hh\")) {\n        if (this.format.includes(\"dd\")) {\n          timeLeft.hours_timer = Math.floor(\n            (difference / (1000 * 60 * 60)) % 24\n          );\n        } else {\n          timeLeft.hours_timer = Math.floor(difference / (1000 * 60 * 60));\n        }\n      }\n\n      if (this.format.includes(\"mm\")) {\n        if (this.format === \"mm:ss\") {\n          timeLeft.minutes_timer = Math.floor(difference / 1000 / 60);\n        } else {\n          timeLeft.minutes_timer = Math.floor((difference / 1000 / 60) % 60);\n        }\n      }\n\n      if (this.format.includes(\"ss\")) {\n        timeLeft.seconds_timer = Math.floor((difference / 1000) % 60);\n      }\n\n      return timeLeft;\n    };\n\n    if (Date.parse(isoDate) || minutesLeft) {\n      let deadline = new Date(isoDate);\n      if (minutesLeft) {\n        deadline = new Date(Date.now() + parseInt(minutesLeft) * 60000);\n      }\n      const updateCountdown = () => {\n        const now = new Date();\n        const difference = deadline - now;\n        if (difference > 0) {\n          timeLeft = calculateTimeLeft(difference);\n        } else {\n          timeLeft = calculateTimeLeft(0);\n        }\n\n        if (\n          timeLeft.days_timer > 0 ||\n          timeLeft.hours_timer > 0 ||\n          timeLeft.minutes_timer > 0 ||\n          timeLeft.seconds_timer > 0 ||\n          !this.timeoutMessage\n        ) {\n          Object.entries(timeLeft).forEach(([key, value]) => {\n            if (this.querySelector(\".\" + key)) {\n              this.querySelector(\".\" + key).innerHTML = value\n                .toString()\n                .padStart(2, \"0\");\n            }\n          });\n        } else if (this.timeoutMessage) {\n          this.innerHTML = this.timeoutMessage;\n          clearInterval(this.interval);\n        } else {\n          clearInterval(this.interval);\n        }\n        this.classList.remove(\"hidden\");\n        const badgesCountdown = this.closest(\".product__badges-sale-countdown\");\n        if (badgesCountdown) {\n          badgesCountdown.classList.remove(\"hidden\");\n          badgesCountdown.classList.add(\"inline-flex\");\n        }\n      };\n      this.interval = setInterval(updateCountdown, 1000);\n      // Ch\u1EA1y ngay l\u1EADp t\u1EE9c \u0111\u1EC3 tr\u00E1nh b\u1ECB tr\u1EC5\n      updateCountdown();\n    } else {\n      timeLeft = calculateTimeLeft(0);\n      Object.entries(timeLeft).forEach(([key, value]) => {\n        if (this.querySelector(\".\" + key)) {\n          this.querySelector(\".\" + key).innerHTML = value\n            .toString()\n            .padStart(2, \"0\");\n        }\n      });\n    }\n  }\n\n  appendChildHtml(minutesLeft) {\n    const days = this.dataset?.days;\n    const hours = this.dataset?.hours;\n    const mins = this.dataset?.mins;\n    const secs = this.dataset?.secs;\n    const container = document.createElement(\"div\");\n    container.innerHTML = `${\n      !minutesLeft\n        ? `${\n            this.format.includes(\"dd\")\n              ? `<div class=\"countdown--container\"><span class=\"days_timer count-timer\"></span><span class=\"timer_announcementbar--text\"> ${\n                  days ? days : \"\"\n                }</span></div>`\n              : \"\"\n          }${\n            this.format.includes(\"hh\")\n              ? `<div class=\"countdown--container\"><span class=\"hours_timer count-timer\"></span><span class=\"timer_announcementbar--text\"> ${\n                  hours ? hours : \"\"\n                }</span></div>`\n              : \"\"\n          }`\n        : \"\"\n    }<div class=\"countdown--container\"><span class=\"minutes_timer count-timer\"></span><span class=\"timer_announcementbar--text\"> ${\n      minutesLeft ? \"m\" : mins ? mins : \"\"\n    }</span></div><div class=\"countdown--container\"><span class=\"seconds_timer count-timer\"></span><span class=\"timer_announcementbar--text\"> ${\n      minutesLeft ? \"s\" : secs ? secs : \"\"\n    }</span></div>`;\n    return container;\n  }\n  isISODate(dateString) {\n    const isoRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/;\n    return isoRegex.test(dateString);\n  }\n  isValidDateTime(dateString) {\n    const dateTimeRegex = /^\\d{2}-\\d{2}-\\d{4} \\d{2}:\\d{2}:\\d{2}$/;\n    return dateTimeRegex.test(dateString);\n  }\n  isValidDate(dateString) {\n    var regex = /^\\d{2}-\\d{2}-\\d{4}$/;\n    if (regex.test(dateString)) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n}\ncustomElements.define(\"countdown-timer\", CountdownTimer);\n\n// js for product form - not done yet\nif (!customElements.get(\"product-form\")) {\n  customElements.define(\n    \"product-form\",\n    class ProductForm extends PopupBase {\n      constructor() {\n        super();\n        this.form = this.querySelector(\"form\");\n        this.form.querySelector(\"[name=id]\").disabled = false;\n        this.form.addEventListener(\"submit\", this.onSubmitHandler.bind(this));\n        this.cart =\n          document.querySelector(\"cart-notification\") ||\n          document.querySelector(\"cart-drawer\");\n        this.submitButton = this.querySelector('[type=\"submit\"]');\n        this.hideErrors = this.dataset.hideErrors === \"true\";\n        this.productItem =\n          this.form.closest(\".product-item\") ||\n          this.form.closest(\"sticky-add-cart\");\n        this.cartPage = document.body.classList.contains(\"template-cart\");\n      }\n\n      onSubmitHandler(evt) {\n        evt.preventDefault();\n        if (this.submitButton.getAttribute(\"aria-disabled\") === \"true\") return;\n\n        this.handleErrorMessage();\n        this.submitButton.setAttribute(\"aria-disabled\", true);\n        const cartRecommend = document.querySelector(\".cart-recommend\");\n        if (cartRecommend && cartRecommend.classList.contains(\"open\")) {\n          cartRecommend.classList.remove(\"open\");\n        }\n        this.submitButton.classList.add(\"loading\");\n        const config = fetchConfig(\"javascript\");\n        config.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n        delete config.headers[\"Content-Type\"];\n\n        const formData = new FormData(this.form);\n        const productInfo = this.form.closest(\".product-detail__information\");\n        if (productInfo) {\n          productInfo\n            .querySelectorAll(\"product-property input\")\n            .forEach((property) => {\n              if (property.classList.contains(\"file\") && property.files[0]) {\n                formData.append(property.name, property.files[0]);\n              } else if (\n                property.classList.contains(\"text\") &&\n                property.value\n              ) {\n                formData.append(property.name, property.value);\n              }\n            });\n        }\n        if (this.cart) {\n          formData.append(\n            \"sections\",\n            this.cart.getSectionsToRender().map((section) => section.id)\n          );\n          formData.append(\"sections_url\", window.location.pathname);\n          this.cart.setActiveElement(document.activeElement);\n        }\n        if (this.cartPage) {\n          formData.append(\n            \"sections\",\n            this.getMainCartSectionRender().map((section) => section.id)\n          );\n        }\n        config.body = formData;\n\n        fetch(`${routes.cart_add_url}`, config)\n          .then((response) => response.json())\n          .then((response) => {\n            if (response.status) {\n              publish(PUB_SUB_EVENTS.cartError, {\n                source: \"product-form\",\n                productVariantId: formData.get(\"id\"),\n                errors: response.errors || response.description,\n                message: response.message,\n              });\n              this.handleErrorMessage(response.description);\n              if (this.productItem) {\n                this.handleErrorMessagePopup(response.description);\n              }\n              return;\n            } else if (response.sections) {\n              if (!response.id && !response.items) {\n                this.handleErrorMessagePopup(window.cartStrings.error);\n                return;\n              }\n            } else if (!this.cart) {\n              window.location = window.routes.cart_url;\n              return;\n            }\n\n            fetch(\"/cart.json\")\n              .then((res) => res.json())\n              .then((cart) => {\n                if (cart.item_count != undefined) {\n                  document.querySelectorAll(\".cart-count\").forEach((el) => {\n                    if (el.classList.contains(\"cart-count-drawer\")) {\n                      el.innerHTML = `(${cart.item_count})`;\n                    } else {\n                      el.innerHTML =\n                        cart.item_count > 100 ? \"~\" : cart.item_count;\n                    }\n                  });\n                  if (document.querySelector(\"header-total-price\")) {\n                    document\n                      .querySelector(\"header-total-price\")\n                      .updateTotal(cart);\n                  }\n                  const cart_free_ship = document.querySelector(\n                    \"free-ship-progress-bar\"\n                  );\n                  if (cart_free_ship) {\n                    cart_free_ship.init(cart.items_subtotal_price);\n                  }\n                }\n              })\n              .catch((error) => {\n                throw error;\n              });\n\n            publish(PUB_SUB_EVENTS.cartUpdate, {\n              source: \"product-form\",\n              productVariantId: formData.get(\"id\"),\n              cartData: response,\n            });\n            const modalQuickview = document.querySelector(\n              \".tingle-modal--visible.tingle-modal.quickview .tingle-modal__close\"\n            );\n            const modalShopableVideo = document.querySelector(\n              \".tingle-modal--visible.tingle-modal.shopable-video .tingle-modal__close\"\n            );\n            let time = 0;\n            if (modalQuickview || modalShopableVideo) {\n              if (\n                document.documentElement\n                  .querySelector(\"body\")\n                  .classList.contains(\"tingle-enabled\")\n              ) {\n                document.documentElement\n                  .querySelector(\"body\")\n                  .classList.remove(\"tingle-enabled\");\n              }\n              if (modalShopableVideo) {\n                time += 250;\n                modalShopableVideo.click();\n              }\n              if (modalQuickview) {\n                time += 250;\n                modalQuickview.click();\n              }\n            }\n            if (!this.cartPage) {\n              if (!response.errors) {\n                this.cart.getSectionsToRender().forEach((section) => {\n                  const elementToReplace = document.getElementById(section.id);\n                  const html = new DOMParser().parseFromString(\n                    response.sections[section.id],\n                    \"text/html\"\n                  );\n                  if (elementToReplace) {\n                    elementToReplace.innerHTML =\n                      html.querySelector(\"#minicart-form\").innerHTML;\n                  }\n                });\n                this.cart.cartAction();\n                if (this.cart && this.cart.classList.contains(\"is-empty\")) {\n                  this.cart.classList.remove(\"is-empty\");\n                }\n\n                setTimeout(() => {\n                  this.cart.open();\n                  const cartRecommend =\n                    document.querySelector(\".cart-recommend\");\n                  if (\n                    cartRecommend &&\n                    !cartRecommend.classList.contains(\"hidden-recommend\")\n                  ) {\n                    if (\n                      cartRecommend.classList.contains(\"cart-recommend-custom\")\n                    ) {\n                      const cartUpsellItem =\n                        document.querySelectorAll(\".cart-upsell-item\");\n                      const cartUpsellSlide = document.querySelectorAll(\n                        \".swiper-cart-upsell .swiper-slide\"\n                      );\n                      if (cartUpsellItem.length > 0) {\n                        setTimeout(function () {\n                          cartRecommend.classList.add(\"open\");\n                        }, 800);\n                      } else if (cartUpsellSlide.length === 0) {\n                        cartRecommend.classList.remove(\"block\");\n                        cartRecommend.classList.add(\"hidden\");\n                      }\n                    } else {\n                      setTimeout(function () {\n                        cartRecommend.classList.add(\"open\");\n                      }, 800);\n                    }\n                  }\n                }, time);\n              }\n            } else {\n              if (!response.errors) {\n                this.getMainCartSectionRender().forEach((section) => {\n                  if (section.selector != undefined) {\n                    const elementToReplace =\n                      document\n                        .getElementById(section.id)\n                        .querySelector(section.selector) ||\n                      document.getElementById(section.id);\n                    elementToReplace.innerHTML = this.getSectionInnerHTML(\n                      response.sections[section.id],\n                      section.selector\n                    );\n                    const cart_gift_html = new DOMParser()\n                      .parseFromString(\n                        response.sections[section.id],\n                        \"text/html\"\n                      )\n                      .querySelector(\"#gift\");\n                    const cart_gift = document.getElementById(\"gift\");\n                    if (cart_gift) {\n                      cart_gift.innerHTML = cart_gift_html.innerHTML;\n                      const gift_form_minicart =\n                        document.getElementById(\"gift_form_minicart\");\n                      if (gift_form_minicart) {\n                        gift_form_minicart.addEventListener(\n                          \"change\",\n                          (event) => {\n                            if (event.currentTarget.checked) {\n                              this.addGiftwrapCartClick(gift_form_minicart);\n                            } else {\n                              this.updateQuantity(\n                                event.currentTarget.dataset.index,\n                                0\n                              );\n                            }\n                          }\n                        );\n                      }\n                    }\n                  }\n                });\n                var wrapperDiv = document.createElement(\"div\");\n                var messageDiv = document.createElement(\"div\");\n                messageDiv.className = `mt-10 newsletter-form__message--success success form__message inline-flex align-center`;\n                messageDiv.setAttribute(\"tabindex\", \"-1\");\n                messageDiv.innerHTML = `\n               <svg width=\"18\" height=\"18\" fill=\"none\">\n              <g stroke=\"#137F24\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.3\"><path d=\"m6.033 8.992 1.972 1.98 3.952-3.96\"/><path d=\"M7.973 1.178c.565-.482 1.49-.482 2.062 0l1.293 1.113c.245.213.704.385 1.03.385h1.392c.867 0 1.579.712 1.579 1.579v1.39c0 .32.172.786.384 1.032l1.113 1.292c.483.565.483 1.49 0 2.062l-1.113 1.293a1.813 1.813 0 0 0-.384 1.03v1.392c0 .867-.712 1.579-1.58 1.579h-1.39c-.32 0-.786.172-1.031.384l-1.293 1.113c-.564.483-1.489.483-2.062 0L6.681 15.71a1.813 1.813 0 0 0-1.031-.384H4.234c-.867 0-1.579-.712-1.579-1.58v-1.398c0-.32-.172-.778-.376-1.023l-1.105-1.301c-.474-.565-.474-1.48 0-2.045L2.28 6.677c.204-.246.376-.704.376-1.023V4.247c0-.868.712-1.58 1.58-1.58H5.65c.319 0 .785-.171 1.03-.384l1.293-1.105Z\"/></g>\n            </svg>\n              `;\n                var span = document.createElement(\"span\");\n                span.className = \"ml-5\";\n                span.textContent = window.variantStrings.addSuccess;\n                messageDiv.appendChild(span);\n                wrapperDiv.appendChild(messageDiv);\n                if (this.cartPage) {\n                  showToast(wrapperDiv.innerHTML, 3000, \"modal-success\");\n                }\n\n                const totals = this.getSectionInnerHTML(\n                  response.sections[\"main-cart-items\"],\n                  \".cart-info .totals\"\n                );\n                const totals_content =\n                  document.querySelector(\".cart-info .totals\");\n                if (totals && totals_content) totals_content.innerHTML = totals;\n              }\n            }\n          })\n          .catch((e) => {\n            console.error(e);\n          })\n          .finally(() => {\n            BlsLazyloadImg.init();\n            if (document.documentElement.classList.contains(\"open-popup\")) {\n              document.documentElement.classList.remove(\"open-popup\");\n            }\n            this.submitButton.classList.remove(\"loading\");\n            if (this.cart && this.cart.classList.contains(\"is-empty\"))\n              this.cart.classList.remove(\"is-empty\");\n            this.submitButton.removeAttribute(\"aria-disabled\");\n          });\n      }\n\n      getMainCartSectionRender() {\n        return [\n          {\n            id: \"main-cart-items\",\n            section: document.getElementById(\"main-cart-items\")?.dataset.id,\n            selector: \".js-contents\",\n          },\n        ];\n      }\n\n      getSectionInnerHTML(html, selector) {\n        return new DOMParser()\n          .parseFromString(html, \"text/html\")\n          .querySelector(selector).innerHTML;\n      }\n\n      handleErrorMessage(errorMessage = false) {\n        if (this.hideErrors) return;\n\n        this.errorMessageWrapper =\n          this.errorMessageWrapper ||\n          this.querySelector(\".product-form__error-message-wrapper\");\n        if (!this.errorMessageWrapper) return;\n        this.errorMessage =\n          this.errorMessage ||\n          this.errorMessageWrapper.querySelector(\n            \".product-form__error-message\"\n          );\n\n        this.errorMessageWrapper.toggleAttribute(\"hidden\", !errorMessage);\n\n        if (errorMessage) {\n          this.errorMessage.textContent = errorMessage;\n        }\n      }\n\n      handleErrorMessagePopup(errorMessage = false) {\n        const url = `${window.location.pathname}?section_id=form-message`;\n        fetch(url)\n          .then((response) => response.text())\n          .then((responseText) => {\n            const html = new DOMParser().parseFromString(\n              responseText,\n              \"text/html\"\n            );\n            const elementErrorMessage = html.querySelector(\n              \".product-form__error-message-wrapper\"\n            );\n            const elementMessage = elementErrorMessage.querySelector(\n              \".product-form__error-message\"\n            );\n            elementMessage.textContent = errorMessage;\n            showToast(elementErrorMessage.innerHTML, 3000, \"modal-error\");\n          })\n          .catch((e) => {\n            throw e;\n          });\n      }\n    }\n  );\n}\n\n// js loadmor product for collection and section product grid\nclass Loadmore extends HTMLElement {\n  constructor() {\n    super();\n    this.button = this.querySelector(\"button\");\n    this.collectionUrl = this.dataset.collectionUrl;\n    this.sectionId = this.dataset.sectionId;\n    this.all = this.dataset.allProducts;\n    this.limit = this.dataset.limit;\n    this.blockId = this.dataset.blockId;\n    this.init();\n  }\n  init() {\n    const _this = this;\n    if (!this.button) return;\n    this.button.addEventListener(\"click\", function () {\n      _this.scanData();\n    });\n  }\n  scanData() {\n    const _this = this;\n    let url = this.dataset.url;\n    if (!url) return;\n    let sectionContainer = document.querySelector(\n      `#shopify-section-${this.sectionId}`\n    );\n    sectionContainer?.classList.add(\"bls-image-js\");\n    this.querySelector(\"button\").classList.add(\"loading\");\n    fetch(this.collectionUrl + url + `&section_id=${this.sectionId}`)\n      .then((response) => response.text())\n      .then((text) => {\n        const html = parser.parseFromString(text, \"text/html\");\n        let parentDiv = this.closest(\".sec__products-loadmore\");\n        if (!parentDiv) return;\n        let elements,\n          itemDiv,\n          fetchDiv,\n          page,\n          times,\n          limit,\n          remainder,\n          end_load;\n        if (this.blockId) {\n          itemDiv = parentDiv.querySelector(\n            `.collection-tab-${this.blockId} .product-ajax__append`\n          );\n          fetchDiv = html.querySelector(\n            `.sec__products-loadmore .collection-tab-${this.blockId} .product-ajax__append`\n          );\n          elements = fetchDiv.querySelectorAll(\".grid-custom-item\");\n        } else {\n          itemDiv = parentDiv.querySelector(\".product-ajax__append\");\n          fetchDiv = html.querySelector(\n            \".sec__products-loadmore .product-ajax__append\"\n          );\n          elements = fetchDiv.querySelectorAll(\".grid-custom-item\");\n        }\n        if (!itemDiv || !fetchDiv) return;\n        page = Number(this.dataset.url.replace(\"?page=\", \"\"));\n        times = page * this.limit;\n        limit = this.limit;\n        end_load = false;\n        if (times >= this.all) {\n          end_load = true;\n          limit = this.limit - (times - this.all);\n        }\n        elements.forEach((prodNode, index) => {\n          index = index + 1;\n          if (end_load && limit < index) {\n            return;\n          }\n          itemDiv.appendChild(prodNode);\n          parentDiv.querySelector(\"motion-items-effect\")?.reloadAnimationEffect();\n        });\n      })\n      .finally(() => {\n        _this.updateUrl(Number(this.dataset.url.replace(\"?page=\", \"\")));\n        this.querySelector(\"button\")?.classList.remove(\"loading\");\n        initLazyloadItem();\n        BlsLazyloadImg.init();\n      })\n      .catch((e) => {\n        console.error(e);\n      });\n  }\n  updateUrl(e) {\n    if (this.all && this.limit && this.all > 0) {\n      const times = ~~(this.all / this.limit);\n      const remainder = this.all % this.limit;\n      let pages = times;\n      if (remainder > 0) {\n        pages = times + 1;\n      }\n      if (e < pages) {\n        this.dataset.url = \"?page=\" + ++e;\n      } else {\n        const btn = this.querySelector(\"button\");\n        if (btn) {\n          btn.remove();\n        }\n      }\n    }\n  }\n\n  handleCountItemToShow(pages) {\n    if (this.all && this.limit && pages) {\n      if (Number(this.all) < Number(this.limit) * pages) {\n        const itemsNeedToRemove = Number(this.limit) * pages - Number(this.all);\n        return itemsNeedToRemove;\n      }\n    }\n    return 0;\n  }\n}\ncustomElements.define(\"loadmore-function\", Loadmore);\n\n// js lookbook item\nclass LookbookItem extends HTMLElement {\n  constructor() {\n    super();\n    this.itemPopup = this.querySelector(\".lookbook-item__popup\");\n    this.type = this.dataset.type;\n    this.position = this.dataset.productPosition;\n    this.lookbookProductDiv = this.closest(\".sec__lookbook-product\");\n    this.instagramShop = this.closest(\".popup-content\");\n    this.allDots = this.closest(\".sec__lookbook-product\");\n    this.currentAnimation = null;\n    this.activeTooltip = null;\n    this.isAnimating = false;\n    this.init();\n    document.body.addEventListener(\"click\", this.onClickOutside.bind(this));\n  }\n  init() {\n    if (this.type === \"open\" || this.type === \"slide\") {\n      const atag = this.querySelector(\"a\");\n      if (!atag) return;\n      atag.addEventListener(\"click\", this.onClick.bind(this));\n      this.addEventListener(\"mouseover\", this.onMouseoverPopup.bind(this));\n      this.addEventListener(\"mouseleave\", this.hideProductInfo.bind(this));\n      const closeButton = this.querySelector(\"icon-close\");\n      if (!closeButton) return;\n      closeButton.addEventListener(\"click\", this.onClose.bind(this));\n    }\n  }\n  onClickOutside(event) {\n    if (!event.target.closest(\"lookbook-item\")) {\n      this.onClose();\n    }\n  }\n  onClick() {\n    if (this.type === \"open\") {\n      if (this.itemPopup) {\n        const thisSection = this.closest(\"section\");\n        if (!thisSection) return;\n        const allPopups = thisSection.querySelectorAll(\".lookbook-item__popup\");\n        if (window.innerWidth >= 1024) {\n          allPopups.forEach((popup) => {\n            if (popup !== this.itemPopup) {\n              popup.classList.add(\"invisible\");\n              const thisClosest = popup.closest(\"lookbook-item\");\n              if (thisClosest) {\n                thisClosest.classList.remove(\"open\");\n              }\n            }\n          });\n          this.onToggle();\n        } else {\n          const modal = new tingle.modal({\n            footer: false,\n            stickyFooter: false,\n            closeMethods: [\"overlay\", \"button\", \"escape\"],\n            closeLabel: \"Close\",\n            cssClass: [\"lookbook-modal\"],\n            onOpen: function () {},\n            onClose: function () {},\n            beforeClose: function () {\n              return true;\n            },\n          });\n          modal.setContent(\n            this.itemPopup.querySelector(\".product-item\").innerHTML\n          );\n          modal.open();\n        }\n      }\n    } else {\n      if (this.lookbookProductDiv && this.position) {\n        const slideSEction = this.lookbookProductDiv.querySelector(\n          \"slide-section-lookbook\"\n        );\n        const allDots = this.lookbookProductDiv.querySelectorAll(\n          `lookbook-item[data-type=\"slide\"]`\n        );\n        allDots.forEach((dot) => {\n          dot.classList.remove(\"active\");\n        });\n        this.classList.add(\"active\");\n        if (slideSEction) {\n          slideSEction.functionGoto(this.position);\n        }\n      } else if (this.instagramShop && this.position) {\n        const slideSEction = this.instagramShop.querySelector(\n          \"slide-section-instagram\"\n        );\n        if (slideSEction) {\n          slideSEction.functionGoto(this.position);\n        }\n        const allDots = this.instagramShop.querySelectorAll(\n          `lookbook-item[data-type=\"slide\"]`\n        );\n        allDots.forEach((dot) => {\n          dot.classList.remove(\"active\");\n        });\n        this.classList.add(\"active\");\n      }\n    }\n  }\n  onToggle() {\n    this.itemPopup?.classList.toggle(\"invisible\");\n    this.classList.toggle(\"open\");\n  }\n  onClose() {\n    this.itemPopup?.classList.add(\"invisible\");\n    this.classList.remove(\"open\");\n  }\n  onMouseoverPopup(e) {\n    const _this = this;\n    if (window.innerWidth < 1024) return;\n    _this.showProductInfo(this);\n  }\n  showProductInfo(container) {\n    const existingTooltip = document.querySelector(\".product-tooltip\");\n    if (existingTooltip) {\n      return;\n    }\n\n    if (this.isAnimating) {\n      this.forceCleanupTooltips();\n    }\n    const template = container.querySelector(\"template\");\n    if (template === null) return;\n    const content = document.createElement(\"div\");\n    content.className = \"product-tooltip\";\n    content.appendChild(template.content.firstElementChild.cloneNode(true));\n\n    content.style.opacity = \"0\";\n    content.style.transform = \"translateY(20px)\";\n\n    const tooltip = document.body.appendChild(content);\n    this.activeTooltip = tooltip;\n\n    const triggerRect = container.getBoundingClientRect();\n    const tooltipWidth = tooltip.offsetWidth;\n    tooltip.style.zIndex = \"9999\";\n    tooltip.style.left =\n      24 + triggerRect.left + triggerRect.width / 2 - tooltipWidth / 2 + \"px\";\n    tooltip.style.top = triggerRect.bottom + 10 + window.scrollY + \"px\";\n\n    tooltip.setAttribute(\"tabindex\", \"-1\");\n\n    setTimeout(() => {\n      if (this.activeTooltip === tooltip) {\n        this.isAnimating = true;\n        this.currentAnimation = Motion.animate(\n          tooltip,\n          {\n            opacity: 1,\n            y: 0,\n          },\n          {\n            duration: 0.2,\n            easing: \"ease-out\",\n            onComplete: () => {\n              tooltip\n                .querySelector(\".lookbook-item__hover\")\n                .classList.add(\"active\");\n              this.isAnimating = false;\n              this.currentAnimation = null;\n            },\n          }\n        );\n      }\n    }, 10);\n  }\n  forceCleanupTooltips() {\n    const tooltips = document.querySelectorAll(\".product-tooltip\");\n    tooltips.forEach((tooltip) => {\n      if (tooltip.parentNode) {\n        Motion.animate(\n          tooltip,\n          {\n            opacity: 0,\n            y: 20,\n          },\n          {\n            duration: 0.3,\n            easing: \"ease-in\",\n            onComplete: () => {\n              if (tooltip.parentNode) {\n                tooltip.parentNode.removeChild(tooltip);\n              }\n            },\n          }\n        );\n      }\n    });\n\n    if (this.currentAnimation) {\n      this.currentAnimation.cancel();\n      this.currentAnimation = null;\n    }\n    this.isAnimating = false;\n    this.activeTooltip = null;\n  }\n  hideProductInfo() {\n    if (this.currentAnimation) {\n      this.currentAnimation.cancel();\n      this.currentAnimation = null;\n    }\n\n    const tooltip = document.querySelector(\".product-tooltip\");\n    if (tooltip) {\n      if (this.isAnimating) {\n        if (tooltip.parentNode) {\n          tooltip.parentNode.removeChild(tooltip);\n        }\n        this.isAnimating = false;\n        this.activeTooltip = null;\n        return;\n      }\n\n      this.isAnimating = true;\n      this.currentAnimation = Motion.animate(\n        tooltip,\n        {\n          opacity: 0,\n          y: 20,\n        },\n        {\n          duration: 0.2,\n          easing: \"ease-in\",\n          onComplete: () => {\n            if (tooltip.parentNode) {\n              tooltip.parentNode.removeChild(tooltip);\n            }\n            this.isAnimating = false;\n            this.currentAnimation = null;\n            this.activeTooltip = null;\n          },\n        }\n      );\n    }\n  }\n}\ncustomElements.define(\"lookbook-item\", LookbookItem);\n\n// js lookbook item\nclass SectionSlideLookbook extends SlideSection {\n  constructor() {\n    super();\n    this.init();\n  }\n  init() {\n    this.initSlide();\n  }\n  functionGoto(position) {\n    this.globalSlide.slideTo(position - 1, 500);\n  }\n}\ncustomElements.define(\"slide-section-lookbook\", SectionSlideLookbook);\n\nclass SectionSlideInstagramShop extends SlideSection {\n  constructor() {\n    super();\n    this.init();\n  }\n  init() {\n    this.initSlide();\n  }\n  functionGoto(position) {\n    this.globalSlide.slideTo(position - 1, 500);\n  }\n}\ncustomElements.define(\"slide-section-instagram\", SectionSlideInstagramShop);\n\nclass TabItems extends HTMLElement {\n  constructor() {\n    super();\n    this.type = this.dataset.type;\n    this.viewAllBtns = this.querySelectorAll('[data-role=\"view-all\"]');\n    this.init();\n\n    this.addEventListener(\"click\", (e) => {\n      const btn = e.target.closest('[data-role=\"view-all\"]');\n      if (!btn) return;\n      const url = this.getActiveCollectionUrl();\n      if (!url || url === \"#\") { e.preventDefault(); return; }\n      e.preventDefault();\n      btn.setAttribute(\"href\", url);\n      window.location.assign(url);\n    });\n\n    this.addEventListener(\"click\", (e) => {\n      const tab = e.target.closest(\".collection-tab__tab-item\");\n      if (!tab || this.type !== \"horizontal\") return;\n      this.setActive(tab.dataset.blockId);\n    });\n  }\n\n  init() {\n    if (this.type !== \"horizontal\") {\n      // dropdown\n      this.addEventListener(\"click\", (e) => {\n        if (e.target.closest(\".select__selected_title\")) {\n          const dd = this.querySelector(\".select-custom__content\");\n          const box = this.querySelector(\".select-collection-tab\");\n          box.classList.toggle(\"active\");\n          dd.classList.toggle(\"invisible\");\n        }\n        const opt = e.target.closest(\".collection_title_input\");\n        if (opt) {\n          const title = this.querySelector(\".select__selected_title\");\n          if (title) {\n            title.innerHTML = opt.innerHTML +\n              `<svg class=\"icon-down transition active-rotated\" width=\"10\" height=\"6\"><use href=\"#icon-arrow-down\"></use></svg>`;\n          }\n          this.setActive(opt.dataset.id);\n          this.querySelectorAll(\".select-custom__content\").forEach(el => el.classList.add(\"invisible\"));\n          this.querySelector(\".select-collection-tab\")?.classList.remove(\"active\");\n        }\n      });\n    }\n\n    const activeContent = this.querySelector(\".collection-tab__tab-content.active\");\n    if (activeContent) this.setActive(activeContent.dataset.blockId);\n    else {\n      const firstTab = this.querySelector(\".collection-tab__tab-item\");\n      if (firstTab) this.setActive(firstTab.dataset.blockId);\n    }\n  }\n\n  setActive(blockId) {\n    this.querySelectorAll(\".collection-tab__tab-content\").forEach((c) => {\n      const isMatch = c.dataset.blockId === blockId;\n      \n      if (isMatch && !c.classList.contains(\"active\")) {\n        Motion.animate(c, \n          { \n            opacity: [0, 1],\n            y: [20, 0]\n          }, \n          { \n            duration: 0.3,\n          }\n        );\n        c.classList.add(\"active\");\n        c.classList.remove(\"hidden\");\n      } else if (!isMatch && c.classList.contains(\"active\")) {\n        Motion.animate(c, \n          { \n            opacity: [1, 0],\n            y: [0, 20]\n          }, \n          { \n            duration: 0.3,\n          }\n        );\n        c.classList.remove(\"active\");\n        c.classList.add(\"hidden\");\n      }\n    });\n\n    this.querySelectorAll(\".collection-tab__tab-item\").forEach((t) => {\n      const isMatch = t.dataset.blockId === blockId;\n      const style = t.dataset.style;\n      const wasActive = t.classList.contains(\"active\");\n\n      t.classList.toggle(\"active\", isMatch);\n\n      if (isMatch && !wasActive) {\n        Motion.animate(t, \n          { \n            scale: [0.95, 1],\n          }, \n          { \n            duration: 0.25,\n            easing: \"ease-out\"\n          }\n        );\n      }\n\n      if (style !== \"underline\") {\n        t.classList.toggle(\"btn-active\", isMatch);\n      } else {\n        t.classList.remove(\"btn-active\");\n      }\n\n      t.setAttribute(\"aria-selected\", isMatch ? \"true\" : \"false\");\n      t.setAttribute(\"tabindex\", isMatch ? \"0\" : \"-1\");\n    });\n\n    this.syncViewAll();\n  }\n\n  getActiveCollectionUrl() {\n    const activeContent = this.querySelector(\".collection-tab__tab-content.active\");\n    return activeContent?.dataset.collectionUrl || null;\n  }\n\n  syncViewAll() {\n    const url = this.getActiveCollectionUrl();\n    const finalUrl = url && url !== \"#\" ? url : \"#\";\n    this.viewAllBtns.forEach((btn) => btn.setAttribute(\"href\", finalUrl));\n  }\n}\ncustomElements.define(\"tab-items\", TabItems);\n\n// js for grid custom\nclass GridCustom extends SlideSection {\n  constructor() {\n    super();\n    this.enable = this.dataset.enable;\n    this.parentElementt = document.querySelector(\n      `#shopify-section-${this.dataset?.sectionId}`\n    );\n    this.loadmore = this.parentElementt?.querySelectorAll(\"loadmore-function\");\n    this.viewAll = this.parentElementt?.querySelector(\".view_all\");\n    this.swiperSlideInnerHtml = this.innerHTML;\n    this.init();\n  }\n  init() {\n    if (this.enable == \"true\") {\n      let width = window.innerWidth;\n      window.addEventListener(\"resize\", () => {\n        const newWidth = window.innerWidth;\n        if (newWidth <= 767 && width > 767) {\n          this.actionOnMobile();\n        }\n        if (newWidth > 767 && width <= 767) {\n          this.actionOutMobile();\n        }\n        width = newWidth;\n      });\n      if (width <= 767) {\n        this.actionOnMobile();\n      }\n    }\n  }\n  actionOnMobile() {\n    this.classList.add(\"swiper\");\n    this.classList.remove(\"grid\", \"grid-cols\");\n    if (this.viewAll) {\n      this.viewAll.classList.add(\"hidden\");\n    }\n    if (this.loadmore && this.loadmore.length > 0) {\n      this.loadmore.forEach((button) => {\n        button.classList.add(\"hidden\");\n        button.classList.remove(\"block\");\n      });\n    }\n    const html = this.swiperSlideInnerHtml.replaceAll(\n      \"grid-custom-item\",\n      \"swiper-slide\"\n    );\n    const wrapper = `<div class='swiper-wrapper'>${html}</div> <div\n    class=\"swiper-pagination  ${\n      this.enable && this.dataset.mobile != 1.5 ? \"flex\" : \"hidden\"\n    } px-15 lh-1 bottom-30 justify-content-center\"\n    style=\"--swiper-pagination-bottom: 3rem;--swiper-pagination-position: static;\"\n  ></div> `;\n    this.innerHTML = wrapper;\n    this.initSlide();\n    this.closest(\"motion-items-effect\")?.init();\n  }\n  actionOutMobile() {\n    this.classList.remove(\"swiper\");\n    this.classList.add(\"grid\", \"grid-cols\");\n    if (this.viewAll) {\n      this.viewAll.classList.remove(\"hidden\");\n    }\n    this.innerHTML = this.swiperSlideInnerHtml;\n    if (this.loadmore && this.loadmore.length > 0) {\n      this.loadmore.forEach((button) => {\n        button.classList.add(\"block\");\n        button.classList.remove(\"hidden\");\n      });\n    }\n    this.closest(\"motion-items-effect\")?.init();\n  }\n}\ncustomElements.define(\"grid-custom\", GridCustom);\n\n// js for slide with thumbnails\nclass SlideWithThumbs extends HTMLElement {\n  constructor() {\n    super();\n    this.globalSlide = null;\n    this.thumbnailSlide = null;\n    this.init();\n  }\n  init() {\n    const nothumb = this.dataset?.nothumb;\n    if (!nothumb) {\n      this.initThumbnail();\n      if (Shopify.designMode) {\n        document.addEventListener(\"shopify:section:load\", () =>\n          this.initThumbnail()\n        );\n      }\n    }\n\n    this.initSlide();\n    this.pauseMedia();\n    this.playMedia();\n  }\n\n  initSlide() {\n    var autoplaying = this?.dataset.autoplay === \"true\";\n    const loop = this?.dataset.loop === \"true\";\n    const itemMobile = this?.dataset.mobile ? this?.dataset.mobile : 1;\n    const itemDesktop = this?.dataset.desktop ? this?.dataset.desktop : 4;\n    var itemTablet = this?.dataset.tablet ? this?.dataset.tablet : \"\";\n    var direction = this?.dataset.direction\n      ? this?.dataset.direction\n      : \"horizontal\";\n    var autoplaySpeed = this?.dataset.autoplaySpeed\n      ? this?.dataset.autoplaySpeed * 1000\n      : 3000;\n    var speed = this?.dataset.speed ? this?.dataset.speed : 400;\n    const effect = this?.dataset.effect ? this?.dataset.effect : \"slide\";\n    var spacing = this?.dataset.spacing ? this?.dataset.spacing : 30;\n    spacing = Number(spacing);\n    autoplaySpeed = Number(autoplaySpeed);\n    speed = Number(speed);\n    if (autoplaying) {\n      autoplaying = { delay: autoplaySpeed };\n    }\n    if (window.innerWidth < 767) {\n      direction = \"horizontal\";\n    }\n    const container = this.querySelector(\".main-slide__navigation\");\n    const initSwiper = this.querySelector(\".swiper-wrapper-preview\");\n    var _this = this;\n    this.globalSlide = new Swiper(initSwiper, {\n      slidesPerView: itemMobile,\n      spaceBetween: spacing >= 15 ? 15 : spacing,\n      autoplay: autoplaying,\n      direction: direction,\n      loop: loop,\n      effect: effect,\n      speed: speed,\n      watchSlidesProgress: true,\n      watchSlidesVisibility: true,\n      navigation: {\n        nextEl: container?.querySelector(\".swiper-button-next\"),\n        prevEl: container?.querySelector(\".swiper-button-prev\"),\n      },\n      pagination: {\n        clickable: true,\n        el: this.querySelector(\".swiper-pagination\"),\n        type: \"custom\",\n        renderCustom: function (swiper, current, total) {\n          return current + \"/\" + total;\n        },\n      },\n      breakpoints: {\n        768: {\n          slidesPerView: itemTablet,\n        },\n        1025: {\n          slidesPerView: itemDesktop,\n        },\n      },\n      on: {\n        init: function () {\n          const currentSlide = this.slides[this.activeIndex];\n          if (\n            currentSlide &&\n            currentSlide.classList.contains(\"cloudimage-360\")\n          ) {\n            this.allowTouchMove = false;\n          } else {\n            this.allowTouchMove = true;\n          }\n        },\n        slideChange: function () {\n          const currentSlide = this.slides[this.activeIndex];\n          if (currentSlide) {\n            if (\n              currentSlide.classList.contains(\"media-gallery__model\") ||\n              currentSlide.classList.contains(\"cloudimage-360\")\n            ) {\n              this.allowTouchMove = false;\n            } else {\n              this.allowTouchMove = true;\n            }\n          }\n        },\n      },\n      thumbs: {\n        swiper: this.thumbnailSlide ? this.thumbnailSlide : null,\n      },\n    });\n  }\n\n  initThumbnail() {\n    const container = this.querySelector(\".thumbnail-slide\");\n    if (!container) return;\n    var direction = this.dataset.thumbDirection\n      ? this.dataset.thumbDirection\n      : \"horizontal\";\n    const slidesPerView = this.dataset.thumbSlidesPerView\n      ? this.dataset.thumbSlidesPerView\n      : 4;\n    const spaceBetween = this.dataset.thumbSpaceBetween\n      ? this.dataset.thumbSpaceBetween\n      : 10;\n    const watchSlidesVisibility = this.dataset.thumbWatchSlidesVisibility\n      ? this.dataset.thumbWatchSlidesVisibility\n      : true;\n    const watchOverflow = this.dataset.thumbWatchOverflow\n      ? this.dataset.thumbWatchOverflow\n      : true;\n    this.thumbnailSlide = new Swiper(container, {\n      // centeredSlides: true,\n      // centeredSlidesBounds: true,\n      direction: \"horizontal\",\n      spaceBetween: spaceBetween,\n      slidesPerView: 5,\n      watchSlidesVisibility: watchSlidesVisibility,\n      watchSlidesProgress: true,\n      watchOverflow: watchOverflow,\n      breakpoints: {\n        768: {\n          direction: direction,\n          slidesPerView: direction == \"vertical\" ? 10 : 6,\n        },\n      },\n    });\n  }\n\n  pauseMedia() {\n    this.globalSlide.on(\"slideChange\", function () {\n      pauseAllMedia();\n    });\n  }\n\n  playMedia() {\n    const autoplay = this?.dataset.autoPlayVideo === \"true\";\n    if (!autoplay) return;\n    // Load Vimeo API\n    var vimeoTag = document.createElement(\"script\");\n    vimeoTag.src = \"https://player.vimeo.com/api/player.js\";\n    document.head.appendChild(vimeoTag);\n    this.globalSlide.on(\"slideChangeTransitionEnd\", function () {\n      var activeSlide = this.slides[this.activeIndex];\n      var video = activeSlide.querySelector(\".media-video\");\n      if (video) {\n        if (video.tagName === \"VIDEO\") {\n          video.play();\n        } else if (video.tagName === \"IFRAME\") {\n          // Play Vimeo\n          if (video.src.includes(\"vimeo\")) {\n            var vimeoPlayer = new Vimeo.Player(video);\n            vimeoPlayer.play();\n          }\n          // Play YouTube\n          if (video.src.includes(\"youtube\")) {\n            video.contentWindow.postMessage(\n              '{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}',\n              \"*\"\n            );\n          }\n        }\n      }\n    });\n  }\n\n  playActiveSlideVideo(swiper) {}\n\n  functionGoto(position) {\n    this.globalSlide.slideTo(position, 500);\n  }\n\n  updateSlide() {\n    this.globalSlide.update();\n  }\n\n  updateThumbSlide() {\n    this.thumbnailSlide.update();\n  }\n\n  appendSlide(item) {\n    this.globalSlide.appendSlide(item);\n  }\n}\ncustomElements.define(\"slide-with-thumbs\", SlideWithThumbs);\n\nclass ProductRecentlyViewed extends SlideSection {\n  constructor() {\n    super();\n  }\n  init() {\n    this.call();\n  }\n  initData() {\n    var savedProductsArr = JSON.parse(\n      localStorage.getItem(\"glozin__recently-viewed-products\")\n    );\n    this.getStoredProducts(savedProductsArr);\n  }\n  getStoredProducts(p) {\n    const limit = this.dataset?.limit;\n\n    if (limit) {\n      var query = \"\";\n      var productAjaxURL = \"\";\n\n      if (p && p.length > 0) {\n        const sortedIds = p.slice();\n        const idsToUse = sortedIds.slice(0, limit);\n        query = idsToUse.join(\"%20OR%20id:\");\n        productAjaxURL = `&q=id:${query}`;\n      }\n    }\n    fetch(`${this.dataset.url}${productAjaxURL}`)\n      .then((response) => response.text())\n      .then((text) => {\n        const html = document.createElement(\"div\");\n        html.innerHTML = text;\n        const recentlyViewedProducts = html.querySelector(\n          \"recently-viewed-products\"\n        );\n        if (\n          recentlyViewedProducts &&\n          recentlyViewedProducts.innerHTML.trim().length\n        ) {\n          this.innerHTML = recentlyViewedProducts.innerHTML;\n        }\n        if (recentlyViewedProducts.innerHTML.trim().length === 0) {\n          this.remove();\n        }\n      })\n      .finally(() => {\n        if (this.querySelector(\".swiper-wrapper\")) {\n          this.initSlide();\n        }\n        initLazyloadItem();\n        BlsLazyloadImg.init();\n      })\n      .catch((e) => {\n        console.error(e);\n      });\n  }\n  call() {\n    const __this = this;\n    const handleIntersection = (entries, observer) => {\n      if (!entries[0].isIntersecting) return;\n      observer.unobserve(this);\n      __this.initData();\n    };\n\n    new IntersectionObserver(handleIntersection.bind(this), {\n      rootMargin: \"0px 0px 400px 0px\",\n    }).observe(this);\n  }\n}\ncustomElements.define(\"recently-viewed-products\", ProductRecentlyViewed);\n\n// js gallery\nclass MediaGallery extends HTMLElement {\n  constructor() {\n    super();\n  }\n  setActiveMedia(mediaId, prepend) {\n    const activeMedia = this.querySelector(\n      '[id^=\"GalleryViewer\"]'\n    ).querySelector(`[data-media-id=\"${mediaId}\"]`);\n    if (!activeMedia) return;\n    this.querySelector('[id^=\"GalleryViewer\"]')\n      .querySelectorAll(\"[data-media-id]\")\n      .forEach((element) => {\n        element.classList.remove(\"is-active\");\n      });\n    activeMedia.classList.add(\"is-active\");\n\n    if (prepend) {\n      activeMedia.parentElement.prepend(activeMedia);\n    }\n  }\n}\ncustomElements.define(\"media-gallery\", MediaGallery);\n\nvar BlsCustomer = (function () {\n  return {\n    init: function () {\n      this.toggleForm(), this.deleteAddresses(), this.addAddresses();\n    },\n    toggleForm: function () {\n      const e = document.querySelector(\".add-address\");\n      const c = document.querySelector(\".cancel-add\");\n      if (e !== null && c !== null) {\n        e.addEventListener(\"click\", () => {\n          if (e.getAttribute(\"aria-expanded\") === \"false\") {\n            e.setAttribute(\"aria-expanded\", \"true\");\n            e.closest(\".bls-customer__address\").classList.add(\"active\");\n          } else {\n            e.setAttribute(\"aria-expanded\", \"false\");\n            e.closest(\".bls-customer__address\").classList.remove(\"active\");\n          }\n        });\n        c.addEventListener(\"click\", () => {\n          if (\n            c.closest(\".bls-customer__address\").classList.contains(\"active\")\n          ) {\n            e.closest(\".bls-customer__address\").classList.remove(\"active\");\n            e.closest(\".add-address\").setAttribute(\"aria-expanded\", \"false\");\n          }\n        });\n      }\n    },\n    deleteAddresses: function () {\n      const btn = document.querySelectorAll(\".address-delete\");\n      btn.forEach((e) => {\n        e.addEventListener(\"click\", () => {\n          const id = e?.dataset.formId;\n          const msg = e?.dataset.confirmMessage;\n          if (confirm(msg || \"Are you sure you wish to delete this address?\")) {\n            Shopify.postLink(\"/account/addresses/\" + id, {\n              parameters: { _method: \"delete\" },\n            });\n          }\n        });\n      });\n    },\n    addAddresses: function () {\n      if (Shopify && document.getElementById(\"AddressCountryNew\")) {\n        new Shopify.CountryProvinceSelector(\n          \"AddressCountryNew\",\n          \"AddressProvinceNew\",\n          {\n            hideElement: \"AddressProvinceNewContainer\",\n          }\n        );\n      }\n      const edit = document.querySelectorAll(\".edit-country-option\");\n      edit.forEach((e) => {\n        const formId = e?.dataset.formId;\n        const editCountry = \"AddressCountry_\" + formId;\n        const editProvince = \"AddressProvince_\" + formId;\n        const editContainer = \"AddressProvinceContainer_\" + formId;\n        new Shopify.CountryProvinceSelector(editCountry, editProvince, {\n          hideElement: editContainer,\n        });\n      });\n    },\n  };\n})();\nBlsCustomer.init();\nclass IdeaProducts extends PopupBase {\n  constructor() {\n    super();\n    this.view_idea_product = this.querySelector(\".view_idea_product\");\n    this.content = this.querySelector(\".idea-product-list\");\n    this.close = this.querySelector(\".close\");\n    this.header = this.dataset.contentHeader;\n    this.popup = this.dataset.popup == \"true\";\n    this.init();\n  }\n  init() {\n    const _this = this;\n    this.view_idea_product.addEventListener(\"click\", (e) => {\n      _this.toggleViewIdeaProducts(\"show\");\n    });\n    this.close.addEventListener(\"click\", (e) => {\n      _this.toggleViewIdeaProducts.bind(_this)();\n    });\n    document.addEventListener(\n      \"modal:opened\",\n      this.handleModalOpened.bind(this)\n    );\n  }\n\n  toggleViewIdeaProducts(type = \"hidden\") {\n    if (type == \"hidden\") {\n      this.classList.remove(\"active\");\n    } else {\n      if (this.popup) {\n        if (window.innerWidth <= 767) {\n          const content =\n            this.querySelector(\"template\").content.firstElementChild.cloneNode(\n              true\n            ).outerHTML;\n          if (content) {\n            this.initPopup(\n              content,\n              `<h3 class=\"title-popup h5 my-0 px-20 px-md-30 py-20 border-bottom\">${this.header}</h3>`,\n              \"popup-idea-product\"\n            );\n          }\n        } else {\n          this.classList.add(\"active\");\n        }\n      } else {\n        this.classList.add(\"active\");\n      }\n    }\n  }\n\n  handleModalOpened() {\n    BlsLazyloadImg.init();\n  }\n}\n\ncustomElements.define(\"idea-product\", IdeaProducts);\n\nconst outfit_idea = document.querySelector(\".outfit_idea\");\nif (outfit_idea) {\n  document.body.addEventListener(\"click\", function (event) {\n    if (!event.target.closest(\".idea-product\")) {\n      const ideaProductInstances = document.querySelectorAll(\"idea-product\");\n      ideaProductInstances.forEach((instance) => {\n        instance.toggleViewIdeaProducts();\n      });\n    }\n  });\n}\nclass ProgressStockBar extends HTMLElement {\n  constructor() {\n    super();\n    Motion.inView(this, this.init.bind(this), { margin: \"0px 0px -10px 0px\" });\n  }\n\n  init() {\n    this.style.setProperty(\"--percent\", `100%`);\n\n    setTimeout(() => {\n      this.style.setProperty(\"--percent\", `${this.dataset.progress}%`);\n    }, 200);\n  }\n}\ncustomElements.define(\"progress-stock-bar\", ProgressStockBar);\nclass HeaderTotalPrice extends HTMLElement {\n  constructor() {\n    super();\n  }\n  updateTotal(cart) {\n    this.minicart_total = this.querySelector(\"[data-cart-subtotal-price]\");\n    if (!this.minicart_total) return;\n    if (cart.total_price == undefined) return;\n    const price_format = Shopify.formatMoney(\n      cart.total_price,\n      cartStrings?.money_format\n    );\n    this.minicart_total.innerHTML = price_format;\n  }\n}\ncustomElements.define(\"header-total-price\", HeaderTotalPrice);\nclass ProductWithBanner extends HTMLElement {\n  constructor() {\n    super();\n    this.bannerImages = this.querySelectorAll(\".product-banner__image\");\n    this.init();\n  }\n\n  init() {\n    this.waitForSlideSection();\n  }\n\n  waitForSlideSection() {\n    const slideSection = this.querySelector(\"slide-section\");\n    if (!slideSection || !slideSection.globalSlide) {\n      setTimeout(() => this.waitForSlideSection(), 100);\n      return;\n    }\n    slideSection.updateActiveBanner = () => {};\n    slideSection.globalSlide.on(\"slideChange\", () => {\n      this.updateActiveBanner(slideSection.globalSlide);\n    });\n    this.updateActiveBanner(slideSection.globalSlide, true);\n  }\n\n  updateActiveBanner(swiper, isInitial = false) {\n    if (!swiper || !this.bannerImages || this.bannerImages.length <= 0) return;\n    if (isInitial) {\n    } else {\n      const activeSlide = swiper.slides[swiper.activeIndex];\n      if (!activeSlide) return;\n      const blockIdFromSlide = activeSlide.dataset.blockId;\n      const backgroundColor = activeSlide.dataset.backgroundColor;\n      this.style.setProperty(\n        \"--content_bg_color\",\n        backgroundColor || \"#ffffff\"\n      );\n      const blockId =\n        blockIdFromSlide ||\n        activeSlide.querySelector(\".block-content__item\")?.dataset.blockId ||\n        this.querySelectorAll(\".swiper-slide\")[swiper.realIndex]?.dataset\n          .blockId;\n      this.bannerImages.forEach((image) => {\n        image.classList.remove(\"active\");\n      });\n      let matchingBanner;\n      if (blockId) {\n        matchingBanner = Array.from(this.bannerImages).find(\n          (image) => image.dataset.blockId === blockId\n        );\n      }\n\n      if (matchingBanner) {\n        matchingBanner.classList.add(\"active\");\n      } else {\n        const index = swiper.realIndex;\n        if (this.bannerImages[index]) {\n          this.bannerImages[index].classList.add(\"active\");\n        }\n      }\n    }\n  }\n}\ncustomElements.define(\"product-with-banner\", ProductWithBanner);\n\n// js for product addons\nclass ProductAddons extends PopupBase {\n  constructor() {\n    super();\n    this.productPopupDiv = this.querySelector(\".product-addons__content\");\n    this.init();\n  }\n  init() {\n    if (this.productPopupDiv) {\n      this.addEventListener(\"click\", this.onClick.bind(this));\n    }\n  }\n  onClick() {\n    const html = this.productPopupDiv;\n    if (!html) return;\n    html.classList.remove(\"hidden\");\n    this.initPopup(\n      html,\n      `<h3 class=\"title-popup h5 my-0 px-20 px-md-30 py-20 border-bottom\">${this.dataset?.textHeader}</h3>`\n    );\n  }\n}\ncustomElements.define(\"product-addons\", ProductAddons);\nclass InstagramShop extends PopupBase {\n  constructor() {\n    super();\n    this.popupDiv = this.querySelector(\".popup-content\");\n    if (this.popupDiv || this.classList.contains(\"instagram-item\")) {\n      this.addEventListener(\"click\", this.onClick.bind(this));\n    }\n  }\n\n  onClick() {\n    const template = this.querySelector(\"template\");\n    if (template) {\n      const content = template.content.firstElementChild.cloneNode(true).outerHTML;\n      this.initPopup(content);\n    }\n  }\n}\ncustomElements.define(\"instagram-shop\", InstagramShop);\n\nclass PopupLink extends PopupBase {\n  constructor() {\n    super();\n    this.addEventListener(\"click\", this.onClick.bind(this));\n    this.popupWidth = this.dataset?.popupWidth || '600px';\n  }\n\n  onClick() {\n    const template = this.querySelector(\"template\");\n    if (template) {\n      const content = template.content.firstElementChild.cloneNode(true).outerHTML;\n      this.initPopup(content,'', 'modal-popup-link', this.popupWidth);\n    }\n  }\n}\ncustomElements.define(\"popup-link\", PopupLink);\n\nclass CountUp {\n  constructor(el) {\n    this.el = el;\n    this.init();\n  }\n\n  init() {\n    const numbers = this.el.querySelectorAll('[data-end-number]');\n\n    if (numbers.length > 0) {\n      numbers.forEach((el) => {\n        this.setupInView(el);\n      });\n    }\n  }\n\n  setupInView(el) {\n    Motion.inView(el, () => {\n      const endNumber = parseFloat(el.dataset.endNumber.replace(/,/g, ''));\n      const decimals = this.countDecimals(endNumber);\n      this.animateNumber(el, endNumber, decimals);\n    });\n  }\n\n  animateNumber(el, endNumber, decimals) {\n    Motion.animate(0, endNumber, {\n      duration: 2,\n      ease: 'easeOutQuint',\n      onUpdate: (latest) => {\n        el.innerHTML = this.formatNumber(latest, decimals);\n      },\n    });\n  }\n\n  countDecimals(val) {\n    if (Math.floor(val) === val) return 0;\n    return val.toString().split('.')[1].length || 0;\n  }\n\n  formatNumber(val, decimals) {\n    return val.toLocaleString('en-US', {\n      minimumFractionDigits: decimals,\n      maximumFractionDigits: decimals,\n    });\n  }\n}\n\nconst dataModules = [...document.querySelectorAll('[data-module=\"countup\"]')];\ndataModules.forEach((element) => {\n  element.dataset.module.split(' ').forEach(() => {\n    new CountUp(element);\n  });\n});"],
  "mappings": "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",
  "names": ["x", "observer", "slideAnime", "exitTime", "elements", "userConfig", "timeLeft", "cartRecommend"]
}
