{
  "version": 3,
  "sources": ["/cdn/shop/t/4/assets/cart-drawer.js?r=1789080886824"],
  "sourcesContent": ["class CartDrawer {\n  constructor() {\n    this.drawer = document.getElementById('cart-drawer');\n    this.overlay = document.getElementById('cart-drawer-overlay');\n    this.body = document.getElementById('cart-drawer-body');\n    this.badge = document.getElementById('cart-count-badge');\n    this.countLabel = document.getElementById('cart-drawer-count');\n    this.isLoading = false;\n\n    if (!this.drawer) return;\n\n    document.querySelectorAll('[data-cart-open]').forEach((btn) => {\n      btn.addEventListener('click', () => this.open());\n    });\n\n    document.querySelectorAll('[data-cart-close]').forEach((btn) => {\n      btn.addEventListener('click', () => this.close());\n    });\n\n    this.overlay?.addEventListener('click', () => this.close());\n\n    document.addEventListener('keydown', (e) => {\n      if (e.key === 'Escape' && this.drawer.classList.contains('is-open')) {\n        this.close();\n      }\n    });\n\n    this.body?.addEventListener('click', (e) => {\n      const qtyBtn = e.target.closest('[data-qty-change]');\n      if (qtyBtn) {\n        e.preventDefault();\n        const key = qtyBtn.dataset.key;\n        const qty = parseInt(qtyBtn.dataset.qty, 10);\n        this.changeQuantity(key, qty);\n        return;\n      }\n\n      const removeBtn = e.target.closest('[data-cart-remove]');\n      if (removeBtn) {\n        e.preventDefault();\n        this.changeQuantity(removeBtn.dataset.key, 0);\n      }\n    });\n\n    document.addEventListener('click', (e) => {\n      const addBtn = e.target.closest('[data-add-to-cart]');\n      if (!addBtn || addBtn.disabled) return;\n\n      e.preventDefault();\n      const form = addBtn.closest('form');\n      if (form) {\n        this.addFromForm(form, addBtn);\n      } else {\n        const variantId = addBtn.dataset.variantId;\n        const title = addBtn.dataset.productTitle;\n        if (variantId) {\n          this.addItem(variantId, 1, title);\n        }\n      }\n    });\n\n    const productForm = document.getElementById('product-form');\n    if (productForm) {\n      productForm.addEventListener('submit', (e) => {\n        e.preventDefault();\n        const btn = productForm.querySelector('[type=\"submit\"]');\n        this.addFromForm(productForm, btn);\n      });\n    }\n\n    document.querySelectorAll('form[id^=\"product-form-\"]').forEach((form) => {\n      form.addEventListener('submit', (e) => {\n        e.preventDefault();\n        const btn = form.querySelector('[type=\"submit\"]');\n        this.addFromForm(form, btn);\n      });\n    });\n\n    this.refresh();\n  }\n\n  open() {\n    this.drawer.classList.add('is-open');\n    this.overlay?.classList.add('is-open');\n    document.body.style.overflow = 'hidden';\n    this.refresh();\n  }\n\n  close() {\n    this.drawer.classList.remove('is-open');\n    this.overlay?.classList.remove('is-open');\n    document.body.style.overflow = '';\n  }\n\n  async refresh() {\n    try {\n      const res = await fetch(`${window.Shopify?.routes?.root || '/'}?section_id=cart-drawer`);\n      const html = await res.text();\n      const parser = new DOMParser();\n      const doc = parser.parseFromString(html, 'text/html');\n      const newBody = doc.getElementById('cart-drawer-body');\n      const newCount = doc.getElementById('cart-drawer-count');\n      const newBadge = doc.getElementById('cart-count-badge');\n\n      if (newBody && this.body) {\n        this.body.innerHTML = newBody.innerHTML;\n      }\n      if (newCount && this.countLabel) {\n        this.countLabel.textContent = newCount.textContent;\n      }\n      if (newBadge && this.badge) {\n        const count = newBadge.textContent.trim();\n        if (count && count !== '0') {\n          this.badge.textContent = count;\n          this.badge.hidden = false;\n        } else {\n          this.badge.hidden = true;\n        }\n      }\n    } catch (err) {\n      console.error('Cart refresh failed', err);\n    }\n  }\n\n  setButtonLoading(btn, loading) {\n    if (!btn) return;\n    btn.disabled = loading;\n    const label = btn.dataset.label || btn.textContent;\n    if (loading) {\n      btn.dataset.label = label;\n      btn.innerHTML = '<span class=\"spinner\"></span>';\n    } else {\n      btn.textContent = btn.dataset.label || label;\n    }\n  }\n\n  async addItem(variantId, quantity, productTitle) {\n    if (this.isLoading) return;\n    this.isLoading = true;\n\n    try {\n      const res = await fetch(window.Shopify?.routes?.root + 'cart/add.js' || '/cart/add.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ items: [{ id: variantId, quantity }] }),\n      });\n\n      if (!res.ok) throw new Error('Add to cart failed');\n\n      await this.refresh();\n      this.open();\n\n      if (window.Eleftheria?.showToast) {\n        window.Eleftheria.showToast(\n          window.theme?.strings?.added || 'Added to bag',\n          productTitle || ''\n        );\n      }\n    } catch (err) {\n      console.error(err);\n    } finally {\n      this.isLoading = false;\n    }\n  }\n\n  async addFromForm(form, btn) {\n    if (this.isLoading) return;\n    this.isLoading = true;\n    this.setButtonLoading(btn, true);\n\n    try {\n      const formData = new FormData(form);\n      const res = await fetch(window.Shopify?.routes?.root + 'cart/add.js' || '/cart/add.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({\n          items: [{\n            id: formData.get('id'),\n            quantity: parseInt(formData.get('quantity') || '1', 10),\n          }],\n        }),\n      });\n\n      if (!res.ok) throw new Error('Add to cart failed');\n\n      const title = btn.dataset.productTitle || form.dataset.productTitle;\n      await this.refresh();\n      this.open();\n\n      if (window.Eleftheria?.showToast) {\n        window.Eleftheria.showToast(\n          window.theme?.strings?.added || 'Added to bag',\n          title || ''\n        );\n      }\n    } catch (err) {\n      console.error(err);\n    } finally {\n      this.isLoading = false;\n      this.setButtonLoading(btn, false);\n    }\n  }\n\n  async changeQuantity(key, quantity) {\n    try {\n      await fetch(window.Shopify?.routes?.root + 'cart/change.js' || '/cart/change.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ id: key, quantity }),\n      });\n      await this.refresh();\n    } catch (err) {\n      console.error(err);\n    }\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  window.Eleftheria.cart = new CartDrawer();\n});\n"],
  "mappings": "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",
  "names": []
}
