{"version":3,"file":"kendo.captcha.min.js","sources":["kendo.captcha.js"],"sourcesContent":["(function (f, define) {\n define('kendo.captcha',[\"./kendo.core\", \"./kendo.slider\", \"./kendo.textbox\", \"./kendo.skeletoncontainer\"], f);\n})(function () {\n\n var __meta__ = { // jshint ignore:line\n id: \"captcha\",\n name: \"Captcha\",\n category: \"web\",\n description: \"The Captcha widget displays captcha validation image and an input so that user case be validated against captcha value.\",\n depends: [\"core\", \"slider\", \"textbox\", \"skeletoncontainer\"]\n };\n\n (function ($, undefined) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n extend = $.extend,\n ajax = $.ajax,\n isFunction = kendo.isFunction,\n\n STRING = \"string\",\n\n DOT = \".\",\n NS = DOT + \"kendoCaptcha\",\n\n CLICK = \"click\",\n BLUR = \"blur\",\n\n CHANGE = \"change\",\n REQUEST_START = \"requestStart\",\n REQUEST_END = \"requestEnd\",\n ERROR = \"error\";\n\n var CaptchaStyles = {\n wrapper: \"k-widget k-captcha\",\n textbox: \"k-textbox\",\n button: \"k-button k-button-md k-rounded-md k-button-solid k-button-solid-base\",\n buttonIcon: \"k-button-icon\",\n iconButton: \"k-icon-button\",\n resetIcon: \"k-icon k-i-reload\",\n audioIcon: \"k-icon k-i-volume-up\",\n disabled: \"k-state-disabled\",\n inputWrapper: \"k-captcha-input k-vstack\",\n imageWrapper: \"k-captcha-image-wrap k-hstack\",\n captchaImage: \"k-captcha-image\",\n buttonsWrapper: \"k-captcha-image-controls k-vstack\",\n volumeControlWrapper: \"k-captcha-volume-control k-vstack k-pos-absolute\",\n hidden: \"k-hidden\",\n success: \"k-captcha-validation-message k-text-success\",\n loading: \"k-captcha-loading\"\n };\n\n var Captcha = Widget.extend({\n init: function (element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n that._captchaField = that.options.dataCaptchaField;\n that._valueField = that.element.attr(\"name\") || \"captcha\";\n that._captchaIdField = that.options.dataCaptchaIdField;\n\n that._wrapper();\n that._idInput();\n that._captchaImage();\n\n if(that.options.audioButton || that.options.resetButton) {\n that._buttons();\n\n }\n\n if (!that.options.captcha || !that.options.captchaId) {\n that._resetHandler();\n }\n\n if (that.options.validateOnBlur) {\n that.element.on(BLUR + NS, function() {\n that._validationHandler();\n });\n }\n\n that.element.on(CHANGE + NS, function(ev) {\n delete that._isValid;\n that.trigger(CHANGE, { value: that.element.val(), originalEvent: ev });\n });\n\n kendo.notify(that);\n },\n\n events: [\n CHANGE,\n REQUEST_START,\n REQUEST_END,\n ERROR\n ],\n\n options: {\n name: \"Captcha\",\n dataCaptchaField: \"captcha\",\n dataCaptchaIdField: \"captchaId\",\n captchaId: \"\",\n captcha: null,\n handler: null,\n audioHandler: null,\n validationHandler: null,\n validateOnBlur: false,\n resetButton: true,\n audioButton: true,\n volumeControl: true,\n messages: {\n reset: \"Reset captcha\",\n audio: \"Speak captcha\",\n imageAlt: \"Type the Captcha code from the image\",\n success: \"Verification successful\"\n }\n },\n\n destroy: function() {\n var that = this;\n\n that.textbox.destroy();\n\n if (that.resetButton) {\n that.resetButton.off(NS);\n }\n\n if (that.audioButton) {\n that.audioButton.off(NS);\n }\n\n that.element.off(NS);\n\n // Just in case, destroy slider.\n that._audioEnded();\n\n Widget.fn.destroy.call(that);\n },\n\n _wrapper: function () {\n var that = this,\n styles = Captcha.styles,\n wrapper = \"