{"version":3,"sources":["script.js"],"names":["require","undefined","r","e","n","t","o","i","f","c","u","a","Error","code","p","exports","call","length","1","module","css","element","styles","property","style","initObjectProperties","properties","value","newObject","copyObjectProperties","object","animated","getAttribute","toggle","animation","nowVisible","display","offsetLeft","clone","cloneNode","cleanup","removeAttribute","setAttribute","hiddenStyles","visibleStyles","computedStyles","window","getComputedStyle","overflowY","animate","opacity","targetStyles","fn","startTime","performance","now","diff","startStyles","to","parseFloat","current","tick","progress","Math","min","duration","suffix","easeOutQuint","requestAnimationFrame","2","throttle","threshhold","scope","last","deferTimer","context","this","Date","args","arguments","clearTimeout","setTimeout","apply","Bar","wrapperEl","config","init","noJsField","barEl","querySelector","parentElement","removeChild","formEl","addEventListener","submitForm","isBottomBar","insertBefore","iconEl","originalBodyPadding","parseInt","document","body","paddingBottom","nextElementSibling","paddingTop","innerHTML","icons","show","querySelectorAll","className","calculateDimensions","cookies","read","responseEl","fadeResponse","evt","loader","Loader","data","FormData","request","XMLHttpRequest","onreadystatechange","response","readyState","stop","status","JSON","parse","responseText","error","console","log","state","success","submitted","redirect_url","location","href","showResponseMessage","message","reset","open","setRequestHeader","send","start","preventDefault","msg","parentNode","createElement","labelEl","innerText","appendChild","origBarDisplay","visibility","bodyPadding","clientHeight","visible","elementsWidth","firstElementChild","children","clientWidth","replace","minHeight","height","lineHeight","manual","erase","animator","hide","create","cookieLength","position","./animator.js","./cookies.js","./loader.js","3","name","days","expires","date","setTime","getTime","toGMTString","cookie","encodeURIComponent","nameEQ","ca","split","charAt","substring","indexOf","decodeURIComponent","4","getButtonText","button","setButtonText","text","formElement","form","loadingInterval","character","originalButton","prototype","setCharacter","loadingText","width","setInterval","bind","loadingChar","clearInterval","5","ready","getElementById","MailChimpTopBar","mctb","./bar.js"],"mappings":"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","file":"script.min.js","sourcesContent":["(function () { var require = undefined; var module = undefined; var exports = 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 0;\n\n // create clone for reference\n var clone = element.cloneNode(true);\n var cleanup = function() {\n element.removeAttribute('data-animated');\n element.setAttribute('style', clone.getAttribute('style'));\n element.style.display = nowVisible ? 'none' : '';\n };\n\n // store attribute so everyone knows we're animating this element\n element.setAttribute('data-animated', \"true\");\n\n // toggle element visiblity right away if we're making something visible\n if( ! nowVisible ) {\n element.style.display = '';\n }\n\n var hiddenStyles, visibleStyles;\n\n // animate properties\n if( animation === 'slide' ) {\n hiddenStyles = initObjectProperties([\"height\", \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\"], 0);\n visibleStyles = {};\n\n if( ! nowVisible ) {\n var computedStyles = window.getComputedStyle(element);\n visibleStyles = copyObjectProperties([\"height\", \"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\"], computedStyles);\n css(element, hiddenStyles);\n }\n\n // don't show a scrollbar during animation\n element.style.overflowY = 'hidden';\n animate(element, nowVisible ? hiddenStyles : visibleStyles, cleanup);\n } else {\n hiddenStyles = { opacity: 0 };\n visibleStyles = { opacity: 1 };\n if( ! nowVisible ) {\n css(element, hiddenStyles);\n }\n\n animate(element, nowVisible ? hiddenStyles : visibleStyles, cleanup);\n }\n}\n\nfunction animate(element, targetStyles, fn) {\n var startTime = performance.now();\n var styles = window.getComputedStyle(element);\n var diff = {};\n var startStyles = {};\n\n for(var property in targetStyles) {\n // calculate step size & current value\n var to = parseFloat(targetStyles[property]);\n var current = parseFloat(styles[property]);\n\n // is there something to do?\n if( current == to ) {\n continue;\n }\n\n startStyles[property] = current;\n diff[property] = to - current;\n }\n\n var tick = function(t) {\n var progress = Math.min(( t - startTime ) / duration, 1);\n\n for(var property in diff) {\n var suffix = property !== \"opacity\" ? \"px\" : \"\";\n element.style[property] = startStyles[property] + ( diff[property] * easeOutQuint(progress) ) + suffix;\n }\n\n if(progress >= 1) {\n if(fn) {\n fn();\n }\n\n return;\n } \n \n window.requestAnimationFrame(tick);\n };\n\n window.requestAnimationFrame(tick);\n}\n\n\nmodule.exports = {\n 'toggle': toggle,\n 'animate': animate,\n 'animated': animated\n};\n\n},{}],2:[function(require,module,exports){\n'use strict';\n\nvar cookies = require('./cookies.js');\nvar animator = require('./animator.js');\nvar Loader = require('./loader.js');\n\nfunction throttle(fn, threshhold, scope) {\n threshhold || (threshhold = 250);\n var last,\n deferTimer;\n return function () {\n var context = scope || this;\n\n var now = +new Date,\n args = arguments;\n if (last && now < last + threshhold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = setTimeout(function () {\n last = now;\n fn.apply(context, args);\n }, threshhold);\n } else {\n last = now;\n fn.apply(context, args);\n }\n };\n}\n\nfunction Bar( wrapperEl, config ) {\n\n // Vars & State\n var barEl = wrapperEl.querySelector('.mctb-bar');\n var iconEl = document.createElement('span');\n var responseEl = wrapperEl.querySelector('.mctb-response');\n var formEl = barEl.querySelector('form');\n var visible = false,\n originalBodyPadding = 0,\n bodyPadding = 0,\n isBottomBar = ( config.position === 'bottom' );\n var state = config.state;\n\n // Functions\n function init() {\n // remove \"no_js\" field\n var noJsField = barEl.querySelector('input[name=\"_mctb_no_js\"]');\n noJsField.parentElement.removeChild(noJsField);\n\n formEl.addEventListener('submit', submitForm);\n\n // save original bodyPadding\n if( isBottomBar ) {\n wrapperEl.insertBefore( iconEl, barEl );\n originalBodyPadding = ( parseInt( document.body.style.paddingBottom ) || 0 );\n } else {\n wrapperEl.insertBefore( iconEl, barEl.nextElementSibling );\n originalBodyPadding = ( parseInt( document.body.style.paddingTop ) || 0 );\n }\n\n // configure icon\n iconEl.setAttribute('class', 'mctb-close');\n iconEl.innerHTML = config.icons.show;\n iconEl.addEventListener('click', toggle);\n\n // count input fields (3 because of hidden input honeypot)\n if( barEl.querySelectorAll('input:not([type=\"hidden\"])').length > 3 ) {\n wrapperEl.className += \" multiple-input-fields\";\n }\n\n // calculate initial dimensions\n calculateDimensions();\n\n // on dom repaint, bar height changes. re-calculate in next repaint.\n window.requestAnimationFrame(calculateDimensions);\n\n // Show the bar straight away?\n if( cookies.read( \"mctb_bar_hidden\" ) != 1 ) {\n show()\n }\n\n // fade response 4 seconds after showing bar\n if(responseEl) {\n window.setTimeout(fadeResponse, 4000);\n }\n\n window.addEventListener('resize', throttle(calculateDimensions, 40));\n }\n\n function submitForm(evt) {\n var loader = new Loader(formEl);\n var data = new FormData(formEl);\n var request = new XMLHttpRequest();\n request.onreadystatechange = function() {\n var response;\n\n // are we done?\n if (this.readyState !== 4) {\n return;\n }\n\n loader.stop();\n\n if (this.status >= 200 && this.status < 400) {\n try {\n response = JSON.parse(this.responseText);\n } catch (error) {\n console.log('MailChimp Top Bar: failed to parse AJAX response.\\n\\nError: \"' + error + '\"');\n return;\n }\n\n state.success = !!response.success;\n state.submitted = true;\n\n if( response.success && response.redirect_url ) {\n window.location.href = response.redirect_url;\n return;\n }\n\n showResponseMessage(response.message);\n\n // clear form\n if( state.success ) {\n formEl.reset();\n }\n\n } else {\n // Server error :(\n console.log(this.responseText);\n }\n\n };\n request.open('POST', window.location.href, true);\n request.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n request.send(data);\n request = null;\n\n loader.start();\n evt.preventDefault();\n }\n\n function showResponseMessage(msg) {\n if(responseEl) {\n responseEl.parentNode.removeChild(responseEl);\n }\n\n responseEl = document.createElement('div');\n responseEl.className = \"mctb-response\";\n\n var labelEl = document.createElement('label');\n labelEl.className = \"mctb-response-label\";\n labelEl.innerText = msg;\n responseEl.appendChild(labelEl);\n formEl.parentNode.insertBefore(responseEl, formEl.nextElementSibling);\n\n calculateDimensions();\n window.setTimeout(fadeResponse, 4000);\n }\n\n function calculateDimensions() {\n\n // make sure bar is visible\n var origBarDisplay = barEl.style.display;\n\n if( origBarDisplay !== 'block' ) {\n barEl.style.visibility = 'hidden';\n }\n barEl.style.display = 'block';\n\n // calculate & set new body padding if bar is currently visible\n bodyPadding = ( originalBodyPadding + barEl.clientHeight ) + \"px\";\n if( visible ) {\n document.body.style[isBottomBar ? 'paddingBottom' : 'paddingTop'] = bodyPadding;\n }\n\n // would the close icon fit inside the bar?\n var elementsWidth = 0;\n for( var i=0; i padding\n barEl.style.display = 'block';\n document.body.style[isBottomBar ? 'paddingBottom' : 'paddingTop'] = bodyPadding;\n }\n\n iconEl.innerHTML = config.icons.hide;\n visible = true;\n\n return true;\n }\n\n /**\n * Hide the bar\n *\n * @returns {boolean}\n */\n function hide(manual) {\n if( ! visible ) {\n return false;\n }\n\n if( manual ) {\n cookies.create( \"mctb_bar_hidden\", 1, config.cookieLength );\n animator.toggle(barEl, \"slide\");\n\n // animate body padding\n var styles = {};\n styles[isBottomBar ? 'paddingBottom' : 'paddingTop'] = originalBodyPadding;\n animator.animate(document.body, styles);\n } else {\n barEl.style.display = 'none';\n document.body.style[isBottomBar ? 'paddingBottom' : 'paddingTop'] = originalBodyPadding + \"px\";\n }\n\n visible = false;\n iconEl.innerHTML = config.icons.show;\n\n return true;\n }\n\n /**\n * Fade out the response message\n */\n function fadeResponse() {\n if( ! responseEl ) {\n return;\n }\n\n animator.toggle(responseEl, \"fade\");\n\n // auto-dismiss bar if we're good!\n if( state.submitted && state.success ) {\n window.setTimeout( function() { hide(true); }, 1000 );\n }\n }\n\n /**\n * Toggle visibility of the bar\n *\n * @returns {boolean}\n */\n function toggle() {\n if(animator.animated(barEl)) {\n return false;\n }\n\n return visible ? hide(true) : show(true);\n }\n\n // Code to run upon object instantiation\n init();\n\n // Return values\n return {\n element: wrapperEl,\n toggle: toggle,\n show: show,\n hide: hide\n }\n}\n\nmodule.exports = Bar;\n\n},{\"./animator.js\":1,\"./cookies.js\":3,\"./loader.js\":4}],3:[function(require,module,exports){\n'use strict';\n\n/**\n * Creates a cookie\n *\n * @param name\n * @param value\n * @param days\n */\nfunction create(name, value, days) {\n var expires;\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = \"; expires=\" + date.toGMTString();\n } else {\n expires = \"\";\n }\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + expires + \"; path=/\";\n}\n\n/**\n * Reads a cookie\n *\n * @param name\n * @returns {*}\n */\nfunction read(name) {\n var nameEQ = encodeURIComponent(name) + \"=\";\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length));\n }\n return null;\n}\n\n/**\n * Erases a cookie\n *\n * @param name\n */\nfunction erase(name) {\n create(name, \"\", -1);\n}\n\nmodule.exports = {\n 'read': read,\n 'create': create,\n 'erase': erase\n};\n},{}],4:[function(require,module,exports){\n'use strict';\n\nfunction getButtonText(button) {\n return button.innerHTML ? button.innerHTML : button.value;\n}\n\nfunction setButtonText(button, text) {\n button.innerHTML ? button.innerHTML = text : button.value = text;\n}\n\nfunction Loader(formElement) {\n this.form = formElement;\n this.button = formElement.querySelector('input[type=\"submit\"], button[type=\"submit\"]');\n this.loadingInterval = 0;\n this.character = '\\u00B7';\n\n if( this.button ) {\n this.originalButton = this.button.cloneNode(true);\n }\n}\n\nLoader.prototype.setCharacter = function(c) {\n this.character = c;\n};\n\nLoader.prototype.start = function() {\n if( this.button ) {\n // loading text\n var loadingText = this.button.getAttribute('data-loading-text');\n if( loadingText ) {\n setButtonText(this.button, loadingText);\n return;\n }\n\n // Show AJAX loader\n var styles = window.getComputedStyle( this.button );\n this.button.style.width = styles.width;\n setButtonText(this.button, this.character);\n this.loadingInterval = window.setInterval(this.tick.bind(this), 500 );\n } else {\n this.form.style.opacity = '0.5';\n }\n};\n\nLoader.prototype.tick = function() {\n // count chars, start over at 5\n var text = getButtonText(this.button);\n var loadingChar = this.character;\n setButtonText(this.button, text.length >= 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},{}],5:[function(require,module,exports){\n'use strict';\n\nvar Bar = require('./bar.js');\n\n// Init bar\nready(function() {\n var element = document.getElementById('mailchimp-top-bar');\n window.MailChimpTopBar = new Bar( element, window.mctb );\n});\n\n/**\n * DOMContentLoaded (IE8 compatible)\n *\n * @param fn\n */\nfunction ready(fn) {\n if (document.readyState != 'loading'){\n fn();\n } else if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', fn);\n }\n}\n\n\n\n},{\"./bar.js\":2}]},{},[5]);\n; })();"]}