{"version":3,"file":"kendo.captcha.min.js","names":["factory","define","amd","$","kendo","Widget","extend","ajax","isFunction","NS","CLICK","CHANGE","REQUEST_START","REQUEST_END","ERROR","Captcha","window","jQuery","ui","DOT","init","element","options","that","this","fn","call","_captchaField","dataCaptchaField","_valueField","attr","_captchaIdField","dataCaptchaIdField","_wrapper","_idInput","_captchaImage","audioButton","resetButton","_buttons","captcha","captchaId","_resetHandler","validateOnBlur","on","_validationHandler","ev","_isValid","trigger","value","val","originalEvent","notify","events","name","handler","audioHandler","validationHandler","volumeControl","messages","reset","audio","imageAlt","success","destroy","textbox","off","_audioEnded","styles","wrapper","inputWrapper","imageWrapper","cssText","style","css","kendoTextBox","data","_inputWrapper","wrap","parent","prepend","captchaImage","find","append","_tabindex","_attachImageErrorHandler","one","type","nameAttr","idInput","ns","after","buttonsWrapper","_audioButton","_resetButton","button","iconButton","buttonIcon","resetIcon","bind","audioIcon","_audioHandler","focusResetButton","deferred","Deferred","_resetCaptcha","_toggleSuccessMessage","_progress","_callHandler","done","fail","args","reject","promise","console","error","msg","_playAudio","_validate","_error","requestEnd","_requestEnd","url","cache","jqXHR","textStatus","errorThrown","id","resolve","_canPlayWav","audioElement","Audio","volume","_audioVolume","_showVolumeControl","play","_canPlayWithPlugin","_createEmbedElement","src","objectElement","document","createElement","setAttribute","_audioPlugin","width","height","position","top","left","volumeControlWrapper","volumeControlElm","_isRtl","kendoSlider","min","max","smallStep","largeStep","orientation","showButtons","tickPlacement","tooltip","enabled","change","activeElement","is","remove","pause","_canPlayAudio","canPlayType","replace","_getPlugin","testNavigatorPlugins","plugins","navigator","i","length","indexOf","testActiveXAvailability","objectName","ActiveXObject","e","toggle","idAttr","successMessage","removeAttr","_toggleButtons","prop","toggleClass","loading","disabled","_toggleSkeleton","skeleton","before","support","isRtl","getCaptchaId","toJSON","obj","validate","isValid","enable","readonly","speak","plugin","hidden"],"sources":["kendo.captcha.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.slider', 'kendo.textbox', 'kendo.skeletoncontainer'], factory) :\n factory();\n})((function () {\n var __meta__ = {\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$1) {\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-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 = \"
\",\n imageWrapper = \"
\",\n cssText = that.element[0].style.cssText;\n\n that.element.css(\"width\", \"auto\");\n that.element.css(\"height\", \"auto\");\n that.textbox = that.element.kendoTextBox().data(\"kendoTextBox\");\n that._inputWrapper = that.textbox.wrapper;\n that.wrapper = that._inputWrapper.wrap(wrapper).parent().parent();\n that.wrapper[0].style.cssText = cssText;\n that.imageWrapper = $(imageWrapper);\n that.wrapper.prepend(that.imageWrapper);\n },\n\n _captchaImage: function() {\n var that = this,\n options = that.options,\n messages = options.messages,\n styles = Captcha.styles;\n\n\n that.captchaImage = $(\"
\" +\n \"\\\"\"\" +\n \"
\").find(\"img\");\n\n that.imageWrapper.append(that.captchaImage.parent());\n\n that._tabindex(that.captchaImage);\n\n that._attachImageErrorHandler();\n },\n\n _attachImageErrorHandler: function() {\n var that = this;\n\n that.captchaImage.off(\"error\");\n that.captchaImage.one(\"error\", function(ev) {\n that.trigger(ERROR, { type: \"image\", originalEvent: ev });\n });\n },\n\n _idInput: function() {\n var that = this,\n options = that.options,\n nameAttr = that._captchaIdField;\n\n that.idInput = $(\"\");\n that._inputWrapper.after(that.idInput);\n },\n\n _buttons: function() {\n var that = this,\n styles = Captcha.styles;\n\n that.buttonsWrapper = $(\"
\");\n that.imageWrapper.append(that.buttonsWrapper);\n\n if (that.options.audioButton) {\n that._audioButton();\n }\n\n if (that.options.resetButton) {\n that._resetButton();\n }\n },\n\n _resetButton: function() {\n var that = this,\n messages = that.options.messages,\n styles = Captcha.styles;\n\n that.resetButton = $(\"\");\n\n that.buttonsWrapper.append(that.resetButton);\n\n that.resetButton.on(CLICK + NS, that._resetHandler.bind(that, true));\n },\n\n _audioButton: function() {\n var that = this,\n messages = that.options.messages,\n styles = Captcha.styles;\n\n that.audioButton = $(\"\");\n\n that.buttonsWrapper.append(that.audioButton);\n\n that.audioButton.on(CLICK + NS, that._audioHandler.bind(that));\n },\n\n _resetHandler: function(focusResetButton) {\n var that = this,\n handler = that.options.handler,\n deferred = $.Deferred(),\n success = that._resetCaptcha.bind(that, deferred);\n\n delete that._isValid;\n that._toggleSuccessMessage(false);\n that._audioEnded();\n that._progress(true);\n\n if (!handler) {\n window.console.error(\"Captcha's handler option is not defined!\");\n deferred.reject({ msg: \"Captcha's handler option is not defined!\", error: \"handler_not_defined\" });\n that._progress(false);\n return deferred.promise();\n }\n\n that._callHandler(\"reset\", handler, success)\n .done(function() {\n if (focusResetButton) {\n that.resetButton.trigger(\"focus\");\n }\n })\n .fail(function(args) {\n that._progress(false);\n deferred.reject(args);\n });\n return deferred.promise();\n },\n\n _audioHandler: function() {\n var that = this,\n handler = that.options.audioHandler,\n deferred = $.Deferred(),\n success = that._playAudio.bind(that, deferred),\n data = {};\n\n data[that._captchaIdField] = that.idInput.val();\n\n if (!handler) {\n window.console.error(\"Captcha's audioHandler option is not defined!\");\n deferred.reject({ msg: \"Captcha's audioHandler option is not defined!\", error: \"handler_not_defined\" });\n return deferred.promise();\n }\n\n that._callHandler(\"audio\", handler, success, data).fail(deferred.reject);\n return deferred.promise();\n },\n\n _validationHandler: function() {\n var that = this,\n handler = that.options.validationHandler,\n deferred = $.Deferred(),\n success = that._validate.bind(that, deferred),\n data = {};\n\n delete that._isValid;\n\n data[that._captchaIdField] = that.idInput.val();\n data[that._valueField] = that.element.val();\n\n if (!handler) {\n window.console.error(\"Captcha's validationHandler option is not defined!\");\n deferred.reject({ msg: \"Captcha's validationHandler option is not defined!\", error: \"handler_not_defined\" });\n return deferred.promise();\n }\n\n that._callHandler(\"validation\", handler, success, data).fail(deferred.reject);\n return deferred.promise();\n },\n\n _callHandler: function(type, handler, success, data) {\n var that = this,\n error = that._error.bind(that, type),\n requestEnd = that._requestEnd.bind(that, type),\n args;\n\n if (isFunction(handler)) {\n handler({ success: success, data: data });\n return $.Deferred().promise();\n } else {\n args = typeof handler === STRING ? { url: handler, cache: false } : extend({}, handler);\n args.success = success;\n args.data = extend({}, data, args.data);\n\n if (!that.trigger(REQUEST_START, { type: type, data: data })) {\n return ajax(args).done(requestEnd).fail(error);\n }\n }\n },\n\n _requestEnd: function(type, data) {\n var that = this;\n that.trigger(REQUEST_END, { type: type, data: data });\n },\n\n _error: function(type, jqXHR, textStatus, errorThrown) {\n var that = this;\n that.trigger(ERROR, { type: type, jqXHR: jqXHR, textStatus: textStatus, errorThrown: errorThrown });\n },\n\n _resetCaptcha: function(deferred, data) {\n var that = this,\n id = data[that._captchaIdField],\n captcha = data[that._captchaField];\n\n that.idInput.val(id);\n that.captchaImage.attr(\"src\", captcha || \"\");\n\n that.captchaImage.off(\"load\");\n that.captchaImage.one(\"load\", function() {\n that._progress(false);\n });\n\n that._attachImageErrorHandler();\n\n deferred.resolve(data);\n },\n\n _playAudio: function(deferred, data) {\n var that = this;\n\n if (that._canPlayWav()) {\n if (that.audioElement) {\n return;\n }\n\n that.audioElement = new Audio(data);\n that.audioElement.volume = that._audioVolume || that.audioElement.volume;\n\n if (that.options.volumeControl) {\n $(that.audioElement).on(\"loadeddata\" + NS, function() {\n that._showVolumeControl(that.audioElement.volume);\n });\n }\n\n $(that.audioElement).on(\"ended\" + NS + \" error\" + NS, that._audioEnded.bind(that, deferred));\n\n that.audioElement.play();\n } else if (that._canPlayWithPlugin()) {\n if (that.audioElement) {\n that.audioElement.play();\n return;\n }\n\n that.audioElement = that._createEmbedElement(data);\n that.wrapper.append(that.audioElement);\n }\n },\n\n _createEmbedElement: function(src) {\n var that = this,\n objectElement = document.createElement(\"embed\");\n\n objectElement.setAttribute(\"src\", src);\n objectElement.setAttribute(\"autostart\", \"true\");\n objectElement.setAttribute(\"pluginspage\", that._audioPlugin);\n objectElement.setAttribute(\"enablejavascript\", \"true\");\n objectElement.setAttribute(\"type\", \"audio/wav\");\n objectElement.setAttribute(\"tabIndex\", \"-1\");\n\n objectElement.style.width = \"0px\";\n objectElement.style.height = \"0px\";\n objectElement.style.position = \"absolute\";\n objectElement.style.top = 0;\n objectElement.style.left = 0;\n\n return objectElement;\n },\n\n _showVolumeControl: function(volume) {\n var that = this,\n styles = Captcha.styles,\n volumeControlWrapper = $(\"
\");\n\n if (that.volumeControl) {\n return;\n }\n\n that.volumeControlElm = $(\"\");\n that.volumeControlWrapper = volumeControlWrapper.append(that.volumeControlElm);\n that.imageWrapper.append(volumeControlWrapper);\n that.volumeControlWrapper.css(that._isRtl() ? \"right\" : \"left\", that.wrapper.width());\n\n that.volumeControl = that.volumeControlElm.kendoSlider({\n min: 0,\n max: 1,\n smallStep: 0.1,\n largeStep: 0.5,\n orientation: \"vertical\",\n showButtons: false,\n tickPlacement: \"none\",\n value: volume,\n tooltip: {\n enabled: false\n },\n change: function(ev) {\n that._audioVolume = that.audioElement.volume = ev.value;\n }\n }).data(\"kendoSlider\");\n },\n\n _audioEnded: function(deferred) {\n var that = this;\n\n if ($(document.activeElement).is(\"a.k-draghandle\")) {\n that.audioButton.trigger(\"focus\");\n }\n\n if (that.volumeControl) {\n that.volumeControl.destroy();\n that.volumeControl.wrapper.remove();\n delete that.volumeControl;\n that.volumeControlElm.remove();\n that.volumeControlWrapper.remove();\n delete that.volumeControlElm;\n delete that.volumeControlWrapper;\n }\n\n if (that.audioElement) {\n that.audioElement.pause();\n }\n\n $(that.audioElement).off(NS);\n $(that.audioElement).remove();\n delete that.audioElement;\n\n if (deferred && deferred.resolve) {\n deferred.resolve();\n }\n },\n\n _canPlayWav: function() {\n var that = this,\n audio;\n\n if (that._canPlayAudio) {\n return that._canPlayAudio;\n }\n\n audio = new Audio();\n that._canPlayAudio = audio.canPlayType(\"audio/wav\").replace(/no/gi, \"\") !== \"\";\n\n return that._canPlayAudio;\n },\n\n _canPlayWithPlugin: function() {\n var that = this;\n\n if (that._audioPlugin) {\n return that._audioPlugin;\n }\n\n that._audioPlugin = that._getPlugin();\n return that._audioPlugin;\n },\n\n _getPlugin: function() {\n var testNavigatorPlugins = function(name) {\n var plugins = navigator.plugins;\n for (var i = 0; i < plugins.length; i++) {\n\n var pluginName = plugins[i].name;\n\n if (pluginName.indexOf(name) !== -1) {\n return true;\n }\n }\n return false;\n };\n\n var testActiveXAvailability = function(objectName) {\n try {\n var control = new window.ActiveXObject(objectName);\n return !!control;\n } catch (e) {\n return false;\n }\n };\n\n if (testActiveXAvailability('QuickTime.QuickTime') ||\n testActiveXAvailability('QuickTimeCheckObject.QuickTimeCheck') ||\n testNavigatorPlugins(\"QuickTime Plug-in\")) {\n return \"http://www.apple.com/quicktime/download/\";\n }\n\n if (testActiveXAvailability('WMPlayer.OCX') || testNavigatorPlugins(\"Windows Media\")) {\n return \"http://www.microsoft.com/Windows/MediaPlayer\";\n }\n },\n\n _validate: function(deferred, data) {\n var that = this;\n that._isValid = data;\n that._toggleSuccessMessage(that._isValid);\n deferred.resolve(data);\n },\n\n _toggleSuccessMessage: function(toggle) {\n var that = this,\n idAttr = (that.element.attr(\"id\") || that.element.attr(\"name\")) + \"-success\",\n messages = that.options.messages;\n\n $(that.successMessage).remove();\n that.element.removeAttr(\"aria-describedby\");\n\n if (toggle) {\n that.successMessage = $(\"\" + messages.success + \"\");\n that._inputWrapper.after(that.successMessage);\n that.element.attr(\"aria-describedby\", idAttr);\n }\n },\n\n _toggleButtons: function(toggle) {\n var that = this;\n\n if (that.resetButton) {\n that.resetButton.prop(\"disabled\", !toggle);\n }\n\n if (that.audioButton) {\n that.audioButton.prop(\"disabled\", !toggle);\n }\n },\n\n _progress: function(toggle) {\n var that = this;\n\n that.wrapper.toggleClass(Captcha.styles.loading, toggle);\n that._inputWrapper.toggleClass(Captcha.styles.disabled, toggle);\n that._toggleButtons(!toggle);\n that._toggleSkeleton(toggle);\n },\n\n _toggleSkeleton: function(toggle) {\n var that = this;\n\n if (that.skeleton) {\n that.skeleton.remove();\n }\n\n if (toggle) {\n that.skeleton = $(\"\");\n that.captchaImage.before(that.skeleton);\n }\n },\n\n _isRtl: function() {\n return kendo.support.isRtl(this.wrapper);\n },\n\n value: function() {\n return this.element.val();\n },\n\n getCaptchaId: function() {\n return this.idInput.val();\n },\n\n toJSON: function() {\n var that = this,\n obj = {};\n\n obj[that._valueField] = that.value();\n obj[that._captchaIdField] = that.getCaptchaId();\n\n return obj;\n },\n\n validate: function() {\n return this._validationHandler();\n },\n\n isValid: function() {\n return this._isValid;\n },\n\n enable: function(toggle) {\n var that = this;\n\n toggle = toggle !== false;\n\n that._toggleButtons(toggle);\n\n that.textbox.enable(toggle);\n\n if (toggle) {\n that.captchaImage.removeAttr(\"tabIndex\");\n that._tabindex(that.captchaImage);\n } else {\n that.captchaImage.attr(\"tabIndex\", \"-1\");\n }\n\n that.captchaImage.toggleClass(Captcha.styles.disabled, !toggle);\n that.wrapper.toggleClass(Captcha.styles.disabled, !toggle);\n },\n\n readonly: function(toggle) {\n var that = this;\n\n toggle = toggle !== false;\n\n if (that.resetButton) {\n that.resetButton.prop(\"disabled\", toggle);\n }\n\n that.textbox.readonly(toggle);\n },\n\n speak: function() {\n return this._audioHandler();\n },\n\n reset: function() {\n return this._resetHandler();\n }\n });\n\n kendo.ui.plugin(Captcha);\n\n extend(true, Captcha, { styles: CaptchaStyles });\n\n })(window.kendo.jQuery);\n\n}));\n"]}