{
  "version": 3,
  "sources": ["/cdn/shop/t/15/assets/discount-coupon.js?=cache_050550f"],
  "sourcesContent": ["class ShopifyAPI {\n  constructor(url, accessToken) {\n    this.url = url;\n    this.accessToken = accessToken;\n  }\n\n  async updateCartDiscountCodes(cartId, discountCodes) {\n    const data = {\n      query: `\n        mutation cartDiscountCodesUpdate($cartId: ID!, $discountCodes: [String!]) {\n          cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {\n            cart {\n              discountCodes {\n                code\n                applicable\n                __typename\n              }\n              discountAllocations {\n                discountedAmount {\n                  amount\n                  currencyCode\n                }\n              }\n              cost {\n                subtotalAmount {\n                  amount\n                  currencyCode\n                }\n              }\n            }\n          }\n        }\n      `,\n      variables: {\n        cartId: 'gid://shopify/Cart/' + cartId,\n        discountCodes: discountCodes\n      }\n    };\n    const options = {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        'X-Shopify-Storefront-Access-Token': this.accessToken\n      },\n      body: JSON.stringify(data)\n    };\n\n    try {\n      const response = await fetch(this.url, options);\n      const responseData = await response.json();\n      return responseData;\n    } catch (error) {\n      console.error('Erro:', error);\n      throw new Error('Erro ao fazer requisi\u00E7\u00E3o \u00E0 API Shopify');\n    }\n  }\n}\n\n\n\n\n// token app store - generate in your store admin:  \n// APPS/ development apps/ API Storefront / scope: unauthenticated_read_checkouts\nconst shopifyAccessToken = \"710c3cd6adf3dfc307cc132ae40a0088\";\nconst shopifyUrl = \"https://healthyfoodnuts.com.br/\"; //url domain\n\n\nfunction updateCartPricesCoupons(result, shopifyUrl) {\n  fetch(shopifyUrl)\n      .then(response => {\n          if (response.ok) {\n              return response.text();\n          }\n          throw new Error('Erro ao carregar o carrinho.');\n      })\n      .then(html => {\n        const tempElement = document.createElement('div');\n        tempElement.innerHTML = html;\n\n        const selectors = ['#CartDrawer-CartItems', 'cart-drawer-items', '.cart-drawer__footer'];\n\n        setTimeout(function() {\n          try {\n            selectors.forEach(selector => {\n                const newContent = tempElement.querySelector(selector);\n                if (newContent) {\n                    const currentElement = document.querySelector(selector);\n                    if (currentElement) {\n                        currentElement.innerHTML = newContent.innerHTML;\n                        window.discountCodesFunction();\n                        window.showShippingCalculator();\n                        window.ShippingCalculator.init();\n                    } else {\n                        throw new Error(`Elemento ${selector} n\u00E3o encontrado no DOM atual.`);\n                    }\n                } else {\n                    throw new Error(`Div ${selector} n\u00E3o encontrada no HTML retornado.`);\n                  }\n                });\n              } catch (error) {\n                console.error('Erro:', error);\n            }\n        }, 800);\n\n          const totalCart = result.data.cartDiscountCodesUpdate.cart.cost.subtotalAmount.amount;\n          document.querySelector('.totals__total-value').textContent = formatCurrency(totalCart); // Atualiza o total do carrinho no DOM\n\n          window.triggerUpdateCoupon();\n          document.querySelector('.drawer__coupon-btn').removeAttribute('disabled');\n          document.querySelector('.remove-coupon').removeAttribute('disabled');\n      })\n      .catch(error => {\n          console.error('Erro:', error);\n          document.querySelector('.drawer__coupon-btn').removeAttribute('disabled');\n          document.querySelector('.remove-coupon').removeAttribute('disabled');\n      });\n}\n\nfunction formatCurrencyCart(value) {\n  const integerPart = Math.floor(value / 100).toString();\n  const decimalPart = (value % 100).toString().padStart(2, '0');\n  const formattedInteger = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n  return `${formattedInteger},${decimalPart}`;\n}\n\nfunction formatCurrency(value) {\n    // Converte o valor para n\u00FAmero\n    const numberValue = parseFloat(value);\n    \n    // Verifica se o valor \u00E9 um n\u00FAmero v\u00E1lido\n    if (isNaN(numberValue)) {\n        return 'Valor inv\u00E1lido';\n    }\n    \n    // Formata o n\u00FAmero para a moeda brasileira (BRL)\n    const formattedValue = numberValue.toLocaleString('pt-BR', {\n        style: 'currency',\n        currency: 'BRL',\n        minimumFractionDigits: 2\n    });\n    \n    return formattedValue;\n}\n\n\n\ndocument.addEventListener(\"DOMContentLoaded\", async function() {\n  window.discountCodesFunction = function() {\n\n    //checa descontos cart\n    fetch('/cart.js')\n    .then(response => response.json())\n    .then(data => {\n      const el = document.querySelector('.cart-drawer__footer .list-unstyled');\n      if(el) {\n        if (!data.cart_level_discount_applications || data.cart_level_discount_applications.length === 0) {\n          el.style.display = 'none';\n        }else{\n          el.style.display = 'block';\n        }\n      }\n    })\n    .catch(error => console.error('Error:', error));\n\n  // Event listener remove coupon\n  window.triggerUpdateCoupon = function() {\n    document.querySelectorAll('.remove-coupon').forEach(button => {\n      button.addEventListener('click', function() {\n          this.setAttribute('disabled', true);\n          const couponToRemove = this.dataset.coupon;\n          updateCouponAction(couponToRemove, true, this);\n      });\n  });\n    \n    // Apply coupon\n    async function applyCoupon() { \n      document.querySelector('.drawer__coupon-btn').setAttribute('disabled', true);\n      const couponInput = document.querySelector('.drawer__coupon-input');\n      const couponValue = couponInput.value.trim();\n\n\n      fetch('/cart.js')\n      .then(response => response.json())\n      .then(cart => {\n          const cartTotal = cart.total_price / 100;  \n          updateCouponAction(couponValue, false, this);          \n        })\n        .catch(error => {\n          console.error('Erro ao obter o carrinho:', error);\n        }); \n    }\n\n\n    document.querySelector('.drawer__coupon-btn').addEventListener('click', async function(event) {\n      window.alertShown = true;\n      applyCoupon();\n    });\n    document.querySelector('.drawer__coupon-input').addEventListener('keypress', async function(event) {\n      if (event.key === 'Enter') {\n          window.alertShown = true;\n          applyCoupon();\n      }\n    });\n  }\n  window.triggerUpdateCoupon()\n\n    let removeCouponTimeout;\n\n    \n    \n\n    const shopifyUrlApi = shopifyUrl + \"/api/2024-04/graphql.json\";\n    const shopifyAPI = new ShopifyAPI(shopifyUrlApi, shopifyAccessToken);\n\n    // remove and add coupons\n    async function updateCoupons(coupons, isRemoveAction) {\n        try {\n            const cartResponse = await fetch('/cart.js');\n            const cartData = await cartResponse.json();\n            const cartId = cartData.token;\n\n            const result = await shopifyAPI.updateCartDiscountCodes(cartId, coupons);\n           \n            //if page cart\n            if (window.location.href.indexOf(\"/cart\") > -1) {\n              setTimeout(function() {\n                  window.location.reload();\n              }, 1200);\n            }\n    \n            //Verify if all added coupons are valid.\n            let allApplicable = true;\n            result.data.cartDiscountCodesUpdate.cart.discountCodes.forEach(discountCode => {\n              if (!discountCode.applicable) {\n                  allApplicable = false;\n                  alert('Essa promo\u00E7\u00E3o n\u00E3o \u00E9 v\u00E1lida para o carrinho atual.');\n              }\n          });\n          if(isRemoveAction){\n            setTimeout(function() {\n              fetch('/cart.js')\n              .then(response => response.json())\n              .then(data =>   document.querySelector('.totals__total-value').textContent = 'R$' + formatCurrencyCart(data.total_price));   \n            }, 1200);\n          }\n            if (allApplicable == true || isRemoveAction == true) {\n                if (isRemoveAction) {\n                    document.querySelector('.drawer__coupon .error').innerHTML = 'CUPOM REMOVIDO';  //message remove coupon\n                } else {\n                    document.querySelector('.drawer__coupon .success').innerHTML = 'CUPOM APLICADO';  //message apply coupon\n                    document.querySelector('.drawer__coupon-input').value = '';\n                }\n\n                updateCartPricesCoupons(result, shopifyUrl);\n            } else {\n                document.querySelector('.drawer__coupon .error').textContent = ''; //message invalid coupon\n                document.querySelector('.drawer__coupon-btn').removeAttribute('disabled');\n                document.querySelector('.remove-coupon').removeAttribute('disabled');\n                updateCartPricesCoupons(result, shopifyUrl);\n            }\n        } catch (error) {\n            console.error(error.message);\n            document.querySelector('.drawer__coupon .error').textContent = ''; //message invalid coupon'\n            document.querySelector('.drawer__coupon-btn').removeAttribute('disabled');\n            document.querySelector('.remove-coupon').removeAttribute('disabled');\n        }\n    }\n    \n    \n    \n    async function updateCouponAction(couponValue, isRemoveAction, buttonElement) {\n        document.querySelector('.drawer__coupon .success').innerHTML = '';\n        document.querySelector('.drawer__coupon .error').innerHTML = '';\n        try {\n            const appliedCoupons = Array.from(document.querySelectorAll('.applied_coupon'))\n                                        .map(couponElement => couponElement.textContent.trim());\n            if (isRemoveAction) {\n              buttonElement.parentElement.remove();\n                let updatedCoupons = appliedCoupons.filter(coupon => coupon !== couponValue);\n                updatedCoupons = updatedCoupons.filter(coupon => coupon.length <= 20);\n                await updateCoupons(updatedCoupons, true);\n            } else {\n                let updatedCoupons = [...appliedCoupons, couponValue];\n                updatedCoupons = updatedCoupons.filter(coupon => coupon.length <= 20);\n                await updateCoupons(updatedCoupons, false);\n                setTimeout(function() {\n                  fetch('/cart.js')\n                  .then(response => response.json())\n                  .then(data =>   document.querySelector('.totals__total-value').textContent = 'R$' + formatCurrencyCart(data.total_price));   \n                }, 1200);\n               \n            }\n        } catch (error) {\n            console.error(error.message);\n        }\n    }\n  }\n  window.discountCodesFunction()\n  \n});\n"],
  "mappings": "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",
  "names": ["shopifyUrl"]
}
