{"version":3,"sources":["webpack:///../node_modules/foundation-sites/js/foundation.accordion.js","webpack:///../node_modules/foundation-sites/js/foundation.accordionMenu.js","webpack:///../node_modules/foundation-sites/js/foundation.core.js","webpack:///../node_modules/foundation-sites/js/foundation.core.plugin.js","webpack:///../node_modules/foundation-sites/js/foundation.core.utils.js","webpack:///../node_modules/foundation-sites/js/foundation.drilldown.js","webpack:///../node_modules/foundation-sites/js/foundation.dropdownMenu.js","webpack:///../node_modules/foundation-sites/js/foundation.responsiveAccordionTabs.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.tabs.js","webpack:///../node_modules/foundation-sites/js/foundation.util.box.js","webpack:///../node_modules/foundation-sites/js/foundation.util.imageLoader.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.motion.js","webpack:///../node_modules/foundation-sites/js/foundation.util.nest.js","webpack:///../node_modules/foundation-sites/js/foundation.util.timer.js","webpack:///../node_modules/foundation-sites/js/foundation.util.touch.js","webpack:///../node_modules/foundation-sites/js/foundation.util.triggers.js","webpack:///../node_modules/jquery-match-height/dist/jquery.matchHeight.js","webpack:///../node_modules/object-fit-images/dist/ofi.common-js.js","webpack:///../node_modules/slick-carousel/slick/slick.js","webpack:///../node_modules/vanilla-lazyload/dist/lazyload.min.js"],"names":["Accordion","$","Keyboard","$el","$content","id","GetYoDigits","linkId","el","$initActive","anchor","window","$anchor","$link","isOwnAnchor","onLoad","offset","scrollTop","deepLinkSmudgeOffset","_this","$elem","$tabContent","e","toggle","next","$a","previous","handled","$target","console","history","$targetItem","$othersItems","$activeContents","targetContentId","$activeTabs","Plugin","slideSpeed","deepLinkSmudgeDelay","updateHistory","AccordionMenu","Nest","multiOpen","$sub","subId","isActive","initPanes","$submenu","$element","$elements","$prevElement","Math","i","$nextElement","open","close","up","down","closeAll","$targetBranch","$othersActiveSubmenus","$submenus","$allmenus","submenuToggleText","Function","funcNameRegex","results","fn","isNaN","str","Foundation","_plugins","_uuids","plugin","className","name","attrName","registerPlugin","pluginName","functionName","unregisterPlugin","hyphenate","reInit","isJQ","plugins","type","fns","plgs","p","Object","reflow","opts","opt","parseValue","addToJquery","foundation","$noJS","MediaQuery","args","Array","plugClass","throttle","timer","context","setTimeout","func","Date","vendors","vp","lastTime","now","nextTime","callback","start","aArgs","fToBind","fNOP","fBound","obj","getPluginName","length","namespace","chars","charsLength","transitions","elem","document","end","didLoad","eventType","cb","ignoreLeaveWindow","ignoreReappear","rest","handler","eLeave","eReenter","Drilldown","$menu","$back","$body","$scrollTopElement","scrollPos","parseInt","transitionend","calcHeight","height","parentSubMenu","$expandedSubmenus","index","isLastChild","maxHeight","result","numOfElems","Box","backButton","backButtonPosition","wrapper","scrollTopElement","scrollTopOffset","animationDuration","animationEasing","DropdownMenu","Touch","subs","Rtl","hasTouch","parClass","handleClickFn","hasSub","hasClicked","clearTimeout","ignoreMousedisappear","isTab","nextSibling","prevSibling","openSub","closeSub","functions","isItself","idx","$sibs","clear","oldClass","$parentLi","$toClose","somethingToClose","$activeItem","hoverDelay","closingTime","alignment","verticalClass","rightClass","forceFollow","MenuPlugins","tabs","cssClass","Tabs","accordion","ResponsiveAccordionTabs","rulesTree","rules","rule","ruleSize","rulePlugin","dummyPlugin","tmpPlugin","keyKey","objObj","matchedMq","value","fromString","$panels","tabsTitle","tabsPanel","$liHeads","$liHeadsA","display","visibility","toSet","$tabsContent","$placeholder","tempValue","hash","dropdown","drilldown","ResponsiveMenu","ResponsiveToggle","targetID","target","input","Motion","hideFor","animate","top","$images","onImagesLoaded","anchorNoHash","$oldTab","$tabLink","$targetContent","$target_anchor","$activeTab","idStr","hashIdStr","max","panel","temp","linkClass","linkActiveClass","panelClass","panelActiveClass","eleDims","parDims","bottomOver","topOver","leftOver","rightOver","ignoreBottom","rect","parRect","winRect","winY","winX","width","left","parentDims","windowDims","OverlapArea","GetExplicitOffsets","$eleDims","$anchorDims","topVal","leftVal","isOverflow","unloaded","self","images","singleImageLoaded","image","events","key","keyCodes","event","String","commands","keys","k","commandList","keyCode","cmds","command","returnValue","$focusable","$firstFocusable","$lastFocusable","parseKey","styleObject","parts","param","val","ret","styleMedia","style","script","info","matchMedium","text","matches","media","queries","current","$meta","extractedStyles","namedQueries","query","size","nextSize","bpModifier","queryIndex","nextQuery","matched","newSize","currentSize","prog","anim","duration","element","reset","initClass","isIn","initClasses","activeClass","activeClasses","requestAnimationFrame","animateIn","animateOut","menu","items","subMenuClass","subItemClass","hasSubClass","$item","options","nameSpace","remain","tapEvent","startEvent","isMoving","didMoved","x","y","dx","elapsedTime","dir","onTouchEnd","startPosX","startPosY","startTime","SpotSwipe","setup","handleTouch","touches","first","touchstart","touchmove","touchend","eventTypes","simulatedEvent","clientY","listener","debounce","MutationObserver","prefixes","triggers","Triggers","Listeners","Basic","Global","Initializers","openListener","closeListener","toggleListener","closeableListener","animation","toggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","yetiBoxes","plugNames","listeners","debounceGlobalListener","listeningElementsMutation","mutationRecordsList","elementObserver","attributeFilter","$document","define","_previousResizeWidth","_updateTimeout","_parse","parseFloat","_rows","lastTop","rows","$that","lastRow","_parseOptions","property","remove","matchHeight","that","group","elements","htmlHeight","$hiddenParents","$row","targetHeight","css","verticalPadding","groups","$this","groupId","_update","windowWidth","on","pf","reselect","getComputedStyle","props","parsed","propRegex","placeholder","createPlaceholder","nativeGetAttribute","nativeSetAttribute","img","ofi","setPlaceholder","keepSrcUsable","polyfillCurrentSrc","onImageReady","descriptors","get","prop","set","fixOne","startAutoMode","imgs","supportsObjectPosition","skipTest","fix","autoModeEnabled","OFI","testImg","supportsObjectFit","supportsOFI","supportsCurrentSrc","HTMLImageElement","getOfiImageMaybe","hijackAttributes","module","Slick","_","appendArrows","appendDots","asNavFor","prevArrow","nextArrow","autoplaySpeed","centerPadding","cssEase","customPaging","dotsClass","easing","edgeFriction","initialSlide","lazyLoad","respondTo","responsive","slide","slidesPerRow","slidesToShow","slidesToScroll","speed","touchThreshold","zIndex","autoPlayTimer","currentDirection","currentLeft","currentSlide","direction","$dots","listWidth","listHeight","loadIndex","$nextArrow","$prevArrow","slideCount","slideWidth","$slideTrack","$slides","slideOffset","swipeLeft","$list","touchObject","unslicked","dataSettings","instanceUid","addBefore","animProps","targetLeft","animStart","step","complete","transition","setInterval","clearInterval","slideTo","dot","newSlides","originalSlides","slidesPerSection","numOfSlides","a","b","row","c","sliderWidth","respondToWidth","targetBreakpoint","triggerBreakpoint","unevenOffset","indexOffset","navigables","prevNavigable","opacity","filter","$sf","breakPoint","counter","pagerQty","verticalOffset","verticalHeight","coef","slideIndex","targetSlide","indexes","centerOffset","swipedSlide","slidesTraversed","data","message","numDotGroups","tabControlIndexes","slideControlIndex","ariaButtonControl","mappedSlideIndex","action","imageSource","imageSrcSet","imageSizes","imageToLoad","rangeStart","rangeEnd","loadRange","prevSlide","nextSlide","loadImages","cloneRange","$currentSlide","tryCount","$imgsToLoad","lastVisibleIndex","responsiveSettings","l","currentBreakpoint","removeBefore","positionProps","position","padding","arguments","option","refresh","bodyStyle","allSlides","evenCoef","remainder","infiniteCount","targetElement","sync","slideLeft","dontAnimate","animSlide","oldSlide","navTarget","xDist","yDist","r","swipeAngle","curLeft","verticalSwipeLength","swipeDirection","positionOffset","swipeLength","t","n","navigator","o","elements_selector","container","threshold","thresholds","data_src","data_srcset","data_sizes","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_poster","class_applied","class_loading","class_loaded","class_error","class_entered","class_exited","unobserve_completed","unobserve_entered","cancel_on_exit","callback_enter","callback_exit","callback_applied","callback_loading","callback_loaded","callback_error","callback_finish","callback_cancel","use_native","s","detail","instance","u","d","f","h","m","E","I","A","L","w","O","z","C","N","M","R","T","G","D","V","j","F","IMG","IFRAME","VIDEO","P","S","U","q","H","B","J","K","Q","W","X","Y","Z","tt","nt","et","it","ot","rt","root","rootMargin","update","destroy","loadAll"],"mappings":"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","file":"scripts/vendor.js","sourcesContent":["'use strict';\n\nimport $ 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 });\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.$element.attr('role', 'tablist');\n this.$tabs = this.$element.children('[data-accordion-item]');\n\n this.$tabs.attr({'role': 'presentation'});\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 'role': 'tab',\n 'id': linkId,\n 'aria-expanded': false,\n 'aria-selected': false\n });\n\n $content.attr({'role': 'tabpanel', '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 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 'aria-selected': 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 'aria-selected': 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","'use strict';\n\n\nimport $ 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 'role': 'tree',\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 this.$element.find('li').attr({\n 'role': 'treeitem'\n });\n var initPanes = this.$element.find('.is-active');\n if (initPanes.length) {\n initPanes.each(function() {\n _this.down($(this));\n });\n }\n this._events();\n }\n\n /**\n * Adds event handlers for items within the menu.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.find('li').each(function() {\n var $submenu = $(this).children('[data-submenu]');\n\n if ($submenu.length) {\n if (_this.options.submenuToggle) {\n $(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n _this.toggle($submenu);\n });\n } else {\n $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n e.preventDefault();\n _this.toggle($submenu);\n });\n }\n }\n }).on('keydown.zf.accordionMenu', function(e) {\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement,\n $target = $element.children('[data-submenu]');\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1)).find('a').first();\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)).find('a').first();\n\n if ($(this).children('[data-submenu]:visible').length) { // has open sub menu\n $nextElement = $element.find('li:first-child').find('a').first();\n }\n if ($(this).is(':first-child')) { // is first element of sub menu\n $prevElement = $element.parents('li').first().find('a').first();\n } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { // if previous element has open sub menu\n $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();\n }\n if ($(this).is(':last-child')) { // is last element of sub menu\n $nextElement = $element.parents('li').first().next('li').find('a').first();\n }\n\n return;\n }\n });\n\n Keyboard.handleKey(e, 'AccordionMenu', {\n open: function() {\n if ($target.is(':hidden')) {\n _this.down($target);\n $target.find('li').first().find('a').first().focus();\n }\n },\n close: function() {\n if ($target.length && !$target.is(':hidden')) { // close active sub of this item\n _this.up($target);\n } else if ($element.parent('[data-submenu]').length) { // close currently open sub\n _this.up($element.parent('[data-submenu]'));\n $element.parents('li').first().find('a').first().focus();\n }\n },\n up: function() {\n $prevElement.focus();\n return true;\n },\n down: function() {\n $nextElement.focus();\n return true;\n },\n toggle: function() {\n if (_this.options.submenuToggle) {\n return false;\n }\n if ($element.children('[data-submenu]').length) {\n _this.toggle($element.children('[data-submenu]'));\n return true;\n }\n },\n closeAll: function() {\n _this.hideAll();\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n });//.attr('tabindex', 0);\n }\n\n /**\n * Closes all panes of the menu.\n * @function\n */\n hideAll() {\n this.up(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Opens all panes of the menu.\n * @function\n */\n showAll() {\n this.down(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Toggles the open/close state of a submenu.\n * @function\n * @param {jQuery} $target - the submenu to toggle\n */\n toggle($target) {\n if (!$target.is(':animated')) {\n if (!$target.is(':hidden')) {\n this.up($target);\n }\n else {\n this.down($target);\n }\n }\n }\n\n /**\n * Opens the sub-menu defined by `$target`.\n * @param {jQuery} $target - Sub-menu to open.\n * @fires AccordionMenu#down\n */\n down($target) {\n // If having multiple submenus active is disabled, close all the submenus\n // that are not parents or children of the targeted submenu.\n if (!this.options.multiOpen) {\n // The \"branch\" of the targetted submenu, from the component root to\n // the active submenus nested in it.\n const $targetBranch = $target.parentsUntil(this.$element)\n .add($target)\n .add($target.find('.is-active'));\n // All the active submenus that are not in the branch.\n const $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);\n\n this.up($othersActiveSubmenus);\n }\n\n $target\n .addClass('is-active')\n .attr({ 'aria-hidden': false });\n\n if (this.options.submenuToggle) {\n $target.prev('.submenu-toggle').attr({'aria-expanded': true});\n }\n else {\n $target.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});\n }\n\n $target.slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done opening.\n * @event AccordionMenu#down\n */\n this.$element.trigger('down.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.\n * @param {jQuery} $target - Sub-menu to close.\n * @fires AccordionMenu#up\n */\n up($target) {\n const $submenus = $target.find('[data-submenu]');\n const $allmenus = $target.add($submenus);\n\n $submenus.slideUp(0);\n $allmenus\n .removeClass('is-active')\n .attr('aria-hidden', true);\n\n if (this.options.submenuToggle) {\n $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);\n }\n else {\n $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);\n }\n\n $target.slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done collapsing up.\n * @event AccordionMenu#up\n */\n this.$element.trigger('up.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Destroys an instance of accordion menu.\n * @fires AccordionMenu#destroyed\n */\n _destroy() {\n this.$element.find('[data-submenu]').slideDown(0).css('display', '');\n this.$element.find('a').off('click.zf.accordionMenu');\n this.$element.find('[data-is-parent-link]').detach();\n\n if (this.options.submenuToggle) {\n this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');\n this.$element.find('.submenu-toggle').remove();\n }\n\n Nest.Burn(this.$element, 'accordion');\n }\n}\n\nAccordionMenu.defaults = {\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Amount of time to animate the opening of a submenu in ms.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Adds a separate submenu toggle button. This allows the parent item to have a link.\n * @option\n * @example true\n */\n submenuToggle: false,\n /**\n * The text used for the submenu toggle if enabled. This is used for screen readers only.\n * @option\n * @example true\n */\n submenuToggleText: 'Toggle menu',\n /**\n * Allow the menu to have multiple open panes.\n * @option\n * @type {boolean}\n * @default true\n */\n multiOpen: true\n};\n\nexport { AccordionMenu };\n","\"use strict\";\n\nimport $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nvar FOUNDATION_VERSION = '6.6.3';\n\n// Global Foundation object\n// This is attached to the window, or used as a module for AMD/Browserify\nvar Foundation = {\n version: FOUNDATION_VERSION,\n\n /**\n * Stores initialized plugins.\n */\n _plugins: {},\n\n /**\n * Stores generated unique ids for plugin instances\n */\n _uuids: [],\n\n /**\n * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.\n * @param {Object} plugin - The constructor of the plugin.\n */\n plugin: function(plugin, name) {\n // Object key to use when adding to global Foundation object\n // Examples: Foundation.Reveal, Foundation.OffCanvas\n var className = (name || functionName(plugin));\n // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin\n // Examples: data-reveal, data-off-canvas\n var attrName = hyphenate(className);\n\n // Add to the Foundation object and the plugins list (for reflowing)\n this._plugins[attrName] = this[className] = plugin;\n },\n /**\n * @function\n * Populates the _uuids array with pointers to each individual plugin instance.\n * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.\n * Also fires the initialization event for each plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @param {String} name - the name of the plugin, passed as a camelCased string.\n * @fires Plugin#init\n */\n registerPlugin: function(plugin, name){\n var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();\n plugin.uuid = GetYoDigits(6, pluginName);\n\n if(!plugin.$element.attr(`data-${pluginName}`)){ plugin.$element.attr(`data-${pluginName}`, plugin.uuid); }\n if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n plugin.$element.trigger(`init.zf.${pluginName}`);\n\n this._uuids.push(plugin.uuid);\n\n return;\n },\n /**\n * @function\n * Removes the plugins uuid from the _uuids array.\n * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.\n * Also fires the destroyed event for the plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @fires Plugin#destroyed\n */\n unregisterPlugin: function(plugin){\n var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));\n\n this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);\n plugin.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in plugin){\n plugin[prop] = null;//clean up script to prep for garbage collection.\n }\n return;\n },\n\n /**\n * @function\n * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.\n * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`\n * @default If no argument is passed, reflow all currently active plugins.\n */\n reInit: function(plugins){\n var isJQ = plugins instanceof $;\n try{\n if(isJQ){\n plugins.each(function(){\n $(this).data('zfPlugin')._init();\n });\n }else{\n var type = typeof plugins,\n _this = this,\n fns = {\n 'object': function(plgs){\n plgs.forEach(function(p){\n p = hyphenate(p);\n $('[data-'+ p +']').foundation('_init');\n });\n },\n 'string': function(){\n plugins = hyphenate(plugins);\n $('[data-'+ plugins +']').foundation('_init');\n },\n 'undefined': function(){\n this['object'](Object.keys(_this._plugins));\n }\n };\n fns[type](plugins);\n }\n }catch(err){\n console.error(err);\n }finally{\n return plugins;\n }\n },\n\n /**\n * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.\n * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.\n * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.\n */\n reflow: function(elem, plugins) {\n\n // If plugins is undefined, just grab everything\n if (typeof plugins === 'undefined') {\n plugins = Object.keys(this._plugins);\n }\n // If plugins is a string, convert it to an array with one item\n else if (typeof plugins === 'string') {\n plugins = [plugins];\n }\n\n var _this = this;\n\n // Iterate through each plugin\n $.each(plugins, function(i, name) {\n // Get the current plugin\n var plugin = _this._plugins[name];\n\n // Localize the search to all elements inside elem, as well as elem itself, unless elem === document\n var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']').filter(function () {\n return typeof $(this).data(\"zfPlugin\") === 'undefined';\n });\n\n // For each plugin found, initialize it\n $elem.each(function() {\n var $el = $(this),\n opts = { reflow: true };\n\n if($el.attr('data-options')){\n $el.attr('data-options').split(';').forEach(function(option, _index){\n var opt = option.split(':').map(function(el){ return el.trim(); });\n if(opt[0]) opts[opt[0]] = parseValue(opt[1]);\n });\n }\n try{\n $el.data('zfPlugin', new plugin($(this), opts));\n }catch(er){\n console.error(er);\n }finally{\n return;\n }\n });\n });\n },\n getFnName: functionName,\n\n addToJquery: function($) {\n // TODO: consider not making this a jQuery function\n // TODO: need way to reflow vs. re-initialize\n /**\n * The Foundation jQuery method.\n * @param {String|Array} method - An action to perform on the current jQuery object.\n */\n var foundation = function(method) {\n var type = typeof method,\n $noJS = $('.no-js');\n\n if($noJS.length){\n $noJS.removeClass('no-js');\n }\n\n if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin.\n MediaQuery._init();\n Foundation.reflow(this);\n }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins\n var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary\n var plugClass = this.data('zfPlugin');//determine the class of plugin\n\n if(typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined'){//make sure both the class and method exist\n if(this.length === 1){//if there's only one, call it directly.\n plugClass[method].apply(plugClass, args);\n }else{\n this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each\n plugClass[method].apply($(el).data('zfPlugin'), args);\n });\n }\n }else{//error for no class or no method\n throw new ReferenceError(\"We're sorry, '\" + method + \"' is not an available method for \" + (plugClass ? functionName(plugClass) : 'this element') + '.');\n }\n }else{//error for invalid argument type\n throw new TypeError(`We're sorry, ${type} is not a valid parameter. You must use a string representing the method you wish to invoke.`);\n }\n return this;\n };\n $.fn.foundation = foundation;\n return $;\n }\n};\n\nFoundation.util = {\n /**\n * Function for applying a debounce effect to a function call.\n * @function\n * @param {Function} func - Function to be called at end of timeout.\n * @param {Number} delay - Time in ms to delay the call of `func`.\n * @returns function\n */\n throttle: function (func, delay) {\n var timer = null;\n\n return function () {\n var context = this, args = arguments;\n\n if (timer === null) {\n timer = setTimeout(function () {\n func.apply(context, args);\n timer = null;\n }, delay);\n }\n };\n }\n};\n\nwindow.Foundation = Foundation;\n\n// Polyfill for requestAnimationFrame\n(function() {\n if (!Date.now || !window.Date.now)\n window.Date.now = Date.now = function() { return new Date().getTime(); };\n\n var vendors = ['webkit', 'moz'];\n for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];\n window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']\n || window[vp+'CancelRequestAnimationFrame']);\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)\n || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function(callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function() { callback(lastTime = nextTime); },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n }\n /**\n * Polyfill for performance.now, required by rAF\n */\n if(!window.performance || !window.performance.now){\n window.performance = {\n start: Date.now(),\n now: function(){ return Date.now() - this.start; }\n };\n }\n})();\nif (!Function.prototype.bind) {\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n // native functions don't have a prototype\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n// Polyfill to get the name of a function in IE9\nfunction functionName(fn) {\n if (typeof Function.prototype.name === 'undefined') {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = (funcNameRegex).exec((fn).toString());\n return (results && results.length > 1) ? results[1].trim() : \"\";\n }\n else if (typeof fn.prototype === 'undefined') {\n return fn.constructor.name;\n }\n else {\n return fn.prototype.constructor.name;\n }\n}\nfunction parseValue(str){\n if ('true' === str) return true;\n else if ('false' === str) return false;\n else if (!isNaN(str * 1)) return parseFloat(str);\n return str;\n}\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport {Foundation};\n","'use strict';\n\nimport $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\n\n// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST\n// {function} _setup (replaces previous constructor),\n// {function} _destroy (replaces previous destroy)\nclass Plugin {\n\n constructor(element, options) {\n this._setup(element, options);\n var pluginName = getPluginName(this);\n this.uuid = GetYoDigits(6, pluginName);\n\n if(!this.$element.attr(`data-${pluginName}`)){ this.$element.attr(`data-${pluginName}`, this.uuid); }\n if(!this.$element.data('zfPlugin')){ this.$element.data('zfPlugin', this); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n this.$element.trigger(`init.zf.${pluginName}`);\n }\n\n destroy() {\n this._destroy();\n var pluginName = getPluginName(this);\n this.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in this){\n this[prop] = null;//clean up script to prep for garbage collection.\n }\n }\n}\n\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction getPluginName(obj) {\n return hyphenate(obj.className);\n}\n\nexport {Plugin};\n","\"use strict\";\n\nimport $ 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","'use strict';\n\nimport $ 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 'TAB': 'down',\n 'SHIFT_TAB': 'up'\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 'role': 'tree',\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').attr('role', 'treeitem').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(e){\n if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { return; }\n e.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(e){\n // console.log('mouseup on back');\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 });\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(e){\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(index) {\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[role=\"treeitem\"] > 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[role=\"treeitem\"] > 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 $submenu.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\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 var _this = this;\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');\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 numOfElems = $(this).children('li').length;\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 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')\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","'use strict';\n\nimport $ 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(e) {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if(!hasSub){\n _this._hide();\n }\n });\n }\n\n if (!this.options.disableHover) {\n this.$menuItems.on('mouseenter.zf.dropdownMenu', function (e) {\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 (e) {\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, el) {\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 * 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","'use strict';\n\nimport $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin }from './foundation.core.plugin';\n\nimport { Accordion } from './foundation.accordion';\nimport { Tabs } from './foundation.tabs';\n\n// The plugin matches the plugin classes with these plugin instances.\nvar MenuPlugins = {\n tabs: {\n cssClass: 'tabs',\n plugin: Tabs,\n open: (plugin, target) => plugin.selectTab(target),\n close: null /* not supported */,\n toggle: null /* not supported */,\n },\n accordion: {\n cssClass: 'accordion',\n plugin: Accordion,\n open: (plugin, target) => plugin.down($(target)),\n close: (plugin, target) => plugin.up($(target)),\n toggle: (plugin, target) => plugin.toggle($(target)),\n }\n};\n\n\n/**\n * ResponsiveAccordionTabs module.\n * @module foundation.responsiveAccordionTabs\n * @requires foundation.util.motion\n * @requires foundation.accordion\n * @requires foundation.tabs\n */\n\nclass ResponsiveAccordionTabs extends Plugin{\n constructor(element, options) {\n super(element, options);\n return this.options.reflow && this.storezfData || this;\n }\n\n /**\n * Creates a new instance of a responsive accordion tabs.\n * @class\n * @name ResponsiveAccordionTabs\n * @fires ResponsiveAccordionTabs#init\n * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.$element.data('zfPluginBase', this);\n this.options = $.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options);\n\n this.rules = this.$element.data('responsive-accordion-tabs');\n this.currentMq = null;\n this.currentRule = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveAccordionTabs'; // ie9 back compat\n if (!this.$element.attr('id')) {\n this.$element.attr('id',GetYoDigits(6, 'responsiveaccordiontabs'));\n }\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\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 this._getAllOptions();\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n }\n\n _getAllOptions() {\n //get all defaults and options\n var _this = this;\n _this.allOptions = {};\n for (var key in MenuPlugins) {\n if (MenuPlugins.hasOwnProperty(key)) {\n var obj = MenuPlugins[key];\n try {\n var dummyPlugin = $('');\n var tmpPlugin = new obj.plugin(dummyPlugin,_this.options);\n for (var keyKey in tmpPlugin.options) {\n if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {\n var objObj = tmpPlugin.options[keyKey];\n _this.allOptions[keyKey] = objObj;\n }\n }\n tmpPlugin.destroy();\n }\n catch(e) {\n }\n }\n }\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);\n $(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\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) {\n //don't know why but on nested elements data zfPlugin get's lost\n if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin',this.storezfData);\n this.currentPlugin.destroy();\n }\n this._handleMarkup(this.rules[matchedMq].cssClass);\n this.currentRule = this.rules[matchedMq];\n this.currentPlugin = new this.currentRule.plugin(this.$element, this.options);\n this.storezfData = this.currentPlugin.$element.data('zfPlugin');\n\n }\n\n _handleMarkup(toSet){\n var _this = this, fromString = 'accordion';\n var $panels = $('[data-tabs-content='+this.$element.attr('id')+']');\n if ($panels.length) fromString = 'tabs';\n if (fromString === toSet) {\n return;\n }\n\n var tabsTitle = _this.allOptions.linkClass?_this.allOptions.linkClass:'tabs-title';\n var tabsPanel = _this.allOptions.panelClass?_this.allOptions.panelClass:'tabs-panel';\n\n this.$element.removeAttr('role');\n var $liHeads = this.$element.children('.'+tabsTitle+',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');\n var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');\n\n if (fromString === 'tabs') {\n $panels = $panels.children('.'+tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');\n $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');\n } else {\n $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');\n }\n\n $panels.css({display:'',visibility:''});\n $liHeads.css({display:'',visibility:''});\n if (toSet === 'accordion') {\n $panels.each(function(key,value){\n $(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content','').removeClass('is-active').css({height:''});\n $('[data-tabs-content='+_this.$element.attr('id')+']').after('
    ').detach();\n $liHeads.addClass('accordion-item').attr('data-accordion-item','');\n $liHeadsA.addClass('accordion-title');\n });\n } else if (toSet === 'tabs') {\n var $tabsContent = $('[data-tabs-content='+_this.$element.attr('id')+']');\n var $placeholder = $('#tabs-placeholder-'+_this.$element.attr('id'));\n if ($placeholder.length) {\n $tabsContent = $('
    ').insertAfter($placeholder).attr('data-tabs-content',_this.$element.attr('id'));\n $placeholder.remove();\n } else {\n $tabsContent = $('
    ').insertAfter(_this.$element).attr('data-tabs-content',_this.$element.attr('id'));\n }\n $panels.each(function(key,value){\n var tempValue = $(value).appendTo($tabsContent).addClass(tabsPanel);\n var hash = $liHeadsA.get(key).hash.slice(1);\n var id = $(value).attr('id') || GetYoDigits(6, 'accordion');\n if (hash !== id) {\n if (hash !== '') {\n $(value).attr('id',hash);\n } else {\n hash = id;\n $(value).attr('id',hash);\n $($liHeadsA.get(key)).attr('href',$($liHeadsA.get(key)).attr('href').replace('#','')+'#'+hash);\n }\n }\n var isActive = $($liHeads.get(key)).hasClass('is-active');\n if (isActive) {\n tempValue.addClass('is-active');\n }\n });\n $liHeads.addClass(tabsTitle);\n };\n }\n\n /**\n * Opens the plugin pane defined by `target`.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.\n * @see Accordion.down\n * @see Tabs.selectTab\n * @function\n */\n open(_target) {\n if (this.currentRule && typeof this.currentRule.open === 'function') {\n return this.currentRule.open(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Closes the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.\n * @see Accordion.up\n * @function\n */\n close(_target) {\n if (this.currentRule && typeof this.currentRule.close === 'function') {\n return this.currentRule.close(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Toggles the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.\n * @see Accordion.toggle\n * @function\n */\n toggle(_target) {\n if (this.currentRule && typeof this.currentRule.toggle === 'function') {\n return this.currentRule.toggle(this.currentPlugin, ...arguments);\n }\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 if (this.currentPlugin) this.currentPlugin.destroy();\n $(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n}\n\nResponsiveAccordionTabs.defaults = {};\n\nexport {ResponsiveAccordionTabs};\n","'use strict';\n\nimport $ 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, options) {\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","'use strict';\n\nimport $ 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 var _this = this;\n\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","'use strict';\n\nimport $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\n/**\n * Tabs module.\n * @module foundation.tabs\n * @requires foundation.util.keyboard\n * @requires foundation.util.imageLoader if tabs contain images\n */\n\nclass Tabs extends Plugin {\n /**\n * Creates a new instance of tabs.\n * @class\n * @name Tabs\n * @fires Tabs#init\n * @param {jQuery} element - jQuery object to make into tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tabs.defaults, this.$element.data(), options);\n this.className = 'Tabs'; // ie9 back compat\n\n this._init();\n Keyboard.register('Tabs', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'previous',\n 'ARROW_DOWN': 'next',\n 'ARROW_LEFT': 'previous'\n // 'TAB': 'next',\n // 'SHIFT_TAB': 'previous'\n });\n }\n\n /**\n * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.\n * @private\n */\n _init() {\n var _this = this;\n this._isInitializing = true;\n\n this.$element.attr({'role': 'tablist'});\n this.$tabTitles = this.$element.find(`.${this.options.linkClass}`);\n this.$tabContent = $(`[data-tabs-content=\"${this.$element[0].id}\"]`);\n\n this.$tabTitles.each(function(){\n var $elem = $(this),\n $link = $elem.find('a'),\n isActive = $elem.hasClass(`${_this.options.linkActiveClass}`),\n hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),\n linkId = $link[0].id ? $link[0].id : `${hash}-label`,\n $tabContent = $(`#${hash}`);\n\n $elem.attr({'role': 'presentation'});\n\n $link.attr({\n 'role': 'tab',\n 'aria-controls': hash,\n 'aria-selected': isActive,\n 'id': linkId,\n 'tabindex': isActive ? '0' : '-1'\n });\n\n $tabContent.attr({\n 'role': 'tabpanel',\n 'aria-labelledby': linkId\n });\n\n // Save up the initial hash to return to it later when going back in history\n if (isActive) {\n _this._initialAnchor = `#${hash}`;\n }\n\n if(!isActive) {\n $tabContent.attr('aria-hidden', 'true');\n }\n\n if(isActive && _this.options.autoFocus){\n _this.onLoadListener = onLoad($(window), function() {\n $('html, body').animate({ scrollTop: $elem.offset().top }, _this.options.deepLinkSmudgeDelay, () => {\n $link.focus();\n });\n });\n }\n });\n\n if(this.options.matchHeight) {\n var $images = this.$tabContent.find('img');\n\n if ($images.length) {\n onImagesLoaded($images, this._setHeight.bind(this));\n } else {\n this._setHeight();\n }\n }\n\n // Current context-bound function to open tabs on page load or history hashchange\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 anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor;\n var $anchor = anchorNoHash && $(`#${anchorNoHash}`);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"],[data-tabs-target=\"${anchorNoHash}\"]`).first();\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, select it\n if ($anchor && $anchor.length && $link && $link.length) {\n this.selectTab($anchor, true);\n }\n // Otherwise, collapse everything\n else {\n this._collapse();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top }, this.options.deepLinkSmudgeDelay);\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Tabs#deeplink\n */\n this.$element.trigger('deeplink.zf.tabs', [$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 tabs.\n * @private\n */\n _events() {\n this._addKeyHandler();\n this._addClickHandler();\n this._setHeightMqHandler = null;\n\n if (this.options.matchHeight) {\n this._setHeightMqHandler = this._setHeight.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n\n if(this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Adds click handlers for items within the tabs.\n * @private\n */\n _addClickHandler() {\n var _this = this;\n\n this.$element\n .off('click.zf.tabs')\n .on('click.zf.tabs', `.${this.options.linkClass}`, function(e){\n e.preventDefault();\n _this._handleTabChange($(this));\n });\n }\n\n /**\n * Adds keyboard event handlers for items within the tabs.\n * @private\n */\n _addKeyHandler() {\n var _this = this;\n\n this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){\n if (e.which === 9) return;\n\n\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n if (_this.options.wrapOnKeys) {\n $prevElement = i === 0 ? $elements.last() : $elements.eq(i-1);\n $nextElement = i === $elements.length -1 ? $elements.first() : $elements.eq(i+1);\n } else {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n }\n return;\n }\n });\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Tabs', {\n open: function() {\n $element.find('[role=\"tab\"]').focus();\n _this._handleTabChange($element);\n },\n previous: function() {\n $prevElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($prevElement);\n },\n next: function() {\n $nextElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($nextElement);\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.\n * @param {jQuery} $target - Tab to open.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @fires Tabs#change\n * @function\n */\n _handleTabChange($target, historyHandled) {\n\n // With `activeCollapse`, if the target is the active Tab, collapse it.\n if ($target.hasClass(`${this.options.linkActiveClass}`)) {\n if(this.options.activeCollapse) {\n this._collapse();\n }\n return;\n }\n\n var $oldTab = this.$element.\n find(`.${this.options.linkClass}.${this.options.linkActiveClass}`),\n $tabLink = $target.find('[role=\"tab\"]'),\n target = $tabLink.attr('data-tabs-target'),\n anchor = target && target.length ? `#${target}` : $tabLink[0].hash,\n $targetContent = this.$tabContent.find(anchor);\n\n //close old tab\n this._collapseTab($oldTab);\n\n //open new tab\n this._openTab($target);\n\n //either replace or update browser history\n if (this.options.deepLink && !historyHandled) {\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n\n /**\n * Fires when the plugin has successfully changed tabs.\n * @event Tabs#change\n */\n this.$element.trigger('change.zf.tabs', [$target, $targetContent]);\n\n //fire to children a mutation event\n $targetContent.find(\"[data-mutate]\").trigger(\"mutateme.zf.trigger\");\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to open.\n * @function\n */\n _openTab($target) {\n var $tabLink = $target.find('[role=\"tab\"]'),\n hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),\n $targetContent = this.$tabContent.find(`#${hash}`);\n\n $target.addClass(`${this.options.linkActiveClass}`);\n\n $tabLink.attr({\n 'aria-selected': 'true',\n 'tabindex': '0'\n });\n\n $targetContent\n .addClass(`${this.options.panelActiveClass}`).removeAttr('aria-hidden');\n }\n\n /**\n * Collapses `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to collapse.\n * @function\n */\n _collapseTab($target) {\n var $target_anchor = $target\n .removeClass(`${this.options.linkActiveClass}`)\n .find('[role=\"tab\"]')\n .attr({\n 'aria-selected': 'false',\n 'tabindex': -1\n });\n\n $(`#${$target_anchor.attr('aria-controls')}`)\n .removeClass(`${this.options.panelActiveClass}`)\n .attr({ 'aria-hidden': 'true' })\n }\n\n /**\n * Collapses the active Tab.\n * @fires Tabs#collapse\n * @function\n */\n _collapse() {\n var $activeTab = this.$element.find(`.${this.options.linkClass}.${this.options.linkActiveClass}`);\n\n if ($activeTab.length) {\n this._collapseTab($activeTab);\n\n /**\n * Fires when the plugin has successfully collapsed tabs.\n * @event Tabs#collapse\n */\n this.$element.trigger('collapse.zf.tabs', [$activeTab]);\n }\n }\n\n /**\n * Public method for selecting a content pane to display.\n * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @function\n */\n selectTab(elem, historyHandled) {\n var idStr, hashIdStr;\n\n if (typeof elem === 'object') {\n idStr = elem[0].id;\n } else {\n idStr = elem;\n }\n\n if (idStr.indexOf('#') < 0) {\n hashIdStr = `#${idStr}`;\n } else {\n hashIdStr = idStr;\n idStr = idStr.slice(1);\n }\n\n var $target = this.$tabTitles.has(`[href$=\"${hashIdStr}\"],[data-tabs-target=\"${idStr}\"]`).first();\n\n this._handleTabChange($target, historyHandled);\n };\n\n /**\n * Sets the height of each panel to the height of the tallest panel.\n * If enabled in options, gets called on media query change.\n * If loading content via external source, can be called directly or with _reflow.\n * If enabled with `data-match-height=\"true\"`, tabs sets to equal height\n * @function\n * @private\n */\n _setHeight() {\n var max = 0,\n _this = this; // Lock down the `this` value for the root tabs object\n\n this.$tabContent\n .find(`.${this.options.panelClass}`)\n .css('height', '')\n .each(function() {\n\n var panel = $(this),\n isActive = panel.hasClass(`${_this.options.panelActiveClass}`); // get the options from the parent instead of trying to get them from the child\n\n if (!isActive) {\n panel.css({'visibility': 'hidden', 'display': 'block'});\n }\n\n var temp = this.getBoundingClientRect().height;\n\n if (!isActive) {\n panel.css({\n 'visibility': '',\n 'display': ''\n });\n }\n\n max = temp > max ? temp : max;\n })\n .css('height', `${max}px`);\n }\n\n /**\n * Destroys an instance of tabs.\n * @fires Tabs#destroyed\n */\n _destroy() {\n this.$element\n .find(`.${this.options.linkClass}`)\n .off('.zf.tabs').hide().end()\n .find(`.${this.options.panelClass}`)\n .hide();\n\n if (this.options.matchHeight) {\n if (this._setHeightMqHandler != null) {\n $(window).off('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n }\n\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n if (this.onLoadListener) {\n $(window).off(this.onLoadListener);\n }\n }\n}\n\nTabs.defaults = {\n /**\n * Link the location hash to the active pane.\n * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n\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 /**\n * If `deepLink` is enabled, update the browser history with the open tab\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false,\n\n /**\n * Allows the window to scroll to content of active pane on load.\n * Not recommended if more than one tab panel per page.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n\n /**\n * Allows keyboard input to 'wrap' around the tab links.\n * @option\n * @type {boolean}\n * @default true\n */\n wrapOnKeys: true,\n\n /**\n * Allows the tab content panes to match heights if set to true.\n * @option\n * @type {boolean}\n * @default false\n */\n matchHeight: false,\n\n /**\n * Allows active tabs to collapse when clicked.\n * @option\n * @type {boolean}\n * @default false\n */\n activeCollapse: false,\n\n /**\n * Class applied to `li`'s in tab link list.\n * @option\n * @type {string}\n * @default 'tabs-title'\n */\n linkClass: 'tabs-title',\n\n /**\n * Class applied to the active `li` in tab link list.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n linkActiveClass: 'is-active',\n\n /**\n * Class applied to the content containers.\n * @option\n * @type {string}\n * @default 'tabs-panel'\n */\n panelClass: 'tabs-panel',\n\n /**\n * Class applied to the active content container.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n panelActiveClass: 'is-active'\n};\n\nexport {Tabs};\n","'use strict';\n\nvar 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","'use strict';\n\nimport $ 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 self = this,\n 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(event){\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 * 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\n'use strict';\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}\n\nfunction parseKey(event) {\n var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();\n\n // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\n key = key.replace(/\\W+/, '');\n\n if (event.shiftKey) key = `SHIFT_${key}`;\n if (event.ctrlKey) key = `CTRL_${key}`;\n if (event.altKey) key = `ALT_${key}`;\n\n // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\n key = key.replace(/_$/, '');\n\n return key;\n}\n\nvar Keyboard = {\n keys: getKeyCodes(keyCodes),\n\n /**\n * Parses the (keyboard) event and returns a String that represents its key\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n * @param {Event} event - the event generated by the event handler\n * @return String key - String that represents the key pressed\n */\n parseKey: parseKey,\n\n /**\n * Handles the given (keyboard) event\n * @param {Event} event - the event generated by the event handler\n * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n * @param {Objects} functions - collection of functions that are to be executed\n */\n handleKey(event, component, functions) {\n var commandList = commands[component],\n keyCode = this.parseKey(event),\n cmds,\n command,\n fn;\n\n if (!commandList) return console.warn('Component not defined!');\n\n // Ignore the event if it was already handled\n if (event.zfIsKeyHandled === true) return;\n\n // This component does not differentiate between ltr and rtl\n if (typeof commandList.ltr === 'undefined') {\n cmds = commandList; // use plain list\n } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\n if (Rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);\n\n else cmds = $.extend({}, commandList.rtl, commandList.ltr);\n }\n command = cmds[keyCode];\n\n fn = functions[command];\n // Execute the handler if found\n if (fn && typeof fn === 'function') {\n var returnValue = fn.apply();\n\n // Mark the event as \"handled\" to prevent future handlings\n event.zfIsKeyHandled = true;\n\n // Execute function when event was handled\n if (functions.handled || typeof functions.handled === 'function') {\n functions.handled(returnValue);\n }\n } else {\n // Execute function when event was not handled\n if (functions.unhandled || typeof functions.unhandled === 'function') {\n functions.unhandled();\n }\n }\n },\n\n /**\n * Finds all focusable elements within the given `$element`\n * @param {jQuery} $element - jQuery object to search within\n * @return {jQuery} $focusable - all focusable elements within `$element`\n */\n\n findFocusable: findFocusable,\n\n /**\n * Returns the component name name\n * @param {Object} component - Foundation component, e.g. Slider or Reveal\n * @return String componentName\n */\n\n register(componentName, cmds) {\n commands[componentName] = cmds;\n },\n\n\n // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n //\n /**\n * Traps the focus in the given element.\n * @param {jQuery} $element jQuery object to trap the foucs into.\n */\n trapFocus($element) {\n var $focusable = findFocusable($element),\n $firstFocusable = $focusable.eq(0),\n $lastFocusable = $focusable.eq(-1);\n\n $element.on('keydown.zf.trapfocus', function(event) {\n if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {\n event.preventDefault();\n $firstFocusable.focus();\n }\n else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n event.preventDefault();\n $lastFocusable.focus();\n }\n });\n },\n /**\n * Releases the trapped focus from the given element.\n * @param {jQuery} $element jQuery object to release the focus for.\n */\n releaseFocus($element) {\n $element.off('keydown.zf.trapfocus');\n }\n}\n\n/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */\nfunction getKeyCodes(kcs) {\n var k = {};\n for (var kc in kcs) k[kcs[kc]] = kcs[kc];\n return k;\n}\n\nexport {Keyboard};\n","'use strict';\n\nimport $ from 'jquery';\n\n// Default set of media queries\nconst defaultQueries = {\n 'default' : 'only screen',\n landscape : 'only screen and (orientation: landscape)',\n portrait : 'only screen and (orientation: portrait)',\n retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +\n 'only screen and (min--moz-device-pixel-ratio: 2),' +\n 'only screen and (-o-min-device-pixel-ratio: 2/1),' +\n 'only screen and (min-device-pixel-ratio: 2),' +\n 'only screen and (min-resolution: 192dpi),' +\n 'only screen and (min-resolution: 2dppx)'\n };\n\n\n// matchMedia() polyfill - Test a CSS media type/query in JS.\n// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license\n/* eslint-disable */\nwindow.matchMedia || (window.matchMedia = (function () {\n \"use strict\";\n\n // For browsers that support matchMedium api such as IE 9 and webkit\n var styleMedia = (window.styleMedia || window.media);\n\n // For those that don't support matchMedium\n if (!styleMedia) {\n var style = document.createElement('style'),\n script = document.getElementsByTagName('script')[0],\n info = null;\n\n style.type = 'text/css';\n style.id = 'matchmediajs-test';\n\n if (!script) {\n document.head.appendChild(style);\n } else {\n script.parentNode.insertBefore(style, script);\n }\n\n // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers\n info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;\n\n styleMedia = {\n matchMedium: function (media) {\n var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\n\n // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers\n if (style.styleSheet) {\n style.styleSheet.cssText = text;\n } else {\n style.textContent = text;\n }\n\n // Test if media query is true or false\n return info.width === '1px';\n }\n };\n }\n\n return function(media) {\n return {\n matches: styleMedia.matchMedium(media || 'all'),\n media: media || 'all'\n };\n };\n})());\n/* eslint-enable */\n\nvar MediaQuery = {\n queries: [],\n\n current: '',\n\n /**\n * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.\n * @function\n * @private\n */\n _init() {\n\n // make sure the initialization is only done once when calling _init() several times\n if (this.isInitialized === true) {\n return;\n } else {\n this.isInitialized = true;\n }\n\n var self = this;\n var $meta = $('meta.foundation-mq');\n if(!$meta.length){\n $('').appendTo(document.head);\n }\n\n var extractedStyles = $('.foundation-mq').css('font-family');\n var namedQueries;\n\n namedQueries = parseStyleToObject(extractedStyles);\n\n self.queries = []; // reset\n\n for (var key in namedQueries) {\n if(namedQueries.hasOwnProperty(key)) {\n self.queries.push({\n name: key,\n value: `only screen and (min-width: ${namedQueries[key]})`\n });\n }\n }\n\n this.current = this._getCurrentSize();\n\n this._watcher();\n },\n\n /**\n * Reinitializes the media query helper.\n * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n * @function\n * @private\n */\n _reInit() {\n this.isInitialized = false;\n this._init();\n },\n\n /**\n * Checks if the screen is at least as wide as a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n */\n atLeast(size) {\n var query = this.get(size);\n\n if (query) {\n return window.matchMedia(query).matches;\n }\n\n return false;\n },\n\n /**\n * Checks if the screen is within the given breakpoint.\n * If smaller than the breakpoint of larger than its upper limit it returns false.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n */\n only(size) {\n return size === this._getCurrentSize();\n },\n\n /**\n * Checks if the screen is within a breakpoint or smaller.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n */\n upTo(size) {\n const nextSize = this.next(size);\n\n // If the next breakpoint does not match, the screen is smaller than\n // the upper limit of this breakpoint.\n if (nextSize) {\n return !this.atLeast(nextSize);\n }\n\n // If there is no next breakpoint, the \"size\" breakpoint does not have\n // an upper limit and the screen will always be within it or smaller.\n return true;\n },\n\n /**\n * Checks if the screen matches to a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n */\n is(size) {\n const parts = size.trim().split(' ').filter(p => !!p.length);\n const [bpSize, bpModifier = ''] = parts;\n\n // Only the breakpont\n if (bpModifier === 'only') {\n return this.only(bpSize);\n }\n // At least the breakpoint (included)\n if (!bpModifier || bpModifier === 'up') {\n return this.atLeast(bpSize);\n }\n // Up to the breakpoint (included)\n if (bpModifier === 'down') {\n return this.upTo(bpSize);\n }\n\n throw new Error(`\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like \" \", got \"${size}\".\n `);\n },\n\n /**\n * Gets the media query of a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to get.\n * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n */\n get(size) {\n for (var i in this.queries) {\n if(this.queries.hasOwnProperty(i)) {\n var query = this.queries[i];\n if (size === query.name) return query.value;\n }\n }\n\n return null;\n },\n\n /**\n * Get the breakpoint following the given breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint.\n * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n */\n next(size) {\n const queryIndex = this.queries.findIndex((q) => this._getQueryName(q) === size);\n if (queryIndex === -1) {\n throw new Error(`\n Unknown breakpoint \"${size}\" passed to MediaQuery.next().\n Ensure it is present in your Sass \"$breakpoints\" setting.\n `);\n }\n\n const nextQuery = this.queries[queryIndex + 1];\n return nextQuery ? nextQuery.name : null;\n },\n\n /**\n * Returns the name of the breakpoint related to the given value.\n * @function\n * @private\n * @param {String|Object} value - Breakpoint name or query object.\n * @returns {String} Name of the breakpoint.\n */\n _getQueryName(value) {\n if (typeof value === 'string')\n return value;\n if (typeof value === 'object')\n return value.name;\n throw new TypeError(`\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"${value}\" (${typeof value})\n `);\n },\n\n /**\n * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n * @function\n * @private\n * @returns {String} Name of the current breakpoint.\n */\n _getCurrentSize() {\n var matched;\n\n for (var i = 0; i < this.queries.length; i++) {\n var query = this.queries[i];\n\n if (window.matchMedia(query.value).matches) {\n matched = query;\n }\n }\n\n return matched && this._getQueryName(matched);\n },\n\n /**\n * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.\n * @function\n * @private\n */\n _watcher() {\n $(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', () => {\n var newSize = this._getCurrentSize(), currentSize = this.current;\n\n if (newSize !== currentSize) {\n // Change the current media query\n this.current = newSize;\n\n // Broadcast the media query change on the window\n $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);\n }\n });\n }\n};\n\n\n\n// Thank you: https://github.com/sindresorhus/query-string\nfunction parseStyleToObject(str) {\n var styleObject = {};\n\n if (typeof str !== 'string') {\n return styleObject;\n }\n\n str = str.trim().slice(1, -1); // browsers re-quote string style values\n\n if (!str) {\n return styleObject;\n }\n\n styleObject = str.split('&').reduce(function(ret, param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = parts[0];\n var val = parts[1];\n key = decodeURIComponent(key);\n\n // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n val = typeof val === 'undefined' ? null : decodeURIComponent(val);\n\n if (!ret.hasOwnProperty(key)) {\n ret[key] = val;\n } else if (Array.isArray(ret[key])) {\n ret[key].push(val);\n } else {\n ret[key] = [ret[key], val];\n }\n return ret;\n }, {});\n\n return styleObject;\n}\n\nexport {MediaQuery};\n","'use strict';\n\nimport $ from 'jquery';\nimport { transitionend } from './foundation.core.utils';\n\n/**\n * Motion module.\n * @module foundation.motion\n */\n\nconst initClasses = ['mui-enter', 'mui-leave'];\nconst activeClasses = ['mui-enter-active', 'mui-leave-active'];\n\nconst Motion = {\n animateIn: function(element, animation, cb) {\n animate(true, element, animation, cb);\n },\n\n animateOut: function(element, animation, cb) {\n animate(false, element, animation, cb);\n }\n}\n\nfunction Move(duration, elem, fn){\n var anim, prog, start = null;\n // console.log('called');\n\n if (duration === 0) {\n fn.apply(elem);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n return;\n }\n\n function move(ts){\n if(!start) start = ts;\n // console.log(start, ts);\n prog = ts - start;\n fn.apply(elem);\n\n if(prog < duration){ anim = window.requestAnimationFrame(move, elem); }\n else{\n window.cancelAnimationFrame(anim);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n }\n }\n anim = window.requestAnimationFrame(move);\n}\n\n/**\n * Animates an element in or out using a CSS transition class.\n * @function\n * @private\n * @param {Boolean} isIn - Defines if the animation is in or out.\n * @param {Object} element - jQuery or HTML object to animate.\n * @param {String} animation - CSS class to use.\n * @param {Function} cb - Callback to run when animation is finished.\n */\nfunction animate(isIn, element, animation, cb) {\n element = $(element).eq(0);\n\n if (!element.length) return;\n\n var initClass = isIn ? initClasses[0] : initClasses[1];\n var activeClass = isIn ? activeClasses[0] : activeClasses[1];\n\n // Set up the animation\n reset();\n\n element\n .addClass(animation)\n .css('transition', 'none');\n\n requestAnimationFrame(() => {\n element.addClass(initClass);\n if (isIn) element.show();\n });\n\n // Start the animation\n requestAnimationFrame(() => {\n // will trigger the browser to synchronously calculate the style and layout\n // also called reflow or layout thrashing\n // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n element[0].offsetWidth;\n element\n .css('transition', '')\n .addClass(activeClass);\n });\n\n // Clean up the animation when it finishes\n element.one(transitionend(element), finish);\n\n // Hides the element (for out animations), resets the element, and runs a callback\n function finish() {\n if (!isIn) element.hide();\n reset();\n if (cb) cb.apply(element);\n }\n\n // Resets transitions and removes motion-specific classes\n function reset() {\n element[0].style.transitionDuration = 0;\n element.removeClass(`${initClass} ${activeClass} ${animation}`);\n }\n}\n\nexport { Move, Motion };\n\n","'use strict';\n\nimport $ 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.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","'use strict';\n\nimport $ from 'jquery';\n\nfunction 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//**Work inspired by multiple jquery swipe plugins**\n//**Done by Yohai Ararat **\n//\n\nimport $ from 'jquery';\n\nvar Touch = {};\n\nvar startPosX,\n startPosY,\n startTime,\n elapsedTime,\n startEvent,\n isMoving = false,\n didMoved = false;\n\nfunction onTouchEnd(e) {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n\n // If the touch did not move, consider it as a \"tap\"\n if (!didMoved) {\n var tapEvent = $.Event('tap', startEvent || e);\n $(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if ($.spotSwipe.preventDefault) { e.preventDefault(); }\n\n if(isMoving) {\n var x = e.touches[0].pageX;\n var y = e.touches[0].pageY;\n var dx = startPosX - x;\n var dy = startPosY - y;\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n // dir = dy > 0 ? 'down' : 'up';\n // }\n if(dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n $(this)\n .trigger($.Event('swipe', Object.assign({}, e)), dir)\n .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n }\n }\n\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length == 1) {\n startPosX = e.touches[0].pageX;\n startPosY = e.touches[0].pageY;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, false);\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, false);\n}\n\nfunction teardown() {\n this.removeEventListener('touchstart', onTouchStart);\n}\n\nclass SpotSwipe {\n constructor($) {\n this.version = '1.0.0';\n this.enabled = 'ontouchstart' in document.documentElement;\n this.preventDefault = false;\n this.moveThreshold = 75;\n this.timeThreshold = 200;\n this.$ = $;\n this._init();\n }\n\n _init() {\n var $ = this.$;\n $.event.special.swipe = { setup: init };\n $.event.special.tap = { setup: init };\n\n $.each(['left', 'up', 'down', 'right'], function () {\n $.event.special[`swipe${this}`] = { setup: function(){\n $(this).on('swipe', $.noop);\n } };\n });\n }\n}\n\n/**\n * As far as I can tell, both setupSpotSwipe and *\n * setupTouchHandler should be idempotent, *\n * because they directly replace functions & *\n * values, and do not add event handlers directly. *\n **/\n\nTouch.setupSpotSwipe = function($) {\n $.spotSwipe = new SpotSwipe($);\n};\n\n/**\n * Method for adding pseudo drag events to elements *\n */\nTouch.setupTouchHandler = function($) {\n $.fn.addTouch = function(){\n this.each(function(i,el){\n $(el).bind('touchstart touchmove touchend touchcancel', function(event) {\n //we pass the original event object because the jQuery event\n //object is normalized to w3c specs and does not provide the TouchList\n handleTouch(event);\n });\n });\n\n var handleTouch = function(event){\n var touches = event.changedTouches,\n first = touches[0],\n eventTypes = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup'\n },\n type = eventTypes[event.type],\n simulatedEvent\n ;\n\n if('MouseEvent' in window && typeof window.MouseEvent === 'function') {\n simulatedEvent = new window.MouseEvent(type, {\n 'bubbles': true,\n 'cancelable': true,\n 'screenX': first.screenX,\n 'screenY': first.screenY,\n 'clientX': first.clientX,\n 'clientY': first.clientY\n });\n } else {\n simulatedEvent = document.createEvent('MouseEvent');\n simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);\n }\n first.target.dispatchEvent(simulatedEvent);\n };\n };\n};\n\nTouch.init = function ($) {\n\n if(typeof($.spotSwipe) === 'undefined') {\n Touch.setupSpotSwipe($);\n Touch.setupTouchHandler($);\n }\n};\n\nexport {Touch};\n","'use strict';\n\nimport $ from 'jquery';\nimport { onLoad } from './foundation.core.utils';\nimport { Motion } from './foundation.util.motion';\n\nconst MutationObserver = (function () {\n var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];\n for (var i=0; i < prefixes.length; i++) {\n if (`${prefixes[i]}MutationObserver` in window) {\n return window[`${prefixes[i]}MutationObserver`];\n }\n }\n return false;\n}());\n\nconst triggers = (el, type) => {\n el.data(type).split(' ').forEach(id => {\n $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]);\n });\n};\n\nvar Triggers = {\n Listeners: {\n Basic: {},\n Global: {}\n },\n Initializers: {}\n}\n\nTriggers.Listeners.Basic = {\n openListener: function() {\n triggers($(this), 'open');\n },\n closeListener: function() {\n let id = $(this).data('close');\n if (id) {\n triggers($(this), 'close');\n }\n else {\n $(this).trigger('close.zf.trigger');\n }\n },\n toggleListener: function() {\n let id = $(this).data('toggle');\n if (id) {\n triggers($(this), 'toggle');\n } else {\n $(this).trigger('toggle.zf.trigger');\n }\n },\n closeableListener: function(e) {\n let animation = $(this).data('closable');\n\n // Only close the first closable element. See https://git.io/zf-7833\n e.stopPropagation();\n\n if(animation !== ''){\n Motion.animateOut($(this), animation, function() {\n $(this).trigger('closed.zf');\n });\n }else{\n $(this).fadeOut().trigger('closed.zf');\n }\n },\n toggleFocusListener: function() {\n let id = $(this).data('toggle-focus');\n $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]);\n }\n};\n\n// Elements with [data-open] will reveal a plugin that supports it when clicked.\nTriggers.Initializers.addOpenListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);\n $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);\n}\n\n// Elements with [data-close] will close a plugin that supports it when clicked.\n// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.\nTriggers.Initializers.addCloseListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);\n $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);\n}\n\n// Elements with [data-toggle] will toggle a plugin that supports it when clicked.\nTriggers.Initializers.addToggleListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);\n $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);\n}\n\n// Elements with [data-closable] will respond to close.zf.trigger events.\nTriggers.Initializers.addCloseableListener = ($elem) => {\n $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);\n $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);\n}\n\n// Elements with [data-toggle-focus] will respond to coming in and out of focus\nTriggers.Initializers.addToggleFocusListener = ($elem) => {\n $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);\n $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);\n}\n\n\n\n// More Global/complex listeners and triggers\nTriggers.Listeners.Global = {\n resizeListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('resizeme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a resize event\n $nodes.attr('data-events', \"resize\");\n },\n scrollListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('scrollme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a scroll event\n $nodes.attr('data-events', \"scroll\");\n },\n closeMeListener: function(e, pluginId){\n let plugin = e.namespace.split('.')[0];\n let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box=\"${pluginId}\"]`);\n\n plugins.each(function(){\n let _this = $(this);\n _this.triggerHandler('close.zf.trigger', [_this]);\n });\n }\n}\n\n// Global, parses whole document.\nTriggers.Initializers.addClosemeListener = function(pluginName) {\n var yetiBoxes = $('[data-yeti-box]'),\n plugNames = ['dropdown', 'tooltip', 'reveal'];\n\n if(pluginName){\n if(typeof pluginName === 'string'){\n plugNames.push(pluginName);\n }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){\n plugNames = plugNames.concat(pluginName);\n }else{\n console.error('Plugin names must be strings');\n }\n }\n if(yetiBoxes.length){\n let listeners = plugNames.map((name) => {\n return `closeme.zf.${name}`;\n }).join(' ');\n\n $(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n }\n}\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n let timer, args = Array.prototype.slice.call(arguments, 3);\n $(window).off(trigger).on(trigger, function(e) {\n if (timer) { clearTimeout(timer); }\n timer = setTimeout(function(){\n listener.apply(null, args);\n }, debounce || 10);//default time to emit scroll event\n });\n}\n\nTriggers.Initializers.addResizeListener = function(debounce){\n let $nodes = $('[data-resize]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);\n }\n}\n\nTriggers.Initializers.addScrollListener = function(debounce){\n let $nodes = $('[data-scroll]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);\n }\n}\n\nTriggers.Initializers.addMutationEventsListener = function($elem) {\n if(!MutationObserver){ return false; }\n let $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n //element callback\n var listeningElementsMutation = function (mutationRecordsList) {\n var $target = $(mutationRecordsList[0].target);\n\n //trigger the event handler for the element depending on type\n switch (mutationRecordsList[0].type) {\n case \"attributes\":\n if ($target.attr(\"data-events\") === \"scroll\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);\n }\n if ($target.attr(\"data-events\") === \"resize\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('resizeme.zf.trigger', [$target]);\n }\n if (mutationRecordsList[0].attributeName === \"style\") {\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n }\n break;\n\n case \"childList\":\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n break;\n\n default:\n return false;\n //nothing\n }\n };\n\n if ($nodes.length) {\n //for each element that needs to listen for resizing, scrolling, or mutation add a single observer\n for (var i = 0; i <= $nodes.length - 1; i++) {\n var elementObserver = new MutationObserver(listeningElementsMutation);\n elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: [\"data-events\", \"style\"] });\n }\n }\n}\n\nTriggers.Initializers.addSimpleListeners = function() {\n let $document = $(document);\n\n Triggers.Initializers.addOpenListener($document);\n Triggers.Initializers.addCloseListener($document);\n Triggers.Initializers.addToggleListener($document);\n Triggers.Initializers.addCloseableListener($document);\n Triggers.Initializers.addToggleFocusListener($document);\n\n}\n\nTriggers.Initializers.addGlobalListeners = function() {\n let $document = $(document);\n Triggers.Initializers.addMutationEventsListener($document);\n Triggers.Initializers.addResizeListener();\n Triggers.Initializers.addScrollListener();\n Triggers.Initializers.addClosemeListener();\n}\n\n\nTriggers.init = function ($, Foundation) {\n onLoad($(window), function () {\n if ($.triggersInitialized !== true) {\n Triggers.Initializers.addSimpleListeners();\n Triggers.Initializers.addGlobalListeners();\n $.triggersInitialized = true;\n }\n });\n\n if(Foundation) {\n Foundation.Triggers = Triggers;\n // Legacy included to be backwards compatible for now.\n Foundation.IHearYou = Triggers.Initializers.addGlobalListeners\n }\n}\n\nexport {Triggers};\n","/**\n* jquery-match-height 0.7.2 by @liabru\n* http://brm.io/jquery-match-height/\n* License: MIT\n*/\n\n;(function(factory) { // eslint-disable-line no-extra-semi\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(['jquery'], factory);\n } else if (typeof module !== 'undefined' && module.exports) {\n // CommonJS\n module.exports = factory(require('jquery'));\n } else {\n // Global\n factory(jQuery);\n }\n})(function($) {\n /*\n * internal\n */\n\n var _previousResizeWidth = -1,\n _updateTimeout = -1;\n\n /*\n * _parse\n * value parse utility function\n */\n\n var _parse = function(value) {\n // parse value and convert NaN to 0\n return parseFloat(value) || 0;\n };\n\n /*\n * _rows\n * utility function returns array of jQuery selections representing each row\n * (as displayed after float wrapping applied by browser)\n */\n\n var _rows = function(elements) {\n var tolerance = 1,\n $elements = $(elements),\n lastTop = null,\n rows = [];\n\n // group elements by their top position\n $elements.each(function(){\n var $that = $(this),\n top = $that.offset().top - _parse($that.css('margin-top')),\n lastRow = rows.length > 0 ? rows[rows.length - 1] : null;\n\n if (lastRow === null) {\n // first item on the row, so just push it\n rows.push($that);\n } else {\n // if the row top is the same, add to the row group\n if (Math.floor(Math.abs(lastTop - top)) <= tolerance) {\n rows[rows.length - 1] = lastRow.add($that);\n } else {\n // otherwise start a new row group\n rows.push($that);\n }\n }\n\n // keep track of the last row top\n lastTop = top;\n });\n\n return rows;\n };\n\n /*\n * _parseOptions\n * handle plugin options\n */\n\n var _parseOptions = function(options) {\n var opts = {\n byRow: true,\n property: 'height',\n target: null,\n remove: false\n };\n\n if (typeof options === 'object') {\n return $.extend(opts, options);\n }\n\n if (typeof options === 'boolean') {\n opts.byRow = options;\n } else if (options === 'remove') {\n opts.remove = true;\n }\n\n return opts;\n };\n\n /*\n * matchHeight\n * plugin definition\n */\n\n var matchHeight = $.fn.matchHeight = function(options) {\n var opts = _parseOptions(options);\n\n // handle remove\n if (opts.remove) {\n var that = this;\n\n // remove fixed height from all selected elements\n this.css(opts.property, '');\n\n // remove selected elements from all groups\n $.each(matchHeight._groups, function(key, group) {\n group.elements = group.elements.not(that);\n });\n\n // TODO: cleanup empty groups\n\n return this;\n }\n\n if (this.length <= 1 && !opts.target) {\n return this;\n }\n\n // keep track of this group so we can re-apply later on load and resize events\n matchHeight._groups.push({\n elements: this,\n options: opts\n });\n\n // match each element's height to the tallest element in the selection\n matchHeight._apply(this, opts);\n\n return this;\n };\n\n /*\n * plugin global options\n */\n\n matchHeight.version = '0.7.2';\n matchHeight._groups = [];\n matchHeight._throttle = 80;\n matchHeight._maintainScroll = false;\n matchHeight._beforeUpdate = null;\n matchHeight._afterUpdate = null;\n matchHeight._rows = _rows;\n matchHeight._parse = _parse;\n matchHeight._parseOptions = _parseOptions;\n\n /*\n * matchHeight._apply\n * apply matchHeight to given elements\n */\n\n matchHeight._apply = function(elements, options) {\n var opts = _parseOptions(options),\n $elements = $(elements),\n rows = [$elements];\n\n // take note of scroll position\n var scrollTop = $(window).scrollTop(),\n htmlHeight = $('html').outerHeight(true);\n\n // get hidden parents\n var $hiddenParents = $elements.parents().filter(':hidden');\n\n // cache the original inline style\n $hiddenParents.each(function() {\n var $that = $(this);\n $that.data('style-cache', $that.attr('style'));\n });\n\n // temporarily must force hidden parents visible\n $hiddenParents.css('display', 'block');\n\n // get rows if using byRow, otherwise assume one row\n if (opts.byRow && !opts.target) {\n\n // must first force an arbitrary equal height so floating elements break evenly\n $elements.each(function() {\n var $that = $(this),\n display = $that.css('display');\n\n // temporarily force a usable display value\n if (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') {\n display = 'block';\n }\n\n // cache the original inline style\n $that.data('style-cache', $that.attr('style'));\n\n $that.css({\n 'display': display,\n 'padding-top': '0',\n 'padding-bottom': '0',\n 'margin-top': '0',\n 'margin-bottom': '0',\n 'border-top-width': '0',\n 'border-bottom-width': '0',\n 'height': '100px',\n 'overflow': 'hidden'\n });\n });\n\n // get the array of rows (based on element top position)\n rows = _rows($elements);\n\n // revert original inline styles\n $elements.each(function() {\n var $that = $(this);\n $that.attr('style', $that.data('style-cache') || '');\n });\n }\n\n $.each(rows, function(key, row) {\n var $row = $(row),\n targetHeight = 0;\n\n if (!opts.target) {\n // skip apply to rows with only one item\n if (opts.byRow && $row.length <= 1) {\n $row.css(opts.property, '');\n return;\n }\n\n // iterate the row and find the max height\n $row.each(function(){\n var $that = $(this),\n style = $that.attr('style'),\n display = $that.css('display');\n\n // temporarily force a usable display value\n if (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') {\n display = 'block';\n }\n\n // ensure we get the correct actual height (and not a previously set height value)\n var css = { 'display': display };\n css[opts.property] = '';\n $that.css(css);\n\n // find the max height (including padding, but not margin)\n if ($that.outerHeight(false) > targetHeight) {\n targetHeight = $that.outerHeight(false);\n }\n\n // revert styles\n if (style) {\n $that.attr('style', style);\n } else {\n $that.css('display', '');\n }\n });\n } else {\n // if target set, use the height of the target element\n targetHeight = opts.target.outerHeight(false);\n }\n\n // iterate the row and apply the height to all elements\n $row.each(function(){\n var $that = $(this),\n verticalPadding = 0;\n\n // don't apply to a target\n if (opts.target && $that.is(opts.target)) {\n return;\n }\n\n // handle padding and border correctly (required when not using border-box)\n if ($that.css('box-sizing') !== 'border-box') {\n verticalPadding += _parse($that.css('border-top-width')) + _parse($that.css('border-bottom-width'));\n verticalPadding += _parse($that.css('padding-top')) + _parse($that.css('padding-bottom'));\n }\n\n // set the height (accounting for padding and border)\n $that.css(opts.property, (targetHeight - verticalPadding) + 'px');\n });\n });\n\n // revert hidden parents\n $hiddenParents.each(function() {\n var $that = $(this);\n $that.attr('style', $that.data('style-cache') || null);\n });\n\n // restore scroll position if enabled\n if (matchHeight._maintainScroll) {\n $(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true));\n }\n\n return this;\n };\n\n /*\n * matchHeight._applyDataApi\n * applies matchHeight to all elements with a data-match-height attribute\n */\n\n matchHeight._applyDataApi = function() {\n var groups = {};\n\n // generate groups by their groupId set by elements using data-match-height\n $('[data-match-height], [data-mh]').each(function() {\n var $this = $(this),\n groupId = $this.attr('data-mh') || $this.attr('data-match-height');\n\n if (groupId in groups) {\n groups[groupId] = groups[groupId].add($this);\n } else {\n groups[groupId] = $this;\n }\n });\n\n // apply matchHeight to each group\n $.each(groups, function() {\n this.matchHeight(true);\n });\n };\n\n /*\n * matchHeight._update\n * updates matchHeight on all current groups with their correct options\n */\n\n var _update = function(event) {\n if (matchHeight._beforeUpdate) {\n matchHeight._beforeUpdate(event, matchHeight._groups);\n }\n\n $.each(matchHeight._groups, function() {\n matchHeight._apply(this.elements, this.options);\n });\n\n if (matchHeight._afterUpdate) {\n matchHeight._afterUpdate(event, matchHeight._groups);\n }\n };\n\n matchHeight._update = function(throttle, event) {\n // prevent update if fired from a resize event\n // where the viewport width hasn't actually changed\n // fixes an event looping bug in IE8\n if (event && event.type === 'resize') {\n var windowWidth = $(window).width();\n if (windowWidth === _previousResizeWidth) {\n return;\n }\n _previousResizeWidth = windowWidth;\n }\n\n // throttle updates\n if (!throttle) {\n _update(event);\n } else if (_updateTimeout === -1) {\n _updateTimeout = setTimeout(function() {\n _update(event);\n _updateTimeout = -1;\n }, matchHeight._throttle);\n }\n };\n\n /*\n * bind events\n */\n\n // apply on DOM ready event\n $(matchHeight._applyDataApi);\n\n // use on or bind where supported\n var on = $.fn.on ? 'on' : 'bind';\n\n // update heights on load and resize events\n $(window)[on]('load', function(event) {\n matchHeight._update(false, event);\n });\n\n // throttled update heights on resize events\n $(window)[on]('resize orientationchange', function(event) {\n matchHeight._update(true, event);\n });\n\n});\n","/*! npm.im/object-fit-images 3.2.4 */\n'use strict';\n\nvar OFI = 'bfred-it:object-fit-images';\nvar propRegex = /(object-fit|object-position)\\s*:\\s*([-.\\w\\s%]+)/g;\nvar testImg = typeof Image === 'undefined' ? {style: {'object-position': 1}} : new Image();\nvar supportsObjectFit = 'object-fit' in testImg.style;\nvar supportsObjectPosition = 'object-position' in testImg.style;\nvar supportsOFI = 'background-size' in testImg.style;\nvar supportsCurrentSrc = typeof testImg.currentSrc === 'string';\nvar nativeGetAttribute = testImg.getAttribute;\nvar nativeSetAttribute = testImg.setAttribute;\nvar autoModeEnabled = false;\n\nfunction createPlaceholder(w, h) {\n\treturn (\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\" + w + \"' height='\" + h + \"'%3E%3C/svg%3E\");\n}\n\nfunction polyfillCurrentSrc(el) {\n\tif (el.srcset && !supportsCurrentSrc && window.picturefill) {\n\t\tvar pf = window.picturefill._;\n\t\t// parse srcset with picturefill where currentSrc isn't available\n\t\tif (!el[pf.ns] || !el[pf.ns].evaled) {\n\t\t\t// force synchronous srcset parsing\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\tif (!el[pf.ns].curSrc) {\n\t\t\t// force picturefill to parse srcset\n\t\t\tel[pf.ns].supported = false;\n\t\t\tpf.fillImg(el, {reselect: true});\n\t\t}\n\n\t\t// retrieve parsed currentSrc, if any\n\t\tel.currentSrc = el[pf.ns].curSrc || el.src;\n\t}\n}\n\nfunction getStyle(el) {\n\tvar style = getComputedStyle(el).fontFamily;\n\tvar parsed;\n\tvar props = {};\n\twhile ((parsed = propRegex.exec(style)) !== null) {\n\t\tprops[parsed[1]] = parsed[2];\n\t}\n\treturn props;\n}\n\nfunction setPlaceholder(img, width, height) {\n\t// Default: fill width, no height\n\tvar placeholder = createPlaceholder(width || 1, height || 0);\n\n\t// Only set placeholder if it's different\n\tif (nativeGetAttribute.call(img, 'src') !== placeholder) {\n\t\tnativeSetAttribute.call(img, 'src', placeholder);\n\t}\n}\n\nfunction onImageReady(img, callback) {\n\t// naturalWidth is only available when the image headers are loaded,\n\t// this loop will poll it every 100ms.\n\tif (img.naturalWidth) {\n\t\tcallback(img);\n\t} else {\n\t\tsetTimeout(onImageReady, 100, img, callback);\n\t}\n}\n\nfunction fixOne(el) {\n\tvar style = getStyle(el);\n\tvar ofi = el[OFI];\n\tstyle['object-fit'] = style['object-fit'] || 'fill'; // default value\n\n\t// Avoid running where unnecessary, unless OFI had already done its deed\n\tif (!ofi.img) {\n\t\t// fill is the default behavior so no action is necessary\n\t\tif (style['object-fit'] === 'fill') {\n\t\t\treturn;\n\t\t}\n\n\t\t// Where object-fit is supported and object-position isn't (Safari < 10)\n\t\tif (\n\t\t\t!ofi.skipTest && // unless user wants to apply regardless of browser support\n\t\t\tsupportsObjectFit && // if browser already supports object-fit\n\t\t\t!style['object-position'] // unless object-position is used\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// keep a clone in memory while resetting the original to a blank\n\tif (!ofi.img) {\n\t\tofi.img = new Image(el.width, el.height);\n\t\tofi.img.srcset = nativeGetAttribute.call(el, \"data-ofi-srcset\") || el.srcset;\n\t\tofi.img.src = nativeGetAttribute.call(el, \"data-ofi-src\") || el.src;\n\n\t\t// preserve for any future cloneNode calls\n\t\t// https://github.com/bfred-it/object-fit-images/issues/53\n\t\tnativeSetAttribute.call(el, \"data-ofi-src\", el.src);\n\t\tif (el.srcset) {\n\t\t\tnativeSetAttribute.call(el, \"data-ofi-srcset\", el.srcset);\n\t\t}\n\n\t\tsetPlaceholder(el, el.naturalWidth || el.width, el.naturalHeight || el.height);\n\n\t\t// remove srcset because it overrides src\n\t\tif (el.srcset) {\n\t\t\tel.srcset = '';\n\t\t}\n\t\ttry {\n\t\t\tkeepSrcUsable(el);\n\t\t} catch (err) {\n\t\t\tif (window.console) {\n\t\t\t\tconsole.warn('https://bit.ly/ofi-old-browser');\n\t\t\t}\n\t\t}\n\t}\n\n\tpolyfillCurrentSrc(ofi.img);\n\n\tel.style.backgroundImage = \"url(\\\"\" + ((ofi.img.currentSrc || ofi.img.src).replace(/\"/g, '\\\\\"')) + \"\\\")\";\n\tel.style.backgroundPosition = style['object-position'] || 'center';\n\tel.style.backgroundRepeat = 'no-repeat';\n\tel.style.backgroundOrigin = 'content-box';\n\n\tif (/scale-down/.test(style['object-fit'])) {\n\t\tonImageReady(ofi.img, function () {\n\t\t\tif (ofi.img.naturalWidth > el.width || ofi.img.naturalHeight > el.height) {\n\t\t\t\tel.style.backgroundSize = 'contain';\n\t\t\t} else {\n\t\t\t\tel.style.backgroundSize = 'auto';\n\t\t\t}\n\t\t});\n\t} else {\n\t\tel.style.backgroundSize = style['object-fit'].replace('none', 'auto').replace('fill', '100% 100%');\n\t}\n\n\tonImageReady(ofi.img, function (img) {\n\t\tsetPlaceholder(el, img.naturalWidth, img.naturalHeight);\n\t});\n}\n\nfunction keepSrcUsable(el) {\n\tvar descriptors = {\n\t\tget: function get(prop) {\n\t\t\treturn el[OFI].img[prop ? prop : 'src'];\n\t\t},\n\t\tset: function set(value, prop) {\n\t\t\tel[OFI].img[prop ? prop : 'src'] = value;\n\t\t\tnativeSetAttribute.call(el, (\"data-ofi-\" + prop), value); // preserve for any future cloneNode\n\t\t\tfixOne(el);\n\t\t\treturn value;\n\t\t}\n\t};\n\tObject.defineProperty(el, 'src', descriptors);\n\tObject.defineProperty(el, 'currentSrc', {\n\t\tget: function () { return descriptors.get('currentSrc'); }\n\t});\n\tObject.defineProperty(el, 'srcset', {\n\t\tget: function () { return descriptors.get('srcset'); },\n\t\tset: function (ss) { return descriptors.set(ss, 'srcset'); }\n\t});\n}\n\nfunction hijackAttributes() {\n\tfunction getOfiImageMaybe(el, name) {\n\t\treturn el[OFI] && el[OFI].img && (name === 'src' || name === 'srcset') ? el[OFI].img : el;\n\t}\n\tif (!supportsObjectPosition) {\n\t\tHTMLImageElement.prototype.getAttribute = function (name) {\n\t\t\treturn nativeGetAttribute.call(getOfiImageMaybe(this, name), name);\n\t\t};\n\n\t\tHTMLImageElement.prototype.setAttribute = function (name, value) {\n\t\t\treturn nativeSetAttribute.call(getOfiImageMaybe(this, name), name, String(value));\n\t\t};\n\t}\n}\n\nfunction fix(imgs, opts) {\n\tvar startAutoMode = !autoModeEnabled && !imgs;\n\topts = opts || {};\n\timgs = imgs || 'img';\n\n\tif ((supportsObjectPosition && !opts.skipTest) || !supportsOFI) {\n\t\treturn false;\n\t}\n\n\t// use imgs as a selector or just select all images\n\tif (imgs === 'img') {\n\t\timgs = document.getElementsByTagName('img');\n\t} else if (typeof imgs === 'string') {\n\t\timgs = document.querySelectorAll(imgs);\n\t} else if (!('length' in imgs)) {\n\t\timgs = [imgs];\n\t}\n\n\t// apply fix to all\n\tfor (var i = 0; i < imgs.length; i++) {\n\t\timgs[i][OFI] = imgs[i][OFI] || {\n\t\t\tskipTest: opts.skipTest\n\t\t};\n\t\tfixOne(imgs[i]);\n\t}\n\n\tif (startAutoMode) {\n\t\tdocument.body.addEventListener('load', function (e) {\n\t\t\tif (e.target.tagName === 'IMG') {\n\t\t\t\tfix(e.target, {\n\t\t\t\t\tskipTest: opts.skipTest\n\t\t\t\t});\n\t\t\t}\n\t\t}, true);\n\t\tautoModeEnabled = true;\n\t\timgs = 'img'; // reset to a generic selector for watchMQ\n\t}\n\n\t// if requested, watch media queries for object-fit change\n\tif (opts.watchMQ) {\n\t\twindow.addEventListener('resize', fix.bind(null, imgs, {\n\t\t\tskipTest: opts.skipTest\n\t\t}));\n\t}\n}\n\nfix.supportsObjectFit = supportsObjectFit;\nfix.supportsObjectPosition = supportsObjectPosition;\n\nhijackAttributes();\n\nmodule.exports = fix;\n","/*\n _ _ _ _\n ___| (_) ___| | __ (_)___\n/ __| | |/ __| |/ / | / __|\n\\__ \\ | | (__| < _ | \\__ \\\n|___/_|_|\\___|_|\\_(_)/ |___/\n |__/\n\n Version: 1.8.1\n Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n Docs: http://kenwheeler.github.io/slick\n Repo: http://github.com/kenwheeler/slick\n Issues: http://github.com/kenwheeler/slick/issues\n\n */\n/* global window, document, define, jQuery, setInterval, clearInterval */\n;(function(factory) {\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports !== 'undefined') {\n module.exports = factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n\n}(function($) {\n 'use strict';\n var Slick = window.Slick || {};\n\n Slick = (function() {\n\n var instanceUid = 0;\n\n function Slick(element, settings) {\n\n var _ = this, dataSettings;\n\n _.defaults = {\n accessibility: true,\n adaptiveHeight: false,\n appendArrows: $(element),\n appendDots: $(element),\n arrows: true,\n asNavFor: null,\n prevArrow: '',\n nextArrow: '',\n autoplay: false,\n autoplaySpeed: 3000,\n centerMode: false,\n centerPadding: '50px',\n cssEase: 'ease',\n customPaging: function(slider, i) {\n return $('