{"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","_typeof","obj","Symbol","iterator","constructor","prototype","locationHashRefersBox","box","window","location","hash","match","elementId","element","id","querySelector","Boxzilla","options","isLoggedIn","boxzilla_options","document","body","className","indexOf","testMode","console","log","init","addEventListener","inited","key","boxes","boxOpts","boxContentElement","getElementById","content","create","post","slug","styles","css","background_color","style","background","color","border_color","borderColor","border_width","borderWidth","parseInt","border_style","borderStyle","width","maxWidth","firstChild","lastChild","fits","show","trigger","mc4wp_forms_config","submitted_form","mc4wp_submitted_form","selector","element_id","forEach","maybeOpenMailChimpForWordPressBox","boxzilla","2","duration","property","hasOwnProperty","animate","targetStyles","fn","last","Date","initialStyles","getComputedStyle","currentStyles","propSteps","parseFloat","to","current","tick","step","increment","newValue","timeSinceLastTick","done","_property","requestAnimationFrame","toggle","animation","callbackFn","cleanup","removeAttribute","setAttribute","clone","getAttribute","display","nowVisible","hiddenStyles","visibleStyles","offsetLeft","cloneNode","properties","value","newObject","initObjectProperties","object","copyObjectProperties","isFinite","height","clientRect","getBoundingClientRect","overflowY","opacity","animated","3","defaults","rehide","cookie","icon","screenWidthCondition","position","closable","Animator","Box","config","fireEvent","this","obj1","obj2","obj3","attrname","_attrname","merge","overlay","createElement","classList","add","appendChild","visible","dismissed","triggered","triggerHeight","calculateTriggerHeight","cookieSet","isCookieSet","contentElement","closeIcon","dom","events","evt","preventDefault","dismiss","target","tagName","setCookie","x","offsetX","y","offsetY","rect","left","right","top","bottom","wrapper","innerHTML","setCustomBoxStyling","origDisplay","maxHeight","windowHeight","innerHeight","boxHeight","clientHeight","newTopMargin","marginTop","bind","hide","method","triggerElement","html","documentElement","Math","max","scrollHeight","offsetHeight","getDocumentHeight","condition","innerWidth","onResize","mayAutoShow","mayRehide","replace","RegExp","hours","expiryDate","setHours","getHours","toUTCString","./animator.js","4","throttle","ExitIntent","Scroll","Pageviews","Time","initialised","listeners","onKeyUp","recalculateHeights","onElementClick","el","parentElement","href","event","args","apply","get","String","off","filter","on","push","styleElement","head","opts","minimumScreenWidth","./box.js","./styles.js","./triggers/exit-intent.js","./triggers/pageviews.js","./triggers/scroll.js","./triggers/time.js","./util.js","5","6","Timer","time","interval","start","setInterval","stop","clearInterval","7","timeout","touchStart","removeEventListener","onMouseLeave","onMouseEnter","clearTimeout","onTouchStart","onTouchEnd","clientY","documentMode","test","navigator","userAgent","clientX","setTimeout","timestamp","performance","now","scrollY","8","pageviews","sessionStorage","getItem","setItem","9","checkHeightCriteria","pageYOffset","scrollTop","../util.js","10","siteTimer","pageTimer","timers","sessionTime","hidden","../timer.js","11","threshold","scope","deferTimer","context","arguments"],"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 -1;\n\n if (isLoggedIn && options.testMode) {\n console.log('Boxzilla: Test mode is enabled. Please disable test mode if you\\'re done testing.');\n } // init boxzilla\n\n\n Boxzilla.init(); // on window.load, create DOM elements for boxes\n\n window.addEventListener('load', createBoxesFromConfig);\n})();\n\n},{\"boxzilla\":4}],2:[function(require,module,exports){\n\"use strict\";\n\nvar duration = 320;\n\nfunction css(element, styles) {\n for (var property in styles) {\n if (!styles.hasOwnProperty(property)) {\n continue;\n }\n\n element.style[property] = styles[property];\n }\n}\n\nfunction initObjectProperties(properties, value) {\n var newObject = {};\n\n for (var i = 0; i < properties.length; i++) {\n newObject[properties[i]] = value;\n }\n\n return newObject;\n}\n\nfunction copyObjectProperties(properties, object) {\n var newObject = {};\n\n for (var i = 0; i < properties.length; i++) {\n newObject[properties[i]] = object[properties[i]];\n }\n\n return newObject;\n}\n/**\n * Checks if the given element is currently being animated.\n *\n * @param element\n * @returns {boolean}\n */\n\n\nfunction animated(element) {\n return !!element.getAttribute('data-animated');\n}\n/**\n * Toggles the element using the given animation.\n *\n * @param element\n * @param animation Either \"fade\" or \"slide\"\n * @param callbackFn\n */\n\n\nfunction toggle(element, animation, callbackFn) {\n var nowVisible = element.style.display !== 'none' || element.offsetLeft > 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\n if (callbackFn) {\n callbackFn();\n }\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;\n var 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); // in some browsers, getComputedStyle returns \"auto\" value. this falls back to getBoundingClientRect() in those browsers since we need an actual height.\n\n if (!isFinite(visibleStyles.height)) {\n var clientRect = element.getBoundingClientRect();\n visibleStyles.height = clientRect.height;\n }\n\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 last = +new Date();\n var initialStyles = window.getComputedStyle(element);\n var currentStyles = {};\n var propSteps = {};\n\n for (var property in targetStyles) {\n if (!targetStyles.hasOwnProperty(property)) {\n continue;\n } // make sure we have an object filled with floats\n\n\n targetStyles[property] = parseFloat(targetStyles[property]); // calculate step size & current value\n\n var to = targetStyles[property];\n var current = parseFloat(initialStyles[property]); // is there something to do?\n\n if (current === to) {\n delete targetStyles[property];\n continue;\n }\n\n propSteps[property] = (to - current) / duration; // points per second\n\n currentStyles[property] = current;\n }\n\n var tick = function tick() {\n var now = +new Date();\n var timeSinceLastTick = now - last;\n var done = true;\n var step, to, increment, newValue;\n\n for (var _property in targetStyles) {\n if (!targetStyles.hasOwnProperty(_property)) {\n continue;\n }\n\n step = propSteps[_property];\n to = targetStyles[_property];\n increment = step * timeSinceLastTick;\n newValue = currentStyles[_property] + increment;\n\n if (step > 0 && newValue >= to || step < 0 && newValue <= to) {\n newValue = to;\n } else {\n done = false;\n } // store new value\n\n\n currentStyles[_property] = newValue;\n element.style[_property] = _property !== 'opacity' ? newValue + 'px' : newValue;\n }\n\n last = +new Date();\n\n if (!done) {\n // keep going until we're done for all props\n window.requestAnimationFrame(tick);\n } else {\n // call callback\n fn && fn();\n }\n };\n\n tick();\n}\n\nmodule.exports = {\n toggle: toggle,\n animate: animate,\n animated: animated\n};\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\n\nvar defaults = {\n animation: 'fade',\n rehide: false,\n content: '',\n cookie: null,\n icon: '×',\n screenWidthCondition: null,\n position: 'center',\n testMode: false,\n trigger: false,\n closable: true\n};\n\nvar Animator = require('./animator.js');\n/**\n * Merge 2 objects, values of the latter overwriting the former.\n *\n * @param obj1\n * @param obj2\n * @returns {*}\n */\n\n\nfunction merge(obj1, obj2) {\n var obj3 = {}; // add obj1 to obj3\n\n for (var attrname in obj1) {\n if (obj1.hasOwnProperty(attrname)) {\n obj3[attrname] = obj1[attrname];\n }\n } // add obj2 to obj3\n\n\n for (var _attrname in obj2) {\n if (obj2.hasOwnProperty(_attrname)) {\n obj3[_attrname] = obj2[_attrname];\n }\n }\n\n return obj3;\n}\n/**\n * Get the real height of entire document.\n * @returns {number}\n */\n\n\nfunction getDocumentHeight() {\n var body = document.body;\n var html = document.documentElement;\n return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n} // Box Object\n\n\nfunction Box(id, config, fireEvent) {\n this.id = id;\n this.fireEvent = fireEvent; // store config values\n\n this.config = merge(defaults, config); // add overlay element to dom and store ref to overlay\n\n this.overlay = document.createElement('div');\n this.overlay.style.display = 'none';\n this.overlay.id = 'boxzilla-overlay-' + this.id;\n this.overlay.classList.add('boxzilla-overlay');\n document.body.appendChild(this.overlay); // state\n\n this.visible = false;\n this.dismissed = false;\n this.triggered = false;\n this.triggerHeight = this.calculateTriggerHeight();\n this.cookieSet = this.isCookieSet();\n this.element = null;\n this.contentElement = null;\n this.closeIcon = null; // create dom elements for this box\n\n this.dom(); // further initialise the box\n\n this.events();\n} // initialise the box\n\n\nBox.prototype.events = function () {\n var box = this; // attach event to \"close\" icon inside box\n\n if (this.closeIcon) {\n this.closeIcon.addEventListener('click', function (evt) {\n evt.preventDefault();\n box.dismiss();\n });\n }\n\n this.element.addEventListener('click', function (evt) {\n if (evt.target.tagName === 'A') {\n box.fireEvent('box.interactions.link', [box, evt.target]);\n }\n }, false);\n this.element.addEventListener('submit', function (evt) {\n box.setCookie();\n box.fireEvent('box.interactions.form', [box, evt.target]);\n }, false);\n this.overlay.addEventListener('click', function (evt) {\n var x = evt.offsetX;\n var y = evt.offsetY; // calculate if click was less than 40px outside box to avoid closing it by accident\n\n var rect = box.element.getBoundingClientRect();\n var margin = 40; // if click was not anywhere near box, dismiss it.\n\n if (x < rect.left - margin || x > rect.right + margin || y < rect.top - margin || y > rect.bottom + margin) {\n box.dismiss();\n }\n });\n}; // generate dom elements for this box\n\n\nBox.prototype.dom = function () {\n var wrapper = document.createElement('div');\n wrapper.className = 'boxzilla-container boxzilla-' + this.config.position + '-container';\n var box = document.createElement('div');\n box.id = 'boxzilla-' + this.id;\n box.className = 'boxzilla boxzilla-' + this.id + ' boxzilla-' + this.config.position;\n box.style.display = 'none';\n wrapper.appendChild(box);\n var content;\n\n if (typeof this.config.content === 'string') {\n content = document.createElement('div');\n content.innerHTML = this.config.content;\n } else {\n content = this.config.content; // make sure element is visible\n\n content.style.display = '';\n }\n\n content.className = 'boxzilla-content';\n box.appendChild(content);\n\n if (this.config.closable && this.config.icon) {\n var closeIcon = document.createElement('span');\n closeIcon.className = 'boxzilla-close-icon';\n closeIcon.innerHTML = this.config.icon;\n box.appendChild(closeIcon);\n this.closeIcon = closeIcon;\n }\n\n document.body.appendChild(wrapper);\n this.contentElement = content;\n this.element = box;\n}; // set (calculate) custom box styling depending on box options\n\n\nBox.prototype.setCustomBoxStyling = function () {\n // reset element to its initial state\n var origDisplay = this.element.style.display;\n this.element.style.display = '';\n this.element.style.overflowY = '';\n this.element.style.maxHeight = ''; // get new dimensions\n\n var windowHeight = window.innerHeight;\n var boxHeight = this.element.clientHeight; // add scrollbar to box and limit height\n\n if (boxHeight > windowHeight) {\n this.element.style.maxHeight = windowHeight + 'px';\n this.element.style.overflowY = 'scroll';\n } // set new top margin for boxes which are centered\n\n\n if (this.config.position === 'center') {\n var newTopMargin = (windowHeight - boxHeight) / 2;\n newTopMargin = newTopMargin >= 0 ? newTopMargin : 0;\n this.element.style.marginTop = newTopMargin + 'px';\n }\n\n this.element.style.display = origDisplay;\n}; // toggle visibility of the box\n\n\nBox.prototype.toggle = function (show, animate) {\n show = typeof show === 'undefined' ? !this.visible : show;\n animate = typeof animate === 'undefined' ? true : animate; // is box already at desired visibility?\n\n if (show === this.visible) {\n return false;\n } // is box being animated?\n\n\n if (Animator.animated(this.element)) {\n return false;\n } // if box should be hidden but is not closable, bail.\n\n\n if (!show && !this.config.closable) {\n return false;\n } // set new visibility status\n\n\n this.visible = show; // calculate new styling rules\n\n this.setCustomBoxStyling(); // trigger event\n\n this.fireEvent('box.' + (show ? 'show' : 'hide'), [this]); // show or hide box using selected animation\n\n if (this.config.position === 'center') {\n this.overlay.classList.toggle('boxzilla-' + this.id + '-overlay');\n\n if (animate) {\n Animator.toggle(this.overlay, 'fade');\n } else {\n this.overlay.style.display = show ? '' : 'none';\n }\n }\n\n if (animate) {\n Animator.toggle(this.element, this.config.animation, function () {\n if (this.visible) {\n return;\n }\n\n this.contentElement.innerHTML = this.contentElement.innerHTML + '';\n }.bind(this));\n } else {\n this.element.style.display = show ? '' : 'none';\n }\n\n return true;\n}; // show the box\n\n\nBox.prototype.show = function (animate) {\n return this.toggle(true, animate);\n}; // hide the box\n\n\nBox.prototype.hide = function (animate) {\n return this.toggle(false, animate);\n}; // calculate trigger height\n\n\nBox.prototype.calculateTriggerHeight = function () {\n var triggerHeight = 0;\n\n if (this.config.trigger) {\n if (this.config.trigger.method === 'element') {\n var triggerElement = document.body.querySelector(this.config.trigger.value);\n\n if (triggerElement) {\n var offset = triggerElement.getBoundingClientRect();\n triggerHeight = offset.top;\n }\n } else if (this.config.trigger.method === 'percentage') {\n triggerHeight = this.config.trigger.value / 100 * getDocumentHeight();\n }\n }\n\n return triggerHeight;\n};\n\nBox.prototype.fits = function () {\n if (!this.config.screenWidthCondition || !this.config.screenWidthCondition.value) {\n return true;\n }\n\n switch (this.config.screenWidthCondition.condition) {\n case 'larger':\n return window.innerWidth > this.config.screenWidthCondition.value;\n\n case 'smaller':\n return window.innerWidth < this.config.screenWidthCondition.value;\n } // meh.. condition should be \"smaller\" or \"larger\", just return true.\n\n\n return true;\n};\n\nBox.prototype.onResize = function () {\n this.triggerHeight = this.calculateTriggerHeight();\n this.setCustomBoxStyling();\n}; // is this box enabled?\n\n\nBox.prototype.mayAutoShow = function () {\n if (this.dismissed) {\n return false;\n } // check if box fits on given minimum screen width\n\n\n if (!this.fits()) {\n return false;\n } // if trigger empty or error in calculating triggerHeight, return false\n\n\n if (!this.config.trigger) {\n return false;\n } // rely on cookie value (show if not set, don't show if set)\n\n\n return !this.cookieSet;\n};\n\nBox.prototype.mayRehide = function () {\n return this.config.rehide && this.triggered;\n};\n\nBox.prototype.isCookieSet = function () {\n // always show on test mode or when no auto-trigger is configured\n if (this.config.testMode || !this.config.trigger) {\n return false;\n } // if either cookie is null or trigger & dismiss are both falsey, don't bother checking.\n\n\n if (!this.config.cookie || !this.config.cookie.triggered && !this.config.cookie.dismissed) {\n return false;\n }\n\n return document.cookie.replace(new RegExp('(?:(?:^|.*;)\\\\s*' + 'boxzilla_box_' + this.id + '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'), '$1') === 'true';\n}; // set cookie that disables automatically showing the box\n\n\nBox.prototype.setCookie = function (hours) {\n var expiryDate = new Date();\n expiryDate.setHours(expiryDate.getHours() + hours);\n document.cookie = 'boxzilla_box_' + this.id + '=true; expires=' + expiryDate.toUTCString() + '; path=/';\n};\n\nBox.prototype.trigger = function () {\n var shown = this.show();\n\n if (!shown) {\n return;\n }\n\n this.triggered = true;\n\n if (this.config.cookie && this.config.cookie.triggered) {\n this.setCookie(this.config.cookie.triggered);\n }\n};\n/**\n * Dismisses the box and optionally sets a cookie.\n * @param animate\n * @returns {boolean}\n */\n\n\nBox.prototype.dismiss = function (animate) {\n // only dismiss box if it's currently open.\n if (!this.visible) {\n return false;\n } // hide box element\n\n\n this.hide(animate); // set cookie\n\n if (this.config.cookie && this.config.cookie.dismissed) {\n this.setCookie(this.config.cookie.dismissed);\n }\n\n this.dismissed = true;\n this.fireEvent('box.dismiss', [this]);\n return true;\n};\n\nmodule.exports = Box;\n\n},{\"./animator.js\":2}],4:[function(require,module,exports){\n\"use strict\";\n\nvar Box = require('./box.js');\n\nvar throttle = require('./util.js').throttle;\n\nvar styles = require('./styles.js');\n\nvar ExitIntent = require('./triggers/exit-intent.js');\n\nvar Scroll = require('./triggers/scroll.js');\n\nvar Pageviews = require('./triggers/pageviews.js');\n\nvar Time = require('./triggers/time.js');\n\nvar initialised = false;\nvar boxes = [];\nvar listeners = {};\n\nfunction onKeyUp(evt) {\n if (evt.key === 'Escape' || evt.key === 'Esc') {\n dismiss();\n }\n}\n\nfunction recalculateHeights() {\n boxes.forEach(function (box) {\n return box.onResize();\n });\n}\n\nfunction onElementClick(evt) {\n // bubble up to element\n var el = evt.target;\n\n for (var i = 0; i <= 3; i++) {\n if (!el || el.tagName === 'A') {\n break;\n }\n\n el = el.parentElement;\n }\n\n if (!el || el.tagName !== 'A' || !el.href) {\n return;\n }\n\n var match = el.href.match(/[#&]boxzilla-(.+)/i);\n\n if (match && match.length > 1) {\n toggle(match[1]);\n }\n}\n\nfunction trigger(event, args) {\n listeners[event] && listeners[event].forEach(function (f) {\n return f.apply(null, args);\n });\n}\n\nfunction on(event, fn) {\n listeners[event] = listeners[event] || [];\n listeners[event].push(fn);\n}\n\nfunction off(event, fn) {\n listeners[event] && listeners[event].filter(function (f) {\n return f !== fn;\n });\n} // initialise & add event listeners\n\n\nfunction init() {\n if (initialised) {\n return;\n } // insert styles into DOM\n\n\n var styleElement = document.createElement('style');\n styleElement.innerHTML = styles;\n document.head.appendChild(styleElement); // init triggers\n\n ExitIntent(boxes);\n Pageviews(boxes);\n Scroll(boxes);\n Time(boxes);\n document.body.addEventListener('click', onElementClick, true);\n window.addEventListener('resize', throttle(recalculateHeights));\n window.addEventListener('load', recalculateHeights);\n document.addEventListener('keyup', onKeyUp);\n trigger('ready');\n initialised = true; // ensure this function doesn't run again\n}\n\nfunction create(id, opts) {\n // preserve backwards compat for minimumScreenWidth option\n if (typeof opts.minimumScreenWidth !== 'undefined') {\n opts.screenWidthCondition = {\n condition: 'larger',\n value: opts.minimumScreenWidth\n };\n }\n\n id = String(id);\n var box = new Box(id, opts, trigger);\n boxes.push(box);\n return box;\n}\n\nfunction get(id) {\n id = String(id);\n\n for (var i = 0; i < boxes.length; i++) {\n if (boxes[i].id === id) {\n return boxes[i];\n }\n }\n\n throw new Error('No box exists with ID ' + id);\n} // dismiss a single box (or all by omitting id param)\n\n\nfunction dismiss(id, animate) {\n if (id) {\n get(id).dismiss(animate);\n } else {\n boxes.forEach(function (box) {\n return box.dismiss(animate);\n });\n }\n}\n\nfunction hide(id, animate) {\n if (id) {\n get(id).hide(animate);\n } else {\n boxes.forEach(function (box) {\n return box.hide(animate);\n });\n }\n}\n\nfunction show(id, animate) {\n if (id) {\n get(id).show(animate);\n } else {\n boxes.forEach(function (box) {\n return box.show(animate);\n });\n }\n}\n\nfunction toggle(id, animate) {\n if (id) {\n get(id).toggle(animate);\n } else {\n boxes.forEach(function (box) {\n return box.toggle(animate);\n });\n }\n} // expose boxzilla object\n\n\nvar Boxzilla = {\n off: off,\n on: on,\n get: get,\n init: init,\n create: create,\n trigger: trigger,\n show: show,\n hide: hide,\n dismiss: dismiss,\n toggle: toggle,\n boxes: boxes\n};\nwindow.Boxzilla = Boxzilla;\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = Boxzilla;\n}\n\n},{\"./box.js\":3,\"./styles.js\":5,\"./triggers/exit-intent.js\":7,\"./triggers/pageviews.js\":8,\"./triggers/scroll.js\":9,\"./triggers/time.js\":10,\"./util.js\":11}],5:[function(require,module,exports){\n\"use strict\";\n\nvar styles = \"#boxzilla-overlay,.boxzilla-overlay{position:fixed;background:rgba(0,0,0,.65);width:100%;height:100%;left:0;top:0;z-index:10000}.boxzilla-center-container{position:fixed;top:0;left:0;right:0;height:0;text-align:center;z-index:11000;line-height:0}.boxzilla-center-container .boxzilla{display:inline-block;text-align:left;position:relative;line-height:normal}.boxzilla{position:fixed;z-index:12000;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:#fff;padding:25px}.boxzilla.boxzilla-top-left{top:0;left:0}.boxzilla.boxzilla-top-right{top:0;right:0}.boxzilla.boxzilla-bottom-left{bottom:0;left:0}.boxzilla.boxzilla-bottom-right{bottom:0;right:0}.boxzilla-content>:first-child{margin-top:0;padding-top:0}.boxzilla-content>:last-child{margin-bottom:0;padding-bottom:0}.boxzilla-close-icon{position:absolute;right:0;top:0;text-align:center;padding:6px;cursor:pointer;-webkit-appearance:none;font-size:28px;font-weight:700;line-height:20px;color:#000;opacity:.5}.boxzilla-close-icon:focus,.boxzilla-close-icon:hover{opacity:.8}\";\nmodule.exports = styles;\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\n\nvar Timer = function Timer() {\n this.time = 0;\n this.interval = 0;\n};\n\nTimer.prototype.tick = function () {\n this.time++;\n};\n\nTimer.prototype.start = function () {\n if (!this.interval) {\n this.interval = window.setInterval(this.tick.bind(this), 1000);\n }\n};\n\nTimer.prototype.stop = function () {\n if (this.interval) {\n window.clearInterval(this.interval);\n this.interval = 0;\n }\n};\n\nmodule.exports = Timer;\n\n},{}],7:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function (boxes) {\n var timeout = null;\n var touchStart = {};\n\n function trigger() {\n document.documentElement.removeEventListener('mouseleave', onMouseLeave);\n document.documentElement.removeEventListener('mouseenter', onMouseEnter);\n document.documentElement.removeEventListener('click', clearTimeout);\n window.removeEventListener('touchstart', onTouchStart);\n window.removeEventListener('touchend', onTouchEnd); // show boxes with exit intent trigger\n\n boxes.forEach(function (box) {\n if (box.mayAutoShow() && box.config.trigger.method === 'exit_intent') {\n box.trigger();\n }\n });\n }\n\n function clearTimeout() {\n if (timeout === null) {\n return;\n }\n\n window.clearTimeout(timeout);\n timeout = null;\n }\n\n function onMouseEnter() {\n clearTimeout();\n }\n\n function getAddressBarY() {\n if (document.documentMode || /Edge\\//.test(navigator.userAgent)) {\n return 5;\n }\n\n return 0;\n }\n\n function onMouseLeave(evt) {\n clearTimeout(); // did mouse leave at top of window?\n // add small exception space in the top-right corner\n\n if (evt.clientY <= getAddressBarY() && evt.clientX < 0.8 * window.innerWidth) {\n timeout = window.setTimeout(trigger, 600);\n }\n }\n\n function onTouchStart() {\n clearTimeout();\n touchStart = {\n timestamp: performance.now(),\n scrollY: window.scrollY,\n windowHeight: window.innerHeight\n };\n }\n\n function onTouchEnd(evt) {\n clearTimeout(); // did address bar appear?\n\n if (window.innerHeight > touchStart.windowHeight) {\n return;\n } // allow a tiny tiny margin for error, to not fire on clicks\n\n\n if (window.scrollY + 20 > touchStart.scrollY) {\n return;\n }\n\n if (performance.now() - touchStart.timestamp > 300) {\n return;\n }\n\n if (['A', 'INPUT', 'BUTTON'].indexOf(evt.target.tagName) > -1) {\n return;\n }\n\n timeout = window.setTimeout(trigger, 800);\n }\n\n window.addEventListener('touchstart', onTouchStart);\n window.addEventListener('touchend', onTouchEnd);\n document.documentElement.addEventListener('mouseenter', onMouseEnter);\n document.documentElement.addEventListener('mouseleave', onMouseLeave);\n document.documentElement.addEventListener('click', clearTimeout);\n};\n\n},{}],8:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function (boxes) {\n var pageviews;\n\n try {\n pageviews = sessionStorage.getItem('boxzilla_pageviews') || 0;\n sessionStorage.setItem('boxzilla_pageviews', ++pageviews);\n } catch (e) {\n pageviews = 0;\n }\n\n window.setTimeout(function () {\n boxes.forEach(function (box) {\n if (box.config.trigger.method === 'pageviews' && pageviews > box.config.trigger.value && box.mayAutoShow()) {\n box.trigger();\n }\n });\n }, 1000);\n};\n\n},{}],9:[function(require,module,exports){\n\"use strict\";\n\nvar throttle = require('../util.js').throttle;\n\nmodule.exports = function (boxes) {\n // check triggerHeight criteria for all boxes\n function checkHeightCriteria() {\n var scrollY = window.hasOwnProperty('pageYOffset') ? window.pageYOffset : window.scrollTop;\n scrollY = scrollY + window.innerHeight * 0.9;\n boxes.forEach(function (box) {\n if (!box.mayAutoShow() || box.triggerHeight <= 0) {\n return;\n }\n\n if (scrollY > box.triggerHeight) {\n box.trigger();\n } else if (box.mayRehide() && scrollY < box.triggerHeight - 5) {\n // if box may auto-hide and scrollY is less than triggerHeight (with small margin of error), hide box\n box.hide();\n }\n });\n }\n\n window.addEventListener('touchstart', throttle(checkHeightCriteria), true);\n window.addEventListener('scroll', throttle(checkHeightCriteria), true);\n};\n\n},{\"../util.js\":11}],10:[function(require,module,exports){\n\"use strict\";\n\nvar Timer = require('../timer.js');\n\nmodule.exports = function (boxes) {\n var siteTimer = new Timer();\n var pageTimer = new Timer();\n var timers = {\n start: function start() {\n try {\n var sessionTime = parseInt(sessionStorage.getItem('boxzilla_timer'));\n\n if (sessionTime) {\n siteTimer.time = sessionTime;\n }\n } catch (e) {}\n\n siteTimer.start();\n pageTimer.start();\n },\n stop: function stop() {\n sessionStorage.setItem('boxzilla_timer', siteTimer.time);\n siteTimer.stop();\n pageTimer.stop();\n }\n }; // start timers\n\n timers.start(); // stop timers when leaving page or switching to other tab\n\n document.addEventListener('visibilitychange', function () {\n document.hidden ? timers.stop() : timers.start();\n });\n window.addEventListener('beforeunload', function () {\n timers.stop();\n });\n window.setInterval(function () {\n boxes.forEach(function (box) {\n if (box.config.trigger.method === 'time_on_site' && siteTimer.time > box.config.trigger.value && box.mayAutoShow()) {\n box.trigger();\n } else if (box.config.trigger.method === 'time_on_page' && pageTimer.time > box.config.trigger.value && box.mayAutoShow()) {\n box.trigger();\n }\n });\n }, 1000);\n};\n\n},{\"../timer.js\":6}],11:[function(require,module,exports){\n\"use strict\";\n\nfunction throttle(fn, threshold, scope) {\n threshold || (threshold = 800);\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\nmodule.exports = {\n throttle: throttle\n};\n\n},{}]},{},[1]);\n; })();"]}