{"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","icon","resetIcon","iconClass","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","buttonIcon","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', 'kendo.icons'], 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\", \"icons\"]\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: \"arrow-rotate-cw\",\n audioIcon: \"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"]}