{"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","ConfigStore","forms","mc4wp","busy","config","on","event","element","indexOf","loader","fire","request","XMLHttpRequest","onreadystatechange","readyState","status","response","JSON","parse","responseText","error","console","log","setResponse","trigger","message","errors","data","getData","hide_fields","display","reset","redirect_to","location","href","process","open","setRequestHeader","send","getSerializedData","id","submit","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\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\t\ttrigger('submitted', form, null);\n\n\t\tif( response.error ) {\n\t\t\tform.setResponse(response.error.message);\n\t\t\ttrigger('error', form, response.error.errors);\n\t\t} else {\n\t\t\tvar data = form.getData();\n\n\t\t\t// trigger events\n\t\t\ttrigger('success', form, data);\n\t\t\ttrigger( response.data.event, form, data);\n\n\t\t\t// for BC: always trigger \"subscribed\" event when firing \"updated_subscriber\" event\n\t\t\tif( response.data.event === 'updated_subscriber' ) {\n trigger('subscribed', form, data);\n\t\t\t}\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\t// show success message\n\t\t\tform.setResponse(response.data.message);\n\n\t\t\t// reset form element\n\t\t\tform.element.reset();\n\n\t\t\t// maybe redirect to url\n\t\t\tif( response.data.redirect_to ) {\n\t\t\t\twindow.location.href = response.data.redirect_to;\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction trigger(event, form, data) {\n\t\tforms.trigger(event, [form, data]);\n\t\tforms.trigger(form.id + \".\" + event, [form, data]);\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\n},{\"./_config.js\":1,\"./_form-loader.js\":2}]},{},[3]);\n })();"]}