{"version":3,"sources":["src/item-form.js"],"names":["ItemForm","init","isEShopProduct","variations","form","$","on","_selectAttribute","variationId","find","val","quantity","Cart","addItem","event","updateItemQuantityInputValue","sanitizeQuantity","length","attributes","selectFirstAvailableVariation","input","target","_resolveVariation","selectedAttributes","map","_","a","data","filter","variation","variationAttribute","index","_isEnabled","attribute","selector","attributeId","availableAttributes","forEach","isAvailable","each","selectedAttributeId","indexOf","concat","hasClass","_disableIncompatibleAttributes","selectedAttribute","toggleClass","l","removeClass","_enableCompatibleAttributes","attributesByType","activeAttributeId","sibling","_setMessagesState","resolvedVariation","price","discountPrice","installmentElgible","plainDiscountPrice","plainPrice","getInstallmentPayments","text","savingAmount","savingPercent","notAvailable","stock","_setDeliveryMessages","rootElement","JSON","parse","requiresPreorder","deliveryRequiresPreorder","html","deliveryInfo","toggle","e","siblings","attr","id","first","click","button","closest","oldval","trigger","amount","get","done","response","replace","monthly_payment","toString","period_months"],"mappings":"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","file":"item-form.js","sourcesContent":["var ItemForm = {\n init: function (isEShopProduct, variations) {\n this.variations = variations;\n var form = $('#add-item-form');\n $('label', form).on('click', this._selectAttribute);\n $('#add-item').on('click', function() {\n var variationId = form.find('input[name=\"variationId\"]').val();\n var quantity = form.find('input[name=\"quantity\"]').val();\n Cart.addItem(variationId, quantity);\n });\n $('.add, .subtract').on('click', function(event) { ItemForm.updateItemQuantityInputValue(event) });\n $('[name=quantity]').on('change', ItemForm.sanitizeQuantity);\n if (isEShopProduct) {\n if (this.variations.length && this.variations[0].attributes.length == 1) {\n ItemForm.selectFirstAvailableVariation();\n }\n }\n },\n\n sanitizeQuantity: function(event) {\n var input = $(event.target);\n if (input.val() <= 0) {\n input.val(1);\n }\n },\n\n _resolveVariation: function () {\n var selectedAttributes = $('label.active').map(function(_, a) {return $(a).data('id')});\n return this.variations.filter(function(variation) {\n return variation.attributes.filter(function (variationAttribute) { return selectedAttributes.index(variationAttribute) > -1}).length == variation.attributes.length;\n })[0];\n },\n\n _isEnabled: function(attribute, selector) {\n var attributeId = attribute.data('id');\n var selectedAttributes = $(selector).map(function(_, a) { return $(a).data('id') });\n var availableAttributes = [];\n this.variations.forEach(function(variation) {\n var isAvailable = true;\n selectedAttributes.each(function(_, selectedAttributeId) {\n if (variation.attributes.indexOf(selectedAttributeId) < 0) isAvailable = false;\n });\n if (isAvailable) availableAttributes = availableAttributes.concat(variation.attributes);\n });\n return availableAttributes.indexOf(attributeId) != -1 && attribute.hasClass('in-stock');\n },\n\n _disableIncompatibleAttributes: function(selectedAttribute) {\n $('label', $('#add-item-form')).each(function(_, attribute) {\n attribute = $(attribute);\n if (selectedAttribute[0] == attribute[0]) return;\n attribute.toggleClass('disabled', !ItemForm._isEnabled(attribute, 'label.active'))\n });\n\n $('label.disabled').filter(function(_, l) { return l != selectedAttribute[0]}).removeClass('active');\n },\n\n _enableCompatibleAttributes: function() {\n $('.attribute-type', $('#add-item-form')).each(function(_, attributesByType) {\n attributesByType = $(attributesByType);\n var activeAttributeId = $('label.active', attributesByType).data('id') || '-1';\n $('label', attributesByType).each(function(_, sibling) {\n sibling = $(sibling);\n $(sibling).toggleClass('disabled', !ItemForm._isEnabled(sibling, 'label.active:not([data-id=' + activeAttributeId + '])'))\n })\n });\n },\n\n _setMessagesState: function(resolvedVariation) {\n var price = resolvedVariation.price;\n var discountPrice = resolvedVariation.discountPrice;\n var installmentElgible = discountPrice ? resolvedVariation.plainDiscountPrice >= 200 : resolvedVariation.plainPrice >= 200;\n if (installmentElgible)\n this.getInstallmentPayments(discountPrice ? resolvedVariation.plainDiscountPrice : resolvedVariation.plainPrice);\n $('span.price:not(\".grid\")').text(discountPrice || price);\n $('span.old-price:not(\".grid\")').text(!!discountPrice ? price : '');\n $('span.savings').toggleClass('hidden', !discountPrice);\n $('#installment-data').toggleClass('hidden', !installmentElgible);\n $('span.saving-amount').text(resolvedVariation.savingAmount);\n $('span.saving-percent').text(resolvedVariation.savingPercent);\n var notAvailable = resolvedVariation.notAvailable;\n $('span.out-of-stock').toggleClass('hidden', !notAvailable);\n var stock = resolvedVariation.stock;\n $('span.small-stock').toggleClass('hidden', (!stock || stock > 1) || notAvailable);\n this._setDeliveryMessages($(\"body\"), resolvedVariation);\n },\n\n _setDeliveryMessages: function(rootElement, resolvedVariation) {\n try {\n if (typeof resolvedVariation == 'string')\n resolvedVariation = JSON.parse(resolvedVariation);\n var requiresPreorder = resolvedVariation.deliveryRequiresPreorder;\n rootElement.find('.delivery-time').html(resolvedVariation.deliveryInfo)\n .toggleClass('hidden', resolvedVariation.notAvailable).toggleClass(\"text-success\", !requiresPreorder);\n rootElement.find('.ready-for-shipping-in-stock').toggle(!requiresPreorder);\n rootElement.find('.ready-for-shipping-preorder').toggle(requiresPreorder);\n return true\n } catch (e) {\n return false;\n }\n },\n\n _selectAttribute: function(event) {\n var attribute = $(event.target);\n if (ItemForm.variations[0].attributes.length == 1 && attribute.hasClass('active')) return;\n attribute.toggleClass('active');\n if (attribute.hasClass('in-stock')) attribute.removeClass('disabled');\n attribute.siblings().removeClass('active');\n ItemForm._disableIncompatibleAttributes(attribute);\n ItemForm._enableCompatibleAttributes();\n\n var resolvedVariation = ItemForm._resolveVariation();\n\n $('#add-item').attr('disabled', !resolvedVariation || resolvedVariation.notAvailable);\n $('input[name=variationId]').val(resolvedVariation ? resolvedVariation.id : '');\n\n if (resolvedVariation) ItemForm._setMessagesState(resolvedVariation);\n },\n\n selectFirstAvailableVariation: function() {\n $('#add-item-form').find('label').first().click();\n },\n\n updateItemQuantityInputValue: function(event) {\n var button = $(event.target);\n var input = button.closest('div').find('input').val(function(_, oldval) {\n return button.hasClass(\"add\") ? ++oldval : --oldval;\n });\n $(input).trigger('change');\n },\n\n getInstallmentPayments: function (amount) {\n $.get('https://api.esto.ee/v2/calculate/payment?amount=' + amount).done(function(response) {\n $('#installmentinfo').html(\n $('#installmentinfo').data(\"content\")\n .replace('_1_', response.monthly_payment.toString().replace('.', ',')));\n $('#installment-data').attr('data-content',\n $('#installment-data').data(\"content\")\n .replace('_2_', response.period_months));\n })\n }\n};"]}