PageSourceSearch

https://www.naturalspafactory.com/cdn/shop/t/49/assets/moresoda.min.js?v=87706038117991595231790171394

js naturalspafactory.com collected 2026-10-05 01:18:14 UTC 63,127 bytes, 243 lines download raw bytes

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.