{"version":3,"file":"basket.min.js","sources":["basket.js"],"sourcesContent":["Vue.component(\"basket-item\",\n {\n template: \"#basketitem-template\",\n props:\n {\n item: { type: Object, required: true }\n },\n data: function ()\n {\n return { updatedQuantity: 0 };\n },\n created: function ()\n {\n this.updatedQuantity = this.item.quantity;\n },\n computed:\n {\n quantityChanged: function ()\n {\n return this.item.quantity != this.updatedQuantity;\n },\n\n quantityInvalid: function()\n {\n return this.updatedQuantity == \"\" || this.updatedQuantity < 1 || this.updatedQuantity > 999;\n }\n },\n watch:\n {\n item: function(val)\n {\n this.updatedQuantity = val.quantity;\n }\n },\n methods:\n {\n deleteItem: function () { this.$emit(\"delete-item\", this.item.id); },\n showDetails: function () { this.$emit(\"show-details\", this.item.id, this.item.customiseDetails); },\n updateQuantity: function () { this.$emit(\"update-quantity\", this.item.id, this.updatedQuantity); }\n }\n });\n\nvar payPalWindow;\n\n var app = new Vue(\n {\n el: \"#body-container\",\n data:\n {\n basket: model.basket,\n customiseNotificationId: model.customiseNotificationId,\n changeCustomisedDetails: model.changeCustomisedDetails,\n basketEmpty: true,\n itemCount: 0,\n token: model.token,\n checkId: null,\n orderId: null,\n payPalUrl: null,\n busy: false,\n payPalBusy: false\n },\n mounted: function()\n {\n clearLoading();\n\n window.addEventListener(\"beforeunload\", function (e)\n {\n if (payPalWindow)\n {\n payPalWindow.close();\n payPalWindow = null;\n }\n });\n },\n computed:\n {\n },\n methods:\n {\n showError: function(error)\n {\n eventBus.$emit(\"notify-error\", error);\n },\n\n setBusy: function (isBusy)\n {\n this.busy = isBusy;\n },\n\n setPayPalBusy: function (isBusy)\n {\n this.payPalBusy = isBusy;\n },\n\n isEmpty: function (info)\n {\n this.basketEmpty = true;\n },\n\n listUpdated: function (info)\n {\n if (info.count !== this.itemCount)\n {\n this.itemCount = info.count;\n this.basketEmpty = this.itemCount === 0;\n\n if (this.itemCount === 0)\n {\n $(\"a.basket span\").text(\"(empty)\");\n }\n else if (this.itemCount === 1)\n {\n $(\"a.basket span\").text(\"(1 item)\");\n }\n else\n {\n $(\"a.basket span\").text(\"(\" + this.itemCount + \" items)\");\n }\n }\n },\n\n deleteItem: function (id)\n {\n eventBus.$emit(\"notify-clear\");\n eventBus.$emit(\"confirmDelete\", { key: \"id\", value: id, params: [\"name\"] });\n },\n\n deleteConfirmed: function (info)\n {\n this.setBusy(true);\n\n deleteObject(\"/api/basket/deleteitem/\" + info.id, { RequestVerificationToken: model.antiforgeyToken })\n .then(function (data)\n {\n $(\"a.basket span\").text(data.summary.description);\n app.basket.itemCount = data.summary.itemCount;\n app.basket.itemTotal = data.summary.itemTotal;\n app.basket.postage = data.summary.postage;\n app.basket.total = data.summary.total;\n app.basket.token = data.summary.token;\n app.token = data.summary.token;\n eventBus.$emit(\"removeItem\", { key: \"id\", value: info.id });\n })\n .catch(function (data)\n {\n eventBus.$emit(\"notify-error\", data);\n })\n .finally(function()\n {\n app.setBusy(false);\n });\n },\n\n showDetails: function (id, details)\n {\n eventBus.$emit(\"notify-clear\");\n this.changeCustomisedDetails.id = id;\n this.changeCustomisedDetails.details = details;\n $(\"#customiseDetailsModal\").modal(\"show\");\n },\n \n submitForm: function ()\n {\n eventBus.$emit(\"notify-clear\", this.customiseNotificationId);\n\n this.$validator.validateAll().then(function (result)\n {\n app.setBusy(true);\n\n if (result)\n {\n submitForm(\"/api/basket/updatecustomised\", \"PUT\", { RequestVerificationToken: model.antiforgeyToken }, JSON.stringify(app.changeCustomisedDetails))\n .then(function (data)\n {\n eventBus.$emit(\"updateItem\", { key: \"id\", value: app.changeCustomisedDetails.id, properties: [ { name: \"customiseDetails\", value: app.changeCustomisedDetails.details } ] });\n $(\"#customiseDetailsModal\").modal(\"hide\");\n })\n .catch(function (data)\n {\n eventBus.$emit(\"notify-error\", data, app.customiseNotificationId);\n })\n .finally(function()\n {\n app.setBusy(false);\n });\n }\n });\n },\n \n updateQuantity: function (id, count)\n {\n eventBus.$emit(\"notify-clear\");\n this.setBusy(true);\n\n submitForm(\"/api/basket/updatequantity/\" + id + \"/\" + count, \"PUT\", { RequestVerificationToken: model.antiforgeyToken }, null)\n .then(function (data)\n {\n $(\"a.basket span\").text(data.summary.description);\n app.basket.itemCount = data.summary.itemCount;\n app.basket.itemTotal = data.summary.itemTotal;\n app.basket.postage = data.summary.postage;\n app.basket.total = data.summary.total;\n app.basket.token = data.summary.token;\n app.token = data.summary.token;\n eventBus.$emit(\"updateItem\", { key: \"id\", value: id, properties: [{ name: \"quantity\", value: data.summary.updatedQuantity } ] });\n })\n .catch(function (data)\n {\n eventBus.$emit(\"notify-error\", data);\n })\n .finally(function()\n {\n app.setBusy(false);\n });\n },\n\n payPalCheckout: function ()\n {\n if (payPalWindow)\n {\n payPalWindow.close();\n }\n\n var width = 500;\n var height = 550;\n var left = (screen.width / 2) - (width / 2);\n var top = (screen.height / 2) - (height / 2);\n\n payPalWindow = window.open(\"/paypal/redirect\", \"\", \"width=\" + width + \",height=\" + height + \",top=\" + top + \",left=\" + left);\n\n if (!payPalWindow)\n {\n alert(\"Popups may be blocked. Enable them and try again.\");\n return;\n }\n\n eventBus.$emit(\"notify-clear\");\n this.setPayPalBusy(true);\n\n submitForm(\"/api/basket/paypalorder/\" + this.token, \"POST\", { RequestVerificationToken: model.antiforgeyToken }, null)\n .then(function (data)\n {\n app.checkId = data.checkId;\n app.orderId = data.orderId;\n app.payPalUrl = data.redirectUrl;\n payPalWindow.location.href = data.redirectUrl;\n setTimeout(function () { app.checkPayPalWindow(); }, 1000);\n })\n .catch(function (data)\n {\n if (payPalWindow)\n {\n payPalWindow.close();\n payPalWindow = null;\n }\n\n eventBus.$emit(\"notify-error\", data);\n app.setPayPalBusy(false);\n })\n .finally(function ()\n {\n });\n },\n\n checkPayPalOrder: function ()\n {\n getObject(\"/api/basket/paypalorder/\" + this.checkId + \"/\" + this.orderId, null)\n .then(function (data)\n {\n if (data.orderStatus !== \"CREATED\" && data.redirectUrl && data.redirectUrl !== \"\")\n {\n location.href = data.redirectUrl;\n }\n else\n {\n app.setPayPalBusy(false);\n }\n })\n .catch(function (data)\n {\n eventBus.$emit(\"notify-error\", data);\n app.setPayPalBusy(false);\n })\n .finally(function (){ });\n },\n\n checkPayPalWindow: function ()\n {\n if (payPalWindow)\n {\n if (payPalWindow.closed)\n {\n payPalWindow = null;\n this.checkPayPalOrder();\n }\n else\n {\n setTimeout(function () { app.checkPayPalWindow(); }, 1000);\n }\n }\n },\n\n closePayPalWindow: function ()\n {\n if (payPalWindow)\n {\n payPalWindow.close();\n payPalWindow = null;\n }\n\n this.setPayPalBusy(false);\n },\n\n setPayPalFocus: function ()\n {\n if (payPalWindow)\n {\n payPalWindow.focus();\n }\n else\n {\n this.payPalCheckout();\n }\n\n return false;\n }\n }\n });"],"names":["payPalWindow","Vue","component","template","props","item","type","Object","required","data","updatedQuantity","created","this","quantity","computed","quantityChanged","quantityInvalid","watch","val","methods","deleteItem","$emit","id","showDetails","customiseDetails","updateQuantity","app","el","basket","model","customiseNotificationId","changeCustomisedDetails","basketEmpty","itemCount","token","checkId","orderId","payPalUrl","busy","payPalBusy","mounted","clearLoading","window","addEventListener","e","close","showError","error","eventBus","setBusy","isBusy","setPayPalBusy","isEmpty","info","listUpdated","count","$","text","key","value","params","deleteConfirmed","deleteObject","RequestVerificationToken","antiforgeyToken","then","summary","description","itemTotal","postage","total","catch","finally","details","modal","submitForm","$validator","validateAll","result","JSON","stringify","properties","name","payPalCheckout","left","screen","width","top","height","open","redirectUrl","location","href","setTimeout","checkPayPalWindow","alert","checkPayPalOrder","getObject","orderStatus","closed","closePayPalWindow","setPayPalFocus","focus"],"mappings":"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"}