vendor: 641 bytes, lines 1-11
1/* 2 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). 3 * This devtool is neither made for production nor for readable output files. 4 * It uses "eval()" calls to create a separate source file in the browser devtools. 5 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) 6 * or disable the default devtool with "devtool: false". 7 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). 8 */ 9/******/ (() => { // webpackBootstrap 10/******/ var __webpack_modules__ = ({ 11
vendor: 2,584 bytes, lines 12-22
12/***/ "./node_modules/@shopify/theme-currency/currency.js": 13/*!**********************************************************!*\ 14 !*** ./node_modules/@shopify/theme-currency/currency.js ***! 15 \**********************************************************/ 16/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 17 18"use strict"; 19eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"formatMoney\": () => (/* binding */ formatMoney)\n/* harmony export */ });\n/**\n * Currency Helpers\n * -----------------------------------------------------------------------------\n * A collection of useful functions that help with currency formatting\n *\n * Current contents\n * - formatMoney - Takes an amount in cents and returns it as a formatted dollar value.\n *\n */\n\nconst moneyFormat = '${{amount}}';\n\n/**\n * Format money values based on your shop currency settings\n * @param {Number|string} cents - value in cents or dollar amount e.g. 300 cents\n * or 3.00 dollars\n * @param {String} format - shop money_format setting\n * @return {String} value - formatted value\n */\nfunction formatMoney(cents, format) {\n if (typeof cents === 'string') {\n cents = cents.replace('.', '');\n }\n let value = '';\n const placeholderRegex = /\\{\\{\\s*(\\w+)\\s*\\}\\}/;\n const formatString = format || moneyFormat;\n\n function formatWithDelimiters(\n number,\n precision = 2,\n thousands = ',',\n decimal = '.'\n ) {\n if (isNaN(number) || number == null) {\n return 0;\n }\n\n number = (number / 100.0).toFixed(precision);\n\n const parts = number.split('.');\n const dollarsAmount = parts[0].replace(\n /(\\d)(?=(\\d\\d\\d)+(?!\\d))/g,\n `$1${thousands}`\n );\n const centsAmount = parts[1] ? decimal + parts[1] : '';\n\n return dollarsAmount + centsAmount;\n }\n\n switch (formatString.match(placeholderRegex)[1]) {\n case 'amount':\n value = formatWithDelimiters(cents, 2);\n break;\n case 'amount_no_decimals':\n value = formatWithDelimiters(cents, 0);\n break;\n case 'amount_with_comma_separator':\n value = formatWithDelimiters(cents, 2, '.', ',');\n break;\n case 'amount_no_decimals_with_comma_separator':\n value = formatWithDelimiters(cents, 0, '.', ',');\n break;\n }\n\n return formatString.replace(placeholderRegex, value);\n}\n\n\n//# sourceURL=webpack://natural-spa-factrory-retail/./node_modules/@shopify/theme-currency/currency.js?"); 20 21/***/ }), 22
23/***/ "./src/javascript/gocart/GoCart.js": 24/*!*****************************************!*\ 25 !*** ./src/javascript/gocart/GoCart.js ***! 26 \*****************************************/ 27/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 28 29"use strict"; 30eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _shopify_theme_currency_currency__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @shopify/theme-currency/currency */ \"./node_modules/@shopify/theme-currency/currency.js\");\n/* harmony import */ var form_serialize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! form-serialize */ \"./node_modules/form-serialize/index.js\");\n/* harmony import */ var form_serialize__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(form_serialize__WEBPACK_IMPORTED_MODULE_1__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n // import \"whatwg-fetch\";\n\n\n\nvar GoCart = /*#__PURE__*/function () {\n function GoCart(options) {\n _classCallCheck(this, GoCart);\n\n var defaults = {\n cartModalFail: '.js-go-cart-modal-fail',\n cartModalFailClose: '.js-go-cart-modal-fail-close',\n cartModal: '.js-go-cart-modal',\n cartModalClose: '.js-go-cart-modal-close',\n cartModalContent: '.js-go-cart-modal-content',\n cartDrawer: '.js-go-cart-drawer',\n cartDrawerDelivery: '.js-go-cart-drawer-delivery',\n cartDrawerContent: '.js-go-cart-drawer-content',\n cartDrawerSubTotal: '.js-go-cart-drawer-subtotal',\n cartDrawerFooter: '.js-go-cart-drawer-footer',\n cartDrawerClose: '.js-go-cart-drawer-close',\n cartMiniCart: '.js-go-cart-mini-cart',\n cartMiniCartContent: '.js-go-cart-mini-cart-content',\n cartMiniCartSubTotal: '.js-go-cart-mini-cart-subtotal',\n cartMiniCartFooter: '.js-go-cart-mini-cart-footer',\n cartTrigger: '.js-go-cart-trigger',\n cartOverlay: '.js-go-cart-overlay',\n cartCount: '.js-go-cart-counter',\n cartCheckoutButton: '.js-go-cart-checkout-button',\n addToCart: '.js-go-cart-add-to-cart',\n removeFromCart: '.js-go-cart-remove-from-cart',\n removeFromCartNoDot: 'js-go-cart-remove-from-cart',\n itemQuantity: '.js-go-cart-quantity',\n itemQuantityPlus: '.js-go-cart-quantity-plus',\n itemQuantityMinus: '.js-go-cart-quantity-minus',\n cartMode: 'drawer',\n drawerDirection: 'right',\n displayModal: false,\n // eslint-disable-next-line no-template-curly-in-string\n moneyFormat: '${{amount}}',\n labelAddedToCart: 'was added to your cart.',\n labelCartIsEmpty: 'Your Cart is currently empty!',\n labelQuantity: 'Qty:',\n labelRemove: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" title=\"Remove\"><path d=\"M15.89 14.696l-4.734-4.734 4.717-4.717c.4-.4.37-1.085-.03-1.485s-1.085-.43-1.485-.03L9.641 8.447 4.97 3.776c-.4-.4-1.085-.37-1.485.03s-.43 1.085-.03 1.485l4.671 4.671-4.688 4.688c-.4.4-.37 1.085.03 1.485s1.085.43 1.485.03l4.688-4.687 4.734 4.734c.4.4 1.085.37 1.485-.03s.43-1.085.03-1.485z\"></path></svg>',\n simpleCartContainer: '.js-simple-cart',\n simpleCartItems: '.js-simple-cart-items',\n simpleCartItem: '.js-simple-cart-item',\n simpleCartRemove: '.js-simple-cart-remove'\n };\n this.defaults = Object.assign({}, defaults, options);\n this.cartModalFail = document.querySelector(this.defaults.cartModalFail);\n this.cartModalFailClose = document.querySelector(this.defaults.cartModalFailClose);\n this.cartModal = document.querySelector(this.defaults.cartModal);\n this.cartModalClose = document.querySelectorAll(this.defaults.cartModalClose);\n this.cartModalContent = document.querySelector(this.defaults.cartModalContent);\n this.cartDrawer = document.querySelector(this.defaults.cartDrawer);\n this.cartDrawerDelivery = document.querySelector(this.defaults.cartDrawerDelivery);\n this.cartDrawerContent = document.querySelector(this.defaults.cartDrawerContent);\n this.cartDrawerSubTotal = document.querySelector(this.defaults.cartDrawerSubTotal);\n this.cartDrawerFooter = document.querySelector(this.defaults.cartDrawerFooter);\n this.cartDrawerClose = document.querySelector(this.defaults.cartDrawerClose);\n this.cartMiniCart = document.querySelector(this.defaults.cartMiniCart);\n this.cartMiniCartContent = document.querySelector(this.defaults.cartMiniCartContent);\n this.cartMiniCartSubTotal = document.querySelector(this.defaults.cartMiniCartSubTotal);\n this.cartMiniCartFooter = document.querySelector(this.defaults.cartMiniCartFooter);\n this.cartTrigger = document.querySelectorAll(this.defaults.cartTrigger);\n this.cartOverlay = document.querySelector(this.defaults.cartOverlay);\n this.cartCount = document.querySelectorAll(this.defaults.cartCount);\n this.cartCheckoutButton = document.querySelector(this.defaults.cartCheckoutButton);\n this.addToCart = document.querySelectorAll(this.defaults.addToCart);\n this.removeFromCart = this.defaults.removeFromCart;\n this.removeFromCartNoDot = this.defaults.removeFromCartNoDot;\n this.itemQuantity = this.defaults.itemQuantity;\n this.itemQuantityPlus = this.defaults.itemQuantityPlus;\n this.itemQuantityMinus = this.defaults.itemQuantityMinus;\n this.cartMode = this.defaults.cartMode;\n this.drawerDirection = this.defaults.drawerDirection;\n this.displayModal = this.defaults.displayModal;\n this.moneyFormat = this.defaults.moneyFormat;\n this.labelAddedToCart = this.defaults.labelAddedToCart;\n this.labelCartIsEmpty = this.defaults.labelCartIsEmpty;\n this.labelQuantity = this.defaults.labelQuantity;\n this.labelRemove = this.defaults.labelRemove;\n this.simpleCartContainer = document.querySelector(this.defaults.simpleCartContainer);\n this.simpleCartItems = document.querySelector(this.defaults.simpleCartItems);\n this.simpleCartItem = this.defaults.simpleCartItem;\n this.simpleCartRemove = this.defaults.simpleCartRemove;\n this.init();\n }\n\n _createClass(GoCart, [{\n key: \"isDrawerMode\",\n get: function get() {\n return this.cartMode === 'drawer';\n }\n }, {\n key: \"isSimpleCartVisible\",\n get: function get() {\n return this.simpleCartContainer;\n }\n }
30, {\n key: \"init\",\n value: function init() {\n var _this = this;\n\n this.fetchCart();\n\n if (this.isDrawerMode) {\n this.setDrawerDirection();\n }\n\n document.addEventListener('click', function (event) {\n if (event.target.matches(_this.defaults.addToCart)) {\n event.preventDefault();\n var item = event.target;\n var form = item.parentNode;\n\n while ('form' !== form.tagName.toLowerCase()) {\n form = form.parentNode;\n }\n\n var formID = form.getAttribute('id');\n\n _this.addItemToCart(formID);\n\n if (_this.isSimpleCartVisible) {\n _this.addItemToSimpleCart(item);\n }\n }\n }, false);\n\n if (this.isSimpleCartVisible) {\n document.addEventListener('click', function (event) {\n // This is being weird due to the small click target so I added bunch of targets\n if (event.target.parentNode.parentNode.matches(_this.defaults.simpleCartRemove) || event.target.parentNode.matches(_this.defaults.simpleCartRemove) || event.target.matches(_this.defaults.simpleCartRemove)) {\n var item = event.target;\n var parentEl = item.closest(_this.simpleCartItem);\n var line = parentEl.getAttribute('data-line');\n\n _this.removeItem(line);\n\n parentEl.remove();\n }\n }, false);\n }\n\n this.cartTrigger.forEach(function (item) {\n item.addEventListener('click', function () {\n if (_this.isDrawerMode) {\n _this.openCartDrawer();\n } else {\n _this.openMiniCart();\n }\n\n _this.openCartOverlay();\n });\n });\n this.cartOverlay.addEventListener('click', function () {\n _this.closeFailModal();\n\n _this.closeCartModal();\n\n if (_this.isDrawerMode) {\n _this.closeCartDrawer();\n } else {\n _this.closeMiniCart();\n }\n\n _this.closeCartOverlay();\n });\n\n if (this.isDrawerMode) {\n this.cartDrawerClose.addEventListener('click', function () {\n _this.closeCartDrawer();\n\n _this.closeCartOverlay();\n });\n }\n\n if (this.displayModal) {\n this.cartModalClose.forEach(function (item) {\n item.addEventListener('click', function () {\n _this.closeFailModal();\n\n _this.closeCartModal();\n\n if (_this.isDrawerMode) {\n _this.closeCartDrawer();\n } else {\n _this.closeMiniCart();\n }\n\n _this.closeCartOverlay();\n });\n });\n }\n\n this.cartModalFailClose.addEventListener('click', function () {\n _this.closeFailModal();\n\n _this.closeCartModal();\n\n if (_this.isDrawerMode) {\n _this.closeCartDrawer();\n } else {\n _this.closeMiniCart();\n }\n\n _this.closeCartOverlay();\n });\n }\n }, {\n key: \"fetchCart\",\n value: function fetchCart(callback) {\n var _this2 = this;\n\n window.fetch('/cart.js', {\n credentials: 'same-origin',\n method: 'GET'\n }).then(function (response) {\n return response.json();\n }).then(function (cart) {\n _this2.fetchHandler(cart, callback);\n\n if (_this2.isSimpleCartVisible) {\n _this2.updateSimpleCart(cart);\n }\n })[\"catch\"](function (error) {\n _this2.ajaxRequestFail();\n\n throw new Error(error);\n });\n }\n }, {\n key: \"addItemToCart\",\n value: function addItemToCart(formID) {\n var _this3 = this;\n\n var form = document.querySelector(\"#\".concat(formID));\n var formData = form_serialize__WEBPACK_IMPORTED_MODULE_1___default()(form, {\n hash: true\n });\n window.fetch('/cart/add.js', {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(formData)\n }).then(function (response) {\n return response.json();\n }).then(function (product) {\n _this3.addItemToCartHandler(product);\n\n _this3.buttonElementFinder(formID);\n })[\"catch\"](function (error) {\n _this3.ajaxRequestFail();\n\n throw new Error(error);\n });\n }\n }, {\n key: \"removeItem\",\n value: function removeItem(line, variantID) {\n var _this4 = this;\n\n var quantity = 0;\n window.fetch('/cart/change.js', {\n method: 'POST',\n credentials: 'same-origin',\n body: JSON.stringify({\n quantity: quantity,\n line: line\n }),\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(function (response) {\n return response.json();\n }).then(function () {\n _this4.fetchCart();\n\n _this4.buttonElementFinder(variantID);\n })[\"catch\"](function (error) {\n _this4.ajaxRequestFail();\n\n throw new Error(error);\n });\n }\n }, {\n key: \"changeItemQuantity\",\n value: function changeItemQuantity(line, quantity, variantID) {\n var _this5 = this;\n\n window.fetch('/cart/change.js', {\n method: 'POST',\n credentials: 'same-origin',\n body: JSON.stringify({\n quantity: quantity,\n line: line\n }),\n headers: {\n 'Content-Type': 'application/json'\n }\n }).then(function (response) {\n return response.json();\n }).then(function () {\n _this5.fetchCart();\n\n _this5.buttonElementFinder(variantID);\n })[\"catch\"](function (error) {\n console.log('error', error);\n\n _this5.ajaxRequestFail();\n\n throw new Error(error);\n });\n }\n }, {\n key: \"cartItemCount\",\n value: function cartItemCount(cart) {\n this.cartCount.forEach(function (item) {\n item.innerHTML = cart.item_count;\n });\n }\n }, {\n key: \"fetchAndOpenCart\",\n value: function fetchAndOpenCart() {\n var _this6 = this;\n\n this.fetchCart(function () {\n if (_this6.isDrawerMode) {\n _this6.openCartDrawer();\n } else {\n _this6.openMiniCart();\n }\n\n _this6.openCartOverlay();\n });\n }\n }, {\n key: \"fetchAndOpenModal\",\n value: function fetchAndOpenModal(product) {\n var _this7 = this;\n\n this.fetchCart(function () {\n _this7.renderCartModal(product);\n\n _this7.openCartModal();\n\n _this7.openCartOverlay();\n });\n }\n }, {\n key: \"fetchHandler\",\n value: function fetchHandler(cart, callback) {\n this.cartItemCount(cart);\n\n if (this.isDrawerMode) {\n if (cart.item_count === 0) {\n this.renderBlankCartDrawer();\n this.cartDrawerFooter.classList.add('is-invisible');\n } else {\n this.renderDrawerCart(cart);\n this.cartDrawerFooter.classList.remove('is-invisible');\n\n if (typeof callback === 'function') {\n callback(cart);\n }\n }\n } else if (cart.item_count === 0) {\n this.renderBlankMiniCart();\n this.cartMiniCartFooter.classList.add('is-invisible');\n } else {\n this.renderMiniCart(cart);\n this.cartMiniCartFooter.classList.remove('is-invisible');\n\n if (typeof callback === 'function') {\n callback(cart);\n }\n }\n }\n }, {\n key: \"addItemToCartHandler\",\n value: function addItemToCartHandler(product) {\n return this.displayModal ? this.fetchAndOpenModal(product) : this.fetchAndOpenCart();\n }\n }, {\n key: \"ajaxRequestFail\",\n value: function ajaxRequestFail() {\n this.openFailModal();\n this.openCartOverlay();\n }\n }, {\n key: \"renderCartModal\",\n value: function renderCartModal(product) {\n this.clearCartModal();\n var productVariant = product.variant_title;\n\n if (productVariant === null) {\n productVariant = '';\n } else {\n productVariant = \" | \".concat(productVariant);\n }\n\n var cartSingleProduct = \"\\n\\t\\t<h3 class=\\\"go-cart-modal-title\\\">Added to your basket</h3>\\n <div class=\\\"go-cart-modal-item\\\">\\n <div class=\\\"go-cart-modal-item__image\\\" style=\\\"--bg: url(\".concat(product.image, \");\\\"></div>\\n <div class=\\\"go-cart-modal-item__info\\\">\\n\\t\\t\\t\\t<h4 class=\\\"go-cart-modal-item__title\\\"><a href=\\\"\").concat(product.url, \"\\\" class=\\\"go-cart-modal-item__link\\\">\").concat(product.product_title).concat(productVariant, \"</a></h4>\\n\\t\\t\\t\\t<p class=\\\"go-cart-modal-item__price\\\">\").concat((0,_shopify_theme_currency_currency__WEBPACK_IMPORTED_MODULE_0__.formatMoney)(
30product.final_price, this.moneyFormat), \"</p>\\n </div>\\n </div>\\n \");\n this.cartModalContent.innerHTML += cartSingleProduct;\n }\n }, {\n key: \"renderDrawerCart\",\n value: function renderDrawerCart(cart) {\n var _this8 = this;\n\n this.clearCartDrawer();\n cart.items.forEach(function (item, index) {\n var itemVariant = item.variant_title;\n\n if (itemVariant === null) {\n itemVariant = '';\n }\n\n var cartSingleProduct = \"\\n\\t\\t\\t\\t<div class=\\\"go-cart-item__single\\\" data-line=\\\"\".concat(Number(index + 1), \"\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__info-wrapper\\\">\\n\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__image\\\" style=\\\"--bg: url(\").concat(item.image, \");\\\"></div>\\n\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__info\\\">\\n\\t\\t\\t\\t\\t\\t\\t<a href=\\\"\").concat(item.url, \"\\\" >\\n <span class=\\\"go-cart-item__title\\\">\").concat(item.product_title, \"</span>\\n </a>\\n \").concat(item.selling_plan_allocation ? '<p class=\"product-option\">' + item.selling_plan_allocation.selling_plan.name + '</p>' : '', \"\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__quantity\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"go-cart-item__quantity-label\\\">\").concat(_this8.labelQuantity, \" </span>\\n\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"go-cart-item__quantity-button js-go-cart-quantity-minus\\\">-</span>\\n\\t\\t\\t\\t\\t\\t\\t\\t<input class=\\\"go-cart-item__quantity-number js-go-cart-quantity\\\" type=\\\"number\\\" value=\\\"\").concat(item.quantity, \"\\\" disabled>\\n\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"go-cart-item__quantity-button js-go-cart-quantity-plus\\\">+</span>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__price\\\"><span class=\\\"money\\\" data-product-id=\\\"\").concat(Number(index + 1), \"\\\">\").concat((0,_shopify_theme_currency_currency__WEBPACK_IMPORTED_MODULE_0__.formatMoney)(item.final_line_price, _this8.moneyFormat), \"</span></div>\\n\\t\\t\\t\\t\\t<a class=\\\"go-cart-item__remove \").concat(_this8.removeFromCartNoDot, \"\\\">\").concat(_this8.labelRemove, \"</a>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\");\n\n if (item.properties && item.properties['product_max']) {\n cartSingleProduct = \"\\n\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__single\\\" data-line=\\\"\".concat(Number(index + 1), \"\\\" data-variant-id=\\\"\").concat(item.id, \"\\\">\\n\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__info-wrapper\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__image\\\" style=\\\"--bg: url(\").concat(item.image, \");\\\"></div>\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__info\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<a href=\\\"\").concat(item.url, \"\\\">\\n <span class=\\\"go-cart-item__title\\\">\").concat(item.product_title, \"</span>\\n </a>\\n \").concat(item.selling_plan_allocation ? '<p class=\"product-option\">' + item.selling_plan_allocation.selling_plan.name + '</p>' : '', \"\\n\\t\\t\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__quantity\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"go-cart-item__quantity-label\\\">\").concat(_this8.labelQuantity, \" </span>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"go-cart-item__quantity-button js-go-cart-quantity-minus\\\">-</span>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<input class=\\\"go-cart-item__quantity-number js-go-cart-quantity\\\" type=\\\"number\\\" value=\\\"\").concat(item.quantity, \"\\\" max=\\\"\").concat(item.properties['product_max'], \"\\\" disabled>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"go-cart-item__quantity-button js-go-cart-quantity-plus\\\">+</span>\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__price\\\"><span class=\\\"money\\\" data-product-id=\\\"\").concat(Number(index + 1), \"\\\">\").concat((0,_shopify_theme_currency_currency__WEBPACK_IMPORTED_MODULE_0__.formatMoney)(item.final_line_price, _this8.moneyFormat), \"</span></div>\\n\\t\\t\\t\\t\\t\\t<a class=\\\"go-cart-item__remove \").concat(_this8.removeFromCartNoDot, \"\\\">\").concat(_this8.labelRemove, \"</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\");\n }\n\n if (item.total_discount > 0) {\n var finalLinePrice = item.final_line_price - item.total_discount;\n cartSingleProduct = \"\\n\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__single\\\" data-line=\\\"\".concat(Number(index + 1), \"\\\">\\n\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__info-wrapper\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__image\\\" style=\\\"--bg: url(\").
30concat(item.image, \");\\\"></div>\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__info\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t<a href=\\\"\").concat(item.url, \"\\\">\\n <span class=\\\"go-cart-item__title\\\">\").concat(item.product_title, \"</span>\\n </a>\\n \").concat(item.selling_plan_allocation ? '<p class=\"product-option\">' + item.selling_plan_allocation.selling_plan.name + '</p>' : '', \"\\n\\t\\t\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__quantity\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"go-cart-item__quantity-label\\\">\").concat(_this8.labelQuantity, \" </span>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"go-cart-item__quantity-button js-go-cart-quantity-minus\\\">-</span>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<input class=\\\"go-cart-item__quantity-number js-go-cart-quantity\\\" type=\\\"number\\\" value=\\\"\").concat(item.quantity, \"\\\" disabled>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"go-cart-item__quantity-button js-go-cart-quantity-plus\\\">+</span>\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t<div class=\\\"go-cart-item__price\\\">\").concat((0,_shopify_theme_currency_currency__WEBPACK_IMPORTED_MODULE_0__.formatMoney)(finalLinePrice, _this8.moneyFormat), \"</div>\\n\\t\\t\\t\\t\\t\\t<a class=\\\"go-cart-item__remove \").concat(_this8.removeFromCartNoDot, \"\\\">\").concat(_this8.labelRemove, \"</a>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\");\n }\n\n _this8.cartDrawerContent.innerHTML += cartSingleProduct;\n\n if (item.product_title.toLowerCase().includes('auto renew')) {\n _this8.updateCheckoutUrl();\n } else {\n _this8.resetCheckoutUrl();\n }\n });\n var totalPrice = cart.total_price;\n\n if (cart.total_discount > 0) {\n totalPrice = cart.total_price - cart.total_discount;\n }\n\n this.renderDeliveryThreshold(totalPrice);\n this.cartDrawerSubTotal.innerHTML = (0,_shopify_theme_currency_currency__WEBPACK_IMPORTED_MODULE_0__.formatMoney)(totalPrice, this.moneyFormat);\n this.cartDrawerSubTotal.parentNode.classList.remove('is-invisible');\n var removeFromCart = document.querySelectorAll(this.removeFromCart);\n removeFromCart.forEach(function (item) {\n item.addEventListener('click', function () {\n console.log('item', item.parentNode);\n var itemID = item.parentNode.getAttribute('data-variant-id');\n GoCart.removeItemAnimation(item.parentNode);\n var line = item.parentNode.getAttribute('data-line');\n\n _this8.removeItem(line, itemID);\n });\n });\n var itemQuantityPlus = document.querySelectorAll(this.itemQuantityPlus);\n itemQuantityPlus.forEach(function (item) {\n item.addEventListener('click', function () {\n var line = item.parentNode.parentNode.parentNode.parentNode.getAttribute('data-line');\n var variantID = item.parentNode.parentNode.parentNode.parentNode.getAttribute('data-variant-id');\n var quantity = Number(item.parentNode.querySelector(_this8.itemQuantity).value) + 1;\n var maxQuantity = Number(item.parentNode.querySelector(_this8.itemQuantity).getAttribute('max'));\n\n if (maxQuantity && quantity > maxQuantity) {\n return;\n }\n\n _this8.changeItemQuantity(line, quantity, variantID);\n });\n });\n var itemQuantityMinus = document.querySelectorAll(this.itemQuantityMinus);\n itemQuantityMinus.forEach(function (item) {\n item.addEventListener('click', function () {\n var line = item.parentNode.parentNode.parentNode.parentNode.getAttribute('data-line');\n var quantity = Number(item.parentNode.querySelector(_this8.itemQuantity).value) - 1;\n var variantID = item.parentNode.parentNode.parentNode.parentNode.getAttribute('data-variant-id');\n\n _this8.changeItemQuantity(line, quantity, variantID);\n\n if (Number(item.parentNode.querySelector(_this8.itemQuantity).value - 1) === 0) {\n GoCart.removeItemAnimation(item.parentNode.parentNode.parentNode.parentNode);\n }\n });\n });\n }\n }, {\n key: \"renderDeliveryThreshold\",\n value: function renderDeliveryThreshold(total) {\n this.clearCartDelivery();\n var cartShippingThreshold = this.cartDrawerDelivery.dataset.threshold;\n var cartTotal = total * 1;\n var cartRemaining = cartShippingThreshold - cartTotal;\n var cartDeliveryContent = '';\n\n if (cartShippingThreshold > cartTotal) {\n cartDeliveryContent = \"\\n\\t\\t\\t\\t<div class=\\\"go-cart-drawer__progress\\\" style=\\\"--progress-spent: \".concat(cartTotal, \"; --progress-threshold: \").concat(cartShippingThreshold, \";\\\"></div>\\n\\t\\t\\t\\t<h5 class=\\\"tab-2-nav active\\\">Spend \").concat((0,_shopify_theme_currency_currency__WEBPACK_IMPORTED_MODULE_0__.formatMoney)(cartRemaining, this.moneyFormat), \" more for free delivery</h5>\\n\\t\\t\\t\");\n } else {\n cartDeliveryContent = \"\\n\\t\\t\\t\\t<div class=\\\"go-cart-drawer__progress go-cart-drawer__progress--full\\\"></div>\\n\\t\\t\\t\\t<h5 class=\\\"tab-2-nav active\\\">You've got free standard delivery</h5>\\n\\t\\t\\t\";\n }\n\n this.cartDrawerDelivery.innerHTML = cartDeliveryContent;\n }\n }, {\n key: \"renderMiniCart\",\n value: function renderMiniCart(cart) {\n var _this9 = this;\n\n this.clearMiniCart();
30\n cart.items.forEach(function (item, index) {\n var itemVariant = item.variant_title;\n\n if (itemVariant === null) {\n itemVariant = '';\n }\n\n var cartSingleProduct = \"\\n <div class=\\\"go-cart-item__single\\\" data-line=\\\"\".concat(Number(index + 1), \"\\\">\\n <div class=\\\"go-cart-item__info-wrapper\\\">\\n <div class=\\\"go-cart-item__image\\\" style=\\\"--bg: url(\").concat(item.image, \");\\\"></div>\\n <div class=\\\"go-cart-item__info\\\">\\n <a href=\\\"\").concat(item.url, \"\\\" class=\\\"go-cart-item__title\\\">\").concat(item.product_title, \"</a>\\n <div class=\\\"go-cart-item__quantity\\\">\\n <span class=\\\"go-cart-item__quantity-label\\\">\").concat(_this9.labelQuantity, \" </span>\\n <span class=\\\"go-cart-item__quantity-button js-go-cart-quantity-minus\\\">-</span>\\n <input class=\\\"go-cart-item__quantity-number js-go-cart-quantity\\\" type=\\\"number\\\" value=\\\"\").concat(item.quantity, \"\\\" disabled>\\n <span class=\\\"go-cart-item__quantity-button js-go-cart-quantity-plus\\\">+</span>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"go-cart-item__price\\\"><span class=\\\"money\\\" data-product-id=\\\"\").concat(Number(index + 1), \"\\\">\").concat((0,_shopify_theme_currency_currency__WEBPACK_IMPORTED_MODULE_0__.formatMoney)(item.line_price, _this9.moneyFormat), \"</span></div>\\n <a class=\\\"go-cart-item__remove \").concat(_this9.removeFromCartNoDot, \"\\\">\").concat(_this9.labelRemove, \"</a>\\n </div>\\n \");\n _this9.cartMiniCartContent.innerHTML += cartSingleProduct;\n });\n this.cartMiniCartSubTotal.innerHTML = (0,_shopify_theme_currency_currency__WEBPACK_IMPORTED_MODULE_0__.formatMoney)(cart.total_price, this.moneyFormat);\n this.cartMiniCartSubTotal.parentNode.classList.remove('is-invisible');\n var removeFromCart = document.querySelectorAll(this.removeFromCart);\n removeFromCart.forEach(function (item) {\n item.addEventListener('click', function () {\n GoCart.removeItemAnimation(item.parentNode);\n var line = item.parentNode.getAttribute('data-line');\n\n _this9.removeItem(line);\n });\n });\n var itemQuantityPlus = document.querySelectorAll(this.itemQuantityPlus);\n itemQuantityPlus.forEach(function (item) {\n item.addEventListener('click', function () {\n var line = item.parentNode.parentNode.parentNode.parentNode.getAttribute('data-line');\n var quantity = Number(item.parentNode.querySelector(_this9.itemQuantity).value) + 1;\n var maxQuantity = Number(item.parentNode.querySelector(_this9.itemQuantity).getAttribute('max'));\n\n if (maxQuantity && quantity > maxQuantity) {\n return;\n }\n\n _this9.changeItemQuantity(line, quantity);\n });\n });\n var itemQuantityMinus = document.querySelectorAll(this.itemQuantityMinus);\n itemQuantityMinus.forEach(function (item) {\n item.addEventListener('click', function () {\n var line = item.parentNode.parentNode.parentNode.parentNode.getAttribute('data-line');\n var quantity = Number(item.parentNode.querySelector(_this9.itemQuantity).value) - 1;\n var variantID = item.parentNode.parentNode.parentNode.parentNode.getAttribute('data-variant-id');\n\n _this9.changeItemQuantity(line, quantity, variantID);\n\n if (Number(item.parentNode.querySelector(_this9.itemQuantity).value - 1) === 0) {\n GoCart.removeItemAnimation(item.parentNode.parentNode.parentNode.parentNode);\n }\n });\n });\n }\n }, {\n key: \"renderBlankCartDrawer\",\n value: function renderBlankCartDrawer() {\n this.cartDrawerSubTotal.parentNode.classList.add('is-invisible');\n this.clearCartDrawer();\n this.clearCartDelivery();\n this.cartDrawerContent.innerHTML = \"<div class=\\\"go-cart__empty\\\">\".concat(this.labelCartIsEmpty, \"</div>\");\n }\n }, {\n key: \"renderBlankMiniCart\",\n value: function renderBlankMiniCart() {\n this.cartMiniCartSubTotal.parentNode.classList.add('is-invisible');\n this.clearMiniCart();\n this.cartMiniCartContent.innerHTML = \"<div class=\\\"go-cart__empty\\\">\".concat(this.labelCartIsEmpty, \"</div>\");\n }\n }, {\n key: \"clearCartDrawer\",\n value: function clearCartDrawer() {\n this.cartDrawerContent.innerHTML = '';\n }\n }, {\n key: \"clearCartDelivery\",\n value: function clearCartDelivery() {\n this.cartDrawerDelivery.innerHTML = '';\n }\n }, {\n key: \"clearMiniCart\",\n value: function clearMiniCart() {\n this.cartMiniCartContent.innerHTML = '';\n }\n }, {\n key: \"clearCartModal\",\n value: function clearCartModal() {\n this.cartModalContent.innerHTML = '';\n }\n }, {\n key: \"openCartDrawer\",\n value: function openCartDrawer() {\n this.cartDrawer.classList.add('is-open');\n }\n }, {\n key: \"closeCartDrawer\",\n value: function closeCartDrawer() {\n this.cartDrawer.classList.remove('is-open');\n }\n }, {\n key: \"openMiniCart\",\n value: function openMiniCart() {\n this.cartMiniCart.classList.add('is-open');\n }\n }, {\n key: \"closeMiniCart\",\n value: function closeMiniCart() {\n this.cartMiniCart.classList.remove('is-open');\n }\n }, {\n key: \"openFailModal\",\n value: function openFailModal() {\n this.cartModalFail.classList.add('is-open');\n }\n }, {\n key: \"closeFailModal\",\n value: function closeFailModal() {\n this.cartModalFail.classList.remove('is-open');\n }\n }, {\n key: \"openCartModal\",\n value: function openCartModal() {\n this.cartModal.classList.add('is-open');\n }\n }, {\n key: \"closeCartModal\",\n value: function closeCartModal() {\n this.cartModal.classList.remove('is-open');\n }\n }, {\n key: \"openCartOverlay\",\n value: function openCartOverlay() {\n this.cartOverlay.classList.add('is-open');\n }\n }, {\n key: \"closeCartOverlay\",\n value: function closeCartOverlay() {\n this.cartOverlay.classList.remove('is-open');\n }\n }, {\n key: \"setDrawerDirection\",\n value: function setDrawerDirection() {\
30n this.cartDrawer.classList.add(\"go-cart__drawer--\".concat(this.drawerDirection));\n }\n }, {\n key: \"addItemToSimpleCart\",\n value: function addItemToSimpleCart(el) {\n // Gets current cart items\n var itemCount = document.querySelectorAll('.simple-cart__item').length; // Gets parent item so we can get some iniformation from it\n\n var parentEl = el.closest('.product-item');\n var productLink = parentEl.querySelector('.product-item__link--title').getAttribute('href');\n var productTitle = parentEl.querySelector('.product-item__link--title').innerHTML;\n var productPrice = parentEl.querySelector('.product-item__price .money').innerHTML; // Creating the element to be added to the simple cart\n\n var simpleCartRowContent = \"\\n\\t\\t<div class=\\\"simple-cart__item js-simple-cart-item\\\" data-line=\\\"\".concat(Number(itemCount + 1), \"\\\">\\n\\t\\t\\t<h3 class=\\\"simple-cart__title\\\">\").concat(productTitle, \"</h3>\\n\\t\\t\\t<div class=\\\"simple-cart__meta\\\">\\n\\t\\t\\t\\t<p class=\\\"simple-cart__price\\\">\").concat(productPrice, \"</p>\\n\\t\\t\\t\\t<div class=\\\"simple-cart__remove js-simple-cart-remove\\\">\\n\\t\\t\\t\\t\\t<svg class=\\\"icon icon--close\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 19.09 19.09\\\"><path d=\\\"M19.09 2.12L16.97 0 9.55 7.42 2.12 0 0 2.12l7.42 7.43L0 16.97l2.12 2.12 7.43-7.42 7.42 7.42 2.12-2.12-7.42-7.42 7.42-7.43z\\\"></path></svg>\\n\\t\\t\\t\\t</div> <!-- simple-cart__remove -->\\n\\t\\t\\t</div> <!-- simple-cart__meta -->\\n\\t\\t</div> <!-- simple-cart__item -->\"); // Tidying up the element\n\n simpleCartRowContent = simpleCartRowContent.trim(); // Creating a placeholder element so we can turn the simpleCartRowContent html into an actual node\n\n var placeholderElement = document.createElement('div');\n placeholderElement.innerHTML = simpleCartRowContent;\n var simpleCartRow = placeholderElement.firstChild; // Add the element to the basket\n\n this.simpleCartItems.append(simpleCartRow); // If it's the first item to be added to the basket remove the empty class and empty cart message\n\n if (this.simpleCartItems.classList.contains('simple-cart__items--empty')) {\n this.simpleCartItems.classList.remove('simple-cart__items--empty');\n }\n\n if (document.querySelectorAll('.simple-cart__empty').length) {\n document.querySelector('.simple-cart__empty').remove();\n }\n }\n }, {\n key: \"updateSimpleCart\",\n value: function updateSimpleCart(cart) {\n this.cartCount.forEach(function (item) {\n item.innerHTML = cart.item_count;\n });\n\n if (cart.item_count == 0 && document.querySelectorAll('.simple-cart__empty').length != 1) {\n document.querySelectorAll(this.simpleCartItem).forEach(function (item) {\n item.remove();\n });\n var simpleCartItems = this.simpleCartItems;\n simpleCartItems.classList.add('simple-cart__items--empty');\n var placeholderElement = document.createElement('div');\n var simpleCartEmptyContent = '<p class=\"simple-cart__empty\">Your bag is currently empty.</p>';\n placeholderElement.innerHTML = simpleCartEmptyContent;\n var simpleCartEmptyMessage = placeholderElement.firstChild;\n simpleCartItems.parentNode.insertBefore(simpleCartEmptyMessage, simpleCartItems.nextSibling);\n }\n }\n }, {\n key: \"getCartToken\",\n value: function getCartToken() {\n try {\n return ['cart_token=' + (document.cookie.match('(^|; )cart=([^;]*)') || 0)[2]];\n } catch (e) {\n return [];\n }\n }\n }, {\n key: \"getGALinker\",\n value: function getGALinker() {\n try {\n return [ga.getAll()[0].get('linkerParam')];\n } catch (e) {\n return [];\n }\n } // https://support.rechargepayments.com/hc/en-us/articles/360006332733-Redirect-to-subscription-checkout-?source=search\n\n }, {\n key: \"reChargeProcessCart\",\n value: function reChargeProcessCart() {\n function get_cookie(name) {\n return (document.cookie.match('(^|; )' + name + '=([^;]*)') || 0)[2];\n }\n\n do {\n token = get_cookie('cart');\n } while (token == undefined);\n\n var myshopify_domain = '{{ shop.permanent_domain }}';
30\n\n try {\n var ga_linker = ga.getAll()[0].get('linkerParam');\n } catch (err) {\n var ga_linker = '';\n }\n\n checkout_url = 'https://checkout.rechargeapps.com/r/checkout?myshopify_domain=' + myshopify_domain + '&cart_token=' + token + '&' + ga_linker;\n }\n }, {\n key: \"updateCheckoutUrl\",\n value: function updateCheckoutUrl() {\n var shopUrl = Shopify.shop;\n var buttonUrl = ''; // Hardcoding the recharge cart URL, risky biz\n // https://checkout.rechargeapps.com/r/checkout?myshopify_domain= SHOP_URL &cart_token= CART_TOKEN &\n\n var checkout_url = 'https://checkout.rechargeapps.com/r/checkout?',\n url_params = ['myshopify_domain=' + shopUrl];\n url_params = url_params.concat(this.getCartToken()).concat(this.getGALinker());\n buttonUrl = checkout_url + url_params.join('&');\n this.cartCheckoutButton.setAttribute('href', buttonUrl);\n }\n }, {\n key: \"resetCheckoutUrl\",\n value: function resetCheckoutUrl() {\n var buttonUrl = '/checkout/';\n this.cartCheckoutButton.setAttribute('href', buttonUrl);\n }\n }, {\n key: \"buttonCartCheck\",\n value: function buttonCartCheck(variantID, form) {\n var _this10 = this;\n\n window.fetch('/cart.js', {\n credentials: 'same-origin',\n method: 'GET'\n }).then(function (response) {\n return response.json();\n }).then(function (cart) {\n if (cart.item_count) {\n cart.items.forEach(function (item, index) {\n if (variantID == item.id) {\n if (item.properties && item.properties['product_max'] == item.quantity) {\n form.querySelector(_this10.defaults.addToCart).setAttribute('disabled', 'disabled');\n } else {\n form.querySelector(_this10.defaults.addToCart).removeAttribute('disabled');\n }\n } else {\n form.querySelector(_this10.defaults.addToCart).removeAttribute('disabled');\n }\n });\n } else {\n form.querySelector(_this10.defaults.addToCart).removeAttribute('disabled');\n }\n });\n }\n }, {\n key: \"buttonElementFinder\",\n value: function buttonElementFinder(ID) {\n var _this11 = this;\n\n console.log('ID is undefined', ID == undefined);\n\n if (document.querySelector(\"form[id=\\\"\".concat(ID, \"\\\"]\"))) {\n var form = document.querySelector(\"#\".concat(ID));\n var variantID = form.querySelector('[name=\"id\"]').value;\n this.buttonCartCheck(variantID, form);\n } else if (document.querySelector(\"form[data-productid=\\\"\".concat(ID, \"\\\"]\"))) {\n console.log('form = ', document.querySelector(\"form[data-productid=\\\"\".concat(ID, \"\\\"]\")));\n\n var _form = document.querySelector(\"form[data-productid=\\\"\".concat(ID, \"\\\"]\"));\n\n var _variantID = _form.querySelector('[name=\"id\"]').value;\n\n this.buttonCartCheck(_variantID, _form);\n } else {\n console.log('ID,', ID);\n var variantIDs = document.querySelectorAll('[name=\"id\"]');\n console.log('variantIDs', variantIDs);\n variantIDs.forEach(function (item) {\n console.log('item.value', item.value, 'ID', ID);\n\n if (item.value == ID) {\n var _form2 = item.closest('form');\n\n _this11.buttonCartCheck(ID, _form2);\n }\n });\n }\n }\n }], [{\n key: \"removeItemAnimation\",\n value: function removeItemAnimation(item) {\n item.classList.add('is-invisible');\n }\n }]);\n\n return GoCart;\n}();\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (GoCart);\n\n//# sourceURL=webpack://natural-spa-factrory-retail/./src/javascript/gocart/GoCart.js?"); 31 32/***/ }), 33
34/***/ "./src/javascript/gocart/index.js": 35/*!****************************************!*\ 36 !*** ./src/javascript/gocart/index.js ***! 37 \****************************************/ 38/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 39 40"use strict"; 41eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _GoCart__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./GoCart */ \"./src/javascript/gocart/GoCart.js\");\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_GoCart__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n//# sourceURL=webpack://natural-spa-factrory-retail/./src/javascript/gocart/index.js?"); 42 43/***/ }), 44
45/***/ "./src/javascript/index.js": 46/*!*********************************!*\ 47 !*** ./src/javascript/index.js ***! 48 \*********************************/ 49/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 50 51"use strict"; 52eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _gocart__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gocart */ \"./src/javascript/gocart/index.js\");\n// Ajax add to cart - https://github.com/bornfight/goCart.js\n\n\n(function () {\n var goCart = new _gocart__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n cartMode: 'drawer',\n //drawer or mini-cart\n drawerDirection: 'right',\n //cart drawer from left or right\n displayModal: false,\n //display success modal when adding product to cart\n moneyFormat: '£{{amount}}' //template for money format when displaying money\n\n });\n})();\n\n//# sourceURL=webpack://natural-spa-factrory-retail/./src/javascript/index.js?"); 53 54/***/ }), 55
vendor: 9,342 bytes, lines 56-65
56/***/ "./node_modules/form-serialize/index.js": 57/*!**********************************************!*\ 58 !*** ./node_modules/form-serialize/index.js ***! 59 \**********************************************/ 60/***/ ((module) => { 61 62eval("// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i<elements.length ; ++i) {\n var element = elements[i];\n\n // ingore disabled fields\n if ((!options.disabled && element.disabled) || !element.name) {\n continue;\n }\n // ignore anyhting that is not considered a success field\n if (!k_r_success_contrls.test(element.nodeName) ||\n k_r_submitter.test(element.type)) {\n continue;\n }\n\n var key = element.name;\n var val = element.value;\n\n // we can't just use element.value for checkboxes cause some browsers lie to us\n // they say \"on\" for value when the box isn't checked\n if ((element.type === 'checkbox' || element.type === 'radio') && !element.checked) {\n val = undefined;\n }\n\n // If we want empty elements\n if (options.empty) {\n // for checkbox\n if (element.type === 'checkbox' && !element.checked) {\n val = '';\n }\n\n // for radio\n if (element.type === 'radio') {\n if (!radio_store[element.name] && !element.checked) {\n radio_store[element.name] = false;\n }\n else if (element.checked) {\n radio_store[element.name] = true;\n }\n }\n\n // if options empty is true, continue only if its radio\n if (val == undefined && element.type == 'radio') {\n continue;\n }\n }\n else {\n // value-less fields are ignored unless options.empty is true\n if (!val) {\n continue;\n }\n }\n\n // multi select boxes\n if (element.type === 'select-multiple') {\n val = [];\n\n var selectOptions = element.options;\n var isSelectedOptions = false;\n for (var j=0 ; j<selectOptions.length ; ++j) {\n var option = selectOptions[j];\n var allowedEmpty = options.empty && !option.value;\n var hasValue = (option.value || allowedEmpty);\n if (option.selected && hasValue) {\n isSelectedOptions = true;\n\n // If using a hash serializer be sure to add the\n // correct notation for an array in the multi-select\n // context. Here the name attribute on the select element\n // might be missing the trailing bracket pair. Both names\n // \"foo\" and \"foo[]\" should be arrays.\n if (options.hash && key.slice(key.length - 2) !== '[]') {\n result = serializer(result, key + '[]', option.value);\n }\n else {\n result = serializer(result, key, option.value);\n }\n }\n }\n\n // Serialize if no selected options and options.empty is true\n if (!isSelectedOptions && options.empty) {\n result = serializer(result, key, '');\n }\n\n continue;\n }\n\n result = serializer(result, key, val);\n }\n\n // Check for all empty radio buttons and serialize them with key=\"\"\n if (options.empty) {\n for (var key in radio_store) {\n if (!radio_store[key]) {\n result = serializer(result, key, '');\n }\n }\n }\n\n return result;\n}\n\nfunction parse_keys(string) {\n var keys = [];\n var prefix = /^([^\\[\\]]*)/;\n var children = new RegExp(brackets);\n var match = prefix.exec(string);\n\n if (match[1]) {\n keys.push(match[1]);\n }\n\n while ((match = children.exec(string)) !== null) {\n keys.push(match[1]);\n }\n\n return keys;\n}\n\nfunction hash_assign(result, keys, value) {\n if (keys.length === 0) {\n result = value;\n return result;\n }\n\n var key = keys.shift();\n var between = key.match(/^\\[(.+?)\\]$/);\n\n if (key === '[]') {\n result = result || [];\n\n if (Array.isArray(result)) {\n result.push(hash_assign(null, keys, value));\n }\n else {\n // This might be the result of bad name attributes like \"[][foo]\",\n // in this case the original `result` object will already be\n // assigned to an object literal. Rather than coerce the object to\n // an array, or cause an exception the attribute \"_values\" is\n // assigned as an array.\n result._values = result._values || [];\n result._values.push(hash_assign(null, keys, value));\n }\n\n return result;\n }\n\n // Key is an attribute name and can be assigned directly.\n if (!between) {\n result[key] = hash_assign(result[key], keys, value);\n }\n else {\n var string = between[1];\n // +var converts the variable into a number\n // better than parseInt because it doesn't truncate away trailing\n // letters and actually fails if whole thing is not a number\n var index = +string;\n\n // If the characters between the brackets is not a number it is an\n // attribute name and can be assigned directly.\n if (isNaN(index)) {\n result = result || {};\n result[string] = hash_assign(result[string], keys, value);\n }\n else {\n result = result || [];\n result[index] = hash_assign(result[index], keys, value);\n }\n }\n\n return result;\n}\n\n// Object/hash encoding serializer.\nfunction hash_serializer(result, key, value) {\n var matches = key.match(brackets);\n\n // Has brackets? Use the recursive assignment function to walk the keys,\n // construct any missing objects in the result tree and make the assignment\n // at the end of the chain.\n if (matches) {\n var keys = parse_keys(key);\n hash_assign(result, keys, value);\n }\n else {\n // Non bracket notation can make assignments directly.\n var existing = result[key];\n\n // If the value has been assigned already (for instance when a radio and\n // a checkbox have the same name attribute) convert the previous value\n // into an array before pushing into it.\n //\n // NOTE: If this requirement were removed all hash creation and\n // assignment could go through `hash_assign`.\n if (existing) {\n if (!Array.isArray(existing)) {\n result[key] = [ existing ];\n }\n\n result[key].push(value);\n }\n else {\n result[key] = value;\n }\n }\n\n return result;\n}\n\n// urlform encoding serializer\nfunction str_serialize(result, key, value) {\n // encode newlines as \\r\\n cause the html spec says so\n value = value.replace(/(\\r)?\\n/g, '\\r\\n');\n value = encodeURIComponent(value);\n\n // spaces should be '+' rather than '%20'.\n value = value.replace(/%20/g, '+');\n return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + value;\n}\n\nmodule.exports = serialize;\n\n\n//# sourceURL=webpack://natural-spa-factrory-retail/./node_modules/form-serialize/index.js?"); 63 64/***/ }), 65
66/***/ "./src/styles/index.scss": 67/*!*******************************!*\ 68 !*** ./src/styles/index.scss ***! 69 \*******************************/ 70/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 71 72"use strict"; 73eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n//# sourceURL=webpack://natural-spa-factrory-retail/./src/styles/index.scss?"); 74 75/***/ })
vendor: 6,929 bytes, lines 75-243
75 76 77/******/ }); 78/************************************************************************/ 79/******/ // The module cache 80/******/ var __webpack_module_cache__ = {}; 81/******/ 82/******/ // The require function 83/******/ function __webpack_require__(moduleId) { 84/******/ // Check if module is in cache 85/******/ var cachedModule = __webpack_module_cache__[moduleId]; 86/******/ if (cachedModule !== undefined) { 87/******/ return cachedModule.exports; 88/******/ } 89/******/ // Create a new module (and put it into the cache) 90/******/ var module = __webpack_module_cache__[moduleId] = { 91/******/ // no module.id needed 92/******/ // no module.loaded needed 93/******/ exports: {} 94/******/ }; 95/******/ 96/******/ // Execute the module function 97/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 98/******/ 99/******/ // Return the exports of the module 100/******/ return module.exports; 101/******/ } 102/******/ 103/******/ // expose the modules object (__webpack_modules__) 104/******/ __webpack_require__.m = __webpack_modules__; 105/******/ 106/************************************************************************/ 107/******/ /* webpack/runtime/chunk loaded */ 108/******/ (() => { 109/******/ var deferred = []; 110/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { 111/******/ if(chunkIds) { 112/******/ priority = priority || 0; 113/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; 114/******/ deferred[i] = [chunkIds, fn, priority]; 115/******/ return; 116/******/ } 117/******/ var notFulfilled = Infinity; 118/******/ for (var i = 0; i < deferred.length; i++) { 119/******/ var [chunkIds, fn, priority] = deferred[i]; 120/******/ var fulfilled = true; 121/******/ for (var j = 0; j < chunkIds.length; j++) { 122/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { 123/******/ chunkIds.splice(j--, 1); 124/******/ } else { 125/******/ fulfilled = false; 126/******/ if(priority < notFulfilled) notFulfilled = priority; 127/******/ } 128/******/ } 129/******/ if(fulfilled) { 130/******/ deferred.splice(i--, 1) 131/******/ var r = fn(); 132/******/ if (r !== undefined) result = r; 133/******/ } 134/******/ } 135/******/ return result; 136/******/ }; 137/******/ })(); 138/******/ 139/******/ /* webpack/runtime/compat get default export */ 140/******/ (() => { 141/******/ // getDefaultExport function for compatibility with non-harmony modules 142/******/ __webpack_require__.n = (module) => { 143/******/ var getter = module && module.__esModule ? 144/******/ () => (module['default']) : 145/******/ () => (module); 146/******/ __webpack_require__.d(getter, { a: getter }); 147/******/ return getter; 148/******/ }; 149/******/ })(); 150/******/ 151/******/ /* webpack/runtime/define property getters */ 152/******/ (() => { 153/******/ // define getter functions for harmony exports 154/******/ __webpack_require__.d = (exports, definition) => { 155/******/ for(var key in definition) { 156/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 157/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 158/******/ } 159/******/ } 160/******/ }; 161/******/ })(); 162/******/ 163/******/ /* webpack/runtime/hasOwnProperty shorthand */ 164/******/ (() => { 165/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 166/******/ })(); 167/******/ 168/******/ /* webpack/runtime/make namespace object */ 169/******/ (() => { 170/******/ // define __esModule on exports 171/******/ __webpack_require__.r = (exports) => { 172/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 173/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 174/******/ } 175/******/ Object.defineProperty(exports, '__esModule', { value: true }); 176/******/ }; 177/******/ })(); 178/******/ 179/******/ /* webpack/runtime/jsonp chunk loading */ 180/******/ (() => { 181/******/ // no baseURI 182/******/ 183/******/ // object to store loaded and loading chunks 184/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched 185/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded 186/******/ var installedChunks = { 187/******/ "main": 0, 188/******/ "styles": 0 189/******/ }; 190/******/ 191/******/ // no chunk on demand loading 192/******/ 193/******/ // no prefetching 194/******/ 195/******/ // no preloaded 196/******/ 197/******/ // no HMR 198/******/ 199/******/ // no HMR manifest 200/******/ 201/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0); 202/******/ 203/******/ // install a JSONP callback for chunk loading 204/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { 205/******/ var [chunkIds, moreModules, runtime] = data; 206/******/ // add "moreModules" to the modules object, 207/******/ // then flag all "chunkIds" as loaded and fire callback 208/******/ var moduleId, chunkId, i = 0; 209/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { 210/******/ for(moduleId in moreModules) { 211/******/ if(__webpack_require__.o(moreModules, moduleId)) { 212/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; 213/******/ } 214/******/ } 215/******/ if(runtime) var result = runtime(__webpack_require__); 216/******/ } 217/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); 218/******/ for(;i < chunkIds.length; i++) { 219/******/ chunkId = chunkIds[i]; 220/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { 221/******/ installedChunks[chunkId][0](); 222/******/ } 223/******/ installedChunks[chunkIds[i]] = 0; 224/******/ } 225/******/ return __webpack_require__.O(result); 226/******/ } 227/******/ 228/******/ var chunkLoadingGlobal = self["webpackChunknatural_spa_factrory_retail"] = self["webpackChunknatural_spa_factrory_retail"] || []; 229/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); 230/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); 231/******/ })(); 232/******/ 233/************************************************************************/ 234/******/ 235/******/ // startup 236/******/ // Load entry module and return exports 237/******/ // This entry module depends on other loaded chunks and execution need to be delayed 238/******/ __webpack_require__.O(undefined, ["styles"], () => (__webpack_require__("./src/javascript/index.js"))) 239/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["styles"], () => (__webpack_require__("./src/styles/index.scss"))) 240/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); 241/******/ 242/******/ })() 243;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.