{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/cart-drawer.js?id=993154%2540"],
  "sourcesContent": ["class CartDrawer extends HTMLElement {\n  constructor() {\n    super();\n\n    this.addEventListener(\"keyup\", (evt) => evt.code === \"Escape\" && this.close());\n    this.querySelector(\"#CartDrawer-Overlay\").addEventListener(\"click\", this.close.bind(this));\n    this.setHeaderCartIconAccessibility();\n    this.bindUpsellButton();\n  }\n\n  setHeaderCartIconAccessibility() {\n    const cartLink = document.querySelector(\"#cart-icon-bubble\");\n    if (!cartLink) return;\n\n    cartLink.setAttribute(\"role\", \"button\");\n    cartLink.setAttribute(\"aria-haspopup\", \"dialog\");\n    cartLink.addEventListener(\"click\", (event) => {\n      event.preventDefault();\n      this.open(cartLink);\n    });\n    cartLink.addEventListener(\"keydown\", (event) => {\n      if (event.code.toUpperCase() === \"SPACE\") {\n        event.preventDefault();\n        this.open(cartLink);\n      }\n    });\n  }\n\n  bindUpsellButton() {\n    this.addEventListener(\"click\", (event) => {\n      const upsellButton = event.target.closest(\".upsell-add-button\");\n      if (upsellButton) {\n        event.preventDefault();\n\n        const form = upsellButton.closest(\".upsell-form\");\n        const variantId = form.querySelector('input[name=\"id\"]').value;\n\n        this.addItemToCart(variantId);\n      }\n    });\n  }\n\n  async addItemToCart(variantId) {\n    const sections = this.getSectionsToRender().map((section) => section.id);\n\n    const body = JSON.stringify({\n      id: variantId,\n      quantity: 1,\n      sections: sections,\n      sections_url: window.location.pathname,\n    });\n\n    try {\n      const response = await fetch(`${routes.cart_add_url}`, {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n          Accept: `application/json`,\n        },\n        body,\n      });\n\n      if (response.status === 422) {\n        const errorData = await response.json();\n        // Handle error (e.g., show a notification)\n        console.error(\"Error adding item to cart:\", errorData.description);\n        return;\n      }\n\n      const parsedState = await response.json();\n      this.renderContents(parsedState);\n    } catch (error) {\n      console.error(\"Error adding item to cart:\", error);\n    }\n  }\n\n  startCountdownTimer() {\n    const timerElement = document.getElementById(\"cart-countdown-timer\");\n    if (!timerElement) return;\n\n    // Reset timer to 10 minutes\n    let minutes = 10;\n    let seconds = 0;\n\n    // Clear any existing timer\n    if (this.countdownInterval) {\n      clearInterval(this.countdownInterval);\n    }\n\n    // Update the timer display\n    const updateTimer = () => {\n      timerElement.textContent = `${minutes.toString().padStart(2, \"0\")}:${seconds.toString().padStart(2, \"0\")}`;\n    };\n\n    // Initial display\n    updateTimer();\n\n    // Start the countdown\n    this.countdownInterval = setInterval(() => {\n      if (seconds === 0) {\n        if (minutes === 0) {\n          clearInterval(this.countdownInterval);\n          return;\n        }\n        minutes--;\n        seconds = 59;\n      } else {\n        seconds--;\n      }\n\n      updateTimer();\n    }, 1000);\n  }\n\n  open(triggeredBy) {\n    if (triggeredBy) this.setActiveElement(triggeredBy);\n    const cartDrawerNote = this.querySelector('[id^=\"Details-\"] summary');\n    if (cartDrawerNote && !cartDrawerNote.hasAttribute(\"role\")) this.setSummaryAccessibility(cartDrawerNote);\n    // here the animation doesn't seem to always get triggered. A timeout seem to help\n    setTimeout(() => {\n      this.classList.add(\"animate\", \"active\");\n    });\n\n    this.addEventListener(\n      \"transitionend\",\n      () => {\n        const containerToTrapFocusOn = this.classList.contains(\"is-empty\")\n          ? this.querySelector(\".drawer__inner-empty\")\n          : document.getElementById(\"CartDrawer\");\n        const focusElement = this.querySelector(\".drawer__inner\") || this.querySelector(\".drawer__close\");\n        trapFocus(containerToTrapFocusOn, focusElement);\n      },\n      { once: true },\n    );\n\n    document.body.classList.add(\"overflow-hidden\");\n\n    // Check if jQuery and slick are loaded before initializing\n    if (typeof $ !== \"undefined\" && typeof $.fn.slick !== \"undefined\") {\n      const $slider = $(\".gbfrequently-bought-with-main-whole-slider\");\n      if ($slider.length > 0) {\n        $slider.slick({\n          infinite: true,\n          autoplaySpeed: 1000,\n          autoplay: false,\n          slidesToShow: 1,\n          slidesToScroll: 1,\n          arrows: false,\n          dots: true,\n        });\n        $slider.css(\"opacity\", \"1\");\n      }\n    }\n\n    // Start the countdown timer when drawer opens\n    this.startCountdownTimer();\n  }\n\n  close() {\n    // Check if cart customization mode is active\n    const cartCustomizationMode = document.querySelector(\"cart-drawer\").classList.contains(\"customization-mode\");\n    if (cartCustomizationMode) {\n      alert(\"Cart Customization Mode is active. Disable it in Theme Settings > Cart Drawer to allow closing.\");\n      return;\n    }\n\n    this.classList.remove(\"active\");\n    removeTrapFocus(this.activeElement);\n    document.body.classList.remove(\"overflow-hidden\");\n\n    // Clear the countdown timer when drawer closes\n    if (this.countdownInterval) {\n      clearInterval(this.countdownInterval);\n    }\n  }\n\n  setSummaryAccessibility(cartDrawerNote) {\n    cartDrawerNote.setAttribute(\"role\", \"button\");\n    cartDrawerNote.setAttribute(\"aria-expanded\", \"false\");\n\n    if (cartDrawerNote.nextElementSibling.getAttribute(\"id\")) {\n      cartDrawerNote.setAttribute(\"aria-controls\", cartDrawerNote.nextElementSibling.id);\n    }\n\n    cartDrawerNote.addEventListener(\"click\", (event) => {\n      event.currentTarget.setAttribute(\"aria-expanded\", !event.currentTarget.closest(\"details\").hasAttribute(\"open\"));\n    });\n\n    cartDrawerNote.parentElement.addEventListener(\"keyup\", onKeyUpEscape);\n  }\n\n  renderContents(parsedState) {\n    this.querySelector(\".drawer__inner\").classList.contains(\"is-empty\") &&\n      this.querySelector(\".drawer__inner\").classList.remove(\"is-empty\");\n    this.productId = parsedState.id;\n    this.getSectionsToRender().forEach((section) => {\n      const sectionElement = section.selector\n        ? document.querySelector(section.selector)\n        : document.getElementById(section.id);\n\n      if (!sectionElement) return;\n      if (section.id == \"cart-drawer\" || section.selector == \"#CartDrawer\") {\n        const newCartDrawer = this.getSectionDOM(parsedState.sections[section.id], section.selector);\n        updateCartDrawer(sectionElement, newCartDrawer);\n      } else {\n        sectionElement.innerHTML = this.getSectionInnerHTML(parsedState.sections[section.id], section.selector);\n      }\n    });\n\n    setTimeout(() => {\n      this.querySelector(\"#CartDrawer-Overlay\").addEventListener(\"click\", this.close.bind(this));\n      this.open();\n    });\n\n    // Check if jQuery and slick are loaded before initializing\n    if (typeof $ !== \"undefined\" && typeof $.fn.slick !== \"undefined\") {\n      const $slider = $(\".gbfrequently-bought-with-main-whole-slider\");\n      if ($slider.length > 0) {\n        $slider.slick({\n          infinite: true,\n          autoplaySpeed: 1000,\n          autoplay: false,\n          slidesToShow: 1,\n          slidesToScroll: 1,\n          arrows: false,\n          dots: true,\n        });\n        $slider.css(\"opacity\", \"1\");\n      }\n    }\n  }\n\n  getSectionInnerHTML(html, selector = \".shopify-section\") {\n    return new DOMParser().parseFromString(html, \"text/html\").querySelector(selector).innerHTML;\n  }\n\n  getSectionsToRender() {\n    setTimeout(function () {\n      // Check if jQuery and slick are loaded before initializing\n      if (typeof $ !== \"undefined\" && typeof $.fn.slick !== \"undefined\") {\n        var $slider = $(\".gbfrequently-bought-with-main-whole-slider\");\n        if ($slider.length > 0 && !$slider.hasClass(\"slick-initialized\")) {\n          $slider.slick({\n            infinite: true,\n            autoplaySpeed: 1000,\n            autoplay: false,\n            slidesToShow: 1,\n            slidesToScroll: 1,\n            arrows: false,\n            dots: true,\n            // adaptiveHeight: true\n            //prevArrow: $('.our-customer-slider-prev'),\n            //nextArrow: $('.our-customer-slider-next'),\n          });\n          $slider.css(\"opacity\", \"1\");\n        }\n      }\n    }, 500);\n\n    return [\n      {\n        id: \"cart-drawer\",\n        selector: \"#CartDrawer\",\n      },\n      {\n        id: \"cart-icon-bubble\",\n      },\n    ];\n  }\n\n  getSectionDOM(html, selector = \".shopify-section\") {\n    return new DOMParser().parseFromString(html, \"text/html\").querySelector(selector);\n  }\n\n  setActiveElement(element) {\n    this.activeElement = element;\n  }\n}\n\ncustomElements.define(\"cart-drawer\", CartDrawer);\n\n// Wait for CartItems to be defined before extending it\nif (typeof CartItems !== \"undefined\") {\n  // CartItems is already loaded\n  defineCartDrawerItems();\n} else {\n  // Wait for cart.js to load and define CartItems\n  const checkCartItems = setInterval(() => {\n    if (typeof CartItems !== \"undefined\") {\n      clearInterval(checkCartItems);\n      defineCartDrawerItems();\n    }\n  }, 50);\n}\n\nfunction defineCartDrawerItems() {\n  if (customElements.get(\"cart-drawer-items\")) {\n    return; // Already defined\n  }\n\n  class CartDrawerItems extends CartItems {\n    getSectionsToRender() {\n      setTimeout(function () {\n        // Check if jQuery and slick are loaded before initializing\n        if (typeof $ !== \"undefined\" && typeof $.fn.slick !== \"undefined\") {\n          const $slider = $(\".gbfrequently-bought-with-main-whole-slider\");\n          if ($slider.length > 0) {\n            $slider.slick({\n              infinite: true,\n              autoplaySpeed: 1000,\n              autoplay: false,\n              slidesToShow: 1,\n              slidesToScroll: 1,\n              arrows: false,\n              dots: true,\n            });\n            $slider.css(\"opacity\", \"1\");\n          }\n        }\n      }, 500);\n\n      return [\n        {\n          id: \"CartDrawer\",\n          section: \"cart-drawer\",\n          selector: \".drawer__inner\",\n        },\n        {\n          id: \"cart-icon-bubble\",\n          section: \"cart-icon-bubble\",\n          selector: \".shopify-section\",\n        },\n      ];\n    }\n  }\n\n  customElements.define(\"cart-drawer-items\", CartDrawerItems);\n}\n"],
  "mappings": "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",
  "names": []
}
