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