{
  "version": 3,
  "sources": ["/cdn/shop/t/1/assets/ipax-home-cart.js?ipax=5"],
  "sourcesContent": ["class IpaxHomeCart {\n  constructor() {\n    this.root = document.getElementById('ipax-added-cart');\n    this.closeTimer = null;\n    this.checkoutBusy = false;\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(true));\n    });\n\n    const checkoutBtn = this.root.querySelector('[data-ipax-added-cart-checkout]');\n    checkoutBtn?.addEventListener('click', () => this.finalizeCheckout());\n\n    // Compatibilidade com markup antigo \"Ver carrinho\"\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(true);\n    });\n  }\n\n  normalizeAddItem(addData) {\n    if (!addData) return {};\n    if (Array.isArray(addData.items) && addData.items.length) return addData.items[0];\n    return addData;\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.presentAddedItem(addData, button);\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  presentAddedItem(addData, sourceEl) {\n    const item = this.normalizeAddItem(addData);\n    if (!item.image) {\n      item.image =\n        sourceEl?.dataset?.productImage ||\n        document.querySelector('.ipax-product__media img, [data-ipax-product] img')?.src ||\n        '';\n    }\n    if (!item.product_title && !item.title) {\n      item.product_title =\n        sourceEl?.dataset?.productTitle ||\n        document.querySelector('.ipax-product__title, [data-ipax-product] h1')?.textContent?.trim() ||\n        '';\n    }\n    const imageUrl = item.image || '';\n    this.closeThemeDrawer();\n    this.animateButton(sourceEl);\n    this.flyToCart(sourceEl, imageUrl);\n    this.showPanel(item, sourceEl);\n  }\n\n  animateButton(button) {\n    if (!button) return;\n    button.classList.add('is-added');\n    window.setTimeout(() => button.classList.remove('is-added'), 900);\n  }\n\n  flyToCart(button, imageUrl) {\n    if (!imageUrl || !button) 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 item = this.normalizeAddItem(addData);\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 = item.image || button?.dataset?.productImage || '';\n    const title = item.product_title || item.title || button?.dataset?.productTitle || '';\n    const variant = item.variant_title && item.variant_title !== 'Default Title' ? item.variant_title : '';\n    const price = this.formatMoney(item.final_price || item.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    // Sync + rAF: evita painel \u201Cpiscar\u201D e fechar antes do is-open\n    this.root.classList.add('is-open');\n    this.openLockUntil = Date.now() + 700;\n    requestAnimationFrame(() => this.root?.classList.add('is-open'));\n\n    window.clearTimeout(this.closeTimer);\n    this.closeTimer = window.setTimeout(() => this.closePanel(), 12000);\n  }\n\n  closePanel(force = false) {\n    if (!this.root || !this.isOpen()) return;\n    // Ignora fechamento acidental logo ap\u00F3s abrir (drawer do tema / focus trap)\n    if (!force && this.openLockUntil && Date.now() < this.openLockUntil) return;\n\n    window.clearTimeout(this.closeTimer);\n    this.openLockUntil = 0;\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  async finalizeCheckout() {\n    if (this.checkoutBusy) return;\n    this.checkoutBusy = true;\n\n    const checkoutBtn = this.root?.querySelector('[data-ipax-added-cart-checkout]');\n    const shopRoot = window.Shopify?.routes?.root || '/';\n\n    if (checkoutBtn) {\n      checkoutBtn.disabled = true;\n      checkoutBtn.setAttribute('aria-busy', 'true');\n    }\n\n    try {\n      this.closePanel();\n\n      if (typeof window.ipaxGoToAlphazzCheckout === 'function') {\n        await window.ipaxGoToAlphazzCheckout();\n        return;\n      }\n\n      if (typeof window.ipaxTriggerAlphazzCheckout === 'function') {\n        window.ipaxTriggerAlphazzCheckout(shopRoot);\n        return;\n      }\n\n      window.location.assign(`${shopRoot}checkout`);\n    } catch (error) {\n      console.warn('[iPax Home Cart] checkout', error);\n      window.location.assign(`${shopRoot}checkout`);\n    } finally {\n      this.checkoutBusy = false;\n      if (checkoutBtn) {\n        checkoutBtn.disabled = false;\n        checkoutBtn.removeAttribute('aria-busy');\n      }\n    }\n  }\n\n  closeThemeDrawer() {\n    const drawer = document.querySelector('cart-drawer-component');\n    if (!drawer) return;\n    try {\n      if (typeof drawer.close === 'function') drawer.close();\n    } catch (_) {\n      /* ignore */\n    }\n    const dialog = drawer.querySelector('dialog');\n    if (dialog?.open) {\n      try {\n        dialog.close();\n      } catch (_) {\n        dialog.removeAttribute('open');\n      }\n    }\n  }\n\n  openThemeCartDrawer() {\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\nfunction bootIpaxHomeCart() {\n  if (window.__ipaxHomeCartInitialized) return;\n  window.__ipaxHomeCartInitialized = true;\n  window.ipaxHomeCart = new IpaxHomeCart();\n}\n\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', bootIpaxHomeCart);\n} else {\n  bootIpaxHomeCart();\n}\n"],
  "mappings": "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",
  "names": []
}
