{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/ipax-home-cart.js?ipax=4"],
  "sourcesContent": ["class IpaxHomeCart {\n  constructor() {\n    this.root = document.getElementById('ipax-added-cart');\n    this.closeTimer = null;\n    this.bindEvents();\n  }\n\n  bindEvents() {\n    document.addEventListener('click', (event) => this.handleClick(event));\n\n    if (!this.root) return;\n\n    this.root.querySelectorAll('[data-ipax-added-cart-close]').forEach((el) => {\n      el.addEventListener('click', () => this.closePanel());\n    });\n\n    const openCartBtn = this.root.querySelector('[data-ipax-added-cart-open]');\n    openCartBtn?.addEventListener('click', () => {\n      this.closePanel();\n      this.openThemeCartDrawer();\n    });\n\n    document.addEventListener('keydown', (event) => {\n      if (event.key === 'Escape' && this.isOpen()) this.closePanel();\n    });\n  }\n\n  async handleClick(event) {\n    const button = event.target.closest('[data-ipax-add-to-cart]');\n    if (!button) return;\n\n    event.preventDefault();\n    event.stopPropagation();\n\n    if (button.disabled || button.dataset.loading === 'true') return;\n\n    const variantId = Number(button.dataset.variantId);\n    if (!variantId) return;\n\n    const root = window.Shopify?.routes?.root || '/';\n    button.dataset.loading = 'true';\n    button.setAttribute('aria-busy', 'true');\n\n    try {\n      const sectionIds = [...document.querySelectorAll('cart-items-component')]\n        .map((el) => el.dataset.sectionId)\n        .filter(Boolean);\n\n      const payload = {\n        items: [{ id: variantId, quantity: 1 }],\n      };\n\n      if (sectionIds.length) {\n        payload.sections = sectionIds.join(',');\n      }\n\n      const addResponse = await fetch(`${root}cart/add.js`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          Accept: 'application/json',\n        },\n        body: JSON.stringify(payload),\n      });\n\n      const addData = await addResponse.json();\n\n      if (!addResponse.ok) {\n        throw new Error(addData.description || addData.message || 'N\u00E3o foi poss\u00EDvel adicionar ao carrinho.');\n      }\n\n      const cartResponse = await fetch(`${root}cart.js`, {\n        headers: { Accept: 'application/json' },\n      });\n      const cart = await cartResponse.json();\n\n      document.dispatchEvent(\n        new CustomEvent('cart:update', {\n          bubbles: true,\n          detail: {\n            resource: cart,\n            data: {\n              source: 'ipax-home-card',\n              variantId: String(variantId),\n              productId: button.dataset.productId,\n              itemCount: cart.item_count,\n              sections: addData.sections,\n            },\n          },\n        })\n      );\n\n      this.animateButton(button);\n      this.flyToCart(button, addData.image || button.dataset.productImage);\n      if (typeof window.ipaxOpenTcaCart === 'function') {\n        window.ipaxOpenTcaCart();\n      } else {\n        this.showPanel(addData, button);\n      }\n    } catch (error) {\n      console.warn('[iPax Home Cart]', error);\n      window.alert(error.message || 'N\u00E3o foi poss\u00EDvel adicionar ao carrinho.');\n    } finally {\n      button.dataset.loading = 'false';\n      button.removeAttribute('aria-busy');\n    }\n  }\n\n  animateButton(button) {\n    button.classList.add('is-added');\n    window.setTimeout(() => button.classList.remove('is-added'), 900);\n  }\n\n  flyToCart(button, imageUrl) {\n    if (!imageUrl) return;\n\n    const cartIcon = document.querySelector('cart-icon, [data-testid=\"cart-icon\"]');\n    if (!cartIcon) return;\n\n    const from = button.getBoundingClientRect();\n    const to = cartIcon.getBoundingClientRect();\n    const flyer = document.createElement('img');\n\n    flyer.src = imageUrl;\n    flyer.alt = '';\n    flyer.className = 'ipax-cart-flyer';\n    flyer.style.left = `${from.left + from.width / 2}px`;\n    flyer.style.top = `${from.top + from.height / 2}px`;\n\n    document.body.appendChild(flyer);\n\n    const dx = to.left + to.width / 2 - (from.left + from.width / 2);\n    const dy = to.top + to.height / 2 - (from.top + from.height / 2);\n\n    const animation = flyer.animate(\n      [\n        { transform: 'translate(-50%, -50%) scale(1)', opacity: 1 },\n        { transform: `translate(calc(-50% + ${dx}px), calc(-50% + ${dy}px)) scale(0.2)`, opacity: 0.15 },\n      ],\n      { duration: 650, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', fill: 'forwards' }\n    );\n\n    animation.onfinish = () => flyer.remove();\n    cartIcon.classList.add('ipax-cart-icon--pulse');\n    window.setTimeout(() => cartIcon.classList.remove('ipax-cart-icon--pulse'), 500);\n  }\n\n  showPanel(addData, button) {\n    if (!this.root) return;\n\n    const imageEl = this.root.querySelector('#ipax-added-cart-image');\n    const placeholderEl = this.root.querySelector('#ipax-added-cart-placeholder');\n    const titleEl = this.root.querySelector('#ipax-added-cart-product-title');\n    const variantEl = this.root.querySelector('#ipax-added-cart-variant');\n    const priceEl = this.root.querySelector('#ipax-added-cart-price');\n\n    const imageUrl = addData.image || button.dataset.productImage || '';\n    const title = addData.product_title || button.dataset.productTitle || '';\n    const variant = addData.variant_title && addData.variant_title !== 'Default Title' ? addData.variant_title : '';\n    const price = this.formatMoney(addData.final_price || addData.price || Number(button.dataset.productPrice || 0));\n\n    if (titleEl) titleEl.textContent = title;\n    if (priceEl) priceEl.textContent = price;\n\n    if (variantEl) {\n      if (variant) {\n        variantEl.textContent = variant;\n        variantEl.hidden = false;\n      } else {\n        variantEl.textContent = '';\n        variantEl.hidden = true;\n      }\n    }\n\n    if (imageEl && imageUrl) {\n      imageEl.src = imageUrl;\n      imageEl.alt = title;\n      imageEl.hidden = false;\n      if (placeholderEl) placeholderEl.hidden = true;\n    } else if (placeholderEl) {\n      placeholderEl.hidden = false;\n      if (imageEl) imageEl.hidden = true;\n    }\n\n    this.root.hidden = false;\n    this.root.setAttribute('aria-hidden', 'false');\n    requestAnimationFrame(() => this.root.classList.add('is-open'));\n\n    window.clearTimeout(this.closeTimer);\n    this.closeTimer = window.setTimeout(() => this.closePanel(), 6000);\n  }\n\n  closePanel() {\n    if (!this.root || !this.isOpen()) return;\n\n    window.clearTimeout(this.closeTimer);\n    this.root.classList.remove('is-open');\n\n    window.setTimeout(() => {\n      if (!this.root.classList.contains('is-open')) {\n        this.root.hidden = true;\n        this.root.setAttribute('aria-hidden', 'true');\n      }\n    }, 320);\n  }\n\n  isOpen() {\n    return this.root && !this.root.hidden;\n  }\n\n  openThemeCartDrawer() {\n    if (typeof window.ipaxOpenTcaCart === 'function') {\n      window.ipaxOpenTcaCart();\n      return;\n    }\n\n    const drawer = document.querySelector('cart-drawer-component');\n    if (drawer && typeof drawer.open === 'function') {\n      drawer.open();\n      return;\n    }\n\n    window.location.href = `${window.Shopify?.routes?.root || '/'}cart`;\n  }\n\n  formatMoney(cents) {\n    if (window.Shopify?.formatMoney) return Shopify.formatMoney(cents);\n    return `R$ ${(cents / 100).toFixed(2).replace('.', ',')}`;\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  if (window.__ipaxHomeCartInitialized) return;\n  window.__ipaxHomeCartInitialized = true;\n  new IpaxHomeCart();\n});\n"],
  "mappings": "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",
  "names": []
}
