{"mappings":"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","sources":["./node_modules/@parcel/scope-hoisting/lib/helpers.js","./src/highlighter/highlighter.ts","./node_modules/throttle-debounce/esm/index.js","./src/navigation/navigation.js","./src/blocks/edumn-featured-page/scripts.ts","./src/jquery.js","./node_modules/foundation-sites/js/foundation.core.utils.js","./node_modules/foundation-sites/js/foundation.util.mediaQuery.js","./node_modules/foundation-sites/js/foundation.core.js","./node_modules/foundation-sites/js/foundation.core.plugin.js","./node_modules/foundation-sites/js/foundation.util.keyboard.js","./node_modules/foundation-sites/js/foundation.util.motion.js","./node_modules/foundation-sites/js/foundation.util.triggers.js","./node_modules/foundation-sites/js/foundation.util.touch.js","./node_modules/foundation-sites/js/foundation.reveal.js","./src/blocks/edumn-related-document-pages/scripts.js","./node_modules/foundation-sites/js/foundation.util.nest.js","./node_modules/foundation-sites/js/foundation.accordionMenu.js","./src/shortcodes/menu-shortcode/scripts.js","./src/index.ts"],"sourcesContent":["var $parcel$global =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$defineInteropFlag(a) {\n Object.defineProperty(a, '__esModule', {value: true});\n}\n\nfunction $parcel$export(e, n, v) {\n Object.defineProperty(e, n, {get: v, enumerable: true});\n}\n\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule') {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n },\n });\n });\n\n return dest;\n}\n\nfunction $parcel$missingModule(name) {\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n}\n","declare const jQuery: JQueryStatic;\nconst $ = jQuery;\n\n$(document).ready(() => {\n $('.wp-block-kadence-advancedheading > mark').each((i:number, element:HTMLElement) => {\n const $element = $(element);\n const words = $element.text().split(' ');\n const wrappedWords = words.map((word, index) => {\n const maybeSpace: string = index === words.length - 1 ? '' : ' ';\n return `${word}${maybeSpace}`;\n });\n $element.html(wrappedWords.join(' '));\n });\n});","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {boolean} [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce (delay, atBegin, callback) {\n return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\nimport { throttle } from 'throttle-debounce';\n\nfunction documentClick() {\n jQuery(document).on('click', 'body.dropdown-menu-item-active', function (event) {\n // if the click target is the header, close the dropdown and remove the body dropdown overlay\n if ((event.target.classList.contains('site-main-header-wrap'))) {\n removeDropdownAndOverlay();\n }\n });\n}\n\nfunction removeDropdownAndOverlay() {\n // remove the dropdown overlay class from the body\n document.querySelector('body').classList.remove('dropdown-menu-item-active');\n // create array of open dropdown list items\n var openMenuItems = document.querySelectorAll('li.menu-item-has-children.open');\n removeVisibility(openMenuItems);\n}\n\n\nfunction megaNavHover() {\n // manage hover overlay body class\n jQuery('#primary-menu > .menu-item').each(function () {\n jQuery(this).hover(\n function () {\n jQuery('body').addClass('menu-item-hover');\n }, function () {\n jQuery('body').removeClass('menu-item-hover');\n }\n );\n });\n}\n\n\nfunction removeVisibility(menuItems) {\n // remove the open class from the matched set of dropdown list items\n Array.prototype.forEach.call(menuItems, function (el, i) {\n el.setAttribute('aria-expanded', \"false\");\n el.classList.remove(\"open\");\n el.querySelector('a').setAttribute('aria-expanded', \"false\");\n });\n}\n\nfunction checkWindowResize() {\n if (document.querySelector('body').classList.contains('dropdown-menu-item-active') && window.innerWidth < 1024) {\n removeDropdownAndOverlay();\n }\n}\n\nfunction megaNavInit() {\n // select all dropdown menu items\n\n jQuery('body').on('click', 'li.menu-item-has-children a', function (event) {\n // if the user click on a dropdown link that is currently open\n if (this.parentNode.classList.contains(\"open\")) {\n // remove the overlay class from the body\n document.querySelector('body').classList.remove('dropdown-menu-item-active');\n // remove the open class from the parent list item\n this.parentNode.classList.remove(\"open\");\n // set the anchor and toggle item to false\n this.parentNode.querySelector('a').setAttribute('aria-expanded', \"false\");\n this.parentNode.querySelector('.dropdown-nav-toggle').setAttribute('aria-expanded', \"false\");\n } else {\n // remove the open class from all sibling dropdown list items\n var openMenuItems = document.querySelectorAll('li.menu-item-has-children.open');\n removeVisibility(openMenuItems);\n // add the open class to the parent list item\n this.parentNode.classList.add(\"open\");\n // set the anchor and toggle item to true\n this.parentNode.querySelector('a').setAttribute('aria-expanded', \"true\");\n this.parentNode.querySelector('.dropdown-nav-toggle').setAttribute('aria-expanded', \"true\");\n // add the overlay class to the body\n document.querySelector('body').classList.add('dropdown-menu-item-active');\n }\n event.preventDefault();\n });\n // set up hover events\n megaNavHover();\n // set up docuemnt dropdown open click event\n documentClick();\n // add span around sub menu anchor text\n wrapNavText();\n // change dropdown indicator icon\n setNavIcons();\n}\n\nfunction wrapNavText() {\n // wrap link text with a span to allow for hover state transform\n jQuery('#primary-menu').find(' .menu-item-has-children .sub-menu .menu-item:not(.nav-button) > a ').wrapInner(\"\");\n}\n\nfunction setNavIcons() {\n // change dropdown indicator icon to plus sign\n jQuery('#primary-menu').find(' .menu-item-has-children .dropdown-nav-toggle .kadence-svg-iconset ').html(\n ``\n );\n}\n\n\n\nconst throttleFunc = throttle(1000, false, checkWindowResize);\njQuery(window).resize(throttleFunc);\n\njQuery(document).ready(megaNavInit);","import { throttle } from 'throttle-debounce';\n\nconst $ = window.jQuery;\n\nconst selector = '[data-edumn-equal-height-horizontal]';\nconst throttleFunc = throttle(400, false, setEqualHeights);\n\nsetEqualHeights();\n$(document).on('ready', setEqualHeights);\n$(window).on('resize', throttleFunc);\n\nfunction setEqualHeights() {\n const $elements = $(selector);\n const groups = {};\n\n $elements.map((i, element) => {\n const $element = $(element);\n const offset = Math.floor($element.offset().top).toString();\n if (!groups[offset]) {\n groups[offset] = [];\n }\n groups[offset].push($element);\n return element;\n });\n\n for (const [key, group] of Object.entries(groups)) {\n\n let maxHeight = 0;\n const containers = [];\n\n group.forEach((item, i) => {\n const parent = item.parent();\n\n if (!parent.hasClass('equal-height-wrap')) {\n const wrapper = $('
');\n item.wrap(wrapper);\n containers.push(wrapper);\n } else {\n containers.push(parent);\n }\n\n const height = item.outerHeight();\n // console.info('height', item, height);\n maxHeight = maxHeight > height ? maxHeight : height;\n });\n\n containers.forEach((container, i) => {\n container.height(maxHeight);\n });\n }\n}\n","module.exports = window.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.0';\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 ($.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, false);\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, false);\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 $ from 'jquery';\nimport { Foundation } from 'foundation-sites/js/foundation.core';\nimport { Reveal } from 'foundation-sites/js/foundation.reveal';\n\nFoundation.addToJquery($);\nFoundation.plugin(Reveal, 'Reveal');\n$(document).foundation();","import $ from 'jquery';\n\nconst Nest = {\n Feather(menu, type = 'zf') {\n menu.attr('role', 'menubar');\n menu.find('a').attr({'role': 'menuitem'});\n\n var items = menu.find('li').attr({'role': 'none'}),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`,\n applyAria = (type !== 'accordion'); // Accordions handle their own ARIA attriutes.\n\n items.each(function() {\n var $item = $(this),\n $sub = $item.children('ul');\n\n if ($sub.length) {\n $item.addClass(hasSubClass);\n if(applyAria) {\n $item.children('a:first').attr({\n 'aria-haspopup': true,\n 'aria-label': $item.children('a:first').text()\n });\n // Note: Drilldowns behave differently in how they hide, and so need\n // additional attributes. We should look if this possibly over-generalized\n // utility (Nest) is appropriate when we rework menus in 6.4\n if(type === 'drilldown') {\n $item.attr({'aria-expanded': false});\n }\n }\n $sub\n .addClass(`submenu ${subMenuClass}`)\n .attr({\n 'data-submenu': '',\n 'role': 'menubar'\n });\n if(type === 'drilldown') {\n $sub.attr({'aria-hidden': true});\n }\n }\n\n if ($item.parent('[data-submenu]').length) {\n $item.addClass(`is-submenu-item ${subItemClass}`);\n }\n });\n\n return;\n },\n\n Burn(menu, type) {\n var //items = menu.find('li'),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`;\n\n menu\n .find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li')\n .removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`)\n .removeAttr('data-submenu').css('display', '');\n\n }\n}\n\nexport {Nest};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * AccordionMenu module.\n * @module foundation.accordionMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n */\n\nclass AccordionMenu extends Plugin {\n /**\n * Creates a new instance of an accordion menu.\n * @class\n * @name AccordionMenu\n * @fires AccordionMenu#init\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options);\n this.className = 'AccordionMenu'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('AccordionMenu', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_RIGHT': 'open',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'close',\n 'ESCAPE': 'closeAll'\n });\n }\n\n\n\n /**\n * Initializes the accordion menu by hiding all nested menus.\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'accordion');\n\n var _this = this;\n\n this.$element.find('[data-submenu]').not('.is-active').slideUp(0);//.find('a').css('padding-left', '1rem');\n this.$element.attr({\n 'aria-multiselectable': this.options.multiOpen\n });\n\n this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');\n this.$menuLinks.each(function() {\n var linkId = this.id || GetYoDigits(6, 'acc-menu-link'),\n $elem = $(this),\n $sub = $elem.children('[data-submenu]'),\n subId = $sub[0].id || GetYoDigits(6, 'acc-menu'),\n isActive = $sub.hasClass('is-active');\n\n if (_this.options.parentLink) {\n let $anchor = $elem.children('a');\n $anchor.clone().prependTo($sub).wrap('
  • ');\n }\n\n if (_this.options.submenuToggle) {\n $elem.addClass('has-submenu-toggle');\n $elem.children('a').after('');\n } else {\n $elem.attr({\n 'aria-controls': subId,\n 'aria-expanded': isActive,\n 'id': linkId\n });\n }\n $sub.attr({\n 'aria-labelledby': linkId,\n 'aria-hidden': !isActive,\n 'role': 'group',\n 'id': subId\n });\n });\n var initPanes = this.$element.find('.is-active');\n if (initPanes.length) {\n initPanes.each(function() {\n _this.down($(this));\n });\n }\n this._events();\n }\n\n /**\n * Adds event handlers for items within the menu.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.find('li').each(function() {\n var $submenu = $(this).children('[data-submenu]');\n\n if ($submenu.length) {\n if (_this.options.submenuToggle) {\n $(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n _this.toggle($submenu);\n });\n } else {\n $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n e.preventDefault();\n _this.toggle($submenu);\n });\n }\n }\n }).on('keydown.zf.accordionMenu', function(e) {\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement,\n $target = $element.children('[data-submenu]');\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1)).find('a').first();\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)).find('a').first();\n\n if ($(this).children('[data-submenu]:visible').length) { // has open sub menu\n $nextElement = $element.find('li:first-child').find('a').first();\n }\n if ($(this).is(':first-child')) { // is first element of sub menu\n $prevElement = $element.parents('li').first().find('a').first();\n } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { // if previous element has open sub menu\n $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();\n }\n if ($(this).is(':last-child')) { // is last element of sub menu\n $nextElement = $element.parents('li').first().next('li').find('a').first();\n }\n\n return;\n }\n });\n\n Keyboard.handleKey(e, 'AccordionMenu', {\n open: function() {\n if ($target.is(':hidden')) {\n _this.down($target);\n $target.find('li').first().find('a').first().focus();\n }\n },\n close: function() {\n if ($target.length && !$target.is(':hidden')) { // close active sub of this item\n _this.up($target);\n } else if ($element.parent('[data-submenu]').length) { // close currently open sub\n _this.up($element.parent('[data-submenu]'));\n $element.parents('li').first().find('a').first().focus();\n }\n },\n up: function() {\n $prevElement.focus();\n return true;\n },\n down: function() {\n $nextElement.focus();\n return true;\n },\n toggle: function() {\n if (_this.options.submenuToggle) {\n return false;\n }\n if ($element.children('[data-submenu]').length) {\n _this.toggle($element.children('[data-submenu]'));\n return true;\n }\n },\n closeAll: function() {\n _this.hideAll();\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n });//.attr('tabindex', 0);\n }\n\n /**\n * Closes all panes of the menu.\n * @function\n */\n hideAll() {\n this.up(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Opens all panes of the menu.\n * @function\n */\n showAll() {\n this.down(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Toggles the open/close state of a submenu.\n * @function\n * @param {jQuery} $target - the submenu to toggle\n */\n toggle($target) {\n if (!$target.is(':animated')) {\n if (!$target.is(':hidden')) {\n this.up($target);\n }\n else {\n this.down($target);\n }\n }\n }\n\n /**\n * Opens the sub-menu defined by `$target`.\n * @param {jQuery} $target - Sub-menu to open.\n * @fires AccordionMenu#down\n */\n down($target) {\n // If having multiple submenus active is disabled, close all the submenus\n // that are not parents or children of the targeted submenu.\n if (!this.options.multiOpen) {\n // The \"branch\" of the targetted submenu, from the component root to\n // the active submenus nested in it.\n const $targetBranch = $target.parentsUntil(this.$element)\n .add($target)\n .add($target.find('.is-active'));\n // All the active submenus that are not in the branch.\n const $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);\n\n this.up($othersActiveSubmenus);\n }\n\n $target\n .addClass('is-active')\n .attr({ 'aria-hidden': false });\n\n if (this.options.submenuToggle) {\n $target.prev('.submenu-toggle').attr({'aria-expanded': true});\n }\n else {\n $target.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});\n }\n\n $target.slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done opening.\n * @event AccordionMenu#down\n */\n this.$element.trigger('down.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.\n * @param {jQuery} $target - Sub-menu to close.\n * @fires AccordionMenu#up\n */\n up($target) {\n const $submenus = $target.find('[data-submenu]');\n const $allmenus = $target.add($submenus);\n\n $submenus.slideUp(0);\n $allmenus\n .removeClass('is-active')\n .attr('aria-hidden', true);\n\n if (this.options.submenuToggle) {\n $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);\n }\n else {\n $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);\n }\n\n $target.slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done collapsing up.\n * @event AccordionMenu#up\n */\n this.$element.trigger('up.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Destroys an instance of accordion menu.\n * @fires AccordionMenu#destroyed\n */\n _destroy() {\n this.$element.find('[data-submenu]').slideDown(0).css('display', '');\n this.$element.find('a').off('click.zf.accordionMenu');\n this.$element.find('[data-is-parent-link]').detach();\n\n if (this.options.submenuToggle) {\n this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');\n this.$element.find('.submenu-toggle').remove();\n }\n\n Nest.Burn(this.$element, 'accordion');\n }\n}\n\nAccordionMenu.defaults = {\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Amount of time to animate the opening of a submenu in ms.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Adds a separate submenu toggle button. This allows the parent item to have a link.\n * @option\n * @example true\n */\n submenuToggle: false,\n /**\n * The text used for the submenu toggle if enabled. This is used for screen readers only.\n * @option\n * @example true\n */\n submenuToggleText: 'Toggle menu',\n /**\n * Allow the menu to have multiple open panes.\n * @option\n * @type {boolean}\n * @default true\n */\n multiOpen: true\n};\n\nexport { AccordionMenu };\n","import $ from 'jquery';\nimport { Foundation } from 'foundation-sites/js/foundation.core';\nimport { AccordionMenu } from 'foundation-sites/js/foundation.accordionMenu';\n\nFoundation.addToJquery($);\nFoundation.plugin(AccordionMenu, 'AccordionMenu');\n$(document).foundation();\n","import \"./index.scss\";\nimport \"./highlighter/highlighter\";\nimport './navigation/navigation.js';\nimport './blocks/edumn-featured-page/scripts';\nimport './blocks/edumn-related-document-pages/scripts';\nimport './shortcodes/menu-shortcode/scripts.js';\n\n\n\njQuery(document).on('ready', function () {\n // if body has class .post-type-archive-union_page\n if (jQuery('body').hasClass('post-type-archive-union_page')) {\n // Add target blank to all links in the div with class .entry-content\n jQuery('.content-container a').attr('target', '_blank');\n }\n\n // section headers in the primary nav dropdowns are not clickable, but should be.\n // Add a click event to the section headers in the primary nav dropdowns\n jQuery(document).on('click', '#primary-menu>.menu-item.menu-item-has-children>.sub-menu>li:not(.member-login-link)>a', function () {\n const url = jQuery(this).attr('href');\n // if url is not undefined\n if (url !== undefined) {\n // use the url to redirect the user\n window.location.href = url;\n }\n });\n});"],"names":["$parcel$interopDefault","a","__esModule","default","$2e5953b545ac7cea68b947ac9edfa7ab$var$$","jQuery","$2182d8bee552afb6317f4c5695755779$export$throttle","delay","noTrailing","callback","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments","length","arguments_","Array","_key","self","this","elapsed","Date","now","exec","apply","clear","undefined","setTimeout","cancel","$df4c326992d5dbd8a35dae39e7384eeb$var$removeDropdownAndOverlay","document","querySelector","classList","remove","$df4c326992d5dbd8a35dae39e7384eeb$var$removeVisibility","querySelectorAll","menuItems","prototype","forEach","call","el","i","setAttribute","ready","each","element","$element","words","text","split","wrappedWords","map","word","index","maybeSpace","html","join","$df4c326992d5dbd8a35dae39e7384eeb$var$throttleFunc","contains","window","innerWidth","resize","on","event","parentNode","add","preventDefault","hover","addClass","removeClass","target","find","wrapInner","$daff07e0be2614f50fe7e917765e3dc8$var$$","$daff07e0be2614f50fe7e917765e3dc8$var$throttleFunc","$daff07e0be2614f50fe7e917765e3dc8$var$setEqualHeights","$elements","groups","offset","Math","floor","top","toString","push","group","key","maxHeight","containers","item","parent","hasClass","wrap","height","outerHeight","container","Object","entries","$c0e6918542b33451cfab6636ab9e5df5$export$GetYoDigits","namespace","str","chars","charsLength","random","$c0e6918542b33451cfab6636ab9e5df5$export$onLoad","$elem","handler","didLoad","readyState","eventType","cb","triggerHandler","one","matchMedia","styleMedia","media","info","style","createElement","script","getElementsByTagName","type","id","insertBefore","head","appendChild","getComputedStyle","currentStyle","matchMedium","styleSheet","cssText","textContent","width","matches","$58a46e626e697787f130072e32b1b095$export$MediaQuery","queries","current","_init","isInitialized","$meta","appendTo","namedQueries","extractedStyles","css","styleObject","trim","slice","reduce","ret","param","parts","replace","val","decodeURIComponent","hasOwnProperty","isArray","$58a46e626e697787f130072e32b1b095$var$parseStyleToObject","name","value","_getCurrentSize","_watcher","_reInit","atLeast","size","query","get","only","upTo","nextSize","next","is","filter","p","bpSize","bpModifier","Error","queryIndex","findIndex","q","_getQueryName","nextQuery","TypeError","matched","off","newSize","currentSize","trigger","$2d008a4556bede09ef835256096f55a9$export$Foundation","version","_plugins","_uuids","plugin","className","$2d008a4556bede09ef835256096f55a9$var$functionName","attrName","$2d008a4556bede09ef835256096f55a9$var$hyphenate","registerPlugin","pluginName","constructor","toLowerCase","uuid","attr","data","unregisterPlugin","prop","splice","indexOf","removeAttr","removeData","reInit","plugins","isJQ","_this","fns","object","plgs","foundation","string","keys","err","console","error","reflow","elem","addBack","$el","opts","option","_index","opt","isNaN","parseFloat","$2d008a4556bede09ef835256096f55a9$var$parseValue","er","getFnName","addToJquery","$","fn","method","$noJS","args","plugClass","ReferenceError","Function","results","util","throttle","func","timer","context","Foundation","getTime","vendors","requestAnimationFrame","vp","cancelAnimationFrame","test","navigator","userAgent","lastTime","nextTime","max","performance","start","bind","oThis","aArgs","fToBind","fNOP","fBound","concat","$204f0dd69d1b62f8ffdc8ae5c5c48310$export$Plugin","options","_setup","$204f0dd69d1b62f8ffdc8ae5c5c48310$var$getPluginName","destroy","_destroy","obj","$3f86afcbc80794cd2b06c490cb8b31d3$var$keyCodes","9","13","27","32","35","36","37","38","39","40","$3f86afcbc80794cd2b06c490cb8b31d3$var$commands","$3f86afcbc80794cd2b06c490cb8b31d3$var$findFocusable","$b63d6c437e9b652e121287cf78fafbf7$$interop$default","sort","b","aTabIndex","parseInt","bTabIndex","$3f86afcbc80794cd2b06c490cb8b31d3$var$parseKey","which","keyCode","String","fromCharCode","toUpperCase","shiftKey","ctrlKey","altKey","$3f86afcbc80794cd2b06c490cb8b31d3$export$Keyboard","kcs","k","kc","$3f86afcbc80794cd2b06c490cb8b31d3$var$getKeyCodes","parseKey","handleKey","component","functions","commandList","warn","zfIsKeyHandled","ltr","cmds","extend","rtl","returnValue","handled","unhandled","findFocusable","register","componentName","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","focus","releaseFocus","$4a5d61dbfd910cc84558f91072c94130$var$initClasses","$4a5d61dbfd910cc84558f91072c94130$var$activeClasses","$4a5d61dbfd910cc84558f91072c94130$export$Motion","animation","$4a5d61dbfd910cc84558f91072c94130$var$animate","isIn","initClass","activeClass","reset","show","offsetWidth","end","transitions","transition","WebkitTransition","MozTransition","OTransition","hide","transitionDuration","$e2ca1de38d71f73c22d811956a9ea7f0$var$MutationObserver","prefixes","$e2ca1de38d71f73c22d811956a9ea7f0$var$triggers","$e2ca1de38d71f73c22d811956a9ea7f0$export$Triggers","Listeners","Basic","Global","Initializers","$e2ca1de38d71f73c22d811956a9ea7f0$var$debounceGlobalListener","debounce","listener","e","openListener","closeListener","toggleListener","closeableListener","stopPropagation","animateOut","fadeOut","toggleFocusListener","addOpenListener","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","pluginId","not","addClosemeListener","yetiBoxes","plugNames","listeners","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","$target","attributeName","pageYOffset","closest","elementObserver","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","init","triggersInitialized","Triggers","IHearYou","$6b20902f30f32e4c24ec81ffcfd15d78$var$startPosX","$6b20902f30f32e4c24ec81ffcfd15d78$var$startTime","$6b20902f30f32e4c24ec81ffcfd15d78$var$elapsedTime","$6b20902f30f32e4c24ec81ffcfd15d78$var$startEvent","$6b20902f30f32e4c24ec81ffcfd15d78$export$Touch","$6b20902f30f32e4c24ec81ffcfd15d78$var$isMoving","$6b20902f30f32e4c24ec81ffcfd15d78$var$didMoved","$6b20902f30f32e4c24ec81ffcfd15d78$var$onTouchEnd","removeEventListener","$6b20902f30f32e4c24ec81ffcfd15d78$var$onTouchMove","tapEvent","Event","spotSwipe","dir","x","touches","pageX","dx","pageY","abs","moveThreshold","timeThreshold","assign","$6b20902f30f32e4c24ec81ffcfd15d78$var$onTouchStart","addEventListener","$6b20902f30f32e4c24ec81ffcfd15d78$var$init","$6b20902f30f32e4c24ec81ffcfd15d78$var$SpotSwipe","enabled","documentElement","special","swipe","setup","tap","noop","setupSpotSwipe","setupTouchHandler","addTouch","handleTouch","simulatedEvent","first","changedTouches","eventTypes","touchstart","touchmove","touchend","MouseEvent","bubbles","cancelable","screenX","screenY","clientX","clientY","createEvent","initMouseEvent","dispatchEvent","$a9979e3dc5b53cd280a2b58b6ae02468$export$Reveal","defaults","ESCAPE","isActive","cached","mq","$anchor","aria-controls","aria-haspopup","tabindex","fullScreen","overlay","$overlay","_makeOverlay","role","aria-hidden","data-yeti-box","data-resize","detach","_events","deepLink","location","hash","onLoadListener","open","additionalOverlayClasses","_updatePosition","left","outerWidth","hOffset","vOffset","min","margin","open.zf.trigger","close.zf.trigger","parents","close","toggle.zf.trigger","toggle","resizeme.zf.trigger","closeOnClick","_handleState","_disableScroll","scrollTop","_enableScroll","history","pushState","updateHistory","replaceState","$activeAnchor","activeElement","visibility","multipleOpened","animationIn","focusableElements","_addGlobalClasses","showDelay","_addGlobalListeners","updateScrollbarClass","toggleClass","_removeGlobalClasses","closeOnEsc","finishUp","animationOut","hideDelay","resetOnClose","urlWithoutHash","pathname","search","title","$20b369ae9fe039c60f420363a61fae81$export$Nest","Feather","menu","items","subMenuClass","subItemClass","hasSubClass","applyAria","$item","$sub","children","aria-label","aria-expanded","data-submenu","Burn","$8f94aac84d0e1b98098dd3ad71b36949$export$AccordionMenu","ENTER","SPACE","ARROW_RIGHT","ARROW_UP","ARROW_DOWN","ARROW_LEFT","slideUp","aria-multiselectable","multiOpen","$menuLinks","linkId","subId","parentLink","clone","prependTo","submenuToggle","after","submenuToggleText","aria-labelledby","initPanes","down","$submenu","$prevElement","$nextElement","up","closeAll","hideAll","showAll","$targetBranch","parentsUntil","$othersActiveSubmenus","prev","slideDown","slideSpeed","$submenus","$allmenus","url","href"],"version":3,"file":"index.js.map"}