{"version":3,"sources":["icon-captcha.js"],"names":["$","fn","extend","iconCaptcha","options","defaults","$options","fontFamily","clickDelay","themes","invalidResetDelay","hoverDetection","showCredits","enableLoadingAnimation","loadingAnimationDelay","requestIconsDelay","validationPath","messages","correct","top","bottom","each","id","initCaptcha","loaderActive","captchaTheme","$captcha_id","undefined","toLowerCase","$holder","addClass","images_ready","generated","$icon_holder","find","addLoader","setTimeout","loadCaptcha","iconHolder","loadDelay","ajax","url","type","cID","rT","tM","dataType","data","build_time","Date","i","css","loadImage","trigger","error","showError","_buildCaptchaHolder","captchaHTML","push","header","className","submitCaptcha","html","join","attr","iconHash","showSuccess","pC","empty","resetCaptcha","captcha_id","incorrect","img","onload","image","match","replace","Image","removeLoader","src","prepend","remove","console","on","e","mouseenter","hovering","_x","pageX","target","offset","left","_y","pageY","hasClass","mouseleave","jQuery"],"mappings":"mOAAA,AAOA;;;;;GACA,CAAC,SAAA,AAASA,EAAE,AAERA,GAAA,AAAEC,GAAF,AAAKC,OAAO,AAHhBC,aAAA,SAAA,AAAAC,EAAA,AAMY,AAHHF,AAAOG,IAqBeC,GAAAN,EAAA,AAAAE,AAAAG,OArBf,AACRF,QAAa,CADL,AACK,AAKLI,eANA,AAMY,AAHhBC,cAHI,AAGJ,AACIH,sBAJA,AAIW,AACXI,IALA,AAIW,AAEXF,8BANA,AAMY,AACZC,OAPA,AAIW,AAIXE,gDARA,AAIW,AAKXC,sBATA,AASgB,AAChBC,oBAVA,AAUa,AACbC,YAAAA,AACAC,QADAD,AACAC,AACAC,2DAAAA,AACAC,KADAD,AACAC,AACAC,gBAJAJ,AAEAE,AAEU,AAENG,8CAAS,AACLC,KADK,AACA,AACLC,eAnBflB,AAAO,AAWAW,AAMa,AAEG,AAED,sCAAA,AAAAT,AAjBJ,AA2Bf,SAAO,MAAA,AAAKiB,KAAK,SAAA,AAASC,EAAI,AAE1B,SA0BA,AAASC,GAAT,AAAqBC,EAAc,AAC/B,IAAIC,GAAJ,AAAmB,AAEnB,QAAGnB,EAAA,AAASG,OAAT,AAAgBiB,AAAiBC,cAAc,AAAiC,MAAjCrB,KAAA,AAASG,OAAT,AAAgBiB,IAAlE,AAAG,AAA2H,AAAU,AAH5ID,OAGiGnB,KAAA,AAASG,OAAT,AAAgBiB,QAH5FF,EAAAA,OAAAA,AAAcE,GAAnC,AAAqBF,AAAcI,AAC/B,AAEA,AACIH,iBAAAA,AAMJI,IAAA,AAAQC,SAAS,iBAAjB,AAAoCL,AAFpCM,AAKA,AAAG,GAAH,AAAIC,GAHJH,AAEA,OAAAI,GAAAJ,EAAA,AAAAK,KAAA,AAMA,AAFA,AAIA,AAFA,yBAAA5B,EAAA,AAAAS,mBAAA,CAAAT,GAAA,AAAAS,mBAAA,CAAA,AAAAiB,AAAA,AAEA,AACI1B,GAAAA,CAAAA,GAII6B,EAAA,AAAUF,AADd,AAIAG,cAAW,UAAW,AADtBC,GAAA,AAAAZ,EAAA,AAAAQ,AAAA,AACAG,KAAA,EAAAA,EAVJ,AAUI,AAAWrB,AACPsB,AACHA,sBAAA,AAAWtB,EAAX,AAAWA,EAAX,AAFDS,AAPJ,AAWIa,EAEP,AAUD,SAAA,AAASA,GAAT,AAAqBZ,EAArB,AAAmCa,EAAnC,AAA+CC,EAAW,AACtDvC,GAAA,AAAEwC,KAAK,AADXC,KAASJ,EACE,AADUZ,AACfe,oBAAK,AACHC,gBADG,AACHA,AACAC,YAAM,CAAAC,IAAA,AAFHjB,EAAAkB,GAEG,AAFH,EAAAC,GAAA,AAEG,AAFHpB,AAGrBqB,WAAAA,SAAAA,AAHqBC,EAAA,AAIHA,CAAMA,GAANA,AAAM,AAA+BtB,AAE9BsB,AAGC,QALIrB,uBAAAA,uBAAAA,MAKD,CAAH,AAAIa,GADJJ,EAAA,AAAAG,AAIAU,KAAa,GAAb,AAAa,AAAIC,AAEjBpB,QAAA,AAAQK,KAAR,AAAa,kBAAb,AAA+Bb,KAAK,SAAA,AAAS6B,EAAG,AAAhDrB,GAAAA,MAAAA,AAAAsB,IAAAtB,AAAa,mBAAuB,OAAAvB,EAAA,AAAYU,eAAZ,AAAY,QAAZ,AAAYU,EAAZ,AAAY,SAAAqB,EAAZ,AAAY,AAAAG,GAAhDrB,AAAgD,AAC5C7B,OAAAA,AAAE,MAAFA,AAAQmD,KAARnD,AAAY,YAAA+C,EAAZ/C,AAAY,AAAZkD,AAGAE,MAAUpD,EAAV,AAAU,AAAE,MAAZ,AAAmBsC,AAAnBc,EAJJ,AAOA,GAAA,CAAA,AAAApB,GACGH,EAAA,AAACG,QAAD,AACCH,OAAQwB,CAAAA,CAAAA,WADT,AACSA,AAAiB/B,AAE7BU,KAAAA,AAAY,AACf,AA1BF,KAAA,AA4BHsB,QAAO,UAAA,AACHC,CACH,GA9BL,AAAO,AAgCV,GAED,AAOA,SAAA,AAASC,IAAsB,AAC3B,CAAAlD,EAAA,AAAGA,AAAH,AACIuB,aAAAA,AAAQsB,IAARtB,AAAY,cAAevB,EAD/B,AACIuB,AAAoCtB,AADxC,AAEO,AACHsB,cAAAA,AAAQsB,IAARtB,AAAY,cAAZA,AAA2B,AAC9B,AAED,wBAAI4B,GAAJ,AAAkB,AAElB,AACAA,AAAYC,CAAZD,AACI,8BADJA,AAcA,sCACGnD,UAASM,EAAAA,AAATK,SAASL,AAAT+C,OAAmCrD,EAAAA,AAASM,SAAnCA,AAA0B+C,OAAnCrD,AAAoE,oDAfvEmD,AAeuE,UAfvEA,AAgBI,SAhBJA,AAKI,qCALJA,AAkBIA,oCAlBJA,AAuBC,oCAvBDA,AAQI,oCARJA,AAyBA,oCAzBAA,AA0BAA,oCA1BAA,AAWI,AAGJ,AAqBJ,aAAA,MAAAnD,KAAA,AAAAM,aAAA,MAAAN,KAAA,AAAAM,YAAA,AAnBQ,IAAIgD,GAAY,0BAA4B,AAA0B,MAAzBtD,KAAA,AAASM,YAAV,AAAoC,gCAAhF,AAAgB,AAAkG,AAElH6C,MAAA,AAAYC,KACR,eAAA,AAAiBE,EADrB,AACiC,2CADjC,AAEI,sHAFJ,AAuBCC,AAEDhC,SAlBJ,AAqBI7B,GAAAA,AAAO0D,KAAP1D,AACIyC,qDACAC,mDAAAA,AAFGhB,EAAP1B,AAAO,gBAAPA,AAGI+C,AAGClB,YAAA,AAAAiC,KANEL,EAAA,AAAAM,KAMF,AANE,KAMF,AANEC,KAMF,AANE,kBAMF,AANEtC,AAOH4B,EAEC,AAdb,SAAA,AAASO,GAAT,AAAuBI,EAAU,AAC7B,CAAA,AAAGA,AAAU,AAqBjBpC,MAAA,AAASqC,KAAT,8BAAA,AAAuBF,KAAvB,AAAuB,QAAvB,AAAuBC,AACnBpC,KAAAA,AAAAK,KAAAL,AAAa,gCAAbA,AAAAmC,KAAAnC,AAAA,QAAAA,AAAAH,AAEAG,KAAAA,KAAQC,AACAI,KAAK5B,EADLwB,AACKd,AAnBL0B,oBAkBAZ,AAlBM,AAsBdiB,YAAA,CAAAJ,IAAA,AAAAjB,EAAAyC,GAAA,AAAAF,EAAArB,GAJQd,AAIR,AACQuB,WAAQ,UAAY,AAC/Ba,CApBY,GAcDpC,AAQZwB,QAAA,UAAA,AApBgBC,CACH,GAWT1B,AAAQC,AAYRD,AApBH,IAuBGA,AAIAA,SAAAA,IAAgB,AArBhBA,GAAA,AAAQK,KAAR,AAAa,yBAAb,AAAsCkC,AAwBzCvC,UAAA,AAAAC,SAAA,AArBGD,qBAAA,AAAQK,KAAR,AAAa,yBAAb,AAAsC4B,KAAK,8CAA+CxD,EAAA,AAASW,SAAT,AAAkBC,SAAWZ,EAAA,AAASW,SAAT,AAAkBC,QAAhD,AAAwDC,IAAOb,EAAA,AAASW,SAAT,AAAkBC,QAAjF,AAAyFC,IAAvI,AAA6I,UAA7I,AAuB/C,uDAAAb,EAAA,AAAAW,SAAA,AAAAC,SAAAZ,EAAA,AAAAW,SAAA,AAAAC,QAAA,AAAAE,OAAAd,EAAA,AAAAW,SAAA,AAAAC,QAAA,AAAAE,OAvB+C,AAuB/C,oCAvBI,AAuBJ,AApBI,AAuBJS,YAAA,AAASwC,QAAT,AAASA,UAAe,CAAA,CAAAC,WAAxB,AAAwB,AAAA5C,AACpBG,IApBJ,AAgCIA,SAAAA,IAAa,AA5BbA,GAAA,AAAQK,KAAR,AAAa,yBAAb,AAAsCkC,AA+BtC7C,UAAAA,SAAAA,AAAA,AA5BAM,mBAAA,AAAQK,KAAR,AAAa,yBAAb,AAAsC4B,KAAK,8CAA+CxD,EAAA,AAASW,SAAT,AAAkBsD,WAAajE,EAAA,AAASW,SAAT,AAAkBsD,UAAlD,AAA4DpD,IAAOb,EAAA,AAASW,SAAT,AAAkBsD,UAArF,AAA+FpD,IAA7I,AAAmJ,SAAnJ,AA8B3C,uDAAAb,EAAA,AAAAW,SAAA,AAAAsD,WAAAjE,EAAA,AAAAW,SAAA,AAAAsD,UAAA,AAAAnD,OAAAd,EAAA,AAAAW,SAAA,AAAAsD,UAAA,AAAAnD,OA9B2C,AA8B3C,oCA9BA,AA8BA,AAEH,AA5BGS,YAAA,AAAQwB,QAAR,AAAgB,QAAS,CAAC,CAACiB,WAA3B,AAAyB,AAAC,AAAa5C,AAEvCU,gBAAA,AAAWiC,EAAc/D,EAAzB,AAAkCI,AACrC,kBAED,AAgCA,SAAA,AAAS0C,IAAT,AACIvB,GAAA,AAAIY,YAAJ,AAAoB,AACpBZ,mBAAA,AAAI2C,KAAJ,AAAU,4BAAV,AAAAR,KAAA,QAAA,AAEAnC,QAAA,AAAAK,KAAA,yBAAA,AAAA4B,AAAA,AACIW,AACA1C,AA5BA,AA8BA,AACA,AA5BA,AA8BIgC,AAAA,AAGHlC,4NAAA,AAAAK,KAAA,0CAAA,AAAA8B,KAAA,YAAA,AA5BL,AA+BAzC,MAAA,AAEA,AACHM,QAAA,AAAAwB,QAAA,YAAA,CAAA,CAAAiB,WAAA,AAAA5C,AA7BA,IAED,AAqCC,SAAA,AAAA0B,GAAA,AAAAsB,EAAA,AAAApC,EAAA,AA7BG,IAAIG,GAAMiC,EAAA,AAAMvB,IAAN,AAAU,oBAAV,AAA8BwB,MAA9B,AAAoC,aAApC,AAAiD,GAAjD,AAAoDC,QAApD,AAA4D,SAAtE,AAAU,AAAqE,AA+BnF,IAAAJ,EAAA,GAAA,AAAAK,AA5BI,AACAL,SAAA,AAAIC,OAAS,UAAW,AACpB1C,IAAA,AAAgB,AAgCpBO,AACAA,EAAAA,AAAgB,AA5BR,AA+BZ,CAHIA,KAGJ,AAAAA,GACWwC,EAAA,AAASxC,AA7BX,AA+BL,EAxCA,AAYA,AAgCAkC,IAAA,AAAAO,IAAA,AAAAtC,AACA,EAAGnC,EAAH,AAAGA,UAASK,EAAAA,AA9Bf,QAkCG,AAMA,SAAA,AAAI2B,GAAJ,AAAIA,EAAqBJ,AAhCzBI,GAAA,AAAWR,SAAX,AAAoB,AAkCpBQ,qBAAA,AAAA0C,QAAA,AACA,uCAEA,AA5BJ,SAAA,AAASF,GAAT,AAAsBxC,EAAY,AAkC1BF,GAAAA,YAAAA,AAAW,AACPyB,qBAAAA,KAAAA,mBAAAA,AAAAoB,AACH,QAEDpB,AACHhC,IAhUDA,GAAU7B,EAAd,AAAc,AAAE,AAHpB,MAAA0B,EAAA,AAAAJ,AAMI,EAAI0B,EAAJ,AAAiB,AAHjB,EAAA,AAAInB,AAAU7B,AACd,KAAA,AAAI0B,AAKJ,KAAIK,EAAJ,AAAmB,AAFnB,AACA,QAAAzB,GAAA,AAAAU,AAAgB,AAChBkE,oBASI,AAMJ,AAKA,QAsSK,AAAAC,GAAA,QAAA,yCAAA,SAAA,AAAAC,EAAA,AAEGC,AACI,MAAA,GAAA,AAAGpC,MAAH,AAAAD,GACe1C,EADf,AACIE,AAHV,AAMM,AAEH,cAAAF,GAAA,AAAAK,AAAA,gBAAA,AAAA2E,AACFzD,AAGd,AA9WL,OAAA0D,GAAAH,EAAA,AAAAI,MAAAxF,EAAAoF,EAAA,AAAAK,QAAA,AAAAC,SAAA,AAAAC,KAFJC,EAAAR,EAAA,AAAAS,MAAA7F,EAAAoF,EAAA,AAAAK,QAAA,AAAAC,SAEI,AAFJvE,AA+UoB,OAAG,AAACoE,AAAM,CAAP,EAAH,AAAWK,AACP,AAEJ,MAAI3B,GAAWjE,EAAA,AAAE,MAAF,AAAQgE,KAAvB,AAAe,AAAa,AAC5B,aAAI1B,EAAaT,EAAA,AAAQK,KAAzB,AAAiB,AAAa,AAE9B,AACA,yBAAGI,EAAA,AAAWwD,SAAd,AAAG,AAAoB,AAAoB,AAE3C,AACAjE,uBAAA,AAAQwB,QAAR,AAAgB,WAAY,CAAC,CAACiB,WAA9B,AAA4B,AAAC,AAAa5C,AAE1C,KAAGpB,OAAH,AAAG,AAASO,AAA2B,AAAM,AACzCsB,0BAAA,AAAUG,AAEVF,cAAW,UAAW,AAClByB,GAAA,AAAcI,AACjB,EAFD,EAEG3D,EALP,AAGI,AAEYQ,AACf,AAAM,AACH+C,0BAAA,AAAcI,AACjB,AACJ,KADI,GAAA,AACFkB,GAAG,AACEE,YAAY,UAAW,AACnB,AAAG,CAAH,AAAIC,IACA,AAAAA,AAAW,AAClB,KAJH,AAKES,aAAY,UAAW,AACnB,CAAA,AAAGT,IACC,AAAAA,AAAW,AAClB,KATJ,AACC,GADD,AAUEzD,AAEV,aAtUG,AAAAyB,MAAA,AAEZ,AACGzB,oEAAA,AAACvB,QAAD,AAAUU,QAAb,CAA6B,CAAAsD,WAA1B,AAAH,AAA6B,AAAA5C,AAMb,AAHf,AAMW,AAHIH,KAjBR,AAAO,AA+UV,EA9WL,AAAY,AAgXf,GAlXD,GAAA,AAkXGyE","file":"icon-captcha.min.js","sourcesContent":["/**\r\n * Icon Captcha Plugin: v2.5.0\r\n * Copyright © 2017, Fabian Wennink (https://www.fabianwennink.nl)\r\n *\r\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\r\n */\r\n\r\n//# sourceMappingURL=icon-captcha.min.js.map\r\n(function($){\r\n\r\n $.fn.extend({\r\n iconCaptcha: function(options) {\r\n\r\n // Default plugin options, will be ignored if not set\r\n let defaults = {\r\n themes: [''],\r\n fontFamily: '',\r\n clickDelay: 1000,\r\n invalidResetDelay: 3000,\r\n hoverDetection: true,\r\n showCredits: 'show',\r\n enableLoadingAnimation: false,\r\n loadingAnimationDelay: 2000,\r\n requestIconsDelay: 1500,\r\n validationPath: '',\r\n messages: {\r\n header: 'Select the image that does not belong in the row',\r\n correct: {\r\n top: 'Great!',\r\n bottom: 'You do not appear to be a robot.'\r\n },\r\n incorrect: {\r\n top: 'Oops!',\r\n bottom: 'You\\'ve selected the wrong image.'\r\n }\r\n }\r\n };\r\n\r\n let $options = $.extend(defaults, options);\r\n\r\n // Loop through all the captcha holder.\r\n return this.each(function(id) {\r\n\r\n let $holder = $(this);\r\n let $captcha_id = id;\r\n\r\n let build_time = 0;\r\n let hovering = false;\r\n let generated = false;\r\n let images_ready = 0;\r\n\r\n\t\t\t\t// Make sure the captchaAjaxFile is set.\r\n\t\t\t\tif(!$options.validationPath) {\r\n\t\t\t\t\tconsole.error('IconCaptcha: The option captchaAjaxFile has not been set.');\r\n\r\n\t\t\t\t\t// Trigger: error\r\n $holder.trigger('error', [{captcha_id: $captcha_id}]);\r\n\r\n return;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n // Initialize the captcha\r\n initCaptcha(false);\r\n\r\n /**\r\n * Initialize the captcha.\r\n *\r\n * @param {boolean} loaderActive If the loading animation should play.\r\n */\r\n function initCaptcha(loaderActive) {\r\n let captchaTheme = 'light';\r\n\r\n if($options.themes[$captcha_id] !== undefined && ($options.themes[$captcha_id] === 'dark' || $options.themes[$captcha_id] === 'light')) {\r\n captchaTheme = $options.themes[$captcha_id].toLowerCase();\r\n }\r\n\r\n // Reset image loading count\r\n images_ready = 0;\r\n\r\n $holder.addClass('captcha-theme-' + captchaTheme);\r\n\r\n // Build the captcha if it hasn't been build yet\r\n if(!generated)\r\n _buildCaptchaHolder();\r\n\r\n let $icon_holder = $holder.find('.captcha-modal__icons');\r\n\r\n // If the requestIconsDelay has been set and is not 0, add the loading delay.\r\n // The loading delay will (possibly) prevent high CPU usage when a page displaying\r\n // one or more captchas gets constantly refreshed during a DDoS attack.\r\n if(($options.requestIconsDelay && $options.requestIconsDelay > 0) && !generated) {\r\n\r\n // Add the loading animation\r\n if(!loaderActive)\r\n addLoader($icon_holder);\r\n\r\n // Set the timeout\r\n setTimeout(function() {\r\n loadCaptcha(captchaTheme, $icon_holder, true);\r\n }, $options.requestIconsDelay)\r\n } else {\r\n loadCaptcha(captchaTheme, $icon_holder, loaderActive);\r\n }\r\n }\r\n\r\n /**\r\n * Load the captcha by playing the animations and requesting\r\n * the catpcha icons from the back-end server.\r\n *\r\n * @param {string} captchaTheme The theme of the captcha.\r\n * @param iconHolder The captcha holder element.\r\n * @param {boolean} loadDelay If the loading animation should play.\r\n */\r\n function loadCaptcha(captchaTheme, iconHolder, loadDelay) {\r\n $.ajax({\r\n url: $options.validationPath,\r\n type: 'post',\r\n\t\t\t\t\t\tdataType: 'json',\r\n data: {cID: $captcha_id, rT : 1, tM: captchaTheme},\r\n success: function (data) {\r\n if(data && typeof data === \"object\") {\r\n\r\n // Add the loading animation\r\n if(!loadDelay)\r\n addLoader(iconHolder);\r\n\r\n build_time = new Date();\r\n\r\n $holder.find('.captcha-image').each(function(i) {\r\n $(this).css('background-image', 'url(' + $options.validationPath + '?cid=' + $captcha_id + '&hash=' + data[i] + ')');\r\n $(this).attr('icon-hash', data[i]);\r\n\r\n loadImage($(this), iconHolder);\r\n });\r\n\r\n // Event: init\r\n if(!generated)\r\n $holder.trigger('init', [{captcha_id: id}]);\r\n\r\n generated = true;\r\n }\r\n },\r\n error: function() {\r\n showError();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Build the captcha's holder element.\r\n * The modal will be inserted, along with hidden fields\r\n * which will be used during validation.\r\n *\r\n * @private\r\n */\r\n function _buildCaptchaHolder() {\r\n if($options.fontFamily) {\r\n $holder.css('font-family', $options.fontFamily);\r\n } else {\r\n $holder.css('font-family', 'Arial, sans-serif');\r\n }\r\n\r\n let captchaHTML = [];\r\n\r\n // Adds the first portion of the HTML to the array.\r\n captchaHTML.push(\r\n \"