{"version":3,"sources":["wwwroot/js/cart.js"],"names":["$","counterChangeType","cartRows","removeRowButton","changeButtons","counterInput","catalogErrorModal","catalogErrorTextBlock","saveEmailButton","checkEmailButton","fastAuthEmailHolder","fastAuthEmail","find","catalogErrorTextDefault","text","changeStateTimer","tryFastAuth","element","needScroll","removeClass","addClass","val","length","is","async","email","actualCart","actualizeCart","productNotActualSkuIds","recalcCart","recalcCartWarning","modal","onHide","unlockUi","localStorage","setItem","window","location","href","localeUrlTransform","goToOrder","animate","scrollTop","offset","top","sendAnalyticsEvent","analyticsActionList","inputEmailError","GB","Profile","isAuthorized","getItem","on","e","preventDefault","this","which","enterButton","currentRow","parents","productData","data","deleteCount","removeProduct","counter","parent","trigger","currentElement","parseInt","oldValue","currentTarget","defaultValue","buttonDown","buttonUp","count","clearTimeout","counterMin","min","counterMax","max","setTimeout","changeOrderResponse","Cart","changeOrder","errors","responseData","errorText","message","showCatalogError","refreshCart","ecommerceAction","changeCart"],"mappings":"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","file":"cart.min.js","sourcesContent":["$(function () {\r\n let cartRows = $('.ui.product-row'),\r\n removeRowButton = $('.js-remove-item'),\r\n changeButtons = $('.js-counter-change'),\r\n counterInput = $('.product-row--counter-value'), \r\n catalogErrorModal = $('.error-modal'),\r\n catalogErrorTextBlock = $('.js-error-text'),\r\n saveEmailButton = $('.js-save-email'),\r\n checkEmailButton = $('.js-check-email'),\r\n fastAuthEmailHolder = $('.fastauth-email-input .input'),\r\n fastAuthEmail = fastAuthEmailHolder.find('input'),\r\n catalogErrorTextDefault = catalogErrorTextBlock.text(),\r\n changeStateTimer = null,\r\n counterChangeType,\r\n timeBeforeQuery = 1000; \r\n\r\n if (!GB.Profile.isAuthorized && localStorage.getItem('fastauthemail')) {\r\n fastAuthEmail.val(localStorage.getItem('fastauthemail'));\r\n saveEmailButton.removeClass('disabled');\r\n }\r\n\r\n $(checkEmailButton).on('click', function (e) {\r\n e.preventDefault();\r\n tryFastAuth($(this), true);\r\n });\r\n\r\n $(saveEmailButton).on('click', function (e) {\r\n e.preventDefault()\r\n tryFastAuth($(this));\r\n });\r\n\r\n $(fastAuthEmail).on('input', function () {\r\n if ($(this).is(':valid')) {\r\n $(saveEmailButton).removeClass('disabled');\r\n return;\r\n }\r\n $(saveEmailButton).addClass('disabled');\r\n });\r\n\r\n $(fastAuthEmail).on('keypress', function (e) {\r\n if (e.which == enterButton)\r\n tryFastAuth($(saveEmailButton));\r\n });\r\n\r\n $(removeRowButton).on('click', function () {\r\n let currentRow = $(this).parents('.ui.product-row'),\r\n productData = currentRow.data('product');\r\n productData.deleteCount = currentRow.find('.product-row--counter-value').val();\r\n currentRow.addClass('loading');\r\n removeProduct(productData, currentRow);\r\n });\r\n\r\n $(changeButtons).on('click', function () { \r\n let counter = $(this).parent().find('input').val(),\r\n type = $(this).data('type');\r\n if (type === 'up') {\r\n counter++;\r\n counterChangeType = 'add_to_cart';\r\n } else {\r\n counter--;\r\n counterChangeType = 'remove_from_cart';\r\n }\r\n\r\n $(this).parent().find('input').val(counter);\r\n $(this).parent().find('input').trigger('change');\r\n });\r\n\r\n $(counterInput).on('change', function (e) {\r\n let currentElement = $(this),\r\n counter = parseInt(currentElement.val()) || 1,\r\n oldValue = e.currentTarget.defaultValue,\r\n buttonDown = $(this).parent().find('[data-type=\"down\"]'),\r\n buttonUp = $(this).parent().find('[data-type=\"up\"]'),\r\n productData = currentElement.parents('.product-row').data('product');\r\n productData.count = counter;\r\n \r\n $(this).val(oldValue);\r\n if (changeStateTimer)\r\n clearTimeout(changeStateTimer);\r\n\r\n let currentRow = $(this).parents('.ui.product-row');\r\n currentRow.addClass('loading');\r\n let counterMin = parseInt(currentElement[0].min);\r\n let counterMax = parseInt(currentElement[0].max);\r\n counter = counter < counterMin ? 1 : (counter > counterMax ? counterMax : counter);\r\n\r\n counter > counterMin ? buttonDown.removeClass('disabled') : buttonDown.addClass('disabled');\r\n counter < counterMax ? buttonUp.removeClass('disabled') : buttonUp.addClass('disabled');\r\n\r\n $(this).val(counter);\r\n productData.count = counter;\r\n changeStateTimer = setTimeout(function () {\r\n changeCart(productData, currentElement, oldValue);\r\n }, timeBeforeQuery); \r\n \r\n });\r\n\r\n function tryFastAuth(element, needScroll) {\r\n fastAuthEmailHolder.removeClass('error');\r\n element.addClass('loading');\r\n\r\n if (fastAuthEmail.val().length > 0 && fastAuthEmail.is(':valid')) {\r\n goToOrder(fastAuthEmail.val());\r\n return;\r\n }\r\n\r\n element.removeClass('loading');\r\n fastAuthEmailHolder.addClass('error');\r\n if (needScroll) {\r\n $('html, body').animate({\r\n scrollTop: fastAuthEmail.offset().top\r\n }, 1000);\r\n }\r\n\r\n sendAnalyticsEvent(analyticsActionList.inputEmailError);\r\n }\r\n\r\n async function goToOrder(email) {\r\n let actualCart = await actualizeCart();\r\n\r\n if (!!actualCart.productNotActualSkuIds.length) {\r\n recalcCart(actualCart);\r\n recalcCartWarning\r\n .modal({\r\n onHide: function () {\r\n $('.button').removeClass('loading');\r\n }\r\n })\r\n .modal('show');\r\n unlockUi();\r\n return;\r\n }\r\n\r\n localStorage.setItem('fastauthemail', email);\r\n window.location.href = localeUrlTransform() + 'order';\r\n }\r\n\r\n function showCatalogError(responseData) {\r\n cartRows.removeClass('loading');\r\n let errorText = responseData.errors.message || catalogErrorTextDefault;\r\n catalogErrorTextBlock.text(errorText);\r\n catalogErrorModal.modal('show');\r\n } \r\n\r\n async function changeCart(productData, element, oldValue) {\r\n let changeOrderResponse = await GB.Cart.changeOrder(productData);\r\n if (changeOrderResponse.errors) {\r\n showCatalogError(changeOrderResponse);\r\n element.val(oldValue);\r\n return;\r\n }\r\n cartRows.removeClass('loading');\r\n refreshCart(changeOrderResponse);\r\n ecommerceAction(counterChangeType, productData);\r\n }\r\n});\r\n"]}