{"version":3,"file":"minicart-sWuOPSEI.js","sources":["../../../app/javascript/entrypoints/js/minicart/minicart.js"],"sourcesContent":["import gsap from \"gsap\";\nimport ListItem from \"./list-item\";\n\nexport default class Minicart {\n constructor() {\n this.isOpen = false;\n this.isupdating = false;\n this.cart_url = document.querySelector(\"body\").dataset.cart;\n this.info_url = document.querySelector(\"body\").dataset.info;\n this.button = document.querySelector(\"[data-js='minicart']\");\n this.total = document.querySelector(\".header-cart-total\");\n this.closeButton = document.querySelector(\"[data-js='minicart__close']\");\n this.container = document.querySelector(\"[data-js='minicart__container']\");\n this.containerElement = document.querySelector(\n \"[data-js='minicart__element']\",\n );\n this.containerEls = document.querySelector(\"[data-js='minicart__els']\");\n\n this.listItemsQuantities = document.querySelectorAll(\n \"[data-js='minicart-list-item__quantity']\",\n );\n\n this.cartCounter = document.querySelector(\"[data-js='header-cart-total']\");\n this.subtotal = document.querySelector(\"[data-js='minicart-subtotal']\");\n\n this.checkOutButton = null;\n }\n updateCart() {\n if (this.isupdating) {\n return false;\n }\n this.isupdating = true;\n fetch(this.cart_url)\n .then((response) => {\n // The API call was successful!\n return response.text();\n })\n .then((html) => {\n console.log(\"updating\")\n this.isupdating = false;\n this.updateCount();\n\n console.log(\"count\")\n if (html.indexOf(\"data-removed\") > 0) {\n location.reload();\n }\n\n console.log(\"removed\")\n this.subtotal = document.querySelector(\"[data-js='minicart-subtotal']\");\n\n console.log(\"subtotal\")\n this.containerEls.innerHTML = html;\n\n console.log(\"put elements\")\n this.cartActions();\n\n console.log(\"actins\")\n this.checkOutButton = document.querySelector(\n \"[data-js='minicart__checkout']\",\n );\n if (this.checkOutButton) {\n this.checkOutButton.addEventListener(\"click\", () => {\n this.close();\n });\n }\n\n\n })\n .catch((err) => {\n // There was an error\n console.warn(\"Something went wrong.\", err);\n });\n }\n\n updateCount() {\n if (this.isupdating) {\n return false;\n }\n this.isupdating = true;\n // console.log(\"count\");\n fetch(this.info_url)\n .then((response) => {\n // The API call was successful!\n return response.json();\n })\n .then((json) => {\n\n this.isupdating = false;\n // console.log(json);\n this.subtotal.innerHTML = json.total;\n this.cartCounter.innerHTML = json.item_count;\n })\n .catch((err) => {\n // There was an error\n console.warn(\"Something went wrong.\", err);\n });\n }\n\n\n\n cartActions() {\n this.listItems = document.querySelectorAll(\n \"[data-js='minicart-list-item']\",\n );\n\n this.subtotal = document.querySelector(\"[data-js='minicart-subtotal']\");\n this.listItems.forEach((listItem) => {\n const item = new ListItem(listItem);\n item.init();\n\n });\n\n /* Change Subtotal */\n window.addEventListener(\"cart-update\", (event) => {\n this.updateCart();\n this.updateCount();\n });\n }\n\n init() {\n document.addEventListener(\"click\", this.clickOutside.bind(this));\n\n window.addEventListener(\"add-to-cart\", () => {\n this.open();\n });\n window.addEventListener(\"cart-empty\", () => {\n this.updateCart();\n this.cartCounter.innerHTML = 0;\n });\n this.button.addEventListener(\"click\", () => {\n this.isOpen ? this.close() : this.open();\n });\n\n this.closeButton.addEventListener(\"click\", () => {\n this.close();\n });\n }\n\n open() {\n this.updateCart();\n this.isOpen = true;\n this.containerElement.scrollTop = 0;\n document.body.style.overflow = \"hidden\";\n this.container.classList.remove(\"hidden\");\n\n const tl = gsap.timeline({\n defaults: {\n duration: 0.2,\n ease: \"power2.inOut\",\n },\n });\n gsap.set([this.container], {\n autoAlpha: 0,\n });\n\n gsap.set(this.containerElement, {\n xPercent: 100,\n });\n\n tl.to(this.container, {\n autoAlpha: 1,\n display: \"flex\",\n });\n\n tl.to(this.containerElement, {\n autoAlpha: 1,\n xPercent: 0,\n });\n }\n\n close() {\n this.isOpen = false;\n\n const tl = gsap.timeline({\n defaults: {\n duration: 0.2,\n ease: \"power2.inOut\",\n },\n });\n\n tl.to(this.containerElement, {\n xPercent: 100,\n });\n\n tl.to(this.container, {\n autoAlpha: 0,\n onComplete: () => {\n this.container.classList.add(\"hidden\");\n document.body.style.overflow = \"auto\";\n },\n });\n }\n\n clickOutside(event) {\n if (\n this.isOpen &&\n event.target === this.container &&\n !this.containerElement.contains(event.target) &&\n !this.button.contains(event.target)\n ) {\n this.close();\n }\n }\n}\n"],"names":["Minicart","response","html","err","json","listItem","ListItem","event","tl","gsap"],"mappings":"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"}