PageSourceSearch

https://karriere.datatronic.de/assets/js/jquery.min.js,mobile-navi…xan.js,injectinvisiblecss.js...-37b7ee57.js

js datatronic.de collected 2026-10-04 04:14:49 UTC 671,844 bytes, 15,756 lines download raw bytes

vendor: 87,462 bytes, lines 1-2
1/*! jQuery v3.7.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
2!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.0",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i)return e.textContent;if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=ce.text(t);return n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function p(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",p="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+p+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&z(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function X(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function z(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="<a id='"+S+"' href='' disabled='disabled'></a><select id='"+S+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&V(e);var n=b.attrHandle[t.toLowerCase()],r=n&&ue.call(b.attrHandle,t.toLowerCase())?n(e,t,!C):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),de.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(b=ce.expr={cacheLength:50,createPseudo:F,match:D,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(d,e,t,h,g){var v="nth"!==d.slice(0,3),y="last"!==d.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,p=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===d&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){p=(a=(r=(i=l[S]||(l[S]={}))[d]||[])[0]===E&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if(1===o.nodeType&&++p&&o===e){i[d]=[E,a,p];break}}else if(f&&(p=a=(r=(i=e[S]||(e[S]={}))[d]||[])[0]===E&&r[1]),!1===p)while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++p&&(f&&((i=o[S]||(o[S]={}))[d]=[E,p]),o===e))break;return(p-=g)===h||p%h==0&&0<=p/h}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?F(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:F(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[S]?F(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:F(function(t){return function(e){return 0<I(t,e).length}}),contains:F(function(t){return t=t.replace(O,P),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:F(function(n){return A.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(O,P).toLowerCase(),function(e){var t;do{if(t=C?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return T.activeElement}catch(e){}}()&&T.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:X(!1),disabled:X(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return N.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:U(function(){return[0]}),last:U(function(e,t){return[t-1]}),eq:U(function(e,t,n){return[n<0?n+t:n]}),even:U(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:U(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:U(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:U(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=B(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=_(e);function G(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),b.filter)!(r=D[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function Q(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function J(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[E,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[S]||(e[S]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===E&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function K(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(d,h,g,v,y,e){return v&&!v[S]&&(v=ee(v)),y&&!y[S]&&(y=ee(y,e)),F(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),p=!d||!e&&h?f:Z(f,u,d,n,r);if(g?g(p,s=y||(e?d:c||v)?[]:t,n,r):s=p,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(p[l[o]]=a))}if(e){if(y||d){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(p[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):k.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=J(function(e){return e===i},a,!0),l=J(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[J(K(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return ee(1<s&&K(c),1<s&&Q(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&Q(e))}c.push(t)}return K(c)}function ne(e,t){var n,v,y,m,x,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[S]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=E+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==T||(V(o),n=!C);while(s=v[a++])if(s(o,t||T,n)){k.call(r,o);break}i&&(E=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=pe.call(r));f=Z(f)}k.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(E=h,w=p),c},m?F(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&C&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(O,P),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=D.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(O,P),H.test(o[0].type)&&z(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&Q(o)))return k.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!C,n,!t||H.test(e)&&z(t.parentNode)||t),n}G.prototype=b.filters=b.pseudos,b.setFilters=new G,le.sortStable=S.split("").sort(l).join("")===S,V(),le.sortDetached=$(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var d=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},b=ce.expr.match.needsContext,w=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&b.test(e)?ce(e):e||[],!1).length}});var k,S=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!b.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return d(e,"parentNode")},parentsUntil:function(e,t,n){return d(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return d(e,"nextSibling")},prevAll:function(e){return d(e,"previousSibling")},nextUntil:function(e,t,n){return d(e,"nextSibling",n)},prevUntil:function(e,t,n){return d(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(j[r]||ce.uniqueSort(n),E.test(r)&&n.reverse()),this.pushStack(n)}});var D=/[^\x20\t\r\n\f]+/g;function N(e){return e}function q(e){throw e}function L(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(D)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,N,s),l(u,o,q,s)):(u++,t.call(e,l(u,o,N,s),l(u,o,q,s),l(u,o,N,o.notifyWith))):(a!==N&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==q&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:N,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:N)),o[2][3].add(l(0,e,v(n)?n:q))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(L(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)L(i[t],a(t),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&H.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var O=ce.Deferred();function P(){C.removeEventListener("DOMContentLoaded",P),ie.removeEventListener("load",P),ce.ready()}ce.fn.ready=function(e){return O.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||O.resolveWith(C,[ce])}}),ce.ready.then=O.then,"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?ie.setTimeout(ce.ready):(C.addEventListener("DOMContentLoaded",P),ie.addEventListener("load",P));var R=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)R(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},M=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function F(e){return e.replace(M,"ms-").replace(I,W)}var $=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function B(){this.expando=ce.expando+B.uid++}B.uid=1,B.prototype={cache:function(e){var t=e[this.expando];return t||(t={},$(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[F(t)]=n;else for(r in t)i[F(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][F(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(F):(t=F(t))in r?[t]:t.match(D)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new B,X=new B,U=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,z=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:U.test(i)?JSON.parse(i):i)}catch(e){}X.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return X.hasData(e)||_.hasData(e)},data:function(e,t,n){return X.access(e,t,n)},removeData:function(e,t){X.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=X.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=F(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){X.set(this,n)}):R(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=X.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){X.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){X.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var G=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+G+")([a-z%]*)$","i"),Q=["Top","Right","Bottom","Left"],J=C.documentElement,K=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};J.getRootNode&&(K=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&K(e)&&"none"===ce.css(e,"display")};function te(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ne={};function re(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ne[s])||(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ne[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return re(this,!0)},hide:function(){return re(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var xe,be,we=/^(?:checkbox|radio)$/i,Te=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="<option></option>",le.option=!!xe.lastChild;var ke={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}ke.tbody=ke.tfoot=ke.colgroup=ke.caption=ke.thead,ke.th=ke.td,le.option||(ke.optgroup=ke.option=[1,"<select multiple='multiple'>","</select>"]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))ce.merge(p,o.nodeType?[o]:o);else if(je.test(o)){a=a||f.appendChild(t.createElement("div")),s=(Te.exec(o)||["",""])[1].toLowerCase(),u=ke[s]||ke._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=K(o),a=Se(f.appendChild(o),"script"),l&&Ee(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function qe(){return!1}function Le(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=qe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function He(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.get(t);if($(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(J,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(D)||[""]).length;while(l--)d=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},c=ce.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),ce.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(D)||[""]).length;while(l--)if(d=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=ce.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click",!0),!1},trigger:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click"),!0},_default:function(e){var t=e.target;return we.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:qe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:qe,isPropagationStopped:qe,isImmediatePropagationStopped:qe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(C.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(He(this,r,!0),!C.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return He(this,r),!0},teardown:function(){var e;if(!C.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i);n||(C.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(C.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return Le(this,e,t,n,r)},one:function(e,t,n,r){return Le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=qe),this.each(function(){ce.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Pe=/checked\s*(?:[^=]|=\s*.checked.)/i,Re=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Me(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);X.hasData(e)&&(o=X.access(e),a=ce.extend({},o),X.set(t,a))}}function $e(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=v(d);if(h||1<f&&"string"==typeof d&&!le.checkClone&&Pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),$e(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Se(e,"script"),Ie)).length;c<f;c++)u=e,c!==p&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Se(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,We),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):m(u.textContent.replace(Re,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Se(r)),r.parentNode&&(n&&K(r)&&Ee(Se(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=K(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Se(c),r=0,i=(o=Se(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&we.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Se(e),a=a||Se(c),r=0,i=o.length;r<i;r++)Fe(o[r],a[r]);else Fe(e,c);return 0<(a=Se(c,"script")).length&&Ee(a,!f&&Se(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[X.expando]&&(n[X.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return R(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return $e(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Me(this,e).appendChild(e)})},prepend:function(){return $e(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Me(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Se(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return R(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Oe.test(e)&&!ke[(Te.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Se(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return $e(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Se(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var _e=new RegExp("^("+G+")(?!px)[a-z%]+$","i"),Xe=/^--/,Ue=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},ze=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ve=new RegExp(Q.join("|"),"i");function Ge(e,t,n){var r,i,o,a,s=Xe.test(t),u=e.style;return(n=n||Ue(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||K(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&_e.test(a)&&Ve.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Ye(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",J.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),J.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=C.createElement("div"),l=C.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=C.createElement("table"),t=C.createElement("tr"),n=C.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",J.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,J.removeChild(e)),a}}))}();var Qe=["Webkit","Moz","ms"],Je=C.createElement("div").style,Ke={};function Ze(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Je?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;while(n--)if((e=Qe[n]+t)in Je)return e}(e)||e)}var et=/^(none|table(?!-c[ea]).+)/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function it(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+Q[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+Q[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+Q[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+Q[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+Q[a]+"Width",!0,i):s+=ce.css(e,"border"+Q[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function ot(e,t,n){var r=Ue(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ge(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(_e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?"border":"content"),o,r,a)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=F(t),u=Xe.test(t),l=e.style;if(u||(t=Ze(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=te(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=F(t);return Xe.test(t)||(t=Ze(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ge(e,t,r)),"normal"===i&&t in nt&&(i=nt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!et.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,u,n):ze(e,tt,function(){return ot(e,u,n)})},set:function(e,t,n){var r,i=Ue(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?it(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-it(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),rt(0,t,s)}}}),ce.cssHooks.marginLeft=Ye(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,"marginLeft"))||e.getBoundingClientRect().left-ze(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+Q[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=rt)}),ce.fn.extend({css:function(e,t){return R(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ue(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),((ce.Tween=at).prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}}).init.prototype=at.prototype,(at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||!ce.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=at.prototype.init,ce.fx.step={};var st,ut,lt,ct,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function dt(){ut&&(!1===C.hidden&&ie.requestAnimationFrame?ie.requestAnimationFrame(dt):ie.setTimeout(dt,ce.fx.interval),ce.fx.tick())}function ht(){return ie.setTimeout(function(){st=void 0}),st=Date.now()}function gt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=Q[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function vt(e,t,n){for(var r,i=(yt.tweeners[t]||[]).concat(yt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function yt(o,e,t){var n,a,r=0,i=yt.prefilters.length,s=ce.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=st||ht(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:ce.extend({},e),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},t),originalProperties:e,originalOptions:t,startTime:st||ht(),duration:t.duration,tweens:[],createTween:function(e,t){var n=ce.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=F(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ce.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=yt.prefilters[r].call(l,o,c,l.opts))return v(n.stop)&&(ce._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return ce.map(c,vt,l),v(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),ce.fx.timer(ce.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}ce.Animation=ce.extend(yt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return te(n.elem,e,Y.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=["*"]):e=e.match(D);for(var n,r=0,i=e.length;r<i;r++)n=e[r],yt.tweeners[n]=yt.tweeners[n]||[],yt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ee(e),v=_.get(e,"fxshow");for(r in n.queue||(null==(a=ce._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,ce.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ft.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||ce.style(e,r)}if((u=!ce.isEmptyObject(t))||!ce.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=_.get(e,"display")),"none"===(c=ce.css(e,"display"))&&(l?c=l:(re([e],!0),l=e.style.display||l,c=ce.css(e,"display"),re([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===ce.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=_.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&re([e],!0),p.done(function(){for(r in g||re([e]),_.remove(e,"fxshow"),d)ce.style(e,r,d[r])})),u=vt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?yt.prefilters.unshift(e):yt.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&"object"==typeof e?ce.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return ce.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in ce.fx.speeds?r.duration=ce.fx.speeds[r.duration]:r.duration=ce.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ee).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ce.isEmptyObject(t),o=ce.speed(e,n,r),a=function(){var e=yt(this,ce.extend({},t),o);(i||_.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=ce.timers,r=_.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||ce.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=_.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=ce.timers,o=n?n.length:0;for(t.finish=!0,ce.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),ce.each(["toggle","show","hide"],function(e,r){var i=ce.fn[r];ce.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),ce.each({slideDown:gt("show"),slideUp:gt("hide"),slideToggle:gt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){ce.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),st=void 0},ce.fx.timer=function(e){ce.timers.push(e),ce.fx.start()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=!0,dt())},ce.fx.stop=function(){ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},lt=C.createElement("input"),ct=C.createElement("select").appendChild(C.createElement("option")),lt.type="checkbox",le.checkOn=""!==lt.value,le.optSelected=ct.selected,(lt=C.createElement("input")).value="t",lt.type="radio",le.radioValue="t"===lt.value;var mt,xt=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return R(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(D);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=xt[t]||ce.find.attr;xt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=xt[o],xt[o]=r,r=null!=a(e,t,n)?o:null,xt[o]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;function Tt(e){return(e.match(D)||[]).join(" ")}function Ct(e){return e.getAttribute&&e.getAttribute("class")||""}function kt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(D)||[]}ce.fn.extend({prop:function(e,t){return R(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,Ct(this)))}):(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,Ct(this)))}):arguments.length?(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,Ct(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=kt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=Ct(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+Tt(Ct(n))+" ").indexOf(t))return!0;return!1}});var St=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(St,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:Tt(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Et=ie.location,jt={guid:Date.now()},At=/\?/;ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Dt=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||C],d=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||C,3!==n.nodeType&&8!==n.nodeType&&!Dt.test(d+ce.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[ce.expando]?e:new ce.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||d,Dt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||C)&&p.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&$(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!$(n)||u&&v(n[d])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Nt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Nt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var qt=/\[\]$/,Lt=/\r?\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Pt(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||qt.test(n)?i(n,t):Pt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Pt(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Pt(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&Ot.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}}):{name:t.name,value:n.replace(Lt,"\r\n")}}).get()}});var Rt=/%20/g,Mt=/#.*$/,It=/([?&])_=[^&]*/,Wt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,$t=/^\/\//,Bt={},_t={},Xt="*/".concat("*"),Ut=C.createElement("a");function zt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(D)||[];if(v(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Vt(t,i,o,a){var s={},u=t===_t;function l(e){var r;return s[e]=!0,ce.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Gt(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}Ut.href=Et.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Xt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,ce.ajaxSettings),t):Gt(ce.ajaxSettings,e)},ajaxPrefilter:zt(Bt),ajaxTransport:zt(_t),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=ce.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?ce(y):ce.event,x=ce.Deferred(),b=ce.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Wt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace($t,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(D)||[""],null==v.crossDomain){r=C.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ut.protocol+"//"+Ut.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=ce.param(v.data,v.traditional)),Vt(Bt,v,t,T),h)return T;for(i in(g=ce.event&&v.global)&&0==ce.active++&&ce.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ft.test(v.type),f=v.url.replace(Mt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Rt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(At.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(It,"$1"),o=(At.test(f)?"&":"?")+"_="+jt.guid+++o),v.url=f+o),v.ifModified&&(ce.lastModified[f]&&T.setRequestHeader("If-Modified-Since",ce.lastModified[f]),ce.etag[f]&&T.setRequestHeader("If-None-Match",ce.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Xt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Vt(_t,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=ie.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&ie.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<ce.inArray("script",v.dataTypes)&&ce.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(ce.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(ce.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--ce.active||ce.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],function(e,i){ce[i]=function(e,t,n,r){return v(t)&&(r=r||n,n=t,t=void 0),ce.ajax(ce.extend({url:e,type:i,dataType:r,data:t,success:n},ce.isPlainObject(e)&&e))}}),ce.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),ce._evalUrl=function(e,t,n){return ce.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){ce.globalEval(e,t,n)}})},ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},ce.ajaxSettings.xhr=function(){try{return new ie.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Qt=ce.ajaxSettings.xhr();le.cors=!!Qt&&"withCredentials"in Qt,le.ajax=Qt=!!Qt,ce.ajaxTransport(function(i){var o,a;if(le.cors||Qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Yt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&ie.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),ce.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),ce.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=ce("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=Tt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&ce.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ce("<div>").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var en=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=F,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(en,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var tn=ie.jQuery,nn=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=nn),e&&ie.jQuery===ce&&(ie.jQuery=tn),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce});
3
4/**
5 * @package   MobileNaviBundle
6 * @author    Hakan Havutcuoglu
7 * @license   GNU LGPL 3+
8 * @copyright (c) 2021
9 */
10
11
12// jQuery
13(function($) {
14
15    /* Navbar to open and close navigation panel */
16    $(function() {
17        var mnav = $('#navi-mobile'), /* menu css class */
18            body = $('body'),
19            container = $('#wrapper, #body-top'), /* container css class */
20            siteOverlay = $('.site-overlay'), /* site overlay */
21            mnavClass = "mnav-closed mnav-open", /* menu position & menu open class */
22            mnavActiveClass = "mnav-active", /* css class to toggle site overlay */
23            containerClass = "wrapper-push", /* container open class */
24            menuBtn = $('.mnavbar, .mnav a'); /* css classes to toggle the menu */
25
26        function toggleNav(){
27            body.toggleClass(mnavActiveClass); /* toggle site overlay */
28            mnav.find('.mnav').toggleClass(mnavClass);
29            container.toggleClass(containerClass);
30        }
31
32        /* toggle menu */
33        menuBtn.click(function(){
34            toggleNav();
35        });
36
37        /* close menu by click on site overlay */
38        siteOverlay.click(function(){
39            toggleNav();
40        });
41    });
42
43    /* Open and close the navigation ul levels by click */
44    $(window).on('resize',function() {
45        // close site overlay on large up by window resize
46        if( Foundation.MediaQuery.is('large up') && $('body').hasClass('mnav-active') )
47        {
48            $('.site-overlay').click();
49        }
50        moveNavigation();
51        addToggler();
52        animateNav();
53    });
54
55    $(document).ready(function(){
56        moveNavigation();
57        addToggler();
58        animateNav();
59    });
60
61    // switch menu between header and panel
62    function moveNavigation() {
63        // move menu to #navi-mobile
64        if(Foundation.MediaQuery.is('medium down'))
65        {
66            $('#body-top .main-navigation-desktop .mod_navigation').detach().prependTo('#navi-mobile').addClass('nosearchhi mnav mnav-closed');
67        }
68        // move menu back to #body-top
69        if(Foundation.MediaQuery.is('large up'))
70        {
71            $('#navi-mobile .mod_navigation').detach().prependTo('#body-top .main-navigation-desktop').removeClass('nosearchhi mnav mnav-closed mnav-open');
72        }
73    }
74
75    /* add toggler icon */
76    function addToggler() {
77        if(Foundation.MediaQuery.is('medium down')) {
78            if($('#navi-mobile li.submenu .clickBtn').length == 0) {
79                $('<i class="clickBtn"></i>').insertBefore('#navi-mobile li.submenu > ul');
80
81                /* open the active menu points by page load */
82                $('#navi-mobile li.submenu.trail > .clickBtn').addClass('open');
83                $('#navi-mobile li.submenu.trail > ul').slideDown('fast');
84            }
85        }
86        if(Foundation.MediaQuery.is('large up')) {
87            $('#body-top .main-navigation-desktop .clickBtn').remove();
88            $('#body-top .main-navigation-desktop li').removeClass('open');
89            $('#body-top .main-navigation-desktop ul').css('display','');
90        }
91    }
92
93    /* navigation core function by click */
94    function animateNav() {
95        if(Foundation.MediaQuery.is('medium down')) {
96            $('#navi-mobile ul').each(function(index) {
97                var level = index;
98                var obj = $('ul.level_'+level+' > li > .clickBtn');
99
100                if(obj.length && !$._data(obj[0],'events')) { // check if events exist on clickBtn
101                    /* open the submenus */
102                    $('ul.level_'+level+' > li > .clickBtn').click(function(event){
103                        $(this).parent('li').toggleClass('open');
104                        $(this).next('ul.level_'+(level + 1)).slideToggle('fast');
105                        $(this).toggleClass('open');
106                        event.stopPropagation();
107                    });
108                }
109            });
110        }
111    }
112
113})(jQuery);
114
115jQuery(function($) {
116
117    /**
118     * Add Animation class, set properties
119     */
120    function addAnimationClassInViewArea()
121    {
122    	var elements = $('.animated'); // elements to animate
123
124    	// Calculate scroll position
125		var window_height = $(window).height();
126		var window_top_position = $(window).scrollTop();
127		var window_bottom_position = (window_top_position + window_height);
128
129		$.each(elements, function(k, e) {
130            var element = $(e);
131            var props = element.data('ixan')[0];
132
133            // Calculate element position
134			var element_height = element.outerHeight();
135			var element_top_position = element.offset().top ;
136			var element_bottom_position = (element_top_position + element_height);
137
138            // Set effect
139            element.addClass(props['effect']);
140
141            // Restore visibility
142            element.css('visibility', 'visible');
143
144            // Set count property
145            var count = (props['count'] ? props['count'] : 1);
146            element.css({
147                "-webkit-animation-iteration-count": count,
148                "animation-iteration-count": count
149            });
150
151            // Set duration property
152            var duration = props['duration'];
153            if (duration) {
154                element.css({
155                    "-webkit-animation-duration": duration+'ms',
156                    "animation-duration": duration+'ms'
157                });
158            }
159
160            // Set delay property
161            var delay = props['delay'];
162            if (delay) {
163                element.css({
164                    "-webkit-animation-delay": delay+'ms',
165                    "animation-delay": delay+'ms'
166                });
167            }
168
169            // Determine if element is in view
170            var wasinview = element.data('ixaninview');
171            var topOffset = calcOffset(props['offsettop']);
172            var bottomOffset = calcOffset(props['offsetbottom']);
173            if ((element_bottom_position >= (window_top_position + topOffset)) && (element_top_position <= (window_bottom_position - bottomOffset))) {
174                element.data('ixaninview', true);
175            }
176            else {
177                element.data('ixaninview', false);
178            }
179
180            // Append effect depending on condition
181            if (props['condition'] == 'inview') {
182                // Start when element is in view
183    			if (element.data('ixaninview') && !wasinview) {
184                    restartAnimation(element, props);
185    			}
186            }
187            else if (props['condition'] == 'outview') {
188                // Start when element exits view
189    			if (!element.data('ixaninview') && wasinview) {
190                    restartAnimation(element, props);
191    			}
192            }
193            else if (props['condition'] == 'click') {
194                // Start when element is clicked
195                // Fix: Split events for firefox, doesnt work on click
196    			element.off('touchstart.ixan').on('touchstart.ixan', function(e) {
197                    restartAnimation($(this), props);
198                });
199                element.off('mousedown.ixan').on('mousedown.ixan', function(e) {
200                    restartAnimation($(this), props);
201                });
202            }
203            else if (props['condition'] == 'mouseenter') {
204                // Start when element is hovered
205    			element.off('mouseenter.ixan').on('mouseenter.ixan', function(e) {
206                    restartAnimation($(this), props);
207                });
208            }
209            else if (props['condition'] == 'mouseleave') {
210                // Start when element is unhovered
211    			element.off('mouseleave.ixan').on('mouseleave.ixan', function(e) {
212                    restartAnimation($(this), props);
213                });
214            }
215            else {
216                // Default, start immediately
217                restartAnimation(element, props);
218            }
219		});
220    }
221
222    /**
223     * Calculate offset in pixel
224     */
225    function calcOffset(value)
226    {
227        // Init value
228        var offset = (value ? parseInt(value) : 0);
229
230        // Calculate %
231        if (value && value.indexOf('%') != -1) {
232            offset = Math.round($(window).height() / 100 * offset);
233        }
234
235        // Return offset
236        return offset;
237    }
238
239    /**
240     * Restart animation
241     */
242    function restartAnimation(element, props) {
243        // Run in dependence of behaviour
244        if (
245            (props['behaviour'] == 'once' && (element.hasClass('ixanrunning') || element.hasClass('ixandone'))) ||
246            (props['behaviour'] == 'multiple' && element.hasClass('ixanrunning'))
247        ) {
248            // Dont restart
249            return;
250        }
251
252        // Remember/Remove current animation
253        var webkitanimationname = element.css('-webkit-animation-name')
254        var webkitanimationduration = element.css('-webkit-animation-duration')
255        var webkitanimationtimingfunction = element.css('-webkit-animation-timing-function')
256        var webkitanimationdelay = element.css('-webkit-animation-delay')
257        var webkitanimationiterationcount = element.css('-webkit-animation-iteration-count')
258        var webkitanimationdirection = element.css('-webkit-animation-direction')
259        var webkitanimationfillmode = element.css('-webkit-animation-fill-mode');
260        var webkitanimationplaystate = 'running';
261        var webkitani = webkitanimationname+' '+webkitanimationduration+' '+webkitanimationtimingfunction+' '+webkitanimationdelay+' '+webkitanimationiterationcount+' '+webkitanimationdirection+' '+webkitanimationfillmode+' '+webkitanimationplaystate;
262
263        var animationname = element.css('animation-name')
264        var animationduration = element.css('animation-duration')
265        var animationtimingfunction = element.css('animation-timing-function')
266        var animationdelay = element.css('animation-delay')
267        var animationiterationcount = element.css('animation-iteration-count')
268        var animationdirection = element.css('animation-direction')
269        var animationfillmode = element.css('animation-fill-mode');
270        var animationplaystate = 'running';
271        var ani = animationname+' '+animationduration+' '+animationtimingfunction+' '+animationdelay+' '+animationiterationcount+' '+animationdirection+' '+animationfillmode+' '+animationplaystate;
272
273        element.css({
274            "-webkit-animation": 'none 0 ease 0 1 normal none running',
275            "-webkit-animation-name": 'none',
276            "-webkit-animation-duration": '0',
277            "-webkit-animation-timing-function": 'ease',
278            "-webkit-animation-delay": '0',
279            "-webkit-animation-iteration-count": '1',
280            "-webkit-animation-direction": 'normal',
281            "-webkit-animation-fill-mode": 'none',
282            "-webkit-animation-play-state": 'running',
283            "animation": 'none 0 ease 0 1 normal none running',
284            "animation-name": 'none',
285            "animation-duration": '0',
286            "animation-timing-function": 'ease',
287            "animation-delay": '0',
288            "animation-iteration-count": '1',
289            "animation-direction": 'normal',
290            "animation-fill-mode": 'none',
291            "animation-play-state": 'running'
292        });
293
294        // Restart
295        window.requestAnimationFrame(function(){
296            element.css({
297                "-webkit-animation": webkitani,
298                "-webkit-animation-name": webkitanimationname,
299                "-webkit-animation-duration": webkitanimationduration,
300                "-webkit-animation-timing-function": webkitanimationtimingfunction,
301                "-webkit-animation-delay": webkitanimationdelay,
302                "-webkit-animation-iteration-count": webkitanimationiterationcount,
303                "-webkit-animation-direction": webkitanimationdirection,
304                "-webkit-animation-fill-mode": webkitanimationfillmode,
305                "-webkit-animation-play-state": webkitanimationplaystate,
306                "animation": ani,
307                "animation-name": animationname,
308                "animation-duration": animationduration,
309                "animation-timing-function": animationtimingfunction,
310                "animation-delay": animationdelay,
311                "animation-iteration-count": animationiterationcount,
312                "animation-direction": animationdirection,
313                "animation-fill-mode": animationfillmode,
314                "animation-play-state": animationplaystate
315            });
316
317            // Remember status
318            element.addClass('ixanrunning');
319            element.off('animationend.ixan').on('animationend.ixan', function() {
320                $(this).removeClass('ixanrunning');
321                $(this).addClass('ixandone');
322            });
323        });
324    }
325
326    // ######## Initialize ########
327    addAnimationClassInViewArea();
328    $(window).on('scroll resize', addAnimationClassInViewArea);
329});
330
331$('html').addClass('jsEnabled');
332
333/* Put your JS here. */
334
335
336/* Put your JS here. */
337
338/* Put your JS here. */
339
340/* Put your JS here. */
341
342/* Put your JS here. */
343
344
345/* Put your JS here. */
346
347/* Put your JS here. */
348
349
350// counter box to count numbers from 0 up
351(function($) {
352
353    $.fn.countTo = function(options) {
354        // merge the default plugin settings with the custom options
355        options = $.extend({}, $.fn.countTo.defaults, options || {});
356
357        // how many times to update the value, and how much to increment the value on each update
358        var loops = Math.ceil(options.speed / options.refreshInterval),
359            increment = (options.to - options.from) / loops;
360
361        return $(this).each(function() {
362            var _this = this,
363                loopCount = 0,
364                value = options.from,
365                interval = setInterval(updateTimer, options.refreshInterval);
366
367            // update value by loops
368            function updateTimer() {
369                value += increment;
370                loopCount++;
371
372                // add decimal and change string to number
373                var valueWithDecimal = value.toFixed(options.decimals),
374                    valueAsNumber = Number.parseFloat(valueWithDecimal);
375
376                // output frontend
377                $(_this).html(valueAsNumber.toLocaleString());
378
379                // custom functions on update
380                if (typeof(options.onUpdate) == 'function') {
381                    options.onUpdate.call(_this, value);
382                }
383
384                // custom functions on complete
385                if (loopCount >= loops) {
386                    clearInterval(interval);
387                    value = options.to;
388
389                    if (typeof(options.onComplete) == 'function') {
390                        options.onComplete.call(_this, value);
391                    }
392                }
393            }
394        });
395    };
396
397    // default options
398    $.fn.countTo.defaults = {
399        from: 0,  // the number the element should start at
400        to: 100,  // the number the element should end at
401        speed: 1000,  // how long it should take to count between the target numbers
402        refreshInterval: 100,  // how often the element should be updated
403        decimals: 0,  // the number of decimal places to show
404        onUpdate: null,  // callback method for every time the element is updated,
405        onComplete: null,  // callback method for when the element finishes updating
406    };
407
408})(jQuery);
409
410/* Put your JS here. */
411
412/* Put your JS here. */
413
414
415// TODO: dynamically change next and prev into dynamic selector
416$(document).ready(function () {
417    $(document).on("click", ".MultiCheckBox", function () {
418        var overview = $(this).closest('.MultiCheckBoxWrapper');
419        var detail = $(this).next();
420        detail.show();
421        overview.addClass('active');
422    });
423
424    $(document).on("click", ".MultiCheckBoxDetailHeader input", function (e) {
425        e.stopPropagation();
426        var hc = $(this).prop("checked");
427        $(this).closest(".MultiCheckBoxDetail").find(".MultiCheckBoxDetailBody input").prop("checked", hc);
428        $(this).closest(".MultiCheckBoxWrapper").next().UpdateSelect();
429    });
430
431    $(document).on("click", ".MultiCheckBoxDetailHeader", function (e) {
432        var inp = $(this).find("input");
433        var chk = inp.prop("checked");
434        inp.prop("checked", !chk);
435        $(this).closest(".MultiCheckBoxDetail").find(".MultiCheckBoxDetailBody input").prop("checked", !chk);
436        $(this).closest(".MultiCheckBoxWrapper").next().UpdateSelect();
437    });
438
439    $(document).on("click", ".MultiCheckBoxDetail .cont input", function (e) {
440        e.stopPropagation();
441        $(this).closest(".MultiCheckBoxWrapper").next().UpdateSelect();
442
443        var val = ($(".MultiCheckBoxDetailBody input:checked").length == $(".MultiCheckBoxDetailBody input").length)
444        $(".MultiCheckBoxDetailHeader input").prop("checked", val);
445    });
446
447    $(document).on("click", ".MultiCheckBoxDetail .cont", function (e) {
448        var inp = $(this).find("input");
449        var chk = inp.prop("checked");
450        inp.prop("checked", !chk);
451
452        var tmp = $(this).closest(".MultiCheckBoxWrapper").find("select");
453        $(this).closest(".MultiCheckBoxWrapper").next().UpdateSelect();
454        // var multiCheckBoxDetailBody = $(this).closest(".MultiCheckBoxDetailBody");
455        var val = ($(".MultiCheckBoxDetailBody input:checked").length == $(".MultiCheckBoxDetailBody input").length)
456        $(".MultiCheckBoxDetailHeader input").prop("checked", val);
457    });
458
459    $(document).mouseup(function (e) {
460        var container = $(".MultiCheckBoxDetail");
461        var overview = $(".MultiCheckBoxWrapper");
462        if (!container.is(e.target) && container.has(e.target).length === 0) {
463            container.hide();
464            overview.removeClass('active');
465        }
466    });
467});
468
469var defaultMultiCheckBoxOption = { width: '220px', defaultText: 'Select Below', height: '200px' };
470
471jQuery.fn.extend({
472    CreateMultiCheckBox: function (options) {
473
474        var localOption = {};
475        localOption.width = (options != null && options.width != null && options.width != undefined) ? options.width : defaultMultiCheckBoxOption.width;
476        localOption.defaultText = (options != null && options.defaultText != null && options.defaultText != undefined) ? options.defaultText : defaultMultiCheckBoxOption.defaultText;
477        localOption.height = (options != null && options.height != null && options.height != undefined) ? options.height : defaultMultiCheckBoxOption.height;
478
479        this.hide();
480        this.attr("multiple", "multiple");
481
482        var checkBoxWrapper = $("<div class='MultiCheckBoxWrapper'></div>").insertBefore(this);
483        var divSel = $("<div class='MultiCheckBox'>" + localOption.defaultText + "<span class='k-icon k-i-arrow-60-down'><svg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='sort
483-down' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512' class='svg-inline--fa fa-sort-down fa-w-10 fa-2x'><path fill='currentColor' d='M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z' class=''></path></svg></span></div>").appendTo(checkBoxWrapper);
484        // var divSel = $("<div class='MultiCheckBox'>" + localOption.defaultText + "<span class='k-icon k-i-arrow-60-down'><svg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='sort-down' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512' class='svg-inline--fa fa-sort-down fa-w-10 fa-2x'><path fill='currentColor' d='M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z' class=''></path></svg></span></div>").insertBefore(this);
485        divSel.css({ "width": localOption.width });
486
487        // var detail = $("<div class='MultiCheckBoxDetail'><div class='MultiCheckBoxDetailHeader'><input type='checkbox' class='mulinput' value='-1982' /><div>Select All</div></div><div class='MultiCheckBoxDetailBody'></div></div>").insertAfter(divSel);
488        var detail = $("<div class='MultiCheckBoxDetail'><div class='MultiCheckBoxDetailBody'></div></div>").insertAfter(divSel);
489        detail.css({ "width": parseInt(options.width) + 10, "max-height": localOption.height });
490        var multiCheckBoxDetailBody = detail.find(".MultiCheckBoxDetailBody");
491
492        this.find("option").each(function () {
493            var val = $(this).attr("value");
494
495            if (val == undefined)
496                val = '';
497
498            multiCheckBoxDetailBody.append("<div class='cont'><div><input type='checkbox' class='mulinput' value='" + val + "' /></div><div>" + $(this).text() + "</div></div>");
499        });
500
501        multiCheckBoxDetailBody.css("max-height", (parseInt($(".MultiCheckBoxDetail").css("max-height")) - 28) + "px");
502    },
503    UpdateSelect: function () {
504        var arr = [];
505
506        this.prev().find(".mulinput:checked").each(function () {
507            arr.push($(this).val());
508        });
509
510        this.val(arr).trigger('change');
511    },
512});
513
514// Filter on change
515var multicheckchangeevent = function(event) {
516    filters = [];
517    $(this).closest('.filterdd-buttons').find('select').each(function(index, el) {
518        arr = $(el).val();
519        if (arr instanceof Array && arr.length > 0) {
520            filters.push(arr);
521        }
522    });
523    filterparent = $(this).closest('.ce_filterdd');
524    filterparent.find('.jobs_layout_latest').show();
525    $(filters).each(function(index, filter) {
526        filterparent.find('.jobs_layout_latest:not(.'+filter.join(', .')+')').hide();
527    });
528};
529
530// Init filter, remove options without hits
531$(window).on('load', function(event) {
532    var selects = $('.filterdd-buttons select');
533    selects.find('option').each(function(index, opt) {
534        if (!$(this).closest('.ce_filterdd').find('.jobs_layout_latest.'+opt.value).length) {
535            $(opt).remove();
536        }
537    });
538    selects.each(function(index, sel) {
539        if (!$(sel).find('option').length) {
540            $(sel).remove();
541        }
542        else {
543            $(sel).CreateMultiCheckBox({ width: '230px', defaultText : $(sel).data('label'), height:'250px' });
544            $(sel).change(multicheckchangeevent);
545        }
546    });
547});
548
549/* Put your JS here. */
550
551/* Put your JS here. */
552
553/* Put your JS here. */
554
555/* Put your JS here. */
556
557/* Put your JS here. */
558
559/* Put your JS here. */
560
561/* Put your JS here. */
562
563/* Put your JS here. */
564
565
566/* Put your JS here. */
567// (function($) {
568//     $(document).ready(function() {
569//         var maxHeight = 0;
570//         $('.mod_article .imagebox').each(function() {
571//             if($(this).find('.imagebox-container').height() > maxHeight) {
572//                 maxHeight = $(this).find('.imagebox-container').height();
573//             }
574//         });
575//         $('.mod_article .imagebox').height(maxHeight);
576//     });
577// })(jQuery);
578
579/* Put your JS here. */
580
581/* Put your JS here. */
582// [1] click events + scrolling for ce_ixelgen_content_sticky navigation 
583function addContentStickyEvents() {
584	const allLinks = document.querySelectorAll('.nav-link[href*="#"]');
585    allLinks.forEach(link => {
586        link.addEventListener('click', e => {
587            e.preventDefault();
588
589            const hash = link.getAttribute('href').split('#')[1];
590            const target = hash ? document.querySelector(`#${hash}`) : null;
591
592            if (!target) {
593                console.warn('Target #', hash, 'not found');
594                return;
595            }
596
597            allLinks.forEach(l => l.classList.remove('active'));
598            link.classList.add('active');
599
600			var navHeight = document.querySelector(".ce_body_top").offsetHeight || 0; // standard nav height
601			navHeight += document.querySelector('.content_sticky').offsetHeight; // sticky nav height
602			navHeight += 30; // extra space
603
604			// position relative to viewport
605			// eg target above current position: position<0, so add current position (scrollY)
606            const targetPosition = target.getBoundingClientRect().top + window.scrollY - navHeight;
607
608            window.scrollTo({
609                top: targetPosition,
610                behavior: 'smooth' 
611            });
612        });
613    });
614}
615
616// [2] Main
617// init events on nav-links
618// update navlinks on scroll
619// make navigation sticky
620document.addEventListener("DOMContentLoaded", () => {
621	history.scrollRestoration = 'manual';
622	
623	// init
624	const contentNavs = document.querySelectorAll(".ce_ixelgen_onepage_navigation.content_nav");
625	if(!contentNavs)return;
626
627	// add events on nav-links
628	addContentStickyEvents();
629
630	// navigation position and timeline
631    window.setTimeout(() => {
632		const footer = document.querySelector("footer");
633		const headerWrapper = document.querySelector(".body-top-header"); // without sticky
634		//const headerWrapper = document.querySelector(".ce_body_top");
635		const viewportHeight = Math.max(document.documentElement.clientHeight || window.innerHeight);
636		const gutter = 16;
637
638		let lastScrollTop = 0; // Store last scroll position
639
640		// Cache window and document dimensions
641		let windowHeight = window.innerHeight;
642		let documentHeight = document.documentElement.scrollHeight;
643
644		
645		const updateDimensions = () => {
646			windowHeight = window.innerHeight;
647			documentHeight = document.documentElement.scrollHeight;
648		};
649
650		const getHeaderOffset = () => {
651            // .ce_body_top.clone.active
652            return headerWrapper.offsetHeight;
653		};
654
655		window.addEventListener("resize", updateDimensions, { passive: true });
656
657		const isInViewport = (element, offset = 0) => {
658			const rect = element.getBoundingClientRect();
659			return rect.top >= -offset && rect.bottom <= windowHeight + offset;
660		};
661
662		contentNavs.forEach((contentNav) => {
663			const timeline = contentNav.querySelector(".timeline");
664			let isSticky = false;
665
666			// make active link visible by moving it in viewport (mobile!)
667			const scrollIntoViewHorizontally = (link) => {
668				const overflowContainer = contentNav.querySelector("nav");
669				const linkOffsetRight = link.offsetLeft + link.offsetWidth;
670				const containerScrollRight = overflowContainer.scrollLeft + overflowContainer.offsetWidth;
671
672				if (overflowContainer.scrollLeft > link.offsetLeft) {
673					overflowContainer.scrollLeft = link.offsetLeft - gutter;
674				} else if (containerScrollRight < linkOffsetRight) {
675					overflowContainer.scrollLeft += linkOffsetRight - containerScrollRight;
676				}
677			};
678
679			// update function
680			const updateActiveStates = () => {
681				const scrollY = window.pageYOffset;
682				const headerOffset = getHeaderOffset(); 
683                const parentOffset = headerOffset + document.getElementById('header').offsetHeight;
684			
685				if (scrollY >= (parentOffset-headerOffset)) {
686					contentNav.classList.add("sticky-content-nav");
687					contentNav.style.top = `${headerOffset}px`;    
688				} else if (scrollY < parentOffset) {
689					contentNav.classList.remove("sticky-content-nav");
690				}
691
692				// Total scrollable height
693				let scrollableHeight = documentHeight - windowHeight;
694				// Timeline width
695				timeline.style.width = `${(scrollY / scrollableHeight) * 100.
6956}%`;
696
697				// make current link active
698				const allHeadlines = document.querySelectorAll('h2.headline_extended');
699				var latestHl = false;
700				allHeadlines.forEach(hl => {
701					if(!latestHl && isInViewport(hl, 100)) {
702						latestHl = hl;
703					}
704				});
705				if(latestHl.parentElement) {
706					const hitLinks = document.querySelectorAll('.nav-link[href*="#'+latestHl.parentElement.id+'"]');
707					const allLinks = document.querySelectorAll('.nav-link[href*="#"]');
708    				hitLinks.forEach(link => {
709						allLinks.forEach(l => l.classList.remove('active'));
710						link.classList.add('active');
711						scrollIntoViewHorizontally(link);
712					});					
713				}
714
715				// set timeline = fullwidth, if footer is in view
716				if (footer && isInViewport(footer, 100)) {
717					timeline.style.width = "100%";
718				}
719			};
720
721			let ticking = false;
722			const onScrollOrResize = () => {
723				if (!ticking) {
724					window.requestAnimationFrame(() => {
725						updateActiveStates();
726						ticking = false;
727					});
728					ticking = true;
729				}
730			};
731
732			window.addEventListener("scroll", onScrollOrResize, { passive: true });
733			window.addEventListener("resize", onScrollOrResize, { passive: true });
734
735			updateActiveStates();
736		});
737	}, 600);
738});
739/* Put your JS here. */
740
741/* Put your JS here. */
742
743/* Put your JS here. */
744
745/* Put your JS here. */
746
747(function($) {
748    $(document).ready(function(){
749        $lightboxWidth = (Foundation.MediaQuery.atLeast('medium') ? '60%' : '100%');
750        $lightboxHeight = (Foundation.MediaQuery.atLeast('medium') ? '90%' : '100%');
751        $('.reference-lightbox').each(function() {
752            $(this).find('a').click(function(event) {
753                $(this).colorbox({
754                    inline: true
755                    ,href: $(this).find('.' + $(this).attr('data-link'))
756                    ,width: $lightboxWidth
757                    ,height: $lightboxHeight
758                    ,className: 'colorbox-gallery'
759                    ,onLoad: function(){
760                        $('body').addClass('no-scroll');
761                    }
762                    ,onComplete: function(){
763                        // select first image for main container
764                        if(!$('.colorbox-gallery .main-image-container img').length) {
765                            $('.colorbox-gallery .main-image-container .image_container').prepend('<img src="'+$('.colorbox-gallery').find('.thumbnail_1').attr('data-origin')+'">');
766                            $('.colorbox-gallery').find('.thumbnail_1').addClass('selected');
767                        }
768                        // change images by click
769                        $('.colorbox-gallery').find('.thumbnails-container img').each(function() {
770                            $(this).click(function(){
771                                $('img').removeClass('selected');
772                                $(this).addClass('selected');
773                                $('.colorbox-gallery .main-image-container img').attr('src', $(this).attr('data-origin'));
774                            });
775                        });
776                    }
777                    ,onClosed: function(){
778                        $('body').removeClass('no-scroll');
779                    }
780                });
781            });
782        });
783    });
784})(jQuery);
785
786/* Put your JS here. */
787
788/* Put your JS here. */
789
790/* Put your JS here. */
791
792/* Put your JS here. */
793
794/* Put your JS here. */
795
796/* Put your JS here. */
797
798
799/* Put your JS here. */
800
801
802/* Put your JS here. */
803
804/* Put your JS here. */
805
806/* Put your JS here. */
807
808(function webpackUniversalModuleDefinition(root, factory) {
809	if(typeof exports === 'object' && typeof module === 'object')
810		module.exports = factory(require("jquery"));
811	else if(typeof define === 'function' && define.amd)
812		define(["jquery"], factory);
813	else {
814		var a = typeof exports === 'object' ? factory(require("jquery")) : factory(root["jQuery"]);
815		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
816	}
817})(window, function(__WEBPACK_EXTERNAL_MODULE_jquery__) {
818return /******/ (function(modules) { // webpackBootstrap
819/******/ 	// The module cache
820/******/ 	var installedModules = {};
821/******/
822/******/ 	// The require function
823/******/ 	function __webpack_require__(moduleId) {
824/******/
825/******/ 		// Check if module is in cache
826/******/ 		if(installedModules[moduleId]) {
827/******/ 			return installedModules[moduleId].exports;
828/******/ 		}
829/******/ 		// Create a new module (and put it into the cache)
830/******/ 		var module = installedModules[moduleId] = {
831/******/ 			i: moduleId,
832/******/ 			l: false,
833/******/ 			exports: {}
834/******/ 		};
835/******/
836/******/ 		// Execute the module function
837/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
838/******/
839/******/ 		// Flag the module as loaded
vendor: 2,822 bytes, lines 840-905
840/******/ 		module.l = true;
841/******/
842/******/ 		// Return the exports of the module
843/******/ 		return module.exports;
844/******/ 	}
845/******/
846/******/
847/******/ 	// expose the modules object (__webpack_modules__)
848/******/ 	__webpack_require__.m = modules;
849/******/
850/******/ 	// expose the module cache
851/******/ 	__webpack_require__.c = installedModules;
852/******/
853/******/ 	// define getter function for harmony exports
854/******/ 	__webpack_require__.d = function(exports, name, getter) {
855/******/ 		if(!__webpack_require__.o(exports, name)) {
856/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
857/******/ 		}
858/******/ 	};
859/******/
860/******/ 	// define __esModule on exports
861/******/ 	__webpack_require__.r = function(exports) {
862/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
863/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
864/******/ 		}
865/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
866/******/ 	};
867/******/
868/******/ 	// create a fake namespace object
869/******/ 	// mode & 1: value is a module id, require it
870/******/ 	// mode & 2: merge all properties of value into the ns
871/******/ 	// mode & 4: return value when already ns object
872/******/ 	// mode & 8|1: behave like require
873/******/ 	__webpack_require__.t = function(value, mode) {
874/******/ 		if(mode & 1) value = __webpack_require__(value);
875/******/ 		if(mode & 8) return value;
876/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
877/******/ 		var ns = Object.create(null);
878/******/ 		__webpack_require__.r(ns);
879/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
880/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
881/******/ 		return ns;
882/******/ 	};
883/******/
884/******/ 	// getDefaultExport function for compatibility with non-harmony modules
885/******/ 	__webpack_require__.n = function(module) {
886/******/ 		var getter = module && module.__esModule ?
887/******/ 			function getDefault() { return module['default']; } :
888/******/ 			function getModuleExports() { return module; };
889/******/ 		__webpack_require__.d(getter, 'a', getter);
890/******/ 		return getter;
891/******/ 	};
892/******/
893/******/ 	// Object.prototype.hasOwnProperty.call
894/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
895/******/
896/******/ 	// __webpack_public_path__
897/******/ 	__webpack_require__.p = "";
898/******/
899/******/
900/******/ 	// Load entry module and return exports
901/******/ 	return __webpack_require__(__webpack_require__.s = 0);
902/******/ })
903/************************************************************************/
904/******/ ({
905
906/***/ "./js/entries/foundation.js":
907/*!**********************************!*\
908  !*** ./js/entries/foundation.js ***!
909  \**********************************/
910/*! exports provided: Foundation, CoreUtils, Box, onImagesLoaded, Keyboard, MediaQuery, Motion, Nest, Timer, Touch, Triggers, Abide, Accordion, AccordionMenu, Drilldown, Dropdown, DropdownMenu, Equalizer, Interchange, Magellan, OffCanvas, Orbit, ResponsiveMenu, ResponsiveToggle, Reveal, Slider, SmoothScroll, Sticky, Tabs, Toggler, Tooltip, ResponsiveAccordionTabs, default */
911/***/ (function(module, __webpack_exports__, __webpack_require__) {
912
913"use strict";
914__webpack_require__.r(__webpack_exports__);
915/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
916/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
917/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../foundation.core */ "./js/foundation.core.js");
918/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"]; });
919
920/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../foundation.core.utils */ "./js/foundation.core.utils.js");
921/* harmony reexport (module object) */ __webpack_require__.d(__webpack_exports__, "CoreUtils", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__; });
922/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../foundation.util.box */ "./js/foundation.util.box.js");
923/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Box", function() { return _foundation_util_box__WEBPACK_IMPORTED_MODULE_3__["Bo
923x"]; });
924
925/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../foundation.util.imageLoader */ "./js/foundation.util.imageLoader.js");
926/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onImagesLoaded", function() { return _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_4__["onImagesLoaded"]; });
927
928/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
929/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Keyboard", function() { return _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_5__["Keyboard"]; });
930
931/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
932/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MediaQuery", function() { return _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_6__["MediaQuery"]; });
933
934/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../foundation.util.motion */ "./js/foundation.util.motion.js");
935/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Motion", function() { return _foundation_util_motion__WEBPACK_IMPORTED_MODULE_7__["Motion"]; });
936
937/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../foundation.util.nest */ "./js/foundation.util.nest.js");
938/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Nest", function() { return _foundation_util_nest__WEBPACK_IMPORTED_MODULE_8__["Nest"]; });
939
940/* harmony import */ var _foundation_util_timer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../foundation.util.timer */ "./js/foundation.util.timer.js");
941/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return _foundation_util_timer__WEBPACK_IMPORTED_MODULE_9__["Timer"]; });
942
943/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../foundation.util.touch */ "./js/foundation.util.touch.js");
944/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Touch", function() { return _foundation_util_touch__WEBPACK_IMPORTED_MODULE_10__["Touch"]; });
945
946/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../foundation.util.triggers */ "./js/foundation.util.triggers.js");
947/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_11__["Triggers"]; });
948
949/* harmony import */ var _foundation_abide__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../foundation.abide */ "./js/foundation.abide.js");
950/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Abide", function() { return _foundation_abide__WEBPACK_IMPORTED_MODULE_12__["Abide"]; });
951
952/* harmony import */ var _foundation_accordion__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../foundation.accordion */ "./js/foundation.accordion.js");
953/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Accordion", function() { return _foundation_accordion__WEBPACK_IMPORTED_MODULE_13__["Accordion"]; });
954
955/* harmony import */ var _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../foundation.accordionMenu */ "./js/foundation.accordionMenu.js");
956/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AccordionMenu", function() { return _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_14__["AccordionMenu"]; });
957
958/* harmony import */ var _foundation_drilldown__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../foundation.drilldown */ "./js/foundation.drilldown.js");
959/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Drilldown", function() { return _foundation_drilldown__WEBPACK_IMPORTED_MODULE_15__["Drilldown"]; });
960
961/* harmony import */ var _foundation_dropdown__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../foundation.dropdown */ "./js/foundation.dropdown.js");
962/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Dropdown", function() { return _foundation_dropdown__WEBPACK_IMPORTED_MODULE_16__["Dropdown"]; });
963
964/* harmony import */ var _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../foundation.dropdownMenu */ "./js/foundation.dropdownMenu.js");
965/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DropdownMenu", function() { return _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_17__["DropdownMenu"]; });
966
967/* harmony import */ var _foundation_equalizer__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../foundation.equalizer */ "./js/foundation.equalizer.js");
968/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Equalizer", function() { return _foundation_equalizer__WEBPACK_IMPORTED_MODULE_18__["Equalizer"]; });
969
970/* harmony import */ var _foundation_interchange__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../foundation.interchange */ "./js/foundation.interchange.js");
971/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Interchange", function() { return _foundation_interchange__WEBPACK_IMPORTED_MODULE_19__["Interchange"]; });
972
973/* harmony import */ var _foundation_magellan__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../foundation.magellan */ "./js/foundation.magellan.js");
974/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Magellan", function() { return _foundation_magellan__WEBPACK_IMPORTED_MODULE_20__["Magellan"]; });
975
976/* harmony import */ var _foundation_offcanvas__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../foundation.offcanvas */ "./js/foundation.offcanvas.js");
977/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OffCanvas", function() { return _foundation_offcanvas__WEBPACK_IMPORTED_MODULE_21__["OffCanvas"]; });
978
979/* harmony import */ var _foundation_orbit__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../foundation.orbit */ "./js/foundation.orbit.js");
980/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Orb
980it", function() { return _foundation_orbit__WEBPACK_IMPORTED_MODULE_22__["Orbit"]; });
981
982/* harmony import */ var _foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../foundation.responsiveMenu */ "./js/foundation.responsiveMenu.js");
983/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResponsiveMenu", function() { return _foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_23__["ResponsiveMenu"]; });
984
985/* harmony import */ var _foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../foundation.responsiveToggle */ "./js/foundation.responsiveToggle.js");
986/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResponsiveToggle", function() { return _foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_24__["ResponsiveToggle"]; });
987
988/* harmony import */ var _foundation_reveal__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../foundation.reveal */ "./js/foundation.reveal.js");
989/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Reveal", function() { return _foundation_reveal__WEBPACK_IMPORTED_MODULE_25__["Reveal"]; });
990
991/* harmony import */ var _foundation_slider__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../foundation.slider */ "./js/foundation.slider.js");
992/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Slider", function() { return _foundation_slider__WEBPACK_IMPORTED_MODULE_26__["Slider"]; });
993
994/* harmony import */ var _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../foundation.smoothScroll */ "./js/foundation.smoothScroll.js");
995/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SmoothScroll", function() { return _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_27__["SmoothScroll"]; });
996
997/* harmony import */ var _foundation_sticky__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../foundation.sticky */ "./js/foundation.sticky.js");
998/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Sticky", function() { return _foundation_sticky__WEBPACK_IMPORTED_MODULE_28__["Sticky"]; });
999
1000/* harmony import */ var _foundation_tabs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../foundation.tabs */ "./js/foundation.tabs.js");
1001/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Tabs", function() { return _foundation_tabs__WEBPACK_IMPORTED_MODULE_29__["Tabs"]; });
1002
1003/* harmony import */ var _foundation_toggler__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../foundation.toggler */ "./js/foundation.toggler.js");
1004/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Toggler", function() { return _foundation_toggler__WEBPACK_IMPORTED_MODULE_30__["Toggler"]; });
1005
1006/* harmony import */ var _foundation_tooltip__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../foundation.tooltip */ "./js/foundation.tooltip.js");
1007/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Tooltip", function() { return _foundation_tooltip__WEBPACK_IMPORTED_MODULE_31__["Tooltip"]; });
1008
1009/* harmony import */ var _foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../foundation.responsiveAccordionTabs */ "./js/foundation.responsiveAccordionTabs.js");
1010/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResponsiveAccordionTabs", function() { return _foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_32__["ResponsiveAccordionTabs"]; });
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].addToJquery(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); // Add Foundation Utils to Foundation global namespace for backwards
1046// compatibility.
1047
1048_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].rtl = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["rtl"];
1049_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].GetYoDigits = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"];
1050_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].transitionend = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["transitionend"];
1051_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].RegExpEscape = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["RegExpEscape"];
1052_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].onLoad = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["onLoad"];
1053_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].Box = _foundation_util_box__WEBPACK_IMPORTED_MODULE_3__["Bo
1053x"];
1054_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].onImagesLoaded = _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_4__["onImagesLoaded"];
1055_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].Keyboard = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_5__["Keyboard"];
1056_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].MediaQuery = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_6__["MediaQuery"];
1057_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].Motion = _foundation_util_motion__WEBPACK_IMPORTED_MODULE_7__["Motion"];
1058_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].Move = _foundation_util_motion__WEBPACK_IMPORTED_MODULE_7__["Move"];
1059_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].Nest = _foundation_util_nest__WEBPACK_IMPORTED_MODULE_8__["Nest"];
1060_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].Timer = _foundation_util_timer__WEBPACK_IMPORTED_MODULE_9__["Timer"]; // Touch and Triggers previously were almost purely sede effect driven,
1061// so no need to add it to Foundation, just init them.
1062
1063_foundation_util_touch__WEBPACK_IMPORTED_MODULE_10__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
1064_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_11__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a, _foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"]);
1065
1066_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_6__["MediaQuery"]._init();
1067
1068_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_abide__WEBPACK_IMPORTED_MODULE_12__["Abide"], 'Abide');
1069_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_accordion__WEBPACK_IMPORTED_MODULE_13__["Accordion"], 'Accordion');
1070_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_14__["AccordionMenu"], 'AccordionMenu');
1071_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_drilldown__WEBPACK_IMPORTED_MODULE_15__["Drilldown"], 'Drilldown');
1072_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_dropdown__WEBPACK_IMPORTED_MODULE_16__["Dropdown"], 'Dropdown');
1073_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_17__["DropdownMenu"], 'DropdownMenu');
1074_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_equalizer__WEBPACK_IMPORTED_MODULE_18__["Equalizer"], 'Equalizer');
1075_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_interchange__WEBPACK_IMPORTED_MODULE_19__["Interchange"], 'Interchange');
1076_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_magellan__WEBPACK_IMPORTED_MODULE_20__["Magellan"], 'Magellan');
1077_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_offcanvas__WEBPACK_IMPORTED_MODULE_21__["OffCanvas"], 'OffCanvas');
1078_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_orbit__WEBPACK_IMPORTED_MODULE_22__["Orbit"], 'Orbit');
1079_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_23__["ResponsiveMenu"], 'ResponsiveMenu');
1080_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_24__["ResponsiveToggle"], 'ResponsiveToggle');
1081_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_reveal__WEBPACK_IMPORTED_MODULE_25__["Reveal"], 'Reveal');
1082_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_slider__WEBPACK_IMPORTED_MODULE_26__["Slider"], 'Slider');
1083_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_27__["SmoothScroll"], 'SmoothScroll');
1084_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_sticky__WEBPACK_IMPORTED_MODULE_28__["Sticky"], 'Sticky');
1085_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_tabs__WEBPACK_IMPORTED_MODULE_29__["Tabs"], 'Tabs');
1086_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_toggler__WEBPACK_IMPORTED_MODULE_30__["Toggler"], 'Toggler');
1087_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_tooltip__WEBPACK_IMPORTED_MODULE_31__["Tooltip"], 'Tooltip');
1088_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_32__["ResponsiveAccordionTabs"], 'ResponsiveAccordionTabs');
1089
1090/* harmony default export */ __webpack_exports__["default"] = (_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"]);
1091
1092/***/ }),
1093
vendor: 4,462 bytes, lines 1094-1178
1094/***/ "./js/foundation.abide.js":
1095/*!********************************!*\
1096  !*** ./js/foundation.abide.js ***!
1097  \********************************/
1098/*! exports provided: Abide */
1099/***/ (function(module, __webpack_exports__, __webpack_require__) {
1100
1101"use strict";
1102__webpack_require__.r(__webpack_exports__);
1103/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Abide", function() { return Abide; });
1104/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
1105/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
1106/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
1107/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
1108
1109
1110function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1111
1112function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1113
1114function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
1115
1116function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
1117
1118function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
1119
1120function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
1121
1122function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
1123
1124function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
1125
1126function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
1127
1128
1129
1130
1131/**
1132 * Abide module.
1133 * @module foundation.abide
1134 */
1135
1136var Abide =
1137/*#__PURE__*/
1138function (_Plugin) {
1139  _inherits(Abide, _Plugin);
1140
1141  function Abide() {
1142    _classCallCheck(this, Abide);
1143
1144    return _possibleConstructorReturn(this, _getPrototypeOf(Abide).apply(this, arguments));
1145  }
1146
1147  _createClass(Abide, [{
1148    key: "_setup",
1149
1150    /**
1151     * Creates a new instance of Abide.
1152     * @class
1153     * @name Abide
1154     * @fires Abide#init
1155     * @param {Object} element - jQuery object to add the trigger to.
1156     * @param {Object} options - Overrides to the default plugin settings.
1157     */
1158    value: function _setup(element) {
1159      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1160      this.$element = element;
1161      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(true, {}, Abide.defaults, this.$element.data(), options);
1162      this.isEnabled = true;
1163      this.formnovalidate = null;
1164      this.className = 'Abide'; // ie9 back compat
1165
1166      this._init();
1167    }
1168    /**
1169     * Initializes the Abide plugin and calls functions to get Abide functioning on load.
1170     * @private
1171     */
1172
1173  }, {
1174    key: "_init",
1175    value: function _init() {
1176      var _this2 = this;
1177
1178      this.$inputs = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.merge
vendor: 29,410 bytes, lines 1178-2024
1178( // Consider as input to validate:
1179      this.$element.find('input').not('[type="submit"]'), // * all input fields expect submit
1180      this.$element.find('textarea, select') // * all textareas and select fields
1181      );
1182      this.$submits = this.$element.find('[type="submit"]');
1183      var $globalErrors = this.$element.find('[data-abide-error]'); // Add a11y attributes to all fields
1184
1185      if (this.options.a11yAttributes) {
1186        this.$inputs.each(function (i, input) {
1187          return _this2.addA11yAttributes(jquery__WEBPACK_IMPORTED_MODULE_0___default()(input));
1188        });
1189        $globalErrors.each(function (i, error) {
1190          return _this2.addGlobalErrorA11yAttributes(jquery__WEBPACK_IMPORTED_MODULE_0___default()(error));
1191        });
1192      }
1193
1194      this._events();
1195    }
1196    /**
1197     * Initializes events for Abide.
1198     * @private
1199     */
1200
1201  }, {
1202    key: "_events",
1203    value: function _events() {
1204      var _this3 = this;
1205
1206      this.$element.off('.abide').on('reset.zf.abide', function () {
1207        _this3.resetForm();
1208      }).on('submit.zf.abide', function () {
1209        return _this3.validateForm();
1210      });
1211      this.$submits.off('click.zf.abide keydown.zf.abide').on('click.zf.abide keydown.zf.abide', function (e) {
1212        if (!e.key || e.key === ' ' || e.key === 'Enter') {
1213          e.preventDefault();
1214          _this3.formnovalidate = e.target.getAttribute('formnovalidate') !== null;
1215
1216          _this3.$element.submit();
1217        }
1218      });
1219
1220      if (this.options.validateOn === 'fieldChange') {
1221        this.$inputs.off('change.zf.abide').on('change.zf.abide', function (e) {
1222          _this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));
1223        });
1224      }
1225
1226      if (this.options.liveValidate) {
1227        this.$inputs.off('input.zf.abide').on('input.zf.abide', function (e) {
1228          _this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));
1229        });
1230      }
1231
1232      if (this.options.validateOnBlur) {
1233        this.$inputs.off('blur.zf.abide').on('blur.zf.abide', function (e) {
1234          _this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));
1235        });
1236      }
1237    }
1238    /**
1239     * Calls necessary functions to update Abide upon DOM change
1240     * @private
1241     */
1242
1243  }, {
1244    key: "_reflow",
1245    value: function _reflow() {
1246      this._init();
1247    }
1248    /**
1249     * Checks whether the submitted form should be validated or not, consodering formnovalidate and isEnabled
1250     * @returns {Boolean}
1251     * @private
1252     */
1253
1254  }, {
1255    key: "_validationIsDisabled",
1256    value: function _validationIsDisabled() {
1257      if (this.isEnabled === false) {
1258        // whole validation disabled
1259        return true;
1260      } else if (typeof this.formnovalidate === 'boolean') {
1261        // triggered by $submit
1262        return this.formnovalidate;
1263      } // triggered by Enter in non-submit input
1264
1265
1266      return this.$submits.length ? this.$submits[0].getAttribute('formnovalidate') !== null : false;
1267    }
1268    /**
1269     * Enables the whole validation
1270     */
1271
1272  }, {
1273    key: "enableValidation",
1274    value: function enableValidation() {
1275      this.isEnabled = true;
1276    }
1277    /**
1278     * Disables the whole validation
1279     */
1280
1281  }, {
1282    key: "disableValidation",
1283    value: function disableValidation() {
1284      this.isEnabled = false;
1285    }
1286    /**
1287     * Checks whether or not a form element has the required attribute and if it's checked or not
1288     * @param {Object} element - jQuery object to check for required attribute
1289     * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
1290     */
1291
1292  }, {
1293    key: "requiredCheck",
1294    value: function requiredCheck($el) {
1295      if (!$el.attr('required')) return true;
1296      var isGood = true;
1297
1298      switch ($el[0].type) {
1299        case 'checkbox':
1300          isGood = $el[0].checked;
1301          break;
1302
1303        case 'select':
1304        case 'select-one':
1305        case 'select-multiple':
1306          var opt = $el.find('option:selected');
1307          if (!opt.length || !opt.val()) isGood = false;
1308          break;
1309
1310        default:
1311          if (!$el.val() || !$el.val().length) isGood = false;
1312      }
1313
1314      return isGood;
1315    }
1316    /**
1317     * Get:
1318     * - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order:
1319     *   1. The element's direct sibling('s).
1320     *   2. The element's parent's children.
1321     * - Element(s) with the attribute `[data-form-error-for]` set with the element's id.
1322     *
1323     * This allows for multiple form errors per input, though if none are found, no form errors will be shown.
1324     *
1325     * @param {Object} $el - jQuery object to use as reference to find the form error selector.
1326     * @param {String[]} [failedValidators] - List of failed validators.
1327     * @returns {Object} jQuery object with the selector.
1328     */
1329
1330  }, {
1331    key: "findFormError",
1332    value: function findFormError($el, failedValidators) {
1333      var _this4 = this;
1334
1335      var id = $el.length ? $el[0].id : '';
1336      var $error = $el.siblings(this.options.formErrorSelector);
1337
1338      if (!$error.length) {
1339        $error = $el.parent().find(this.options.formErrorSelector);
1340      }
1341
1342      if (id) {
1343        $error = $error.add(this.$element.find("[data-form-error-for=\"".concat(id, "\"]")));
1344      }
1345
1346      if (!!failedValidators) {
1347        $error = $error.not('[data-form-error-on]');
1348        failedValidators.forEach(function (v) {
1349          $error = $error.add($el.siblings("[data-form-error-on=\"".concat(v, "\"]")));
1350          $error = $error.add(_this4.$element.find("[data-form-error-for=\"".concat(id, "\"][data-form-error-on=\"").concat(v, "\"]")));
1351        });
1352      }
1353
1354      return $error;
1355    }
1356    /**
1357     * Get the first element in this order:
1358     * 2. The <label> with the attribute `[for="someInputId"]`
1359     * 3. The `.closest()` <label>
1360     *
1361     * @param {Object} $el - jQuery object to check for required attribute
1362     * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
1363     */
1364
1365  }, {
1366    key: "findLabel",
1367    value: function findLabel($el) {
1368      var id = $el[0].id;
1369      var $label = this.$element.find("label[for=\"".concat(id, "\"]"));
1370
1371      if (!$label.length) {
1372        return $el.closest('label');
1373      }
1374
1375      return $label;
1376    }
1377    /**
1378     * Get the set of labels associated with a set of radio els in this order
1379     * 2. The <label> with the attribute `[for="someInputId"]`
1380     * 3. The `.closest()` <label>
1381     *
1382     * @param {Object} $el - jQuery object to check for required attribute
1383     * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
1384     */
1385
1386  }, {
1387    key: "findRadioLabels",
1388    value: function findRadioLabels($els) {
1389      var _this5 = this;
1390
1391      var labels = $els.map(function (i, el) {
1392        var id = el.id;
1393
1394        var $label = _this5.$element.find("label[for=\"".concat(id, "\"]"));
1395
1396        if (!$label.length) {
1397          $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).closest('label');
1398        }
1399
1400        return $label[0];
1401      });
1402      return jquery__WEBPACK_IMPORTED_MODULE_0___default()(labels);
1403    }
1404    /**
1405     * Get the set of labels associated with a set of checkbox els in this order
1406     * 2. The <label> with the attribute `[for="someInputId"]`
1407     * 3. The `.closest()` <label>
1408     *
1409     * @param {Object} $el - jQuery object to check for required attribute
1410     * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
1411     */
1412
1413  }, {
1414    key: "findCheckboxLabels",
1415    value: function findCheckboxLabels($els) {
1416      var _this6 = this;
1417
1418      var labels = $els.map(function (i, el) {
1419        var id = el.id;
1420
1421        var $label = _this6.$element.find("label[for=\"".concat(id, "\"]"));
1422
1423        if (!$label.length) {
1424          $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).closest('label');
1425        }
1426
1427        return $label[0];
1428      });
1429      return jquery__WEBPACK_IMPORTED_MODULE_0___default()(labels);
1430    }
1431    /**
1432     * Adds the CSS error class as specified by the Abide settings to the label, input, and the form
1433     * @param {Object} $el - jQuery object to add the class to
1434     * @param {String[]} [failedValidators] - List of failed validators.
1435     */
1436
1437  }, {
1438    key: "addErrorClasses",
1439    value: function addErrorClasses($el, failedValidators) {
1440      var $label = this.findLabel($el);
1441      var $formError = this.findFormError($el, failedValidators);
1442
1443      if ($label.length) {
1444        $label.addClass(this.options.labelErrorClass);
1445      }
1446
1447      if ($formError.length) {
1448        $formError.addClass(this.options.formErrorClass);
1449      }
1450
1451      $el.addClass(this.options.inputErrorClass).attr({
1452        'data-invalid': '',
1453        'aria-invalid': true
1454      });
1455    }
1456    /**
1457     * Adds [for] and [role=alert] attributes to all form error targetting $el,
1458     * and [aria-describedby] attribute to $el toward the first form error.
1459     * @param {Object} $el - jQuery object
1460     */
1461
1462  }, {
1463    key: "addA11yAttributes",
1464    value: function addA11yAttributes($el) {
1465      var $errors = this.findFormError($el);
1466      var $labels = $errors.filter('label');
1467      var $error = $errors.first();
1468      if (!$errors.length) return; // Set [aria-describedby] on the input toward the first form error if it is not set
1469
1470      if (typeof $el.attr('aria-describedby') === 'undefined') {
1471        // Get the first error ID or create one
1472        var errorId = $error.attr('id');
1473
1474        if (typeof errorId === 'undefined') {
1475          errorId = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'abide-error');
1476          $error.attr('id', errorId);
1477        }
1478
1479        $el.attr('aria-describedby', errorId);
1480      }
1481
1482      if ($labels.filter('[for]').length < $labels.length) {
1483        // Get the input ID or create one
1484        var elemId = $el.attr('id');
1485
1486        if (typeof elemId === 'undefined') {
1487          elemId = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'abide-input');
1488          $el.attr('id', elemId);
1489        } // For each label targeting $el, set [for] if it is not set.
1490
1491
1492        $labels.each(function (i, label) {
1493          var $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(label);
1494          if (typeof $label.attr('for') === 'undefined') $label.attr('for', elemId);
1495        });
1496      } // For each error targeting $el, set [role=alert] if it is not set.
1497
1498
1499      $errors.each(function (i, label) {
1500        var $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(label);
1501        if (typeof $label.attr('role') === 'undefined') $label.attr('role', 'alert');
1502      }).end();
1503    }
1504    /**
1505     * Adds [aria-live] attribute to the given global form error $el.
1506     * @param {Object} $el - jQuery object to add the attribute to
1507     */
1508
1509  }, {
1510    key: "addGlobalErrorA11yAttributes",
1511    value: function addGlobalErrorA11yAttributes($el) {
1512      if (typeof $el.attr('aria-live') === 'undefined') $el.attr('aria-live', this.options.a11yErrorLevel);
1513    }
1514    /**
1515     * Remove CSS error classes etc from an entire radio button group
1516     * @param {String} groupName - A string that specifies the name of a radio button group
1517     *
1518     */
1519
1520  }, {
1521    key: "removeRadioErrorClasses",
1522    value: function removeRadioErrorClasses(groupName) {
1523      var $els = this.$element.find(":radio[name=\"".concat(groupName, "\"]"));
1524      var $labels = this.findRadioLabels($els);
1525      var $formErrors = this.findFormError($els);
1526
1527      if ($labels.length) {
1528        $labels.removeClass(this.options.labelErrorClass);
1529      }
1530
1531      if ($formErrors.length) {
1532        $formErrors.removeClass(this.options.formErrorClass);
1533      }
1534
1535      $els.removeClass(this.options.inputErrorClass).attr({
1536        'data-invalid': null,
1537        'aria-invalid': null
1538      });
1539    }
1540    /**
1541     * Remove CSS error classes etc from an entire checkbox group
1542     * @param {String} groupName - A string that specifies the name of a checkbox group
1543     *
1544     */
1545
1546  }, {
1547    key: "removeCheckboxErrorClasses",
1548    value: function removeCheckboxErrorClasses(groupName) {
1549      var $els = this.$element.find(":checkbox[name=\"".concat(groupName, "\"]"));
1550      var $labels = this.findCheckboxLabels($els);
1551      var $formErrors = this.findFormError($els);
1552
1553      if ($labels.length) {
1554        $labels.removeClass(this.options.labelErrorClass);
1555      }
1556
1557      if ($formErrors.length) {
1558        $formErrors.removeClass(this.options.formErrorClass);
1559      }
1560
1561      $els.removeClass(this.options.inputErrorClass).attr({
1562        'data-invalid': null,
1563        'aria-invalid': null
1564      });
1565    }
1566    /**
1567     * Removes CSS error class as specified by the Abide settings from the label, input, and the form
1568     * @param {Object} $el - jQuery object to remove the class from
1569     */
1570
1571  }, {
1572    key: "removeErrorClasses",
1573    value: function removeErrorClasses($el) {
1574      // radios need to clear all of the els
1575      if ($el[0].type == 'radio') {
1576        return this.removeRadioErrorClasses($el.attr('name'));
1577      } // checkboxes need to clear all of the els
1578      else if ($el[0].type == 'checkbox') {
1579          return this.removeCheckboxErrorClasses($el.attr('name'));
1580        }
1581
1582      var $label = this.findLabel($el);
1583      var $formError = this.findFormError($el);
1584
1585      if ($label.length) {
1586        $label.removeClass(this.options.labelErrorClass);
1587      }
1588
1589      if ($formError.length) {
1590        $formError.removeClass(this.options.formErrorClass);
1591      }
1592
1593      $el.removeClass(this.options.inputErrorClass).attr({
1594        'data-invalid': null,
1595        'aria-invalid': null
1596      });
1597    }
1598    /**
1599     * Goes through a form to find inputs and proceeds to validate them in ways specific to their type.
1600     * Ignores inputs with data-abide-ignore, type="hidden" or disabled attributes set
1601     * @fires Abide#invalid
1602     * @fires Abide#valid
1603     * @param {Object} element - jQuery object to validate, should be an HTML input
1604     * @returns {Boolean} goodToGo - If the input is valid or not.
1605     */
1606
1607  }, {
1608    key: "validateInput",
1609    value: function validateInput($el) {
1610      var _this7 = this;
1611
1612      var clearRequire = this.requiredCheck($el),
1613          validator = $el.attr('data-validator'),
1614          failedValidators = [],
1615          manageErrorClasses = true; // skip validation if disabled
1616
1617      if (this._validationIsDisabled()) {
1618        return true;
1619      } // don't validate ignored inputs or hidden inputs or disabled inputs
1620
1621
1622      if ($el.is('[data-abide-ignore]') || $el.is('[type="hidden"]') || $el.is('[disabled]')) {
1623        return true;
1624      }
1625
1626      switch ($el[0].type) {
1627        case 'radio':
1628          this.validateRadio($el.attr('name')) || failedValidators.push('required');
1629          break;
1630
1631        case 'checkbox':
1632          this.validateCheckbox($el.attr('name')) || failedValidators.push('required'); // validateCheckbox() adds/removes error classes
1633
1634          manageErrorClasses = false;
1635          break;
1636
1637        case 'select':
1638        case 'select-one':
1639        case 'select-multiple':
1640          clearRequire || failedValidators.push('required');
1641          break;
1642
1643        default:
1644          clearRequire || failedValidators.push('required');
1645          this.validateText($el) || failedValidators.push('pattern');
1646      }
1647
1648      if (validator) {
1649        var required = $el.attr('required') ? true : false;
1650        validator.split(' ').forEach(function (v) {
1651          _this7.options.validators[v]($el, required, $el.parent()) || failedValidators.push(v);
1652        });
1653      }
1654
1655      if ($el.attr('data-equalto')) {
1656        this.options.validators.equalTo($el) || failedValidators.push('equalTo');
1657      }
1658
1659      var goodToGo = failedValidators.length === 0;
1660      var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';
1661
1662      if (goodToGo) {
1663        // Re-validate inputs that depend on this one with equalto
1664        var dependentElements = this.$element.find("[data-equalto=\"".concat($el.attr('id'), "\"]"));
1665
1666        if (dependentElements.length) {
1667          var _this = this;
1668
1669          dependentElements.each(function () {
1670            if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val()) {
1671              _this.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
1672            }
1673          });
1674        }
1675      }
1676
1677      if (manageErrorClasses) {
1678        this.removeErrorClasses($el);
1679
1680        if (!goodToGo) {
1681          this.addErrorClasses($el, failedValidators);
1682        }
1683      }
1684      /**
1685       * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`
1686       * Trigger includes the DOM element of the input.
1687       * @event Abide#valid
1688       * @event Abide#invalid
1689       */
1690
1691
1692      $el.trigger(message, [$el]);
1693      return goodToGo;
1694    }
1695    /**
1696     * Goes through a form and if there are any invalid inputs, it will display the form error element
1697     * @returns {Boolean} noError - true if no errors were detected...
1698     * @fires Abide#formvalid
1699     * @fires Abide#forminvalid
1700     */
1701
1702  }, {
1703    key: "validateForm",
1704    value: function validateForm() {
1705      var _this8 = this;
1706
1707      var acc = [];
1708
1709      var _this = this;
1710
1711      var checkboxGroupName; // Remember first form submission to prevent specific checkbox validation (more than one required) until form got initially submitted
1712
1713      if (!this.initialized) {
1714        this.initialized = true;
1715      } // skip validation if disabled
1716
1717
1718      if (this._validationIsDisabled()) {
1719        this.formnovalidate = null;
1720        return true;
1721      }
1722
1723      this.$inputs.each(function () {
1724        // Only use one checkbox per group since validateCheckbox() iterates over all associated checkboxes
1725        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)[0].type === 'checkbox') {
1726          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('name') === checkboxGroupName) return true;
1727          checkboxGroupName = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('name');
1728        }
1729
1730        acc.push(_this.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)));
1731      });
1732      var noError = acc.indexOf(false) === -1;
1733      this.$element.find('[data-abide-error]').each(function (i, elem) {
1734        var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elem); // Ensure a11y attributes are set
1735
1736        if (_this8.options.a11yAttributes) _this8.addGlobalErrorA11yAttributes($elem); // Show or hide the error
1737
1738        $elem.css('display', noError ? 'none' : 'block');
1739      });
1740      /**
1741       * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.
1742       * Trigger includes the element of the form.
1743       * @event Abide#formvalid
1744       * @event Abide#forminvalid
1745       */
1746
1747      this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);
1748      return noError;
1749    }
1750    /**
1751     * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.
1752     * @param {Object} $el - jQuery object to validate, should be a text input HTML element
1753     * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns
1754     * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified
1755     */
1756
1757  }, {
1758    key: "validateText",
1759    value: function validateText($el, pattern) {
1760      // A pattern can be passed to this function, or it will be infered from the input's "pattern" attribute, or it's "type" attribute
1761      pattern = pattern || $el.attr('data-pattern') || $el.attr('pattern') || $el.attr('type');
1762      var inputText = $el.val();
1763      var valid = true;
1764
1765      if (inputText.length) {
1766        // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp
1767        if (this.options.patterns.hasOwnProperty(pattern)) {
1768          valid = this.options.patterns[pattern].test(inputText);
1769        } // If the pattern name isn't also the type attribute of the field, then test it as a regexp
1770        else if (pattern !== $el.attr('type')) {
1771            valid = new RegExp(pattern).test(inputText);
1772          }
1773      }
1774
1775      return valid;
1776    }
1777    /**
1778     * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group.
1779     * @param {String} groupName - A string that specifies the name of a radio button group
1780     * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)
1781     */
1782
1783  }, {
1784    key: "validateRadio",
1785    value: function validateRadio(groupName) {
1786      // If at least one radio in the group has the `required` attribute, the group is considered required
1787      // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice
1788      var $group = this.$element.find(":radio[name=\"".concat(groupName, "\"]"));
1789      var valid = false,
1790          required = false; // For the group to be required, at least one radio needs to be required
1791
1792      $group.each(function (i, e) {
1793        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('required')) {
1794          required = true;
1795        }
1796      });
1797      if (!required) valid = true;
1798
1799      if (!valid) {
1800        // For the group to be valid, at least one radio needs to be checked
1801        $group.each(function (i, e) {
1802          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).prop('checked')) {
1803            valid = true;
1804          }
1805        });
1806      }
1807
1808      return valid;
1809    }
1810    /**
1811     * Determines whether or a not a checkbox input is valid based on whether or not it is required and checked. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all checkboxes in its group.
1812     * @param {String} groupName - A string that specifies the name of a checkbox group
1813     * @returns {Boolean} Boolean value depends on whether or not at least one checkbox input has been checked (if it's required)
1814     */
1815
1816  }, {
1817    key: "validateCheckbox",
1818    value: function validateCheckbox(groupName) {
1819      var _this9 = this;
1820
1821      // If at least one checkbox in the group has the `required` attribute, the group is considered required
1822      // Per W3C spec, all checkboxes in a group should have `required`, but we're being nice
1823      var $group = this.$element.find(":checkbox[name=\"".concat(groupName, "\"]"));
1824      var valid = false,
1825          required = false,
1826          minRequired = 1,
1827          checked = 0; // For the group to be required, at least one checkbox needs to be required
1828
1829      $group.each(function (i, e) {
1830        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('required')) {
1831          required = true;
1832        }
1833      });
1834      if (!required) valid = true;
1835
1836      if (!valid) {
1837        // Count checked checkboxes within the group
1838        // Use data-min-required if available (default: 1)
1839        $group.each(function (i, e) {
1840          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).prop('checked')) {
1841            checked++;
1842          }
1843
1844          if (typeof jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('data-min-required') !== 'undefined') {
1845            minRequired = parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('data-min-required'));
1846          }
1847        }); // For the group to be valid, the minRequired amount of checkboxes have to be checked
1848
1849        if (checked >= minRequired) {
1850          valid = true;
1851        }
1852      } // Skip validation if more than 1 checkbox have to be checked AND if the form hasn't got submitted yet (otherwise it will already show an error during the first fill in)
1853
1854
1855      if (this.initialized !== true && minRequired > 1) {
1856        return true;
1857      } // Refresh error class for all input
1858
1859
1860      $group.each(function (i, e) {
1861        if (!valid) {
1862          _this9.addErrorClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e), ['required']);
1863        } else {
1864          _this9.removeErrorClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e));
1865        }
1866      });
1867      return valid;
1868    }
1869    /**
1870     * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed.
1871     * @param {Object} $el - jQuery input element.
1872     * @param {String} validators - a string of function names matching functions in the Abide.options.validators object.
1873     * @param {Boolean} required - self explanatory?
1874     * @returns {Boolean} - true if validations passed.
1875     */
1876
1877  }, {
1878    key: "matchValidation",
1879    value: function matchValidation($el, validators, required) {
1880      var _this10 = this;
1881
1882      required = required ? true : false;
1883      var clear = validators.split(' ').map(function (v) {
1884        return _this10.options.validators[v]($el, required, $el.parent());
1885      });
1886      return clear.indexOf(false) === -1;
1887    }
1888    /**
1889     * Resets form inputs and styles
1890     * @fires Abide#formreset
1891     */
1892
1893  }, {
1894    key: "resetForm",
1895    value: function resetForm() {
1896      var $form = this.$element,
1897          opts = this.options;
1898      jquery__WEBPACK_IMPORTED_MODULE_0___default()(".".concat(opts.labelErrorClass), $form).not('small').removeClass(opts.labelErrorClass);
1899      jquery__WEBPACK_IMPORTED_MODULE_0___default()(".".concat(opts.inputErrorClass), $form).not('small').removeClass(opts.inputErrorClass);
1900      jquery__WEBPACK_IMPORTED_MODULE_0___default()("".concat(opts.formErrorSelector, ".").concat(opts.formErrorClass)).removeClass(opts.formErrorClass);
1901      $form.find('[data-abide-error]').css('display', 'none');
1902      jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').attr({
1903        'data-invalid': null,
1904        'aria-invalid': null
1905      });
1906      jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input:radio', $form).not('[data-abide-ignore]').prop('checked', false).attr({
1907        'data-invalid': null,
1908        'aria-invalid': null
1909      });
1910      jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked', false).attr({
1911        'data-invalid': null,
1912        'aria-invalid': null
1913      });
1914      /**
1915       * Fires when the form has been reset.
1916       * @event Abide#formreset
1917       */
1918
1919      $form.trigger('formreset.zf.abide', [$form]);
1920    }
1921    /**
1922     * Destroys an instance of Abide.
1923     * Removes error styles and classes from elements, without resetting their values.
1924     */
1925
1926  }, {
1927    key: "_destroy",
1928    value: function _destroy() {
1929      var _this = this;
1930
1931      this.$element.off('.abide').find('[data-abide-error]').css('display', 'none');
1932      this.$inputs.off('.abide').each(function () {
1933        _this.removeErrorClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
1934      });
1935      this.$submits.off('.abide');
1936    }
1937  }]);
1938
1939  return Abide;
1940}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
1941/**
1942 * Default settings for plugin
1943 */
1944
1945
1946Abide.defaults = {
1947  /**
1948   * The default event to validate inputs. Checkboxes and radios validate immediately.
1949   * Remove or change this value for manual validation.
1950   * @option
1951   * @type {?string}
1952   * @default 'fieldChange'
1953   */
1954  validateOn: 'fieldChange',
1955
1956  /**
1957   * Class to be applied to input labels on failed validation.
1958   * @option
1959   * @type {string}
1960   * @default 'is-invalid-label'
1961   */
1962  labelErrorClass: 'is-invalid-label',
1963
1964  /**
1965   * Class to be applied to inputs on failed validation.
1966   * @option
1967   * @type {string}
1968   * @default 'is-invalid-input'
1969   */
1970  inputErrorClass: 'is-invalid-input',
1971
1972  /**
1973   * Class selector to use to target Form Errors for show/hide.
1974   * @option
1975   * @type {string}
1976   * @default '.form-error'
1977   */
1978  formErrorSelector: '.form-error',
1979
1980  /**
1981   * Class added to Form Errors on failed validation.
1982   * @option
1983   * @type {string}
1984   * @default 'is-visible'
1985   */
1986  formErrorClass: 'is-visible',
1987
1988  /**
1989   * If true, automatically insert when possible:
1990   * - `[aria-describedby]` on fields
1991   * - `[role=alert]` on form errors and `[for]` on form error labels
1992   * - `[aria-live]` on global errors `[data-abide-error]` (see option `a11yErrorLevel`).
1993   * @option
1994   * @type {boolean}
1995   * @default true
1996   */
1997  a11yAttributes: true,
1998
1999  /**
2000   * [aria-live] attribute value to be applied on global errors `[data-abide-error]`.
2001   * Options are: 'assertive', 'polite' and 'off'/null
2002   * @option
2003   * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions
2004   * @type {string}
2005   * @default 'assertive'
2006   */
2007  a11yErrorLevel: 'assertive',
2008
2009  /**
2010   * Set to true to validate text inputs on any value change.
2011   * @option
2012   * @type {boolean}
2013   * @default false
2014   */
2015  liveValidate: false,
2016
2017  /**
2018   * Set to true to validate inputs on blur.
2019   * @option
2020   * @type {boolean}
2021   * @default false
2022   */
2023  validateOnBlur: false,
2024  patterns: {
2025    alpha: /^[a-zA-Z]+$/,
2026    alpha_numeric: /^[a-zA-Z0-9]+$/,
2027    integer: /^[-+]?\d+$/,
2028    number: /^[-+]?\d*(?:[\.\,]\d+)?$/,
2029    // amex, visa, diners
2030    card: /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
2031    cvv: /^([0-9]){3,4}$/,
2032    // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
2033    email: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
2034    // From CommonRegexJS (@talyssonoc)
2035    // https://github.com/talyssonoc/CommonRegexJS/blob/e2901b9f57222bc14069dc8f0598d5f412555411/lib/commonregex.js#L76
2036    // For more restrictive URL Regexs, see https://mathiasbynens.be/demo/url-regex.
2037    url: /^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/,
2038    // abc.de
2039    domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
2040    datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
2041    // YYYY-MM-DD
2042    date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
2043    // HH:MM:SS
2044    time: /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
2045    dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
2046    // MM/DD/YYYY
2047    month_day_year: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
2048    // DD/MM/YYYY
2049    day_month_year: /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
2050    // #FFF or #FFFFFF
2051    color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,
2052    // Domain || URL
2053    website: {
2054      test: function test(text) {
2055        return Abide.defaults.patterns['domain'].test(text) || Abide.defaults.patterns['url'].test(text);
2056      }
2057    }
2058  },
2059
2060  /**
2061   * Optional validation functions to be used. `equalTo` being the only default included function.
2062   * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:
2063   * el : The jQuery element to validate.
2064   * required : Boolean value of the required attribute be present or not.
2065   * parent : The direct parent of the input.
2066   * @option
2067   */
2068  validators: {
2069    equalTo: function equalTo(el, required, parent) {
2070      return jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(el.attr('data-equalto'))).val() === el.val();
2071    }
2072  }
2073};
2074
2075
2076/***/ }),
2077
2078/***/ "./js/foundation.accordion.js":
2079/*!************************************!*\
2080  !*** ./js/foundation.accordion.js ***!
2081  \************************************/
2082/*! exports provided: Accordion */
2083/***/ (function(module, __webpack_exports__, __webpack_require__) {
2084
2085"use strict";
2086__webpack_require__.r(__webpack_exports__);
2087/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Accordion", function() { return Accordion; });
2088/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
2089/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
2090/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
2091/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
2092/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
2093
2094
2095function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2096
2097function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2098
2099function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2100
2101function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
2102
2103function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
2104
2105function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
2106
2107function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
2108
2109function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
2110
2111function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
2112
2113
2114
2115
2116
2117/**
2118 * Accordion module.
2119 * @module foundation.accordion
2120 * @requires foundation.util.keyboard
2121 */
2122
2123var Accordion =
2124/*#__PURE__*/
2125function (_Plugin) {
2126  _inherits(Accordion, _Plugin);
2127
2128  function Accordion() {
2129    _classCallCheck(this, Accordion);
2130
2131    return _possibleConstructorReturn(this, _getPrototypeOf(Accordion).apply(this, arguments));
2132  }
2133
2134  _createClass(Accordion, [{
2135    key: "_setup",
2136
2137    /**
2138     * Creates a new instance of an accordion.
2139     * @class
2140     * @name Accordion
2141     * @fires Accordion#init
2142     * @param {jQuery} element - jQuery object to make into an accordion.
2143     * @param {Object} options - a plain object with settings to override the default options.
2144     */
2145    value: function _setup(element, options) {
2146      this.$element = element;
2147      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Accordion.defaults, this.$element.data(), options);
2148      this.className = 'Accordion'; // ie9 back compat
2149
2150      this._init();
2151
2152      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].register('Accordion', {
2153        'ENTER': 'toggle',
2154        'SPACE': 'toggle',
2155        'ARROW_DOWN': 'next',
2156        'ARROW_UP': 'previous'
2157      });
2158    }
2159    /**
2160     * Initializes the accordion by animating the preset active pane(s).
2161     * @private
2162     */
2163
2164  }, {
2165    key: "_init",
2166    value: function _init() {
2167      var _this2 = this;
2168
2169      this._isInitializing = true;
2170      this.$element.attr('role', 'tablist');
2171      this.$tabs = this.$element.children('[data-accordion-item]');
2172      this.$tabs.attr({
2173        'role': 'presentation'
2174      });
2175      this.$tabs.each(function (idx, el) {
2176        var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el),
2177            $content = $el.children('[data-tab-content]'),
2178            id = $content[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'accordion'),
2179            linkId = el.id ? "".concat(el.id, "-label") : "".concat(id, "-label");
2180        $el.find('a:first').attr({
2181          'aria-controls': id,
2182          'role': 'tab',
2183          'id': linkId,
2184          'aria-expanded': false,
2185          'aria-selected': false
2186        });
2187        $content.attr({
2188          'role': 'tabpanel',
2189          'aria-labelledby': linkId,
2190          'aria-hidden': true,
2191          'id': id
2192        });
2193      });
2194      var $initActive = this.$element.find('.is-active').children('[data-tab-content]');
2195
2196      if ($initActive.length) {
2197        // Save up the initial hash to return to it later when going back in history
2198        this._initialAnchor = $initActive.prev('a').attr('href');
2199
2200        this._openSingleTab($initActive);
2201      }
2202
2203      this._checkDeepLink = function () {
2204        var anchor = window.location.hash;
2205
2206        if (!anchor.length) {
2207          // If we are still initializing and there is no anchor, then there is nothing to do
2208          if (_this2._isInitializing) return; // Otherwise, move to the initial anchor
2209
2210          if (_this2._initialAnchor) anchor = _this2._initialAnchor;
2211        }
2212
2213        var $anchor = anchor && jquery__WEBPACK_IMPORTED_MODULE_0___default()(anchor);
2214
2215        var $link = anchor && _this2.$element.find("[href$=\"".concat(anchor, "\"]"));
vendor: 9,101 bytes, lines 2215-2521
2215 // Whether the anchor element that has been found is part of this element
2216
2217
2218        var isOwnAnchor = !!($anchor.length && $link.length);
2219
2220        if (isOwnAnchor) {
2221          // If there is an anchor for the hash, open it (if not already active)
2222          if ($anchor && $link && $link.length) {
2223            if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {
2224              _this2._openSingleTab($anchor);
2225            }
2226          } // Otherwise, close everything
2227          else {
2228              _this2._closeAllTabs();
2229            } // Roll up a little to show the titles
2230
2231
2232          if (_this2.options.deepLinkSmudge) {
2233            Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
2234              var offset = _this2.$element.offset();
2235
2236              jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({
2237                scrollTop: offset.top - _this2.options.deepLinkSmudgeOffset
2238              }, _this2.options.deepLinkSmudgeDelay);
2239            });
2240          }
2241          /**
2242           * Fires when the plugin has deeplinked at pageload
2243           * @event Accordion#deeplink
2244           */
2245
2246
2247          _this2.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);
2248        }
2249      }; //use browser to open a tab, if it exists in this tabset
2250
2251
2252      if (this.options.deepLink) {
2253        this._checkDeepLink();
2254      }
2255
2256      this._events();
2257
2258      this._isInitializing = false;
2259    }
2260    /**
2261     * Adds event handlers for items within the accordion.
2262     * @private
2263     */
2264
2265  }, {
2266    key: "_events",
2267    value: function _events() {
2268      var _this = this;
2269
2270      this.$tabs.each(function () {
2271        var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
2272        var $tabContent = $elem.children('[data-tab-content]');
2273
2274        if ($tabContent.length) {
2275          $elem.children('a').off('click.zf.accordion keydown.zf.accordion').on('click.zf.accordion', function (e) {
2276            e.preventDefault();
2277
2278            _this.toggle($tabContent);
2279          }).on('keydown.zf.accordion', function (e) {
2280            _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].handleKey(e, 'Accordion', {
2281              toggle: function toggle() {
2282                _this.toggle($tabContent);
2283              },
2284              next: function next() {
2285                var $a = $elem.next().find('a').focus();
2286
2287                if (!_this.options.multiExpand) {
2288                  $a.trigger('click.zf.accordion');
2289                }
2290              },
2291              previous: function previous() {
2292                var $a = $elem.prev().find('a').focus();
2293
2294                if (!_this.options.multiExpand) {
2295                  $a.trigger('click.zf.accordion');
2296                }
2297              },
2298              handled: function handled() {
2299                e.preventDefault();
2300              }
2301            });
2302          });
2303        }
2304      });
2305
2306      if (this.options.deepLink) {
2307        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange', this._checkDeepLink);
2308      }
2309    }
2310    /**
2311     * Toggles the selected content pane's open/close state.
2312     * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).
2313     * @function
2314     */
2315
2316  }, {
2317    key: "toggle",
2318    value: function toggle($target) {
2319      if ($target.closest('[data-accordion]').is('[disabled]')) {
2320        console.info('Cannot toggle an accordion that is disabled.');
2321        return;
2322      }
2323
2324      if ($target.parent().hasClass('is-active')) {
2325        this.up($target);
2326      } else {
2327        this.down($target);
2328      } //either replace or update browser history
2329
2330
2331      if (this.options.deepLink) {
2332        var anchor = $target.prev('a').attr('href');
2333
2334        if (this.options.updateHistory) {
2335          history.pushState({}, '', anchor);
2336        } else {
2337          history.replaceState({}, '', anchor);
2338        }
2339      }
2340    }
2341    /**
2342     * Opens the accordion tab defined by `$target`.
2343     * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).
2344     * @fires Accordion#down
2345     * @function
2346     */
2347
2348  }, {
2349    key: "down",
2350    value: function down($target) {
2351      if ($target.closest('[data-accordion]').is('[disabled]')) {
2352        console.info('Cannot call down on an accordion that is disabled.');
2353        return;
2354      }
2355
2356      if (this.options.multiExpand) this._openTab($target);else this._openSingleTab($target);
2357    }
2358    /**
2359     * Closes the tab defined by `$target`.
2360     * It may be ignored if the Accordion options don't allow it.
2361     *
2362     * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).
2363     * @fires Accordion#up
2364     * @function
2365     */
2366
2367  }, {
2368    key: "up",
2369    value: function up($target) {
2370      if (this.$element.is('[disabled]')) {
2371        console.info('Cannot call up on an accordion that is disabled.');
2372        return;
2373      } // Don't close the item if it is already closed
2374
2375
2376      var $targetItem = $target.parent();
2377      if (!$targetItem.hasClass('is-active')) return; // Don't close the item if there is no other active item (unless with `allowAllClosed`)
2378
2379      var $othersItems = $targetItem.siblings();
2380      if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;
2381
2382      this._closeTab($target);
2383    }
2384    /**
2385     * Make the tab defined by `$target` the only opened tab, closing all others tabs.
2386     * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).
2387     * @function
2388     * @private
2389     */
2390
2391  }, {
2392    key: "_openSingleTab",
2393    value: function _openSingleTab($target) {
2394      // Close all the others active tabs.
2395      var $activeContents = this.$element.children('.is-active').children('[data-tab-content]');
2396
2397      if ($activeContents.length) {
2398        this._closeTab($activeContents.not($target));
2399      } // Then open the target.
2400
2401
2402      this._openTab($target);
2403    }
2404    /**
2405     * Opens the tab defined by `$target`.
2406     * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).
2407     * @fires Accordion#down
2408     * @function
2409     * @private
2410     */
2411
2412  }, {
2413    key: "_openTab",
2414    value: function _openTab($target) {
2415      var _this3 = this;
2416
2417      var $targetItem = $target.parent();
2418      var targetContentId = $target.attr('aria-labelledby');
2419      $target.attr('aria-hidden', false);
2420      $targetItem.addClass('is-active');
2421      jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetContentId)).attr({
2422        'aria-expanded': true,
2423        'aria-selected': true
2424      });
2425      $target.finish().slideDown(this.options.slideSpeed, function () {
2426        /**
2427         * Fires when the tab is done opening.
2428         * @event Accordion#down
2429         */
2430        _this3.$element.trigger('down.zf.accordion', [$target]);
2431      });
2432    }
2433    /**
2434     * Closes the tab defined by `$target`.
2435     * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).
2436     * @fires Accordion#up
2437     * @function
2438     * @private
2439     */
2440
2441  }, {
2442    key: "_closeTab",
2443    value: function _closeTab($target) {
2444      var _this4 = this;
2445
2446      var $targetItem = $target.parent();
2447      var targetContentId = $target.attr('aria-labelledby');
2448      $target.attr('aria-hidden', true);
2449      $targetItem.removeClass('is-active');
2450      jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetContentId)).attr({
2451        'aria-expanded': false,
2452        'aria-selected': false
2453      });
2454      $target.finish().slideUp(this.options.slideSpeed, function () {
2455        /**
2456         * Fires when the tab is done collapsing up.
2457         * @event Accordion#up
2458         */
2459        _this4.$element.trigger('up.zf.accordion', [$target]);
2460      });
2461    }
2462    /**
2463     * Closes all active tabs
2464     * @fires Accordion#up
2465     * @function
2466     * @private
2467     */
2468
2469  }, {
2470    key: "_closeAllTabs",
2471    value: function _closeAllTabs() {
2472      var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');
2473
2474      if ($activeTabs.length) {
2475        this._closeTab($activeTabs);
2476      }
2477    }
2478    /**
2479     * Destroys an instance of an accordion.
2480     * @fires Accordion#destroyed
2481     * @function
2482     */
2483
2484  }, {
2485    key: "_destroy",
2486    value: function _destroy() {
2487      this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');
2488      this.$element.find('a').off('.zf.accordion');
2489
2490      if (this.options.deepLink) {
2491        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange', this._checkDeepLink);
2492      }
2493    }
2494  }]);
2495
2496  return Accordion;
2497}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
2498
2499Accordion.defaults = {
2500  /**
2501   * Amount of time to animate the opening of an accordion pane.
2502   * @option
2503   * @type {number}
2504   * @default 250
2505   */
2506  slideSpeed: 250,
2507
2508  /**
2509   * Allow the accordion to have multiple open panes.
2510   * @option
2511   * @type {boolean}
2512   * @default false
2513   */
2514  multiExpand: false,
2515
2516  /**
2517   * Allow the accordion to close all panes.
2518   * @option
2519   * @type {boolean}
2520   * @default false
2521   */
2522  allowAllClosed: false,
2523
2524  /**
2525   * Link the location hash to the open pane.
2526   * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.
2527   * @option
2528   * @type {boolean}
2529   * @default false
2530   */
2531  deepLink: false,
2532
2533  /**
2534   * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible
2535   * @option
2536   * @type {boolean}
2537   * @default false
2538   */
2539  deepLinkSmudge: false,
2540
2541  /**
2542   * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment
2543   * @option
2544   * @type {number}
2545   * @default 300
2546   */
2547  deepLinkSmudgeDelay: 300,
2548
2549  /**
2550   * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page
2551   * @option
2552   * @type {number}
2553   * @default 0
2554   */
2555  deepLinkSmudgeOffset: 0,
2556
2557  /**
2558   * If `deepLink` is enabled, update the browser history with the open accordion
2559   * @option
2560   * @type {boolean}
2561   * @default false
2562   */
2563  updateHistory: false
2564};
2565
2566
2567/***/ }),
2568
2569/***/ "./js/foundation.accordionMenu.js":
2570/*!****************************************!*\
2571  !*** ./js/foundation.accordionMenu.js ***!
2572  \****************************************/
2573/*! exports provided: AccordionMenu */
2574/***/ (function(module, __webpack_exports__, __webpack_require__) {
2575
2576"use strict";
2577__webpack_require__.r(__webpack_exports__);
2578/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AccordionMenu", function() { return AccordionMenu; });
2579/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
2580/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
2581/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
2582/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.nest */ "./js/foundation.util.nest.js");
2583/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
2584/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
2585
2586
2587function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2588
2589function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2590
2591function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2592
2593function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
2594
2595function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
2596
2597function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
2598
2599function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
2600
2601function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
2602
2603function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
2604
2605
2606
2607
2608
2609
2610/**
2611 * AccordionMenu module.
2612 * @module foundation.accordionMenu
2613 * @requires foundation.util.keyboard
2614 * @requires foundation.util.nest
2615 */
2616
2617var AccordionMenu =
2618/*#__PURE__*/
2619function (_Plugin) {
2620  _inherits(AccordionMenu, _Plugin);
2621
2622  function AccordionMenu() {
2623    _classCallCheck(this, AccordionMenu);
2624
2625    return _possibleConstructorReturn(this, _getPrototypeOf(AccordionMenu).apply(this, arguments));
2626  }
2627
2628  _createClass(AccordionMenu, [{
2629    key: "_setup",
2630
2631    /**
2632     * Creates a new instance of an accordion menu.
2633     * @class
2634     * @name AccordionMenu
2635     * @fires AccordionMenu#init
2636     * @param {jQuery} element - jQuery object to make into an accordion menu.
2637     * @param {Object} options - Overrides to the default plugin settings.
2638     */
2639    value: function _setup(element, options) {
2640      this.$element = element;
2641      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, AccordionMenu.defaults, this.$element.data(), options);
2642      this.className = 'AccordionMenu'; // ie9 back compat
2643
2644      this._init();
2645
2646      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('AccordionMenu', {
2647        'ENTER': 'toggle',
2648        'SPACE': 'toggle',
2649        'ARROW_RIGHT': 'open',
2650        'ARROW_UP': 'up',
2651        'ARROW_DOWN': 'down',
2652        'ARROW_LEFT': 'close',
2653        'ESCAPE': 'closeAll'
2654      });
2655    }
2656    /**
2657     * Initializes the accordion menu by hiding all nested menus.
2658     * @private
2659     */
2660
2661  }, {
2662    key: "_init",
2663    value: function _init() {
2664      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Feather(this.$element, 'accordion');
2665
2666      var _this = this;
2667
2668      this.$element.find('[data-submenu]').not('.is-active').slideUp(0); //.find('a').css('padding-left', '1rem');
2669
2670      this.$element.attr({
2671        'role': 'tree',
vendor: 5,379 bytes, lines 2672-2802
2672        'aria-multiselectable': this.options.multiOpen
2673      });
2674      this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');
2675      this.$menuLinks.each(function () {
2676        var linkId = this.id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'acc-menu-link'),
2677            $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
2678            $sub = $elem.children('[data-submenu]'),
2679            subId = $sub[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'acc-menu'),
2680            isActive = $sub.hasClass('is-active');
2681
2682        if (_this.options.parentLink) {
2683          var $anchor = $elem.children('a');
2684          $anchor.clone().prependTo($sub).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-accordion-submenu-item"></li>');
2685        }
2686
2687        if (_this.options.submenuToggle) {
2688          $elem.addClass('has-submenu-toggle');
2689          $elem.children('a').after('<button id="' + linkId + '" class="submenu-toggle" aria-controls="' + subId + '" aria-expanded="' + isActive + '" title="' + _this.options.submenuToggleText + '"><span class="submenu-toggle-text">' + _this.options.submenuToggleText + '</span></button>');
2690        } else {
2691          $elem.attr({
2692            'aria-controls': subId,
2693            'aria-expanded': isActive,
2694            'id': linkId
2695          });
2696        }
2697
2698        $sub.attr({
2699          'aria-labelledby': linkId,
2700          'aria-hidden': !isActive,
2701          'role': 'group',
2702          'id': subId
2703        });
2704      });
2705      this.$element.find('li').attr({
2706        'role': 'treeitem'
2707      });
2708      var initPanes = this.$element.find('.is-active');
2709
2710      if (initPanes.length) {
2711        initPanes.each(function () {
2712          _this.down(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
2713        });
2714      }
2715
2716      this._events();
2717    }
2718    /**
2719     * Adds event handlers for items within the menu.
2720     * @private
2721     */
2722
2723  }, {
2724    key: "_events",
2725    value: function _events() {
2726      var _this = this;
2727
2728      this.$element.find('li').each(function () {
2729        var $submenu = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('[data-submenu]');
2730
2731        if ($submenu.length) {
2732          if (_this.options.submenuToggle) {
2733            jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) {
2734              _this.toggle($submenu);
2735            });
2736          } else {
2737            jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) {
2738              e.preventDefault();
2739
2740              _this.toggle($submenu);
2741            });
2742          }
2743        }
2744      }).on('keydown.zf.accordionMenu', function (e) {
2745        var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
2746            $elements = $element.parent('ul').children('li'),
2747            $prevElement,
2748            $nextElement,
2749            $target = $element.children('[data-submenu]');
2750        $elements.each(function (i) {
2751          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
2752            $prevElement = $elements.eq(Math.max(0, i - 1)).find('a').first();
2753            $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)).find('a').first();
2754
2755            if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('[data-submenu]:visible').length) {
2756              // has open sub menu
2757              $nextElement = $element.find('li:first-child').find('a').first();
2758            }
2759
2760            if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':first-child')) {
2761              // is first element of sub menu
2762              $prevElement = $element.parents('li').first().find('a').first();
2763            } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) {
2764              // if previous element has open sub menu
2765              $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();
2766            }
2767
2768            if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':last-child')) {
2769              // is last element of sub menu
2770              $nextElement = $element.parents('li').first().next('li').find('a').first();
2771            }
2772
2773            return;
2774          }
2775        });
2776        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'AccordionMenu', {
2777          open: function open() {
2778            if ($target.is(':hidden')) {
2779              _this.down($target);
2780
2781              $target.find('li').first().find('a').first().focus();
2782            }
2783          },
2784          close: function close() {
2785            if ($target.length && !$target.is(':hidden')) {
2786              // close active sub of this item
2787              _this.up($target);
2788            } else if ($element.parent('[data-submenu]').length) {
2789              // close currently open sub
2790              _this.up($element.parent('[data-submenu]'));
2791
2792              $element.parents('li').first().find('a').first().focus();
2793            }
2794          },
2795          up: function up() {
2796            $prevElement.focus();
2797            return true;
2798          },
2799          down: function down() {
2800            $nextElement.focus();
2801            return true;
2802          },
vendor: 4,450 bytes, lines 2803-2958
2803          toggle: function toggle() {
2804            if (_this.options.submenuToggle) {
2805              return false;
2806            }
2807
2808            if ($element.children('[data-submenu]').length) {
2809              _this.toggle($element.children('[data-submenu]'));
2810
2811              return true;
2812            }
2813          },
2814          closeAll: function closeAll() {
2815            _this.hideAll();
2816          },
2817          handled: function handled(preventDefault) {
2818            if (preventDefault) {
2819              e.preventDefault();
2820            }
2821          }
2822        });
2823      }); //.attr('tabindex', 0);
2824    }
2825    /**
2826     * Closes all panes of the menu.
2827     * @function
2828     */
2829
2830  }, {
2831    key: "hideAll",
2832    value: function hideAll() {
2833      this.up(this.$element.find('[data-submenu]'));
2834    }
2835    /**
2836     * Opens all panes of the menu.
2837     * @function
2838     */
2839
2840  }, {
2841    key: "showAll",
2842    value: function showAll() {
2843      this.down(this.$element.find('[data-submenu]'));
2844    }
2845    /**
2846     * Toggles the open/close state of a submenu.
2847     * @function
2848     * @param {jQuery} $target - the submenu to toggle
2849     */
2850
2851  }, {
2852    key: "toggle",
2853    value: function toggle($target) {
2854      if (!$target.is(':animated')) {
2855        if (!$target.is(':hidden')) {
2856          this.up($target);
2857        } else {
2858          this.down($target);
2859        }
2860      }
2861    }
2862    /**
2863     * Opens the sub-menu defined by `$target`.
2864     * @param {jQuery} $target - Sub-menu to open.
2865     * @fires AccordionMenu#down
2866     */
2867
2868  }, {
2869    key: "down",
2870    value: function down($target) {
2871      var _this2 = this;
2872
2873      // If having multiple submenus active is disabled, close all the submenus
2874      // that are not parents or children of the targeted submenu.
2875      if (!this.options.multiOpen) {
2876        // The "branch" of the targetted submenu, from the component root to
2877        // the active submenus nested in it.
2878        var $targetBranch = $target.parentsUntil(this.$element).add($target).add($target.find('.is-active')); // All the active submenus that are not in the branch.
2879
2880        var $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);
2881        this.up($othersActiveSubmenus);
2882      }
2883
2884      $target.addClass('is-active').attr({
2885        'aria-hidden': false
2886      });
2887
2888      if (this.options.submenuToggle) {
2889        $target.prev('.submenu-toggle').attr({
2890          'aria-expanded': true
2891        });
2892      } else {
2893        $target.parent('.is-accordion-submenu-parent').attr({
2894          'aria-expanded': true
2895        });
2896      }
2897
2898      $target.slideDown(this.options.slideSpeed, function () {
2899        /**
2900         * Fires when the menu is done opening.
2901         * @event AccordionMenu#down
2902         */
2903        _this2.$element.trigger('down.zf.accordionMenu', [$target]);
2904      });
2905    }
2906    /**
2907     * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.
2908     * @param {jQuery} $target - Sub-menu to close.
2909     * @fires AccordionMenu#up
2910     */
2911
2912  }, {
2913    key: "up",
2914    value: function up($target) {
2915      var _this3 = this;
2916
2917      var $submenus = $target.find('[data-submenu]');
2918      var $allmenus = $target.add($submenus);
2919      $submenus.slideUp(0);
2920      $allmenus.removeClass('is-active').attr('aria-hidden', true);
2921
2922      if (this.options.submenuToggle) {
2923        $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);
2924      } else {
2925        $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);
2926      }
2927
2928      $target.slideUp(this.options.slideSpeed, function () {
2929        /**
2930         * Fires when the menu is done collapsing up.
2931         * @event AccordionMenu#up
2932         */
2933        _this3.$element.trigger('up.zf.accordionMenu', [$target]);
2934      });
2935    }
2936    /**
2937     * Destroys an instance of accordion menu.
2938     * @fires AccordionMenu#destroyed
2939     */
2940
2941  }, {
2942    key: "_destroy",
2943    value: function _destroy() {
2944      this.$element.find('[data-submenu]').slideDown(0).css('display', '');
2945      this.$element.find('a').off('click.zf.accordionMenu');
2946      this.$element.find('[data-is-parent-link]').detach();
2947
2948      if (this.options.submenuToggle) {
2949        this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');
2950        this.$element.find('.submenu-toggle').remove();
2951      }
2952
2953      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Burn(this.$element, 'accordion');
2954    }
2955  }]);
2956
2957  return AccordionMenu;
2958}
2958(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__["Plugin"]);
2959
2960AccordionMenu.defaults = {
2961  /**
2962   * Adds the parent link to the submenu.
2963   * @option
2964   * @type {boolean}
2965   * @default false
2966   */
2967  parentLink: false,
2968
2969  /**
2970   * Amount of time to animate the opening of a submenu in ms.
2971   * @option
2972   * @type {number}
2973   * @default 250
2974   */
2975  slideSpeed: 250,
2976
2977  /**
2978   * Adds a separate submenu toggle button. This allows the parent item to have a link.
2979   * @option
2980   * @example true
2981   */
2982  submenuToggle: false,
2983
2984  /**
2985   * The text used for the submenu toggle if enabled. This is used for screen readers only.
2986   * @option
2987   * @example true
2988   */
2989  submenuToggleText: 'Toggle menu',
2990
2991  /**
2992   * Allow the menu to have multiple open panes.
2993   * @option
2994   * @type {boolean}
2995   * @default true
2996   */
2997  multiOpen: true
2998};
2999
3000
3001/***/ }),
3002
vendor: 10,742 bytes, lines 3003-3277
3003/***/ "./js/foundation.core.js":
3004/*!*******************************!*\
3005  !*** ./js/foundation.core.js ***!
3006  \*******************************/
3007/*! exports provided: Foundation */
3008/***/ (function(module, __webpack_exports__, __webpack_require__) {
3009
3010"use strict";
3011__webpack_require__.r(__webpack_exports__);
3012/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return Foundation; });
3013/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
3014/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
3015/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
3016/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
3017
3018
3019function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3020
3021
3022
3023
3024var FOUNDATION_VERSION = '6.6.3'; // Global Foundation object
3025// This is attached to the window, or used as a module for AMD/Browserify
3026
3027var Foundation = {
3028  version: FOUNDATION_VERSION,
3029
3030  /**
3031   * Stores initialized plugins.
3032   */
3033  _plugins: {},
3034
3035  /**
3036   * Stores generated unique ids for plugin instances
3037   */
3038  _uuids: [],
3039
3040  /**
3041   * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.
3042   * @param {Object} plugin - The constructor of the plugin.
3043   */
3044  plugin: function plugin(_plugin, name) {
3045    // Object key to use when adding to global Foundation object
3046    // Examples: Foundation.Reveal, Foundation.OffCanvas
3047    var className = name || functionName(_plugin); // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin
3048    // Examples: data-reveal, data-off-canvas
3049
3050    var attrName = hyphenate(className); // Add to the Foundation object and the plugins list (for reflowing)
3051
3052    this._plugins[attrName] = this[className] = _plugin;
3053  },
3054
3055  /**
3056   * @function
3057   * Populates the _uuids array with pointers to each individual plugin instance.
3058   * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.
3059   * Also fires the initialization event for each plugin, consolidating repetitive code.
3060   * @param {Object} plugin - an instance of a plugin, usually `this` in context.
3061   * @param {String} name - the name of the plugin, passed as a camelCased string.
3062   * @fires Plugin#init
3063   */
3064  registerPlugin: function registerPlugin(plugin, name) {
3065    var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();
3066    plugin.uuid = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, pluginName);
3067
3068    if (!plugin.$element.attr("data-".concat(pluginName))) {
3069      plugin.$element.attr("data-".concat(pluginName), plugin.uuid);
3070    }
3071
3072    if (!plugin.$element.data('zfPlugin')) {
3073      plugin.$element.data('zfPlugin', plugin);
3074    }
3075    /**
3076     * Fires when the plugin has initialized.
3077     * @event Plugin#init
3078     */
3079
3080
3081    plugin.$element.trigger("init.zf.".concat(pluginName));
3082
3083    this._uuids.push(plugin.uuid);
3084
3085    return;
3086  },
3087
3088  /**
3089   * @function
3090   * Removes the plugins uuid from the _uuids array.
3091   * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.
3092   * Also fires the destroyed event for the plugin, consolidating repetitive code.
3093   * @param {Object} plugin - an instance of a plugin, usually `this` in context.
3094   * @fires Plugin#destroyed
3095   */
3096  unregisterPlugin: function unregisterPlugin(plugin) {
3097    var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));
3098
3099    this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);
3100
3101    plugin.$element.removeAttr("data-".concat(pluginName)).removeData('zfPlugin')
3102    /**
3103     * Fires when the plugin has been destroyed.
3104     * @event Plugin#destroyed
3105     */
3106    .trigger("destroyed.zf.".concat(pluginName));
3107
3108    for (var prop in plugin) {
3109      plugin[prop] = null; //clean up script to prep for garbage collection.
3110    }
3111
3112    return;
3113  },
3114
3115  /**
3116   * @function
3117   * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.
3118   * @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'`
3119   * @default If no argument is passed, reflow all currently active plugins.
3120   */
3121  reInit: function reInit(plugins) {
3122    var isJQ = plugins instanceof jquery__WEBPACK_IMPORTED_MODULE_0___default.a;
3123
3124    try {
3125      if (isJQ) {
3126        plugins.each(function () {
3127          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('zfPlugin')._init();
3128        });
3129      } else {
3130        var type = _typeof(plugins),
3131            _this = this,
3132            fns = {
3133          'object': function object(plgs) {
3134            plgs.forEach(function (p) {
3135              p = hyphenate(p);
3136              jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-' + p + ']').foundation('_init');
3137            });
3138          },
3139          'string': function string() {
3140            plugins = hyphenate(plugins);
3141            jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-' + plugins + ']').foundation('_init');
3142          },
3143          'undefined': function undefined() {
3144            this['object'](Object.keys(_this._plugins));
3145          }
3146        };
3147
3148        fns[type](plugins);
3149      }
3150    } catch (err) {
3151      console.error(err);
3152    } finally {
3153      return plugins;
3154    }
3155  },
3156
3157  /**
3158   * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.
3159   * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.
3160   * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.
3161   */
3162  reflow: function reflow(elem, plugins) {
3163    // If plugins is undefined, just grab everything
3164    if (typeof plugins === 'undefined') {
3165      plugins = Object.keys(this._plugins);
3166    } // If plugins is a string, convert it to an array with one item
3167    else if (typeof plugins === 'string') {
3168        plugins = [plugins];
3169      }
3170
3171    var _this = this; // Iterate through each plugin
3172
3173
3174    jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(plugins, function (i, name) {
3175      // Get the current plugin
3176      var plugin = _this._plugins[name]; // Localize the search to all elements inside elem, as well as elem itself, unless elem === document
3177
3178      var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elem).find('[data-' + name + ']').addBack('[data-' + name + ']').filter(function () {
3179        return typeof jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data("zfPlugin") === 'undefined';
3180      }); // For each plugin found, initialize it
3181
3182      $elem.each(function () {
3183        var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
3184            opts = {
3185          reflow: true
3186        };
3187
3188        if ($el.attr('data-options')) {
3189          $el.attr('data-options').split(';').forEach(function (option, _index) {
3190            var opt = option.split(':').map(function (el) {
3191              return el.trim();
3192            });
3193            if (opt[0]) opts[opt[0]] = parseValue(opt[1]);
3194          });
3195        }
3196
3197        try {
3198          $el.data('zfPlugin', new plugin(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), opts));
3199        } catch (er) {
3200          console.error(er);
3201        } finally {
3202          return;
3203        }
3204      });
3205    });
3206  },
3207  getFnName: functionName,
3208  addToJquery: function addToJquery($) {
3209    // TODO: consider not making this a jQuery function
3210    // TODO: need way to reflow vs. re-initialize
3211
3212    /**
3213     * The Foundation jQuery method.
3214     * @param {String|Array} method - An action to perform on the current jQuery object.
3215     */
3216    var foundation = function foundation(method) {
3217      var type = _typeof(method),
3218          $noJS = $('.no-js');
3219
3220      if ($noJS.length) {
3221        $noJS.removeClass('no-js');
3222      }
3223
3224      if (type === 'undefined') {
3225        //needs to initialize the Foundation object, or an individual plugin.
3226        _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"]._init();
3227
3228        Foundation.reflow(this);
3229      } else if (type === 'string') {
3230        //an individual method to invoke on a plugin or group of plugins
3231        var args = Array.prototype.slice.call(arguments, 1); //collect all the arguments, if necessary
3232
3233        var plugClass = this.data('zfPlugin'); //determine the class of plugin
3234
3235        if (typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined') {
3236          //make sure both the class and method exist
3237          if (this.length === 1) {
3238            //if there's only one, call it directly.
3239            plugClass[method].apply(plugClass, args);
3240          } else {
3241            this.each(function (i, el) {
3242              //otherwise loop through the jQuery collection and invoke the method on each
3243              plugClass[method].apply($(el).data('zfPlugin'), args);
3244            });
3245          }
3246        } else {
3247          //error for no class or no method
3248          throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.');
3249        }
3250      } else {
3251        //error for invalid argument type
3252        throw new TypeError("We're sorry, ".concat(type, " is not a valid parameter. You must use a string representing the method you wish to invoke."));
3253      }
3254
3255      return this;
3256    };
3257
3258    $.fn.foundation = foundation;
3259    return $;
3260  }
3261};
3262Foundation.util = {
3263  /**
3264   * Function for applying a debounce effect to a function call.
3265   * @function
3266   * @param {Function} func - Function to be called at end of timeout.
3267   * @param {Number} delay - Time in ms to delay the call of `func`.
3268   * @returns function
3269   */
3270  throttle: function throttle(func, delay) {
3271    var timer = null;
3272    return function () {
3273      var context = this,
3274          args = arguments;
3275
3276      if (timer === null) {
3277        timer = setTimeout(function () {
vendor: 2,942 bytes, lines 3278-3379
3278          func.apply(context, args);
3279          timer = null;
3280        }, delay);
3281      }
3282    };
3283  }
3284};
3285window.Foundation = Foundation; // Polyfill for requestAnimationFrame
3286
3287(function () {
3288  if (!Date.now || !window.Date.now) window.Date.now = Date.now = function () {
3289    return new Date().getTime();
3290  };
3291  var vendors = ['webkit', 'moz'];
3292
3293  for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
3294    var vp = vendors[i];
3295    window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
3296    window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];
3297  }
3298
3299  if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
3300    var lastTime = 0;
3301
3302    window.requestAnimationFrame = function (callback) {
3303      var now = Date.now();
3304      var nextTime = Math.max(lastTime + 16, now);
3305      return setTimeout(function () {
3306        callback(lastTime = nextTime);
3307      }, nextTime - now);
3308    };
3309
3310    window.cancelAnimationFrame = clearTimeout;
3311  }
3312  /**
3313   * Polyfill for performance.now, required by rAF
3314   */
3315
3316
3317  if (!window.performance || !window.performance.now) {
3318    window.performance = {
3319      start: Date.now(),
3320      now: function now() {
3321        return Date.now() - this.start;
3322      }
3323    };
3324  }
3325})();
3326
3327if (!Function.prototype.bind) {
3328  Function.prototype.bind = function (oThis) {
3329    if (typeof this !== 'function') {
3330      // closest thing possible to the ECMAScript 5
3331      // internal IsCallable function
3332      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
3333    }
3334
3335    var aArgs = Array.prototype.slice.call(arguments, 1),
3336        fToBind = this,
3337        fNOP = function fNOP() {},
3338        fBound = function fBound() {
3339      return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
3340    };
3341
3342    if (this.prototype) {
3343      // native functions don't have a prototype
3344      fNOP.prototype = this.prototype;
3345    }
3346
3347    fBound.prototype = new fNOP();
3348    return fBound;
3349  };
3350} // Polyfill to get the name of a function in IE9
3351
3352
3353function functionName(fn) {
3354  if (typeof Function.prototype.name === 'undefined') {
3355    var funcNameRegex = /function\s([^(]{1,})\(/;
3356    var results = funcNameRegex.exec(fn.toString());
3357    return results && results.length > 1 ? results[1].trim() : "";
3358  } else if (typeof fn.prototype === 'undefined') {
3359    return fn.constructor.name;
3360  } else {
3361    return fn.prototype.constructor.name;
3362  }
3363}
3364
3365function parseValue(str) {
3366  if ('true' === str) return true;else if ('false' === str) return false;else if (!isNaN(str * 1)) return parseFloat(str);
3367  return str;
3368} // Convert PascalCase to kebab-case
3369// Thank you: http://stackoverflow.com/a/8955580
3370
3371
3372function hyphenate(str) {
3373  return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
3374}
3375
3376
3377
3378/***/ }),
3379
3380/***/ "./js/foundation.core.plugin.js":
3381/*!**************************************!*\
3382  !*** ./js/foundation.core.plugin.js ***!
3383  \**************************************/
3384/*! exports provided: Plugin */
3385/***/ (function(module, __webpack_exports__, __webpack_require__) {
3386
3387"use strict";
3388__webpack_require__.r(__webpack_exports__);
3389/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Plugin", function() { return Plugin; });
3390/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
3391/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
3392/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
3393
3394
3395function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3396
3397function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
3398
3399function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
3400
3401
3402 // Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST
3403// {function} _setup (replaces previous constructor),
3404// {function} _destroy (replaces previous destroy)
3405
3406var Plugin =
3407/*#__PURE__*/
3408function () {
3409  function Plugin(element, options) {
3410    _classCallCheck(this, Plugin);
3411
3412    this._setup(element, options);
3413
3414    var pluginName = getPluginName(this);
3415    this.uuid = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, pluginName);
3416
3417    if (!this.$element.attr("data-".concat(pluginName))) {
3418      this.$element.attr("data-".concat(pluginName), this.uuid);
3419    }
3420
3421    if (!this.$element.data('zfPlugin')) {
3422      this.$element.data('zfPlugin', this);
3423    }
3424    /**
3425     * Fires when the plugin has initialized.
3426     * @event Plugin#init
3427     */
3428
3429
3430    this.$element.trigger("init.zf.".concat(pluginName));
3431  }
3432
3433  _createClass(Plugin, [{
3434    key: "destroy",
3435    value: function destroy() {
3436      this._destroy();
3437
3438      var pluginName = getPluginName(this);
3439      this.$element.removeAttr("data-".concat(pluginName)).removeData('zfPlugin')
3440      /**
3441       * Fires when the plugin has been destroyed.
3442       * @event Plugin#destroyed
3443       */
3444      .trigger("destroyed.zf.".concat(pluginName));
3445
3446      for (var prop in this) {
3447        this[prop] = null; //clean up script to prep for garbage collection.
3448      }
3449    }
3450  }]);
3451
3452  return Plugin;
3453}(); // Convert PascalCase to kebab-case
3454// Thank you: http://stackoverflow.com/a/8955580
3455
3456
3457function hyphenate(str) {
3458  return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
3459}
3460
3461function getPluginName(obj) {
3462  return hyphenate(obj.className);
3463}
3464
3465
3466
3467/***/ }),
3468
vendor: 7,165 bytes, lines 3469-3651
3469/***/ "./js/foundation.core.utils.js":
3470/*!*************************************!*\
3471  !*** ./js/foundation.core.utils.js ***!
3472  \*************************************/
3473/*! exports provided: rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear */
3474/***/ (function(module, __webpack_exports__, __webpack_require__) {
3475
3476"use strict";
3477__webpack_require__.r(__webpack_exports__);
3478/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rtl", function() { return rtl; });
3479/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GetYoDigits", function() { return GetYoDigits; });
3480/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RegExpEscape", function() { return RegExpEscape; });
3481/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transitionend", function() { return transitionend; });
3482/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onLoad", function() { return onLoad; });
3483/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreMousedisappear", function() { return ignoreMousedisappear; });
3484/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
3485/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
3486
3487
3488 // Core Foundation Utilities, utilized in a number of places.
3489
3490/**
3491 * Returns a boolean for RTL support
3492 */
3493
3494function rtl() {
3495  return jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').attr('dir') === 'rtl';
3496}
3497/**
3498 * returns a random base-36 uid with namespacing
3499 * @function
3500 * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.
3501 * @param {String} namespace - name of plugin to be incorporated in uid, optional.
3502 * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.
3503 * @returns {String} - unique id
3504 */
3505
3506
3507function GetYoDigits() {
3508  var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 6;
3509  var namespace = arguments.length > 1 ? arguments[1] : undefined;
3510  var str = '';
3511  var chars = '0123456789abcdefghijklmnopqrstuvwxyz';
3512  var charsLength = chars.length;
3513
3514  for (var i = 0; i < length; i++) {
3515    str += chars[Math.floor(Math.random() * charsLength)];
3516  }
3517
3518  return namespace ? "".concat(str, "-").concat(namespace) : str;
3519}
3520/**
3521 * Escape a string so it can be used as a regexp pattern
3522 * @function
3523 * @see https://stackoverflow.com/a/9310752/4317384
3524 *
3525 * @param {String} str - string to escape.
3526 * @returns {String} - escaped string
3527 */
3528
3529
3530function RegExpEscape(str) {
3531  return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
3532}
3533
3534function transitionend($elem) {
3535  var transitions = {
3536    'transition': 'transitionend',
3537    'WebkitTransition': 'webkitTransitionEnd',
3538    'MozTransition': 'transitionend',
3539    'OTransition': 'otransitionend'
3540  };
3541  var elem = document.createElement('div'),
3542      end;
3543
3544  for (var transition in transitions) {
3545    if (typeof elem.style[transition] !== 'undefined') {
3546      end = transitions[transition];
3547    }
3548  }
3549
3550  if (end) {
3551    return end;
3552  } else {
3553    setTimeout(function () {
3554      $elem.triggerHandler('transitionend', [$elem]);
3555    }, 1);
3556    return 'transitionend';
3557  }
3558}
3559/**
3560 * Return an event type to listen for window load.
3561 *
3562 * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.
3563 * If `handler` is passed, attach it to the event on `$elem`.
3564 * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.
3565 * @function
3566 *
3567 * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.
3568 * @param {Function} [] handler - function to attach to the event.
3569 * @returns {String} - event type that should or will be triggered.
3570 */
3571
3572
3573function onLoad($elem, handler) {
3574  var didLoad = document.readyState === 'complete';
3575  var eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';
3576
3577  var cb = function cb() {
3578    return $elem.triggerHandler(eventType);
3579  };
3580
3581  if ($elem) {
3582    if (handler) $elem.one(eventType, handler);
3583    if (didLoad) setTimeout(cb);else jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).one('load', cb);
3584  }
3585
3586  return eventType;
3587}
3588/**
3589 * Retuns an handler for the `mouseleave` that ignore disappeared mouses.
3590 *
3591 * If the mouse "disappeared" from the document (like when going on a browser UI element, See https://git.io/zf-11410),
3592 * the event is ignored.
3593 * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window
3594 *   (like by switching to an other window with [Alt]+[Tab]).
3595 * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document
3596 *   outside of the element it left.
3597 *
3598 * @function
3599 *
3600 * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.
3601 * @param {Object} [] options - object of options:
3602 * - {Boolean} [false] ignoreLeaveWindow - also ignore when the user switched windows.
3603 * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.
3604 * @returns {Function} - filtered handler to use to listen on the `mouseleave` event.
3605 */
3606
3607
3608function ignoreMousedisappear(handler) {
3609  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
3610      _ref$ignoreLeaveWindo = _ref.ignoreLeaveWindow,
3611      ignoreLeaveWindow = _ref$ignoreLeaveWindo === void 0 ? false : _ref$ignoreLeaveWindo,
3612      _ref$ignoreReappear = _ref.ignoreReappear,
3613      ignoreReappear = _ref$ignoreReappear === void 0 ? false : _ref$ignoreReappear;
3614
3615  return function leaveEventHandler(eLeave) {
3616    for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
3617      rest[_key - 1] = arguments[_key];
3618    }
3619
3620    var callback = handler.bind.apply(handler, [this, eLeave].concat(rest)); // The mouse left: call the given callback if the mouse entered elsewhere
3621
3622    if (eLeave.relatedTarget !== null) {
3623      return callback();
3624    } // Otherwise, check if the mouse actually left the window.
3625    // In firefox if the user switched between windows, the window sill have the focus by the time
3626    // the event is triggered. We have to debounce the event to test this case.
3627
3628
3629    setTimeout(function leaveEventDebouncer() {
3630      if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {
3631        return callback();
3632      } // Otherwise, wait for the mouse to reeapear outside of the element,
3633
3634
3635      if (!ignoreReappear) {
3636        jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).one('mouseenter', function reenterEventHandler(eReenter) {
3637          if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(eLeave.currentTarget).has(eReenter.target).length) {
3638            // Fill where the mouse finally entered.
3639            eLeave.relatedTarget = eReenter.target;
3640            callback();
3641          }
3642        });
3643      }
3644    }, 0);
3645  };
3646}
3647
3648
3649
3650/***/ }),
3651
vendor: 4,843 bytes, lines 3652-3733
3652/***/ "./js/foundation.drilldown.js":
3653/*!************************************!*\
3654  !*** ./js/foundation.drilldown.js ***!
3655  \************************************/
3656/*! exports provided: Drilldown */
3657/***/ (function(module, __webpack_exports__, __webpack_require__) {
3658
3659"use strict";
3660__webpack_require__.r(__webpack_exports__);
3661/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Drilldown", function() { return Drilldown; });
3662/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
3663/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
3664/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
3665/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.nest */ "./js/foundation.util.nest.js");
3666/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
3667/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.box */ "./js/foundation.util.box.js");
3668/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
3669
3670
3671function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3672
3673function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3674
3675function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
3676
3677function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
3678
3679function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
3680
3681function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
3682
3683function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
3684
3685function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
3686
3687function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
3688
3689
3690
3691
3692
3693
3694
3695/**
3696 * Drilldown module.
3697 * @module foundation.drilldown
3698 * @requires foundation.util.keyboard
3699 * @requires foundation.util.nest
3700 * @requires foundation.util.box
3701 */
3702
3703var Drilldown =
3704/*#__PURE__*/
3705function (_Plugin) {
3706  _inherits(Drilldown, _Plugin);
3707
3708  function Drilldown() {
3709    _classCallCheck(this, Drilldown);
3710
3711    return _possibleConstructorReturn(this, _getPrototypeOf(Drilldown).apply(this, arguments));
3712  }
3713
3714  _createClass(Drilldown, [{
3715    key: "_setup",
3716
3717    /**
3718     * Creates a new instance of a drilldown menu.
3719     * @class
3720     * @name Drilldown
3721     * @param {jQuery} element - jQuery object to make into an accordion menu.
3722     * @param {Object} options - Overrides to the default plugin settings.
3723     */
3724    value: function _setup(element, options) {
3725      this.$element = element;
3726      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Drilldown.defaults, this.$element.data(), options);
3727      this.className = 'Drilldown'; // ie9 back compat
3728
3729      this._init();
3730
3731      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Drilldown', {
3732        'ENTER': 'open',
3733        'SPACE': 'open',
vendor: 9,467 bytes, lines 3734-3997
3734        'ARROW_RIGHT': 'next',
3735        'ARROW_UP': 'up',
3736        'ARROW_DOWN': 'down',
3737        'ARROW_LEFT': 'previous',
3738        'ESCAPE': 'close',
3739        'TAB': 'down',
3740        'SHIFT_TAB': 'up'
3741      });
3742    }
3743    /**
3744     * Initializes the drilldown by creating jQuery collections of elements
3745     * @private
3746     */
3747
3748  }, {
3749    key: "_init",
3750    value: function _init() {
3751      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Feather(this.$element, 'drilldown');
3752
3753      if (this.options.autoApplyClass) {
3754        this.$element.addClass('drilldown');
3755      }
3756
3757      this.$element.attr({
3758        'role': 'tree',
3759        'aria-multiselectable': false
3760      });
3761      this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');
3762      this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');
3763      this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'treeitem').find('a'); // Set the main menu as current by default (unless a submenu is selected)
3764      // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu
3765
3766      this.$currentMenu = this.$element;
3767      this.$element.attr('data-mutate', this.$element.attr('data-drilldown') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'drilldown'));
3768
3769      this._prepareMenu();
3770
3771      this._registerEvents();
3772
3773      this._keyboardEvents();
3774    }
3775    /**
3776     * prepares drilldown menu by setting attributes to links and elements
3777     * sets a min height to prevent content jumping
3778     * wraps the element if not already wrapped
3779     * @private
3780     * @function
3781     */
3782
3783  }, {
3784    key: "_prepareMenu",
3785    value: function _prepareMenu() {
3786      var _this = this; // if(!this.options.holdOpen){
3787      //   this._menuLinkEvents();
3788      // }
3789
3790
3791      this.$submenuAnchors.each(function () {
3792        var $link = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
3793        var $sub = $link.parent();
3794
3795        if (_this.options.parentLink) {
3796          $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="none"></li>');
3797        }
3798
3799        $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);
3800        $link.children('[data-submenu]').attr({
3801          'aria-hidden': true,
3802          'tabindex': 0,
3803          'role': 'group'
3804        });
3805
3806        _this._events($link);
3807      });
3808      this.$submenus.each(function () {
3809        var $menu = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
3810            $back = $menu.find('.js-drilldown-back');
3811
3812        if (!$back.length) {
3813          switch (_this.options.backButtonPosition) {
3814            case "bottom":
3815              $menu.append(_this.options.backButton);
3816              break;
3817
3818            case "top":
3819              $menu.prepend(_this.options.backButton);
3820              break;
3821
3822            default:
3823              console.error("Unsupported backButtonPosition value '" + _this.options.backButtonPosition + "'");
3824          }
3825        }
3826
3827        _this._back($menu);
3828      });
3829      this.$submenus.addClass('invisible');
3830
3831      if (!this.options.autoHeight) {
3832        this.$submenus.addClass('drilldown-submenu-cover-previous');
3833      } // create a wrapper on element if it doesn't exist.
3834
3835
3836      if (!this.$element.parent().hasClass('is-drilldown')) {
3837        this.$wrapper = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.wrapper).addClass('is-drilldown');
3838        if (this.options.animateHeight) this.$wrapper.addClass('animate-height');
3839        this.$element.wrap(this.$wrapper);
3840      } // set wrapper
3841
3842
3843      this.$wrapper = this.$element.parent();
3844      this.$wrapper.css(this._getMaxDims());
3845    }
3846  }, {
3847    key: "_resize",
3848    value: function _resize() {
3849      this.$wrapper.css({
3850        'max-width': 'none',
3851        'min-height': 'none'
3852      }); // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths
3853
3854      this.$wrapper.css(this._getMaxDims());
3855    }
3856    /**
3857     * Adds event handlers to elements in the menu.
3858     * @function
3859     * @private
3860     * @param {jQuery} $elem - the current menu item to add handlers to.
3861     */
3862
3863  }, {
3864    key: "_events",
3865    value: function _events($elem) {
3866      var _this = this;
3867
3868      $elem.off('click.zf.drilldown').on('click.zf.drilldown', function (e) {
3869        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')) {
3870          e.preventDefault();
3871        } // if(e.target !== e.currentTarget.firstElementChild){
3872        //   return false;
3873        // }
3874
3875
3876        _this._show($elem.parent('li'));
3877
3878        if (_this.options.closeOnClick) {
3879          var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');
3880          $body.off('.zf.drilldown').on('click.zf.drilldown', function (e) {
3881            if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target)) {
3882              return;
3883            }
3884
3885            e.preventDefault();
3886
3887            _this._hideAll();
3888
3889            $body.off('.zf.drilldown');
3890          });
3891        }
3892      });
3893    }
3894    /**
3895     * Adds event handlers to the menu element.
3896     * @function
3897     * @private
3898     */
3899
3900  }, {
3901    key: "_registerEvents",
3902    value: function _registerEvents() {
3903      if (this.options.scrollTop) {
3904        this._bindHandler = this._scrollTop.bind(this);
3905        this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown', this._bindHandler);
3906      }
3907
3908      this.$element.on('mutateme.zf.trigger', this._resize.bind(this));
3909    }
3910    /**
3911     * Scroll to Top of Element or data-scroll-top-element
3912     * @function
3913     * @fires Drilldown#scrollme
3914     */
3915
3916  }, {
3917    key: "_scrollTop",
3918    value: function _scrollTop() {
3919      var _this = this;
3920
3921      var $scrollTopElement = _this.options.scrollTopElement != '' ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this.options.scrollTopElement) : _this.$element,
3922          scrollPos = parseInt($scrollTopElement.offset().top + _this.options.scrollTopOffset, 10);
3923      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').stop(true).animate({
3924        scrollTop: scrollPos
3925      }, _this.options.animationDuration, _this.options.animationEasing, function () {
3926        /**
3927          * Fires after the menu has scrolled
3928          * @event Drilldown#scrollme
3929          */
3930        if (this === jquery__WEBPACK_IMPORTED_MODULE_0___default()('html')[0]) _this.$element.trigger('scrollme.zf.drilldown');
3931      });
3932    }
3933    /**
3934     * Adds keydown event listener to `li`'s in the menu.
3935     * @private
3936     */
3937
3938  }, {
3939    key: "_keyboardEvents",
3940    value: function _keyboardEvents() {
3941      var _this = this;
3942
3943      this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function (e) {
3944        var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
3945            $elements = $element.parent('li').parent('ul').children('li').children('a'),
3946            $prevElement,
3947            $nextElement;
3948        $elements.each(function (i) {
3949          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
3950            $prevElement = $elements.eq(Math.max(0, i - 1));
3951            $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1));
3952            return;
3953          }
3954        });
3955        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Drilldown', {
3956          next: function next() {
3957            if ($element.is(_this.$submenuAnchors)) {
3958              _this._show($element.parent('li'));
3959
3960              $element.parent('li').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () {
3961                $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();
3962              });
3963              return true;
3964            }
3965          },
3966          previous: function previous() {
3967            _this._hide($element.parent('li').parent('ul'));
3968
3969            $element.parent('li').parent('ul').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () {
3970              setTimeout(function () {
3971                $element.parent('li').parent('ul').parent('li').children('a').first().focus();
3972              }, 1);
3973            });
3974            return true;
3975          },
3976          up: function up() {
3977            $prevElement.focus(); // Don't tap focus on first element in root ul
3978
3979            return !$element.is(_this.$element.find('> li:first-child > a'));
3980          },
3981          down: function down() {
3982            $nextElement.focus(); // Don't tap focus on last element in root ul
3983
3984            return !$element.is(_this.$element.find('> li:last-child > a'));
3985          },
3986          close: function close() {
3987            // Don't close on element in root ul
3988            if (!$element.is(_this.$element.find('> li > a'))) {
3989              _this._hide($element.parent().parent());
3990
3991              $element.parent().parent().siblings('a').focus();
3992            }
3993          },
3994          open: function open() {
3995            if (_this.options.parentLink && $element.attr('href')) {
3996              // Link with href
3997              return false;
vendor: 4,589 bytes, lines 3998-4143
3998            } else if (!$element.is(_this.$menuItems)) {
3999              // not menu item means back button
4000              _this._hide($element.parent('li').parent('ul'));
4001
4002              $element.parent('li').parent('ul').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () {
4003                setTimeout(function () {
4004                  $element.parent('li').parent('ul').parent('li').children('a').first().focus();
4005                }, 1);
4006              });
4007              return true;
4008            } else if ($element.is(_this.$submenuAnchors)) {
4009              // Sub menu item
4010              _this._show($element.parent('li'));
4011
4012              $element.parent('li').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () {
4013                $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();
4014              });
4015              return true;
4016            }
4017          },
4018          handled: function handled(preventDefault) {
4019            if (preventDefault) {
4020              e.preventDefault();
4021            }
4022          }
4023        });
4024      }); // end keyboardAccess
4025    }
4026    /**
4027     * Closes all open elements, and returns to root menu.
4028     * @function
4029     * @fires Drilldown#close
4030     * @fires Drilldown#closed
4031     */
4032
4033  }, {
4034    key: "_hideAll",
4035    value: function _hideAll() {
4036      var _this2 = this;
4037
4038      var $elem = this.$element.find('.is-drilldown-submenu.is-active');
4039      $elem.addClass('is-closing');
4040
4041      if (this.options.autoHeight) {
4042        var calcHeight = $elem.parent().closest('ul').data('calcHeight');
4043        this.$wrapper.css({
4044          height: calcHeight
4045        });
4046      }
4047      /**
4048       * Fires when the menu is closing.
4049       * @event Drilldown#close
4050       */
4051
4052
4053      this.$element.trigger('close.zf.drilldown');
4054      $elem.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($elem), function () {
4055        $elem.removeClass('is-active is-closing');
4056        /**
4057         * Fires when the menu is fully closed.
4058         * @event Drilldown#closed
4059         */
4060
4061        _this2.$element.trigger('closed.zf.drilldown');
4062      });
4063    }
4064    /**
4065     * Adds event listener for each `back` button, and closes open menus.
4066     * @function
4067     * @fires Drilldown#back
4068     * @param {jQuery} $elem - the current sub-menu to add `back` event.
4069     */
4070
4071  }, {
4072    key: "_back",
4073    value: function _back($elem) {
4074      var _this = this;
4075
4076      $elem.off('click.zf.drilldown');
4077      $elem.children('.js-drilldown-back').on('click.zf.drilldown', function (e) {
4078        // console.log('mouseup on back');
4079        _this._hide($elem); // If there is a parent submenu, call show
4080
4081
4082        var parentSubMenu = $elem.parent('li').parent('ul').parent('li');
4083
4084        if (parentSubMenu.length) {
4085          _this._show(parentSubMenu);
4086        }
4087      });
4088    }
4089    /**
4090     * Adds event listener to menu items w/o submenus to close open menus on click.
4091     * @function
4092     * @private
4093     */
4094
4095  }, {
4096    key: "_menuLinkEvents",
4097    value: function _menuLinkEvents() {
4098      var _this = this;
4099
4100      this.$menuItems.not('.is-drilldown-submenu-parent').off('click.zf.drilldown').on('click.zf.drilldown', function (e) {
4101        setTimeout(function () {
4102          _this._hideAll();
4103        }, 0);
4104      });
4105    }
4106    /**
4107     * Sets the CSS classes for submenu to show it.
4108     * @function
4109     * @private
4110     * @param {jQuery} $elem - the target submenu (`ul` tag)
4111     * @param {boolean} trigger - trigger drilldown event
4112     */
4113
4114  }, {
4115    key: "_setShowSubMenuClasses",
4116    value: function _setShowSubMenuClasses($elem, trigger) {
4117      $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);
4118      $elem.parent('li').attr('aria-expanded', true);
4119
4120      if (trigger === true) {
4121        this.$element.trigger('open.zf.drilldown', [$elem]);
4122      }
4123    }
4124    /**
4125     * Sets the CSS classes for submenu to hide it.
4126     * @function
4127     * @private
4128     * @param {jQuery} $elem - the target submenu (`ul` tag)
4129     * @param {boolean} trigger - trigger drilldown event
4130     */
4131
4132  }, {
4133    key: "_setHideSubMenuClasses",
4134    value: function _setHideSubMenuClasses($elem, trigger) {
4135      $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);
4136      $elem.parent('li').attr('aria-expanded', false);
4137
4138      if (trigger === true) {
4139        $elem.trigger('hide.zf.drilldown', [$elem]);
4140      }
4141    }
4142    /**
4143     * Opens a specific drilldown (sub)menu no matter which (sub)menu in 
vendor: 6,468 bytes, lines 4143-4312
4143it is currently visible.
4144     * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.
4145     * @function
4146     * @fires Drilldown#open
4147     * @param {jQuery} $elem - the target (sub)menu (`ul` tag)
4148     * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused
4149     */
4150
4151  }, {
4152    key: "_showMenu",
4153    value: function _showMenu($elem, autoFocus) {
4154      var _this = this; // Reset drilldown
4155
4156
4157      var $expandedSubmenus = this.$element.find('li[aria-expanded="true"] > ul[data-submenu]');
4158      $expandedSubmenus.each(function (index) {
4159        _this._setHideSubMenuClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
4160      }); // Save the menu as the currently displayed one.
4161
4162      this.$currentMenu = $elem; // If target menu is root, focus first link & exit
4163
4164      if ($elem.is('[data-drilldown]')) {
4165        if (autoFocus === true) $elem.find('li[role="treeitem"] > a').first().focus();
4166        if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));
4167        return;
4168      } // Find all submenus on way to root incl. the element itself
4169
4170
4171      var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]'); // Open target menu and all submenus on its way to root
4172
4173      $submenus.each(function (index) {
4174        // Update height of first child (target menu) if autoHeight option true
4175        if (index === 0 && _this.options.autoHeight) {
4176          _this.$wrapper.css('height', jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('calcHeight'));
4177        }
4178
4179        var isLastChild = index == $submenus.length - 1; // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link
4180        // Last child makes sure the event gets always triggered even if going through several menus
4181
4182        if (isLastChild === true) {
4183          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)), function () {
4184            if (autoFocus === true) {
4185              $elem.find('li[role="treeitem"] > a').first().focus();
4186            }
4187          });
4188        }
4189
4190        _this._setShowSubMenuClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), isLastChild);
4191      });
4192    }
4193    /**
4194     * Opens a submenu.
4195     * @function
4196     * @fires Drilldown#open
4197     * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.
4198     */
4199
4200  }, {
4201    key: "_show",
4202    value: function _show($elem) {
4203      var $submenu = $elem.children('[data-submenu]');
4204      $elem.attr('aria-expanded', true);
4205      this.$currentMenu = $submenu;
4206      $submenu.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);
4207
4208      if (this.options.autoHeight) {
4209        this.$wrapper.css({
4210          height: $submenu.data('calcHeight')
4211        });
4212      }
4213      /**
4214       * Fires when the submenu has opened.
4215       * @event Drilldown#open
4216       */
4217
4218
4219      this.$element.trigger('open.zf.drilldown', [$elem]);
4220    }
4221    /**
4222     * Hides a submenu
4223     * @function
4224     * @fires Drilldown#hide
4225     * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.
4226     */
4227
4228  }, {
4229    key: "_hide",
4230    value: function _hide($elem) {
4231      if (this.options.autoHeight) this.$wrapper.css({
4232        height: $elem.parent().closest('ul').data('calcHeight')
4233      });
4234
4235      var _this = this;
4236
4237      $elem.parent('li').attr('aria-expanded', false);
4238      $elem.attr('aria-hidden', true);
4239      $elem.addClass('is-closing').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($elem), function () {
4240        $elem.removeClass('is-active is-closing');
4241        $elem.blur().addClass('invisible');
4242      });
4243      /**
4244       * Fires when the submenu has closed.
4245       * @event Drilldown#hide
4246       */
4247
4248      $elem.trigger('hide.zf.drilldown', [$elem]);
4249    }
4250    /**
4251     * Iterates through the nested menus to calculate the min-height, and max-width for the menu.
4252     * Prevents content jumping.
4253     * @function
4254     * @private
4255     */
4256
4257  }, {
4258    key: "_getMaxDims",
4259    value: function _getMaxDims() {
4260      var maxHeight = 0,
4261          result = {},
4262          _this = this; // Recalculate menu heights and total max height
4263
4264
4265      this.$submenus.add(this.$element).each(function () {
4266        var numOfElems = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('li').length;
4267        var height = _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__["Box"].GetDimensions(this).height;
4268        maxHeight = height > maxHeight ? height : maxHeight;
4269
4270        if (_this.options.autoHeight) {
4271          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('calcHeight', height);
4272        }
4273      });
4274      if (this.options.autoHeight) result['height'] = this.$currentMenu.data('calcHeight');else result['min-height'] = "".concat(maxHeight, "px");
4275      result['max-width'] = "".concat(this.$element[0].getBoundingClientRect().width, "px");
4276      return result;
4277    }
4278    /**
4279     * Destroys the Drilldown Menu
4280     * @function
4281     */
4282
4283  }, {
4284    key: "_destroy",
4285    value: function _destroy() {
4286      if (this.options.scrollTop) this.$element.off('.zf.drilldown', this._bindHandler);
4287
4288      this._hideAll();
4289
4290      this.$element.off('mutateme.zf.trigger');
4291      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Burn(this.$element, 'drilldown');
4292      this.$element.unwrap().find('.js-drilldown-back, .is-submenu-parent-item').remove().end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');
4293      this.$submenuAnchors.each(function () {
4294        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).off('.zf.drilldown');
4295      });
4296      this.$element.find('[data-is-parent-link]').detach();
4297      this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');
4298      this.$element.find('a').each(function () {
4299        var $link = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
4300        $link.removeAttr('tabindex');
4301
4302        if ($link.data('savedHref')) {
4303          $link.attr('href', $link.data('savedHref')).removeData('savedHref');
4304        } else {
4305          return;
4306        }
4307      });
4308    }
4309  }]);
4310
4311  return Drilldown;
4312}
4312(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_5__["Plugin"]);
4313
4314Drilldown.defaults = {
4315  /**
4316   * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are
4317   * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.
4318   * @option
4319   * @type {boolean}
4320   * @default true
4321   */
4322  autoApplyClass: true,
4323
4324  /**
4325   * 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.
4326   * @option
4327   * @type {string}
4328   * @default '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>'
4329   */
4330  backButton: '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>',
4331
4332  /**
4333   * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.
4334   * @option
4335   * @type {string}
4336   * @default top
4337   */
4338  backButtonPosition: 'top',
4339
4340  /**
4341   * 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.
4342   * @option
4343   * @type {string}
4344   * @default '<div></div>'
4345   */
4346  wrapper: '<div></div>',
4347
4348  /**
4349   * Adds the parent link to the submenu.
4350   * @option
4351   * @type {boolean}
4352   * @default false
4353   */
4354  parentLink: false,
4355
4356  /**
4357   * Allow the menu to return to root list on body click.
4358   * @option
4359   * @type {boolean}
4360   * @default false
4361   */
4362  closeOnClick: false,
4363
4364  /**
4365   * Allow the menu to auto adjust height.
4366   * @option
4367   * @type {boolean}
4368   * @default false
4369   */
4370  autoHeight: false,
4371
4372  /**
4373   * Animate the auto adjust height.
4374   * @option
4375   * @type {boolean}
4376   * @default false
4377   */
4378  animateHeight: false,
4379
4380  /**
4381   * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button
4382   * @option
4383   * @type {boolean}
4384   * @default false
4385   */
4386  scrollTop: false,
4387
4388  /**
4389   * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken
4390   * @option
4391   * @type {string}
4392   * @default ''
4393   */
4394  scrollTopElement: '',
4395
4396  /**
4397   * ScrollTop offset
4398   * @option
4399   * @type {number}
4400   * @default 0
4401   */
4402  scrollTopOffset: 0,
4403
4404  /**
4405   * Scroll animation duration
4406   * @option
4407   * @type {number}
4408   * @default 500
4409   */
4410  animationDuration: 500,
4411
4412  /**
4413   * Scroll animation easing. Can be `'swing'` or `'linear'`.
4414   * @option
4415   * @type {string}
4416   * @see {@link https://api.jquery.com/animate|JQuery animate}
4417   * @default 'swing'
4418   */
4419  animationEasing: 'swing' // holdOpen: false
4420
4421};
4422
4423
4424/***/ }),
4425
vendor: 5,058 bytes, lines 4426-4501
4426/***/ "./js/foundation.dropdown.js":
4427/*!***********************************!*\
4428  !*** ./js/foundation.dropdown.js ***!
4429  \***********************************/
4430/*! exports provided: Dropdown */
4431/***/ (function(module, __webpack_exports__, __webpack_require__) {
4432
4433"use strict";
4434__webpack_require__.r(__webpack_exports__);
4435/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Dropdown", function() { return Dropdown; });
4436/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
4437/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
4438/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
4439/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
4440/* harmony import */ var _foundation_positionable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.positionable */ "./js/foundation.positionable.js");
4441/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
4442/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.touch */ "./js/foundation.util.touch.js");
4443
4444
4445function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4446
4447function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4448
4449function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
4450
4451function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
4452
4453function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
4454
4455function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
4456
4457function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
4458
4459function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
4460
4461function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
4462
4463function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
4464
4465function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
4466
4467
4468
4469
4470
4471
4472
4473/**
4474 * Dropdown module.
4475 * @module foundation.dropdown
4476 * @requires foundation.util.keyboard
4477 * @requires foundation.util.box
4478 * @requires foundation.util.touch
4479 * @requires foundation.util.triggers
4480 */
4481
4482var Dropdown =
4483/*#__PURE__*/
4484function (_Positionable) {
4485  _inherits(Dropdown, _Positionable);
4486
4487  function Dropdown() {
4488    _classCallCheck(this, Dropdown);
4489
4490    return _possibleConstructorReturn(this, _getPrototypeOf(Dropdown).apply(this, arguments));
4491  }
4492
4493  _createClass(Dropdown, [{
4494    key: "_setup",
4495
4496    /**
4497     * Creates a new instance of a dropdown.
4498     * @class
4499     * @name Dropdown
4500     * @param {jQuery} element - jQuery object to make into a dropdown.
4501     *        Object should be of the dropdown panel, rather than 
4501its anchor.
4502     * @param {Object} options - Overrides to the default plugin settings.
4503     */
4504    value: function _setup(element, options) {
4505      this.$element = element;
4506      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Dropdown.defaults, this.$element.data(), options);
4507      this.className = 'Dropdown'; // ie9 back compat
4508      // Touch and Triggers init are idempotent, just need to make sure they are initialized
4509
4510      _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
4511      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
4512
4513      this._init();
4514
4515      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Dropdown', {
4516        'ENTER': 'toggle',
4517        'SPACE': 'toggle',
4518        'ESCAPE': 'close'
4519      });
4520    }
4521    /**
4522     * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.
4523     * @function
4524     * @private
4525     */
4526
4527  }, {
4528    key: "_init",
4529    value: function _init() {
4530      var $id = this.$element.attr('id');
4531      this.$anchors = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat($id, "\"]")).length ? jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat($id, "\"]")) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat($id, "\"]"));
4532      this.$anchors.attr({
4533        'aria-controls': $id,
4534        'data-is-focus': false,
4535        'data-yeti-box': $id,
4536        'aria-haspopup': true,
4537        'aria-expanded': false
4538      });
4539
4540      this._setCurrentAnchor(this.$anchors.first());
4541
4542      if (this.options.parentClass) {
4543        this.$parent = this.$element.parents('.' + this.options.parentClass);
4544      } else {
4545        this.$parent = null;
4546      } // Set [aria-labelledby] on the Dropdown if it is not set
4547
4548
4549      if (typeof this.$element.attr('aria-labelledby') === 'undefined') {
4550        // Get the anchor ID or create one
4551        if (typeof this.$currentAnchor.attr('id') === 'undefined') {
4552          this.$currentAnchor.attr('id', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'dd-anchor'));
4553        }
4554
4555        this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));
4556      }
4557
4558      this.$element.attr({
4559        'aria-hidden': 'true',
4560        'data-yeti-box': $id,
4561        'data-resize': $id
4562      });
4563
4564      _get(_getPrototypeOf(Dropdown.prototype), "_init", this).call(this);
4565
4566      this._events();
4567    }
4568  }, {
4569    key: "_getDefaultPosition",
4570    value: function _getDefaultPosition() {
4571      // handle legacy classnames
4572      var position = this.$element[0].className.match(/(top|left|right|bottom)/g);
4573
4574      if (position) {
4575        return position[0];
4576      } else {
4577        return 'bottom';
4578      }
4579    }
4580  }, {
4581    key: "_getDefaultAlignment",
4582    value: function _getDefaultAlignment() {
4583      // handle legacy float approach
4584      var horizontalPosition = /float-(\S+)/.exec(this.$currentAnchor.attr('class'));
4585
4586      if (horizontalPosition) {
4587        return horizontalPosition[1];
4588      }
4589
4590      return _get(_getPrototypeOf(Dropdown.prototype), "_getDefaultAlignment", this).call(this);
4591    }
4592    /**
4593     * Sets the position and orientation of the dropdown pane, checks for collisions if allow-overlap is not true.
4594     * Recursively calls itself if a collision is detected, with a new position class.
4595     * @function
4596     * @private
4597     */
4598
4599  }, {
4600    key: "_setPosition",
4601    value: function _setPosition() {
4602      this.$element.removeClass("has-position-".concat(this.position, " has-alignment-").concat(this.alignment));
4603
4604      _get(_getPrototypeOf(Dropdown.prototype), "_setPosition", this).call(this, this.$currentAnchor, this.$element, this.$parent);
4605
4606      this.$element.addClass("has-position-".concat(this.position, " has-alignment-").concat(this.alignment));
4607    }
4608    /**
4609     * Make it a current anchor.
4610     * Current anchor as the reference for the position of Dropdown panes.
4611     * @param {HTML}
vendor: 5,268 bytes, lines 4611-4763
4611 el - DOM element of the anchor.
4612     * @function
4613     * @private
4614     */
4615
4616  }, {
4617    key: "_setCurrentAnchor",
4618    value: function _setCurrentAnchor(el) {
4619      this.$currentAnchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el);
4620    }
4621    /**
4622     * Adds event listeners to the element utilizing the triggers utility library.
4623     * @function
4624     * @private
4625     */
4626
4627  }, {
4628    key: "_events",
4629    value: function _events() {
4630      var _this = this,
4631          hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined';
4632
4633      this.$element.on({
4634        'open.zf.trigger': this.open.bind(this),
4635        'close.zf.trigger': this.close.bind(this),
4636        'toggle.zf.trigger': this.toggle.bind(this),
4637        'resizeme.zf.trigger': this._setPosition.bind(this)
4638      });
4639      this.$anchors.off('click.zf.trigger').on('click.zf.trigger', function (e) {
4640        _this._setCurrentAnchor(this);
4641
4642        if ( // if forceFollow false, always prevent default action
4643        _this.options.forceFollow === false || // if forceFollow true and hover option true, only prevent default action on 1st click
4644        // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed
4645        hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false) {
4646          e.preventDefault();
4647        }
4648      });
4649
4650      if (this.options.hover) {
4651        this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () {
4652          _this._setCurrentAnchor(this);
4653
4654          var bodyData = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').data();
4655
4656          if (typeof bodyData.whatinput === 'undefined' || bodyData.whatinput === 'mouse') {
4657            clearTimeout(_this.timeout);
4658            _this.timeout = setTimeout(function () {
4659              _this.open();
4660
4661              _this.$anchors.data('hover', true);
4662            }, _this.options.hoverDelay);
4663          }
4664        }).on('mouseleave.zf.dropdown', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["ignoreMousedisappear"])(function () {
4665          clearTimeout(_this.timeout);
4666          _this.timeout = setTimeout(function () {
4667            _this.close();
4668
4669            _this.$anchors.data('hover', false);
4670          }, _this.options.hoverDelay);
4671        }));
4672
4673        if (this.options.hoverPane) {
4674          this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () {
4675            clearTimeout(_this.timeout);
4676          }).on('mouseleave.zf.dropdown', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["ignoreMousedisappear"])(function () {
4677            clearTimeout(_this.timeout);
4678            _this.timeout = setTimeout(function () {
4679              _this.close();
4680
4681              _this.$anchors.data('hover', false);
4682            }, _this.options.hoverDelay);
4683          }));
4684        }
4685      }
4686
4687      this.$anchors.add(this.$element).on('keydown.zf.dropdown', function (e) {
4688        var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
4689            visibleFocusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].findFocusable(_this.$element);
4690        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Dropdown', {
4691          open: function open() {
4692            if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {
4693              _this.open();
4694
4695              _this.$element.attr('tabindex', -1).focus();
4696
4697              e.preventDefault();
4698            }
4699          },
4700          close: function close() {
4701            _this.close();
4702
4703            _this.$anchors.focus();
4704          }
4705        });
4706      });
4707    }
4708    /**
4709     * Adds an event handler to the body to close any dropdowns on a click.
4710     * @function
4711     * @private
4712     */
4713
4714  }, {
4715    key: "_addBodyHandler",
4716    value: function _addBodyHandler() {
4717      var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).not(this.$element),
4718          _this = this;
4719
4720      $body.off('click.zf.dropdown tap.zf.dropdown').on('click.zf.dropdown tap.zf.dropdown', function (e) {
4721        if (_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {
4722          return;
4723        }
4724
4725        if (_this.$element.is(e.target) || _this.$element.find(e.target).length) {
4726          return;
4727        }
4728
4729        _this.close();
4730
4731        $body.off('click.zf.dropdown tap.zf.dropdown');
4732      });
4733    }
4734    /**
4735     * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.
4736     * @function
4737     * @fires Dropdown#closeme
4738     * @fires Dropdown#show
4739     */
4740
4741  }, {
4742    key: "open",
4743    value: function open() {
4744      // var _this = this;
4745
4746      /**
4747       * Fires to close other open dropdowns, typically when dropdown is opening
4748       * @event Dropdown#closeme
4749       */
4750      this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));
4751      this.$anchors.addClass('hover').attr({
4752        'aria-expanded': true
4753      }); // this.$element/*.show()*/;
4754
4755      this.$element.addClass('is-opening');
4756
4757      this._setPosition();
4758
4759      this.$element.removeClass('is-opening').addClass('is-open').attr({
4760        'aria-hidden': false
4761      });
4762
4763      if (this.options.autoFocus) {
vendor: 4,783 bytes, lines 4764-4964
4764        var $focusable = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].findFocusable(this.$element);
4765
4766        if ($focusable.length) {
4767          $focusable.eq(0).focus();
4768        }
4769      }
4770
4771      if (this.options.closeOnClick) {
4772        this._addBodyHandler();
4773      }
4774
4775      if (this.options.trapFocus) {
4776        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].trapFocus(this.$element);
4777      }
4778      /**
4779       * Fires once the dropdown is visible.
4780       * @event Dropdown#show
4781       */
4782
4783
4784      this.$element.trigger('show.zf.dropdown', [this.$element]);
4785    }
4786    /**
4787     * Closes the open dropdown pane.
4788     * @function
4789     * @fires Dropdown#hide
4790     */
4791
4792  }, {
4793    key: "close",
4794    value: function close() {
4795      if (!this.$element.hasClass('is-open')) {
4796        return false;
4797      }
4798
4799      this.$element.removeClass('is-open').attr({
4800        'aria-hidden': true
4801      });
4802      this.$anchors.removeClass('hover').attr('aria-expanded', false);
4803      /**
4804       * Fires once the dropdown is no longer visible.
4805       * @event Dropdown#hide
4806       */
4807
4808      this.$element.trigger('hide.zf.dropdown', [this.$element]);
4809
4810      if (this.options.trapFocus) {
4811        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].releaseFocus(this.$element);
4812      }
4813    }
4814    /**
4815     * Toggles the dropdown pane's visibility.
4816     * @function
4817     */
4818
4819  }, {
4820    key: "toggle",
4821    value: function toggle() {
4822      if (this.$element.hasClass('is-open')) {
4823        if (this.$anchors.data('hover')) return;
4824        this.close();
4825      } else {
4826        this.open();
4827      }
4828    }
4829    /**
4830     * Destroys the dropdown.
4831     * @function
4832     */
4833
4834  }, {
4835    key: "_destroy",
4836    value: function _destroy() {
4837      this.$element.off('.zf.trigger').hide();
4838      this.$anchors.off('.zf.dropdown');
4839      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('click.zf.dropdown tap.zf.dropdown');
4840    }
4841  }]);
4842
4843  return Dropdown;
4844}(_foundation_positionable__WEBPACK_IMPORTED_MODULE_3__["Positionable"]);
4845
4846Dropdown.defaults = {
4847  /**
4848   * Class that designates bounding container of Dropdown (default: window)
4849   * @option
4850   * @type {?string}
4851   * @default null
4852   */
4853  parentClass: null,
4854
4855  /**
4856   * Amount of time to delay opening a submenu on hover event.
4857   * @option
4858   * @type {number}
4859   * @default 250
4860   */
4861  hoverDelay: 250,
4862
4863  /**
4864   * Allow submenus to open on hover events
4865   * @option
4866   * @type {boolean}
4867   * @default false
4868   */
4869  hover: false,
4870
4871  /**
4872   * Don't close dropdown when hovering over dropdown pane
4873   * @option
4874   * @type {boolean}
4875   * @default false
4876   */
4877  hoverPane: false,
4878
4879  /**
4880   * Number of pixels between the dropdown pane and the triggering element on open.
4881   * @option
4882   * @type {number}
4883   * @default 0
4884   */
4885  vOffset: 0,
4886
4887  /**
4888   * Number of pixels between the dropdown pane and the triggering element on open.
4889   * @option
4890   * @type {number}
4891   * @default 0
4892   */
4893  hOffset: 0,
4894
4895  /**
4896   * Position of dropdown. Can be left, right, bottom, top, or auto.
4897   * @option
4898   * @type {string}
4899   * @default 'auto'
4900   */
4901  position: 'auto',
4902
4903  /**
4904   * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.
4905   * @option
4906   * @type {string}
4907   * @default 'auto'
4908   */
4909  alignment: 'auto',
4910
4911  /**
4912   * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.
4913   * @option
4914   * @type {boolean}
4915   * @default false
4916   */
4917  allowOverlap: false,
4918
4919  /**
4920   * Allow overlap of only the bottom of the container. This is the most common
4921   * behavior for dropdowns, allowing the dropdown to extend the bottom of the
4922   * screen but not otherwise influence or break out of the container.
4923   * @option
4924   * @type {boolean}
4925   * @default true
4926   */
4927  allowBottomOverlap: true,
4928
4929  /**
4930   * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.
4931   * @option
4932   * @type {boolean}
4933   * @default false
4934   */
4935  trapFocus: false,
4936
4937  /**
4938   * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.
4939   * @option
4940   * @type {boolean}
4941   * @default false
4942   */
4943  autoFocus: false,
4944
4945  /**
4946   * Allows a click on the body to close the dropdown.
4947   * @option
4948   * @type {boolean}
4949   * @default false
4950   */
4951  closeOnClick: false,
4952
4953  /**
4954   * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click.
4955   * @option
4956   * @type {boolean}
4957   * @default true
4958   */
4959  forceFollow: true
4960};
4961
4962
4963/***/ }),
4964
vendor: 5,147 bytes, lines 4965-5046
4965/***/ "./js/foundation.dropdownMenu.js":
4966/*!***************************************!*\
4967  !*** ./js/foundation.dropdownMenu.js ***!
4968  \***************************************/
4969/*! exports provided: DropdownMenu */
4970/***/ (function(module, __webpack_exports__, __webpack_require__) {
4971
4972"use strict";
4973__webpack_require__.r(__webpack_exports__);
4974/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DropdownMenu", function() { return DropdownMenu; });
4975/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
4976/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
4977/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
4978/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
4979/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
4980/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.nest */ "./js/foundation.util.nest.js");
4981/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.box */ "./js/foundation.util.box.js");
4982/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./foundation.util.touch */ "./js/foundation.util.touch.js");
4983
4984
4985function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4986
4987function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4988
4989function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
4990
4991function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
4992
4993function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
4994
4995function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
4996
4997function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
4998
4999function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
5000
5001function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
5002
5003
5004
5005
5006
5007
5008
5009
5010/**
5011 * DropdownMenu module.
5012 * @module foundation.dropdownMenu
5013 * @requires foundation.util.keyboard
5014 * @requires foundation.util.box
5015 * @requires foundation.util.nest
5016 * @requires foundation.util.touch
5017 */
5018
5019var DropdownMenu =
5020/*#__PURE__*/
5021function (_Plugin) {
5022  _inherits(DropdownMenu, _Plugin);
5023
5024  function DropdownMenu() {
5025    _classCallCheck(this, DropdownMenu);
5026
5027    return _possibleConstructorReturn(this, _getPrototypeOf(DropdownMenu).apply(this, arguments));
5028  }
5029
5030  _createClass(DropdownMenu, [{
5031    key: "_setup",
5032
5033    /**
5034     * Creates a new instance of DropdownMenu.
5035     * @class
5036     * @name DropdownMenu
5037     * @fires DropdownMenu#init
5038     * @param {jQuery} element - jQuery object to make into a dropdown menu.
5039     * @param {Object} options - Overrides to the default plugin settings.
5040     */
5041    value: function _setup(element, options) {
5042      this.$element = element;
5043      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, DropdownMenu.defaults, this.$element.data(), options);
5044      this.className = 'DropdownMenu'; // ie9 back compat
5045
5046      _foundation_util_touch__WEBPACK_IMPORTED_MODULE_6__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); // Touch init is idempotent, we just need to make sure it's initialied.
vendor: 15,615 bytes, lines 5047-5543
5047
5048      this._init();
5049
5050      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].register('DropdownMenu', {
5051        'ENTER': 'open',
5052        'SPACE': 'open',
5053        'ARROW_RIGHT': 'next',
5054        'ARROW_UP': 'up',
5055        'ARROW_DOWN': 'down',
5056        'ARROW_LEFT': 'previous',
5057        'ESCAPE': 'close'
5058      });
5059    }
5060    /**
5061     * Initializes the plugin, and calls _prepareMenu
5062     * @private
5063     * @function
5064     */
5065
5066  }, {
5067    key: "_init",
5068    value: function _init() {
5069      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_4__["Nest"].Feather(this.$element, 'dropdown');
5070      var subs = this.$element.find('li.is-dropdown-submenu-parent');
5071      this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');
5072      this.$menuItems = this.$element.find('li[role="none"]');
5073      this.$tabs = this.$element.children('li[role="none"]');
5074      this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);
5075
5076      if (this.options.alignment === 'auto') {
5077        if (this.$element.hasClass(this.options.rightClass) || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["rtl"])() || this.$element.parents('.top-bar-right').is('*')) {
5078          this.options.alignment = 'right';
5079          subs.addClass('opens-left');
5080        } else {
5081          this.options.alignment = 'left';
5082          subs.addClass('opens-right');
5083        }
5084      } else {
5085        if (this.options.alignment === 'right') {
5086          subs.addClass('opens-left');
5087        } else {
5088          subs.addClass('opens-right');
5089        }
5090      }
5091
5092      this.changed = false;
5093
5094      this._events();
5095    }
5096  }, {
5097    key: "_isVertical",
5098    value: function _isVertical() {
5099      return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';
5100    }
5101  }, {
5102    key: "_isRtl",
5103    value: function _isRtl() {
5104      return this.$element.hasClass('align-right') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["rtl"])() && !this.$element.hasClass('align-left');
5105    }
5106    /**
5107     * Adds event listeners to elements within the menu
5108     * @private
5109     * @function
5110     */
5111
5112  }, {
5113    key: "_events",
5114    value: function _events() {
5115      var _this = this,
5116          hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined',
5117          parClass = 'is-dropdown-submenu-parent'; // used for onClick and in the keyboard handlers
5118
5119
5120      var handleClickFn = function handleClickFn(e) {
5121        var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', ".".concat(parClass)),
5122            hasSub = $elem.hasClass(parClass),
5123            hasClicked = $elem.attr('data-is-click') === 'true',
5124            $sub = $elem.children('.is-dropdown-submenu');
5125
5126        if (hasSub) {
5127          if (hasClicked) {
5128            if (!_this.options.closeOnClick || !_this.options.clickOpen && !hasTouch || _this.options.forceFollow && hasTouch) {
5129              return;
5130            }
5131
5132            e.stopImmediatePropagation();
5133            e.preventDefault();
5134
5135            _this._hide($elem);
5136          } else {
5137            e.stopImmediatePropagation();
5138            e.preventDefault();
5139
5140            _this._show($sub);
5141
5142            $elem.add($elem.parentsUntil(_this.$element, ".".concat(parClass))).attr('data-is-click', true);
5143          }
5144        }
5145      };
5146
5147      if (this.options.clickOpen || hasTouch) {
5148        this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClickFn);
5149      } // Handle Leaf element Clicks
5150
5151
5152      if (_this.options.closeOnClickInside) {
5153        this.$menuItems.on('click.zf.dropdownMenu', function (e) {
5154          var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
5155              hasSub = $elem.hasClass(parClass);
5156
5157          if (!hasSub) {
5158            _this._hide();
5159          }
5160        });
5161      }
5162
5163      if (!this.options.disableHover) {
5164        this.$menuItems.on('mouseenter.zf.dropdownMenu', function (e) {
5165          var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
5166              hasSub = $elem.hasClass(parClass);
5167
5168          if (hasSub) {
5169            clearTimeout($elem.data('_delay'));
5170            $elem.data('_delay', setTimeout(function () {
5171              _this._show($elem.children('.is-dropdown-submenu'));
5172            }, _this.options.hoverDelay));
5173          }
5174        }).on('mouseleave.zf.dropdownMenu', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["ignoreMousedisappear"])(function (e) {
5175          var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
5176              hasSub = $elem.hasClass(parClass);
5177
5178          if (hasSub && _this.options.autoclose) {
5179            if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) {
5180              return false;
5181            }
5182
5183            clearTimeout($elem.data('_delay'));
5184            $elem.data('_delay', setTimeout(function () {
5185              _this._hide($elem);
5186            }, _this.options.closingTime));
5187          }
5188        }));
5189      }
5190
5191      this.$menuItems.on('keydown.zf.dropdownMenu', function (e) {
5192        var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', '[role="none"]'),
5193            isTab = _this.$tabs.index($element) > -1,
5194            $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),
5195            $prevElement,
5196            $nextElement;
5197        $elements.each(function (i) {
5198          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
5199            $prevElement = $elements.eq(i - 1);
5200            $nextElement = $elements.eq(i + 1);
5201            return;
5202          }
5203        });
5204
5205        var nextSibling = function nextSibling() {
5206          $nextElement.children('a:first').focus();
5207          e.preventDefault();
5208        },
5209            prevSibling = function prevSibling() {
5210          $prevElement.children('a:first').focus();
5211          e.preventDefault();
5212        },
5213            openSub = function openSub() {
5214          var $sub = $element.children('ul.is-dropdown-submenu');
5215
5216          if ($sub.length) {
5217            _this._show($sub);
5218
5219            $element.find('li > a:first').focus();
5220            e.preventDefault();
5221          } else {
5222            return;
5223          }
5224        },
5225            closeSub = function closeSub() {
5226          //if ($element.is(':first-child')) {
5227          var close = $element.parent('ul').parent('li');
5228          close.children('a:first').focus();
5229
5230          _this._hide(close);
5231
5232          e.preventDefault(); //}
5233        };
5234
5235        var functions = {
5236          open: openSub,
5237          close: function close() {
5238            _this._hide(_this.$element);
5239
5240            _this.$menuItems.eq(0).children('a').focus(); // focus to first element
5241
5242
5243            e.preventDefault();
5244          }
5245        };
5246
5247        if (isTab) {
5248          if (_this._isVertical()) {
5249            // vertical menu
5250            if (_this._isRtl()) {
5251              // right aligned
5252              jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
5253                down: nextSibling,
5254                up: prevSibling,
5255                next: closeSub,
5256                previous: openSub
5257              });
5258            } else {
5259              // left aligned
5260              jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
5261                down: nextSibling,
5262                up: prevSibling,
5263                next: openSub,
5264                previous: closeSub
5265              });
5266            }
5267          } else {
5268            // horizontal menu
5269            if (_this._isRtl()) {
5270              // right aligned
5271              jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
5272                next: prevSibling,
5273                previous: nextSibling,
5274                down: openSub,
5275                up: closeSub
5276              });
5277            } else {
5278              // left aligned
5279              jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
5280                next: nextSibling,
5281                previous: prevSibling,
5282                down: openSub,
5283                up: closeSub
5284              });
5285            }
5286          }
5287        } else {
5288          // not tabs -> one sub
5289          if (_this._isRtl()) {
5290            // right aligned
5291            jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
5292              next: closeSub,
5293              previous: openSub,
5294              down: nextSibling,
5295              up: prevSibling
5296            });
5297          } else {
5298            // left aligned
5299            jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
5300              next: openSub,
5301              previous: closeSub,
5302              down: nextSibling,
5303              up: prevSibling
5304            });
5305          }
5306        }
5307
5308        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].handleKey(e, 'DropdownMenu', functions);
5309      });
5310    }
5311    /**
5312     * Adds an event handler to the body to close any dropdowns on a click.
5313     * @function
5314     * @private
5315     */
5316
5317  }, {
5318    key: "_addBodyHandler",
5319    value: function _addBodyHandler() {
5320      var _this2 = this;
5321
5322      var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body);
5323
5324      this._removeBodyHandler();
5325
5326      $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', function (e) {
5327        var isItself = !!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).closest(_this2.$element).length;
5328        if (isItself) return;
5329
5330        _this2._hide();
5331
5332        _this2._removeBodyHandler();
5333      });
5334    }
5335    /**
5336     * Remove the body event handler. See `_addBodyHandler`.
5337     * @function
5338     * @private
5339     */
5340
5341  }, {
5342    key: "_removeBodyHandler",
5343    value: function _removeBodyHandler() {
5344      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');
5345    }
5346    /**
5347     * Opens a dropdown pane, and checks for collisions first.
5348     * @param {jQuery} $sub - ul element that is a submenu to show
5349     * @function
5350     * @private
5351     * @fires DropdownMenu#show
5352     */
5353
5354  }, {
5355    key: "_show",
5356    value: function _show($sub) {
5357      var idx = this.$tabs.index(this.$tabs.filter(function (i, el) {
5358        return jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).find($sub).length > 0;
5359      }));
5360      var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');
5361
5362      this._hide($sibs, idx);
5363
5364      $sub.css('visibility', 'hidden').addClass('js-dropdown-active').parent('li.is-dropdown-submenu-parent').addClass('is-active');
5365      var clear = _foundation_util_box__WEBPACK_IMPORTED_MODULE_5__["Box"].ImNotTouchingYou($sub, null, true);
5366
5367      if (!clear) {
5368        var oldClass = this.options.alignment === 'left' ? '-right' : '-left',
5369            $parentLi = $sub.parent('.is-dropdown-submenu-parent');
5370        $parentLi.removeClass("opens".concat(oldClass)).addClass("opens-".concat(this.options.alignment));
5371        clear = _foundation_util_box__WEBPACK_IMPORTED_MODULE_5__["Box"].ImNotTouchingYou($sub, null, true);
5372
5373        if (!clear) {
5374          $parentLi.removeClass("opens-".concat(this.options.alignment)).addClass('opens-inner');
5375        }
5376
5377        this.changed = true;
5378      }
5379
5380      $sub.css('visibility', '');
5381
5382      if (this.options.closeOnClick) {
5383        this._addBodyHandler();
5384      }
5385      /**
5386       * Fires when the new dropdown pane is visible.
5387       * @event DropdownMenu#show
5388       */
5389
5390
5391      this.$element.trigger('show.zf.dropdownMenu', [$sub]);
5392    }
5393    /**
5394     * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.
5395     * @function
5396     * @param {jQuery} $elem - element with a submenu to hide
5397     * @param {Number} idx - index of the $tabs collection to hide
5398     * @fires DropdownMenu#hide
5399     * @private
5400     */
5401
5402  }, {
5403    key: "_hide",
5404    value: function _hide($elem, idx) {
5405      var $toClose;
5406
5407      if ($elem && $elem.length) {
5408        $toClose = $elem;
5409      } else if (typeof idx !== 'undefined') {
5410        $toClose = this.$tabs.not(function (i, el) {
5411          return i === idx;
5412        });
5413      } else {
5414        $toClose = this.$element;
5415      }
5416
5417      var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;
5418
5419      if (somethingToClose) {
5420        var $activeItem = $toClose.find('li.is-active');
5421        $activeItem.add($toClose).attr({
5422          'data-is-click': false
5423        }).removeClass('is-active');
5424        $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');
5425
5426        if (this.changed || $toClose.find('opens-inner').length) {
5427          var oldClass = this.options.alignment === 'left' ? 'right' : 'left';
5428          $toClose.find('li.is-dropdown-submenu-parent').add($toClose).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(oldClass));
5429          this.changed = false;
5430        }
5431
5432        clearTimeout($activeItem.data('_delay'));
5433
5434        this._removeBodyHandler();
5435        /**
5436         * Fires when the open menus are closed.
5437         * @event DropdownMenu#hide
5438         */
5439
5440
5441        this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);
5442      }
5443    }
5444    /**
5445     * Destroys the plugin.
5446     * @function
5447     */
5448
5449  }, {
5450    key: "_destroy",
5451    value: function _destroy() {
5452      this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click').removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');
5453      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('.zf.dropdownMenu');
5454      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_4__["Nest"].Burn(this.$element, 'dropdown');
5455    }
5456  }]);
5457
5458  return DropdownMenu;
5459}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
5460/**
5461 * Default settings for plugin
5462 */
5463
5464
5465DropdownMenu.defaults = {
5466  /**
5467   * Disallows hover events from opening submenus
5468   * @option
5469   * @type {boolean}
5470   * @default false
5471   */
5472  disableHover: false,
5473
5474  /**
5475   * Allow a submenu to automatically close on a mouseleave event, if not clicked open.
5476   * @option
5477   * @type {boolean}
5478   * @default true
5479   */
5480  autoclose: true,
5481
5482  /**
5483   * Amount of time to delay opening a submenu on hover event.
5484   * @option
5485   * @type {number}
5486   * @default 50
5487   */
5488  hoverDelay: 50,
5489
5490  /**
5491   * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.
5492   * @option
5493   * @type {boolean}
5494   * @default false
5495   */
5496  clickOpen: false,
5497
5498  /**
5499   * Amount of time to delay closing a submenu on a mouseleave event.
5500   * @option
5501   * @type {number}
5502   * @default 500
5503   */
5504  closingTime: 500,
5505
5506  /**
5507   * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.
5508   * @option
5509   * @type {string}
5510   * @default 'auto'
5511   */
5512  alignment: 'auto',
5513
5514  /**
5515   * Allow clicks on the body to close any open submenus.
5516   * @option
5517   * @type {boolean}
5518   * @default true
5519   */
5520  closeOnClick: true,
5521
5522  /**
5523   * Allow clicks on leaf anchor links to close any open submenus.
5524   * @option
5525   * @type {boolean}
5526   * @default true
5527   */
5528  closeOnClickInside: true,
5529
5530  /**
5531   * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.
5532   * @option
5533   * @type {string}
5534   * @default 'vertical'
5535   */
5536  verticalClass: 'vertical',
5537
5538  /**
5539   * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.
5540   * @option
5541   * @type {string}
5542   * @default 'align-right'
5543   */
5544  rightClass: 'align-right',
5545
5546  /**
5547   * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.
5548   * @option
5549   * @type {boolean}
5550   * @default true
5551   */
5552  forceFollow: true
5553};
5554
5555
5556/***/ }),
5557
5558/***/ "./js/foundation.equalizer.js":
5559/*!************************************!*\
5560  !*** ./js/foundation.equalizer.js ***!
5561  \************************************/
5562/*! exports provided: Equalizer */
5563/***/ (function(module, __webpack_exports__, __webpack_require__) {
5564
5565"use strict";
5566__webpack_require__.r(__webpack_exports__);
5567/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Equalizer", function() { return Equalizer; });
5568/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
5569/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
5570/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
5571/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.imageLoader */ "./js/foundation.util.imageLoader.js");
5572/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
5573/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
5574
5575
5576function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5577
5578function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5579
5580function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
5581
5582function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
5583
5584function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
5585
5586function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
5587
5588function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
5589
5590function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
5591
5592function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
5593
5594
5595
5596
5597
5598
5599/**
5600 * Equalizer module.
5601 * @module foundation.equalizer
5602 * @requires foundation.util.mediaQuery
5603 * @requires foundation.util.imageLoader if equalizer contains images
5604 */
5605
5606var Equalizer =
5607/*#__PURE__*/
5608function (_Plugin) {
5609  _inherits(Equalizer, _Plugin);
5610
5611  function Equalizer() {
5612    _classCallCheck(this, Equalizer);
5613
5614    return _possibleConstructorReturn(this, _getPrototypeOf(Equalizer).apply(this, arguments));
5615  }
5616
5617  _createClass(Equalizer, [{
5618    key: "_setup",
5619
5620    /**
5621     * Creates a new instance of Equalizer.
5622     * @class
5623     * @name Equalizer
5624     * @fires Equalizer#init
5625     * @param {Object} element - jQuery object to add the trigger to.
5626     * @param {Object} options - Overrides to the default plugin settings.
5627     */
5628    value: function _setup(element, options) {
5629      this.$element = element;
5630      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Equalizer.defaults, this.$element.data(), options);
5631      this.className = 'Equalizer'; // ie9 back compat
5632
5633      this._init();
5634    }
5635    /**
5636     * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.
5637     * @private
5638     */
5639
5640  }, {
5641    key: "_init",
5642    value: function _init() {
5643      var eqId = this.$element.attr('data-equalizer') || '';
5644      var $watched = this.$element.find("[data-equalizer-watch=\"".concat(eqId, "\"]"));
5645
5646      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init();
5647
5648      this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');
5649      this.$element.attr('data-resize', eqId || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'eq'));
5650      this.$element.attr('data-mutate', eqId || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'eq'));
5651      this.hasNested = this.$element.find('[data-equalizer]').length > 0;
5652      this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;
5653      this.isOn = false;
vendor: 9,213 bytes, lines 5654-5989
5654      this._bindHandler = {
5655        onResizeMeBound: this._onResizeMe.bind(this),
5656        onPostEqualizedBound: this._onPostEqualized.bind(this)
5657      };
5658      var imgs = this.$element.find('img');
5659      var tooSmall;
5660
5661      if (this.options.equalizeOn) {
5662        tooSmall = this._checkMQ();
5663        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));
5664      } else {
5665        this._events();
5666      }
5667
5668      if (typeof tooSmall !== 'undefined' && tooSmall === false || typeof tooSmall === 'undefined') {
5669        if (imgs.length) {
5670          Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__["onImagesLoaded"])(imgs, this._reflow.bind(this));
5671        } else {
5672          this._reflow();
5673        }
5674      }
5675    }
5676    /**
5677     * Removes event listeners if the breakpoint is too small.
5678     * @private
5679     */
5680
5681  }, {
5682    key: "_pauseEvents",
5683    value: function _pauseEvents() {
5684      this.isOn = false;
5685      this.$element.off({
5686        '.zf.equalizer': this._bindHandler.onPostEqualizedBound,
5687        'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,
5688        'mutateme.zf.trigger': this._bindHandler.onResizeMeBound
5689      });
5690    }
5691    /**
5692     * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound
5693     * @private
5694     */
5695
5696  }, {
5697    key: "_onResizeMe",
5698    value: function _onResizeMe(e) {
5699      this._reflow();
5700    }
5701    /**
5702     * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound
5703     * @private
5704     */
5705
5706  }, {
5707    key: "_onPostEqualized",
5708    value: function _onPostEqualized(e) {
5709      if (e.target !== this.$element[0]) {
5710        this._reflow();
5711      }
5712    }
5713    /**
5714     * Initializes events for Equalizer.
5715     * @private
5716     */
5717
5718  }, {
5719    key: "_events",
5720    value: function _events() {
5721      var _this = this;
5722
5723      this._pauseEvents();
5724
5725      if (this.hasNested) {
5726        this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);
5727      } else {
5728        this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);
5729        this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);
5730      }
5731
5732      this.isOn = true;
5733    }
5734    /**
5735     * Checks the current breakpoint to the minimum required size.
5736     * @private
5737     */
5738
5739  }, {
5740    key: "_checkMQ",
5741    value: function _checkMQ() {
5742      var tooSmall = !_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].is(this.options.equalizeOn);
5743
5744      if (tooSmall) {
5745        if (this.isOn) {
5746          this._pauseEvents();
5747
5748          this.$watched.css('height', 'auto');
5749        }
5750      } else {
5751        if (!this.isOn) {
5752          this._events();
5753        }
5754      }
5755
5756      return tooSmall;
5757    }
5758    /**
5759     * A noop version for the plugin
5760     * @private
5761     */
5762
5763  }, {
5764    key: "_killswitch",
5765    value: function _killswitch() {
5766      return;
5767    }
5768    /**
5769     * Calls necessary functions to update Equalizer upon DOM change
5770     * @private
5771     */
5772
5773  }, {
5774    key: "_reflow",
5775    value: function _reflow() {
5776      if (!this.options.equalizeOnStack) {
5777        if (this._isStacked()) {
5778          this.$watched.css('height', 'auto');
5779          return false;
5780        }
5781      }
5782
5783      if (this.options.equalizeByRow) {
5784        this.getHeightsByRow(this.applyHeightByRow.bind(this));
5785      } else {
5786        this.getHeights(this.applyHeight.bind(this));
5787      }
5788    }
5789    /**
5790     * Manually determines if the first 2 elements are *NOT* stacked.
5791     * @private
5792     */
5793
5794  }, {
5795    key: "_isStacked",
5796    value: function _isStacked() {
5797      if (!this.$watched[0] || !this.$watched[1]) {
5798        return true;
5799      }
5800
5801      return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;
5802    }
5803    /**
5804     * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
5805     * @param {Function} cb - A non-optional callback to return the heights array to.
5806     * @returns {Array} heights - An array of heights of children within Equalizer container
5807     */
5808
5809  }, {
5810    key: "getHeights",
5811    value: function getHeights(cb) {
5812      var heights = [];
5813
5814      for (var i = 0, len = this.$watched.length; i < len; i++) {
5815        this.$watched[i].style.height = 'auto';
5816        heights.push(this.$watched[i].offsetHeight);
5817      }
5818
5819      cb(heights);
5820    }
5821    /**
5822     * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
5823     * @param {Function} cb - A non-optional callback to return the heights array to.
5824     * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child
5825     */
5826
5827  }, {
5828    key: "getHeightsByRow",
5829    value: function getHeightsByRow(cb) {
5830      var lastElTopOffset = this.$watched.length ? this.$watched.first().offset().top : 0,
5831          groups = [],
5832          group = 0; //group by Row
5833
5834      groups[group] = [];
5835
5836      for (var i = 0, len = this.$watched.length; i < len; i++) {
5837        this.$watched[i].style.height = 'auto'; //maybe could use this.$watched[i].offsetTop
5838
5839        var elOffsetTop = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$watched[i]).offset().top;
5840
5841        if (elOffsetTop != lastElTopOffset) {
5842          group++;
5843          groups[group] = [];
5844          lastElTopOffset = elOffsetTop;
5845        }
5846
5847        groups[group].push([this.$watched[i], this.$watched[i].offsetHeight]);
5848      }
5849
5850      for (var j = 0, ln = groups.length; j < ln; j++) {
5851        var heights = jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[j]).map(function () {
5852          return this[1];
5853        }).get();
5854        var max = Math.max.apply(null, heights);
5855        groups[j].push(max);
5856      }
5857
5858      cb(groups);
5859    }
5860    /**
5861     * Changes the CSS height property of each child in an Equalizer parent to match the tallest
5862     * @param {array} heights - An array of heights of children within Equalizer container
5863     * @fires Equalizer#preequalized
5864     * @fires Equalizer#postequalized
5865     */
5866
5867  }, {
5868    key: "applyHeight",
5869    value: function applyHeight(heights) {
5870      var max = Math.max.apply(null, heights);
5871      /**
5872       * Fires before the heights are applied
5873       * @event Equalizer#preequalized
5874       */
5875
5876      this.$element.trigger('preequalized.zf.equalizer');
5877      this.$watched.css('height', max);
5878      /**
5879       * Fires when the heights have been applied
5880       * @event Equalizer#postequalized
5881       */
5882
5883      this.$element.trigger('postequalized.zf.equalizer');
5884    }
5885    /**
5886     * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row
5887     * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child
5888     * @fires Equalizer#preequalized
5889     * @fires Equalizer#preequalizedrow
5890     * @fires Equalizer#postequalizedrow
5891     * @fires Equalizer#postequalized
5892     */
5893
5894  }, {
5895    key: "applyHeightByRow",
5896    value: function applyHeightByRow(groups) {
5897      /**
5898       * Fires before the heights are applied
5899       */
5900      this.$element.trigger('preequalized.zf.equalizer');
5901
5902      for (var i = 0, len = groups.length; i < len; i++) {
5903        var groupsILength = groups[i].length,
5904            max = groups[i][groupsILength - 1];
5905
5906        if (groupsILength <= 2) {
5907          jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[i][0][0]).css({
5908            'height': 'auto'
5909          });
5910          continue;
5911        }
5912        /**
5913          * Fires before the heights per row are applied
5914          * @event Equalizer#preequalizedrow
5915          */
5916
5917
5918        this.$element.trigger('preequalizedrow.zf.equalizer');
5919
5920        for (var j = 0, lenJ = groupsILength - 1; j < lenJ; j++) {
5921          jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[i][j][0]).css({
5922            'height': max
5923          });
5924        }
5925        /**
5926          * Fires when the heights per row have been applied
5927          * @event Equalizer#postequalizedrow
5928          */
5929
5930
5931        this.$element.trigger('postequalizedrow.zf.equalizer');
5932      }
5933      /**
5934       * Fires when the heights have been applied
5935       */
5936
5937
5938      this.$element.trigger('postequalized.zf.equalizer');
5939    }
5940    /**
5941     * Destroys an instance of Equalizer.
5942     * @function
5943     */
5944
5945  }, {
5946    key: "_destroy",
5947    value: function _destroy() {
5948      this._pauseEvents();
5949
5950      this.$watched.css('height', 'auto');
5951    }
5952  }]);
5953
5954  return Equalizer;
5955}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__["Plugin"]);
5956/**
5957 * Default settings for plugin
5958 */
5959
5960
5961Equalizer.defaults = {
5962  /**
5963   * Enable height equalization when stacked on smaller screens.
5964   * @option
5965   * @type {boolean}
5966   * @default false
5967   */
5968  equalizeOnStack: false,
5969
5970  /**
5971   * Enable height equalization row by row.
5972   * @option
5973   * @type {boolean}
5974   * @default false
5975   */
5976  equalizeByRow: false,
5977
5978  /**
5979   * String representing the minimum breakpoint size the plugin should equalize heights on.
5980   * @option
5981   * @type {string}
5982   * @default ''
5983   */
5984  equalizeOn: ''
5985};
5986
5987
5988/***/ }),
5989
5990/***/ "./js/foundation.interchange.js":
5991/*!**************************************!*\
5992  !*** ./js/foundation.interchange.js ***!
5993  \**************************************/
5994/*! exports provided: Interchange */
5995/***/ (function(module, __webpack_exports__, __webpack_require__) {
5996
5997"use strict";
5998__webpack_require__.r(__webpack_exports__);
5999/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Interchange", function() { return Interchange; });
6000/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
6001/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
6002/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
6003/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
6004/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
6005/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
6006
6007
6008function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6009
6010function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6011
6012function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6013
6014function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
6015
6016function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
6017
6018function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
6019
6020function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
6021
6022function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
6023
6024function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
6025
6026
6027
6028
6029
6030
6031/**
6032 * Interchange module.
6033 * @module foundation.interchange
6034 * @requires foundation.util.mediaQuery
6035 */
6036
6037var Interchange =
6038/*#__PURE__*/
6039function (_Plugin) {
6040  _inherits(Interchange, _Plugin);
6041
6042  function Interchange() {
6043    _classCallCheck(this, Interchange);
6044
6045    return _possibleConstructorReturn(this, _getPrototypeOf(Interchange).apply(this, arguments));
6046  }
6047
6048  _createClass(Interchange, [{
6049    key: "_setup",
6050
6051    /**
6052     * Creates a new instance of Interchange.
6053     * @class
6054     * @name Interchange
6055     * @fires Interchange#init
6056     * @param {Object} element - jQuery object to add the trigger to.
6057     * @param {Object} options - Overrides to the default plugin settings.
6058     */
6059    value: function _setup(element, options) {
6060      this.$element = element;
6061      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Interchange.defaults, this.$element.data(), options);
6062      this.rules = [];
6063      this.currentPath = '';
6064      this.className = 'Interchange'; // ie9 back compat
6065      // Triggers init is idempotent, just need to make sure it is initialized
6066
6067      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
6068
6069      this._init();
6070
6071      this._events();
6072    }
6073    /**
6074     * Initializes the Interchange plugin and calls functions to get interchange functioning on load.
6075     * @function
6076     * @private
6077     */
6078
6079  }, {
6080    key: "_init",
6081    value: function _init() {
6082      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init();
6083
6084      var id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'interchange');
6085      this.$element.attr({
6086        'data-resize': id,
6087        'id': id
6088      });
6089
6090      this._parseOptions();
6091
6092      this._addBreakpoints();
6093
6094      this._generateRules();
6095
6096      this._reflow();
6097    }
6098    /**
6099     * Initializes events for Interchange.
6100     * @function
6101     * @private
6102     */
6103
6104  }, {
6105    key: "_events",
6106    value: function _events() {
6107      var _this = this;
6108
6109      this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function () {
6110        return _this._reflow();
6111      });
6112    }
6113    /**
6114     * Calls necessary functions to update Interchange upon DOM change
6115     * @function
6116     * @private
6117     */
6118
6119  }, {
6120    key: "_reflow",
6121    value: function _reflow() {
6122      var match; // Iterate through each rule, but only save the last match
6123
6124      for (var i in this.rules) {
6125        if (this.rules.hasOwnProperty(i)) {
6126          var rule = this.rules[i];
6127
6128          if (window.matchMedia(rule.query).matches) {
6129            match = rule;
6130          }
6131        }
6132      }
6133
6134      if (match) {
6135        this.replace(match.path);
6136      }
6137    }
6138    /**
6139     * Check options valifity and set defaults for:
6140     * - `data-interchange-type`: if set, enforce the type of replacement (auto, src, background or html)
6141     * @function
6142     * @private
6143     */
6144
6145  }, {
6146    key: "_parseOptions",
6147    value: function _parseOptions() {
6148      var types = ['auto', 'src', 'background', 'html'];
6149      if (typeof this.options.type === 'undefined') this.options.type = 'auto';else if (types.indexOf(this.options.type) === -1) {
6150        console.log("Warning: invalid value \"".concat(this.options.type, "\" for Interchange option \"type\""));
6151        this.options.type = 'auto';
6152      }
6153    }
6154    /**
6155     * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object.
6156     * @function
6157     * @private
6158     */
6159
6160  }, {
6161    key: "_addBreakpoints",
6162    value: function _addBreakpoints() {
6163      for (var i in _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries) {
6164        if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries.hasOwnProperty(i)) {
6165          var query = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries[i];
6166          Interchange.SPECIAL_QUERIES[query.name] = query.value;
6167        }
6168      }
6169    }
6170    /**
6171     * Checks the Interchange element for the provided media query + content pairings
6172     * @function
6173     * @private
6174     * @param {Object} element - jQuery object that is an Interchange instance
6175     * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys
6176     */
6177
6178  }, {
6179    key: "_generateRules",
6180    value: function _generateRules(element) {
6181      var rulesList = [];
6182      var rules;
6183
6184      if (this.options.rules) {
6185        rules = this.options.rules;
6186      } else {
6187        rules = this.$element.data('interchange');
6188      }
6189
6190      rules = typeof rules === 'string' ? rules.match(/\[.*?, .*?\]/g) : rules;
6191
6192      for (var i in rules) {
6193        if (rules.hasOwnProperty(i)) {
6194          var rule = rules[i].slice(1, -1).split(', ');
6195          var path = rule.slice(0, -1).join('');
6196          var query = rule[rule.length - 1];
6197
6198          if (Interchange.SPECIAL_QUERIES[query]) {
6199            query = Interchange.SPECIAL_QUERIES[query];
6200          }
6201
6202          rulesList.push({
6203            path: path,
6204            query: query
6205          });
6206        }
6207      }
6208
6209      this.rules = rulesList;
6210    }
6211    /**
6212     * Update the `src` property of an image, or change the HTML of a container, to the specified path.
6213     * @function
6214     * @param {String} path - Path to the image or HTML partial.
6215     * @fires Interchange#replaced
6216     */
6217
6218  }, {
6219    key: "replace",
6220    value: function replace(path) {
6221      var _this2 = this;
6222
6223      if (this.currentPath === path) return;
6224      var trigger = 'replaced.zf.interchange';
6225      var type = this.options.type;
6226
6227      if (type === 'auto') {
6228        if (this.$element[0].nodeName === 'IMG') type = 'src';else if (path.match(/\.(gif|jpe?g|png|svg|tiff)([?#].*)?/i)) type = 'background';
vendor: 2,474 bytes, lines 6228-6306
6228else type = 'html';
6229      } // Replacing images
6230
6231
6232      if (type === 'src') {
6233        this.$element.attr('src', path).on('load', function () {
6234          _this2.currentPath = path;
6235        }).trigger(trigger);
6236      } // Replacing background images
6237      else if (type === 'background') {
6238          path = path.replace(/\(/g, '%28').replace(/\)/g, '%29');
6239          this.$element.css({
6240            'background-image': 'url(' + path + ')'
6241          }).trigger(trigger);
6242        } // Replacing HTML
6243        else if (type === 'html') {
6244            jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get(path, function (response) {
6245              _this2.$element.html(response).trigger(trigger);
6246
6247              jquery__WEBPACK_IMPORTED_MODULE_0___default()(response).foundation();
6248              _this2.currentPath = path;
6249            });
6250          }
6251      /**
6252       * Fires when content in an Interchange element is done being loaded.
6253       * @event Interchange#replaced
6254       */
6255      // this.$element.trigger('replaced.zf.interchange');
6256
6257    }
6258    /**
6259     * Destroys an instance of interchange.
6260     * @function
6261     */
6262
6263  }, {
6264    key: "_destroy",
6265    value: function _destroy() {
6266      this.$element.off('resizeme.zf.trigger');
6267    }
6268  }]);
6269
6270  return Interchange;
6271}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
6272/**
6273 * Default settings for plugin
6274 */
6275
6276
6277Interchange.defaults = {
6278  /**
6279   * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation.
6280   * @option
6281   * @type {?array}
6282   * @default null
6283   */
6284  rules: null,
6285
6286  /**
6287   * Type of the responsive ressource to replace. It can take the following options:
6288   * - `auto` (default): choose the type according to the element tag or the ressource extension,
6289   * - `src`: replace the `[src]` attribute, recommended for images `<img>`.
6290   * - `background`: replace the `background-image` CSS property.
6291   * - `html`: replace the element content.
6292   * @option
6293   * @type {string}
6294   * @default 'auto'
6295   */
6296  type: 'auto'
6297};
6298Interchange.SPECIAL_QUERIES = {
6299  'landscape': 'screen and (orientation: landscape)',
6300  'portrait': 'screen and (orientation: portrait)',
6301  'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)'
6302};
6303
6304
6305/***/ }),
6306
6307/***/ "./js/foundation.magellan.js":
6308/*!***********************************!*\
6309  !*** ./js/foundation.magellan.js ***!
6310  \***********************************/
6311/*! exports provided: Magellan */
6312/***/ (function(module, __webpack_exports__, __webpack_require__) {
6313
6314"use strict";
6315__webpack_require__.r(__webpack_exports__);
6316/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Magellan", function() { return Magellan; });
6317/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
6318/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
6319/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
6320/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
6321/* harmony import */ var _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.smoothScroll */ "./js/foundation.smoothScroll.js");
6322/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
6323
6324
6325function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6326
6327function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6328
6329function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6330
6331function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
6332
6333function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
6334
6335function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
6336
6337function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
6338
6339function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
6340
6341function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
6342
6343
6344
6345
6346
6347
6348/**
6349 * Magellan module.
6350 * @module foundation.magellan
6351 * @requires foundation.smoothScroll
6352 * @requires foundation.util.triggers
6353 */
6354
6355var Magellan =
6356/*#__PURE__*/
6357function (_Plugin) {
6358  _inherits(Magellan, _Plugin);
6359
6360  function Magellan() {
6361    _classCallCheck(this, Magellan);
6362
6363    return _possibleConstructorReturn(this, _getPrototypeOf(Magellan).apply(this, arguments));
6364  }
6365
6366  _createClass(Magellan, [{
6367    key: "_setup",
6368
6369    /**
6370     * Creates a new instance of Magellan.
6371     * @class
6372     * @name Magellan
6373     * @fires Magellan#init
6374     * @param {Object} element - jQuery object to add the trigger to.
6375     * @param {Object} options - Overrides to the default plugin settings.
6376     */
6377    value: function _setup(element, options) {
6378      this.$element = element;
6379      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Magellan.defaults, this.$element.data(), options);
6380      this.className = 'Magellan'; // ie9 back compat
6381      // Triggers init is idempotent, just need to make sure it is initialized
6382
6383      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
6384
6385      this._init();
6386
6387      this.calcPoints();
6388    }
6389    /**
6390     * Initializes the Magellan plugin and calls functions to get equalizer functioning on load.
6391     * @private
6392     */
6393
6394  }, {
6395    key: "_init",
6396    value: function _init() {
6397      var id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'magellan');
6398
6399      var _this = this;
6400
6401      this.$targets = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-magellan-target]');
6402      this.$links = this.$element.find('a');
6403      this.$element.attr({
6404        'data-resize': id,
6405        'data-scroll': id,
6406        'id': id
6407      });
6408      this.$active = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
6409      this.scrollPos = parseInt(window.pageYOffset, 10);
6410
6411      this._events();
6412    }
6413    /**
6414     * Calculates an array of pixel values that are the demarcation lines between locations on the page.
6415     * Can be invoked if new elements are added or the size of a location changes.
6416     * @function
6417     */
6418
6419  }, {
6420    key: "calcPoints",
6421    value: function calcPoints() {
6422      var _this = this,
6423          body = document.body,
6424          html = document.documentElement;
6425
6426      this.points = [];
6427      this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight));
6428      this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight));
6429      this.$targets.each(function () {
6430        var $tar = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
6431            pt = Math.round($tar.offset().top - _this.options.threshold);
6432        $tar.targetPoint = pt;
6433
6434        _this.points.push(pt);
6435      });
6436    }
6437    /**
6438     * Initializes events for Magellan.
6439     * @private
6440     */
6441
6442  }, {
6443    key: "_events",
6444    value: function _events() {
6445      var _this = this;
6446
6447      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).one('load', function () {
6448        if (_this.options.deepLinking) {
6449          if (location.hash) {
6450            _this.scrollToLoc(location.hash);
6451          }
6452        }
6453
6454        _this.calcPoints();
6455
6456        _this._updateActive();
6457      });
6458      _this.onLoadListener = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
6459        _this.$element.on({
6460          'resizeme.zf.trigger': _this.reflow.bind(_this),
6461          'scrollme.zf.trigger': _this._updateActive.bind(_this)
6462        }).on('click.zf.magellan', 'a[href^="#"]', function (e) {
6463          e.preventDefault();
6464          var arrival = this.getAttribute('href');
6465
6466          _this.scrollToLoc(arrival);
6467        });
6468      });
6469
6470      this._deepLinkScroll = function (e) {
6471        if (_this.options.deepLinking) {
6472          _this.scrollToLoc(window.location.hash);
6473        }
6474      };
6475
6476      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange', this._deepLinkScroll);
6477    }
6478    /**
6479     * Function to scroll to a given location on the page.
6480     * @param {String} loc - a properly formatted jQuery id selector. Example: '#foo'
6481     * @function
6482     */
6483
6484  }, {
6485    key: "scrollToLoc",
6486    value: function scrollToLoc(loc) {
6487      this._inTransition = true;
6488
6489      var _this = this;
6490
6491      var options = {
6492        animationEasing: this.options.animationEasing,
6493        animationDuration: this.options.animationDuration,
6494        threshold: this.options.threshold,
6495        offset: this.options.offset
6496      };
6497      _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_3__["SmoothScroll"].scrollToLoc(loc, options, function () {
6498        _this._inTransition = false;
vendor: 5,148 bytes, lines 6499-6677
6499      });
6500    }
6501    /**
6502     * Calls necessary functions to update Magellan upon DOM change
6503     * @function
6504     */
6505
6506  }, {
6507    key: "reflow",
6508    value: function reflow() {
6509      this.calcPoints();
6510
6511      this._updateActive();
6512    }
6513    /**
6514     * Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled.
6515     * @private
6516     * @function
6517     * @fires Magellan#update
6518     */
6519
6520  }, {
6521    key: "_updateActive",
6522    value: function _updateActive()
6523    /*evt, elem, scrollPos*/
6524    {
6525      var _this2 = this;
6526
6527      if (this._inTransition) return;
6528      var newScrollPos = parseInt(window.pageYOffset, 10);
6529      var isScrollingUp = this.scrollPos > newScrollPos;
6530      this.scrollPos = newScrollPos;
6531      var activeIdx; // Before the first point: no link
6532
6533      if (newScrollPos < this.points[0]) {}
6534      /* do nothing */
6535      // At the bottom of the page: last link
6536      else if (newScrollPos + this.winHeight === this.docHeight) {
6537          activeIdx = this.points.length - 1;
6538        } // Otherwhise, use the last visible link
6539        else {
6540            var visibleLinks = this.points.filter(function (p, i) {
6541              return p - _this2.options.offset - (isScrollingUp ? _this2.options.threshold : 0) <= newScrollPos;
6542            });
6543            activeIdx = visibleLinks.length ? visibleLinks.length - 1 : 0;
6544          } // Get the new active link
6545
6546
6547      var $oldActive = this.$active;
6548      var activeHash = '';
6549
6550      if (typeof activeIdx !== 'undefined') {
6551        this.$active = this.$links.filter('[href="#' + this.$targets.eq(activeIdx).data('magellan-target') + '"]');
6552        if (this.$active.length) activeHash = this.$active[0].getAttribute('href');
6553      } else {
6554        this.$active = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
6555      }
6556
6557      var isNewActive = !(!this.$active.length && !$oldActive.length) && !this.$active.is($oldActive);
6558      var isNewHash = activeHash !== window.location.hash; // Update the active link element
6559
6560      if (isNewActive) {
6561        $oldActive.removeClass(this.options.activeClass);
6562        this.$active.addClass(this.options.activeClass);
6563      } // Update the hash (it may have changed with the same active link)
6564
6565
6566      if (this.options.deepLinking && isNewHash) {
6567        if (window.history.pushState) {
6568          // Set or remove the hash (see: https://stackoverflow.com/a/5298684/4317384
6569          var url = activeHash ? activeHash : window.location.pathname + window.location.search;
6570
6571          if (this.options.updateHistory) {
6572            window.history.pushState({}, '', url);
6573          } else {
6574            window.history.replaceState({}, '', url);
6575          }
6576        } else {
6577          window.location.hash = activeHash;
6578        }
6579      }
6580
6581      if (isNewActive) {
6582        /**
6583         * Fires when magellan is finished updating to the new active element.
6584         * @event Magellan#update
6585         */
6586        this.$element.trigger('update.zf.magellan', [this.$active]);
6587      }
6588    }
6589    /**
6590     * Destroys an instance of Magellan and resets the url of the window.
6591     * @function
6592     */
6593
6594  }, {
6595    key: "_destroy",
6596    value: function _destroy() {
6597      this.$element.off('.zf.trigger .zf.magellan').find(".".concat(this.options.activeClass)).removeClass(this.options.activeClass);
6598
6599      if (this.options.deepLinking) {
6600        var hash = this.$active[0].getAttribute('href');
6601        window.location.hash.replace(hash, '');
6602      }
6603
6604      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange', this._deepLinkScroll);
6605      if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
6606    }
6607  }]);
6608
6609  return Magellan;
6610}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
6611/**
6612 * Default settings for plugin
6613 */
6614
6615
6616Magellan.defaults = {
6617  /**
6618   * Amount of time, in ms, the animated scrolling should take between locations.
6619   * @option
6620   * @type {number}
6621   * @default 500
6622   */
6623  animationDuration: 500,
6624
6625  /**
6626   * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.
6627   * @option
6628   * @type {string}
6629   * @default 'linear'
6630   * @see {@link https://api.jquery.com/animate|Jquery animate}
6631   */
6632  animationEasing: 'linear',
6633
6634  /**
6635   * Number of pixels to use as a marker for location changes.
6636   * @option
6637   * @type {number}
6638   * @default 50
6639   */
6640  threshold: 50,
6641
6642  /**
6643   * Class applied to the active locations link on the magellan container.
6644   * @option
6645   * @type {string}
6646   * @default 'is-active'
6647   */
6648  activeClass: 'is-active',
6649
6650  /**
6651   * Allows the script to manipulate the url of the current page, and if supported, alter the history.
6652   * @option
6653   * @type {boolean}
6654   * @default false
6655   */
6656  deepLinking: false,
6657
6658  /**
6659   * Update the browser history with the active link, if deep linking is enabled.
6660   * @option
6661   * @type {boolean}
6662   * @default false
6663   */
6664  updateHistory: false,
6665
6666  /**
6667   * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.
6668   * @option
6669   * @type {number}
6670   * @default 0
6671   */
6672  offset: 0
6673};
6674
6675
6676/***/ }),
6677
vendor: 5,129 bytes, lines 6678-6766
6678/***/ "./js/foundation.offcanvas.js":
6679/*!************************************!*\
6680  !*** ./js/foundation.offcanvas.js ***!
6681  \************************************/
6682/*! exports provided: OffCanvas */
6683/***/ (function(module, __webpack_exports__, __webpack_require__) {
6684
6685"use strict";
6686__webpack_require__.r(__webpack_exports__);
6687/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OffCanvas", function() { return OffCanvas; });
6688/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
6689/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
6690/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
6691/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
6692/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
6693/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
6694/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
6695
6696
6697function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6698
6699function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6700
6701function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6702
6703function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
6704
6705function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
6706
6707function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
6708
6709function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
6710
6711function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
6712
6713function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
6714
6715
6716
6717
6718
6719
6720
6721/**
6722 * OffCanvas module.
6723 * @module foundation.offCanvas
6724 * @requires foundation.util.keyboard
6725 * @requires foundation.util.mediaQuery
6726 * @requires foundation.util.triggers
6727 */
6728
6729var OffCanvas =
6730/*#__PURE__*/
6731function (_Plugin) {
6732  _inherits(OffCanvas, _Plugin);
6733
6734  function OffCanvas() {
6735    _classCallCheck(this, OffCanvas);
6736
6737    return _possibleConstructorReturn(this, _getPrototypeOf(OffCanvas).apply(this, arguments));
6738  }
6739
6740  _createClass(OffCanvas, [{
6741    key: "_setup",
6742
6743    /**
6744     * Creates a new instance of an off-canvas wrapper.
6745     * @class
6746     * @name OffCanvas
6747     * @fires OffCanvas#init
6748     * @param {Object} element - jQuery object to initialize.
6749     * @param {Object} options - Overrides to the default plugin settings.
6750     */
6751    value: function _setup(element, options) {
6752      var _this2 = this;
6753
6754      this.className = 'OffCanvas'; // ie9 back compat
6755
6756      this.$element = element;
6757      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, OffCanvas.defaults, this.$element.data(), options);
6758      this.contentClasses = {
6759        base: [],
6760        reveal: []
6761      };
6762      this.$lastTrigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
6763      this.$triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
6764      this.position = 'left';
6765      this.$content = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
6766      this.nested = !!this.options.nested;
vendor: 23,224 bytes, lines 6767-7385
6767      this.$sticky = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
6768      this.isInCanvas = false; // Defines the CSS transition/position classes of the off-canvas content container.
6769
6770      jquery__WEBPACK_IMPORTED_MODULE_0___default()(['push', 'overlap']).each(function (index, val) {
6771        _this2.contentClasses.base.push('has-transition-' + val);
6772      });
6773      jquery__WEBPACK_IMPORTED_MODULE_0___default()(['left', 'right', 'top', 'bottom']).each(function (index, val) {
6774        _this2.contentClasses.base.push('has-position-' + val);
6775
6776        _this2.contentClasses.reveal.push('has-reveal-' + val);
6777      }); // Triggers init is idempotent, just need to make sure it is initialized
6778
6779      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_5__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
6780
6781      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_4__["MediaQuery"]._init();
6782
6783      this._init();
6784
6785      this._events();
6786
6787      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].register('OffCanvas', {
6788        'ESCAPE': 'close'
6789      });
6790    }
6791    /**
6792     * Initializes the off-canvas wrapper by adding the exit overlay (if needed).
6793     * @function
6794     * @private
6795     */
6796
6797  }, {
6798    key: "_init",
6799    value: function _init() {
6800      var id = this.$element.attr('id');
6801      this.$element.attr('aria-hidden', 'true'); // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback)
6802
6803      if (this.options.contentId) {
6804        this.$content = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + this.options.contentId);
6805      } else if (this.$element.siblings('[data-off-canvas-content]').length) {
6806        this.$content = this.$element.siblings('[data-off-canvas-content]').first();
6807      } else {
6808        this.$content = this.$element.closest('[data-off-canvas-content]').first();
6809      }
6810
6811      if (!this.options.contentId) {
6812        // Assume that the off-canvas element is nested if it isn't a sibling of the content
6813        this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;
6814      } else if (this.options.contentId && this.options.nested === null) {
6815        // Warning if using content ID without setting the nested option
6816        // Once the element is nested it is required to work properly in this case
6817        console.warn('Remember to use the nested option if using the content ID option!');
6818      }
6819
6820      if (this.nested === true) {
6821        // Force transition overlap if nested
6822        this.options.transition = 'overlap'; // Remove appropriate classes if already assigned in markup
6823
6824        this.$element.removeClass('is-transition-push');
6825      }
6826
6827      this.$element.addClass("is-transition-".concat(this.options.transition, " is-closed")); // Find triggers that affect this element and add aria-expanded to them
6828
6829      this.$triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).find('[data-open="' + id + '"], [data-close="' + id + '"], [data-toggle="' + id + '"]').attr('aria-expanded', 'false').attr('aria-controls', id); // Get position by checking for related CSS class
6830
6831      this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\-(left|top|right|bottom)/)[1] : this.position; // Add an overlay over the content if necessary
6832
6833      if (this.options.contentOverlay === true) {
6834        var overlay = document.createElement('div');
6835        var overlayPosition = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$element).css("position") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';
6836        overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);
6837        this.$overlay = jquery__WEBPACK_IMPORTED_MODULE_0___default()(overlay);
6838
6839        if (overlayPosition === 'is-overlay-fixed') {
6840          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$overlay).insertAfter(this.$element);
6841        } else {
6842          this.$content.append(this.$overlay);
6843        }
6844      } // Get the revealOn option from the class.
6845
6846
6847      var revealOnRegExp = new RegExp(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["RegExpEscape"])(this.options.revealClass) + '([^\\s]+)', 'g');
6848      var revealOnClass = revealOnRegExp.exec(this.$element[0].className);
6849
6850      if (revealOnClass) {
6851        this.options.isRevealed = true;
6852        this.options.revealOn = this.options.revealOn || revealOnClass[1];
6853      } // Ensure the `reveal-on-*` class is set.
6854
6855
6856      if (this.options.isRevealed === true && this.options.revealOn) {
6857        this.$element.first().addClass("".concat(this.options.revealClass).concat(this.options.revealOn));
6858
6859        this._setMQChecker();
6860      }
6861
6862      if (this.options.transitionTime) {
6863        this.$element.css('transition-duration', this.options.transitionTime);
6864      } // Find fixed elements that should stay fixed while off-canvas is opened
6865
6866
6867      this.$sticky = this.$content.find('[data-off-canvas-sticky]');
6868
6869      if (this.$sticky.length > 0 && this.options.transition === 'push') {
6870        // If there's at least one match force contentScroll:false because the absolute top value doesn't get recalculated on scroll
6871        // Limit to push transition since there's no transform scope for overlap
6872        this.options.contentScroll = false;
6873      }
6874
6875      var inCanvasFor = this.$element.attr('class').match(/\bin-canvas-for-(\w+)/);
6876
6877      if (inCanvasFor && inCanvasFor.length === 2) {
6878        // Set `inCanvasOn` option if found in-canvas-for-[BREAKPONT] CSS class
6879        this.options.inCanvasOn = inCanvasFor[1];
6880      } else if (this.options.inCanvasOn) {
6881        // Ensure the CSS class is set
6882        this.$element.addClass("in-canvas-for-".concat(this.options.inCanvasOn));
6883      }
6884
6885      if (this.options.inCanvasOn) {
6886        this._checkInCanvas();
6887      } // Initally remove all transition/position CSS classes from off-canvas content container.
6888
6889
6890      this._removeContentClasses();
6891    }
6892    /**
6893     * Adds event handlers to the off-canvas wrapper and the exit overlay.
6894     * @function
6895     * @private
6896     */
6897
6898  }, {
6899    key: "_events",
6900    value: function _events() {
6901      var _this3 = this;
6902
6903      this.$element.off('.zf.trigger .zf.offCanvas').on({
6904        'open.zf.trigger': this.open.bind(this),
6905        'close.zf.trigger': this.close.bind(this),
6906        'toggle.zf.trigger': this.toggle.bind(this),
6907        'keydown.zf.offCanvas': this._handleKeyboard.bind(this)
6908      });
6909
6910      if (this.options.closeOnClick === true) {
6911        var $target = this.options.contentOverlay ? this.$overlay : this.$content;
6912        $target.on({
6913          'click.zf.offCanvas': this.close.bind(this)
6914        });
6915      }
6916
6917      if (this.options.inCanvasOn) {
6918        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function () {
6919          _this3._checkInCanvas();
6920        });
6921      }
6922    }
6923    /**
6924     * Applies event listener for elements that will reveal at certain breakpoints.
6925     * @private
6926     */
6927
6928  }, {
6929    key: "_setMQChecker",
6930    value: function _setMQChecker() {
6931      var _this = this;
6932
6933      this.onLoadListener = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
6934        if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_4__["MediaQuery"].atLeast(_this.options.revealOn)) {
6935          _this.reveal(true);
6936        }
6937      });
6938      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function () {
6939        if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_4__["MediaQuery"].atLeast(_this.options.revealOn)) {
6940          _this.reveal(true);
6941        } else {
6942          _this.reveal(false);
6943        }
6944      });
6945    }
6946    /**
6947     * Checks if InCanvas on current breakpoint and adjust off-canvas accordingly
6948     * @private
6949     */
6950
6951  }, {
6952    key: "_checkInCanvas",
6953    value: function _checkInCanvas() {
6954      this.isInCanvas = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_4__["MediaQuery"].atLeast(this.options.inCanvasOn);
6955
6956      if (this.isInCanvas === true) {
6957        this.close();
6958      }
6959    }
6960    /**
6961     * Removes the CSS transition/position classes of the off-canvas content container.
6962     * Removing the classes is important when another off-canvas gets opened that uses the same content container.
6963     * @param {Boolean} hasReveal - true if related off-canvas element is revealed.
6964     * @private
6965     */
6966
6967  }, {
6968    key: "_removeContentClasses",
6969    value: function _removeContentClasses(hasReveal) {
6970      if (typeof hasReveal !== 'boolean') {
6971        this.$content.removeClass(this.contentClasses.base.join(' '));
6972      } else if (hasReveal === false) {
6973        this.$content.removeClass("has-reveal-".concat(this.position));
6974      }
6975    }
6976    /**
6977     * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.
6978     * Beforehand any transition/position class gets removed.
6979     * @param {Boolean} hasReveal - true if related off-canvas element is revealed.
6980     * @private
6981     */
6982
6983  }, {
6984    key: "_addContentClasses",
6985    value: function _addContentClasses(hasReveal) {
6986      this._removeContentClasses(hasReveal);
6987
6988      if (typeof hasReveal !== 'boolean') {
6989        this.$content.addClass("has-transition-".concat(this.options.transition, " has-position-").concat(this.position));
6990      } else if (hasReveal === true) {
6991        this.$content.addClass("has-reveal-".concat(this.position));
6992      }
6993    }
6994    /**
6995     * Preserves the fixed behavior of sticky elements on opening an off-canvas with push transition.
6996     * Since the off-canvas container has got a transform scope in such a case, it is done by calculating position absolute values.
6997     * @private
6998     */
6999
7000  }, {
7001    key: "_fixStickyElements",
7002    value: function _fixStickyElements() {
7003      this.$sticky.each(function (_, el) {
7004        var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el); // If sticky element is currently fixed, adjust its top value to match absolute position due to transform scope
7005        // Limit to push transition because postion:fixed works without problems for overlap (no transform scope)
7006
7007        if ($el.css('position') === 'fixed') {
7008          // Save current inline styling to restore it if undoing the absolute fixing
7009          var topVal = parseInt($el.css('top'), 10);
7010          $el.data('offCanvasSticky', {
7011            top: topVal
7012          });
7013          var absoluteTopVal = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).scrollTop() + topVal;
7014          $el.css({
7015            top: "".concat(absoluteTopVal, "px"),
7016            width: '100%',
7017            transition: 'none'
7018          });
7019        }
7020      });
7021    }
7022    /**
7023     * Restores the original fixed styling of sticky elements after having closed an off-canvas that got pseudo fixed beforehand.
7024     * This reverts the changes of _fixStickyElements()
7025     * @private
7026     */
7027
7028  }, {
7029    key: "_unfixStickyElements",
7030    value: function _unfixStickyElements() {
7031      this.$sticky.each(function (_, el) {
7032        var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el);
7033        var stickyData = $el.data('offCanvasSticky'); // If sticky element has got data object with prior values (meaning it was originally fixed) restore these values once off-canvas is closed
7034
7035        if (_typeof(stickyData) === 'object') {
7036          $el.css({
7037            top: "".concat(stickyData.top, "px"),
7038            width: '',
7039            transition: ''
7040          });
7041          $el.data('offCanvasSticky', '');
7042        }
7043      });
7044    }
7045    /**
7046     * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.
7047     * @param {Boolean} isRevealed - true if element should be revealed.
7048     * @function
7049     */
7050
7051  }, {
7052    key: "reveal",
7053    value: function reveal(isRevealed) {
7054      if (isRevealed) {
7055        this.close();
7056        this.isRevealed = true;
7057        this.$element.attr('aria-hidden', 'false');
7058        this.$element.off('open.zf.trigger toggle.zf.trigger');
7059        this.$element.removeClass('is-closed');
7060      } else {
7061        this.isRevealed = false;
7062        this.$element.attr('aria-hidden', 'true');
7063        this.$element.off('open.zf.trigger toggle.zf.trigger').on({
7064          'open.zf.trigger': this.open.bind(this),
7065          'toggle.zf.trigger': this.toggle.bind(this)
7066        });
7067        this.$element.addClass('is-closed');
7068      }
7069
7070      this._addContentClasses(isRevealed);
7071    }
7072    /**
7073     * Stops scrolling of the body when OffCanvas is open on mobile Safari and other troublesome browsers.
7074     * @function
7075     * @private
7076     */
7077
7078  }, {
7079    key: "_stopScrolling",
7080    value: function _stopScrolling(event) {
7081      return false;
7082    }
7083    /**
7084     * Tag the element given as context whether it can be scrolled up and down.
7085     * Used to allow or prevent it to scroll. See `_stopScrollPropagation`.
7086     *
7087     * Taken and adapted from http://stackoverflow.com/questions/16889447/prevent-full-page-scrolling-ios
7088     * Only really works for y, not sure how to extend to x or if we need to.
7089     *
7090     * @function
7091     * @private
7092     */
7093
7094  }, {
7095    key: "_recordScrollable",
7096    value: function _recordScrollable(event) {
7097      var elem = this; // called from event handler context with this as elem
7098      // If the element is scrollable (content overflows), then...
7099
7100      if (elem.scrollHeight !== elem.clientHeight) {
7101        // If we're at the top, scroll down one pixel to allow scrolling up
7102        if (elem.scrollTop === 0) {
7103          elem.scrollTop = 1;
7104        } // If we're at the bottom, scroll up one pixel to allow scrolling down
7105
7106
7107        if (elem.scrollTop === elem.scrollHeight - elem.clientHeight) {
7108          elem.scrollTop = elem.scrollHeight - elem.clientHeight - 1;
7109        }
7110      }
7111
7112      elem.allowUp = elem.scrollTop > 0;
7113      elem.allowDown = elem.scrollTop < elem.scrollHeight - elem.clientHeight;
7114      elem.lastY = event.originalEvent.pageY;
7115    }
7116    /**
7117     * Prevent the given event propagation if the element given as context can scroll.
7118     * Used to preserve the element scrolling on mobile (`touchmove`) when the document
7119     * scrolling is prevented. See https://git.io/zf-9707.
7120     * @function
7121     * @private
7122     */
7123
7124  }, {
7125    key: "_stopScrollPropagation",
7126    value: function _stopScrollPropagation(event) {
7127      var elem = this; // called from event handler context with this as elem
7128
7129      var parent; // off-canvas elem if called from inner scrollbox
7130
7131      var up = event.pageY < elem.lastY;
7132      var down = !up;
7133      elem.lastY = event.pageY;
7134
7135      if (up && elem.allowUp || down && elem.allowDown) {
7136        // It is not recommended to stop event propagation (the user cannot watch it),
7137        // but in this case this is the only solution we have.
7138        event.stopPropagation(); // If elem is inner scrollbox we are scrolling the outer off-canvas down/up once the box end has been reached
7139        // This lets the user continue to touch move the off-canvas without the need to place the finger outside the scrollbox
7140
7141        if (elem.hasAttribute('data-off-canvas-scrollbox')) {
7142          parent = elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]');
7143
7144          if (elem.scrollTop <= 1 && parent.scrollTop > 0) {
7145            parent.scrollTop--;
7146          } else if (elem.scrollTop >= elem.scrollHeight - elem.clientHeight - 1 && parent.scrollTop < parent.scrollHeight - parent.clientHeight) {
7147            parent.scrollTop++;
7148          }
7149        }
7150      } else {
7151        event.preventDefault();
7152      }
7153    }
7154    /**
7155     * Opens the off-canvas menu.
7156     * @function
7157     * @param {Object} event - Event object passed from listener.
7158     * @param {jQuery} trigger - element that triggered the off-canvas to open.
7159     * @fires OffCanvas#opened
7160     * @todo also trigger 'open' event?
7161     */
7162
7163  }, {
7164    key: "open",
7165    value: function open(event, trigger) {
7166      var _this4 = this;
7167
7168      if (this.$element.hasClass('is-open') || this.isRevealed || this.isInCanvas) {
7169        return;
7170      }
7171
7172      var _this = this;
7173
7174      if (trigger) {
7175        this.$lastTrigger = trigger;
7176      }
7177
7178      if (this.options.forceTo === 'top') {
7179        window.scrollTo(0, 0);
7180      } else if (this.options.forceTo === 'bottom') {
7181        window.scrollTo(0, document.body.scrollHeight);
7182      }
7183
7184      if (this.options.transitionTime && this.options.transition !== 'overlap') {
7185        this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);
7186      } else {
7187        this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');
7188      }
7189
7190      this.$element.addClass('is-open').removeClass('is-closed');
7191      this.$triggers.attr('aria-expanded', 'true');
7192      this.$element.attr('aria-hidden', 'false');
7193      this.$content.addClass('is-open-' + this.position); // If `contentScroll` is set to false, add class and disable scrolling on touch devices.
7194
7195      if (this.options.contentScroll === false) {
7196        jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);
7197        this.$element.on('touchstart', this._recordScrollable);
7198        this.$element.on('touchmove', this._stopScrollPropagation);
7199        this.$element.on('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);
7200        this.$element.on('touchmove', '[data-off-canvas-scrollbox]', this._stopScrollPropagation);
7201      }
7202
7203      if (this.options.contentOverlay === true) {
7204        this.$overlay.addClass('is-visible');
7205      }
7206
7207      if (this.options.closeOnClick === true && this.options.contentOverlay === true) {
7208        this.$overlay.addClass('is-closable');
7209      }
7210
7211      if (this.options.autoFocus === true) {
7212        this.$element.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["transitionend"])(this.$element), function () {
7213          if (!_this.$element.hasClass('is-open')) {
7214            return; // exit if prematurely closed
7215          }
7216
7217          var canvasFocus = _this.$element.find('[data-autofocus]');
7218
7219          if (canvasFocus.length) {
7220            canvasFocus.eq(0).focus();
7221          } else {
7222            _this.$element.find('a, button').eq(0).focus();
7223          }
7224        });
7225      }
7226
7227      if (this.options.trapFocus === true) {
7228        this.$content.attr('tabindex', '-1');
7229        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].trapFocus(this.$element);
7230      }
7231
7232      if (this.options.transition === 'push') {
7233        this._fixStickyElements();
7234      }
7235
7236      this._addContentClasses();
7237      /**
7238       * Fires when the off-canvas menu opens.
7239       * @event OffCanvas#opened
7240       */
7241
7242
7243      this.$element.trigger('opened.zf.offCanvas');
7244      /**
7245       * Fires when the off-canvas menu open transition is done.
7246       * @event OffCanvas#openedEnd
7247       */
7248
7249      this.$element.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["transitionend"])(this.$element), function () {
7250        _this4.$element.trigger('openedEnd.zf.offCanvas');
7251      });
7252    }
7253    /**
7254     * Closes the off-canvas menu.
7255     * @function
7256     * @param {Function} cb - optional cb to fire after closure.
7257     * @fires OffCanvas#close
7258     * @fires OffCanvas#closed
7259     */
7260
7261  }, {
7262    key: "close",
7263    value: function close(cb) {
7264      var _this5 = this;
7265
7266      if (!this.$element.hasClass('is-open') || this.isRevealed) {
7267        return;
7268      }
7269      /**
7270       * Fires when the off-canvas menu closes.
7271       * @event OffCanvas#close
7272       */
7273
7274
7275      this.$element.trigger('close.zf.offCanvas');
7276
7277      var _this = this;
7278
7279      this.$element.removeClass('is-open');
7280      this.$element.attr('aria-hidden', 'true');
7281      this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom');
7282
7283      if (this.options.contentOverlay === true) {
7284        this.$overlay.removeClass('is-visible');
7285      }
7286
7287      if (this.options.closeOnClick === true && this.options.contentOverlay === true) {
7288        this.$overlay.removeClass('is-closable');
7289      }
7290
7291      this.$triggers.attr('aria-expanded', 'false'); // Listen to transitionEnd: add class, re-enable scrolling and release focus when done.
7292
7293      this.$element.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["transitionend"])(this.$element), function (e) {
7294        _this5.$element.addClass('is-closed');
7295
7296        _this5._removeContentClasses();
7297
7298        if (_this5.options.transition === 'push') {
7299          _this5._unfixStickyElements();
7300        } // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.
7301
7302
7303        if (_this5.options.contentScroll === false) {
7304          jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').removeClass('is-off-canvas-open').off('touchmove', _this5._stopScrolling);
7305
7306          _this5.$element.off('touchstart', _this5._recordScrollable);
7307
7308          _this5.$element.off('touchmove', _this5._stopScrollPropagation);
7309
7310          _this5.$element.off('touchstart', '[data-off-canvas-scrollbox]', _this5._recordScrollable);
7311
7312          _this5.$element.off('touchmove', '[data-off-canvas-scrollbox]', _this5._stopScrollPropagation);
7313        }
7314
7315        if (_this5.options.trapFocus === true) {
7316          _this5.$content.removeAttr('tabindex');
7317
7318          _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].releaseFocus(_this5.$element);
7319        }
7320        /**
7321         * Fires when the off-canvas menu close transition is done.
7322         * @event OffCanvas#closed
7323         */
7324
7325
7326        _this5.$element.trigger('closed.zf.offCanvas');
7327      });
7328    }
7329    /**
7330     * Toggles the off-canvas menu open or closed.
7331     * @function
7332     * @param {Object} event - Event object passed from listener.
7333     * @param {jQuery} trigger - element that triggered the off-canvas to open.
7334     */
7335
7336  }, {
7337    key: "toggle",
7338    value: function toggle(event, trigger) {
7339      if (this.$element.hasClass('is-open')) {
7340        this.close(event, trigger);
7341      } else {
7342        this.open(event, trigger);
7343      }
7344    }
7345    /**
7346     * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.
7347     * @function
7348     * @private
7349     */
7350
7351  }, {
7352    key: "_handleKeyboard",
7353    value: function _handleKeyboard(e) {
7354      var _this6 = this;
7355
7356      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].handleKey(e, 'OffCanvas', {
7357        close: function close() {
7358          _this6.close();
7359
7360          _this6.$lastTrigger.focus();
7361
7362          return true;
7363        },
7364        handled: function handled() {
7365          e.preventDefault();
7366        }
7367      });
7368    }
7369    /**
7370     * Destroys the OffCanvas plugin.
7371     * @function
7372     */
7373
7374  }, {
7375    key: "_destroy",
7376    value: function _destroy() {
7377      this.close();
7378      this.$element.off('.zf.trigger .zf.offCanvas');
7379      this.$overlay.off('.zf.offCanvas');
7380      if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
7381    }
7382  }]);
7383
7384  return OffCanvas;
7385}
7385(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
7386
7387OffCanvas.defaults = {
7388  /**
7389   * Allow the user to click outside of the menu to close it.
7390   * @option
7391   * @type {boolean}
7392   * @default true
7393   */
7394  closeOnClick: true,
7395
7396  /**
7397   * Adds an overlay on top of `[data-off-canvas-content]`.
7398   * @option
7399   * @type {boolean}
7400   * @default true
7401   */
7402  contentOverlay: true,
7403
7404  /**
7405   * Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken.
7406   * @option
7407   * @type {?string}
7408   * @default null
7409   */
7410  contentId: null,
7411
7412  /**
7413   * Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element.
7414   * @option
7415   * @type {boolean}
7416   * @default null
7417   */
7418  nested: null,
7419
7420  /**
7421   * Enable/disable scrolling of the main content when an off canvas panel is open.
7422   * @option
7423   * @type {boolean}
7424   * @default true
7425   */
7426  contentScroll: true,
7427
7428  /**
7429   * Amount of time the open and close transition requires, including the appropriate milliseconds (`ms`) or seconds (`s`) unit (e.g. `500ms`, `.75s`) If none selected, pulls from body style.
7430   * @option
7431   * @type {string}
7432   * @default null
7433   */
7434  transitionTime: null,
7435
7436  /**
7437   * Type of transition for the OffCanvas menu. Options are 'push', 'detached' or 'slide'.
7438   * @option
7439   * @type {string}
7440   * @default push
7441   */
7442  transition: 'push',
7443
7444  /**
7445   * Force the page to scroll to top or bottom on open.
7446   * @option
7447   * @type {?string}
7448   * @default null
7449   */
7450  forceTo: null,
7451
7452  /**
7453   * Allow the OffCanvas to remain open for certain breakpoints.
7454   * @option
7455   * @type {boolean}
7456   * @default false
7457   */
7458  isRevealed: false,
7459
7460  /**
7461   * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.
7462   * @option
7463   * @type {?string}
7464   * @default null
7465   */
7466  revealOn: null,
7467
7468  /**
7469   * Breakpoint at which the off-canvas gets moved into canvas content and acts as regular page element.
7470   * @option
7471   * @type {?string}
7472   * @default null
7473   */
7474  inCanvasOn: null,
7475
7476  /**
7477   * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.
7478   * @option
7479   * @type {boolean}
7480   * @default true
7481   */
7482  autoFocus: true,
7483
7484  /**
7485   * Class used to force an OffCanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.
7486   * @option
7487   * @type {string}
7488   * @default reveal-for-
7489   * @todo improve the regex testing for this.
7490   */
7491  revealClass: 'reveal-for-',
7492
7493  /**
7494   * Triggers optional focus trapping when opening an OffCanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.
7495   * @option
7496   * @type {boolean}
7497   * @default false
7498   */
7499  trapFocus: false
7500};
7501
7502
7503/***/ }),
7504
vendor: 5,230 bytes, lines 7505-7588
7505/***/ "./js/foundation.orbit.js":
7506/*!********************************!*\
7507  !*** ./js/foundation.orbit.js ***!
7508  \********************************/
7509/*! exports provided: Orbit */
7510/***/ (function(module, __webpack_exports__, __webpack_require__) {
7511
7512"use strict";
7513__webpack_require__.r(__webpack_exports__);
7514/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Orbit", function() { return Orbit; });
7515/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
7516/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
7517/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
7518/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
7519/* harmony import */ var _foundation_util_timer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.timer */ "./js/foundation.util.timer.js");
7520/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.imageLoader */ "./js/foundation.util.imageLoader.js");
7521/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
7522/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
7523/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./foundation.util.touch */ "./js/foundation.util.touch.js");
7524
7525
7526function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7527
7528function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7529
7530function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
7531
7532function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
7533
7534function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
7535
7536function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
7537
7538function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
7539
7540function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
7541
7542function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552/**
7553 * Orbit module.
7554 * @module foundation.orbit
7555 * @requires foundation.util.keyboard
7556 * @requires foundation.util.motion
7557 * @requires foundation.util.timer
7558 * @requires foundation.util.imageLoader
7559 * @requires foundation.util.touch
7560 */
7561
7562var Orbit =
7563/*#__PURE__*/
7564function (_Plugin) {
7565  _inherits(Orbit, _Plugin);
7566
7567  function Orbit() {
7568    _classCallCheck(this, Orbit);
7569
7570    return _possibleConstructorReturn(this, _getPrototypeOf(Orbit).apply(this, arguments));
7571  }
7572
7573  _createClass(Orbit, [{
7574    key: "_setup",
7575
7576    /**
7577    * Creates a new instance of an orbit carousel.
7578    * @class
7579    * @name Orbit
7580    * @param {jQuery} element - jQuery object to make into an Orbit Carousel.
7581    * @param {Object} options - Overrides to the default plugin settings.
7582    */
7583    value: function _setup(element, options) {
7584      this.$element = element;
7585      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Orbit.defaults, this.$element.data(), options);
7586      this.className = 'Orbit'; // ie9 back compat
7587
7588      _foundation_util_touch__WEBPACK_IMPORTED_MODULE_7__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); // Touch init is idempotent, we just need to make sure it's initialied.
vendor: 14,226 bytes, lines 7589-7997
7589
7590      this._init();
7591
7592      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Orbit', {
7593        'ltr': {
7594          'ARROW_RIGHT': 'next',
7595          'ARROW_LEFT': 'previous'
7596        },
7597        'rtl': {
7598          'ARROW_LEFT': 'next',
7599          'ARROW_RIGHT': 'previous'
7600        }
7601      });
7602    }
7603    /**
7604    * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.
7605    * @function
7606    * @private
7607    */
7608
7609  }, {
7610    key: "_init",
7611    value: function _init() {
7612      // @TODO: consider discussion on PR #9278 about DOM pollution by changeSlide
7613      this._reset();
7614
7615      this.$wrapper = this.$element.find(".".concat(this.options.containerClass));
7616      this.$slides = this.$element.find(".".concat(this.options.slideClass));
7617      var $images = this.$element.find('img'),
7618          initActive = this.$slides.filter('.is-active'),
7619          id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_5__["GetYoDigits"])(6, 'orbit');
7620      this.$element.attr({
7621        'data-resize': id,
7622        'id': id
7623      });
7624
7625      if (!initActive.length) {
7626        this.$slides.eq(0).addClass('is-active');
7627      }
7628
7629      if (!this.options.useMUI) {
7630        this.$slides.addClass('no-motionui');
7631      }
7632
7633      if ($images.length) {
7634        Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_4__["onImagesLoaded"])($images, this._prepareForOrbit.bind(this));
7635      } else {
7636        this._prepareForOrbit(); //hehe
7637
7638      }
7639
7640      if (this.options.bullets) {
7641        this._loadBullets();
7642      }
7643
7644      this._events();
7645
7646      if (this.options.autoPlay && this.$slides.length > 1) {
7647        this.geoSync();
7648      }
7649
7650      if (this.options.accessible) {
7651        // allow wrapper to be focusable to enable arrow navigation
7652        this.$wrapper.attr('tabindex', 0);
7653      }
7654    }
7655    /**
7656    * Creates a jQuery collection of bullets, if they are being used.
7657    * @function
7658    * @private
7659    */
7660
7661  }, {
7662    key: "_loadBullets",
7663    value: function _loadBullets() {
7664      this.$bullets = this.$element.find(".".concat(this.options.boxOfBullets)).find('button');
7665    }
7666    /**
7667    * Sets a `timer` object on the orbit, and starts the counter for the next slide.
7668    * @function
7669    */
7670
7671  }, {
7672    key: "geoSync",
7673    value: function geoSync() {
7674      var _this = this;
7675
7676      this.timer = new _foundation_util_timer__WEBPACK_IMPORTED_MODULE_3__["Timer"](this.$element, {
7677        duration: this.options.timerDelay,
7678        infinite: false
7679      }, function () {
7680        _this.changeSlide(true);
7681      });
7682      this.timer.start();
7683    }
7684    /**
7685    * Sets wrapper and slide heights for the orbit.
7686    * @function
7687    * @private
7688    */
7689
7690  }, {
7691    key: "_prepareForOrbit",
7692    value: function _prepareForOrbit() {
7693      var _this = this;
7694
7695      this._setWrapperHeight();
7696    }
7697    /**
7698    * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.
7699    * @function
7700    * @private
7701    * @param {Function} cb - a callback function to fire when complete.
7702    */
7703
7704  }, {
7705    key: "_setWrapperHeight",
7706    value: function _setWrapperHeight(cb) {
7707      //rewrite this to `for` loop
7708      var max = 0,
7709          temp,
7710          counter = 0,
7711          _this = this;
7712
7713      this.$slides.each(function () {
7714        temp = this.getBoundingClientRect().height;
7715        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('data-slide', counter); // hide all slides but the active one
7716
7717        if (!/mui/g.test(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)[0].className) && _this.$slides.filter('.is-active')[0] !== _this.$slides.eq(counter)[0]) {
7718          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).css({
7719            'display': 'none'
7720          });
7721        }
7722
7723        max = temp > max ? temp : max;
7724        counter++;
7725      });
7726
7727      if (counter === this.$slides.length) {
7728        this.$wrapper.css({
7729          'height': max
7730        }); //only change the wrapper height property once.
7731
7732        if (cb) {
7733          cb(max);
7734        } //fire callback with max height dimension.
7735
7736      }
7737    }
7738    /**
7739    * Sets the max-height of each slide.
7740    * @function
7741    * @private
7742    */
7743
7744  }, {
7745    key: "_setSlideHeight",
7746    value: function _setSlideHeight(height) {
7747      this.$slides.each(function () {
7748        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).css('max-height', height);
7749      });
7750    }
7751    /**
7752    * Adds event listeners to basically everything within the element.
7753    * @function
7754    * @private
7755    */
7756
7757  }, {
7758    key: "_events",
7759    value: function _events() {
7760      var _this = this; //***************************************
7761      //**Now using custom event - thanks to:**
7762      //**      Yohai Ararat of Toronto      **
7763      //***************************************
7764      //
7765
7766
7767      this.$element.off('.resizeme.zf.trigger').on({
7768        'resizeme.zf.trigger': this._prepareForOrbit.bind(this)
7769      });
7770
7771      if (this.$slides.length > 1) {
7772        if (this.options.swipe) {
7773          this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit').on('swipeleft.zf.orbit', function (e) {
7774            e.preventDefault();
7775
7776            _this.changeSlide(true);
7777          }).on('swiperight.zf.orbit', function (e) {
7778            e.preventDefault();
7779
7780            _this.changeSlide(false);
7781          });
7782        } //***************************************
7783
7784
7785        if (this.options.autoPlay) {
7786          this.$slides.on('click.zf.orbit', function () {
7787            _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);
7788
7789            _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();
7790          });
7791
7792          if (this.options.pauseOnHover) {
7793            this.$element.on('mouseenter.zf.orbit', function () {
7794              _this.timer.pause();
7795            }).on('mouseleave.zf.orbit', function () {
7796              if (!_this.$element.data('clickedOn')) {
7797                _this.timer.start();
7798              }
7799            });
7800          }
7801        }
7802
7803        if (this.options.navButtons) {
7804          var $controls = this.$element.find(".".concat(this.options.nextClass, ", .").concat(this.options.prevClass));
7805          $controls.attr('tabindex', 0) //also need to handle enter/return and spacebar key presses
7806          .on('click.zf.orbit touchend.zf.orbit', function (e) {
7807            e.preventDefault();
7808
7809            _this.changeSlide(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).hasClass(_this.options.nextClass));
7810          });
7811        }
7812
7813        if (this.options.bullets) {
7814          this.$bullets.on('click.zf.orbit touchend.zf.orbit', function () {
7815            if (/is-active/g.test(this.className)) {
7816              return false;
7817            } //if this is active, kick out of function.
7818
7819
7820            var idx = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('slide'),
7821                ltr = idx > _this.$slides.filter('.is-active').data('slide'),
7822                $slide = _this.$slides.eq(idx);
7823
7824            _this.changeSlide(ltr, $slide, idx);
7825          });
7826        }
7827
7828        if (this.options.accessible) {
7829          this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function (e) {
7830            // handle keyboard event with keyboard util
7831            _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Orbit', {
7832              next: function next() {
7833                _this.changeSlide(true);
7834              },
7835              previous: function previous() {
7836                _this.changeSlide(false);
7837              },
7838              handled: function handled() {
7839                // if bullet is focused, make sure focus moves
7840                if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).is(_this.$bullets)) {
7841                  _this.$bullets.filter('.is-active').focus();
7842                }
7843              }
7844            });
7845          });
7846        }
7847      }
7848    }
7849    /**
7850     * Resets Orbit so it can be reinitialized
7851     */
7852
7853  }, {
7854    key: "_reset",
7855    value: function _reset() {
7856      // Don't do anything if there are no slides (first run)
7857      if (typeof this.$slides == 'undefined') {
7858        return;
7859      }
7860
7861      if (this.$slides.length > 1) {
7862        // Remove old events
7863        this.$element.off('.zf.orbit').find('*').off('.zf.orbit'); // Restart timer if autoPlay is enabled
7864
7865        if (this.options.autoPlay) {
7866          this.timer.restart();
7867        } // Reset all sliddes
7868
7869
7870        this.$slides.each(function (el) {
7871          jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).removeClass('is-active is-active is-in').removeAttr('aria-live').hide();
7872        }); // Show the first slide
7873
7874        this.$slides.first().addClass('is-active').show(); // Triggers when the slide has finished animating
7875
7876        this.$element.trigger('slidechange.zf.orbit', [this.$slides.first()]); // Select first bullet if bullets are present
7877
7878        if (this.options.bullets) {
7879          this._updateBullets(0);
7880        }
7881      }
7882    }
7883    /**
7884    * Changes the current slide to a new one.
7885    * @function
7886    * @param {Boolean} isLTR - if true the slide moves from right to left, if false the slide moves from left to right.
7887    * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.
7888    * @param {Number} idx - the index of the new slide in its collection, if one chosen.
7889    * @fires Orbit#slidechange
7890    */
7891
7892  }, {
7893    key: "changeSlide",
7894    value: function changeSlide(isLTR, chosenSlide, idx) {
7895      if (!this.$slides) {
7896        return;
7897      } // Don't freak out if we're in the middle of cleanup
7898
7899
7900      var $curSlide = this.$slides.filter('.is-active').eq(0);
7901
7902      if (/mui/g.test($curSlide[0].className)) {
7903        return false;
7904      } //if the slide is currently animating, kick out of the function
7905
7906
7907      var $firstSlide = this.$slides.first(),
7908          $lastSlide = this.$slides.last(),
7909          dirIn = isLTR ? 'Right' : 'Left',
7910          dirOut = isLTR ? 'Left' : 'Right',
7911          _this = this,
7912          $newSlide;
7913
7914      if (!chosenSlide) {
7915        //most of the time, this will be auto played or clicked from the navButtons.
7916        $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!
7917        this.options.infiniteWrap ? $curSlide.next(".".concat(this.options.slideClass)).length ? $curSlide.next(".".concat(this.options.slideClass)) : $firstSlide : $curSlide.next(".".concat(this.options.slideClass)) : //pick next slide if moving left to right
7918        this.options.infiniteWrap ? $curSlide.prev(".".concat(this.options.slideClass)).length ? $curSlide.prev(".".concat(this.options.slideClass)) : $lastSlide : $curSlide.prev(".".concat(this.options.slideClass)); //pick prev slide if moving right to left
7919      } else {
7920        $newSlide = chosenSlide;
7921      }
7922
7923      if ($newSlide.length) {
7924        /**
7925        * Triggers before the next slide starts animating in and only if a next slide has been found.
7926        * @event Orbit#beforeslidechange
7927        */
7928        this.$element.trigger('beforeslidechange.zf.orbit', [$curSlide, $newSlide]);
7929
7930        if (this.options.bullets) {
7931          idx = idx || this.$slides.index($newSlide); //grab index to update bullets
7932
7933          this._updateBullets(idx);
7934        }
7935
7936        if (this.options.useMUI && !this.$element.is(':hidden')) {
7937          _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateIn($newSlide.addClass('is-active'), this.options["animInFrom".concat(dirIn)], function () {
7938            $newSlide.css({
7939              'display': 'block'
7940            }).attr('aria-live', 'polite');
7941          });
7942          _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut($curSlide.removeClass('is-active'), this.options["animOutTo".concat(dirOut)], function () {
7943            $curSlide.removeAttr('aria-live');
7944
7945            if (_this.options.autoPlay && !_this.timer.isPaused) {
7946              _this.timer.restart();
7947            } //do stuff?
7948
7949          });
7950        } else {
7951          $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();
7952          $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();
7953
7954          if (this.options.autoPlay && !this.timer.isPaused) {
7955            this.timer.restart();
7956          }
7957        }
7958        /**
7959        * Triggers when the slide has finished animating in.
7960        * @event Orbit#slidechange
7961        */
7962
7963
7964        this.$element.trigger('slidechange.zf.orbit', [$newSlide]);
7965      }
7966    }
7967    /**
7968    * Updates the active state of the bullets, if displayed.
7969    * Move the descriptor of the current slide `[data-slide-active-label]` to the newly active bullet.
7970    * If no `[data-slide-active-label]` is set, will move the exceeding `span` element.
7971    *
7972    * @function
7973    * @private
7974    * @param {Number} idx - the index of the current slide.
7975    */
7976
7977  }, {
7978    key: "_updateBullets",
7979    value: function _updateBullets(idx) {
7980      var $oldBullet = this.$bullets.filter('.is-active');
7981      var $othersBullets = this.$bullets.not('.is-active');
7982      var $newBullet = this.$bullets.eq(idx);
7983      $oldBullet.removeClass('is-active').blur();
7984      $newBullet.addClass('is-active'); // Find the descriptor for the current slide to move it to the new slide button
7985
7986      var activeStateDescriptor = $oldBullet.children('[data-slide-active-label]').last(); // If not explicitely given, search for the last "exceeding" span element (compared to others bullets).
7987
7988      if (!activeStateDescriptor.length) {
7989        var spans = $oldBullet.children('span');
7990        var spanCountInOthersBullets = $othersBullets.toArray().map(function (b) {
7991          return jquery__WEBPACK_IMPORTED_MODULE_0___default()(b).children('span').length;
7992        }); // If there is an exceeding span element, use it as current slide descriptor
7993
7994        if (spanCountInOthersBullets.every(function (count) {
7995          return count < spans.length;
7996        })) {
7997          activeStateDescriptor = spans.last();
7998          activeStateDescriptor.attr('data-slide-active-label', '');
7999        }
8000      } // Move the current slide descriptor to the new slide button
8001
8002
8003      if (activeStateDescriptor.length) {
8004        activeStateDescriptor.detach();
8005        $newBullet.append(activeStateDescriptor);
8006      }
8007    }
8008    /**
8009    * Destroys the carousel and hides the element.
8010    * @function
8011    */
8012
8013  }, {
8014    key: "_destroy",
8015    value: function _destroy() {
8016      this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();
8017    }
8018  }]);
8019
8020  return Orbit;
8021}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_6__["Plugin"]);
8022
8023Orbit.defaults = {
8024  /**
8025  * Tells the JS to look for and loadBullets.
8026  * @option
8027   * @type {boolean}
8028  * @default true
8029  */
8030  bullets: true,
8031
8032  /**
8033  * Tells the JS to apply event listeners to nav buttons
8034  * @option
8035   * @type {boolean}
8036  * @default true
8037  */
8038  navButtons: true,
8039
8040  /**
8041  * motion-ui animation class to apply
8042  * @option
8043   * @type {string}
8044  * @default 'slide-in-right'
8045  */
8046  animInFromRight: 'slide-in-right',
8047
8048  /**
8049  * motion-ui animation class to apply
8050  * @option
8051   * @type {string}
8052  * @default 'slide-out-right'
8053  */
8054  animOutToRight: 'slide-out-right',
8055
8056  /**
8057  * motion-ui animation class to apply
8058  * @option
8059   * @type {string}
8060  * @default 'slide-in-left'
8061  *
8062  */
8063  animInFromLeft: 'slide-in-left',
8064
8065  /**
8066  * motion-ui animation class to apply
8067  * @option
8068   * @type {string}
8069  * @default 'slide-out-left'
8070  */
8071  animOutToLeft: 'slide-out-left',
8072
8073  /**
8074  * Allows Orbit to automatically animate on page load.
8075  * @option
8076   * @type {boolean}
8077  * @default true
8078  */
8079  autoPlay: true,
8080
8081  /**
8082  * Amount of time, in ms, between slide transitions
8083  * @option
8084   * @type {number}
8085  * @default 5000
8086  */
8087  timerDelay: 5000,
8088
8089  /**
8090  * Allows Orbit to infinitely loop through the slides
8091  * @option
8092   * @type {boolean}
8093  * @default true
8094  */
8095  infiniteWrap: true,
8096
8097  /**
8098  * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library
8099  * @option
8100   * @type {boolean}
8101  * @default true
8102  */
8103  swipe: true,
8104
8105  /**
8106  * Allows the timing function to pause animation on hover.
8107  * @option
8108   * @type {boolean}
8109  * @default true
8110  */
8111  pauseOnHover: true,
8112
8113  /**
8114  * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys
8115  * @option
8116   * @type {boolean}
8117  * @default true
8118  */
8119  accessible: true,
8120
8121  /**
8122  * Class applied to the container of Orbit
8123  * @option
8124   * @type {string}
8125  * @default 'orbit-container'
8126  */
8127  containerClass: 'orbit-container',
8128
8129  /**
8130  * Class applied to individual slides.
8131  * @option
8132   * @type {string}
8133  * @default 'orbit-slide'
8134  */
8135  slideClass: 'orbit-slide',
8136
8137  /**
8138  * Class applied to the bullet container. You're welcome.
8139  * @option
8140   * @type {string}
8141  * @default 'orbit-bullets'
8142  */
8143  boxOfBullets: 'orbit-bullets',
8144
8145  /**
8146  * Class applied to the `next` navigation button.
8147  * @option
8148   * @type {string}
8149  * @default 'orbit-next'
8150  */
8151  nextClass: 'orbit-next',
8152
8153  /**
8154  * Class applied to the `previous` navigation button.
8155  * @option
8156   * @type {string}
8157  * @default 'orbit-previous'
8158  */
8159  prevClass: 'orbit-previous',
8160
8161  /**
8162  * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatibility.
8163  * @option
8164   * @type {boolean}
8165  * @default true
8166  */
8167  useMUI: true
8168};
8169
8170
8171/***/ }),
8172
8173/***/ "./js/foundation.positionable.js":
8174/*!***************************************!*\
8175  !*** ./js/foundation.positionable.js ***!
8176  \***************************************/
8177/*! exports provided: Positionable */
8178/***/ (function(module, __webpack_exports__, __webpack_require__) {
8179
8180"use strict";
8181__webpack_require__.r(__webpack_exports__);
8182/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Positionable", function() { return Positionable; });
8183/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.util.box */ "./js/foundation.util.box.js");
8184/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
8185/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
8186
8187
8188function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8189
8190function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8191
8192function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8193
8194function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8195
8196function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
8197
8198function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
8199
8200function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
8201
8202function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
8203
8204function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
8205
8206
8207
8208
8209var POSITIONS = ['left', 'right', 'top', 'bottom'];
8210var VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];
8211var HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];
8212var ALIGNMENTS = {
8213  'left': VERTICAL_ALIGNMENTS,
8214  'right': VERTICAL_ALIGNMENTS,
8215  'top': HORIZONTAL_ALIGNMENTS,
8216  'bottom': HORIZONTAL_ALIGNMENTS
8217};
8218
8219function nextItem(item, array) {
8220  var currentIdx = array.indexOf(item);
8221
8222  if (currentIdx === array.length - 1) {
8223    return array[0];
8224  } else {
8225    return array[currentIdx + 1];
8226  }
8227}
8228
8229var Positionable =
8230/*#__PURE__*/
8231function (_Plugin) {
8232  _inherits(Positionable, _Plugin);
8233
8234  function Positionable() {
8235    _classCallCheck(this, Positionable);
8236
8237    return _possibleConstructorReturn(this, _getPrototypeOf(Positionable).apply(this, arguments));
8238  }
8239
8240  _createClass(Positionable, [{
8241    key: "_init",
8242
8243    /**
8244     * Abstract class encapsulating the tether-like explicit positioning logic
8245     * including repositioning based on overlap.
8246     * Expects classes to define defaults for vOffset, hOffset, position,
8247     * alignment, allowOverlap, and allowBottomOverlap. They can do this by
8248     * extending the defaults, or (for now recommended due to the way docs are
8249     * generated) by explicitly declaring them.
8250     *
8251     **/
8252    value: function _init() {
8253      this.triedPositions = {};
8254      this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;
8255      this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;
8256      this.originalPosition = this.position;
8257      this.originalAlignment = this.alignment;
8258    }
8259  }, {
8260    key: "_getDefaultPosition",
8261    value: function _getDefaultPosition() {
8262      return 'bottom';
8263    }
8264  }, {
8265    key: "_getDefaultAlignment",
8266    value: function _getDefaultAlignment() {
8267      switch (this.position) {
8268        case 'bottom':
8269        case 'top':
8270          return Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["rtl"])() ? 'right' : 'left';
8271
8272        case 'left':
8273        case 'right':
8274          return 'bottom';
8275      }
8276    }
8277    /**
8278     * Adjusts the positionable possible positions by iterating through alignments
8279     * and positions.
8280     * @function
8281     * @private
8282     */
8283
8284  }, {
8285    key: "_reposition",
8286    value: function _reposition() {
8287      if (this._alignmentsExhausted(this.position)) {
8288        this.position = nextItem(this.position, POSITIONS);
8289        this.alignment = ALIGNMENTS[this.position][0];
8290      } else {
8291        this._realign();
8292      }
8293    }
8294    /**
8295     * Adjusts the dropdown pane possible positions by iterating through alignments
8296     * on the current position.
8297     * @function
8298     * @private
8299     */
8300
8301  }, {
8302    key: "_realign",
8303    value: function _realign() {
8304      this._addTriedPosition(this.position, this.alignment);
8305
8306      this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position]);
8307    }
8308  }, {
8309    key: "_addTriedPosition",
8310    value: function _addTriedPosition(position, alignment) {
8311      this.triedPositions[position] = this.triedPositions[position] || [];
8312      this.triedPositions[position].push(alignment);
8313    }
8314  }, {
8315    key: "_positionsExhausted",
8316    value: function _positionsExhausted() {
8317      var isExhausted = true;
8318
8319      for (var i = 0; i < POSITIONS.length; i++) {
8320        isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);
8321      }
8322
8323      return isExhausted;
8324    }
8325  }, {
8326    key: "_alignmentsExhausted",
8327    value: function _alignmentsExhausted(position) {
8328      return this.triedPositions[position] && this.triedPositions[position].length == ALIGNMENTS[position].length;
8329    } // When we're trying to center, we don't want to apply offset that's going to
8330    // take us just off center, so wrap around to return 0 for the appropriate
8331    // offset in those alignments.  TODO: Figure out if we want to make this
8332    // configurable behavior... it feels more intuitive, especially for tooltips, but
8333    // it's possible someone might actually want to start from center and then nudge
8334    // slightly off.
8335
8336  }, {
8337    key: "_getVOffset",
8338    value: function _getVOffset() {
8339      return this.options.vOffset;
8340    }
8341  }, {
8342    key: "_getHOffset",
8343    value: function _getHOffset() {
8344      return this.options.hOffset;
8345    }
8346  }, {
8347    key: "_setPosition",
8348    value: function _setPosition($anchor, $element, $parent) {
8349      if ($anchor.attr('aria-expanded') === 'false') {
8350        return false;
8351      }
8352
8353      if (!this.options.allowOverlap) {
8354        // restore original position & alignment before checking overlap
8355        this.position = this.originalPosition;
8356        this.alignment = this.originalAlignment;
8357      }
8358
8359      $element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));
8360
8361      if (!this.options.allowOverlap) {
8362        var minOverlap = 100000000; // default coordinates to how we start, in case we can't figure out better
8363
8364        var minCoordinates = {
8365          position: this.position,
8366          alignment: this.alignment
8367        };
8368
8369        while (!this._positionsExhausted()) {
8370          var overlap = _foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);
8371
8372          if (overlap === 0) {
8373            return;
8374          }
8375
8376          if (overlap < minOverlap) {
8377            minOverlap = overlap;
8378            minCoordinates = {
8379              position: this.position,
8380              alignment: this.alignment
8381            };
8382          }
8383
8384          this._reposition();
8385
8386          $element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));
8387        } // If we get through the entire loop, there was no non-overlapping
8388        // position available. Pick the version with least overlap.
8389
8390
8391        this.position = minCoordinates.position;
8392        this.alignment = minCoordinates.alignment;
8393        $element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));
8394      }
8395    }
8396  }]);
8397
8398  return Positionable;
8399}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
8400
8401Positionable.defaults = {
8402  /**
8403   * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.
8404   * @option
8405   * @type {string}
8406   * @default 'auto'
8407   */
8408  position: 'auto',
8409
8410  /**
8411   * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.
8412   * @option
8413   * @type {string}
8414   * @default 'auto'
8415   */
8416  alignment: 'auto',
8417
8418  /**
8419   * Allow overlap of container/window. If false, dropdown positionable first
8420   * try to position as defined by data-position and data-alignment, but
8421   * reposition if it would cause an overflow.
8422   * @option
8423   * @type {boolean}
8424   * @default false
8425   */
8426  allowOverlap: false,
8427
8428  /**
8429   * Allow overlap of only the bottom of the container. This is the most common
8430   * behavior for dropdowns, allowing the dropdown to extend the bottom of the
8431   * screen but not otherwise influence or break out of the container.
8432   * @option
8433   * @type {boolean}
8434   * @default true
8435   */
8436  allowBottomOverlap: true,
8437
8438  /**
8439   * Number of pixels the positionable should be separated vertically from anchor
8440   * @option
8441   * @type {number}
8442   * @default 0
8443   */
8444  vOffset: 0,
8445
8446  /**
8447   * Number of pixels the positionable should be separated horizontally from anchor
8448   * @option
8449   * @type {number}
8450   * @default 0
8451   */
8452  hOffset: 0
8453};
8454
8455
8456/***/ }),
8457
8458/***/ "./js/foundation.responsiveAccordionTabs.js":
8459/*!**************************************************!*\
8460  !*** ./js/foundation.responsiveAccordionTabs.js ***!
8461  \**************************************************/
8462/*! exports provided: ResponsiveAccordionTabs */
8463/***/ (function(module, __webpack_exports__, __webpack_require__) {
8464
8465"use strict";
8466__webpack_require__.r(__webpack_exports__);
8467/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResponsiveAccordionTabs", function() { return ResponsiveAccordionTabs; });
8468/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
8469/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
8470/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
8471/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
8472/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
8473/* harmony import */ var _foundation_accordion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.accordion */ "./js/foundation.accordion.js");
8474/* harmony import */ var _foundation_tabs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.tabs */ "./js/foundation.tabs.js");
8475
8476
8477function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8478
8479function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8480
8481function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8482
8483function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8484
8485function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
8486
8487function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
8488
8489function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
8490
8491function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
8492
8493function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
8494
8495
8496
8497
8498
8499
8500 // The plugin matches the plugin classes with these plugin instances.
8501
8502var MenuPlugins = {
8503  tabs: {
8504    cssClass: 'tabs',
8505    plugin: _foundation_tabs__WEBPACK_IMPORTED_MODULE_5__["Tabs"],
8506    open: function open(plugin, target) {
8507      return plugin.selectTab(target);
8508    },
8509    close: null
8510    /* not supported */
8511    ,
8512    toggle: null
8513    /* not supported */
8514
8515  },
8516  accordion: {
8517    cssClass: 'accordion',
8518    plugin: _foundation_accordion__WEBPACK_IMPORTED_MODULE_4__["Accordion"],
8519    open: function open(plugin, target) {
8520      return plugin.down(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target));
8521    },
8522    close: function close(plugin, target) {
8523      return plugin.up(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target));
8524    },
8525    toggle: function toggle(plugin, target) {
8526      return plugin.toggle(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target));
8527    }
8528  }
8529};
8530/**
8531 * ResponsiveAccordionTabs module.
8532 * @module foundation.responsiveAccordionTabs
8533 * @requires foundation.util.motion
8534 * @requires foundation.accordion
8535 * @requires foundation.tabs
8536 */
8537
8538var ResponsiveAccordionTabs =
8539/*#__PURE__*/
8540function (_Plugin) {
8541  _inherits(ResponsiveAccordionTabs, _Plugin);
8542
8543  function ResponsiveAccordionTabs(element, options) {
8544    var _this2;
8545
8546    _classCallCheck(this, ResponsiveAccordionTabs);
8547
8548    _this2 = _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveAccordionTabs).call(this, element, options));
8549    return _possibleConstructorReturn(_this2, _this2.options.reflow && _this2.storezfData || _assertThisInitialized(_this2));
8550  }
8551  /**
8552   * Creates a new instance of a responsive accordion tabs.
8553   * @class
8554   * @name ResponsiveAccordionTabs
8555   * @fires ResponsiveAccordionTabs#init
8556   * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.
8557   * @param {Object} options - Overrides to the default plugin settings.
8558   */
8559
8560
8561  _createClass(ResponsiveAccordionTabs, [{
8562    key: "_setup",
8563    value: function _setup(element, options) {
8564      this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);
8565      this.$element.data('zfPluginBase', this);
8566      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options);
8567      this.rules = this.$element.data('responsive-accordion-tabs');
8568      this.currentMq = null;
8569      this.currentRule = null;
8570      this.currentPlugin = null;
8571      this.className = 'ResponsiveAccordionTabs'; // ie9 back compat
8572
8573      if (!this.$element.attr('id')) {
8574        this.$element.attr('id', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'responsiveaccordiontabs'));
8575      }
8576
8577      this._init();
8578
8579      this._events();
8580    }
8581    /**
8582     * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.
8583     * @function
8584     * @private
8585     */
8586
8587  }, {
8588    key: "_init",
8589    value: function _init() {
8590      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules
8591
8592
8593      if (typeof this.rules === 'string') {
8594        var rulesTree = {}; // Parse rules from "classes" pulled from data attribute
8595
8596        var rules = this.rules.split(' '); // Iterate through every rule found
8597
8598        for (var i = 0; i < rules.length; i++) {
8599          var rule = rules[i].split('-');
8600          var ruleSize = rule.length > 1 ? rule[0] : 'small';
8601          var rulePlugin = rule.length > 1 ? rule[1] : rule[0];
8602
8603          if (MenuPlugins[rulePlugin] !== null) {
8604            rulesTree[ruleSize] = MenuPlugins[rulePlugin];
8605          }
8606        }
8607
8608        this.rules = rulesTree;
8609      }
8610
8611      this._getAllOptions();
8612
8613      if (!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.isEmptyObject(this.rules)) {
8614        this._checkMediaQueries();
8615      }
8616    }
8617  }, {
8618    key: "_getAllOptions",
8619    value: function _getAllOptions() {
8620      //get all defaults and options
8621      var _this = this;
8622
8623      _this.allOptions = {};
8624
8625      for (var key in MenuPlugins) {
8626        if (MenuPlugins.hasOwnProperty(key)) {
8627          var obj = MenuPlugins[key];
8628
8629          try {
8630            var dummyPlugin = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<ul></ul>');
8631            var tmpPlugin = new obj.plugin(dummyPlugin, _this.options);
8632
8633            for (var keyKey in tmpPlugin.options) {
8634              if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {
8635                var objObj = tmpPlugin.options[keyKey];
8636                _this.allOptions[keyKey] = objObj;
8637              }
8638            }
8639
8640            tmpPlugin.destroy();
8641          } catch (e) {}
8642        }
8643      }
8644    }
8645    /**
8646     * Initializes events for the Menu.
8647     * @function
8648     * @private
8649     */
8650
8651  }, {
8652    key: "_events",
8653    value: function _events() {
8654      this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);
8655      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);
8656    }
8657    /**
8658     * 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.
8659     * @function
8660     * @private
8661     */
8662
8663  }, {
8664    key: "_checkMediaQueries",
8665    value: function _checkMediaQueries() {
8666      var matchedMq,
8667          _this = this; // Iterate through each rule and find the last matching rule
8668
8669
8670      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.rules, function (key) {
8671        if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(key)) {
8672          matchedMq = key;
8673        }
8674      }); // No match? No dice
8675
8676      if (!matchedMq) return; // Plugin already initialized? We good
8677
8678      if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; // Remove existing plugin-specific CSS classes
8679
8680      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(MenuPlugins, function (key, value) {
8681        _this.$element.removeClass(value.cssClass);
8682      }); // Add the CSS class for the new plugin
8683
8684      this.$element.addClass(this.rules[matchedMq].cssClass); // Create an instance of the new plugin
8685
8686      if (this.currentPlugin) {
vendor: 6,717 bytes, lines 8687-8842
8687        //don't know why but on nested elements data zfPlugin get's lost
8688        if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin', this.storezfData);
8689        this.currentPlugin.destroy();
8690      }
8691
8692      this._handleMarkup(this.rules[matchedMq].cssClass);
8693
8694      this.currentRule = this.rules[matchedMq];
8695      this.currentPlugin = new this.currentRule.plugin(this.$element, this.options);
8696      this.storezfData = this.currentPlugin.$element.data('zfPlugin');
8697    }
8698  }, {
8699    key: "_handleMarkup",
8700    value: function _handleMarkup(toSet) {
8701      var _this = this,
8702          fromString = 'accordion';
8703
8704      var $panels = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + this.$element.attr('id') + ']');
8705      if ($panels.length) fromString = 'tabs';
8706
8707      if (fromString === toSet) {
8708        return;
8709      }
8710
8711      var tabsTitle = _this.allOptions.linkClass ? _this.allOptions.linkClass : 'tabs-title';
8712      var tabsPanel = _this.allOptions.panelClass ? _this.allOptions.panelClass : 'tabs-panel';
8713      this.$element.removeAttr('role');
8714      var $liHeads = this.$element.children('.' + tabsTitle + ',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');
8715      var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');
8716
8717      if (fromString === 'tabs') {
8718        $panels = $panels.children('.' + tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');
8719        $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');
8720      } else {
8721        $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');
8722      }
8723
8724      $panels.css({
8725        display: '',
8726        visibility: ''
8727      });
8728      $liHeads.css({
8729        display: '',
8730        visibility: ''
8731      });
8732
8733      if (toSet === 'accordion') {
8734        $panels.each(function (key, value) {
8735          jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content', '').removeClass('is-active').css({
8736            height: ''
8737          });
8738          jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + _this.$element.attr('id') + ']').after('<div id="tabs-placeholder-' + _this.$element.attr('id') + '"></div>').detach();
8739          $liHeads.addClass('accordion-item').attr('data-accordion-item', '');
8740          $liHeadsA.addClass('accordion-title');
8741        });
8742      } else if (toSet === 'tabs') {
8743        var $tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + _this.$element.attr('id') + ']');
8744        var $placeholder = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#tabs-placeholder-' + _this.$element.attr('id'));
8745
8746        if ($placeholder.length) {
8747          $tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div class="tabs-content"></div>').insertAfter($placeholder).attr('data-tabs-content', _this.$element.attr('id'));
8748          $placeholder.remove();
8749        } else {
8750          $tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div class="tabs-content"></div>').insertAfter(_this.$element).attr('data-tabs-content', _this.$element.attr('id'));
8751        }
8752
8753        $panels.each(function (key, value) {
8754          var tempValue = jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).appendTo($tabsContent).addClass(tabsPanel);
8755          var hash = $liHeadsA.get(key).hash.slice(1);
8756          var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'accordion');
8757
8758          if (hash !== id) {
8759            if (hash !== '') {
8760              jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id', hash);
8761            } else {
8762              hash = id;
8763              jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id', hash);
8764              jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeadsA.get(key)).attr('href', jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeadsA.get(key)).attr('href').replace('#', '') + '#' + hash);
8765            }
8766          }
8767
8768          var isActive = jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeads.get(key)).hasClass('is-active');
8769
8770          if (isActive) {
8771            tempValue.addClass('is-active');
8772          }
8773        });
8774        $liHeads.addClass(tabsTitle);
8775      }
8776
8777      ;
8778    }
8779    /**
8780     * Opens the plugin pane defined by `target`.
8781     * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.
8782     * @see Accordion.down
8783     * @see Tabs.selectTab
8784     * @function
8785     */
8786
8787  }, {
8788    key: "open",
8789    value: function open(_target) {
8790      if (this.currentRule && typeof this.currentRule.open === 'function') {
8791        var _this$currentRule;
8792
8793        return (_this$currentRule = this.currentRule).open.apply(_this$currentRule, [this.currentPlugin].concat(Array.prototype.slice.call(arguments)));
8794      }
8795    }
8796    /**
8797     * Closes the plugin pane defined by `target`. Not availaible for Tabs.
8798     * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.
8799     * @see Accordion.up
8800     * @function
8801     */
8802
8803  }, {
8804    key: "close",
8805    value: function close(_target) {
8806      if (this.currentRule && typeof this.currentRule.close === 'function') {
8807        var _this$currentRule2;
8808
8809        return (_this$currentRule2 = this.currentRule).close.apply(_this$currentRule2, [this.currentPlugin].concat(Array.prototype.slice.call(arguments)));
8810      }
8811    }
8812    /**
8813     * Toggles the plugin pane defined by `target`. Not availaible for Tabs.
8814     * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.
8815     * @see Accordion.toggle
8816     * @function
8817     */
8818
8819  }, {
8820    key: "toggle",
8821    value: function toggle(_target) {
8822      if (this.currentRule && typeof this.currentRule.toggle === 'function') {
8823        var _this$currentRule3;
8824
8825        return (_this$currentRule3 = this.currentRule).toggle.apply(_this$currentRule3, [this.currentPlugin].concat(Array.prototype.slice.call(arguments)));
8826      }
8827    }
8828    /**
8829     * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.
8830     * @function
8831     */
8832
8833  }, {
8834    key: "_destroy",
8835    value: function _destroy() {
8836      if (this.currentPlugin) this.currentPlugin.destroy();
8837      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);
8838    }
8839  }]);
8840
8841  return ResponsiveAccordionTabs;
8842}
8842(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
8843
8844ResponsiveAccordionTabs.defaults = {};
8845
8846
8847/***/ }),
8848
8849/***/ "./js/foundation.responsiveMenu.js":
8850/*!*****************************************!*\
8851  !*** ./js/foundation.responsiveMenu.js ***!
8852  \*****************************************/
8853/*! exports provided: ResponsiveMenu */
8854/***/ (function(module, __webpack_exports__, __webpack_require__) {
8855
8856"use strict";
8857__webpack_require__.r(__webpack_exports__);
8858/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResponsiveMenu", function() { return ResponsiveMenu; });
8859/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
8860/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
8861/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
8862/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
8863/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
8864/* harmony import */ var _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.dropdownMenu */ "./js/foundation.dropdownMenu.js");
8865/* harmony import */ var _foundation_drilldown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.drilldown */ "./js/foundation.drilldown.js");
8866/* harmony import */ var _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./foundation.accordionMenu */ "./js/foundation.accordionMenu.js");
8867
8868
8869function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8870
8871function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8872
8873function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8874
8875function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8876
8877function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
8878
8879function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
8880
8881function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
8882
8883function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
8884
8885function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
8886
8887
8888
8889
8890
8891
8892
8893
8894var MenuPlugins = {
8895  dropdown: {
8896    cssClass: 'dropdown',
8897    plugin: _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_4__["DropdownMenu"]
8898  },
8899  drilldown: {
8900    cssClass: 'drilldown',
8901    plugin: _foundation_drilldown__WEBPACK_IMPORTED_MODULE_5__["Drilldown"]
8902  },
8903  accordion: {
8904    cssClass: 'accordion-menu',
8905    plugin: _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_6__["AccordionMenu"]
8906  }
8907}; // import "foundation.util.triggers.js";
8908
8909/**
8910 * ResponsiveMenu module.
8911 * @module foundation.responsiveMenu
8912 * @requires foundation.util.triggers
8913 * @requires foundation.util.mediaQuery
8914 */
8915
8916var ResponsiveMenu =
8917/*#__PURE__*/
8918function (_Plugin) {
8919  _inherits(ResponsiveMenu, _Plugin);
8920
8921  function ResponsiveMenu() {
8922    _classCallCheck(this, ResponsiveMenu);
8923
8924    return _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveMenu).apply(this, arguments));
8925  }
8926
8927  _createClass(ResponsiveMenu, [{
8928    key: "_setup",
8929
8930    /**
8931     * Creates a new instance of a responsive menu.
8932     * @class
8933     * @name ResponsiveMenu
8934     * @fires ResponsiveMenu#init
8935     * @param {jQuery} element - jQuery object to make into a dropdown menu.
8936     * @param {Object} options - Overrides to the default plugin settings.
8937     */
8938    value: function _setup(element, options) {
8939      this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);
8940      this.rules = this.$element.data('responsive-menu');
8941      this.currentMq = null;
8942      this.currentPlugin = null;
8943      this.className = 'ResponsiveMenu'; // ie9 back compat
8944
8945      this._init();
8946
8947      this._events();
8948    }
8949    /**
8950     * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.
8951     * @function
8952     * @private
8953     */
8954
8955  }, {
8956    key: "_init",
8957    value: function _init() {
8958      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules
8959
8960
8961      if (typeof this.rules === 'string') {
8962        var rulesTree = {}; // Parse rules from "classes" pulled from data attribute
8963
8964        var rules = this.rules.split(' '); // Iterate through every rule found
8965
8966        for (var i = 0; i < rules.length; i++) {
8967          var rule = rules[i].split('-');
8968          var ruleSize = rule.length > 1 ? rule[0] : 'small';
8969          var rulePlugin = rule.length > 1 ? rule[1] : rule[0];
8970
8971          if (MenuPlugins[rulePlugin] !== null) {
8972            rulesTree[ruleSize] = MenuPlugins[rulePlugin];
8973          }
8974        }
8975
8976        this.rules = rulesTree;
8977      }
8978
8979      if (!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.isEmptyObject(this.rules)) {
8980        this._checkMediaQueries();
8981      } // Add data-mutate since children may need it.
8982
8983
8984      this.$element.attr('data-mutate', this.$element.attr('data-mutate') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'responsive-menu'));
8985    }
8986    /**
8987     * Initializes events for the Menu.
8988     * @function
8989     * @private
8990     */
8991
8992  }, {
8993    key: "_events",
8994    value: function _events() {
8995      var _this = this;
8996
8997      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function () {
8998        _this._checkMediaQueries();
8999      }); // $(window).on('resize.zf.ResponsiveMenu', function() {
9000      //   _this._checkMediaQueries();
9001      // });
9002    }
9003    /**
9004     * 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.
9005     * @function
9006     * @private
9007     */
9008
9009  }, {
9010    key: "_checkMediaQueries",
9011    value: function _checkMediaQueries() {
9012      var matchedMq,
9013          _this = this; // Iterate through each rule and find the last matching rule
9014
9015
9016      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.rules, function (key) {
9017        if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(key)) {
9018          matchedMq = key;
9019        }
9020      }); // No match? No dice
9021
9022      if (!matchedMq) return; // Plugin already initialized? We good
9023
9024      if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; // Remove existing plugin-specific CSS classes
9025
9026      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(MenuPlugins, function (key, value) {
9027        _this.$element.removeClass(value.cssClass);
9028      }); // Add the CSS class for the new plugin
9029
9030      this.$element.addClass(this.rules[matchedMq].cssClass); // Create an instance of the new plugin
9031
9032      if (this.currentPlugin) this.currentPlugin.destroy();
9033      this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});
9034    }
9035    /**
9036     * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.
9037     * @function
9038     */
9039
9040  }, {
9041    key: "_destroy",
9042    value: function _destroy() {
9043      this.currentPlugin.destroy();
9044      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('.zf.ResponsiveMenu');
9045    }
9046  }]);
9047
9048  return ResponsiveMenu;
9049}
9049(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
9050
9051ResponsiveMenu.defaults = {};
9052
9053
9054/***/ }),
9055
9056/***/ "./js/foundation.responsiveToggle.js":
9057/*!*******************************************!*\
9058  !*** ./js/foundation.responsiveToggle.js ***!
9059  \*******************************************/
9060/*! exports provided: ResponsiveToggle */
9061/***/ (function(module, __webpack_exports__, __webpack_require__) {
9062
9063"use strict";
9064__webpack_require__.r(__webpack_exports__);
9065/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResponsiveToggle", function() { return ResponsiveToggle; });
9066/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
9067/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
9068/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
9069/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
9070/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
9071
9072
9073function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9074
9075function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9076
9077function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
9078
9079function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
9080
9081function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
9082
9083function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
9084
9085function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
9086
9087function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
9088
9089function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
9090
9091
9092
9093
9094
9095/**
9096 * ResponsiveToggle module.
9097 * @module foundation.responsiveToggle
9098 * @requires foundation.util.mediaQuery
9099 * @requires foundation.util.motion
9100 */
9101
9102var ResponsiveToggle =
9103/*#__PURE__*/
9104function (_Plugin) {
9105  _inherits(ResponsiveToggle, _Plugin);
9106
9107  function ResponsiveToggle() {
9108    _classCallCheck(this, ResponsiveToggle);
9109
9110    return _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveToggle).apply(this, arguments));
9111  }
9112
9113  _createClass(ResponsiveToggle, [{
9114    key: "_setup",
9115
9116    /**
9117     * Creates a new instance of Tab Bar.
9118     * @class
9119     * @name ResponsiveToggle
9120     * @fires ResponsiveToggle#init
9121     * @param {jQuery} element - jQuery object to attach tab bar functionality to.
9122     * @param {Object} options - Overrides to the default plugin settings.
9123     */
9124    value: function _setup(element, options) {
9125      this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);
9126      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);
9127      this.className = 'ResponsiveToggle'; // ie9 back compat
9128
9129      this._init();
9130
9131      this._events();
9132    }
9133    /**
9134     * Initializes the tab bar by finding the target element, toggling element, and running update().
9135     * @function
9136     * @private
9137     */
9138
9139  }, {
9140    key: "_init",
9141    value: function _init() {
9142      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init();
9143
9144      var targetID = this.$element.data('responsive-toggle');
9145
9146      if (!targetID) {
9147        console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');
9148      }
9149
9150      this.$targetMenu = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetID));
9151      this.$toggler = this.$element.find('[data-toggle]').filter(function () {
9152        var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
9153        return target === targetID || target === "";
9154      });
9155      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, this.options, this.$targetMenu.data()); // If they were set, parse the animation classes
9156
9157      if (this.options.animate) {
9158        var input = this.options.animate.split(' ');
9159        this.animationIn = input[0];
9160        this.animationOut = input[1] || null;
9161      }
9162
9163      this._update();
9164    }
9165    /**
9166     * Adds necessary event handlers for the tab bar to work.
9167     * @function
9168     * @private
9169     */
9170
9171  }, {
9172    key: "_events",
9173    value: function _events() {
9174      var _this = this;
9175
9176      this._updateMqHandler = this._update.bind(this);
9177      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._updateMqHandler);
9178      this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));
9179    }
9180    /**
9181     * Checks the current media query to determine if the tab bar should be visible or hidden.
9182     * @function
9183     * @private
9184     */
9185
9186  }, {
9187    key: "_update",
9188    value: function _update() {
9189      // Mobile
9190      if (!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(this.options.hideFor)) {
9191        this.$element.show();
9192        this.$targetMenu.hide();
9193      } // Desktop
9194      else {
9195          this.$element.hide();
9196          this.$targetMenu.show();
9197        }
9198    }
9199    /**
9200     * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.
9201     * @function
9202     * @fires ResponsiveToggle#toggled
9203     */
9204
9205  }, {
9206    key: "toggleMenu",
9207    value: function toggleMenu() {
9208      var _this2 = this;
9209
9210      if (!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(this.options.hideFor)) {
9211        /**
9212         * Fires when the element attached to the tab bar toggles.
9213         * @event ResponsiveToggle#toggled
9214         */
9215        if (this.options.animate) {
9216          if (this.$targetMenu.is(':hidden')) {
9217            _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateIn(this.$targetMenu, this.animationIn, function () {
9218              _this2.$element.trigger('toggled.zf.responsiveToggle');
9219
9220              _this2.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');
9221            });
9222          } else {
9223            _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(this.$targetMenu, this.animationOut, function () {
9224              _this2.$element.trigger('toggled.zf.responsiveToggle');
9225            });
9226          }
9227        } else {
9228          this.$targetMenu.toggle(0);
9229          this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');
9230          this.$element.trigger('toggled.zf.responsiveToggle');
9231        }
9232      }
9233    }
9234  }, {
9235    key: "_destroy",
9236    value: function _destroy() {
9237      this.$element.off('.zf.responsiveToggle');
9238      this.$toggler.off('.zf.responsiveToggle');
9239      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._updateMqHandler);
9240    }
9241  }]);
9242
9243  return ResponsiveToggle;
9244}
9244(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
9245
9246ResponsiveToggle.defaults = {
9247  /**
9248   * The breakpoint after which the menu is always shown, and the tab bar is hidden.
9249   * @option
9250   * @type {string}
9251   * @default 'medium'
9252   */
9253  hideFor: 'medium',
9254
9255  /**
9256   * To decide if the toggle should be animated or not.
9257   * @option
9258   * @type {boolean}
9259   * @default false
9260   */
9261  animate: false
9262};
9263
9264
9265/***/ }),
9266
vendor: 5,896 bytes, lines 9267-9372
9267/***/ "./js/foundation.reveal.js":
9268/*!*********************************!*\
9269  !*** ./js/foundation.reveal.js ***!
9270  \*********************************/
9271/*! exports provided: Reveal */
9272/***/ (function(module, __webpack_exports__, __webpack_require__) {
9273
9274"use strict";
9275__webpack_require__.r(__webpack_exports__);
9276/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Reveal", function() { return Reveal; });
9277/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
9278/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
9279/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
9280/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
9281/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
9282/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
9283/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
9284/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
9285/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./foundation.util.touch */ "./js/foundation.util.touch.js");
9286
9287
9288function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9289
9290function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9291
9292function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
9293
9294function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
9295
9296function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
9297
9298function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
9299
9300function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
9301
9302function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
9303
9304function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314/**
9315 * Reveal module.
9316 * @module foundation.reveal
9317 * @requires foundation.util.keyboard
9318 * @requires foundation.util.touch
9319 * @requires foundation.util.triggers
9320 * @requires foundation.util.mediaQuery
9321 * @requires foundation.util.motion if using animations
9322 */
9323
9324var Reveal =
9325/*#__PURE__*/
9326function (_Plugin) {
9327  _inherits(Reveal, _Plugin);
9328
9329  function Reveal() {
9330    _classCallCheck(this, Reveal);
9331
9332    return _possibleConstructorReturn(this, _getPrototypeOf(Reveal).apply(this, arguments));
9333  }
9334
9335  _createClass(Reveal, [{
9336    key: "_setup",
9337
9338    /**
9339     * Creates a new instance of Reveal.
9340     * @class
9341     * @name Reveal
9342     * @param {jQuery} element - jQuery object to use for the modal.
9343     * @param {Object} options - optional parameters.
9344     */
9345    value: function _setup(element, options) {
9346      this.$element = element;
9347      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Reveal.defaults, this.$element.data(), options);
9348      this.className = 'Reveal'; // ie9 back compat
9349
9350      this._init(); // Touch and Triggers init are idempotent, just need to make sure they are initialized
9351
9352
9353      _foundation_util_touch__WEBPACK_IMPORTED_MODULE_7__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
9354      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_6__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
9355      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].register('Reveal', {
9356        'ESCAPE': 'close'
9357      });
9358    }
9359    /**
9360     * Initializes the modal by adding the overlay and close buttons, (if selected).
9361     * @private
9362     */
9363
9364  }, {
9365    key: "_init",
9366    value: function _init() {
9367      var _this2 = this;
9368
9369      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_4__["MediaQuery"]._init();
9370
9371      this.id = this.$element.attr('id');
9372      this.isActive = false;
vendor: 17,847 bytes, lines 9373-9903
9373      this.cached = {
9374        mq: _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_4__["MediaQuery"].current
9375      };
9376      this.$anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(this.id, "\"]")).length ? jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(this.id, "\"]")) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat(this.id, "\"]"));
9377      this.$anchor.attr({
9378        'aria-controls': this.id,
9379        'aria-haspopup': true,
9380        'tabindex': 0
9381      });
9382
9383      if (this.options.fullScreen || this.$element.hasClass('full')) {
9384        this.options.fullScreen = true;
9385        this.options.overlay = false;
9386      }
9387
9388      if (this.options.overlay && !this.$overlay) {
9389        this.$overlay = this._makeOverlay(this.id);
9390      }
9391
9392      this.$element.attr({
9393        'role': 'dialog',
9394        'aria-hidden': true,
9395        'data-yeti-box': this.id,
9396        'data-resize': this.id
9397      });
9398
9399      if (this.$overlay) {
9400        this.$element.detach().appendTo(this.$overlay);
9401      } else {
9402        this.$element.detach().appendTo(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.appendTo));
9403        this.$element.addClass('without-overlay');
9404      }
9405
9406      this._events();
9407
9408      if (this.options.deepLink && window.location.hash === "#".concat(this.id)) {
9409        this.onLoadListener = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
9410          return _this2.open();
9411        });
9412      }
9413    }
9414    /**
9415     * Creates an overlay div to display behind the modal.
9416     * @private
9417     */
9418
9419  }, {
9420    key: "_makeOverlay",
9421    value: function _makeOverlay() {
9422      var additionalOverlayClasses = '';
9423
9424      if (this.options.additionalOverlayClasses) {
9425        additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;
9426      }
9427
9428      return jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div></div>').addClass('reveal-overlay' + additionalOverlayClasses).appendTo(this.options.appendTo);
9429    }
9430    /**
9431     * Updates position of modal
9432     * TODO:  Figure out if we actually need to cache these values or if it doesn't matter
9433     * @private
9434     */
9435
9436  }, {
9437    key: "_updatePosition",
9438    value: function _updatePosition() {
9439      var width = this.$element.outerWidth();
9440      var outerWidth = jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).width();
9441      var height = this.$element.outerHeight();
9442      var outerHeight = jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height();
9443      var left,
9444          top = null;
9445
9446      if (this.options.hOffset === 'auto') {
9447        left = parseInt((outerWidth - width) / 2, 10);
9448      } else {
9449        left = parseInt(this.options.hOffset, 10);
9450      }
9451
9452      if (this.options.vOffset === 'auto') {
9453        if (height > outerHeight) {
9454          top = parseInt(Math.min(100, outerHeight / 10), 10);
9455        } else {
9456          top = parseInt((outerHeight - height) / 4, 10);
9457        }
9458      } else if (this.options.vOffset !== null) {
9459        top = parseInt(this.options.vOffset, 10);
9460      }
9461
9462      if (top !== null) {
9463        this.$element.css({
9464          top: top + 'px'
9465        });
9466      } // only worry about left if we don't have an overlay or we have a horizontal offset,
9467      // otherwise we're perfectly in the middle
9468
9469
9470      if (!this.$overlay || this.options.hOffset !== 'auto') {
9471        this.$element.css({
9472          left: left + 'px'
9473        });
9474        this.$element.css({
9475          margin: '0px'
9476        });
9477      }
9478    }
9479    /**
9480     * Adds event handlers for the modal.
9481     * @private
9482     */
9483
9484  }, {
9485    key: "_events",
9486    value: function _events() {
9487      var _this3 = this;
9488
9489      var _this = this;
9490
9491      this.$element.on({
9492        'open.zf.trigger': this.open.bind(this),
9493        'close.zf.trigger': function closeZfTrigger(event, $element) {
9494          if (event.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).parents('[data-closable]')[0] === $element) {
9495            // only close reveal when it's explicitly called
9496            return _this3.close.apply(_this3);
9497          }
9498        },
9499        'toggle.zf.trigger': this.toggle.bind(this),
9500        'resizeme.zf.trigger': function resizemeZfTrigger() {
9501          _this._updatePosition();
9502        }
9503      });
9504
9505      if (this.options.closeOnClick && this.options.overlay) {
9506        this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function (e) {
9507          if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target) || !jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(document, e.target)) {
9508            return;
9509          }
9510
9511          _this.close();
9512        });
9513      }
9514
9515      if (this.options.deepLink) {
9516        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on("hashchange.zf.reveal:".concat(this.id), this._handleState.bind(this));
9517      }
9518    }
9519    /**
9520     * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.
9521     * @private
9522     */
9523
9524  }, {
9525    key: "_handleState",
9526    value: function _handleState(e) {
9527      if (window.location.hash === '#' + this.id && !this.isActive) {
9528        this.open();
9529      } else {
9530        this.close();
9531      }
9532    }
9533    /**
9534    * Disables the scroll when Reveal is shown to prevent the background from shifting
9535    * @param {number} scrollTop - Scroll to visually apply, window current scroll by default
9536    */
9537
9538  }, {
9539    key: "_disableScroll",
9540    value: function _disableScroll(scrollTop) {
9541      scrollTop = scrollTop || jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop();
9542
9543      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()) {
9544        jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top", -scrollTop);
9545      }
9546    }
9547    /**
9548    * Reenables the scroll when Reveal closes
9549    * @param {number} scrollTop - Scroll to restore, html "top" property by default (as set by `_disableScroll`)
9550    */
9551
9552  }, {
9553    key: "_enableScroll",
9554    value: function _enableScroll(scrollTop) {
9555      scrollTop = scrollTop || parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top"));
9556
9557      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()) {
9558        jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top", "");
9559        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop(-scrollTop);
9560      }
9561    }
9562    /**
9563     * Opens the modal controlled by `this.$anchor`, and closes all others by default.
9564     * @function
9565     * @fires Reveal#closeme
9566     * @fires Reveal#open
9567     */
9568
9569  }, {
9570    key: "open",
9571    value: function open() {
9572      var _this4 = this;
9573
9574      // either update or replace browser history
9575      var hash = "#".concat(this.id);
9576
9577      if (this.options.deepLink && window.location.hash !== hash) {
9578        if (window.history.pushState) {
9579          if (this.options.updateHistory) {
9580            window.history.pushState({}, '', hash);
9581          } else {
9582            window.history.replaceState({}, '', hash);
9583          }
9584        } else {
9585          window.location.hash = hash;
9586        }
9587      } // Remember anchor that opened it to set focus back later, have general anchors as fallback
9588
9589
9590      this.$activeAnchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.activeElement).is(this.$anchor) ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.activeElement) : this.$anchor;
9591      this.isActive = true; // Make elements invisible, but remove display: none so we can get size and positioning
9592
9593      this.$element.css({
9594        'visibility': 'hidden'
9595      }).show().scrollTop(0);
9596
9597      if (this.options.overlay) {
9598        this.$overlay.css({
9599          'visibility': 'hidden'
9600        }).show();
9601      }
9602
9603      this._updatePosition();
9604
9605      this.$element.hide().css({
9606        'visibility': ''
9607      });
9608
9609      if (this.$overlay) {
9610        this.$overlay.css({
9611          'visibility': ''
9612        }).hide();
9613
9614        if (this.$element.hasClass('fast')) {
9615          this.$overlay.addClass('fast');
9616        } else if (this.$element.hasClass('slow')) {
9617          this.$overlay.addClass('slow');
9618        }
9619      }
9620
9621      if (!this.options.multipleOpened) {
9622        /**
9623         * Fires immediately before the modal opens.
9624         * Closes any other modals that are currently open
9625         * @event Reveal#closeme
9626         */
9627        this.$element.trigger('closeme.zf.reveal', this.id);
9628      }
9629
9630      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) {
9631        this._disableScroll();
9632      }
9633
9634      var _this = this; // Motion UI method of reveal
9635
9636
9637      if (this.options.animationIn) {
9638        var afterAnimation = function afterAnimation() {
9639          _this.$element.attr({
9640            'aria-hidden': false,
9641            'tabindex': -1
9642          }).focus();
9643
9644          _this._addGlobalClasses();
9645
9646          _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].trapFocus(_this.$element);
9647        };
9648
9649        if (this.options.overlay) {
9650          _foundation_util_motion__WEBPACK_IMPORTED_MODULE_5__["Motion"].animateIn(this.$overlay, 'fade-in');
9651        }
9652
9653        _foundation_util_motion__WEBPACK_IMPORTED_MODULE_5__["Motion"].animateIn(this.$element, this.options.animationIn, function () {
9654          if (_this4.$element) {
9655            // protect against object having been removed
9656            _this4.focusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].findFocusable(_this4.$element);
9657            afterAnimation();
9658          }
9659        });
9660      } // jQuery method of reveal
9661      else {
9662          if (this.options.overlay) {
9663            this.$overlay.show(0);
9664          }
9665
9666          this.$element.show(this.options.showDelay);
9667        } // handle accessibility
9668
9669
9670      this.$element.attr({
9671        'aria-hidden': false,
9672        'tabindex': -1
9673      }).focus();
9674      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].trapFocus(this.$element);
9675
9676      this._addGlobalClasses();
9677
9678      this._addGlobalListeners();
9679      /**
9680       * Fires when the modal has successfully opened.
9681       * @event Reveal#open
9682       */
9683
9684
9685      this.$element.trigger('open.zf.reveal');
9686    }
9687    /**
9688     * Adds classes and listeners on document required by open modals.
9689     *
9690     * The following classes are added and updated:
9691     * - `.is-reveal-open` - Prevents the scroll on document
9692     * - `.zf-has-scroll`  - Displays a disabled scrollbar on document if required like if the
9693     *                       scroll was not disabled. This prevent a "shift" of the page content due
9694     *                       the scrollbar disappearing when the modal opens.
9695     *
9696     * @private
9697     */
9698
9699  }, {
9700    key: "_addGlobalClasses",
9701    value: function _addGlobalClasses() {
9702      var updateScrollbarClass = function updateScrollbarClass() {
9703        jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').toggleClass('zf-has-scroll', !!(jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()));
9704      };
9705
9706      this.$element.on('resizeme.zf.trigger.revealScrollbarListener', function () {
9707        return updateScrollbarClass();
9708      });
9709      updateScrollbarClass();
9710      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').addClass('is-reveal-open');
9711    }
9712    /**
9713     * Removes classes and listeners on document that were required by open modals.
9714     * @private
9715     */
9716
9717  }, {
9718    key: "_removeGlobalClasses",
9719    value: function _removeGlobalClasses() {
9720      this.$element.off('resizeme.zf.trigger.revealScrollbarListener');
9721      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').removeClass('is-reveal-open');
9722      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').removeClass('zf-has-scroll');
9723    }
9724    /**
9725     * Adds extra event handlers for the body and window if necessary.
9726     * @private
9727     */
9728
9729  }, {
9730    key: "_addGlobalListeners",
9731    value: function _addGlobalListeners() {
9732      var _this = this;
9733
9734      if (!this.$element) {
9735        return;
9736      } // If we're in the middle of cleanup, don't freak out
9737
9738
9739      this.focusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].findFocusable(this.$element);
9740
9741      if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {
9742        jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('click.zf.dropdown tap.zf.dropdown', function (e) {
9743          if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target) || !jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(document, e.target)) {
9744            return;
9745          }
9746
9747          _this.close();
9748        });
9749      }
9750
9751      if (this.options.closeOnEsc) {
9752        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('keydown.zf.reveal', function (e) {
9753          _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].handleKey(e, 'Reveal', {
9754            close: function close() {
9755              if (_this.options.closeOnEsc) {
9756                _this.close();
9757              }
9758            }
9759          });
9760        });
9761      }
9762    }
9763    /**
9764     * Closes the modal.
9765     * @function
9766     * @fires Reveal#closed
9767     */
9768
9769  }, {
9770    key: "close",
9771    value: function close() {
9772      if (!this.isActive || !this.$element.is(':visible')) {
9773        return false;
9774      }
9775
9776      var _this = this; // Motion UI method of hiding
9777
9778
9779      if (this.options.animationOut) {
9780        if (this.options.overlay) {
9781          _foundation_util_motion__WEBPACK_IMPORTED_MODULE_5__["Motion"].animateOut(this.$overlay, 'fade-out');
9782        }
9783
9784        _foundation_util_motion__WEBPACK_IMPORTED_MODULE_5__["Motion"].animateOut(this.$element, this.options.animationOut, finishUp);
9785      } // jQuery method of hiding
9786      else {
9787          this.$element.hide(this.options.hideDelay);
9788
9789          if (this.options.overlay) {
9790            this.$overlay.hide(0, finishUp);
9791          } else {
9792            finishUp();
9793          }
9794        } // Conditionals to remove extra event listeners added on open
9795
9796
9797      if (this.options.closeOnEsc) {
9798        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('keydown.zf.reveal');
9799      }
9800
9801      if (!this.options.overlay && this.options.closeOnClick) {
9802        jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').off('click.zf.dropdown tap.zf.dropdown');
9803      }
9804
9805      this.$element.off('keydown.zf.reveal');
9806
9807      function finishUp() {
9808        // Get the current top before the modal is closed and restore the scroll after.
9809        // TODO: use component properties instead of HTML properties
9810        // See https://github.com/foundation/foundation-sites/pull/10786
9811        var scrollTop = parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top"));
9812
9813        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) {
9814          _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal
9815
9816        }
9817
9818        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].releaseFocus(_this.$element);
9819
9820        _this.$element.attr('aria-hidden', true);
9821
9822        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) {
9823          _this._enableScroll(scrollTop);
9824        }
9825        /**
9826        * Fires when the modal is done closing.
9827        * @event Reveal#closed
9828        */
9829
9830
9831        _this.$element.trigger('closed.zf.reveal');
9832      }
9833      /**
9834      * Resets the modal content
9835      * This prevents a running video to keep going in the background
9836      */
9837
9838
9839      if (this.options.resetOnClose) {
9840        this.$element.html(this.$element.html());
9841      }
9842
9843      this.isActive = false; // If deepLink and we did not switched to an other modal...
9844
9845      if (_this.options.deepLink && window.location.hash === "#".concat(this.id)) {
9846        // Remove the history hash
9847        if (window.history.replaceState) {
9848          var urlWithoutHash = window.location.pathname + window.location.search;
9849
9850          if (this.options.updateHistory) {
9851            window.history.pushState({}, '', urlWithoutHash); // remove the hash
9852          } else {
9853            window.history.replaceState('', document.title, urlWithoutHash);
9854          }
9855        } else {
9856          window.location.hash = '';
9857        }
9858      }
9859
9860      this.$activeAnchor.focus();
9861    }
9862    /**
9863     * Toggles the open/closed state of a modal.
9864     * @function
9865     */
9866
9867  }, {
9868    key: "toggle",
9869    value: function toggle() {
9870      if (this.isActive) {
9871        this.close();
9872      } else {
9873        this.open();
9874      }
9875    }
9876  }, {
9877    key: "_destroy",
9878
9879    /**
9880     * Destroys an instance of a modal.
9881     * @function
9882     */
9883    value: function _destroy() {
9884      if (this.options.overlay) {
9885        this.$element.appendTo(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()
9886
9887        this.$overlay.hide().off().remove();
9888      }
9889
9890      this.$element.hide().off();
9891      this.$anchor.off('.zf');
9892      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(".zf.reveal:".concat(this.id));
9893      if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
9894
9895      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) {
9896        this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal
9897
9898      }
9899    }
9900  }]);
9901
9902  return Reveal;
9903}
9903(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
9904
9905Reveal.defaults = {
9906  /**
9907   * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.
9908   * @option
9909   * @type {string}
9910   * @default ''
9911   */
9912  animationIn: '',
9913
9914  /**
9915   * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.
9916   * @option
9917   * @type {string}
9918   * @default ''
9919   */
9920  animationOut: '',
9921
9922  /**
9923   * Time, in ms, to delay the opening of a modal after a click if no animation used.
9924   * @option
9925   * @type {number}
9926   * @default 0
9927   */
9928  showDelay: 0,
9929
9930  /**
9931   * Time, in ms, to delay the closing of a modal after a click if no animation used.
9932   * @option
9933   * @type {number}
9934   * @default 0
9935   */
9936  hideDelay: 0,
9937
9938  /**
9939   * Allows a click on the body/overlay to close the modal.
9940   * @option
9941   * @type {boolean}
9942   * @default true
9943   */
9944  closeOnClick: true,
9945
9946  /**
9947   * Allows the modal to close if the user presses the `ESCAPE` key.
9948   * @option
9949   * @type {boolean}
9950   * @default true
9951   */
9952  closeOnEsc: true,
9953
9954  /**
9955   * If true, allows multiple modals to be displayed at once.
9956   * @option
9957   * @type {boolean}
9958   * @default false
9959   */
9960  multipleOpened: false,
9961
9962  /**
9963   * Distance, in pixels, the modal should push down from the top of the screen.
9964   * @option
9965   * @type {number|string}
9966   * @default auto
9967   */
9968  vOffset: 'auto',
9969
9970  /**
9971   * Distance, in pixels, the modal should push in from the side of the screen.
9972   * @option
9973   * @type {number|string}
9974   * @default auto
9975   */
9976  hOffset: 'auto',
9977
9978  /**
9979   * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.
9980   * @option
9981   * @type {boolean}
9982   * @default false
9983   */
9984  fullScreen: false,
9985
9986  /**
9987   * Allows the modal to generate an overlay div, which will cover the view when modal opens.
9988   * @option
9989   * @type {boolean}
9990   * @default true
9991   */
9992  overlay: true,
9993
9994  /**
9995   * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.
9996   * @option
9997   * @type {boolean}
9998   * @default false
9999   */
10000  resetOnClose: false,
10001
10002  /**
10003   * Link the location hash to the modal.
10004   * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.
10005   * @option
10006   * @type {boolean}
10007   * @default false
10008   */
10009  deepLink: false,
10010
10011  /**
10012   * If `deepLink` is enabled, update the browser history with the open modal
10013   * @option
10014   * @default false
10015   */
10016  updateHistory: false,
10017
10018  /**
10019  * Allows the modal to append to custom div.
10020  * @option
10021  * @type {string}
10022  * @default "body"
10023  */
10024  appendTo: "body",
10025
10026  /**
10027   * Allows adding additional class names to the reveal overlay.
10028   * @option
10029   * @type {string}
10030   * @default ''
10031   */
10032  additionalOverlayClasses: ''
10033};
10034
10035
10036/***/ }),
10037
vendor: 4,940 bytes, lines 10038-10117
10038/***/ "./js/foundation.slider.js":
10039/*!*********************************!*\
10040  !*** ./js/foundation.slider.js ***!
10041  \*********************************/
10042/*! exports provided: Slider */
10043/***/ (function(module, __webpack_exports__, __webpack_require__) {
10044
10045"use strict";
10046__webpack_require__.r(__webpack_exports__);
10047/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Slider", function() { return Slider; });
10048/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
10049/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
10050/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
10051/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
10052/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
10053/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
10054/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.touch */ "./js/foundation.util.touch.js");
10055/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
10056
10057
10058function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10059
10060function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10061
10062function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
10063
10064function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
10065
10066function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
10067
10068function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
10069
10070function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
10071
10072function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
10073
10074function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
10075
10076
10077
10078
10079
10080
10081
10082
10083/**
10084 * Slider module.
10085 * @module foundation.slider
10086 * @requires foundation.util.motion
10087 * @requires foundation.util.triggers
10088 * @requires foundation.util.keyboard
10089 * @requires foundation.util.touch
10090 */
10091
10092var Slider =
10093/*#__PURE__*/
10094function (_Plugin) {
10095  _inherits(Slider, _Plugin);
10096
10097  function Slider() {
10098    _classCallCheck(this, Slider);
10099
10100    return _possibleConstructorReturn(this, _getPrototypeOf(Slider).apply(this, arguments));
10101  }
10102
10103  _createClass(Slider, [{
10104    key: "_setup",
10105
10106    /**
10107     * Creates a new instance of a slider control.
10108     * @class
10109     * @name Slider
10110     * @param {jQuery} element - jQuery object to make into a slider control.
10111     * @param {Object} options - Overrides to the default plugin settings.
10112     */
10113    value: function _setup(element, options) {
10114      this.$element = element;
10115      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Slider.defaults, this.$element.data(), options);
10116      this.className = 'Slider'; // ie9 back compat
10117      // Touch and Triggers inits are idempotent, we just need to make sure it's initialied.
vendor: 21,475 bytes, lines 10118-10717
10118
10119      _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
10120      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_6__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
10121
10122      this._init();
10123
10124      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Slider', {
10125        'ltr': {
10126          'ARROW_RIGHT': 'increase',
10127          'ARROW_UP': 'increase',
10128          'ARROW_DOWN': 'decrease',
10129          'ARROW_LEFT': 'decrease',
10130          'SHIFT_ARROW_RIGHT': 'increase_fast',
10131          'SHIFT_ARROW_UP': 'increase_fast',
10132          'SHIFT_ARROW_DOWN': 'decrease_fast',
10133          'SHIFT_ARROW_LEFT': 'decrease_fast',
10134          'HOME': 'min',
10135          'END': 'max'
10136        },
10137        'rtl': {
10138          'ARROW_LEFT': 'increase',
10139          'ARROW_RIGHT': 'decrease',
10140          'SHIFT_ARROW_LEFT': 'increase_fast',
10141          'SHIFT_ARROW_RIGHT': 'decrease_fast'
10142        }
10143      });
10144    }
10145    /**
10146     * Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s).
10147     * @function
10148     * @private
10149     */
10150
10151  }, {
10152    key: "_init",
10153    value: function _init() {
10154      this.inputs = this.$element.find('input');
10155      this.handles = this.$element.find('[data-slider-handle]');
10156      this.$handle = this.handles.eq(0);
10157      this.$input = this.inputs.length ? this.inputs.eq(0) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(this.$handle.attr('aria-controls')));
10158      this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0);
10159
10160      var _this = this;
10161
10162      if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) {
10163        this.options.disabled = true;
10164        this.$element.addClass(this.options.disabledClass);
10165      }
10166
10167      if (!this.inputs.length) {
10168        this.inputs = jquery__WEBPACK_IMPORTED_MODULE_0___default()().add(this.$input);
10169        this.options.binding = true;
10170      }
10171
10172      this._setInitAttr(0);
10173
10174      if (this.handles[1]) {
10175        this.options.doubleSided = true;
10176        this.$handle2 = this.handles.eq(1);
10177        this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(this.$handle2.attr('aria-controls')));
10178
10179        if (!this.inputs[1]) {
10180          this.inputs = this.inputs.add(this.$input2);
10181        } // this.$handle.triggerHandler('click.zf.slider');
10182
10183
10184        this._setInitAttr(1);
10185      } // Set handle positions
10186
10187
10188      this.setHandles();
10189
10190      this._events();
10191    }
10192  }, {
10193    key: "setHandles",
10194    value: function setHandles() {
10195      var _this2 = this;
10196
10197      if (this.handles[1]) {
10198        this._setHandlePos(this.$handle, this.inputs.eq(0).val(), function () {
10199          _this2._setHandlePos(_this2.$handle2, _this2.inputs.eq(1).val());
10200        });
10201      } else {
10202        this._setHandlePos(this.$handle, this.inputs.eq(0).val());
10203      }
10204    }
10205  }, {
10206    key: "_reflow",
10207    value: function _reflow() {
10208      this.setHandles();
10209    }
10210    /**
10211    * @function
10212    * @private
10213    * @param {Number} value - floating point (the value) to be transformed using to a relative position on the slider (the inverse of _value)
10214    */
10215
10216  }, {
10217    key: "_pctOfBar",
10218    value: function _pctOfBar(value) {
10219      var pctOfBar = percent(value - this.options.start, this.options.end - this.options.start);
10220
10221      switch (this.options.positionValueFunction) {
10222        case "pow":
10223          pctOfBar = this._logTransform(pctOfBar);
10224          break;
10225
10226        case "log":
10227          pctOfBar = this._powTransform(pctOfBar);
10228          break;
10229      }
10230
10231      return pctOfBar.toFixed(2);
10232    }
10233    /**
10234    * @function
10235    * @private
10236    * @param {Number} pctOfBar - floating point, the relative position of the slider (typically between 0-1) to be transformed to a value
10237    */
10238
10239  }, {
10240    key: "_value",
10241    value: function _value(pctOfBar) {
10242      switch (this.options.positionValueFunction) {
10243        case "pow":
10244          pctOfBar = this._powTransform(pctOfBar);
10245          break;
10246
10247        case "log":
10248          pctOfBar = this._logTransform(pctOfBar);
10249          break;
10250      }
10251
10252      var value;
10253
10254      if (this.options.vertical) {
10255        // linear interpolation which is working with negative values for start
10256        // https://math.stackexchange.com/a/1019084
10257        value = parseFloat(this.options.end) + pctOfBar * (this.options.start - this.options.end);
10258      } else {
10259        value = (this.options.end - this.options.start) * pctOfBar + parseFloat(this.options.start);
10260      }
10261
10262      return value;
10263    }
10264    /**
10265    * @function
10266    * @private
10267    * @param {Number} value - floating point (typically between 0-1) to be transformed using the log function
10268    */
10269
10270  }, {
10271    key: "_logTransform",
10272    value: function _logTransform(value) {
10273      return baseLog(this.options.nonLinearBase, value * (this.options.nonLinearBase - 1) + 1);
10274    }
10275    /**
10276    * @function
10277    * @private
10278    * @param {Number} value - floating point (typically between 0-1) to be transformed using the power function
10279    */
10280
10281  }, {
10282    key: "_powTransform",
10283    value: function _powTransform(value) {
10284      return (Math.pow(this.options.nonLinearBase, value) - 1) / (this.options.nonLinearBase - 1);
10285    }
10286    /**
10287     * Sets the position of the selected handle and fill bar.
10288     * @function
10289     * @private
10290     * @param {jQuery} $hndl - the selected handle to move.
10291     * @param {Number} location - floating point between the start and end values of the slider bar.
10292     * @param {Function} cb - callback function to fire on completion.
10293     * @fires Slider#moved
10294     * @fires Slider#changed
10295     */
10296
10297  }, {
10298    key: "_setHandlePos",
10299    value: function _setHandlePos($hndl, location, cb) {
10300      // don't move if the slider has been disabled since its initialization
10301      if (this.$element.hasClass(this.options.disabledClass)) {
10302        return;
10303      } //might need to alter that slightly for bars that will have odd number selections.
10304
10305
10306      location = parseFloat(location); //on input change events, convert string to number...grumble.
10307      // prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max
10308
10309      if (location < this.options.start) {
10310        location = this.options.start;
10311      } else if (location > this.options.end) {
10312        location = this.options.end;
10313      }
10314
10315      var isDbl = this.options.doubleSided;
10316
10317      if (isDbl) {
10318        //this block is to prevent 2 handles from crossing eachother. Could/should be improved.
10319        if (this.handles.index($hndl) === 0) {
10320          var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));
10321          location = location >= h2Val ? h2Val - this.options.step : location;
10322        } else {
10323          var h1Val = parseFloat(this.$handle.attr('aria-valuenow'));
10324          location = location <= h1Val ? h1Val + this.options.step : location;
10325        }
10326      }
10327
10328      var _this = this,
10329          vert = this.options.vertical,
10330          hOrW = vert ? 'height' : 'width',
10331          lOrT = vert ? 'top' : 'left',
10332          handleDim = $hndl[0].getBoundingClientRect()[hOrW],
10333          elemDim = this.$element[0].getBoundingClientRect()[hOrW],
10334          //percentage of bar min/max value based on click or drag point
10335      pctOfBar = this._pctOfBar(location),
10336          //number of actual pixels to shift the handle, based on the percentage obtained above
10337      pxToMove = (elemDim - handleDim) * pctOfBar,
10338          //percentage of bar to shift the handle
10339      movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal); //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value
10340
10341
10342      location = parseFloat(location.toFixed(this.options.decimal)); // declare empty object for css adjustments, only used with 2 handled-sliders
10343
10344      var css = {};
10345
10346      this._setValues($hndl, location); // TODO update to calculate based on values set to respective inputs??
10347
10348
10349      if (isDbl) {
10350        var isLeftHndl = this.handles.index($hndl) === 0,
10351            //empty variable, will be used for min-height/width for fill bar
10352        dim,
10353            //percentage w/h of the handle compared to the slider bar
10354        handlePct = ~~(percent(handleDim, elemDim) * 100); //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar
10355
10356        if (isLeftHndl) {
10357          //left or top percentage value to apply to the fill bar.
10358          css[lOrT] = "".concat(movement, "%"); //calculate the new min-height/width for the fill bar.
10359
10360          dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct; //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider
10361          //plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.
10362
10363          if (cb && typeof cb === 'function') {
10364            cb();
10365          } //this is only needed for the initialization of 2 handled sliders
10366
10367        } else {
10368          //just caching the value of the left/bottom handle's left/top property
10369          var handlePos = parseFloat(this.$handle[0].style[lOrT]); //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0
10370          //based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself
10371
10372          dim = movement - (isNaN(handlePos) ? (this.options.initialStart - this.options.start) / ((this.options.end - this.options.start) / 100) : handlePos) + handlePct;
10373        } // assign the min-height/width to our css object
10374
10375
10376        css["min-".concat(hOrW)] = "".concat(dim, "%");
10377      }
10378
10379      this.$element.one('finished.zf.animate', function () {
10380        /**
10381         * Fires when the handle is done moving.
10382         * @event Slider#moved
10383         */
10384        _this.$element.trigger('moved.zf.slider', [$hndl]);
10385      }); //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.
10386
10387      var moveTime = this.$element.data('dragging') ? 1000 / 60 : this.options.moveTime;
10388      Object(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Move"])(moveTime, $hndl, function () {
10389        // adjusting the left/top property of the handle, based on the percentage calculated above
10390        // if movement isNaN, that is because the slider is hidden and we cannot determine handle width,
10391        // fall back to next best guess.
10392        if (isNaN(movement)) {
10393          $hndl.css(lOrT, "".concat(pctOfBar * 100, "%"));
10394        } else {
10395          $hndl.css(lOrT, "".concat(movement, "%"));
10396        }
10397
10398        if (!_this.options.doubleSided) {
10399          //if single-handled, a simple method to expand the fill bar
10400          _this.$fill.css(hOrW, "".concat(pctOfBar * 100, "%"));
10401        } else {
10402          //otherwise, use the css object we created above
10403          _this.$fill.css(css);
10404        }
10405      });
10406      /**
10407       * Fires when the value has not been change for a given time.
10408       * @event Slider#changed
10409       */
10410
10411      clearTimeout(_this.timeout);
10412      _this.timeout = setTimeout(function () {
10413        _this.$element.trigger('changed.zf.slider', [$hndl]);
10414      }, _this.options.changedDelay);
10415    }
10416    /**
10417     * Sets the initial attribute for the slider element.
10418     * @function
10419     * @private
10420     * @param {Number} idx - index of the current handle/input to use.
10421     */
10422
10423  }, {
10424    key: "_setInitAttr",
10425    value: function _setInitAttr(idx) {
10426      var initVal = idx === 0 ? this.options.initialStart : this.options.initialEnd;
10427      var id = this.inputs.eq(idx).attr('id') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'slider');
10428      this.inputs.eq(idx).attr({
10429        'id': id,
10430        'max': this.options.end,
10431        'min': this.options.start,
10432        'step': this.options.step
10433      });
10434      this.inputs.eq(idx).val(initVal);
10435      this.handles.eq(idx).attr({
10436        'role': 'slider',
10437        'aria-controls': id,
10438        'aria-valuemax': this.options.end,
10439        'aria-valuemin': this.options.start,
10440        'aria-valuenow': initVal,
10441        'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',
10442        'tabindex': 0
10443      });
10444    }
10445    /**
10446     * Sets the input and `aria-valuenow` values for the slider element.
10447     * @function
10448     * @private
10449     * @param {jQuery} $handle - the currently selected handle.
10450     * @param {Number} val - floating point of the new value.
10451     */
10452
10453  }, {
10454    key: "_setValues",
10455    value: function _setValues($handle, val) {
10456      var idx = this.options.doubleSided ? this.handles.index($handle) : 0;
10457      this.inputs.eq(idx).val(val);
10458      $handle.attr('aria-valuenow', val);
10459    }
10460    /**
10461     * Handles events on the slider element.
10462     * Calculates the new location of the current handle.
10463     * If there are two handles and the bar was clicked, it determines which handle to move.
10464     * @function
10465     * @private
10466     * @param {Object} e - the `event` object passed from the listener.
10467     * @param {jQuery} $handle - the current handle to calculate for, if selected.
10468     * @param {Number} val - floating point number for the new value of the slider.
10469     * TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.
10470     */
10471
10472  }, {
10473    key: "_handleEvent",
10474    value: function _handleEvent(e, $handle, val) {
10475      var value, hasVal;
10476
10477      if (!val) {
10478        //click or drag events
10479        e.preventDefault();
10480
10481        var _this = this,
10482            vertical = this.options.vertical,
10483            param = vertical ? 'height' : 'width',
10484            direction = vertical ? 'top' : 'left',
10485            eventOffset = vertical ? e.pageY : e.pageX,
10486            barDim = this.$element[0].getBoundingClientRect()[param],
10487            windowScroll = vertical ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop() : jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollLeft();
10488
10489        var elemOffset = this.$element.offset()[direction]; // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates...
10490        // best way to guess this is simulated is if clientY == pageY
10491
10492        if (e.clientY === e.pageY) {
10493          eventOffset = eventOffset + windowScroll;
10494        }
10495
10496        var eventFromBar = eventOffset - elemOffset;
10497        var barXY;
10498
10499        if (eventFromBar < 0) {
10500          barXY = 0;
10501        } else if (eventFromBar > barDim) {
10502          barXY = barDim;
10503        } else {
10504          barXY = eventFromBar;
10505        }
10506
10507        var offsetPct = percent(barXY, barDim);
10508        value = this._value(offsetPct); // turn everything around for RTL, yay math!
10509
10510        if (Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["rtl"])() && !this.options.vertical) {
10511          value = this.options.end - value;
10512        }
10513
10514        value = _this._adjustValue(null, value); //boolean flag for the setHandlePos fn, specifically for vertical sliders
10515
10516        hasVal = false;
10517
10518        if (!$handle) {
10519          //figure out which handle it is, pass it to the next function.
10520          var firstHndlPos = absPosition(this.$handle, direction, barXY, param),
10521              secndHndlPos = absPosition(this.$handle2, direction, barXY, param);
10522          $handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2;
10523        }
10524      } else {
10525        //change event on input
10526        value = this._adjustValue(null, val);
10527        hasVal = true;
10528      }
10529
10530      this._setHandlePos($handle, value);
10531    }
10532    /**
10533     * Adjustes value for handle in regard to step value. returns adjusted value
10534     * @function
10535     * @private
10536     * @param {jQuery} $handle - the selected handle.
10537     * @param {Number} value - value to adjust. used if $handle is falsy
10538     */
10539
10540  }, {
10541    key: "_adjustValue",
10542    value: function _adjustValue($handle, value) {
10543      var val,
10544          step = this.options.step,
10545          div = parseFloat(step / 2),
10546          left,
10547          prev_val,
10548          next_val;
10549
10550      if (!!$handle) {
10551        val = parseFloat($handle.attr('aria-valuenow'));
10552      } else {
10553        val = value;
10554      }
10555
10556      if (val >= 0) {
10557        left = val % step;
10558      } else {
10559        left = step + val % step;
10560      }
10561
10562      prev_val = val - left;
10563      next_val = prev_val + step;
10564
10565      if (left === 0) {
10566        return val;
10567      }
10568
10569      val = val >= prev_val + div ? next_val : prev_val;
10570      return val;
10571    }
10572    /**
10573     * Adds event listeners to the slider elements.
10574     * @function
10575     * @private
10576     */
10577
10578  }, {
10579    key: "_events",
10580    value: function _events() {
10581      this._eventsForHandle(this.$handle);
10582
10583      if (this.handles[1]) {
10584        this._eventsForHandle(this.$handle2);
10585      }
10586    }
10587    /**
10588     * Adds event listeners a particular handle
10589     * @function
10590     * @private
10591     * @param {jQuery} $handle - the current handle to apply listeners to.
10592     */
10593
10594  }, {
10595    key: "_eventsForHandle",
10596    value: function _eventsForHandle($handle) {
10597      var _this = this,
10598          curHandle;
10599
10600      var handleChangeEvent = function handleChangeEvent(e) {
10601        var idx = _this.inputs.index(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
10602
10603        _this._handleEvent(e, _this.handles.eq(idx), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val());
10604      }; // IE only triggers the change event when the input loses focus which strictly follows the HTML specification
10605      // listen for the enter key and trigger a change
10606      // @see https://html.spec.whatwg.org/multipage/input.html#common-input-element-events
10607
10608
10609      this.inputs.off('keyup.zf.slider').on('keyup.zf.slider', function (e) {
10610        if (e.keyCode == 13) handleChangeEvent.call(this, e);
10611      });
10612      this.inputs.off('change.zf.slider').on('change.zf.slider', handleChangeEvent);
10613
10614      if (this.options.clickSelect) {
10615        this.$element.off('click.zf.slider').on('click.zf.slider', function (e) {
10616          if (_this.$element.data('dragging')) {
10617            return false;
10618          }
10619
10620          if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).is('[data-slider-handle]')) {
10621            if (_this.options.doubleSided) {
10622              _this._handleEvent(e);
10623            } else {
10624              _this._handleEvent(e, _this.$handle);
10625            }
10626          }
10627        });
10628      }
10629
10630      if (this.options.draggable) {
10631        this.handles.addTouch();
10632        var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');
10633        $handle.off('mousedown.zf.slider').on('mousedown.zf.slider', function (e) {
10634          $handle.addClass('is-dragging');
10635
10636          _this.$fill.addClass('is-dragging'); //
10637
10638
10639          _this.$element.data('dragging', true);
10640
10641          curHandle = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);
10642          $body.on('mousemove.zf.slider', function (e) {
10643            e.preventDefault();
10644
10645            _this._handleEvent(e, curHandle);
10646          }).on('mouseup.zf.slider', function (e) {
10647            _this._handleEvent(e, curHandle);
10648
10649            $handle.removeClass('is-dragging');
10650
10651            _this.$fill.removeClass('is-dragging');
10652
10653            _this.$element.data('dragging', false);
10654
10655            $body.off('mousemove.zf.slider mouseup.zf.slider');
10656          });
10657        }) // prevent events triggered by touch
10658        .on('selectstart.zf.slider touchmove.zf.slider', function (e) {
10659          e.preventDefault();
10660        });
10661      }
10662
10663      $handle.off('keydown.zf.slider').on('keydown.zf.slider', function (e) {
10664        var _$handle = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
10665            idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,
10666            oldValue = parseFloat(_this.inputs.eq(idx).val()),
10667            newValue; // handle keyboard event with keyboard util
10668
10669
10670        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Slider', {
10671          decrease: function decrease() {
10672            newValue = oldValue - _this.options.step;
10673          },
10674          increase: function increase() {
10675            newValue = oldValue + _this.options.step;
10676          },
10677          decrease_fast: function decrease_fast() {
10678            newValue = oldValue - _this.options.step * 10;
10679          },
10680          increase_fast: function increase_fast() {
10681            newValue = oldValue + _this.options.step * 10;
10682          },
10683          min: function min() {
10684            newValue = _this.options.start;
10685          },
10686          max: function max() {
10687            newValue = _this.options.end;
10688          },
10689          handled: function handled() {
10690            // only set handle pos when event was handled specially
10691            e.preventDefault();
10692
10693            _this._setHandlePos(_$handle, newValue);
10694          }
10695        });
10696        /*if (newValue) { // if pressed key has special function, update value
10697          e.preventDefault();
10698          _this._setHandlePos(_$handle, newValue);
10699        }*/
10700      });
10701    }
10702    /**
10703     * Destroys the slider plugin.
10704     */
10705
10706  }, {
10707    key: "_destroy",
10708    value: function _destroy() {
10709      this.handles.off('.zf.slider');
10710      this.inputs.off('.zf.slider');
10711      this.$element.off('.zf.slider');
10712      clearTimeout(this.timeout);
10713    }
10714  }]);
10715
10716  return Slider;
10717}
10717(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__["Plugin"]);
10718
10719Slider.defaults = {
10720  /**
10721   * Minimum value for the slider scale.
10722   * @option
10723   * @type {number}
10724   * @default 0
10725   */
10726  start: 0,
10727
10728  /**
10729   * Maximum value for the slider scale.
10730   * @option
10731   * @type {number}
10732   * @default 100
10733   */
10734  end: 100,
10735
10736  /**
10737   * Minimum value change per change event.
10738   * @option
10739   * @type {number}
10740   * @default 1
10741   */
10742  step: 1,
10743
10744  /**
10745   * Value at which the handle/input *(left handle/first input)* should be set to on initialization.
10746   * @option
10747   * @type {number}
10748   * @default 0
10749   */
10750  initialStart: 0,
10751
10752  /**
10753   * Value at which the right handle/second input should be set to on initialization.
10754   * @option
10755   * @type {number}
10756   * @default 100
10757   */
10758  initialEnd: 100,
10759
10760  /**
10761   * Allows the input to be located outside the container and visible. Set to by the JS
10762   * @option
10763   * @type {boolean}
10764   * @default false
10765   */
10766  binding: false,
10767
10768  /**
10769   * Allows the user to click/tap on the slider bar to select a value.
10770   * @option
10771   * @type {boolean}
10772   * @default true
10773   */
10774  clickSelect: true,
10775
10776  /**
10777   * Set to true and use the `vertical` class to change alignment to vertical.
10778   * @option
10779   * @type {boolean}
10780   * @default false
10781   */
10782  vertical: false,
10783
10784  /**
10785   * Allows the user to drag the slider handle(s) to select a value.
10786   * @option
10787   * @type {boolean}
10788   * @default true
10789   */
10790  draggable: true,
10791
10792  /**
10793   * Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.
10794   * @option
10795   * @type {boolean}
10796   * @default false
10797   */
10798  disabled: false,
10799
10800  /**
10801   * Allows the use of two handles. Double checked by the JS. Changes some logic handling.
10802   * @option
10803   * @type {boolean}
10804   * @default false
10805   */
10806  doubleSided: false,
10807
10808  /**
10809   * Potential future feature.
10810   */
10811  // steps: 100,
10812
10813  /**
10814   * Number of decimal places the plugin should go to for floating point precision.
10815   * @option
10816   * @type {number}
10817   * @default 2
10818   */
10819  decimal: 2,
10820
10821  /**
10822   * Time delay for dragged elements.
10823   */
10824  // dragDelay: 0,
10825
10826  /**
10827   * Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.
10828   * @option
10829   * @type {number}
10830   * @default 200
10831   */
10832  moveTime: 200,
10833  //update this if changing the transition time in the sass
10834
10835  /**
10836   * Class applied to disabled sliders.
10837   * @option
10838   * @type {string}
10839   * @default 'disabled'
10840   */
10841  disabledClass: 'disabled',
10842
10843  /**
10844   * Will invert the default layout for a vertical<span data-tooltip title="who would do this???"> </span>slider.
10845   * @option
10846   * @type {boolean}
10847   * @default false
10848   */
10849  invertVertical: false,
10850
10851  /**
10852   * Milliseconds before the `changed.zf-slider` event is triggered after value change.
10853   * @option
10854   * @type {number}
10855   * @default 500
10856   */
10857  changedDelay: 500,
10858
10859  /**
10860  * Basevalue for non-linear sliders
10861  * @option
10862  * @type {number}
10863  * @default 5
10864  */
10865  nonLinearBase: 5,
10866
10867  /**
10868  * Basevalue for non-linear sliders, possible values are: `'linear'`, `'pow'` & `'log'`. Pow and Log use the nonLinearBase setting.
10869  * @option
10870  * @type {string}
10871  * @default 'linear'
10872  */
10873  positionValueFunction: 'linear'
10874};
10875
10876function percent(frac, num) {
10877  return frac / num;
10878}
10879
10880function absPosition($handle, dir, clickPos, param) {
10881  return Math.abs($handle.position()[dir] + $handle[param]() / 2 - clickPos);
10882}
10883
10884function baseLog(base, value) {
10885  return Math.log(value) / Math.log(base);
10886}
10887
10888
10889
10890/***/ }),
10891
vendor: 4,897 bytes, lines 10892-10988
10892/***/ "./js/foundation.smoothScroll.js":
10893/*!***************************************!*\
10894  !*** ./js/foundation.smoothScroll.js ***!
10895  \***************************************/
10896/*! exports provided: SmoothScroll */
10897/***/ (function(module, __webpack_exports__, __webpack_require__) {
10898
10899"use strict";
10900__webpack_require__.r(__webpack_exports__);
10901/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SmoothScroll", function() { return SmoothScroll; });
10902/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
10903/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
10904/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
10905/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
10906function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10907
10908function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10909
10910function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
10911
10912function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
10913
10914function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
10915
10916function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
10917
10918function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
10919
10920function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
10921
10922function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
10923
10924
10925
10926
10927/**
10928 * SmoothScroll module.
10929 * @module foundation.smoothScroll
10930 */
10931
10932var SmoothScroll =
10933/*#__PURE__*/
10934function (_Plugin) {
10935  _inherits(SmoothScroll, _Plugin);
10936
10937  function SmoothScroll() {
10938    _classCallCheck(this, SmoothScroll);
10939
10940    return _possibleConstructorReturn(this, _getPrototypeOf(SmoothScroll).apply(this, arguments));
10941  }
10942
10943  _createClass(SmoothScroll, [{
10944    key: "_setup",
10945
10946    /**
10947     * Creates a new instance of SmoothScroll.
10948     * @class
10949     * @name SmoothScroll
10950     * @fires SmoothScroll#init
10951     * @param {Object} element - jQuery object to add the trigger to.
10952     * @param {Object} options - Overrides to the default plugin settings.
10953     */
10954    value: function _setup(element, options) {
10955      this.$element = element;
10956      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, SmoothScroll.defaults, this.$element.data(), options);
10957      this.className = 'SmoothScroll'; // ie9 back compat
10958
10959      this._init();
10960    }
10961    /**
10962     * Initialize the SmoothScroll plugin
10963     * @private
10964     */
10965
10966  }, {
10967    key: "_init",
10968    value: function _init() {
10969      var id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'smooth-scroll');
10970      this.$element.attr({
10971        id: id
10972      });
10973
10974      this._events();
10975    }
10976    /**
10977     * Initializes events for SmoothScroll.
10978     * @private
10979     */
10980
10981  }, {
10982    key: "_events",
10983    value: function _events() {
10984      this._linkClickListener = this._handleLinkClick.bind(this);
10985      this.$element.on('click.zf.smoothScroll', this._linkClickListener);
10986      this.$element.on('click.zf.smoothScroll', 'a[href^="#"]', this._linkClickListener);
10987    }
10988    /**
vendor: 3,000 bytes, lines 10989-11092
10989     * Handle the given event to smoothly scroll to the anchor pointed by the event target.
10990     * @param {*} e - event
10991     * @function
10992     * @private
10993     */
10994
10995  }, {
10996    key: "_handleLinkClick",
10997    value: function _handleLinkClick(e) {
10998      var _this = this;
10999
11000      // Follow the link if it does not point to an anchor.
11001      if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget).is('a[href^="#"]')) return;
11002      var arrival = e.currentTarget.getAttribute('href');
11003      this._inTransition = true;
11004      SmoothScroll.scrollToLoc(arrival, this.options, function () {
11005        _this._inTransition = false;
11006      });
11007      e.preventDefault();
11008    }
11009  }, {
11010    key: "_destroy",
11011
11012    /**
11013     * Destroys the SmoothScroll instance.
11014     * @function
11015     */
11016    value: function _destroy() {
11017      this.$element.off('click.zf.smoothScroll', this._linkClickListener);
11018      this.$element.off('click.zf.smoothScroll', 'a[href^="#"]', this._linkClickListener);
11019    }
11020  }], [{
11021    key: "scrollToLoc",
11022
11023    /**
11024     * Function to scroll to a given location on the page.
11025     * @param {String} loc - A properly formatted jQuery id selector. Example: '#foo'
11026     * @param {Object} options - The options to use.
11027     * @param {Function} callback - The callback function.
11028     * @static
11029     * @function
11030     */
11031    value: function scrollToLoc(loc) {
11032      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SmoothScroll.defaults;
11033      var callback = arguments.length > 2 ? arguments[2] : undefined;
11034      var $loc = jquery__WEBPACK_IMPORTED_MODULE_0___default()(loc); // Do nothing if target does not exist to prevent errors
11035
11036      if (!$loc.length) return false;
11037      var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset);
11038      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').stop(true).animate({
11039        scrollTop: scrollPos
11040      }, options.animationDuration, options.animationEasing, function () {
11041        if (typeof callback === 'function') {
11042          callback();
11043        }
11044      });
11045    }
11046  }]);
11047
11048  return SmoothScroll;
11049}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
11050/**
11051 * Default settings for plugin.
11052 */
11053
11054
11055SmoothScroll.defaults = {
11056  /**
11057   * Amount of time, in ms, the animated scrolling should take between locations.
11058   * @option
11059   * @type {number}
11060   * @default 500
11061   */
11062  animationDuration: 500,
11063
11064  /**
11065   * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.
11066   * @option
11067   * @type {string}
11068   * @default 'linear'
11069   * @see {@link https://api.jquery.com/animate|Jquery animate}
11070   */
11071  animationEasing: 'linear',
11072
11073  /**
11074   * Number of pixels to use as a marker for location changes.
11075   * @option
11076   * @type {number}
11077   * @default 50
11078   */
11079  threshold: 50,
11080
11081  /**
11082   * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.
11083   * @option
11084   * @type {number}
11085   * @default 0
11086   */
11087  offset: 0
11088};
11089
11090
11091/***/ }),
11092
11093/***/ "./js/foundation.sticky.js":
11094/*!*********************************!*\
11095  !*** ./js/foundation.sticky.js ***!
11096  \*********************************/
11097/*! exports provided: Sticky */
11098/***/ (function(module, __webpack_exports__, __webpack_require__) {
11099
11100"use strict";
11101__webpack_require__.r(__webpack_exports__);
11102/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Sticky", function() { return Sticky; });
11103/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
11104/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
11105/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
11106/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
11107/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
11108/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
11109
11110
11111function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11112
11113function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11114
11115function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
11116
11117function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
11118
11119function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
11120
11121function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
11122
11123function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
11124
11125function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
11126
11127function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
11128
11129
11130
11131
11132
11133
11134/**
11135 * Sticky module.
11136 * @module foundation.sticky
11137 * @requires foundation.util.triggers
11138 * @requires foundation.util.mediaQuery
11139 */
11140
11141var Sticky =
11142/*#__PURE__*/
11143function (_Plugin) {
11144  _inherits(Sticky, _Plugin);
11145
11146  function Sticky() {
11147    _classCallCheck(this, Sticky);
11148
11149    return _possibleConstructorReturn(this, _getPrototypeOf(Sticky).apply(this, arguments));
11150  }
11151
11152  _createClass(Sticky, [{
11153    key: "_setup",
11154
11155    /**
11156     * Creates a new instance of a sticky thing.
11157     * @class
11158     * @name Sticky
11159     * @param {jQuery} element - jQuery object to make sticky.
11160     * @param {Object} options - options object passed when creating the element programmatically.
11161     */
11162    value: function _setup(element, options) {
11163      this.$element = element;
11164      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Sticky.defaults, this.$element.data(), options);
11165      this.className = 'Sticky'; // ie9 back compat
11166      // Triggers init is idempotent, just need to make sure it is initialized
11167
11168      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
11169
11170      this._init();
11171    }
11172    /**
11173     * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes
11174     * @function
11175     * @private
11176     */
11177
11178  }, {
11179    key: "_init",
11180    value: function _init() {
11181      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"]._init();
11182
11183      var $parent = this.$element.parent('[data-sticky-container]'),
11184          id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'sticky'),
11185          _this = this;
11186
11187      if ($parent.length) {
11188        this.$container = $parent;
11189      } else {
11190        this.wasWrapped = true;
11191        this.$element.wrap(this.options.container);
11192        this.$container = this.$element.parent();
11193      }
11194
11195      this.$container.addClass(this.options.containerClass);
11196      this.$element.addClass(this.options.stickyClass).attr({
11197        'data-resize': id,
11198        'data-mutate': id
11199      });
11200
11201      if (this.options.anchor !== '') {
11202        jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + _this.options.anchor).attr({
11203          'data-mutate': id
11204        });
11205      }
11206
11207      this.scrollCount = this.options.checkEvery;
11208      this.isStuck = false;
vendor: 4,371 bytes, lines 11209-11351
11209      this.onLoadListener = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
11210        //We calculate the container height to have correct values for anchor points offset calculation.
11211        _this.containerHeight = _this.$element.css("display") == "none" ? 0 : _this.$element[0].getBoundingClientRect().height;
11212
11213        _this.$container.css('height', _this.containerHeight);
11214
11215        _this.elemHeight = _this.containerHeight;
11216
11217        if (_this.options.anchor !== '') {
11218          _this.$anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + _this.options.anchor);
11219        } else {
11220          _this._parsePoints();
11221        }
11222
11223        _this._setSizes(function () {
11224          var scroll = window.pageYOffset;
11225
11226          _this._calc(false, scroll); //Unstick the element will ensure that proper classes are set.
11227
11228
11229          if (!_this.isStuck) {
11230            _this._removeSticky(scroll >= _this.topPoint ? false : true);
11231          }
11232        });
11233
11234        _this._events(id.split('-').reverse().join('-'));
11235      });
11236    }
11237    /**
11238     * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.
11239     * @function
11240     * @private
11241     */
11242
11243  }, {
11244    key: "_parsePoints",
11245    value: function _parsePoints() {
11246      var top = this.options.topAnchor == "" ? 1 : this.options.topAnchor,
11247          btm = this.options.btmAnchor == "" ? document.documentElement.scrollHeight : this.options.btmAnchor,
11248          pts = [top, btm],
11249          breaks = {};
11250
11251      for (var i = 0, len = pts.length; i < len && pts[i]; i++) {
11252        var pt;
11253
11254        if (typeof pts[i] === 'number') {
11255          pt = pts[i];
11256        } else {
11257          var place = pts[i].split(':'),
11258              anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(place[0]));
11259          pt = anchor.offset().top;
11260
11261          if (place[1] && place[1].toLowerCase() === 'bottom') {
11262            pt += anchor[0].getBoundingClientRect().height;
11263          }
11264        }
11265
11266        breaks[i] = pt;
11267      }
11268
11269      this.points = breaks;
11270      return;
11271    }
11272    /**
11273     * Adds event handlers for the scrolling element.
11274     * @private
11275     * @param {String} id - pseudo-random id for unique scroll event listener.
11276     */
11277
11278  }, {
11279    key: "_events",
11280    value: function _events(id) {
11281      var _this = this,
11282          scrollListener = this.scrollListener = "scroll.zf.".concat(id);
11283
11284      if (this.isOn) {
11285        return;
11286      }
11287
11288      if (this.canStick) {
11289        this.isOn = true;
11290        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(scrollListener).on(scrollListener, function (e) {
11291          if (_this.scrollCount === 0) {
11292            _this.scrollCount = _this.options.checkEvery;
11293
11294            _this._setSizes(function () {
11295              _this._calc(false, window.pageYOffset);
11296            });
11297          } else {
11298            _this.scrollCount--;
11299
11300            _this._calc(false, window.pageYOffset);
11301          }
11302        });
11303      }
11304
11305      this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function (e, el) {
11306        _this._eventsHandler(id);
11307      });
11308      this.$element.on('mutateme.zf.trigger', function (e, el) {
11309        _this._eventsHandler(id);
11310      });
11311
11312      if (this.$anchor) {
11313        this.$anchor.on('mutateme.zf.trigger', function (e, el) {
11314          _this._eventsHandler(id);
11315        });
11316      }
11317    }
11318    /**
11319     * Handler for events.
11320     * @private
11321     * @param {String} id - pseudo-random id for unique scroll event listener.
11322     */
11323
11324  }, {
11325    key: "_eventsHandler",
11326    value: function _eventsHandler(id) {
11327      var _this = this,
11328          scrollListener = this.scrollListener = "scroll.zf.".concat(id);
11329
11330      _this._setSizes(function () {
11331        _this._calc(false);
11332
11333        if (_this.canStick) {
11334          if (!_this.isOn) {
11335            _this._events(id);
11336          }
11337        } else if (_this.isOn) {
11338          _this._pauseListeners(scrollListener);
11339        }
11340      });
11341    }
11342    /**
11343     * Removes event handlers for scroll and change events on anchor.
11344     * @fires Sticky#pause
11345     * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`
11346     */
11347
11348  }, {
11349    key: "_pauseListeners",
11350    value: function _pauseListeners(scrollListener) {
11351      this.isOn = false;
vendor: 5,605 bytes, lines 11352-11517
11352      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(scrollListener);
11353      /**
11354       * Fires when the plugin is paused due to resize event shrinking the view.
11355       * @event Sticky#pause
11356       * @private
11357       */
11358
11359      this.$element.trigger('pause.zf.sticky');
11360    }
11361    /**
11362     * Called on every `scroll` event and on `_init`
11363     * fires functions based on booleans and cached values
11364     * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.
11365     * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.
11366     */
11367
11368  }, {
11369    key: "_calc",
11370    value: function _calc(checkSizes, scroll) {
11371      if (checkSizes) {
11372        this._setSizes();
11373      }
11374
11375      if (!this.canStick) {
11376        if (this.isStuck) {
11377          this._removeSticky(true);
11378        }
11379
11380        return false;
11381      }
11382
11383      if (!scroll) {
11384        scroll = window.pageYOffset;
11385      }
11386
11387      if (scroll >= this.topPoint) {
11388        if (scroll <= this.bottomPoint) {
11389          if (!this.isStuck) {
11390            this._setSticky();
11391          }
11392        } else {
11393          if (this.isStuck) {
11394            this._removeSticky(false);
11395          }
11396        }
11397      } else {
11398        if (this.isStuck) {
11399          this._removeSticky(true);
11400        }
11401      }
11402    }
11403    /**
11404     * Causes the $element to become stuck.
11405     * Adds `position: fixed;`, and helper classes.
11406     * @fires Sticky#stuckto
11407     * @function
11408     * @private
11409     */
11410
11411  }, {
11412    key: "_setSticky",
11413    value: function _setSticky() {
11414      var _this = this,
11415          stickTo = this.options.stickTo,
11416          mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',
11417          notStuckTo = stickTo === 'top' ? 'bottom' : 'top',
11418          css = {};
11419
11420      css[mrgn] = "".concat(this.options[mrgn], "em");
11421      css[stickTo] = 0;
11422      css[notStuckTo] = 'auto';
11423      this.isStuck = true;
11424      this.$element.removeClass("is-anchored is-at-".concat(notStuckTo)).addClass("is-stuck is-at-".concat(stickTo)).css(css)
11425      /**
11426       * Fires when the $element has become `position: fixed;`
11427       * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`
11428       * @event Sticky#stuckto
11429       */
11430      .trigger("sticky.zf.stuckto:".concat(stickTo));
11431      this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", function () {
11432        _this._setSizes();
11433      });
11434    }
11435    /**
11436     * Causes the $element to become unstuck.
11437     * Removes `position: fixed;`, and helper classes.
11438     * Adds other helper classes.
11439     * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.
11440     * @fires Sticky#unstuckfrom
11441     * @private
11442     */
11443
11444  }, {
11445    key: "_removeSticky",
11446    value: function _removeSticky(isTop) {
11447      var stickTo = this.options.stickTo,
11448          stickToTop = stickTo === 'top',
11449          css = {},
11450          anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,
11451          mrgn = stickToTop ? 'marginTop' : 'marginBottom',
11452          topOrBottom = isTop ? 'top' : 'bottom';
11453      css[mrgn] = 0;
11454      css['bottom'] = 'auto';
11455
11456      if (isTop) {
11457        css['top'] = 0;
11458      } else {
11459        css['top'] = anchorPt;
11460      }
11461
11462      this.isStuck = false;
11463      this.$element.removeClass("is-stuck is-at-".concat(stickTo)).addClass("is-anchored is-at-".concat(topOrBottom)).css(css)
11464      /**
11465       * Fires when the $element has become anchored.
11466       * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`
11467       * @event Sticky#unstuckfrom
11468       */
11469      .trigger("sticky.zf.unstuckfrom:".concat(topOrBottom));
11470    }
11471    /**
11472     * Sets the $element and $container sizes for plugin.
11473     * Calls `_setBreakPoints`.
11474     * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.
11475     * @private
11476     */
11477
11478  }, {
11479    key: "_setSizes",
11480    value: function _setSizes(cb) {
11481      this.canStick = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].is(this.options.stickyOn);
11482
11483      if (!this.canStick) {
11484        if (cb && typeof cb === 'function') {
11485          cb();
11486        }
11487      }
11488
11489      var _this = this,
11490          newElemWidth = this.$container[0].getBoundingClientRect().width,
11491          comp = window.getComputedStyle(this.$container[0]),
11492          pdngl = parseInt(comp['padding-left'], 10),
11493          pdngr = parseInt(comp['padding-right'], 10);
11494
11495      if (this.$anchor && this.$anchor.length) {
11496        this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;
11497      } else {
11498        this._parsePoints();
11499      }
11500
11501      this.$element.css({
11502        'max-width': "".concat(newElemWidth - pdngl - pdngr, "px")
11503      }); // Recalculate the height only if it is "dynamic"
11504
11505      if (this.options.dynamicHeight || !this.containerHeight) {
11506        // Get the sticked element height and apply it to the container to "hold the place"
11507        var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;
11508        newContainerHeight = this.$element.css("display") == "none" ? 0 : newContainerHeight;
11509        this.$container.css('height', newContainerHeight);
11510        this.containerHeight = newContainerHeight;
11511      }
11512
11513      this.elemHeight = this.containerHeight;
11514
11515      if (!this.isStuck) {
11516        if (this.$element.hasClass('is-at-bottom')) {
11517          var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;
vendor: 5,425 bytes, lines 11518-11718
11518          this.$element.css('top', anchorPt);
11519        }
11520      }
11521
11522      this._setBreakPoints(this.containerHeight, function () {
11523        if (cb && typeof cb === 'function') {
11524          cb();
11525        }
11526      });
11527    }
11528    /**
11529     * Sets the upper and lower breakpoints for the element to become sticky/unsticky.
11530     * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.
11531     * @param {Function} cb - optional callback function to be called on completion.
11532     * @private
11533     */
11534
11535  }, {
11536    key: "_setBreakPoints",
11537    value: function _setBreakPoints(elemHeight, cb) {
11538      if (!this.canStick) {
11539        if (cb && typeof cb === 'function') {
11540          cb();
11541        } else {
11542          return false;
11543        }
11544      }
11545
11546      var mTop = emCalc(this.options.marginTop),
11547          mBtm = emCalc(this.options.marginBottom),
11548          topPoint = this.points ? this.points[0] : this.$anchor.offset().top,
11549          bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,
11550          // topPoint = this.$anchor.offset().top || this.points[0],
11551      // bottomPoint = topPoint + this.anchorHeight || this.points[1],
11552      winHeight = window.innerHeight;
11553
11554      if (this.options.stickTo === 'top') {
11555        topPoint -= mTop;
11556        bottomPoint -= elemHeight + mTop;
11557      } else if (this.options.stickTo === 'bottom') {
11558        topPoint -= winHeight - (elemHeight + mBtm);
11559        bottomPoint -= winHeight - mBtm;
11560      } else {//this would be the stickTo: both option... tricky
11561      }
11562
11563      this.topPoint = topPoint;
11564      this.bottomPoint = bottomPoint;
11565
11566      if (cb && typeof cb === 'function') {
11567        cb();
11568      }
11569    }
11570    /**
11571     * Destroys the current sticky element.
11572     * Resets the element to the top position first.
11573     * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.
11574     * @function
11575     */
11576
11577  }, {
11578    key: "_destroy",
11579    value: function _destroy() {
11580      this._removeSticky(true);
11581
11582      this.$element.removeClass("".concat(this.options.stickyClass, " is-anchored is-at-top")).css({
11583        height: '',
11584        top: '',
11585        bottom: '',
11586        'max-width': ''
11587      }).off('resizeme.zf.trigger').off('mutateme.zf.trigger');
11588
11589      if (this.$anchor && this.$anchor.length) {
11590        this.$anchor.off('change.zf.sticky');
11591      }
11592
11593      if (this.scrollListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.scrollListener);
11594      if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
11595
11596      if (this.wasWrapped) {
11597        this.$element.unwrap();
11598      } else {
11599        this.$container.removeClass(this.options.containerClass).css({
11600          height: ''
11601        });
11602      }
11603    }
11604  }]);
11605
11606  return Sticky;
11607}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
11608
11609Sticky.defaults = {
11610  /**
11611   * Customizable container template. Add your own classes for styling and sizing.
11612   * @option
11613   * @type {string}
11614   * @default '&lt;div data-sticky-container&gt;&lt;/div&gt;'
11615   */
11616  container: '<div data-sticky-container></div>',
11617
11618  /**
11619   * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.
11620   * @option
11621   * @type {string}
11622   * @default 'top'
11623   */
11624  stickTo: 'top',
11625
11626  /**
11627   * If anchored to a single element, the id of that element.
11628   * @option
11629   * @type {string}
11630   * @default ''
11631   */
11632  anchor: '',
11633
11634  /**
11635   * If using more than one element as anchor points, the id of the top anchor.
11636   * @option
11637   * @type {string}
11638   * @default ''
11639   */
11640  topAnchor: '',
11641
11642  /**
11643   * If using more than one element as anchor points, the id of the bottom anchor.
11644   * @option
11645   * @type {string}
11646   * @default ''
11647   */
11648  btmAnchor: '',
11649
11650  /**
11651   * Margin, in `em`'s to apply to the top of the element when it becomes sticky.
11652   * @option
11653   * @type {number}
11654   * @default 1
11655   */
11656  marginTop: 1,
11657
11658  /**
11659   * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.
11660   * @option
11661   * @type {number}
11662   * @default 1
11663   */
11664  marginBottom: 1,
11665
11666  /**
11667   * Breakpoint string that is the minimum screen size an element should become sticky.
11668   * @option
11669   * @type {string}
11670   * @default 'medium'
11671   */
11672  stickyOn: 'medium',
11673
11674  /**
11675   * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.
11676   * @option
11677   * @type {string}
11678   * @default 'sticky'
11679   */
11680  stickyClass: 'sticky',
11681
11682  /**
11683   * Class applied to sticky container. Foundation defaults to `sticky-container`.
11684   * @option
11685   * @type {string}
11686   * @default 'sticky-container'
11687   */
11688  containerClass: 'sticky-container',
11689
11690  /**
11691   * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.
11692   * @option
11693   * @type {boolean}
11694   * @default true
11695   */
11696  dynamicHeight: true,
11697
11698  /**
11699   * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.
11700   * @option
11701   * @type {number}
11702   * @default -1
11703   */
11704  checkEvery: -1
11705};
11706/**
11707 * Helper function to calculate em values
11708 * @param Number {em} - number of em's to calculate into pixels
11709 */
11710
11711function emCalc(em) {
11712  return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;
11713}
11714
11715
11716
11717/***/ }),
11718
vendor: 4,606 bytes, lines 11719-11798
11719/***/ "./js/foundation.tabs.js":
11720/*!*******************************!*\
11721  !*** ./js/foundation.tabs.js ***!
11722  \*******************************/
11723/*! exports provided: Tabs */
11724/***/ (function(module, __webpack_exports__, __webpack_require__) {
11725
11726"use strict";
11727__webpack_require__.r(__webpack_exports__);
11728/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tabs", function() { return Tabs; });
11729/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
11730/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
11731/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
11732/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
11733/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
11734/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.imageLoader */ "./js/foundation.util.imageLoader.js");
11735
11736
11737function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11738
11739function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11740
11741function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
11742
11743function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
11744
11745function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
11746
11747function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
11748
11749function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
11750
11751function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
11752
11753function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
11754
11755
11756
11757
11758
11759
11760/**
11761 * Tabs module.
11762 * @module foundation.tabs
11763 * @requires foundation.util.keyboard
11764 * @requires foundation.util.imageLoader if tabs contain images
11765 */
11766
11767var Tabs =
11768/*#__PURE__*/
11769function (_Plugin) {
11770  _inherits(Tabs, _Plugin);
11771
11772  function Tabs() {
11773    _classCallCheck(this, Tabs);
11774
11775    return _possibleConstructorReturn(this, _getPrototypeOf(Tabs).apply(this, arguments));
11776  }
11777
11778  _createClass(Tabs, [{
11779    key: "_setup",
11780
11781    /**
11782     * Creates a new instance of tabs.
11783     * @class
11784     * @name Tabs
11785     * @fires Tabs#init
11786     * @param {jQuery} element - jQuery object to make into tabs.
11787     * @param {Object} options - Overrides to the default plugin settings.
11788     */
11789    value: function _setup(element, options) {
11790      this.$element = element;
11791      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Tabs.defaults, this.$element.data(), options);
11792      this.className = 'Tabs'; // ie9 back compat
11793
11794      this._init();
11795
11796      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].register('Tabs', {
11797        'ENTER': 'open',
11798        'SPACE': 'open',
vendor: 13,897 bytes, lines 11799-12224
11799        'ARROW_RIGHT': 'next',
11800        'ARROW_UP': 'previous',
11801        'ARROW_DOWN': 'next',
11802        'ARROW_LEFT': 'previous' // 'TAB': 'next',
11803        // 'SHIFT_TAB': 'previous'
11804
11805      });
11806    }
11807    /**
11808     * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.
11809     * @private
11810     */
11811
11812  }, {
11813    key: "_init",
11814    value: function _init() {
11815      var _this2 = this;
11816
11817      var _this = this;
11818
11819      this._isInitializing = true;
11820      this.$element.attr({
11821        'role': 'tablist'
11822      });
11823      this.$tabTitles = this.$element.find(".".concat(this.options.linkClass));
11824      this.$tabContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-tabs-content=\"".concat(this.$element[0].id, "\"]"));
11825      this.$tabTitles.each(function () {
11826        var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
11827            $link = $elem.find('a'),
11828            isActive = $elem.hasClass("".concat(_this.options.linkActiveClass)),
11829            hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),
11830            linkId = $link[0].id ? $link[0].id : "".concat(hash, "-label"),
11831            $tabContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(hash));
11832        $elem.attr({
11833          'role': 'presentation'
11834        });
11835        $link.attr({
11836          'role': 'tab',
11837          'aria-controls': hash,
11838          'aria-selected': isActive,
11839          'id': linkId,
11840          'tabindex': isActive ? '0' : '-1'
11841        });
11842        $tabContent.attr({
11843          'role': 'tabpanel',
11844          'aria-labelledby': linkId
11845        }); // Save up the initial hash to return to it later when going back in history
11846
11847        if (isActive) {
11848          _this._initialAnchor = "#".concat(hash);
11849        }
11850
11851        if (!isActive) {
11852          $tabContent.attr('aria-hidden', 'true');
11853        }
11854
11855        if (isActive && _this.options.autoFocus) {
11856          _this.onLoadListener = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
11857            jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({
11858              scrollTop: $elem.offset().top
11859            }, _this.options.deepLinkSmudgeDelay, function () {
11860              $link.focus();
11861            });
11862          });
11863        }
11864      });
11865
11866      if (this.options.matchHeight) {
11867        var $images = this.$tabContent.find('img');
11868
11869        if ($images.length) {
11870          Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_4__["onImagesLoaded"])($images, this._setHeight.bind(this));
11871        } else {
11872          this._setHeight();
11873        }
11874      } // Current context-bound function to open tabs on page load or history hashchange
11875
11876
11877      this._checkDeepLink = function () {
11878        var anchor = window.location.hash;
11879
11880        if (!anchor.length) {
11881          // If we are still initializing and there is no anchor, then there is nothing to do
11882          if (_this2._isInitializing) return; // Otherwise, move to the initial anchor
11883
11884          if (_this2._initialAnchor) anchor = _this2._initialAnchor;
11885        }
11886
11887        var anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor;
11888        var $anchor = anchorNoHash && jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(anchorNoHash));
11889
11890        var $link = anchor && _this2.$element.find("[href$=\"".concat(anchor, "\"],[data-tabs-target=\"").concat(anchorNoHash, "\"]")).first(); // Whether the anchor element that has been found is part of this element
11891
11892
11893        var isOwnAnchor = !!($anchor.length && $link.length);
11894
11895        if (isOwnAnchor) {
11896          // If there is an anchor for the hash, select it
11897          if ($anchor && $anchor.length && $link && $link.length) {
11898            _this2.selectTab($anchor, true);
11899          } // Otherwise, collapse everything
11900          else {
11901              _this2._collapse();
11902            } // Roll up a little to show the titles
11903
11904
11905          if (_this2.options.deepLinkSmudge) {
11906            var offset = _this2.$element.offset();
11907
11908            jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({
11909              scrollTop: offset.top
11910            }, _this2.options.deepLinkSmudgeDelay);
11911          }
11912          /**
11913           * Fires when the plugin has deeplinked at pageload
11914           * @event Tabs#deeplink
11915           */
11916
11917
11918          _this2.$element.trigger('deeplink.zf.tabs', [$link, $anchor]);
11919        }
11920      }; //use browser to open a tab, if it exists in this tabset
11921
11922
11923      if (this.options.deepLink) {
11924        this._checkDeepLink();
11925      }
11926
11927      this._events();
11928
11929      this._isInitializing = false;
11930    }
11931    /**
11932     * Adds event handlers for items within the tabs.
11933     * @private
11934     */
11935
11936  }, {
11937    key: "_events",
11938    value: function _events() {
11939      this._addKeyHandler();
11940
11941      this._addClickHandler();
11942
11943      this._setHeightMqHandler = null;
11944
11945      if (this.options.matchHeight) {
11946        this._setHeightMqHandler = this._setHeight.bind(this);
11947        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._setHeightMqHandler);
11948      }
11949
11950      if (this.options.deepLink) {
11951        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange', this._checkDeepLink);
11952      }
11953    }
11954    /**
11955     * Adds click handlers for items within the tabs.
11956     * @private
11957     */
11958
11959  }, {
11960    key: "_addClickHandler",
11961    value: function _addClickHandler() {
11962      var _this = this;
11963
11964      this.$element.off('click.zf.tabs').on('click.zf.tabs', ".".concat(this.options.linkClass), function (e) {
11965        e.preventDefault();
11966
11967        _this._handleTabChange(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
11968      });
11969    }
11970    /**
11971     * Adds keyboard event handlers for items within the tabs.
11972     * @private
11973     */
11974
11975  }, {
11976    key: "_addKeyHandler",
11977    value: function _addKeyHandler() {
11978      var _this = this;
11979
11980      this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function (e) {
11981        if (e.which === 9) return;
11982        var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
11983            $elements = $element.parent('ul').children('li'),
11984            $prevElement,
11985            $nextElement;
11986        $elements.each(function (i) {
11987          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
11988            if (_this.options.wrapOnKeys) {
11989              $prevElement = i === 0 ? $elements.last() : $elements.eq(i - 1);
11990              $nextElement = i === $elements.length - 1 ? $elements.first() : $elements.eq(i + 1);
11991            } else {
11992              $prevElement = $elements.eq(Math.max(0, i - 1));
11993              $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1));
11994            }
11995
11996            return;
11997          }
11998        }); // handle keyboard event with keyboard util
11999
12000        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].handleKey(e, 'Tabs', {
12001          open: function open() {
12002            $element.find('[role="tab"]').focus();
12003
12004            _this._handleTabChange($element);
12005          },
12006          previous: function previous() {
12007            $prevElement.find('[role="tab"]').focus();
12008
12009            _this._handleTabChange($prevElement);
12010          },
12011          next: function next() {
12012            $nextElement.find('[role="tab"]').focus();
12013
12014            _this._handleTabChange($nextElement);
12015          },
12016          handled: function handled() {
12017            e.preventDefault();
12018          }
12019        });
12020      });
12021    }
12022    /**
12023     * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.
12024     * @param {jQuery} $target - Tab to open.
12025     * @param {boolean} historyHandled - browser has already handled a history update
12026     * @fires Tabs#change
12027     * @function
12028     */
12029
12030  }, {
12031    key: "_handleTabChange",
12032    value: function _handleTabChange($target, historyHandled) {
12033      // With `activeCollapse`, if the target is the active Tab, collapse it.
12034      if ($target.hasClass("".concat(this.options.linkActiveClass))) {
12035        if (this.options.activeCollapse) {
12036          this._collapse();
12037        }
12038
12039        return;
12040      }
12041
12042      var $oldTab = this.$element.find(".".concat(this.options.linkClass, ".").concat(this.options.linkActiveClass)),
12043          $tabLink = $target.find('[role="tab"]'),
12044          target = $tabLink.attr('data-tabs-target'),
12045          anchor = target && target.length ? "#".concat(target) : $tabLink[0].hash,
12046          $targetContent = this.$tabContent.find(anchor); //close old tab
12047
12048      this._collapseTab($oldTab); //open new tab
12049
12050
12051      this._openTab($target); //either replace or update browser history
12052
12053
12054      if (this.options.deepLink && !historyHandled) {
12055        if (this.options.updateHistory) {
12056          history.pushState({}, '', anchor);
12057        } else {
12058          history.replaceState({}, '', anchor);
12059        }
12060      }
12061      /**
12062       * Fires when the plugin has successfully changed tabs.
12063       * @event Tabs#change
12064       */
12065
12066
12067      this.$element.trigger('change.zf.tabs', [$target, $targetContent]); //fire to children a mutation event
12068
12069      $targetContent.find("[data-mutate]").trigger("mutateme.zf.trigger");
12070    }
12071    /**
12072     * Opens the tab `$targetContent` defined by `$target`.
12073     * @param {jQuery} $target - Tab to open.
12074     * @function
12075     */
12076
12077  }, {
12078    key: "_openTab",
12079    value: function _openTab($target) {
12080      var $tabLink = $target.find('[role="tab"]'),
12081          hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),
12082          $targetContent = this.$tabContent.find("#".concat(hash));
12083      $target.addClass("".concat(this.options.linkActiveClass));
12084      $tabLink.attr({
12085        'aria-selected': 'true',
12086        'tabindex': '0'
12087      });
12088      $targetContent.addClass("".concat(this.options.panelActiveClass)).removeAttr('aria-hidden');
12089    }
12090    /**
12091     * Collapses `$targetContent` defined by `$target`.
12092     * @param {jQuery} $target - Tab to collapse.
12093     * @function
12094     */
12095
12096  }, {
12097    key: "_collapseTab",
12098    value: function _collapseTab($target) {
12099      var $target_anchor = $target.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({
12100        'aria-selected': 'false',
12101        'tabindex': -1
12102      });
12103      jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat($target_anchor.attr('aria-controls'))).removeClass("".concat(this.options.panelActiveClass)).attr({
12104        'aria-hidden': 'true'
12105      });
12106    }
12107    /**
12108     * Collapses the active Tab.
12109     * @fires Tabs#collapse
12110     * @function
12111     */
12112
12113  }, {
12114    key: "_collapse",
12115    value: function _collapse() {
12116      var $activeTab = this.$element.find(".".concat(this.options.linkClass, ".").concat(this.options.linkActiveClass));
12117
12118      if ($activeTab.length) {
12119        this._collapseTab($activeTab);
12120        /**
12121        * Fires when the plugin has successfully collapsed tabs.
12122        * @event Tabs#collapse
12123        */
12124
12125
12126        this.$element.trigger('collapse.zf.tabs', [$activeTab]);
12127      }
12128    }
12129    /**
12130     * Public method for selecting a content pane to display.
12131     * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.
12132     * @param {boolean} historyHandled - browser has already handled a history update
12133     * @function
12134     */
12135
12136  }, {
12137    key: "selectTab",
12138    value: function selectTab(elem, historyHandled) {
12139      var idStr, hashIdStr;
12140
12141      if (_typeof(elem) === 'object') {
12142        idStr = elem[0].id;
12143      } else {
12144        idStr = elem;
12145      }
12146
12147      if (idStr.indexOf('#') < 0) {
12148        hashIdStr = "#".concat(idStr);
12149      } else {
12150        hashIdStr = idStr;
12151        idStr = idStr.slice(1);
12152      }
12153
12154      var $target = this.$tabTitles.has("[href$=\"".concat(hashIdStr, "\"],[data-tabs-target=\"").concat(idStr, "\"]")).first();
12155
12156      this._handleTabChange($target, historyHandled);
12157    }
12158  }, {
12159    key: "_setHeight",
12160
12161    /**
12162     * Sets the height of each panel to the height of the tallest panel.
12163     * If enabled in options, gets called on media query change.
12164     * If loading content via external source, can be called directly or with _reflow.
12165     * If enabled with `data-match-height="true"`, tabs sets to equal height
12166     * @function
12167     * @private
12168     */
12169    value: function _setHeight() {
12170      var max = 0,
12171          _this = this; // Lock down the `this` value for the root tabs object
12172
12173
12174      this.$tabContent.find(".".concat(this.options.panelClass)).css('height', '').each(function () {
12175        var panel = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
12176            isActive = panel.hasClass("".concat(_this.options.panelActiveClass)); // get the options from the parent instead of trying to get them from the child
12177
12178        if (!isActive) {
12179          panel.css({
12180            'visibility': 'hidden',
12181            'display': 'block'
12182          });
12183        }
12184
12185        var temp = this.getBoundingClientRect().height;
12186
12187        if (!isActive) {
12188          panel.css({
12189            'visibility': '',
12190            'display': ''
12191          });
12192        }
12193
12194        max = temp > max ? temp : max;
12195      }).css('height', "".concat(max, "px"));
12196    }
12197    /**
12198     * Destroys an instance of tabs.
12199     * @fires Tabs#destroyed
12200     */
12201
12202  }, {
12203    key: "_destroy",
12204    value: function _destroy() {
12205      this.$element.find(".".concat(this.options.linkClass)).off('.zf.tabs').hide().end().find(".".concat(this.options.panelClass)).hide();
12206
12207      if (this.options.matchHeight) {
12208        if (this._setHeightMqHandler != null) {
12209          jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._setHeightMqHandler);
12210        }
12211      }
12212
12213      if (this.options.deepLink) {
12214        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange', this._checkDeepLink);
12215      }
12216
12217      if (this.onLoadListener) {
12218        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
12219      }
12220    }
12221  }]);
12222
12223  return Tabs;
12224}
12224(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
12225
12226Tabs.defaults = {
12227  /**
12228   * Link the location hash to the active pane.
12229   * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.
12230   * @option
12231   * @type {boolean}
12232   * @default false
12233   */
12234  deepLink: false,
12235
12236  /**
12237   * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible
12238   * @option
12239   * @type {boolean}
12240   * @default false
12241   */
12242  deepLinkSmudge: false,
12243
12244  /**
12245   * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment
12246   * @option
12247   * @type {number}
12248   * @default 300
12249   */
12250  deepLinkSmudgeDelay: 300,
12251
12252  /**
12253   * If `deepLink` is enabled, update the browser history with the open tab
12254   * @option
12255   * @type {boolean}
12256   * @default false
12257   */
12258  updateHistory: false,
12259
12260  /**
12261   * Allows the window to scroll to content of active pane on load.
12262   * Not recommended if more than one tab panel per page.
12263   * @option
12264   * @type {boolean}
12265   * @default false
12266   */
12267  autoFocus: false,
12268
12269  /**
12270   * Allows keyboard input to 'wrap' around the tab links.
12271   * @option
12272   * @type {boolean}
12273   * @default true
12274   */
12275  wrapOnKeys: true,
12276
12277  /**
12278   * Allows the tab content panes to match heights if set to true.
12279   * @option
12280   * @type {boolean}
12281   * @default false
12282   */
12283  matchHeight: false,
12284
12285  /**
12286   * Allows active tabs to collapse when clicked.
12287   * @option
12288   * @type {boolean}
12289   * @default false
12290   */
12291  activeCollapse: false,
12292
12293  /**
12294   * Class applied to `li`'s in tab link list.
12295   * @option
12296   * @type {string}
12297   * @default 'tabs-title'
12298   */
12299  linkClass: 'tabs-title',
12300
12301  /**
12302   * Class applied to the active `li` in tab link list.
12303   * @option
12304   * @type {string}
12305   * @default 'is-active'
12306   */
12307  linkActiveClass: 'is-active',
12308
12309  /**
12310   * Class applied to the content containers.
12311   * @option
12312   * @type {string}
12313   * @default 'tabs-panel'
12314   */
12315  panelClass: 'tabs-panel',
12316
12317  /**
12318   * Class applied to the active content container.
12319   * @option
12320   * @type {string}
12321   * @default 'is-active'
12322   */
12323  panelActiveClass: 'is-active'
12324};
12325
12326
12327/***/ }),
12328
vendor: 4,970 bytes, lines 12329-12420
12329/***/ "./js/foundation.toggler.js":
12330/*!**********************************!*\
12331  !*** ./js/foundation.toggler.js ***!
12332  \**********************************/
12333/*! exports provided: Toggler */
12334/***/ (function(module, __webpack_exports__, __webpack_require__) {
12335
12336"use strict";
12337__webpack_require__.r(__webpack_exports__);
12338/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Toggler", function() { return Toggler; });
12339/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
12340/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
12341/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
12342/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
12343/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
12344/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
12345
12346
12347function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12348
12349function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12350
12351function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
12352
12353function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
12354
12355function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
12356
12357function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
12358
12359function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
12360
12361function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
12362
12363function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12364
12365
12366
12367
12368
12369
12370/**
12371 * Toggler module.
12372 * @module foundation.toggler
12373 * @requires foundation.util.motion
12374 * @requires foundation.util.triggers
12375 */
12376
12377var Toggler =
12378/*#__PURE__*/
12379function (_Plugin) {
12380  _inherits(Toggler, _Plugin);
12381
12382  function Toggler() {
12383    _classCallCheck(this, Toggler);
12384
12385    return _possibleConstructorReturn(this, _getPrototypeOf(Toggler).apply(this, arguments));
12386  }
12387
12388  _createClass(Toggler, [{
12389    key: "_setup",
12390
12391    /**
12392     * Creates a new instance of Toggler.
12393     * @class
12394     * @name Toggler
12395     * @fires Toggler#init
12396     * @param {Object} element - jQuery object to add the trigger to.
12397     * @param {Object} options - Overrides to the default plugin settings.
12398     */
12399    value: function _setup(element, options) {
12400      this.$element = element;
12401      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Toggler.defaults, element.data(), options);
12402      this.className = '';
12403      this.className = 'Toggler'; // ie9 back compat
12404      // Triggers init is idempotent, just need to make sure it is initialized
12405
12406      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
12407
12408      this._init();
12409
12410      this._events();
12411    }
12412    /**
12413     * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.
12414     * @function
12415     * @private
12416     */
12417
12418  }, {
12419    key: "_init",
12420    value: function _init() {
vendor: 4,334 bytes, lines 12421-12543
12421      // Collect triggers to set ARIA attributes to
12422      var id = this.$element[0].id,
12423          $triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open~=\"".concat(id, "\"], [data-close~=\"").concat(id, "\"], [data-toggle~=\"").concat(id, "\"]"));
12424      var input; // Parse animation classes if they were set
12425
12426      if (this.options.animate) {
12427        input = this.options.animate.split(' ');
12428        this.animationIn = input[0];
12429        this.animationOut = input[1] || null; // - aria-expanded: according to the element visibility.
12430
12431        $triggers.attr('aria-expanded', !this.$element.is(':hidden'));
12432      } // Otherwise, parse toggle class
12433      else {
12434          input = this.options.toggler;
12435
12436          if (typeof input !== 'string' || !input.length) {
12437            throw new Error("The 'toogler' option containing the target class is required, got \"".concat(input, "\""));
12438          } // Allow for a . at the beginning of the string
12439
12440
12441          this.className = input[0] === '.' ? input.slice(1) : input; // - aria-expanded: according to the elements class set.
12442
12443          $triggers.attr('aria-expanded', this.$element.hasClass(this.className));
12444        } // - aria-controls: adding the element id to it if not already in it.
12445
12446
12447      $triggers.each(function (index, trigger) {
12448        var $trigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()(trigger);
12449        var controls = $trigger.attr('aria-controls') || '';
12450        var containsId = new RegExp("\\b".concat(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["RegExpEscape"])(id), "\\b")).test(controls);
12451        if (!containsId) $trigger.attr('aria-controls', controls ? "".concat(controls, " ").concat(id) : id);
12452      });
12453    }
12454    /**
12455     * Initializes events for the toggle trigger.
12456     * @function
12457     * @private
12458     */
12459
12460  }, {
12461    key: "_events",
12462    value: function _events() {
12463      this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));
12464    }
12465    /**
12466     * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was "on" or "off".
12467     * @function
12468     * @fires Toggler#on
12469     * @fires Toggler#off
12470     */
12471
12472  }, {
12473    key: "toggle",
12474    value: function toggle() {
12475      this[this.options.animate ? '_toggleAnimate' : '_toggleClass']();
12476    }
12477  }, {
12478    key: "_toggleClass",
12479    value: function _toggleClass() {
12480      this.$element.toggleClass(this.className);
12481      var isOn = this.$element.hasClass(this.className);
12482
12483      if (isOn) {
12484        /**
12485         * Fires if the target element has the class after a toggle.
12486         * @event Toggler#on
12487         */
12488        this.$element.trigger('on.zf.toggler');
12489      } else {
12490        /**
12491         * Fires if the target element does not have the class after a toggle.
12492         * @event Toggler#off
12493         */
12494        this.$element.trigger('off.zf.toggler');
12495      }
12496
12497      this._updateARIA(isOn);
12498
12499      this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');
12500    }
12501  }, {
12502    key: "_toggleAnimate",
12503    value: function _toggleAnimate() {
12504      var _this = this;
12505
12506      if (this.$element.is(':hidden')) {
12507        _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"].animateIn(this.$element, this.animationIn, function () {
12508          _this._updateARIA(true);
12509
12510          this.trigger('on.zf.toggler');
12511          this.find('[data-mutate]').trigger('mutateme.zf.trigger');
12512        });
12513      } else {
12514        _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"].animateOut(this.$element, this.animationOut, function () {
12515          _this._updateARIA(false);
12516
12517          this.trigger('off.zf.toggler');
12518          this.find('[data-mutate]').trigger('mutateme.zf.trigger');
12519        });
12520      }
12521    }
12522  }, {
12523    key: "_updateARIA",
12524    value: function _updateARIA(isOn) {
12525      var id = this.$element[0].id;
12526      jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(id, "\"], [data-close=\"").concat(id, "\"], [data-toggle=\"").concat(id, "\"]")).attr({
12527        'aria-expanded': isOn ? true : false
12528      });
12529    }
12530    /**
12531     * Destroys the instance of Toggler on the element.
12532     * @function
12533     */
12534
12535  }, {
12536    key: "_destroy",
12537    value: function _destroy() {
12538      this.$element.off('.zf.toggler');
12539    }
12540  }]);
12541
12542  return Toggler;
12543}
12543(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
12544
12545Toggler.defaults = {
12546  /**
12547   * Class of the element to toggle. It can be provided with or without "."
12548   * @option
12549   * @type {string}
12550   */
12551  toggler: undefined,
12552
12553  /**
12554   * Tells the plugin if the element should animated when toggled.
12555   * @option
12556   * @type {boolean}
12557   * @default false
12558   */
12559  animate: false
12560};
12561
12562
12563/***/ }),
12564
vendor: 5,183 bytes, lines 12565-12645
12565/***/ "./js/foundation.tooltip.js":
12566/*!**********************************!*\
12567  !*** ./js/foundation.tooltip.js ***!
12568  \**********************************/
12569/*! exports provided: Tooltip */
12570/***/ (function(module, __webpack_exports__, __webpack_require__) {
12571
12572"use strict";
12573__webpack_require__.r(__webpack_exports__);
12574/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tooltip", function() { return Tooltip; });
12575/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
12576/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
12577/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
12578/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
12579/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
12580/* harmony import */ var _foundation_positionable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.positionable */ "./js/foundation.positionable.js");
12581
12582
12583function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12584
12585function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12586
12587function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
12588
12589function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
12590
12591function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
12592
12593function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
12594
12595function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
12596
12597function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
12598
12599function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
12600
12601function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
12602
12603function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12604
12605
12606
12607
12608
12609
12610/**
12611 * Tooltip module.
12612 * @module foundation.tooltip
12613 * @requires foundation.util.box
12614 * @requires foundation.util.mediaQuery
12615 * @requires foundation.util.triggers
12616 */
12617
12618var Tooltip =
12619/*#__PURE__*/
12620function (_Positionable) {
12621  _inherits(Tooltip, _Positionable);
12622
12623  function Tooltip() {
12624    _classCallCheck(this, Tooltip);
12625
12626    return _possibleConstructorReturn(this, _getPrototypeOf(Tooltip).apply(this, arguments));
12627  }
12628
12629  _createClass(Tooltip, [{
12630    key: "_setup",
12631
12632    /**
12633     * Creates a new instance of a Tooltip.
12634     * @class
12635     * @name Tooltip
12636     * @fires Tooltip#init
12637     * @param {jQuery} element - jQuery object to attach a tooltip to.
12638     * @param {Object} options - object to extend the default configuration.
12639     */
12640    value: function _setup(element, options) {
12641      this.$element = element;
12642      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Tooltip.defaults, this.$element.data(), options);
12643      this.className = 'Tooltip'; // ie9 back compat
12644
12645      this.isActive = false;
vendor: 4,147 bytes, lines 12646-12761
12646      this.isClick = false; // Triggers init is idempotent, just need to make sure it is initialized
12647
12648      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
12649
12650      this._init();
12651    }
12652    /**
12653     * Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor.
12654     * @private
12655     */
12656
12657  }, {
12658    key: "_init",
12659    value: function _init() {
12660      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"]._init();
12661
12662      var elemId = this.$element.attr('aria-describedby') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'tooltip');
12663      this.options.tipText = this.options.tipText || this.$element.attr('title');
12664      this.template = this.options.template ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.template) : this._buildTemplate(elemId);
12665
12666      if (this.options.allowHtml) {
12667        this.template.appendTo(document.body).html(this.options.tipText).hide();
12668      } else {
12669        this.template.appendTo(document.body).text(this.options.tipText).hide();
12670      }
12671
12672      this.$element.attr({
12673        'title': '',
12674        'aria-describedby': elemId,
12675        'data-yeti-box': elemId,
12676        'data-toggle': elemId,
12677        'data-resize': elemId
12678      }).addClass(this.options.triggerClass);
12679
12680      _get(_getPrototypeOf(Tooltip.prototype), "_init", this).call(this);
12681
12682      this._events();
12683    }
12684  }, {
12685    key: "_getDefaultPosition",
12686    value: function _getDefaultPosition() {
12687      // handle legacy classnames
12688      var elementClassName = this.$element[0].className;
12689
12690      if (this.$element[0] instanceof SVGElement) {
12691        elementClassName = elementClassName.baseVal;
12692      }
12693
12694      var position = elementClassName.match(/\b(top|left|right|bottom)\b/g);
12695      return position ? position[0] : 'top';
12696    }
12697  }, {
12698    key: "_getDefaultAlignment",
12699    value: function _getDefaultAlignment() {
12700      return 'center';
12701    }
12702  }, {
12703    key: "_getHOffset",
12704    value: function _getHOffset() {
12705      if (this.position === 'left' || this.position === 'right') {
12706        return this.options.hOffset + this.options.tooltipWidth;
12707      } else {
12708        return this.options.hOffset;
12709      }
12710    }
12711  }, {
12712    key: "_getVOffset",
12713    value: function _getVOffset() {
12714      if (this.position === 'top' || this.position === 'bottom') {
12715        return this.options.vOffset + this.options.tooltipHeight;
12716      } else {
12717        return this.options.vOffset;
12718      }
12719    }
12720    /**
12721     * builds the tooltip element, adds attributes, and returns the template.
12722     * @private
12723     */
12724
12725  }, {
12726    key: "_buildTemplate",
12727    value: function _buildTemplate(id) {
12728      var templateClasses = "".concat(this.options.tooltipClass, " ").concat(this.options.templateClasses).trim();
12729      var $template = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div></div>').addClass(templateClasses).attr({
12730        'role': 'tooltip',
12731        'aria-hidden': true,
12732        'data-is-active': false,
12733        'data-is-focus': false,
12734        'id': id
12735      });
12736      return $template;
12737    }
12738    /**
12739     * sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.
12740     * if the tooltip is larger than the screen width, default to full width - any user selected margin
12741     * @private
12742     */
12743
12744  }, {
12745    key: "_setPosition",
12746    value: function _setPosition() {
12747      _get(_getPrototypeOf(Tooltip.prototype), "_setPosition", this).call(this, this.$element, this.template);
12748    }
12749    /**
12750     * reveals the tooltip, and fires an event to close any other open tooltips on the page
12751     * @fires Tooltip#closeme
12752     * @fires Tooltip#show
12753     * @function
12754     */
12755
12756  }, {
12757    key: "show",
12758    value: function show() {
12759      if (this.options.showOn !== 'all' && !_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"].is(this.options.showOn)) {
12760        // console.error('The screen is too small to display this tooltip');
12761        return false;
vendor: 1,706 bytes, lines 12762-12820
12762      }
12763
12764      var _this = this;
12765
12766      this.template.css('visibility', 'hidden').show();
12767
12768      this._setPosition();
12769
12770      this.template.removeClass('top bottom left right').addClass(this.position);
12771      this.template.removeClass('align-top align-bottom align-left align-right align-center').addClass('align-' + this.alignment);
12772      /**
12773       * Fires to close all other open tooltips on the page
12774       * @event Closeme#tooltip
12775       */
12776
12777      this.$element.trigger('closeme.zf.tooltip', this.template.attr('id'));
12778      this.template.attr({
12779        'data-is-active': true,
12780        'aria-hidden': false
12781      });
12782      _this.isActive = true; // console.log(this.template);
12783
12784      this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function () {//maybe do stuff?
12785      });
12786      /**
12787       * Fires when the tooltip is shown
12788       * @event Tooltip#show
12789       */
12790
12791      this.$element.trigger('show.zf.tooltip');
12792    }
12793    /**
12794     * Hides the current tooltip, and resets the positioning class if it was changed due to collision
12795     * @fires Tooltip#hide
12796     * @function
12797     */
12798
12799  }, {
12800    key: "hide",
12801    value: function hide() {
12802      // console.log('hiding', this.$element.data('yeti-box'));
12803      var _this = this;
12804
12805      this.template.stop().attr({
12806        'aria-hidden': true,
12807        'data-is-active': false
12808      }).fadeOut(this.options.fadeOutDuration, function () {
12809        _this.isActive = false;
12810        _this.isClick = false;
12811      });
12812      /**
12813       * fires when the tooltip is hidden
12814       * @event Tooltip#hide
12815       */
12816
12817      this.$element.trigger('hide.zf.tooltip');
12818    }
12819    /**
12820     * adds event listeners for the tooltip and its anchor
vendor: 6,564 bytes, lines 12821-13073
12821     * TODO combine some of the listeners like focus and mouseenter, etc.
12822     * @private
12823     */
12824
12825  }, {
12826    key: "_events",
12827    value: function _events() {
12828      var _this = this;
12829
12830      var hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined';
12831      var $template = this.template;
12832      var isFocus = false; // `disableForTouch: Fully disable the tooltip on touch devices
12833
12834      if (hasTouch && this.options.disableForTouch) return;
12835
12836      if (!this.options.disableHover) {
12837        this.$element.on('mouseenter.zf.tooltip', function (e) {
12838          if (!_this.isActive) {
12839            _this.timeout = setTimeout(function () {
12840              _this.show();
12841            }, _this.options.hoverDelay);
12842          }
12843        }).on('mouseleave.zf.tooltip', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["ignoreMousedisappear"])(function (e) {
12844          clearTimeout(_this.timeout);
12845
12846          if (!isFocus || _this.isClick && !_this.options.clickOpen) {
12847            _this.hide();
12848          }
12849        }));
12850      }
12851
12852      if (hasTouch) {
12853        this.$element.on('tap.zf.tooltip touchend.zf.tooltip', function (e) {
12854          _this.isActive ? _this.hide() : _this.show();
12855        });
12856      }
12857
12858      if (this.options.clickOpen) {
12859        this.$element.on('mousedown.zf.tooltip', function (e) {
12860          if (_this.isClick) {//_this.hide();
12861            // _this.isClick = false;
12862          } else {
12863            _this.isClick = true;
12864
12865            if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) {
12866              _this.show();
12867            }
12868          }
12869        });
12870      } else {
12871        this.$element.on('mousedown.zf.tooltip', function (e) {
12872          _this.isClick = true;
12873        });
12874      }
12875
12876      this.$element.on({
12877        // 'toggle.zf.trigger': this.toggle.bind(this),
12878        // 'close.zf.trigger': this.hide.bind(this)
12879        'close.zf.trigger': this.hide.bind(this)
12880      });
12881      this.$element.on('focus.zf.tooltip', function (e) {
12882        isFocus = true;
12883
12884        if (_this.isClick) {
12885          // If we're not showing open on clicks, we need to pretend a click-launched focus isn't
12886          // a real focus, otherwise on hover and come back we get bad behavior
12887          if (!_this.options.clickOpen) {
12888            isFocus = false;
12889          }
12890
12891          return false;
12892        } else {
12893          _this.show();
12894        }
12895      }).on('focusout.zf.tooltip', function (e) {
12896        isFocus = false;
12897        _this.isClick = false;
12898
12899        _this.hide();
12900      }).on('resizeme.zf.trigger', function () {
12901        if (_this.isActive) {
12902          _this._setPosition();
12903        }
12904      });
12905    }
12906    /**
12907     * adds a toggle method, in addition to the static show() & hide() functions
12908     * @function
12909     */
12910
12911  }, {
12912    key: "toggle",
12913    value: function toggle() {
12914      if (this.isActive) {
12915        this.hide();
12916      } else {
12917        this.show();
12918      }
12919    }
12920    /**
12921     * Destroys an instance of tooltip, removes template element from the view.
12922     * @function
12923     */
12924
12925  }, {
12926    key: "_destroy",
12927    value: function _destroy() {
12928      this.$element.attr('title', this.template.text()).off('.zf.trigger .zf.tooltip').removeClass(this.options.triggerClass).removeClass('top right left bottom').removeAttr('aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box');
12929      this.template.remove();
12930    }
12931  }]);
12932
12933  return Tooltip;
12934}(_foundation_positionable__WEBPACK_IMPORTED_MODULE_4__["Positionable"]);
12935
12936Tooltip.defaults = {
12937  /**
12938   * Time, in ms, before a tooltip should open on hover.
12939   * @option
12940   * @type {number}
12941   * @default 200
12942   */
12943  hoverDelay: 200,
12944
12945  /**
12946   * Time, in ms, a tooltip should take to fade into view.
12947   * @option
12948   * @type {number}
12949   * @default 150
12950   */
12951  fadeInDuration: 150,
12952
12953  /**
12954   * Time, in ms, a tooltip should take to fade out of view.
12955   * @option
12956   * @type {number}
12957   * @default 150
12958   */
12959  fadeOutDuration: 150,
12960
12961  /**
12962   * Disables hover events from opening the tooltip if set to true
12963   * @option
12964   * @type {boolean}
12965   * @default false
12966   */
12967  disableHover: false,
12968
12969  /**
12970   * Disable the tooltip for touch devices.
12971   * This can be useful to make elements with a tooltip on it trigger their
12972   * action on the first tap instead of displaying the tooltip.
12973   * @option
12974   * @type {booelan}
12975   * @default false
12976   */
12977  disableForTouch: false,
12978
12979  /**
12980   * Optional addtional classes to apply to the tooltip template on init.
12981   * @option
12982   * @type {string}
12983   * @default ''
12984   */
12985  templateClasses: '',
12986
12987  /**
12988   * Non-optional class added to tooltip templates. Foundation default is 'tooltip'.
12989   * @option
12990   * @type {string}
12991   * @default 'tooltip'
12992   */
12993  tooltipClass: 'tooltip',
12994
12995  /**
12996   * Class applied to the tooltip anchor element.
12997   * @option
12998   * @type {string}
12999   * @default 'has-tip'
13000   */
13001  triggerClass: 'has-tip',
13002
13003  /**
13004   * Minimum breakpoint size at which to open the tooltip.
13005   * @option
13006   * @type {string}
13007   * @default 'small'
13008   */
13009  showOn: 'small',
13010
13011  /**
13012   * Custom template to be used to generate markup for tooltip.
13013   * @option
13014   * @type {string}
13015   * @default ''
13016   */
13017  template: '',
13018
13019  /**
13020   * Text displayed in the tooltip template on open.
13021   * @option
13022   * @type {string}
13023   * @default ''
13024   */
13025  tipText: '',
13026  touchCloseText: 'Tap to close.',
13027
13028  /**
13029   * Allows the tooltip to remain open if triggered with a click or touch event.
13030   * @option
13031   * @type {boolean}
13032   * @default true
13033   */
13034  clickOpen: true,
13035
13036  /**
13037   * Position of tooltip. Can be left, right, bottom, top, or auto.
13038   * @option
13039   * @type {string}
13040   * @default 'auto'
13041   */
13042  position: 'auto',
13043
13044  /**
13045   * Alignment of tooltip relative to anchor. Can be left, right, bottom, top, center, or auto.
13046   * @option
13047   * @type {string}
13048   * @default 'auto'
13049   */
13050  alignment: 'auto',
13051
13052  /**
13053   * Allow overlap of container/window. If false, tooltip will first try to
13054   * position as defined by data-position and data-alignment, but reposition if
13055   * it would cause an overflow.  @option
13056   * @type {boolean}
13057   * @default false
13058   */
13059  allowOverlap: false,
13060
13061  /**
13062   * Allow overlap of only the bottom of the container. This is the most common
13063   * behavior for dropdowns, allowing the dropdown to extend the bottom of the
13064   * screen but not otherwise influence or break out of the container.
13065   * Less common for tooltips.
13066   * @option
13067   * @type {boolean}
13068   * @default false
13069   */
13070  allowBottomOverlap: false,
13071
13072  /**
13073   * Distance, in pixels, the template should push away from the anch
13073or on the Y axis.
13074   * @option
13075   * @type {number}
13076   * @default 0
13077   */
13078  vOffset: 0,
13079
13080  /**
13081   * Distance, in pixels, the template should push away from the anchor on the X axis
13082   * @option
13083   * @type {number}
13084   * @default 0
13085   */
13086  hOffset: 0,
13087
13088  /**
13089   * Distance, in pixels, the template spacing auto-adjust for a vertical tooltip
13090   * @option
13091   * @type {number}
13092   * @default 14
13093   */
13094  tooltipHeight: 14,
13095
13096  /**
13097   * Distance, in pixels, the template spacing auto-adjust for a horizontal tooltip
13098   * @option
13099   * @type {number}
13100   * @default 12
13101   */
13102  tooltipWidth: 12,
13103
13104  /**
13105  * Allow HTML in tooltip. Warning: If you are loading user-generated content into tooltips,
13106  * allowing HTML may open yourself up to XSS attacks.
13107  * @option
13108  * @type {boolean}
13109  * @default false
13110  */
13111  allowHtml: false
13112};
13113/**
13114 * TODO utilize resize event trigger
13115 */
13116
13117
13118
13119/***/ }),
13120
vendor: 6,807 bytes, lines 13121-13327
13121/***/ "./js/foundation.util.box.js":
13122/*!***********************************!*\
13123  !*** ./js/foundation.util.box.js ***!
13124  \***********************************/
13125/*! exports provided: Box */
13126/***/ (function(module, __webpack_exports__, __webpack_require__) {
13127
13128"use strict";
13129__webpack_require__.r(__webpack_exports__);
13130/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Box", function() { return Box; });
13131
13132
13133var Box = {
13134  ImNotTouchingYou: ImNotTouchingYou,
13135  OverlapArea: OverlapArea,
13136  GetDimensions: GetDimensions,
13137  GetExplicitOffsets: GetExplicitOffsets
13138  /**
13139   * Compares the dimensions of an element to a container and determines collision events with container.
13140   * @function
13141   * @param {jQuery} element - jQuery object to test for collisions.
13142   * @param {jQuery} parent - jQuery object to use as bounding container.
13143   * @param {Boolean} lrOnly - set to true to check left and right values only.
13144   * @param {Boolean} tbOnly - set to true to check top and bottom values only.
13145   * @default if no parent object passed, detects collisions with `window`.
13146   * @returns {Boolean} - true if collision free, false if a collision in any direction.
13147   */
13148
13149};
13150
13151function ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {
13152  return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;
13153}
13154
13155function OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {
13156  var eleDims = GetDimensions(element),
13157      topOver,
13158      bottomOver,
13159      leftOver,
13160      rightOver;
13161
13162  if (parent) {
13163    var parDims = GetDimensions(parent);
13164    bottomOver = parDims.height + parDims.offset.top - (eleDims.offset.top + eleDims.height);
13165    topOver = eleDims.offset.top - parDims.offset.top;
13166    leftOver = eleDims.offset.left - parDims.offset.left;
13167    rightOver = parDims.width + parDims.offset.left - (eleDims.offset.left + eleDims.width);
13168  } else {
13169    bottomOver = eleDims.windowDims.height + eleDims.windowDims.offset.top - (eleDims.offset.top + eleDims.height);
13170    topOver = eleDims.offset.top - eleDims.windowDims.offset.top;
13171    leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;
13172    rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);
13173  }
13174
13175  bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);
13176  topOver = Math.min(topOver, 0);
13177  leftOver = Math.min(leftOver, 0);
13178  rightOver = Math.min(rightOver, 0);
13179
13180  if (lrOnly) {
13181    return leftOver + rightOver;
13182  }
13183
13184  if (tbOnly) {
13185    return topOver + bottomOver;
13186  } // use sum of squares b/c we care about overlap area.
13187
13188
13189  return Math.sqrt(topOver * topOver + bottomOver * bottomOver + leftOver * leftOver + rightOver * rightOver);
13190}
13191/**
13192 * Uses native methods to return an object of dimension values.
13193 * @function
13194 * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.
13195 * @returns {Object} - nested object of integer pixel values
13196 * TODO - if element is window, return only those values.
13197 */
13198
13199
13200function GetDimensions(elem) {
13201  elem = elem.length ? elem[0] : elem;
13202
13203  if (elem === window || elem === document) {
13204    throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");
13205  }
13206
13207  var rect = elem.getBoundingClientRect(),
13208      parRect = elem.parentNode.getBoundingClientRect(),
13209      winRect = document.body.getBoundingClientRect(),
13210      winY = window.pageYOffset,
13211      winX = window.pageXOffset;
13212  return {
13213    width: rect.width,
13214    height: rect.height,
13215    offset: {
13216      top: rect.top + winY,
13217      left: rect.left + winX
13218    },
13219    parentDims: {
13220      width: parRect.width,
13221      height: parRect.height,
13222      offset: {
13223        top: parRect.top + winY,
13224        left: parRect.left + winX
13225      }
13226    },
13227    windowDims: {
13228      width: winRect.width,
13229      height: winRect.height,
13230      offset: {
13231        top: winY,
13232        left: winX
13233      }
13234    }
13235  };
13236}
13237/**
13238 * Returns an object of top and left integer pixel values for dynamically rendered elements,
13239 * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where
13240 * you don't know alignment, but generally from
13241 * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.
13242 * @function
13243 * @param {jQuery} element - jQuery object for the element being positioned.
13244 * @param {jQuery} anchor - jQuery object for the element's anchor point.
13245 * @param {String} position - a string relating to the desired position of the element, relative to it's anchor
13246 * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.
13247 * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.
13248 * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.
13249 * TODO alter/rewrite to work with `em` values as well/instead of pixels
13250 */
13251
13252
13253function GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {
13254  var $eleDims = GetDimensions(element),
13255      $anchorDims = anchor ? GetDimensions(anchor) : null;
13256  var topVal, leftVal;
13257
13258  if ($anchorDims !== null) {
13259    // set position related attribute
13260    switch (position) {
13261      case 'top':
13262        topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);
13263        break;
13264
13265      case 'bottom':
13266        topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;
13267        break;
13268
13269      case 'left':
13270        leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);
13271        break;
13272
13273      case 'right':
13274        leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;
13275        break;
13276    } // set alignment related attribute
13277
13278
13279    switch (position) {
13280      case 'top':
13281      case 'bottom':
13282        switch (alignment) {
13283          case 'left':
13284            leftVal = $anchorDims.offset.left + hOffset;
13285            break;
13286
13287          case 'right':
13288            leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;
13289            break;
13290
13291          case 'center':
13292            leftVal = isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2 + hOffset;
13293            break;
13294        }
13295
13296        break;
13297
13298      case 'right':
13299      case 'left':
13300        switch (alignment) {
13301          case 'bottom':
13302            topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;
13303            break;
13304
13305          case 'top':
13306            topVal = $anchorDims.offset.top + vOffset;
13307            break;
13308
13309          case 'center':
13310            topVal = $anchorDims.offset.top + vOffset + $anchorDims.height / 2 - $eleDims.height / 2;
13311            break;
13312        }
13313
13314        break;
13315    }
13316  }
13317
13318  return {
13319    top: topVal,
13320    left: leftVal
13321  };
13322}
13323
13324
13325
13326/***/ }),
13327
vendor: 7,531 bytes, lines 13328-13528
13328/***/ "./js/foundation.util.imageLoader.js":
13329/*!*******************************************!*\
13330  !*** ./js/foundation.util.imageLoader.js ***!
13331  \*******************************************/
13332/*! exports provided: onImagesLoaded */
13333/***/ (function(module, __webpack_exports__, __webpack_require__) {
13334
13335"use strict";
13336__webpack_require__.r(__webpack_exports__);
13337/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onImagesLoaded", function() { return onImagesLoaded; });
13338/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
13339/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
13340
13341
13342
13343/**
13344 * Runs a callback function when images are fully loaded.
13345 * @param {Object} images - Image(s) to check if loaded.
13346 * @param {Func} callback - Function to execute when image is fully loaded.
13347 */
13348
13349function onImagesLoaded(images, callback) {
13350  var self = this,
13351      unloaded = images.length;
13352
13353  if (unloaded === 0) {
13354    callback();
13355  }
13356
13357  images.each(function () {
13358    // Check if image is loaded
13359    if (this.complete && typeof this.naturalWidth !== 'undefined') {
13360      singleImageLoaded();
13361    } else {
13362      // If the above check failed, simulate loading on detached element.
13363      var image = new Image(); // Still count image as loaded if it finalizes with an error.
13364
13365      var events = "load.zf.images error.zf.images";
13366      jquery__WEBPACK_IMPORTED_MODULE_0___default()(image).one(events, function me(event) {
13367        // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.
13368        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).off(events, me);
13369        singleImageLoaded();
13370      });
13371      image.src = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('src');
13372    }
13373  });
13374
13375  function singleImageLoaded() {
13376    unloaded--;
13377
13378    if (unloaded === 0) {
13379      callback();
13380    }
13381  }
13382}
13383
13384
13385
13386/***/ }),
13387
13388/***/ "./js/foundation.util.keyboard.js":
13389/*!****************************************!*\
13390  !*** ./js/foundation.util.keyboard.js ***!
13391  \****************************************/
13392/*! exports provided: Keyboard */
13393/***/ (function(module, __webpack_exports__, __webpack_require__) {
13394
13395"use strict";
13396__webpack_require__.r(__webpack_exports__);
13397/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Keyboard", function() { return Keyboard; });
13398/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
13399/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
13400/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
13401/*******************************************
13402 *                                         *
13403 * This util was created by Marius Olbertz *
13404 * Please thank Marius on GitHub /owlbertz *
13405 * or the web http://www.mariusolbertz.de/ *
13406 *                                         *
13407 ******************************************/
13408
13409
13410
13411
13412var keyCodes = {
13413  9: 'TAB',
13414  13: 'ENTER',
13415  27: 'ESCAPE',
13416  32: 'SPACE',
13417  35: 'END',
13418  36: 'HOME',
13419  37: 'ARROW_LEFT',
13420  38: 'ARROW_UP',
13421  39: 'ARROW_RIGHT',
13422  40: 'ARROW_DOWN'
13423};
13424var commands = {}; // Functions pulled out to be referenceable from internals
13425
13426function findFocusable($element) {
13427  if (!$element) {
13428    return false;
13429  }
13430
13431  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 () {
13432    if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':visible') || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('tabindex') < 0) {
13433      return false;
13434    } //only have visible elements and those that have a tabindex greater or equal 0
13435
13436
13437    return true;
13438  });
13439}
13440
13441function parseKey(event) {
13442  var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase(); // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events
13443
13444  key = key.replace(/\W+/, '');
13445  if (event.shiftKey) key = "SHIFT_".concat(key);
13446  if (event.ctrlKey) key = "CTRL_".concat(key);
13447  if (event.altKey) key = "ALT_".concat(key); // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)
13448
13449  key = key.replace(/_$/, '');
13450  return key;
13451}
13452
13453var Keyboard = {
13454  keys: getKeyCodes(keyCodes),
13455
13456  /**
13457   * Parses the (keyboard) event and returns a String that represents its key
13458   * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE
13459   * @param {Event} event - the event generated by the event handler
13460   * @return String key - String that represents the key pressed
13461   */
13462  parseKey: parseKey,
13463
13464  /**
13465   * Handles the given (keyboard) event
13466   * @param {Event} event - the event generated by the event handler
13467   * @param {String} component - Foundation component's name, e.g. Slider or Reveal
13468   * @param {Objects} functions - collection of functions that are to be executed
13469   */
13470  handleKey: function handleKey(event, component, functions) {
13471    var commandList = commands[component],
13472        keyCode = this.parseKey(event),
13473        cmds,
13474        command,
13475        fn;
13476    if (!commandList) return console.warn('Component not defined!'); // Ignore the event if it was already handled
13477
13478    if (event.zfIsKeyHandled === true) return; // This component does not differentiate between ltr and rtl
13479
13480    if (typeof commandList.ltr === 'undefined') {
13481      cmds = commandList; // use plain list
13482    } else {
13483      // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa
13484      if (Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["rtl"])()) cmds = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, commandList.ltr, commandList.rtl);else cmds = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, commandList.rtl, commandList.ltr);
13485    }
13486
13487    command = cmds[keyCode];
13488    fn = functions[command]; // Execute the handler if found
13489
13490    if (fn && typeof fn === 'function') {
13491      var returnValue = fn.apply(); // Mark the event as "handled" to prevent future handlings
13492
13493      event.zfIsKeyHandled = true; // Execute function when event was handled
13494
13495      if (functions.handled || typeof functions.handled === 'function') {
13496        functions.handled(returnValue);
13497      }
13498    } else {
13499      // Execute function when event was not handled
13500      if (functions.unhandled || typeof functions.unhandled === 'function') {
13501        functions.unhandled();
13502      }
13503    }
13504  },
13505
13506  /**
13507   * Finds all focusable elements within the given `$element`
13508   * @param {jQuery} $element - jQuery object to search within
13509   * @return {jQuery} $focusable - all focusable elements within `$element`
13510   */
13511  findFocusable: findFocusable,
13512
13513  /**
13514   * Returns the component name name
13515   * @param {Object} component - Foundation component, e.g. Slider or Reveal
13516   * @return String componentName
13517   */
13518  register: function register(componentName, cmds) {
13519    commands[componentName] = cmds;
13520  },
13521  // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?
13522  //
13523
13524  /**
13525   * Traps the focus in the given element.
13526   * @param  {jQuery} $element  jQuery object to trap the foucs into.
13527   */
13528  trapFocus: function trapFocus($element) {
13529    var $focusable = findFocusable($element),
13530        $firstFocusable = $focusable.eq(0),
13531        $lastFocusable = $focusable.eq(-1);
13532    $element.on('keydown.zf.trapfocus', function (event) {
13533      if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {
13534        event.preventDefault();
13535        $firstFocusable.focus();
13536      } else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {
13537        event.preventDefault();
13538        $lastFocusable.focus();
13539      }
13540    });
13541  },
13542
13543  /**
13544   * Releases the trapped focus from the given element.
13545   * @param  {jQuery} $element  jQuery object to release the focus for.
13546   */
13547  releaseFocus: function releaseFocus($element) {
13548    $element.off('keydown.zf.trapfocus');
13549  }
13550};
13551/*
13552 * Constants for easier comparing.
13553 * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE
13554 */
13555
13556function getKeyCodes(kcs) {
13557  var k = {};
13558
13559  for (var kc in kcs) {
13560    k[kcs[kc]] = kcs[kc];
13561  }
13562
13563  return k;
13564}
13565
13566
13567
13568/***/ }),
13569
13570/***/ "./js/foundation.util.mediaQuery.js":
13571/*!******************************************!*\
13572  !*** ./js/foundation.util.mediaQuery.js ***!
13573  \******************************************/
13574/*! exports provided: MediaQuery */
13575/***/ (function(module, __webpack_exports__, __webpack_require__) {
13576
13577"use strict";
13578__webpack_require__.r(__webpack_exports__);
13579/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MediaQuery", function() { return MediaQuery; });
13580/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
13581/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
13582
13583
13584function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13585
13586function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
13587
13588function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
13589
13590function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
13591
13592function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13593
13594 // Default set of media queries
13595
13596var defaultQueries = {
13597  'default': 'only screen',
13598  landscape: 'only screen and (orientation: landscape)',
13599  portrait: 'only screen and (orientation: portrait)',
13600  retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)'
13601}; // matchMedia() polyfill - Test a CSS media type/query in JS.
13602// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license
13603
13604/* eslint-disable */
13605
13606window.matchMedia || (window.matchMedia = function () {
13607  "use strict"; // For browsers that support matchMedium api such as IE 9 and webkit
13608
13609  var styleMedia = window.styleMedia || window.media; // For those that don't support matchMedium
13610
13611  if (!styleMedia) {
13612    var style = document.createElement('style'),
13613        script = document.getElementsByTagName('script')[0],
13614        info = null;
13615    style.type = 'text/css';
13616    style.id = 'matchmediajs-test';
13617
13618    if (!script) {
13619      document.head.appendChild(style);
13620    } else {
13621      script.parentNode.insertBefore(style, script);
13622    } // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
13623
13624
13625    info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle;
13626    styleMedia = {
13627      matchMedium: function matchMedium(media) {
13628        var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
13629
13630        if (style.styleSheet) {
13631          style.styleSheet.cssText = text;
13632        } else {
13633          style.textContent = text;
13634        } // Test if media query is true or false
13635
13636
13637        return info.width === '1px';
13638      }
13639    };
13640  }
13641
13642  return function (media) {
13643    return {
13644      matches: styleMedia.matchMedium(media || 'all'),
13645      media: media || 'all'
13646    };
13647  };
13648}());
13649/* eslint-enable */
13650
13651var MediaQuery = {
13652  queries: [],
13653  current: '',
13654
13655  /**
13656   * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.
13657   * @function
13658   * @private
13659   */
13660  _init: function _init() {
13661    // make sure the initialization is only done once when calling _init() several times
13662    if (this.isInitialized === true) {
13663      return;
13664    } else {
13665      this.isInitialized = true;
13666    }
13667
13668    var self = this;
13669    var $meta = jquery__WEBPACK_IMPORTED_MODULE_0___default()('meta.foundation-mq');
13670
13671    if (!$meta.length) {
13672      jquery__WEBPACK_IMPORTED_MODULE_0___default()('<meta class="foundation-mq">').appendTo(document.head);
13673    }
13674
13675    var extractedStyles = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.foundation-mq').css('font-family');
13676    var namedQueries;
13677    namedQueries = parseStyleToObject(extractedStyles);
13678    self.queries = []; // reset
13679
vendor: 4,471 bytes, lines 13680-13828
13680    for (var key in namedQueries) {
13681      if (namedQueries.hasOwnProperty(key)) {
13682        self.queries.push({
13683          name: key,
13684          value: "only screen and (min-width: ".concat(namedQueries[key], ")")
13685        });
13686      }
13687    }
13688
13689    this.current = this._getCurrentSize();
13690
13691    this._watcher();
13692  },
13693
13694  /**
13695   * Reinitializes the media query helper.
13696   * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.
13697   * @function
13698   * @private
13699   */
13700  _reInit: function _reInit() {
13701    this.isInitialized = false;
13702
13703    this._init();
13704  },
13705
13706  /**
13707   * Checks if the screen is at least as wide as a breakpoint.
13708   * @function
13709   * @param {String} size - Name of the breakpoint to check.
13710   * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.
13711   */
13712  atLeast: function atLeast(size) {
13713    var query = this.get(size);
13714
13715    if (query) {
13716      return window.matchMedia(query).matches;
13717    }
13718
13719    return false;
13720  },
13721
13722  /**
13723   * Checks if the screen is within the given breakpoint.
13724   * If smaller than the breakpoint of larger than its upper limit it returns false.
13725   * @function
13726   * @param {String} size - Name of the breakpoint to check.
13727   * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.
13728   */
13729  only: function only(size) {
13730    return size === this._getCurrentSize();
13731  },
13732
13733  /**
13734   * Checks if the screen is within a breakpoint or smaller.
13735   * @function
13736   * @param {String} size - Name of the breakpoint to check.
13737   * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.
13738   */
13739  upTo: function upTo(size) {
13740    var nextSize = this.next(size); // If the next breakpoint does not match, the screen is smaller than
13741    // the upper limit of this breakpoint.
13742
13743    if (nextSize) {
13744      return !this.atLeast(nextSize);
13745    } // If there is no next breakpoint, the "size" breakpoint does not have
13746    // an upper limit and the screen will always be within it or smaller.
13747
13748
13749    return true;
13750  },
13751
13752  /**
13753   * Checks if the screen matches to a breakpoint.
13754   * @function
13755   * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.
13756   * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.
13757   */
13758  is: function is(size) {
13759    var parts = size.trim().split(' ').filter(function (p) {
13760      return !!p.length;
13761    });
13762
13763    var _parts = _slicedToArray(parts, 2),
13764        bpSize = _parts[0],
13765        _parts$ = _parts[1],
13766        bpModifier = _parts$ === void 0 ? '' : _parts$; // Only the breakpont
13767
13768
13769    if (bpModifier === 'only') {
13770      return this.only(bpSize);
13771    } // At least the breakpoint (included)
13772
13773
13774    if (!bpModifier || bpModifier === 'up') {
13775      return this.atLeast(bpSize);
13776    } // Up to the breakpoint (included)
13777
13778
13779    if (bpModifier === 'down') {
13780      return this.upTo(bpSize);
13781    }
13782
13783    throw new Error("\n      Invalid breakpoint passed to MediaQuery.is().\n      Expected a breakpoint name formatted like \"<size> <modifier>\", got \"".concat(size, "\".\n    "));
13784  },
13785
13786  /**
13787   * Gets the media query of a breakpoint.
13788   * @function
13789   * @param {String} size - Name of the breakpoint to get.
13790   * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.
13791   */
13792  get: function get(size) {
13793    for (var i in this.queries) {
13794      if (this.queries.hasOwnProperty(i)) {
13795        var query = this.queries[i];
13796        if (size === query.name) return query.value;
13797      }
13798    }
13799
13800    return null;
13801  },
13802
13803  /**
13804   * Get the breakpoint following the given breakpoint.
13805   * @function
13806   * @param {String} size - Name of the breakpoint.
13807   * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.
13808   */
13809  next: function next(size) {
13810    var _this = this;
13811
13812    var queryIndex = this.queries.findIndex(function (q) {
13813      return _this._getQueryName(q) === size;
13814    });
13815
13816    if (queryIndex === -1) {
13817      throw new Error("\n        Unknown breakpoint \"".concat(size, "\" passed to MediaQuery.next().\n        Ensure it is present in your Sass \"$breakpoints\" setting.\n      "));
13818    }
13819
13820    var nextQuery = this.queries[queryIndex + 1];
13821    return nextQuery ? nextQuery.name : null;
13822  },
13823
13824  /**
13825   * Returns the name of the breakpoint related to the given value.
13826   * @function
13827   * @private
13828   * @param {String|Object}
vendor: 11,315 bytes, lines 13828-14179
13828 value - Breakpoint name or query object.
13829   * @returns {String} Name of the breakpoint.
13830   */
13831  _getQueryName: function _getQueryName(value) {
13832    if (typeof value === 'string') return value;
13833    if (_typeof(value) === 'object') return value.name;
13834    throw new TypeError("\n      Invalid value passed to MediaQuery._getQueryName().\n      Expected a breakpoint name (String) or a breakpoint query (Object), got \"".concat(value, "\" (").concat(_typeof(value), ")\n    "));
13835  },
13836
13837  /**
13838   * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).
13839   * @function
13840   * @private
13841   * @returns {String} Name of the current breakpoint.
13842   */
13843  _getCurrentSize: function _getCurrentSize() {
13844    var matched;
13845
13846    for (var i = 0; i < this.queries.length; i++) {
13847      var query = this.queries[i];
13848
13849      if (window.matchMedia(query.value).matches) {
13850        matched = query;
13851      }
13852    }
13853
13854    return matched && this._getQueryName(matched);
13855  },
13856
13857  /**
13858   * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.
13859   * @function
13860   * @private
13861   */
13862  _watcher: function _watcher() {
13863    var _this2 = this;
13864
13865    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', function () {
13866      var newSize = _this2._getCurrentSize(),
13867          currentSize = _this2.current;
13868
13869      if (newSize !== currentSize) {
13870        // Change the current media query
13871        _this2.current = newSize; // Broadcast the media query change on the window
13872
13873        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);
13874      }
13875    });
13876  }
13877}; // Thank you: https://github.com/sindresorhus/query-string
13878
13879function parseStyleToObject(str) {
13880  var styleObject = {};
13881
13882  if (typeof str !== 'string') {
13883    return styleObject;
13884  }
13885
13886  str = str.trim().slice(1, -1); // browsers re-quote string style values
13887
13888  if (!str) {
13889    return styleObject;
13890  }
13891
13892  styleObject = str.split('&').reduce(function (ret, param) {
13893    var parts = param.replace(/\+/g, ' ').split('=');
13894    var key = parts[0];
13895    var val = parts[1];
13896    key = decodeURIComponent(key); // missing `=` should be `null`:
13897    // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
13898
13899    val = typeof val === 'undefined' ? null : decodeURIComponent(val);
13900
13901    if (!ret.hasOwnProperty(key)) {
13902      ret[key] = val;
13903    } else if (Array.isArray(ret[key])) {
13904      ret[key].push(val);
13905    } else {
13906      ret[key] = [ret[key], val];
13907    }
13908
13909    return ret;
13910  }, {});
13911  return styleObject;
13912}
13913
13914
13915
13916/***/ }),
13917
13918/***/ "./js/foundation.util.motion.js":
13919/*!**************************************!*\
13920  !*** ./js/foundation.util.motion.js ***!
13921  \**************************************/
13922/*! exports provided: Move, Motion */
13923/***/ (function(module, __webpack_exports__, __webpack_require__) {
13924
13925"use strict";
13926__webpack_require__.r(__webpack_exports__);
13927/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Move", function() { return Move; });
13928/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Motion", function() { return Motion; });
13929/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
13930/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
13931/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
13932
13933
13934
13935
13936/**
13937 * Motion module.
13938 * @module foundation.motion
13939 */
13940
13941var initClasses = ['mui-enter', 'mui-leave'];
13942var activeClasses = ['mui-enter-active', 'mui-leave-active'];
13943var Motion = {
13944  animateIn: function animateIn(element, animation, cb) {
13945    animate(true, element, animation, cb);
13946  },
13947  animateOut: function animateOut(element, animation, cb) {
13948    animate(false, element, animation, cb);
13949  }
13950};
13951
13952function Move(duration, elem, fn) {
13953  var anim,
13954      prog,
13955      start = null; // console.log('called');
13956
13957  if (duration === 0) {
13958    fn.apply(elem);
13959    elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
13960    return;
13961  }
13962
13963  function move(ts) {
13964    if (!start) start = ts; // console.log(start, ts);
13965
13966    prog = ts - start;
13967    fn.apply(elem);
13968
13969    if (prog < duration) {
13970      anim = window.requestAnimationFrame(move, elem);
13971    } else {
13972      window.cancelAnimationFrame(anim);
13973      elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
13974    }
13975  }
13976
13977  anim = window.requestAnimationFrame(move);
13978}
13979/**
13980 * Animates an element in or out using a CSS transition class.
13981 * @function
13982 * @private
13983 * @param {Boolean} isIn - Defines if the animation is in or out.
13984 * @param {Object} element - jQuery or HTML object to animate.
13985 * @param {String} animation - CSS class to use.
13986 * @param {Function} cb - Callback to run when animation is finished.
13987 */
13988
13989
13990function animate(isIn, element, animation, cb) {
13991  element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).eq(0);
13992  if (!element.length) return;
13993  var initClass = isIn ? initClasses[0] : initClasses[1];
13994  var activeClass = isIn ? activeClasses[0] : activeClasses[1]; // Set up the animation
13995
13996  reset();
13997  element.addClass(animation).css('transition', 'none');
13998  requestAnimationFrame(function () {
13999    element.addClass(initClass);
14000    if (isIn) element.show();
14001  }); // Start the animation
14002
14003  requestAnimationFrame(function () {
14004    // will trigger the browser to synchronously calculate the style and layout
14005    // also called reflow or layout thrashing
14006    // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a
14007    element[0].offsetWidth;
14008    element.css('transition', '').addClass(activeClass);
14009  }); // Clean up the animation when it finishes
14010
14011  element.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(element), finish); // Hides the element (for out animations), resets the element, and runs a callback
14012
14013  function finish() {
14014    if (!isIn) element.hide();
14015    reset();
14016    if (cb) cb.apply(element);
14017  } // Resets transitions and removes motion-specific classes
14018
14019
14020  function reset() {
14021    element[0].style.transitionDuration = 0;
14022    element.removeClass("".concat(initClass, " ").concat(activeClass, " ").concat(animation));
14023  }
14024}
14025
14026
14027
14028/***/ }),
14029
14030/***/ "./js/foundation.util.nest.js":
14031/*!************************************!*\
14032  !*** ./js/foundation.util.nest.js ***!
14033  \************************************/
14034/*! exports provided: Nest */
14035/***/ (function(module, __webpack_exports__, __webpack_require__) {
14036
14037"use strict";
14038__webpack_require__.r(__webpack_exports__);
14039/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Nest", function() { return Nest; });
14040/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
14041/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
14042
14043
14044
14045var Nest = {
14046  Feather: function Feather(menu) {
14047    var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'zf';
14048    menu.attr('role', 'menubar');
14049    menu.find('a').attr({
14050      'role': 'menuitem'
14051    });
14052    var items = menu.find('li').attr({
14053      'role': 'none'
14054    }),
14055        subMenuClass = "is-".concat(type, "-submenu"),
14056        subItemClass = "".concat(subMenuClass, "-item"),
14057        hasSubClass = "is-".concat(type, "-submenu-parent"),
14058        applyAria = type !== 'accordion'; // Accordions handle their own ARIA attriutes.
14059
14060    items.each(function () {
14061      var $item = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
14062          $sub = $item.children('ul');
14063
14064      if ($sub.length) {
14065        $item.addClass(hasSubClass);
14066
14067        if (applyAria) {
14068          $item.attr({
14069            'aria-haspopup': true,
14070            'aria-label': $item.children('a:first').text()
14071          }); // Note:  Drilldowns behave differently in how they hide, and so need
14072          // additional attributes.  We should look if this possibly over-generalized
14073          // utility (Nest) is appropriate when we rework menus in 6.4
14074
14075          if (type === 'drilldown') {
14076            $item.attr({
14077              'aria-expanded': false
14078            });
14079          }
14080        }
14081
14082        $sub.addClass("submenu ".concat(subMenuClass)).attr({
14083          'data-submenu': '',
14084          'role': 'menubar'
14085        });
14086
14087        if (type === 'drilldown') {
14088          $sub.attr({
14089            'aria-hidden': true
14090          });
14091        }
14092      }
14093
14094      if ($item.parent('[data-submenu]').length) {
14095        $item.addClass("is-submenu-item ".concat(subItemClass));
14096      }
14097    });
14098    return;
14099  },
14100  Burn: function Burn(menu, type) {
14101    var //items = menu.find('li'),
14102    subMenuClass = "is-".concat(type, "-submenu"),
14103        subItemClass = "".concat(subMenuClass, "-item"),
14104        hasSubClass = "is-".concat(type, "-submenu-parent");
14105    menu.find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li').removeClass("".concat(subMenuClass, " ").concat(subItemClass, " ").concat(hasSubClass, " is-submenu-item submenu is-active")).removeAttr('data-submenu').css('display', '');
14106  }
14107};
14108
14109
14110/***/ }),
14111
14112/***/ "./js/foundation.util.timer.js":
14113/*!*************************************!*\
14114  !*** ./js/foundation.util.timer.js ***!
14115  \*************************************/
14116/*! exports provided: Timer */
14117/***/ (function(module, __webpack_exports__, __webpack_require__) {
14118
14119"use strict";
14120__webpack_require__.r(__webpack_exports__);
14121/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return Timer; });
14122/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
14123/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
14124
14125
14126
14127
14128function Timer(elem, options, cb) {
14129  var _this = this,
14130      duration = options.duration,
14131      //options is an object for easily adding features later.
14132  nameSpace = Object.keys(elem.data())[0] || 'timer',
14133      remain = -1,
14134      start,
14135      timer;
14136
14137  this.isPaused = false;
14138
14139  this.restart = function () {
14140    remain = -1;
14141    clearTimeout(timer);
14142    this.start();
14143  };
14144
14145  this.start = function () {
14146    this.isPaused = false; // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
14147
14148    clearTimeout(timer);
14149    remain = remain <= 0 ? duration : remain;
14150    elem.data('paused', false);
14151    start = Date.now();
14152    timer = setTimeout(function () {
14153      if (options.infinite) {
14154        _this.restart(); //rerun the timer.
14155
14156      }
14157
14158      if (cb && typeof cb === 'function') {
14159        cb();
14160      }
14161    }, remain);
14162    elem.trigger("timerstart.zf.".concat(nameSpace));
14163  };
14164
14165  this.pause = function () {
14166    this.isPaused = true; //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
14167
14168    clearTimeout(timer);
14169    elem.data('paused', true);
14170    var end = Date.now();
14171    remain = remain - (end - start);
14172    elem.trigger("timerpaused.zf.".concat(nameSpace));
14173  };
14174}
14175
14176
14177
14178/***/ }),
14179
14180/***/ "./js/foundation.util.touch.js":
14181/*!*************************************!*\
14182  !*** ./js/foundation.util.touch.js ***!
14183  \*************************************/
14184/*! exports provided: Touch */
14185/***/ (function(module, __webpack_exports__, __webpack_require__) {
14186
14187"use strict";
14188__webpack_require__.r(__webpack_exports__);
14189/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Touch", function() { return Touch; });
14190/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
14191/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
14192function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
14193
14194function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
14195
14196function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
14197
14198//**************************************************
14199//**Work inspired by multiple jquery swipe plugins**
14200//**Done by Yohai Ararat ***************************
14201//**************************************************
14202
14203var Touch = {};
14204var startPosX,
14205    startPosY,
14206    startTime,
14207    elapsedTime,
14208    startEvent,
14209    isMoving = false,
14210    didMoved = false;
14211
14212function onTouchEnd(e) {
14213  this.removeEventListener('touchmove', onTouchMove);
14214  this.removeEventListener('touchend', onTouchEnd); // If the touch did not move, consider it as a "tap"
14215
14216  if (!didMoved) {
14217    var tapEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event('tap', startEvent || e);
14218    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger(tapEvent);
14219  }
14220
14221  startEvent = null;
14222  isMoving = false;
14223  didMoved = false;
14224}
14225
14226function onTouchMove(e) {
14227  if (jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.preventDefault) {
14228    e.preventDefault();
14229  }
14230
14231  if (isMoving) {
14232    var x = e.touches[0].pageX;
14233    var y = e.touches[0].pageY;
14234    var dx = startPosX - x;
14235    var dy = startPosY - y;
14236    var dir;
14237    didMoved = true;
14238    elapsedTime = new Date().getTime() - startTime;
14239
14240    if (Math.abs(dx) >= jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.moveThreshold && elapsedTime <= jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.timeThreshold) {
14241      dir = dx > 0 ? 'left' : 'right';
14242    } // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {
14243    //   dir = dy > 0 ? 'down' : 'up';
14244    // }
14245
14246
14247    if (dir) {
14248      e.preventDefault();
14249      onTouchEnd.apply(this, arguments);
14250      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event('swipe', Object.assign({}, e)), dir).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event("swipe".concat(dir), Object.assign({}, e)));
14251    }
14252  }
14253}
14254
14255function onTouchStart(e) {
14256  if (e.touches.length == 1) {
14257    startPosX = e.touches[0].pageX;
14258    startPosY = e.touches[0].pageY;
14259    startEvent = e;
14260    isMoving = true;
14261    didMoved = false;
14262    startTime = new Date().getTime();
14263    this.addEventListener('touchmove', onTouchMove, false);
14264    this.addEventListener('touchend', onTouchEnd, false);
14265  }
14266}
14267
14268function init() {
14269  this.addEventListener && this.addEventListener('touchstart', onTouchStart, false);
14270}
14271
14272function teardown() {
14273  this.removeEventListener('touchstart', onTouchStart);
14274}
14275
14276var SpotSwipe =
14277/*#__PURE__*/
14278function () {
14279  function SpotSwipe($) {
14280    _classCallCheck(this, SpotSwipe);
14281
14282    this.version = '1.0.0';
14283    this.enabled = 'ontouchstart' in document.documentElement;
14284    this.preventDefault = false;
vendor: 2,686 bytes, lines 14285-14382
14285    this.moveThreshold = 75;
14286    this.timeThreshold = 200;
14287    this.$ = $;
14288
14289    this._init();
14290  }
14291
14292  _createClass(SpotSwipe, [{
14293    key: "_init",
14294    value: function _init() {
14295      var $ = this.$;
14296      $.event.special.swipe = {
14297        setup: init
14298      };
14299      $.event.special.tap = {
14300        setup: init
14301      };
14302      $.each(['left', 'up', 'down', 'right'], function () {
14303        $.event.special["swipe".concat(this)] = {
14304          setup: function setup() {
14305            $(this).on('swipe', $.noop);
14306          }
14307        };
14308      });
14309    }
14310  }]);
14311
14312  return SpotSwipe;
14313}();
14314/****************************************************
14315 * As far as I can tell, both setupSpotSwipe and    *
14316 * setupTouchHandler should be idempotent,          *
14317 * because they directly replace functions &        *
14318 * values, and do not add event handlers directly.  *
14319 ****************************************************/
14320
14321
14322Touch.setupSpotSwipe = function ($) {
14323  $.spotSwipe = new SpotSwipe($);
14324};
14325/****************************************************
14326 * Method for adding pseudo drag events to elements *
14327 ***************************************************/
14328
14329
14330Touch.setupTouchHandler = function ($) {
14331  $.fn.addTouch = function () {
14332    this.each(function (i, el) {
14333      $(el).bind('touchstart touchmove touchend touchcancel', function (event) {
14334        //we pass the original event object because the jQuery event
14335        //object is normalized to w3c specs and does not provide the TouchList
14336        handleTouch(event);
14337      });
14338    });
14339
14340    var handleTouch = function handleTouch(event) {
14341      var touches = event.changedTouches,
14342          first = touches[0],
14343          eventTypes = {
14344        touchstart: 'mousedown',
14345        touchmove: 'mousemove',
14346        touchend: 'mouseup'
14347      },
14348          type = eventTypes[event.type],
14349          simulatedEvent;
14350
14351      if ('MouseEvent' in window && typeof window.MouseEvent === 'function') {
14352        simulatedEvent = new window.MouseEvent(type, {
14353          'bubbles': true,
14354          'cancelable': true,
14355          'screenX': first.screenX,
14356          'screenY': first.screenY,
14357          'clientX': first.clientX,
14358          'clientY': first.clientY
14359        });
14360      } else {
14361        simulatedEvent = document.createEvent('MouseEvent');
14362        simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0
14363        /*left*/
14364        , null);
14365      }
14366
14367      first.target.dispatchEvent(simulatedEvent);
14368    };
14369  };
14370};
14371
14372Touch.init = function ($) {
14373  if (typeof $.spotSwipe === 'undefined') {
14374    Touch.setupSpotSwipe($);
14375    Touch.setupTouchHandler($);
14376  }
14377};
14378
14379
14380
14381/***/ }),
14382
vendor: 8,561 bytes, lines 14383-14588
14383/***/ "./js/foundation.util.triggers.js":
14384/*!****************************************!*\
14385  !*** ./js/foundation.util.triggers.js ***!
14386  \****************************************/
14387/*! exports provided: Triggers */
14388/***/ (function(module, __webpack_exports__, __webpack_require__) {
14389
14390"use strict";
14391__webpack_require__.r(__webpack_exports__);
14392/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; });
14393/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
14394/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
14395/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
14396/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
14397
14398
14399function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
14400
14401
14402
14403
14404
14405var MutationObserver = function () {
14406  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
14407
14408  for (var i = 0; i < prefixes.length; i++) {
14409    if ("".concat(prefixes[i], "MutationObserver") in window) {
14410      return window["".concat(prefixes[i], "MutationObserver")];
14411    }
14412  }
14413
14414  return false;
14415}();
14416
14417var triggers = function triggers(el, type) {
14418  el.data(type).split(' ').forEach(function (id) {
14419    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]);
14420  });
14421};
14422
14423var Triggers = {
14424  Listeners: {
14425    Basic: {},
14426    Global: {}
14427  },
14428  Initializers: {}
14429};
14430Triggers.Listeners.Basic = {
14431  openListener: function openListener() {
14432    triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open');
14433  },
14434  closeListener: function closeListener() {
14435    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close');
14436
14437    if (id) {
14438      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close');
14439    } else {
14440      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger');
14441    }
14442  },
14443  toggleListener: function toggleListener() {
14444    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
14445
14446    if (id) {
14447      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle');
14448    } else {
14449      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger');
14450    }
14451  },
14452  closeableListener: function closeableListener(e) {
14453    var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833
14454
14455    e.stopPropagation();
14456
14457    if (animation !== '') {
14458      _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () {
14459        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf');
14460      });
14461    } else {
14462      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf');
14463    }
14464  },
14465  toggleFocusListener: function toggleFocusListener() {
14466    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus');
14467    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]);
14468  }
14469}; // Elements with [data-open] will reveal a plugin that supports it when clicked.
14470
14471Triggers.Initializers.addOpenListener = function ($elem) {
14472  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);
14473  $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);
14474}; // Elements with [data-close] will close a plugin that supports it when clicked.
14475// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
14476
14477
14478Triggers.Initializers.addCloseListener = function ($elem) {
14479  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);
14480  $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);
14481}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
14482
14483
14484Triggers.Initializers.addToggleListener = function ($elem) {
14485  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);
14486  $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);
14487}; // Elements with [data-closable] will respond to close.zf.trigger events.
14488
14489
14490Triggers.Initializers.addCloseableListener = function ($elem) {
14491  $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);
14492  $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);
14493}; // Elements with [data-toggle-focus] will respond to coming in and out of focus
14494
14495
14496Triggers.Initializers.addToggleFocusListener = function ($elem) {
14497  $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);
14498  $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
14499}; // More Global/complex listeners and triggers
14500
14501
14502Triggers.Listeners.Global = {
14503  resizeListener: function resizeListener($nodes) {
14504    if (!MutationObserver) {
14505      //fallback for IE 9
14506      $nodes.each(function () {
14507        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger');
14508      });
14509    } //trigger all listening elements and signal a resize event
14510
14511
14512    $nodes.attr('data-events', "resize");
14513  },
14514  scrollListener: function scrollListener($nodes) {
14515    if (!MutationObserver) {
14516      //fallback for IE 9
14517      $nodes.each(function () {
14518        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger');
14519      });
14520    } //trigger all listening elements and signal a scroll event
14521
14522
14523    $nodes.attr('data-events', "scroll");
14524  },
14525  closeMeListener: function closeMeListener(e, pluginId) {
14526    var plugin = e.namespace.split('.')[0];
14527    var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]"));
14528    plugins.each(function () {
14529      var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
14530
14531      _this.triggerHandler('close.zf.trigger', [_this]);
14532    });
14533  } // Global, parses whole document.
14534
14535};
14536
14537Triggers.Initializers.addClosemeListener = function (pluginName) {
14538  var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'),
14539      plugNames = ['dropdown', 'tooltip', 'reveal'];
14540
14541  if (pluginName) {
14542    if (typeof pluginName === 'string') {
14543      plugNames.push(pluginName);
14544    } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') {
14545      plugNames = plugNames.concat(pluginName);
14546    } else {
14547      console.error('Plugin names must be strings');
14548    }
14549  }
14550
14551  if (yetiBoxes.length) {
14552    var listeners = plugNames.map(function (name) {
14553      return "closeme.zf.".concat(name);
14554    }).join(' ');
14555    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);
14556  }
14557};
14558
14559function debounceGlobalListener(debounce, trigger, listener) {
14560  var timer,
14561      args = Array.prototype.slice.call(arguments, 3);
14562  jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) {
14563    if (timer) {
14564      clearTimeout(timer);
14565    }
14566
14567    timer = setTimeout(function () {
14568      listener.apply(null, args);
14569    }, debounce || 10); //default time to emit scroll event
14570  });
14571}
14572
14573Triggers.Initializers.addResizeListener = function (debounce) {
14574  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]');
14575
14576  if ($nodes.length) {
14577    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
14578  }
14579};
14580
14581Triggers.Initializers.addScrollListener = function (debounce) {
14582  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]');
14583
14584  if ($nodes.length) {
14585    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
14586  }
14587};
14588
vendor: 3,263 bytes, lines 14589-14677
14589Triggers.Initializers.addMutationEventsListener = function ($elem) {
14590  if (!MutationObserver) {
14591    return false;
14592  }
14593
14594  var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback
14595
14596  var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {
14597    var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type
14598
14599    switch (mutationRecordsList[0].type) {
14600      case "attributes":
14601        if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
14602          $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
14603        }
14604
14605        if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
14606          $target.triggerHandler('resizeme.zf.trigger', [$target]);
14607        }
14608
14609        if (mutationRecordsList[0].attributeName === "style") {
14610          $target.closest("[data-mutate]").attr("data-events", "mutate");
14611          $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
14612        }
14613
14614        break;
14615
14616      case "childList":
14617        $target.closest("[data-mutate]").attr("data-events", "mutate");
14618        $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
14619        break;
14620
14621      default:
14622        return false;
14623      //nothing
14624    }
14625  };
14626
14627  if ($nodes.length) {
14628    //for each element that needs to listen for resizing, scrolling, or mutation add a single observer
14629    for (var i = 0; i <= $nodes.length - 1; i++) {
14630      var elementObserver = new MutationObserver(listeningElementsMutation);
14631      elementObserver.observe($nodes[i], {
14632        attributes: true,
14633        childList: true,
14634        characterData: false,
14635        subtree: true,
14636        attributeFilter: ["data-events", "style"]
14637      });
14638    }
14639  }
14640};
14641
14642Triggers.Initializers.addSimpleListeners = function () {
14643  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
14644  Triggers.Initializers.addOpenListener($document);
14645  Triggers.Initializers.addCloseListener($document);
14646  Triggers.Initializers.addToggleListener($document);
14647  Triggers.Initializers.addCloseableListener($document);
14648  Triggers.Initializers.addToggleFocusListener($document);
14649};
14650
14651Triggers.Initializers.addGlobalListeners = function () {
14652  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
14653  Triggers.Initializers.addMutationEventsListener($document);
14654  Triggers.Initializers.addResizeListener();
14655  Triggers.Initializers.addScrollListener();
14656  Triggers.Initializers.addClosemeListener();
14657};
14658
14659Triggers.init = function ($, Foundation) {
14660  Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () {
14661    if ($.triggersInitialized !== true) {
14662      Triggers.Initializers.addSimpleListeners();
14663      Triggers.Initializers.addGlobalListeners();
14664      $.triggersInitialized = true;
14665    }
14666  });
14667
14668  if (Foundation) {
14669    Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now.
14670
14671    Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;
14672  }
14673};
14674
14675
14676
14677/***/ })
14677,
14678
14679/***/ 0:
14680/*!****************************************!*\
14681  !*** multi ./js/entries/foundation.js ***!
14682  \****************************************/
14683/*! no static exports found */
14684/***/ (function(module, exports, __webpack_require__) {
14685
14686module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/foundation.js */"./js/entries/foundation.js");
14687
14688
14689/***/ }),
14690
14691/***/ "jquery":
14692/*!********************************************************************************************!*\
14693  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
14694  \********************************************************************************************/
14695/*! no static exports found */
14696/***/ (function(module, exports) {
14697
14698module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
14699
14700/***/ })
14701
14702/******/ });
14703});
14704//# sourceMappingURL=foundation.js.map
14705/**
14706 * jQuery FocusPoint; version: 1.1.3
14707 * Author: http://jonathonmenz.com
14708 * Source: https://github.com/jonom/jquery-focuspoint
14709 * Copyright (c) 2014 J. Menz; MIT License
14710 * @preserve
14711 */
14712;
14713(function($) {
14714
14715	var defaults = {
14716		reCalcOnWindowResize: true,
14717		throttleDuration: 17 //ms - set to 0 to disable throttling
14718	};
14719
14720	//Setup a container instance
14721	var setupContainer = function($el) {
14722		var imageSrc = $el.find('img').attr('src');
14723		$el.data('imageSrc', imageSrc);
14724
14725		resolveImageSize(imageSrc, function(err, dim) {
14726			$el.data({
14727				imageW: dim.width,
14728				imageH: dim.height
14729			});
14730			adjustFocus($el);
14731		});
14732	};
14733
14734	//Get the width and the height of an image
14735	//by creating a new temporary image
14736	var resolveImageSize = function(src, cb) {
14737		//Create a new image and set a
14738		//handler which listens to the first
14739		//call of the 'load' event.
14740		$('<img />').one('load', function() {
14741			//'this' references to the new
14742			//created image
14743			cb(null, {
14744				width: this.width,
14745				height: this.height
14746			});
14747		}).attr('src', src);
14748	};
14749
14750	//Create a throttled version of a function
14751	var throttle = function(fn, ms) {
14752		var isRunning = false;
14753		return function() {
14754			var args = Array.prototype.slice.call(arguments, 0);
14755			if (isRunning) return false;
14756			isRunning = true;
14757			setTimeout(function() {
14758				isRunning = false;
14759				fn.apply(null, args);
14760			}, ms);
14761		};
14762	};
14763
14764	//Calculate the new left/top values of an image
14765	var calcShift = function(conToImageRatio, containerSize, imageSize, focusSize, toMinus) {
14766		var containerCenter = Math.floor(containerSize / 2); //Container center in px
14767		var focusFactor = (focusSize + 1) / 2; //Focus point of resize image in px
14768		var scaledImage = Math.floor(imageSize / conToImageRatio); //Can't use width() as images may be display:none
14769		var focus =  Math.floor(focusFactor * scaledImage);
14770		if (toMinus) focus = scaledImage - focus;
14771		var focusOffset = focus - containerCenter; //Calculate difference between focus point and center
14772		var remainder = scaledImage - focus; //Reduce offset if necessary so image remains filled
14773		var containerRemainder = containerSize - containerCenter;
14774		if (remainder < containerRemainder) focusOffset -= containerRemainder - remainder;
14775		if (focusOffset < 0) focusOffset = 0;
14776
14777		return (focusOffset * -100 / containerSize)  + '%';
14778	};
14779
14780	//Re-adjust the focus
14781	var adjustFocus = function($el) {
14782		var imageW = $el.data('imageW');
14783		var imageH = $el.data('imageH');
14784		var imageSrc = $el.data('imageSrc');
14785
14786		if (!imageW && !imageH && !imageSrc) {
14787			return setupContainer($el); //Setup the container first
14788		}
14789
14790		var containerW = $el.width();
14791		var containerH = $el.height();
14792		var focusX = parseFloat($el.data('focusX'));
14793		var focusY = parseFloat($el.data('focusY'));
14794		var $image = $el.find('img').first();
14795
14796		//Amount position will be shifted
14797		var hShift = 0;
14798		var vShift = 0;
14799
14800		if (!(containerW > 0 && containerH > 0 && imageW > 0 && imageH > 0)) {
14801			return false; //Need dimensions to proceed
14802		}
14803
14804		//Which is over by more?
14805		var wR = imageW / containerW;
14806		var hR = imageH / containerH;
14807
14808		//Reset max-width and -height
14809		$image.css({
14810			'max-width': '',
14811			'max-height': ''
14812		});
14813
14814		//Minimize image while still filling space
14815		if (imageW > containerW && imageH > containerH) {
14816			$image.css((wR > hR) ? 'max-height' : 'max-width', '100%');
14817		}
14818
14819		if (wR > hR) {
14820			hShift = calcShift(hR, containerW, imageW, focusX);
14821		} else if (wR < hR) {
14822			vShift = calcShift(wR, containerH, imageH, focusY, true);
14823		}
14824
14825		$image.css({
14826			top: vShift,
14827			left: hShift
14828		});
14829	};
14830
14831	var $window = $(window);
14832
14833	var focusPoint = function($el, settings) {
14834		var thrAdjustFocus = settings.throttleDuration ?
14835			throttle(function(){adjustFocus($el);}, settings.throttleDuration)
14836			: function(){adjustFocus($el);};//Only throttle when desired
14837		var isListening = false;
14838
14839		adjustFocus($el); //Focus image in container
14840
14841		//Expose a public API
14842		return {
14843
14844			adjustFocus: function() {
14845				return adjustFocus($el);
14846			},
14847
14848			windowOn: function() {
14849				if (isListening) return;
14850				//Recalculate each time the window is resized
14851				$window.on('resize', thrAdjustFocus);
14852				return isListening = true;
14853			},
14854
14855			windowOff: function() {
14856				if (!isListening) return;
14857				//Stop listening to the resize event
14858				$window.off('resize', thrAdjustFocus);
14859				isListening = false;
14860				return true;
14861			}
14862
14863		};
14864	};
14865
14866	$.fn.focusPoint = function(optionsOrMethod) {
14867		//Shortcut to functions - if string passed assume method name and execute
14868		if (typeof optionsOrMethod === 'string') {
14869			return this.each(function() {
14870				var $el = $(this);
14871				$el.data('focusPoint')[optionsOrMethod]();
14872			});
14873		}
14874		//Otherwise assume options being passed and setup
14875		var settings = $.extend({}, defaults, optionsOrMethod);
14876		return this.each(function() {
14877			var $el = $(this);
14878			var fp = focusPoint($el, settings);
14879			//Stop the resize event of any previous attached
14880			//focusPoint instances
14881			if ($el.data('focusPoint')) $el.data('focusPoint').windowOff();
14882			$el.data('focusPoint', fp);
14883			if (settings.reCalcOnWindowResize) fp.windowOn();
14884		});
14885
14886	};
14887
14888	$.fn.adjustFocus = function() {
14889		//Deprecated v1.2
14890		return this.each(function() {
14891			adjustFocus($(this));
14892		});
14893	};
14894
14895})(jQuery);
14896/**!
14897 * easy-pie-chart
14898 * Lightweight plugin to render simple, animated and retina optimized pie charts
14899 *
14900 * @license 
14901 * @author Robert Fleischmann <[email protected]> (http://robert-fleischmann.de)
14902 * @version 2.1.7
14903 **/
14904!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){var b=function(a,b){var c,d=document.createElement("canvas");a.appendChild(d),"object"==typeof G_vmlCanvasManager&&G_vmlCanvasManager.initElement(d);var e=d.getContext("2d");d.width=d.height=b.size;var f=1;window.devicePixelRatio>1&&(f=window.devicePixelRatio,d.style.width=d.style.height=[b.size,"px"].join(""),d.width=d.height=b.size*f,e.scale(f,f)),e.translate(b.size/2,b.size/2),e.rotate((-0.5+b.rotate/180)*Math.PI);var g=(b.size-b.lineWidth)/2;b.scaleColor&&b.scaleLength&&(g-=b.scaleLength+2),Date.now=Date.now||function(){return+new Date};var h=function(a,b,c){c=Math.min(Math.max(-1,c||0),1);var d=0>=c?!0:!1;e.beginPath(),e.arc(0,0,g,0,2*Math.PI*c,d),e.strokeStyle=a,e.lineWidth=b,e.stroke()},i=function(){var a,c;e.lineWidth=1,e.fillStyle=b.scaleColor,e.save();for(var d=24;d>0;--d)d%6===0?(c=b.scaleLength,a=0):(c=.6*b.scaleLength,a=b.scaleLength-c),e.fillRect(-b.size/2+a,0,c,1),e.rotate(Math.PI/12);e.restore()},j=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(a){window.setTimeout(a,1e3/60)}}(),k=function(){b.scaleColor&&i(),b.trackColor&&h(b.trackColor,b.trackWidth||b.lineWidth,1)};this.getCanvas=function(){return d},this.getCtx=function(){return e},this.clear=function(){e.clearRect(b.size/-2,b.size/-2,b.size,b.size)},this.draw=function(a){b.scaleColor||b.trackColor?e.getImageData&&e.putImageData?c?e.putImageData(c,0,0):(k(),c=e.getImageData(0,0,b.size*f,b.size*f)):(this.clear(),k()):this.clear(),e.lineCap=b.lineCap;var d;d="function"==typeof b.barColor?b.barColor(a):b.barColor,h(d,b.lineWidth,a/100)}.bind(this),this.animate=function(a,c){var d=Date.now();b.onStart(a,c);var e=function(){var f=Math.min(Date.now()-d,b.animate.duration),g=b.easing(this,f,a,c-a,b.animate.duration);this.draw(g),b.onStep(a,c,g),f>=b.animate.duration?b.onStop(a,c):j(e)}.bind(this);j(e)}.bind(this)},c=function(a,c){var d={barColor:"#ef1e25",trackColor:"#f9f9f9",scaleColor:"#dfe0e0",scaleLength:5,lineCap:"round",lineWidth:3,trackWidth:void 0,size:110,rotate:0,animate:{duration:1e3,enabled:!0},easing:function(a,b,c,d,e){return b/=e/2,1>b?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},onStart:function(a,b){},onStep:function(a,b,c){},onStop:function(a,b){}};if("undefined"!=typeof b)d.renderer=b;else{if("undefined"==typeof SVGRenderer)throw new Error("Please load either the SVG- or the CanvasRenderer");d.renderer=SVGRenderer}var e={},f=0,g=function(){this.el=a,this.options=e;for(var b in d)d.hasOwnProperty(b)&&(e[b]=c&&"undefined"!=typeof c[b]?c[b]:d[b],"function"==typeof e[b]&&(e[b]=e[b].bind(this)));"string"==typeof e.easing&&"undefined"!=typeof jQuery&&jQuery.isFunction(jQuery.easing[e.easing])?e.easing=jQuery.easing[e.easing]:e.easing=d.easing,"number"==typeof e.animate&&(e.animate={duration:e.animate,enabled:!0}),"boolean"!=typeof e.animate||e.animate||(e.animate={duration:1e3,enabled:e.animate}),this.renderer=new e.renderer(a,e),this.renderer.draw(f),a.dataset&&a.dataset.percent?this.update(parseFloat(a.dataset.percent)):a.getAttribute&&a.getAttribute("data-percent")&&this.update(parseFloat(a.getAttribute("data-percent")))}.bind(this);this.update=function(a){return a=parseFloat(a),e.animate.enabled?this.renderer.animate(f,a):this.renderer.draw(a),f=a,this}.bind(this),this.disableAnimation=function(){return e.animate.enabled=!1,this},this.enableAnimation=function(){return e.animate.enabled=!0,this},g()};a.fn.easyPieChart=function(b){return this.each(function(){var d;a.data(this,"easyPieChart")||(d=a.extend({},b,a(this).data()),a.data(this,"easyPieChart",new c(this,d)))})}});
14905/**
14906 * @author        Hakan Havutcuoglu
14907 * @license        LGPL +3 http://www.gnu.org/licenses/lgpl-3.0.html
14908 * @copyright    2015 IXTENSA
14909 */
14910
14911
14912
14913// 1. sticky navigation
14914// 2. trigger search
14915// 3. clone search form to mobile navigation
14916// 4. clone top bar navigation to mobile navigation
14917// 5. Scroll to first form error
14918// 6. disable mousewheel on a input number field when in focus
14919// 7. search url as link
14920// 8. optimize Navigation tap for Tablets
14921// 9. slide-in panels
14922
14923
14924
14925
14926 // 3. Highlight Bigdropdown links in ce_text
14927 // 4. Dropdown Layer
14928 // 7. support or contact panel
14929 // 8. Parallax scrolling for banner
14930
14931
14932(function($) {
14933
14934    $(document).ready(function() {
14935        //var elem = new Foundation.Sticky($('[data-sticky]'));
14936        $(document).foundation(); // use Foundation
14937        $('.logo').find('img').removeAttr('width height');// remove attributes from logo
14938        $('body').removeClass('no-script'); // remove no-script class wenn js enable
14939        $('.custom').each(function()
14940        {
14941            $(this).addClass($(this).children().first().attr('id'));
14942        });
14943
14944
14945        triggerSearch(); // trigger search overlay by click on search icon
14946        // mobileSearch(); // clone search form to mobile navigation
14947        mobileTopBarNavi(); // clone top bar navigation to mobile navigation
14948        scrollToFormError(); // scroll to first form error
14949        disableMouseWheel(); // disebla mouse wheel scrolling by input type number
14950        // goToSearchUrl(); // load search result by click
14951        initTabletNavigation(); // tap on navigation by tablet
14952        megamenu26_init(false);
14953
14954
14955        // highlightActiveLink(); // Highlight active navigation point
14956        // supportPanel() // Support or contact panel on the page side
14957        // activateDropdownLayer(); // Activate overlay by entering Navigation
14958    });
14959
14960    $(window).on('load',function() {
14961        // add code here
14962        $('.focuspoint').focusPoint();
14963        stickyNavigation(); // sticky navigation
14964        activeMegamenuLinks();
14965        initSlidePanels(); // slide-in panels (side panels)
14966    });
14967
14968    $(window).on('resize',function() {
14969        // add code here
14970        $('.focuspoint').focusPoint();
14971    });
14972
14973    $(window).on('scroll',function() {
14974        // add code here
14975    });
14976
14977})(jQuery);
14978
14979
14980// +++++++++++++++++++++++++++++++
14981// FUNCTIONS
14982// +++++++++++++++++++++++++++++++
14983
14984// width, height: show,hide,toggle
14985$.fn.showElement = function(duration) {
14986    return this.animate({height: "hide", opacity: "show"}, duration || 1000);
14987};
14988$.fn.hideElement = function(duration) {
14989    return this.animate({height: "hide", opacity: "hide"}, duration || 1000);
14990};
14991
14992// 1. sticky navigation
14993// - - - - - - - - - - - - - - - - - - - - - - - -
14994
14995function stickyNavigation() {
14996    var $naviWrapperElement = $('.ce_body_top');
14997
14998    // show sticky only by medium up and not mobile devices
14999    if((Foundation.MediaQuery.is('medium') && !$('body').hasClass('mobile')) || Foundation.MediaQuery.is('large'))
15000    {
15001        $naviWrapperElement.clone().appendTo('body').addClass('clone');
15002
15003        var $stickyNavigation = $('.ce_body_top.clone').find('.body-top-header.original');
15004        $stickyNavigation.removeClass('original').addClass('clone-dolly');
15005        megamenu26_init(true);
15006    }
15007    $(window).on('scroll',function() {
15008        var dolly = $('.clone'),
15009            $documentScrollTop = $(document).scrollTop(),
15010            $startHeight = $('#body-top').outerHeight() + 50; // add here start heigth by scrolling
15011
15012        if($documentScrollTop >= $startHeight && !dolly.hasClass('active'))
15013        {
15014            dolly.addClass('active');
15015        }
15016        if($documentScrollTop <= $startHeight)
15017        {
15018            dolly.removeClass('active');
15019        }
15020    });
15021}
15022
15023function fixedNavigation() {
15024    //    $('body').addClass('fixed-header');
15025        var $setHeight = $('.ce_body_top').outerHeight();
15026        var $fixedNaviElement = $('.fixed-header');
15027        if((Foundation.MediaQuery.is('medium') && !$('body').hasClass('mobile')) || Foundation.MediaQuery.is('large'))
15028        {
15029            if($fixedNaviElement.length) {
15030                $('body').css('margin-top',$setHeight+'px');
15031            }
15032            $(window).on('scroll',function() {
15033                var $documentScrollTop = $(document).scrollTop();
15034                var $startHeight = 0;
15035    
15036                if($documentScrollTop >= $startHeight)
15037                {
15038                    $fixedNaviElement.addClass('active');
15039                }
15040                if($documentScrollTop <= $startHeight)
15041                {
15042                    $fixedNaviElement.removeClass('active');
15043                }
15044            });
15045        }
15046    }
15047    
15048// 2. trigger search
15049// - - - - - - - - - - - - - - - - - - - - - - - -
15050// it is in page layout included aktivate it to use
15051
15052function triggerSearch()
15053{
15054    var searchTrigger = $('.search-trigger'),
15055        searchOverlay = $('.search-overlay'),
15056        closeButton = searchOverlay.find('.close-button');
15057
15058    if(searchOverlay.length && searchTrigger.length)
15059    {
15060        $('html').addClass('searchEnabled');
15061
15062        // change heading tag with strong
15063        var modSearch = searchOverlay.find('.mod_search');
15064        var headline = modSearch.find('h1,h2,h3,h4,h5,h6');
15065        var headlineTag = headline.prop('tagName');
15066        var text = headline.text();
15067        headline.replaceWith('<strong class="'+headlineTag.toLowerCase()+'">'+text+'</strong>');
15068
15069        // open search overlay
15070        searchTrigger.click(function()
15071        {
15072            searchOverlay.addClass('triggered');
15073            $('body').addClass('no-scroll');
15074            searchOverlay.find('input[type="search"]').focus();
15075        });
15076
15077        // close search overlay
15078        closeButton.click(function()
15079        {
15080            searchOverlay.removeClass('triggered');
15081            $('body').removeClass('no-scroll');
15082        });
15083    }
15084}
15085
15086
15087// 3. clone search form to mobile navigation
15088// - - - - - - - - - - - - - - - - - - - - - - - -
15089// it is in page layout included aktivate it to use
15090function mobileSearch()
15091{
15092    var searchForm = $('#body-bottom .mod_search');
15093    if(searchForm.length)
15094    {
15095        // set the search in mobile menu by on load
15096        if(Foundation.MediaQuery.is('medium down'))
15097        {
15098            searchForm.clone().prependTo('#navi-mobile .mod_navigation').addClass('mobile-search');
15099        }
15100
15101        $(window).off('resize.searchForm');
15102
15103        // set and remove the search in mobile menu by on resize
15104        $(window).on('resize.searchForm',function()
15105        {
15106            if(Foundation.MediaQuery.is('medium down'))
15107            {
15108                // check if search exist in mobile menu
15109                if($('#navi-mobile .mobile-search').length == 0)
15110                {
15111                    searchForm.clone().prependTo('#navi-mobile .mod_navigation').addClass('mobile-search');
15112                }
15113            }
15114            if(Foundation.MediaQuery.is('large up'))
15115            {
15116                $('#body-top .mobile-search').remove();
15117            }
15118        });
15119    }
15120}
15121
15122// 4. clone top bar navigation to mobile navigation
15123// - - - - - - - - - - - - - - - - - - - - - - - -
15124function mobileTopBarNavi()
15125{
15126    $('#cartlink').detach().appendTo('#body-top .mod_customnav ul');
15127    $('#cartlink').wrap('<li class="cart_link"></li>');
15128    
15129    var topBarNavi = $('#body-top .mod_customnav');
15130    if(topBarNavi.length)
15131    {
15132        // set the top bar manu in mobile menu by on load
15133        if(Foundation.MediaQuery.is('small down'))
15134        {
15135            topBarNavi.clone().appendTo('#navi-mobile .mod_navigation').addClass('mobile-customnav');
15136        }
15137
15138        $(window).off('resize.topBarNavi');
15139
15140        // set and remove the top bar menu in mobile menu by on resize
15141        $(window).on('resize.topBarNavi',function()
15142        {
15143            if(Foundation.MediaQuery.is('small down'))
15144            {
15145                // check if top bar exist in mobile menu
15146                if($('#navi-mobile .mobile-customnav').length == 0)
15147                {
15148                    topBarNavi.clone().appendTo('#navi-mobile .mod_navigation').addClass('mobile-customnav');
15149                }
15150            }
15151            if(Foundation.MediaQuery.is('medium up'))
15152            {
15153                $('.mobile-customnav').remove();
15154            }
15155        });
15156    }
15157}
15158
15159
15160
15161// 5. Scroll to first form error
15162// - - - - - - - - - - - - - - - - - - - - - - - -
15163function scrollToFormError()
15164{
15165    /* Scroll Form to first p.error */
15166    var elem = $("p.error");
15167    if( elem.length > 0 )
15168    {
15169        var offset = elem.offset().top
15170        var margin = ($('#header .mod_navigation').height() / 2) * 3;
15171        $('html,body').animate( { scrollTop: offset - margin }, 500 );
15172    }
15173}
15174
15175// 6. disable mousewheel on a input number field when in focus
15176// - - - - - - - - - - - - - - - - - - - - - - - -
15177// (to prevent Cromium browsers change the value when scrolling)
15178function disableMouseWheel()
15179{
15180    var form = $('form'),
15181        inputType = 'input[type=number]';
15182
15183    // Form-Helper
15184    form.on('focus', inputType, function(e)
15185    {
15186        $(this).on('mousewheel.disableScroll', function(e)
15187        {
15188            e.preventDefault()
15189        });
15190    })
15191    form.on('blur', inputType, function(e)
15192    {
15193        $(this).off('mousewheel.disableScroll')
15194    })
15195}
15196
15197// 7. search url as link
15198// - - - - - - - - - - - - - - - - - - - - - - - -
15199// the text in bottom by search results will used as clickable link
15200
15201function goToSearchUrl()
15202{
15203    var modSearch = $('.mod_search'),
15204        searchUrl = $('.url');
15205    if(modSearch.length && searchUrl.length)
15206    {
15207        searchUrl.each(function()
15208        {
15209            $(this).css('cursor','pointer').addClass('asLink');
15210            $(this).click(function()
15211            {
15212                window.location = $(this).parent().find('a').attr('href');
15213            });
15214        });
15215    }
15216}
15217
15218// 8. optimize Navigation tap for Tablets
15219// - - - - - - - - - - - - - - - - - - - - - - - -
15220function initTabletNavigation() {
15221    var $navigation = $('.main-navigation-desktop .mod_navigation');
15222    if($('body').hasClass('ios') || $('body').hasClass('android')) {
15223        $navigation.find('ul.level_1 li.submenu > a').click(function(e) {
15224            if(!$(this).hasClass('hover')) {
15225                e.preventDefault();
15226                $navigation.find('ul.level_1 li.submenu a').removeClass('hover');
15227                $(this).addClass('hover');
15228            }
15229        });
15230        $navigation.find('ul.level_1 li.submenu > strong').click(function(e) {
15231            if(!$(this).hasClass('hover')) {
15232                $navigation.find('ul.level_1 li.submenu a').removeClass('hover');
15233                $(this).addClass('hover');
15234            }
15235        });
15236    }
15237}
15238
15239// 9. slide-in panels
15240// - - - - - - - - - - - - - - - - - - - - - - - -
15241// Ein-/ausfahrbare Seiten-Panels (Inhaltselement side_panel_start/stop).
15242// Erwartete Klassen: .ce_slide_panel + .panel-from-left | .panel-from-right,
15243// .panel-button (Klick-Flaeche), .panel-container (Inhalt, bestimmt die Breite).
15244// Hinweis: Der 767px-Umbruch ist bewusst NICHT durch Foundation.MediaQuery
15245// ersetzt, damit er exakt mit dem @media (max-width:767px) im CSS uebereinstimmt.
15246
15247// Positionierung (offen/geschlossen) liegt komplett im CSS (transform: translateX).
15248// Das JS misst nichts mehr und togglet nur die Klasse "is-open" -> unabhaengig
15249// von Ladereihenfolge/Footer und von der Inhaltsbreite.
15250function initSlidePanels()
15251{
15252    // Nur echte Panels beruecksichtigen, keine Klone aus der Sticky-Navigation
15253    var $panels = $('.ce_slide_panel').filter(function() {
15254        return $(this).closest('.clone').length === 0;
15255    });
15256
15257    if(!$panels.length) return;
15258
15259    $panels.each(function() {
15260        var panel = $(this);
15261        var panelbtn = panel.find('.panel-button');
15262
15263        // Klick auf den Button oeffnet/schliesst; andere Panels schliessen
15264        panelbtn.click(function(e) {
15265            e.stopPropagation();
15266            $panels.not(panel).removeClass('is-open');
15267            panel.toggleClass('is-open');
15268        });
15269
15270        // Klick irgendwo im Body schliesst das Panel
15271        $('body').click(function(e) {
15272            if(panel.hasClass('is-open') && !$(e.target).closest(panel).length) {
15273                panel.removeClass('is-open');
15274            }
15275        });
15276    });
15277
15278    // Panels erst nach erster Nutzer-Interaktion einblenden
15279    // (Template setzt opacity:0; hier wird auf opacity:1 geschaltet)
15280    function removeInteractionListeners() {
15281        window.removeEventListener('mousemove', onFirstInteraction);
15282        window.removeEventListener('touchstart', onFirstInteraction);
15283        window.removeEventListener('keydown', onFirstInteraction);
15284        window.removeEventListener('click', onFirstInteraction);
15285    }
15286
15287    function onFirstInteraction() {
15288        removeInteractionListeners();
15289        $panels.each(function() { this.style.opacity = '1'; });
15290    }
15291
15292    window.addEventListener('mousemove', onFirstInteraction);
15293    window.addEventListener('touchstart', onFirstInteraction);
15294    window.addEventListener('keydown', onFirstInteraction);
15295    window.addEventListener('click', onFirstInteraction);
15296}
15297
15298
15299
15300
15301
15302
15303
15304// ########################################################################################################
15305// ########################################################################################################
15306// ########################################################################################################
15307// ########################################################################################################
15308
15309// 7. support or contact panel
15310// - - - - - - - - - - - - - - - - - - - - - - - -
15311// support or contact panel on the page side
15312// generate in contao article with supportpanel class
15313// generate in article a html-element <i class="button"></i>
15314// style width css
15315
15316function supportPanel(){
15317    var $supPanel = $('#supportpanel'),
15318        $supButton = $('#supportpanel .button');
15319    if($supPanel.length) {
15320        $supButton.click(function(event) {
15321            event.stopPropagation();
15322            $supPanel.toggleClass('open');
15323        });
15324        // click on body > close supportpanel
15325        $('body').click(function(){
15326            if ($supPanel.hasClass('open')) {
15327                $supPanel.stop().removeClass('open');
15328            }
15329        });
15330    }
15331}
15332
15333
15334
15335// 4. Dropdown Layer
15336// - - - - - - - - - - - - - - - - - - - - - - - -
15337// will activate by hovering navigation
15338// add to bottom <div class="dropdown_overlay"></div>
15339
15340function activateDropdownLayer() {
15341    $('body').append('<div class="dropdown_overlay"></div>');
15342    $('.main-navigation-desktop ul.level_1').hover(
15343        function() {
15344            $('body').find('.dropdown_overlay').toggleClass('active').stop();
15345        }
15346    );
15347    // $('.mod_navigation').mouseenter(function(event) {
15348    //     $('.dropdown_overlay').addClass('active');
15349    // });
15350    // $('.mod_navigation').mouseleave(function(event) {
15351    //     $('.dropdown_overlay').removeClass('active');
15352    // });
15353}
15354
15355
15356
15357
15358// 3. Highlight Bigdropdown links in ce_text
15359// - - - - - - - - - - - - - - - - - - - - - - - -
15360// Aktuelle URL aus der Browseradressleiste lesen
15361// und das "a href" innerhalb der "big_dropdown_navigation" vergleichen
15362// wenn beide identisch, dann die klasse "active" an "a" hinzufügen
15363
15364function highlightActiveLink() {
15365    $('.big_dropdown_navigation .ce_text p').each(function() {
15366        var href = $(this).find('a').attr('href');
15367        if (window.location.pathname.indexOf(href)>-1) {
15368            $(this).find('a').addClass('active');
15369        }
15370    });
15371}
15372
15373
15374
15375// 8. Parallax scrolling for banner
15376// - - - - - - - - - - - - - - - - - - - - - - - -
15377// to use add class parallax-banner to your element
15378
15379function parallaxScroll()
15380{
15381    // Content page banner
15382    var parallaxScrollBanner = $('.parallax-banner'),
15383        activateHeight = 0;
15384    if ( parallaxScrollBanner.length)
15385    {
15386        if (Foundation.MediaQuery.is('medium up') && $(this).scrollTop() > activateHeight)
15387        { //start px for show and hide
15388            parallaxScrollBanner.css(
15389            {
15390                WebkitTransform : "translate3d(0px,"+ $(this).scrollTop()/2+"px,0px)",
15391                MozTransform    : "translate3d(0px,"+ $(this).scrollTop()/2+"px,0px)",
15392                OTransform      : "translate3d(0px,"+ $(this).scrollTop()/2+"px,0px)",
15393                msTransform     : "translate3d(0px,"+ $(this).scrollTop()/2+"px,0px)",
15394                transform       : "translate3d(0px,"+ $(this).scrollTop()/2+"px,0px)"
15395            });
15396        }
15397        else
15398        {
15399            parallaxScrollBanner.css(
15400            {
15401                WebkitTransform : "translate3d(0px,0px,0px)",
15402                MozTransform    : "translate3d(0px,0px,0px)",
15403                OTransform      : "translate3d(0px,0px,0px)",
15404                msTransform     : "translate3d(0px,0px,0px)",
15405                transform       : "translate3d(0px,0px,0px)"
15406            });
15407        }
15408    }
15409}
15410
15411(function($) {
15412
15413    $(document).ready(function(){
15414
15415        $('.hoverbox').find('tbody td').removeAttr('style');
15416        
15417        if($('.events-home .mod_event_list .empty').length) {
15418            $('.events-home').addClass('hide');
15419        }
15420
15421        if($('.out-of-the-box').length) {
15422            if($('body').hasClass('career_pages')) {
15423                $('.out-of-the-box.to-bottom').closest('.ixfe_bg_wrapper').addClass('mb-20 o-visible');
15424                $('.out-of-the-box.to-top').closest('.ixfe_bg_wrapper').addClass('mt-20 o-visible');
15425                $('.out-of-the-box.to-bottom').closest('.mod_article').addClass('o-visible');
15426                $('.out-of-the-box.to-top').closest('.mod_article').addClass('o-visible');
15427            }
15428            else {
15429                if(Foundation.MediaQuery.is('medium up')) {
15430                    $('.out-of-the-box.to-bottom').closest('.ixfe_bg_wrapper').addClass('mb-10');
15431                    $('.out-of-the-box.to-top').closest('.ixfe_bg_wrapper').addClass('mt-10');
15432                }
15433            }
15434        }
15435
15436        // Buchungsformular "Jetzt Buchen" bei den Seminardetails
15437        if($('.booking-form').length) {
15438            if($('input[name="agreement"]').length) {
15439                $('input[name="agreement"]').prop('checked', true);
15440            }
15441        }
15442
15443        // Support-Slide-In
15444        if ($('#support-panel').length)
15445        {
15446            $('#support-panel-button').click(function (e)
15447            {
15448                $('#support-panel').toggleClass('open');
15449                e.stopPropagation();
15450            });
15451            $('body').click(function(e)
15452            {
15453                if($('#support-panel').hasClass('open'))
15454                {
15455                    $('#support-panel').removeClass('open');
15456                    e.stopPropagation();
15457                }
15458            });
15459        }
15460
15461        // Smooth scrolling with links
15462        $('a.button[href*=\\#]').on('click', function(event){
15463            event.preventDefault();
15464            $('html,body').animate({scrollTop:$(this.hash).offset().top}, 1000);
15465        });
15466
15467        // stop click event on a-tag by privacy policy link
15468        $('a#hs_change_cookie_button').on('click', function(event){
15469            event.preventDefault();
15470            event.stopPropagation();
15471        });
15472
15473
15474
15475
15476        // Event Manager START --------------------------
15477
15478        // shopping cart txt adjustment
15479        $('#paymentStep').html('Weiter zur Bestätigung');
15480
15481        // guestorder plaeholder fix
15482        $('.mod_event_registration_guest input[name=firstname]').attr("placeholder", "Vorname *");
15483        $('.mod_event_registration_guest input[name=lastname]').attr("placeholder", "Nachname *");
15484        $('.mod_event_registration_guest input[name=company]').attr("placeholder", "Firma *");
15485        $('.mod_event_registration_guest input[name=street]').attr("placeholder", "Straße *");
15486        $('.mod_event_registration_guest input[name=postal]').attr("placeholder", "PLZ *");
15487        $('.mod_event_registration_guest input[name=city]').attr("placeholder", "Stadt *");
15488        $('.mod_event_registration_guest input[name=phone]').attr("placeholder", "Telefon *");
15489        $('.mod_event_registration_guest input[name=guest_email]').attr("placeholder", "E-Mail *");
15490        // $(".mod_event_registration_guest label[for=ctrl_guest_email_40]").hide();
15491
15492
15493        // init activation swza
15494        $('.tab-munich').addClass("active");
15495
15496        // swza anfahrt tabs
15497        $('.tab').click(function () {
15498            $('.tab').each(function () {
15499                $(this).removeClass('active');
15500            });
15501            $(this).addClass('active');
15502
15503            var tab = $.grep(this.className.split(" "), function(v, i){
15504                return v.indexOf('tab-') === 0;
15505            }).join();
15506
15507            $('.tab-content').each(function () {
15508                $(this).removeClass('active');
15509            });
15510            $('.'+tab).addClass('active');
15511
15512            if(tab == 'tab-nuremberg') {
15513                $('.tab-munich.tab-content').css('position', 'absolute');
15514            } else {
15515                $('.tab-munich.tab-content').css('position', 'relative');
15516            }
15517        });
15518
15519        // add buchungscode placeholder
15520        $('#ctrl_buchungscode').attr('placeholder', 'Wenn Sie ein Akademie-Abo abgeschlossen haben, geben Sie bitte hier Ihren Buchungscode ein.');
15521
15522        // heading auf Seminar-Detailseite anpassen
15523        var abo = $('.mod_event_reader > div.event').hasClass('abo');
15524        if(abo) {
15525        	$('.mod_event_related h2').html('Buchung');
15526        }
15527        
15528        // Event-Manager END --------------------------
15529
15530    });
15531
15532    $(window).on('load',function() {
15533        
15534        triggerMenu('.ce_body_top .main-navigation');
15535        triggerMenu('.ce_body_top.clone .main-navigation');
15536
15537        // scroll to newsletter form
15538        var getParam = getUrlParameter('goto');
15539        if(getParam == 'newsletter-form') {
15540            $('html,body').animate({scrollTop:$('#newsletter-form').offset().top - 200+'px'}, 1000);
15541        }
15542
15543        // scroll to newsletter form
15544        $('#scrollToNewsletter a[href*=\\#]').on('click', function(event){
15545            event.preventDefault();
15546            $('html,body').animate({scrollTop:$(this.hash).offset().top - 200+'px'}, 1000);
15547        });
15548
15549        // university_calendar scroll event START ---------
15550        var elem = $('.mod_event_calendar');
15551        var getParamCalendar = getUrlParameter('month');
15552        if(getParamCalendar) {
15553            if( elem.length > 0 )
15554            {
15555                var offset = elem.offset().top
15556                var margin = ($('.ce_body_top.clone').height() + 50);
15557                $('html,body').animate( { scrollTop: offset - margin }, 500 );
15558            }
15559        }
15560        // university_calendar scroll event END ---------
15561
15562
15563        if($('body.university').length) {
15564            var table = $('table').hasClass('calendar');
15565            
15566            $('table, table td').removeAttr('style width');
15567            $('table').wrap('<div class="responsive-table"></div>');
15568            if(table) {
15569                $('.responsive-table').addClass('calendar');
15570            }
15571        }
15572
15573        // Teilnehmer Headline und Anzahl bei Buchungsprozess
15574        if($('.participant').length || $('.mod_event_checkout').hasClass('step_start')) {
15575            var i = 1;
15576                $('.participant_wrapper').each(function() {
15577                    var p_length = $(this).find('.participant').length + 1;
15578                    if(i < p_length) {
15579                        $(this).find('.participant').each(function() {
15580                            $(this).prepend('<div class="participant_trigger"><h5 class="label">Teilnehmer '+i+'</h5><p class="font-size-s">Bitte hier die Daten von den Teilnehmer eintragen.</p></div>');
15581                            i++;
15582                        });
15583                        if(i == p_length) { i = 1};
15584                    }
15585                });
15586                $('.participant').each(function() {
15587                    $(this).on('click',function() {
15588                        $(this).addClass('active');
15589                    });
15590                });
15591            
15592        }
15593    });
15594
15595    $(window).on('resize',function(){
15596        // add code here
15597    });
15598
15599    $(window).on('scroll',function(){
15600        // add code here
15601    });
15602
15603    // function get URL parameter
15604    var getUrlParameter = function getUrlParameter(sParam) {
15605    var sPageURL = window.location.search.substring(1),
15606        sURLVariables = sPageURL.split('&'),
15607        sParameterName,
15608        i;
15609
15610        for (i = 0; i < sURLVariables.length; i++) {
15611            sParameterName = sURLVariables[i].split('=');
15612
15613            if (sParameterName[0] === sParam) {
15614                return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
15615            }
15616        }
15617    };
15618    
15619    function triggerMenu(el) {
15620        $(el).find('.menu.vertical').unbind().click(function() {
15621            $(this).parent().find('.menu_overlay').toggleClass('open');
15622            $('body').toggleClass('no-scroll');
15623        });
15624        $(el).find('.menu_close').unbind().click(function() {
15625            $(this).closest('.menu_overlay').removeClass('open');
15626            $('body').toggleClass('no-scroll');
15627        });
15628    }
15629
15630})(jQuery);
15631
15632function megamenu26_init(flagSticky=false) {
15633    var header = '.body-top-header.original-header';
15634    if(flagSticky==true) header = '.ce_body_top.clone';
15635
15636    // alle Megamenüs (Produkte25, Lösungen25, ...) - nicht nur das erste
15637    const megamenu26_parentLis = document.querySelectorAll(header + ' .main-navigation-desktop .mod_navigation ul.level_1 li.menu-2025.menu-1and2');
15638    if (!megamenu26_parentLis.length) return;
15639
15640    megamenu26_parentLis.forEach((megamenu26_parentLi) => megamenu26_initMenu(megamenu26_parentLi));
15641}
15642
15643function megamenu26_initMenu(megamenu26_parentLi) {
15644    const megamenu26_level2 = megamenu26_parentLi.querySelector('ul.level_2');
15645    const megamenu26_triggers = megamenu26_parentLi.querySelectorAll('.megamenu-link-spaces p');
15646    const megamenu26_panels = megamenu26_parentLi.querySelectorAll('.submenu-product');
15647    const megamenu26_hintText = "Mit Enter zu den Details springen";
15648
15649    function megamenu26_isMenuOpen() {
15650        if (!megamenu26_level2) return false;
15651        return window.getComputedStyle(megamenu26_level2).display === 'block';
15652    }
15653
15654    // Trigger den Panels zuordnen. Links mit Klasse "no-submenu" sind Direktlinks
15655    // (kein Panel) und werden beim Durchzaehlen der Panels uebersprungen.
15656    const megamenu26_items = [];
15657    let megamenu26_panelCount = 0;
15658    megamenu26_triggers.forEach((megamenu26_wrapper) => {
15659        const megamenu26_link = megamenu26_wrapper.querySelector('a');
15660        if (!megamenu26_link) return;
15661
15662        const megamenu26_isDirect = megamenu26_wrapper.classList.contains('no-submenu')
15663            || megamenu26_link.classList.contains('no-submenu');
15664
15665        megamenu26_items.push({
15666            wrapper: megamenu26_wrapper,
15667            link: megamenu26_link,
15668            panel: megamenu26_isDirect ? null : (megamenu26_panels[megamenu26_panelCount++] || null)
15669        });
15670    });
15671
15672    function megamenu26_activatePanel(megamenu26_activeItem) {
15673        megamenu26_items.forEach((megamenu26_item) => {
15674            const megamenu26_on = megamenu26_item === megamenu26_activeItem && !!megamenu26_item.panel;
15675            if (megamenu26_item.panel) {
15676                megamenu26_item.panel.style.display = megamenu26_on ? 'block' : 'none';
15677            }
15678            megamenu26_item.wrapper.classList.toggle('is-active', megamenu26_on);
15679        });
15680    }
15681
15682    megamenu26_items.forEach((megamenu26_item) => {
15683        const megamenu26_wrapper = megamenu26_item.wrapper;
15684        const megamenu26_link = megamenu26_item.link;
15685        const megamenu26_hasSubmenu = !!megamenu26_item.panel; // !! boolean
15686
15687        if (megamenu26_hasSubmenu) {
15688            const megamenu26_originalText = megamenu26_link.textContent.trim();
15689            const megamenu26_hint = document.createElement('span');
15690            megamenu26_hint.className = 'megamenu26-keyboard-hint';
15691            megamenu26_hint.innerText = megamenu26_hintText;
15692            megamenu26_hint.setAttribute('aria-hidden', 'true');
15693            megamenu26_link.appendChild(megamenu26_hint);
15694            megamenu26_link.setAttribute('aria-label', megamenu26_originalText + ". " + megamenu26_hintText);
15695
15696            megamenu26_link.addEventListener('keydown', (megamenu26_e) => {
15697                if (megamenu26_e.key === 'Enter' && megamenu26_isMenuOpen()) {
15698                    const megamenu26_firstInPanel = megamenu26_item.panel.querySelector('a');
15699                    if (megamenu26_firstInPanel) {
15700                        megamenu26_e.preventDefault();
15701                        megamenu26_firstInPanel.focus();
15702                    }
15703                }
15704            });
15705        }
15706
15707        megamenu26_link.addEventListener('focus', () => {
15708            if (megamenu26_isMenuOpen()) {
15709                megamenu26_activatePanel(megamenu26_item); // Direktlink -> panel null -> alles zu
15710            }
15711        });
15712
15713        megamenu26_wrapper.addEventListener('mouseenter', () => {
15714            megamenu26_activatePanel(megamenu26_item);
15715        });
15716    });
15717
15718    window.addEventListener('keydown', (megamenu26_e) => {
15719        if ((megamenu26_e.altKey || megamenu26_e.key === 'Alt') && megamenu26_isMenuOpen()) {
15720            const megamenu26_firstItem = megamenu26_items[0];
15721            if (megamenu26_firstItem) {
15722                megamenu26_firstItem.link.focus();
15723                megamenu26_activatePanel(megamenu26_firstItem);
15724            }
15725        }
15726    });
15727}
15728
15729// a.is-active
15730function activeMegamenuLinks() {
15731    var menuContainers = document.querySelectorAll('.menu-2025 .menu-container');
15732    if (menuContainers.length > 0) {
15733        var currentUrl = window.location.origin + window.location.pathname;
15734        currentUrl = currentUrl.replace(/\/$/, ""); // slash at end
15735        menuContainers.forEach(function(container) {
15736            var links = container.querySelectorAll('a');
15737            links.forEach(function(link) {
15738                try {
15739                    var linkUrl = link.origin + link.pathname;
15740                    linkUrl = linkUrl.replace(/\/$/, "");
15741
15742                    if (linkUrl === currentUrl) {
15743                        link.classList.add('is-active');
15744                        var parentLi = link.closest('li'); // li
15745                        if (parentLi) {
15746                            parentLi.classList.add('active');
15747                        }
15748                    }
15749                } catch (e) {}
15750            });
15751        });
15752    }
15753}
15754
15755
15756

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.