{"version":3,"sources":["QuantitySelector/quantitySelector.js","QuantitySelector/main.js"],"names":["define","init","$","off","on","decreaseQuantity","increaseQuantity","quantityChanged","event","changeQuantity","this","clickedElement","delta","inputElement","closest","find","quantity","parseInt","val","trigger","setQuantity","element","triggerChange","validateQuantity","dispatchQuantityChangedEvent","minValue","data","maxValue","minusButton","plusButton","isNaN","attr","changedElement","quantityChangedTimer","clearTimeout","setTimeout","quantityChangedEvent","document","createEvent","initEvent","dispatchEvent","require","quantitySelector","window","Coria","reInitQuantitySelectors"],"mappings":"AAAAA,OAAA,uCAEA,WAEA,QAAAC,KACAC,EAAA,iCAAAC,IAAA,SAAAC,GAAA,QAAAC,GACAH,EAAA,gCAAAC,IAAA,SAAAC,GAAA,QAAAE,GACAJ,EAAA,4BAAAC,IAAA,UAAAC,GAAA,SAAAG,GAGA,QAAAF,GAAAG,GACAC,EAAAC,MAAA,GAGA,QAAAJ,GAAAE,GACAC,EAAAC,KAAA,GAGA,QAAAD,GAAAE,EAAAC,GACA,GAAAC,GAAAX,EAAAS,GAAAG,QAAA,sBAAAC,KAAA,SACAC,EAAAC,SAAAf,EAAAW,GAAAK,MACAF,IAAAJ,EACAC,EAAAK,IAAAF,GAAAG,QAAA,UAGA,QAAAC,GAAAC,EAAAL,EAAAM,GACA,GAAAT,GAAAX,EAAAmB,GAAAP,QAAA,sBAAAC,KAAA,QACAF,GAAAK,IAAAF,GACAM,GAEAT,EAAAM,QAAA,UAIA,QAAAZ,GAAAC,GACAe,EAAAb,MACAc,EAAAd,MAGA,QAAAa,GAAAF,GAEA,GAAAL,GAAAC,SAAAf,EAAAmB,GAAAH,OACAO,EAAAR,SAAAf,EAAAmB,GAAAK,KAAA,aACAC,EAAAV,SAAAf,EAAAmB,GAAAK,KAAA,aACAE,EAAA1B,EAAAmB,GAAAP,QAAA,sBAAAC,KAAA,cACAc,EAAA3B,EAAAmB,GAAAP,QAAA,sBAAAC,KAAA,YAEAC,GAAAS,GAAAK,MAAAd,GAAAA,EAAAS,EACAT,EAAAW,IAAAX,EAAAW,GAEAzB,EAAAmB,GAAAH,IAAAF,GAEAA,GAAAS,EAAAvB,EAAA0B,GAAAG,KAAA,WAAA,IACA7B,EAAA0B,GAAAG,KAAA,WAAA,MACAf,GAAAW,EAAAzB,EAAA2B,GAAAE,KAAA,WAAA,IACA7B,EAAA2B,GAAAE,KAAA,WAAA,MAGA,QAAAP,GAAAQ,GAMAA,EAAAC,uBAEAC,aAAAF,EAAAC,sBACAD,EAAAC,qBAAA,MAEAD,EAAAC,uBACAD,EAAAC,qBAAAE,WAAA,WACA,GAAAC,GAAAC,SAAAC,YAAA,QACAF,GAAAG,UAAA,mBAAA,GAAA,GACAP,EAAAQ,cAAAJ,GACAJ,EAAAC,qBAAA,MACA,MAIA,OACAhC,KAAAA,EACAsB,iBAAAA,EACAH,YAAAA,KAIAqB,SCrFA,qCAEA,SAAAC,GAEAA,EAAAzC,OACA0C,OAAAC,MAAAD,OAAAC,UACAD,OAAAC,MAAAC,wBAAAH,EAAAzC,KACA0C,OAAAC,MAAAxB,YAAAsB,EAAAtB,cAGApB,OAAA,wBAAA","file":"QuantitySelector.js","sourcesContent":["define('quantitySelector/quantitySelector',[\r\n],\r\nfunction () {\r\n\r\n function init() {\r\n $(\".quantity-selector .btn-minus\").off(\"click\").on(\"click\", decreaseQuantity);\r\n $(\".quantity-selector .btn-plus\").off(\"click\").on(\"click\", increaseQuantity);\r\n $(\".quantity-selector input\").off(\"change\").on(\"change\", quantityChanged);\r\n }\r\n\r\n function decreaseQuantity(event) {\r\n changeQuantity(this, -1);\r\n }\r\n\r\n function increaseQuantity(event) {\r\n changeQuantity(this, 1);\r\n }\r\n\r\n function changeQuantity(clickedElement, delta) {\r\n var inputElement = $(clickedElement).closest(\".quantity-selector\").find(\"input\");\r\n var quantity = parseInt($(inputElement).val());\r\n quantity += delta;\r\n inputElement.val(quantity).trigger(\"change\");\r\n }\r\n\r\n function setQuantity(element, quantity, triggerChange) {\r\n var inputElement = $(element).closest(\".quantity-selector\").find(\"input\");\r\n inputElement.val(quantity);\r\n if (triggerChange) {\r\n // this triggers other changes (validation and dispatching quantityChanged event)\r\n inputElement.trigger(\"change\");\r\n }\r\n }\r\n\r\n function quantityChanged(event) {\r\n validateQuantity(this);\r\n dispatchQuantityChangedEvent(this);\r\n }\r\n\r\n function validateQuantity(element) {\r\n // validation of input value and enabling/disabling the minus/plus buttons\r\n var quantity = parseInt($(element).val());\r\n var minValue = parseInt($(element).data(\"minValue\"));\r\n var maxValue = parseInt($(element).data(\"maxValue\"));\r\n var minusButton = $(element).closest(\".quantity-selector\").find(\".btn-minus\");\r\n var plusButton = $(element).closest(\".quantity-selector\").find(\".btn-plus\");\r\n\r\n if (quantity < minValue || isNaN(quantity)) quantity = minValue;\r\n else if (quantity > maxValue) quantity = maxValue;\r\n\r\n $(element).val(quantity); // do this always, for cases where user entered decimal value, to convert it to integer\r\n\r\n if (quantity <= minValue) $(minusButton).attr(\"disabled\", \"\");\r\n else $(minusButton).attr(\"disabled\", null);\r\n if (quantity >= maxValue) $(plusButton).attr(\"disabled\", \"\");\r\n else $(plusButton).attr(\"disabled\", null);\r\n }\r\n\r\n function dispatchQuantityChangedEvent(changedElement) {\r\n // Dispatches a custom event, so the consumers of this Quantity Selector can do some custom processing if they need to.\r\n\r\n // To avoid multiple events if the user is frantically clicking on the increase/decrease arrows,\r\n // we're only sending the event after there's been a quiet period of 1 second.\r\n\r\n if (changedElement.quantityChangedTimer) {\r\n // there's a timer in progress - kill it so we can start a new one.\r\n clearTimeout(changedElement.quantityChangedTimer);\r\n changedElement.quantityChangedTimer = null;\r\n }\r\n if (!changedElement.quantityChangedTimer) {\r\n changedElement.quantityChangedTimer = setTimeout(function () {\r\n var quantityChangedEvent = document.createEvent(\"Event\");\r\n quantityChangedEvent.initEvent(\"quantityChanged\", true, true);\r\n changedElement.dispatchEvent(quantityChangedEvent);\r\n changedElement.quantityChangedTimer = null;\r\n }, 1000);\r\n }\r\n }\r\n\r\n return {\r\n init: init,\r\n validateQuantity: validateQuantity,\r\n setQuantity: setQuantity\r\n };\r\n});\r\n\n","require([\r\n \"quantitySelector/quantitySelector\"\r\n],\r\nfunction (quantitySelector) {\r\n\r\n quantitySelector.init();\r\n window.Coria = window.Coria || {};\r\n window.Coria.reInitQuantitySelectors = quantitySelector.init;\r\n window.Coria.setQuantity = quantitySelector.setQuantity;\r\n});\r\n\ndefine(\"QuantitySelector/main\", function(){});\n\n"]}