diff --git a/.babelrc b/.babelrc index 4e702f6..233e545 100644 --- a/.babelrc +++ b/.babelrc @@ -4,7 +4,7 @@ "react" ], "plugins": [ - ["import", { "libraryName": "antd" }], + ["import", { "libraryName": "antd", "style": true }], "transform-object-rest-spread", "transform-class-properties", "transform-decorators", diff --git a/README.md b/README.md index c99da70..aaaa0d1 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ A little single-page javascript app to generate simple geometries and mandalas https://davidhatten.github.io/geometric-drawer/ -Current version: 1.4.1 +Current version: 1.5.0 ## Types of Shapes * Flower of Life diff --git a/assets/img/prism_petals_80x80.png b/assets/img/prism_petals_80x80.png new file mode 100644 index 0000000..d5351bf Binary files /dev/null and b/assets/img/prism_petals_80x80.png differ diff --git a/assets/javascripts/bundle.js b/assets/javascripts/bundle.js index 668094a..c4ca308 100644 --- a/assets/javascripts/bundle.js +++ b/assets/javascripts/bundle.js @@ -1,2 +1,67 @@ -!function(n){var e={};function t(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return n[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}t.m=n,t.c=e,t.d=function(n,e,a){t.o(n,e)||Object.defineProperty(n,e,{configurable:!1,enumerable:!0,get:a})},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=287)}([function(n,e,t){(function(n){var e;e=function(){"use strict";var e;function a(){return e.apply(null,arguments)}function r(n){return n instanceof Array||"[object Array]"===Object.prototype.toString.call(n)}function o(n){return null!=n&&"[object Object]"===Object.prototype.toString.call(n)}function i(n){return void 0===n}function l(n){return"number"==typeof n||"[object Number]"===Object.prototype.toString.call(n)}function s(n){return n instanceof Date||"[object Date]"===Object.prototype.toString.call(n)}function d(n,e){var t,a=[];for(t=0;t>>0,a=0;a0)for(t=0;t=0?t?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+a}var U=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,V=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,G={},B={};function X(n,e,t,a){var r=a;"string"==typeof a&&(r=function(){return this[a]()}),n&&(B[n]=r),e&&(B[e[0]]=function(){return W(r.apply(this,arguments),e[1],e[2])}),t&&(B[t]=function(){return this.localeData().ordinal(r.apply(this,arguments),n)})}function q(n,e){return n.isValid()?(e=K(e,n.localeData()),G[e]=G[e]||function(n){var e,t,a,r=n.match(U);for(e=0,t=r.length;e=0&&V.test(n);)n=n.replace(V,a),V.lastIndex=0,t-=1;return n}var J=/\d/,$=/\d\d/,Z=/\d{3}/,Q=/\d{4}/,nn=/[+-]?\d{6}/,en=/\d\d?/,tn=/\d\d\d\d?/,an=/\d\d\d\d\d\d?/,rn=/\d{1,3}/,on=/\d{1,4}/,ln=/[+-]?\d{1,6}/,sn=/\d+/,dn=/[+-]?\d+/,cn=/Z|[+-]\d\d:?\d\d/gi,un=/Z|[+-]\d\d(?::?\d\d)?/gi,pn=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,fn={};function mn(n,e,t){fn[n]=S(e)?e:function(n,a){return n&&t?t:e}}function hn(n,e){return c(fn,n)?fn[n](e._strict,e._locale):new RegExp(bn(n.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(n,e,t,a,r){return e||t||a||r})))}function bn(n){return n.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var gn={};function yn(n,e){var t,a=e;for("string"==typeof n&&(n=[n]),l(e)&&(a=function(n,t){t[e]=x(n)}),t=0;t68?1900:2e3)};var Wn=H("FullYear",!0);function Un(n){var e=new Date(Date.UTC.apply(null,arguments));return n<100&&n>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(n),e}function Vn(n,e,t){var a=7+e-t;return-((7+Un(n,0,a).getUTCDay()-e)%7)+a-1}function Gn(n,e,t,a,r){var o,i,l=1+7*(e-1)+(7+t-a)%7+Vn(n,a,r);return l<=0?i=zn(o=n-1)+l:l>zn(n)?(o=n+1,i=l-zn(n)):(o=n,i=l),{year:o,dayOfYear:i}}function Bn(n,e,t){var a,r,o=Vn(n.year(),e,t),i=Math.floor((n.dayOfYear()-o-1)/7)+1;return i<1?a=i+Xn(r=n.year()-1,e,t):i>Xn(n.year(),e,t)?(a=i-Xn(n.year(),e,t),r=n.year()+1):(r=n.year(),a=i),{week:a,year:r}}function Xn(n,e,t){var a=Vn(n,e,t),r=Vn(n+1,e,t);return(zn(n)-a+r)/7}X("w",["ww",2],"wo","week"),X("W",["WW",2],"Wo","isoWeek"),j("week","w"),j("isoWeek","W"),I("week",5),I("isoWeek",5),mn("w",en),mn("ww",en,$),mn("W",en),mn("WW",en,$),_n(["w","ww","W","WW"],function(n,e,t,a){e[a.substr(0,1)]=x(n)});X("d",0,"do","day"),X("dd",0,0,function(n){return this.localeData().weekdaysMin(this,n)}),X("ddd",0,0,function(n){return this.localeData().weekdaysShort(this,n)}),X("dddd",0,0,function(n){return this.localeData().weekdays(this,n)}),X("e",0,0,"weekday"),X("E",0,0,"isoWeekday"),j("day","d"),j("weekday","e"),j("isoWeekday","E"),I("day",11),I("weekday",11),I("isoWeekday",11),mn("d",en),mn("e",en),mn("E",en),mn("dd",function(n,e){return e.weekdaysMinRegex(n)}),mn("ddd",function(n,e){return e.weekdaysShortRegex(n)}),mn("dddd",function(n,e){return e.weekdaysRegex(n)}),_n(["dd","ddd","dddd"],function(n,e,t,a){var r=t._locale.weekdaysParse(n,a,t._strict);null!=r?e.d=r:f(t).invalidWeekday=n}),_n(["d","e","E"],function(n,e,t,a){e[a]=x(n)});var qn="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Kn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var Jn="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var $n=pn;var Zn=pn;var Qn=pn;function ne(){function n(n,e){return e.length-n.length}var e,t,a,r,o,i=[],l=[],s=[],d=[];for(e=0;e<7;e++)t=p([2e3,1]).day(e),a=this.weekdaysMin(t,""),r=this.weekdaysShort(t,""),o=this.weekdays(t,""),i.push(a),l.push(r),s.push(o),d.push(a),d.push(r),d.push(o);for(i.sort(n),l.sort(n),s.sort(n),d.sort(n),e=0;e<7;e++)l[e]=bn(l[e]),s[e]=bn(s[e]),d[e]=bn(d[e]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function ee(){return this.hours()%12||12}function te(n,e){X(n,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function ae(n,e){return e._meridiemParse}X("H",["HH",2],0,"hour"),X("h",["hh",2],0,ee),X("k",["kk",2],0,function(){return this.hours()||24}),X("hmm",0,0,function(){return""+ee.apply(this)+W(this.minutes(),2)}),X("hmmss",0,0,function(){return""+ee.apply(this)+W(this.minutes(),2)+W(this.seconds(),2)}),X("Hmm",0,0,function(){return""+this.hours()+W(this.minutes(),2)}),X("Hmmss",0,0,function(){return""+this.hours()+W(this.minutes(),2)+W(this.seconds(),2)}),te("a",!0),te("A",!1),j("hour","h"),I("hour",13),mn("a",ae),mn("A",ae),mn("H",en),mn("h",en),mn("k",en),mn("HH",en,$),mn("hh",en,$),mn("kk",en,$),mn("hmm",tn),mn("hmmss",an),mn("Hmm",tn),mn("Hmmss",an),yn(["H","HH"],Mn),yn(["k","kk"],function(n,e,t){var a=x(n);e[Mn]=24===a?0:a}),yn(["a","A"],function(n,e,t){t._isPm=t._locale.isPM(n),t._meridiem=n}),yn(["h","hh"],function(n,e,t){e[Mn]=x(n),f(t).bigHour=!0}),yn("hmm",function(n,e,t){var a=n.length-2;e[Mn]=x(n.substr(0,a)),e[En]=x(n.substr(a)),f(t).bigHour=!0}),yn("hmmss",function(n,e,t){var a=n.length-4,r=n.length-2;e[Mn]=x(n.substr(0,a)),e[En]=x(n.substr(a,2)),e[Ln]=x(n.substr(r)),f(t).bigHour=!0}),yn("Hmm",function(n,e,t){var a=n.length-2;e[Mn]=x(n.substr(0,a)),e[En]=x(n.substr(a))}),yn("Hmmss",function(n,e,t){var a=n.length-4,r=n.length-2;e[Mn]=x(n.substr(0,a)),e[En]=x(n.substr(a,2)),e[Ln]=x(n.substr(r))});var re,oe=H("Hours",!0),ie={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Cn,monthsShort:jn,week:{dow:0,doy:6},weekdays:qn,weekdaysMin:Jn,weekdaysShort:Kn,meridiemParse:/[ap]\.?m?\.?/i},le={},se={};function de(n){return n?n.toLowerCase().replace("_","-"):n}function ce(e){var a=null;if(!le[e]&&void 0!==n&&n&&n.exports)try{a=re._abbr,t(612)("./"+e),ue(a)}catch(n){}return le[e]}function ue(n,e){var t;return n&&(t=i(e)?fe(n):pe(n,e))&&(re=t),re._abbr}function pe(n,e){if(null!==e){var t=ie;if(e.abbr=n,null!=le[n])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),t=le[n]._config;else if(null!=e.parentLocale){if(null==le[e.parentLocale])return se[e.parentLocale]||(se[e.parentLocale]=[]),se[e.parentLocale].push({name:n,config:e}),null;t=le[e.parentLocale]._config}return le[n]=new P(D(t,e)),se[n]&&se[n].forEach(function(n){pe(n.name,n.config)}),ue(n),le[n]}return delete le[n],null}function fe(n){var e;if(n&&n._locale&&n._locale._abbr&&(n=n._locale._abbr),!n)return re;if(!r(n)){if(e=ce(n))return e;n=[n]}return function(n){for(var e,t,a,r,o=0;o0;){if(a=ce(r.slice(0,e).join("-")))return a;if(t&&t.length>=e&&M(r,t,!0)>=e-1)break;e--}o++}return null}(n)}function me(n){var e,t=n._a;return t&&-2===f(n).overflow&&(e=t[kn]<0||t[kn]>11?kn:t[xn]<1||t[xn]>Pn(t[wn],t[kn])?xn:t[Mn]<0||t[Mn]>24||24===t[Mn]&&(0!==t[En]||0!==t[Ln]||0!==t[Tn])?Mn:t[En]<0||t[En]>59?En:t[Ln]<0||t[Ln]>59?Ln:t[Tn]<0||t[Tn]>999?Tn:-1,f(n)._overflowDayOfYear&&(exn)&&(e=xn),f(n)._overflowWeeks&&-1===e&&(e=On),f(n)._overflowWeekday&&-1===e&&(e=Sn),f(n).overflow=e),n}var he=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,be=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ge=/Z|[+-]\d\d(?::?\d\d)?/,ye=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],_e=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ve=/^\/?Date\((\-?\d+)/i;function we(n){var e,t,a,r,o,i,l=n._i,s=he.exec(l)||be.exec(l);if(s){for(f(n).iso=!0,e=0,t=ye.length;e10?"YYYY ":"YY "),o="HH:mm"+(t[4]?":ss":""),t[1]){var c=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][new Date(t[2]).getDay()];if(t[1].substr(0,3)!==c)return f(n).weekdayMismatch=!0,void(n._isValid=!1)}switch(t[5].length){case 2:l=0===s?" +0000":((s="YXWVUTSRQPONZABCDEFGHIKLM".indexOf(t[5][1].toUpperCase())-12)<0?" -":" +")+(""+s).replace(/^-?/,"0").match(/..$/)[0]+"00";break;case 4:l=d[t[5]];break;default:l=d[" GMT"]}t[5]=l,n._i=t.splice(1).join(""),i=" ZZ",n._f=a+r+o+i,Le(n),f(n).rfc2822=!0}else n._isValid=!1}function Me(n,e,t){return null!=n?n:null!=e?e:t}function Ee(n){var e,t,r,o,i=[];if(!n._d){for(r=function(n){var e=new Date(a.now());return n._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(n),n._w&&null==n._a[xn]&&null==n._a[kn]&&function(n){var e,t,a,r,o,i,l,s;if(null!=(e=n._w).GG||null!=e.W||null!=e.E)o=1,i=4,t=Me(e.GG,n._a[wn],Bn(Se(),1,4).year),a=Me(e.W,1),((r=Me(e.E,1))<1||r>7)&&(s=!0);else{o=n._locale._week.dow,i=n._locale._week.doy;var d=Bn(Se(),o,i);t=Me(e.gg,n._a[wn],d.year),a=Me(e.w,d.week),null!=e.d?((r=e.d)<0||r>6)&&(s=!0):null!=e.e?(r=e.e+o,(e.e<0||e.e>6)&&(s=!0)):r=o}a<1||a>Xn(t,o,i)?f(n)._overflowWeeks=!0:null!=s?f(n)._overflowWeekday=!0:(l=Gn(t,a,r,o,i),n._a[wn]=l.year,n._dayOfYear=l.dayOfYear)}(n),null!=n._dayOfYear&&(o=Me(n._a[wn],r[wn]),(n._dayOfYear>zn(o)||0===n._dayOfYear)&&(f(n)._overflowDayOfYear=!0),t=Un(o,0,n._dayOfYear),n._a[kn]=t.getUTCMonth(),n._a[xn]=t.getUTCDate()),e=0;e<3&&null==n._a[e];++e)n._a[e]=i[e]=r[e];for(;e<7;e++)n._a[e]=i[e]=null==n._a[e]?2===e?1:0:n._a[e];24===n._a[Mn]&&0===n._a[En]&&0===n._a[Ln]&&0===n._a[Tn]&&(n._nextDay=!0,n._a[Mn]=0),n._d=(n._useUTC?Un:function(n,e,t,a,r,o,i){var l=new Date(n,e,t,a,r,o,i);return n<100&&n>=0&&isFinite(l.getFullYear())&&l.setFullYear(n),l}).apply(null,i),null!=n._tzm&&n._d.setUTCMinutes(n._d.getUTCMinutes()-n._tzm),n._nextDay&&(n._a[Mn]=24)}}function Le(n){if(n._f!==a.ISO_8601)if(n._f!==a.RFC_2822){n._a=[],f(n).empty=!0;var e,t,r,o,i,l=""+n._i,s=l.length,d=0;for(r=K(n._f,n._locale).match(U)||[],e=0;e0&&f(n).unusedInput.push(i),l=l.slice(l.indexOf(t)+t.length),d+=t.length),B[o]?(t?f(n).empty=!1:f(n).unusedTokens.push(o),vn(o,t,n)):n._strict&&!t&&f(n).unusedTokens.push(o);f(n).charsLeftOver=s-d,l.length>0&&f(n).unusedInput.push(l),n._a[Mn]<=12&&!0===f(n).bigHour&&n._a[Mn]>0&&(f(n).bigHour=void 0),f(n).parsedDateParts=n._a.slice(0),f(n).meridiem=n._meridiem,n._a[Mn]=function(n,e,t){var a;if(null==t)return e;return null!=n.meridiemHour?n.meridiemHour(e,t):null!=n.isPM?((a=n.isPM(t))&&e<12&&(e+=12),a||12!==e||(e=0),e):e}(n._locale,n._a[Mn],n._meridiem),Ee(n),me(n)}else xe(n);else we(n)}function Te(n){var e=n._i,t=n._f;return n._locale=n._locale||fe(n._l),null===e||void 0===t&&""===e?b({nullInput:!0}):("string"==typeof e&&(n._i=e=n._locale.preparse(e)),w(e)?new v(me(e)):(s(e)?n._d=e:r(t)?function(n){var e,t,a,r,o;if(0===n._f.length)return f(n).invalidFormat=!0,void(n._d=new Date(NaN));for(r=0;rthis?this:n:b()});function Ye(n,e){var t,a;if(1===e.length&&r(e[0])&&(e=e[0]),!e.length)return Se();for(t=e[0],a=1;a(o=Xn(n,a,r))&&(e=o),function(n,e,t,a,r){var o=Gn(n,e,t,a,r),i=Un(o.year,0,o.dayOfYear);return this.year(i.getUTCFullYear()),this.month(i.getUTCMonth()),this.date(i.getUTCDate()),this}.call(this,n,e,t,a,r))}X(0,["gg",2],0,function(){return this.weekYear()%100}),X(0,["GG",2],0,function(){return this.isoWeekYear()%100}),et("gggg","weekYear"),et("ggggg","weekYear"),et("GGGG","isoWeekYear"),et("GGGGG","isoWeekYear"),j("weekYear","gg"),j("isoWeekYear","GG"),I("weekYear",1),I("isoWeekYear",1),mn("G",dn),mn("g",dn),mn("GG",en,$),mn("gg",en,$),mn("GGGG",on,Q),mn("gggg",on,Q),mn("GGGGG",ln,nn),mn("ggggg",ln,nn),_n(["gggg","ggggg","GGGG","GGGGG"],function(n,e,t,a){e[a.substr(0,2)]=x(n)}),_n(["gg","GG"],function(n,e,t,r){e[r]=a.parseTwoDigitYear(n)}),X("Q",0,"Qo","quarter"),j("quarter","Q"),I("quarter",7),mn("Q",J),yn("Q",function(n,e){e[kn]=3*(x(n)-1)}),X("D",["DD",2],"Do","date"),j("date","D"),I("date",9),mn("D",en),mn("DD",en,$),mn("Do",function(n,e){return n?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),yn(["D","DD"],xn),yn("Do",function(n,e){e[xn]=x(n.match(en)[0])});var at=H("Date",!0);X("DDD",["DDDD",3],"DDDo","dayOfYear"),j("dayOfYear","DDD"),I("dayOfYear",4),mn("DDD",rn),mn("DDDD",Z),yn(["DDD","DDDD"],function(n,e,t){t._dayOfYear=x(n)}),X("m",["mm",2],0,"minute"),j("minute","m"),I("minute",14),mn("m",en),mn("mm",en,$),yn(["m","mm"],En);var rt=H("Minutes",!1);X("s",["ss",2],0,"second"),j("second","s"),I("second",15),mn("s",en),mn("ss",en,$),yn(["s","ss"],Ln);var ot,it=H("Seconds",!1);for(X("S",0,0,function(){return~~(this.millisecond()/100)}),X(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),X(0,["SSS",3],0,"millisecond"),X(0,["SSSS",4],0,function(){return 10*this.millisecond()}),X(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),X(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),X(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),X(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),X(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),j("millisecond","ms"),I("millisecond",16),mn("S",rn,J),mn("SS",rn,$),mn("SSS",rn,Z),ot="SSSS";ot.length<=9;ot+="S")mn(ot,sn);function lt(n,e){e[Tn]=x(1e3*("0."+n))}for(ot="S";ot.length<=9;ot+="S")yn(ot,lt);var st=H("Milliseconds",!1);X("z",0,0,"zoneAbbr"),X("zz",0,0,"zoneName");var dt=v.prototype;function ct(n){return n}dt.add=Je,dt.calendar=function(n,e){var t=n||Se(),r=ze(t,this).startOf("day"),o=a.calendarFormat(this,r)||"sameElse",i=e&&(S(e[o])?e[o].call(this,t):e[o]);return this.format(i||this.localeData().calendar(o,this,Se(t)))},dt.clone=function(){return new v(this)},dt.diff=function(n,e,t){var a,r,o,i;return this.isValid()&&(a=ze(n,this)).isValid()?(r=6e4*(a.utcOffset()-this.utcOffset()),"year"===(e=N(e))||"month"===e||"quarter"===e?(l=this,s=a,u=12*(s.year()-l.year())+(s.month()-l.month()),p=l.clone().add(u,"months"),s-p<0?(d=l.clone().add(u-1,"months"),c=(s-p)/(p-d)):(d=l.clone().add(u+1,"months"),c=(s-p)/(d-p)),i=-(u+c)||0,"quarter"===e?i/=3:"year"===e&&(i/=12)):(o=this-a,i="second"===e?o/1e3:"minute"===e?o/6e4:"hour"===e?o/36e5:"day"===e?(o-r)/864e5:"week"===e?(o-r)/6048e5:o),t?i:k(i)):NaN;var l,s,d,c,u,p},dt.endOf=function(n){return void 0===(n=N(n))||"millisecond"===n?this:("date"===n&&(n="day"),this.startOf(n).add(1,"isoWeek"===n?"week":n).subtract(1,"ms"))},dt.format=function(n){n||(n=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var e=q(this,n);return this.localeData().postformat(e)},dt.from=function(n,e){return this.isValid()&&(w(n)&&n.isValid()||Se(n).isValid())?Ge({to:this,from:n}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},dt.fromNow=function(n){return this.from(Se(),n)},dt.to=function(n,e){return this.isValid()&&(w(n)&&n.isValid()||Se(n).isValid())?Ge({from:this,to:n}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},dt.toNow=function(n){return this.to(Se(),n)},dt.get=function(n){return S(this[n=N(n)])?this[n]():this},dt.invalidAt=function(){return f(this).overflow},dt.isAfter=function(n,e){var t=w(n)?n:Se(n);return!(!this.isValid()||!t.isValid())&&("millisecond"===(e=N(i(e)?"millisecond":e))?this.valueOf()>t.valueOf():t.valueOf()9999?q(n,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):S(Date.prototype.toISOString)?this.toDate().toISOString():q(n,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},dt.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var n="moment",e="";this.isLocal()||(n=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var t="["+n+'("]',a=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",r=e+'[")]';return this.format(t+a+"-MM-DD[T]HH:mm:ss.SSS"+r)},dt.toJSON=function(){return this.isValid()?this.toISOString():null},dt.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},dt.unix=function(){return Math.floor(this.valueOf()/1e3)},dt.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},dt.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},dt.year=Wn,dt.isLeapYear=function(){return Fn(this.year())},dt.weekYear=function(n){return tt.call(this,n,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},dt.isoWeekYear=function(n){return tt.call(this,n,this.isoWeek(),this.isoWeekday(),1,4)},dt.quarter=dt.quarters=function(n){return null==n?Math.ceil((this.month()+1)/3):this.month(3*(n-1)+this.month()%3)},dt.month=Rn,dt.daysInMonth=function(){return Pn(this.year(),this.month())},dt.week=dt.weeks=function(n){var e=this.localeData().week(this);return null==n?e:this.add(7*(n-e),"d")},dt.isoWeek=dt.isoWeeks=function(n){var e=Bn(this,1,4).week;return null==n?e:this.add(7*(n-e),"d")},dt.weeksInYear=function(){var n=this.localeData()._week;return Xn(this.year(),n.dow,n.doy)},dt.isoWeeksInYear=function(){return Xn(this.year(),1,4)},dt.date=at,dt.day=dt.days=function(n){if(!this.isValid())return null!=n?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=n?(n=function(n,e){return"string"!=typeof n?n:isNaN(n)?"number"==typeof(n=e.weekdaysParse(n))?n:null:parseInt(n,10)}(n,this.localeData()),this.add(n-e,"d")):e},dt.weekday=function(n){if(!this.isValid())return null!=n?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==n?e:this.add(n-e,"d")},dt.isoWeekday=function(n){if(!this.isValid())return null!=n?this:NaN;if(null!=n){var e=function(n,e){return"string"==typeof n?e.weekdaysParse(n)%7||7:isNaN(n)?null:n}(n,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},dt.dayOfYear=function(n){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==n?e:this.add(n-e,"d")},dt.hour=dt.hours=oe,dt.minute=dt.minutes=rt,dt.second=dt.seconds=it,dt.millisecond=dt.milliseconds=st,dt.utcOffset=function(n,e,t){var r,o=this._offset||0;if(!this.isValid())return null!=n?this:NaN;if(null!=n){if("string"==typeof n){if(null===(n=He(un,n)))return this}else Math.abs(n)<16&&!t&&(n*=60);return!this._isUTC&&e&&(r=Fe(this)),this._offset=n,this._isUTC=!0,null!=r&&this.add(r,"m"),o!==n&&(!e||this._changeInProgress?Ke(this,Ge(n-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?o:Fe(this)},dt.utc=function(n){return this.utcOffset(0,n)},dt.local=function(n){return this._isUTC&&(this.utcOffset(0,n),this._isUTC=!1,n&&this.subtract(Fe(this),"m")),this},dt.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var n=He(cn,this._i);null!=n?this.utcOffset(n):this.utcOffset(0,!0)}return this},dt.hasAlignedHourOffset=function(n){return!!this.isValid()&&(n=n?Se(n).utcOffset():0,(this.utcOffset()-n)%60==0)},dt.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},dt.isLocal=function(){return!!this.isValid()&&!this._isUTC},dt.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},dt.isUtc=We,dt.isUTC=We,dt.zoneAbbr=function(){return this._isUTC?"UTC":""},dt.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},dt.dates=L("dates accessor is deprecated. Use date instead.",at),dt.months=L("months accessor is deprecated. Use month instead",Rn),dt.years=L("years accessor is deprecated. Use year instead",Wn),dt.zone=L("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(n,e){return null!=n?("string"!=typeof n&&(n=-n),this.utcOffset(n,e),this):-this.utcOffset()}),dt.isDSTShifted=L("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!i(this._isDSTShifted))return this._isDSTShifted;var n={};if(y(n,this),(n=Te(n))._a){var e=n._isUTC?p(n._a):Se(n._a);this._isDSTShifted=this.isValid()&&M(n._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var ut=P.prototype;function pt(n,e,t,a){var r=fe(),o=p().set(a,e);return r[t](o,n)}function ft(n,e,t){if(l(n)&&(e=n,n=void 0),n=n||"",null!=e)return pt(n,e,t,"month");var a,r=[];for(a=0;a<12;a++)r[a]=pt(n,a,t,"month");return r}function mt(n,e,t,a){"boolean"==typeof n?(l(e)&&(t=e,e=void 0),e=e||""):(t=e=n,n=!1,l(e)&&(t=e,e=void 0),e=e||"");var r,o=fe(),i=n?o._week.dow:0;if(null!=t)return pt(e,(t+i)%7,a,"day");var s=[];for(r=0;r<7;r++)s[r]=pt(e,(r+i)%7,a,"day");return s}ut.calendar=function(n,e,t){var a=this._calendar[n]||this._calendar.sameElse;return S(a)?a.call(e,t):a},ut.longDateFormat=function(n){var e=this._longDateFormat[n],t=this._longDateFormat[n.toUpperCase()];return e||!t?e:(this._longDateFormat[n]=t.replace(/MMMM|MM|DD|dddd/g,function(n){return n.slice(1)}),this._longDateFormat[n])},ut.invalidDate=function(){return this._invalidDate},ut.ordinal=function(n){return this._ordinal.replace("%d",n)},ut.preparse=ct,ut.postformat=ct,ut.relativeTime=function(n,e,t,a){var r=this._relativeTime[t];return S(r)?r(n,e,t,a):r.replace(/%d/i,n)},ut.pastFuture=function(n,e){var t=this._relativeTime[n>0?"future":"past"];return S(t)?t(e):t.replace(/%s/i,e)},ut.set=function(n){var e,t;for(t in n)S(e=n[t])?this[t]=e:this["_"+t]=e;this._config=n,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},ut.months=function(n,e){return n?r(this._months)?this._months[n.month()]:this._months[(this._months.isFormat||Yn).test(e)?"format":"standalone"][n.month()]:r(this._months)?this._months:this._months.standalone},ut.monthsShort=function(n,e){return n?r(this._monthsShort)?this._monthsShort[n.month()]:this._monthsShort[Yn.test(e)?"format":"standalone"][n.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},ut.monthsParse=function(n,e,t){var a,r,o;if(this._monthsParseExact)return function(n,e,t){var a,r,o,i=n.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],a=0;a<12;++a)o=p([2e3,a]),this._shortMonthsParse[a]=this.monthsShort(o,"").toLocaleLowerCase(),this._longMonthsParse[a]=this.months(o,"").toLocaleLowerCase();return t?"MMM"===e?-1!==(r=Dn.call(this._shortMonthsParse,i))?r:null:-1!==(r=Dn.call(this._longMonthsParse,i))?r:null:"MMM"===e?-1!==(r=Dn.call(this._shortMonthsParse,i))?r:-1!==(r=Dn.call(this._longMonthsParse,i))?r:null:-1!==(r=Dn.call(this._longMonthsParse,i))?r:-1!==(r=Dn.call(this._shortMonthsParse,i))?r:null}.call(this,n,e,t);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),a=0;a<12;a++){if(r=p([2e3,a]),t&&!this._longMonthsParse[a]&&(this._longMonthsParse[a]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[a]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),t||this._monthsParse[a]||(o="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[a]=new RegExp(o.replace(".",""),"i")),t&&"MMMM"===e&&this._longMonthsParse[a].test(n))return a;if(t&&"MMM"===e&&this._shortMonthsParse[a].test(n))return a;if(!t&&this._monthsParse[a].test(n))return a}},ut.monthsRegex=function(n){return this._monthsParseExact?(c(this,"_monthsRegex")||Hn.call(this),n?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=In),this._monthsStrictRegex&&n?this._monthsStrictRegex:this._monthsRegex)},ut.monthsShortRegex=function(n){return this._monthsParseExact?(c(this,"_monthsRegex")||Hn.call(this),n?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=An),this._monthsShortStrictRegex&&n?this._monthsShortStrictRegex:this._monthsShortRegex)},ut.week=function(n){return Bn(n,this._week.dow,this._week.doy).week},ut.firstDayOfYear=function(){return this._week.doy},ut.firstDayOfWeek=function(){return this._week.dow},ut.weekdays=function(n,e){return n?r(this._weekdays)?this._weekdays[n.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][n.day()]:r(this._weekdays)?this._weekdays:this._weekdays.standalone},ut.weekdaysMin=function(n){return n?this._weekdaysMin[n.day()]:this._weekdaysMin},ut.weekdaysShort=function(n){return n?this._weekdaysShort[n.day()]:this._weekdaysShort},ut.weekdaysParse=function(n,e,t){var a,r,o;if(this._weekdaysParseExact)return function(n,e,t){var a,r,o,i=n.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],a=0;a<7;++a)o=p([2e3,1]).day(a),this._minWeekdaysParse[a]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[a]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[a]=this.weekdays(o,"").toLocaleLowerCase();return t?"dddd"===e?-1!==(r=Dn.call(this._weekdaysParse,i))?r:null:"ddd"===e?-1!==(r=Dn.call(this._shortWeekdaysParse,i))?r:null:-1!==(r=Dn.call(this._minWeekdaysParse,i))?r:null:"dddd"===e?-1!==(r=Dn.call(this._weekdaysParse,i))?r:-1!==(r=Dn.call(this._shortWeekdaysParse,i))?r:-1!==(r=Dn.call(this._minWeekdaysParse,i))?r:null:"ddd"===e?-1!==(r=Dn.call(this._shortWeekdaysParse,i))?r:-1!==(r=Dn.call(this._weekdaysParse,i))?r:-1!==(r=Dn.call(this._minWeekdaysParse,i))?r:null:-1!==(r=Dn.call(this._minWeekdaysParse,i))?r:-1!==(r=Dn.call(this._weekdaysParse,i))?r:-1!==(r=Dn.call(this._shortWeekdaysParse,i))?r:null}.call(this,n,e,t);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),a=0;a<7;a++){if(r=p([2e3,1]).day(a),t&&!this._fullWeekdaysParse[a]&&(this._fullWeekdaysParse[a]=new RegExp("^"+this.weekdays(r,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[a]=new RegExp("^"+this.weekdaysShort(r,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[a]=new RegExp("^"+this.weekdaysMin(r,"").replace(".",".?")+"$","i")),this._weekdaysParse[a]||(o="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[a]=new RegExp(o.replace(".",""),"i")),t&&"dddd"===e&&this._fullWeekdaysParse[a].test(n))return a;if(t&&"ddd"===e&&this._shortWeekdaysParse[a].test(n))return a;if(t&&"dd"===e&&this._minWeekdaysParse[a].test(n))return a;if(!t&&this._weekdaysParse[a].test(n))return a}},ut.weekdaysRegex=function(n){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||ne.call(this),n?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=$n),this._weekdaysStrictRegex&&n?this._weekdaysStrictRegex:this._weekdaysRegex)},ut.weekdaysShortRegex=function(n){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||ne.call(this),n?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Zn),this._weekdaysShortStrictRegex&&n?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},ut.weekdaysMinRegex=function(n){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||ne.call(this),n?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Qn),this._weekdaysMinStrictRegex&&n?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},ut.isPM=function(n){return"p"===(n+"").toLowerCase().charAt(0)},ut.meridiem=function(n,e,t){return n>11?t?"pm":"PM":t?"am":"AM"},ue("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(n){var e=n%10;return n+(1===x(n%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),a.lang=L("moment.lang is deprecated. Use moment.locale instead.",ue),a.langData=L("moment.langData is deprecated. Use moment.localeData instead.",fe);var ht=Math.abs;function bt(n,e,t,a){var r=Ge(e,t);return n._milliseconds+=a*r._milliseconds,n._days+=a*r._days,n._months+=a*r._months,n._bubble()}function gt(n){return n<0?Math.floor(n):Math.ceil(n)}function yt(n){return 4800*n/146097}function _t(n){return 146097*n/4800}function vt(n){return function(){return this.as(n)}}var wt=vt("ms"),kt=vt("s"),xt=vt("m"),Mt=vt("h"),Et=vt("d"),Lt=vt("w"),Tt=vt("M"),Ot=vt("y");function St(n){return function(){return this.isValid()?this._data[n]:NaN}}var Dt=St("milliseconds"),Pt=St("seconds"),Yt=St("minutes"),Ct=St("hours"),jt=St("days"),Nt=St("months"),Rt=St("years");var At=Math.round,It={ss:44,s:45,m:45,h:22,d:26,M:11};var Ht=Math.abs;function zt(){if(!this.isValid())return this.localeData().invalidDate();var n,e,t=Ht(this._milliseconds)/1e3,a=Ht(this._days),r=Ht(this._months);e=k((n=k(t/60))/60),t%=60,n%=60;var o=k(r/12),i=r%=12,l=a,s=e,d=n,c=t,u=this.asSeconds();return u?(u<0?"-":"")+"P"+(o?o+"Y":"")+(i?i+"M":"")+(l?l+"D":"")+(s||d||c?"T":"")+(s?s+"H":"")+(d?d+"M":"")+(c?c+"S":""):"P0D"}var Ft=je.prototype;return Ft.isValid=function(){return this._isValid},Ft.abs=function(){var n=this._data;return this._milliseconds=ht(this._milliseconds),this._days=ht(this._days),this._months=ht(this._months),n.milliseconds=ht(n.milliseconds),n.seconds=ht(n.seconds),n.minutes=ht(n.minutes),n.hours=ht(n.hours),n.months=ht(n.months),n.years=ht(n.years),this},Ft.add=function(n,e){return bt(this,n,e,1)},Ft.subtract=function(n,e){return bt(this,n,e,-1)},Ft.as=function(n){if(!this.isValid())return NaN;var e,t,a=this._milliseconds;if("month"===(n=N(n))||"year"===n)return e=this._days+a/864e5,t=this._months+yt(e),"month"===n?t:t/12;switch(e=this._days+Math.round(_t(this._months)),n){case"week":return e/7+a/6048e5;case"day":return e+a/864e5;case"hour":return 24*e+a/36e5;case"minute":return 1440*e+a/6e4;case"second":return 86400*e+a/1e3;case"millisecond":return Math.floor(864e5*e)+a;default:throw new Error("Unknown unit "+n)}},Ft.asMilliseconds=wt,Ft.asSeconds=kt,Ft.asMinutes=xt,Ft.asHours=Mt,Ft.asDays=Et,Ft.asWeeks=Lt,Ft.asMonths=Tt,Ft.asYears=Ot,Ft.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*x(this._months/12):NaN},Ft._bubble=function(){var n,e,t,a,r,o=this._milliseconds,i=this._days,l=this._months,s=this._data;return o>=0&&i>=0&&l>=0||o<=0&&i<=0&&l<=0||(o+=864e5*gt(_t(l)+i),i=0,l=0),s.milliseconds=o%1e3,n=k(o/1e3),s.seconds=n%60,e=k(n/60),s.minutes=e%60,t=k(e/60),s.hours=t%24,l+=r=k(yt(i+=k(t/24))),i-=gt(_t(r)),a=k(l/12),l%=12,s.days=i,s.months=l,s.years=a,this},Ft.get=function(n){return n=N(n),this.isValid()?this[n+"s"]():NaN},Ft.milliseconds=Dt,Ft.seconds=Pt,Ft.minutes=Yt,Ft.hours=Ct,Ft.days=jt,Ft.weeks=function(){return k(this.days()/7)},Ft.months=Nt,Ft.years=Rt,Ft.humanize=function(n){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),t=function(n,e,t){var a=Ge(n).abs(),r=At(a.as("s")),o=At(a.as("m")),i=At(a.as("h")),l=At(a.as("d")),s=At(a.as("M")),d=At(a.as("y")),c=r<=It.ss&&["s",r]||r0,c[4]=t,function(n,e,t,a,r){return r.relativeTime(e||1,!!t,n,a)}.apply(null,c)}(this,!n,e);return n&&(t=e.pastFuture(+this,t)),e.postformat(t)},Ft.toISOString=zt,Ft.toString=zt,Ft.toJSON=zt,Ft.locale=Ze,Ft.localeData=nt,Ft.toIsoString=L("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",zt),Ft.lang=Qe,X("X",0,0,"unix"),X("x",0,0,"valueOf"),mn("x",dn),mn("X",/[+-]?\d+(\.\d{1,3})?/),yn("X",function(n,e,t){t._d=new Date(1e3*parseFloat(n,10))}),yn("x",function(n,e,t){t._d=new Date(x(n))}),a.version="2.18.1",e=Se,a.fn=dt,a.min=function(){return Ye("isBefore",[].slice.call(arguments,0))},a.max=function(){return Ye("isAfter",[].slice.call(arguments,0))},a.now=function(){return Date.now?Date.now():+new Date},a.utc=p,a.unix=function(n){return Se(1e3*n)},a.months=function(n,e){return ft(n,e,"months")},a.isDate=s,a.locale=ue,a.invalid=b,a.duration=Ge,a.isMoment=w,a.weekdays=function(n,e,t){return mt(n,e,t,"weekdays")},a.parseZone=function(){return Se.apply(null,arguments).parseZone()},a.localeData=fe,a.isDuration=Ne,a.monthsShort=function(n,e){return ft(n,e,"monthsShort")},a.weekdaysMin=function(n,e,t){return mt(n,e,t,"weekdaysMin")},a.defineLocale=pe,a.updateLocale=function(n,e){if(null!=e){var t,a=ie;null!=le[n]&&(a=le[n]._config),(t=new P(e=D(a,e))).parentLocale=le[n],le[n]=t,ue(n)}else null!=le[n]&&(null!=le[n].parentLocale?le[n]=le[n].parentLocale:null!=le[n]&&delete le[n]);return le[n]},a.locales=function(){return Y(le)},a.weekdaysShort=function(n,e,t){return mt(n,e,t,"weekdaysShort")},a.normalizeUnits=N,a.relativeTimeRounding=function(n){return void 0===n?At:"function"==typeof n&&(At=n,!0)},a.relativeTimeThreshold=function(n,e){return void 0!==It[n]&&(void 0===e?It[n]:(It[n]=e,"s"===n&&(It.ss=e-1),!0))},a.calendarFormat=function(n,e){var t=n.diff(e,"days",!0);return t<-6?"sameElse":t<-1?"lastWeek":t<0?"lastDay":t<1?"sameDay":t<2?"nextDay":t<7?"nextWeek":"sameElse"},a.prototype=dt,a},n.exports=e()}).call(e,t(108)(n))},function(n,e,t){"use strict";n.exports=t(289)},function(n,e,t){"use strict";e.__esModule=!0;var a,r=t(336),o=(a=r)&&a.__esModule?a:{default:a};e.default=o.default||function(n){for(var e=1;ee?n:e+1}},function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=t(304),r=t(104),o=t(312);t.d(e,"Provider",function(){return a.b}),t.d(e,"createProvider",function(){return a.a}),t.d(e,"connectAdvanced",function(){return r.a}),t.d(e,"connect",function(){return o.a})},function(n,e,t){"use strict";e.__esModule=!0;var a,r=t(118),o=(a=r)&&a.__esModule?a:{default:a};e.default=function(n,e,t){return e in n?(0,o.default)(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}},function(n,e,t){var a;!function(){"use strict";var t={}.hasOwnProperty;function r(){for(var n=[],e=0;e=o)return n;switch(n){case"%s":return String(e[a++]);case"%d":return Number(e[a++]);case"%j":try{return JSON.stringify(e[a++])}catch(n){return"[Circular]"}break;default:return n}}),s=e[a];a1){for(var s=Array(i),d=0;d=0||Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a]);return t}},function(n,e,t){var a=t(28),r=t(40);n.exports=t(31)?function(n,e,t){return a.f(n,e,r(1,t))}:function(n,e,t){return n[e]=t,n}},function(n,e,t){var a=t(39);n.exports=function(n){if(!a(n))throw TypeError(n+" is not an object!");return n}},function(n,e){n.exports=function(n){try{return!!n()}catch(n){return!0}}},function(n,e,t){"use strict";var a=function(){};n.exports=a},function(n,e){n.exports=function(n){return"object"==typeof n?null!==n:"function"==typeof n}},function(n,e){n.exports=function(n,e){return{enumerable:!(1&n),configurable:!(2&n),writable:!(4&n),value:e}}},function(n,e){n.exports={}},function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(n,e,t){var o=r.default.unstable_batchedUpdates?function(n){r.default.unstable_batchedUpdates(t,n)}:t;return(0,a.default)(n,e,o)};var a=o(t(377)),r=o(t(12));function o(n){return n&&n.__esModule?n:{default:n}}n.exports=e.default},function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=o(t(392)),r=o(t(393));function o(n){return n&&n.__esModule?n:{default:n}}a.default.Group=r.default,e.default=a.default,n.exports=e.default},function(n,e,t){"use strict";var a=t(1),r=t(396);if(void 0===a)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var o=(new a.Component).updater;n.exports=r(a.Component,a.isValidElement,o)},function(n,e,t){"use strict";var a=t(440),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},o=void 0;function i(n,e,t){var a=t;if("object"!==(void 0===e?"undefined":r(e)))return void 0!==a?("number"==typeof a&&(a+="px"),void(n.style[e]=a)):o(n,e);for(var l in e)e.hasOwnProperty(l)&&i(n,l,e[l])}function l(n,e){var t=n["page"+(e?"Y":"X")+"Offset"],a="scroll"+(e?"Top":"Left");if("number"!=typeof t){var r=n.document;"number"!=typeof(t=r.documentElement[a])&&(t=r.body[a])}return t}function s(n){return l(n)}function d(n){return l(n,!0)}function c(n){var e=function(n){var e,t=void 0,a=void 0,r=n.ownerDocument,o=r.body,i=r&&r.documentElement;return t=(e=n.getBoundingClientRect()).left,a=e.top,{left:t-=i.clientLeft||o.clientLeft||0,top:a-=i.clientTop||o.clientTop||0}}(n),t=n.ownerDocument,a=t.defaultView||t.parentWindow;return e.left+=s(a),e.top+=d(a),e}function u(n){return null!==n&&void 0!==n&&n==n.window}function p(n){return u(n)?n.document:9===n.nodeType?n:n.ownerDocument}var f=new RegExp("^("+/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source+")(?!px)[a-z%]+$","i"),m=/^(top|right|bottom|left)$/,h="currentStyle",b="runtimeStyle",g="left",y="px";function _(n,e){return"left"===n?e.useCssRight?"right":n:e.useCssBottom?"bottom":n}function v(n){return"left"===n?"right":"right"===n?"left":"top"===n?"bottom":"bottom"===n?"top":void 0}function w(n,e,t){"static"===i(n,"position")&&(n.style.position="relative");var r=-999,o=-999,l=_("left",t),s=_("top",t),d=v(l),u=v(s);"left"!==l&&(r=999),"top"!==s&&(o=999);var p="",f=c(n);("left"in e||"top"in e)&&(p=Object(a.c)(n)||"",Object(a.e)(n,"none")),"left"in e&&(n.style[d]="",n.style[l]=r+"px"),"top"in e&&(n.style[u]="",n.style[s]=o+"px");var m=c(n),h={};for(var b in e)if(e.hasOwnProperty(b)){var g=_(b,t),y="left"===b?r:o,w=f[b]-m[b];h[g]=g===b?y+w:y-w}i(n,h),n.offsetTop,n.offsetLeft,("left"in e||"top"in e)&&Object(a.e)(n,p);var k={};for(var x in e)if(e.hasOwnProperty(x)){var M=_(x,t),E=e[x]-f[x];k[M]=x===M?h[M]+E:h[M]-E}i(n,k)}function k(n,e,t){t.useCssRight||t.useCssBottom?w(n,e,t):t.useCssTransform&&Object(a.a)()in document.body.style?function(n,e){var t=c(n),r=Object(a.b)(n),o={x:r.x,y:r.y};"left"in e&&(o.x=r.x+e.left-t.left),"top"in e&&(o.y=r.y+e.top-t.top),Object(a.d)(n,o)}(n,e):w(n,e,t)}function x(n,e){for(var t=0;t children");return b.a.createElement(v.a,{key:t.key,ref:function(e){return n.childrenRefs[t.key]=e},animation:e.animation,transitionName:e.transitionName,transitionEnter:e.transitionEnter,transitionAppear:e.transitionAppear,transitionLeave:e.transitionLeave},t)}));var o=e.component;if(o){var i=e;return"string"==typeof o&&(i=r()({className:e.className,style:e.style},e.componentProps)),b.a.createElement(o,i,a)}return a[0]||null}}]),e}(b.a.Component);E.propTypes={component:y.a.any,componentProps:y.a.object,animation:y.a.object,transitionName:y.a.oneOfType([y.a.string,y.a.object]),transitionEnter:y.a.bool,transitionAppear:y.a.bool,exclusive:y.a.bool,transitionLeave:y.a.bool,onEnd:y.a.func,onEnter:y.a.func,onLeave:y.a.func,onAppear:y.a.func,showProp:y.a.string},E.defaultProps={animation:{},component:"span",componentProps:{},transitionEnter:!0,transitionLeave:!0,transitionAppear:!1,onEnd:M,onEnter:M,onLeave:M,onAppear:M};var L=function(){var n=this;this.performEnter=function(e){n.childrenRefs[e]&&(n.currentlyAnimatingKeys[e]=!0,n.childrenRefs[e].componentWillEnter(n.handleDoneAdding.bind(n,e,"enter")))},this.performAppear=function(e){n.childrenRefs[e]&&(n.currentlyAnimatingKeys[e]=!0,n.childrenRefs[e].componentWillAppear(n.handleDoneAdding.bind(n,e,"appear")))},this.handleDoneAdding=function(e,t){var a=n.props;if(delete n.currentlyAnimatingKeys[e],!a.exclusive||a===n.nextProps){var r=Object(_.e)(x(a));n.isValidChildByKey(r,e)?"appear"===t?w.a.allowAppearCallback(a)&&(a.onAppear(e),a.onEnd(e,!0)):w.a.allowEnterCallback(a)&&(a.onEnter(e),a.onEnd(e,!0)):n.performLeave(e)}},this.performLeave=function(e){n.childrenRefs[e]&&(n.currentlyAnimatingKeys[e]=!0,n.childrenRefs[e].componentWillLeave(n.handleDoneLeaving.bind(n,e)))},this.handleDoneLeaving=function(e){var t=n.props;if(delete n.currentlyAnimatingKeys[e],!t.exclusive||t===n.nextProps){var a=Object(_.e)(x(t));if(n.isValidChildByKey(a,e))n.performEnter(e);else{var r=function(){w.a.allowLeaveCallback(t)&&(t.onLeave(e),t.onEnd(e,!1))};Object(_.c)(n.state.children,a,t.showProp)?r():n.setState({children:a},r)}}}};e.default=E},function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=m(t(9)),r=m(t(3)),o=m(t(4)),i=m(t(5)),l=m(t(6)),s=m(t(2)),d=t(1),c=m(d),u=m(t(424)),p=m(t(10)),f=m(t(450));function m(n){return n&&n.__esModule?n:{default:n}}var h=function(n){function e(n){(0,r.default)(this,e);var t=(0,i.default)(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,n));return t.onVisibleChange=function(n){var e=t.props.onVisibleChange;"visible"in t.props||t.setState({visible:!t.isNoTitle()&&n}),e&&!t.isNoTitle()&&e(n)},t.onPopupAlign=function(n,e){var a=t.getPlacements(),r=Object.keys(a).filter(function(n){return a[n].points[0]===e.points[0]&&a[n].points[1]===e.points[1]})[0];if(r){var o=n.getBoundingClientRect(),i={top:"50%",left:"50%"};r.indexOf("top")>=0||r.indexOf("Bottom")>=0?i.top=o.height-e.offset[1]+"px":(r.indexOf("Top")>=0||r.indexOf("bottom")>=0)&&(i.top=-e.offset[1]+"px"),r.indexOf("left")>=0||r.indexOf("Right")>=0?i.left=o.width-e.offset[0]+"px":(r.indexOf("right")>=0||r.indexOf("Left")>=0)&&(i.left=-e.offset[0]+"px"),n.style.transformOrigin=i.left+" "+i.top}},t.state={visible:!!n.visible},t}return(0,l.default)(e,n),(0,o.default)(e,[{key:"componentWillReceiveProps",value:function(n){"visible"in n&&this.setState({visible:n.visible})}},{key:"getPopupDomNode",value:function(){return this.refs.tooltip.getPopupDomNode()}},{key:"getPlacements",value:function(){var n=this.props,e=n.builtinPlacements,t=n.arrowPointAtCenter,a=n.autoAdjustOverflow;return e||(0,f.default)({arrowPointAtCenter:t,verticalArrowShift:8,autoAdjustOverflow:a})}},{key:"isHoverTrigger",value:function(){var n=this.props.trigger;return!n||"hover"===n||!!Array.isArray(n)&&n.indexOf("hover")>=0}},{key:"getDisabledCompatibleChildren",value:function(n){if((n.type.__ANT_BUTTON||"button"===n.type)&&n.props.disabled&&this.isHoverTrigger()){var e=function(n,e){var t={},a=(0,s.default)({},n);return e.forEach(function(e){n&&e in n&&(t[e]=n[e],delete a[e])}),{picked:t,omited:a}}(n.props.style,["position","left","right","top","bottom","float","display","zIndex"]),t=e.picked,a=e.omited,r=(0,s.default)({display:"inline-block"},t,{cursor:"not-allowed"}),o=(0,s.default)({},a,{pointerEvents:"none"}),i=(0,d.cloneElement)(n,{style:o,className:null});return c.default.createElement("span",{style:r,className:n.props.className},i)}return n}},{key:"isNoTitle",value:function(){var n=this.props,e=n.title,t=n.overlay;return!e&&!t}},{key:"render",value:function(){var n=this.props,e=this.state,t=n.prefixCls,r=n.title,o=n.overlay,i=n.openClassName,l=n.getPopupContainer,f=n.getTooltipContainer,m=n.children,h=e.visible;"visible"in n||!this.isNoTitle()||(h=!1);var b=this.getDisabledCompatibleChildren(c.default.isValidElement(m)?m:c.default.createElement("span",null,m)),g=b.props,y=(0,p.default)(g.className,(0,a.default)({},i||t+"-open",!0));return c.default.createElement(u.default,(0,s.default)({},this.props,{getTooltipContainer:l||f,ref:"tooltip",builtinPlacements:this.getPlacements(),overlay:o||r||"",visible:h,onVisibleChange:this.onVisibleChange,onPopupAlign:this.onPopupAlign}),h?(0,d.cloneElement)(b,{className:y}):b)}}]),e}(c.default.Component);e.default=h,h.defaultProps={prefixCls:"ant-tooltip",placement:"top",transitionName:"zoom-big-fast",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0},n.exports=e.default},function(n,e,t){n.exports=t(430)()},function(n,e){var t=Array.isArray;n.exports=t},function(n,e,t){var a=t(94)(Object,"create");n.exports=a},function(n,e,t){var a=t(138);n.exports=function(n,e){for(var t=n.length;t--;)if(a(n[t][0],e))return t;return-1}},function(n,e,t){var a=t(490);n.exports=function(n,e){var t=n.__data__;return a(e)?t["string"==typeof e?"string":"hash"]:t.map}},function(n,e,t){n.exports=t(546)()},function(n,e,t){var a,r,o;r=[],void 0===(o="function"==typeof(a=function(){"use strict";var n=["M","Z","L","H","V","C","S","Q","T","A"],e=n.map(function(n){return n.toLowerCase()}),t=n.concat(e);function a(){if(!(this instanceof a))return new a;this.relative=!1,this.commands=[]}function r(n){var e=n.length>0&&n.slice?n:Array.prototype.slice.call(arguments,0);this.name=e[0],this.args=e.slice(1)}return a.prototype.rel=function(){return this.relative=!0,this},a.prototype.abs=function(){return this.relative=!1,this},a.prototype.close=function(){return this.Z()},a.prototype.to=function(n,e){var t="object"==typeof n?n:{x:n,y:e};return this._cmd("M")(t.x,t.y)},a.prototype.line=function(n,e){var t="object"==typeof n?n:{x:n,y:e};return this._cmd("L")(t.x,t.y)},a.prototype.hline=function(n){return this._cmd("H")(n)},a.prototype.vline=function(n){return this._cmd("V")(n)},a.prototype.bezier3=function(n,e,t,a,r,o){var i="object"==typeof n,l=i?arguments.length<3:arguments.length<6,s={x:n,y:e},d={x:t,y:a},c=l?d:{x:r,y:o};return i&&(s=n,d=e,c=l?d:t),l?this._cmd("S")(s.x,s.y,c.x,c.y):this._cmd("C")(s.x,s.y,d.x,d.y,c.x,c.y)},a.prototype.bezier2=function(n,e,t,a){var r="object"==typeof n,o=r?arguments.length<2:arguments.length<4,i={x:n,y:e},l=o?i:{x:t,y:a};return r&&(i=n,l=o?i:e),o?this._cmd("T")(l.x,l.y):this._cmd("Q")(i.x,i.y,l.x,l.y)},a.prototype.arc=function(n,e,t,a,r,o,i){var l="object"==typeof o?o:{x:o,y:i};return this._cmd("A")(n,e,t,a,r,l.x,l.y)},a.prototype.str=function(){return this.commands.map(function(n){return n.toString()}).join(" ")},t.forEach(function(n){a.prototype[n]=function(){var e=Array.prototype.slice.call(arguments,0);e.unshift(n);var t=new r(e);return this.commands.push(t),this}}),a.prototype._cmd=function(n){return this[this.relative?n.toLowerCase():n.toUpperCase()].bind(this)},r.prototype.toString=function(){return this.name+" "+this.args.join(" ")},a})?a.apply(e,r):a)||(n.exports=o)},function(n,e,t){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.buildPetals=e.getControlPoints=e.getPetalTipPoints=void 0;var a,r=t(567),o=(a=r)&&a.__esModule?a:{default:a};e.getPetalTipPoints=function(n,e,t,a,r,o){var i={x:n,y:e-t},l={x:n,y:e-a};return{innerLeftPoint:{x:i.x-r,y:i.y},innerRightPoint:{x:i.x+r,y:i.y},outerLeftPoint:{x:l.x-o,y:l.y},outerRightPoint:{x:l.x+o,y:l.y}}},e.getControlPoints=function(n,e,t,a){return{leftPoint:{x:n.x-t,y:n.y-a},rightPoint:{x:e.x+t,y:e.y-a}}},e.buildPetals=function(n,e,t,a,r,o,l){for(var s=[];e0?a:t)(n)}},function(n,e,t){var a=t(75)("keys"),r=t(49);n.exports=function(n){return a[n]||(a[n]=r(n))}},function(n,e,t){var a=t(27),r=a["__core-js_shared__"]||(a["__core-js_shared__"]={});n.exports=function(n){return r[n]||(r[n]={})}},function(n,e){n.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(n,e){e.f=Object.getOwnPropertySymbols},function(n,e){n.exports=!0},function(n,e,t){var a=t(36),r=t(349),o=t(76),i=t(74)("IE_PROTO"),l=function(){},s=function(){var n,e=t(114)("iframe"),a=o.length;for(e.style.display="none",t(350).appendChild(e),e.src="javascript:",(n=e.contentWindow.document).open(),n.write(" - - - - - diff --git a/lib/foundation/js/app.js b/lib/foundation/js/app.js deleted file mode 100644 index 5b80fd1..0000000 --- a/lib/foundation/js/app.js +++ /dev/null @@ -1 +0,0 @@ -$(document).foundation() diff --git a/lib/foundation/js/vendor/foundation.js b/lib/foundation/js/vendor/foundation.js deleted file mode 100644 index b9e44dd..0000000 --- a/lib/foundation/js/vendor/foundation.js +++ /dev/null @@ -1,11700 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 35); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = jQuery; - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return rtl; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return GetYoDigits; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return transitionend; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); - - - - -// Core Foundation Utilities, utilized in a number of places. - -/** - * Returns a boolean for RTL support - */ -function rtl() { - return __WEBPACK_IMPORTED_MODULE_0_jquery___default()('html').attr('dir') === 'rtl'; -} - -/** - * returns a random base-36 uid with namespacing - * @function - * @param {Number} length - number of random base-36 digits desired. Increase for more random strings. - * @param {String} namespace - name of plugin to be incorporated in uid, optional. - * @default {String} '' - if no plugin name is provided, nothing is appended to the uid. - * @returns {String} - unique id - */ -function GetYoDigits(length, namespace) { - length = length || 6; - return Math.round(Math.pow(36, length + 1) - Math.random() * Math.pow(36, length)).toString(36).slice(1) + (namespace ? '-' + namespace : ''); -} - -function transitionend($elem) { - var transitions = { - 'transition': 'transitionend', - 'WebkitTransition': 'webkitTransitionEnd', - 'MozTransition': 'transitionend', - 'OTransition': 'otransitionend' - }; - var elem = document.createElement('div'), - end; - - for (var t in transitions) { - if (typeof elem.style[t] !== 'undefined') { - end = transitions[t]; - } - } - if (end) { - return end; - } else { - end = setTimeout(function () { - $elem.triggerHandler('transitionend', [$elem]); - }, 1); - return 'transitionend'; - } -} - - - -/***/ }), -/* 2 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Plugin; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_core__ = __webpack_require__(1); - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - - - - -// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST -// {function} _setup (replaces previous constructor), -// {function} _destroy (replaces previous destroy) - -var Plugin = function () { - function Plugin(element, options) { - _classCallCheck(this, Plugin); - - this._setup(element, options); - var pluginName = getPluginName(this); - this.uuid = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__foundation_util_core__["a" /* GetYoDigits */])(6, pluginName); - - if (!this.$element.attr('data-' + pluginName)) { - this.$element.attr('data-' + pluginName, this.uuid); - } - if (!this.$element.data('zfPlugin')) { - this.$element.data('zfPlugin', this); - } - /** - * Fires when the plugin has initialized. - * @event Plugin#init - */ - this.$element.trigger('init.zf.' + pluginName); - } - - _createClass(Plugin, [{ - key: 'destroy', - value: function destroy() { - this._destroy(); - var pluginName = getPluginName(this); - this.$element.removeAttr('data-' + pluginName).removeData('zfPlugin') - /** - * Fires when the plugin has been destroyed. - * @event Plugin#destroyed - */ - .trigger('destroyed.zf.' + pluginName); - for (var prop in this) { - this[prop] = null; //clean up script to prep for garbage collection. - } - } - }]); - - return Plugin; -}(); - -// Convert PascalCase to kebab-case -// Thank you: http://stackoverflow.com/a/8955580 - - -function hyphenate(str) { - return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); -} - -function getPluginName(obj) { - if (typeof obj.constructor.name !== 'undefined') { - return hyphenate(obj.constructor.name); - } else { - return hyphenate(obj.className); - } -} - - - -/***/ }), -/* 3 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MediaQuery; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); - - - - -// Default set of media queries -var defaultQueries = { - 'default': 'only screen', - landscape: 'only screen and (orientation: landscape)', - portrait: 'only screen and (orientation: portrait)', - 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)' -}; - -// matchMedia() polyfill - Test a CSS media type/query in JS. -// Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license -var matchMedia = window.matchMedia || function () { - 'use strict'; - - // For browsers that support matchMedium api such as IE 9 and webkit - - var styleMedia = window.styleMedia || window.media; - - // For those that don't support matchMedium - if (!styleMedia) { - var style = document.createElement('style'), - script = document.getElementsByTagName('script')[0], - info = null; - - style.type = 'text/css'; - style.id = 'matchmediajs-test'; - - script && script.parentNode && script.parentNode.insertBefore(style, script); - - // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers - info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle; - - styleMedia = { - matchMedium: function (media) { - var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; - - // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers - if (style.styleSheet) { - style.styleSheet.cssText = text; - } else { - style.textContent = text; - } - - // Test if media query is true or false - return info.width === '1px'; - } - }; - } - - return function (media) { - return { - matches: styleMedia.matchMedium(media || 'all'), - media: media || 'all' - }; - }; -}(); - -var MediaQuery = { - queries: [], - - current: '', - - /** - * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. - * @function - * @private - */ - _init: function () { - var self = this; - var $meta = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('meta.foundation-mq'); - if (!$meta.length) { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()('').appendTo(document.head); - } - - var extractedStyles = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('.foundation-mq').css('font-family'); - var namedQueries; - - namedQueries = parseStyleToObject(extractedStyles); - - for (var key in namedQueries) { - if (namedQueries.hasOwnProperty(key)) { - self.queries.push({ - name: key, - value: 'only screen and (min-width: ' + namedQueries[key] + ')' - }); - } - } - - this.current = this._getCurrentSize(); - - this._watcher(); - }, - - - /** - * Checks if the screen is at least as wide as a breakpoint. - * @function - * @param {String} size - Name of the breakpoint to check. - * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. - */ - atLeast: function (size) { - var query = this.get(size); - - if (query) { - return matchMedia(query).matches; - } - - return false; - }, - - - /** - * Checks if the screen matches to a breakpoint. - * @function - * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method. - * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not. - */ - is: function (size) { - size = size.trim().split(' '); - if (size.length > 1 && size[1] === 'only') { - if (size[0] === this._getCurrentSize()) return true; - } else { - return this.atLeast(size[0]); - } - return false; - }, - - - /** - * Gets the media query of a breakpoint. - * @function - * @param {String} size - Name of the breakpoint to get. - * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. - */ - get: function (size) { - for (var i in this.queries) { - if (this.queries.hasOwnProperty(i)) { - var query = this.queries[i]; - if (size === query.name) return query.value; - } - } - - return null; - }, - - - /** - * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). - * @function - * @private - * @returns {String} Name of the current breakpoint. - */ - _getCurrentSize: function () { - var matched; - - for (var i = 0; i < this.queries.length; i++) { - var query = this.queries[i]; - - if (matchMedia(query.value).matches) { - matched = query; - } - } - - if (typeof matched === 'object') { - return matched.name; - } else { - return matched; - } - }, - - - /** - * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. - * @function - * @private - */ - _watcher: function () { - var _this = this; - - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', function () { - var newSize = _this._getCurrentSize(), - currentSize = _this.current; - - if (newSize !== currentSize) { - // Change the current media query - _this.current = newSize; - - // Broadcast the media query change on the window - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); - } - }); - } -}; - -// Thank you: https://github.com/sindresorhus/query-string -function parseStyleToObject(str) { - var styleObject = {}; - - if (typeof str !== 'string') { - return styleObject; - } - - str = str.trim().slice(1, -1); // browsers re-quote string style values - - if (!str) { - return styleObject; - } - - styleObject = str.split('&').reduce(function (ret, param) { - var parts = param.replace(/\+/g, ' ').split('='); - var key = parts[0]; - var val = parts[1]; - key = decodeURIComponent(key); - - // missing `=` should be `null`: - // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters - val = val === undefined ? null : decodeURIComponent(val); - - if (!ret.hasOwnProperty(key)) { - ret[key] = val; - } else if (Array.isArray(ret[key])) { - ret[key].push(val); - } else { - ret[key] = [ret[key], val]; - } - return ret; - }, {}); - - return styleObject; -} - - - -/***/ }), -/* 4 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Keyboard; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_core__ = __webpack_require__(1); -/******************************************* - * * - * This util was created by Marius Olbertz * - * Please thank Marius on GitHub /owlbertz * - * or the web http://www.mariusolbertz.de/ * - * * - ******************************************/ - - - - - - -var keyCodes = { - 9: 'TAB', - 13: 'ENTER', - 27: 'ESCAPE', - 32: 'SPACE', - 35: 'END', - 36: 'HOME', - 37: 'ARROW_LEFT', - 38: 'ARROW_UP', - 39: 'ARROW_RIGHT', - 40: 'ARROW_DOWN' -}; - -var commands = {}; - -// Functions pulled out to be referenceable from internals -function findFocusable($element) { - if (!$element) { - return false; - } - 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 () { - if (!__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).is(':visible') || __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).attr('tabindex') < 0) { - return false; - } //only have visible elements and those that have a tabindex greater or equal 0 - return true; - }); -} - -function parseKey(event) { - 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 - key = key.replace(/\W+/, ''); - - if (event.shiftKey) key = 'SHIFT_' + key; - if (event.ctrlKey) key = 'CTRL_' + key; - if (event.altKey) key = 'ALT_' + key; - - // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`) - key = key.replace(/_$/, ''); - - return key; -} - -var Keyboard = { - keys: getKeyCodes(keyCodes), - - /** - * Parses the (keyboard) event and returns a String that represents its key - * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE - * @param {Event} event - the event generated by the event handler - * @return String key - String that represents the key pressed - */ - parseKey: parseKey, - - /** - * Handles the given (keyboard) event - * @param {Event} event - the event generated by the event handler - * @param {String} component - Foundation component's name, e.g. Slider or Reveal - * @param {Objects} functions - collection of functions that are to be executed - */ - handleKey: function (event, component, functions) { - var commandList = commands[component], - keyCode = this.parseKey(event), - cmds, - command, - fn; - - if (!commandList) return console.warn('Component not defined!'); - - if (typeof commandList.ltr === 'undefined') { - // this component does not differentiate between ltr and rtl - cmds = commandList; // use plain list - } else { - // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__foundation_util_core__["b" /* rtl */])()) cmds = __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend({}, commandList.ltr, commandList.rtl);else cmds = __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend({}, commandList.rtl, commandList.ltr); - } - command = cmds[keyCode]; - - fn = functions[command]; - if (fn && typeof fn === 'function') { - // execute function if exists - var returnValue = fn.apply(); - if (functions.handled || typeof functions.handled === 'function') { - // execute function when event was handled - functions.handled(returnValue); - } - } else { - if (functions.unhandled || typeof functions.unhandled === 'function') { - // execute function when event was not handled - functions.unhandled(); - } - } - }, - - - /** - * Finds all focusable elements within the given `$element` - * @param {jQuery} $element - jQuery object to search within - * @return {jQuery} $focusable - all focusable elements within `$element` - */ - - findFocusable: findFocusable, - - /** - * Returns the component name name - * @param {Object} component - Foundation component, e.g. Slider or Reveal - * @return String componentName - */ - - register: function (componentName, cmds) { - commands[componentName] = cmds; - }, - - - // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context? - // - /** - * Traps the focus in the given element. - * @param {jQuery} $element jQuery object to trap the foucs into. - */ - trapFocus: function ($element) { - var $focusable = findFocusable($element), - $firstFocusable = $focusable.eq(0), - $lastFocusable = $focusable.eq(-1); - - $element.on('keydown.zf.trapfocus', function (event) { - if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') { - event.preventDefault(); - $firstFocusable.focus(); - } else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') { - event.preventDefault(); - $lastFocusable.focus(); - } - }); - }, - - /** - * Releases the trapped focus from the given element. - * @param {jQuery} $element jQuery object to release the focus for. - */ - releaseFocus: function ($element) { - $element.off('keydown.zf.trapfocus'); - } -}; - -/* - * Constants for easier comparing. - * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE - */ -function getKeyCodes(kcs) { - var k = {}; - for (var kc in kcs) { - k[kcs[kc]] = kcs[kc]; - }return k; -} - - - -/***/ }), -/* 5 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Triggers; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_motion__ = __webpack_require__(6); - - - - - -var MutationObserver = function () { - var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; - for (var i = 0; i < prefixes.length; i++) { - if (prefixes[i] + 'MutationObserver' in window) { - return window[prefixes[i] + 'MutationObserver']; - } - } - return false; -}(); - -var triggers = function (el, type) { - el.data(type).split(' ').forEach(function (id) { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()('#' + id)[type === 'close' ? 'trigger' : 'triggerHandler'](type + '.zf.trigger', [el]); - }); -}; - -var Triggers = { - Listeners: { - Basic: {}, - Global: {} - }, - Initializers: {} -}; - -Triggers.Listeners.Basic = { - openListener: function () { - triggers(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), 'open'); - }, - closeListener: function () { - var id = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).data('close'); - if (id) { - triggers(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), 'close'); - } else { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).trigger('close.zf.trigger'); - } - }, - toggleListener: function () { - var id = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).data('toggle'); - if (id) { - triggers(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), 'toggle'); - } else { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).trigger('toggle.zf.trigger'); - } - }, - closeableListener: function (e) { - e.stopPropagation(); - var animation = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).data('closable'); - - if (animation !== '') { - __WEBPACK_IMPORTED_MODULE_1__foundation_util_motion__["a" /* Motion */].animateOut(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), animation, function () { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).trigger('closed.zf'); - }); - } else { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).fadeOut().trigger('closed.zf'); - } - }, - toggleFocusListener: function () { - var id = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).data('toggle-focus'); - __WEBPACK_IMPORTED_MODULE_0_jquery___default()('#' + id).triggerHandler('toggle.zf.trigger', [__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this)]); - } -}; - -// Elements with [data-open] will reveal a plugin that supports it when clicked. -Triggers.Initializers.addOpenListener = function ($elem) { - $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener); - $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener); -}; - -// Elements with [data-close] will close a plugin that supports it when clicked. -// If used without a value on [data-close], the event will bubble, allowing it to close a parent component. -Triggers.Initializers.addCloseListener = function ($elem) { - $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener); - $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener); -}; - -// Elements with [data-toggle] will toggle a plugin that supports it when clicked. -Triggers.Initializers.addToggleListener = function ($elem) { - $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener); - $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener); -}; - -// Elements with [data-closable] will respond to close.zf.trigger events. -Triggers.Initializers.addCloseableListener = function ($elem) { - $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener); - $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener); -}; - -// Elements with [data-toggle-focus] will respond to coming in and out of focus -Triggers.Initializers.addToggleFocusListener = function ($elem) { - $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener); - $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener); -}; - -// More Global/complex listeners and triggers -Triggers.Listeners.Global = { - resizeListener: function ($nodes) { - if (!MutationObserver) { - //fallback for IE 9 - $nodes.each(function () { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).triggerHandler('resizeme.zf.trigger'); - }); - } - //trigger all listening elements and signal a resize event - $nodes.attr('data-events', "resize"); - }, - scrollListener: function ($nodes) { - if (!MutationObserver) { - //fallback for IE 9 - $nodes.each(function () { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).triggerHandler('scrollme.zf.trigger'); - }); - } - //trigger all listening elements and signal a scroll event - $nodes.attr('data-events', "scroll"); - }, - closeMeListener: function (e, pluginId) { - var plugin = e.namespace.split('.')[0]; - var plugins = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-' + plugin + ']').not('[data-yeti-box="' + pluginId + '"]'); - - plugins.each(function () { - var _this = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this); - _this.triggerHandler('close.zf.trigger', [_this]); - }); - } -}; - -// Global, parses whole document. -Triggers.Initializers.addClosemeListener = function (pluginName) { - var yetiBoxes = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-yeti-box]'), - plugNames = ['dropdown', 'tooltip', 'reveal']; - - if (pluginName) { - if (typeof pluginName === 'string') { - plugNames.push(pluginName); - } else if (typeof pluginName === 'object' && typeof pluginName[0] === 'string') { - plugNames.concat(pluginName); - } else { - console.error('Plugin names must be strings'); - } - } - if (yetiBoxes.length) { - var listeners = plugNames.map(function (name) { - return 'closeme.zf.' + name; - }).join(' '); - - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener); - } -}; - -function debounceGlobalListener(debounce, trigger, listener) { - var timer = void 0, - args = Array.prototype.slice.call(arguments, 3); - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).off(trigger).on(trigger, function (e) { - if (timer) { - clearTimeout(timer); - } - timer = setTimeout(function () { - listener.apply(null, args); - }, debounce || 10); //default time to emit scroll event - }); -} - -Triggers.Initializers.addResizeListener = function (debounce) { - var $nodes = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-resize]'); - if ($nodes.length) { - debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes); - } -}; - -Triggers.Initializers.addScrollListener = function (debounce) { - var $nodes = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-scroll]'); - if ($nodes.length) { - debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes); - } -}; - -Triggers.Initializers.addMutationEventsListener = function ($elem) { - if (!MutationObserver) { - return false; - } - var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); - - //element callback - var listeningElementsMutation = function (mutationRecordsList) { - var $target = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(mutationRecordsList[0].target); - - //trigger the event handler for the element depending on type - switch (mutationRecordsList[0].type) { - case "attributes": - if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") { - $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); - } - if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") { - $target.triggerHandler('resizeme.zf.trigger', [$target]); - } - if (mutationRecordsList[0].attributeName === "style") { - $target.closest("[data-mutate]").attr("data-events", "mutate"); - $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); - } - break; - - case "childList": - $target.closest("[data-mutate]").attr("data-events", "mutate"); - $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); - break; - - default: - return false; - //nothing - } - }; - - if ($nodes.length) { - //for each element that needs to listen for resizing, scrolling, or mutation add a single observer - for (var i = 0; i <= $nodes.length - 1; i++) { - var elementObserver = new MutationObserver(listeningElementsMutation); - elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: ["data-events", "style"] }); - } - } -}; - -Triggers.Initializers.addSimpleListeners = function () { - var $document = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(document); - - Triggers.Initializers.addOpenListener($document); - Triggers.Initializers.addCloseListener($document); - Triggers.Initializers.addToggleListener($document); - Triggers.Initializers.addCloseableListener($document); - Triggers.Initializers.addToggleFocusListener($document); -}; - -Triggers.Initializers.addGlobalListeners = function () { - var $document = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(document); - Triggers.Initializers.addMutationEventsListener($document); - Triggers.Initializers.addResizeListener(); - Triggers.Initializers.addScrollListener(); - Triggers.Initializers.addClosemeListener(); -}; - -Triggers.init = function ($, Foundation) { - if (typeof $.triggersInitialized === 'undefined') { - var $document = $(document); - - if (document.readyState === "complete") { - Triggers.Initializers.addSimpleListeners(); - Triggers.Initializers.addGlobalListeners(); - } else { - $(window).on('load', function () { - Triggers.Initializers.addSimpleListeners(); - Triggers.Initializers.addGlobalListeners(); - }); - } - - $.triggersInitialized = true; - } - - if (Foundation) { - Foundation.Triggers = Triggers; - // Legacy included to be backwards compatible for now. - Foundation.IHearYou = Triggers.Initializers.addGlobalListeners; - } -}; - - - -/***/ }), -/* 6 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Move; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Motion; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_core__ = __webpack_require__(1); - - - - - -/** - * Motion module. - * @module foundation.motion - */ - -var initClasses = ['mui-enter', 'mui-leave']; -var activeClasses = ['mui-enter-active', 'mui-leave-active']; - -var Motion = { - animateIn: function (element, animation, cb) { - animate(true, element, animation, cb); - }, - - animateOut: function (element, animation, cb) { - animate(false, element, animation, cb); - } -}; - -function Move(duration, elem, fn) { - var anim, - prog, - start = null; - // console.log('called'); - - if (duration === 0) { - fn.apply(elem); - elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); - return; - } - - function move(ts) { - if (!start) start = ts; - // console.log(start, ts); - prog = ts - start; - fn.apply(elem); - - if (prog < duration) { - anim = window.requestAnimationFrame(move, elem); - } else { - window.cancelAnimationFrame(anim); - elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); - } - } - anim = window.requestAnimationFrame(move); -} - -/** - * Animates an element in or out using a CSS transition class. - * @function - * @private - * @param {Boolean} isIn - Defines if the animation is in or out. - * @param {Object} element - jQuery or HTML object to animate. - * @param {String} animation - CSS class to use. - * @param {Function} cb - Callback to run when animation is finished. - */ -function animate(isIn, element, animation, cb) { - element = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(element).eq(0); - - if (!element.length) return; - - var initClass = isIn ? initClasses[0] : initClasses[1]; - var activeClass = isIn ? activeClasses[0] : activeClasses[1]; - - // Set up the animation - reset(); - - element.addClass(animation).css('transition', 'none'); - - requestAnimationFrame(function () { - element.addClass(initClass); - if (isIn) element.show(); - }); - - // Start the animation - requestAnimationFrame(function () { - element[0].offsetWidth; - element.css('transition', '').addClass(activeClass); - }); - - // Clean up the animation when it finishes - element.one(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__foundation_util_core__["c" /* transitionend */])(element), finish); - - // Hides the element (for out animations), resets the element, and runs a callback - function finish() { - if (!isIn) element.hide(); - reset(); - if (cb) cb.apply(element); - } - - // Resets transitions and removes motion-specific classes - function reset() { - element[0].style.transitionDuration = 0; - element.removeClass(initClass + ' ' + activeClass + ' ' + animation); - } -} - - - -/***/ }), -/* 7 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Box; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation_util_core__ = __webpack_require__(1); - - - - -var Box = { - ImNotTouchingYou: ImNotTouchingYou, - OverlapArea: OverlapArea, - GetDimensions: GetDimensions, - GetOffsets: GetOffsets, - GetExplicitOffsets: GetExplicitOffsets -}; - -/** - * Compares the dimensions of an element to a container and determines collision events with container. - * @function - * @param {jQuery} element - jQuery object to test for collisions. - * @param {jQuery} parent - jQuery object to use as bounding container. - * @param {Boolean} lrOnly - set to true to check left and right values only. - * @param {Boolean} tbOnly - set to true to check top and bottom values only. - * @default if no parent object passed, detects collisions with `window`. - * @returns {Boolean} - true if collision free, false if a collision in any direction. - */ -function ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) { - return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0; -}; - -function OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) { - var eleDims = GetDimensions(element), - topOver, - bottomOver, - leftOver, - rightOver; - if (parent) { - var parDims = GetDimensions(parent); - - bottomOver = parDims.height + parDims.offset.top - (eleDims.offset.top + eleDims.height); - topOver = eleDims.offset.top - parDims.offset.top; - leftOver = eleDims.offset.left - parDims.offset.left; - rightOver = parDims.width + parDims.offset.left - (eleDims.offset.left + eleDims.width); - } else { - bottomOver = eleDims.windowDims.height + eleDims.windowDims.offset.top - (eleDims.offset.top + eleDims.height); - topOver = eleDims.offset.top - eleDims.windowDims.offset.top; - leftOver = eleDims.offset.left - eleDims.windowDims.offset.left; - rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width); - } - - bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0); - topOver = Math.min(topOver, 0); - leftOver = Math.min(leftOver, 0); - rightOver = Math.min(rightOver, 0); - - if (lrOnly) { - return leftOver + rightOver; - } - if (tbOnly) { - return topOver + bottomOver; - } - - // use sum of squares b/c we care about overlap area. - return Math.sqrt(topOver * topOver + bottomOver * bottomOver + leftOver * leftOver + rightOver * rightOver); -} - -/** - * Uses native methods to return an object of dimension values. - * @function - * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window. - * @returns {Object} - nested object of integer pixel values - * TODO - if element is window, return only those values. - */ -function GetDimensions(elem, test) { - elem = elem.length ? elem[0] : elem; - - if (elem === window || elem === document) { - throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); - } - - var rect = elem.getBoundingClientRect(), - parRect = elem.parentNode.getBoundingClientRect(), - winRect = document.body.getBoundingClientRect(), - winY = window.pageYOffset, - winX = window.pageXOffset; - - return { - width: rect.width, - height: rect.height, - offset: { - top: rect.top + winY, - left: rect.left + winX - }, - parentDims: { - width: parRect.width, - height: parRect.height, - offset: { - top: parRect.top + winY, - left: parRect.left + winX - } - }, - windowDims: { - width: winRect.width, - height: winRect.height, - offset: { - top: winY, - left: winX - } - } - }; -} - -/** - * Returns an object of top and left integer pixel values for dynamically rendered elements, - * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where - * you don't know alignment, but generally from - * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment. - * @function - * @param {jQuery} element - jQuery object for the element being positioned. - * @param {jQuery} anchor - jQuery object for the element's anchor point. - * @param {String} position - a string relating to the desired position of the element, relative to it's anchor - * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element. - * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element. - * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset. - * TODO alter/rewrite to work with `em` values as well/instead of pixels - */ -function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) { - console.log("NOTE: GetOffsets is deprecated in favor of GetExplicitOffsets and will be removed in 6.5"); - switch (position) { - case 'top': - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__foundation_util_core__["b" /* rtl */])() ? GetExplicitOffsets(element, anchor, 'top', 'left', vOffset, hOffset, isOverflow) : GetExplicitOffsets(element, anchor, 'top', 'right', vOffset, hOffset, isOverflow); - case 'bottom': - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__foundation_util_core__["b" /* rtl */])() ? GetExplicitOffsets(element, anchor, 'bottom', 'left', vOffset, hOffset, isOverflow) : GetExplicitOffsets(element, anchor, 'bottom', 'right', vOffset, hOffset, isOverflow); - case 'center top': - return GetExplicitOffsets(element, anchor, 'top', 'center', vOffset, hOffset, isOverflow); - case 'center bottom': - return GetExplicitOffsets(element, anchor, 'bottom', 'center', vOffset, hOffset, isOverflow); - case 'center left': - return GetExplicitOffsets(element, anchor, 'left', 'center', vOffset, hOffset, isOverflow); - case 'center right': - return GetExplicitOffsets(element, anchor, 'right', 'center', vOffset, hOffset, isOverflow); - case 'left bottom': - return GetExplicitOffsets(element, anchor, 'bottom', 'left', vOffset, hOffset, isOverflow); - case 'right bottom': - return GetExplicitOffsets(element, anchor, 'bottom', 'right', vOffset, hOffset, isOverflow); - // Backwards compatibility... this along with the reveal and reveal full - // classes are the only ones that didn't reference anchor - case 'center': - return { - left: $eleDims.windowDims.offset.left + $eleDims.windowDims.width / 2 - $eleDims.width / 2 + hOffset, - top: $eleDims.windowDims.offset.top + $eleDims.windowDims.height / 2 - ($eleDims.height / 2 + vOffset) - }; - case 'reveal': - return { - left: ($eleDims.windowDims.width - $eleDims.width) / 2 + hOffset, - top: $eleDims.windowDims.offset.top + vOffset - }; - case 'reveal full': - return { - left: $eleDims.windowDims.offset.left, - top: $eleDims.windowDims.offset.top - }; - break; - default: - return { - left: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__foundation_util_core__["b" /* rtl */])() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset : $anchorDims.offset.left + hOffset, - top: $anchorDims.offset.top + $anchorDims.height + vOffset - }; - - } -} - -function GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) { - var $eleDims = GetDimensions(element), - $anchorDims = anchor ? GetDimensions(anchor) : null; - - var topVal, leftVal; - - // set position related attribute - - switch (position) { - case 'top': - topVal = $anchorDims.offset.top - ($eleDims.height + vOffset); - break; - case 'bottom': - topVal = $anchorDims.offset.top + $anchorDims.height + vOffset; - break; - case 'left': - leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset); - break; - case 'right': - leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset; - break; - } - - // set alignment related attribute - switch (position) { - case 'top': - case 'bottom': - switch (alignment) { - case 'left': - leftVal = $anchorDims.offset.left + hOffset; - break; - case 'right': - leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset; - break; - case 'center': - leftVal = isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2 + hOffset; - break; - } - break; - case 'right': - case 'left': - switch (alignment) { - case 'bottom': - topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height; - break; - case 'top': - topVal = $anchorDims.offset.top + vOffset; - break; - case 'center': - topVal = $anchorDims.offset.top + vOffset + $anchorDims.height / 2 - $eleDims.height / 2; - break; - } - break; - } - return { top: topVal, left: leftVal }; -} - - - -/***/ }), -/* 8 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return onImagesLoaded; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); - - - - -/** - * Runs a callback function when images are fully loaded. - * @param {Object} images - Image(s) to check if loaded. - * @param {Func} callback - Function to execute when image is fully loaded. - */ -function onImagesLoaded(images, callback) { - var self = this, - unloaded = images.length; - - if (unloaded === 0) { - callback(); - } - - images.each(function () { - // Check if image is loaded - if (this.complete && this.naturalWidth !== undefined) { - singleImageLoaded(); - } else { - // If the above check failed, simulate loading on detached element. - var image = new Image(); - // Still count image as loaded if it finalizes with an error. - var events = "load.zf.images error.zf.images"; - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(image).one(events, function me(event) { - // Unbind the event listeners. We're using 'one' but only one of the two events will have fired. - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).off(events, me); - singleImageLoaded(); - }); - image.src = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).attr('src'); - } - }); - - function singleImageLoaded() { - unloaded--; - if (unloaded === 0) { - callback(); - } - } -} - - - -/***/ }), -/* 9 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Nest; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); - - - - -var Nest = { - Feather: function (menu) { - var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'zf'; - - menu.attr('role', 'menubar'); - - var items = menu.find('li').attr({ 'role': 'menuitem' }), - subMenuClass = 'is-' + type + '-submenu', - subItemClass = subMenuClass + '-item', - hasSubClass = 'is-' + type + '-submenu-parent', - applyAria = type !== 'accordion'; // Accordions handle their own ARIA attriutes. - - items.each(function () { - var $item = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - $sub = $item.children('ul'); - - if ($sub.length) { - $item.addClass(hasSubClass); - $sub.addClass('submenu ' + subMenuClass).attr({ 'data-submenu': '' }); - if (applyAria) { - $item.attr({ - 'aria-haspopup': true, - 'aria-label': $item.children('a:first').text() - }); - // Note: Drilldowns behave differently in how they hide, and so need - // additional attributes. We should look if this possibly over-generalized - // utility (Nest) is appropriate when we rework menus in 6.4 - if (type === 'drilldown') { - $item.attr({ 'aria-expanded': false }); - } - } - $sub.addClass('submenu ' + subMenuClass).attr({ - 'data-submenu': '', - 'role': 'menu' - }); - if (type === 'drilldown') { - $sub.attr({ 'aria-hidden': true }); - } - } - - if ($item.parent('[data-submenu]').length) { - $item.addClass('is-submenu-item ' + subItemClass); - } - }); - - return; - }, - Burn: function (menu, type) { - var //items = menu.find('li'), - subMenuClass = 'is-' + type + '-submenu', - subItemClass = subMenuClass + '-item', - hasSubClass = 'is-' + type + '-submenu-parent'; - - menu.find('>li, .menu, .menu > li').removeClass(subMenuClass + ' ' + subItemClass + ' ' + hasSubClass + ' is-submenu-item submenu is-active').removeAttr('data-submenu').css('display', ''); - } -}; - - - -/***/ }), -/* 10 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Accordion; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation_util_core__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation_plugin__ = __webpack_require__(2); - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - - - -/** - * Accordion module. - * @module foundation.accordion - * @requires foundation.util.keyboard - */ - -var Accordion = function (_Plugin) { - _inherits(Accordion, _Plugin); - - function Accordion() { - _classCallCheck(this, Accordion); - - return _possibleConstructorReturn(this, (Accordion.__proto__ || Object.getPrototypeOf(Accordion)).apply(this, arguments)); - } - - _createClass(Accordion, [{ - key: '_setup', - - /** - * Creates a new instance of an accordion. - * @class - * @name Accordion - * @fires Accordion#init - * @param {jQuery} element - jQuery object to make into an accordion. - * @param {Object} options - a plain object with settings to override the default options. - */ - value: function _setup(element, options) { - this.$element = element; - this.options = __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend({}, Accordion.defaults, this.$element.data(), options); - - this.className = 'Accordion'; // ie9 back compat - this._init(); - - __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__["a" /* Keyboard */].register('Accordion', { - 'ENTER': 'toggle', - 'SPACE': 'toggle', - 'ARROW_DOWN': 'next', - 'ARROW_UP': 'previous' - }); - } - - /** - * Initializes the accordion by animating the preset active pane(s). - * @private - */ - - }, { - key: '_init', - value: function _init() { - var _this3 = this; - - this.$element.attr('role', 'tablist'); - this.$tabs = this.$element.children('[data-accordion-item]'); - - this.$tabs.each(function (idx, el) { - var $el = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(el), - $content = $el.children('[data-tab-content]'), - id = $content[0].id || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__foundation_util_core__["a" /* GetYoDigits */])(6, 'accordion'), - linkId = el.id || id + '-label'; - - $el.find('a:first').attr({ - 'aria-controls': id, - 'role': 'tab', - 'id': linkId, - 'aria-expanded': false, - 'aria-selected': false - }); - - $content.attr({ 'role': 'tabpanel', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id }); - }); - var $initActive = this.$element.find('.is-active').children('[data-tab-content]'); - this.firstTimeInit = true; - if ($initActive.length) { - this.down($initActive, this.firstTimeInit); - this.firstTimeInit = false; - } - - this._checkDeepLink = function () { - var anchor = window.location.hash; - //need a hash and a relevant anchor in this tabset - if (anchor.length) { - var $link = _this3.$element.find('[href$="' + anchor + '"]'), - $anchor = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(anchor); - - if ($link.length && $anchor) { - if (!$link.parent('[data-accordion-item]').hasClass('is-active')) { - _this3.down($anchor, _this3.firstTimeInit); - _this3.firstTimeInit = false; - }; - - //roll up a little to show the titles - if (_this3.options.deepLinkSmudge) { - var _this = _this3; - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).load(function () { - var offset = _this.$element.offset(); - __WEBPACK_IMPORTED_MODULE_0_jquery___default()('html, body').animate({ scrollTop: offset.top }, _this.options.deepLinkSmudgeDelay); - }); - } - - /** - * Fires when the zplugin has deeplinked at pageload - * @event Accordion#deeplink - */ - _this3.$element.trigger('deeplink.zf.accordion', [$link, $anchor]); - } - } - }; - - //use browser to open a tab, if it exists in this tabset - if (this.options.deepLink) { - this._checkDeepLink(); - } - - this._events(); - } - - /** - * Adds event handlers for items within the accordion. - * @private - */ - - }, { - key: '_events', - value: function _events() { - var _this = this; - - this.$tabs.each(function () { - var $elem = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this); - var $tabContent = $elem.children('[data-tab-content]'); - if ($tabContent.length) { - $elem.children('a').off('click.zf.accordion keydown.zf.accordion').on('click.zf.accordion', function (e) { - e.preventDefault(); - _this.toggle($tabContent); - }).on('keydown.zf.accordion', function (e) { - __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__["a" /* Keyboard */].handleKey(e, 'Accordion', { - toggle: function () { - _this.toggle($tabContent); - }, - next: function () { - var $a = $elem.next().find('a').focus(); - if (!_this.options.multiExpand) { - $a.trigger('click.zf.accordion'); - } - }, - previous: function () { - var $a = $elem.prev().find('a').focus(); - if (!_this.options.multiExpand) { - $a.trigger('click.zf.accordion'); - } - }, - handled: function () { - e.preventDefault(); - e.stopPropagation(); - } - }); - }); - } - }); - if (this.options.deepLink) { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).on('popstate', this._checkDeepLink); - } - } - - /** - * Toggles the selected content pane's open/close state. - * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`). - * @function - */ - - }, { - key: 'toggle', - value: function toggle($target) { - if ($target.closest('[data-accordion]').is('[disabled]')) { - console.info('Cannot toggle an accordion that is disabled.'); - return; - } - if ($target.parent().hasClass('is-active')) { - this.up($target); - } else { - this.down($target); - } - //either replace or update browser history - if (this.options.deepLink) { - var anchor = $target.prev('a').attr('href'); - - if (this.options.updateHistory) { - history.pushState({}, '', anchor); - } else { - history.replaceState({}, '', anchor); - } - } - } - - /** - * Opens the accordion tab defined by `$target`. - * @param {jQuery} $target - Accordion pane to open (`.accordion-content`). - * @param {Boolean} firstTime - flag to determine if reflow should happen. - * @fires Accordion#down - * @function - */ - - }, { - key: 'down', - value: function down($target, firstTime) { - var _this4 = this; - - /** - * checking firstTime allows for initial render of the accordion - * to render preset is-active panes. - */ - if ($target.closest('[data-accordion]').is('[disabled]') && !firstTime) { - console.info('Cannot call down on an accordion that is disabled.'); - return; - } - $target.attr('aria-hidden', false).parent('[data-tab-content]').addBack().parent().addClass('is-active'); - - if (!this.options.multiExpand && !firstTime) { - var $currentActive = this.$element.children('.is-active').children('[data-tab-content]'); - if ($currentActive.length) { - this.up($currentActive.not($target)); - } - } - - $target.slideDown(this.options.slideSpeed, function () { - /** - * Fires when the tab is done opening. - * @event Accordion#down - */ - _this4.$element.trigger('down.zf.accordion', [$target]); - }); - - __WEBPACK_IMPORTED_MODULE_0_jquery___default()('#' + $target.attr('aria-labelledby')).attr({ - 'aria-expanded': true, - 'aria-selected': true - }); - } - - /** - * Closes the tab defined by `$target`. - * @param {jQuery} $target - Accordion tab to close (`.accordion-content`). - * @fires Accordion#up - * @function - */ - - }, { - key: 'up', - value: function up($target) { - if ($target.closest('[data-accordion]').is('[disabled]')) { - console.info('Cannot call up on an accordion that is disabled.'); - return; - } - - var $aunts = $target.parent().siblings(), - _this = this; - - if (!this.options.allowAllClosed && !$aunts.hasClass('is-active') || !$target.parent().hasClass('is-active')) { - return; - } - - $target.slideUp(_this.options.slideSpeed, function () { - /** - * Fires when the tab is done collapsing up. - * @event Accordion#up - */ - _this.$element.trigger('up.zf.accordion', [$target]); - }); - - $target.attr('aria-hidden', true).parent().removeClass('is-active'); - - __WEBPACK_IMPORTED_MODULE_0_jquery___default()('#' + $target.attr('aria-labelledby')).attr({ - 'aria-expanded': false, - 'aria-selected': false - }); - } - - /** - * Destroys an instance of an accordion. - * @fires Accordion#destroyed - * @function - */ - - }, { - key: '_destroy', - value: function _destroy() { - this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', ''); - this.$element.find('a').off('.zf.accordion'); - if (this.options.deepLink) { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).off('popstate', this._checkDeepLink); - } - } - }]); - - return Accordion; -}(__WEBPACK_IMPORTED_MODULE_3__foundation_plugin__["a" /* Plugin */]); - -Accordion.defaults = { - /** - * Amount of time to animate the opening of an accordion pane. - * @option - * @type {number} - * @default 250 - */ - slideSpeed: 250, - /** - * Allow the accordion to have multiple open panes. - * @option - * @type {boolean} - * @default false - */ - multiExpand: false, - /** - * Allow the accordion to close all panes. - * @option - * @type {boolean} - * @default false - */ - allowAllClosed: false, - /** - * Allows the window to scroll to content of pane specified by hash anchor - * @option - * @type {boolean} - * @default false - */ - deepLink: false, - - /** - * Adjust the deep link scroll to make sure the top of the accordion panel is visible - * @option - * @type {boolean} - * @default false - */ - deepLinkSmudge: false, - - /** - * Animation time (ms) for the deep link adjustment - * @option - * @type {number} - * @default 300 - */ - deepLinkSmudgeDelay: 300, - - /** - * Update the browser history with the open accordion - * @option - * @type {boolean} - * @default false - */ - updateHistory: false -}; - - - -/***/ }), -/* 11 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AccordionMenu; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation_util_nest__ = __webpack_require__(9); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation_util_core__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation_plugin__ = __webpack_require__(2); - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - - - - -/** - * AccordionMenu module. - * @module foundation.accordionMenu - * @requires foundation.util.keyboard - * @requires foundation.util.nest - */ - -var AccordionMenu = function (_Plugin) { - _inherits(AccordionMenu, _Plugin); - - function AccordionMenu() { - _classCallCheck(this, AccordionMenu); - - return _possibleConstructorReturn(this, (AccordionMenu.__proto__ || Object.getPrototypeOf(AccordionMenu)).apply(this, arguments)); - } - - _createClass(AccordionMenu, [{ - key: '_setup', - - /** - * Creates a new instance of an accordion menu. - * @class - * @name AccordionMenu - * @fires AccordionMenu#init - * @param {jQuery} element - jQuery object to make into an accordion menu. - * @param {Object} options - Overrides to the default plugin settings. - */ - value: function _setup(element, options) { - this.$element = element; - this.options = __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend({}, AccordionMenu.defaults, this.$element.data(), options); - this.className = 'AccordionMenu'; // ie9 back compat - - __WEBPACK_IMPORTED_MODULE_2__foundation_util_nest__["a" /* Nest */].Feather(this.$element, 'accordion'); - - this._init(); - - __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__["a" /* Keyboard */].register('AccordionMenu', { - 'ENTER': 'toggle', - 'SPACE': 'toggle', - 'ARROW_RIGHT': 'open', - 'ARROW_UP': 'up', - 'ARROW_DOWN': 'down', - 'ARROW_LEFT': 'close', - 'ESCAPE': 'closeAll' - }); - } - - /** - * Initializes the accordion menu by hiding all nested menus. - * @private - */ - - }, { - key: '_init', - value: function _init() { - var _this = this; - - this.$element.find('[data-submenu]').not('.is-active').slideUp(0); //.find('a').css('padding-left', '1rem'); - this.$element.attr({ - 'role': 'tree', - 'aria-multiselectable': this.options.multiOpen - }); - - this.$menuLinks = this.$element.find('.is-accordion-submenu-parent'); - this.$menuLinks.each(function () { - var linkId = this.id || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__foundation_util_core__["a" /* GetYoDigits */])(6, 'acc-menu-link'), - $elem = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - $sub = $elem.children('[data-submenu]'), - subId = $sub[0].id || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__foundation_util_core__["a" /* GetYoDigits */])(6, 'acc-menu'), - isActive = $sub.hasClass('is-active'); - - if (_this.options.submenuToggle) { - $elem.addClass('has-submenu-toggle'); - $elem.children('a').after(''); - } else { - $elem.attr({ - 'aria-controls': subId, - 'aria-expanded': isActive, - 'id': linkId - }); - } - $sub.attr({ - 'aria-labelledby': linkId, - 'aria-hidden': !isActive, - 'role': 'group', - 'id': subId - }); - }); - this.$element.find('li').attr({ - 'role': 'treeitem' - }); - var initPanes = this.$element.find('.is-active'); - if (initPanes.length) { - var _this = this; - initPanes.each(function () { - _this.down(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this)); - }); - } - this._events(); - } - - /** - * Adds event handlers for items within the menu. - * @private - */ - - }, { - key: '_events', - value: function _events() { - var _this = this; - - this.$element.find('li').each(function () { - var $submenu = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).children('[data-submenu]'); - - if ($submenu.length) { - if (_this.options.submenuToggle) { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) { - _this.toggle($submenu); - }); - } else { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) { - e.preventDefault(); - _this.toggle($submenu); - }); - } - } - }).on('keydown.zf.accordionmenu', function (e) { - var $element = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - $elements = $element.parent('ul').children('li'), - $prevElement, - $nextElement, - $target = $element.children('[data-submenu]'); - - $elements.each(function (i) { - if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).is($element)) { - $prevElement = $elements.eq(Math.max(0, i - 1)).find('a').first(); - $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)).find('a').first(); - - if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).children('[data-submenu]:visible').length) { - // has open sub menu - $nextElement = $element.find('li:first-child').find('a').first(); - } - if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).is(':first-child')) { - // is first element of sub menu - $prevElement = $element.parents('li').first().find('a').first(); - } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { - // if previous element has open sub menu - $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first(); - } - if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).is(':last-child')) { - // is last element of sub menu - $nextElement = $element.parents('li').first().next('li').find('a').first(); - } - - return; - } - }); - - __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__["a" /* Keyboard */].handleKey(e, 'AccordionMenu', { - open: function () { - if ($target.is(':hidden')) { - _this.down($target); - $target.find('li').first().find('a').first().focus(); - } - }, - close: function () { - if ($target.length && !$target.is(':hidden')) { - // close active sub of this item - _this.up($target); - } else if ($element.parent('[data-submenu]').length) { - // close currently open sub - _this.up($element.parent('[data-submenu]')); - $element.parents('li').first().find('a').first().focus(); - } - }, - up: function () { - $prevElement.focus(); - return true; - }, - down: function () { - $nextElement.focus(); - return true; - }, - toggle: function () { - if (_this.options.submenuToggle) { - return false; - } - if ($element.children('[data-submenu]').length) { - _this.toggle($element.children('[data-submenu]')); - return true; - } - }, - closeAll: function () { - _this.hideAll(); - }, - handled: function (preventDefault) { - if (preventDefault) { - e.preventDefault(); - } - e.stopImmediatePropagation(); - } - }); - }); //.attr('tabindex', 0); - } - - /** - * Closes all panes of the menu. - * @function - */ - - }, { - key: 'hideAll', - value: function hideAll() { - this.up(this.$element.find('[data-submenu]')); - } - - /** - * Opens all panes of the menu. - * @function - */ - - }, { - key: 'showAll', - value: function showAll() { - this.down(this.$element.find('[data-submenu]')); - } - - /** - * Toggles the open/close state of a submenu. - * @function - * @param {jQuery} $target - the submenu to toggle - */ - - }, { - key: 'toggle', - value: function toggle($target) { - if (!$target.is(':animated')) { - if (!$target.is(':hidden')) { - this.up($target); - } else { - this.down($target); - } - } - } - - /** - * Opens the sub-menu defined by `$target`. - * @param {jQuery} $target - Sub-menu to open. - * @fires AccordionMenu#down - */ - - }, { - key: 'down', - value: function down($target) { - var _this = this; - - if (!this.options.multiOpen) { - this.up(this.$element.find('.is-active').not($target.parentsUntil(this.$element).add($target))); - } - - $target.addClass('is-active').attr({ 'aria-hidden': false }); - - if (this.options.submenuToggle) { - $target.prev('.submenu-toggle').attr({ 'aria-expanded': true }); - } else { - $target.parent('.is-accordion-submenu-parent').attr({ 'aria-expanded': true }); - } - - $target.slideDown(_this.options.slideSpeed, function () { - /** - * Fires when the menu is done opening. - * @event AccordionMenu#down - */ - _this.$element.trigger('down.zf.accordionMenu', [$target]); - }); - } - - /** - * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well. - * @param {jQuery} $target - Sub-menu to close. - * @fires AccordionMenu#up - */ - - }, { - key: 'up', - value: function up($target) { - var _this = this; - $target.slideUp(_this.options.slideSpeed, function () { - /** - * Fires when the menu is done collapsing up. - * @event AccordionMenu#up - */ - _this.$element.trigger('up.zf.accordionMenu', [$target]); - }); - - var $menus = $target.find('[data-submenu]').slideUp(0).addBack().attr('aria-hidden', true); - - if (this.options.submenuToggle) { - $menus.prev('.submenu-toggle').attr('aria-expanded', false); - } else { - $menus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false); - } - } - - /** - * Destroys an instance of accordion menu. - * @fires AccordionMenu#destroyed - */ - - }, { - key: '_destroy', - value: function _destroy() { - this.$element.find('[data-submenu]').slideDown(0).css('display', ''); - this.$element.find('a').off('click.zf.accordionMenu'); - - if (this.options.submenuToggle) { - this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle'); - this.$element.find('.submenu-toggle').remove(); - } - - __WEBPACK_IMPORTED_MODULE_2__foundation_util_nest__["a" /* Nest */].Burn(this.$element, 'accordion'); - } - }]); - - return AccordionMenu; -}(__WEBPACK_IMPORTED_MODULE_4__foundation_plugin__["a" /* Plugin */]); - -AccordionMenu.defaults = { - /** - * Amount of time to animate the opening of a submenu in ms. - * @option - * @type {number} - * @default 250 - */ - slideSpeed: 250, - /** - * Adds a separate submenu toggle button. This allows the parent item to have a link. - * @option - * @example true - */ - submenuToggle: false, - /** - * The text used for the submenu toggle if enabled. This is used for screen readers only. - * @option - * @example true - */ - submenuToggleText: 'Toggle menu', - /** - * Allow the menu to have multiple open panes. - * @option - * @type {boolean} - * @default true - */ - multiOpen: true -}; - - - -/***/ }), -/* 12 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Drilldown; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation_util_nest__ = __webpack_require__(9); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation_util_core__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation_util_box__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__foundation_plugin__ = __webpack_require__(2); - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - - - - - -/** - * Drilldown module. - * @module foundation.drilldown - * @requires foundation.util.keyboard - * @requires foundation.util.nest - * @requires foundation.util.box - */ - -var Drilldown = function (_Plugin) { - _inherits(Drilldown, _Plugin); - - function Drilldown() { - _classCallCheck(this, Drilldown); - - return _possibleConstructorReturn(this, (Drilldown.__proto__ || Object.getPrototypeOf(Drilldown)).apply(this, arguments)); - } - - _createClass(Drilldown, [{ - key: '_setup', - - /** - * Creates a new instance of a drilldown menu. - * @class - * @name Drilldown - * @param {jQuery} element - jQuery object to make into an accordion menu. - * @param {Object} options - Overrides to the default plugin settings. - */ - value: function _setup(element, options) { - this.$element = element; - this.options = __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend({}, Drilldown.defaults, this.$element.data(), options); - this.className = 'Drilldown'; // ie9 back compat - - __WEBPACK_IMPORTED_MODULE_2__foundation_util_nest__["a" /* Nest */].Feather(this.$element, 'drilldown'); - - this._init(); - - __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__["a" /* Keyboard */].register('Drilldown', { - 'ENTER': 'open', - 'SPACE': 'open', - 'ARROW_RIGHT': 'next', - 'ARROW_UP': 'up', - 'ARROW_DOWN': 'down', - 'ARROW_LEFT': 'previous', - 'ESCAPE': 'close', - 'TAB': 'down', - 'SHIFT_TAB': 'up' - }); - } - - /** - * Initializes the drilldown by creating jQuery collections of elements - * @private - */ - - }, { - key: '_init', - value: function _init() { - if (this.options.autoApplyClass) { - this.$element.addClass('drilldown'); - } - - this.$element.attr({ - 'role': 'tree', - 'aria-multiselectable': false - }); - this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a'); - this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group'); - this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'treeitem').find('a'); - this.$element.attr('data-mutate', this.$element.attr('data-drilldown') || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__foundation_util_core__["a" /* GetYoDigits */])(6, 'drilldown')); - - this._prepareMenu(); - this._registerEvents(); - - this._keyboardEvents(); - } - - /** - * prepares drilldown menu by setting attributes to links and elements - * sets a min height to prevent content jumping - * wraps the element if not already wrapped - * @private - * @function - */ - - }, { - key: '_prepareMenu', - value: function _prepareMenu() { - var _this = this; - // if(!this.options.holdOpen){ - // this._menuLinkEvents(); - // } - this.$submenuAnchors.each(function () { - var $link = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this); - var $sub = $link.parent(); - if (_this.options.parentLink) { - $link.clone().prependTo($sub.children('[data-submenu]')).wrap('
  • '); - } - $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0); - $link.children('[data-submenu]').attr({ - 'aria-hidden': true, - 'tabindex': 0, - 'role': 'group' - }); - _this._events($link); - }); - this.$submenus.each(function () { - var $menu = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - $back = $menu.find('.js-drilldown-back'); - if (!$back.length) { - switch (_this.options.backButtonPosition) { - case "bottom": - $menu.append(_this.options.backButton); - break; - case "top": - $menu.prepend(_this.options.backButton); - break; - default: - console.error("Unsupported backButtonPosition value '" + _this.options.backButtonPosition + "'"); - } - } - _this._back($menu); - }); - - this.$submenus.addClass('invisible'); - if (!this.options.autoHeight) { - this.$submenus.addClass('drilldown-submenu-cover-previous'); - } - - // create a wrapper on element if it doesn't exist. - if (!this.$element.parent().hasClass('is-drilldown')) { - this.$wrapper = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this.options.wrapper).addClass('is-drilldown'); - if (this.options.animateHeight) this.$wrapper.addClass('animate-height'); - this.$element.wrap(this.$wrapper); - } - // set wrapper - this.$wrapper = this.$element.parent(); - this.$wrapper.css(this._getMaxDims()); - } - }, { - key: '_resize', - value: function _resize() { - this.$wrapper.css({ 'max-width': 'none', 'min-height': 'none' }); - // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths - this.$wrapper.css(this._getMaxDims()); - } - - /** - * Adds event handlers to elements in the menu. - * @function - * @private - * @param {jQuery} $elem - the current menu item to add handlers to. - */ - - }, { - key: '_events', - value: function _events($elem) { - var _this = this; - - $elem.off('click.zf.drilldown').on('click.zf.drilldown', function (e) { - if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')) { - e.stopImmediatePropagation(); - e.preventDefault(); - } - - // if(e.target !== e.currentTarget.firstElementChild){ - // return false; - // } - _this._show($elem.parent('li')); - - if (_this.options.closeOnClick) { - var $body = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('body'); - $body.off('.zf.drilldown').on('click.zf.drilldown', function (e) { - if (e.target === _this.$element[0] || __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.contains(_this.$element[0], e.target)) { - return; - } - e.preventDefault(); - _this._hideAll(); - $body.off('.zf.drilldown'); - }); - } - }); - } - - /** - * Adds event handlers to the menu element. - * @function - * @private - */ - - }, { - key: '_registerEvents', - value: function _registerEvents() { - if (this.options.scrollTop) { - this._bindHandler = this._scrollTop.bind(this); - this.$element.on('open.zf.drilldown hide.zf.drilldown closed.zf.drilldown', this._bindHandler); - } - this.$element.on('mutateme.zf.trigger', this._resize.bind(this)); - } - - /** - * Scroll to Top of Element or data-scroll-top-element - * @function - * @fires Drilldown#scrollme - */ - - }, { - key: '_scrollTop', - value: function _scrollTop() { - var _this = this; - var $scrollTopElement = _this.options.scrollTopElement != '' ? __WEBPACK_IMPORTED_MODULE_0_jquery___default()(_this.options.scrollTopElement) : _this.$element, - scrollPos = parseInt($scrollTopElement.offset().top + _this.options.scrollTopOffset, 10); - __WEBPACK_IMPORTED_MODULE_0_jquery___default()('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing, function () { - /** - * Fires after the menu has scrolled - * @event Drilldown#scrollme - */ - if (this === __WEBPACK_IMPORTED_MODULE_0_jquery___default()('html')[0]) _this.$element.trigger('scrollme.zf.drilldown'); - }); - } - - /** - * Adds keydown event listener to `li`'s in the menu. - * @private - */ - - }, { - key: '_keyboardEvents', - value: function _keyboardEvents() { - var _this = this; - - this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function (e) { - var $element = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - $elements = $element.parent('li').parent('ul').children('li').children('a'), - $prevElement, - $nextElement; - - $elements.each(function (i) { - if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).is($element)) { - $prevElement = $elements.eq(Math.max(0, i - 1)); - $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)); - return; - } - }); - - __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__["a" /* Keyboard */].handleKey(e, 'Drilldown', { - next: function () { - if ($element.is(_this.$submenuAnchors)) { - _this._show($element.parent('li')); - $element.parent('li').one(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__foundation_util_core__["c" /* transitionend */])($element), function () { - $element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus(); - }); - return true; - } - }, - previous: function () { - _this._hide($element.parent('li').parent('ul')); - $element.parent('li').parent('ul').one(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__foundation_util_core__["c" /* transitionend */])($element), function () { - setTimeout(function () { - $element.parent('li').parent('ul').parent('li').children('a').first().focus(); - }, 1); - }); - return true; - }, - up: function () { - $prevElement.focus(); - // Don't tap focus on first element in root ul - return !$element.is(_this.$element.find('> li:first-child > a')); - }, - down: function () { - $nextElement.focus(); - // Don't tap focus on last element in root ul - return !$element.is(_this.$element.find('> li:last-child > a')); - }, - close: function () { - // Don't close on element in root ul - if (!$element.is(_this.$element.find('> li > a'))) { - _this._hide($element.parent().parent()); - $element.parent().parent().siblings('a').focus(); - } - }, - open: function () { - if (!$element.is(_this.$menuItems)) { - // not menu item means back button - _this._hide($element.parent('li').parent('ul')); - $element.parent('li').parent('ul').one(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__foundation_util_core__["c" /* transitionend */])($element), function () { - setTimeout(function () { - $element.parent('li').parent('ul').parent('li').children('a').first().focus(); - }, 1); - }); - return true; - } else if ($element.is(_this.$submenuAnchors)) { - _this._show($element.parent('li')); - $element.parent('li').one(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__foundation_util_core__["c" /* transitionend */])($element), function () { - $element.parent('li').find('ul li a').filter(_this.$menuItems).first().focus(); - }); - return true; - } - }, - handled: function (preventDefault) { - if (preventDefault) { - e.preventDefault(); - } - e.stopImmediatePropagation(); - } - }); - }); // end keyboardAccess - } - - /** - * Closes all open elements, and returns to root menu. - * @function - * @fires Drilldown#closed - */ - - }, { - key: '_hideAll', - value: function _hideAll() { - var $elem = this.$element.find('.is-drilldown-submenu.is-active').addClass('is-closing'); - if (this.options.autoHeight) this.$wrapper.css({ height: $elem.parent().closest('ul').data('calcHeight') }); - $elem.one(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__foundation_util_core__["c" /* transitionend */])($elem), function (e) { - $elem.removeClass('is-active is-closing'); - }); - /** - * Fires when the menu is fully closed. - * @event Drilldown#closed - */ - this.$element.trigger('closed.zf.drilldown'); - } - - /** - * Adds event listener for each `back` button, and closes open menus. - * @function - * @fires Drilldown#back - * @param {jQuery} $elem - the current sub-menu to add `back` event. - */ - - }, { - key: '_back', - value: function _back($elem) { - var _this = this; - $elem.off('click.zf.drilldown'); - $elem.children('.js-drilldown-back').on('click.zf.drilldown', function (e) { - e.stopImmediatePropagation(); - // console.log('mouseup on back'); - _this._hide($elem); - - // If there is a parent submenu, call show - var parentSubMenu = $elem.parent('li').parent('ul').parent('li'); - if (parentSubMenu.length) { - _this._show(parentSubMenu); - } - }); - } - - /** - * Adds event listener to menu items w/o submenus to close open menus on click. - * @function - * @private - */ - - }, { - key: '_menuLinkEvents', - value: function _menuLinkEvents() { - var _this = this; - this.$menuItems.not('.is-drilldown-submenu-parent').off('click.zf.drilldown').on('click.zf.drilldown', function (e) { - // e.stopImmediatePropagation(); - setTimeout(function () { - _this._hideAll(); - }, 0); - }); - } - - /** - * Opens a submenu. - * @function - * @fires Drilldown#open - * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag. - */ - - }, { - key: '_show', - value: function _show($elem) { - if (this.options.autoHeight) this.$wrapper.css({ height: $elem.children('[data-submenu]').data('calcHeight') }); - $elem.attr('aria-expanded', true); - $elem.children('[data-submenu]').addClass('is-active').removeClass('invisible').attr('aria-hidden', false); - /** - * Fires when the submenu has opened. - * @event Drilldown#open - */ - this.$element.trigger('open.zf.drilldown', [$elem]); - } - }, { - key: '_hide', - - - /** - * Hides a submenu - * @function - * @fires Drilldown#hide - * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag. - */ - value: function _hide($elem) { - if (this.options.autoHeight) this.$wrapper.css({ height: $elem.parent().closest('ul').data('calcHeight') }); - var _this = this; - $elem.parent('li').attr('aria-expanded', false); - $elem.attr('aria-hidden', true).addClass('is-closing'); - $elem.addClass('is-closing').one(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__foundation_util_core__["c" /* transitionend */])($elem), function () { - $elem.removeClass('is-active is-closing'); - $elem.blur().addClass('invisible'); - }); - /** - * Fires when the submenu has closed. - * @event Drilldown#hide - */ - $elem.trigger('hide.zf.drilldown', [$elem]); - } - - /** - * Iterates through the nested menus to calculate the min-height, and max-width for the menu. - * Prevents content jumping. - * @function - * @private - */ - - }, { - key: '_getMaxDims', - value: function _getMaxDims() { - var maxHeight = 0, - result = {}, - _this = this; - this.$submenus.add(this.$element).each(function () { - var numOfElems = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).children('li').length; - var height = __WEBPACK_IMPORTED_MODULE_4__foundation_util_box__["a" /* Box */].GetDimensions(this).height; - maxHeight = height > maxHeight ? height : maxHeight; - if (_this.options.autoHeight) { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).data('calcHeight', height); - if (!__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).hasClass('is-drilldown-submenu')) result['height'] = height; - } - }); - - if (!this.options.autoHeight) result['min-height'] = maxHeight + 'px'; - - result['max-width'] = this.$element[0].getBoundingClientRect().width + 'px'; - - return result; - } - - /** - * Destroys the Drilldown Menu - * @function - */ - - }, { - key: '_destroy', - value: function _destroy() { - if (this.options.scrollTop) this.$element.off('.zf.drilldown', this._bindHandler); - this._hideAll(); - this.$element.off('mutateme.zf.trigger'); - __WEBPACK_IMPORTED_MODULE_2__foundation_util_nest__["a" /* Nest */].Burn(this.$element, 'drilldown'); - 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'); - this.$submenuAnchors.each(function () { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).off('.zf.drilldown'); - }); - - this.$submenus.removeClass('drilldown-submenu-cover-previous invisible'); - - this.$element.find('a').each(function () { - var $link = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this); - $link.removeAttr('tabindex'); - if ($link.data('savedHref')) { - $link.attr('href', $link.data('savedHref')).removeData('savedHref'); - } else { - return; - } - }); - } - }]); - - return Drilldown; -}(__WEBPACK_IMPORTED_MODULE_5__foundation_plugin__["a" /* Plugin */]); - -Drilldown.defaults = { - /** - * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are - * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization. - * @option - * @type {boolian} - * @default true - */ - autoApplyClass: true, - /** - * 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. - * @option - * @type {string} - * @default '
  • Back
  • ' - */ - backButton: '
  • Back
  • ', - /** - * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`. - * @option - * @type {string} - * @default top - */ - backButtonPosition: 'top', - /** - * 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. - * @option - * @type {string} - * @default '
    ' - */ - wrapper: '
    ', - /** - * Adds the parent link to the submenu. - * @option - * @type {boolean} - * @default false - */ - parentLink: false, - /** - * Allow the menu to return to root list on body click. - * @option - * @type {boolean} - * @default false - */ - closeOnClick: false, - /** - * Allow the menu to auto adjust height. - * @option - * @type {boolean} - * @default false - */ - autoHeight: false, - /** - * Animate the auto adjust height. - * @option - * @type {boolean} - * @default false - */ - animateHeight: false, - /** - * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button - * @option - * @type {boolean} - * @default false - */ - scrollTop: false, - /** - * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken - * @option - * @type {string} - * @default '' - */ - scrollTopElement: '', - /** - * ScrollTop offset - * @option - * @type {number} - * @default 0 - */ - scrollTopOffset: 0, - /** - * Scroll animation duration - * @option - * @type {number} - * @default 500 - */ - animationDuration: 500, - /** - * Scroll animation easing. Can be `'swing'` or `'linear'`. - * @option - * @type {string} - * @see {@link https://api.jquery.com/animate|JQuery animate} - * @default 'swing' - */ - animationEasing: 'swing' - // holdOpen: false -}; - - - -/***/ }), -/* 13 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DropdownMenu; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation_util_nest__ = __webpack_require__(9); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation_util_box__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__foundation_util_core__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__foundation_plugin__ = __webpack_require__(2); - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - - - - - -/** - * DropdownMenu module. - * @module foundation.dropdown-menu - * @requires foundation.util.keyboard - * @requires foundation.util.box - * @requires foundation.util.nest - */ - -var DropdownMenu = function (_Plugin) { - _inherits(DropdownMenu, _Plugin); - - function DropdownMenu() { - _classCallCheck(this, DropdownMenu); - - return _possibleConstructorReturn(this, (DropdownMenu.__proto__ || Object.getPrototypeOf(DropdownMenu)).apply(this, arguments)); - } - - _createClass(DropdownMenu, [{ - key: '_setup', - - /** - * Creates a new instance of DropdownMenu. - * @class - * @name DropdownMenu - * @fires DropdownMenu#init - * @param {jQuery} element - jQuery object to make into a dropdown menu. - * @param {Object} options - Overrides to the default plugin settings. - */ - value: function _setup(element, options) { - this.$element = element; - this.options = __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend({}, DropdownMenu.defaults, this.$element.data(), options); - this.className = 'DropdownMenu'; // ie9 back compat - - __WEBPACK_IMPORTED_MODULE_2__foundation_util_nest__["a" /* Nest */].Feather(this.$element, 'dropdown'); - this._init(); - - __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__["a" /* Keyboard */].register('DropdownMenu', { - 'ENTER': 'open', - 'SPACE': 'open', - 'ARROW_RIGHT': 'next', - 'ARROW_UP': 'up', - 'ARROW_DOWN': 'down', - 'ARROW_LEFT': 'previous', - 'ESCAPE': 'close' - }); - } - - /** - * Initializes the plugin, and calls _prepareMenu - * @private - * @function - */ - - }, { - key: '_init', - value: function _init() { - var subs = this.$element.find('li.is-dropdown-submenu-parent'); - this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub'); - - this.$menuItems = this.$element.find('[role="menuitem"]'); - this.$tabs = this.$element.children('[role="menuitem"]'); - this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass); - - if (this.options.alignment === 'auto') { - if (this.$element.hasClass(this.options.rightClass) || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__foundation_util_core__["b" /* rtl */])() || this.$element.parents('.top-bar-right').is('*')) { - this.options.alignment = 'right'; - subs.addClass('opens-left'); - } else { - this.options.alignment = 'left'; - subs.addClass('opens-right'); - } - } else { - if (this.options.alignment === 'right') { - subs.addClass('opens-left'); - } else { - subs.addClass('opens-right'); - } - } - this.changed = false; - this._events(); - } - }, { - key: '_isVertical', - value: function _isVertical() { - return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column'; - } - }, { - key: '_isRtl', - value: function _isRtl() { - return this.$element.hasClass('align-right') || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4__foundation_util_core__["b" /* rtl */])() && !this.$element.hasClass('align-left'); - } - - /** - * Adds event listeners to elements within the menu - * @private - * @function - */ - - }, { - key: '_events', - value: function _events() { - var _this = this, - hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined', - parClass = 'is-dropdown-submenu-parent'; - - // used for onClick and in the keyboard handlers - var handleClickFn = function (e) { - var $elem = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(e.target).parentsUntil('ul', '.' + parClass), - hasSub = $elem.hasClass(parClass), - hasClicked = $elem.attr('data-is-click') === 'true', - $sub = $elem.children('.is-dropdown-submenu'); - - if (hasSub) { - if (hasClicked) { - if (!_this.options.closeOnClick || !_this.options.clickOpen && !hasTouch || _this.options.forceFollow && hasTouch) { - return; - } else { - e.stopImmediatePropagation(); - e.preventDefault(); - _this._hide($elem); - } - } else { - e.preventDefault(); - e.stopImmediatePropagation(); - _this._show($sub); - $elem.add($elem.parentsUntil(_this.$element, '.' + parClass)).attr('data-is-click', true); - } - } - }; - - if (this.options.clickOpen || hasTouch) { - this.$menuItems.on('click.zf.dropdownmenu touchstart.zf.dropdownmenu', handleClickFn); - } - - // Handle Leaf element Clicks - if (_this.options.closeOnClickInside) { - this.$menuItems.on('click.zf.dropdownmenu', function (e) { - var $elem = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - hasSub = $elem.hasClass(parClass); - if (!hasSub) { - _this._hide(); - } - }); - } - - if (!this.options.disableHover) { - this.$menuItems.on('mouseenter.zf.dropdownmenu', function (e) { - var $elem = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - hasSub = $elem.hasClass(parClass); - - if (hasSub) { - clearTimeout($elem.data('_delay')); - $elem.data('_delay', setTimeout(function () { - _this._show($elem.children('.is-dropdown-submenu')); - }, _this.options.hoverDelay)); - } - }).on('mouseleave.zf.dropdownmenu', function (e) { - var $elem = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - hasSub = $elem.hasClass(parClass); - if (hasSub && _this.options.autoclose) { - if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { - return false; - } - - clearTimeout($elem.data('_delay')); - $elem.data('_delay', setTimeout(function () { - _this._hide($elem); - }, _this.options.closingTime)); - } - }); - } - this.$menuItems.on('keydown.zf.dropdownmenu', function (e) { - var $element = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(e.target).parentsUntil('ul', '[role="menuitem"]'), - isTab = _this.$tabs.index($element) > -1, - $elements = isTab ? _this.$tabs : $element.siblings('li').add($element), - $prevElement, - $nextElement; - - $elements.each(function (i) { - if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).is($element)) { - $prevElement = $elements.eq(i - 1); - $nextElement = $elements.eq(i + 1); - return; - } - }); - - var nextSibling = function () { - if (!$element.is(':last-child')) { - $nextElement.children('a:first').focus(); - e.preventDefault(); - } - }, - prevSibling = function () { - $prevElement.children('a:first').focus(); - e.preventDefault(); - }, - openSub = function () { - var $sub = $element.children('ul.is-dropdown-submenu'); - if ($sub.length) { - _this._show($sub); - $element.find('li > a:first').focus(); - e.preventDefault(); - } else { - return; - } - }, - closeSub = function () { - //if ($element.is(':first-child')) { - var close = $element.parent('ul').parent('li'); - close.children('a:first').focus(); - _this._hide(close); - e.preventDefault(); - //} - }; - var functions = { - open: openSub, - close: function () { - _this._hide(_this.$element); - _this.$menuItems.eq(0).children('a').focus(); // focus to first element - e.preventDefault(); - }, - handled: function () { - e.stopImmediatePropagation(); - } - }; - - if (isTab) { - if (_this._isVertical()) { - // vertical menu - if (_this._isRtl()) { - // right aligned - __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend(functions, { - down: nextSibling, - up: prevSibling, - next: closeSub, - previous: openSub - }); - } else { - // left aligned - __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend(functions, { - down: nextSibling, - up: prevSibling, - next: openSub, - previous: closeSub - }); - } - } else { - // horizontal menu - if (_this._isRtl()) { - // right aligned - __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend(functions, { - next: prevSibling, - previous: nextSibling, - down: openSub, - up: closeSub - }); - } else { - // left aligned - __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend(functions, { - next: nextSibling, - previous: prevSibling, - down: openSub, - up: closeSub - }); - } - } - } else { - // not tabs -> one sub - if (_this._isRtl()) { - // right aligned - __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend(functions, { - next: closeSub, - previous: openSub, - down: nextSibling, - up: prevSibling - }); - } else { - // left aligned - __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend(functions, { - next: openSub, - previous: closeSub, - down: nextSibling, - up: prevSibling - }); - } - } - __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__["a" /* Keyboard */].handleKey(e, 'DropdownMenu', functions); - }); - } - - /** - * Adds an event handler to the body to close any dropdowns on a click. - * @function - * @private - */ - - }, { - key: '_addBodyHandler', - value: function _addBodyHandler() { - var $body = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(document.body), - _this = this; - $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu').on('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu', function (e) { - var $link = _this.$element.find(e.target); - if ($link.length) { - return; - } - - _this._hide(); - $body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu'); - }); - } - - /** - * Opens a dropdown pane, and checks for collisions first. - * @param {jQuery} $sub - ul element that is a submenu to show - * @function - * @private - * @fires DropdownMenu#show - */ - - }, { - key: '_show', - value: function _show($sub) { - var idx = this.$tabs.index(this.$tabs.filter(function (i, el) { - return __WEBPACK_IMPORTED_MODULE_0_jquery___default()(el).find($sub).length > 0; - })); - var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent'); - this._hide($sibs, idx); - $sub.css('visibility', 'hidden').addClass('js-dropdown-active').parent('li.is-dropdown-submenu-parent').addClass('is-active'); - var clear = __WEBPACK_IMPORTED_MODULE_3__foundation_util_box__["a" /* Box */].ImNotTouchingYou($sub, null, true); - if (!clear) { - var oldClass = this.options.alignment === 'left' ? '-right' : '-left', - $parentLi = $sub.parent('.is-dropdown-submenu-parent'); - $parentLi.removeClass('opens' + oldClass).addClass('opens-' + this.options.alignment); - clear = __WEBPACK_IMPORTED_MODULE_3__foundation_util_box__["a" /* Box */].ImNotTouchingYou($sub, null, true); - if (!clear) { - $parentLi.removeClass('opens-' + this.options.alignment).addClass('opens-inner'); - } - this.changed = true; - } - $sub.css('visibility', ''); - if (this.options.closeOnClick) { - this._addBodyHandler(); - } - /** - * Fires when the new dropdown pane is visible. - * @event DropdownMenu#show - */ - this.$element.trigger('show.zf.dropdownmenu', [$sub]); - } - - /** - * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything. - * @function - * @param {jQuery} $elem - element with a submenu to hide - * @param {Number} idx - index of the $tabs collection to hide - * @private - */ - - }, { - key: '_hide', - value: function _hide($elem, idx) { - var $toClose; - if ($elem && $elem.length) { - $toClose = $elem; - } else if (idx !== undefined) { - $toClose = this.$tabs.not(function (i, el) { - return i === idx; - }); - } else { - $toClose = this.$element; - } - var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0; - - if (somethingToClose) { - $toClose.find('li.is-active').add($toClose).attr({ - 'data-is-click': false - }).removeClass('is-active'); - - $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active'); - - if (this.changed || $toClose.find('opens-inner').length) { - var oldClass = this.options.alignment === 'left' ? 'right' : 'left'; - $toClose.find('li.is-dropdown-submenu-parent').add($toClose).removeClass('opens-inner opens-' + this.options.alignment).addClass('opens-' + oldClass); - this.changed = false; - } - /** - * Fires when the open menus are closed. - * @event DropdownMenu#hide - */ - this.$element.trigger('hide.zf.dropdownmenu', [$toClose]); - } - } - - /** - * Destroys the plugin. - * @function - */ - - }, { - key: '_destroy', - value: function _destroy() { - 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'); - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(document.body).off('.zf.dropdownmenu'); - __WEBPACK_IMPORTED_MODULE_2__foundation_util_nest__["a" /* Nest */].Burn(this.$element, 'dropdown'); - } - }]); - - return DropdownMenu; -}(__WEBPACK_IMPORTED_MODULE_5__foundation_plugin__["a" /* Plugin */]); - -/** - * Default settings for plugin - */ - - -DropdownMenu.defaults = { - /** - * Disallows hover events from opening submenus - * @option - * @type {boolean} - * @default false - */ - disableHover: false, - /** - * Allow a submenu to automatically close on a mouseleave event, if not clicked open. - * @option - * @type {boolean} - * @default true - */ - autoclose: true, - /** - * Amount of time to delay opening a submenu on hover event. - * @option - * @type {number} - * @default 50 - */ - hoverDelay: 50, - /** - * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu. - * @option - * @type {boolean} - * @default false - */ - clickOpen: false, - /** - * Amount of time to delay closing a submenu on a mouseleave event. - * @option - * @type {number} - * @default 500 - */ - - closingTime: 500, - /** - * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`. - * @option - * @type {string} - * @default 'auto' - */ - alignment: 'auto', - /** - * Allow clicks on the body to close any open submenus. - * @option - * @type {boolean} - * @default true - */ - closeOnClick: true, - /** - * Allow clicks on leaf anchor links to close any open submenus. - * @option - * @type {boolean} - * @default true - */ - closeOnClickInside: true, - /** - * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class. - * @option - * @type {string} - * @default 'vertical' - */ - verticalClass: 'vertical', - /** - * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class. - * @option - * @type {string} - * @default 'align-right' - */ - rightClass: 'align-right', - /** - * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile. - * @option - * @type {boolean} - * @default true - */ - forceFollow: true -}; - - - -/***/ }), -/* 14 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Tabs; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__ = __webpack_require__(4); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation_util_imageLoader__ = __webpack_require__(8); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__foundation_plugin__ = __webpack_require__(2); - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - - -/** - * Tabs module. - * @module foundation.tabs - * @requires foundation.util.keyboard - * @requires foundation.util.imageLoader if tabs contain images - */ - -var Tabs = function (_Plugin) { - _inherits(Tabs, _Plugin); - - function Tabs() { - _classCallCheck(this, Tabs); - - return _possibleConstructorReturn(this, (Tabs.__proto__ || Object.getPrototypeOf(Tabs)).apply(this, arguments)); - } - - _createClass(Tabs, [{ - key: '_setup', - - /** - * Creates a new instance of tabs. - * @class - * @name Tabs - * @fires Tabs#init - * @param {jQuery} element - jQuery object to make into tabs. - * @param {Object} options - Overrides to the default plugin settings. - */ - value: function _setup(element, options) { - this.$element = element; - this.options = __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend({}, Tabs.defaults, this.$element.data(), options); - this.className = 'Tabs'; // ie9 back compat - - this._init(); - __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__["a" /* Keyboard */].register('Tabs', { - 'ENTER': 'open', - 'SPACE': 'open', - 'ARROW_RIGHT': 'next', - 'ARROW_UP': 'previous', - 'ARROW_DOWN': 'next', - 'ARROW_LEFT': 'previous' - // 'TAB': 'next', - // 'SHIFT_TAB': 'previous' - }); - } - - /** - * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab. - * @private - */ - - }, { - key: '_init', - value: function _init() { - var _this3 = this; - - var _this = this; - - this.$element.attr({ 'role': 'tablist' }); - this.$tabTitles = this.$element.find('.' + this.options.linkClass); - this.$tabContent = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('[data-tabs-content="' + this.$element[0].id + '"]'); - - this.$tabTitles.each(function () { - var $elem = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - $link = $elem.find('a'), - isActive = $elem.hasClass('' + _this.options.linkActiveClass), - hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1), - linkId = $link[0].id ? $link[0].id : hash + '-label', - $tabContent = __WEBPACK_IMPORTED_MODULE_0_jquery___default()('#' + hash); - - $elem.attr({ 'role': 'presentation' }); - - $link.attr({ - 'role': 'tab', - 'aria-controls': hash, - 'aria-selected': isActive, - 'id': linkId, - 'tabindex': isActive ? '0' : '-1' - }); - - $tabContent.attr({ - 'role': 'tabpanel', - 'aria-labelledby': linkId - }); - - if (!isActive) { - $tabContent.attr('aria-hidden', 'true'); - } - - if (isActive && _this.options.autoFocus) { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).load(function () { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()('html, body').animate({ scrollTop: $elem.offset().top }, _this.options.deepLinkSmudgeDelay, function () { - $link.focus(); - }); - }); - } - }); - if (this.options.matchHeight) { - var $images = this.$tabContent.find('img'); - - if ($images.length) { - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__foundation_util_imageLoader__["a" /* onImagesLoaded */])($images, this._setHeight.bind(this)); - } else { - this._setHeight(); - } - } - - //current context-bound function to open tabs on page load or history popstate - this._checkDeepLink = function () { - var anchor = window.location.hash; - //need a hash and a relevant anchor in this tabset - if (anchor.length) { - var $link = _this3.$element.find('[href$="' + anchor + '"]'); - if ($link.length) { - _this3.selectTab(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(anchor), true); - - //roll up a little to show the titles - if (_this3.options.deepLinkSmudge) { - var offset = _this3.$element.offset(); - __WEBPACK_IMPORTED_MODULE_0_jquery___default()('html, body').animate({ scrollTop: offset.top }, _this3.options.deepLinkSmudgeDelay); - } - - /** - * Fires when the zplugin has deeplinked at pageload - * @event Tabs#deeplink - */ - _this3.$element.trigger('deeplink.zf.tabs', [$link, __WEBPACK_IMPORTED_MODULE_0_jquery___default()(anchor)]); - } - } - }; - - //use browser to open a tab, if it exists in this tabset - if (this.options.deepLink) { - this._checkDeepLink(); - } - - this._events(); - } - - /** - * Adds event handlers for items within the tabs. - * @private - */ - - }, { - key: '_events', - value: function _events() { - this._addKeyHandler(); - this._addClickHandler(); - this._setHeightMqHandler = null; - - if (this.options.matchHeight) { - this._setHeightMqHandler = this._setHeight.bind(this); - - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).on('changed.zf.mediaquery', this._setHeightMqHandler); - } - - if (this.options.deepLink) { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).on('popstate', this._checkDeepLink); - } - } - - /** - * Adds click handlers for items within the tabs. - * @private - */ - - }, { - key: '_addClickHandler', - value: function _addClickHandler() { - var _this = this; - - this.$element.off('click.zf.tabs').on('click.zf.tabs', '.' + this.options.linkClass, function (e) { - e.preventDefault(); - e.stopPropagation(); - _this._handleTabChange(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this)); - }); - } - - /** - * Adds keyboard event handlers for items within the tabs. - * @private - */ - - }, { - key: '_addKeyHandler', - value: function _addKeyHandler() { - var _this = this; - - this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function (e) { - if (e.which === 9) return; - - var $element = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - $elements = $element.parent('ul').children('li'), - $prevElement, - $nextElement; - - $elements.each(function (i) { - if (__WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).is($element)) { - if (_this.options.wrapOnKeys) { - $prevElement = i === 0 ? $elements.last() : $elements.eq(i - 1); - $nextElement = i === $elements.length - 1 ? $elements.first() : $elements.eq(i + 1); - } else { - $prevElement = $elements.eq(Math.max(0, i - 1)); - $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)); - } - return; - } - }); - - // handle keyboard event with keyboard util - __WEBPACK_IMPORTED_MODULE_1__foundation_util_keyboard__["a" /* Keyboard */].handleKey(e, 'Tabs', { - open: function () { - $element.find('[role="tab"]').focus(); - _this._handleTabChange($element); - }, - previous: function () { - $prevElement.find('[role="tab"]').focus(); - _this._handleTabChange($prevElement); - }, - next: function () { - $nextElement.find('[role="tab"]').focus(); - _this._handleTabChange($nextElement); - }, - handled: function () { - e.stopPropagation(); - e.preventDefault(); - } - }); - }); - } - - /** - * Opens the tab `$targetContent` defined by `$target`. Collapses active tab. - * @param {jQuery} $target - Tab to open. - * @param {boolean} historyHandled - browser has already handled a history update - * @fires Tabs#change - * @function - */ - - }, { - key: '_handleTabChange', - value: function _handleTabChange($target, historyHandled) { - - /** - * Check for active class on target. Collapse if exists. - */ - if ($target.hasClass('' + this.options.linkActiveClass)) { - if (this.options.activeCollapse) { - this._collapseTab($target); - - /** - * Fires when the zplugin has successfully collapsed tabs. - * @event Tabs#collapse - */ - this.$element.trigger('collapse.zf.tabs', [$target]); - } - return; - } - - var $oldTab = this.$element.find('.' + this.options.linkClass + '.' + this.options.linkActiveClass), - $tabLink = $target.find('[role="tab"]'), - hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1), - $targetContent = this.$tabContent.find('#' + hash); - - //close old tab - this._collapseTab($oldTab); - - //open new tab - this._openTab($target); - - //either replace or update browser history - if (this.options.deepLink && !historyHandled) { - var anchor = $target.find('a').attr('href'); - - if (this.options.updateHistory) { - history.pushState({}, '', anchor); - } else { - history.replaceState({}, '', anchor); - } - } - - /** - * Fires when the plugin has successfully changed tabs. - * @event Tabs#change - */ - this.$element.trigger('change.zf.tabs', [$target, $targetContent]); - - //fire to children a mutation event - $targetContent.find("[data-mutate]").trigger("mutateme.zf.trigger"); - } - - /** - * Opens the tab `$targetContent` defined by `$target`. - * @param {jQuery} $target - Tab to Open. - * @function - */ - - }, { - key: '_openTab', - value: function _openTab($target) { - var $tabLink = $target.find('[role="tab"]'), - hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1), - $targetContent = this.$tabContent.find('#' + hash); - - $target.addClass('' + this.options.linkActiveClass); - - $tabLink.attr({ - 'aria-selected': 'true', - 'tabindex': '0' - }); - - $targetContent.addClass('' + this.options.panelActiveClass).removeAttr('aria-hidden'); - } - - /** - * Collapses `$targetContent` defined by `$target`. - * @param {jQuery} $target - Tab to Open. - * @function - */ - - }, { - key: '_collapseTab', - value: function _collapseTab($target) { - var $target_anchor = $target.removeClass('' + this.options.linkActiveClass).find('[role="tab"]').attr({ - 'aria-selected': 'false', - 'tabindex': -1 - }); - - __WEBPACK_IMPORTED_MODULE_0_jquery___default()('#' + $target_anchor.attr('aria-controls')).removeClass('' + this.options.panelActiveClass).attr({ 'aria-hidden': 'true' }); - } - - /** - * Public method for selecting a content pane to display. - * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display. - * @param {boolean} historyHandled - browser has already handled a history update - * @function - */ - - }, { - key: 'selectTab', - value: function selectTab(elem, historyHandled) { - var idStr; - - if (typeof elem === 'object') { - idStr = elem[0].id; - } else { - idStr = elem; - } - - if (idStr.indexOf('#') < 0) { - idStr = '#' + idStr; - } - - var $target = this.$tabTitles.find('[href$="' + idStr + '"]').parent('.' + this.options.linkClass); - - this._handleTabChange($target, historyHandled); - } - }, { - key: '_setHeight', - - /** - * Sets the height of each panel to the height of the tallest panel. - * If enabled in options, gets called on media query change. - * If loading content via external source, can be called directly or with _reflow. - * If enabled with `data-match-height="true"`, tabs sets to equal height - * @function - * @private - */ - value: function _setHeight() { - var max = 0, - _this = this; // Lock down the `this` value for the root tabs object - - this.$tabContent.find('.' + this.options.panelClass).css('height', '').each(function () { - - var panel = __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this), - isActive = panel.hasClass('' + _this.options.panelActiveClass); // get the options from the parent instead of trying to get them from the child - - if (!isActive) { - panel.css({ 'visibility': 'hidden', 'display': 'block' }); - } - - var temp = this.getBoundingClientRect().height; - - if (!isActive) { - panel.css({ - 'visibility': '', - 'display': '' - }); - } - - max = temp > max ? temp : max; - }).css('height', max + 'px'); - } - - /** - * Destroys an instance of an tabs. - * @fires Tabs#destroyed - */ - - }, { - key: '_destroy', - value: function _destroy() { - this.$element.find('.' + this.options.linkClass).off('.zf.tabs').hide().end().find('.' + this.options.panelClass).hide(); - - if (this.options.matchHeight) { - if (this._setHeightMqHandler != null) { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).off('changed.zf.mediaquery', this._setHeightMqHandler); - } - } - - if (this.options.deepLink) { - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(window).off('popstate', this._checkDeepLink); - } - } - }]); - - return Tabs; -}(__WEBPACK_IMPORTED_MODULE_3__foundation_plugin__["a" /* Plugin */]); - -Tabs.defaults = { - /** - * Allows the window to scroll to content of pane specified by hash anchor - * @option - * @type {boolean} - * @default false - */ - deepLink: false, - - /** - * Adjust the deep link scroll to make sure the top of the tab panel is visible - * @option - * @type {boolean} - * @default false - */ - deepLinkSmudge: false, - - /** - * Animation time (ms) for the deep link adjustment - * @option - * @type {number} - * @default 300 - */ - deepLinkSmudgeDelay: 300, - - /** - * Update the browser history with the open tab - * @option - * @type {boolean} - * @default false - */ - updateHistory: false, - - /** - * Allows the window to scroll to content of active pane on load if set to true. - * Not recommended if more than one tab panel per page. - * @option - * @type {boolean} - * @default false - */ - autoFocus: false, - - /** - * Allows keyboard input to 'wrap' around the tab links. - * @option - * @type {boolean} - * @default true - */ - wrapOnKeys: true, - - /** - * Allows the tab content panes to match heights if set to true. - * @option - * @type {boolean} - * @default false - */ - matchHeight: false, - - /** - * Allows active tabs to collapse when clicked. - * @option - * @type {boolean} - * @default false - */ - activeCollapse: false, - - /** - * Class applied to `li`'s in tab link list. - * @option - * @type {string} - * @default 'tabs-title' - */ - linkClass: 'tabs-title', - - /** - * Class applied to the active `li` in tab link list. - * @option - * @type {string} - * @default 'is-active' - */ - linkActiveClass: 'is-active', - - /** - * Class applied to the content containers. - * @option - * @type {string} - * @default 'tabs-panel' - */ - panelClass: 'tabs-panel', - - /** - * Class applied to the active content container. - * @option - * @type {string} - * @default 'is-active' - */ - panelActiveClass: 'is-active' -}; - - - -/***/ }), -/* 15 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Positionable; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__foundation_util_box__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_plugin__ = __webpack_require__(2); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__foundation_util_core__ = __webpack_require__(1); - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - - -var POSITIONS = ['left', 'right', 'top', 'bottom']; -var VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center']; -var HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center']; - -var ALIGNMENTS = { - 'left': VERTICAL_ALIGNMENTS, - 'right': VERTICAL_ALIGNMENTS, - 'top': HORIZONTAL_ALIGNMENTS, - 'bottom': HORIZONTAL_ALIGNMENTS -}; - -function nextItem(item, array) { - var currentIdx = array.indexOf(item); - if (currentIdx === array.length - 1) { - return array[0]; - } else { - return array[currentIdx + 1]; - } -} - -var Positionable = function (_Plugin) { - _inherits(Positionable, _Plugin); - - function Positionable() { - _classCallCheck(this, Positionable); - - return _possibleConstructorReturn(this, (Positionable.__proto__ || Object.getPrototypeOf(Positionable)).apply(this, arguments)); - } - - _createClass(Positionable, [{ - key: '_init', - - /** - * Abstract class encapsulating the tether-like explicit positioning logic - * including repositioning based on overlap. - * Expects classes to define defaults for vOffset, hOffset, position, - * alignment, allowOverlap, and allowBottomOverlap. They can do this by - * extending the defaults, or (for now recommended due to the way docs are - * generated) by explicitly declaring them. - * - **/ - - value: function _init() { - this.triedPositions = {}; - this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position; - this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment; - } - }, { - key: '_getDefaultPosition', - value: function _getDefaultPosition() { - return 'bottom'; - } - }, { - key: '_getDefaultAlignment', - value: function _getDefaultAlignment() { - switch (this.position) { - case 'bottom': - case 'top': - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__foundation_util_core__["b" /* rtl */])() ? 'right' : 'left'; - case 'left': - case 'right': - return 'bottom'; - } - } - - /** - * Adjusts the positionable possible positions by iterating through alignments - * and positions. - * @function - * @private - */ - - }, { - key: '_reposition', - value: function _reposition() { - if (this._alignmentsExhausted(this.position)) { - this.position = nextItem(this.position, POSITIONS); - this.alignment = ALIGNMENTS[this.position][0]; - } else { - this._realign(); - } - } - - /** - * Adjusts the dropdown pane possible positions by iterating through alignments - * on the current position. - * @function - * @private - */ - - }, { - key: '_realign', - value: function _realign() { - this._addTriedPosition(this.position, this.alignment); - this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position]); - } - }, { - key: '_addTriedPosition', - value: function _addTriedPosition(position, alignment) { - this.triedPositions[position] = this.triedPositions[position] || []; - this.triedPositions[position].push(alignment); - } - }, { - key: '_positionsExhausted', - value: function _positionsExhausted() { - var isExhausted = true; - for (var i = 0; i < POSITIONS.length; i++) { - isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]); - } - return isExhausted; - } - }, { - key: '_alignmentsExhausted', - value: function _alignmentsExhausted(position) { - return this.triedPositions[position] && this.triedPositions[position].length == ALIGNMENTS[position].length; - } - - // When we're trying to center, we don't want to apply offset that's going to - // take us just off center, so wrap around to return 0 for the appropriate - // offset in those alignments. TODO: Figure out if we want to make this - // configurable behavior... it feels more intuitive, especially for tooltips, but - // it's possible someone might actually want to start from center and then nudge - // slightly off. - - }, { - key: '_getVOffset', - value: function _getVOffset() { - return this.options.vOffset; - } - }, { - key: '_getHOffset', - value: function _getHOffset() { - return this.options.hOffset; - } - }, { - key: '_setPosition', - value: function _setPosition($anchor, $element, $parent) { - if ($anchor.attr('aria-expanded') === 'false') { - return false; - } - var $eleDims = __WEBPACK_IMPORTED_MODULE_0__foundation_util_box__["a" /* Box */].GetDimensions($element), - $anchorDims = __WEBPACK_IMPORTED_MODULE_0__foundation_util_box__["a" /* Box */].GetDimensions($anchor); - - $element.offset(__WEBPACK_IMPORTED_MODULE_0__foundation_util_box__["a" /* Box */].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset())); - - if (!this.options.allowOverlap) { - var overlaps = {}; - var minOverlap = 100000000; - // default coordinates to how we start, in case we can't figure out better - var minCoordinates = { position: this.position, alignment: this.alignment }; - while (!this._positionsExhausted()) { - var overlap = __WEBPACK_IMPORTED_MODULE_0__foundation_util_box__["a" /* Box */].OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap); - if (overlap === 0) { - return; - } - - if (overlap < minOverlap) { - minOverlap = overlap; - minCoordinates = { position: this.position, alignment: this.alignment }; - } - - this._reposition(); - - $element.offset(__WEBPACK_IMPORTED_MODULE_0__foundation_util_box__["a" /* Box */].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset())); - } - // If we get through the entire loop, there was no non-overlapping - // position available. Pick the version with least overlap. - this.position = minCoordinates.position; - this.alignment = minCoordinates.alignment; - $element.offset(__WEBPACK_IMPORTED_MODULE_0__foundation_util_box__["a" /* Box */].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset())); - } - } - }]); - - return Positionable; -}(__WEBPACK_IMPORTED_MODULE_1__foundation_plugin__["a" /* Plugin */]); - -Positionable.defaults = { - /** - * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto. - * @option - * @type {string} - * @default 'auto' - */ - position: 'auto', - /** - * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto. - * @option - * @type {string} - * @default 'auto' - */ - alignment: 'auto', - /** - * Allow overlap of container/window. If false, dropdown positionable first - * try to position as defined by data-position and data-alignment, but - * reposition if it would cause an overflow. - * @option - * @type {boolean} - * @default false - */ - allowOverlap: false, - /** - * Allow overlap of only the bottom of the container. This is the most common - * behavior for dropdowns, allowing the dropdown to extend the bottom of the - * screen but not otherwise influence or break out of the container. - * @option - * @type {boolean} - * @default true - */ - allowBottomOverlap: true, - /** - * Number of pixels the positionable should be separated vertically from anchor - * @option - * @type {number} - * @default 0 - */ - vOffset: 0, - /** - * Number of pixels the positionable should be separated horizontally from anchor - * @option - * @type {number} - * @default 0 - */ - hOffset: 0 -}; - - - -/***/ }), -/* 16 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Touch; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -//************************************************** -//**Work inspired by multiple jquery swipe plugins** -//**Done by Yohai Ararat *************************** -//************************************************** - - - -var Touch = {}; - -var startPosX, - startPosY, - startTime, - elapsedTime, - isMoving = false; - -function onTouchEnd() { - // alert(this); - this.removeEventListener('touchmove', onTouchMove); - this.removeEventListener('touchend', onTouchEnd); - isMoving = false; -} - -function onTouchMove(e) { - if (__WEBPACK_IMPORTED_MODULE_0_jquery___default.a.spotSwipe.preventDefault) { - e.preventDefault(); - } - if (isMoving) { - var x = e.touches[0].pageX; - var y = e.touches[0].pageY; - var dx = startPosX - x; - var dy = startPosY - y; - var dir; - elapsedTime = new Date().getTime() - startTime; - if (Math.abs(dx) >= __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.spotSwipe.moveThreshold && elapsedTime <= __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.spotSwipe.timeThreshold) { - dir = dx > 0 ? 'left' : 'right'; - } - // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) { - // dir = dy > 0 ? 'down' : 'up'; - // } - if (dir) { - e.preventDefault(); - onTouchEnd.call(this); - __WEBPACK_IMPORTED_MODULE_0_jquery___default()(this).trigger('swipe', dir).trigger('swipe' + dir); - } - } -} - -function onTouchStart(e) { - if (e.touches.length == 1) { - startPosX = e.touches[0].pageX; - startPosY = e.touches[0].pageY; - isMoving = true; - startTime = new Date().getTime(); - this.addEventListener('touchmove', onTouchMove, false); - this.addEventListener('touchend', onTouchEnd, false); - } -} - -function init() { - this.addEventListener && this.addEventListener('touchstart', onTouchStart, false); -} - -function teardown() { - this.removeEventListener('touchstart', onTouchStart); -} - -var SpotSwipe = function () { - function SpotSwipe($) { - _classCallCheck(this, SpotSwipe); - - this.version = '1.0.0'; - this.enabled = 'ontouchstart' in document.documentElement; - this.preventDefault = false; - this.moveThreshold = 75; - this.timeThreshold = 200; - this.$ = $; - this._init(); - } - - _createClass(SpotSwipe, [{ - key: '_init', - value: function _init() { - var $ = this.$; - $.event.special.swipe = { setup: init }; - - $.each(['left', 'up', 'down', 'right'], function () { - $.event.special['swipe' + this] = { setup: function () { - $(this).on('swipe', $.noop); - } }; - }); - } - }]); - - return SpotSwipe; -}(); - -/**************************************************** - * As far as I can tell, both setupSpotSwipe and * - * setupTouchHandler should be idempotent, * - * because they directly replace functions & * - * values, and do not add event handlers directly. * - ****************************************************/ - -Touch.setupSpotSwipe = function ($) { - $.spotSwipe = new SpotSwipe($); -}; - -/**************************************************** - * Method for adding pseudo drag events to elements * - ***************************************************/ -Touch.setupTouchHandler = function ($) { - $.fn.addTouch = function () { - this.each(function (i, el) { - $(el).bind('touchstart touchmove touchend touchcancel', function () { - //we pass the original event object because the jQuery event - //object is normalized to w3c specs and does not provide the TouchList - handleTouch(event); - }); - }); - - var handleTouch = function (event) { - var touches = event.changedTouches, - first = touches[0], - eventTypes = { - touchstart: 'mousedown', - touchmove: 'mousemove', - touchend: 'mouseup' - }, - type = eventTypes[event.type], - simulatedEvent; - - if ('MouseEvent' in window && typeof window.MouseEvent === 'function') { - simulatedEvent = new window.MouseEvent(type, { - 'bubbles': true, - 'cancelable': true, - 'screenX': first.screenX, - 'screenY': first.screenY, - 'clientX': first.clientX, - 'clientY': first.clientY - }); - } else { - simulatedEvent = document.createEvent('MouseEvent'); - simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0 /*left*/, null); - } - first.target.dispatchEvent(simulatedEvent); - }; - }; -}; - -Touch.init = function ($) { - if (typeof $.spotSwipe === 'undefined') { - Touch.setupSpotSwipe($); - Touch.setupTouchHandler($); - } -}; - - - -/***/ }), -/* 17 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Abide; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery__ = __webpack_require__(0); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_jquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_jquery__); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__foundation_plugin__ = __webpack_require__(2); - - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - - - -/** - * Abide module. - * @module foundation.abide - */ - -var Abide = function (_Plugin) { - _inherits(Abide, _Plugin); - - function Abide() { - _classCallCheck(this, Abide); - - return _possibleConstructorReturn(this, (Abide.__proto__ || Object.getPrototypeOf(Abide)).apply(this, arguments)); - } - - _createClass(Abide, [{ - key: '_setup', - - /** - * Creates a new instance of Abide. - * @class - * @name Abide - * @fires Abide#init - * @param {Object} element - jQuery object to add the trigger to. - * @param {Object} options - Overrides to the default plugin settings. - */ - value: function _setup(element) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - this.$element = element; - this.options = __WEBPACK_IMPORTED_MODULE_0_jquery___default.a.extend({}, Abide.defaults, this.$element.data(), options); - - this.className = 'Abide'; // ie9 back compat - this._init(); - } - - /** - * Initializes the Abide plugin and calls functions to get Abide functioning on load. - * @private - */ - - }, { - key: '_init', - value: function _init() { - this.$inputs = this.$element.find('input, textarea, select'); - - this._events(); - } - - /** - * Initializes events for Abide. - * @private - */ - - }, { - key: '_events', - value: function _events() { - var _this3 = this; - - this.$element.off('.abide').on('reset.zf.abide', function () { - _this3.resetForm(); - }).on('submit.zf.abide', function () { - return _this3.validateForm(); - }); - - if (this.options.validateOn === 'fieldChange') { - this.$inputs.off('change.zf.abide').on('change.zf.abide', function (e) { - _this3.validateInput(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(e.target)); - }); - } - - if (this.options.liveValidate) { - this.$inputs.off('input.zf.abide').on('input.zf.abide', function (e) { - _this3.validateInput(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(e.target)); - }); - } - - if (this.options.validateOnBlur) { - this.$inputs.off('blur.zf.abide').on('blur.zf.abide', function (e) { - _this3.validateInput(__WEBPACK_IMPORTED_MODULE_0_jquery___default()(e.target)); - }); - } - } - - /** - * Calls necessary functions to update Abide upon DOM change - * @private - */ - - }, { - key: '_reflow', - value: function _reflow() { - this._init(); - } - - /** - * Checks whether or not a form element has the required attribute and if it's checked or not - * @param {Object} element - jQuery object to check for required attribute - * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty - */ - - }, { - key: 'requiredCheck', - value: function requiredCheck($el) { - if (!$el.attr('required')) return true; - - var isGood = true; - - switch ($el[0].type) { - case 'checkbox': - isGood = $el[0].checked; - break; - - case 'select': - case 'select-one': - case 'select-multiple': - var opt = $el.find('option:selected'); - if (!opt.length || !opt.val()) isGood = false; - break; - - default: - if (!$el.val() || !$el.val().length) isGood = false; - } - - return isGood; - } - - /** - * Get: - * - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order: - * 1. The element's direct sibling('s). - * 2. The element's parent's children. - * - Element(s) with the attribute `[data-form-error-for]` set with the element's id. - * - * This allows for multiple form errors per input, though if none are found, no form errors will be shown. - * - * @param {Object} $el - jQuery object to use as reference to find the form error selector. - * @returns {Object} jQuery object with the selector. - */ - - }, { - key: 'findFormError', - value: function findFormError($el) { - var id = $el[0].id; - var $error = $el.siblings(this.options.formErrorSelector); - - if (!$error.length) { - $error = $el.parent().find(this.options.formErrorSelector); - } - - $error = $error.add(this.$element.find('[data-form-error-for="' + id + '"]')); - - return $error; - } - - /** - * Get the first element in this order: - * 2. The