{ "version": 3, "sources": ["../../javascript/entrypoints/update-kit-total.js"], "sourcesContent": ["import centsToPrice from \"../utilities/centsToPrice\"\n\nimport parseNumber from \"../utilities/parseNumber\"\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const variants = document.querySelectorAll(\".kit-variant-selector__checkbox\")\n const checkboxes = document.querySelectorAll(\".kit-checkboxes__checkbox\")\n const kitTotalEl = document.getElementById(\"kit-total-price\")\n const currency = kitTotalEl.dataset.currency\n\n let selectedVariant\n\n variants.forEach((variant) => {\n if (variant.querySelector(\"input\").checked) {\n selectedVariant = variant\n }\n })\n\n variants.forEach((variant) => {\n variant.addEventListener(\"click\", () => {\n updateTotalPrice(variant, kitTotalEl)\n\n if (variant.querySelector(\"input\").checked) {\n selectedVariant = variant\n }\n })\n })\n\n checkboxes.forEach((checkbox) => {\n checkbox.addEventListener(\"click\", () =>\n updateTotalPrice(selectedVariant, kitTotalEl)\n )\n })\n\n function updateTotalPrice(variant, kitTotalEl) {\n const variantRadio = variant.querySelector(\"input\")\n const variantOnSale =\n variantRadio.dataset.originalPrice !== undefined ? true : false\n const variantInStock =\n variantRadio.dataset.inStock === \"true\" ? true : false\n let accessoriesTotal = 0\n\n checkboxes.forEach((checkbox) => {\n if (checkbox.querySelector(\"input\").checked) {\n const accessoryPrice = parseNumber(\n checkbox.querySelector(\".kit-checkboxes__price\").innerText.trim(),\n currency\n )\n accessoriesTotal += accessoryPrice\n }\n })\n\n if (variantOnSale && variantInStock) {\n const variantOriginalPrice = parseNumber(\n variantRadio.dataset.originalPrice,\n currency\n )\n const variantDiscountedPrice = parseNumber(\n variantRadio.dataset.discountedPrice,\n currency\n )\n\n const totalOriginalPrice = getTotalPrice(\n variantOriginalPrice,\n accessoriesTotal,\n currency\n )\n const totalDiscountedPrice = getTotalPrice(\n variantDiscountedPrice,\n accessoriesTotal,\n currency\n )\n\n const discountPercentage = Math.round(\n (1 - totalDiscountedPrice / totalOriginalPrice) * 100\n )\n\n showDiscountElements(\n totalOriginalPrice,\n totalDiscountedPrice,\n discountPercentage,\n currency\n )\n hideOutOfStockNotice()\n document\n .querySelector(\".kit-total-price__price-total\")\n .classList.remove(\"hidden\")\n document.querySelector(\".product-submit\").classList.remove(\"hidden\")\n document.querySelector(\".product-trust-icons\").classList.remove(\"hidden\")\n document\n .querySelector(\".kit-total-price__selling-price\")\n .classList.add(\"hidden\")\n } else if (variantInStock) {\n hideDiscountElements()\n hideOutOfStockNotice()\n document\n .querySelector(\".kit-total-price__price-total\")\n .classList.remove(\"hidden\")\n document.querySelector(\".product-submit\").classList.remove(\"hidden\")\n document.querySelector(\".product-trust-icons\").classList.remove(\"hidden\")\n document\n .querySelector(\".kit-total-price__selling-price\")\n .classList.remove(\"hidden\")\n\n const variantPrice = parseNumber(variantRadio.dataset.price, currency)\n const totalPrice = getTotalPrice(variantPrice, accessoriesTotal, currency)\n kitTotalEl.innerText = centsToPrice(totalPrice, currency)\n } else {\n showOutOfStockNotice()\n document\n .querySelector(\".kit-total-price__price-total\")\n .classList.add(\"hidden\")\n document.querySelector(\".product-submit\").classList.add(\"hidden\")\n document.querySelector(\".product-trust-icons\").classList.add(\"hidden\")\n }\n }\n})\n\nfunction showDiscountElements(\n totalOriginalPrice,\n totalDiscountedPrice,\n discountPercentage,\n currency\n) {\n document.querySelector(\".kit-total-price__original-price\").innerHTML =\n centsToPrice(totalOriginalPrice, currency)\n document.querySelector(\".kit-total-price__sale-price\").innerHTML =\n centsToPrice(totalDiscountedPrice, currency)\n document.querySelector(\".kit-total-price__savings span\").innerHTML =\n discountPercentage + \"%\"\n\n document\n .querySelector(\".kit-total-price__original-price\")\n .classList.remove(\"hidden\")\n document\n .querySelector(\".kit-total-price__sale-price\")\n .classList.remove(\"hidden\")\n document.querySelector(\".kit-total-price__savings\").classList.remove(\"hidden\")\n}\n\nfunction hideDiscountElements() {\n document\n .querySelector(\".kit-total-price__original-price\")\n .classList.add(\"hidden\")\n document.querySelector(\".kit-total-price__sale-price\").classList.add(\"hidden\")\n document.querySelector(\".kit-total-price__savings\").classList.add(\"hidden\")\n}\n\nfunction showOutOfStockNotice() {\n document\n .querySelector(\".kit-total-price__out-of-stock-notice\")\n .classList.remove(\"hidden\")\n document.querySelector(\".product-out-of-stock\").classList.remove(\"hidden\")\n}\n\nfunction hideOutOfStockNotice() {\n document\n .querySelector(\".kit-total-price__out-of-stock-notice\")\n .classList.add(\"hidden\")\n document.querySelector(\".product-out-of-stock\").classList.add(\"hidden\")\n}\n\nfunction getTotalPrice(variantPrice, accessoriesTotal, currency) {\n const price = variantPrice + accessoriesTotal\n return currency === \"JPY\" ? price : price * 100\n}\n"], "mappings": "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", "names": ["variants", "checkboxes", "kitTotalEl", "currency", "selectedVariant", "variant", "updateTotalPrice", "checkbox", "variantRadio", "variantOnSale", "variantInStock", "accessoriesTotal", "parseNumber_default", "variantOriginalPrice", "variantDiscountedPrice", "totalOriginalPrice", "getTotalPrice", "totalDiscountedPrice", "discountPercentage", "showDiscountElements", "hideOutOfStockNotice", "hideDiscountElements", "variantPrice", "totalPrice", "centsToPrice_default", "showOutOfStockNotice", "price"] }