{"version":3,"file":"index.js","mappings":"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","sources":["webpack://strauss-brands/webpack/bootstrap","webpack://strauss-brands/webpack/runtime/compat get default export","webpack://strauss-brands/webpack/runtime/define property getters","webpack://strauss-brands/webpack/runtime/hasOwnProperty shorthand","webpack://strauss-brands/external var \"jQuery\"","webpack://strauss-brands/./node_modules/foundation-sites/js/foundation.core.utils.js","webpack://strauss-brands/./node_modules/foundation-sites/js/foundation.util.mediaQuery.js","webpack://strauss-brands/./node_modules/foundation-sites/js/foundation.core.js","webpack://strauss-brands/./node_modules/foundation-sites/js/foundation.core.plugin.js","webpack://strauss-brands/./node_modules/foundation-sites/js/foundation.util.keyboard.js","webpack://strauss-brands/./node_modules/foundation-sites/js/foundation.util.motion.js","webpack://strauss-brands/./node_modules/foundation-sites/js/foundation.util.triggers.js","webpack://strauss-brands/./node_modules/foundation-sites/js/foundation.util.touch.js","webpack://strauss-brands/./node_modules/foundation-sites/js/foundation.reveal.js","webpack://strauss-brands/./src/foundation.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var __WEBPACK_NAMESPACE_OBJECT__ = jQuery;","import $ from 'jquery';\n\n// Core Foundation Utilities, utilized in a number of places.\n\n /**\n * Returns a boolean for RTL support\n */\nfunction rtl() {\n return $('html').attr('dir') === 'rtl';\n}\n\n/**\n * returns a random base-36 uid with namespacing\n * @function\n * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.\n * @param {String} namespace - name of plugin to be incorporated in uid, optional.\n * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.\n * @returns {String} - unique id\n */\nfunction GetYoDigits(length = 6, namespace){\n let str = '';\n const chars = '0123456789abcdefghijklmnopqrstuvwxyz';\n const charsLength = chars.length;\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * charsLength)];\n }\n return namespace ? `${str}-${namespace}` : str;\n}\n\n/**\n * Escape a string so it can be used as a regexp pattern\n * @function\n * @see https://stackoverflow.com/a/9310752/4317384\n *\n * @param {String} str - string to escape.\n * @returns {String} - escaped string\n */\nfunction RegExpEscape(str){\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nfunction transitionend($elem){\n var transitions = {\n 'transition': 'transitionend',\n 'WebkitTransition': 'webkitTransitionEnd',\n 'MozTransition': 'transitionend',\n 'OTransition': 'otransitionend'\n };\n var elem = document.createElement('div'),\n end;\n\n for (let transition in transitions){\n if (typeof elem.style[transition] !== 'undefined'){\n end = transitions[transition];\n }\n }\n if (end) {\n return end;\n } else {\n setTimeout(function(){\n $elem.triggerHandler('transitionend', [$elem]);\n }, 1);\n return 'transitionend';\n }\n}\n\n/**\n * Return an event type to listen for window load.\n *\n * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.\n * If `handler` is passed, attach it to the event on `$elem`.\n * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.\n * @function\n *\n * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.\n * @param {Function} [] handler - function to attach to the event.\n * @returns {String} - event type that should or will be triggered.\n */\nfunction onLoad($elem, handler) {\n const didLoad = document.readyState === 'complete';\n const eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';\n const cb = () => $elem.triggerHandler(eventType);\n\n if ($elem) {\n if (handler) $elem.one(eventType, handler);\n\n if (didLoad)\n setTimeout(cb);\n else\n $(window).one('load', cb);\n }\n\n return eventType;\n}\n\n/**\n * Retuns an handler for the `mouseleave` that ignore disappeared mouses.\n *\n * If the mouse \"disappeared\" from the document (like when going on a browser UI element, See https://git.io/zf-11410),\n * the event is ignored.\n * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window\n * (like by switching to an other window with [Alt]+[Tab]).\n * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document\n * outside of the element it left.\n *\n * @function\n *\n * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.\n * @param {Object} [] options - object of options:\n * - {Boolean} [false] ignoreLeaveWindow - also ignore when the user switched windows.\n * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.\n * @returns {Function} - filtered handler to use to listen on the `mouseleave` event.\n */\nfunction ignoreMousedisappear(handler, { ignoreLeaveWindow = false, ignoreReappear = false } = {}) {\n return function leaveEventHandler(eLeave, ...rest) {\n const callback = handler.bind(this, eLeave, ...rest);\n\n // The mouse left: call the given callback if the mouse entered elsewhere\n if (eLeave.relatedTarget !== null) {\n return callback();\n }\n\n // Otherwise, check if the mouse actually left the window.\n // In firefox if the user switched between windows, the window sill have the focus by the time\n // the event is triggered. We have to debounce the event to test this case.\n setTimeout(function leaveEventDebouncer() {\n if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {\n return callback();\n }\n\n // Otherwise, wait for the mouse to reeapear outside of the element,\n if (!ignoreReappear) {\n $(document).one('mouseenter', function reenterEventHandler(eReenter) {\n if (!$(eLeave.currentTarget).has(eReenter.target).length) {\n // Fill where the mouse finally entered.\n eLeave.relatedTarget = eReenter.target;\n callback();\n }\n });\n }\n\n }, 0);\n };\n}\n\n\nexport { rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear };\n","import $ from 'jquery';\n\n// Default set of media queries\nconst defaultQueries = {\n 'default' : 'only screen',\n landscape : 'only screen and (orientation: landscape)',\n portrait : 'only screen and (orientation: portrait)',\n retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +\n 'only screen and (min--moz-device-pixel-ratio: 2),' +\n 'only screen and (-o-min-device-pixel-ratio: 2/1),' +\n 'only screen and (min-device-pixel-ratio: 2),' +\n 'only screen and (min-resolution: 192dpi),' +\n 'only screen and (min-resolution: 2dppx)'\n };\n\n\n// matchMedia() polyfill - Test a CSS media type/query in JS.\n// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license\n/* eslint-disable */\nwindow.matchMedia || (window.matchMedia = (function () {\n \"use strict\";\n\n // For browsers that support matchMedium api such as IE 9 and webkit\n var styleMedia = (window.styleMedia || window.media);\n\n // For those that don't support matchMedium\n if (!styleMedia) {\n var style = document.createElement('style'),\n script = document.getElementsByTagName('script')[0],\n info = null;\n\n style.type = 'text/css';\n style.id = 'matchmediajs-test';\n\n if (!script) {\n document.head.appendChild(style);\n } else {\n script.parentNode.insertBefore(style, script);\n }\n\n // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers\n info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;\n\n styleMedia = {\n matchMedium: function (media) {\n var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\n\n // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers\n if (style.styleSheet) {\n style.styleSheet.cssText = text;\n } else {\n style.textContent = text;\n }\n\n // Test if media query is true or false\n return info.width === '1px';\n }\n };\n }\n\n return function(media) {\n return {\n matches: styleMedia.matchMedium(media || 'all'),\n media: media || 'all'\n };\n };\n})());\n/* eslint-enable */\n\nvar MediaQuery = {\n queries: [],\n\n current: '',\n\n /**\n * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.\n * @function\n * @private\n */\n _init() {\n\n // make sure the initialization is only done once when calling _init() several times\n if (this.isInitialized === true) {\n return;\n } else {\n this.isInitialized = true;\n }\n\n var self = this;\n var $meta = $('meta.foundation-mq');\n if(!$meta.length){\n $('').appendTo(document.head);\n }\n\n var extractedStyles = $('.foundation-mq').css('font-family');\n var namedQueries;\n\n namedQueries = parseStyleToObject(extractedStyles);\n\n self.queries = []; // reset\n\n for (var key in namedQueries) {\n if(namedQueries.hasOwnProperty(key)) {\n self.queries.push({\n name: key,\n value: `only screen and (min-width: ${namedQueries[key]})`\n });\n }\n }\n\n this.current = this._getCurrentSize();\n\n this._watcher();\n },\n\n /**\n * Reinitializes the media query helper.\n * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n * @function\n * @private\n */\n _reInit() {\n this.isInitialized = false;\n this._init();\n },\n\n /**\n * Checks if the screen is at least as wide as a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n */\n atLeast(size) {\n var query = this.get(size);\n\n if (query) {\n return window.matchMedia(query).matches;\n }\n\n return false;\n },\n\n /**\n * Checks if the screen is within the given breakpoint.\n * If smaller than the breakpoint of larger than its upper limit it returns false.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n */\n only(size) {\n return size === this._getCurrentSize();\n },\n\n /**\n * Checks if the screen is within a breakpoint or smaller.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n */\n upTo(size) {\n const nextSize = this.next(size);\n\n // If the next breakpoint does not match, the screen is smaller than\n // the upper limit of this breakpoint.\n if (nextSize) {\n return !this.atLeast(nextSize);\n }\n\n // If there is no next breakpoint, the \"size\" breakpoint does not have\n // an upper limit and the screen will always be within it or smaller.\n return true;\n },\n\n /**\n * Checks if the screen matches to a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n */\n is(size) {\n const parts = size.trim().split(' ').filter(p => !!p.length);\n const [bpSize, bpModifier = ''] = parts;\n\n // Only the breakpont\n if (bpModifier === 'only') {\n return this.only(bpSize);\n }\n // At least the breakpoint (included)\n if (!bpModifier || bpModifier === 'up') {\n return this.atLeast(bpSize);\n }\n // Up to the breakpoint (included)\n if (bpModifier === 'down') {\n return this.upTo(bpSize);\n }\n\n throw new Error(`\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like \" \", got \"${size}\".\n `);\n },\n\n /**\n * Gets the media query of a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to get.\n * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n */\n get(size) {\n for (var i in this.queries) {\n if(this.queries.hasOwnProperty(i)) {\n var query = this.queries[i];\n if (size === query.name) return query.value;\n }\n }\n\n return null;\n },\n\n /**\n * Get the breakpoint following the given breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint.\n * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n */\n next(size) {\n const queryIndex = this.queries.findIndex((q) => this._getQueryName(q) === size);\n if (queryIndex === -1) {\n throw new Error(`\n Unknown breakpoint \"${size}\" passed to MediaQuery.next().\n Ensure it is present in your Sass \"$breakpoints\" setting.\n `);\n }\n\n const nextQuery = this.queries[queryIndex + 1];\n return nextQuery ? nextQuery.name : null;\n },\n\n /**\n * Returns the name of the breakpoint related to the given value.\n * @function\n * @private\n * @param {String|Object} value - Breakpoint name or query object.\n * @returns {String} Name of the breakpoint.\n */\n _getQueryName(value) {\n if (typeof value === 'string')\n return value;\n if (typeof value === 'object')\n return value.name;\n throw new TypeError(`\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"${value}\" (${typeof value})\n `);\n },\n\n /**\n * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n * @function\n * @private\n * @returns {String} Name of the current breakpoint.\n */\n _getCurrentSize() {\n var matched;\n\n for (var i = 0; i < this.queries.length; i++) {\n var query = this.queries[i];\n\n if (window.matchMedia(query.value).matches) {\n matched = query;\n }\n }\n\n return matched && this._getQueryName(matched);\n },\n\n /**\n * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.\n * @function\n * @private\n */\n _watcher() {\n $(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', () => {\n var newSize = this._getCurrentSize(), currentSize = this.current;\n\n if (newSize !== currentSize) {\n // Change the current media query\n this.current = newSize;\n\n // Broadcast the media query change on the window\n $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);\n }\n });\n }\n};\n\n\n\n// Thank you: https://github.com/sindresorhus/query-string\nfunction parseStyleToObject(str) {\n var styleObject = {};\n\n if (typeof str !== 'string') {\n return styleObject;\n }\n\n str = str.trim().slice(1, -1); // browsers re-quote string style values\n\n if (!str) {\n return styleObject;\n }\n\n styleObject = str.split('&').reduce(function(ret, param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = parts[0];\n var val = parts[1];\n key = decodeURIComponent(key);\n\n // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n val = typeof val === 'undefined' ? null : decodeURIComponent(val);\n\n if (!ret.hasOwnProperty(key)) {\n ret[key] = val;\n } else if (Array.isArray(ret[key])) {\n ret[key].push(val);\n } else {\n ret[key] = [ret[key], val];\n }\n return ret;\n }, {});\n\n return styleObject;\n}\n\nexport {MediaQuery};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nvar FOUNDATION_VERSION = '6.7.2';\n\n// Global Foundation object\n// This is attached to the window, or used as a module for AMD/Browserify\nvar Foundation = {\n version: FOUNDATION_VERSION,\n\n /**\n * Stores initialized plugins.\n */\n _plugins: {},\n\n /**\n * Stores generated unique ids for plugin instances\n */\n _uuids: [],\n\n /**\n * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.\n * @param {Object} plugin - The constructor of the plugin.\n */\n plugin: function(plugin, name) {\n // Object key to use when adding to global Foundation object\n // Examples: Foundation.Reveal, Foundation.OffCanvas\n var className = (name || functionName(plugin));\n // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin\n // Examples: data-reveal, data-off-canvas\n var attrName = hyphenate(className);\n\n // Add to the Foundation object and the plugins list (for reflowing)\n this._plugins[attrName] = this[className] = plugin;\n },\n /**\n * @function\n * Populates the _uuids array with pointers to each individual plugin instance.\n * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.\n * Also fires the initialization event for each plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @param {String} name - the name of the plugin, passed as a camelCased string.\n * @fires Plugin#init\n */\n registerPlugin: function(plugin, name){\n var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();\n plugin.uuid = GetYoDigits(6, pluginName);\n\n if(!plugin.$element.attr(`data-${pluginName}`)){ plugin.$element.attr(`data-${pluginName}`, plugin.uuid); }\n if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n plugin.$element.trigger(`init.zf.${pluginName}`);\n\n this._uuids.push(plugin.uuid);\n\n return;\n },\n /**\n * @function\n * Removes the plugins uuid from the _uuids array.\n * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.\n * Also fires the destroyed event for the plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @fires Plugin#destroyed\n */\n unregisterPlugin: function(plugin){\n var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));\n\n this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);\n plugin.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in plugin){\n plugin[prop] = null;//clean up script to prep for garbage collection.\n }\n return;\n },\n\n /**\n * @function\n * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.\n * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`\n * @default If no argument is passed, reflow all currently active plugins.\n */\n reInit: function(plugins){\n var isJQ = plugins instanceof $;\n try{\n if(isJQ){\n plugins.each(function(){\n $(this).data('zfPlugin')._init();\n });\n }else{\n var type = typeof plugins,\n _this = this,\n fns = {\n 'object': function(plgs){\n plgs.forEach(function(p){\n p = hyphenate(p);\n $('[data-'+ p +']').foundation('_init');\n });\n },\n 'string': function(){\n plugins = hyphenate(plugins);\n $('[data-'+ plugins +']').foundation('_init');\n },\n 'undefined': function(){\n this['object'](Object.keys(_this._plugins));\n }\n };\n fns[type](plugins);\n }\n }catch(err){\n console.error(err);\n }finally{\n return plugins;\n }\n },\n\n /**\n * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.\n * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.\n * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.\n */\n reflow: function(elem, plugins) {\n\n // If plugins is undefined, just grab everything\n if (typeof plugins === 'undefined') {\n plugins = Object.keys(this._plugins);\n }\n // If plugins is a string, convert it to an array with one item\n else if (typeof plugins === 'string') {\n plugins = [plugins];\n }\n\n var _this = this;\n\n // Iterate through each plugin\n $.each(plugins, function(i, name) {\n // Get the current plugin\n var plugin = _this._plugins[name];\n\n // Localize the search to all elements inside elem, as well as elem itself, unless elem === document\n var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']').filter(function () {\n return typeof $(this).data(\"zfPlugin\") === 'undefined';\n });\n\n // For each plugin found, initialize it\n $elem.each(function() {\n var $el = $(this),\n opts = { reflow: true };\n\n if($el.attr('data-options')){\n $el.attr('data-options').split(';').forEach(function(option, _index){\n var opt = option.split(':').map(function(el){ return el.trim(); });\n if(opt[0]) opts[opt[0]] = parseValue(opt[1]);\n });\n }\n try{\n $el.data('zfPlugin', new plugin($(this), opts));\n }catch(er){\n console.error(er);\n }finally{\n return;\n }\n });\n });\n },\n getFnName: functionName,\n\n addToJquery: function($) {\n // TODO: consider not making this a jQuery function\n // TODO: need way to reflow vs. re-initialize\n /**\n * The Foundation jQuery method.\n * @param {String|Array} method - An action to perform on the current jQuery object.\n */\n var foundation = function(method) {\n var type = typeof method,\n $noJS = $('.no-js');\n\n if($noJS.length){\n $noJS.removeClass('no-js');\n }\n\n if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin.\n MediaQuery._init();\n Foundation.reflow(this);\n }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins\n var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary\n var plugClass = this.data('zfPlugin');//determine the class of plugin\n\n if(typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined'){//make sure both the class and method exist\n if(this.length === 1){//if there's only one, call it directly.\n plugClass[method].apply(plugClass, args);\n }else{\n this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each\n plugClass[method].apply($(el).data('zfPlugin'), args);\n });\n }\n }else{//error for no class or no method\n throw new ReferenceError(\"We're sorry, '\" + method + \"' is not an available method for \" + (plugClass ? functionName(plugClass) : 'this element') + '.');\n }\n }else{//error for invalid argument type\n throw new TypeError(`We're sorry, ${type} is not a valid parameter. You must use a string representing the method you wish to invoke.`);\n }\n return this;\n };\n $.fn.foundation = foundation;\n return $;\n }\n};\n\nFoundation.util = {\n /**\n * Function for applying a debounce effect to a function call.\n * @function\n * @param {Function} func - Function to be called at end of timeout.\n * @param {Number} delay - Time in ms to delay the call of `func`.\n * @returns function\n */\n throttle: function (func, delay) {\n var timer = null;\n\n return function () {\n var context = this, args = arguments;\n\n if (timer === null) {\n timer = setTimeout(function () {\n func.apply(context, args);\n timer = null;\n }, delay);\n }\n };\n }\n};\n\nwindow.Foundation = Foundation;\n\n// Polyfill for requestAnimationFrame\n(function() {\n if (!Date.now || !window.Date.now)\n window.Date.now = Date.now = function() { return new Date().getTime(); };\n\n var vendors = ['webkit', 'moz'];\n for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];\n window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']\n || window[vp+'CancelRequestAnimationFrame']);\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)\n || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function(callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function() { callback(lastTime = nextTime); },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n }\n /**\n * Polyfill for performance.now, required by rAF\n */\n if(!window.performance || !window.performance.now){\n window.performance = {\n start: Date.now(),\n now: function(){ return Date.now() - this.start; }\n };\n }\n})();\nif (!Function.prototype.bind) {\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n // native functions don't have a prototype\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n// Polyfill to get the name of a function in IE9\nfunction functionName(fn) {\n if (typeof Function.prototype.name === 'undefined') {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = (funcNameRegex).exec((fn).toString());\n return (results && results.length > 1) ? results[1].trim() : \"\";\n }\n else if (typeof fn.prototype === 'undefined') {\n return fn.constructor.name;\n }\n else {\n return fn.prototype.constructor.name;\n }\n}\nfunction parseValue(str){\n if ('true' === str) return true;\n else if ('false' === str) return false;\n else if (!isNaN(str * 1)) return parseFloat(str);\n return str;\n}\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport {Foundation};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\n\n// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST\n// {function} _setup (replaces previous constructor),\n// {function} _destroy (replaces previous destroy)\nclass Plugin {\n\n constructor(element, options) {\n this._setup(element, options);\n var pluginName = getPluginName(this);\n this.uuid = GetYoDigits(6, pluginName);\n\n if(!this.$element.attr(`data-${pluginName}`)){ this.$element.attr(`data-${pluginName}`, this.uuid); }\n if(!this.$element.data('zfPlugin')){ this.$element.data('zfPlugin', this); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n this.$element.trigger(`init.zf.${pluginName}`);\n }\n\n destroy() {\n this._destroy();\n var pluginName = getPluginName(this);\n this.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in this){\n this[prop] = null;//clean up script to prep for garbage collection.\n }\n }\n}\n\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction getPluginName(obj) {\n return hyphenate(obj.className);\n}\n\nexport {Plugin};\n","/*******************************************\n * *\n * This util was created by Marius Olbertz *\n * Please thank Marius on GitHub /owlbertz *\n * or the web http://www.mariusolbertz.de/ *\n * *\n ******************************************/\n\nimport $ from 'jquery';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst keyCodes = {\n 9: 'TAB',\n 13: 'ENTER',\n 27: 'ESCAPE',\n 32: 'SPACE',\n 35: 'END',\n 36: 'HOME',\n 37: 'ARROW_LEFT',\n 38: 'ARROW_UP',\n 39: 'ARROW_RIGHT',\n 40: 'ARROW_DOWN'\n}\n\nvar commands = {}\n\n// Functions pulled out to be referenceable from internals\nfunction findFocusable($element) {\n if(!$element) {return false; }\n return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() {\n if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0\n return true;\n })\n .sort( function( a, b ) {\n if ($(a).attr('tabindex') == $(b).attr('tabindex')) {\n return 0;\n }\n let aTabIndex = parseInt($(a).attr('tabindex')),\n bTabIndex = parseInt($(b).attr('tabindex'));\n // Undefined is treated the same as 0\n if (typeof $(a).attr('tabindex') == 'undefined' && bTabIndex > 0) {\n return 1;\n }\n if (typeof $(b).attr('tabindex') == 'undefined' && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex == 0 && bTabIndex > 0) {\n return 1;\n }\n if (bTabIndex == 0 && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex < bTabIndex) {\n return -1;\n }\n if (aTabIndex > bTabIndex) {\n return 1;\n }\n });\n}\n\nfunction parseKey(event) {\n var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();\n\n // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\n key = key.replace(/\\W+/, '');\n\n if (event.shiftKey) key = `SHIFT_${key}`;\n if (event.ctrlKey) key = `CTRL_${key}`;\n if (event.altKey) key = `ALT_${key}`;\n\n // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\n key = key.replace(/_$/, '');\n\n return key;\n}\n\nvar Keyboard = {\n keys: getKeyCodes(keyCodes),\n\n /**\n * Parses the (keyboard) event and returns a String that represents its key\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n * @param {Event} event - the event generated by the event handler\n * @return String key - String that represents the key pressed\n */\n parseKey: parseKey,\n\n /**\n * Handles the given (keyboard) event\n * @param {Event} event - the event generated by the event handler\n * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n * @param {Objects} functions - collection of functions that are to be executed\n */\n handleKey(event, component, functions) {\n var commandList = commands[component],\n keyCode = this.parseKey(event),\n cmds,\n command,\n fn;\n\n if (!commandList) return console.warn('Component not defined!');\n\n // Ignore the event if it was already handled\n if (event.zfIsKeyHandled === true) return;\n\n // This component does not differentiate between ltr and rtl\n if (typeof commandList.ltr === 'undefined') {\n cmds = commandList; // use plain list\n } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\n if (Rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);\n\n else cmds = $.extend({}, commandList.rtl, commandList.ltr);\n }\n command = cmds[keyCode];\n\n fn = functions[command];\n // Execute the handler if found\n if (fn && typeof fn === 'function') {\n var returnValue = fn.apply();\n\n // Mark the event as \"handled\" to prevent future handlings\n event.zfIsKeyHandled = true;\n\n // Execute function when event was handled\n if (functions.handled || typeof functions.handled === 'function') {\n functions.handled(returnValue);\n }\n } else {\n // Execute function when event was not handled\n if (functions.unhandled || typeof functions.unhandled === 'function') {\n functions.unhandled();\n }\n }\n },\n\n /**\n * Finds all focusable elements within the given `$element`\n * @param {jQuery} $element - jQuery object to search within\n * @return {jQuery} $focusable - all focusable elements within `$element`\n */\n\n findFocusable: findFocusable,\n\n /**\n * Returns the component name name\n * @param {Object} component - Foundation component, e.g. Slider or Reveal\n * @return String componentName\n */\n\n register(componentName, cmds) {\n commands[componentName] = cmds;\n },\n\n\n // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n //\n /**\n * Traps the focus in the given element.\n * @param {jQuery} $element jQuery object to trap the foucs into.\n */\n trapFocus($element) {\n var $focusable = findFocusable($element),\n $firstFocusable = $focusable.eq(0),\n $lastFocusable = $focusable.eq(-1);\n\n $element.on('keydown.zf.trapfocus', function(event) {\n if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {\n event.preventDefault();\n $firstFocusable.focus();\n }\n else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n event.preventDefault();\n $lastFocusable.focus();\n }\n });\n },\n /**\n * Releases the trapped focus from the given element.\n * @param {jQuery} $element jQuery object to release the focus for.\n */\n releaseFocus($element) {\n $element.off('keydown.zf.trapfocus');\n }\n}\n\n/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */\nfunction getKeyCodes(kcs) {\n var k = {};\n for (var kc in kcs) k[kcs[kc]] = kcs[kc];\n return k;\n}\n\nexport {Keyboard};\n","import $ from 'jquery';\nimport { transitionend } from './foundation.core.utils';\n\n/**\n * Motion module.\n * @module foundation.motion\n */\n\nconst initClasses = ['mui-enter', 'mui-leave'];\nconst activeClasses = ['mui-enter-active', 'mui-leave-active'];\n\nconst Motion = {\n animateIn: function(element, animation, cb) {\n animate(true, element, animation, cb);\n },\n\n animateOut: function(element, animation, cb) {\n animate(false, element, animation, cb);\n }\n}\n\nfunction Move(duration, elem, fn){\n var anim, prog, start = null;\n // console.log('called');\n\n if (duration === 0) {\n fn.apply(elem);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n return;\n }\n\n function move(ts){\n if(!start) start = ts;\n // console.log(start, ts);\n prog = ts - start;\n fn.apply(elem);\n\n if(prog < duration){ anim = window.requestAnimationFrame(move, elem); }\n else{\n window.cancelAnimationFrame(anim);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n }\n }\n anim = window.requestAnimationFrame(move);\n}\n\n/**\n * Animates an element in or out using a CSS transition class.\n * @function\n * @private\n * @param {Boolean} isIn - Defines if the animation is in or out.\n * @param {Object} element - jQuery or HTML object to animate.\n * @param {String} animation - CSS class to use.\n * @param {Function} cb - Callback to run when animation is finished.\n */\nfunction animate(isIn, element, animation, cb) {\n element = $(element).eq(0);\n\n if (!element.length) return;\n\n var initClass = isIn ? initClasses[0] : initClasses[1];\n var activeClass = isIn ? activeClasses[0] : activeClasses[1];\n\n // Set up the animation\n reset();\n\n element\n .addClass(animation)\n .css('transition', 'none');\n\n requestAnimationFrame(() => {\n element.addClass(initClass);\n if (isIn) element.show();\n });\n\n // Start the animation\n requestAnimationFrame(() => {\n // will trigger the browser to synchronously calculate the style and layout\n // also called reflow or layout thrashing\n // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n element[0].offsetWidth;\n element\n .css('transition', '')\n .addClass(activeClass);\n });\n\n // Clean up the animation when it finishes\n element.one(transitionend(element), finish);\n\n // Hides the element (for out animations), resets the element, and runs a callback\n function finish() {\n if (!isIn) element.hide();\n reset();\n if (cb) cb.apply(element);\n }\n\n // Resets transitions and removes motion-specific classes\n function reset() {\n element[0].style.transitionDuration = 0;\n element.removeClass(`${initClass} ${activeClass} ${animation}`);\n }\n}\n\nexport { Move, Motion };\n\n","import $ from 'jquery';\nimport { onLoad } from './foundation.core.utils';\nimport { Motion } from './foundation.util.motion';\n\nconst MutationObserver = (function () {\n var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];\n for (var i=0; i < prefixes.length; i++) {\n if (`${prefixes[i]}MutationObserver` in window) {\n return window[`${prefixes[i]}MutationObserver`];\n }\n }\n return false;\n}());\n\nconst triggers = (el, type) => {\n el.data(type).split(' ').forEach(id => {\n $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]);\n });\n};\n\nvar Triggers = {\n Listeners: {\n Basic: {},\n Global: {}\n },\n Initializers: {}\n}\n\nTriggers.Listeners.Basic = {\n openListener: function() {\n triggers($(this), 'open');\n },\n closeListener: function() {\n let id = $(this).data('close');\n if (id) {\n triggers($(this), 'close');\n }\n else {\n $(this).trigger('close.zf.trigger');\n }\n },\n toggleListener: function() {\n let id = $(this).data('toggle');\n if (id) {\n triggers($(this), 'toggle');\n } else {\n $(this).trigger('toggle.zf.trigger');\n }\n },\n closeableListener: function(e) {\n let animation = $(this).data('closable');\n\n // Only close the first closable element. See https://git.io/zf-7833\n e.stopPropagation();\n\n if(animation !== ''){\n Motion.animateOut($(this), animation, function() {\n $(this).trigger('closed.zf');\n });\n }else{\n $(this).fadeOut().trigger('closed.zf');\n }\n },\n toggleFocusListener: function() {\n let id = $(this).data('toggle-focus');\n $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]);\n }\n};\n\n// Elements with [data-open] will reveal a plugin that supports it when clicked.\nTriggers.Initializers.addOpenListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);\n $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);\n}\n\n// Elements with [data-close] will close a plugin that supports it when clicked.\n// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.\nTriggers.Initializers.addCloseListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);\n $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);\n}\n\n// Elements with [data-toggle] will toggle a plugin that supports it when clicked.\nTriggers.Initializers.addToggleListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);\n $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);\n}\n\n// Elements with [data-closable] will respond to close.zf.trigger events.\nTriggers.Initializers.addCloseableListener = ($elem) => {\n $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);\n $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);\n}\n\n// Elements with [data-toggle-focus] will respond to coming in and out of focus\nTriggers.Initializers.addToggleFocusListener = ($elem) => {\n $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);\n $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);\n}\n\n\n\n// More Global/complex listeners and triggers\nTriggers.Listeners.Global = {\n resizeListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('resizeme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a resize event\n $nodes.attr('data-events', \"resize\");\n },\n scrollListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('scrollme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a scroll event\n $nodes.attr('data-events', \"scroll\");\n },\n closeMeListener: function(e, pluginId){\n let plugin = e.namespace.split('.')[0];\n let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box=\"${pluginId}\"]`);\n\n plugins.each(function(){\n let _this = $(this);\n _this.triggerHandler('close.zf.trigger', [_this]);\n });\n }\n}\n\n// Global, parses whole document.\nTriggers.Initializers.addClosemeListener = function(pluginName) {\n var yetiBoxes = $('[data-yeti-box]'),\n plugNames = ['dropdown', 'tooltip', 'reveal'];\n\n if(pluginName){\n if(typeof pluginName === 'string'){\n plugNames.push(pluginName);\n }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){\n plugNames = plugNames.concat(pluginName);\n }else{\n console.error('Plugin names must be strings');\n }\n }\n if(yetiBoxes.length){\n let listeners = plugNames.map((name) => {\n return `closeme.zf.${name}`;\n }).join(' ');\n\n $(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n }\n}\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n let timer, args = Array.prototype.slice.call(arguments, 3);\n $(window).off(trigger).on(trigger, function(e) {\n if (timer) { clearTimeout(timer); }\n timer = setTimeout(function(){\n listener.apply(null, args);\n }, debounce || 10);//default time to emit scroll event\n });\n}\n\nTriggers.Initializers.addResizeListener = function(debounce){\n let $nodes = $('[data-resize]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);\n }\n}\n\nTriggers.Initializers.addScrollListener = function(debounce){\n let $nodes = $('[data-scroll]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);\n }\n}\n\nTriggers.Initializers.addMutationEventsListener = function($elem) {\n if(!MutationObserver){ return false; }\n let $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n //element callback\n var listeningElementsMutation = function (mutationRecordsList) {\n var $target = $(mutationRecordsList[0].target);\n\n //trigger the event handler for the element depending on type\n switch (mutationRecordsList[0].type) {\n case \"attributes\":\n if ($target.attr(\"data-events\") === \"scroll\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);\n }\n if ($target.attr(\"data-events\") === \"resize\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('resizeme.zf.trigger', [$target]);\n }\n if (mutationRecordsList[0].attributeName === \"style\") {\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n }\n break;\n\n case \"childList\":\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n break;\n\n default:\n return false;\n //nothing\n }\n };\n\n if ($nodes.length) {\n //for each element that needs to listen for resizing, scrolling, or mutation add a single observer\n for (var i = 0; i <= $nodes.length - 1; i++) {\n var elementObserver = new MutationObserver(listeningElementsMutation);\n elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: [\"data-events\", \"style\"] });\n }\n }\n}\n\nTriggers.Initializers.addSimpleListeners = function() {\n let $document = $(document);\n\n Triggers.Initializers.addOpenListener($document);\n Triggers.Initializers.addCloseListener($document);\n Triggers.Initializers.addToggleListener($document);\n Triggers.Initializers.addCloseableListener($document);\n Triggers.Initializers.addToggleFocusListener($document);\n\n}\n\nTriggers.Initializers.addGlobalListeners = function() {\n let $document = $(document);\n Triggers.Initializers.addMutationEventsListener($document);\n Triggers.Initializers.addResizeListener();\n Triggers.Initializers.addScrollListener();\n Triggers.Initializers.addClosemeListener();\n}\n\n\nTriggers.init = function ($, Foundation) {\n onLoad($(window), function () {\n if ($.triggersInitialized !== true) {\n Triggers.Initializers.addSimpleListeners();\n Triggers.Initializers.addGlobalListeners();\n $.triggersInitialized = true;\n }\n });\n\n if(Foundation) {\n Foundation.Triggers = Triggers;\n // Legacy included to be backwards compatible for now.\n Foundation.IHearYou = Triggers.Initializers.addGlobalListeners\n }\n}\n\nexport {Triggers};\n","//**************************************************\n//**Work inspired by multiple jquery swipe plugins**\n//**Done by Yohai Ararat ***************************\n//**************************************************\n\nimport $ from 'jquery';\n\nvar Touch = {};\n\nvar startPosX,\n startPosY,\n startTime,\n elapsedTime,\n startEvent,\n isMoving = false,\n didMoved = false;\n\nfunction onTouchEnd(e) {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n\n // If the touch did not move, consider it as a \"tap\"\n if (!didMoved) {\n var tapEvent = $.Event('tap', startEvent || e);\n $(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if (true === $.spotSwipe.preventDefault) { e.preventDefault(); }\n\n if(isMoving) {\n var x = e.touches[0].pageX;\n // var y = e.touches[0].pageY;\n var dx = startPosX - x;\n // var dy = startPosY - y;\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n // dir = dy > 0 ? 'down' : 'up';\n // }\n if(dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n $(this)\n .trigger($.Event('swipe', Object.assign({}, e)), dir)\n .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n }\n }\n\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length === 1) {\n startPosX = e.touches[0].pageX;\n startPosY = e.touches[0].pageY;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, { passive : true === $.spotSwipe.preventDefault });\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, { passive : true });\n}\n\nfunction teardown() {\n this.removeEventListener('touchstart', onTouchStart);\n}\n\nclass SpotSwipe {\n constructor($) {\n this.version = '1.0.0';\n this.enabled = 'ontouchstart' in document.documentElement;\n this.preventDefault = false;\n this.moveThreshold = 75;\n this.timeThreshold = 200;\n this.$ = $;\n this._init();\n }\n\n _init() {\n var $ = this.$;\n $.event.special.swipe = { setup: init };\n $.event.special.tap = { setup: init };\n\n $.each(['left', 'up', 'down', 'right'], function () {\n $.event.special[`swipe${this}`] = { setup: function(){\n $(this).on('swipe', $.noop);\n } };\n });\n }\n}\n\n/****************************************************\n * As far as I can tell, both setupSpotSwipe and *\n * setupTouchHandler should be idempotent, *\n * because they directly replace functions & *\n * values, and do not add event handlers directly. *\n ****************************************************/\n\nTouch.setupSpotSwipe = function($) {\n $.spotSwipe = new SpotSwipe($);\n};\n\n/****************************************************\n * Method for adding pseudo drag events to elements *\n ***************************************************/\nTouch.setupTouchHandler = function($) {\n $.fn.addTouch = function(){\n this.each(function(i,el){\n $(el).bind('touchstart touchmove touchend touchcancel', function(event) {\n //we pass the original event object because the jQuery event\n //object is normalized to w3c specs and does not provide the TouchList\n handleTouch(event);\n });\n });\n\n var handleTouch = function(event){\n var touches = event.changedTouches,\n first = touches[0],\n eventTypes = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup'\n },\n type = eventTypes[event.type],\n simulatedEvent\n ;\n\n if('MouseEvent' in window && typeof window.MouseEvent === 'function') {\n simulatedEvent = new window.MouseEvent(type, {\n 'bubbles': true,\n 'cancelable': true,\n 'screenX': first.screenX,\n 'screenY': first.screenY,\n 'clientX': first.clientX,\n 'clientY': first.clientY\n });\n } else {\n simulatedEvent = document.createEvent('MouseEvent');\n simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);\n }\n first.target.dispatchEvent(simulatedEvent);\n };\n };\n};\n\nTouch.init = function ($) {\n\n if(typeof($.spotSwipe) === 'undefined') {\n Touch.setupSpotSwipe($);\n Touch.setupTouchHandler($);\n }\n};\n\nexport {Touch};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Reveal module.\n * @module foundation.reveal\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion if using animations\n */\n\nclass Reveal extends Plugin {\n /**\n * Creates a new instance of Reveal.\n * @class\n * @name Reveal\n * @param {jQuery} element - jQuery object to use for the modal.\n * @param {Object} options - optional parameters.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);\n this.className = 'Reveal'; // ie9 back compat\n this._init();\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n Keyboard.register('Reveal', {\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the modal by adding the overlay and close buttons, (if selected).\n * @private\n */\n _init() {\n MediaQuery._init();\n this.id = this.$element.attr('id');\n this.isActive = false;\n this.cached = {mq: MediaQuery.current};\n\n this.$anchor = $(`[data-open=\"${this.id}\"]`).length ? $(`[data-open=\"${this.id}\"]`) : $(`[data-toggle=\"${this.id}\"]`);\n this.$anchor.attr({\n 'aria-controls': this.id,\n 'aria-haspopup': 'dialog',\n 'tabindex': 0\n });\n\n if (this.options.fullScreen || this.$element.hasClass('full')) {\n this.options.fullScreen = true;\n this.options.overlay = false;\n }\n if (this.options.overlay && !this.$overlay) {\n this.$overlay = this._makeOverlay(this.id);\n }\n\n this.$element.attr({\n 'role': 'dialog',\n 'aria-hidden': true,\n 'data-yeti-box': this.id,\n 'data-resize': this.id\n });\n\n if(this.$overlay) {\n this.$element.detach().appendTo(this.$overlay);\n } else {\n this.$element.detach().appendTo($(this.options.appendTo));\n this.$element.addClass('without-overlay');\n }\n this._events();\n if (this.options.deepLink && window.location.hash === ( `#${this.id}`)) {\n this.onLoadListener = onLoad($(window), () => this.open());\n }\n }\n\n /**\n * Creates an overlay div to display behind the modal.\n * @private\n */\n _makeOverlay() {\n var additionalOverlayClasses = '';\n\n if (this.options.additionalOverlayClasses) {\n additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;\n }\n\n return $('
')\n .addClass('reveal-overlay' + additionalOverlayClasses)\n .appendTo(this.options.appendTo);\n }\n\n /**\n * Updates position of modal\n * TODO: Figure out if we actually need to cache these values or if it doesn't matter\n * @private\n */\n _updatePosition() {\n var width = this.$element.outerWidth();\n var outerWidth = $(window).width();\n var height = this.$element.outerHeight();\n var outerHeight = $(window).height();\n var left, top = null;\n if (this.options.hOffset === 'auto') {\n left = parseInt((outerWidth - width) / 2, 10);\n } else {\n left = parseInt(this.options.hOffset, 10);\n }\n if (this.options.vOffset === 'auto') {\n if (height > outerHeight) {\n top = parseInt(Math.min(100, outerHeight / 10), 10);\n } else {\n top = parseInt((outerHeight - height) / 4, 10);\n }\n } else if (this.options.vOffset !== null) {\n top = parseInt(this.options.vOffset, 10);\n }\n\n if (top !== null) {\n this.$element.css({top: top + 'px'});\n }\n\n // only worry about left if we don't have an overlay or we have a horizontal offset,\n // otherwise we're perfectly in the middle\n if (!this.$overlay || (this.options.hOffset !== 'auto')) {\n this.$element.css({left: left + 'px'});\n this.$element.css({margin: '0px'});\n }\n\n }\n\n /**\n * Adds event handlers for the modal.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': (event, $element) => {\n if ((event.target === _this.$element[0]) ||\n ($(event.target).parents('[data-closable]')[0] === $element)) { // only close reveal when it's explicitly called\n return this.close.apply(this);\n }\n },\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': function() {\n _this._updatePosition();\n }\n });\n\n if (this.options.closeOnClick && this.options.overlay) {\n this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) {\n return;\n }\n _this.close();\n });\n }\n if (this.options.deepLink) {\n $(window).on(`hashchange.zf.reveal:${this.id}`, this._handleState.bind(this));\n }\n }\n\n /**\n * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.\n * @private\n */\n _handleState(e) {\n if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }\n else{ this.close(); }\n }\n\n /**\n * Disables the scroll when Reveal is shown to prevent the background from shifting\n * @param {number} scrollTop - Scroll to visually apply, window current scroll by default\n */\n _disableScroll(scrollTop) {\n scrollTop = scrollTop || $(window).scrollTop();\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", -scrollTop);\n }\n }\n\n /**\n * Reenables the scroll when Reveal closes\n * @param {number} scrollTop - Scroll to restore, html \"top\" property by default (as set by `_disableScroll`)\n */\n _enableScroll(scrollTop) {\n scrollTop = scrollTop || parseInt($(\"html\").css(\"top\"));\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", \"\");\n $(window).scrollTop(-scrollTop);\n }\n }\n\n\n /**\n * Opens the modal controlled by `this.$anchor`, and closes all others by default.\n * @function\n * @fires Reveal#closeme\n * @fires Reveal#open\n */\n open() {\n // either update or replace browser history\n const hash = `#${this.id}`;\n if (this.options.deepLink && window.location.hash !== hash) {\n\n if (window.history.pushState) {\n if (this.options.updateHistory) {\n window.history.pushState({}, '', hash);\n } else {\n window.history.replaceState({}, '', hash);\n }\n } else {\n window.location.hash = hash;\n }\n }\n\n // Remember anchor that opened it to set focus back later, have general anchors as fallback\n this.$activeAnchor = $(document.activeElement).is(this.$anchor) ? $(document.activeElement) : this.$anchor;\n\n this.isActive = true;\n\n // Make elements invisible, but remove display: none so we can get size and positioning\n this.$element\n .css({ 'visibility': 'hidden' })\n .show()\n .scrollTop(0);\n if (this.options.overlay) {\n this.$overlay.css({'visibility': 'hidden'}).show();\n }\n\n this._updatePosition();\n\n this.$element\n .hide()\n .css({ 'visibility': '' });\n\n if(this.$overlay) {\n this.$overlay.css({'visibility': ''}).hide();\n if(this.$element.hasClass('fast')) {\n this.$overlay.addClass('fast');\n } else if (this.$element.hasClass('slow')) {\n this.$overlay.addClass('slow');\n }\n }\n\n\n if (!this.options.multipleOpened) {\n /**\n * Fires immediately before the modal opens.\n * Closes any other modals that are currently open\n * @event Reveal#closeme\n */\n this.$element.trigger('closeme.zf.reveal', this.id);\n }\n\n if ($('.reveal:visible').length === 0) {\n this._disableScroll();\n }\n\n var _this = this;\n\n // Motion UI method of reveal\n if (this.options.animationIn) {\n function afterAnimation(){\n _this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n _this._addGlobalClasses();\n Keyboard.trapFocus(_this.$element);\n }\n if (this.options.overlay) {\n Motion.animateIn(this.$overlay, 'fade-in');\n }\n Motion.animateIn(this.$element, this.options.animationIn, () => {\n if(this.$element) { // protect against object having been removed\n this.focusableElements = Keyboard.findFocusable(this.$element);\n afterAnimation();\n }\n });\n }\n // jQuery method of reveal\n else {\n if (this.options.overlay) {\n this.$overlay.show(0);\n }\n this.$element.show(this.options.showDelay);\n }\n\n // handle accessibility\n this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n Keyboard.trapFocus(this.$element);\n\n this._addGlobalClasses();\n\n this._addGlobalListeners();\n\n /**\n * Fires when the modal has successfully opened.\n * @event Reveal#open\n */\n this.$element.trigger('open.zf.reveal');\n }\n\n /**\n * Adds classes and listeners on document required by open modals.\n *\n * The following classes are added and updated:\n * - `.is-reveal-open` - Prevents the scroll on document\n * - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the\n * scroll was not disabled. This prevent a \"shift\" of the page content due\n * the scrollbar disappearing when the modal opens.\n *\n * @private\n */\n _addGlobalClasses() {\n const updateScrollbarClass = () => {\n $('html').toggleClass('zf-has-scroll', !!($(document).height() > $(window).height()));\n };\n\n this.$element.on('resizeme.zf.trigger.revealScrollbarListener', () => updateScrollbarClass());\n updateScrollbarClass();\n $('html').addClass('is-reveal-open');\n }\n\n /**\n * Removes classes and listeners on document that were required by open modals.\n * @private\n */\n _removeGlobalClasses() {\n this.$element.off('resizeme.zf.trigger.revealScrollbarListener');\n $('html').removeClass('is-reveal-open');\n $('html').removeClass('zf-has-scroll');\n }\n\n /**\n * Adds extra event handlers for the body and window if necessary.\n * @private\n */\n _addGlobalListeners() {\n var _this = this;\n if(!this.$element) { return; } // If we're in the middle of cleanup, don't freak out\n this.focusableElements = Keyboard.findFocusable(this.$element);\n\n if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {\n $('body').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) { return; }\n _this.close();\n });\n }\n\n if (this.options.closeOnEsc) {\n $(window).on('keydown.zf.reveal', function(e) {\n Keyboard.handleKey(e, 'Reveal', {\n close: function() {\n if (_this.options.closeOnEsc) {\n _this.close();\n }\n }\n });\n });\n }\n }\n\n /**\n * Closes the modal.\n * @function\n * @fires Reveal#closed\n */\n close() {\n if (!this.isActive || !this.$element.is(':visible')) {\n return false;\n }\n var _this = this;\n\n // Motion UI method of hiding\n if (this.options.animationOut) {\n if (this.options.overlay) {\n Motion.animateOut(this.$overlay, 'fade-out');\n }\n\n Motion.animateOut(this.$element, this.options.animationOut, finishUp);\n }\n // jQuery method of hiding\n else {\n this.$element.hide(this.options.hideDelay);\n\n if (this.options.overlay) {\n this.$overlay.hide(0, finishUp);\n }\n else {\n finishUp();\n }\n }\n\n // Conditionals to remove extra event listeners added on open\n if (this.options.closeOnEsc) {\n $(window).off('keydown.zf.reveal');\n }\n\n if (!this.options.overlay && this.options.closeOnClick) {\n $('body').off('click.zf.dropdown tap.zf.dropdown');\n }\n\n this.$element.off('keydown.zf.reveal');\n\n function finishUp() {\n\n // Get the current top before the modal is closed and restore the scroll after.\n // TODO: use component properties instead of HTML properties\n // See https://github.com/foundation/foundation-sites/pull/10786\n var scrollTop = parseInt($(\"html\").css(\"top\"));\n\n if ($('.reveal:visible').length === 0) {\n _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n\n Keyboard.releaseFocus(_this.$element);\n\n _this.$element.attr('aria-hidden', true);\n\n if ($('.reveal:visible').length === 0) {\n _this._enableScroll(scrollTop);\n }\n\n /**\n * Fires when the modal is done closing.\n * @event Reveal#closed\n */\n _this.$element.trigger('closed.zf.reveal');\n }\n\n /**\n * Resets the modal content\n * This prevents a running video to keep going in the background\n */\n if (this.options.resetOnClose) {\n this.$element.html(this.$element.html());\n }\n\n this.isActive = false;\n // If deepLink and we did not switched to an other modal...\n if (_this.options.deepLink && window.location.hash === `#${this.id}`) {\n // Remove the history hash\n if (window.history.replaceState) {\n const urlWithoutHash = window.location.pathname + window.location.search;\n if (this.options.updateHistory) {\n window.history.pushState({}, '', urlWithoutHash); // remove the hash\n } else {\n window.history.replaceState('', document.title, urlWithoutHash);\n }\n } else {\n window.location.hash = '';\n }\n }\n\n this.$activeAnchor.focus();\n }\n\n /**\n * Toggles the open/closed state of a modal.\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.close();\n } else {\n this.open();\n }\n };\n\n /**\n * Destroys an instance of a modal.\n * @function\n */\n _destroy() {\n if (this.options.overlay) {\n this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()\n this.$overlay.hide().off().remove();\n }\n this.$element.hide().off();\n this.$anchor.off('.zf');\n $(window).off(`.zf.reveal:${this.id}`)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n\n if ($('.reveal:visible').length === 0) {\n this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n };\n}\n\nReveal.defaults = {\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationIn: '',\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationOut: '',\n /**\n * Time, in ms, to delay the opening of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n showDelay: 0,\n /**\n * Time, in ms, to delay the closing of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n hideDelay: 0,\n /**\n * Allows a click on the body/overlay to close the modal.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allows the modal to close if the user presses the `ESCAPE` key.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnEsc: true,\n /**\n * If true, allows multiple modals to be displayed at once.\n * @option\n * @type {boolean}\n * @default false\n */\n multipleOpened: false,\n /**\n * Distance, in pixels, the modal should push down from the top of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n vOffset: 'auto',\n /**\n * Distance, in pixels, the modal should push in from the side of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n hOffset: 'auto',\n /**\n * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.\n * @option\n * @type {boolean}\n * @default false\n */\n fullScreen: false,\n /**\n * Allows the modal to generate an overlay div, which will cover the view when modal opens.\n * @option\n * @type {boolean}\n * @default true\n */\n overlay: true,\n /**\n * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.\n * @option\n * @type {boolean}\n * @default false\n */\n resetOnClose: false,\n /**\n * Link the location hash to the modal.\n * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, update the browser history with the open modal\n * @option\n * @default false\n */\n updateHistory: false,\n /**\n * Allows the modal to append to custom div.\n * @option\n * @type {string}\n * @default \"body\"\n */\n appendTo: \"body\",\n /**\n * Allows adding additional class names to the reveal overlay.\n * @option\n * @type {string}\n * @default ''\n */\n additionalOverlayClasses: ''\n};\n\nexport {Reveal};\n","import './foundation.scss';\nimport $ from 'jquery';\nimport './career-feed.scss';\nimport { Foundation } from 'foundation-sites/js/foundation.core';\nimport { Reveal } from 'foundation-sites/js/foundation.reveal';\n\n/**\n * Foundation\n *\n * To import a new component from Foundation, import the module and activate the plugin.\n *\n * For example:\n * import { Accordion } from 'foundation-sites/js/foundation.accordion';\n * Foundation.plugin(Accordion, 'Accordion');\n *\n * See this file for more component options:\n * foundation-sites/js/entries/foundation;\n */\nFoundation.addToJquery($);\nFoundation.plugin(Reveal, 'Reveal');\n$(document).foundation();"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","jQuery","GetYoDigits","length","namespace","str","i","Math","floor","chars","random","onLoad","$elem","handler","didLoad","document","readyState","eventType","cb","triggerHandler","one","setTimeout","$","window","matchMedia","styleMedia","media","info","style","createElement","script","getElementsByTagName","type","id","parentNode","insertBefore","head","appendChild","getComputedStyle","currentStyle","matchMedium","text","styleSheet","cssText","textContent","width","matches","MediaQuery","queries","current","_init","this","isInitialized","appendTo","namedQueries","extractedStyles","css","styleObject","trim","slice","split","reduce","ret","param","parts","replace","val","decodeURIComponent","Array","isArray","push","name","value","_getCurrentSize","_watcher","_reInit","atLeast","size","query","only","upTo","nextSize","next","is","filter","p","bpSize","bpModifier","Error","queryIndex","findIndex","q","_getQueryName","nextQuery","TypeError","matched","off","on","newSize","currentSize","trigger","Foundation","version","_plugins","_uuids","plugin","className","functionName","attrName","hyphenate","registerPlugin","pluginName","constructor","toLowerCase","uuid","$element","attr","data","unregisterPlugin","splice","indexOf","removeAttr","removeData","reInit","plugins","isJQ","each","_this","plgs","forEach","foundation","keys","err","console","error","reflow","elem","find","addBack","$el","opts","option","_index","opt","map","el","isNaN","parseFloat","er","getFnName","addToJquery","fn","method","$noJS","removeClass","args","arguments","plugClass","ReferenceError","apply","Function","results","exec","toString","util","throttle","func","delay","timer","context","Date","now","getTime","vendors","requestAnimationFrame","vp","cancelAnimationFrame","test","navigator","userAgent","lastTime","callback","nextTime","max","clearTimeout","performance","start","bind","oThis","aArgs","fToBind","fNOP","fBound","concat","Plugin","element","options","_setup","getPluginName","destroy","_destroy","keyCodes","commands","findFocusable","sort","b","aTabIndex","parseInt","bTabIndex","parseKey","event","which","keyCode","String","fromCharCode","toUpperCase","shiftKey","ctrlKey","altKey","Keyboard","kcs","k","kc","getKeyCodes","handleKey","component","functions","commandList","warn","zfIsKeyHandled","ltr","rtl","returnValue","handled","unhandled","register","componentName","cmds","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","target","preventDefault","focus","releaseFocus","initClasses","activeClasses","Motion","animation","animate","isIn","initClass","activeClass","reset","addClass","show","offsetWidth","end","transitions","transition","transitionend","hide","transitionDuration","MutationObserver","prefixes","triggers","Triggers","Listeners","Basic","Global","Initializers","debounceGlobalListener","debounce","listener","e","openListener","closeListener","toggleListener","closeableListener","stopPropagation","fadeOut","toggleFocusListener","addOpenListener","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","pluginId","not","addClosemeListener","yetiBoxes","plugNames","listeners","join","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","$target","attributeName","pageYOffset","closest","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","init","triggersInitialized","IHearYou","startPosX","startTime","elapsedTime","startEvent","Touch","isMoving","didMoved","onTouchEnd","removeEventListener","onTouchMove","tapEvent","dir","x","touches","pageX","dx","abs","assign","onTouchStart","pageY","addEventListener","passive","SpotSwipe","enabled","documentElement","moveThreshold","timeThreshold","special","swipe","setup","tap","noop","setupSpotSwipe","spotSwipe","setupTouchHandler","addTouch","handleTouch","simulatedEvent","first","changedTouches","touchstart","touchmove","touchend","MouseEvent","screenX","screenY","clientX","clientY","createEvent","initMouseEvent","dispatchEvent","Reveal","defaults","isActive","cached","mq","$anchor","fullScreen","hasClass","overlay","$overlay","_makeOverlay","detach","_events","deepLink","location","hash","onLoadListener","open","additionalOverlayClasses","_updatePosition","left","outerWidth","height","outerHeight","top","hOffset","vOffset","min","margin","parents","close","toggle","closeOnClick","_handleState","_disableScroll","scrollTop","_enableScroll","history","pushState","updateHistory","replaceState","$activeAnchor","activeElement","multipleOpened","animationIn","focusableElements","_addGlobalClasses","showDelay","_addGlobalListeners","updateScrollbarClass","toggleClass","_removeGlobalClasses","closeOnEsc","finishUp","animationOut","hideDelay","resetOnClose","html","urlWithoutHash","pathname","search","title","remove"],"sourceRoot":""}