{"version":3,"sources":["ajax-forms/assets/js/ajax-forms.js"],"names":["require","undefined","e","t","n","r","s","o","u","a","i","f","Error","code","l","exports","call","length","1","module","Config","objectName","this","prototype","get","k","d","window","set","v","2","getButtonText","button","innerHTML","value","setButtonText","text","Loader","formElement","form","querySelector","loadingInterval","character","originalButton","cloneNode","setCharacter","c","start","loadingText","getAttribute","styles","getComputedStyle","style","width","setInterval","tick","bind","opacity","loadingChar","stop","clearInterval","3","submit","setResponse","loader","fire","busy","request","XMLHttpRequest","onreadystatechange","readyState","clean","status","response","JSON","parse","responseText","error","console","log","config","process","open","setRequestHeader","send","getSerializedData","forms","trigger","message","errors","data","getData","hide_fields","element","display","redirect_to","location","href","reset","event","ConfigStore","mc4wp","on","indexOf","returnValue","preventDefault","./_config.js","./_form-loader.js"],"mappings":"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","file":"ajax-forms.min.js","sourcesContent":["(function () { var require = undefined; var define = undefined; (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o= 5 ? loadingChar : text + \" \" + loadingChar);\n};\n\n\nLoader.prototype.stop = function() {\n if( this.button ) {\n this.button.style.width = this.originalButton.style.width;\n var text = getButtonText(this.originalButton);\n setButtonText(this.button, text);\n window.clearInterval(this.loadingInterval);\n } else {\n this.form.style.opacity = '';\n }\n\n};\n\n\nmodule.exports = Loader;\n},{}],3:[function(require,module,exports){\n'use strict';\n\nvar ConfigStore = require('./_config.js');\nvar Loader = require('./_form-loader.js');\n\nvar forms = window.mc4wp.forms;\nvar busy = false;\nvar config = new ConfigStore('mc4wp_ajax_vars');\n\n// failsafe against including script twice\nif( config.get('ready') ) {\n\treturn;\n}\n\nforms.on('submit', function( form, event ) {\n\n\t// does this form have AJAX enabled?\n\t// @todo move to data attribute?\n\tif( form.element.getAttribute('class').indexOf('mc4wp-ajax') < 0 ) {\n\t\treturn;\n\t}\n\n\ttry{\n\t\tsubmit(form);\n\t} catch(e) {\n\t\tconsole.error(e);\n\t\treturn true;\n\t}\n\n\tevent.returnValue = false;\n\tevent.preventDefault();\n\treturn false;\n});\n\nfunction submit( form ) {\n\n\tvar loader = new Loader(form.element);\n\tvar loadingChar = config.get('loading_character');\n\tif( loadingChar ) {\n\t\tloader.setCharacter(loadingChar);\n\t}\n\n\tfunction start() {\n\t\t// Clear possible errors from previous submit\n\t\tform.setResponse('');\n\t\tloader.start();\n\t\tfire();\n\t}\n\n\tfunction fire() {\n\t\t// prepare request\n\t\tbusy = true;\n\t\tvar request = new XMLHttpRequest();\n\t\trequest.onreadystatechange = function() {\n\t\t\t// are we done?\n\t\t\tif (this.readyState == 4) {\n\t\t\t\tclean();\n\n\t\t\t\tif (this.status >= 200 && this.status < 400) {\n\t\t\t\t\t// Request success! :-)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar response = JSON.parse(this.responseText);\n\t\t\t\t\t} catch(error) {\n\t\t\t\t\t\tconsole.log( 'MailChimp for WordPress: failed to parse AJAX response.\\n\\nError: \"' + error + '\"' );\n\n\t\t\t\t\t\t// Not good..\n\t\t\t\t\t\tform.setResponse('

'+ config.get('error_text') + '

');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tprocess(response);\n\t\t\t\t} else {\n\t\t\t\t\t// Error :(\n\t\t\t\t\tconsole.log(this.responseText);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\trequest.open('POST', config.get('ajax_url'), true);\n\t\trequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\trequest.send(form.getSerializedData());\n\t\trequest = null;\n\t}\n\n\tfunction process( response ) {\n\n\t\tforms.trigger('submitted', [form]);\n\n\t\tif( response.error ) {\n\t\t\tform.setResponse(response.error.message);\n\t\t\tforms.trigger('error', [form, response.error.errors]);\n\t\t} else {\n\t\t\tvar data = form.getData();\n\n\t\t\t// Show response message\n\t\t\tform.setResponse(response.data.message);\n\n\t\t\tif( response.data.hide_fields ) {\n\t\t\t\tform.element.querySelector('.mc4wp-form-fields').style.display = 'none';\n\t\t\t}\n\n\t\t\tif( response.data.redirect_to ) {\n\t\t\t\twindow.location.href = response.data.redirect_to;\n\t\t\t}\n\n\t\t\t// finally, reset form element\n\t\t\tform.element.reset();\n\n\t\t\t// trigger events\n\t\t\tforms.trigger('success', [form, data]);\n\t\t\tforms.trigger( response.data.event, [form, data ]);\n\t\t}\n\t}\n\n\tfunction clean() {\n\t\tloader.stop();\n\t\tbusy = false;\n\t}\n\n\t// let's do this!\n\tif( ! busy ) {\n\t\tstart();\n\t}\n}\n\nconfig.set('ready', true);\n},{\"./_config.js\":1,\"./_form-loader.js\":2}]},{},[3]);\n })();"]}