{"version":3,"file":"kendo.captcha.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendocaptcha","js","this","$","undefined$1","kendo","window","Widget","ui","extend","ajax","isFunction","NS","DOT","CLICK","CHANGE","REQUEST_START","REQUEST_END","ERROR","Captcha","init","element","options","that","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","clearButton","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","htmlEncode","_toggleButtons","prop","toggleClass","loading","disabled","_toggleSkeleton","skeleton","before","support","isRtl","getCaptchaId","toJSON","obj","validate","isValid","enable","readonly","speak","plugin","buttonIcon","hidden","jQuery"],"sources":["kendo.captcha.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.slider.js'), require('kendo.textbox.js'), require('kendo.skeletoncontainer.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.slider', 'kendo.textbox', 'kendo.skeletoncontainer', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendocaptcha = global.kendocaptcha || {}, global.kendocaptcha.js = factory()));\n})(this, (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-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({ clearButton: true }).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 = $(\"\" + kendo.htmlEncode(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 = $(\"\").css({\n width: \"100%\",\n height: \"100%\"\n });\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 var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}