{"version":3,"file":"default/js/giftCard.js","mappings":";;;;;;;;;;AAAA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;;;;;;;;;;AC3Va;;AAEb;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;ACZa;;AAEb;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kDAAkD;AACtE;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;UC1EA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;;;;;ACtBa;;AAEb,qBAAqB,mBAAO,CAAC,gFAAQ;;AAErC;AACA;AACA,mBAAmB,mBAAO,CAAC,8GAAuB;AAClD,CAAC;;AAED,mBAAO,CAAC,mHAAyB","sources":["webpack://sfra-startup-kit/./cartridges/app_ballantynes/cartridge/client/default/js/components/giftCard.js","webpack://sfra-startup-kit/./cartridges/app_ballantynes/cartridge/client/default/js/util.js","webpack://sfra-startup-kit/./cartridges/app_storefront_base/cartridge/client/default/js/components/spinner.js","webpack://sfra-startup-kit/webpack/bootstrap","webpack://sfra-startup-kit/./cartridges/app_ballantynes/cartridge/client/default/js/giftCard.js"],"sourcesContent":["/* eslint-env jquery */\n\n\"use strict\";\n\nfunction getUrlObject() {\n // Get the URL from window.location.href or any other URL string\n const url = new URL(window.location.href);\n // Get the search parameters from the URL\n const searchParams = new URLSearchParams(url.search);\n\n return {\n url: url,\n searchParams: searchParams,\n };\n}\n\nfunction updateFormType() {\n const urlObject = getUrlObject();\n const type = urlObject.searchParams.get(\"type\");\n\n if (!type) {\n $(\".voucher-physical\").addClass(\"d-none\");\n $(\".voucher-digital\").removeClass(\"d-none\");\n $(\"#radio-digital\").prop(\"checked\", true);\n $(\".voucher-digital\").find(\"input\").attr(\"disabled\", false);\n $(\".voucher-digital\").find(\"textarea\").attr(\"disabled\", false);\n $(\".voucher-physical\").find(\"input\").attr(\"disabled\", true);\n $(\".voucher-physical\").find(\".product-quantity\").val(1);\n $(\".card-type-physical\").removeClass(\"selected\");\n $(\".card-type-egift\").addClass(\"selected\");\n } else {\n $(\".voucher-physical\").removeClass(\"d-none\");\n $(\".voucher-digital\").addClass(\"d-none\");\n $(\"#radio-physical\").prop(\"checked\", true);\n $(\".voucher-digital\").find(\"input\").attr(\"disabled\", true);\n $(\".voucher-digital\").find(\"textarea\").attr(\"disabled\", true);\n $(\".voucher-physical\").find(\"input\").attr(\"disabled\", false);\n $(\".card-type-egift\").removeClass(\"selected\");\n $(\".card-type-physical\").addClass(\"selected\");\n }\n}\n\nfunction setTypeQueryParameter(type) {\n const urlObject = getUrlObject();\n\n if (type === \"physical\") {\n urlObject.searchParams.append(\"type\", \"physical\");\n } else {\n urlObject.searchParams.delete(\"type\");\n }\n\n // Set the search params\n urlObject.url.search = urlObject.searchParams.toString();\n // Set the URL\n window.history.pushState(null, null, urlObject.url.toString());\n}\n\nvar wr = function (type) {\n var orig = window.history[type];\n return function () {\n var rv = orig.apply(this, arguments);\n var e = new Event(type);\n e.arguments = arguments;\n window.dispatchEvent(e);\n return rv;\n };\n};\n\nwindow.history.pushState = wr(\"pushState\");\n\nmodule.exports = {\n giftCard: function () {\n updateFormType();\n\n $(\".redeem-button\").addClass(\"d-none\");\n\n if ($(\".check-balance-form\").length) {\n const balanceFormUrl = $(\".check-balance-form\").attr(\"action\");\n const balanceFormUrlArr = balanceFormUrl.split(\"?\");\n if (balanceFormUrlArr.length && balanceFormUrlArr.length > 1) {\n $(\".redeem-button\").removeClass(\"d-none\");\n }\n }\n\n var currentDate = new Date();\n var maxDate = new Date();\n maxDate.setDate(maxDate.getDate() + 30);\n\n if ($(\".receipt-date\").length) {\n $(\".receipt-date\").datepicker({\n dateFormat: \"dd/mm/y\",\n minDate: currentDate,\n maxDate: maxDate,\n });\n }\n\n $(\"body\").on(\"change\", \".gift-voucher\", function () {\n $(this).val();\n setTypeQueryParameter($(this).val());\n updateFormType();\n });\n\n $(\"body\").on(\"click\", \".giftcard-values li.fixed-giftCard-value\", function () {\n $(\".giftcard-values\").find(\"li.fixed-giftCard-value\").removeClass(\"selected\");\n $(\".gift-card-amount-value\").attr(\"required\", false);\n var value = $(this).find(\".js-giftcardoption\").data(\"value\");\n $(\".gift-card-amount-value\").val(value);\n $(this).addClass(\"selected\");\n });\n\n $(\"body\").on(\"focus\", \"li.custom-giftCard-value input\", function () {\n $(\".giftcard-values\").find(\"li\").removeClass(\"selected\");\n $(\".gift-card-amount-value\").attr(\"required\", true);\n });\n\n $(\"body\").on(\"keyup\", \".receipt-message\", function () {\n const maxLength = parseInt($(this).attr(\"maxlength\"), 10);\n const messageLength = $(this).val().length;\n $(\".gift-card-message-remaining\").find(\"span\").text(maxLength - messageLength);\n });\n\n $(\"body\").on(\"submit\", \".giftcard-form\", function (e) {\n e.preventDefault();\n\n const urlObject = getUrlObject();\n const type = urlObject.searchParams.get(\"type\");\n const $form = $(this);\n $form.spinner().start();\n\n let cardAmount = 0;\n\n if ($(\".giftcard-values li.fixed-giftCard-value.selected\").length) {\n cardAmount = Number($(\".giftcard-values li.fixed-giftCard-value.selected\").find(\".js-giftcardoption\").data(\"value\"));\n } else {\n const $cardAmount = $(\".gift-card-amount-value\");\n const cardAmountMinRange = Number($cardAmount.data(\"min-range\"));\n const cardAmountMaxRange = Number($cardAmount.data(\"max-range\"));\n cardAmount = Number($cardAmount.val());\n\n if (cardAmount > cardAmountMaxRange || cardAmount < cardAmountMinRange) {\n $cardAmount.addClass(\"is-invalid\");\n $(\".custom-giftCard-value\").find(\".invalid-feedback\").text($cardAmount.data(\"range-error\"));\n $form.spinner().stop();\n return false;\n } else {\n $cardAmount.removeClass(\"is-invalid\");\n $(\".custom-giftCard-value\").find(\".invalid-feedback\").text(\"\");\n }\n }\n const form = {\n quantity: $form.find(\".product-quantity\").val(),\n cardType: type ? type : \"digital\",\n cardAmount: cardAmount\n };\n\n if (!type) {\n if (!$(\".receipt-message\").val()) {\n $(\".receipt-message\").attr(\"required\", true);\n $(\".receipt-message\").next().text($(\".receipt-message\").data(\"missing-error\"));\n $(\".receipt-message\").addClass(\"is-invalid\");\n $form.spinner().stop();\n return false;\n } else {\n $(\".receipt-message\").attr(\"required\", false);\n $(\".receipt-message\").next().text(\"\");\n $(\".receipt-message\").removeClass(\"is-invalid\");\n }\n\n form.pid = $(\".voucher-digital\").find(\"input.product-id\").val();\n\n form.recipientName = $(\"input[name$=_receiptName]\").val();\n form.recipientEmail = $(\"input[name$=_receiptEmail]\").val();\n form.recipientNameFrom = $(\"input[name$=_receiptNameFrom]\").val();\n form.recipientDate = $(\"input[name$=_receiptDate]\").val();\n form.message = $(\".receipt-message\").val();\n } else {\n form.pid = $(\".voucher-physical\").find(\"input.product-id\").val();\n }\n\n $.ajax({\n url: $form.attr(\"action\"),\n method: \"POST\",\n data: form,\n success: function (data) {\n $.spinner().stop();\n window.location.href = data.redirectUrl;\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n\n $(\"body\").on(\"submit\", \".check-balance-form\", function (e) {\n e.preventDefault();\n let clickedButtonName = $(this).find(\":submit:focus\").attr(\"name\");\n if (clickedButtonName == undefined) {\n let originalSubmitter = e.originalEvent.submitter;\n if (originalSubmitter) {\n clickedButtonName = e.originalEvent.submitter.name;\n }\n }\n const $form = $(this);\n $form.spinner().start();\n let url = $form.attr(\"action\");\n\n if (clickedButtonName === \"redeem\") {\n url = $form.data(\"redeem-url\");\n }\n\n $.ajax({\n url: url,\n type: \"post\",\n dataType: \"json\",\n data: $form.serialize(),\n success: function (data) {\n $form.spinner().stop();\n if (data.checkedBalanceMessage) {\n $(\".gift-card-balance-message\").text(data.checkedBalanceMessage).removeClass(\"d-none\");\n } else {\n $(\".gift-card-balance-message\").text(\"\").addClass(\"d-none\");\n }\n\n if (data.error) {\n $(\".gift-card-balance-message\").addClass(\"error-unassigned-category\");\n } else {\n $(\".gift-card-balance-message\").removeClass(\"error-unassigned-category\");\n }\n\n if (clickedButtonName === \"redeem\") {\n const $freeOfChargeTab = $(\".nav-item[data-method-id=FREE_OF_CHARGE]\");\n if ((data.remainingBalance || data.remainingBalance === 0) && data.remainingBalance >= 0) {\n $(\".nav-item\").addClass(\"d-none\");\n if ($freeOfChargeTab.hasClass(\"d-none\")) {\n $freeOfChargeTab.removeClass(\"d-none\");\n let freeOfChargeTabText = $(\".freeofcharge-tab\").text();\n let freeOfChargeContentText = $(\".freeofcharge-content .display-name\").text();\n if (freeOfChargeTabText.includes(\"Free of Charge\")) {\n freeOfChargeTabText = freeOfChargeTabText.replace(\"Free of Charge\", \"Gift Card\");\n freeOfChargeContentText = freeOfChargeContentText.replace(\"Free of Charge\", \"Gift Card\");\n\n } else if (freeOfChargeTabText.includes(\"BeautyVIP Voucher\") && !freeOfChargeTabText.includes(\"Gift Card\")) {\n freeOfChargeTabText = freeOfChargeTabText.replace(\"BeautyVIP Voucher\", \"Gift Card + BeautyVIP Voucher\");\n freeOfChargeContentText = freeOfChargeContentText.replace(\"BeautyVIP Voucher\", \"Gift Card + BeautyVIP Voucher\");\n }\n $(\".freeofcharge-tab\").text(freeOfChargeTabText);\n $(\".freeofcharge-content .display-name\").text(freeOfChargeContentText);\n }\n $freeOfChargeTab.trigger(\"click\");\n $(\".tab-pane\").removeClass(\"active\");\n $(\".tab-pane.freeofcharge-content\").addClass(\"active\");\n } else {\n if ($freeOfChargeTab.find(\"a\").hasClass(\"active\")) {\n $freeOfChargeTab.find(\"a\").removeClass(\"active\");\n }\n }\n\n if (data.balanceMessage) {\n const $giftCardContainer = $(\"
\");\n $giftCardContainer.append(data.balanceMessage + \"