{"version":3,"sources":["ajax-forms/assets/js/ajax-forms.js"],"names":["require","undefined","r","e","n","t","o","i","f","c","u","a","Error","code","p","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","start","loadingText","getAttribute","styles","getComputedStyle","style","width","setInterval","tick","bind","opacity","loadingChar","stop","clearInterval","3","ConfigStore","busy","config","mc4wp","forms","on","event","element","indexOf","document","activeElement","tagName","blur","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(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i= 5 ? loadingChar : text + \" \" + loadingChar);\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\nmodule.exports = Loader;\n\n},{}],3:[function(require,module,exports){\n'use strict';\n\nvar ConfigStore = require('./_config.js');\nvar Loader = require('./_form-loader.js');\n\nvar busy = false;\nvar config = new ConfigStore('mc4wp_ajax_vars');\n\n// failsafe against including script twice\nif (!config.get('ready')) {\n\twindow.mc4wp.forms.on('submit', function (form, event) {\n\t\t// does this form have AJAX enabled?\n\t\tif (form.element.getAttribute('class').indexOf('mc4wp-ajax') < 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// blur active input field\n\t\tif (document.activeElement && document.activeElement.tagName === 'INPUT') {\n\t\t\tdocument.activeElement.blur();\n\t\t}\n\n\t\ttry {\n\t\t\tsubmit(form);\n\t\t} catch (e) {\n\t\t\tconsole.error(e);\n\t\t\treturn true;\n\t\t}\n\n\t\tevent.returnValue = false;\n\t\tevent.preventDefault();\n\t\treturn false;\n\t});\n}\n\nfunction submit(form) {\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\t\t\t\ttrigger('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\twindow.mc4wp.forms.trigger(event, [form, data]);\n\t\twindow.mc4wp.forms.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 })();"]}