{
  "version": 3,
  "sources": ["/cdn/shop/t/811/assets/cart-freebie.js?enable_js_minification=1"],
  "sourcesContent": ["// This custom web component that adds or removes free gifts based on cart subtotal and user selection, updating the cart dynamically\n\nclass CartFreeGift extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    // Call the Shopify cartAddFreebie function when the component is connected\n    this.cartAddFreebie();\n  }\n\n  cartAddFreebie() {\n    fetch(\"/cart\", {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n      },\n    })\n      .then((response) => response.text())\n      .then((data) => {\n        cartData(data);\n      });\n\n    function cartData(data) {\n      let cartAjax = document.querySelector(\"cart-drawer#mini-cart\");\n      let cartSubtotal = data.total_price / 100;\n\n      let cartVariantIds = cartAjax.getAttribute(\"data-gift-ids\");\n      let variantIdsArray = cartVariantIds\n        .split(\",\")\n        .filter((id) => id.trim() !== \"\");\n\n      if (cartAjax) {\n        let offer1FreebieValue = parseFloat(\n          cartAjax.getAttribute(\"data-eligible-price-1\")\n        );\n        let offer2FreebieValue = parseFloat(\n          cartAjax.getAttribute(\"data-eligible-price-2\")\n        );\n        let offer3FreebieValue = parseFloat(\n          cartAjax.getAttribute(\"data-eligible-price-3\")\n        );\n\n        let eligibleVariantId = cartAjax.getAttribute(\n          \"data-eligible-variantIds-1\"\n        );\n        let eligibleVariantId2 = cartAjax.getAttribute(\n          \"data-eligible-variantIds-2\"\n        );\n        let eligibleVariantId3 = cartAjax.getAttribute(\n          \"data-eligible-variantIds-3\"\n        );\n        \n        let freebeePID1 = eligibleVariantId;\n        let freebeePID2 = eligibleVariantId2;\n        let freebeePID3 = eligibleVariantId3;\n        const containsFreebeeProductId1 = variantIdsArray.some(\n          (item) => parseInt(item) === parseInt(freebeePID1)\n        );\n        const containsFreebeeProductId2 = variantIdsArray.some(\n          (item) => parseInt(item) === parseInt(freebeePID2)\n        );\n        const containsFreebeeProductId3 = variantIdsArray.some(\n          (item) => parseInt(item) === parseInt(freebeePID3)\n        );\n\n        const giftCheckboxes = document.querySelectorAll(\n          'input[id^=\"free-product__\"]'\n        );\n\n        giftCheckboxes.forEach(function (giftCheckbox) {\n          giftCheckbox.addEventListener(\"change\", function () {\n            const isChecked = giftCheckbox.checked;\n            const giftId = giftCheckbox.getAttribute(\"data-gift-id\");\n\n            // Check if any gift is already added\n            const isAnyGiftAdded = containsFreebeeProductId1 || containsFreebeeProductId2 || containsFreebeeProductId3;\n\n            // If a gift is selected and another gift is already in the cart, show the warning\n            if (isChecked && isAnyGiftAdded) {\n              warningMessage();\n              giftCheckbox.checked = false; \n              return; \n            }\n\n            // Add or remove the selected gift based on cart subtotal and gift selection\n            if (cartSubtotal >= offer3FreebieValue && giftId === \"freegift-3\") {\n              if (isChecked && !containsFreebeeProductId3) {\n                addToCart(eligibleVariantId3);\n              } else if (!isChecked && containsFreebeeProductId3) {\n                removeFreebee(freebeePID3);\n              }\n            }\n\n            if (cartSubtotal >= offer2FreebieValue && giftId === \"freegift-2\") {\n              if (isChecked && !containsFreebeeProductId2) {\n                addToCart(eligibleVariantId2);\n              } else if (!isChecked && containsFreebeeProductId2) {\n                removeFreebee(freebeePID2);\n              }\n            }\n\n            if (cartSubtotal >= offer1FreebieValue && giftId === \"freegift-1\") {\n              if (isChecked && !containsFreebeeProductId1) {\n                addToCart(eligibleVariantId);\n              } else if (!isChecked && containsFreebeeProductId1) {\n                removeFreebee(freebeePID1);\n              }\n            }\n          });\n        });\n         \n        // Automatically remove free gifts if cart subtotal is below the threshold\n        if (containsFreebeeProductId3 && cartSubtotal < offer3FreebieValue) {\n          removeFreebee(freebeePID3);\n        }\n\n        if (containsFreebeeProductId2 && cartSubtotal < offer2FreebieValue) {\n          removeFreebee(freebeePID2);\n        }\n\n        if (containsFreebeeProductId1 && cartSubtotal < offer1FreebieValue) {\n          removeFreebee(freebeePID1);\n        }\n      }\n      cartFreeProduct();\n    }\n\n    function addToCart(variantId) {\n      let formData = {\n        items: [\n          {\n            id: variantId,\n            quantity: 1,\n            properties: { _freebieItem: \"true\" },\n          },\n        ],\n      };\n\n      formData[\"sections\"] = \"mini-cart\";\n\n      fetch(window.Shopify.routes.root + \"cart/add.js\", {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify(formData),\n      })\n        .then((response) => {\n          if (response.ok) {\n            return response.json();\n          } else {\n            throw new Error(\"Network response was not ok.\");\n          }\n        })\n        .then((data) => {\n          if (document.querySelector(\".header__cart-count\")) {\n            let CartCount = parseInt(\n              document.querySelector(\".header__cart-count\").innerHTML\n            );\n            CartCount += 1;\n            document.querySelector(\".header__cart-count\").innerHTML = CartCount;\n          }\n          let responseCart = data.sections;\n          let miniCartSection = responseCart[\"mini-cart\"];\n          let tempDiv = document.createElement(\"div\");\n          tempDiv.innerHTML = miniCartSection;\n          let miniCart = tempDiv.querySelector(\"#shopify-section-mini-cart\");\n          let oldCartDrawer = document.querySelector(\n            \"#shopify-section-mini-cart\"\n          );\n          miniCart.querySelector(\"#mini-cart\").setAttribute(\"open\", \"true\");\n          oldCartDrawer.innerHTML = miniCart.innerHTML;\n          getFreeBeeToaster();\n        })\n        .catch((error) => {\n          console.error(\"Error:\", error);\n        });\n    }\n\n    function removeFreebee(freebeePID) {\n      const updates = { [freebeePID]: 0 };\n      const data = { updates, sections: \"mini-cart\" };\n      fetch(window.Shopify.routes.root + \"cart/update.js\", {\n        method: \"POST\",\n        headers: { \"Content-Type\": \"application/json\" },\n        body: JSON.stringify(data),\n      })\n        .then((response) => {\n          return response.json();\n        })\n        .then((data) => {\n          let responseCart = data.sections;\n          let miniCartSection = responseCart[\"mini-cart\"];\n          let tempDiv = document.createElement(\"div\");\n          tempDiv.innerHTML = miniCartSection;\n          let miniCart = tempDiv.querySelector(\"#shopify-section-mini-cart\");\n          let oldCartDrawer = document.querySelector(\n            \"#shopify-section-mini-cart\"\n          );\n          miniCart.querySelector(\"#mini-cart\").setAttribute(\"open\", \"true\");\n          oldCartDrawer.innerHTML = miniCart.innerHTML;\n          if (document.querySelector(\".header__cart-count\")) {\n            let CartCount = parseInt(\n              document.querySelector(\".header__cart-count\").innerHTML\n            );\n            CartCount -= 1;\n            document.querySelector(\".header__cart-count\").innerHTML = CartCount;\n          }\n          REFRESH_CART();\n        })\n        .catch((error) => console.error(\"Error:\", error));\n    }\n\n    function getFreeBeeToaster() {\n      const giftToaster = document.querySelector(\".free-gift-toaster\");\n      giftToaster.innerHTML = \"Free Gift Added\";\n      giftToaster.setAttribute(\"open\", \"true\");\n\n      setTimeout(() => {\n        hideToaster();\n      }, 3000);\n    }\n\n    function hideToaster() {\n      const giftToaster = document.querySelector(\".free-gift-toaster\");\n      giftToaster.removeAttribute(\"open\");\n    }\n\n    function warningMessage() {\n      const giftToaster = document.querySelector(\".free-gift-toaster\");\n      giftToaster.innerHTML = \"You can't Add more than one product\";\n      giftToaster.setAttribute(\"open\", \"true\");\n\n      setTimeout(() => {\n        hideToaster();\n      }, 3000);\n    }\n  }\n}\n\ncustomElements.define(\"cart-free-gift\", CartFreeGift);\n"],
  "mappings": "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",
  "names": ["data"]
}
