{"version":3,"sources":["webpack:///index.js","webpack:///webpack/bootstrap 4dbea0fb45547d4e7d20","webpack:///external \"jQuery\"","webpack:///./node_modules/foundation-sites/js/foundation.core.utils.js","webpack:///./node_modules/foundation-sites/js/foundation.core.plugin.js","webpack:///./node_modules/foundation-sites/js/foundation.util.keyboard.js","webpack:///./node_modules/foundation-sites/js/foundation.util.mediaQuery.js","webpack:///./node_modules/foundation-sites/js/foundation.util.box.js","webpack:///./node_modules/foundation-sites/js/foundation.util.motion.js","webpack:///./node_modules/foundation-sites/js/foundation.util.nest.js","webpack:///./node_modules/foundation-sites/js/foundation.util.triggers.js","webpack:///./node_modules/foundation-sites/js/foundation.util.touch.js","webpack:///./node_modules/foundation-sites/js/foundation.util.imageLoader.js","webpack:///./node_modules/foundation-sites/js/foundation.accordionMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.drilldown.js","webpack:///./node_modules/foundation-sites/js/foundation.dropdownMenu.js","webpack:///./src/index.js","webpack:///./src/foundation/index.js","webpack:///./node_modules/foundation-sites/js/foundation.core.js","webpack:///./node_modules/foundation-sites/js/foundation.util.timer.js","webpack:///./node_modules/foundation-sites/js/foundation.accordion.js","webpack:///./node_modules/foundation-sites/js/foundation.dropdown.js","webpack:///./node_modules/foundation-sites/js/foundation.positionable.js","webpack:///./node_modules/foundation-sites/js/foundation.equalizer.js","webpack:///./node_modules/foundation-sites/js/foundation.offcanvas.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveMenu.js","webpack:///./node_modules/foundation-sites/js/foundation.responsiveToggle.js","webpack:///./node_modules/foundation-sites/js/foundation.toggler.js","webpack:///./node_modules/fitvids/index.js","webpack:///./node_modules/objectFitPolyfill/dist/objectFitPolyfill.min.js","webpack:///./src/layout/partials/solr_search_facetss.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","jQuery","rtl","attr","GetYoDigits","length","namespace","str","chars","charsLength","Math","floor","random","RegExpEscape","replace","transitionend","$elem","end","transitions","elem","document","createElement","transition","style","setTimeout","triggerHandler","onLoad","handler","didLoad","readyState","eventType","cb","one","window","ignoreMousedisappear","ignoreLeaveWindow","ignoreReappear","eLeave","rest","callback","bind","this","relatedTarget","hasFocus","eReenter","currentTarget","has","target","value","undefined","_jquery2","obj","default","_jquery","_classCallCheck","instance","Constructor","TypeError","hyphenate","toLowerCase","getPluginName","className","Plugin","_createClass","defineProperties","props","descriptor","writable","key","protoProps","staticProps","element","options","_setup","pluginName","uuid","$element","data","trigger","_destroy","removeAttr","removeData","prop","findFocusable","find","filter","is","sort","a","b","aTabIndex","parseInt","bTabIndex","parseKey","event","keyCodes","which","keyCode","String","fromCharCode","toUpperCase","shiftKey","ctrlKey","altKey","Keyboard","9","13","27","32","35","36","37","38","39","40","commands","keys","kcs","k","kc","handleKey","component","functions","cmds","command","fn","commandList","console","warn","zfIsKeyHandled","ltr","$","extend","returnValue","apply","handled","unhandled","register","componentName","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","on","preventDefault","focus","releaseFocus","off","parseStyleToObject","styleObject","trim","slice","split","reduce","ret","param","parts","val","decodeURIComponent","Array","isArray","push","MediaQuery","_typeof","Symbol","iterator","constructor","_slicedToArray","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","next","done","err","matchMedia","styleMedia","media","script","getElementsByTagName","info","type","id","parentNode","insertBefore","head","appendChild","getComputedStyle","currentStyle","matchMedium","text","styleSheet","cssText","textContent","width","matches","queries","current","_init","isInitialized","self","appendTo","namedQueries","extractedStyles","css","_getCurrentSize","_watcher","_reInit","atLeast","size","query","only","upTo","nextSize","bpSize","bpModifier","Error","queryIndex","findIndex","q","_getQueryName","nextQuery","matched","newSize","currentSize","ImNotTouchingYou","parent","lrOnly","tbOnly","ignoreBottom","OverlapArea","topOver","bottomOver","leftOver","rightOver","eleDims","GetDimensions","parDims","height","offset","top","left","windowDims","min","sqrt","rect","getBoundingClientRect","parRect","winRect","body","winY","pageYOffset","winX","pageXOffset","parentDims","GetExplicitOffsets","anchor","position","alignment","vOffset","hOffset","isOverflow","topVal","leftVal","$eleDims","$anchorDims","Box","Move","duration","move","ts","start","prog","anim","requestAnimationFrame","cancelAnimationFrame","animate","isIn","animation","finish","hide","reset","transitionDuration","removeClass","initClass","activeClass","initClasses","activeClasses","addClass","show","offsetWidth","Motion","animateIn","animateOut","Nest","Feather","menu","items","subMenuClass","subItemClass","hasSubClass","applyAria","each","$item","$sub","children","Burn","debounceGlobalListener","debounce","listener","timer","args","arguments","clearTimeout","Triggers","MutationObserver","prefixes","triggers","el","forEach","Listeners","Basic","Global","Initializers","openListener","closeListener","toggleListener","closeableListener","e","stopPropagation","fadeOut","toggleFocusListener","addOpenListener","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","pluginId","plugin","not","_this","addClosemeListener","yetiBoxes","plugNames","concat","error","listeners","map","join","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","$target","attributeName","closest","elementObserver","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","init","__","Foundation","triggersInitialized","IHearYou","onTouchEnd","removeEventListener","onTouchMove","didMoved","tapEvent","Event","startEvent","isMoving","spotSwipe","dir","x","touches","pageX","dx","startPosX","elapsedTime","Date","getTime","startTime","abs","moveThreshold","timeThreshold","assign","onTouchStart","addEventListener","passive","Touch","SpotSwipe","version","enabled","documentElement","special","swipe","setup","tap","noop","setupSpotSwipe","setupTouchHandler","addTouch","handleTouch","simulatedEvent","changedTouches","first","eventTypes","touchstart","touchmove","touchend","MouseEvent","screenX","screenY","clientX","clientY","createEvent","initMouseEvent","dispatchEvent","onImagesLoaded","images","singleImageLoaded","unloaded","complete","naturalWidth","image","Image","events","me","src","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","AccordionMenu","getPrototypeOf","_Plugin","defaults","slideUp","multiOpen","$menuLinks","linkId","subId","isActive","hasClass","parentLink","clone","prependTo","wrap","submenuToggle","after","submenuToggleText","initPanes","down","_events","$submenu","toggle","$prevElement","$nextElement","$elements","max","parents","open","close","up","closeAll","hideAll","$targetBranch","parentsUntil","add","$othersActiveSubmenus","prev","slideDown","slideSpeed","$submenus","$allmenus","detach","remove","Drilldown","autoApplyClass","$submenuAnchors","$menuItems","$currentMenu","_prepareMenu","_registerEvents","_keyboardEvents","$link","$menu","backButtonPosition","append","backButton","prepend","_back","autoHeight","$wrapper","wrapper","animateHeight","_getMaxDims","_show","closeOnClick","$body","ev","contains","_hideAll","scrollTop","_bindHandler","_scrollTop","_resize","$scrollTopElement","scrollTopElement","scrollPos","scrollTopOffset","stop","animationDuration","animationEasing","previous","_hide","siblings","calcHeight","parentSubMenu","autoFocus","_setHideSubMenuClasses","index","isLastChild","_setShowSubMenuClasses","blur","maxHeight","result","unwrap","DropdownMenu","subs","$tabs","verticalClass","rightClass","changed","hasTouch","ontouchstart","parClass","handleClickFn","hasSub","hasClicked","clickOpen","forceFollow","stopImmediatePropagation","closeOnClickInside","disableHoverOnTouch","disableHover","hoverDelay","autoclose","closingTime","isTab","nextSibling","prevSibling","openSub","closeSub","_isVertical","_isRtl","_removeBodyHandler","idx","$sibs","clear","oldClass","$parentLi","_addBodyHandler","$toClose","$activeItem","_interopRequireDefault","_fitvids2","_fitvids","foundation","objectFitPolyfill","toggleAccourdian","$accourdian","evt","addToJquery","Timer","Accordion","Dropdown","Equalizer","OffCanvas","ResponsiveMenu","ResponsiveToggle","Toggler","functionName","Function","funcNameRegex","results","exec","toString","parseValue","isNaN","parseFloat","_plugins","_uuids","attrName","registerPlugin","unregisterPlugin","splice","indexOf","reInit","plugins","isJQ","plgs","reflow","addBack","$el","opts","option","opt","er","getFnName","method","$noJS","plugClass","util","throttle","func","delay","context","now","vendors","vp","test","navigator","userAgent","lastTime","nextTime","performance","oThis","aArgs","fToBind","fNOP","fBound","nameSpace","remain","isPaused","restart","infinite","pause","_isInitializing","$content","$initActive","_initialAnchor","_openSingleTab","_checkDeepLink","location","hash","$anchor","_closeAllTabs","deepLinkSmudge","deepLinkSmudgeOffset","deepLinkSmudgeDelay","deepLink","$tabContent","$a","multiExpand","last","updateHistory","history","pushState","replaceState","_openTab","$targetItem","$othersItems","allowAllClosed","_closeTab","$activeContents","targetContentId","$activeTabs","_get","receiver","desc","getOwnPropertyDescriptor","_Positionable","$id","$anchors","_setCurrentAnchor","parentClass","$parent","$currentAnchor","match","horizontalPosition","_setPosition","hover","bodyData","whatinput","timeout","hoverPane","Positionable","allowOverlap","allowBottomOverlap","nextItem","item","array","currentIdx","POSITIONS","VERTICAL_ALIGNMENTS","HORIZONTAL_ALIGNMENTS","ALIGNMENTS","triedPositions","_getDefaultPosition","_getDefaultAlignment","originalPosition","originalAlignment","_alignmentsExhausted","_realign","_addTriedPosition","isExhausted","_getVOffset","_getHOffset","minOverlap","minCoordinates","_positionsExhausted","overlap","_reposition","eqId","$watched","hasNested","isNested","isOn","onResizeMeBound","_onResizeMe","onPostEqualizedBound","_onPostEqualized","tooSmall","imgs","equalizeOn","_checkMQ","_reflow","_pauseEvents","equalizeOnStack","_isStacked","equalizeByRow","getHeightsByRow","applyHeightByRow","getHeights","applyHeight","heights","len","offsetHeight","lastElTopOffset","groups","group","elOffsetTop","j","ln","groupsILength","lenJ","contentClasses","base","reveal","$lastTrigger","$triggers","nested","$sticky","isInCanvas","contentId","contentOverlay","overlay","overlayPosition","setAttribute","$overlay","insertAfter","revealOnRegExp","RegExp","revealClass","revealOnClass","isRevealed","revealOn","_setMQChecker","transitionTime","contentScroll","inCanvasFor","inCanvasOn","_checkInCanvas","_removeContentClasses","_handleKeyboard","onLoadListener","hasReveal","_","absoluteTopVal","stickyData","_addContentClasses","lastY","pageY","delta","_canScroll","allowUp","allowDown","scrollHeight","clientHeight","forceTo","scrollTo","_stopScrolling","_recordScrollable","_preventDefaultAtEdges","_scrollboxTouchMoved","canvasFocus","_fixStickyElements","_unfixStickyElements","MenuPlugins","dropdown","cssClass","drilldown","accordion","rules","currentMq","currentPlugin","rulesTree","rule","ruleSize","rulePlugin","isEmptyObject","_checkMediaQueries","matchedMq","destroy","targetID","$targetMenu","$toggler","input","animationIn","animationOut","_update","_updateMqHandler","toggleMenu","hideFor","toggler","$trigger","controls","toggleClass","_updateARIA","queryAll","selector","querySelectorAll","toSelectorArray","hasLength","flatten","widthAttr","getAttribute","heightAttr","clientWidth","aspect","removeAttribute","paddingTop","styles","div","innerHTML","childNodes","isObject","selectors","parentSelector","ignore","players","containers","getElementById","custom","ignored","ignoredSelector","container","video","t","dataset","objectFit","objectPosition","getPropertyValue","overflow","display","right","bottom","marginTop","marginLeft","nodeName","$searchFacetBox","$submit","wrapInner","ready"],"mappings":"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","file":"index.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 14);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = jQuery;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ignoreMousedisappear = exports.onLoad = exports.transitionend = exports.RegExpEscape = exports.GetYoDigits = exports.rtl = undefined;\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction rtl() {\n return (0, _jquery2.default)('html').attr('dir') === 'rtl';\n}\n\nfunction GetYoDigits() {\n var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 6;\n var namespace = arguments[1];\n\n var str = '';\n var chars = '0123456789abcdefghijklmnopqrstuvwxyz';\n var charsLength = chars.length;\n for (var i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * charsLength)];\n }\n return namespace ? str + '-' + namespace : str;\n}\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 (var 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\nfunction onLoad($elem, handler) {\n var didLoad = document.readyState === 'complete';\n var eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';\n var cb = function cb() {\n return $elem.triggerHandler(eventType);\n };\n\n if ($elem) {\n if (handler) $elem.one(eventType, handler);\n\n if (didLoad) setTimeout(cb);else (0, _jquery2.default)(window).one('load', cb);\n }\n\n return eventType;\n}\n\nfunction ignoreMousedisappear(handler) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$ignoreLeaveWindo = _ref.ignoreLeaveWindow,\n ignoreLeaveWindow = _ref$ignoreLeaveWindo === undefined ? false : _ref$ignoreLeaveWindo,\n _ref$ignoreReappear = _ref.ignoreReappear,\n ignoreReappear = _ref$ignoreReappear === undefined ? false : _ref$ignoreReappear;\n\n return function leaveEventHandler(eLeave) {\n for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n var callback = handler.bind.apply(handler, [this, eLeave].concat(rest));\n\n if (eLeave.relatedTarget !== null) {\n return callback();\n }\n\n setTimeout(function leaveEventDebouncer() {\n if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {\n return callback();\n }\n\n if (!ignoreReappear) {\n (0, _jquery2.default)(document).one('mouseenter', function reenterEventHandler(eReenter) {\n if (!(0, _jquery2.default)(eLeave.currentTarget).has(eReenter.target).length) {\n eLeave.relatedTarget = eReenter.target;\n callback();\n }\n });\n }\n }, 0);\n };\n}\n\nexports.rtl = rtl;\nexports.GetYoDigits = GetYoDigits;\nexports.RegExpEscape = RegExpEscape;\nexports.transitionend = transitionend;\nexports.onLoad = onLoad;\nexports.ignoreMousedisappear = ignoreMousedisappear;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Plugin = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _foundationCore = __webpack_require__(1);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Plugin = function () {\n function Plugin(element, options) {\n _classCallCheck(this, Plugin);\n\n this._setup(element, options);\n var pluginName = getPluginName(this);\n this.uuid = (0, _foundationCore.GetYoDigits)(6, pluginName);\n\n if (!this.$element.attr('data-' + pluginName)) {\n this.$element.attr('data-' + pluginName, this.uuid);\n }\n if (!this.$element.data('zfPlugin')) {\n this.$element.data('zfPlugin', this);\n }\n\n this.$element.trigger('init.zf.' + pluginName);\n }\n\n _createClass(Plugin, [{\n key: 'destroy',\n value: function destroy() {\n this._destroy();\n var pluginName = getPluginName(this);\n this.$element.removeAttr('data-' + pluginName).removeData('zfPlugin').trigger('destroyed.zf.' + pluginName);\n for (var prop in this) {\n if (this.hasOwnProperty(prop)) {\n this[prop] = null;\n }\n }\n }\n }]);\n\n return Plugin;\n}();\n\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\nexports.Plugin = Plugin;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Keyboard = undefined;\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationCore = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar 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\nfunction findFocusable($element) {\n if (!$element) {\n return false;\n }\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 (!(0, _jquery2.default)(this).is(':visible') || (0, _jquery2.default)(this).attr('tabindex') < 0) {\n return false;\n }\n return true;\n }).sort(function (a, b) {\n if ((0, _jquery2.default)(a).attr('tabindex') === (0, _jquery2.default)(b).attr('tabindex')) {\n return 0;\n }\n var aTabIndex = parseInt((0, _jquery2.default)(a).attr('tabindex'), 10),\n bTabIndex = parseInt((0, _jquery2.default)(b).attr('tabindex'), 10);\n\n if (typeof (0, _jquery2.default)(a).attr('tabindex') === 'undefined' && bTabIndex > 0) {\n return 1;\n }\n if (typeof (0, _jquery2.default)(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 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 key = key.replace(/_$/, '');\n\n return key;\n}\n\nvar Keyboard = {\n keys: getKeyCodes(keyCodes),\n\n parseKey: parseKey,\n\n handleKey: function 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 if (event.zfIsKeyHandled === true) return;\n\n if (typeof commandList.ltr === 'undefined') {\n cmds = commandList;\n } else {\n if ((0, _foundationCore.rtl)()) cmds = _jquery2.default.extend({}, commandList.ltr, commandList.rtl);else cmds = _jquery2.default.extend({}, commandList.rtl, commandList.ltr);\n }\n command = cmds[keyCode];\n\n fn = functions[command];\n\n if (fn && typeof fn === 'function') {\n var returnValue = fn.apply();\n\n event.zfIsKeyHandled = true;\n\n if (functions.handled || typeof functions.handled === 'function') {\n functions.handled(returnValue);\n }\n } else {\n if (functions.unhandled || typeof functions.unhandled === 'function') {\n functions.unhandled();\n }\n }\n },\n\n\n findFocusable: findFocusable,\n\n register: function register(componentName, cmds) {\n commands[componentName] = cmds;\n },\n trapFocus: function 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 } else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n event.preventDefault();\n $lastFocusable.focus();\n }\n });\n },\n releaseFocus: function releaseFocus($element) {\n $element.off('keydown.zf.trapfocus');\n }\n};\n\nfunction getKeyCodes(kcs) {\n var k = {};\n for (var kc in kcs) {\n if (kcs.hasOwnProperty(kc)) k[kcs[kc]] = kcs[kc];\n }\n return k;\n}\n\nexports.Keyboard = Keyboard;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MediaQuery = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nwindow.matchMedia || (window.matchMedia = function () {\n \"use strict\";\n\n var styleMedia = window.styleMedia || window.media;\n\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 info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle;\n\n styleMedia = {\n matchMedium: function matchMedium(media) {\n var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\n\n if (style.styleSheet) {\n style.styleSheet.cssText = text;\n } else {\n style.textContent = text;\n }\n\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\n\nvar MediaQuery = {\n queries: [],\n\n current: '',\n\n _init: function _init() {\n if (this.isInitialized === true) {\n return this;\n } else {\n this.isInitialized = true;\n }\n\n var self = this;\n var $meta = (0, _jquery2.default)('meta.foundation-mq');\n if (!$meta.length) {\n (0, _jquery2.default)('').appendTo(document.head);\n }\n\n var extractedStyles = (0, _jquery2.default)('.foundation-mq').css('font-family');\n var namedQueries;\n\n namedQueries = parseStyleToObject(extractedStyles);\n\n self.queries = [];\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 _reInit: function _reInit() {\n this.isInitialized = false;\n this._init();\n },\n atLeast: function 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 only: function only(size) {\n return size === this._getCurrentSize();\n },\n upTo: function upTo(size) {\n var nextSize = this.next(size);\n\n if (nextSize) {\n return !this.atLeast(nextSize);\n }\n\n return true;\n },\n is: function is(size) {\n var parts = size.trim().split(' ').filter(function (p) {\n return !!p.length;\n });\n\n var _parts = _slicedToArray(parts, 2),\n bpSize = _parts[0],\n _parts$ = _parts[1],\n bpModifier = _parts$ === undefined ? '' : _parts$;\n\n if (bpModifier === 'only') {\n return this.only(bpSize);\n }\n\n if (!bpModifier || bpModifier === 'up') {\n return this.atLeast(bpSize);\n }\n\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 get: function 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 next: function next(size) {\n var _this = this;\n\n var queryIndex = this.queries.findIndex(function (q) {\n return _this._getQueryName(q) === size;\n });\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 var nextQuery = this.queries[queryIndex + 1];\n return nextQuery ? nextQuery.name : null;\n },\n _getQueryName: function _getQueryName(value) {\n if (typeof value === 'string') return value;\n if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') 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 === 'undefined' ? 'undefined' : _typeof(value)) + ')\\n ');\n },\n _getCurrentSize: function _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 _watcher: function _watcher() {\n var _this2 = this;\n\n (0, _jquery2.default)(window).on('resize.zf.trigger', function () {\n var newSize = _this2._getCurrentSize(),\n currentSize = _this2.current;\n\n if (newSize !== currentSize) {\n _this2.current = newSize;\n\n (0, _jquery2.default)(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);\n }\n });\n }\n};\n\nfunction parseStyleToObject(str) {\n var styleObject = {};\n\n if (typeof str !== 'string') {\n return styleObject;\n }\n\n str = str.trim().slice(1, -1);\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 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\nexports.MediaQuery = MediaQuery;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar Box = {\n ImNotTouchingYou: ImNotTouchingYou,\n OverlapArea: OverlapArea,\n GetDimensions: GetDimensions,\n GetExplicitOffsets: GetExplicitOffsets\n};\n\nfunction ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {\n return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;\n}\n\nfunction OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {\n var eleDims = GetDimensions(element),\n topOver,\n bottomOver,\n leftOver,\n rightOver;\n if (parent) {\n var parDims = GetDimensions(parent);\n\n bottomOver = parDims.height + parDims.offset.top - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - parDims.offset.top;\n leftOver = eleDims.offset.left - parDims.offset.left;\n rightOver = parDims.width + parDims.offset.left - (eleDims.offset.left + eleDims.width);\n } else {\n bottomOver = eleDims.windowDims.height + eleDims.windowDims.offset.top - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - eleDims.windowDims.offset.top;\n leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;\n rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);\n }\n\n bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);\n topOver = Math.min(topOver, 0);\n leftOver = Math.min(leftOver, 0);\n rightOver = Math.min(rightOver, 0);\n\n if (lrOnly) {\n return leftOver + rightOver;\n }\n if (tbOnly) {\n return topOver + bottomOver;\n }\n\n return Math.sqrt(topOver * topOver + bottomOver * bottomOver + leftOver * leftOver + rightOver * rightOver);\n}\n\nfunction GetDimensions(elem) {\n elem = elem.length ? elem[0] : elem;\n\n if (elem === window || elem === document) {\n throw new Error(\"I'm sorry, Dave. I'm afraid I can't do that.\");\n }\n\n var rect = elem.getBoundingClientRect(),\n parRect = elem.parentNode.getBoundingClientRect(),\n winRect = document.body.getBoundingClientRect(),\n winY = window.pageYOffset,\n winX = window.pageXOffset;\n\n return {\n width: rect.width,\n height: rect.height,\n offset: {\n top: rect.top + winY,\n left: rect.left + winX\n },\n parentDims: {\n width: parRect.width,\n height: parRect.height,\n offset: {\n top: parRect.top + winY,\n left: parRect.left + winX\n }\n },\n windowDims: {\n width: winRect.width,\n height: winRect.height,\n offset: {\n top: winY,\n left: winX\n }\n }\n };\n}\n\nfunction GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {\n var $eleDims = GetDimensions(element),\n $anchorDims = anchor ? GetDimensions(anchor) : null;\n\n var topVal, leftVal;\n\n if ($anchorDims !== null) {\n switch (position) {\n case 'top':\n topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);\n break;\n case 'bottom':\n topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;\n break;\n case 'left':\n leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);\n break;\n case 'right':\n leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;\n break;\n }\n\n switch (position) {\n case 'top':\n case 'bottom':\n switch (alignment) {\n case 'left':\n leftVal = $anchorDims.offset.left + hOffset;\n break;\n case 'right':\n leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;\n break;\n case 'center':\n leftVal = isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2 + hOffset;\n break;\n }\n break;\n case 'right':\n case 'left':\n switch (alignment) {\n case 'bottom':\n topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;\n break;\n case 'top':\n topVal = $anchorDims.offset.top + vOffset;\n break;\n case 'center':\n topVal = $anchorDims.offset.top + vOffset + $anchorDims.height / 2 - $eleDims.height / 2;\n break;\n }\n break;\n }\n }\n\n return { top: topVal, left: leftVal };\n}\n\nexports.Box = Box;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Motion = exports.Move = undefined;\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationCore = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar initClasses = ['mui-enter', 'mui-leave'];\nvar activeClasses = ['mui-enter-active', 'mui-leave-active'];\n\nvar Motion = {\n animateIn: function animateIn(element, animation, cb) {\n animate(true, element, animation, cb);\n },\n\n animateOut: function animateOut(element, animation, cb) {\n animate(false, element, animation, cb);\n }\n};\n\nfunction Move(duration, elem, fn) {\n var anim,\n prog,\n start = null;\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 prog = ts - start;\n fn.apply(elem);\n\n if (prog < duration) {\n 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\nfunction animate(isIn, element, animation, cb) {\n element = (0, _jquery2.default)(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 reset();\n\n element.addClass(animation).css('transition', 'none');\n\n requestAnimationFrame(function () {\n element.addClass(initClass);\n if (isIn) element.show();\n });\n\n requestAnimationFrame(function () {\n element[0].offsetWidth;\n element.css('transition', '').addClass(activeClass);\n });\n\n element.one((0, _foundationCore.transitionend)(element), finish);\n\n function finish() {\n if (!isIn) element.hide();\n reset();\n if (cb) cb.apply(element);\n }\n\n function reset() {\n element[0].style.transitionDuration = 0;\n element.removeClass(initClass + ' ' + activeClass + ' ' + animation);\n }\n}\n\nexports.Move = Move;\nexports.Motion = Motion;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Nest = undefined;\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Nest = {\n Feather: function Feather(menu) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'zf';\n\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';\n\n items.each(function () {\n var $item = (0, _jquery2.default)(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\n if (type === 'drilldown') {\n $item.attr({ 'aria-expanded': false });\n }\n }\n $sub.addClass('submenu ' + subMenuClass).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 Burn: function Burn(menu, type) {\n var subMenuClass = 'is-' + type + '-submenu',\n subItemClass = subMenuClass + '-item',\n hasSubClass = 'is-' + type + '-submenu-parent';\n\n menu.find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li').removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active').removeAttr('data-submenu').css('display', '');\n }\n};\n\nexports.Nest = Nest;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Triggers = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationCore = __webpack_require__(1);\n\nvar _foundationUtil = __webpack_require__(6);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar 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\nvar triggers = function triggers(el, type) {\n el.data(type).split(' ').forEach(function (id) {\n (0, _jquery2.default)('#' + 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 openListener() {\n triggers((0, _jquery2.default)(this), 'open');\n },\n closeListener: function closeListener() {\n var id = (0, _jquery2.default)(this).data('close');\n if (id) {\n triggers((0, _jquery2.default)(this), 'close');\n } else {\n (0, _jquery2.default)(this).trigger('close.zf.trigger');\n }\n },\n toggleListener: function toggleListener() {\n var id = (0, _jquery2.default)(this).data('toggle');\n if (id) {\n triggers((0, _jquery2.default)(this), 'toggle');\n } else {\n (0, _jquery2.default)(this).trigger('toggle.zf.trigger');\n }\n },\n closeableListener: function closeableListener(e) {\n var animation = (0, _jquery2.default)(this).data('closable');\n\n e.stopPropagation();\n\n if (animation !== '') {\n _foundationUtil.Motion.animateOut((0, _jquery2.default)(this), animation, function () {\n (0, _jquery2.default)(this).trigger('closed.zf');\n });\n } else {\n (0, _jquery2.default)(this).fadeOut().trigger('closed.zf');\n }\n },\n toggleFocusListener: function toggleFocusListener() {\n var id = (0, _jquery2.default)(this).data('toggle-focus');\n (0, _jquery2.default)('#' + id).triggerHandler('toggle.zf.trigger', [(0, _jquery2.default)(this)]);\n }\n};\n\nTriggers.Initializers.addOpenListener = function ($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\nTriggers.Initializers.addCloseListener = function ($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\nTriggers.Initializers.addToggleListener = function ($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\nTriggers.Initializers.addCloseableListener = function ($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\nTriggers.Initializers.addToggleFocusListener = function ($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\nTriggers.Listeners.Global = {\n resizeListener: function resizeListener($nodes) {\n if (!MutationObserver) {\n $nodes.each(function () {\n (0, _jquery2.default)(this).triggerHandler('resizeme.zf.trigger');\n });\n }\n\n $nodes.attr('data-events', \"resize\");\n },\n scrollListener: function scrollListener($nodes) {\n if (!MutationObserver) {\n $nodes.each(function () {\n (0, _jquery2.default)(this).triggerHandler('scrollme.zf.trigger');\n });\n }\n\n $nodes.attr('data-events', \"scroll\");\n },\n closeMeListener: function closeMeListener(e, pluginId) {\n var plugin = e.namespace.split('.')[0];\n var plugins = (0, _jquery2.default)('[data-' + plugin + ']').not('[data-yeti-box=\"' + pluginId + '\"]');\n\n plugins.each(function () {\n var _this = (0, _jquery2.default)(this);\n _this.triggerHandler('close.zf.trigger', [_this]);\n });\n }\n};\n\nTriggers.Initializers.addClosemeListener = function (pluginName) {\n var yetiBoxes = (0, _jquery2.default)('[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 === 'undefined' ? 'undefined' : _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 var listeners = plugNames.map(function (name) {\n return 'closeme.zf.' + name;\n }).join(' ');\n\n (0, _jquery2.default)(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n }\n};\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n var timer = void 0,\n args = Array.prototype.slice.call(arguments, 3);\n (0, _jquery2.default)(window).on(trigger, function () {\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(function () {\n listener.apply(null, args);\n }, debounce || 10);\n });\n}\n\nTriggers.Initializers.addResizeListener = function (debounce) {\n var $nodes = (0, _jquery2.default)('[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 var $nodes = (0, _jquery2.default)('[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) {\n return false;\n }\n var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {\n var $target = (0, _jquery2.default)(mutationRecordsList[0].target);\n\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 }\n };\n\n if ($nodes.length) {\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 var $document = (0, _jquery2.default)(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\nTriggers.Initializers.addGlobalListeners = function () {\n var $document = (0, _jquery2.default)(document);\n Triggers.Initializers.addMutationEventsListener($document);\n Triggers.Initializers.addResizeListener(250);\n Triggers.Initializers.addScrollListener();\n Triggers.Initializers.addClosemeListener();\n};\n\nTriggers.init = function (__, Foundation) {\n (0, _foundationCore.onLoad)((0, _jquery2.default)(window), function () {\n if (_jquery2.default.triggersInitialized !== true) {\n Triggers.Initializers.addSimpleListeners();\n Triggers.Initializers.addGlobalListeners();\n _jquery2.default.triggersInitialized = true;\n }\n });\n\n if (Foundation) {\n Foundation.Triggers = Triggers;\n\n Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;\n }\n};\n\nexports.Triggers = Triggers;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Touch = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Touch = {};\n\nvar startPosX,\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 (!didMoved) {\n var tapEvent = _jquery2.default.Event('tap', startEvent || e);\n (0, _jquery2.default)(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if (true === _jquery2.default.spotSwipe.preventDefault) {\n e.preventDefault();\n }\n\n if (isMoving) {\n var x = e.touches[0].pageX;\n\n var dx = startPosX - x;\n\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if (Math.abs(dx) >= _jquery2.default.spotSwipe.moveThreshold && elapsedTime <= _jquery2.default.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n\n if (dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n (0, _jquery2.default)(this).trigger(_jquery2.default.Event('swipe', Object.assign({}, e)), dir).trigger(_jquery2.default.Event('swipe' + dir, Object.assign({}, e)));\n }\n }\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length === 1) {\n startPosX = e.touches[0].pageX;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, { passive: true === _jquery2.default.spotSwipe.preventDefault });\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, { passive: true });\n}\n\nvar SpotSwipe = function () {\n function SpotSwipe() {\n _classCallCheck(this, SpotSwipe);\n\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._init();\n }\n\n _createClass(SpotSwipe, [{\n key: '_init',\n value: function _init() {\n _jquery2.default.event.special.swipe = { setup: init };\n _jquery2.default.event.special.tap = { setup: init };\n\n _jquery2.default.each(['left', 'up', 'down', 'right'], function () {\n _jquery2.default.event.special['swipe' + this] = { setup: function setup() {\n (0, _jquery2.default)(this).on('swipe', _jquery2.default.noop);\n } };\n });\n }\n }]);\n\n return SpotSwipe;\n}();\n\nTouch.setupSpotSwipe = function () {\n _jquery2.default.spotSwipe = new SpotSwipe(_jquery2.default);\n};\n\nTouch.setupTouchHandler = function () {\n _jquery2.default.fn.addTouch = function () {\n this.each(function (i, el) {\n (0, _jquery2.default)(el).bind('touchstart touchmove touchend touchcancel', function (event) {\n handleTouch(event);\n });\n });\n\n var handleTouch = function handleTouch(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 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, null);\n }\n first.target.dispatchEvent(simulatedEvent);\n };\n };\n};\n\nTouch.init = function () {\n if (typeof _jquery2.default.spotSwipe === 'undefined') {\n Touch.setupSpotSwipe(_jquery2.default);\n Touch.setupTouchHandler(_jquery2.default);\n }\n};\n\nexports.Touch = Touch;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.onImagesLoaded = undefined;\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction onImagesLoaded(images, callback) {\n var unloaded = images.length;\n\n if (unloaded === 0) {\n callback();\n }\n\n images.each(function () {\n if (this.complete && typeof this.naturalWidth !== 'undefined') {\n singleImageLoaded();\n } else {\n var image = new Image();\n\n var events = \"load.zf.images error.zf.images\";\n (0, _jquery2.default)(image).one(events, function me() {\n (0, _jquery2.default)(this).off(events, me);\n singleImageLoaded();\n });\n image.src = (0, _jquery2.default)(this).attr('src');\n }\n });\n\n function singleImageLoaded() {\n unloaded--;\n if (unloaded === 0) {\n callback();\n }\n }\n}\n\nexports.onImagesLoaded = onImagesLoaded;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AccordionMenu = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationUtil = __webpack_require__(3);\n\nvar _foundationUtil2 = __webpack_require__(7);\n\nvar _foundationCore = __webpack_require__(1);\n\nvar _foundationCore2 = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar AccordionMenu = function (_Plugin) {\n _inherits(AccordionMenu, _Plugin);\n\n function AccordionMenu() {\n _classCallCheck(this, AccordionMenu);\n\n return _possibleConstructorReturn(this, (AccordionMenu.__proto__ || Object.getPrototypeOf(AccordionMenu)).apply(this, arguments));\n }\n\n _createClass(AccordionMenu, [{\n key: '_setup',\n value: function _setup(element, options) {\n this.$element = element;\n this.options = _jquery2.default.extend({}, AccordionMenu.defaults, this.$element.data(), options);\n this.className = 'AccordionMenu';\n\n this._init();\n\n _foundationUtil.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 key: '_init',\n value: function _init() {\n _foundationUtil2.Nest.Feather(this.$element, 'accordion');\n\n var _this = this;\n\n this.$element.find('[data-submenu]').not('.is-active').slideUp(0);\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 || (0, _foundationCore.GetYoDigits)(6, 'acc-menu-link'),\n $elem = (0, _jquery2.default)(this),\n $sub = $elem.children('[data-submenu]'),\n subId = $sub[0].id || (0, _foundationCore.GetYoDigits)(6, 'acc-menu'),\n isActive = $sub.hasClass('is-active');\n\n if (_this.options.parentLink) {\n var $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((0, _jquery2.default)(this));\n });\n }\n this._events();\n }\n }, {\n key: '_events',\n value: function _events() {\n var _this = this;\n\n this.$element.find('li').each(function () {\n var $submenu = (0, _jquery2.default)(this).children('[data-submenu]');\n\n if ($submenu.length) {\n if (_this.options.submenuToggle) {\n (0, _jquery2.default)(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function () {\n _this.toggle($submenu);\n });\n } else {\n (0, _jquery2.default)(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 = (0, _jquery2.default)(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 ((0, _jquery2.default)(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 ((0, _jquery2.default)(this).children('[data-submenu]:visible').length) {\n $nextElement = $element.find('li:first-child').find('a').first();\n }\n if ((0, _jquery2.default)(this).is(':first-child')) {\n $prevElement = $element.parents('li').first().find('a').first();\n } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) {\n $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();\n }\n if ((0, _jquery2.default)(this).is(':last-child')) {\n $nextElement = $element.parents('li').first().next('li').find('a').first();\n }\n\n return;\n }\n });\n\n _foundationUtil.Keyboard.handleKey(e, 'AccordionMenu', {\n open: function open() {\n if ($target.is(':hidden')) {\n _this.down($target);\n $target.find('li').first().find('a').first().focus();\n }\n },\n close: function close() {\n if ($target.length && !$target.is(':hidden')) {\n _this.up($target);\n } else if ($element.parent('[data-submenu]').length) {\n _this.up($element.parent('[data-submenu]'));\n $element.parents('li').first().find('a').first().focus();\n }\n },\n up: function up() {\n $prevElement.focus();\n return true;\n },\n down: function down() {\n $nextElement.focus();\n return true;\n },\n toggle: function toggle() {\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 closeAll() {\n _this.hideAll();\n },\n handled: function handled(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n });\n }\n }, {\n key: 'hideAll',\n value: function hideAll() {\n this.up(this.$element.find('[data-submenu]'));\n }\n }, {\n key: 'showAll',\n value: function showAll() {\n this.down(this.$element.find('[data-submenu]'));\n }\n }, {\n key: 'toggle',\n value: function toggle($target) {\n if (!$target.is(':animated')) {\n if (!$target.is(':hidden')) {\n this.up($target);\n } else {\n this.down($target);\n }\n }\n }\n }, {\n key: 'down',\n value: function down($target) {\n var _this3 = this;\n\n if (!this.options.multiOpen) {\n var $targetBranch = $target.parentsUntil(this.$element).add($target).add($target.find('.is-active'));\n\n var $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);\n\n this.up($othersActiveSubmenus);\n }\n\n $target.addClass('is-active').attr({ 'aria-hidden': false });\n\n if (this.options.submenuToggle) {\n $target.prev('.submenu-toggle').attr({ 'aria-expanded': true });\n } else {\n $target.parent('.is-accordion-submenu-parent').attr({ 'aria-expanded': true });\n }\n\n $target.slideDown(this.options.slideSpeed, function () {\n _this3.$element.trigger('down.zf.accordionMenu', [$target]);\n });\n }\n }, {\n key: 'up',\n value: function up($target) {\n var _this4 = this;\n\n var $submenus = $target.find('[data-submenu]');\n var $allmenus = $target.add($submenus);\n\n $submenus.slideUp(0);\n $allmenus.removeClass('is-active').attr('aria-hidden', true);\n\n if (this.options.submenuToggle) {\n $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);\n } else {\n $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);\n }\n\n $target.slideUp(this.options.slideSpeed, function () {\n _this4.$element.trigger('up.zf.accordionMenu', [$target]);\n });\n }\n }, {\n key: '_destroy',\n value: function _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 _foundationUtil2.Nest.Burn(this.$element, 'accordion');\n }\n }]);\n\n return AccordionMenu;\n}(_foundationCore2.Plugin);\n\nAccordionMenu.defaults = {\n parentLink: false,\n\n slideSpeed: 250,\n\n submenuToggle: false,\n\n submenuToggleText: 'Toggle menu',\n\n multiOpen: true\n};\n\nexports.AccordionMenu = AccordionMenu;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Drilldown = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationUtil = __webpack_require__(3);\n\nvar _foundationUtil2 = __webpack_require__(7);\n\nvar _foundationCore = __webpack_require__(1);\n\nvar _foundationUtil3 = __webpack_require__(5);\n\nvar _foundationCore2 = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Drilldown = function (_Plugin) {\n _inherits(Drilldown, _Plugin);\n\n function Drilldown() {\n _classCallCheck(this, Drilldown);\n\n return _possibleConstructorReturn(this, (Drilldown.__proto__ || Object.getPrototypeOf(Drilldown)).apply(this, arguments));\n }\n\n _createClass(Drilldown, [{\n key: '_setup',\n value: function _setup(element, options) {\n this.$element = element;\n this.options = _jquery2.default.extend({}, Drilldown.defaults, this.$element.data(), options);\n this.className = 'Drilldown';\n\n this._init();\n\n _foundationUtil.Keyboard.register('Drilldown', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close'\n });\n }\n }, {\n key: '_init',\n value: function _init() {\n _foundationUtil2.Nest.Feather(this.$element, 'drilldown');\n\n if (this.options.autoApplyClass) {\n this.$element.addClass('drilldown');\n }\n\n this.$element.attr({\n 'aria-multiselectable': false\n });\n this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');\n this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');\n this.$menuItems = this.$element.find('li').not('.js-drilldown-back').find('a');\n\n this.$currentMenu = this.$element;\n\n this.$element.attr('data-mutate', this.$element.attr('data-drilldown') || (0, _foundationCore.GetYoDigits)(6, 'drilldown'));\n\n this._prepareMenu();\n this._registerEvents();\n\n this._keyboardEvents();\n }\n }, {\n key: '_prepareMenu',\n value: function _prepareMenu() {\n var _this = this;\n\n this.$submenuAnchors.each(function () {\n var $link = (0, _jquery2.default)(this);\n var $sub = $link.parent();\n if (_this.options.parentLink) {\n $link.clone().prependTo($sub.children('[data-submenu]')).wrap('
  • ');\n }\n $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);\n $link.children('[data-submenu]').attr({\n 'aria-hidden': true,\n 'tabindex': 0,\n 'role': 'group'\n });\n _this._events($link);\n });\n this.$submenus.each(function () {\n var $menu = (0, _jquery2.default)(this),\n $back = $menu.find('.js-drilldown-back');\n if (!$back.length) {\n switch (_this.options.backButtonPosition) {\n case \"bottom\":\n $menu.append(_this.options.backButton);\n break;\n case \"top\":\n $menu.prepend(_this.options.backButton);\n break;\n default:\n console.error(\"Unsupported backButtonPosition value '\" + _this.options.backButtonPosition + \"'\");\n }\n }\n _this._back($menu);\n });\n\n this.$submenus.addClass('invisible');\n if (!this.options.autoHeight) {\n this.$submenus.addClass('drilldown-submenu-cover-previous');\n }\n\n if (!this.$element.parent().hasClass('is-drilldown')) {\n this.$wrapper = (0, _jquery2.default)(this.options.wrapper).addClass('is-drilldown');\n if (this.options.animateHeight) this.$wrapper.addClass('animate-height');\n this.$element.wrap(this.$wrapper);\n }\n\n this.$wrapper = this.$element.parent();\n this.$wrapper.css(this._getMaxDims());\n }\n }, {\n key: '_resize',\n value: function _resize() {\n this.$wrapper.css({ 'max-width': 'none', 'min-height': 'none' });\n\n this.$wrapper.css(this._getMaxDims());\n }\n }, {\n key: '_events',\n value: function _events($elem) {\n var _this = this;\n\n $elem.off('click.zf.drilldown').on('click.zf.drilldown', function (e) {\n if ((0, _jquery2.default)(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')) {\n e.preventDefault();\n }\n\n _this._show($elem.parent('li'));\n\n if (_this.options.closeOnClick) {\n var $body = (0, _jquery2.default)('body');\n $body.off('.zf.drilldown').on('click.zf.drilldown', function (ev) {\n if (ev.target === _this.$element[0] || _jquery2.default.contains(_this.$element[0], ev.target)) {\n return;\n }\n ev.preventDefault();\n _this._hideAll();\n $body.off('.zf.drilldown');\n });\n }\n });\n }\n }, {\n key: '_registerEvents',\n value: function _registerEvents() {\n if (this.options.scrollTop) {\n this._bindHandler = this._scrollTop.bind(this);\n this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown', this._bindHandler);\n }\n this.$element.on('mutateme.zf.trigger', this._resize.bind(this));\n }\n }, {\n key: '_scrollTop',\n value: function _scrollTop() {\n var _this = this;\n var $scrollTopElement = _this.options.scrollTopElement !== '' ? (0, _jquery2.default)(_this.options.scrollTopElement) : _this.$element,\n scrollPos = parseInt($scrollTopElement.offset().top + _this.options.scrollTopOffset, 10);\n (0, _jquery2.default)('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing, function () {\n if (this === (0, _jquery2.default)('html')[0]) _this.$element.trigger('scrollme.zf.drilldown');\n });\n }\n }, {\n key: '_keyboardEvents',\n value: function _keyboardEvents() {\n var _this = this;\n\n this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function (e) {\n var $element = (0, _jquery2.default)(this),\n $elements = $element.parent('li').parent('ul').children('li').children('a'),\n $prevElement,\n $nextElement;\n\n $elements.each(function (i) {\n if ((0, _jquery2.default)(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i - 1));\n $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1));\n return;\n }\n });\n\n _foundationUtil.Keyboard.handleKey(e, 'Drilldown', {\n next: function next() {\n if ($element.is(_this.$submenuAnchors)) {\n _this._show($element.parent('li'));\n $element.parent('li').one((0, _foundationCore.transitionend)($element), function () {\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n previous: function previous() {\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one((0, _foundationCore.transitionend)($element), function () {\n setTimeout(function () {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n },\n up: function up() {\n $prevElement.focus();\n\n return !$element.is(_this.$element.find('> li:first-child > a'));\n },\n down: function down() {\n $nextElement.focus();\n\n return !$element.is(_this.$element.find('> li:last-child > a'));\n },\n close: function close() {\n if (!$element.is(_this.$element.find('> li > a'))) {\n _this._hide($element.parent().parent());\n $element.parent().parent().siblings('a').focus();\n }\n },\n open: function open() {\n if (_this.options.parentLink && $element.attr('href')) {\n return false;\n } else if (!$element.is(_this.$menuItems)) {\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one((0, _foundationCore.transitionend)($element), function () {\n setTimeout(function () {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n } else if ($element.is(_this.$submenuAnchors)) {\n _this._show($element.parent('li'));\n $element.parent('li').one((0, _foundationCore.transitionend)($element), function () {\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n handled: function handled(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n });\n }\n }, {\n key: '_hideAll',\n value: function _hideAll() {\n var _this3 = this;\n\n var $elem = this.$element.find('.is-drilldown-submenu.is-active');\n $elem.addClass('is-closing');\n\n if (this.options.autoHeight) {\n var calcHeight = $elem.parent().closest('ul').data('calcHeight');\n this.$wrapper.css({ height: calcHeight });\n }\n\n this.$element.trigger('close.zf.drilldown');\n\n $elem.one((0, _foundationCore.transitionend)($elem), function () {\n $elem.removeClass('is-active is-closing');\n\n _this3.$element.trigger('closed.zf.drilldown');\n });\n }\n }, {\n key: '_back',\n value: function _back($elem) {\n var _this = this;\n $elem.off('click.zf.drilldown');\n $elem.children('.js-drilldown-back').on('click.zf.drilldown', function () {\n _this._hide($elem);\n\n var parentSubMenu = $elem.parent('li').parent('ul').parent('li');\n if (parentSubMenu.length) {\n _this._show(parentSubMenu);\n } else {\n _this.$currentMenu = _this.$element;\n }\n });\n }\n }, {\n key: '_menuLinkEvents',\n value: function _menuLinkEvents() {\n var _this = this;\n this.$menuItems.not('.is-drilldown-submenu-parent').off('click.zf.drilldown').on('click.zf.drilldown', function () {\n setTimeout(function () {\n _this._hideAll();\n }, 0);\n });\n }\n }, {\n key: '_setShowSubMenuClasses',\n value: function _setShowSubMenuClasses($elem, trigger) {\n $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\n $elem.parent('li').attr('aria-expanded', true);\n if (trigger === true) {\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n }\n }, {\n key: '_setHideSubMenuClasses',\n value: function _setHideSubMenuClasses($elem, trigger) {\n $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);\n $elem.parent('li').attr('aria-expanded', false);\n if (trigger === true) {\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n }\n }, {\n key: '_showMenu',\n value: function _showMenu($elem, autoFocus) {\n\n var _this = this;\n\n var $expandedSubmenus = this.$element.find('li[aria-expanded=\"true\"] > ul[data-submenu]');\n $expandedSubmenus.each(function () {\n _this._setHideSubMenuClasses((0, _jquery2.default)(this));\n });\n\n this.$currentMenu = $elem;\n\n if ($elem.is('[data-drilldown]')) {\n if (autoFocus === true) $elem.find('li > a').first().focus();\n if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));\n return;\n }\n\n var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]');\n\n $submenus.each(function (index) {\n if (index === 0 && _this.options.autoHeight) {\n _this.$wrapper.css('height', (0, _jquery2.default)(this).data('calcHeight'));\n }\n\n var isLastChild = index === $submenus.length - 1;\n\n if (isLastChild === true) {\n (0, _jquery2.default)(this).one((0, _foundationCore.transitionend)((0, _jquery2.default)(this)), function () {\n if (autoFocus === true) {\n $elem.find('li > a').first().focus();\n }\n });\n }\n\n _this._setShowSubMenuClasses((0, _jquery2.default)(this), isLastChild);\n });\n }\n }, {\n key: '_show',\n value: function _show($elem) {\n var $submenu = $elem.children('[data-submenu]');\n\n $elem.attr('aria-expanded', true);\n\n this.$currentMenu = $submenu;\n\n $elem.parent().closest('ul').addClass('invisible');\n\n $submenu.addClass('is-active visible').removeClass('invisible').attr('aria-hidden', false);\n\n if (this.options.autoHeight) {\n this.$wrapper.css({ height: $submenu.data('calcHeight') });\n }\n\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n }, {\n key: '_hide',\n value: function _hide($elem) {\n if (this.options.autoHeight) this.$wrapper.css({ height: $elem.parent().closest('ul').data('calcHeight') });\n $elem.parent().closest('ul').removeClass('invisible');\n $elem.parent('li').attr('aria-expanded', false);\n $elem.attr('aria-hidden', true);\n $elem.addClass('is-closing').one((0, _foundationCore.transitionend)($elem), function () {\n $elem.removeClass('is-active is-closing visible');\n $elem.blur().addClass('invisible');\n });\n\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n }, {\n key: '_getMaxDims',\n value: function _getMaxDims() {\n var maxHeight = 0,\n result = {},\n _this = this;\n\n this.$submenus.add(this.$element).each(function () {\n var height = _foundationUtil3.Box.GetDimensions(this).height;\n\n maxHeight = height > maxHeight ? height : maxHeight;\n\n if (_this.options.autoHeight) {\n (0, _jquery2.default)(this).data('calcHeight', height);\n }\n });\n\n if (this.options.autoHeight) result.height = this.$currentMenu.data('calcHeight');else result['min-height'] = maxHeight + 'px';\n\n result['max-width'] = this.$element[0].getBoundingClientRect().width + 'px';\n\n return result;\n }\n }, {\n key: '_destroy',\n value: function _destroy() {\n (0, _jquery2.default)('body').off('.zf.drilldown');\n if (this.options.scrollTop) this.$element.off('.zf.drilldown', this._bindHandler);\n this._hideAll();\n this.$element.off('mutateme.zf.trigger');\n _foundationUtil2.Nest.Burn(this.$element, 'drilldown');\n this.$element.unwrap().find('.js-drilldown-back, .is-submenu-parent-item').remove().end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').off('transitionend otransitionend webkitTransitionEnd').end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');\n this.$submenuAnchors.each(function () {\n (0, _jquery2.default)(this).off('.zf.drilldown');\n });\n\n this.$element.find('[data-is-parent-link]').detach();\n this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');\n\n this.$element.find('a').each(function () {\n var $link = (0, _jquery2.default)(this);\n $link.removeAttr('tabindex');\n if ($link.data('savedHref')) {\n $link.attr('href', $link.data('savedHref')).removeData('savedHref');\n } else {\n return;\n }\n });\n }\n }]);\n\n return Drilldown;\n}(_foundationCore2.Plugin);\n\nDrilldown.defaults = {\n autoApplyClass: true,\n\n backButton: '
  • Back
  • ',\n\n backButtonPosition: 'top',\n\n wrapper: '
    ',\n\n parentLink: false,\n\n closeOnClick: false,\n\n autoHeight: false,\n\n animateHeight: false,\n\n scrollTop: false,\n\n scrollTopElement: '',\n\n scrollTopOffset: 0,\n\n animationDuration: 500,\n\n animationEasing: 'swing'\n};\n\nexports.Drilldown = Drilldown;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DropdownMenu = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationCore = __webpack_require__(2);\n\nvar _foundationCore2 = __webpack_require__(1);\n\nvar _foundationUtil = __webpack_require__(3);\n\nvar _foundationUtil2 = __webpack_require__(7);\n\nvar _foundationUtil3 = __webpack_require__(5);\n\nvar _foundationUtil4 = __webpack_require__(9);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DropdownMenu = function (_Plugin) {\n _inherits(DropdownMenu, _Plugin);\n\n function DropdownMenu() {\n _classCallCheck(this, DropdownMenu);\n\n return _possibleConstructorReturn(this, (DropdownMenu.__proto__ || Object.getPrototypeOf(DropdownMenu)).apply(this, arguments));\n }\n\n _createClass(DropdownMenu, [{\n key: '_setup',\n value: function _setup(element, options) {\n this.$element = element;\n this.options = _jquery2.default.extend({}, DropdownMenu.defaults, this.$element.data(), options);\n this.className = 'DropdownMenu';\n\n _foundationUtil4.Touch.init(_jquery2.default);\n\n this._init();\n\n _foundationUtil.Keyboard.register('DropdownMenu', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close'\n });\n }\n }, {\n key: '_init',\n value: function _init() {\n _foundationUtil2.Nest.Feather(this.$element, 'dropdown');\n\n var subs = this.$element.find('li.is-dropdown-submenu-parent');\n this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');\n\n this.$menuItems = this.$element.find('li[role=\"none\"]');\n this.$tabs = this.$element.children('li[role=\"none\"]');\n this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);\n\n if (this.options.alignment === 'auto') {\n if (this.$element.hasClass(this.options.rightClass) || (0, _foundationCore2.rtl)() || this.$element.parents('.top-bar-right').is('*')) {\n this.options.alignment = 'right';\n subs.addClass('opens-left');\n } else {\n this.options.alignment = 'left';\n subs.addClass('opens-right');\n }\n } else {\n if (this.options.alignment === 'right') {\n subs.addClass('opens-left');\n } else {\n subs.addClass('opens-right');\n }\n }\n this.changed = false;\n this._events();\n }\n }, {\n key: '_isVertical',\n value: function _isVertical() {\n return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';\n }\n }, {\n key: '_isRtl',\n value: function _isRtl() {\n return this.$element.hasClass('align-right') || (0, _foundationCore2.rtl)() && !this.$element.hasClass('align-left');\n }\n }, {\n key: '_events',\n value: function _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined',\n parClass = 'is-dropdown-submenu-parent';\n\n var handleClickFn = function handleClickFn(e) {\n var $elem = (0, _jquery2.default)(e.target).parentsUntil('ul', '.' + parClass),\n hasSub = $elem.hasClass(parClass),\n hasClicked = $elem.attr('data-is-click') === 'true',\n $sub = $elem.children('.is-dropdown-submenu');\n\n if (hasSub) {\n if (hasClicked) {\n if (!_this.options.closeOnClick || !_this.options.clickOpen && !hasTouch || _this.options.forceFollow && hasTouch) {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._hide($elem);\n } else {\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._show($sub);\n $elem.add($elem.parentsUntil(_this.$element, '.' + parClass)).attr('data-is-click', true);\n }\n }\n };\n\n if (this.options.clickOpen || hasTouch) {\n this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClickFn);\n }\n\n if (_this.options.closeOnClickInside) {\n this.$menuItems.on('click.zf.dropdownMenu', function () {\n var $elem = (0, _jquery2.default)(this),\n hasSub = $elem.hasClass(parClass);\n if (!hasSub) {\n _this._hide();\n }\n });\n }\n\n if (hasTouch && this.options.disableHoverOnTouch) this.options.disableHover = true;\n\n if (!this.options.disableHover) {\n this.$menuItems.on('mouseenter.zf.dropdownMenu', function () {\n var $elem = (0, _jquery2.default)(this),\n hasSub = $elem.hasClass(parClass);\n\n if (hasSub) {\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._show($elem.children('.is-dropdown-submenu'));\n }, _this.options.hoverDelay));\n }\n }).on('mouseleave.zf.dropdownMenu', (0, _foundationCore2.ignoreMousedisappear)(function () {\n var $elem = (0, _jquery2.default)(this),\n hasSub = $elem.hasClass(parClass);\n if (hasSub && _this.options.autoclose) {\n if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) {\n return false;\n }\n\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._hide($elem);\n }, _this.options.closingTime));\n }\n }));\n }\n this.$menuItems.on('keydown.zf.dropdownMenu', function (e) {\n var $element = (0, _jquery2.default)(e.target).parentsUntil('ul', '[role=\"none\"]'),\n isTab = _this.$tabs.index($element) > -1,\n $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),\n $prevElement,\n $nextElement;\n\n $elements.each(function (i) {\n if ((0, _jquery2.default)(this).is($element)) {\n $prevElement = $elements.eq(i - 1);\n $nextElement = $elements.eq(i + 1);\n return;\n }\n });\n\n var nextSibling = function nextSibling() {\n $nextElement.children('a:first').focus();\n e.preventDefault();\n },\n prevSibling = function prevSibling() {\n $prevElement.children('a:first').focus();\n e.preventDefault();\n },\n openSub = function openSub() {\n var $sub = $element.children('ul.is-dropdown-submenu');\n if ($sub.length) {\n _this._show($sub);\n $element.find('li > a:first').focus();\n e.preventDefault();\n } else {\n return;\n }\n },\n closeSub = function closeSub() {\n var close = $element.parent('ul').parent('li');\n close.children('a:first').focus();\n _this._hide(close);\n e.preventDefault();\n };\n var functions = {\n open: openSub,\n close: function close() {\n _this._hide(_this.$element);\n _this.$menuItems.eq(0).children('a').focus();\n e.preventDefault();\n }\n };\n\n if (isTab) {\n if (_this._isVertical()) {\n if (_this._isRtl()) {\n _jquery2.default.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: closeSub,\n previous: openSub\n });\n } else {\n _jquery2.default.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: openSub,\n previous: closeSub\n });\n }\n } else {\n if (_this._isRtl()) {\n _jquery2.default.extend(functions, {\n next: prevSibling,\n previous: nextSibling,\n down: openSub,\n up: closeSub\n });\n } else {\n _jquery2.default.extend(functions, {\n next: nextSibling,\n previous: prevSibling,\n down: openSub,\n up: closeSub\n });\n }\n }\n } else {\n if (_this._isRtl()) {\n _jquery2.default.extend(functions, {\n next: closeSub,\n previous: openSub,\n down: nextSibling,\n up: prevSibling\n });\n } else {\n _jquery2.default.extend(functions, {\n next: openSub,\n previous: closeSub,\n down: nextSibling,\n up: prevSibling\n });\n }\n }\n _foundationUtil.Keyboard.handleKey(e, 'DropdownMenu', functions);\n });\n }\n }, {\n key: '_addBodyHandler',\n value: function _addBodyHandler() {\n var _this3 = this;\n\n var $body = (0, _jquery2.default)(document.body);\n this._removeBodyHandler();\n $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', function (e) {\n var isItself = !!(0, _jquery2.default)(e.target).closest(_this3.$element).length;\n if (isItself) return;\n\n _this3._hide();\n _this3._removeBodyHandler();\n });\n }\n }, {\n key: '_removeBodyHandler',\n value: function _removeBodyHandler() {\n (0, _jquery2.default)(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');\n }\n }, {\n key: '_show',\n value: function _show($sub) {\n var idx = this.$tabs.index(this.$tabs.filter(function (i, el) {\n return (0, _jquery2.default)(el).find($sub).length > 0;\n }));\n var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');\n this._hide($sibs, idx);\n $sub.css('visibility', 'hidden').addClass('js-dropdown-active').parent('li.is-dropdown-submenu-parent').addClass('is-active');\n var clear = _foundationUtil3.Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n var oldClass = this.options.alignment === 'left' ? '-right' : '-left',\n $parentLi = $sub.parent('.is-dropdown-submenu-parent');\n $parentLi.removeClass('opens' + oldClass).addClass('opens-' + this.options.alignment);\n clear = _foundationUtil3.Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n $parentLi.removeClass('opens-' + this.options.alignment).addClass('opens-inner');\n }\n this.changed = true;\n }\n $sub.css('visibility', '');\n if (this.options.closeOnClick) {\n this._addBodyHandler();\n }\n\n this.$element.trigger('show.zf.dropdownMenu', [$sub]);\n }\n }, {\n key: '_hide',\n value: function _hide($elem, idx) {\n var $toClose;\n if ($elem && $elem.length) {\n $toClose = $elem;\n } else if (typeof idx !== 'undefined') {\n $toClose = this.$tabs.not(function (i) {\n return i === idx;\n });\n } else {\n $toClose = this.$element;\n }\n var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;\n\n if (somethingToClose) {\n var $activeItem = $toClose.find('li.is-active');\n $activeItem.add($toClose).attr({\n 'data-is-click': false\n }).removeClass('is-active');\n\n $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');\n\n if (this.changed || $toClose.find('opens-inner').length) {\n var oldClass = this.options.alignment === 'left' ? 'right' : 'left';\n $toClose.find('li.is-dropdown-submenu-parent').add($toClose).removeClass('opens-inner opens-' + this.options.alignment).addClass('opens-' + oldClass);\n this.changed = false;\n }\n\n clearTimeout($activeItem.data('_delay'));\n this._removeBodyHandler();\n\n this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);\n }\n }\n }, {\n key: '_destroy',\n value: function _destroy() {\n this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click').removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');\n (0, _jquery2.default)(document.body).off('.zf.dropdownMenu');\n _foundationUtil2.Nest.Burn(this.$element, 'dropdown');\n }\n }]);\n\n return DropdownMenu;\n}(_foundationCore.Plugin);\n\nDropdownMenu.defaults = {\n disableHover: false,\n\n disableHoverOnTouch: true,\n\n autoclose: true,\n\n hoverDelay: 50,\n\n clickOpen: false,\n\n\n closingTime: 500,\n\n alignment: 'auto',\n\n closeOnClick: true,\n\n closeOnClickInside: true,\n\n verticalClass: 'vertical',\n\n rightClass: 'align-right',\n\n forceFollow: true\n};\n\nexports.DropdownMenu = DropdownMenu;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(15);\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n__webpack_require__(16);\n\nvar _fitvids = __webpack_require__(27);\n\nvar _fitvids2 = _interopRequireDefault(_fitvids);\n\n__webpack_require__(28);\n\n__webpack_require__(29);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _jquery2.default)(document).foundation();\n\n(0, _fitvids2.default)();\n\nwindow.objectFitPolyfill();\n\n(function () {\n\t(0, _jquery2.default)(window).on('changed.zf.mediaquery', toggleAccourdian);\n\tif (window.Foundation.MediaQuery.atLeast('large')) {\n\t\ttoggleAccourdian();\n\t}\n\tfunction toggleAccourdian() {\n\t\tvar $accourdian = (0, _jquery2.default)('#search-accordion');\n\t\tif ($accourdian.length > 0) {\n\t\t\t$accourdian.foundation('toggle', (0, _jquery2.default)('.accordion-content:first'));\n\t\t}\n\t}\n})();\n\n(0, _jquery2.default)('#search-dropdown, #search-dropdown-mobile').on('click', function (evt) {\n\tevt.preventDefault();\n\t(0, _jquery2.default)('#search-dropdown-wrap').addClass('is_open');\n\t(0, _jquery2.default)('#searchform').find('input:first').focus();\n});\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundation = __webpack_require__(17);\n\nvar _foundationCore = __webpack_require__(1);\n\nvar _foundationUtil = __webpack_require__(5);\n\nvar _foundationUtil2 = __webpack_require__(10);\n\nvar _foundationUtil3 = __webpack_require__(3);\n\nvar _foundationUtil4 = __webpack_require__(4);\n\nvar _foundationUtil5 = __webpack_require__(6);\n\nvar _foundationUtil6 = __webpack_require__(7);\n\nvar _foundationUtil7 = __webpack_require__(18);\n\nvar _foundationUtil8 = __webpack_require__(9);\n\nvar _foundationUtil9 = __webpack_require__(8);\n\nvar _foundation2 = __webpack_require__(19);\n\nvar _foundation3 = __webpack_require__(11);\n\nvar _foundation4 = __webpack_require__(12);\n\nvar _foundation5 = __webpack_require__(20);\n\nvar _foundation6 = __webpack_require__(13);\n\nvar _foundation7 = __webpack_require__(22);\n\nvar _foundation8 = __webpack_require__(23);\n\nvar _foundation9 = __webpack_require__(24);\n\nvar _foundation10 = __webpack_require__(25);\n\nvar _foundation11 = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_foundation.Foundation.addToJquery(_jquery2.default);\n\n_foundation.Foundation.rtl = _foundationCore.rtl;\n_foundation.Foundation.GetYoDigits = _foundationCore.GetYoDigits;\n_foundation.Foundation.transitionend = _foundationCore.transitionend;\n\n_foundation.Foundation.Box = _foundationUtil.Box;\n_foundation.Foundation.onImagesLoaded = _foundationUtil2.onImagesLoaded;\n_foundation.Foundation.Keyboard = _foundationUtil3.Keyboard;\n_foundation.Foundation.MediaQuery = _foundationUtil4.MediaQuery;\n_foundation.Foundation.Motion = _foundationUtil5.Motion;\n_foundation.Foundation.Move = _foundationUtil5.Move;\n_foundation.Foundation.Nest = _foundationUtil6.Nest;\n_foundation.Foundation.Timer = _foundationUtil7.Timer;\n\n_foundationUtil8.Touch.init(_jquery2.default);\n\n_foundationUtil9.Triggers.init(_jquery2.default, _foundation.Foundation);\n\n_foundation.Foundation.plugin(_foundation2.Accordion, 'Accordion');\n\n_foundation.Foundation.plugin(_foundation3.AccordionMenu, 'AccordionMenu');\n\n_foundation.Foundation.plugin(_foundation4.Drilldown, 'Drilldown');\n\n_foundation.Foundation.plugin(_foundation5.Dropdown, 'Dropdown');\n\n_foundation.Foundation.plugin(_foundation6.DropdownMenu, 'DropdownMenu');\n\n_foundation.Foundation.plugin(_foundation7.Equalizer, 'Equalizer');\n\n_foundation.Foundation.plugin(_foundation8.OffCanvas, 'OffCanvas');\n\n_foundation.Foundation.plugin(_foundation9.ResponsiveMenu, 'ResponsiveMenu');\n\n_foundation.Foundation.plugin(_foundation10.ResponsiveToggle, 'ResponsiveToggle');\n\n_foundation.Foundation.plugin(_foundation11.Toggler, 'Toggler');\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Foundation = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationCore = __webpack_require__(1);\n\nvar _foundationUtil = __webpack_require__(4);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FOUNDATION_VERSION = '6.7.4';\n\nvar Foundation = {\n version: FOUNDATION_VERSION,\n\n _plugins: {},\n\n _uuids: [],\n\n plugin: function plugin(_plugin, name) {\n var className = name || functionName(_plugin);\n\n var attrName = hyphenate(className);\n\n this._plugins[attrName] = this[className] = _plugin;\n },\n\n registerPlugin: function registerPlugin(plugin, name) {\n var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();\n plugin.uuid = (0, _foundationCore.GetYoDigits)(6, pluginName);\n\n if (!plugin.$element.attr('data-' + pluginName)) {\n plugin.$element.attr('data-' + pluginName, plugin.uuid);\n }\n if (!plugin.$element.data('zfPlugin')) {\n plugin.$element.data('zfPlugin', plugin);\n }\n\n plugin.$element.trigger('init.zf.' + pluginName);\n\n this._uuids.push(plugin.uuid);\n\n return;\n },\n\n unregisterPlugin: function unregisterPlugin(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').trigger('destroyed.zf.' + pluginName);\n for (var prop in plugin) {\n if (typeof plugin[prop] === 'function') {\n plugin[prop] = null;\n }\n }\n return;\n },\n\n reInit: function reInit(plugins) {\n var isJQ = plugins instanceof _jquery2.default;\n try {\n if (isJQ) {\n plugins.each(function () {\n (0, _jquery2.default)(this).data('zfPlugin')._init();\n });\n } else {\n var type = typeof plugins === 'undefined' ? 'undefined' : _typeof(plugins),\n _this = this,\n fns = {\n 'object': function object(plgs) {\n plgs.forEach(function (p) {\n p = hyphenate(p);\n (0, _jquery2.default)('[data-' + p + ']').foundation('_init');\n });\n },\n 'string': function string() {\n plugins = hyphenate(plugins);\n (0, _jquery2.default)('[data-' + plugins + ']').foundation('_init');\n },\n 'undefined': function undefined() {\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 reflow: function reflow(elem, plugins) {\n if (typeof plugins === 'undefined') {\n plugins = Object.keys(this._plugins);\n } else if (typeof plugins === 'string') {\n plugins = [plugins];\n }\n\n var _this = this;\n\n _jquery2.default.each(plugins, function (i, name) {\n var plugin = _this._plugins[name];\n\n var $elem = (0, _jquery2.default)(elem).find('[data-' + name + ']').addBack('[data-' + name + ']').filter(function () {\n return typeof (0, _jquery2.default)(this).data(\"zfPlugin\") === 'undefined';\n });\n\n $elem.each(function () {\n var $el = (0, _jquery2.default)(this),\n opts = { reflow: true };\n\n if ($el.attr('data-options')) {\n $el.attr('data-options').split(';').forEach(function (option) {\n var opt = option.split(':').map(function (el) {\n return el.trim();\n });\n if (opt[0]) opts[opt[0]] = parseValue(opt[1]);\n });\n }\n try {\n $el.data('zfPlugin', new plugin((0, _jquery2.default)(this), opts));\n } catch (er) {\n console.error(er);\n } finally {\n return;\n }\n });\n });\n },\n getFnName: functionName,\n\n addToJquery: function addToJquery() {\n var foundation = function foundation(method) {\n var type = typeof method === 'undefined' ? 'undefined' : _typeof(method),\n $noJS = (0, _jquery2.default)('.no-js');\n\n if ($noJS.length) {\n $noJS.removeClass('no-js');\n }\n\n if (type === 'undefined') {\n _foundationUtil.MediaQuery._init();\n Foundation.reflow(this);\n } else if (type === 'string') {\n var args = Array.prototype.slice.call(arguments, 1);\n var plugClass = this.data('zfPlugin');\n\n if (typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined') {\n if (this.length === 1) {\n plugClass[method].apply(plugClass, args);\n } else {\n this.each(function (i, el) {\n plugClass[method].apply((0, _jquery2.default)(el).data('zfPlugin'), args);\n });\n }\n } else {\n throw new ReferenceError(\"We're sorry, '\" + method + \"' is not an available method for \" + (plugClass ? functionName(plugClass) : 'this element') + '.');\n }\n } else {\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 _jquery2.default.fn.foundation = foundation;\n return _jquery2.default;\n }\n};\n\nFoundation.util = {\n throttle: function throttle(func, delay) {\n var timer = null;\n\n return function () {\n var context = this,\n 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(function () {\n if (!Date.now || !window.Date.now) window.Date.now = Date.now = function () {\n return new Date().getTime();\n };\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'] || window[vp + 'CancelRequestAnimationFrame'];\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !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 () {\n callback(lastTime = nextTime);\n }, nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n }\n\n if (!window.performance || !window.performance.now) {\n window.performance = {\n start: Date.now(),\n now: function now() {\n return Date.now() - this.start;\n }\n };\n }\n})();\nif (!Function.prototype.bind) {\n Function.prototype.bind = function (oThis) {\n if (typeof this !== '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 fNOP() {},\n fBound = function fBound() {\n return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n\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 } else if (typeof fn.prototype === 'undefined') {\n return fn.constructor.name;\n } else {\n return fn.prototype.constructor.name;\n }\n}\nfunction parseValue(str) {\n if ('true' === str) return true;else if ('false' === str) return false;else if (!isNaN(str * 1)) return parseFloat(str);\n return str;\n}\n\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexports.Foundation = Foundation;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction Timer(elem, options, cb) {\n var _this = this,\n duration = options.duration,\n nameSpace = Object.keys(elem.data())[0] || 'timer',\n remain = -1,\n start,\n timer;\n\n this.isPaused = false;\n\n this.restart = function () {\n remain = -1;\n clearTimeout(timer);\n this.start();\n };\n\n this.start = function () {\n this.isPaused = false;\n\n clearTimeout(timer);\n remain = remain <= 0 ? duration : remain;\n elem.data('paused', false);\n start = Date.now();\n timer = setTimeout(function () {\n if (options.infinite) {\n _this.restart();\n }\n if (cb && typeof cb === 'function') {\n cb();\n }\n }, remain);\n elem.trigger('timerstart.zf.' + nameSpace);\n };\n\n this.pause = function () {\n this.isPaused = true;\n\n clearTimeout(timer);\n elem.data('paused', true);\n var end = Date.now();\n remain = remain - (end - start);\n elem.trigger('timerpaused.zf.' + nameSpace);\n };\n}\n\nexports.Timer = Timer;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Accordion = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationCore = __webpack_require__(2);\n\nvar _foundationCore2 = __webpack_require__(1);\n\nvar _foundationUtil = __webpack_require__(3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Accordion = function (_Plugin) {\n _inherits(Accordion, _Plugin);\n\n function Accordion() {\n _classCallCheck(this, Accordion);\n\n return _possibleConstructorReturn(this, (Accordion.__proto__ || Object.getPrototypeOf(Accordion)).apply(this, arguments));\n }\n\n _createClass(Accordion, [{\n key: '_setup',\n value: function _setup(element, options) {\n this.$element = element;\n this.options = _jquery2.default.extend({}, Accordion.defaults, this.$element.data(), options);\n\n this.className = 'Accordion';\n this._init();\n\n _foundationUtil.Keyboard.register('Accordion', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_DOWN': 'next',\n 'ARROW_UP': 'previous',\n 'HOME': 'first',\n 'END': 'last'\n });\n }\n }, {\n key: '_init',\n value: function _init() {\n var _this3 = this;\n\n this._isInitializing = true;\n\n this.$tabs = this.$element.children('[data-accordion-item]');\n\n this.$tabs.each(function (idx, el) {\n var $el = (0, _jquery2.default)(el),\n $content = $el.children('[data-tab-content]'),\n id = $content[0].id || (0, _foundationCore2.GetYoDigits)(6, 'accordion'),\n linkId = el.id ? el.id + '-label' : id + '-label';\n\n $el.find('a:first').attr({\n 'aria-controls': id,\n 'id': linkId,\n 'aria-expanded': false\n });\n\n $content.attr({ 'role': 'region', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id });\n });\n\n var $initActive = this.$element.find('.is-active').children('[data-tab-content]');\n if ($initActive.length) {\n this._initialAnchor = $initActive.prev('a').attr('href');\n this._openSingleTab($initActive);\n }\n\n this._checkDeepLink = function () {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n if (_this3._isInitializing) return;\n\n if (_this3._initialAnchor) anchor = _this3._initialAnchor;\n }\n\n var $anchor = anchor && (0, _jquery2.default)(anchor);\n var $link = anchor && _this3.$element.find('[href$=\"' + anchor + '\"]');\n\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n if ($anchor && $link && $link.length) {\n if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {\n _this3._openSingleTab($anchor);\n }\n } else {\n _this3._closeAllTabs();\n }\n\n if (_this3.options.deepLinkSmudge) {\n (0, _foundationCore2.onLoad)((0, _jquery2.default)(window), function () {\n var offset = _this3.$element.offset();\n (0, _jquery2.default)('html, body').animate({ scrollTop: offset.top - _this3.options.deepLinkSmudgeOffset }, _this3.options.deepLinkSmudgeDelay);\n });\n }\n\n _this3.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);\n }\n };\n\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n }, {\n key: '_events',\n value: function _events() {\n var _this = this;\n\n this.$tabs.each(function () {\n var $elem = (0, _jquery2.default)(this);\n var $tabContent = $elem.children('[data-tab-content]');\n if ($tabContent.length) {\n $elem.children('a').off('click.zf.accordion keydown.zf.accordion').on('click.zf.accordion', function (e) {\n e.preventDefault();\n _this.toggle($tabContent);\n }).on('keydown.zf.accordion', function (e) {\n _foundationUtil.Keyboard.handleKey(e, 'Accordion', {\n toggle: function toggle() {\n _this.toggle($tabContent);\n },\n next: function next() {\n var $a = $elem.next().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n previous: function previous() {\n var $a = $elem.prev().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n first: function first() {\n var $a = _this.$tabs.first().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n last: function last() {\n var $a = _this.$tabs.last().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n handled: function handled() {\n e.preventDefault();\n }\n });\n });\n }\n });\n if (this.options.deepLink) {\n (0, _jquery2.default)(window).on('hashchange', this._checkDeepLink);\n }\n }\n }, {\n key: 'toggle',\n value: function toggle($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot toggle an accordion that is disabled.');\n return;\n }\n if ($target.parent().hasClass('is-active')) {\n this.up($target);\n } else {\n this.down($target);\n }\n\n if (this.options.deepLink) {\n var anchor = $target.prev('a').attr('href');\n\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n }\n }, {\n key: 'down',\n value: function down($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot call down on an accordion that is disabled.');\n return;\n }\n\n if (this.options.multiExpand) this._openTab($target);else this._openSingleTab($target);\n }\n }, {\n key: 'up',\n value: function up($target) {\n if (this.$element.is('[disabled]')) {\n console.info('Cannot call up on an accordion that is disabled.');\n return;\n }\n\n var $targetItem = $target.parent();\n if (!$targetItem.hasClass('is-active')) return;\n\n var $othersItems = $targetItem.siblings();\n if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;\n\n this._closeTab($target);\n }\n }, {\n key: '_openSingleTab',\n value: function _openSingleTab($target) {\n var $activeContents = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeContents.length) {\n this._closeTab($activeContents.not($target));\n }\n\n this._openTab($target);\n }\n }, {\n key: '_openTab',\n value: function _openTab($target) {\n var _this4 = this;\n\n var $targetItem = $target.parent();\n var targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', false);\n $targetItem.addClass('is-active');\n\n (0, _jquery2.default)('#' + targetContentId).attr({\n 'aria-expanded': true\n });\n\n $target.finish().slideDown(this.options.slideSpeed, function () {\n _this4.$element.trigger('down.zf.accordion', [$target]);\n });\n }\n }, {\n key: '_closeTab',\n value: function _closeTab($target) {\n var _this5 = this;\n\n var $targetItem = $target.parent();\n var targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', true);\n $targetItem.removeClass('is-active');\n\n (0, _jquery2.default)('#' + targetContentId).attr({\n 'aria-expanded': false\n });\n\n $target.finish().slideUp(this.options.slideSpeed, function () {\n _this5.$element.trigger('up.zf.accordion', [$target]);\n });\n }\n }, {\n key: '_closeAllTabs',\n value: function _closeAllTabs() {\n var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeTabs.length) {\n this._closeTab($activeTabs);\n }\n }\n }, {\n key: '_destroy',\n value: function _destroy() {\n this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');\n this.$element.find('a').off('.zf.accordion');\n if (this.options.deepLink) {\n (0, _jquery2.default)(window).off('hashchange', this._checkDeepLink);\n }\n }\n }]);\n\n return Accordion;\n}(_foundationCore.Plugin);\n\nAccordion.defaults = {\n slideSpeed: 250,\n\n multiExpand: false,\n\n allowAllClosed: false,\n\n deepLink: false,\n\n deepLinkSmudge: false,\n\n deepLinkSmudgeDelay: 300,\n\n deepLinkSmudgeOffset: 0,\n\n updateHistory: false\n};\n\nexports.Accordion = Accordion;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Dropdown = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationUtil = __webpack_require__(3);\n\nvar _foundationCore = __webpack_require__(1);\n\nvar _foundation = __webpack_require__(21);\n\nvar _foundationUtil2 = __webpack_require__(8);\n\nvar _foundationUtil3 = __webpack_require__(9);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Dropdown = function (_Positionable) {\n _inherits(Dropdown, _Positionable);\n\n function Dropdown() {\n _classCallCheck(this, Dropdown);\n\n return _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).apply(this, arguments));\n }\n\n _createClass(Dropdown, [{\n key: '_setup',\n value: function _setup(element, options) {\n this.$element = element;\n this.options = _jquery2.default.extend({}, Dropdown.defaults, this.$element.data(), options);\n this.className = 'Dropdown';\n _foundationUtil3.Touch.init(_jquery2.default);\n _foundationUtil2.Triggers.init(_jquery2.default);\n\n this._init();\n\n _foundationUtil.Keyboard.register('Dropdown', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ESCAPE': 'close'\n });\n }\n }, {\n key: '_init',\n value: function _init() {\n var $id = this.$element.attr('id');\n\n this.$anchors = (0, _jquery2.default)('[data-toggle=\"' + $id + '\"]').length ? (0, _jquery2.default)('[data-toggle=\"' + $id + '\"]') : (0, _jquery2.default)('[data-open=\"' + $id + '\"]');\n this.$anchors.attr({\n 'aria-controls': $id,\n 'data-is-focus': false,\n 'data-yeti-box': $id,\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n\n this._setCurrentAnchor(this.$anchors.first());\n\n if (this.options.parentClass) {\n this.$parent = this.$element.parents('.' + this.options.parentClass);\n } else {\n this.$parent = null;\n }\n\n if (typeof this.$element.attr('aria-labelledby') === 'undefined') {\n if (typeof this.$currentAnchor.attr('id') === 'undefined') {\n this.$currentAnchor.attr('id', (0, _foundationCore.GetYoDigits)(6, 'dd-anchor'));\n }\n\n this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));\n }\n\n this.$element.attr({\n 'aria-hidden': 'true',\n 'data-yeti-box': $id,\n 'data-resize': $id\n });\n\n _get(Dropdown.prototype.__proto__ || Object.getPrototypeOf(Dropdown.prototype), '_init', this).call(this);\n this._events();\n }\n }, {\n key: '_getDefaultPosition',\n value: function _getDefaultPosition() {\n var position = this.$element[0].className.match(/(top|left|right|bottom)/g);\n if (position) {\n return position[0];\n } else {\n return 'bottom';\n }\n }\n }, {\n key: '_getDefaultAlignment',\n value: function _getDefaultAlignment() {\n var horizontalPosition = /float-(\\S+)/.exec(this.$currentAnchor.attr('class'));\n if (horizontalPosition) {\n return horizontalPosition[1];\n }\n\n return _get(Dropdown.prototype.__proto__ || Object.getPrototypeOf(Dropdown.prototype), '_getDefaultAlignment', this).call(this);\n }\n }, {\n key: '_setPosition',\n value: function _setPosition() {\n this.$element.removeClass('has-position-' + this.position + ' has-alignment-' + this.alignment);\n _get(Dropdown.prototype.__proto__ || Object.getPrototypeOf(Dropdown.prototype), '_setPosition', this).call(this, this.$currentAnchor, this.$element, this.$parent);\n this.$element.addClass('has-position-' + this.position + ' has-alignment-' + this.alignment);\n }\n }, {\n key: '_setCurrentAnchor',\n value: function _setCurrentAnchor(el) {\n this.$currentAnchor = (0, _jquery2.default)(el);\n }\n }, {\n key: '_events',\n value: function _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined';\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': this._setPosition.bind(this)\n });\n\n this.$anchors.off('click.zf.trigger').on('click.zf.trigger', function (e) {\n _this._setCurrentAnchor(this);\n\n if (_this.options.forceFollow === false || hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false) {\n e.preventDefault();\n }\n });\n\n if (this.options.hover) {\n this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () {\n _this._setCurrentAnchor(this);\n\n var bodyData = (0, _jquery2.default)('body').data();\n if (typeof bodyData.whatinput === 'undefined' || bodyData.whatinput === 'mouse') {\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function () {\n _this.open();\n _this.$anchors.data('hover', true);\n }, _this.options.hoverDelay);\n }\n }).on('mouseleave.zf.dropdown', (0, _foundationCore.ignoreMousedisappear)(function () {\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function () {\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n if (this.options.hoverPane) {\n this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () {\n clearTimeout(_this.timeout);\n }).on('mouseleave.zf.dropdown', (0, _foundationCore.ignoreMousedisappear)(function () {\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function () {\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n }\n }\n this.$anchors.add(this.$element).on('keydown.zf.dropdown', function (e) {\n\n var $target = (0, _jquery2.default)(this);\n\n _foundationUtil.Keyboard.handleKey(e, 'Dropdown', {\n open: function open() {\n if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {\n _this.open();\n _this.$element.attr('tabindex', -1).focus();\n e.preventDefault();\n }\n },\n close: function close() {\n _this.close();\n _this.$anchors.focus();\n }\n });\n });\n }\n }, {\n key: '_addBodyHandler',\n value: function _addBodyHandler() {\n var $body = (0, _jquery2.default)(document.body).not(this.$element),\n _this = this;\n $body.off('click.zf.dropdown tap.zf.dropdown').on('click.zf.dropdown tap.zf.dropdown', function (e) {\n if (_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {\n return;\n }\n if (_this.$element.is(e.target) || _this.$element.find(e.target).length) {\n return;\n }\n _this.close();\n $body.off('click.zf.dropdown tap.zf.dropdown');\n });\n }\n }, {\n key: 'open',\n value: function open() {\n this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));\n this.$anchors.addClass('hover').attr({ 'aria-expanded': true });\n\n\n this.$element.addClass('is-opening');\n this._setPosition();\n this.$element.removeClass('is-opening').addClass('is-open').attr({ 'aria-hidden': false });\n\n if (this.options.autoFocus) {\n var $focusable = _foundationUtil.Keyboard.findFocusable(this.$element);\n if ($focusable.length) {\n $focusable.eq(0).focus();\n }\n }\n\n if (this.options.closeOnClick) {\n this._addBodyHandler();\n }\n\n if (this.options.trapFocus) {\n _foundationUtil.Keyboard.trapFocus(this.$element);\n }\n\n this.$element.trigger('show.zf.dropdown', [this.$element]);\n }\n }, {\n key: 'close',\n value: function close() {\n if (!this.$element.hasClass('is-open')) {\n return false;\n }\n this.$element.removeClass('is-open').attr({ 'aria-hidden': true });\n\n this.$anchors.removeClass('hover').attr('aria-expanded', false);\n\n this.$element.trigger('hide.zf.dropdown', [this.$element]);\n\n if (this.options.trapFocus) {\n _foundationUtil.Keyboard.releaseFocus(this.$element);\n }\n }\n }, {\n key: 'toggle',\n value: function toggle() {\n if (this.$element.hasClass('is-open')) {\n if (this.$anchors.data('hover')) return;\n this.close();\n } else {\n this.open();\n }\n }\n }, {\n key: '_destroy',\n value: function _destroy() {\n this.$element.off('.zf.trigger').hide();\n this.$anchors.off('.zf.dropdown');\n (0, _jquery2.default)(document.body).off('click.zf.dropdown tap.zf.dropdown');\n }\n }]);\n\n return Dropdown;\n}(_foundation.Positionable);\n\nDropdown.defaults = {\n parentClass: null,\n\n hoverDelay: 250,\n\n hover: false,\n\n hoverPane: false,\n\n vOffset: 0,\n\n hOffset: 0,\n\n position: 'auto',\n\n alignment: 'auto',\n\n allowOverlap: false,\n\n allowBottomOverlap: true,\n\n trapFocus: false,\n\n autoFocus: false,\n\n closeOnClick: false,\n\n forceFollow: true\n};\n\nexports.Dropdown = Dropdown;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Positionable = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _foundationUtil = __webpack_require__(5);\n\nvar _foundationCore = __webpack_require__(2);\n\nvar _foundationCore2 = __webpack_require__(1);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar POSITIONS = ['left', 'right', 'top', 'bottom'];\nvar VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];\nvar HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];\n\nvar ALIGNMENTS = {\n 'left': VERTICAL_ALIGNMENTS,\n 'right': VERTICAL_ALIGNMENTS,\n 'top': HORIZONTAL_ALIGNMENTS,\n 'bottom': HORIZONTAL_ALIGNMENTS\n};\n\nfunction nextItem(item, array) {\n var currentIdx = array.indexOf(item);\n if (currentIdx === array.length - 1) {\n return array[0];\n } else {\n return array[currentIdx + 1];\n }\n}\n\nvar Positionable = function (_Plugin) {\n _inherits(Positionable, _Plugin);\n\n function Positionable() {\n _classCallCheck(this, Positionable);\n\n return _possibleConstructorReturn(this, (Positionable.__proto__ || Object.getPrototypeOf(Positionable)).apply(this, arguments));\n }\n\n _createClass(Positionable, [{\n key: '_init',\n value: function _init() {\n this.triedPositions = {};\n this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;\n this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;\n this.originalPosition = this.position;\n this.originalAlignment = this.alignment;\n }\n }, {\n key: '_getDefaultPosition',\n value: function _getDefaultPosition() {\n return 'bottom';\n }\n }, {\n key: '_getDefaultAlignment',\n value: function _getDefaultAlignment() {\n switch (this.position) {\n case 'bottom':\n case 'top':\n return (0, _foundationCore2.rtl)() ? 'right' : 'left';\n case 'left':\n case 'right':\n return 'bottom';\n }\n }\n }, {\n key: '_reposition',\n value: function _reposition() {\n if (this._alignmentsExhausted(this.position)) {\n this.position = nextItem(this.position, POSITIONS);\n this.alignment = ALIGNMENTS[this.position][0];\n } else {\n this._realign();\n }\n }\n }, {\n key: '_realign',\n value: function _realign() {\n this._addTriedPosition(this.position, this.alignment);\n this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position]);\n }\n }, {\n key: '_addTriedPosition',\n value: function _addTriedPosition(position, alignment) {\n this.triedPositions[position] = this.triedPositions[position] || [];\n this.triedPositions[position].push(alignment);\n }\n }, {\n key: '_positionsExhausted',\n value: function _positionsExhausted() {\n var isExhausted = true;\n for (var i = 0; i < POSITIONS.length; i++) {\n isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);\n }\n return isExhausted;\n }\n }, {\n key: '_alignmentsExhausted',\n value: function _alignmentsExhausted(position) {\n return this.triedPositions[position] && this.triedPositions[position].length === ALIGNMENTS[position].length;\n }\n }, {\n key: '_getVOffset',\n value: function _getVOffset() {\n return this.options.vOffset;\n }\n }, {\n key: '_getHOffset',\n value: function _getHOffset() {\n return this.options.hOffset;\n }\n }, {\n key: '_setPosition',\n value: function _setPosition($anchor, $element, $parent) {\n if ($anchor.attr('aria-expanded') === 'false') {\n return false;\n }\n\n if (!this.options.allowOverlap) {\n this.position = this.originalPosition;\n this.alignment = this.originalAlignment;\n }\n\n $element.offset(_foundationUtil.Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n\n if (!this.options.allowOverlap) {\n var minOverlap = 100000000;\n\n var minCoordinates = { position: this.position, alignment: this.alignment };\n while (!this._positionsExhausted()) {\n var overlap = _foundationUtil.Box.OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);\n if (overlap === 0) {\n return;\n }\n\n if (overlap < minOverlap) {\n minOverlap = overlap;\n minCoordinates = { position: this.position, alignment: this.alignment };\n }\n\n this._reposition();\n\n $element.offset(_foundationUtil.Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n\n this.position = minCoordinates.position;\n this.alignment = minCoordinates.alignment;\n $element.offset(_foundationUtil.Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n }\n }]);\n\n return Positionable;\n}(_foundationCore.Plugin);\n\nPositionable.defaults = {\n position: 'auto',\n\n alignment: 'auto',\n\n allowOverlap: false,\n\n allowBottomOverlap: true,\n\n vOffset: 0,\n\n hOffset: 0\n};\n\nexports.Positionable = Positionable;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Equalizer = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationUtil = __webpack_require__(4);\n\nvar _foundationUtil2 = __webpack_require__(10);\n\nvar _foundationCore = __webpack_require__(1);\n\nvar _foundationCore2 = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Equalizer = function (_Plugin) {\n _inherits(Equalizer, _Plugin);\n\n function Equalizer() {\n _classCallCheck(this, Equalizer);\n\n return _possibleConstructorReturn(this, (Equalizer.__proto__ || Object.getPrototypeOf(Equalizer)).apply(this, arguments));\n }\n\n _createClass(Equalizer, [{\n key: '_setup',\n value: function _setup(element, options) {\n this.$element = element;\n this.options = _jquery2.default.extend({}, Equalizer.defaults, this.$element.data(), options);\n this.className = 'Equalizer';\n\n this._init();\n }\n }, {\n key: '_init',\n value: function _init() {\n var eqId = this.$element.attr('data-equalizer') || '';\n var $watched = this.$element.find('[data-equalizer-watch=\"' + eqId + '\"]');\n\n _foundationUtil.MediaQuery._init();\n\n this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');\n this.$element.attr('data-resize', eqId || (0, _foundationCore.GetYoDigits)(6, 'eq'));\n this.$element.attr('data-mutate', eqId || (0, _foundationCore.GetYoDigits)(6, 'eq'));\n\n this.hasNested = this.$element.find('[data-equalizer]').length > 0;\n this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;\n this.isOn = false;\n this._bindHandler = {\n onResizeMeBound: this._onResizeMe.bind(this),\n onPostEqualizedBound: this._onPostEqualized.bind(this)\n };\n\n var imgs = this.$element.find('img');\n var tooSmall;\n if (this.options.equalizeOn) {\n tooSmall = this._checkMQ();\n (0, _jquery2.default)(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));\n } else {\n this._events();\n }\n if (typeof tooSmall !== 'undefined' && tooSmall === false || typeof tooSmall === 'undefined') {\n if (imgs.length) {\n (0, _foundationUtil2.onImagesLoaded)(imgs, this._reflow.bind(this));\n } else {\n this._reflow();\n }\n }\n }\n }, {\n key: '_pauseEvents',\n value: function _pauseEvents() {\n this.isOn = false;\n this.$element.off({\n '.zf.equalizer': this._bindHandler.onPostEqualizedBound,\n 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,\n 'mutateme.zf.trigger': this._bindHandler.onResizeMeBound\n });\n }\n }, {\n key: '_onResizeMe',\n value: function _onResizeMe() {\n this._reflow();\n }\n }, {\n key: '_onPostEqualized',\n value: function _onPostEqualized(e) {\n if (e.target !== this.$element[0]) {\n this._reflow();\n }\n }\n }, {\n key: '_events',\n value: function _events() {\n this._pauseEvents();\n if (this.hasNested) {\n this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);\n } else {\n this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);\n this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);\n }\n this.isOn = true;\n }\n }, {\n key: '_checkMQ',\n value: function _checkMQ() {\n var tooSmall = !_foundationUtil.MediaQuery.is(this.options.equalizeOn);\n if (tooSmall) {\n if (this.isOn) {\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n } else {\n if (!this.isOn) {\n this._events();\n }\n }\n return tooSmall;\n }\n }, {\n key: '_killswitch',\n value: function _killswitch() {\n return;\n }\n }, {\n key: '_reflow',\n value: function _reflow() {\n if (!this.options.equalizeOnStack) {\n if (this._isStacked()) {\n this.$watched.css('height', 'auto');\n return false;\n }\n }\n if (this.options.equalizeByRow) {\n this.getHeightsByRow(this.applyHeightByRow.bind(this));\n } else {\n this.getHeights(this.applyHeight.bind(this));\n }\n }\n }, {\n key: '_isStacked',\n value: function _isStacked() {\n if (!this.$watched[0] || !this.$watched[1]) {\n return true;\n }\n return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;\n }\n }, {\n key: 'getHeights',\n value: function getHeights(cb) {\n var heights = [];\n for (var i = 0, len = this.$watched.length; i < len; i++) {\n this.$watched[i].style.height = 'auto';\n heights.push(this.$watched[i].offsetHeight);\n }\n cb(heights);\n }\n }, {\n key: 'getHeightsByRow',\n value: function getHeightsByRow(cb) {\n var lastElTopOffset = this.$watched.length ? this.$watched.first().offset().top : 0,\n groups = [],\n group = 0;\n\n groups[group] = [];\n for (var i = 0, len = this.$watched.length; i < len; i++) {\n this.$watched[i].style.height = 'auto';\n\n var elOffsetTop = (0, _jquery2.default)(this.$watched[i]).offset().top;\n if (elOffsetTop !== lastElTopOffset) {\n group++;\n groups[group] = [];\n lastElTopOffset = elOffsetTop;\n }\n groups[group].push([this.$watched[i], this.$watched[i].offsetHeight]);\n }\n\n for (var j = 0, ln = groups.length; j < ln; j++) {\n var heights = (0, _jquery2.default)(groups[j]).map(function () {\n return this[1];\n }).get();\n var max = Math.max.apply(null, heights);\n groups[j].push(max);\n }\n cb(groups);\n }\n }, {\n key: 'applyHeight',\n value: function applyHeight(heights) {\n var max = Math.max.apply(null, heights);\n\n this.$element.trigger('preequalized.zf.equalizer');\n\n this.$watched.css('height', max);\n\n this.$element.trigger('postequalized.zf.equalizer');\n }\n }, {\n key: 'applyHeightByRow',\n value: function applyHeightByRow(groups) {\n this.$element.trigger('preequalized.zf.equalizer');\n for (var i = 0, len = groups.length; i < len; i++) {\n var groupsILength = groups[i].length,\n max = groups[i][groupsILength - 1];\n if (groupsILength <= 2) {\n (0, _jquery2.default)(groups[i][0][0]).css({ 'height': 'auto' });\n continue;\n }\n\n this.$element.trigger('preequalizedrow.zf.equalizer');\n for (var j = 0, lenJ = groupsILength - 1; j < lenJ; j++) {\n (0, _jquery2.default)(groups[i][j][0]).css({ 'height': max });\n }\n\n this.$element.trigger('postequalizedrow.zf.equalizer');\n }\n\n this.$element.trigger('postequalized.zf.equalizer');\n }\n }, {\n key: '_destroy',\n value: function _destroy() {\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n }]);\n\n return Equalizer;\n}(_foundationCore2.Plugin);\n\nEqualizer.defaults = {\n equalizeOnStack: false,\n\n equalizeByRow: false,\n\n equalizeOn: ''\n};\n\nexports.Equalizer = Equalizer;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OffCanvas = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationCore = __webpack_require__(2);\n\nvar _foundationCore2 = __webpack_require__(1);\n\nvar _foundationUtil = __webpack_require__(3);\n\nvar _foundationUtil2 = __webpack_require__(4);\n\nvar _foundationUtil3 = __webpack_require__(8);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar OffCanvas = function (_Plugin) {\n _inherits(OffCanvas, _Plugin);\n\n function OffCanvas() {\n _classCallCheck(this, OffCanvas);\n\n return _possibleConstructorReturn(this, (OffCanvas.__proto__ || Object.getPrototypeOf(OffCanvas)).apply(this, arguments));\n }\n\n _createClass(OffCanvas, [{\n key: '_setup',\n value: function _setup(element, options) {\n var _this3 = this;\n\n this.className = 'OffCanvas';\n this.$element = element;\n this.options = _jquery2.default.extend({}, OffCanvas.defaults, this.$element.data(), options);\n this.contentClasses = { base: [], reveal: [] };\n this.$lastTrigger = (0, _jquery2.default)();\n this.$triggers = (0, _jquery2.default)();\n this.position = 'left';\n this.$content = (0, _jquery2.default)();\n this.nested = !!this.options.nested;\n this.$sticky = (0, _jquery2.default)();\n this.isInCanvas = false;\n\n (0, _jquery2.default)(['push', 'overlap']).each(function (index, val) {\n _this3.contentClasses.base.push('has-transition-' + val);\n });\n (0, _jquery2.default)(['left', 'right', 'top', 'bottom']).each(function (index, val) {\n _this3.contentClasses.base.push('has-position-' + val);\n _this3.contentClasses.reveal.push('has-reveal-' + val);\n });\n\n _foundationUtil3.Triggers.init(_jquery2.default);\n _foundationUtil2.MediaQuery._init();\n\n this._init();\n this._events();\n\n _foundationUtil.Keyboard.register('OffCanvas', {\n 'ESCAPE': 'close'\n });\n }\n }, {\n key: '_init',\n value: function _init() {\n var id = this.$element.attr('id');\n\n this.$element.attr('aria-hidden', 'true');\n\n if (this.options.contentId) {\n this.$content = (0, _jquery2.default)('#' + this.options.contentId);\n } else if (this.$element.siblings('[data-off-canvas-content]').length) {\n this.$content = this.$element.siblings('[data-off-canvas-content]').first();\n } else {\n this.$content = this.$element.closest('[data-off-canvas-content]').first();\n }\n\n if (!this.options.contentId) {\n this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;\n } else if (this.options.contentId && this.options.nested === null) {\n console.warn('Remember to use the nested option if using the content ID option!');\n }\n\n if (this.nested === true) {\n this.options.transition = 'overlap';\n\n this.$element.removeClass('is-transition-push');\n }\n\n this.$element.addClass('is-transition-' + this.options.transition + ' is-closed');\n\n this.$triggers = (0, _jquery2.default)(document).find('[data-open=\"' + id + '\"], [data-close=\"' + id + '\"], [data-toggle=\"' + id + '\"]').attr('aria-expanded', 'false').attr('aria-controls', id);\n\n this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\\-(left|top|right|bottom)/)[1] : this.position;\n\n if (this.options.contentOverlay === true) {\n var overlay = document.createElement('div');\n var overlayPosition = (0, _jquery2.default)(this.$element).css(\"position\") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';\n overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);\n this.$overlay = (0, _jquery2.default)(overlay);\n if (overlayPosition === 'is-overlay-fixed') {\n (0, _jquery2.default)(this.$overlay).insertAfter(this.$element);\n } else {\n this.$content.append(this.$overlay);\n }\n }\n\n var revealOnRegExp = new RegExp((0, _foundationCore2.RegExpEscape)(this.options.revealClass) + '([^\\\\s]+)', 'g');\n var revealOnClass = revealOnRegExp.exec(this.$element[0].className);\n if (revealOnClass) {\n this.options.isRevealed = true;\n this.options.revealOn = this.options.revealOn || revealOnClass[1];\n }\n\n if (this.options.isRevealed === true && this.options.revealOn) {\n this.$element.first().addClass('' + this.options.revealClass + this.options.revealOn);\n this._setMQChecker();\n }\n\n if (this.options.transitionTime) {\n this.$element.css('transition-duration', this.options.transitionTime);\n }\n\n this.$sticky = this.$content.find('[data-off-canvas-sticky]');\n if (this.$sticky.length > 0 && this.options.transition === 'push') {\n this.options.contentScroll = false;\n }\n\n var inCanvasFor = this.$element.attr('class').match(/\\bin-canvas-for-(\\w+)/);\n if (inCanvasFor && inCanvasFor.length === 2) {\n this.options.inCanvasOn = inCanvasFor[1];\n } else if (this.options.inCanvasOn) {\n this.$element.addClass('in-canvas-for-' + this.options.inCanvasOn);\n }\n\n if (this.options.inCanvasOn) {\n this._checkInCanvas();\n }\n\n this._removeContentClasses();\n }\n }, {\n key: '_events',\n value: function _events() {\n var _this4 = this;\n\n this.$element.off('.zf.trigger .zf.offCanvas').on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'keydown.zf.offCanvas': this._handleKeyboard.bind(this)\n });\n\n if (this.options.closeOnClick === true) {\n var $target = this.options.contentOverlay ? this.$overlay : this.$content;\n $target.on({ 'click.zf.offCanvas': this.close.bind(this) });\n }\n\n if (this.options.inCanvasOn) {\n (0, _jquery2.default)(window).on('changed.zf.mediaquery', function () {\n _this4._checkInCanvas();\n });\n }\n }\n }, {\n key: '_setMQChecker',\n value: function _setMQChecker() {\n var _this = this;\n\n this.onLoadListener = (0, _foundationCore2.onLoad)((0, _jquery2.default)(window), function () {\n if (_foundationUtil2.MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n }\n });\n\n (0, _jquery2.default)(window).on('changed.zf.mediaquery', function () {\n if (_foundationUtil2.MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n } else {\n _this.reveal(false);\n }\n });\n }\n }, {\n key: '_checkInCanvas',\n value: function _checkInCanvas() {\n this.isInCanvas = _foundationUtil2.MediaQuery.atLeast(this.options.inCanvasOn);\n if (this.isInCanvas === true) {\n this.close();\n }\n }\n }, {\n key: '_removeContentClasses',\n value: function _removeContentClasses(hasReveal) {\n if (typeof hasReveal !== 'boolean') {\n this.$content.removeClass(this.contentClasses.base.join(' '));\n } else if (hasReveal === false) {\n this.$content.removeClass('has-reveal-' + this.position);\n }\n }\n }, {\n key: '_addContentClasses',\n value: function _addContentClasses(hasReveal) {\n this._removeContentClasses(hasReveal);\n if (typeof hasReveal !== 'boolean') {\n this.$content.addClass('has-transition-' + this.options.transition + ' has-position-' + this.position);\n } else if (hasReveal === true) {\n this.$content.addClass('has-reveal-' + this.position);\n }\n }\n }, {\n key: '_fixStickyElements',\n value: function _fixStickyElements() {\n this.$sticky.each(function (_, el) {\n var $el = (0, _jquery2.default)(el);\n\n if ($el.css('position') === 'fixed') {\n var topVal = parseInt($el.css('top'), 10);\n $el.data('offCanvasSticky', { top: topVal });\n\n var absoluteTopVal = (0, _jquery2.default)(document).scrollTop() + topVal;\n $el.css({ top: absoluteTopVal + 'px', width: '100%', transition: 'none' });\n }\n });\n }\n }, {\n key: '_unfixStickyElements',\n value: function _unfixStickyElements() {\n this.$sticky.each(function (_, el) {\n var $el = (0, _jquery2.default)(el);\n var stickyData = $el.data('offCanvasSticky');\n\n if ((typeof stickyData === 'undefined' ? 'undefined' : _typeof(stickyData)) === 'object') {\n $el.css({ top: stickyData.top + 'px', width: '', transition: '' });\n $el.data('offCanvasSticky', '');\n }\n });\n }\n }, {\n key: 'reveal',\n value: function reveal(isRevealed) {\n if (isRevealed) {\n this.close();\n this.isRevealed = true;\n this.$element.attr('aria-hidden', 'false');\n this.$element.off('open.zf.trigger toggle.zf.trigger');\n this.$element.removeClass('is-closed');\n } else {\n this.isRevealed = false;\n this.$element.attr('aria-hidden', 'true');\n this.$element.off('open.zf.trigger toggle.zf.trigger').on({\n 'open.zf.trigger': this.open.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this)\n });\n this.$element.addClass('is-closed');\n }\n this._addContentClasses(isRevealed);\n }\n }, {\n key: '_stopScrolling',\n value: function _stopScrolling() {\n return false;\n }\n }, {\n key: '_recordScrollable',\n value: function _recordScrollable(event) {\n var elem = this;\n elem.lastY = event.touches[0].pageY;\n }\n }, {\n key: '_preventDefaultAtEdges',\n value: function _preventDefaultAtEdges(event) {\n var elem = this;\n var _this = event.data;\n var delta = elem.lastY - event.touches[0].pageY;\n elem.lastY = event.touches[0].pageY;\n\n if (!_this._canScroll(delta, elem)) {\n event.preventDefault();\n }\n }\n }, {\n key: '_scrollboxTouchMoved',\n value: function _scrollboxTouchMoved(event) {\n var elem = this;\n var _this = event.data;\n var parent = elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]');\n var delta = elem.lastY - event.touches[0].pageY;\n parent.lastY = elem.lastY = event.touches[0].pageY;\n\n event.stopPropagation();\n\n if (!_this._canScroll(delta, elem)) {\n if (!_this._canScroll(delta, parent)) {\n event.preventDefault();\n } else {\n parent.scrollTop += delta;\n }\n }\n }\n }, {\n key: '_canScroll',\n value: function _canScroll(delta, elem) {\n var up = delta < 0;\n var down = delta > 0;\n var allowUp = elem.scrollTop > 0;\n var allowDown = elem.scrollTop < elem.scrollHeight - elem.clientHeight;\n return up && allowUp || down && allowDown;\n }\n }, {\n key: 'open',\n value: function open(event, trigger) {\n var _this5 = this;\n\n if (this.$element.hasClass('is-open') || this.isRevealed || this.isInCanvas) {\n return;\n }\n var _this = this;\n\n if (trigger) {\n this.$lastTrigger = trigger;\n }\n\n if (this.options.forceTo === 'top') {\n window.scrollTo(0, 0);\n } else if (this.options.forceTo === 'bottom') {\n window.scrollTo(0, document.body.scrollHeight);\n }\n\n if (this.options.transitionTime && this.options.transition !== 'overlap') {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);\n } else {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');\n }\n\n this.$element.addClass('is-open').removeClass('is-closed');\n\n this.$triggers.attr('aria-expanded', 'true');\n this.$element.attr('aria-hidden', 'false');\n\n this.$content.addClass('is-open-' + this.position);\n\n if (this.options.contentScroll === false) {\n (0, _jquery2.default)('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);\n this.$element.on('touchstart', this._recordScrollable);\n this.$element.on('touchmove', this, this._preventDefaultAtEdges);\n this.$element.on('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.on('touchmove', '[data-off-canvas-scrollbox]', this, this._scrollboxTouchMoved);\n }\n\n if (this.options.contentOverlay === true) {\n this.$overlay.addClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.addClass('is-closable');\n }\n\n if (this.options.autoFocus === true) {\n this.$element.one((0, _foundationCore2.transitionend)(this.$element), function () {\n if (!_this.$element.hasClass('is-open')) {\n return;\n }\n var canvasFocus = _this.$element.find('[data-autofocus]');\n if (canvasFocus.length) {\n canvasFocus.eq(0).focus();\n } else {\n _this.$element.find('a, button').eq(0).focus();\n }\n });\n }\n\n if (this.options.trapFocus === true) {\n this.$content.attr('tabindex', '-1');\n _foundationUtil.Keyboard.trapFocus(this.$element);\n }\n\n if (this.options.transition === 'push') {\n this._fixStickyElements();\n }\n\n this._addContentClasses();\n\n this.$element.trigger('opened.zf.offCanvas');\n\n this.$element.one((0, _foundationCore2.transitionend)(this.$element), function () {\n _this5.$element.trigger('openedEnd.zf.offCanvas');\n });\n }\n }, {\n key: 'close',\n value: function close() {\n var _this6 = this;\n\n if (!this.$element.hasClass('is-open') || this.isRevealed) {\n return;\n }\n\n this.$element.trigger('close.zf.offCanvas');\n\n this.$element.removeClass('is-open');\n\n this.$element.attr('aria-hidden', 'true');\n\n this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom');\n\n if (this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-closable');\n }\n\n this.$triggers.attr('aria-expanded', 'false');\n\n this.$element.one((0, _foundationCore2.transitionend)(this.$element), function () {\n\n _this6.$element.addClass('is-closed');\n _this6._removeContentClasses();\n\n if (_this6.options.transition === 'push') {\n _this6._unfixStickyElements();\n }\n\n if (_this6.options.contentScroll === false) {\n (0, _jquery2.default)('body').removeClass('is-off-canvas-open').off('touchmove', _this6._stopScrolling);\n _this6.$element.off('touchstart', _this6._recordScrollable);\n _this6.$element.off('touchmove', _this6._preventDefaultAtEdges);\n _this6.$element.off('touchstart', '[data-off-canvas-scrollbox]', _this6._recordScrollable);\n _this6.$element.off('touchmove', '[data-off-canvas-scrollbox]', _this6._scrollboxTouchMoved);\n }\n\n if (_this6.options.trapFocus === true) {\n _this6.$content.removeAttr('tabindex');\n _foundationUtil.Keyboard.releaseFocus(_this6.$element);\n }\n\n _this6.$element.trigger('closed.zf.offCanvas');\n });\n }\n }, {\n key: 'toggle',\n value: function toggle(event, trigger) {\n if (this.$element.hasClass('is-open')) {\n this.close(event, trigger);\n } else {\n this.open(event, trigger);\n }\n }\n }, {\n key: '_handleKeyboard',\n value: function _handleKeyboard(e) {\n var _this7 = this;\n\n _foundationUtil.Keyboard.handleKey(e, 'OffCanvas', {\n close: function close() {\n _this7.close();\n _this7.$lastTrigger.focus();\n return true;\n },\n handled: function handled() {\n e.preventDefault();\n }\n });\n }\n }, {\n key: '_destroy',\n value: function _destroy() {\n this.close();\n this.$element.off('.zf.trigger .zf.offCanvas');\n this.$overlay.off('.zf.offCanvas');\n if (this.onLoadListener) (0, _jquery2.default)(window).off(this.onLoadListener);\n }\n }]);\n\n return OffCanvas;\n}(_foundationCore.Plugin);\n\nOffCanvas.defaults = {\n closeOnClick: true,\n\n contentOverlay: true,\n\n contentId: null,\n\n nested: null,\n\n contentScroll: true,\n\n transitionTime: null,\n\n transition: 'push',\n\n forceTo: null,\n\n isRevealed: false,\n\n revealOn: null,\n\n inCanvasOn: null,\n\n autoFocus: true,\n\n revealClass: 'reveal-for-',\n\n trapFocus: false\n};\n\nexports.OffCanvas = OffCanvas;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ResponsiveMenu = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationUtil = __webpack_require__(4);\n\nvar _foundationCore = __webpack_require__(1);\n\nvar _foundationCore2 = __webpack_require__(2);\n\nvar _foundation = __webpack_require__(13);\n\nvar _foundation2 = __webpack_require__(12);\n\nvar _foundation3 = __webpack_require__(11);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MenuPlugins = {\n dropdown: {\n cssClass: 'dropdown',\n plugin: _foundation.DropdownMenu\n },\n drilldown: {\n cssClass: 'drilldown',\n plugin: _foundation2.Drilldown\n },\n accordion: {\n cssClass: 'accordion-menu',\n plugin: _foundation3.AccordionMenu\n }\n};\n\nvar ResponsiveMenu = function (_Plugin) {\n _inherits(ResponsiveMenu, _Plugin);\n\n function ResponsiveMenu() {\n _classCallCheck(this, ResponsiveMenu);\n\n return _possibleConstructorReturn(this, (ResponsiveMenu.__proto__ || Object.getPrototypeOf(ResponsiveMenu)).apply(this, arguments));\n }\n\n _createClass(ResponsiveMenu, [{\n key: '_setup',\n value: function _setup(element) {\n this.$element = (0, _jquery2.default)(element);\n this.rules = this.$element.data('responsive-menu');\n this.currentMq = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveMenu';\n\n this._init();\n this._events();\n }\n }, {\n key: '_init',\n value: function _init() {\n\n _foundationUtil.MediaQuery._init();\n\n if (typeof this.rules === 'string') {\n var rulesTree = {};\n\n var rules = this.rules.split(' ');\n\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i].split('-');\n var ruleSize = rule.length > 1 ? rule[0] : 'small';\n var rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n if (!_jquery2.default.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n\n this.$element.attr('data-mutate', this.$element.attr('data-mutate') || (0, _foundationCore.GetYoDigits)(6, 'responsive-menu'));\n }\n }, {\n key: '_events',\n value: function _events() {\n var _this = this;\n\n (0, _jquery2.default)(window).on('changed.zf.mediaquery', function () {\n _this._checkMediaQueries();\n });\n }\n }, {\n key: '_checkMediaQueries',\n value: function _checkMediaQueries() {\n var matchedMq,\n _this = this;\n\n _jquery2.default.each(this.rules, function (key) {\n if (_foundationUtil.MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n if (!matchedMq) return;\n\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n _jquery2.default.each(MenuPlugins, function (key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n if (this.currentPlugin) this.currentPlugin.destroy();\n this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});\n }\n }, {\n key: '_destroy',\n value: function _destroy() {\n this.currentPlugin.destroy();\n (0, _jquery2.default)(window).off('.zf.ResponsiveMenu');\n }\n }]);\n\n return ResponsiveMenu;\n}(_foundationCore2.Plugin);\n\nResponsiveMenu.defaults = {};\n\nexports.ResponsiveMenu = ResponsiveMenu;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ResponsiveToggle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationUtil = __webpack_require__(4);\n\nvar _foundationUtil2 = __webpack_require__(6);\n\nvar _foundationCore = __webpack_require__(2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ResponsiveToggle = function (_Plugin) {\n _inherits(ResponsiveToggle, _Plugin);\n\n function ResponsiveToggle() {\n _classCallCheck(this, ResponsiveToggle);\n\n return _possibleConstructorReturn(this, (ResponsiveToggle.__proto__ || Object.getPrototypeOf(ResponsiveToggle)).apply(this, arguments));\n }\n\n _createClass(ResponsiveToggle, [{\n key: '_setup',\n value: function _setup(element, options) {\n this.$element = (0, _jquery2.default)(element);\n this.options = _jquery2.default.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);\n this.className = 'ResponsiveToggle';\n\n this._init();\n this._events();\n }\n }, {\n key: '_init',\n value: function _init() {\n _foundationUtil.MediaQuery._init();\n var targetID = this.$element.data('responsive-toggle');\n if (!targetID) {\n console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');\n }\n\n this.$targetMenu = (0, _jquery2.default)('#' + targetID);\n this.$toggler = this.$element.find('[data-toggle]').filter(function () {\n var target = (0, _jquery2.default)(this).data('toggle');\n return target === targetID || target === \"\";\n });\n this.options = _jquery2.default.extend({}, this.options, this.$targetMenu.data());\n\n if (this.options.animate) {\n var input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n }\n\n this._update();\n }\n }, {\n key: '_events',\n value: function _events() {\n this._updateMqHandler = this._update.bind(this);\n\n (0, _jquery2.default)(window).on('changed.zf.mediaquery', this._updateMqHandler);\n\n this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));\n }\n }, {\n key: '_update',\n value: function _update() {\n if (!_foundationUtil.MediaQuery.atLeast(this.options.hideFor)) {\n this.$element.show();\n this.$targetMenu.hide();\n } else {\n this.$element.hide();\n this.$targetMenu.show();\n }\n }\n }, {\n key: 'toggleMenu',\n value: function toggleMenu() {\n var _this2 = this;\n\n if (!_foundationUtil.MediaQuery.atLeast(this.options.hideFor)) {\n if (this.options.animate) {\n if (this.$targetMenu.is(':hidden')) {\n _foundationUtil2.Motion.animateIn(this.$targetMenu, this.animationIn, function () {\n _this2.$element.trigger('toggled.zf.responsiveToggle');\n _this2.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');\n });\n } else {\n _foundationUtil2.Motion.animateOut(this.$targetMenu, this.animationOut, function () {\n _this2.$element.trigger('toggled.zf.responsiveToggle');\n });\n }\n } else {\n this.$targetMenu.toggle(0);\n this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');\n this.$element.trigger('toggled.zf.responsiveToggle');\n }\n }\n }\n }, {\n key: '_destroy',\n value: function _destroy() {\n this.$element.off('.zf.responsiveToggle');\n this.$toggler.off('.zf.responsiveToggle');\n\n (0, _jquery2.default)(window).off('changed.zf.mediaquery', this._updateMqHandler);\n }\n }]);\n\n return ResponsiveToggle;\n}(_foundationCore.Plugin);\n\nResponsiveToggle.defaults = {\n hideFor: 'medium',\n\n animate: false\n};\n\nexports.ResponsiveToggle = ResponsiveToggle;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Toggler = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(0);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _foundationUtil = __webpack_require__(6);\n\nvar _foundationCore = __webpack_require__(2);\n\nvar _foundationCore2 = __webpack_require__(1);\n\nvar _foundationUtil2 = __webpack_require__(8);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Toggler = function (_Plugin) {\n _inherits(Toggler, _Plugin);\n\n function Toggler() {\n _classCallCheck(this, Toggler);\n\n return _possibleConstructorReturn(this, (Toggler.__proto__ || Object.getPrototypeOf(Toggler)).apply(this, arguments));\n }\n\n _createClass(Toggler, [{\n key: '_setup',\n value: function _setup(element, options) {\n this.$element = element;\n this.options = _jquery2.default.extend({}, Toggler.defaults, element.data(), options);\n this.className = '';\n this.className = 'Toggler';\n _foundationUtil2.Triggers.init(_jquery2.default);\n\n this._init();\n this._events();\n }\n }, {\n key: '_init',\n value: function _init() {\n var id = this.$element[0].id,\n $triggers = (0, _jquery2.default)('[data-open~=\"' + id + '\"], [data-close~=\"' + id + '\"], [data-toggle~=\"' + id + '\"]');\n\n var input;\n\n if (this.options.animate) {\n input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n\n $triggers.attr('aria-expanded', !this.$element.is(':hidden'));\n } else {\n input = this.options.toggler;\n if (typeof input !== 'string' || !input.length) {\n throw new Error('The \\'toggler\\' option containing the target class is required, got \"' + input + '\"');\n }\n\n this.className = input[0] === '.' ? input.slice(1) : input;\n\n $triggers.attr('aria-expanded', this.$element.hasClass(this.className));\n }\n\n $triggers.each(function (index, trigger) {\n var $trigger = (0, _jquery2.default)(trigger);\n var controls = $trigger.attr('aria-controls') || '';\n\n var containsId = new RegExp('\\\\b' + (0, _foundationCore2.RegExpEscape)(id) + '\\\\b').test(controls);\n if (!containsId) $trigger.attr('aria-controls', controls ? controls + ' ' + id : id);\n });\n }\n }, {\n key: '_events',\n value: function _events() {\n this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));\n }\n }, {\n key: 'toggle',\n value: function toggle() {\n this[this.options.animate ? '_toggleAnimate' : '_toggleClass']();\n }\n }, {\n key: '_toggleClass',\n value: function _toggleClass() {\n this.$element.toggleClass(this.className);\n\n var isOn = this.$element.hasClass(this.className);\n if (isOn) {\n this.$element.trigger('on.zf.toggler');\n } else {\n this.$element.trigger('off.zf.toggler');\n }\n\n this._updateARIA(isOn);\n this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');\n }\n }, {\n key: '_toggleAnimate',\n value: function _toggleAnimate() {\n var _this = this;\n\n if (this.$element.is(':hidden')) {\n _foundationUtil.Motion.animateIn(this.$element, this.animationIn, function () {\n _this._updateARIA(true);\n this.trigger('on.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n } else {\n _foundationUtil.Motion.animateOut(this.$element, this.animationOut, function () {\n _this._updateARIA(false);\n this.trigger('off.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n }\n }, {\n key: '_updateARIA',\n value: function _updateARIA(isOn) {\n var id = this.$element[0].id;\n (0, _jquery2.default)('[data-open=\"' + id + '\"], [data-close=\"' + id + '\"], [data-toggle=\"' + id + '\"]').attr({\n 'aria-expanded': isOn ? true : false\n });\n }\n }, {\n key: '_destroy',\n value: function _destroy() {\n this.$element.off('.zf.toggler');\n }\n }]);\n\n return Toggler;\n}(_foundationCore.Plugin);\n\nToggler.defaults = {\n toggler: undefined,\n\n animate: false\n};\n\nexports.Toggler = Toggler;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar selectors = ['iframe[src*=\"player.vimeo.com\"]', 'iframe[src*=\"youtube.com\"]', 'iframe[src*=\"youtube-nocookie.com\"]', 'iframe[src*=\"kickstarter.com\"][src*=\"video.html\"]', \"object\"];\n\nvar css = \".fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}\";\n\nmodule.exports = function (parentSelector, opts) {\n parentSelector = parentSelector || \"body\";\n opts = opts || {};\n\n if (isObject(parentSelector)) {\n opts = parentSelector;\n parentSelector = \"body\";\n }\n\n opts.ignore = opts.ignore || \"\";\n opts.players = opts.players || \"\";\n\n var containers = queryAll(parentSelector);\n if (!hasLength(containers)) return;\n\n if (!document.getElementById(\"fit-vids-style\")) {\n var head = document.head || document.getElementsByTagName(\"head\")[0];\n head.appendChild(styles());\n }\n\n var custom = toSelectorArray(opts.players);\n var ignored = toSelectorArray(opts.ignore);\n var ignoredSelector = ignored.length > 0 ? ignored.join() : null;\n var selector = selectors.concat(custom).join();\n\n if (!hasLength(selector)) {\n return;\n }\n\n containers.forEach(function (container) {\n var videos = queryAll(container, selector);\n\n videos.forEach(function (video) {\n if (ignoredSelector && video.matches(ignoredSelector)) {\n return;\n }\n wrap(video);\n });\n });\n};\n\nfunction queryAll(el, selector) {\n if (typeof el === \"string\") {\n selector = el;\n el = document;\n }\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\nfunction toSelectorArray(input) {\n if (typeof input === \"string\") {\n return input.split(\",\").map(trim).filter(hasLength);\n } else if (isArray(input)) {\n return flatten(input.map(toSelectorArray).filter(hasLength));\n }\n return input || [];\n}\n\nfunction wrap(el) {\n if (/fluid-width-video-wrapper/.test(el.parentNode.className)) {\n return;\n }\n\n var widthAttr = parseInt(el.getAttribute(\"width\"), 10);\n var heightAttr = parseInt(el.getAttribute(\"height\"), 10);\n\n var width = !isNaN(widthAttr) ? widthAttr : el.clientWidth;\n var height = !isNaN(heightAttr) ? heightAttr : el.clientHeight;\n var aspect = height / width;\n\n el.removeAttribute(\"width\");\n el.removeAttribute(\"height\");\n\n var wrapper = document.createElement(\"div\");\n el.parentNode.insertBefore(wrapper, el);\n wrapper.className = \"fluid-width-video-wrapper\";\n wrapper.style.paddingTop = aspect * 100 + \"%\";\n wrapper.appendChild(el);\n}\n\nfunction styles() {\n var div = document.createElement(\"div\");\n div.innerHTML = '

    x

    \";\n return div.childNodes[1];\n}\n\nfunction hasLength(input) {\n return input.length > 0;\n}\n\nfunction trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n}\n\nfunction flatten(input) {\n return [].concat.apply([], input);\n}\n\nfunction isObject(input) {\n return Object.prototype.toString.call(input) === \"[object Object]\";\n}\n\nfunction isArray(input) {\n return Object.prototype.toString.call(input) === \"[object Array]\";\n}\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n!function () {\n \"use strict\";\n if (\"undefined\" != typeof window) {\n var t = window.navigator.userAgent.match(/Edge\\/(\\d{2})\\./),\n e = t ? parseInt(t[1], 10) : null,\n n = !!e && 16 <= e && e <= 18;if (!(\"objectFit\" in document.documentElement.style != !1) || n) {\n var o = function o(t, e, i) {\n var n, o, l, a, d;if ((i = i.split(\" \")).length < 2 && (i[1] = i[0]), \"x\" === t) n = i[0], o = i[1], l = \"left\", a = \"right\", d = e.clientWidth;else {\n if (\"y\" !== t) return;n = i[1], o = i[0], l = \"top\", a = \"bottom\", d = e.clientHeight;\n }if (n !== l && o !== l) {\n if (n !== a && o !== a) return \"center\" === n || \"50%\" === n ? (e.style[l] = \"50%\", void (e.style[\"margin-\" + l] = d / -2 + \"px\")) : void (0 <= n.indexOf(\"%\") ? (n = parseInt(n, 10)) < 50 ? (e.style[l] = n + \"%\", e.style[\"margin-\" + l] = d * (n / -100) + \"px\") : (n = 100 - n, e.style[a] = n + \"%\", e.style[\"margin-\" + a] = d * (n / -100) + \"px\") : e.style[l] = n);e.style[a] = \"0\";\n } else e.style[l] = \"0\";\n },\n l = function l(t) {\n var e = t.dataset ? t.dataset.objectFit : t.getAttribute(\"data-object-fit\"),\n i = t.dataset ? t.dataset.objectPosition : t.getAttribute(\"data-object-position\");e = e || \"cover\", i = i || \"50% 50%\";var n = t.parentNode;return function (t) {\n var e = window.getComputedStyle(t, null),\n i = e.getPropertyValue(\"position\"),\n n = e.getPropertyValue(\"overflow\"),\n o = e.getPropertyValue(\"display\");i && \"static\" !== i || (t.style.position = \"relative\"), \"hidden\" !== n && (t.style.overflow = \"hidden\"), o && \"inline\" !== o || (t.style.display = \"block\"), 0 === t.clientHeight && (t.style.height = \"100%\"), -1 === t.className.indexOf(\"object-fit-polyfill\") && (t.className = t.className + \" object-fit-polyfill\");\n }(n), function (t) {\n var e = window.getComputedStyle(t, null),\n i = { \"max-width\": \"none\", \"max-height\": \"none\", \"min-width\": \"0px\", \"min-height\": \"0px\", top: \"auto\", right: \"auto\", bottom: \"auto\", left: \"auto\", \"margin-top\": \"0px\", \"margin-right\": \"0px\", \"margin-bottom\": \"0px\", \"margin-left\": \"0px\" };for (var n in i) {\n e.getPropertyValue(n) !== i[n] && (t.style[n] = i[n]);\n }\n }(t), t.style.position = \"absolute\", t.style.width = \"auto\", t.style.height = \"auto\", \"scale-down\" === e && (e = t.clientWidth < n.clientWidth && t.clientHeight < n.clientHeight ? \"none\" : \"contain\"), \"none\" === e ? (o(\"x\", t, i), void o(\"y\", t, i)) : \"fill\" === e ? (t.style.width = \"100%\", t.style.height = \"100%\", o(\"x\", t, i), void o(\"y\", t, i)) : (t.style.height = \"100%\", void (\"cover\" === e && t.clientWidth > n.clientWidth || \"contain\" === e && t.clientWidth < n.clientWidth ? (t.style.top = \"0\", t.style.marginTop = \"0\", o(\"x\", t, i)) : (t.style.width = \"100%\", t.style.height = \"auto\", t.style.left = \"0\", t.style.marginLeft = \"0\", o(\"y\", t, i))));\n },\n i = function i(t) {\n if (void 0 === t || t instanceof Event) t = document.querySelectorAll(\"[data-object-fit]\");else if (t && t.nodeName) t = [t];else {\n if (\"object\" != (typeof t === \"undefined\" ? \"undefined\" : _typeof(t)) || !t.length || !t[0].nodeName) return !1;t = t;\n }for (var e = 0; e < t.length; e++) {\n if (t[e].nodeName) {\n var i = t[e].nodeName.toLowerCase();if (\"img\" === i) {\n if (n) continue;t[e].complete ? l(t[e]) : t[e].addEventListener(\"load\", function () {\n l(this);\n });\n } else \"video\" === i ? 0 < t[e].readyState ? l(t[e]) : t[e].addEventListener(\"loadedmetadata\", function () {\n l(this);\n }) : l(t[e]);\n }\n }return !0;\n };\"loading\" === document.readyState ? document.addEventListener(\"DOMContentLoaded\", i) : i(), window.addEventListener(\"resize\", i), window.objectFitPolyfill = i;\n } else window.objectFitPolyfill = function () {\n return !1;\n };\n }\n}();\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar $searchFacetBox = window.jQuery('#solr_facet');\nvar $submit = $searchFacetBox.find('[type=\"submit\"]');\n\nwindow.jQuery('Reset').insertAfter($submit);\nwindow.jQuery('.solr-facet ul li').wrapInner('');\n\nwindow.jQuery(document).ready(function () {\n\tsetTimeout(function () {\n\t\twindow.jQuery('body').off('change', '#solr_s');\n\t}, 0);\n});\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// index.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 4dbea0fb45547d4e7d20","module.exports = jQuery;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"jQuery\"\n// module id = 0\n// module chunks = 0","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\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.core.utils.js","import { 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 if (this.hasOwnProperty(prop)) {\n this[prop] = null; //clean up script to prep for garbage collection.\n }\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\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.core.plugin.js","/*******************************************\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'), 10),\n bTabIndex = parseInt($(b).attr('tabindex'), 10);\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) {\n if (kcs.hasOwnProperty(kc)) k[kcs[kc]] = kcs[kc];\n }\n return k;\n}\n\nexport {Keyboard};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.util.keyboard.js","import $ from 'jquery';\n\n// Default set of media queries\n// const 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 this;\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).on('resize.zf.trigger', () => {\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\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.util.mediaQuery.js","var Box = {\n ImNotTouchingYou: ImNotTouchingYou,\n OverlapArea: OverlapArea,\n GetDimensions: GetDimensions,\n GetExplicitOffsets: GetExplicitOffsets\n}\n\n/**\n * Compares the dimensions of an element to a container and determines collision events with container.\n * @function\n * @param {jQuery} element - jQuery object to test for collisions.\n * @param {jQuery} parent - jQuery object to use as bounding container.\n * @param {Boolean} lrOnly - set to true to check left and right values only.\n * @param {Boolean} tbOnly - set to true to check top and bottom values only.\n * @default if no parent object passed, detects collisions with `window`.\n * @returns {Boolean} - true if collision free, false if a collision in any direction.\n */\nfunction ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {\n return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;\n}\n\nfunction OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {\n var eleDims = GetDimensions(element),\n topOver, bottomOver, leftOver, rightOver;\n if (parent) {\n var parDims = GetDimensions(parent);\n\n bottomOver = (parDims.height + parDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - parDims.offset.top;\n leftOver = eleDims.offset.left - parDims.offset.left;\n rightOver = (parDims.width + parDims.offset.left) - (eleDims.offset.left + eleDims.width);\n }\n else {\n bottomOver = (eleDims.windowDims.height + eleDims.windowDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - eleDims.windowDims.offset.top;\n leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;\n rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);\n }\n\n bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);\n topOver = Math.min(topOver, 0);\n leftOver = Math.min(leftOver, 0);\n rightOver = Math.min(rightOver, 0);\n\n if (lrOnly) {\n return leftOver + rightOver;\n }\n if (tbOnly) {\n return topOver + bottomOver;\n }\n\n // use sum of squares b/c we care about overlap area.\n return Math.sqrt((topOver * topOver) + (bottomOver * bottomOver) + (leftOver * leftOver) + (rightOver * rightOver));\n}\n\n/**\n * Uses native methods to return an object of dimension values.\n * @function\n * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.\n * @returns {Object} - nested object of integer pixel values\n * TODO - if element is window, return only those values.\n */\nfunction GetDimensions(elem){\n elem = elem.length ? elem[0] : elem;\n\n if (elem === window || elem === document) {\n throw new Error(\"I'm sorry, Dave. I'm afraid I can't do that.\");\n }\n\n var rect = elem.getBoundingClientRect(),\n parRect = elem.parentNode.getBoundingClientRect(),\n winRect = document.body.getBoundingClientRect(),\n winY = window.pageYOffset,\n winX = window.pageXOffset;\n\n return {\n width: rect.width,\n height: rect.height,\n offset: {\n top: rect.top + winY,\n left: rect.left + winX\n },\n parentDims: {\n width: parRect.width,\n height: parRect.height,\n offset: {\n top: parRect.top + winY,\n left: parRect.left + winX\n }\n },\n windowDims: {\n width: winRect.width,\n height: winRect.height,\n offset: {\n top: winY,\n left: winX\n }\n }\n }\n}\n\n/**\n * Returns an object of top and left integer pixel values for dynamically rendered elements,\n * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where\n * you don't know alignment, but generally from\n * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.\n * @function\n * @param {jQuery} element - jQuery object for the element being positioned.\n * @param {jQuery} anchor - jQuery object for the element's anchor point.\n * @param {String} position - a string relating to the desired position of the element, relative to it's anchor\n * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.\n * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.\n * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.\n * TODO alter/rewrite to work with `em` values as well/instead of pixels\n */\nfunction GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {\n var $eleDims = GetDimensions(element),\n $anchorDims = anchor ? GetDimensions(anchor) : null;\n\n var topVal, leftVal;\n\n if ($anchorDims !== null) {\n // set position related attribute\n switch (position) {\n case 'top':\n topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);\n break;\n case 'bottom':\n topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;\n break;\n case 'left':\n leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);\n break;\n case 'right':\n leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;\n break;\n }\n\n // set alignment related attribute\n switch (position) {\n case 'top':\n case 'bottom':\n switch (alignment) {\n case 'left':\n leftVal = $anchorDims.offset.left + hOffset;\n break;\n case 'right':\n leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;\n break;\n case 'center':\n leftVal = isOverflow ? hOffset : (($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2)) + hOffset;\n break;\n }\n break;\n case 'right':\n case 'left':\n switch (alignment) {\n case 'bottom':\n topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;\n break;\n case 'top':\n topVal = $anchorDims.offset.top + vOffset\n break;\n case 'center':\n topVal = ($anchorDims.offset.top + vOffset + ($anchorDims.height / 2)) - ($eleDims.height / 2)\n break;\n }\n break;\n }\n }\n\n return {top: topVal, left: leftVal};\n}\n\nexport {Box};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.util.box.js","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\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 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\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.util.motion.js","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\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.util.nest.js","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).on(trigger, function() {\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(250);\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\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.util.triggers.js","//**************************************************\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 startTime,\n elapsedTime,\n startEvent,\n isMoving = false,\n didMoved = false;\n\nfunction onTouchEnd(e) {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n\n // If the touch did not move, consider it as a \"tap\"\n if (!didMoved) {\n var tapEvent = $.Event('tap', startEvent || e);\n $(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if (true === $.spotSwipe.preventDefault) { e.preventDefault(); }\n\n if(isMoving) {\n var x = e.touches[0].pageX;\n // var y = e.touches[0].pageY;\n var dx = startPosX - x;\n // var dy = startPosY - y;\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n // dir = dy > 0 ? 'down' : 'up';\n // }\n if(dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n $(this)\n .trigger($.Event('swipe', Object.assign({}, e)), dir)\n .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n }\n }\n\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length === 1) {\n startPosX = e.touches[0].pageX;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, { passive : true === $.spotSwipe.preventDefault });\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, { passive : true });\n}\n\n// function 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._init();\n }\n\n _init() {\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 if(typeof($.spotSwipe) === 'undefined') {\n Touch.setupSpotSwipe($);\n Touch.setupTouchHandler($);\n }\n};\n\nexport {Touch};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.util.touch.js","import $ from 'jquery';\n\n/**\n * Runs a callback function when images are fully loaded.\n * @param {Object} images - Image(s) to check if loaded.\n * @param {Func} callback - Function to execute when image is fully loaded.\n */\nfunction onImagesLoaded(images, callback){\n var unloaded = images.length;\n\n if (unloaded === 0) {\n callback();\n }\n\n images.each(function(){\n // Check if image is loaded\n if (this.complete && typeof this.naturalWidth !== 'undefined') {\n singleImageLoaded();\n }\n else {\n // If the above check failed, simulate loading on detached element.\n var image = new Image();\n // Still count image as loaded if it finalizes with an error.\n var events = \"load.zf.images error.zf.images\";\n $(image).one(events, function me(){\n // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.\n $(this).off(events, me);\n singleImageLoaded();\n });\n image.src = $(this).attr('src');\n }\n });\n\n function singleImageLoaded() {\n unloaded--;\n if (unloaded === 0) {\n callback();\n }\n }\n}\n\nexport { onImagesLoaded };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.util.imageLoader.js","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() {\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\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.accordionMenu.js","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits, transitionend } from './foundation.core.utils';\nimport { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Drilldown module.\n * @module foundation.drilldown\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n * @requires foundation.util.box\n */\n\nclass Drilldown extends Plugin {\n /**\n * Creates a new instance of a drilldown menu.\n * @class\n * @name Drilldown\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({}, Drilldown.defaults, this.$element.data(), options);\n this.className = 'Drilldown'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('Drilldown', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the drilldown by creating jQuery collections of elements\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'drilldown');\n\n if(this.options.autoApplyClass) {\n this.$element.addClass('drilldown');\n }\n\n this.$element.attr({\n 'aria-multiselectable': false\n });\n this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');\n this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');\n this.$menuItems = this.$element.find('li').not('.js-drilldown-back').find('a');\n\n // Set the main menu as current by default (unless a submenu is selected)\n // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu\n this.$currentMenu = this.$element;\n\n this.$element.attr('data-mutate', (this.$element.attr('data-drilldown') || GetYoDigits(6, 'drilldown')));\n\n this._prepareMenu();\n this._registerEvents();\n\n this._keyboardEvents();\n }\n\n /**\n * prepares drilldown menu by setting attributes to links and elements\n * sets a min height to prevent content jumping\n * wraps the element if not already wrapped\n * @private\n * @function\n */\n _prepareMenu() {\n var _this = this;\n // if(!this.options.holdOpen){\n // this._menuLinkEvents();\n // }\n this.$submenuAnchors.each(function(){\n var $link = $(this);\n var $sub = $link.parent();\n if(_this.options.parentLink){\n $link.clone().prependTo($sub.children('[data-submenu]')).wrap('
  • ');\n }\n $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);\n $link.children('[data-submenu]')\n .attr({\n 'aria-hidden': true,\n 'tabindex': 0,\n 'role': 'group'\n });\n _this._events($link);\n });\n this.$submenus.each(function(){\n var $menu = $(this),\n $back = $menu.find('.js-drilldown-back');\n if(!$back.length){\n switch (_this.options.backButtonPosition) {\n case \"bottom\":\n $menu.append(_this.options.backButton);\n break;\n case \"top\":\n $menu.prepend(_this.options.backButton);\n break;\n default:\n console.error(\"Unsupported backButtonPosition value '\" + _this.options.backButtonPosition + \"'\");\n }\n }\n _this._back($menu);\n });\n\n this.$submenus.addClass('invisible');\n if(!this.options.autoHeight) {\n this.$submenus.addClass('drilldown-submenu-cover-previous');\n }\n\n // create a wrapper on element if it doesn't exist.\n if(!this.$element.parent().hasClass('is-drilldown')){\n this.$wrapper = $(this.options.wrapper).addClass('is-drilldown');\n if(this.options.animateHeight) this.$wrapper.addClass('animate-height');\n this.$element.wrap(this.$wrapper);\n }\n // set wrapper\n this.$wrapper = this.$element.parent();\n this.$wrapper.css(this._getMaxDims());\n }\n\n _resize() {\n this.$wrapper.css({'max-width': 'none', 'min-height': 'none'});\n // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths\n this.$wrapper.css(this._getMaxDims());\n }\n\n /**\n * Adds event handlers to elements in the menu.\n * @function\n * @private\n * @param {jQuery} $elem - the current menu item to add handlers to.\n */\n _events($elem) {\n var _this = this;\n\n $elem.off('click.zf.drilldown')\n .on('click.zf.drilldown', function(e) {\n if($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')){\n e.preventDefault();\n }\n\n // if(e.target !== e.currentTarget.firstElementChild){\n // return false;\n // }\n _this._show($elem.parent('li'));\n\n if(_this.options.closeOnClick){\n var $body = $('body');\n $body.off('.zf.drilldown').on('click.zf.drilldown', function(ev) {\n if (ev.target === _this.$element[0] || $.contains(_this.$element[0], ev.target)) { return; }\n ev.preventDefault();\n _this._hideAll();\n $body.off('.zf.drilldown');\n });\n }\n });\n }\n\n /**\n * Adds event handlers to the menu element.\n * @function\n * @private\n */\n _registerEvents() {\n if(this.options.scrollTop){\n this._bindHandler = this._scrollTop.bind(this);\n this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown',this._bindHandler);\n }\n this.$element.on('mutateme.zf.trigger', this._resize.bind(this));\n }\n\n /**\n * Scroll to Top of Element or data-scroll-top-element\n * @function\n * @fires Drilldown#scrollme\n */\n _scrollTop() {\n var _this = this;\n var $scrollTopElement = _this.options.scrollTopElement !== ''?$(_this.options.scrollTopElement):_this.$element,\n scrollPos = parseInt($scrollTopElement.offset().top+_this.options.scrollTopOffset, 10);\n $('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing,function(){\n /**\n * Fires after the menu has scrolled\n * @event Drilldown#scrollme\n */\n if(this===$('html')[0])_this.$element.trigger('scrollme.zf.drilldown');\n });\n }\n\n /**\n * Adds keydown event listener to `li`'s in the menu.\n * @private\n */\n _keyboardEvents() {\n var _this = this;\n\n this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function(e){\n var $element = $(this),\n $elements = $element.parent('li').parent('ul').children('li').children('a'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n return;\n }\n });\n\n Keyboard.handleKey(e, 'Drilldown', {\n next: function() {\n if ($element.is(_this.$submenuAnchors)) {\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n previous: function() {\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n },\n up: function() {\n $prevElement.focus();\n // Don't tap focus on first element in root ul\n return !$element.is(_this.$element.find('> li:first-child > a'));\n },\n down: function() {\n $nextElement.focus();\n // Don't tap focus on last element in root ul\n return !$element.is(_this.$element.find('> li:last-child > a'));\n },\n close: function() {\n // Don't close on element in root ul\n if (!$element.is(_this.$element.find('> li > a'))) {\n _this._hide($element.parent().parent());\n $element.parent().parent().siblings('a').focus();\n }\n },\n open: function() {\n if (_this.options.parentLink && $element.attr('href')) { // Link with href\n return false;\n } else if (!$element.is(_this.$menuItems)) { // not menu item means back button\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n } else if ($element.is(_this.$submenuAnchors)) { // Sub menu item\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n }); // end keyboardAccess\n }\n\n /**\n * Closes all open elements, and returns to root menu.\n * @function\n * @fires Drilldown#close\n * @fires Drilldown#closed\n */\n _hideAll() {\n var $elem = this.$element.find('.is-drilldown-submenu.is-active')\n $elem.addClass('is-closing');\n\n if (this.options.autoHeight) {\n const calcHeight = $elem.parent().closest('ul').data('calcHeight');\n this.$wrapper.css({ height: calcHeight });\n }\n\n /**\n * Fires when the menu is closing.\n * @event Drilldown#close\n */\n this.$element.trigger('close.zf.drilldown');\n\n $elem.one(transitionend($elem), () => {\n $elem.removeClass('is-active is-closing');\n\n /**\n * Fires when the menu is fully closed.\n * @event Drilldown#closed\n */\n this.$element.trigger('closed.zf.drilldown');\n });\n }\n\n /**\n * Adds event listener for each `back` button, and closes open menus.\n * @function\n * @fires Drilldown#back\n * @param {jQuery} $elem - the current sub-menu to add `back` event.\n */\n _back($elem) {\n var _this = this;\n $elem.off('click.zf.drilldown');\n $elem.children('.js-drilldown-back')\n .on('click.zf.drilldown', function() {\n _this._hide($elem);\n\n // If there is a parent submenu, call show\n let parentSubMenu = $elem.parent('li').parent('ul').parent('li');\n if (parentSubMenu.length) {\n _this._show(parentSubMenu);\n }\n else {\n _this.$currentMenu = _this.$element;\n }\n });\n }\n\n /**\n * Adds event listener to menu items w/o submenus to close open menus on click.\n * @function\n * @private\n */\n _menuLinkEvents() {\n var _this = this;\n this.$menuItems.not('.is-drilldown-submenu-parent')\n .off('click.zf.drilldown')\n .on('click.zf.drilldown', function() {\n setTimeout(function() {\n _this._hideAll();\n }, 0);\n });\n }\n\n /**\n * Sets the CSS classes for submenu to show it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setShowSubMenuClasses($elem, trigger) {\n $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\n $elem.parent('li').attr('aria-expanded', true);\n if (trigger === true) {\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Sets the CSS classes for submenu to hide it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setHideSubMenuClasses($elem, trigger) {\n $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);\n $elem.parent('li').attr('aria-expanded', false);\n if (trigger === true) {\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Opens a specific drilldown (sub)menu no matter which (sub)menu in it is currently visible.\n * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the target (sub)menu (`ul` tag)\n * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused\n */\n _showMenu($elem, autoFocus) {\n\n var _this = this;\n\n // Reset drilldown\n var $expandedSubmenus = this.$element.find('li[aria-expanded=\"true\"] > ul[data-submenu]');\n $expandedSubmenus.each(function() {\n _this._setHideSubMenuClasses($(this));\n });\n\n // Save the menu as the currently displayed one.\n this.$currentMenu = $elem;\n\n // If target menu is root, focus first link & exit\n if ($elem.is('[data-drilldown]')) {\n if (autoFocus === true) $elem.find('li > a').first().focus();\n if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));\n return;\n }\n\n // Find all submenus on way to root incl. the element itself\n var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]');\n\n // Open target menu and all submenus on its way to root\n $submenus.each(function(index) {\n\n // Update height of first child (target menu) if autoHeight option true\n if (index === 0 && _this.options.autoHeight) {\n _this.$wrapper.css('height', $(this).data('calcHeight'));\n }\n\n var isLastChild = index === $submenus.length - 1;\n\n // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link\n // Last child makes sure the event gets always triggered even if going through several menus\n if (isLastChild === true) {\n $(this).one(transitionend($(this)), () => {\n if (autoFocus === true) {\n $elem.find('li > a').first().focus();\n }\n });\n }\n\n _this._setShowSubMenuClasses($(this), isLastChild);\n });\n }\n\n /**\n * Opens a submenu.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.\n */\n _show($elem) {\n const $submenu = $elem.children('[data-submenu]');\n\n $elem.attr('aria-expanded', true);\n\n this.$currentMenu = $submenu;\n\n //hide drilldown parent menu when submenu is open\n // this removes it from the dom so that the tab key will take the user to the next visible element\n $elem.parent().closest('ul').addClass('invisible');\n\n // add visible class to submenu to override invisible class above\n $submenu.addClass('is-active visible').removeClass('invisible').attr('aria-hidden', false);\n\n if (this.options.autoHeight) {\n this.$wrapper.css({ height: $submenu.data('calcHeight') });\n }\n\n /**\n * Fires when the submenu has opened.\n * @event Drilldown#open\n */\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n\n /**\n * Hides a submenu\n * @function\n * @fires Drilldown#hide\n * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.\n */\n _hide($elem) {\n if(this.options.autoHeight) this.$wrapper.css({height:$elem.parent().closest('ul').data('calcHeight')});\n $elem.parent().closest('ul').removeClass('invisible');\n $elem.parent('li').attr('aria-expanded', false);\n $elem.attr('aria-hidden', true);\n $elem.addClass('is-closing')\n .one(transitionend($elem), function(){\n $elem.removeClass('is-active is-closing visible');\n $elem.blur().addClass('invisible');\n });\n /**\n * Fires when the submenu has closed.\n * @event Drilldown#hide\n */\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n\n /**\n * Iterates through the nested menus to calculate the min-height, and max-width for the menu.\n * Prevents content jumping.\n * @function\n * @private\n */\n _getMaxDims() {\n var maxHeight = 0, result = {}, _this = this;\n\n // Recalculate menu heights and total max height\n this.$submenus.add(this.$element).each(function(){\n var height = Box.GetDimensions(this).height;\n\n maxHeight = height > maxHeight ? height : maxHeight;\n\n if(_this.options.autoHeight) {\n $(this).data('calcHeight',height);\n }\n });\n\n if (this.options.autoHeight)\n result.height = this.$currentMenu.data('calcHeight');\n else\n result['min-height'] = `${maxHeight}px`;\n\n result['max-width'] = `${this.$element[0].getBoundingClientRect().width}px`;\n\n return result;\n }\n\n /**\n * Destroys the Drilldown Menu\n * @function\n */\n _destroy() {\n $('body').off('.zf.drilldown');\n if(this.options.scrollTop) this.$element.off('.zf.drilldown',this._bindHandler);\n this._hideAll();\n\t this.$element.off('mutateme.zf.trigger');\n Nest.Burn(this.$element, 'drilldown');\n this.$element.unwrap()\n .find('.js-drilldown-back, .is-submenu-parent-item').remove()\n .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').off('transitionend otransitionend webkitTransitionEnd')\n .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');\n this.$submenuAnchors.each(function() {\n $(this).off('.zf.drilldown');\n });\n\n this.$element.find('[data-is-parent-link]').detach();\n this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');\n\n this.$element.find('a').each(function(){\n var $link = $(this);\n $link.removeAttr('tabindex');\n if($link.data('savedHref')){\n $link.attr('href', $link.data('savedHref')).removeData('savedHref');\n }else{ return; }\n });\n };\n}\n\nDrilldown.defaults = {\n /**\n * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are\n * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.\n * @option\n * @type {boolean}\n * @default true\n */\n autoApplyClass: true,\n /**\n * Markup used for JS generated back button. Prepended or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '
  • Back
  • '\n */\n backButton: '
  • Back
  • ',\n /**\n * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.\n * @option\n * @type {string}\n * @default top\n */\n backButtonPosition: 'top',\n /**\n * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '
    '\n */\n wrapper: '
    ',\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Allow the menu to return to root list on body click.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * Allow the menu to auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n autoHeight: false,\n /**\n * Animate the auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n animateHeight: false,\n /**\n * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button\n * @option\n * @type {boolean}\n * @default false\n */\n scrollTop: false,\n /**\n * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken\n * @option\n * @type {string}\n * @default ''\n */\n scrollTopElement: '',\n /**\n * ScrollTop offset\n * @option\n * @type {number}\n * @default 0\n */\n scrollTopOffset: 0,\n /**\n * Scroll animation duration\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Scroll animation easing. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @see {@link https://api.jquery.com/animate|JQuery animate}\n * @default 'swing'\n */\n animationEasing: 'swing'\n // holdOpen: false\n};\n\nexport {Drilldown};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.drilldown.js","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl, ignoreMousedisappear } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { Box } from './foundation.util.box';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * DropdownMenu module.\n * @module foundation.dropdownMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.nest\n * @requires foundation.util.touch\n */\n\nclass DropdownMenu extends Plugin {\n /**\n * Creates a new instance of DropdownMenu.\n * @class\n * @name DropdownMenu\n * @fires DropdownMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options);\n this.className = 'DropdownMenu'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('DropdownMenu', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin, and calls _prepareMenu\n * @private\n * @function\n */\n _init() {\n Nest.Feather(this.$element, 'dropdown');\n\n var subs = this.$element.find('li.is-dropdown-submenu-parent');\n this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');\n\n this.$menuItems = this.$element.find('li[role=\"none\"]');\n this.$tabs = this.$element.children('li[role=\"none\"]');\n this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);\n\n if (this.options.alignment === 'auto') {\n if (this.$element.hasClass(this.options.rightClass) || Rtl() || this.$element.parents('.top-bar-right').is('*')) {\n this.options.alignment = 'right';\n subs.addClass('opens-left');\n } else {\n this.options.alignment = 'left';\n subs.addClass('opens-right');\n }\n } else {\n if (this.options.alignment === 'right') {\n subs.addClass('opens-left');\n } else {\n subs.addClass('opens-right');\n }\n }\n this.changed = false;\n this._events();\n };\n\n _isVertical() {\n return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';\n }\n\n _isRtl() {\n return this.$element.hasClass('align-right') || (Rtl() && !this.$element.hasClass('align-left'));\n }\n\n /**\n * Adds event listeners to elements within the menu\n * @private\n * @function\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),\n parClass = 'is-dropdown-submenu-parent';\n\n // used for onClick and in the keyboard handlers\n var handleClickFn = function(e) {\n var $elem = $(e.target).parentsUntil('ul', `.${parClass}`),\n hasSub = $elem.hasClass(parClass),\n hasClicked = $elem.attr('data-is-click') === 'true',\n $sub = $elem.children('.is-dropdown-submenu');\n\n if (hasSub) {\n if (hasClicked) {\n if (!_this.options.closeOnClick\n || (!_this.options.clickOpen && !hasTouch)\n || (_this.options.forceFollow && hasTouch)) {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._hide($elem);\n }\n else {\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._show($sub);\n $elem.add($elem.parentsUntil(_this.$element, `.${parClass}`)).attr('data-is-click', true);\n }\n }\n };\n\n if (this.options.clickOpen || hasTouch) {\n this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClickFn);\n }\n\n // Handle Leaf element Clicks\n if(_this.options.closeOnClickInside){\n this.$menuItems.on('click.zf.dropdownMenu', function() {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if(!hasSub){\n _this._hide();\n }\n });\n }\n\n if (hasTouch && this.options.disableHoverOnTouch) this.options.disableHover = true;\n\n if (!this.options.disableHover) {\n this.$menuItems.on('mouseenter.zf.dropdownMenu', function () {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n\n if (hasSub) {\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._show($elem.children('.is-dropdown-submenu'));\n }, _this.options.hoverDelay));\n }\n }).on('mouseleave.zf.dropdownMenu', ignoreMousedisappear(function () {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if (hasSub && _this.options.autoclose) {\n if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { return false; }\n\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._hide($elem);\n }, _this.options.closingTime));\n }\n }));\n }\n this.$menuItems.on('keydown.zf.dropdownMenu', function(e) {\n var $element = $(e.target).parentsUntil('ul', '[role=\"none\"]'),\n isTab = _this.$tabs.index($element) > -1,\n $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(i-1);\n $nextElement = $elements.eq(i+1);\n return;\n }\n });\n\n var nextSibling = function() {\n $nextElement.children('a:first').focus();\n e.preventDefault();\n }, prevSibling = function() {\n $prevElement.children('a:first').focus();\n e.preventDefault();\n }, openSub = function() {\n var $sub = $element.children('ul.is-dropdown-submenu');\n if ($sub.length) {\n _this._show($sub);\n $element.find('li > a:first').focus();\n e.preventDefault();\n } else { return; }\n }, closeSub = function() {\n //if ($element.is(':first-child')) {\n var close = $element.parent('ul').parent('li');\n close.children('a:first').focus();\n _this._hide(close);\n e.preventDefault();\n //}\n };\n var functions = {\n open: openSub,\n close: function() {\n _this._hide(_this.$element);\n _this.$menuItems.eq(0).children('a').focus(); // focus to first element\n e.preventDefault();\n }\n };\n\n if (isTab) {\n if (_this._isVertical()) { // vertical menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: closeSub,\n previous: openSub\n });\n } else { // left aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: openSub,\n previous: closeSub\n });\n }\n } else { // horizontal menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: prevSibling,\n previous: nextSibling,\n down: openSub,\n up: closeSub\n });\n } else { // left aligned\n $.extend(functions, {\n next: nextSibling,\n previous: prevSibling,\n down: openSub,\n up: closeSub\n });\n }\n }\n } else { // not tabs -> one sub\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: closeSub,\n previous: openSub,\n down: nextSibling,\n up: prevSibling\n });\n } else { // left aligned\n $.extend(functions, {\n next: openSub,\n previous: closeSub,\n down: nextSibling,\n up: prevSibling\n });\n }\n }\n Keyboard.handleKey(e, 'DropdownMenu', functions);\n\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n const $body = $(document.body);\n this._removeBodyHandler();\n $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', (e) => {\n var isItself = !!$(e.target).closest(this.$element).length;\n if (isItself) return;\n\n this._hide();\n this._removeBodyHandler();\n });\n }\n\n /**\n * Remove the body event handler. See `_addBodyHandler`.\n * @function\n * @private\n */\n _removeBodyHandler() {\n $(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');\n }\n\n /**\n * Opens a dropdown pane, and checks for collisions first.\n * @param {jQuery} $sub - ul element that is a submenu to show\n * @function\n * @private\n * @fires DropdownMenu#show\n */\n _show($sub) {\n var idx = this.$tabs.index(this.$tabs.filter(function(i, el) {\n return $(el).find($sub).length > 0;\n }));\n var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');\n this._hide($sibs, idx);\n $sub.css('visibility', 'hidden').addClass('js-dropdown-active')\n .parent('li.is-dropdown-submenu-parent').addClass('is-active');\n var clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n var oldClass = this.options.alignment === 'left' ? '-right' : '-left',\n $parentLi = $sub.parent('.is-dropdown-submenu-parent');\n $parentLi.removeClass(`opens${oldClass}`).addClass(`opens-${this.options.alignment}`);\n clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n $parentLi.removeClass(`opens-${this.options.alignment}`).addClass('opens-inner');\n }\n this.changed = true;\n }\n $sub.css('visibility', '');\n if (this.options.closeOnClick) { this._addBodyHandler(); }\n /**\n * Fires when the new dropdown pane is visible.\n * @event DropdownMenu#show\n */\n this.$element.trigger('show.zf.dropdownMenu', [$sub]);\n }\n\n /**\n * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.\n * @function\n * @param {jQuery} $elem - element with a submenu to hide\n * @param {Number} idx - index of the $tabs collection to hide\n * @fires DropdownMenu#hide\n * @private\n */\n _hide($elem, idx) {\n var $toClose;\n if ($elem && $elem.length) {\n $toClose = $elem;\n } else if (typeof idx !== 'undefined') {\n $toClose = this.$tabs.not(function(i) {\n return i === idx;\n });\n }\n else {\n $toClose = this.$element;\n }\n var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;\n\n if (somethingToClose) {\n var $activeItem = $toClose.find('li.is-active');\n $activeItem.add($toClose).attr({\n 'data-is-click': false\n }).removeClass('is-active');\n\n $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');\n\n if (this.changed || $toClose.find('opens-inner').length) {\n var oldClass = this.options.alignment === 'left' ? 'right' : 'left';\n $toClose.find('li.is-dropdown-submenu-parent').add($toClose)\n .removeClass(`opens-inner opens-${this.options.alignment}`)\n .addClass(`opens-${oldClass}`);\n this.changed = false;\n }\n\n clearTimeout($activeItem.data('_delay'));\n this._removeBodyHandler();\n\n /**\n * Fires when the open menus are closed.\n * @event DropdownMenu#hide\n */\n this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);\n }\n }\n\n /**\n * Destroys the plugin.\n * @function\n */\n _destroy() {\n this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click')\n .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');\n $(document.body).off('.zf.dropdownMenu');\n Nest.Burn(this.$element, 'dropdown');\n }\n}\n\n/**\n * Default settings for plugin\n */\nDropdownMenu.defaults = {\n /**\n * Disallows hover events from opening submenus\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disallows hover on touch devices\n * @option\n * @type {boolean}\n * @default true\n */\n disableHoverOnTouch: true,\n /**\n * Allow a submenu to automatically close on a mouseleave event, if not clicked open.\n * @option\n * @type {boolean}\n * @default true\n */\n autoclose: true,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 50\n */\n hoverDelay: 50,\n /**\n * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.\n * @option\n * @type {boolean}\n * @default false\n */\n clickOpen: false,\n /**\n * Amount of time to delay closing a submenu on a mouseleave event.\n * @option\n * @type {number}\n * @default 500\n */\n\n closingTime: 500,\n /**\n * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow clicks on the body to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allow clicks on leaf anchor links to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClickInside: true,\n /**\n * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'vertical'\n */\n verticalClass: 'vertical',\n /**\n * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'align-right'\n */\n rightClass: 'align-right',\n /**\n * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {DropdownMenu};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.dropdownMenu.js","import './index.scss';\nimport $ from 'jquery';\nimport './foundation';\nimport fitvids from 'fitvids';\nimport 'objectFitPolyfill';\nimport './layout/partials/solr_search_facetss';\n\n// Initialize Foundation Sites - used for site UI kit\n$(document).foundation();\n\n// Initialize FitVids - used for maintaing aspect ratio for Video embed iframes on mobile\nfitvids();\n\n// Initialize polyfill for supporting object fit css on IE\nwindow.objectFitPolyfill();\n\n// Automatically expand/collapse publication search for various devices.\n(function(){\n\t$(window).on('changed.zf.mediaquery', toggleAccourdian);\n\tif (window.Foundation.MediaQuery.atLeast('large')) {\n\t\ttoggleAccourdian();\n\t}\n\tfunction toggleAccourdian () {\n\t\tconst $accourdian = $('#search-accordion');\n\t\tif($accourdian.length > 0) {\n\t\t\t$accourdian.foundation('toggle', $('.accordion-content:first'));\n\t\t}\n\t}\n})();\n\n// Auto-focus search field\n$('#search-dropdown, #search-dropdown-mobile').on('click', function(evt){\n\tevt.preventDefault();\n\t$('#search-dropdown-wrap').addClass('is_open');\n\t$('#searchform').find('input:first').focus();\n});\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","import $ from 'jquery';\n\n\nimport { Foundation } from 'foundation-sites/js/foundation.core';\nFoundation.addToJquery($);\n\n// Add Foundation Utils to Foundation global namespace for backwards\n// compatibility.\n\nimport { rtl, GetYoDigits, transitionend } from 'foundation-sites/js/foundation.core.utils';\nFoundation.rtl = rtl;\nFoundation.GetYoDigits = GetYoDigits;\nFoundation.transitionend = transitionend;\n\nimport { Box } from 'foundation-sites/js/foundation.util.box';\nimport { onImagesLoaded } from 'foundation-sites/js/foundation.util.imageLoader';\nimport { Keyboard } from 'foundation-sites/js/foundation.util.keyboard';\nimport { MediaQuery } from 'foundation-sites/js/foundation.util.mediaQuery';\nimport { Motion, Move } from 'foundation-sites/js/foundation.util.motion';\nimport { Nest } from 'foundation-sites/js/foundation.util.nest';\nimport { Timer } from 'foundation-sites/js/foundation.util.timer';\n\nFoundation.Box = Box;\nFoundation.onImagesLoaded = onImagesLoaded;\nFoundation.Keyboard = Keyboard;\nFoundation.MediaQuery = MediaQuery;\nFoundation.Motion = Motion;\nFoundation.Move = Move;\nFoundation.Nest = Nest;\nFoundation.Timer = Timer;\n\n// Touch and Triggers previously were almost purely sede effect driven,\n// so no // need to add it to Foundation, just init them.\n\nimport { Touch } from 'foundation-sites/js/foundation.util.touch';\nTouch.init($);\n\nimport { Triggers } from 'foundation-sites/js/foundation.util.triggers';\nTriggers.init($, Foundation);\n\n// import { Abide } from 'foundation-sites/js/foundation.abide';\n// Foundation.plugin(Abide, 'Abide');\n\nimport { Accordion } from 'foundation-sites/js/foundation.accordion';\nFoundation.plugin(Accordion, 'Accordion');\n\nimport { AccordionMenu } from 'foundation-sites/js/foundation.accordionMenu';\nFoundation.plugin(AccordionMenu, 'AccordionMenu');\n\nimport { Drilldown } from 'foundation-sites/js/foundation.drilldown';\nFoundation.plugin(Drilldown, 'Drilldown');\n\nimport { Dropdown } from 'foundation-sites/js/foundation.dropdown';\nFoundation.plugin(Dropdown, 'Dropdown');\n\nimport { DropdownMenu } from 'foundation-sites/js/foundation.dropdownMenu';\nFoundation.plugin(DropdownMenu, 'DropdownMenu');\n\nimport { Equalizer } from 'foundation-sites/js/foundation.equalizer';\nFoundation.plugin(Equalizer, 'Equalizer');\n\n// import { Interchange } from 'foundation-sites/js/foundation.interchange';\n// Foundation.plugin(Interchange, 'Interchange');\n//\n// import { Magellan } from 'foundation-sites/js/foundation.magellan';\n// Foundation.plugin(Magellan, 'Magellan');\n\nimport { OffCanvas } from 'foundation-sites/js/foundation.offcanvas';\nFoundation.plugin(OffCanvas, 'OffCanvas');\n\n// import { Orbit } from 'foundation-sites/js/foundation.orbit';\n// Foundation.plugin(Orbit, 'Orbit');\n\nimport { ResponsiveMenu } from 'foundation-sites/js/foundation.responsiveMenu';\nFoundation.plugin(ResponsiveMenu, 'ResponsiveMenu');\n\nimport { ResponsiveToggle } from 'foundation-sites/js/foundation.responsiveToggle';\nFoundation.plugin(ResponsiveToggle, 'ResponsiveToggle');\n\n// import { Reveal } from 'foundation-sites/js/foundation.reveal';\n// Foundation.plugin(Reveal, 'Reveal');\n//\n// import { Slider } from 'foundation-sites/js/foundation.slider';\n// Foundation.plugin(Slider, 'Slider');\n//\n// import { SmoothScroll } from 'foundation-sites/js/foundation.smoothScroll';\n// Foundation.plugin(SmoothScroll, 'SmoothScroll');\n//\n// import { Sticky } from 'foundation-sites/js/foundation.sticky';\n// Foundation.plugin(Sticky, 'Sticky');\n//\n// import { Tabs } from 'foundation-sites/js/foundation.tabs';\n// Foundation.plugin(Tabs, 'Tabs');\n\nimport { Toggler } from 'foundation-sites/js/foundation.toggler';\nFoundation.plugin(Toggler, 'Toggler');\n\n// import { Tooltip } from 'foundation-sites/js/foundation.tooltip';\n// Foundation.plugin(Tooltip, 'Tooltip');\n//\n// import { ResponsiveAccordionTabs } from 'foundation-sites/js/foundation.responsiveAccordionTabs';\n// Foundation.plugin(ResponsiveAccordionTabs, 'ResponsiveAccordionTabs');\n\n\n\n// WEBPACK FOOTER //\n// ./src/foundation/index.js","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nvar FOUNDATION_VERSION = '6.7.4';\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 if(typeof plugin[prop] === 'function'){\n plugin[prop] = null; //clean up script to prep for garbage collection.\n }\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){\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 /* eslint-disable no-extend-native */\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\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.core.js","function Timer(elem, options, cb) {\n var _this = this,\n duration = options.duration,//options is an object for easily adding features later.\n nameSpace = Object.keys(elem.data())[0] || 'timer',\n remain = -1,\n start,\n timer;\n\n this.isPaused = false;\n\n this.restart = function() {\n remain = -1;\n clearTimeout(timer);\n this.start();\n }\n\n this.start = function() {\n this.isPaused = false;\n // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n remain = remain <= 0 ? duration : remain;\n elem.data('paused', false);\n start = Date.now();\n timer = setTimeout(function(){\n if(options.infinite){\n _this.restart();//rerun the timer.\n }\n if (cb && typeof cb === 'function') { cb(); }\n }, remain);\n elem.trigger(`timerstart.zf.${nameSpace}`);\n }\n\n this.pause = function() {\n this.isPaused = true;\n //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n elem.data('paused', true);\n var end = Date.now();\n remain = remain - (end - start);\n elem.trigger(`timerpaused.zf.${nameSpace}`);\n }\n}\n\nexport {Timer};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.util.timer.js","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\n\n/**\n * Accordion module.\n * @module foundation.accordion\n * @requires foundation.util.keyboard\n */\n\nclass Accordion extends Plugin {\n /**\n * Creates a new instance of an accordion.\n * @class\n * @name Accordion\n * @fires Accordion#init\n * @param {jQuery} element - jQuery object to make into an accordion.\n * @param {Object} options - a plain object with settings to override the default options.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Accordion.defaults, this.$element.data(), options);\n\n this.className = 'Accordion'; // ie9 back compat\n this._init();\n\n Keyboard.register('Accordion', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_DOWN': 'next',\n 'ARROW_UP': 'previous',\n 'HOME': 'first',\n 'END': 'last',\n });\n }\n\n /**\n * Initializes the accordion by animating the preset active pane(s).\n * @private\n */\n _init() {\n this._isInitializing = true;\n\n this.$tabs = this.$element.children('[data-accordion-item]');\n\n\n this.$tabs.each(function(idx, el) {\n var $el = $(el),\n $content = $el.children('[data-tab-content]'),\n id = $content[0].id || GetYoDigits(6, 'accordion'),\n linkId = (el.id) ? `${el.id}-label` : `${id}-label`;\n\n $el.find('a:first').attr({\n 'aria-controls': id,\n 'id': linkId,\n 'aria-expanded': false\n });\n\n $content.attr({'role': 'region', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id});\n });\n\n var $initActive = this.$element.find('.is-active').children('[data-tab-content]');\n if ($initActive.length) {\n // Save up the initial hash to return to it later when going back in history\n this._initialAnchor = $initActive.prev('a').attr('href');\n this._openSingleTab($initActive);\n }\n\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var $anchor = anchor && $(anchor);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"]`);\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, open it (if not already active)\n if ($anchor && $link && $link.length) {\n if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {\n this._openSingleTab($anchor);\n }\n }\n // Otherwise, close everything\n else {\n this._closeAllTabs();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n onLoad($(window), () => {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset }, this.options.deepLinkSmudgeDelay);\n });\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Accordion#deeplink\n */\n this.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the accordion.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$tabs.each(function() {\n var $elem = $(this);\n var $tabContent = $elem.children('[data-tab-content]');\n if ($tabContent.length) {\n $elem.children('a').off('click.zf.accordion keydown.zf.accordion')\n .on('click.zf.accordion', function(e) {\n e.preventDefault();\n _this.toggle($tabContent);\n }).on('keydown.zf.accordion', function(e) {\n Keyboard.handleKey(e, 'Accordion', {\n toggle: function() {\n _this.toggle($tabContent);\n },\n next: function() {\n var $a = $elem.next().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n previous: function() {\n var $a = $elem.prev().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n first: function() {\n var $a = _this.$tabs.first().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n last: function() {\n var $a = _this.$tabs.last().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n });\n if (this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Toggles the selected content pane's open/close state.\n * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).\n * @function\n */\n toggle($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot toggle an accordion that is disabled.');\n return;\n }\n if ($target.parent().hasClass('is-active')) {\n this.up($target);\n } else {\n this.down($target);\n }\n //either replace or update browser history\n if (this.options.deepLink) {\n var anchor = $target.prev('a').attr('href');\n\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n }\n\n /**\n * Opens the accordion tab defined by `$target`.\n * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n */\n down($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot call down on an accordion that is disabled.');\n return;\n }\n\n if (this.options.multiExpand)\n this._openTab($target);\n else\n this._openSingleTab($target);\n }\n\n /**\n * Closes the tab defined by `$target`.\n * It may be ignored if the Accordion options don't allow it.\n *\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n */\n up($target) {\n if (this.$element.is('[disabled]')) {\n console.info('Cannot call up on an accordion that is disabled.');\n return;\n }\n\n // Don't close the item if it is already closed\n const $targetItem = $target.parent();\n if (!$targetItem.hasClass('is-active')) return;\n\n // Don't close the item if there is no other active item (unless with `allowAllClosed`)\n const $othersItems = $targetItem.siblings();\n if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;\n\n this._closeTab($target);\n }\n\n /**\n * Make the tab defined by `$target` the only opened tab, closing all others tabs.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @function\n * @private\n */\n _openSingleTab($target) {\n // Close all the others active tabs.\n const $activeContents = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeContents.length) {\n this._closeTab($activeContents.not($target));\n }\n\n // Then open the target.\n this._openTab($target);\n }\n\n /**\n * Opens the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n * @private\n */\n _openTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', false);\n $targetItem.addClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': true\n });\n\n $target.finish().slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done opening.\n * @event Accordion#down\n */\n this.$element.trigger('down.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', true)\n $targetItem.removeClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': false\n });\n\n $target.finish().slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done collapsing up.\n * @event Accordion#up\n */\n this.$element.trigger('up.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes all active tabs\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeAllTabs() {\n var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeTabs.length) {\n this._closeTab($activeTabs);\n }\n }\n\n /**\n * Destroys an instance of an accordion.\n * @fires Accordion#destroyed\n * @function\n */\n _destroy() {\n this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');\n this.$element.find('a').off('.zf.accordion');\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n }\n}\n\nAccordion.defaults = {\n /**\n * Amount of time to animate the opening of an accordion pane.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Allow the accordion to have multiple open panes.\n * @option\n * @type {boolean}\n * @default false\n */\n multiExpand: false,\n /**\n * Allow the accordion to close all panes.\n * @option\n * @type {boolean}\n * @default false\n */\n allowAllClosed: false,\n /**\n * Link the location hash to the open pane.\n * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n /**\n * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n /**\n * If `deepLink` is enabled, update the browser history with the open accordion\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false\n};\n\nexport { Accordion };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.accordion.js","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { Positionable } from './foundation.positionable';\n\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Dropdown module.\n * @module foundation.dropdown\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n */\nclass Dropdown extends Positionable {\n /**\n * Creates a new instance of a dropdown.\n * @class\n * @name Dropdown\n * @param {jQuery} element - jQuery object to make into a dropdown.\n * Object should be of the dropdown panel, rather than its anchor.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options);\n this.className = 'Dropdown'; // ie9 back compat\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Dropdown', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.\n * @function\n * @private\n */\n _init() {\n var $id = this.$element.attr('id');\n\n this.$anchors = $(`[data-toggle=\"${$id}\"]`).length ? $(`[data-toggle=\"${$id}\"]`) : $(`[data-open=\"${$id}\"]`);\n this.$anchors.attr({\n 'aria-controls': $id,\n 'data-is-focus': false,\n 'data-yeti-box': $id,\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n\n this._setCurrentAnchor(this.$anchors.first());\n\n if(this.options.parentClass){\n this.$parent = this.$element.parents('.' + this.options.parentClass);\n }else{\n this.$parent = null;\n }\n\n // Set [aria-labelledby] on the Dropdown if it is not set\n if (typeof this.$element.attr('aria-labelledby') === 'undefined') {\n // Get the anchor ID or create one\n if (typeof this.$currentAnchor.attr('id') === 'undefined') {\n this.$currentAnchor.attr('id', GetYoDigits(6, 'dd-anchor'));\n }\n\n this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));\n }\n\n this.$element.attr({\n 'aria-hidden': 'true',\n 'data-yeti-box': $id,\n 'data-resize': $id,\n });\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var position = this.$element[0].className.match(/(top|left|right|bottom)/g);\n if(position) {\n return position[0];\n } else {\n return 'bottom'\n }\n }\n\n _getDefaultAlignment() {\n // handle legacy float approach\n var horizontalPosition = /float-(\\S+)/.exec(this.$currentAnchor.attr('class'));\n if(horizontalPosition) {\n return horizontalPosition[1];\n }\n\n return super._getDefaultAlignment();\n }\n\n\n\n /**\n * Sets the position and orientation of the dropdown pane, checks for collisions if allow-overlap is not true.\n * Recursively calls itself if a collision is detected, with a new position class.\n * @function\n * @private\n */\n _setPosition() {\n this.$element.removeClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n super._setPosition(this.$currentAnchor, this.$element, this.$parent);\n this.$element.addClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n }\n\n /**\n * Make it a current anchor.\n * Current anchor as the reference for the position of Dropdown panes.\n * @param {HTML} el - DOM element of the anchor.\n * @function\n * @private\n */\n _setCurrentAnchor(el) {\n this.$currentAnchor = $(el);\n }\n\n /**\n * Adds event listeners to the element utilizing the triggers utility library.\n * @function\n * @private\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': this._setPosition.bind(this)\n });\n\n this.$anchors.off('click.zf.trigger')\n .on('click.zf.trigger', function(e) {\n _this._setCurrentAnchor(this);\n\n if (\n // if forceFollow false, always prevent default action\n (_this.options.forceFollow === false) ||\n // if forceFollow true and hover option true, only prevent default action on 1st click\n // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed\n (hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false)\n ) {\n e.preventDefault();\n }\n });\n\n if(this.options.hover){\n this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n _this._setCurrentAnchor(this);\n\n var bodyData = $('body').data();\n if(typeof(bodyData.whatinput) === 'undefined' || bodyData.whatinput === 'mouse') {\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.open();\n _this.$anchors.data('hover', true);\n }, _this.options.hoverDelay);\n }\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n if(this.options.hoverPane){\n this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n clearTimeout(_this.timeout);\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n }\n }\n this.$anchors.add(this.$element).on('keydown.zf.dropdown', function(e) {\n\n var $target = $(this);\n\n Keyboard.handleKey(e, 'Dropdown', {\n open: function() {\n if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {\n _this.open();\n _this.$element.attr('tabindex', -1).focus();\n e.preventDefault();\n }\n },\n close: function() {\n _this.close();\n _this.$anchors.focus();\n }\n });\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n var $body = $(document.body).not(this.$element),\n _this = this;\n $body.off('click.zf.dropdown tap.zf.dropdown')\n .on('click.zf.dropdown tap.zf.dropdown', function (e) {\n if(_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {\n return;\n }\n if(_this.$element.is(e.target) || _this.$element.find(e.target).length) {\n return;\n }\n _this.close();\n $body.off('click.zf.dropdown tap.zf.dropdown');\n });\n }\n\n /**\n * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.\n * @function\n * @fires Dropdown#closeme\n * @fires Dropdown#show\n */\n open() {\n // var _this = this;\n /**\n * Fires to close other open dropdowns, typically when dropdown is opening\n * @event Dropdown#closeme\n */\n this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));\n this.$anchors.addClass('hover')\n .attr({'aria-expanded': true});\n // this.$element/*.show()*/;\n\n this.$element.addClass('is-opening');\n this._setPosition();\n this.$element.removeClass('is-opening').addClass('is-open')\n .attr({'aria-hidden': false});\n\n if(this.options.autoFocus){\n var $focusable = Keyboard.findFocusable(this.$element);\n if($focusable.length){\n $focusable.eq(0).focus();\n }\n }\n\n if(this.options.closeOnClick){ this._addBodyHandler(); }\n\n if (this.options.trapFocus) {\n Keyboard.trapFocus(this.$element);\n }\n\n /**\n * Fires once the dropdown is visible.\n * @event Dropdown#show\n */\n this.$element.trigger('show.zf.dropdown', [this.$element]);\n }\n\n /**\n * Closes the open dropdown pane.\n * @function\n * @fires Dropdown#hide\n */\n close() {\n if(!this.$element.hasClass('is-open')){\n return false;\n }\n this.$element.removeClass('is-open')\n .attr({'aria-hidden': true});\n\n this.$anchors.removeClass('hover')\n .attr('aria-expanded', false);\n\n /**\n * Fires once the dropdown is no longer visible.\n * @event Dropdown#hide\n */\n this.$element.trigger('hide.zf.dropdown', [this.$element]);\n\n if (this.options.trapFocus) {\n Keyboard.releaseFocus(this.$element);\n }\n }\n\n /**\n * Toggles the dropdown pane's visibility.\n * @function\n */\n toggle() {\n if(this.$element.hasClass('is-open')){\n if(this.$anchors.data('hover')) return;\n this.close();\n }else{\n this.open();\n }\n }\n\n /**\n * Destroys the dropdown.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.trigger').hide();\n this.$anchors.off('.zf.dropdown');\n $(document.body).off('click.zf.dropdown tap.zf.dropdown');\n\n }\n}\n\nDropdown.defaults = {\n /**\n * Class that designates bounding container of Dropdown (default: window)\n * @option\n * @type {?string}\n * @default null\n */\n parentClass: null,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 250\n */\n hoverDelay: 250,\n /**\n * Allow submenus to open on hover events\n * @option\n * @type {boolean}\n * @default false\n */\n hover: false,\n /**\n * Don't close dropdown when hovering over dropdown pane\n * @option\n * @type {boolean}\n * @default false\n */\n hoverPane: false,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Position of dropdown. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false,\n /**\n * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n /**\n * Allows a click on the body to close the dropdown.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {Dropdown};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.dropdown.js","import { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst POSITIONS = ['left', 'right', 'top', 'bottom'];\nconst VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];\nconst HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];\n\nconst ALIGNMENTS = {\n 'left': VERTICAL_ALIGNMENTS,\n 'right': VERTICAL_ALIGNMENTS,\n 'top': HORIZONTAL_ALIGNMENTS,\n 'bottom': HORIZONTAL_ALIGNMENTS\n}\n\nfunction nextItem(item, array) {\n var currentIdx = array.indexOf(item);\n if(currentIdx === array.length - 1) {\n return array[0];\n } else {\n return array[currentIdx + 1];\n }\n}\n\n\nclass Positionable extends Plugin {\n /**\n * Abstract class encapsulating the tether-like explicit positioning logic\n * including repositioning based on overlap.\n * Expects classes to define defaults for vOffset, hOffset, position,\n * alignment, allowOverlap, and allowBottomOverlap. They can do this by\n * extending the defaults, or (for now recommended due to the way docs are\n * generated) by explicitly declaring them.\n *\n **/\n\n _init() {\n this.triedPositions = {};\n this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;\n this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;\n this.originalPosition = this.position;\n this.originalAlignment = this.alignment;\n }\n\n _getDefaultPosition () {\n return 'bottom';\n }\n\n _getDefaultAlignment() {\n switch(this.position) {\n case 'bottom':\n case 'top':\n return Rtl() ? 'right' : 'left';\n case 'left':\n case 'right':\n return 'bottom';\n }\n }\n\n /**\n * Adjusts the positionable possible positions by iterating through alignments\n * and positions.\n * @function\n * @private\n */\n _reposition() {\n if(this._alignmentsExhausted(this.position)) {\n this.position = nextItem(this.position, POSITIONS);\n this.alignment = ALIGNMENTS[this.position][0];\n } else {\n this._realign();\n }\n }\n\n /**\n * Adjusts the dropdown pane possible positions by iterating through alignments\n * on the current position.\n * @function\n * @private\n */\n _realign() {\n this._addTriedPosition(this.position, this.alignment)\n this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position])\n }\n\n _addTriedPosition(position, alignment) {\n this.triedPositions[position] = this.triedPositions[position] || []\n this.triedPositions[position].push(alignment);\n }\n\n _positionsExhausted() {\n var isExhausted = true;\n for(var i = 0; i < POSITIONS.length; i++) {\n isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);\n }\n return isExhausted;\n }\n\n _alignmentsExhausted(position) {\n return this.triedPositions[position] && this.triedPositions[position].length === ALIGNMENTS[position].length;\n }\n\n\n // When we're trying to center, we don't want to apply offset that's going to\n // take us just off center, so wrap around to return 0 for the appropriate\n // offset in those alignments. TODO: Figure out if we want to make this\n // configurable behavior... it feels more intuitive, especially for tooltips, but\n // it's possible someone might actually want to start from center and then nudge\n // slightly off.\n _getVOffset() {\n return this.options.vOffset;\n }\n\n _getHOffset() {\n return this.options.hOffset;\n }\n\n _setPosition($anchor, $element, $parent) {\n if($anchor.attr('aria-expanded') === 'false'){ return false; }\n\n if (!this.options.allowOverlap) {\n // restore original position & alignment before checking overlap\n this.position = this.originalPosition;\n this.alignment = this.originalAlignment;\n }\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n\n if(!this.options.allowOverlap) {\n var minOverlap = 100000000;\n // default coordinates to how we start, in case we can't figure out better\n var minCoordinates = {position: this.position, alignment: this.alignment};\n while(!this._positionsExhausted()) {\n let overlap = Box.OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);\n if(overlap === 0) {\n return;\n }\n\n if(overlap < minOverlap) {\n minOverlap = overlap;\n minCoordinates = {position: this.position, alignment: this.alignment};\n }\n\n this._reposition();\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n // If we get through the entire loop, there was no non-overlapping\n // position available. Pick the version with least overlap.\n this.position = minCoordinates.position;\n this.alignment = minCoordinates.alignment;\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n }\n\n}\n\nPositionable.defaults = {\n /**\n * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown positionable first\n * try to position as defined by data-position and data-alignment, but\n * reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Number of pixels the positionable should be separated vertically from anchor\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels the positionable should be separated horizontally from anchor\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n}\n\nexport {Positionable};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.positionable.js","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Equalizer module.\n * @module foundation.equalizer\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.imageLoader if equalizer contains images\n */\n\nclass Equalizer extends Plugin {\n /**\n * Creates a new instance of Equalizer.\n * @class\n * @name Equalizer\n * @fires Equalizer#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options){\n this.$element = element;\n this.options = $.extend({}, Equalizer.defaults, this.$element.data(), options);\n this.className = 'Equalizer'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.\n * @private\n */\n _init() {\n var eqId = this.$element.attr('data-equalizer') || '';\n var $watched = this.$element.find(`[data-equalizer-watch=\"${eqId}\"]`);\n\n MediaQuery._init();\n\n this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');\n this.$element.attr('data-resize', (eqId || GetYoDigits(6, 'eq')));\n this.$element.attr('data-mutate', (eqId || GetYoDigits(6, 'eq')));\n\n this.hasNested = this.$element.find('[data-equalizer]').length > 0;\n this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;\n this.isOn = false;\n this._bindHandler = {\n onResizeMeBound: this._onResizeMe.bind(this),\n onPostEqualizedBound: this._onPostEqualized.bind(this)\n };\n\n var imgs = this.$element.find('img');\n var tooSmall;\n if(this.options.equalizeOn){\n tooSmall = this._checkMQ();\n $(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));\n }else{\n this._events();\n }\n if((typeof tooSmall !== 'undefined' && tooSmall === false) || typeof tooSmall === 'undefined'){\n if(imgs.length){\n onImagesLoaded(imgs, this._reflow.bind(this));\n }else{\n this._reflow();\n }\n }\n }\n\n /**\n * Removes event listeners if the breakpoint is too small.\n * @private\n */\n _pauseEvents() {\n this.isOn = false;\n this.$element.off({\n '.zf.equalizer': this._bindHandler.onPostEqualizedBound,\n 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,\n\t 'mutateme.zf.trigger': this._bindHandler.onResizeMeBound\n });\n }\n\n /**\n * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound\n * @private\n */\n _onResizeMe() {\n this._reflow();\n }\n\n /**\n * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound\n * @private\n */\n _onPostEqualized(e) {\n if(e.target !== this.$element[0]){ this._reflow(); }\n }\n\n /**\n * Initializes events for Equalizer.\n * @private\n */\n _events() {\n this._pauseEvents();\n if(this.hasNested){\n this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);\n }else{\n this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);\n\t this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);\n }\n this.isOn = true;\n }\n\n /**\n * Checks the current breakpoint to the minimum required size.\n * @private\n */\n _checkMQ() {\n var tooSmall = !MediaQuery.is(this.options.equalizeOn);\n if(tooSmall){\n if(this.isOn){\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n }else{\n if(!this.isOn){\n this._events();\n }\n }\n return tooSmall;\n }\n\n /**\n * A noop version for the plugin\n * @private\n */\n _killswitch() {\n return;\n }\n\n /**\n * Calls necessary functions to update Equalizer upon DOM change\n * @private\n */\n _reflow() {\n if(!this.options.equalizeOnStack){\n if(this._isStacked()){\n this.$watched.css('height', 'auto');\n return false;\n }\n }\n if (this.options.equalizeByRow) {\n this.getHeightsByRow(this.applyHeightByRow.bind(this));\n }else{\n this.getHeights(this.applyHeight.bind(this));\n }\n }\n\n /**\n * Manually determines if the first 2 elements are *NOT* stacked.\n * @private\n */\n _isStacked() {\n if (!this.$watched[0] || !this.$watched[1]) {\n return true;\n }\n return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} heights - An array of heights of children within Equalizer container\n */\n getHeights(cb) {\n var heights = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n heights.push(this.$watched[i].offsetHeight);\n }\n cb(heights);\n }\n\n /**\n * Finds the outer heights of children contained within an Equalizer parent and returns them in an array\n * @param {Function} cb - A non-optional callback to return the heights array to.\n * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n */\n getHeightsByRow(cb) {\n var lastElTopOffset = (this.$watched.length ? this.$watched.first().offset().top : 0),\n groups = [],\n group = 0;\n //group by Row\n groups[group] = [];\n for(var i = 0, len = this.$watched.length; i < len; i++){\n this.$watched[i].style.height = 'auto';\n //maybe could use this.$watched[i].offsetTop\n var elOffsetTop = $(this.$watched[i]).offset().top;\n if (elOffsetTop !== lastElTopOffset) {\n group++;\n groups[group] = [];\n lastElTopOffset=elOffsetTop;\n }\n groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]);\n }\n\n for (var j = 0, ln = groups.length; j < ln; j++) {\n var heights = $(groups[j]).map(function(){ return this[1]; }).get();\n var max = Math.max.apply(null, heights);\n groups[j].push(max);\n }\n cb(groups);\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest\n * @param {array} heights - An array of heights of children within Equalizer container\n * @fires Equalizer#preequalized\n * @fires Equalizer#postequalized\n */\n applyHeight(heights) {\n var max = Math.max.apply(null, heights);\n /**\n * Fires before the heights are applied\n * @event Equalizer#preequalized\n */\n this.$element.trigger('preequalized.zf.equalizer');\n\n this.$watched.css('height', max);\n\n /**\n * Fires when the heights have been applied\n * @event Equalizer#postequalized\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row\n * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child\n * @fires Equalizer#preequalized\n * @fires Equalizer#preequalizedrow\n * @fires Equalizer#postequalizedrow\n * @fires Equalizer#postequalized\n */\n applyHeightByRow(groups) {\n /**\n * Fires before the heights are applied\n */\n this.$element.trigger('preequalized.zf.equalizer');\n for (var i = 0, len = groups.length; i < len ; i++) {\n var groupsILength = groups[i].length,\n max = groups[i][groupsILength - 1];\n if (groupsILength<=2) {\n $(groups[i][0][0]).css({'height':'auto'});\n continue;\n }\n /**\n * Fires before the heights per row are applied\n * @event Equalizer#preequalizedrow\n */\n this.$element.trigger('preequalizedrow.zf.equalizer');\n for (var j = 0, lenJ = (groupsILength-1); j < lenJ ; j++) {\n $(groups[i][j][0]).css({'height':max});\n }\n /**\n * Fires when the heights per row have been applied\n * @event Equalizer#postequalizedrow\n */\n this.$element.trigger('postequalizedrow.zf.equalizer');\n }\n /**\n * Fires when the heights have been applied\n */\n this.$element.trigger('postequalized.zf.equalizer');\n }\n\n /**\n * Destroys an instance of Equalizer.\n * @function\n */\n _destroy() {\n this._pauseEvents();\n this.$watched.css('height', 'auto');\n }\n}\n\n/**\n * Default settings for plugin\n */\nEqualizer.defaults = {\n /**\n * Enable height equalization when stacked on smaller screens.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeOnStack: false,\n /**\n * Enable height equalization row by row.\n * @option\n * @type {boolean}\n * @default false\n */\n equalizeByRow: false,\n /**\n * String representing the minimum breakpoint size the plugin should equalize heights on.\n * @option\n * @type {string}\n * @default ''\n */\n equalizeOn: ''\n};\n\nexport {Equalizer};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.equalizer.js","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, transitionend, RegExpEscape } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * OffCanvas module.\n * @module foundation.offCanvas\n * @requires foundation.util.keyboard\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass OffCanvas extends Plugin {\n /**\n * Creates a new instance of an off-canvas wrapper.\n * @class\n * @name OffCanvas\n * @fires OffCanvas#init\n * @param {Object} element - jQuery object to initialize.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.className = 'OffCanvas'; // ie9 back compat\n this.$element = element;\n this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options);\n this.contentClasses = { base: [], reveal: [] };\n this.$lastTrigger = $();\n this.$triggers = $();\n this.position = 'left';\n this.$content = $();\n this.nested = !!(this.options.nested);\n this.$sticky = $();\n this.isInCanvas = false;\n\n // Defines the CSS transition/position classes of the off-canvas content container.\n $(['push', 'overlap']).each((index, val) => {\n this.contentClasses.base.push('has-transition-'+val);\n });\n $(['left', 'right', 'top', 'bottom']).each((index, val) => {\n this.contentClasses.base.push('has-position-'+val);\n this.contentClasses.reveal.push('has-reveal-'+val);\n });\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n MediaQuery._init();\n\n this._init();\n this._events();\n\n Keyboard.register('OffCanvas', {\n 'ESCAPE': 'close'\n });\n\n }\n\n /**\n * Initializes the off-canvas wrapper by adding the exit overlay (if needed).\n * @function\n * @private\n */\n _init() {\n var id = this.$element.attr('id');\n\n this.$element.attr('aria-hidden', 'true');\n\n // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback)\n if (this.options.contentId) {\n this.$content = $('#'+this.options.contentId);\n } else if (this.$element.siblings('[data-off-canvas-content]').length) {\n this.$content = this.$element.siblings('[data-off-canvas-content]').first();\n } else {\n this.$content = this.$element.closest('[data-off-canvas-content]').first();\n }\n\n if (!this.options.contentId) {\n // Assume that the off-canvas element is nested if it isn't a sibling of the content\n this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;\n\n } else if (this.options.contentId && this.options.nested === null) {\n // Warning if using content ID without setting the nested option\n // Once the element is nested it is required to work properly in this case\n console.warn('Remember to use the nested option if using the content ID option!');\n }\n\n if (this.nested === true) {\n // Force transition overlap if nested\n this.options.transition = 'overlap';\n // Remove appropriate classes if already assigned in markup\n this.$element.removeClass('is-transition-push');\n }\n\n this.$element.addClass(`is-transition-${this.options.transition} is-closed`);\n\n // Find triggers that affect this element and add aria-expanded to them\n this.$triggers = $(document)\n .find('[data-open=\"'+id+'\"], [data-close=\"'+id+'\"], [data-toggle=\"'+id+'\"]')\n .attr('aria-expanded', 'false')\n .attr('aria-controls', id);\n\n // Get position by checking for related CSS class\n this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\\-(left|top|right|bottom)/)[1] : this.position;\n\n // Add an overlay over the content if necessary\n if (this.options.contentOverlay === true) {\n var overlay = document.createElement('div');\n var overlayPosition = $(this.$element).css(\"position\") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';\n overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);\n this.$overlay = $(overlay);\n if(overlayPosition === 'is-overlay-fixed') {\n $(this.$overlay).insertAfter(this.$element);\n } else {\n this.$content.append(this.$overlay);\n }\n }\n\n // Get the revealOn option from the class.\n var revealOnRegExp = new RegExp(RegExpEscape(this.options.revealClass) + '([^\\\\s]+)', 'g');\n var revealOnClass = revealOnRegExp.exec(this.$element[0].className);\n if (revealOnClass) {\n this.options.isRevealed = true;\n this.options.revealOn = this.options.revealOn || revealOnClass[1];\n }\n\n // Ensure the `reveal-on-*` class is set.\n if (this.options.isRevealed === true && this.options.revealOn) {\n this.$element.first().addClass(`${this.options.revealClass}${this.options.revealOn}`);\n this._setMQChecker();\n }\n\n if (this.options.transitionTime) {\n this.$element.css('transition-duration', this.options.transitionTime);\n }\n\n // Find fixed elements that should stay fixed while off-canvas is opened\n this.$sticky = this.$content.find('[data-off-canvas-sticky]');\n if (this.$sticky.length > 0 && this.options.transition === 'push') {\n // If there's at least one match force contentScroll:false because the absolute top value doesn't get recalculated on scroll\n // Limit to push transition since there's no transform scope for overlap\n this.options.contentScroll = false;\n }\n\n let inCanvasFor = this.$element.attr('class').match(/\\bin-canvas-for-(\\w+)/);\n if (inCanvasFor && inCanvasFor.length === 2) {\n // Set `inCanvasOn` option if found in-canvas-for-[BREAKPONT] CSS class\n this.options.inCanvasOn = inCanvasFor[1];\n } else if (this.options.inCanvasOn) {\n // Ensure the CSS class is set\n this.$element.addClass(`in-canvas-for-${this.options.inCanvasOn}`);\n }\n\n if (this.options.inCanvasOn) {\n this._checkInCanvas();\n }\n\n // Initally remove all transition/position CSS classes from off-canvas content container.\n this._removeContentClasses();\n }\n\n /**\n * Adds event handlers to the off-canvas wrapper and the exit overlay.\n * @function\n * @private\n */\n _events() {\n this.$element.off('.zf.trigger .zf.offCanvas').on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'keydown.zf.offCanvas': this._handleKeyboard.bind(this)\n });\n\n if (this.options.closeOnClick === true) {\n var $target = this.options.contentOverlay ? this.$overlay : this.$content;\n $target.on({'click.zf.offCanvas': this.close.bind(this)});\n }\n\n if (this.options.inCanvasOn) {\n $(window).on('changed.zf.mediaquery', () => {\n this._checkInCanvas();\n });\n }\n\n }\n\n /**\n * Applies event listener for elements that will reveal at certain breakpoints.\n * @private\n */\n _setMQChecker() {\n var _this = this;\n\n this.onLoadListener = onLoad($(window), function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n }\n });\n\n $(window).on('changed.zf.mediaquery', function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n } else {\n _this.reveal(false);\n }\n });\n }\n\n /**\n * Checks if InCanvas on current breakpoint and adjust off-canvas accordingly\n * @private\n */\n _checkInCanvas() {\n this.isInCanvas = MediaQuery.atLeast(this.options.inCanvasOn);\n if (this.isInCanvas === true) {\n this.close();\n }\n }\n\n /**\n * Removes the CSS transition/position classes of the off-canvas content container.\n * Removing the classes is important when another off-canvas gets opened that uses the same content container.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _removeContentClasses(hasReveal) {\n if (typeof hasReveal !== 'boolean') {\n this.$content.removeClass(this.contentClasses.base.join(' '));\n } else if (hasReveal === false) {\n this.$content.removeClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.\n * Beforehand any transition/position class gets removed.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _addContentClasses(hasReveal) {\n this._removeContentClasses(hasReveal);\n if (typeof hasReveal !== 'boolean') {\n this.$content.addClass(`has-transition-${this.options.transition} has-position-${this.position}`);\n } else if (hasReveal === true) {\n this.$content.addClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Preserves the fixed behavior of sticky elements on opening an off-canvas with push transition.\n * Since the off-canvas container has got a transform scope in such a case, it is done by calculating position absolute values.\n * @private\n */\n _fixStickyElements() {\n this.$sticky.each((_, el) => {\n const $el = $(el);\n\n // If sticky element is currently fixed, adjust its top value to match absolute position due to transform scope\n // Limit to push transition because postion:fixed works without problems for overlap (no transform scope)\n if ($el.css('position') === 'fixed') {\n\n // Save current inline styling to restore it if undoing the absolute fixing\n let topVal = parseInt($el.css('top'), 10);\n $el.data('offCanvasSticky', { top: topVal });\n\n let absoluteTopVal = $(document).scrollTop() + topVal;\n $el.css({ top: `${absoluteTopVal}px`, width: '100%', transition: 'none' });\n }\n });\n }\n\n /**\n * Restores the original fixed styling of sticky elements after having closed an off-canvas that got pseudo fixed beforehand.\n * This reverts the changes of _fixStickyElements()\n * @private\n */\n _unfixStickyElements() {\n this.$sticky.each((_, el) => {\n const $el = $(el);\n let stickyData = $el.data('offCanvasSticky');\n\n // If sticky element has got data object with prior values (meaning it was originally fixed) restore these values once off-canvas is closed\n if (typeof stickyData === 'object') {\n $el.css({ top: `${stickyData.top}px`, width: '', transition: '' })\n $el.data('offCanvasSticky', '');\n }\n });\n }\n\n /**\n * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.\n * @param {Boolean} isRevealed - true if element should be revealed.\n * @function\n */\n reveal(isRevealed) {\n if (isRevealed) {\n this.close();\n this.isRevealed = true;\n this.$element.attr('aria-hidden', 'false');\n this.$element.off('open.zf.trigger toggle.zf.trigger');\n this.$element.removeClass('is-closed');\n } else {\n this.isRevealed = false;\n this.$element.attr('aria-hidden', 'true');\n this.$element.off('open.zf.trigger toggle.zf.trigger').on({\n 'open.zf.trigger': this.open.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this)\n });\n this.$element.addClass('is-closed');\n }\n this._addContentClasses(isRevealed);\n }\n\n /**\n * Stops scrolling of the body when OffCanvas is open on mobile Safari and other troublesome browsers.\n * @function\n * @private\n */\n _stopScrolling() {\n return false;\n }\n\n /**\n * Save current finger y-position\n * @param event\n * @private\n */\n _recordScrollable(event) {\n const elem = this;\n elem.lastY = event.touches[0].pageY;\n }\n\n /**\n * Prevent further scrolling when it hits the edges\n * @param event\n * @private\n */\n _preventDefaultAtEdges(event) {\n const elem = this;\n const _this = event.data;\n const delta = elem.lastY - event.touches[0].pageY;\n elem.lastY = event.touches[0].pageY;\n\n if (!_this._canScroll(delta, elem)) {\n event.preventDefault();\n }\n }\n\n /**\n * Handle continuous scrolling of scrollbox\n * Don't bubble up to _preventDefaultAtEdges\n * @param event\n * @private\n */\n _scrollboxTouchMoved(event) {\n const elem = this;\n const _this = event.data;\n const parent = elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]');\n const delta = elem.lastY - event.touches[0].pageY;\n parent.lastY = elem.lastY = event.touches[0].pageY;\n\n event.stopPropagation();\n\n if (!_this._canScroll(delta, elem)) {\n if (!_this._canScroll(delta, parent)) {\n event.preventDefault();\n } else {\n parent.scrollTop += delta;\n }\n }\n }\n\n /**\n * Detect possibility of scrolling\n * @param delta\n * @param elem\n * @returns boolean\n * @private\n */\n _canScroll(delta, elem) {\n const up = delta < 0;\n const down = delta > 0;\n const allowUp = elem.scrollTop > 0;\n const allowDown = elem.scrollTop < elem.scrollHeight - elem.clientHeight;\n return up && allowUp || down && allowDown;\n }\n\n /**\n * Opens the off-canvas menu.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n * @fires OffCanvas#opened\n * @todo also trigger 'open' event?\n */\n open(event, trigger) {\n if (this.$element.hasClass('is-open') || this.isRevealed || this.isInCanvas) { return; }\n var _this = this;\n\n if (trigger) {\n this.$lastTrigger = trigger;\n }\n\n if (this.options.forceTo === 'top') {\n window.scrollTo(0, 0);\n } else if (this.options.forceTo === 'bottom') {\n window.scrollTo(0,document.body.scrollHeight);\n }\n\n if (this.options.transitionTime && this.options.transition !== 'overlap') {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);\n } else {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');\n }\n\n this.$element.addClass('is-open').removeClass('is-closed');\n\n this.$triggers.attr('aria-expanded', 'true');\n this.$element.attr('aria-hidden', 'false');\n\n this.$content.addClass('is-open-' + this.position);\n\n // If `contentScroll` is set to false, add class and disable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);\n this.$element.on('touchstart', this._recordScrollable);\n this.$element.on('touchmove', this, this._preventDefaultAtEdges);\n this.$element.on('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.on('touchmove', '[data-off-canvas-scrollbox]', this, this._scrollboxTouchMoved);\n }\n\n if (this.options.contentOverlay === true) {\n this.$overlay.addClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.addClass('is-closable');\n }\n\n if (this.options.autoFocus === true) {\n this.$element.one(transitionend(this.$element), function() {\n if (!_this.$element.hasClass('is-open')) {\n return; // exit if prematurely closed\n }\n var canvasFocus = _this.$element.find('[data-autofocus]');\n if (canvasFocus.length) {\n canvasFocus.eq(0).focus();\n } else {\n _this.$element.find('a, button').eq(0).focus();\n }\n });\n }\n\n if (this.options.trapFocus === true) {\n this.$content.attr('tabindex', '-1');\n Keyboard.trapFocus(this.$element);\n }\n\n if (this.options.transition === 'push') {\n this._fixStickyElements();\n }\n\n this._addContentClasses();\n\n /**\n * Fires when the off-canvas menu opens.\n * @event OffCanvas#opened\n */\n this.$element.trigger('opened.zf.offCanvas');\n\n /**\n * Fires when the off-canvas menu open transition is done.\n * @event OffCanvas#openedEnd\n */\n this.$element.one(transitionend(this.$element), () => {\n this.$element.trigger('openedEnd.zf.offCanvas');\n });\n }\n\n /**\n * Closes the off-canvas menu.\n * @function\n * @param {Function} cb - optional cb to fire after closure.\n * @fires OffCanvas#close\n * @fires OffCanvas#closed\n */\n close() {\n if (!this.$element.hasClass('is-open') || this.isRevealed) { return; }\n\n /**\n * Fires when the off-canvas menu closes.\n * @event OffCanvas#close\n */\n this.$element.trigger('close.zf.offCanvas');\n\n this.$element.removeClass('is-open');\n\n this.$element.attr('aria-hidden', 'true');\n\n this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom');\n\n if (this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-closable');\n }\n\n this.$triggers.attr('aria-expanded', 'false');\n\n\n // Listen to transitionEnd: add class, re-enable scrolling and release focus when done.\n this.$element.one(transitionend(this.$element), () => {\n\n this.$element.addClass('is-closed');\n this._removeContentClasses();\n\n if (this.options.transition === 'push') {\n this._unfixStickyElements();\n }\n\n // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').removeClass('is-off-canvas-open').off('touchmove', this._stopScrolling);\n this.$element.off('touchstart', this._recordScrollable);\n this.$element.off('touchmove', this._preventDefaultAtEdges);\n this.$element.off('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.off('touchmove', '[data-off-canvas-scrollbox]', this._scrollboxTouchMoved);\n }\n\n if (this.options.trapFocus === true) {\n this.$content.removeAttr('tabindex');\n Keyboard.releaseFocus(this.$element);\n }\n\n /**\n * Fires when the off-canvas menu close transition is done.\n * @event OffCanvas#closed\n */\n this.$element.trigger('closed.zf.offCanvas');\n });\n }\n\n /**\n * Toggles the off-canvas menu open or closed.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n */\n toggle(event, trigger) {\n if (this.$element.hasClass('is-open')) {\n this.close(event, trigger);\n }\n else {\n this.open(event, trigger);\n }\n }\n\n /**\n * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.\n * @function\n * @private\n */\n _handleKeyboard(e) {\n Keyboard.handleKey(e, 'OffCanvas', {\n close: () => {\n this.close();\n this.$lastTrigger.focus();\n return true;\n },\n handled: () => {\n e.preventDefault();\n }\n });\n }\n\n /**\n * Destroys the OffCanvas plugin.\n * @function\n */\n _destroy() {\n this.close();\n this.$element.off('.zf.trigger .zf.offCanvas');\n this.$overlay.off('.zf.offCanvas');\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n }\n}\n\nOffCanvas.defaults = {\n /**\n * Allow the user to click outside of the menu to close it.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n\n /**\n * Adds an overlay on top of `[data-off-canvas-content]`.\n * @option\n * @type {boolean}\n * @default true\n */\n contentOverlay: true,\n\n /**\n * Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken.\n * @option\n * @type {?string}\n * @default null\n */\n contentId: null,\n\n /**\n * Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element.\n * @option\n * @type {boolean}\n * @default null\n */\n nested: null,\n\n /**\n * Enable/disable scrolling of the main content when an off canvas panel is open.\n * @option\n * @type {boolean}\n * @default true\n */\n contentScroll: true,\n\n /**\n * Amount of time the open and close transition requires, including the appropriate milliseconds (`ms`) or seconds (`s`) unit (e.g. `500ms`, `.75s`) If none selected, pulls from body style.\n * @option\n * @type {string}\n * @default null\n */\n transitionTime: null,\n\n /**\n * Type of transition for the OffCanvas menu. Options are 'push', 'detached' or 'slide'.\n * @option\n * @type {string}\n * @default push\n */\n transition: 'push',\n\n /**\n * Force the page to scroll to top or bottom on open.\n * @option\n * @type {?string}\n * @default null\n */\n forceTo: null,\n\n /**\n * Allow the OffCanvas to remain open for certain breakpoints.\n * @option\n * @type {boolean}\n * @default false\n */\n isRevealed: false,\n\n /**\n * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.\n * @option\n * @type {?string}\n * @default null\n */\n revealOn: null,\n\n /**\n * Breakpoint at which the off-canvas gets moved into canvas content and acts as regular page element.\n * @option\n * @type {?string}\n * @default null\n */\n inCanvasOn: null,\n\n /**\n * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.\n * @option\n * @type {boolean}\n * @default true\n */\n autoFocus: true,\n\n /**\n * Class used to force an OffCanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.\n * @option\n * @type {string}\n * @default reveal-for-\n * @todo improve the regex testing for this.\n */\n revealClass: 'reveal-for-',\n\n /**\n * Triggers optional focus trapping when opening an OffCanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false\n}\n\nexport {OffCanvas};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.offcanvas.js","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\nimport { DropdownMenu } from './foundation.dropdownMenu';\nimport { Drilldown } from './foundation.drilldown';\nimport { AccordionMenu } from './foundation.accordionMenu';\n\nlet MenuPlugins = {\n dropdown: {\n cssClass: 'dropdown',\n plugin: DropdownMenu\n },\n drilldown: {\n cssClass: 'drilldown',\n plugin: Drilldown\n },\n accordion: {\n cssClass: 'accordion-menu',\n plugin: AccordionMenu\n }\n};\n\n // import \"foundation.util.triggers.js\";\n\n\n/**\n * ResponsiveMenu module.\n * @module foundation.responsiveMenu\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass ResponsiveMenu extends Plugin {\n /**\n * Creates a new instance of a responsive menu.\n * @class\n * @name ResponsiveMenu\n * @fires ResponsiveMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element) {\n this.$element = $(element);\n this.rules = this.$element.data('responsive-menu');\n this.currentMq = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveMenu'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.\n * @function\n * @private\n */\n _init() {\n\n MediaQuery._init();\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n // Add data-mutate since children may need it.\n this.$element.attr('data-mutate', (this.$element.attr('data-mutate') || GetYoDigits(6, 'responsive-menu')));\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n $(window).on('changed.zf.mediaquery', function() {\n _this._checkMediaQueries();\n });\n // $(window).on('resize.zf.ResponsiveMenu', function() {\n // _this._checkMediaQueries();\n // });\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) this.currentPlugin.destroy();\n this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n this.currentPlugin.destroy();\n $(window).off('.zf.ResponsiveMenu');\n }\n}\n\nResponsiveMenu.defaults = {};\n\nexport {ResponsiveMenu};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.responsiveMenu.js","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * ResponsiveToggle module.\n * @module foundation.responsiveToggle\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion\n */\n\nclass ResponsiveToggle extends Plugin {\n /**\n * Creates a new instance of Tab Bar.\n * @class\n * @name ResponsiveToggle\n * @fires ResponsiveToggle#init\n * @param {jQuery} element - jQuery object to attach tab bar functionality to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);\n this.className = 'ResponsiveToggle'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the tab bar by finding the target element, toggling element, and running update().\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n var targetID = this.$element.data('responsive-toggle');\n if (!targetID) {\n console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');\n }\n\n this.$targetMenu = $(`#${targetID}`);\n this.$toggler = this.$element.find('[data-toggle]').filter(function() {\n var target = $(this).data('toggle');\n return (target === targetID || target === \"\");\n });\n this.options = $.extend({}, this.options, this.$targetMenu.data());\n\n // If they were set, parse the animation classes\n if(this.options.animate) {\n let input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n }\n\n this._update();\n }\n\n /**\n * Adds necessary event handlers for the tab bar to work.\n * @function\n * @private\n */\n _events() {\n this._updateMqHandler = this._update.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._updateMqHandler);\n\n this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));\n }\n\n /**\n * Checks the current media query to determine if the tab bar should be visible or hidden.\n * @function\n * @private\n */\n _update() {\n // Mobile\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n this.$element.show();\n this.$targetMenu.hide();\n }\n\n // Desktop\n else {\n this.$element.hide();\n this.$targetMenu.show();\n }\n }\n\n /**\n * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.\n * @function\n * @fires ResponsiveToggle#toggled\n */\n toggleMenu() {\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n /**\n * Fires when the element attached to the tab bar toggles.\n * @event ResponsiveToggle#toggled\n */\n if(this.options.animate) {\n if (this.$targetMenu.is(':hidden')) {\n Motion.animateIn(this.$targetMenu, this.animationIn, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n this.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$targetMenu, this.animationOut, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n });\n }\n }\n else {\n this.$targetMenu.toggle(0);\n this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');\n this.$element.trigger('toggled.zf.responsiveToggle');\n }\n }\n };\n\n _destroy() {\n this.$element.off('.zf.responsiveToggle');\n this.$toggler.off('.zf.responsiveToggle');\n\n $(window).off('changed.zf.mediaquery', this._updateMqHandler);\n }\n}\n\nResponsiveToggle.defaults = {\n /**\n * The breakpoint after which the menu is always shown, and the tab bar is hidden.\n * @option\n * @type {string}\n * @default 'medium'\n */\n hideFor: 'medium',\n\n /**\n * To decide if the toggle should be animated or not.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport { ResponsiveToggle };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.responsiveToggle.js","import $ from 'jquery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\nimport { RegExpEscape } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Toggler module.\n * @module foundation.toggler\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n */\n\nclass Toggler extends Plugin {\n /**\n * Creates a new instance of Toggler.\n * @class\n * @name Toggler\n * @fires Toggler#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Toggler.defaults, element.data(), options);\n this.className = '';\n this.className = 'Toggler'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.\n * @function\n * @private\n */\n _init() {\n // Collect triggers to set ARIA attributes to\n var id = this.$element[0].id,\n $triggers = $(`[data-open~=\"${id}\"], [data-close~=\"${id}\"], [data-toggle~=\"${id}\"]`);\n\n var input;\n // Parse animation classes if they were set\n if (this.options.animate) {\n input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n\n // - aria-expanded: according to the element visibility.\n $triggers.attr('aria-expanded', !this.$element.is(':hidden'));\n }\n // Otherwise, parse toggle class\n else {\n input = this.options.toggler;\n if (typeof input !== 'string' || !input.length) {\n throw new Error(`The 'toggler' option containing the target class is required, got \"${input}\"`);\n }\n // Allow for a . at the beginning of the string\n this.className = input[0] === '.' ? input.slice(1) : input;\n\n // - aria-expanded: according to the elements class set.\n $triggers.attr('aria-expanded', this.$element.hasClass(this.className));\n }\n\n // - aria-controls: adding the element id to it if not already in it.\n $triggers.each((index, trigger) => {\n const $trigger = $(trigger);\n const controls = $trigger.attr('aria-controls') || '';\n\n const containsId = new RegExp(`\\\\b${RegExpEscape(id)}\\\\b`).test(controls);\n if (!containsId) $trigger.attr('aria-controls', controls ? `${controls} ${id}` : id);\n });\n }\n\n /**\n * Initializes events for the toggle trigger.\n * @function\n * @private\n */\n _events() {\n this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));\n }\n\n /**\n * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was \"on\" or \"off\".\n * @function\n * @fires Toggler#on\n * @fires Toggler#off\n */\n toggle() {\n this[ this.options.animate ? '_toggleAnimate' : '_toggleClass']();\n }\n\n _toggleClass() {\n this.$element.toggleClass(this.className);\n\n var isOn = this.$element.hasClass(this.className);\n if (isOn) {\n /**\n * Fires if the target element has the class after a toggle.\n * @event Toggler#on\n */\n this.$element.trigger('on.zf.toggler');\n }\n else {\n /**\n * Fires if the target element does not have the class after a toggle.\n * @event Toggler#off\n */\n this.$element.trigger('off.zf.toggler');\n }\n\n this._updateARIA(isOn);\n this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');\n }\n\n _toggleAnimate() {\n var _this = this;\n\n if (this.$element.is(':hidden')) {\n Motion.animateIn(this.$element, this.animationIn, function() {\n _this._updateARIA(true);\n this.trigger('on.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$element, this.animationOut, function() {\n _this._updateARIA(false);\n this.trigger('off.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n }\n\n _updateARIA(isOn) {\n var id = this.$element[0].id;\n $(`[data-open=\"${id}\"], [data-close=\"${id}\"], [data-toggle=\"${id}\"]`)\n .attr({\n 'aria-expanded': isOn ? true : false\n });\n }\n\n /**\n * Destroys the instance of Toggler on the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.toggler');\n }\n}\n\nToggler.defaults = {\n /**\n * Class of the element to toggle. It can be provided with or without \".\"\n * @option\n * @type {string}\n */\n toggler: undefined,\n /**\n * Tells the plugin if the element should animated when toggled.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport {Toggler};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/foundation-sites/js/foundation.toggler.js","var selectors = [\n 'iframe[src*=\"player.vimeo.com\"]',\n 'iframe[src*=\"youtube.com\"]',\n 'iframe[src*=\"youtube-nocookie.com\"]',\n 'iframe[src*=\"kickstarter.com\"][src*=\"video.html\"]',\n \"object\"\n];\n\nvar css =\n \".fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}\";\n\nmodule.exports = function(parentSelector, opts) {\n parentSelector = parentSelector || \"body\";\n opts = opts || {};\n\n if (isObject(parentSelector)) {\n opts = parentSelector;\n parentSelector = \"body\";\n }\n\n opts.ignore = opts.ignore || \"\";\n opts.players = opts.players || \"\";\n\n var containers = queryAll(parentSelector);\n if (!hasLength(containers)) return;\n\n if (!document.getElementById(\"fit-vids-style\")) {\n var head = document.head || document.getElementsByTagName(\"head\")[0];\n head.appendChild(styles());\n }\n\n var custom = toSelectorArray(opts.players);\n var ignored = toSelectorArray(opts.ignore);\n var ignoredSelector = ignored.length > 0 ? ignored.join() : null;\n var selector = selectors.concat(custom).join();\n\n if (!hasLength(selector)) {\n return;\n }\n\n containers.forEach(function(container) {\n var videos = queryAll(container, selector);\n\n videos.forEach(function(video) {\n if (ignoredSelector && video.matches(ignoredSelector)) {\n return;\n }\n wrap(video);\n });\n });\n}\n\nfunction queryAll(el, selector) {\n if (typeof el === \"string\") {\n selector = el;\n el = document;\n }\n return Array.prototype.slice.call(el.querySelectorAll(selector));\n}\n\nfunction toSelectorArray(input) {\n if (typeof input === \"string\") {\n return input\n .split(\",\")\n .map(trim)\n .filter(hasLength);\n } else if (isArray(input)) {\n return flatten(input.map(toSelectorArray).filter(hasLength));\n }\n return input || [];\n}\n\nfunction wrap(el) {\n if (/fluid-width-video-wrapper/.test(el.parentNode.className)) {\n return;\n }\n\n var widthAttr = parseInt(el.getAttribute(\"width\"), 10);\n var heightAttr = parseInt(el.getAttribute(\"height\"), 10);\n\n var width = !isNaN(widthAttr) ? widthAttr : el.clientWidth;\n var height = !isNaN(heightAttr) ? heightAttr : el.clientHeight;\n var aspect = height / width;\n\n el.removeAttribute(\"width\");\n el.removeAttribute(\"height\");\n\n var wrapper = document.createElement(\"div\");\n el.parentNode.insertBefore(wrapper, el);\n wrapper.className = \"fluid-width-video-wrapper\";\n wrapper.style.paddingTop = aspect * 100 + \"%\";\n wrapper.appendChild(el);\n}\n\nfunction styles() {\n var div = document.createElement(\"div\");\n div.innerHTML = '

    x

    \";\n return div.childNodes[1];\n}\n\nfunction hasLength(input) {\n return input.length > 0;\n}\n\nfunction trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n}\n\nfunction flatten(input) {\n return [].concat.apply([], input);\n}\n\nfunction isObject(input) {\n return Object.prototype.toString.call(input) === \"[object Object]\";\n}\n\nfunction isArray(input) {\n return Object.prototype.toString.call(input) === \"[object Array]\";\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/fitvids/index.js","!function(){\"use strict\";if(\"undefined\"!=typeof window){var t=window.navigator.userAgent.match(/Edge\\/(\\d{2})\\./),e=t?parseInt(t[1],10):null,n=!!e&&(16<=e&&e<=18);if(!(\"objectFit\"in document.documentElement.style!=!1)||n){var o=function(t,e,i){var n,o,l,a,d;if((i=i.split(\" \")).length<2&&(i[1]=i[0]),\"x\"===t)n=i[0],o=i[1],l=\"left\",a=\"right\",d=e.clientWidth;else{if(\"y\"!==t)return;n=i[1],o=i[0],l=\"top\",a=\"bottom\",d=e.clientHeight}if(n!==l&&o!==l){if(n!==a&&o!==a)return\"center\"===n||\"50%\"===n?(e.style[l]=\"50%\",void(e.style[\"margin-\"+l]=d/-2+\"px\")):void(0<=n.indexOf(\"%\")?(n=parseInt(n,10))<50?(e.style[l]=n+\"%\",e.style[\"margin-\"+l]=d*(n/-100)+\"px\"):(n=100-n,e.style[a]=n+\"%\",e.style[\"margin-\"+a]=d*(n/-100)+\"px\"):e.style[l]=n);e.style[a]=\"0\"}else e.style[l]=\"0\"},l=function(t){var e=t.dataset?t.dataset.objectFit:t.getAttribute(\"data-object-fit\"),i=t.dataset?t.dataset.objectPosition:t.getAttribute(\"data-object-position\");e=e||\"cover\",i=i||\"50% 50%\";var n=t.parentNode;return function(t){var e=window.getComputedStyle(t,null),i=e.getPropertyValue(\"position\"),n=e.getPropertyValue(\"overflow\"),o=e.getPropertyValue(\"display\");i&&\"static\"!==i||(t.style.position=\"relative\"),\"hidden\"!==n&&(t.style.overflow=\"hidden\"),o&&\"inline\"!==o||(t.style.display=\"block\"),0===t.clientHeight&&(t.style.height=\"100%\"),-1===t.className.indexOf(\"object-fit-polyfill\")&&(t.className=t.className+\" object-fit-polyfill\")}(n),function(t){var e=window.getComputedStyle(t,null),i={\"max-width\":\"none\",\"max-height\":\"none\",\"min-width\":\"0px\",\"min-height\":\"0px\",top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\",\"margin-top\":\"0px\",\"margin-right\":\"0px\",\"margin-bottom\":\"0px\",\"margin-left\":\"0px\"};for(var n in i)e.getPropertyValue(n)!==i[n]&&(t.style[n]=i[n])}(t),t.style.position=\"absolute\",t.style.width=\"auto\",t.style.height=\"auto\",\"scale-down\"===e&&(e=t.clientWidthn.clientWidth||\"contain\"===e&&t.clientWidthReset`).insertAfter($submit);\nwindow.jQuery('.solr-facet ul li').wrapInner('');\n\nwindow.jQuery(document).ready(() => {\n\t// Use setTimeout to ensure this runs in the JS event loop processed directly AFTER doc ready where the\n\t// plugin listeners are set.\n\tsetTimeout(() => {\n\t\twindow.jQuery('body').off('change', '#solr_s');\n\t}, 0);\n});\n\n\n// WEBPACK FOOTER //\n// ./src/layout/partials/solr_search_facetss.js"],"sourceRoot":""}