{
  "version": 3,
  "sources": ["/cdn/shop/t/817/assets/cart-free-sample.js?enable_js_minification=1"],
  "sourcesContent": ["// this custom web component that adds or removes free sample based on cart subtotal and user selection, updating the cart dynamically( only one product can be added)\nclass CartFreeSample extends HTMLElement {\n    constructor() {\n      super();\n    }\n  \n    connectedCallback() {\n      this.cartAddFreeSample();\n    }\n    cartAddFreeSample() {\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      function cartData(data) {\n        let cartAjax = document.querySelector(\"cart-drawer#mini-cart\");\n        let cartSubtotal = data.total_price / 100;\n        let cartSampleId = parseInt(cartAjax.getAttribute(\"data-free-sample-id\"));\n        let sampleThreshold = parseInt(\n          cartAjax.getAttribute(\"data-free-sample-price\")\n        );\n        const giftCheckboxes = document.querySelectorAll(\n          'input[id^=\"free-product__\"]'\n        );\n        giftCheckboxes.forEach(function (giftCheckbox) {\n          giftCheckbox.addEventListener(\"change\", function () {\n            let isChecked = giftCheckbox.checked;\n            const sampleId = giftCheckbox.getAttribute(\"data-sample-id\");\n            if (cartSubtotal >= sampleThreshold) {\n              if (isChecked && !cartSampleId) {\n                addToCart(sampleId);\n                disableOtherSamples(sampleId);\n              } else if (!isChecked && parseInt(sampleId)) {\n                removeFreeSample(sampleId);\n              } else if (isChecked && cartSampleId) {\n                warningMessage();\n              }\n            }\n          });\n        });\n        if (cartSampleId != NaN) {\n          if (cartSubtotal < sampleThreshold) {\n            removeFreeSample(cartSampleId);\n          }\n        }\n      }\n  \n      function disableOtherSamples(selectedSampleId) {\n        giftCheckboxes.forEach(function (giftCheckbox) {\n          const sampleId = giftCheckbox.getAttribute(\"data-sample-id\");\n          const productWrapper = giftCheckbox.closest(\n            \".freegift-product--wrapper\"\n          );\n          if (sampleId !== selectedSampleId) {\n            giftCheckbox.disabled = true;\n          } else {\n            giftCheckbox.disabled = false;\n          }\n        });\n      }\n      function addToCart(variantId) {\n        let formData = {\n          items: [\n            {\n              id: variantId,\n              quantity: 1,\n              properties: { _freeSample: \"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) => console.error(\"Error:\", error));\n      }\n      function removeFreeSample(sampleId) {\n        const updates = { [sampleId]: 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) => response.json())\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      function getFreeBeeToaster() {\n        const giftToaster = document.querySelector(\".free-gift-toaster\");\n        giftToaster.innerHTML = \"Free Sample Added\";\n        giftToaster.setAttribute(\"open\", \"true\");\n  \n        setTimeout(() => {\n          hideToaster();\n        }, 3000);\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      function hideToaster() {\n        const giftToaster = document.querySelector(\".free-gift-toaster\");\n        giftToaster.removeAttribute(\"open\");\n      }\n    }\n  }\n  \n  customElements.define(\"cart-free-sample\", CartFreeSample);\n  "],
  "mappings": "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",
  "names": ["data"]
}
