Skip to content

Instantly share code, notes, and snippets.

@marioloncarek
Created June 1, 2020 16:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marioloncarek/795379c14de1070b411ea35ebd5e7946 to your computer and use it in GitHub Desktop.
Save marioloncarek/795379c14de1070b411ea35ebd5e7946 to your computer and use it in GitHub Desktop.
/*!
*
* @bornfight/gocart v1.0.6
*
*
* Copyright (c) Bornfight (https://www.bornfight.com/)
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
!(function (t, e) {
"object" === typeof exports && "object" === typeof module
? (module.exports = e())
: "function" === typeof define && define.amd
? define("goCart.js", [], e)
: "object" === typeof exports
? (exports["goCart.js"] = e())
: (t["goCart.js"] = e());
})(window, function () {
return (function (t) {
var e = {};
function __webpack_require__(r) {
if (e[r]) return e[r].exports;
var a = (e[r] = { i: r, l: !1, exports: {} });
return (
t[r].call(a.exports, a, a.exports, __webpack_require__),
(a.l = !0),
a.exports
);
}
return (
(__webpack_require__.m = t),
(__webpack_require__.c = e),
(__webpack_require__.d = function (t, e, r) {
__webpack_require__.o(t, e) ||
Object.defineProperty(t, e, { enumerable: !0, get: r });
}),
(__webpack_require__.r = function (t) {
"undefined" !== typeof Symbol &&
Symbol.toStringTag &&
Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }),
Object.defineProperty(t, "__esModule", { value: !0 });
}),
(__webpack_require__.t = function (t, e) {
if ((1 & e && (t = __webpack_require__(t)), 8 & e)) return t;
if (4 & e && "object" === typeof t && t && t.__esModule) return t;
var r = Object.create(null);
if (
(__webpack_require__.r(r),
Object.defineProperty(r, "default", { enumerable: !0, value: t }),
2 & e && "string" != typeof t)
)
for (var a in t)
__webpack_require__.d(
r,
a,
function (e) {
return t[e];
}.bind(null, a)
);
return r;
}),
(__webpack_require__.n = function (t) {
var e =
t && t.__esModule
? function () {
return t.default;
}
: function () {
return t;
};
return __webpack_require__.d(e, "a", e), e;
}),
(__webpack_require__.o = function (t, e) {
return Object.prototype.hasOwnProperty.call(t, e);
}),
(__webpack_require__.p = ""),
__webpack_require__((__webpack_require__.s = 1))
);
})([
function (t, e, r) {
var a = r(3),
n = /^(?:submit|button|image|reset|file)$/i,
o = /^(?:input|select|textarea|keygen)/i,
i = /(\[[^\[\]]*\])/g;
function hash_serializer(t, e, r) {
if (e.match(i)) {
!(function hash_assign(t, e, r) {
if (0 === e.length) return (t = r);
var a = e.shift(),
n = a.match(/^\[(.+?)\]$/);
if ("[]" === a)
return (
(t = t || []),
Array.isArray(t)
? t.push(hash_assign(null, e, r))
: ((t._values = t._values || []),
t._values.push(hash_assign(null, e, r))),
t
);
if (n) {
var o = n[1],
i = +o;
isNaN(i)
? ((t = t || {})[o] = hash_assign(t[o], e, r))
: ((t = t || [])[i] = hash_assign(t[i], e, r));
} else t[a] = hash_assign(t[a], e, r);
return t;
})(
t,
(function (t) {
var e = [],
r = new RegExp(i),
a = /^([^\[\]]*)/.exec(t);
for (a[1] && e.push(a[1]); null !== (a = r.exec(t)); )
e.push(a[1]);
return e;
})(e),
r
);
} else {
var a = t[e];
a ? (Array.isArray(a) || (t[e] = [a]), t[e].push(r)) : (t[e] = r);
}
return t;
}
function str_serialize(t, e, r) {
return (
(r = r.replace(/(\r)?\n/g, "\r\n")),
(r = (r = encodeURIComponent(r)).replace(/%20/g, "+")),
t + (t ? "&" : "") + encodeURIComponent(e) + "=" + r
);
}
t.exports = function (t, e) {
"object" != a(e)
? (e = { hash: !!e })
: void 0 === e.hash && (e.hash = !0);
for (
var r = e.hash ? {} : "",
i = e.serializer || (e.hash ? hash_serializer : str_serialize),
s = t && t.elements ? t.elements : [],
c = Object.create(null),
l = 0;
l < s.length;
++l
) {
var u = s[l];
if (
(e.disabled || !u.disabled) &&
u.name &&
o.test(u.nodeName) &&
!n.test(u.type)
) {
var d = u.name,
f = u.value;
if (
(("checkbox" !== u.type && "radio" !== u.type) ||
u.checked ||
(f = void 0),
e.empty)
) {
if (
("checkbox" !== u.type || u.checked || (f = ""),
"radio" === u.type &&
(c[u.name] || u.checked
? u.checked && (c[u.name] = !0)
: (c[u.name] = !1)),
void 0 == f && "radio" == u.type)
)
continue;
} else if (!f) continue;
if ("select-multiple" !== u.type) r = i(r, d, f);
else {
f = [];
for (var h = u.options, y = !1, p = 0; p < h.length; ++p) {
var m = h[p],
v = e.empty && !m.value,
_ = m.value || v;
m.selected &&
_ &&
((y = !0),
(r =
e.hash && "[]" !== d.slice(d.length - 2)
? i(r, d + "[]", m.value)
: i(r, d, m.value)));
}
!y && e.empty && (r = i(r, d, ""));
}
}
}
if (e.empty) for (var d in c) c[d] || (r = i(r, d, ""));
return r;
};
},
function (t, e, r) {
t.exports = r(4);
},
function (t, e, r) {},
function (t, e) {
function _typeof2(t) {
return (_typeof2 =
"function" === typeof Symbol && "symbol" === typeof Symbol.iterator
? function (t) {
return typeof t;
}
: function (t) {
return t &&
"function" === typeof Symbol &&
t.constructor === Symbol &&
t !== Symbol.prototype
? "symbol"
: typeof t;
})(t);
}
function _typeof(e) {
return (
"function" === typeof Symbol && "symbol" === _typeof2(Symbol.iterator)
? (t.exports = _typeof = function (t) {
return _typeof2(t);
})
: (t.exports = _typeof = function (t) {
return t &&
"function" === typeof Symbol &&
t.constructor === Symbol &&
t !== Symbol.prototype
? "symbol"
: _typeof2(t);
}),
_typeof(e)
);
}
t.exports = _typeof;
},
function (t, e, r) {
"use strict";
r.r(e);
r(2);
var a = "${{amount}}";
function formatMoney(t, e) {
"string" === typeof t && (t = t.replace(".", ""));
var r = "",
n = /\{\{\s*(\w+)\s*\}\}/,
o = e || a;
function formatWithDelimiters(t) {
var e =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: 2,
r =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: ",",
a =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: ".";
if (isNaN(t) || null == t) return 0;
var n = (t = (t / 100).toFixed(e)).split(".");
return (
n[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1".concat(r)) +
(n[1] ? a + n[1] : "")
);
}
switch (o.match(n)[1]) {
case "amount":
r = formatWithDelimiters(t, 2);
break;
case "amount_no_decimals":
r = formatWithDelimiters(t, 0);
break;
case "amount_with_comma_separator":
r = formatWithDelimiters(t, 2, ".", ",");
break;
case "amount_no_decimals_with_comma_separator":
r = formatWithDelimiters(t, 0, ".", ",");
}
return o.replace(n, r);
}
var n = {
searchParams: "URLSearchParams" in self,
iterable: "Symbol" in self && "iterator" in Symbol,
blob:
"FileReader" in self &&
"Blob" in self &&
(function () {
try {
return new Blob(), !0;
} catch (t) {
return !1;
}
})(),
formData: "FormData" in self,
arrayBuffer: "ArrayBuffer" in self,
};
if (n.arrayBuffer)
var o = [
"[object Int8Array]",
"[object Uint8Array]",
"[object Uint8ClampedArray]",
"[object Int16Array]",
"[object Uint16Array]",
"[object Int32Array]",
"[object Uint32Array]",
"[object Float32Array]",
"[object Float64Array]",
],
i =
ArrayBuffer.isView ||
function (t) {
return t && o.indexOf(Object.prototype.toString.call(t)) > -1;
};
function normalizeName(t) {
if (
("string" !== typeof t && (t = String(t)),
/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))
)
throw new TypeError("Invalid character in header field name");
return t.toLowerCase();
}
function normalizeValue(t) {
return "string" !== typeof t && (t = String(t)), t;
}
function iteratorFor(t) {
var e = {
next: function () {
var e = t.shift();
return { done: void 0 === e, value: e };
},
};
return (
n.iterable &&
(e[Symbol.iterator] = function () {
return e;
}),
e
);
}
function Headers(t) {
(this.map = {}),
t instanceof Headers
? t.forEach(function (t, e) {
this.append(e, t);
}, this)
: Array.isArray(t)
? t.forEach(function (t) {
this.append(t[0], t[1]);
}, this)
: t &&
Object.getOwnPropertyNames(t).forEach(function (e) {
this.append(e, t[e]);
}, this);
}
function consumed(t) {
if (t.bodyUsed) return Promise.reject(new TypeError("Already read"));
t.bodyUsed = !0;
}
function fileReaderReady(t) {
return new Promise(function (e, r) {
(t.onload = function () {
e(t.result);
}),
(t.onerror = function () {
r(t.error);
});
});
}
function readBlobAsArrayBuffer(t) {
var e = new FileReader(),
r = fileReaderReady(e);
return e.readAsArrayBuffer(t), r;
}
function bufferClone(t) {
if (t.slice) return t.slice(0);
var e = new Uint8Array(t.byteLength);
return e.set(new Uint8Array(t)), e.buffer;
}
function Body() {
return (
(this.bodyUsed = !1),
(this._initBody = function (t) {
var e;
(this._bodyInit = t),
t
? "string" === typeof t
? (this._bodyText = t)
: n.blob && Blob.prototype.isPrototypeOf(t)
? (this._bodyBlob = t)
: n.formData && FormData.prototype.isPrototypeOf(t)
? (this._bodyFormData = t)
: n.searchParams && URLSearchParams.prototype.isPrototypeOf(t)
? (this._bodyText = t.toString())
: n.arrayBuffer &&
n.blob &&
(e = t) &&
DataView.prototype.isPrototypeOf(e)
? ((this._bodyArrayBuffer = bufferClone(t.buffer)),
(this._bodyInit = new Blob([this._bodyArrayBuffer])))
: n.arrayBuffer &&
(ArrayBuffer.prototype.isPrototypeOf(t) || i(t))
? (this._bodyArrayBuffer = bufferClone(t))
: (this._bodyText = t = Object.prototype.toString.call(t))
: (this._bodyText = ""),
this.headers.get("content-type") ||
("string" === typeof t
? this.headers.set("content-type", "text/plain;charset=UTF-8")
: this._bodyBlob && this._bodyBlob.type
? this.headers.set("content-type", this._bodyBlob.type)
: n.searchParams &&
URLSearchParams.prototype.isPrototypeOf(t) &&
this.headers.set(
"content-type",
"application/x-www-form-urlencoded;charset=UTF-8"
));
}),
n.blob &&
((this.blob = function () {
var t = consumed(this);
if (t) return t;
if (this._bodyBlob) return Promise.resolve(this._bodyBlob);
if (this._bodyArrayBuffer)
return Promise.resolve(new Blob([this._bodyArrayBuffer]));
if (this._bodyFormData)
throw new Error("could not read FormData body as blob");
return Promise.resolve(new Blob([this._bodyText]));
}),
(this.arrayBuffer = function () {
return this._bodyArrayBuffer
? consumed(this) || Promise.resolve(this._bodyArrayBuffer)
: this.blob().then(readBlobAsArrayBuffer);
})),
(this.text = function () {
var t = consumed(this);
if (t) return t;
if (this._bodyBlob)
return (function (t) {
var e = new FileReader(),
r = fileReaderReady(e);
return e.readAsText(t), r;
})(this._bodyBlob);
if (this._bodyArrayBuffer)
return Promise.resolve(
(function (t) {
for (
var e = new Uint8Array(t), r = new Array(e.length), a = 0;
a < e.length;
a++
)
r[a] = String.fromCharCode(e[a]);
return r.join("");
})(this._bodyArrayBuffer)
);
if (this._bodyFormData)
throw new Error("could not read FormData body as text");
return Promise.resolve(this._bodyText);
}),
n.formData &&
(this.formData = function () {
return this.text().then(decode);
}),
(this.json = function () {
return this.text().then(JSON.parse);
}),
this
);
}
(Headers.prototype.append = function (t, e) {
(t = normalizeName(t)), (e = normalizeValue(e));
var r = this.map[t];
this.map[t] = r ? r + ", " + e : e;
}),
(Headers.prototype.delete = function (t) {
delete this.map[normalizeName(t)];
}),
(Headers.prototype.get = function (t) {
return (t = normalizeName(t)), this.has(t) ? this.map[t] : null;
}),
(Headers.prototype.has = function (t) {
return this.map.hasOwnProperty(normalizeName(t));
}),
(Headers.prototype.set = function (t, e) {
this.map[normalizeName(t)] = normalizeValue(e);
}),
(Headers.prototype.forEach = function (t, e) {
for (var r in this.map)
this.map.hasOwnProperty(r) && t.call(e, this.map[r], r, this);
}),
(Headers.prototype.keys = function () {
var t = [];
return (
this.forEach(function (e, r) {
t.push(r);
}),
iteratorFor(t)
);
}),
(Headers.prototype.values = function () {
var t = [];
return (
this.forEach(function (e) {
t.push(e);
}),
iteratorFor(t)
);
}),
(Headers.prototype.entries = function () {
var t = [];
return (
this.forEach(function (e, r) {
t.push([r, e]);
}),
iteratorFor(t)
);
}),
n.iterable &&
(Headers.prototype[Symbol.iterator] = Headers.prototype.entries);
var s = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
function Request(t, e) {
var r = (e = e || {}).body;
if (t instanceof Request) {
if (t.bodyUsed) throw new TypeError("Already read");
(this.url = t.url),
(this.credentials = t.credentials),
e.headers || (this.headers = new Headers(t.headers)),
(this.method = t.method),
(this.mode = t.mode),
(this.signal = t.signal),
r || null == t._bodyInit || ((r = t._bodyInit), (t.bodyUsed = !0));
} else this.url = String(t);
if (
((this.credentials =
e.credentials || this.credentials || "same-origin"),
(!e.headers && this.headers) ||
(this.headers = new Headers(e.headers)),
(this.method = (function (t) {
var e = t.toUpperCase();
return s.indexOf(e) > -1 ? e : t;
})(e.method || this.method || "GET")),
(this.mode = e.mode || this.mode || null),
(this.signal = e.signal || this.signal),
(this.referrer = null),
("GET" === this.method || "HEAD" === this.method) && r)
)
throw new TypeError("Body not allowed for GET or HEAD requests");
this._initBody(r);
}
function decode(t) {
var e = new FormData();
return (
t
.trim()
.split("&")
.forEach(function (t) {
if (t) {
var r = t.split("="),
a = r.shift().replace(/\+/g, " "),
n = r.join("=").replace(/\+/g, " ");
e.append(decodeURIComponent(a), decodeURIComponent(n));
}
}),
e
);
}
function parseHeaders(t) {
var e = new Headers();
return (
t
.replace(/\r?\n[\t ]+/g, " ")
.split(/\r?\n/)
.forEach(function (t) {
var r = t.split(":"),
a = r.shift().trim();
if (a) {
var n = r.join(":").trim();
e.append(a, n);
}
}),
e
);
}
function Response(t, e) {
e || (e = {}),
(this.type = "default"),
(this.status = void 0 === e.status ? 200 : e.status),
(this.ok = this.status >= 200 && this.status < 300),
(this.statusText = "statusText" in e ? e.statusText : "OK"),
(this.headers = new Headers(e.headers)),
(this.url = e.url || ""),
this._initBody(t);
}
(Request.prototype.clone = function () {
return new Request(this, { body: this._bodyInit });
}),
Body.call(Request.prototype),
Body.call(Response.prototype),
(Response.prototype.clone = function () {
return new Response(this._bodyInit, {
status: this.status,
statusText: this.statusText,
headers: new Headers(this.headers),
url: this.url,
});
}),
(Response.error = function () {
var t = new Response(null, { status: 0, statusText: "" });
return (t.type = "error"), t;
});
var c = [301, 302, 303, 307, 308];
Response.redirect = function (t, e) {
if (-1 === c.indexOf(e)) throw new RangeError("Invalid status code");
return new Response(null, { status: e, headers: { location: t } });
};
var l = self.DOMException;
try {
new l();
} catch (h) {
((l = function (t, e) {
(this.message = t), (this.name = e);
var r = Error(t);
this.stack = r.stack;
}).prototype = Object.create(Error.prototype)),
(l.prototype.constructor = l);
}
function fetch(t, e) {
return new Promise(function (r, a) {
var o = new Request(t, e);
if (o.signal && o.signal.aborted)
return a(new l("Aborted", "AbortError"));
var i = new XMLHttpRequest();
function abortXhr() {
i.abort();
}
(i.onload = function () {
var t = {
status: i.status,
statusText: i.statusText,
headers: parseHeaders(i.getAllResponseHeaders() || ""),
};
t.url =
"responseURL" in i
? i.responseURL
: t.headers.get("X-Request-URL");
var e = "response" in i ? i.response : i.responseText;
r(new Response(e, t));
}),
(i.onerror = function () {
a(new TypeError("Network request failed"));
}),
(i.ontimeout = function () {
a(new TypeError("Network request failed"));
}),
(i.onabort = function () {
a(new l("Aborted", "AbortError"));
}),
i.open(o.method, o.url, !0),
"include" === o.credentials
? (i.withCredentials = !0)
: "omit" === o.credentials && (i.withCredentials = !1),
"responseType" in i && n.blob && (i.responseType = "blob"),
o.headers.forEach(function (t, e) {
i.setRequestHeader(e, t);
}),
o.signal &&
(o.signal.addEventListener("abort", abortXhr),
(i.onreadystatechange = function () {
4 === i.readyState &&
o.signal.removeEventListener("abort", abortXhr);
})),
i.send("undefined" === typeof o._bodyInit ? null : o._bodyInit);
});
}
(fetch.polyfill = !0),
self.fetch ||
((self.fetch = fetch),
(self.Headers = Headers),
(self.Request = Request),
(self.Response = Response));
var u = r(0),
d = r.n(u);
function _defineProperties(t, e) {
for (var r = 0; r < e.length; r++) {
var a = e[r];
(a.enumerable = a.enumerable || !1),
(a.configurable = !0),
"value" in a && (a.writable = !0),
Object.defineProperty(t, a.key, a);
}
}
var f = (function () {
function GoCart(t) {
!(function (t, e) {
if (!(t instanceof e))
throw new TypeError("Cannot call a class as a function");
})(this, GoCart);
(this.defaults = Object.assign(
{},
{
cartModalFail: ".js-go-cart-modal-fail",
cartModalFailClose: ".js-go-cart-modal-fail-close",
cartModal: ".js-go-cart-modal",
cartModalClose: ".js-go-cart-modal-close",
cartModalContent: ".js-go-cart-modal-content",
cartDrawer: ".js-go-cart-drawer",
cartDrawerContent: ".js-go-cart-drawer-content",
cartDrawerSubTotal: ".js-go-cart-drawer-subtotal",
cartDrawerFooter: ".js-go-cart-drawer-footer",
cartDrawerClose: ".js-go-cart-drawer-close",
cartMiniCart: ".js-go-cart-mini-cart",
cartMiniCartContent: ".js-go-cart-mini-cart-content",
cartMiniCartSubTotal: ".js-go-cart-mini-cart-subtotal",
cartMiniCartFooter: ".js-go-cart-mini-cart-footer",
cartTrigger: ".js-go-cart-trigger",
cartOverlay: ".js-go-cart-overlay",
cartCount: ".js-go-cart-counter",
addToCart: ".js-go-cart-add-to-cart",
removeFromCart: ".js-go-cart-remove-from-cart",
removeFromCartNoDot: "js-go-cart-remove-from-cart",
itemQuantity: ".js-go-cart-quantity",
itemQuantityPlus: ".js-go-cart-quantity-plus",
itemQuantityMinus: ".js-go-cart-quantity-minus",
cartMode: "drawer",
drawerDirection: "right",
displayModal: !1,
moneyFormat: "${{amount}}",
},
t
)),
(this.cartModalFail = document.querySelector(
this.defaults.cartModalFail
)),
(this.cartModalFailClose = document.querySelector(
this.defaults.cartModalFailClose
)),
(this.cartModal = document.querySelector(this.defaults.cartModal)),
(this.cartModalClose = document.querySelectorAll(
this.defaults.cartModalClose
)),
(this.cartModalContent = document.querySelector(
this.defaults.cartModalContent
)),
(this.cartDrawer = document.querySelector(
this.defaults.cartDrawer
)),
(this.cartDrawerContent = document.querySelector(
this.defaults.cartDrawerContent
)),
(this.cartDrawerSubTotal = document.querySelector(
this.defaults.cartDrawerSubTotal
)),
(this.cartDrawerFooter = document.querySelector(
this.defaults.cartDrawerFooter
)),
(this.cartDrawerClose = document.querySelector(
this.defaults.cartDrawerClose
)),
(this.cartMiniCart = document.querySelector(
this.defaults.cartMiniCart
)),
(this.cartMiniCartContent = document.querySelector(
this.defaults.cartMiniCartContent
)),
(this.cartMiniCartSubTotal = document.querySelector(
this.defaults.cartMiniCartSubTotal
)),
(this.cartMiniCartFooter = document.querySelector(
this.defaults.cartMiniCartFooter
)),
(this.cartTrigger = document.querySelector(
this.defaults.cartTrigger
)),
(this.cartOverlay = document.querySelector(
this.defaults.cartOverlay
)),
(this.cartCount = document.querySelector(this.defaults.cartCount)),
(this.addToCart = document.querySelectorAll(
this.defaults.addToCart
)),
(this.removeFromCart = this.defaults.removeFromCart),
(this.removeFromCartNoDot = this.defaults.removeFromCartNoDot),
(this.itemQuantity = this.defaults.itemQuantity),
(this.itemQuantityPlus = this.defaults.itemQuantityPlus),
(this.itemQuantityMinus = this.defaults.itemQuantityMinus),
(this.cartMode = this.defaults.cartMode),
(this.drawerDirection = this.defaults.drawerDirection),
(this.displayModal = this.defaults.displayModal),
(this.moneyFormat = this.defaults.moneyFormat),
this.init();
}
var t, e, r;
return (
(t = GoCart),
(r = [
{
key: "removeItemAnimation",
value: function (t) {
t.classList.add("is-invisible");
},
},
]),
(e = [
{
key: "init",
value: function () {
var t = this;
this.fetchCart(),
this.isDrawerMode && this.setDrawerDirection(),
this.addToCart.forEach(function (e) {
e.addEventListener("click", function (r) {
r.preventDefault();
var a = e.parentNode.getAttribute("id");
t.addItemToCart(a);
});
}),
this.cartTrigger.addEventListener("click", function () {
t.isDrawerMode ? t.openCartDrawer() : t.openMiniCart(),
t.openCartOverlay();
}),
this.cartOverlay.addEventListener("click", function () {
t.closeFailModal(),
t.closeCartModal(),
t.isDrawerMode ? t.closeCartDrawer() : t.closeMiniCart(),
t.closeCartOverlay();
}),
this.isDrawerMode &&
this.cartDrawerClose.addEventListener("click", function () {
t.closeCartDrawer(), t.closeCartOverlay();
}),
this.displayModal &&
this.cartModalClose.forEach(function (e) {
e.addEventListener("click", function () {
t.closeFailModal(),
t.closeCartModal(),
t.isDrawerMode
? t.closeCartDrawer()
: t.closeMiniCart(),
t.closeCartOverlay();
});
}),
this.cartModalFailClose.addEventListener(
"click",
function () {
t.closeFailModal(),
t.closeCartModal(),
t.isDrawerMode
? t.closeCartDrawer()
: t.closeMiniCart(),
t.closeCartOverlay();
}
);
},
},
{
key: "fetchCart",
value: function (t) {
var e = this;
window
.fetch("/cart.js", {
credentials: "same-origin",
method: "GET",
})
.then(function (t) {
return t.json();
})
.then(function (r) {
return e.fetchHandler(r, t);
})
.catch(function (t) {
throw (e.ajaxRequestFail(), new Error(t));
});
},
},
{
key: "addItemToCart",
value: function (t) {
var e = this,
r = document.querySelector("#".concat(t)),
a = d()(r, { hash: !0 });
window
.fetch("/cart/add.js", {
method: "POST",
credentials: "include",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(a),
})
.then(function (t) {
return t.json();
})
.then(function (t) {
return e.addItemToCartHandler(t);
})
.catch(function (t) {
throw (e.ajaxRequestFail(), new Error(t));
});
},
},
{
key: "removeItem",
value: function (t) {
var e = this;
window
.fetch("/cart/change.js", {
method: "POST",
credentials: "same-origin",
body: JSON.stringify({ quantity: 0, line: t }),
headers: { "Content-Type": "application/json" },
})
.then(function (t) {
return t.json();
})
.then(function () {
return e.fetchCart();
})
.catch(function (t) {
throw (e.ajaxRequestFail(), new Error(t));
});
},
},
{
key: "changeItemQuantity",
value: function (t, e) {
var r = this;
window
.fetch("/cart/change.js", {
method: "POST",
credentials: "same-origin",
body: JSON.stringify({ quantity: e, line: t }),
headers: { "Content-Type": "application/json" },
})
.then(function (t) {
return t.json();
})
.then(function () {
return r.fetchCart();
})
.catch(function (t) {
throw (r.ajaxRequestFail(), new Error(t));
});
},
},
{
key: "cartItemCount",
value: function (t) {
this.cartCount.innerHTML = t.item_count;
},
},
{
key: "fetchAndOpenCart",
value: function () {
var t = this;
this.fetchCart(function () {
t.isDrawerMode ? t.openCartDrawer() : t.openMiniCart(),
t.openCartOverlay();
});
},
},
{
key: "fetchAndOpenModal",
value: function (t) {
var e = this;
this.fetchCart(function () {
e.renderCartModal(t), e.openCartModal(), e.openCartOverlay();
});
},
},
{
key: "fetchHandler",
value: function (t, e) {
this.cartItemCount(t),
this.isDrawerMode
? 0 === t.item_count
? (this.renderBlankCartDrawer(),
this.cartDrawerFooter.classList.add("is-invisible"))
: (this.renderDrawerCart(t),
this.cartDrawerFooter.classList.remove("is-invisible"),
"function" === typeof e && e(t))
: 0 === t.item_count
? (this.renderBlankMiniCart(),
this.cartMiniCartFooter.classList.add("is-invisible"))
: (this.renderMiniCart(t),
this.cartMiniCartFooter.classList.remove("is-invisible"),
"function" === typeof e && e(t));
},
},
{
key: "addItemToCartHandler",
value: function (t) {
return this.displayModal
? this.fetchAndOpenModal(t)
: this.fetchAndOpenCart();
},
},
{
key: "ajaxRequestFail",
value: function () {
this.openFailModal(), this.openCartOverlay();
},
},
{
key: "renderCartModal",
value: function (t) {
this.clearCartModal();
var e = t.variant_title;
e = null === e ? "" : "(".concat(e, ")");
var r = '\n <div class="go-cart-modal-item">\n <div class="go-cart-item__image" style="background-image: url('
.concat(
t.image,
');"></div>\n <div class="go-cart-item__info">\n <a href="'
)
.concat(t.url, '" class="go-cart-item__title">')
.concat(t.product_title, " ")
.concat(
e,
"</a> was added to your cart.\n </div>\n </div>\n "
);
this.cartModalContent.innerHTML += r;
},
},
{
key: "renderDrawerCart",
value: function (t) {
var e = this;
this.clearCartDrawer(),
t.items.forEach(function (t, r) {
var a = t.variant_title;
null === a && (a = "");
var n = '\n <div class="go-cart-item__single" data-line="'
.concat(
Number(r + 1),
'">\n <div class="go-cart-item__info-wrapper">\n <div class="go-cart-item__image" style="background-image: url('
)
.concat(
t.image,
');"></div>\n <div class="go-cart-item__info">\n <a href="'
)
.concat(t.url, '" class="go-cart-item__title">')
.concat(
t.product_title,
'</a>\n <div class="go-cart-item__variant">'
)
.concat(
a,
'</div>\n <div class="go-cart-item__quantity">\n <span class="go-cart-item__quantity-label">Quantity: </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(
t.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">'
)
.concat(
formatMoney(t.line_price, e.moneyFormat),
'</div>\n <a class="go-cart-item__remove '
)
.concat(
e.removeFromCartNoDot,
'">Remove</a>\n </div>\n '
);
e.cartDrawerContent.innerHTML += n;
}),
(this.cartDrawerSubTotal.innerHTML = formatMoney(
t.total_price,
this.moneyFormat
)),
this.cartDrawerSubTotal.parentNode.classList.remove(
"is-invisible"
),
document
.querySelectorAll(this.removeFromCart)
.forEach(function (t) {
t.addEventListener("click", function () {
GoCart.removeItemAnimation(t.parentNode);
var r = t.parentNode.getAttribute("data-line");
e.removeItem(r);
});
}),
document
.querySelectorAll(this.itemQuantityPlus)
.forEach(function (t) {
t.addEventListener("click", function () {
var r = t.parentNode.parentNode.parentNode.parentNode.getAttribute(
"data-line"
),
a =
Number(
t.parentNode.querySelector(e.itemQuantity).value
) + 1;
e.changeItemQuantity(r, a);
});
}),
document
.querySelectorAll(this.itemQuantityMinus)
.forEach(function (t) {
t.addEventListener("click", function () {
var r = t.parentNode.parentNode.parentNode.parentNode.getAttribute(
"data-line"
),
a =
Number(
t.parentNode.querySelector(e.itemQuantity).value
) - 1;
e.changeItemQuantity(r, a),
0 ===
Number(
t.parentNode.querySelector(e.itemQuantity).value -
1
) &&
GoCart.removeItemAnimation(
t.parentNode.parentNode.parentNode.parentNode
);
});
});
},
},
{
key: "renderMiniCart",
value: function (t) {
var e = this;
this.clearMiniCart(),
t.items.forEach(function (t, r) {
var a = t.variant_title;
null === a && (a = "");
var n = '\n <div class="go-cart-item__single" data-line="'
.concat(
Number(r + 1),
'">\n <div class="go-cart-item__info-wrapper">\n <div class="go-cart-item__image" style="background-image: url('
)
.concat(
t.image,
');"></div>\n <div class="go-cart-item__info">\n <a href="'
)
.concat(t.url, '" class="go-cart-item__title">')
.concat(
t.product_title,
'</a>\n <div class="go-cart-item__variant">'
)
.concat(
a,
'</div>\n <div class="go-cart-item__quantity">\n <span class="go-cart-item__quantity-label">Quantity: </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(
t.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">'
)
.concat(
formatMoney(t.line_price, e.moneyFormat),
'</div>\n <a class="go-cart-item__remove '
)
.concat(
e.removeFromCartNoDot,
'">Remove</a>\n </div>\n '
);
e.cartMiniCartContent.innerHTML += n;
}),
(this.cartMiniCartSubTotal.innerHTML = formatMoney(
t.total_price,
this.moneyFormat
)),
this.cartMiniCartSubTotal.parentNode.classList.remove(
"is-invisible"
),
document
.querySelectorAll(this.removeFromCart)
.forEach(function (t) {
t.addEventListener("click", function () {
GoCart.removeItemAnimation(t.parentNode);
var r = t.parentNode.getAttribute("data-line");
e.removeItem(r);
});
}),
document
.querySelectorAll(this.itemQuantityPlus)
.forEach(function (t) {
t.addEventListener("click", function () {
var r = t.parentNode.parentNode.parentNode.parentNode.getAttribute(
"data-line"
),
a =
Number(
t.parentNode.querySelector(e.itemQuantity).value
) + 1;
e.changeItemQuantity(r, a);
});
}),
document
.querySelectorAll(this.itemQuantityMinus)
.forEach(function (t) {
t.addEventListener("click", function () {
var r = t.parentNode.parentNode.parentNode.parentNode.getAttribute(
"data-line"
),
a =
Number(
t.parentNode.querySelector(e.itemQuantity).value
) - 1;
e.changeItemQuantity(r, a),
0 ===
Number(
t.parentNode.querySelector(e.itemQuantity).value -
1
) &&
GoCart.removeItemAnimation(
t.parentNode.parentNode.parentNode.parentNode
);
});
});
},
},
{
key: "renderBlankCartDrawer",
value: function () {
this.cartDrawerSubTotal.parentNode.classList.add(
"is-invisible"
),
this.clearCartDrawer(),
(this.cartDrawerContent.innerHTML =
'<div class="go-cart__empty">Your Cart is currenty empty!</div>');
},
},
{
key: "renderBlankMiniCart",
value: function () {
this.cartMiniCartSubTotal.parentNode.classList.add(
"is-invisible"
),
this.clearMiniCart(),
(this.cartMiniCartContent.innerHTML =
'<div class="go-cart__empty">Your Cart is currenty empty!</div>');
},
},
{
key: "clearCartDrawer",
value: function () {
this.cartDrawerContent.innerHTML = "";
},
},
{
key: "clearMiniCart",
value: function () {
this.cartMiniCartContent.innerHTML = "";
},
},
{
key: "clearCartModal",
value: function () {
this.cartModalContent.innerHTML = "";
},
},
{
key: "openCartDrawer",
value: function () {
this.cartDrawer.classList.add("is-open");
},
},
{
key: "closeCartDrawer",
value: function () {
this.cartDrawer.classList.remove("is-open");
},
},
{
key: "openMiniCart",
value: function () {
this.cartMiniCart.classList.add("is-open");
},
},
{
key: "closeMiniCart",
value: function () {
this.cartMiniCart.classList.remove("is-open");
},
},
{
key: "openFailModal",
value: function () {
this.cartModalFail.classList.add("is-open");
},
},
{
key: "closeFailModal",
value: function () {
this.cartModalFail.classList.remove("is-open");
},
},
{
key: "openCartModal",
value: function () {
this.cartModal.classList.add("is-open");
},
},
{
key: "closeCartModal",
value: function () {
this.cartModal.classList.remove("is-open");
},
},
{
key: "openCartOverlay",
value: function () {
this.cartOverlay.classList.add("is-open");
},
},
{
key: "closeCartOverlay",
value: function () {
this.cartOverlay.classList.remove("is-open");
},
},
{
key: "setDrawerDirection",
value: function () {
this.cartDrawer.classList.add(
"go-cart__drawer--".concat(this.drawerDirection)
);
},
},
{
key: "isDrawerMode",
get: function () {
return "drawer" === this.cartMode;
},
},
]) && _defineProperties(t.prototype, e),
r && _defineProperties(t, r),
GoCart
);
})();
e.default = f;
},
]);
});
//# sourceMappingURL=index.js.map
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment