diff --git a/dist/starter.html b/dist/starter.html index 55312bd1..a86ec9a6 100644 --- a/dist/starter.html +++ b/dist/starter.html @@ -1,10 +1,10 @@ - tablefilter v0.6.56 - Starter + tablefilter v0.6.59 - Starter -

tablefilter v0.6.56

+

tablefilter v0.6.59

diff --git a/dist/tablefilter/tablefilter.js b/dist/tablefilter/tablefilter.js index 8c376105..a66d64f7 100644 --- a/dist/tablefilter/tablefilter.js +++ b/dist/tablefilter/tablefilter.js @@ -1,2 +1,2 @@ -!function webpackUniversalModuleDefinition(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var i=t();for(var n in i)("object"==typeof exports?exports:e)[n]=i[n]}}(window,function(){return function(e){function webpackJsonpCallback(t){for(var n,r,s=t[0],o=t[1],l=0,u=[];l3&&void 0!==arguments[3]?arguments[3]:[],r=o("li"),s=o("label",["for",e]),a=o("input",["id",e],["name",e],["type","checkbox"],["value",t],n);return s.appendChild(a),s.appendChild(l(i)),r.appendChild(s),r.label=s,r.check=a,r},t.elm=function elm(e){return a.getElementById(e)},t.tag=function tag(e,t){return e.getElementsByTagName(t)};function supportsClassList(){return a.documentElement.classList}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function defineProperties(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:[]).indexOf(r(e))}},function(e,t,i){"use strict";var n=i(26);e.exports=function callDateGet(e,t){return e["get"+(n(e)?"UTC":"")+t]()}},function(e,t,i){"use strict";var n=i(19);e.exports=function getWeekday(e){return n(e,"Day")}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.contains=t.matchCase=t.rgxEsc=t.isEmpty=t.trim=void 0;var n=i(439),r=t.trim=function trim(e){return e.trim?e.trim():e.replace(/^\s*|\s*$/g,"")},s=(t.isEmpty=function isEmpty(e){return""===r(e)},t.rgxEsc=function rgxEsc(e){return String(e).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")});t.matchCase=function matchCase(e){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?e:e.toLowerCase()},t.contains=function contains(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=r?"g":"gi";return a&&(e=(0,n.remove)(e),t=(0,n.remove)(t)),(i?new RegExp("(^\\s*)"+s(e)+"(\\s*$)",o):new RegExp(s(e),o)).test(t)}},function(e,t,i){"use strict";i(169)()},function(e,t,i){"use strict";var n=i(0);e.exports={sugarObject:n.Object,sugarArray:n.Array,sugarDate:n.Date,sugarString:n.String,sugarNumber:n.Number,sugarFunction:n.Function,sugarRegExp:n.RegExp}},function(e,t,i){"use strict";var n=i(36),r=i(35),s=i(20),a=i(5),o=i(8),l=a.isNumber,u=o.abs;e.exports=function setWeekday(e,t,i){if(l(t)){var a=s(e);if(i){var o=i>0?1:-1,c=t%7-a;c&&c/u(c)!==o&&(t+=7*o)}return n(e,r(e)+t-a),e.getTime()}}},function(e,t,i){"use strict";var n=i(8),r=n.ceil,s=n.floor,a=Math.trunc||function(e){return 0!==e&&isFinite(e)?e<0?r(e):s(e):e};e.exports=a},function(e,t,i){"use strict";var n=i(419);e.exports=n("utc")},function(e,t,i){"use strict";var n=i(62);e.exports=function createDate(e,t,i){return n(null,e,t,i).date}},function(e,t,i){"use strict";var n=i(19);e.exports=function getMonth(e){return n(e,"Month")}},function(e,t,i){"use strict";var n=i(19);e.exports=function getYear(e){return n(e,"FullYear")}},function(e,t,i){"use strict";var n=i(98),r=[{name:"millisecond",method:"Milliseconds",multiplier:1,start:0,end:999},{name:"second",method:"Seconds",multiplier:1e3,start:0,end:59},{name:"minute",method:"Minutes",multiplier:6e4,start:0,end:59},{name:"hour",method:"Hours",multiplier:36e5,start:0,end:23},{name:"day",alias:"date",method:"Date",ambiguous:!0,multiplier:864e5,start:1,end:function(e){return n(e)}},{name:"week",method:"ISOWeek",ambiguous:!0,multiplier:6048e5},{name:"month",method:"Month",ambiguous:!0,multiplier:26298e5,start:0,end:11},{name:"year",method:"FullYear",ambiguous:!0,multiplier:315576e5,start:0}];e.exports=r},function(e,t,i){"use strict";e.exports=function isDefined(e){return void 0!==e}},function(e,t,i){"use strict";var n=i(429);e.exports=function forEach(e,t){for(var i=0,r=e.length;i0&&void 0!==arguments[0]?arguments[0]:u,t=arguments[1],i=this.innerCont[e];return t&&i.appendChild(t),i}},{key:"createContainer",value:function createContainer(e,t){var i=(0,s.createElm)("div",["class",t]);return e.appendChild(i),i}},{key:"destroy",value:function destroy(){if(this.initialized){var e=this.tf;(0,s.removeElm)(this.cont),this.cont=null;var t=e.dom(),i=(0,s.tag)(t,"caption");[].forEach.call(i,function(e){return(0,s.removeElm)(e)}),this.initialized=!1}}}]),Toolbar}()},function(e,t,i){"use strict";var n=i(26);e.exports=function cloneDate(e){var t=new Date(e.getTime());return n(t,!!n(e)),t}},function(e,t,i){"use strict";var n=i(19);e.exports=function getDate(e){return n(e,"Date")}},function(e,t,i){"use strict";var n=i(37);e.exports=function setDate(e,t){n(e,"Date",t)}},function(e,t,i){"use strict";var n=i(26),r=i(19);e.exports=function callDateSet(e,t,i,s){s&&i===r(e,t,i)||e["set"+(n(e)?"UTC":"")+t](i)}},function(e,t,i){"use strict";var n=i(31),r=i(5),s=i(37),a=i(92),o=r.isFunction;e.exports=function setUnitAndLowerToEdge(e,t,i,r){return a(t,function(t,a){var l=r?t.end:t.start;return o(l)&&(l=l(e)),s(e,t.method,l),!n(i)||a>i}),e}},function(e,t,i){"use strict";var n=i(49);e.exports=function advanceDate(e,t,i,r){var s={};return s[t]=i,n(e,s,r,1)}},function(e,t,i){"use strict";var n=i(61);e.exports=function getNewDate(){return n("newDateInternal")()}},function(e,t,i){"use strict";var n=i(4),r=n.HOURS_INDEX,s=n.DAY_INDEX,a=n.WEEK_INDEX,o=n.MONTH_INDEX;e.exports=function getLowerUnitIndex(e){return e===o?s:e===a?r:e-1}},function(e,t,i){"use strict";e.exports=function isUndefined(e){return void 0===e}},function(e,t,i){"use strict";var n=i(168);e.exports=function rangeIsValid(e){return n(e.start)&&n(e.end)&&typeof e.start==typeof e.end}},function(e,t,i){"use strict";e.exports=function dateIsValid(e){return!isNaN(e.getTime())}},function(e,t,i){"use strict";var n=i(384),r=i(382),s=n.defineInstance;e.exports=function defineInstanceSimilar(e,t,i,n){s(e,r(t,i),n)}},function(e,t,i){"use strict";var n=i(9),r=i(4),s=i(41),a=i(60),o=i(38),l=r.WEEK_INDEX,u=n.localeManager;e.exports=function moveToBeginningOfUnit(e,t,i){return t===l&&a(e,u.get(i).getFirstDayOfWeek()),o(e,s(t))}},function(e,t,i){"use strict";var n=i(9),r=i(4),s=i(88),a=i(41),o=i(38),l=r.WEEK_INDEX,u=n.localeManager;e.exports=function moveToEndOfUnit(e,t,i,n){return t===l&&s(e,u.get(i).getFirstDayOfWeek()),o(e,a(t),n,!0)}},function(e,t,i){"use strict";var n=i(4),r=i(31),s=i(401),a=i(63),o=n.DAY_INDEX;e.exports=function iterateOverDateParams(e,t,i,n){function run(i,n,a){var o=s(e,i);r(o)&&t(i,o,n,a)}a(function(e,t){var i=run(e.name,e,t);return!1!==i&&t===o&&(i=run("weekday",e,t)),i},i,n)}},function(e,t,i){"use strict";var n=i(30),r=i(4),s=i(25),a=i(36),o=i(35),l=i(28),u=i(40),c=i(24),f=i(8),d=i(19),h=i(5),p=i(406),m=i(41),g=i(405),y=i(404),v=i(48),b=r.DAY_INDEX,C=r.WEEK_INDEX,w=r.MONTH_INDEX,_=r.YEAR_INDEX,x=f.round,k=h.isNumber;e.exports=function updateDate(e,t,i,r,f,h){var E;function setUnit(i,u,p,v){var _,k,T=p.method;!function setUpperUnit(e,t){f&&!E&&(E="weekday"===e?C:g(t))}(i,v),function setSpecificity(e){e>t.specificity||(t.specificity=e)}(v),(k=u%1)&&(function handleFraction(e,i,r){if(i){var s=n[m(i)],a=x(e.multiplier/s.multiplier*r);t[s.name]=a}}(p,v,k),u=s(u)),"weekday"!==i?(_=v===w&&o(e)>28,!r||p.ambiguous?(r&&(v===C&&(u*=7,T=n[b].method),u=u*r+d(e,T)),y(e,T,u,r),_&&function monthHasShifted(e,t){return t<0&&(t=t%12+12),t%12!==l(e)}(e,u)&&a(e,0)):e.setTime(e.getTime()+u*r*p.multiplier)):r||c(e,u,h)}if(k(t)&&r)t={millisecond:t};else if(k(t))return e.setTime(t),e;return v(t,setUnit),i&&t.specificity&&p(e,t.specificity),function canDisambiguate(){if(E&&!(E>_))switch(f){case-1:return e>u();case 1:return e0&&(t*=-1);C?w>=b:w<=b;)i||x.push(w),n&&n(w,_,e),w=p(),_++;return i?_-1:x}},function(e,t,i){"use strict";e.exports="year|month|week|day|hour|minute|second|millisecond"},function(e,t,i){"use strict";var n=i(65),r=i(36),s=i(35),a=i(34),o=i(42),l=i(88),u=i(60),c=i(90),f=n.ISO_FIRST_DAY_OF_WEEK,d=n.ISO_FIRST_DAY_OF_WEEK_YEAR;e.exports=function getWeekNumber(e,t,i,n){var h,p=0;for(o(i)&&(i=f),o(n)&&(n=d),h=l(a(e),i),c(h,i,n),t&&ee;if(l||(o=t,t=e,e=o),a=t-e,i.multiplier>1&&(a=n(a/i.multiplier)),i.ambiguous)for(e=r(e),a&&s(e,i.name,a);et));)a+=1;return l?-a:a}},function(e,t,i){"use strict";e.exports=function simpleCapitalize(e){return e.charAt(0).toUpperCase()+e.slice(1)}},function(e,t,i){"use strict";var n=i(24),r=i(20),s=i(8).floor;e.exports=function moveToBeginningOfWeek(e,t){return n(e,7*s((r(e)-t)/7)+t),e}},function(e,t,i){"use strict";var n=i(410),r=i(23),s=i(408),a=r.sugarDate;e.exports=s(a,n)},function(e,t,i){"use strict";var n=i(94),r=i(103),s=i(9),a=i(4),o=i(26),l=i(25),u=i(32),c=i(50),f=i(93),d=i(31),h=i(24),p=i(49),m=i(40),g=i(42),y=i(5),v=i(39),b=i(53),C=i(64),w=i(47),_=i(399),x=i(12),k=i(398),E=i(46),T=i(48),S=i(397),O=i(396),P=y.isNumber,F=y.isString,N=y.isDate,D=x.hasOwn,R=x.getOwn,I=s.English,M=s.localeManager,A=a.DAY_INDEX,L=a.WEEK_INDEX,j=a.MONTH_INDEX,H=a.YEAR_INDEX;e.exports=function getExtendedDate(e,t,i,s){var a,y,x,B,z,U,W;function getFormatParams(e,t){var i=R(B,"params")||{};return u(t.to,function(t,n){var s,o,l=e[n+1];l&&("yy"===t||"y"===t?(t="year",o=S(l,a,R(B,"prefer"))):(s=R(r,t))?(t=s.param||t,o=k(s,l)):o=x.getTokenValue(t,l),i[t]=o)}),i}function cloneDateByFlag(e,t){return o(e)&&!d(R(B,"fromUTC"))&&(B.fromUTC=!0),o(e)&&!d(R(B,"setUTC"))&&(B.setUTC=!0),t&&(e=new Date(e.getTime())),e}function afterDateSet(e){z.push(e)}function handleTimezoneOffset(e,t,i){o(a,!0);var n=(i||1)*(60*(e||0)+(t||0));n&&(y.minute=(y.minute||0)-n)}function handleMidday(e){y.hour=e%24,e>23&&afterDateSet(function(){v(a,"date",l(e/24))})}function handleRelativeUnit(e){var t=d(y.num)?y.num:1;d(y.weekday)&&(e===j?(setOrdinalWeekday(t),t=1):(p(a,{weekday:y.weekday},!0),delete y.weekday)),y.half&&(t*=y.half),d(y.shift)?t*=y.shift:y.sign&&(t*=y.sign),d(y.day)&&(t+=y.day,delete y.day),function separateAbsoluteUnits(e){var t;T(y,function(i,n,r,s){if(s>=e)return a.setTime(NaN),!1;s0&&(1===e&&(t=A,E(a,A)),w(a,n,R(B,"locale"),t)),d(i)&&(h(a,i,-e),f(a))}),t.specificity=n===j?A:n-1}function setOrdinalWeekday(e){y.weekday=7*(e-1)+y.weekday,y.date=1,W=1}return z=[],B=function getDateOptions(e){var t=F(e)?{locale:e}:e||{};return t.prefer=+!!R(t,"future")-+!!R(t,"past"),t}(i),a=e&&t?cloneDateByFlag(e,!0):m(),o(a,R(B,"fromUTC")),F(t)?a=function parseStringDate(e){e=e.toLowerCase(),x=M.get(R(B,"locale"));for(var t,i,r=0;t=x.compiledFormats[r];r++)if(i=e.match(t.reg)){if(x.cacheFormat(t,r),y=getFormatParams(i,t),d(y.timestamp)){e=y.timestamp,y=null;break}d(y.ampm)&&(1===(l=y.ampm)&&y.hour<12?y.hour+=12:0===l&&12===y.hour&&(y.hour=0)),(y.utc||d(y.tzHour))&&handleTimezoneOffset(y.tzHour,y.tzMinute,y.tzSign),d(y.shift)&&g(y.unit)&&(d(y.month)?y.unit=H:d(y.weekday)&&(y.unit=L)),d(y.num)&&g(y.unit)&&(s=y.num,d(y.weekday)?setOrdinalWeekday(s):d(y.month)&&(y.date=y.num)),y.midday&&handleMidday(y.midday),d(y.day)&&(y.day,f(a),g(y.unit)&&(y.unit=A,y.num=y.day,delete y.day)),d(y.unit)&&handleRelativeUnit(y.unit),y.edge&&handleEdge(y.edge,y),y.yearSign&&(y.year*=y.yearSign);break}var s,l;return y?U?p(a,y,!1,1):(o(a)&&f(a),p(a,y,!0,0,R(B,"prefer"),W)):(a=new Date(e),R(B,"fromUTC")&&a.setTime(a.getTime()+c(a)*n)),function fireCallbacks(){u(z,function(e){e.call()})}(),a}(t):N(t)?a=cloneDateByFlag(t,D(B,"clone")||s):C(t)?(y=b(t),p(a,y,!0)):(P(t)||null===t)&&a.setTime(t),o(a,!!R(B,"setUTC")),{set:y,date:a}}},function(e,t,i){"use strict";var n=i(30),r=i(4),s=i(42),a=r.YEAR_INDEX;e.exports=function iterateOverDateUnits(e,t,i){i=i||0,s(t)&&(t=a);for(var r=t;r>=i&&!1!==e(n[r],r);r--);}},function(e,t,i){"use strict";e.exports=function isObjectType(e,t){return!!e&&"object"===(t||typeof e)}},function(e,t,i){"use strict";e.exports={ISO_FIRST_DAY_OF_WEEK:1,ISO_FIRST_DAY_OF_WEEK_YEAR:4}},function(e,t,i){"use strict";var n=i(12).forEachProperty;e.exports=function simpleMerge(e,t){return n(t,function(t,i){e[i]=t}),e}},function(e,t,i){"use strict";var n=i(435),r=i(66),s=i(53);e.exports=function getEnglishVariant(e){return r(s(n),e)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=void 0;var n=i(3);t.parse=function parse(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:".";if((0,n.isNumber)(e))return e;var i=new RegExp("[^0-9-"+t+"]",["g"]),r=parseFloat((""+e).replace(/\((.*)\)/,"-$1").replace(i,"").replace(t,"."));return isNaN(r)?0:r}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.has=void 0;var n=i(21);t.has=function has(e,t,i){for(var r=Boolean(i),s=0,a=e.length;s1&&void 0!==arguments[1]?arguments[1]:[],i=this.tf;if(i.isCustomOptions(e)||!i.sortSlc||(0,a.isArray)(i.sortSlc)&&-1===i.sortSlc.indexOf(e))return t;var n=i.caseSensitive,r=i.sortNumDesc,l=void 0;if(this.customSorter&&-1!==this.customSorter.col.indexOf(e)){var u=this.customSorter.col.indexOf(e);l=this.customSorter.comparer[u]}else if(i.hasType(e,[o.NUMBER,o.FORMATTED_NUMBER])){var c=i.getDecimal(e),f=s.numSortAsc;!0!==r&&-1===r.indexOf(e)||(f=s.numSortDesc),l=(0,s.sortNumberStr)(f,c)}else if(i.hasType(e,[o.DATE])){var d=i.feature("dateType").getLocale(e),h=s.dateSortAsc;l=(0,s.sortDateStr)(h,d)}else l=n?void 0:s.ignoreCase;return t.sort(l)}},{key:"refreshFilters",value:function refreshFilters(e){var t=this;e.forEach(function(e){var i=t.getValues(e);t.build(e,t.tf.linkedFilters),t.selectOptions(e,i)})}},{key:"isValidLinkedValue",value:function isValidLinkedValue(e,t){var i=this.tf;if(i.disableExcludedOptions)return!0;if(i.paging){if(!(0,a.isEmpty)(t)&&i.isRowValid(e))return!0}else if(i.isRowDisplayed(e))return!0;return!1}}]),BaseDropdown}()},function(e,t,i){"use strict";var n=i(175),r=i(5),s=i(59),a=r.isNumber;e.exports=function getDateIncrementObject(e){var t,i,r;return a(e)?[e,"Milliseconds"]:(i=+(t=e.match(n))[1]||1,(r=s(t[2].toLowerCase())).match(/hour|minute|second/i)?r+="s":"Year"===r?r="FullYear":"Week"===r?(r="Date",i*=7):"Day"===r&&(r="Date"),[i,r])}},function(e,t,i){"use strict";e.exports={Hours:36e5,Minutes:6e4,Seconds:1e3,Milliseconds:1}},function(e,t,i){"use strict";var n=i(72),r=i(37),s=i(19);e.exports=function incrementDate(e,t,i){var a,o=n[i];return o?a=new Date(e.getTime()+t*o):(a=new Date(e),r(a,i,s(e,i)+t)),a}},function(e,t,i){"use strict";var n=i(5),r=i(23),s=n.isDate,a=r.sugarDate;e.exports=function getDateForRange(e){return s(e)?e:null==e?new Date:a.create?a.create(e):new Date(e)}},function(e,t,i){"use strict";var n=i(5).isDate;e.exports=function getRangeMemberPrimitiveValue(e){return null==e?e:n(e)?e.getTime():e.valueOf()}},function(e,t,i){"use strict";var n=i(5),r=i(75),s=n.isDate;e.exports=function cloneRangeMember(e){return s(e)?new Date(e.getTime()):r(e)}},function(e,t,i){"use strict";var n=i(9),r=i(83),s=i(5),a=i(79),o=i(204),l=s.isFunction,u=n.localeManager;e.exports=function dateRelative(e,t,i,n){var s,c,f,d,h;return a(e),l(i)?h=i:(d=i,h=n),s=o(e,t),h&&(c=h.apply(e,s.concat(u.get(d))))?r(e,c,d):(0===s[1]&&(s[1]=1,s[0]=1),f=t?"duration":s[2]>0?"future":"past",u.get(d).getRelativeFormat(s,f))}},function(e,t,i){"use strict";var n=i(9),r=i(251),s=i(28),a=i(31),o=i(40),l=i(250),u=i(20),c=i(44),f=i(5),d=i(87),h=f.isString,p=n.English;e.exports=function fullCompareDate(e,t,i){var n;if(c(e)){if(h(t))switch(t=r(t).toLowerCase(),!0){case"future"===t:return e.getTime()>o().getTime();case"past"===t:return e.getTime()0&&u(e)<6;case"weekend"===t:return 0===u(e)||6===u(e);case a(n=p.weekdayMap[t]):return u(e)===n;case a(n=p.monthMap[t]):return s(e)===n}return d(e,t,i)}}},function(e,t,i){"use strict";var n=i(44);e.exports=function assertDateIsValid(e){if(!n(e))throw new TypeError("Date is not valid")}},function(e,t,i){"use strict";var n=i(26),r=i(25),s=i(50),a=i(57),o=i(8).abs;e.exports=function getUTCOffset(e,t){var i,l=n(e)?0:s(e);return i=!0===t?":":"",!l&&t?"Z":a(r(-l/60),2,!0)+i+a(o(l%60),2)}},function(e,t,i){"use strict";var n=i(19);e.exports=function getHours(e){return n(e,"Hours")}},function(e,t,i){"use strict";e.exports={ISO8601:"{yyyy}-{MM}-{dd}T{HH}:{mm}:{ss}.{SSS}{Z}",RFC1123:"{Dow}, {dd} {Mon} {yyyy} {HH}:{mm}:{ss} {ZZ}",RFC1036:"{Weekday}, {dd}-{Mon}-{yy} {HH}:{mm}:{ss} {ZZ}"}},function(e,t,i){"use strict";var n=i(82),r=i(272),s=i(79),a=r.dateFormatMatcher;e.exports=function dateFormat(e,t,i){return s(e),t=n[t]||t||"{long}",a(t,e,i)}},function(e,t,i){"use strict";var n=i(5),r=i(53),s=i(64),a=i(291),o=i(290),l=n.isNumber,u=n.isString;e.exports=function collectDateArguments(e,t){var i=e[0],n=e[1];return t&&u(i)?i=a(i):l(i)&&l(n)?(i=o(e),n=null):s(i)&&(i=r(i)),[i,n]}},function(e,t,i){"use strict";var n=i(49),r=i(84);e.exports=function advanceDateWithArgs(e,t,i){return t=r(t,!0),n(e,t[0],t[1],i)}},function(e,t,i){"use strict";var n=i(62);e.exports=function createDateWithContext(e,t,i,r){return n(e,t,i,r).date}},function(e,t,i){"use strict";var n=i(94),r=i(30),s=i(4),a=i(26),o=i(50),l=i(34),u=i(31),c=i(39),f=i(44),d=i(47),h=i(62),p=i(46),m=s.MONTH_INDEX;e.exports=function compareDate(e,t,i,s,g){var y,v,b,C,w,_,x,k=0,E=0;return a(e)&&((g=g||{}).fromUTC=!0,g.setUTC=!0),_=h(null,t,g,!0),i>0&&(k=E=i,b=!0),!!f(_.date)&&(_.set&&_.set.specificity&&((u(_.set.edge)||u(_.set.shift))&&(v=!0,p(_.date,_.set.specificity,s)),w=v||_.set.specificity===m?d(l(_.date),_.set.specificity,s).getTime():function addSpecificUnit(){var e=r[_.set.specificity];return c(l(_.date),e.name,1).getTime()-1}(),!b&&u(_.set.sign)&&_.set.specificity&&(k=50,E=-50)),x=e.getTime(),C=_.date.getTime(),w=w||C,(y=function getTimezoneShift(){return _.set&&_.set.specificity?0:(o(_.date)-o(e))*n}())&&(C-=y,w-=y),x>=C-k&&x<=w+E)}},function(e,t,i){"use strict";var n=i(24),r=i(20),s=i(8).ceil;e.exports=function moveToEndOfWeek(e,t){var i=t-1;return n(e,7*s((r(e)-i)/7)+i),e}},function(e,t,i){"use strict";var n=i(400);e.exports=function getDateParamKey(e,t){return n(e,t)||n(e,t+"s")||"day"===t&&n(e,"date")}},function(e,t,i){"use strict";var n=i(4),r=i(36),s=i(38),a=i(60),o=n.MONTH_INDEX;e.exports=function moveToFirstDayOfWeekYear(e,t,i){s(e,o),r(e,i),a(e,t)}},function(e,t,i){"use strict";var n=i(65),r=i(35),s=i(36),a=i(403),o=i(29),l=i(28),u=i(402),c=i(34),f=i(20),d=i(24),h=i(5),p=i(90),m=h.isNumber,g=n.ISO_FIRST_DAY_OF_WEEK,y=n.ISO_FIRST_DAY_OF_WEEK_YEAR;e.exports=function setISOWeekNumber(e,t){if(m(t)){var i=c(e),n=f(e);p(i,g,y),s(i,r(i)+7*(t-1)),a(e,o(i)),u(e,l(i)),s(e,r(i)),d(e,n||7)}return e.getTime()}},function(e,t,i){"use strict";var n=i(30),r=i(41);e.exports=function walkUnitDown(e,t){for(;e>=0&&!1!==t(n[e],e);)e=r(e)}},function(e,t,i){"use strict";var n=i(4),r=i(38),s=n.HOURS_INDEX;e.exports=function resetTime(e){return r(e,s)}},function(e,t,i){"use strict";e.exports=6e4},function(e,t,i){"use strict";var n=i(8),r=i(63),s=n.abs;e.exports=function getAdjustedUnit(e,t){var i=0,n=0;return r(function(e,r){if((n=s(t(e)))>=1)return i=r,!1}),[n,i,e]}},function(e,t,i){"use strict";var n=i(8),r=n.abs,s=n.pow,a=n.round;e.exports=function withPrecision(e,t,i){var n=s(10,r(t||0));return i=i||a,t<0&&(n=1/n),i(e*n)/n}},function(e,t,i){"use strict";e.exports=String.fromCharCode},function(e,t,i){"use strict";var n=i(29),r=i(28),s=i(19);e.exports=function getDaysInMonth(e){return 32-s(new Date(n(e),r(e),32),"Date")}},function(e,t,i){"use strict";e.exports=function getRegNonCapturing(e,t){return e.length>1&&(e="(?:"+e+")"),t&&(e+="?"),e}},function(e,t,i){"use strict";var n=i(12).classToString;e.exports=function isClass(e,t,i){return i||(i=n(e)),i==="[object "+t+"]"}},function(e,t,i){"use strict";e.exports=function map(e,t){for(var i=[],n=0,r=e.length;nn?1:0},t.numSortAsc=function numSortAsc(e,t){return e-t},t.numSortDesc=function numSortDesc(e,t){return t-e},t.dateSortAsc=function dateSortAsc(e,t){return e.getTime()-t.getTime()},t.dateSortDesc=function dateSortDesc(e,t){return t.getTime()-e.getTime()},t.sortNumberStr=function sortNumberStr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:",";return function(i,r){var s=(0,n.parse)(i,t),a=(0,n.parse)(r,t);return e(s,a)}},t.sortDateStr=function sortDateStr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-us";return function(i,n){var s=r.Date.create(i,t),a=r.Date.create(n,t);return e(s,a)}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CheckList=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i1&&void 0!==arguments[1]&&arguments[1],n=this.tf;e=Number(e),this.emitter.emit("before-populating-filter",n,e),this.opts=[],this.optsTxt=[];var r=this.containers[e],l=(0,s.createElm)("ul",["id",n.fltIds[e]],["colIndex",e]);l.className=this.filterCssClass;var u=n.caseSensitive;if(this.isCustom=n.isCustomOptions(e),this.isCustom){var c=n.getCustomOptions(e);this.opts=c[0],this.optsTxt=c[1]}var f=void 0,d=n.getActiveFilterId();i&&d&&(f=n.getColumnIndexFromFilterId(d));var h=[];i&&n.disableExcludedOptions&&(this.excludedOpts=[]),r.innerHTML="",n.eachRow()(function(r){var s=n.getCellValue(r.cells[e]),l=(0,o.matchCase)(s,u);(0,a.has)(t.opts,l,u)||t.opts.push(s);var c=h[e];i&&n.disableExcludedOptions&&(c||(c=n.getVisibleColumnValues(e)),(0,a.has)(c,l,u)||(0,a.has)(t.excludedOpts,l,u)||t.excludedOpts.push(s))},function(e,r){return-1!==n.excludeRows.indexOf(r)||(!(e.cells.length===n.nbCells&&!t.isCustom)||(!(!i||t.isValidLinkedValue(r,f))||void 0))}),this.opts=this.sortOptions(e,this.opts),this.excludedOpts&&(this.excludedOpts=this.sortOptions(e,this.excludedOpts)),this.addChecks(e,l),n.loadFltOnDemand&&(r.innerHTML=""),r.appendChild(l),r.setAttribute("filled","1"),this.emitter.emit("after-populating-filter",n,e,r)}},{key:"addChecks",value:function addChecks(e,t){for(var i=this,n=this.tf,r=this.addTChecks(e,t),u=0;u0&&(n.checked=!1,(0,s.removeClass)(i,t.selectedItemCssClass))}),l.setAttribute("value",""),l.setAttribute("indexes","")}else{var h=d+r+i.separator,p=(0,o.trim)(f+" "+n+" "+i.orOperator);l.setAttribute("value",p),l.setAttribute("indexes",h);var m=(0,s.tag)(u[0],"input")[0];m&&(m.checked=!1)}(0,s.removeClass)(u[0],this.selectedItemCssClass),(0,s.addClass)(c,this.selectedItemCssClass)}else{var g=new RegExp((0,o.rgxEsc)(n+" "+i.orOperator)),y=f.replace(g,""),v=new RegExp((0,o.rgxEsc)(r+i.separator)),b=d.replace(v,"");l.setAttribute("value",(0,o.trim)(y)),l.setAttribute("indexes",b),(0,s.removeClass)(c,this.selectedItemCssClass)}}}},{key:"selectOptions",value:function selectOptions(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=this.tf,r=n.getFilterElement(e);if(r&&0!==i.length){var l=(0,s.tag)(r,"li");r.setAttribute("value",""),r.setAttribute("indexes",""),[].forEach.call(l,function(e){var r=(0,s.tag)(e,"input")[0],l=(0,o.matchCase)(r.value,n.caseSensitive);""!==l&&(0,a.has)(i,l,n.caseSensitive)?r.checked=!0:-1!==i.indexOf(n.nmOperator)&&l===(0,o.matchCase)(n.nonEmptyText,n.caseSensitive)?r.checked=!0:-1!==i.indexOf(n.emOperator)&&l===(0,o.matchCase)(n.emptyText,n.caseSensitive)?r.checked=!0:r.checked=!1,t.setItemOption(r)})}}},{key:"getValues",value:function getValues(e){var t=this.tf,i=t.getFilterElement(e).getAttribute("value"),n=(0,u.isEmpty)(i)?"":i;return n=(n=n.substr(0,n.length-3)).split(" "+t.orOperator+" ")}},{key:"destroy",value:function destroy(){var e=this;this.emitter.off(["build-checklist-filter"],function(t,i,n){return e.build(i,n)}),this.emitter.off(["select-checklist-options"],function(t,i,n){return e.selectOptions(i,n)}),this.emitter.off(["rows-changed"],function(){return e.refreshAll()}),this.initialized=!1}}]),CheckList}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Paging=void 0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(){function defineProperties(e,t){for(var i=0;i"),t.btnPrevPageText=(0,c.defaultsStr)(i.btn_prev_page_text,"<"),t.btnLastPageText=(0,c.defaultsStr)(i.btn_last_page_text,">|"),t.btnFirstPageText=(0,c.defaultsStr)(i.btn_first_page_text,"|<"),t.btnNextPageHtml=(0,c.defaultsStr)(i.btn_next_page_html,e.enableIcons?'':null),t.btnPrevPageHtml=(0,c.defaultsStr)(i.btn_prev_page_html,e.enableIcons?'':null),t.btnFirstPageHtml=(0,c.defaultsStr)(i.btn_first_page_html,e.enableIcons?'':null),t.btnLastPageHtml=(0,c.defaultsStr)(i.btn_last_page_html,e.enableIcons?'':null),t.pageText=(0,c.defaultsStr)(i.page_text," Page "),t.ofText=(0,c.defaultsStr)(i.of_text," of "),t.nbPgSpanCssClass=(0,c.defaultsStr)(i.nb_pages_css_class,"nbpg"),t.hasBtns=(0,c.defaultsBool)(i.btns,!0),t.pageSelectorType=(0,c.defaultsStr)(i.page_selector_type,u.SELECT),t.toolbarPosition=(0,c.defaultsStr)(i.toolbar_position,f.CENTER),t.onBeforeChangePage=(0,c.defaultsFn)(i.on_before_change_page,o.EMPTY_FN),t.onAfterChangePage=(0,c.defaultsFn)(i.on_after_change_page,o.EMPTY_FN),t.slcResultsTxt=null,t.btnNextCont=null,t.btnPrevCont=null,t.btnLastCont=null,t.btnFirstCont=null,t.pgCont=null,t.pgBefore=null,t.pgAfter=null;var n=e.refRow,r=e.getRowsNb(!0);t.nbPages=Math.ceil((r-n)/t.pageLength);var s=t;return t.evt={slcIndex:function slcIndex(){return s.pageSelectorType===u.SELECT?s.pageSlc.options.selectedIndex:parseInt(s.pageSlc.value,10)-1},nbOpts:function nbOpts(){return s.pageSelectorType===u.SELECT?parseInt(s.pageSlc.options.length,10)-1:s.nbPages-1},next:function next(){var e=s.evt.slcIndex()0?s.evt.slcIndex()-1:s.evt.nbOpts();s.changePage(e)},last:function last(){s.changePage(s.evt.nbOpts())},first:function first(){s.changePage(0)},_detectKey:function _detectKey(t){(0,l.isKeyPressed)(t,[u.ENTER_KEY])&&(e.sorted?(e.filter(),s.changePage(s.evt.slcIndex())):s.changePage(),this.blur())},slcPagesChange:null,nextEvt:null,prevEvt:null,lastEvt:null,firstEvt:null},t}return function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Paging,s.Feature),r(Paging,[{key:"init",value:function init(){var e=this,t=void 0,i=this.tf,n=this.evt;if(!this.initialized){this.emitter.emit("initializing-feature",this,!(0,o.isNull)(this.tgtId)),this.hasResultsPerPage&&(this.resultsPerPage.length<2?this.hasResultsPerPage=!1:(this.pageLength=this.resultsPerPage[1][0],this.setResultsPerPage())),n.slcPagesChange=function(t){var i=t.target;e.changePage(i.selectedIndex)},this.pageSelectorType===u.SELECT&&((t=(0,a.createElm)(u.SELECT)).className=this.pgSlcCssClass,(0,l.addEvt)(t,"change",n.slcPagesChange)),this.pageSelectorType===u.INPUT&&((t=(0,a.createElm)(u.INPUT,["value",this.currentPageNb])).className=this.pgInpCssClass,(0,l.addEvt)(t,"keypress",n._detectKey));var r=(0,a.createElm)("span"),s=(0,a.createElm)("span"),c=(0,a.createElm)("span"),f=(0,a.createElm)("span");if(this.hasBtns){if(this.btnNextPageHtml)r.innerHTML=this.btnNextPageHtml,(0,l.addEvt)(r,"click",n.next);else{var d=(0,a.createElm)(u.INPUT,["type","button"],["value",this.btnNextPageText],["title","Next"]);d.className=this.btnCssClass,(0,l.addEvt)(d,"click",n.next),r.appendChild(d)}if(this.btnPrevPageHtml)s.innerHTML=this.btnPrevPageHtml,(0,l.addEvt)(s,"click",n.prev);else{var h=(0,a.createElm)(u.INPUT,["type","button"],["value",this.btnPrevPageText],["title","Previous"]);h.className=this.btnCssClass,(0,l.addEvt)(h,"click",n.prev),s.appendChild(h)}if(this.btnLastPageHtml)c.innerHTML=this.btnLastPageHtml,(0,l.addEvt)(c,"click",n.last);else{var p=(0,a.createElm)(u.INPUT,["type","button"],["value",this.btnLastPageText],["title","Last"]);p.className=this.btnCssClass,(0,l.addEvt)(p,"click",n.last),c.appendChild(p)}if(this.btnFirstPageHtml)f.innerHTML=this.btnFirstPageHtml,(0,l.addEvt)(f,"click",n.first);else{var m=(0,a.createElm)(u.INPUT,["type","button"],["value",this.btnFirstPageText],["title","First"]);m.className=this.btnCssClass,(0,l.addEvt)(m,"click",n.first),f.appendChild(m)}}var g=this.tgtId?(0,a.elm)(this.tgtId):i.feature("toolbar").container(this.toolbarPosition);g.appendChild(f),g.appendChild(s);var y=(0,a.createElm)("span");y.appendChild((0,a.createText)(this.pageText)),y.className=this.nbPgSpanCssClass,g.appendChild(y),g.appendChild(t);var v=(0,a.createElm)("span");v.appendChild((0,a.createText)(this.ofText)),v.className=this.nbPgSpanCssClass,g.appendChild(v);var b=(0,a.createElm)("span");b.className=this.nbPgSpanCssClass,b.appendChild((0,a.createText)(" "+this.nbPages+" ")),g.appendChild(b),g.appendChild(r),g.appendChild(c),this.btnNextCont=r,this.btnPrevCont=s,this.btnLastCont=c,this.btnFirstCont=f,this.pgCont=b,this.pgBefore=y,this.pgAfter=v,this.pageSlc=t,this.setPagingInfo(),i.fltGrid||(i.validateAllRows(),this.setPagingInfo(i.validRowsIndex)),this.emitter.on(["after-filtering"],(0,l.bound)(this.resetPagingInfo,this)),this.emitter.on(["change-page"],(0,l.bound)(this.changePageHandler,this)),this.emitter.on(["change-page-results"],(0,l.bound)(this.changePageResultsHandler,this)),this.initialized=!0,this.emitter.emit("feature-initialized",this)}}},{key:"reset",value:function reset(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.enable(),this.init(),e&&this.tf.filter()}},{key:"resetPagingInfo",value:function resetPagingInfo(){this.startPagingRow=0,this.currentPageNb=1,this.setPagingInfo(this.tf.validRowsIndex)}},{key:"setPagingInfo",value:function setPagingInfo(e){var t=this.tf,i=this.tgtId?(0,a.elm)(this.tgtId):t.feature("toolbar").container(this.toolbarPosition);if(t.validRowsIndex=e||t.getValidRows(!0),this.nbPages=Math.ceil(t.validRowsIndex.length/this.pageLength),this.pgCont.innerHTML=this.nbPages,this.pageSelectorType===u.SELECT&&(this.pageSlc.innerHTML=""),this.nbPages>0)if(i.style.visibility="visible",this.pageSelectorType===u.SELECT)for(var n=0;n=n&&s=0&&e<=this.nbPages-1&&(this.onBeforeChangePage(this,e+1),this.currentPageNb=parseInt(e,10)+1,this.pageSelectorType===u.SELECT?this.pageSlc.options[e].selected=!0:this.pageSlc.value=this.currentPageNb,this.startPagingRow=this.pageSelectorType===u.SELECT?this.pageSlc.value:e*this.pageLength,this.groupByPage(),this.onAfterChangePage(this,e+1)),this.emitter.emit("after-page-change",t,e+1))}},{key:"changeResultsPerPage",value:function changeResultsPerPage(e){this.isEnabled()&&!isNaN(e)&&(this.pageLengthSlc.value=e,this.onChangeResultsPerPage())}},{key:"onChangeResultsPerPage",value:function onChangeResultsPerPage(){var e=this.tf;if(this.isEnabled()&&0!==e.getValidRowsNb()){var t=this.pageLengthSlc,i=this.pageSelectorType,n=this.pageSlc,r=this.emitter;r.emit("before-page-length-change",e);var s=t.selectedIndex,a=i===u.SELECT?n.selectedIndex:parseInt(n.value-1,10);if(this.pageLength=parseInt(t.options[s].value,10),this.startPagingRow=this.pageLength*a,!isNaN(this.pageLength)&&(this.startPagingRow>=e.nbFilterableRows&&(this.startPagingRow=e.nbFilterableRows-this.pageLength),this.setPagingInfo(),i===u.SELECT)){var o=n.options.length-1<=a?n.options.length-1:a;n.options[o].selected=!0}r.emit("after-page-length-change",e,this.pageLength)}}},{key:"resetPage",value:function resetPage(){var e=this.tf;if(this.isEnabled()){this.emitter.emit("before-reset-page",e);var t=e.feature("store").getPageNb();""!==t&&this.changePage(t-1),this.emitter.emit("after-reset-page",e,t)}}},{key:"resetPageLength",value:function resetPageLength(){var e=this.tf;if(this.isEnabled()){this.emitter.emit("before-reset-page-length",e);var t=e.feature("store").getPageLength();""!==t&&(this.pageLengthSlc.options[t].selected=!0,this.changeResultsPerPage()),this.emitter.emit("after-reset-page-length",e,t)}}},{key:"changePageHandler",value:function changePageHandler(e,t){this.setPage(t)}},{key:"changePageResultsHandler",value:function changePageResultsHandler(e,t){this.changeResultsPerPage(t)}},{key:"destroy",value:function destroy(){if(this.initialized){var e=this.evt;this.pageSlc&&(this.pageSelectorType===u.SELECT?(0,l.removeEvt)(this.pageSlc,"change",e.slcPagesChange):this.pageSelectorType===u.INPUT&&(0,l.removeEvt)(this.pageSlc,"keypress",e._detectKey),(0,a.removeElm)(this.pageSlc)),this.btnNextCont&&((0,l.removeEvt)(this.btnNextCont,"click",e.next),(0,a.removeElm)(this.btnNextCont),this.btnNextCont=null),this.btnPrevCont&&((0,l.removeEvt)(this.btnPrevCont,"click",e.prev),(0,a.removeElm)(this.btnPrevCont),this.btnPrevCont=null),this.btnLastCont&&((0,l.removeEvt)(this.btnLastCont,"click",e.last),(0,a.removeElm)(this.btnLastCont),this.btnLastCont=null),this.btnFirstCont&&((0,l.removeEvt)(this.btnFirstCont,"click",e.first),(0,a.removeElm)(this.btnFirstCont),this.btnFirstCont=null),this.pgBefore&&((0,a.removeElm)(this.pgBefore),this.pgBefore=null),this.pgAfter&&((0,a.removeElm)(this.pgAfter),this.pgAfter=null),this.pgCont&&((0,a.removeElm)(this.pgCont),this.pgCont=null),this.hasResultsPerPage&&this.removeResultsPerPage(),this.emitter.off(["after-filtering"],(0,l.bound)(this.resetPagingInfo,this)),this.emitter.off(["change-page"],(0,l.bound)(this.changePageHandler,this)),this.emitter.off(["change-page-results"],(0,l.bound)(this.changePageResultsHandler,this)),this.pageSlc=null,this.nbPages=0,this.initialized=!1}}}]),Paging}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoResults=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i0?this.hide():this.show()}},{key:"show",value:function show(){this.initialized&&this.isEnabled()&&(this.onBeforeShow(this.tf,this),this.setWidth(),this.cont.style.display="block",this.onAfterShow(this.tf,this))}},{key:"hide",value:function hide(){this.initialized&&this.isEnabled()&&(this.onBeforeHide(this.tf,this),this.cont.style.display=o.NONE,this.onAfterHide(this.tf,this))}},{key:"setWidth",value:function setWidth(){if(this.initialized&&!this.isExternal&&this.isEnabled()){var e=this.tf;if(e.gridLayout){var t=e.feature("gridLayout");this.cont.style.width=t.headTbl.clientWidth+"px"}else this.cont.style.width=(e.dom().tHead?e.dom().tHead.clientWidth:e.dom().tBodies[0].clientWidth)+"px"}}},{key:"destroy",value:function destroy(){var e=this;this.initialized&&((0,s.removeElm)(this.cont),this.cont=null,this.emitter.off(["after-filtering"],function(){return e.toggle()}),this.initialized=!1)}}]),NoResults}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AlternateRows=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i'),t.toolbarPosition=(0,o.defaultsStr)(i.toolbar_position,u.RIGHT),t.container=null,t.element=null,t}return function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(ClearButton,r.Feature),n(ClearButton,[{key:"onClick",value:function onClick(){this.isEnabled()&&this.tf.clearFilters()}},{key:"init",value:function init(){var e=this,t=this.tf;if(!this.initialized){this.emitter.emit("initializing-feature",this,!(0,l.isNull)(this.targetId));var i=(0,s.createElm)("span");if((this.targetId?(0,s.elm)(this.targetId):t.feature("toolbar").container(this.toolbarPosition)).appendChild(i),this.html){i.innerHTML=this.html;var n=i.firstChild;(0,a.addEvt)(n,"click",function(){return e.onClick()})}else{var r=(0,s.createElm)("a",["href","javascript:void(0);"]);r.className=this.cssClass,r.appendChild((0,s.createText)(this.text)),i.appendChild(r),(0,a.addEvt)(r,"click",function(){return e.onClick()})}this.element=i.firstChild,this.container=i,this.initialized=!0,this.emitter.emit("feature-initialized",this)}}},{key:"destroy",value:function destroy(){this.initialized&&((0,s.removeElm)(this.element),(0,s.removeElm)(this.container),this.element=null,this.container=null,this.initialized=!1)}}]),ClearButton}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StatusBar=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"";if(this.isEnabled()){this.onBeforeShowMsg(this.tf,t);var i=""===t?this.delay:1;s.root.setTimeout(function(){e.initialized&&(e.msgContainer.innerHTML=t,e.onAfterShowMsg(e.tf,t))},i)}}},{key:"destroy",value:function destroy(){var e=this;if(this.initialized){var t=this.emitter;this.container.innerHTML="",this.targetId||(0,a.removeElm)(this.container),this.labelContainer=null,this.msgContainer=null,this.container=null,t.off(["before-filtering"],function(){return e.message(e.msgFilter)}),t.off(["before-populating-filter"],function(){return e.message(e.msgPopulate)}),t.off(["before-page-change"],function(){return e.message(e.msgChangePage)}),t.off(["before-clearing-filters"],function(){return e.message(e.msgClear)}),t.off(["before-page-length-change"],function(){return e.message(e.msgChangeResults)}),t.off(["before-reset-page"],function(){return e.message(e.msgResetPage)}),t.off(["before-reset-page-length"],function(){return e.message(e.msgResetPageLength)}),t.off(["before-loading-extensions"],function(){return e.message(e.msgLoadExtensions)}),t.off(["before-loading-themes"],function(){return e.message(e.msgLoadThemes)}),t.off(c,function(){return e.message("")}),this.initialized=!1}}}]),StatusBar}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RowsCounter=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i0?1:0),a=s+n.pageLength-1<=r?s+n.pageLength-1:r;i=s+this.fromToTextSeparator+a+this.overText+r}}else i=e&&""!==e?e:t.getFilterableRowsNb()-t.nbHiddenRows;this.label.innerHTML=i,this.onAfterRefreshCounter(t,this.label,i)}}},{key:"destroy",value:function destroy(){var e=this;this.initialized&&(!this.targetId&&this.container?(0,s.removeElm)(this.container):(0,s.elm)(this.targetId).innerHTML="",this.label=null,this.container=null,this.emitter.off(["after-filtering","grouped-by-page"],function(){return e.refresh(tf.getValidRowsNb())}),this.emitter.off(["rows-changed"],function(){return e.refresh()}),this.initialized=!1)}}]),RowsCounter}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MarkActiveColumns=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:a.EMPTY_FN,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.tf.dom();[].forEach.call(i.querySelectorAll("tbody td:nth-child("+(e+1)+")"),t)}},{key:"destroy",value:function destroy(){var e=this;this.initialized&&(this.clearActiveColumns(),this.emitter.off(["before-filtering"],function(){return e.clearActiveColumns()}),this.emitter.off(["cell-processed"],function(t,i){return e.markActiveColumn(i)}),this.initialized=!1)}}]),MarkActiveColumns}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PopupFilter=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i'),t.placeholderCssClass=(0,c.defaultsStr)(i.placeholder_css_class,"popUpPlaceholder"),t.containerCssClass=(0,c.defaultsStr)(i.div_css_class,"popUpFilter"),t.adjustToContainer=(0,c.defaultsBool)(i.adjust_to_container,!0),t.onBeforeOpen=(0,c.defaultsFn)(i.on_before_popup_filter_open,s.EMPTY_FN),t.onAfterOpen=(0,c.defaultsFn)(i.on_after_popup_filter_open,s.EMPTY_FN),t.onBeforeClose=(0,c.defaultsFn)(i.on_before_popup_filter_close,s.EMPTY_FN),t.onAfterClose=(0,c.defaultsFn)(i.on_after_popup_filter_close,s.EMPTY_FN),t.fltSpans=[],t.fltIcons=[],t.filtersCache=null,t.fltElms=(0,c.defaultsArr)(t.filtersCache,[]),t.prfxDiv="popup_",t.activeFilterIdx=-1,t}return function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(PopupFilter,r.Feature),n(PopupFilter,[{key:"onClick",value:function onClick(e){var t=(0,o.targetEvt)(e).parentNode,i=parseInt(t.getAttribute("ci"),10);if(this.closeAll(i),this.toggle(i),this.adjustToContainer){var n=this.fltElms[i],r=.95*this.tf.getHeaderElement(i).clientWidth;n.style.width=parseInt(r,10)+"px"}(0,o.cancelEvt)(e),(0,o.stopEvt)(e)}},{key:"onMouseup",value:function onMouseup(e){if(-1!==this.activeFilterIdx){var t=(0,o.targetEvt)(e),i=this.fltElms[this.activeFilterIdx];if(this.fltIcons[this.activeFilterIdx]!==t){for(;t&&t!==i;)t=t.parentNode;t!==i&&this.close(this.activeFilterIdx)}}}},{key:"init",value:function init(){var e=this;if(!this.initialized){var t=this.tf;t.externalFltIds=[""],t.filtersRowIndex=0,t.headersRow<=1&&isNaN(t.config().headers_row_index)&&(t.headersRow=0),t.gridLayout&&(t.headersRow--,this.buildIcons()),this.emitter.on(["before-filtering"],function(){return e.setIconsState()}),this.emitter.on(["after-filtering"],function(){return e.closeAll()}),this.emitter.on(["cell-processed"],function(t,i){return e.changeState(i,!0)}),this.emitter.on(["filters-row-inserted"],function(){return e.buildIcons()}),this.emitter.on(["before-filter-init"],function(t,i){return e.build(i)}),this.initialized=!0}}},{key:"reset",value:function reset(){this.enable(),this.init(),this.buildIcons(),this.buildAll()}},{key:"buildIcons",value:function buildIcons(){var e=this,t=this.tf;t.headersRow++,t.eachCol(function(i){var n=(0,a.createElm)("span",["ci",i]);n.innerHTML=e.iconHtml,t.getHeaderElement(i).appendChild(n),(0,o.addEvt)(n,"click",function(t){return e.onClick(t)}),e.fltSpans[i]=n,e.fltIcons[i]=n.firstChild},function(e){return t.getFilterType(e)===l.NONE})}},{key:"buildAll",value:function buildAll(){for(var e=0;e0,t.tblMainCont=null,t.tblCont=null,t.headTblCont=null,t.headTbl=null,e.fltGrid=t.filters,t}return function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(GridLayout,r.Feature),n(GridLayout,[{key:"init",value:function init(){var e=this,t=this.tf,i=t.dom();if(!this.initialized){this.setOverrides(),this.setDefaultColWidths(),this.tblMainCont=this.createContainer("div",this.mainContCssClass),this.width&&(this.tblMainCont.style.width=this.width),i.parentNode.insertBefore(this.tblMainCont,i),this.tblCont=this.createContainer("div",this.contCssClass),this.setConfigWidth(this.tblCont),this.height&&(this.tblCont.style.height=this.height),i.parentNode.insertBefore(this.tblCont,i);var n=(0,s.removeElm)(i);if(this.tblCont.appendChild(n),""===i.style.width){var r=this.initialTableWidth();i.style.width=((0,o.contains)("%",r)?i.clientWidth:r)+"px"}var u=(0,s.removeElm)(this.tblCont);this.tblMainCont.appendChild(u),this.headTblCont=this.createContainer("div",this.headContCssClass),this.headTbl=(0,s.createElm)("table");var c=(0,s.createElm)("tHead"),f=i.rows[this.headRowIndex],d=this.getSortTriggerIds(f),h=this.createFiltersRow();this.setHeadersRow(c),this.headTbl.appendChild(c),0===t.filtersRowIndex?c.insertBefore(h,f):c.appendChild(h),this.headTblCont.appendChild(this.headTbl),this.tblCont.parentNode.insertBefore(this.headTblCont,this.tblCont);var p=(0,s.tag)(i,"thead");p.length>0&&i.removeChild(p[0]),this.headTbl.style.tableLayout="fixed",i.style.tableLayout="fixed",t.setColWidths(this.headTbl),this.headTbl.style.width=i.style.width,(0,a.addEvt)(this.tblCont,"scroll",function(t){var i=(0,a.targetEvt)(t).scrollLeft;e.headTblCont.scrollLeft=i});var m=t.extension("sort");m&&(m.asyncSort=!0,m.triggerIds=d),this.setColumnElements(),t.popupFilters&&(h.style.display=l.NONE),this.initialized=!0}}},{key:"setOverrides",value:function setOverrides(){var e=this.tf;e.refRow=0,e.headersRow=0,e.filtersRowIndex=1}},{key:"setDefaultColWidths",value:function setDefaultColWidths(){var e=this,t=this.tf;t.colWidths.length>0||(t.eachCol(function(i){var n=void 0,r=t.dom().rows[t.getHeadersRowIndex()].cells[i];n=""!==r.width?r.width:""!==r.style.width?parseInt(r.style.width,10):e.defaultColWidth,t.colWidths[i]=n}),t.setColWidths())}},{key:"initialTableWidth",value:function initialTableWidth(){var e=this.tf.dom(),t=void 0;return t=""!==e.width?e.width:""!==e.style.width?e.style.width:e.clientWidth,parseInt(t,10)}},{key:"createContainer",value:function createContainer(e,t){var i=(0,s.createElm)(e);return i.className=t,i}},{key:"createFiltersRow",value:function createFiltersRow(){var e=this,t=this.tf,i=(0,s.createElm)("tr");return this.filters&&t.fltGrid&&(t.externalFltIds=[],t.eachCol(function(n){var r=""+(t.prfxFlt+n+e.prfxGridFltTd+t.id),a=(0,s.createElm)(t.fltCellTag,["id",r]);i.appendChild(a),t.externalFltIds[n]=r})),i}},{key:"setColumnElements",value:function setColumnElements(){var e=this.tf,t=(0,s.tag)(e.dom(),"col");this.tblHasColTag=t.length>0;for(var i=e.getCellsNb()-1;i>=0;i--){var n=void 0;this.tblHasColTag?n=t[i]:(n=(0,s.createElm)("col"),e.dom().insertBefore(n,e.dom().firstChild)),n.style.width=e.colWidths[i],this.colElms[i]=n}this.tblHasColTag=!0}},{key:"setHeadersRow",value:function setHeadersRow(e){if(this.noHeaders)e.appendChild((0,s.createElm)("tr"));else for(var t=0;t0){var r=n.cookie,s=r.indexOf(i);if(-1!==s){s+=i.length;var a=r.indexOf(";",s);-1===a&&(a=r.length),t=unescape(r.substring(s,a))}}return t},remove:function remove(e){this.write(e,"",-1)}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Storage=t.hasStorage=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i7)};t.Hash=function(){function Hash(e){!function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Hash),this.state=e,this.lastHash=null,this.emitter=e.emitter,this.boundSync=null}return n(Hash,[{key:"init",value:function init(){var e=this;c()&&(this.lastHash=o.hash,this.boundSync=this.sync.bind(this),this.emitter.on(["state-changed"],function(t,i){return e.update(i)}),this.emitter.on(["initialized"],this.boundSync),(0,r.addEvt)(s.root,"hashchange",this.boundSync))}},{key:"update",value:function update(e){var t="#"+u(a.stringify(e));this.lastHash!==t&&(o.hash=t,this.lastHash=t)}},{key:"parse",value:function parse(e){return-1===e.indexOf("#")?null:(e=e.substr(1),a.parse(l(e)))}},{key:"sync",value:function sync(){var e=this.parse(o.hash);e&&this.state.overrideAndSync(e)}},{key:"destroy",value:function destroy(){var e=this;this.emitter.off(["state-changed"],function(t,i){return e.update(i)}),this.emitter.off(["initialized"],this.boundSync),(0,r.removeEvt)(s.root,"hashchange",this.boundSync),this.state=null,this.lastHash=null,this.emitter=null}}]),Hash}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.State=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i<, <=, >, >=, =, *, !, {, }, ||,&&, [empty], [nonempty], rgx:
Learn more
':i.text,t.instrHtml=(0,c.defaultsStr)(i.html,null),t.btnText=(0,c.defaultsStr)(i.btn_text,"?"),t.btnHtml=(0,c.defaultsStr)(i.btn_html,null),t.btnCssClass=(0,c.defaultsStr)(i.btn_css_class,"helpBtn"),t.contCssClass=(0,c.defaultsStr)(i.container_css_class,"helpCont"),t.btn=null,t.cont=null,t.boundMouseup=null,t.defaultHtml='

TableFilter v'+e.version+'

'+h+"
©2015-"+e.year+' Max Guglielmi
',t.toolbarPosition=(0,c.defaultsStr)(i.toolbar_position,f.RIGHT),t.emitter.on(["init-help"],function(){return t.init()}),t}return function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Help,r.Feature),n(Help,[{key:"onMouseup",value:function onMouseup(e){for(var t=(0,a.targetEvt)(e);t&&t!==this.cont&&t!==this.btn;)t=t.parentNode;t!==this.cont&&t!==this.btn&&this.toggle()}},{key:"init",value:function init(){var e=this;if(!this.initialized){this.emitter.emit("initializing-feature",this,!(0,u.isNull)(this.tgtId));var t=this.tf,i=(0,s.createElm)("span"),n=(0,s.createElm)("div");this.boundMouseup=this.onMouseup.bind(this),(this.tgtId?(0,s.elm)(this.tgtId):t.feature("toolbar").container(this.toolbarPosition)).appendChild(i);var r=this.contTgtId?(0,s.elm)(this.contTgtId):i;if(this.btnHtml){i.innerHTML=this.btnHtml;var o=i.firstChild;(0,a.addEvt)(o,"click",function(){return e.toggle()}),r.appendChild(n)}else{r.appendChild(n);var l=(0,s.createElm)("a",["href","javascript:void(0);"]);l.className=this.btnCssClass,l.appendChild((0,s.createText)(this.btnText)),i.appendChild(l),(0,a.addEvt)(l,"click",function(){return e.toggle()})}this.instrHtml?(this.contTgtId&&r.appendChild(n),n.innerHTML=this.instrHtml,this.contTgtId||(n.className=this.contCssClass)):(n.innerHTML=this.instrText,n.className=this.contCssClass),n.innerHTML+=this.defaultHtml,(0,a.addEvt)(n,"click",function(){return e.toggle()}),this.cont=n,this.btn=i,this.initialized=!0,this.emitter.emit("feature-initialized",this)}}},{key:"toggle",value:function toggle(){if(this.isEnabled()){(0,a.removeEvt)(l.root,"mouseup",this.boundMouseup);var e=this.cont.style.display;""===e||e===o.NONE?(this.cont.style.display="inline",(0,a.addEvt)(l.root,"mouseup",this.boundMouseup)):this.cont.style.display=o.NONE}}},{key:"destroy",value:function destroy(){this.initialized&&((0,s.removeElm)(this.btn),this.btn=null,(0,s.removeElm)(this.cont),this.cont=null,this.boundMouseup=null,this.initialized=!1)}}]),Help}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DateType=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:[];t.forEach(function(i,n){var r=e.getOptions(n,t);if(r.type===o.DATE&&r.hasOwnProperty("format")){var s=e.datetime.getLocale(r.locale||e.locale),u=(0,a.isArray)(r.format)?r.format:[r.format];try{u.forEach(function(e){s.addFormat(e)})}catch(e){l.root.console.error(e)}}})}},{key:"destroy",value:function destroy(){var e=this;this.initialized&&(this.emitter.off(["add-date-type-formats"],function(t,i){return e.addConfigFormats(i)}),this.initialized=!1)}}]),DateType}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Dropdown=void 0;var n=function(){function defineProperties(e,t){for(var i=0;i1&&void 0!==arguments[1]&&arguments[1],n=this.tf;e=Number(e),this.emitter.emit("before-populating-filter",n,e),this.opts=[],this.optsTxt=[];var r=n.getFilterElement(e);if(this.isCustom=n.isCustomOptions(e),this.isCustom){var s=n.getCustomOptions(e);this.opts=s[0],this.optsTxt=s[1]}var l=void 0,u=n.getActiveFilterId();i&&u&&(l=n.getColumnIndexFromFilterId(u));var c=null,f=null;i&&n.disableExcludedOptions&&(c=[],f=[]),n.eachRow()(function(r){var s=n.getCellValue(r.cells[e]),l=(0,o.matchCase)(s,n.caseSensitive);if((0,a.has)(t.opts,l,n.caseSensitive)||t.opts.push(s),i&&n.disableExcludedOptions){var u=f[e];u||(u=n.getVisibleColumnValues(e)),(0,a.has)(u,l,n.caseSensitive)||(0,a.has)(c,l,n.caseSensitive)||c.push(s)}},function(e,r){return-1!==n.excludeRows.indexOf(r)||(!(e.cells.length===n.nbCells&&!t.isCustom)||(!(!i||t.isValidLinkedValue(r,l))||void 0))}),this.opts=this.sortOptions(e,this.opts),c&&(c=this.sortOptions(e,c)),this.addOptions(e,r,i,c),this.emitter.emit("after-populating-filter",n,e,r)}},{key:"addOptions",value:function addOptions(e,t,i,n){var r=this.tf,l=t.value;t.innerHTML="",t=this.addFirstOption(t);for(var c=0;c1&&void 0!==arguments[1]?arguments[1]:[],i=this.tf;if(0!==t.length){var n=i.getFilterElement(e);[].forEach.call(n.options,function(e){""!==t[0]&&""!==e.value||(e.selected=!1),""!==e.value&&(0,a.has)(t,e.value,!0)&&(e.selected=!0)})}}},{key:"getValues",value:function getValues(e){var t=this.tf.getFilterElement(e),i=[];return t.selectedOptions?[].forEach.call(t.selectedOptions,function(e){return i.push(e.value)}):[].forEach.call(t.options,function(e){e.selected&&i.push(e.value)}),i}},{key:"destroy",value:function destroy(){var e=this;this.emitter.off(["build-select-filter"],function(t,i,n){return e.build(t,i,n)}),this.emitter.off(["select-options"],function(t,i,n){return e.selectOptions(i,n)}),this.emitter.off(["rows-changed"],function(){return e.refreshAll()}),this.initialized=!1}}]),Dropdown}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function defineProperties(e,t){for(var i=0;i0),this.excludeRows=(0,c.defaultsArr)(o.exclude_rows,[]),this.externalFltIds=(0,c.defaultsArr)(o.external_flt_ids,[]),this.onFiltersLoaded=(0,c.defaultsFn)(o.on_filters_loaded,l.EMPTY_FN),this.singleFlt=(0,l.isObj)(o.single_filter)||Boolean(o.single_filter),this.singleFltExcludeCols=(0,l.isObj)(o.single_filter)&&(0,l.isArray)(o.single_filter.exclude_cols)?o.single_filter.exclude_cols:[],this.onRowValidated=(0,c.defaultsFn)(o.on_row_validated,l.EMPTY_FN),this.cellParser=(0,l.isObj)(o.cell_parser)&&(0,l.isFn)(o.cell_parser.parse)&&(0,l.isArray)(o.cell_parser.cols)?o.cell_parser:{cols:[],parse:l.EMPTY_FN},this.watermark=o.watermark||"",this.isWatermarkArray=(0,l.isArray)(this.watermark),this.help=(0,l.isUndef)(o.help_instructions)?void 0:(0,l.isObj)(o.help_instructions)||Boolean(o.help_instructions),this.popupFilters=(0,l.isObj)(o.popup_filters)||Boolean(o.popup_filters),this.markActiveColumns=(0,l.isObj)(o.mark_active_columns)||Boolean(o.mark_active_columns),this.clearFilterText=(0,c.defaultsStr)(o.clear_filter_text,"Clear"),this.enableEmptyOption=Boolean(o.enable_empty_option),this.emptyText=(0,c.defaultsStr)(o.empty_text,"(Empty)"),this.enableNonEmptyOption=Boolean(o.enable_non_empty_option),this.nonEmptyText=(0,c.defaultsStr)(o.non_empty_text,"(Non empty)"),this.onSlcChange=(0,c.defaultsBool)(o.on_change,!0),this.sortSlc=!!(0,l.isUndef)(o.sort_select)||((0,l.isArray)(o.sort_select)?o.sort_select:Boolean(o.sort_select)),this.isSortNumAsc=Boolean(o.sort_num_asc),this.sortNumAsc=this.isSortNumAsc?o.sort_num_asc:[],this.isSortNumDesc=Boolean(o.sort_num_desc),this.sortNumDesc=this.isSortNumDesc?o.sort_num_desc:[],this.loadFltOnDemand=Boolean(o.load_filters_on_demand),this.hasCustomOptions=(0,l.isObj)(o.custom_options),this.customOptions=o.custom_options,this.rgxOperator=(0,c.defaultsStr)(o.regexp_operator,"rgx:"),this.emOperator=(0,c.defaultsStr)(o.empty_operator,"[empty]"),this.nmOperator=(0,c.defaultsStr)(o.nonempty_operator,"[nonempty]"),this.orOperator=(0,c.defaultsStr)(o.or_operator,"||"),this.anOperator=(0,c.defaultsStr)(o.and_operator,"&&"),this.grOperator=(0,c.defaultsStr)(o.greater_operator,">"),this.lwOperator=(0,c.defaultsStr)(o.lower_operator,"<"),this.leOperator=(0,c.defaultsStr)(o.lower_equal_operator,"<="),this.geOperator=(0,c.defaultsStr)(o.greater_equal_operator,">="),this.dfOperator=(0,c.defaultsStr)(o.different_operator,"!"),this.lkOperator=(0,c.defaultsStr)(o.like_operator,"*"),this.eqOperator=(0,c.defaultsStr)(o.equal_operator,"="),this.stOperator=(0,c.defaultsStr)(o.start_with_operator,"{"),this.enOperator=(0,c.defaultsStr)(o.end_with_operator,"}"),this.separator=(0,c.defaultsStr)(o.separator,","),this.rowsCounter=(0,l.isObj)(o.rows_counter)||Boolean(o.rows_counter),this.statusBar=(0,l.isObj)(o.status_bar)||Boolean(o.status_bar),this.loader=(0,l.isObj)(o.loader)||Boolean(o.loader),this.displayBtn=Boolean(o.btn),this.btnText=(0,c.defaultsStr)(o.btn_text,this.enableIcons?"":"Go"),this.btnCssClass=(0,c.defaultsStr)(o.btn_css_class,this.enableIcons?"btnflt_icon":"btnflt"),this.btnReset=(0,l.isObj)(o.btn_reset)||Boolean(o.btn_reset),this.onBeforeReset=(0,c.defaultsFn)(o.on_before_reset,l.EMPTY_FN),this.onAfterReset=(0,c.defaultsFn)(o.on_after_reset,l.EMPTY_FN),this.paging=(0,l.isObj)(o.paging)||Boolean(o.paging),this.nbHiddenRows=0,this.autoFilter=(0,l.isObj)(o.auto_filter)||Boolean(o.auto_filter),this.autoFilterDelay=(0,l.isObj)(o.auto_filter)&&(0,l.isNumber)(o.auto_filter.delay)?o.auto_filter.delay:m.AUTO_FILTER_DELAY,this.isUserTyping=null,this.autoFilterTimer=null,this.highlightKeywords=Boolean(o.highlight_keywords),this.noResults=(0,l.isObj)(o.no_results_message)||Boolean(o.no_results_message),this.state=(0,l.isObj)(o.state)||Boolean(o.state),this.dateType=!0,this.locale=(0,c.defaultsStr)(o.locale,"en"),this.thousandsSeparator=(0,c.defaultsStr)(o.thousands_separator,","),this.decimalSeparator=(0,c.defaultsStr)(o.decimal_separator,"."),this.colTypes=(0,l.isArray)(o.col_types)?o.col_types:[],this.prfxTf="TF",this.prfxFlt="flt",this.prfxValButton="btn",this.prfxResponsive="resp",this.stickyCssClass="sticky",this.extensions=(0,c.defaultsArr)(o.extensions,[]),this.enableDefaultTheme=Boolean(o.enable_default_theme),this.hasThemes=this.enableDefaultTheme||(0,l.isArray)(o.themes),this.themes=(0,c.defaultsArr)(o.themes,[]),this.themesPath=this.getThemesPath(),this.responsive=Boolean(o.responsive),this.toolbar=(0,l.isObj)(o.toolbar)||Boolean(o.toolbar),this.stickyHeaders=Boolean(o.sticky_headers),this.Mod={},this.ExtRegistry={},this.instantiateFeatures(Object.keys(m.FEATURES).map(function(e){return m.FEATURES[e]}))}return r(TableFilter,[{key:"init",value:function init(){var e=this;if(!this.initialized){this.import(this.stylesheetId,this.getStylesheetPath(),null,"link");var t=this.Mod,i=void 0;this.loadThemes();var n=m.FEATURES.dateType,r=m.FEATURES.help,s=m.FEATURES.state,o=m.FEATURES.markActiveColumns,l=m.FEATURES.gridLayout,u=m.FEATURES.loader,c=m.FEATURES.highlightKeyword,f=m.FEATURES.popupFilter,d=m.FEATURES.rowsCounter,g=m.FEATURES.statusBar,y=m.FEATURES.clearButton,v=m.FEATURES.alternateRows,b=m.FEATURES.noResults,C=m.FEATURES.paging,w=m.FEATURES.toolbar;if(this.initFeatures([n,r,s,o,l,u,c,f]),this.fltGrid){var _=this._insertFiltersRow();this.nbCells=this.getCellsNb(this.refRow),this.nbFilterableRows=this.getRowsNb();for(var x=this.singleFlt?1:this.nbCells,k=0;k0&&this.setFixedLayout(),this.stickyHeaders&&this.dom().tHead&&(0,a.addClass)(this.dom(),this.stickyCssClass)),this.initExtensions(),this.linkedFilters&&this.emitter.on(["after-filtering"],function(){return e.linkFilters()}),this.initialized=!0,this.onFiltersLoaded(this),this.emitter.emit("initialized",this)}}},{key:"detectKey",value:function detectKey(e){this.enterKey&&((0,s.isKeyPressed)(e,[m.ENTER_KEY])?(this.filter(),(0,s.cancelEvt)(e),(0,s.stopEvt)(e)):(this.isUserTyping=!0,f.root.clearInterval(this.autoFilterTimer),this.autoFilterTimer=null))}},{key:"onKeyUp",value:function onKeyUp(e){if(this.autoFilter)if(this.isUserTyping=!1,(0,s.isKeyPressed)(e,[m.ENTER_KEY,m.TAB_KEY,m.ESC_KEY,m.UP_ARROW_KEY,m.DOWN_ARROW_KEY]))f.root.clearInterval(this.autoFilterTimer),this.autoFilterTimer=null;else{if(null!==this.autoFilterTimer)return;this.autoFilterTimer=f.root.setInterval(function filter(){f.root.clearInterval(this.autoFilterTimer),this.autoFilterTimer=null,this.isUserTyping||(this.filter(),this.isUserTyping=null)}.bind(this),this.autoFilterDelay)}}},{key:"onKeyDown",value:function onKeyDown(){this.autoFilter&&(this.isUserTyping=!0)}},{key:"onInpFocus",value:function onInpFocus(e){var t=(0,s.targetEvt)(e);this.emitter.emit("filter-focus",this,t)}},{key:"onInpBlur",value:function onInpBlur(){this.autoFilter&&(this.isUserTyping=!1,f.root.clearInterval(this.autoFilterTimer)),this.emitter.emit("filter-blur",this)}},{key:"_insertFiltersRow",value:function _insertFiltersRow(){if(!this.gridLayout){var e=void 0,t=(0,a.tag)(this.dom(),"thead");return(e=t.length>0?t[0].insertRow(this.filtersRowIndex):this.dom().insertRow(this.filtersRowIndex)).className=this.fltsRowCssClass,this.isExternalFlt()&&(e.style.display=m.NONE),this.emitter.emit("filters-row-inserted",this,e),e}}},{key:"_initNoFilters",value:function _initNoFilters(){this.fltGrid||(this.refRow=this.refRow>0?this.refRow-1:0,this.nbFilterableRows=this.getRowsNb())}},{key:"_buildInputFilter",value:function _buildInputFilter(e,t,i){var n=this,r=this.getFilterType(e),o=this.isExternalFlt()?this.externalFltIds[e]:null,l=r===m.INPUT?"text":"hidden",u=(0,a.createElm)(m.INPUT,["id",this.buildFilterId(e)],["type",l],["ct",e]);"hidden"!==l&&this.watermark&&u.setAttribute("placeholder",this.isWatermarkArray?this.watermark[e]||"":this.watermark),u.className=t||this.fltCssClass,(0,s.addEvt)(u,"focus",function(e){return n.onInpFocus(e)}),o?(0,a.elm)(o).appendChild(u):i.appendChild(u),this.fltIds.push(u.id),(0,s.addEvt)(u,"keypress",function(e){return n.detectKey(e)}),(0,s.addEvt)(u,"keydown",function(){return n.onKeyDown()}),(0,s.addEvt)(u,"keyup",function(e){return n.onKeyUp(e)}),(0,s.addEvt)(u,"blur",function(){return n.onInpBlur()})}},{key:"_buildSubmitButton",value:function _buildSubmitButton(e){var t=this,i=(0,a.createElm)(m.INPUT,["type","button"],["value",this.btnText]);i.className=this.btnCssClass,e.appendChild(i),(0,s.addEvt)(i,"click",function(){return t.filter()})}},{key:"instantiateFeatures",value:function instantiateFeatures(){var e=this;(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach(function(t){if(t.property=t.property||t.name,!e.hasConfig||!0===e[t.property]||!0===t.enforce){var i=t.class,n=t.name;e.Mod[n]=e.Mod[n]||new i(e)}})}},{key:"initFeatures",value:function initFeatures(){var e=this;(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach(function(t){var i=t.property,n=t.name;!0===e[i]&&e.Mod[n]&&e.Mod[n].init()})}},{key:"feature",value:function feature(e){return this.Mod[e]}},{key:"initExtensions",value:function initExtensions(){var e=this,t=this.extensions;0!==t.length&&(i.p=this.basePath,this.emitter.emit("before-loading-extensions",this),t.forEach(function(t){e.loadExtension(t)}),this.emitter.emit("after-loading-extensions",this))}},{key:"loadExtension",value:function loadExtension(e){var t=this;if(e&&e.name&&!this.hasExtension(e.name)){var n=e.name,r=e.path,s=void 0;n&&r?s=e.path+n:(n=n.replace(".js",""),s="extensions/{}/{}".replace(/{}/g,n)),i.e(0).then(function(){var r=[i(440)("./"+s)];(function(i){var r=new i.default(t,e);r.init(),t.ExtRegistry[n]=r}).apply(null,r)}).catch(i.oe)}}},{key:"extension",value:function extension(e){return this.ExtRegistry[e]}},{key:"hasExtension",value:function hasExtension(e){return!(0,l.isEmpty)(this.ExtRegistry[e])}},{key:"registerExtension",value:function registerExtension(e,t){this.ExtRegistry[t]=e}},{key:"destroyExtensions",value:function destroyExtensions(){var e=this.ExtRegistry;Object.keys(e).forEach(function(t){e[t].destroy(),e[t]=void 0})}},{key:"loadThemes",value:function loadThemes(){var e=this;if(this.hasThemes){var t=this.themes;if(this.emitter.emit("before-loading-themes",this),this.enableDefaultTheme){this.themes.push({name:"default"})}t.forEach(function(t,i){var n=t.name,r=t.path,s=e.prfxTf+n;n&&!r?r=e.themesPath+n+"/"+n+".css":!n&&t.path&&(n="theme{0}".replace("{0}",i)),e.isImported(r,"link")||e.import(s,r,null,"link")}),this.loader=!0,this.emitter.emit("after-loading-themes",this)}}},{key:"getStylesheet",value:function getStylesheet(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default";return(0,a.elm)(this.prfxTf+e)}},{key:"destroy",value:function destroy(){var e=this;if(this.initialized){var t=this.emitter;this.isExternalFlt()&&!this.popupFilters&&this.removeExternalFlts(),this.destroyExtensions(),this.validateAllRows(),t.emit("destroy",this),this.fltGrid&&!this.gridLayout&&this.dom().deleteRow(this.filtersRowIndex),this.hasExcludedRows&&t.off(["after-filtering"],function(){return e.setExcludeRows()}),this.linkedFilters&&t.off(["after-filtering"],function(){return e.linkFilters()}),this.emitter.off(["filter-focus"],function(t,i){return e.setActiveFilterId(i.id)}),(0,a.removeClass)(this.dom(),this.prfxTf),(0,a.removeClass)(this.dom(),this.prfxResponsive),this.dom().tHead&&(0,a.removeClass)(this.dom().tHead,this.stickyCssClass),this.nbHiddenRows=0,this.validRowsIndex=[],this.fltIds=[],this.initialized=!1}}},{key:"removeExternalFlts",value:function removeExternalFlts(){this.isExternalFlt()&&this.externalFltIds.forEach(function(e){var t=(0,a.elm)(e);t&&(t.innerHTML="")})}},{key:"isCustomOptions",value:function isCustomOptions(e){return this.hasCustomOptions&&-1!==this.customOptions.cols.indexOf(e)}},{key:"getCustomOptions",value:function getCustomOptions(e){if(!(0,l.isEmpty)(e)&&this.isCustomOptions(e)){for(var t=this.customOptions,i=[],n=[],r=t.cols.indexOf(e),s=t.values[r],a=t.texts[r],o=t.sorts[r],u=0,c=s.length;u1,v=p.toString().split(e.anOperator),b=v.length>1;if((0,l.isArray)(p)||y||b){for(var C=void 0,w=void 0,_=!1,x=0,k=(w=(0,l.isArray)(p)?p:y?g:v).length;x=(M=j(e.replace(l,""),H)):U?w=I>(M=j(e.replace(f,""),H)):V?(M=j(e.replace(d,""),H),w=I.toString()!==M.toString()):Y?(M=j(e.replace(p,""),H),w=I.toString()===M.toString()):h.test(e)?w=(0,o.contains)(e.replace(h,""),t,!1,this.caseSensitive):L(e)?(M=j(e,H),w=I.toString()===M.toString()):w=N?!i.hasChildNodes():D?i.hasChildNodes():(0,o.contains)(e,t,this.isExactMatch(r),this.caseSensitive)}else if(n=(0,u.parse)(t,s)||Number(t),R)try{var K=e.replace(C,"");w=new RegExp(K).test(t)}catch(e){w=!1}else if(x)w=n<=(0,u.parse)(e.replace(a,""),s);else if(E)w=n>=(0,u.parse)(e.replace(l,""),s);else if(_)w=n<(0,u.parse)(e.replace(c,""),s);else if(k)w=n>(0,u.parse)(e.replace(f,""),s);else if(T)w=!(0,o.contains)(e.replace(d,""),t,!1,this.caseSensitive);else if(O)w=(0,o.contains)(e.replace(h,""),t,!1,this.caseSensitive);else if(S)w=(0,o.contains)(e.replace(p,""),t,!0,this.caseSensitive);else if(P)w=0===t.indexOf(e.replace(g,""));else if(F){var G=e.replace(y,"");w=t.lastIndexOf(G,t.length-1)===t.length-1-(G.length-1)&&t.lastIndexOf(G,t.length-1)>-1}else w=N?!i.hasChildNodes():D?i.hasChildNodes():n&&this.hasType(r,[m.NUMBER,m.FORMATTED_NUMBER])&&!this.singleFlt?n===(e=(0,u.parse)(e,s)||e)||(0,o.contains)(e.toString(),n.toString(),this.isExactMatch(r),this.caseSensitive):(0,o.contains)(e,t,this.isExactMatch(r),this.caseSensitive,this.ignoresDiacritics(r));return w}},{key:"getColumnData",value:function getColumnData(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getColValues(e,t,!0,i)}},{key:"getColumnValues",value:function getColumnValues(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getColValues(e,t,!1,i)}},{key:"getColValues",value:function getColValues(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],s=[],a=n?this.getCellData.bind(this):this.getCellValue.bind(this);return t&&s.push(this.getHeadersText()[e]),this.eachRow()(function(t,n){var o=-1!==r.indexOf(n),l=t.cells;if(l.length===i.nbCells&&!o){var u=a(l[e]);s.push(u)}}),s}},{key:"getFilterValue",value:function getFilterValue(e){if(this.fltGrid){var t="",i=this.getFilterElement(e);if(!i)return t;var n=this.getFilterType(e);return n!==m.MULTIPLE&&n!==m.CHECKLIST?t=i.value:n===m.MULTIPLE?t=this.feature("dropdown").getValues(e):n===m.CHECKLIST&&(t=this.feature("checkList").getValues(e)),((0,l.isArray)(t)&&0===t.length||1===t.length&&""===t[0])&&(t=""),t}}},{key:"getFiltersValue",value:function getFiltersValue(){var e=this;if(this.fltGrid){var t=[];return this.fltIds.forEach(function(i,n){var r=e.getFilterValue(n);(0,l.isArray)(r)?t.push(r):t.push((0,o.trim)(r))}),t}}},{key:"getFilterId",value:function getFilterId(e){if(this.fltGrid)return this.fltIds[e]}},{key:"getFiltersByType",value:function getFiltersByType(e,t){if(this.fltGrid){for(var i=[],n=0,r=this.fltIds.length;n0&&void 0!==arguments[0]?arguments[0]:0,t=this.dom().rows[e>=0?e:0];return t?t.cells.length:0}},{key:"getRowsNb",value:function getRowsNb(e){var t=this.getWorkingRows().length;return this.dom().tHead?e?t+this.dom().querySelectorAll("thead > tr").length:t:e?t:t-this.refRow}},{key:"getWorkingRows",value:function getWorkingRows(){return g.querySelectorAll("table#"+this.id+" > tbody > tr")}},{key:"getCellValue",value:function getCellValue(e){var t=e.cellIndex,i=this.cellParser;return-1!==i.cols.indexOf(t)?i.parse(this,e,t):(0,a.getText)(e)}},{key:"getCellData",value:function getCellData(e){var t=e.cellIndex,i=this.getCellValue(e);if(this.hasType(t,[m.FORMATTED_NUMBER]))return(0,u.parse)(i,this.getDecimal(t));if(this.hasType(t,[m.NUMBER]))return Number(i);if(this.hasType(t,[m.DATE])){var n=this.Mod.dateType;return n.parse(i,n.getLocale(t))}return i}},{key:"getData",value:function getData(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.getTableData(e,t,!0)}},{key:"getValues",value:function getValues(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.getTableData(e,t,!1)}},{key:"getTableData",value:function getTableData(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=[],r=arguments.length>2&&void 0!==arguments[2]&&arguments[2]?this.getCellData.bind(this):this.getCellValue.bind(this);if(e){var s=this.getHeadersText(i);n.push([this.getHeadersRowIndex(),s])}return this.eachRow()(function(e,s){for(var a=[s,[]],o=e.cells,l=0,u=o.length;l0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.filteredData(e,t,!0)}},{key:"getFilteredValues",value:function getFilteredValues(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.filteredData(e,t,!1)}},{key:"filteredData",value:function filteredData(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(0===this.validRowsIndex.length)return[];var n=this.dom().rows,filteredData=[],r=i?this.getCellData.bind(this):this.getCellValue.bind(this);if(e){var s=this.getHeadersText(t);filteredData.push([this.getHeadersRowIndex(),s])}for(var a=this.getValidRows(!0),o=0;o1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(e,t,!0,i,!1)}},{key:"getVisibleColumnData",value:function getVisibleColumnData(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(e,t,!0,i,!0)}},{key:"getFilteredColumnValues",value:function getFilteredColumnValues(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(e,t,!1,i,!1)}},{key:"getVisibleColumnValues",value:function getVisibleColumnValues(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(e,t,!1,i,!0)}},{key:"getFilteredDataCol",value:function getFilteredDataCol(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];if((0,l.isUndef)(e))return[];var a=this.dom().rows,o=i?this.getCellData.bind(this):this.getCellValue.bind(this),u=this.getValidRows(!0).filter(function(e){return-1===r.indexOf(e)&&(!s||"none"!==n.getRowDisplay(a[e]))}).map(function(t){return o(a[t].cells[e])});return t&&u.unshift(this.getHeadersText()[e]),u}},{key:"getRowDisplay",value:function getRowDisplay(e){return e.style.display}},{key:"validateRow",value:function validateRow(e,t){var i=this.dom().rows[e];if(i&&(0,l.isBoolean)(t)){-1!==this.excludeRows.indexOf(e)&&(t=!0);var n=t?"":m.NONE,r=t?"true":"false";i.style.display=n,this.paging&&i.setAttribute("validRow",r),t&&(-1===this.validRowsIndex.indexOf(e)&&this.validRowsIndex.push(e),this.onRowValidated(this,e),this.emitter.emit("row-validated",this,e))}}},{key:"validateAllRows",value:function validateAllRows(){if(this.initialized){this.validRowsIndex=[];for(var e=this.refRow;e1&&void 0!==arguments[1]?arguments[1]:"";if(this.fltGrid){var i=this.getFilterElement(e),n=this.getFilterType(e);if(i)if(n!==m.MULTIPLE&&n!==m.CHECKLIST)this.loadFltOnDemand&&!this.initialized&&this.emitter.emit("build-select-filter",this,e,this.linkedFilters,this.isExternalFlt()),i.value=t;else if(n===m.MULTIPLE){var r=(0,l.isArray)(t)?t:t.split(" "+this.orOperator+" ");this.loadFltOnDemand&&!this.initialized&&this.emitter.emit("build-select-filter",this,e,this.linkedFilters,this.isExternalFlt()),this.emitter.emit("select-options",this,e,r)}else if(n===m.CHECKLIST){var s=[];this.loadFltOnDemand&&!this.initialized&&this.emitter.emit("build-checklist-filter",this,e,this.linkedFilters),s=(0,l.isArray)(t)?t:(t=(0,o.matchCase)(t,this.caseSensitive)).split(" "+this.orOperator+" "),this.emitter.emit("select-checklist-options",this,e,s)}}}},{key:"setFixedLayout",value:function setFixedLayout(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.dom(),t=this.colWidths,i=e.clientWidth;if(t.length>0){var n=this.defaultColWidth;i=t.reduce(function(e,t){return parseInt(e||n,10)+parseInt(t||n,10)})}e.style.width=i+"px",e.style.tableLayout="fixed"}},{key:"setColWidths",value:function setColWidths(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.dom(),t=this.colWidths;if(0!==t.length){var i=(0,a.tag)(e,"col"),n=i.length>0,r=n?null:g.createDocumentFragment();this.eachCol(function(e){var s=void 0;n?s=i[e]:(s=(0,a.createElm)("col"),r.appendChild(s)),s.style.width=t[e]}),n||e.insertBefore(r,e.firstChild)}}},{key:"setExcludeRows",value:function setExcludeRows(){var e=this;this.hasExcludedRows&&this.excludeRows.forEach(function(t){return e.validateRow(t,!0)})}},{key:"clearFilters",value:function clearFilters(){if(this.fltGrid){this.emitter.emit("before-clearing-filters",this),this.onBeforeReset(this,this.getFiltersValue());for(var e=0,t=this.fltIds.length;e0&&void 0!==arguments[0]?arguments[0]:"").split("_")[0];return e=e.split(this.prfxFlt)[1],parseInt(e,10)}},{key:"buildFilterId",value:function buildFilterId(e){return""+this.prfxFlt+e+"_"+this.id}},{key:"isExternalFlt",value:function isExternalFlt(){return this.externalFltIds.length>0}},{key:"getStylePath",value:function getStylePath(){return(0,c.defaultsStr)(this.config.style_path,this.basePath+"style/")}},{key:"getStylesheetPath",value:function getStylesheetPath(){return(0,c.defaultsStr)(this.config.stylesheet,this.getStylePath()+"tablefilter.css")}},{key:"getThemesPath",value:function getThemesPath(){return(0,c.defaultsStr)(this.config.themes_path,this.getStylePath()+"themes/")}},{key:"activateFilter",value:function activateFilter(e){(0,l.isUndef)(e)||this.setActiveFilterId(this.getFilterId(e))}},{key:"linkFilters",value:function linkFilters(){var e=this;if(this.linkedFilters&&this.activeFilterId){var t=this.getFiltersByType(m.SELECT,!0),i=this.getFiltersByType(m.MULTIPLE,!0),n=this.getFiltersByType(m.CHECKLIST,!0),r=t.concat(i);(r=r.concat(n)).forEach(function(t){var i=e.getFilterElement(t),r=e.getFilterValue(t);if(e.loadFltOnDemand){var s=(0,a.createOpt)(e.getClearFilterText(t),"");i.innerHTML="",i.appendChild(s)}-1!==n.indexOf(t)?e.emitter.emit("build-checklist-filter",e,t,!0):e.emitter.emit("build-select-filter",e,t,!0),e.setFilterValue(t,r)})}}},{key:"isExactMatch",value:function isExactMatch(e){var t=this.getFilterType(e);return this.exactMatchByCol[e]||this.exactMatch||t!==m.INPUT}},{key:"isRowValid",value:function isRowValid(e){return-1!==this.getValidRows().indexOf(e)}},{key:"isRowDisplayed",value:function isRowDisplayed(e){var t=this.dom().rows[e];return""===this.getRowDisplay(t)}},{key:"ignoresDiacritics",value:function ignoresDiacritics(e){var t=this.ignoreDiacritics;return(0,l.isArray)(t)?t[e]:Boolean(t)}},{key:"getClearFilterText",value:function getClearFilterText(e){var t=this.clearFilterText;return(0,l.isArray)(t)?t[e]:t}},{key:"eachCol",value:function eachCol(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l.EMPTY_FN,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.EMPTY_FN,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l.EMPTY_FN,n=this.getCellsNb(this.refRow),r=0;r0&&void 0!==arguments[0]?arguments[0]:this.refRow;return function(){for(var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l.EMPTY_FN,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.EMPTY_FN,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l.EMPTY_FN,s=e.dom().rows,a=e.getRowsNb(!0),o=t;o1&&void 0!==arguments[1]?arguments[1]:"script",i=!1,n="script"===t?"src":"href",r=(0,a.tag)(g,t),s=0,o=r.length;s3&&void 0!==arguments[3]?arguments[3]:"script";if(!this.isImported(t,r)){var s=this,o=!1,l=void 0,u=(0,a.tag)(g,"head")[0];(l="link"===r.toLowerCase()?(0,a.createElm)("link",["id",e],["type","text/css"],["rel","stylesheet"],["href",t]):(0,a.createElm)("script",["id",e],["type","text/javascript"],["src",t])).onload=l.onreadystatechange=function(){o||n.readyState&&"loaded"!==n.readyState&&"complete"!==n.readyState||(o=!0,"function"==typeof i&&i.call(null,s))},l.onerror=function(){throw new Error("TableFilter could not load: "+t)},u.appendChild(l)}}},{key:"isInitialized",value:function isInitialized(){return this.initialized}},{key:"getFiltersId",value:function getFiltersId(){return this.fltIds||[]}},{key:"getValidRows",value:function getValidRows(e){var t=this;return e?(this.validRowsIndex=[],this.eachRow()(function(e){t.paging?"true"!==e.getAttribute("validRow")&&null!==e.getAttribute("validRow")||t.validRowsIndex.push(e.rowIndex):t.getRowDisplay(e)!==m.NONE&&t.validRowsIndex.push(e.rowIndex)}),this.validRowsIndex):this.validRowsIndex}},{key:"getFiltersRowIndex",value:function getFiltersRowIndex(){return this.filtersRowIndex}},{key:"getHeadersRowIndex",value:function getHeadersRowIndex(){return this.headersRow}},{key:"getStartRowIndex",value:function getStartRowIndex(){return this.refRow}},{key:"getLastRowIndex",value:function getLastRowIndex(){return this.getRowsNb(!0)-1}},{key:"hasType",value:function hasType(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(0===this.colTypes.length)return!1;var i=this.colTypes[e];return(0,l.isObj)(i)&&(i=i.type),-1!==t.indexOf(i)}},{key:"getHeaderElement",value:function getHeaderElement(e){var t=this.gridLayout?this.Mod.gridLayout.headTbl:this.dom(),i=(0,a.tag)(t,"thead"),n=this.getHeadersRowIndex(),r=void 0;return 0===i.length&&(r=t.rows[n].cells[e]),1===i.length&&(r=i[0].rows[n].cells[e]),r}},{key:"getHeadersText",value:function getHeadersText(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=[];return this.eachCol(function(t){var n=e.getHeaderElement(t),r=(0,a.getFirstTextNode)(n);i.push(r)},function(i){return!(!t||!e.hasExtension("colsVisibility"))&&e.extension("colsVisibility").isColHidden(i)}),i}},{key:"getFilterType",value:function getFilterType(e){return this.filterTypes[e]}},{key:"getFilterableRowsNb",value:function getFilterableRowsNb(){return this.getRowsNb(!1)}},{key:"getValidRowsNb",value:function getValidRowsNb(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getValidRows(e).length}},{key:"dom",value:function dom(){return this.tbl}},{key:"getDecimal",value:function getDecimal(e){var t=this.decimalSeparator;if(this.hasType(e,[m.FORMATTED_NUMBER])){var i=this.colTypes[e];i.hasOwnProperty("decimal")&&(t=i.decimal)}return t}},{key:"config",value:function config(){return this.cfg}}]),TableFilter}()},function(e,t,i){"use strict";i(6)("zh-TW",{ampmFront:!0,numeralUnits:!0,allowsFullWidth:!0,timeMarkerOptional:!0,units:"毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年",weekdays:"星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六",numerals:"〇,一,二,三,四,五,六,七,八,九",placeholders:"十,百,千,万",short:"{yyyy}/{MM}/{dd}",medium:"{yyyy}年{M}月{d}日",long:"{yyyy}年{M}月{d}日{time}",full:"{yyyy}年{M}月{d}日{weekday}{time}",stamp:"{yyyy}年{M}月{d}日{H}:{mm}{dow}",time:"{tt}{h}點{mm}分",past:"{num}{unit}{sign}",future:"{num}{unit}{sign}",duration:"{num}{unit}",timeSuffixes:",秒,分鐘?,點|時,日|號,,月,年",ampm:"上午,下午",modifiers:[{name:"day",src:"大前天",value:-3},{name:"day",src:"前天",value:-2},{name:"day",src:"昨天",value:-1},{name:"day",src:"今天",value:0},{name:"day",src:"明天",value:1},{name:"day",src:"後天",value:2},{name:"day",src:"大後天",value:3},{name:"sign",src:"前",value:-1},{name:"sign",src:"後",value:1},{name:"shift",src:"上|去",value:-1},{name:"shift",src:"這",value:0},{name:"shift",src:"下|明",value:1}],parse:["{num}{unit}{sign}","{shift}{unit:5-7}","{year?}{month}","{year}"],timeParse:["{day|weekday}","{shift}{weekday}","{year?}{month?}{date}"]})},function(e,t,i){"use strict";i(6)("zh-CN",{ampmFront:!0,numeralUnits:!0,allowsFullWidth:!0,timeMarkerOptional:!0,units:"毫秒,秒钟,分钟,小时,天,个星期|周,个月,年",weekdays:"星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六",numerals:"〇,一,二,三,四,五,六,七,八,九",placeholders:"十,百,千,万",short:"{yyyy}-{MM}-{dd}",medium:"{yyyy}年{M}月{d}日",long:"{yyyy}年{M}月{d}日{time}",full:"{yyyy}年{M}月{d}日{weekday}{time}",stamp:"{yyyy}年{M}月{d}日{H}:{mm}{dow}",time:"{tt}{h}点{mm}分",past:"{num}{unit}{sign}",future:"{num}{unit}{sign}",duration:"{num}{unit}",timeSuffixes:",秒,分钟?,点|时,日|号,,月,年",ampm:"上午,下午",modifiers:[{name:"day",src:"大前天",value:-3},{name:"day",src:"前天",value:-2},{name:"day",src:"昨天",value:-1},{name:"day",src:"今天",value:0},{name:"day",src:"明天",value:1},{name:"day",src:"后天",value:2},{name:"day",src:"大后天",value:3},{name:"sign",src:"前",value:-1},{name:"sign",src:"后",value:1},{name:"shift",src:"上|去",value:-1},{name:"shift",src:"这",value:0},{name:"shift",src:"下|明",value:1}],parse:["{num}{unit}{sign}","{shift}{unit:5-7}","{year?}{month}","{year}"],timeParse:["{day|weekday}","{shift}{weekday}","{year?}{month?}{date}"]})},function(e,t,i){"use strict";i(6)("sv",{plural:!0,units:"millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et",months:"jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|",weekdays:"sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag",numerals:"noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio",tokens:"den,för|for",articles:"den",short:"{yyyy}-{MM}-{dd}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday} {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",ampm:"am,pm",modifiers:[{name:"day",src:"förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar",value:-2},{name:"day",src:"går|i går|igår|gar|i gar|igar",value:-1},{name:"day",src:"dag|i dag|idag",value:0},{name:"day",src:"morgon|i morgon|imorgon",value:1},{name:"day",src:"över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon",value:2},{name:"sign",src:"sedan|sen",value:-1},{name:"sign",src:"om",value:1},{name:"shift",src:"i förra|förra|i forra|forra",value:-1},{name:"shift",src:"denna",value:0},{name:"shift",src:"nästa|nasta",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{sign} {num} {unit}","{1?} {num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{day|weekday}","{shift} {weekday}","{0?} {weekday?},? {date} {months?}\\.? {year?}"],timeFrontParse:["{day|weekday}","{shift} {weekday}","{0?} {weekday?},? {date} {months?}\\.? {year?}"]})},function(e,t,i){"use strict";i(6)("ru",{firstDayOfWeekYear:1,units:"миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году",months:"янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь",weekdays:"воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб",numerals:"ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять",tokens:"в|на,г\\.?(?:ода)?",short:"{dd}.{MM}.{yyyy}",medium:"{d} {month} {yyyy} г.",long:"{d} {month} {yyyy} г., {time}",full:"{weekday}, {d} {month} {yyyy} г., {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",timeMarkers:"в",ampm:" утра, вечера",modifiers:[{name:"day",src:"позавчера",value:-2},{name:"day",src:"вчера",value:-1},{name:"day",src:"сегодня",value:0},{name:"day",src:"завтра",value:1},{name:"day",src:"послезавтра",value:2},{name:"sign",src:"назад",value:-1},{name:"sign",src:"через",value:1},{name:"shift",src:"прошл:ый|ой|ом",value:-1},{name:"shift",src:"следующ:ий|ей|ем",value:1}],relative:function(e,t,i,n){var r,s,a=e.toString().slice(-1);switch(!0){case e>=11&&e<=15:s=3;break;case 1==a:s=1;break;case a>=2&&a<=4:s=2;break;default:s=3}switch(r=e+" "+this.units[8*s+t],n){case"duration":return r;case"past":return r+" назад";case"future":return"через "+r}},parse:["{num} {unit} {sign}","{sign} {num} {unit}","{months} {year?}","{0?} {shift} {unit:5-7}"],timeParse:["{day|weekday}","{0?} {shift} {weekday}","{date} {months?} {year?} {1?}"],timeFrontParse:["{0?} {shift} {weekday}","{date} {months?} {year?} {1?}"]})},function(e,t,i){"use strict";i(6)("pt",{plural:!0,units:"milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s",months:"jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|",weekdays:"dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado",numerals:"zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez",tokens:"a,de",short:"{dd}/{MM}/{yyyy}",medium:"{d} de {Month} de {yyyy}",long:"{d} de {Month} de {yyyy} {time}",full:"{Weekday}, {d} de {Month} de {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"às",ampm:"am,pm",modifiers:[{name:"day",src:"anteontem",value:-2},{name:"day",src:"ontem",value:-1},{name:"day",src:"hoje",value:0},{name:"day",src:"amanh:ã|a",value:1},{name:"sign",src:"atrás|atras|há|ha",value:-1},{name:"sign",src:"daqui a",value:1},{name:"shift",src:"passad:o|a",value:-1},{name:"shift",src:"próximo|próxima|proximo|proxima",value:1}],parse:["{months} {1?} {year?}","{num} {unit} {sign}","{sign} {num} {unit}","{0?} {unit:5-7} {shift}","{0?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{0?} {shift} {weekday}","{date} {1?} {months?} {1?} {year?}"],timeFrontParse:["{shift?} {day|weekday}","{date} {1?} {months?} {1?} {year?}"]})},function(e,t,i){"use strict";i(6)("pl",{plural:!0,units:"milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat",months:"sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień",weekdays:"nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę",numerals:"zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć",tokens:"w|we,roku",short:"{dd}.{MM}.{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday}, {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",timeMarkers:"o",ampm:"am,pm",modifiers:[{name:"day",src:"przedwczoraj",value:-2},{name:"day",src:"wczoraj",value:-1},{name:"day",src:"dzisiaj|dziś",value:0},{name:"day",src:"jutro",value:1},{name:"day",src:"pojutrze",value:2},{name:"sign",src:"temu|przed",value:-1},{name:"sign",src:"za",value:1},{name:"shift",src:"zeszły|zeszła|ostatni|ostatnia",value:-1},{name:"shift",src:"następny|następna|następnego|przyszły|przyszła|przyszłego",value:1}],relative:function(e,t,i,n){var r;if(4===t){if(1===e&&"past"===n)return"wczoraj";if(1===e&&"future"===n)return"jutro";if(2===e&&"past"===n)return"przedwczoraj";if(2===e&&"future"===n)return"pojutrze"}var s=+e.toFixed(0).slice(-1),a=+e.toFixed(0).slice(-2);switch(!0){case 1===e:r=0;break;case a>=12&&a<=14:r=2;break;case s>=2&&s<=4:r=1;break;default:r=2}var o=this.units[8*r+t],l=e+" ";switch("past"!==n&&"future"!==n||1!==e||(o=o.replace(/a$/,"ę")),o=l+o,n){case"duration":return o;case"past":return o+" temu";case"future":return"za "+o}},parse:["{num} {unit} {sign}","{sign} {num} {unit}","{months} {year?}","{shift} {unit:5-7}","{0} {shift?} {weekday}"],timeFrontParse:["{day|weekday}","{date} {months} {year?} {1?}","{0?} {shift?} {weekday}"]})},function(e,t,i){"use strict";i(6)("no",{plural:!0,units:"millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et",months:"januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember",weekdays:"søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag",numerals:"en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti",tokens:"den,for",articles:"den",short:"d. {d}. {month} {yyyy}",long:"den {d}. {month} {yyyy} {H}:{mm}",full:"{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",ampm:"am,pm",modifiers:[{name:"day",src:"forgårs|i forgårs|forgaars|i forgaars",value:-2},{name:"day",src:"i går|igår|i gaar|igaar",value:-1},{name:"day",src:"i dag|idag",value:0},{name:"day",src:"i morgen|imorgen",value:1},{name:"day",src:"overimorgen|overmorgen|over i morgen",value:2},{name:"sign",src:"siden",value:-1},{name:"sign",src:"om",value:1},{name:"shift",src:"i siste|siste",value:-1},{name:"shift",src:"denne",value:0},{name:"shift",src:"neste",value:1}],parse:["{num} {unit} {sign}","{sign} {num} {unit}","{1?} {num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{date} {month}","{shift} {weekday}","{0?} {weekday?},? {date?} {month}\\.? {year}"]})},function(e,t,i){"use strict";i(6)("nl",{plural:!0,units:"milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar",months:"jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|",weekdays:"zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za",numerals:"nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien",short:"{dd}-{MM}-{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {Month} {yyyy} {time}",full:"{weekday} {d} {Month} {yyyy} {time}",stamp:"{dow} {d} {Mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{num} {unit} {sign}",duration:"{num} {unit}",timeMarkers:"'s,om",modifiers:[{name:"day",src:"gisteren",value:-1},{name:"day",src:"vandaag",value:0},{name:"day",src:"morgen",value:1},{name:"day",src:"overmorgen",value:2},{name:"sign",src:"geleden",value:-1},{name:"sign",src:"vanaf nu",value:1},{name:"shift",src:"laatste|vorige|afgelopen",value:-1},{name:"shift",src:"volgend:|e",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{0?} {unit:5-7} {shift}","{0?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"],timeFrontParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"]})},function(e,t,i){"use strict";i(6)("ko",{ampmFront:!0,numeralUnits:!0,units:"밀리초,초,분,시간,일,주,개월|달,년|해",weekdays:"일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|",numerals:"영|제로,일|한,이,삼,사,오,육,칠,팔,구,십",short:"{yyyy}.{MM}.{dd}",medium:"{yyyy}년 {M}월 {d}일",long:"{yyyy}년 {M}월 {d}일 {time}",full:"{yyyy}년 {M}월 {d}일 {weekday} {time}",stamp:"{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}",time:"{tt} {h}시 {mm}분",past:"{num}{unit} {sign}",future:"{num}{unit} {sign}",duration:"{num}{unit}",timeSuffixes:",초,분,시,일,,월,년",ampm:"오전,오후",modifiers:[{name:"day",src:"그저께",value:-2},{name:"day",src:"어제",value:-1},{name:"day",src:"오늘",value:0},{name:"day",src:"내일",value:1},{name:"day",src:"모레",value:2},{name:"sign",src:"전",value:-1},{name:"sign",src:"후",value:1},{name:"shift",src:"지난|작",value:-1},{name:"shift",src:"이번|올",value:0},{name:"shift",src:"다음|내",value:1}],parse:["{num}{unit} {sign}","{shift?} {unit:5-7}","{year?} {month}","{year}"],timeParse:["{day|weekday}","{shift} {unit:5?} {weekday}","{year?} {month?} {date} {weekday?}"]})},function(e,t,i){"use strict";i(6)("ja",{ampmFront:!0,numeralUnits:!0,allowsFullWidth:!0,timeMarkerOptional:!0,firstDayOfWeek:0,firstDayOfWeekYear:1,units:"ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度",weekdays:"日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜",numerals:"〇,一,二,三,四,五,六,七,八,九",placeholders:"十,百,千,万",timeSuffixes:",秒,分,時,日,,月,年度?",short:"{yyyy}/{MM}/{dd}",medium:"{yyyy}年{M}月{d}日",long:"{yyyy}年{M}月{d}日{time}",full:"{yyyy}年{M}月{d}日{time} {weekday}",stamp:"{yyyy}年{M}月{d}日 {H}:{mm} {dow}",time:"{tt}{h}時{mm}分",past:"{num}{unit}{sign}",future:"{num}{unit}{sign}",duration:"{num}{unit}",ampm:"午前,午後",modifiers:[{name:"day",src:"一昨々日|前々々日",value:-3},{name:"day",src:"一昨日|おととい|前々日",value:-2},{name:"day",src:"昨日|前日",value:-1},{name:"day",src:"今日|当日|本日",value:0},{name:"day",src:"明日|翌日|次日",value:1},{name:"day",src:"明後日|翌々日",value:2},{name:"day",src:"明々後日|翌々々日",value:3},{name:"sign",src:"前",value:-1},{name:"sign",src:"後",value:1},{name:"edge",src:"始|初日|頭",value:-2},{name:"edge",src:"末|尻",value:2},{name:"edge",src:"末日",value:1},{name:"shift",src:"一昨々|前々々",value:-3},{name:"shift",src:"一昨|前々|先々",value:-2},{name:"shift",src:"先|昨|去|前",value:-1},{name:"shift",src:"今|本|当",value:0},{name:"shift",src:"来|明|翌|次",value:1},{name:"shift",src:"明後|翌々|次々|再来|さ来",value:2},{name:"shift",src:"明々後|翌々々",value:3}],parse:["{month}{edge}","{num}{unit}{sign}","{year?}{month}","{year}"],timeParse:["{day|weekday}","{shift}{unit:5}{weekday?}","{shift}{unit:7}{month}{edge}","{shift}{unit:7}{month?}{date?}","{shift}{unit:6}{edge?}{date?}","{year?}{month?}{date}"]})},function(e,t,i){"use strict";i(6)("it",{plural:!0,units:"millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i",months:"gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|",weekdays:"dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|",numerals:"zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci",tokens:"l'|la|il",short:"{dd}/{MM}/{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday}, {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{num} {unit} {sign}",duration:"{num} {unit}",timeMarkers:"alle",ampm:"am,pm",modifiers:[{name:"day",src:"ieri",value:-1},{name:"day",src:"oggi",value:0},{name:"day",src:"domani",value:1},{name:"day",src:"dopodomani",value:2},{name:"sign",src:"fa",value:-1},{name:"sign",src:"da adesso",value:1},{name:"shift",src:"scors:o|a",value:-1},{name:"shift",src:"prossim:o|a",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{0?} {unit:5-7} {shift}","{0?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"],timeFrontParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"]})},function(e,t,i){"use strict";i(6)("fr",{plural:!0,units:"milliseconde:|s,seconde:|s,minute:|s,heure:|s,jour:|s,semaine:|s,mois,an:|s|née|nee",months:"janv:ier|,févr:ier|+fevr:ier|,mars,avr:il|,mai,juin,juil:let|,août,sept:embre|,oct:obre|,nov:embre|,déc:embre|+dec:embre|",weekdays:"dim:anche|,lun:di|,mar:di|,mer:credi|,jeu:di|,ven:dredi|,sam:edi|",numerals:"zéro,un:|e,deux,trois,quatre,cinq,six,sept,huit,neuf,dix",tokens:"l'|la|le,er",short:"{dd}/{MM}/{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday} {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"à",ampm:"am,pm",modifiers:[{name:"day",src:"hier",value:-1},{name:"day",src:"aujourd'hui",value:0},{name:"day",src:"demain",value:1},{name:"sign",src:"il y a",value:-1},{name:"sign",src:"dans|d'ici",value:1},{name:"shift",src:"derni:èr|er|ère|ere",value:-1},{name:"shift",src:"prochain:|e",value:1}],parse:["{months} {year?}","{sign} {num} {unit}","{0?} {unit:5-7} {shift}"],timeParse:["{day|weekday} {shift?}","{weekday?},? {0?} {date}{1?} {months}\\.? {year?}"],timeFrontParse:["{0?} {weekday} {shift}","{weekday?},? {0?} {date}{1?} {months}\\.? {year?}"]})},function(e,t,i){"use strict";i(6)("fi",{plural:!0,units:"millisekun:ti|tia|nin|teja|tina,sekun:ti|tia|nin|teja|tina,minuut:ti|tia|in|teja|tina,tun:ti|tia|nin|teja|tina,päiv:ä|ää|än|iä|änä,viik:ko|koa|on|olla|koja|kona,kuukau:si|tta|den+kuussa,vuo:si|tta|den|sia|tena|nna",months:"tammi:kuuta||kuu,helmi:kuuta||kuu,maalis:kuuta||kuu,huhti:kuuta||kuu,touko:kuuta||kuu,kesä:kuuta||kuu,heinä:kuuta||kuu,elo:kuuta||kuu,syys:kuuta||kuu,loka:kuuta||kuu,marras:kuuta||kuu,joulu:kuuta||kuu",weekdays:"su:nnuntai||nnuntaina,ma:anantai||anantaina,ti:istai||istaina,ke:skiviikko||skiviikkona,to:rstai||rstaina,pe:rjantai||rjantaina,la:uantai||uantaina",numerals:"nolla,yksi|ensimmäinen,kaksi|toinen,kolm:e|as,neljä:|s,vii:si|des,kuu:si|des,seitsemä:n|s,kahdeksa:n|s,yhdeksä:n|s,kymmene:n|s",short:"{d}.{M}.{yyyy}",medium:"{d}. {month} {yyyy}",long:"{d}. {month} {yyyy} klo {time}",full:"{weekday} {d}. {month} {yyyy} klo {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}.{mm}",timeMarkers:"klo,kello",ordinalSuffix:".",relative:function(e,t,i,n){var r=this.units;function numberWithUnit(i){return e+" "+r[8*i+t]}function baseUnit(){return numberWithUnit(1===e?0:1)}switch(n){case"duration":return baseUnit();case"past":return baseUnit()+" sitten";case"future":return numberWithUnit(2)+" kuluttua"}},modifiers:[{name:"day",src:"toissa päivänä",value:-2},{name:"day",src:"eilen|eilistä",value:-1},{name:"day",src:"tänään",value:0},{name:"day",src:"huomenna|huomista",value:1},{name:"day",src:"ylihuomenna|ylihuomista",value:2},{name:"sign",src:"sitten|aiemmin",value:-1},{name:"sign",src:"päästä|kuluttua|myöhemmin",value:1},{name:"edge",src:"lopussa",value:2},{name:"edge",src:"ensimmäinen|ensimmäisenä",value:-2},{name:"shift",src:"edel:linen|lisenä",value:-1},{name:"shift",src:"viime",value:-1},{name:"shift",src:"tä:llä|ssä|nä|mä",value:0},{name:"shift",src:"seuraava|seuraavana|tuleva|tulevana|ensi",value:1}],parse:["{months} {year?}","{shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date}\\.? {months?}\\.? {year?}"],timeFrontParse:["{shift?} {day|weekday}","{num?} {unit} {sign}","{weekday?},? {date}\\.? {months?}\\.? {year?}"]})},function(e,t,i){"use strict";i(6)("es",{plural:!0,units:"milisegundo:|s,segundo:|s,minuto:|s,hora:|s,día|días|dia|dias,semana:|s,mes:|es,año|años|ano|anos",months:"ene:ro|,feb:rero|,mar:zo|,abr:il|,may:o|,jun:io|,jul:io|,ago:sto|,sep:tiembre|,oct:ubre|,nov:iembre|,dic:iembre|",weekdays:"dom:ingo|,lun:es|,mar:tes|,mié:rcoles|+mie:rcoles|,jue:ves|,vie:rnes|,sáb:ado|+sab:ado|",numerals:"cero,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez",tokens:"el,la,de",short:"{dd}/{MM}/{yyyy}",medium:"{d} de {Month} de {yyyy}",long:"{d} de {Month} de {yyyy} {time}",full:"{weekday}, {d} de {month} de {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"a las",ampm:"am,pm",modifiers:[{name:"day",src:"anteayer",value:-2},{name:"day",src:"ayer",value:-1},{name:"day",src:"hoy",value:0},{name:"day",src:"mañana|manana",value:1},{name:"sign",src:"hace",value:-1},{name:"sign",src:"dentro de",value:1},{name:"shift",src:"pasad:o|a",value:-1},{name:"shift",src:"próximo|próxima|proximo|proxima",value:1}],parse:["{months} {2?} {year?}","{sign} {num} {unit}","{num} {unit} {sign}","{0?}{1?} {unit:5-7} {shift}","{0?}{1?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday} {shift?}","{date} {2?} {months?}\\.? {2?} {year?}"],timeFrontParse:["{shift?} {weekday} {shift?}","{date} {2?} {months?}\\.? {2?} {year?}"]})},function(e,t,i){"use strict";i(6)("de",{plural:!0,units:"Millisekunde:|n,Sekunde:|n,Minute:|n,Stunde:|n,Tag:|en,Woche:|n,Monat:|en,Jahr:|en|e",months:"Jan:uar|,Feb:ruar|,M:är|ärz|ar|arz,Apr:il|,Mai,Juni,Juli,Aug:ust|,Sept:ember|,Okt:ober|,Nov:ember|,Dez:ember|",weekdays:"So:nntag|,Mo:ntag|,Di:enstag|,Mi:ttwoch|,Do:nnerstag|,Fr:eitag|,Sa:mstag|",numerals:"null,ein:|e|er|en|em,zwei,drei,vier,fuenf,sechs,sieben,acht,neun,zehn",tokens:"der",short:"{dd}.{MM}.{yyyy}",medium:"{d}. {Month} {yyyy}",long:"{d}. {Month} {yyyy} {time}",full:"{Weekday}, {d}. {Month} {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"um",ampm:"am,pm",modifiers:[{name:"day",src:"vorgestern",value:-2},{name:"day",src:"gestern",value:-1},{name:"day",src:"heute",value:0},{name:"day",src:"morgen",value:1},{name:"day",src:"übermorgen|ubermorgen|uebermorgen",value:2},{name:"sign",src:"vor:|her",value:-1},{name:"sign",src:"in",value:1},{name:"shift",src:"letzte:|r|n|s",value:-1},{name:"shift",src:"nächste:|r|n|s+nachste:|r|n|s+naechste:|r|n|s+kommende:n|r",value:1}],parse:["{months} {year?}","{sign} {num} {unit}","{num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date}\\.? {months?}\\.? {year?}"],timeFrontParse:["{shift} {weekday}","{weekday?},? {date}\\.? {months?}\\.? {year?}"]})},function(e,t,i){"use strict";i(6)("da",{plural:!0,units:"millisekund:|er,sekund:|er,minut:|ter,tim:e|er,dag:|e,ug:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et",months:"jan:uar|,feb:ruar|,mar:ts|,apr:il|,maj,jun:i|,jul:i|,aug:ust|,sep:tember|,okt:ober|,nov:ember|,dec:ember|",weekdays:"søn:dag|+son:dag|,man:dag|,tir:sdag|,ons:dag|,tor:sdag|,fre:dag|,lør:dag|+lor:dag|",numerals:"nul,en|et,to,tre,fire,fem,seks,syv,otte,ni,ti",tokens:"den,for",articles:"den",short:"{dd}-{MM}-{yyyy}",medium:"{d}. {month} {yyyy}",long:"{d}. {month} {yyyy} {time}",full:"{weekday} d. {d}. {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",ampm:"am,pm",modifiers:[{name:"day",src:"forgårs|i forgårs|forgaars|i forgaars",value:-2},{name:"day",src:"i går|igår|i gaar|igaar",value:-1},{name:"day",src:"i dag|idag",value:0},{name:"day",src:"i morgen|imorgen",value:1},{name:"day",src:"over morgon|overmorgen|i over morgen|i overmorgen|iovermorgen",value:2},{name:"sign",src:"siden",value:-1},{name:"sign",src:"om",value:1},{name:"shift",src:"i sidste|sidste",value:-1},{name:"shift",src:"denne",value:0},{name:"shift",src:"næste|naeste",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{sign} {num} {unit}","{1?} {num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{day|weekday}","{date} {months?}\\.? {year?}"],timeFrontParse:["{shift} {weekday}","{0?} {weekday?},? {date}\\.? {months?}\\.? {year?}"]})},function(e,t,i){"use strict";i(6)("ca",{plural:!0,units:"milisegon:|s,segon:|s,minut:|s,hor:a|es,di:a|es,setman:a|es,mes:|os,any:|s",months:"gen:er|,febr:er|,mar:ç|,abr:il|,mai:g|,jun:y|,jul:iol|,ag:ost|,set:embre|,oct:ubre|,nov:embre|,des:embre|",weekdays:"diumenge|dg,dilluns|dl,dimarts|dt,dimecres|dc,dijous|dj,divendres|dv,dissabte|ds",numerals:"zero,un,dos,tres,quatre,cinc,sis,set,vuit,nou,deu",tokens:"el,la,de",short:"{dd}/{MM}/{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday} {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"a las",ampm:"am,pm",modifiers:[{name:"day",src:"abans d'ahir",value:-2},{name:"day",src:"ahir",value:-1},{name:"day",src:"avui",value:0},{name:"day",src:"demà|dema",value:1},{name:"sign",src:"fa",value:-1},{name:"sign",src:"en",value:1},{name:"shift",src:"passat",value:-1},{name:"shift",src:"el proper|la propera",value:1}],parse:["{sign} {num} {unit}","{num} {unit} {sign}","{0?}{1?} {unit:5-7} {shift}","{0?}{1?} {shift} {unit:5-7}"],timeParse:["{shift} {weekday}","{weekday} {shift}","{date?} {2?} {months}\\.? {2?} {year?}"]})},function(e,t,i){"use strict";i(145),i(144),i(143),i(142),i(141),i(140),i(139),i(138),i(137),i(136),i(135),i(134),i(133),i(132),i(131),i(130),i(129),e.exports=i(0)},function(e,t,i){"use strict";i(22)},function(e,t,i){"use strict";i(22)},function(e,t,i){"use strict";var n=i(14);i(17)(n,{union:function(e){return new n(this.starte.end?this.end:e.end)}})},function(e,t,i){"use strict";var n=i(14),r=i(43);i(17)(n,{toString:function(){return r(this)?this.start+".."+this.end:"Invalid Range"}})},function(e,t,i){"use strict";var n=i(14),r=i(54);i(17)(n,{toArray:function(){return r(this)}})},function(e,t,i){"use strict";var n=i(5).isString;e.exports=function getRangeMemberNumericValue(e){return n(e)?e.charCodeAt(0):e}},function(e,t,i){"use strict";var n=i(14),r=i(8),s=i(43),a=i(17),o=i(152),l=r.abs;a(n,{span:function(){var e=o(this.end)-o(this.start);return s(this)?l(e)+1:NaN}})},function(e,t,i){"use strict";i(22)},function(e,t,i){"use strict";i(22)},function(e,t,i){"use strict";i(22)},function(e,t,i){"use strict";i(22)},function(e,t,i){"use strict";var n=i(14),r=i(43);i(17)(n,{isValid:function(){return r(this)}})},function(e,t,i){"use strict";var n=i(14);i(17)(n,{intersect:function(e){return e.start>this.end||e.ende.start?this.start:e.start,this.end=this.start&&e.start<=this.end&&e.end>=this.start&&e.end<=this.end:e>=this.start&&e<=this.end)}})},function(e,t,i){"use strict";var n=i(14);i(17)(n,{clone:function(){return new n(this.start,this.end)}})},function(e,t,i){"use strict";var n=i(76);e.exports=function rangeClamp(e,t){var i=e.start,r=e.end,s=rr?i:r;return n(ta?a:t)}},function(e,t,i){"use strict";var n=i(14),r=i(173);i(17)(n,{clamp:function(e){return r(this,e)}})},function(e,t,i){"use strict";var n=i(55);e.exports=RegExp("(\\d+)?\\s*("+n+")s?","i")},function(e,t,i){"use strict";var n=i(55);e.exports="((?:\\d+)?\\s*(?:"+n+"))s?"},function(e,t,i){"use strict";var n=i(176);e.exports={RANGE_REG_FROM_TO:/(?:from)?\s*(.+)\s+(?:to|until)\s+(.+)$/i,RANGE_REG_REAR_DURATION:RegExp("(.+)\\s*for\\s*"+n,"i"),RANGE_REG_FRONT_DURATION:RegExp("(?:for)?\\s*"+n+"\\s*(?:starting)?\\s(?:at\\s)?(.+)","i")}},function(e,t,i){"use strict";var n=i(14),r=i(177),s=i(73),a=i(74),o=i(23),l=i(71),u=o.sugarDate,c=r.RANGE_REG_FROM_TO,f=r.RANGE_REG_REAR_DURATION,d=r.RANGE_REG_FRONT_DURATION;e.exports=function createDateRangeFromString(e){var t,i,r,o,h,p;return u.get&&(t=e.match(c))?(h=a(t[1].replace("from","at")),p=u.get(h,t[2]),new n(h,p)):((t=e.match(d))&&(r=t[1],i=t[2]),(t=e.match(f))&&(i=t[1],r=t[2]),i&&r?(h=a(i),o=l(r),p=s(h,o[0],o[1])):h=e,new n(a(h),a(p)))}},function(e,t,i){"use strict";var n=i(14),r=i(5),s=i(74),a=i(178),o=r.isString;e.exports=function(e,t){return 1===arguments.length&&o(e)?a(e):new n(s(e),s(t))}},function(e,t,i){"use strict";var n=i(0),r=i(179);n.Date.defineStatic({range:r}),e.exports=n.Date.range},function(e,t,i){"use strict";i(180),i(174),i(172),i(171),i(170),i(161),i(160),i(159),i(158),i(157),i(156),i(155),i(154),i(153),i(151),i(150),i(149),i(148),i(147),e.exports=i(0)},function(e,t,i){"use strict";var n=i(0);i(61);e.exports=n.Date.setOption},function(e,t,i){"use strict";var n=i(0);i(61);e.exports=n.Date.getOption},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.yearsUntil},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.yearsSince},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.yearsFromNow},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.yearsAgo},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.weeksUntil},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.weeksSince},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.weeksFromNow},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.weeksAgo},function(e,t,i){"use strict";var n=i(0),r=i(24);n.Date.defineInstance({setWeekday:function(e,t){return r(e,t)}}),e.exports=n.Date.setWeekday},function(e,t,i){"use strict";var n=i(0),r=i(26);n.Date.defineInstance({setUTC:function(e,t){return r(e,t)}}),e.exports=n.Date.setUTC},function(e,t,i){"use strict";var n=i(0),r=i(91);n.Date.defineInstance({setISOWeek:function(e,t){return r(e,t)}}),e.exports=n.Date.setISOWeek},function(e,t,i){"use strict";var n=i(0),r=i(49),s=i(84);n.Date.defineInstanceWithArguments({set:function(e,t){return t=s(t),r(e,t[0],t[1])}}),e.exports=n.Date.set},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.secondsUntil},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.secondsSince},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.secondsFromNow},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.secondsAgo},function(e,t,i){"use strict";var n=i(0),r=i(85);n.Date.defineInstanceWithArguments({rewind:function(e,t){return r(e,t,-1)}}),e.exports=n.Date.rewind},function(e,t,i){"use strict";var n=i(48);e.exports=function getUnitIndexForParamName(e){var t,i={};return i[e]=1,n(i,function(e,i,n,r){return t=r,!1}),t}},function(e,t,i){"use strict";var n=i(0),r=i(4),s=i(46),a=i(201),o=r.DAY_INDEX;n.Date.defineInstance({reset:function(e,t,i){var n=t?a(t):o;return s(e,n,i),e}}),e.exports=n.Date.reset},function(e,t,i){"use strict";var n=i(0),r=i(27),s=i(77);n.Date.defineInstance({relativeTo:function(e,t,i){return s(e,r(t),i)}}),e.exports=n.Date.relativeTo},function(e,t,i){"use strict";var n=i(40),r=i(8),s=i(95),a=i(58),o=r.abs;e.exports=function getAdjustedUnitForDate(e,t){return t||(t=n(),e>t&&(t=new Date(t.getTime()-10))),s(e-t,function(i){return o(a(e,t,i))})}},function(e,t,i){"use strict";var n=i(0),r=i(77);n.Date.defineInstance({relative:function(e,t,i){return r(e,null,t,i)}}),e.exports=n.Date.relative},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.monthsUntil},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.monthsSince},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.monthsFromNow},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.monthsAgo},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.minutesUntil},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.minutesSince},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.minutesFromNow},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.minutesAgo},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.millisecondsUntil},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.millisecondsSince},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.millisecondsFromNow},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.millisecondsAgo},function(e,t,i){"use strict";var n=i(0);n.Date.defineInstance({iso:function(e){return e.toISOString()}}),e.exports=n.Date.iso},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isYesterday},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isWeekend},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isWeekday},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isWednesday},function(e,t,i){"use strict";var n=i(0),r=i(44);n.Date.defineInstance({isValid:function(e){return r(e)}}),e.exports=n.Date.isValid},function(e,t,i){"use strict";var n=i(26),r=i(50);e.exports=function isUTC(e){return!!n(e)||0===r(e)}},function(e,t,i){"use strict";var n=i(0),r=i(224);n.Date.defineInstance({isUTC:function(e){return r(e)}}),e.exports=n.Date.isUTC},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isTuesday},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isTomorrow},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isToday},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isThursday},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.isThisYear},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.isThisWeek},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.isThisMonth},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isSunday},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isSaturday},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isPast},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.isNextYear},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.isNextWeek},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.isNextMonth},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isMonday},function(e,t,i){"use strict";var n=i(0),r=i(29);n.Date.defineInstance({isLeapYear:function(e){var t=r(e);return t%4==0&&t%100!=0||t%400==0}}),e.exports=n.Date.isLeapYear},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.isLastYear},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.isLastWeek},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.isLastMonth},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isFuture},function(e,t,i){"use strict";var n=i(9),r=i(51),s=i(78),a=i(23),o=i(45),l=n.English,u=a.sugarDate;e.exports=function buildRelativeAliases(){var e=r("Today Yesterday Tomorrow Weekday Weekend Future Past"),t=l.weekdays.slice(0,7),i=l.months.slice(0,12),n=e.concat(t).concat(i);o(u,n,function(e,t){e["is"+t]=function(e){return s(e,t)}})}},function(e,t,i){"use strict";var n=i(0);i(13),e.exports=n.Date.isFriday},function(e,t,i){"use strict";var n=i(0),r=i(27),s=i(8),a=s.min,o=s.max;n.Date.defineInstance({isBetween:function(e,t,i,n){var s=e.getTime(),l=r(t).getTime(),u=r(i).getTime(),c=a(l,u),f=o(l,u);return c-(n=n||0)<=s&&f+n>=s}}),e.exports=n.Date.isBetween},function(e,t,i){"use strict";var n=i(0),r=i(27);n.Date.defineInstance({isBefore:function(e,t,i){return e.getTime()r(t).getTime()-(i||0)}}),e.exports=n.Date.isAfter},function(e,t,i){"use strict";var n=i(36),r=i(35),s=i(29),a=i(28),o=i(40);e.exports=function compareDay(e,t){var i=o();return t&&n(i,r(i)+t),s(e)===s(i)&&a(e)===a(i)&&r(e)===r(i)}},function(e,t,i){"use strict";e.exports=function trim(e){return e.trim()}},function(e,t,i){"use strict";var n=i(0),r=i(78);n.Date.defineInstance({is:function(e,t,i){return r(e,t,i)}}),e.exports=n.Date.is},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.hoursUntil},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.hoursSince},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.hoursFromNow},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.hoursAgo},function(e,t,i){"use strict";var n=i(0),r=i(20);n.Date.defineInstance({getWeekday:function(e){return r(e)}}),e.exports=n.Date.getWeekday},function(e,t,i){"use strict";var n=i(0);n.Date.defineInstance({getUTCWeekday:function(e){return e.getUTCDay()}}),e.exports=n.Date.getUTCWeekday},function(e,t,i){"use strict";var n=i(0),r=i(80);n.Date.defineInstance({getUTCOffset:function(e,t){return r(e,t)}}),e.exports=n.Date.getUTCOffset},function(e,t,i){"use strict";var n=i(0),r=i(56);n.Date.defineInstance({getISOWeek:function(e){return r(e,!0)}}),e.exports=n.Date.getISOWeek},function(e,t,i){"use strict";var n=i(0),r=i(86);n.Date.defineInstance({get:function(e,t,i){return r(e,t,i)}}),e.exports=n.Date.get},function(e,t,i){"use strict";e.exports=1e3},function(e,t,i){"use strict";var n=i(262),r=i(12).hasOwn;e.exports=function memoizeFunction(e){var t={},i=0;return function(s){return r(t,s)?t[s]:(i===n&&(t={},i=0),i++,t[s]=e(s))}}},function(e,t,i){"use strict";e.exports=/([{}])\1|\{([^}]*)\}|(%)%|(%(\w*))/g},function(e,t,i){"use strict";var n=i(264),r=i(52),s=i(263),a=r.OPEN_BRACE,o=r.CLOSE_BRACE;e.exports=function createFormatMatcher(e,t,i){var r=n,l=s(function compile(e){var t,i=[],n=0;for(r.lastIndex=0;t=r.exec(e);)getSubstring(i,e,n,t.index),getToken(i,t),n=r.lastIndex;return getSubstring(i,e,n,e.length),i});function getToken(n,r){var s,a,o,l,u=r[2],c=r[3],f=r[5];r[4]&&t?(a=f,s=t):u?(a=u,s=e):o=c&&t?c:r[1]||r[0],s&&(function assertPassesPrecheck(e,t,i){if(e&&!e(t,i))throw new TypeError("Invalid token "+(t||i)+" in format string")}(i,u,f),l=function(e,t){return s(e,a,t)}),n.push(l||function getLiteral(e){return function(){return e}}(o))}function getSubstring(e,t,i,n){if(n>i){var r=t.slice(i,n);assertNoUnmatched(r,a),assertNoUnmatched(r,o),e.push(function(){return r})}}function assertNoUnmatched(e,t){if(-1!==e.indexOf(t))throw new TypeError("Unmatched "+t+" in format string")}return function(e,t,i){for(var n=l(e),r="",s=0;s0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i}},function(e,t,i){"use strict";e.exports=/(\w{3})[()\s\d]*$/},function(e,t,i){"use strict";var n=i(270),r=i(9),s=i(4),a=i(25),o=i(35),l=i(29),u=i(81),c=i(28),f=i(34),d=i(57),h=i(20),p=i(19),m=i(8),g=i(268),y=i(80),v=i(267),b=i(56),C=i(266),w=i(38),_=r.localeManager,x=s.MONTH_INDEX,k=m.ceil,E=[{ldml:"Dow",strf:"a",lowerToken:"dow",get:function(e,t){return _.get(t).getWeekdayName(h(e),2)}},{ldml:"Weekday",strf:"A",lowerToken:"weekday",allowAlternates:!0,get:function(e,t,i){return _.get(t).getWeekdayName(h(e),i)}},{ldml:"Mon",strf:"b h",lowerToken:"mon",get:function(e,t){return _.get(t).getMonthName(c(e),2)}},{ldml:"Month",strf:"B",lowerToken:"month",allowAlternates:!0,get:function(e,t,i){return _.get(t).getMonthName(c(e),i)}},{strf:"C",get:function(e){return l(e).toString().slice(0,2)}},{ldml:"d date day",strf:"d",strfPadding:2,ldmlPaddedToken:"dd",ordinalToken:"do",get:function(e){return o(e)}},{strf:"e",get:function(e){return d(o(e),2,!1,10," ")}},{ldml:"H 24hr",strf:"H",strfPadding:2,ldmlPaddedToken:"HH",get:function(e){return u(e)}},{ldml:"h hours 12hr",strf:"I",strfPadding:2,ldmlPaddedToken:"hh",get:function(e){return u(e)%12||12}},{ldml:"D",strf:"j",strfPadding:3,ldmlPaddedToken:"DDD",get:function(e){var t=w(f(e),x);return v(e,t)+1}},{ldml:"M",strf:"m",strfPadding:2,ordinalToken:"Mo",ldmlPaddedToken:"MM",get:function(e){return c(e)+1}},{ldml:"m minutes",strf:"M",strfPadding:2,ldmlPaddedToken:"mm",get:function(e){return p(e,"Minutes")}},{ldml:"Q",get:function(e){return k((c(e)+1)/3)}},{ldml:"TT",strf:"p",get:function(e,t){return C(e,t)}},{ldml:"tt",strf:"P",get:function(e,t){return C(e,t).toLowerCase()}},{ldml:"T",lowerToken:"t",get:function(e,t){return C(e,t).charAt(0)}},{ldml:"s seconds",strf:"S",strfPadding:2,ldmlPaddedToken:"ss",get:function(e){return p(e,"Seconds")}},{ldml:"S ms",strfPadding:3,ldmlPaddedToken:"SSS",get:function(e){return p(e,"Milliseconds")}},{ldml:"e",strf:"u",ordinalToken:"eo",get:function(e){return h(e)||7}},{strf:"U",strfPadding:2,get:function(e){return b(e,!1,0)}},{ldml:"W",strf:"V",strfPadding:2,ordinalToken:"Wo",ldmlPaddedToken:"WW",get:function(e){return b(e,!0)}},{strf:"w",get:function(e){return h(e)}},{ldml:"w",ordinalToken:"wo",ldmlPaddedToken:"ww",get:function(e,t){var i=_.get(t),n=i.getFirstDayOfWeek(t),r=i.getFirstDayOfWeekYear(t);return b(e,!0,n,r)}},{strf:"W",strfPadding:2,get:function(e){return b(e,!1)}},{ldmlPaddedToken:"gggg",ldmlTwoDigitToken:"gg",get:function(e,t){return g(e,t)}},{strf:"G",strfPadding:4,strfTwoDigitToken:"g",ldmlPaddedToken:"GGGG",ldmlTwoDigitToken:"GG",get:function(e,t){return g(e,t,!0)}},{ldml:"year",ldmlPaddedToken:"yyyy",ldmlTwoDigitToken:"yy",strf:"Y",strfPadding:4,strfTwoDigitToken:"y",get:function(e){return l(e)}},{ldml:"ZZ",strf:"z",get:function(e){return y(e)}},{ldml:"X",get:function(e){return a(e.getTime()/1e3)}},{ldml:"x",get:function(e){return e.getTime()}},{ldml:"Z",get:function(e){return y(e,!0)}},{ldml:"z",strf:"Z",get:function(e){var t=e.toString().match(n);return t?t[1]:""}},{strf:"D",alias:"%m/%d/%y"},{strf:"F",alias:"%Y-%m-%d"},{strf:"r",alias:"%I:%M:%S %p"},{strf:"R",alias:"%H:%M"},{strf:"T",alias:"%H:%M:%S"},{strf:"x",alias:"{short}"},{strf:"X",alias:"{time}"},{strf:"c",alias:"{stamp}"}];e.exports=E},function(e,t,i){"use strict";var n,r,s,a=i(9),o=i(271),l=i(82),u=i(32),c=i(57),f=i(51),d=i(23),h=i(12),p=i(265),m=i(45),g=a.localeManager,y=h.hasOwn,v=h.getOwn,b=h.forEachProperty,C=d.sugarDate;!function buildDateFormatTokens(){function addFormats(e,t,i){t&&u(f(t),function(t){e[t]=i})}function buildLowercase(e){return function(t,i){return e(t,i).toLowerCase()}}function buildPadded(e,t){return function(i,n){return c(e(i,n),t)}}function buildTwoDigits(e){return function(t,i){return e(t,i)%100}}function buildAlias(e){return function(t,i){return s(e,t,i)}}function buildAlternate(e,t){var i=function(i,n){return e.get(i,n,t)};addFormats(n,e.ldml+t,i),e.lowerToken&&(n[e.lowerToken+t]=buildLowercase(i))}function getIdentityFormat(e){return function(t,i){var n=g.get(i);return s(n[e],t,i)}}n={},r={},u(o,function(e){var t,i=e.get;e.lowerToken&&(n[e.lowerToken]=buildLowercase(i)),e.ordinalToken&&(n[e.ordinalToken]=function buildOrdinal(e){return function(t,i){var n=e(t,i);return n+g.get(i).getOrdinal(n)}}(i)),e.ldmlPaddedToken&&(n[e.ldmlPaddedToken]=buildPadded(i,e.ldmlPaddedToken.length)),e.ldmlTwoDigitToken&&(n[e.ldmlTwoDigitToken]=buildPadded(buildTwoDigits(i),2)),e.strfTwoDigitToken&&(r[e.strfTwoDigitToken]=buildPadded(buildTwoDigits(i),2)),e.strfPadding&&(t=buildPadded(i,e.strfPadding)),e.alias&&(i=buildAlias(e.alias)),e.allowAlternates&&function buildAlternates(e){for(var t=1;t<=5;t++)buildAlternate(e,t)}(e),addFormats(n,e.ldml,i),addFormats(r,e.strf,t||i)}),b(l,function(e,t){addFormats(n,t,buildAlias(e))}),m(C,"short medium long full",function(e,t){var i=getIdentityFormat(t);addFormats(n,t,i),e[t]=i}),addFormats(n,"time",getIdentityFormat("time")),addFormats(n,"stamp",getIdentityFormat("stamp"))}(),function buildDateFormatMatcher(){s=p(function getLdml(e,t,i){return v(n,t)(e,i)},function getStrf(e,t,i){return v(r,t)(e,i)},function checkDateToken(e,t){return y(n,e)||y(r,t)})}(),e.exports={ldmlTokens:n,strfTokens:r,dateFormatMatcher:s}},function(e,t,i){"use strict";var n=i(0),r=i(83);n.Date.defineInstance({format:function(e,t,i){return r(e,t,i)}}),e.exports=n.Date.format},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.endOfYear},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.endOfWeek},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.endOfMonth},function(e,t,i){"use strict";var n=i(0),r=i(4),s=i(20),a=i(24),o=i(47),l=r.DAY_INDEX;n.Date.defineInstance({endOfISOWeek:function(e){return 0!==s(e)&&a(e,7),o(e,l)}}),e.exports=n.Date.endOfISOWeek},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.endOfDay},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.daysUntil},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.daysSince},function(e,t,i){"use strict";var n=i(0),r=i(98);n.Date.defineInstance({daysInMonth:function(e){return r(e)}}),e.exports=n.Date.daysInMonth},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.daysFromNow},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.daysAgo},function(e,t,i){"use strict";var n=i(0),r=i(34);n.Date.defineInstance({clone:function(e){return r(e)}}),e.exports=n.Date.clone},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.beginningOfYear},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.beginningOfWeek},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.beginningOfMonth},function(e,t,i){"use strict";var n=i(0),r=i(93),s=i(20),a=i(24);n.Date.defineInstance({beginningOfISOWeek:function(e){var t=s(e);return 0===t?t=-6:1!==t&&(t=1),a(e,t),r(e)}}),e.exports=n.Date.beginningOfISOWeek},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.beginningOfDay},function(e,t,i){"use strict";var n=i(4),r=i(31),s=i(92),a=n.YEAR_INDEX;e.exports=function collectDateParamsFromArguments(e){var t={},i=0;return s(a,function(n){var s=e[i++];r(s)&&(t[n.name]=s)}),t}},function(e,t,i){"use strict";var n=i(42);e.exports=function getDateParamsFromString(e){var t,i,r={};return(t=e.match(/^(-?\d*[\d.]\d*)?\s?(\w+?)s?$/i))&&(n(i)&&(i=+t[1],isNaN(i)&&(i=1)),r[t[2].toLowerCase()]=i),r}},function(e,t,i){"use strict";var n=i(0),r=i(85);n.Date.defineInstanceWithArguments({advance:function(e,t){return r(e,t,1)}}),e.exports=n.Date.advance},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.addYears},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.addWeeks},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.addSeconds},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.addMonths},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.addMinutes},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.addMilliseconds},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.addHours},function(e,t,i){"use strict";var n=i(30),r=i(4),s=i(32),a=i(87),o=i(39),l=i(47),u=i(59),c=i(23),f=i(45),d=i(46),h=i(86),p=i(58),m=c.sugarDate,g=r.HOURS_INDEX,y=r.DAY_INDEX;e.exports=function buildDateUnitMethods(){f(m,n,function(e,t,i){var n=t.name,r=u(n);i>y&&s(["Last","This","Next"],function(t){e["is"+t+r]=function(e,i){return a(e,t+" "+n,0,i,{locale:"en"})}}),i>g&&(e["beginningOf"+r]=function(e,t){return d(e,i,t)},e["endOf"+r]=function(e,t){return l(e,i,t)}),e["add"+r+"s"]=function(e,t,i){return o(e,n,t,i)},e[n+"sAgo"]=e[n+"sUntil"]=function(e,i,n){return p(h(e,i,n,!0),e,t)},e[n+"sSince"]=e[n+"sFromNow"]=function(e,i,n){return p(e,h(e,i,n,!0),t)}})}},function(e,t,i){"use strict";var n=i(0);i(2),e.exports=n.Date.addDays},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.yearsFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.yearsBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.yearsAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.yearsAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.years},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.yearFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.yearBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.yearAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.yearAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.year},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.weeksFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.weeksBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.weeksAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.weeksAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.weeks},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.weekFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.weekBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.weekAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.weekAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.week},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.secondsFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.secondsBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.secondsAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.secondsAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.seconds},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.secondFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.secondBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.secondAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.secondAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.second},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.monthsFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.monthsBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.monthsAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.monthsAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.months},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.monthFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.monthBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.monthAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.monthAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.month},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.minutesFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.minutesBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.minutesAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.minutesAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.minutes},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.minuteFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.minuteBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.minuteAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.minuteAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.minute},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.millisecondsFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.millisecondsBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.millisecondsAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.millisecondsAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.milliseconds},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.millisecondFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.millisecondBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.millisecondAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.millisecondAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.millisecond},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.hoursFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.hoursBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.hoursAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.hoursAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.hours},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.hourFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.hourBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.hourAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.hourAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.hour},function(e,t,i){"use strict";var n=i(0),r=i(9).localeManager;n.Number.defineInstance({duration:function(e,t){return r.get(t).getDuration(e)}}),e.exports=n.Number.duration},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.daysFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.daysBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.daysAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.daysAfter},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.days},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.dayFromNow},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.dayBefore},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.dayAgo},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.dayAfter},function(e,t,i){"use strict";var n=i(32),r=i(51),s=i(5).isString;e.exports=function collectSimilarMethods(e,t){var i={};return s(e)&&(e=r(e)),n(e,function(e,n){t(i,e,n)}),i}},function(e,t,i){"use strict";e.exports=function wrapNamespace(e){return function(t,i,n){t[e](i,n)}}},function(e,t,i){"use strict";var n=i(383);e.exports={alias:n("alias"),defineStatic:n("defineStatic"),defineInstance:n("defineInstance"),defineStaticPolyfill:n("defineStaticPolyfill"),defineInstancePolyfill:n("defineInstancePolyfill"),defineInstanceAndStatic:n("defineInstanceAndStatic"),defineInstanceWithArguments:n("defineInstanceWithArguments")}},function(e,t,i){"use strict";var n=i(30),r=i(27),s=i(8),a=i(39),o=i(23),l=i(45),u=o.sugarNumber,c=s.round;e.exports=function buildNumberUnitMethods(){l(u,n,function(e,t){var i,n,s,o=t.name;i=function(e){return c(e*t.multiplier)},n=function(e,t,i){return a(r(t,i,!0),o,e)},s=function(e,t,i){return a(r(t,i,!0),o,-e)},e[o]=i,e[o+"s"]=i,e[o+"Before"]=s,e[o+"sBefore"]=s,e[o+"Ago"]=s,e[o+"sAgo"]=s,e[o+"After"]=n,e[o+"sAfter"]=n,e[o+"FromNow"]=n,e[o+"sFromNow"]=n})}},function(e,t,i){"use strict";var n=i(0);i(1),e.exports=n.Number.day},function(e,t,i){"use strict";var n=i(0),r=i(9).localeManager;n.Date.defineStatic({setLocale:function(e){return r.set(e)}}),e.exports=n.Date.setLocale},function(e,t,i){"use strict";var n=i(0),r=i(9).localeManager;n.Date.defineStatic({removeLocale:function(e){return r.remove(e)}}),e.exports=n.Date.removeLocale},function(e,t,i){"use strict";var n=i(0),r=i(9).localeManager;n.Date.defineStatic({getLocale:function(e){return r.get(e,!e)}}),e.exports=n.Date.getLocale},function(e,t,i){"use strict";var n=i(0),r=i(9).localeManager;n.Date.defineStatic({getAllLocales:function(){return r.getAll()}}),e.exports=n.Date.getAllLocales},function(e,t,i){"use strict";e.exports=function getKeys(e){return Object.keys(e)}},function(e,t,i){"use strict";var n=i(0),r=i(9),s=i(391),a=r.localeManager;n.Date.defineStatic({getAllLocaleCodes:function(){return s(a.getAll())}}),e.exports=n.Date.getAllLocaleCodes},function(e,t,i){"use strict";e.exports=function setChainableConstructor(e,t){e.prototype.constructor=function(){return t.apply(this,arguments)}}},function(e,t,i){"use strict";var n=i(27),r=i(23),s=i(393),a=r.sugarDate;e.exports=function setDateChainableConstructor(){s(a,n)}},function(e,t,i){"use strict";i(394)()},function(e,t,i){"use strict";var n=i(4),r=i(48),s=n.DAY_INDEX,a=n.YEAR_INDEX;e.exports=function iterateOverHigherDateParams(e,t){r(e,t,a,s)}},function(e,t,i){"use strict";var n=i(29),r=i(8).abs;e.exports=function getYearFromAbbreviation(e,t,i){var s,a=+e;return a+=a<50?2e3:1900,i&&(s=a-n(t))/r(s)!==i&&(a+=100*i),a}},function(e,t,i){"use strict";e.exports=function getParsingTokenValue(e,t){var i;return i=e.val?e.val:e.sign?"+"===t?1:-1:e.bool?!!i:+t.replace(/,/,"."),"month"===e.param&&(i-=1),i}},function(e,t,i){"use strict";var n=i(89);e.exports=function deleteDateParam(e,t){delete e[n(e,t)]}},function(e,t,i){"use strict";var n=i(12).hasOwn;e.exports=function getOwnKey(e,t){if(n(e,t))return t}},function(e,t,i){"use strict";var n=i(89),r=i(12).getOwn;e.exports=function getDateParam(e,t){return r(e,n(e,t))}},function(e,t,i){"use strict";var n=i(37);e.exports=function setMonth(e,t){n(e,"Month",t)}},function(e,t,i){"use strict";var n=i(37);e.exports=function setYear(e,t){n(e,"FullYear",t)}},function(e,t,i){"use strict";var n=i(37),r=i(91);e.exports=function callDateSetWithWeek(e,t,i,s){"ISOWeek"===t?r(e,i):n(e,t,i,s)}},function(e,t,i){"use strict";var n=i(4),r=n.DAY_INDEX,s=n.MONTH_INDEX;e.exports=function getHigherUnitIndex(e){return e===r?s:e+1}},function(e,t,i){"use strict";var n=i(41),r=i(38);e.exports=function resetLowerUnits(e,t){return r(e,n(t))}},function(e,t,i){"use strict";var n=i(12).setProperty;e.exports=function defineAccessor(e,t,i){n(e,t,i)}},function(e,t,i){"use strict";var n=i(53),r=i(407),s=i(12).forEachProperty;e.exports=function defineOptionsAccessor(e,t){var i=n(t);function getOption(e){return i[e]}return r(e,"getOption",getOption),r(e,"setOption",function setOption(e,n){var r;1===arguments.length?r=e:(r={})[e]=n,s(r,function(e,n){null===e&&(e=t[n]),i[n]=e})}),getOption}},function(e,t,i){"use strict";e.exports=function defaultNewDate(){return new Date}},function(e,t,i){"use strict";var n={newDateInternal:i(409)};e.exports=n},function(e,t,i){"use strict";var n=i(0),r=i(27);i(395),n.Date.defineStatic({create:function(e,t){return r(e,t)}}),e.exports=n.Date.create},function(e,t,i){"use strict";var n=i(102),r=i(99);e.exports=function getParsingTokenWithSuffix(e,t,i){var s=n[e];return s.requiresSuffix?t=r(t+r(i)):s.requiresSuffixOr?t+=r(s.requiresSuffixOr+"|"+i):t+=r(i,!0),t}},function(e,t,i){"use strict";var n=i(25),r=i(96),s=i(95);e.exports=function getAdjustedUnitForNumber(e){return s(e,function(t){return n(r(e/t.multiplier,1))})}},function(e,t,i){"use strict";e.exports=function allCharsReg(e){return RegExp("["+e+"]","g")}},function(e,t,i){"use strict";var n,r,s,a=i(52),o=i(97),l=i(414),u=a.HALF_WIDTH_ZERO,c=a.FULL_WIDTH_ZERO,f=a.HALF_WIDTH_PERIOD,d=a.FULL_WIDTH_PERIOD,h=a.HALF_WIDTH_COMMA;!function buildFullWidthNumber(){var e=d,t=f,i=h,a="";r={};for(var p,m=0;m<=9;m++)a+=p=o(m+c),r[p]=o(m+u);r[i]="",r[e]=t,r[t]=t,n=l(a+e+i+t),s=a}(),e.exports={fullWidthNumberReg:n,fullWidthNumberMap:r,fullWidthNumbers:s}},function(e,t,i){"use strict";var n=i(5).isString;e.exports=function escapeRegExp(e){return n(e)||(e=String(e)),e.replace(/([\\\/\'*+?|()\[\]{}.^$-])/g,"\\$1")}},function(e,t,i){"use strict";var n=i(101),r=i(416);e.exports=function arrayToRegAlternates(e){var t=e.join("");return e&&e.length?t.length===e.length?"["+t+"]":n(e,r).join("|"):""}},function(e,t,i){"use strict";e.exports="_sugar_"},function(e,t,i){"use strict";var n=i(418),r=i(12).setProperty;e.exports=function privatePropertyAccessor(e){var t=n+e;return function(e,i){return arguments.length>1?(r(e,t,i),e):e[t]}}},function(e,t,i){"use strict";e.exports=function getArrayWithOffset(e,t,i,n){var r;return i>1&&(r=e[t+(i-1)*n]),r||e[t]}},function(e,t,i){"use strict";e.exports=function getOrdinalSuffix(e){if(e>=11&&e<=13)return"th";switch(e%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}}},function(e,t,i){"use strict";var n=i(12).hasOwn;e.exports=function hasValidPlainObjectPrototype(e){var t="constructor"in e;return!t&&!("toString"in e)||t&&!n(e,"constructor")&&n(e.constructor.prototype,"isPrototypeOf")}},function(e,t,i){"use strict";var n=i(12).hasOwn;e.exports=function hasOwnEnumeratedProperties(e){var t=Object.prototype;for(var i in e){var r=e[i];if(!n(e,i)&&r!==t[i])return!1}return!0}},function(e,t,i){"use strict";var n=i(100),r=i(64),s=i(423),a=i(422);e.exports=function isPlainObject(e,t){return r(e)&&n(e,"Object",t)&&a(e)&&s(e)}},function(e,t,i){"use strict";e.exports="Boolean Number String Date RegExp Function Array Error Set Map"},function(e,t,i){"use strict";var n=i(52).HALF_WIDTH_COMMA;e.exports=function commaSplit(e){return e.split(n)}},function(e,t,i){"use strict";e.exports=function isArrayIndex(e){return e>>>0==e&&4294967295!=e}},function(e,t,i){"use strict";var n=i(427);e.exports=function getSparseArrayIndexes(e,t,i,r){var s,a=[];for(s in e)n(s)&&(i||(r?s<=t:s>=t))&&a.push(+s);return a.sort(function(e,i){var n=e>t;return n!==i>t?n?-1:1:e-i}),a}},function(e,t,i){"use strict";var n=i(428);e.exports=function iterateOverSparseArray(e,t,i,r){for(var s,a=n(e,i,r),o=0,l=a.length;o0&&r%10==0)?(t&&(o+=a),l?a=r:o+=r):(o+=r*a,a*=10),t=i;return o},getOrdinal:function(e){return this.ordinalSuffix||y(e)},getRelativeFormat:function(e,t){return this.convertAdjustedToFormat(e,t)},getDuration:function(e){return this.convertAdjustedToFormat(k(N(0,e)),"duration")},getFirstDayOfWeek:function(){var e=this.firstDayOfWeek;return f(e)?e:D},getFirstDayOfWeekYear:function(){return this.firstDayOfWeekYear||R},convertAdjustedToFormat:function(e,t){var i,n,r,s=e[0],a=e[1],o=e[2],l=this[t]||this.relative;return M(l)?l.call(this,s,a,o,t):(r=this.plural&&1!==s?1:0,n=this.units[8*r+a]||this.units[a],i=this[o>0?"fromNow":"ago"],l.replace(/\{(.*?)\}/g,function(e,t){switch(t){case"num":return s;case"unit":return n;case"sign":return i}}))},cacheFormat:function(e,t){this.compiledFormats.splice(t,1),this.compiledFormats.unshift(e)},addFormat:function(e,t){var i=this;function getTokenSrc(e){var n,r,a,o=e.match(/\?$/),l=e.match(/^(\d+)\??$/),c=e.match(/(\d)(?:-(\d))?/),f=e.replace(/[^a-z]+$/i,"");return(a=T(i.parsingAliases,f))?(r=replaceParsingTokens(a),o&&(r=v(r,!0)),r):(l?r=i.tokens[l[1]]:(a=T(s,f))?r=a.src:(a=T(i.parsingTokens,f)||T(i,f),f=f.replace(/s$/,""),a||(a=T(i.parsingTokens,f)||T(i,f+"s")),I(a)?(r=a,n=i[f+"Suffix"]):(c&&(a=u(a,function(e,t){var n=t%(i.units?8:a.length);return n>=c[1]&&n<=(c[2]||c[1])})),r=_(a))),r?(l?r=v(r):(t.push(f),r="("+r+")"),n&&(r=E(f,r,n)),o&&(r+="?"),r):"")}function replaceParsingTokens(e){return(e=e.replace(/ /g," ?")).replace(/\{([^,]+?)\}/g,function(e,t){var i=t.split("|");return i.length>1?v(l(i,getTokenSrc).join("|")):getTokenSrc(t)})}t||(t=[],e=replaceParsingTokens(e)),i.addRawFormat(e,t)},addRawFormat:function(e,t){this.compiledFormats.unshift({reg:RegExp("^ *"+e+" *$","i"),to:t})},init:function(e){var t=this;function buildValueArray(e,i,n,r){var s,a=e,o=[];t[a]||(a+="s"),n||(n={},s=!0),function forAllAlternates(e,i){c(t[e],function(e,t){forEachAlternate(e,function(e,n){i(e,n,t)})})}(a,function(e,t,s){var a,l=t*i+s;a=r?r(s):s,n[e]=a,n[e.toLowerCase()]=a,o[l]=e}),t[a]=o,s&&(t[e+"Map"]=n)}function forEachAlternate(e,t){var i=l(e.split("+"),function(e){return e.replace(/(.+):(.+)$/,function(e,t,i){return l(i.split("|"),function(e){return t+e}).join("|")})}).join("|");c(i.split("|"),t)}function addFormatSet(e,i,n){c(t[e],function(e){i&&(e=getFormatWithTime(e,n)),t.addFormat(e)})}function getFormatWithTime(e,i){return i?function getTimeBefore(){return v("{time}[,\\s\\u3000]",!0)}()+e:e+function getTimeAfter(){var e,i=",?[\\s\\u3000]";return(e=_(t.timeMarkers))&&(i+="| (?:"+e+") "),i=v(i,t.timeMarkerOptional),v(i+"{time}",!0)}()}!function initFormats(){t.compiledFormats=[],t.parsingAliases={},t.parsingTokens={}}(),function initDefinition(){g(t,e)}(),function initArrayFields(){c(n,function(e){var i=t[e];I(i)?t[e]=d(i):i||(t[e]=[])})}(),buildValueArray("month",12),buildValueArray("weekday",7),buildValueArray("unit",8),buildValueArray("ampm",2),function buildNumerals(){var e={};buildValueArray("numeral",10,e),buildValueArray("article",1,e,function(){return 1}),buildValueArray("placeholder",4,e,function(e){return F(10,e+1)}),t.numeralMap=e}(),function buildTimeFormats(){t.parsingAliases.time=function getTimeFormat(){return t.ampmFront?"{ampm?} {hour} (?:{minute} (?::?{second})?)?":t.ampm.length?"{hour}(?:[.:]{minute}(?:[.:]{second})? {ampm?}| {ampm})":"{hour}(?:[.:]{minute}(?:[.:]{second})?)"}(),t.parsingAliases.tzOffset="(?:{Z}|{GMT?}(?:{tzSign}{tzHour}(?::?{tzMinute}(?: \\([\\w\\s]+\\))?)?)?)?"}(),function buildParsingTokens(){S(o,function(e,i){var n,r;n=e.base?s[e.base].src:e.src,(e.requiresNumerals||t.numeralUnits)&&(n+=function getNumeralSrc(){var e,i="";return e=t.numerals.concat(t.placeholders).concat(t.articles),t.allowsFullWidth&&(e=e.concat(P.split(""))),e.length&&(i="|(?:"+_(e)+")+"),i}()),(r=t[i+"s"])&&r.length&&(n+="|"+_(r)),t.parsingTokens[i]=n})}(),function buildTimeSuffixes(){w(function(e,i){var n=t.timeSuffixes[i];n&&(t[(e.alias||e.name)+"Suffix"]=n)})}(),function buildModifiers(){c(t.modifiers,function(e){var i,n=e.name,r=n+"Map";i=t[r]||{},forEachAlternate(e.src,function(r,s){var a=T(t.parsingTokens,n),o=e.value;i[r]=o,t.parsingTokens[n]=a?a+"|"+r:r,"sign"===e.name&&0===s&&(t[1===o?"fromNow":"ago"]=r)}),t[r]=i})}(),function addCoreFormats(){c(a,function(e){var i=e.src;e.mdy&&t.mdy&&(i=e.mdy),e.time?(t.addFormat(getFormatWithTime(i,!0)),t.addFormat(getFormatWithTime(i))):t.addFormat(i)}),t.addFormat("{time}")}(),function addLocaleFormats(){addFormatSet("parse"),addFormatSet("timeParse",!0),addFormatSet("timeFrontParse",!0,!0)}()}},new Locale(e)}},function(e,t,i){"use strict";var n=i(67)({short:"{yyyy}-{MM}-{dd}",medium:"{d} {Month}, {yyyy}",long:"{d} {Month}, {yyyy} {H}:{mm}",full:"{Weekday}, {d} {Month}, {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}"});e.exports=n},function(e,t,i){"use strict";e.exports={code:"en",plural:!0,timeMarkers:"at",ampm:"AM|A.M.|a,PM|P.M.|p",units:"millisecond:|s,second:|s,minute:|s,hour:|s,day:|s,week:|s,month:|s,year:|s",months:"Jan:uary|,Feb:ruary|,Mar:ch|,Apr:il|,May,Jun:e|,Jul:y|,Aug:ust|,Sep:tember|t|,Oct:ober|,Nov:ember|,Dec:ember|",weekdays:"Sun:day|,Mon:day|,Tue:sday|,Wed:nesday|,Thu:rsday|,Fri:day|,Sat:urday|+weekend",numerals:"zero,one|first,two|second,three|third,four:|th,five|fifth,six:|th,seven:|th,eight:|h,nin:e|th,ten:|th",articles:"a,an,the",tokens:"the,st|nd|rd|th,of|in,a|an,on",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{num} {unit} {sign}",duration:"{num} {unit}",modifiers:[{name:"half",src:"half",value:.5},{name:"midday",src:"noon",value:12},{name:"midday",src:"midnight",value:24},{name:"day",src:"yesterday",value:-1},{name:"day",src:"today|tonight",value:0},{name:"day",src:"tomorrow",value:1},{name:"sign",src:"ago|before",value:-1},{name:"sign",src:"from now|after|from|in|later",value:1},{name:"edge",src:"first day|first|beginning",value:-2},{name:"edge",src:"last day",value:1},{name:"edge",src:"end|last",value:2},{name:"shift",src:"last",value:-1},{name:"shift",src:"the|this",value:0},{name:"shift",src:"next",value:1}],parse:["(?:just)? now","{shift} {unit:5-7}","{months?} (?:{year}|'{yy})","{midday} {4?} {day|weekday}","{months},?(?:[-.\\/\\s]{year})?","{edge} of (?:day)? {day|weekday}","{0} {num}{1?} {weekday} {2} {months},? {year?}","{shift?} {day?} {weekday?} {timeMarker?} {midday}","{sign?} {3?} {half} {3?} {unit:3-4|unit:7} {sign?}","{0?} {edge} {weekday?} {2} {shift?} {unit:4-7?} {months?},? {year?}"],timeParse:["{day|weekday}","{shift} {unit:5?} {weekday}","{0?} {date}{1?} {2?} {months?}","{weekday} {2?} {shift} {unit:5}","{0?} {num} {2?} {months}\\.?,? {year?}","{num?} {unit:4-5} {sign} {day|weekday}","{year}[-.\\/\\s]{months}[-.\\/\\s]{date}","{0|months} {date?}{1?} of {shift} {unit:6-7}","{0?} {num}{1?} {weekday} of {shift} {unit:6}","{date}[-.\\/\\s]{months}[-.\\/\\s](?:{year}|'?{yy})","{weekday?}\\.?,? {months}\\.?,? {date}{1?},? (?:{year}|'{yy})?"],timeFrontParse:["{sign} {num} {unit}","{num} {unit} {sign}","{4?} {day|weekday}"]}},function(e,t,i){"use strict";var n=i(67)({short:"{dd}/{MM}/{yyyy}",medium:"{d} {Month} {yyyy}",long:"{d} {Month} {yyyy} {H}:{mm}",full:"{Weekday}, {d} {Month}, {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}"});e.exports=n},function(e,t,i){"use strict";var n=i(436),r={"en-US":i(104),"en-GB":n,"en-AU":n,"en-CA":i(434)};e.exports=r},function(e,t,i){"use strict";i(6),i(411),i(392),i(390),i(389),i(388),i(387),i(386),i(381),i(380),i(379),i(378),i(377),i(376),i(375),i(374),i(373),i(372),i(371),i(370),i(369),i(368),i(367),i(366),i(365),i(364),i(363),i(362),i(361),i(360),i(359),i(358),i(357),i(356),i(355),i(354),i(353),i(352),i(351),i(350),i(349),i(348),i(347),i(346),i(345),i(344),i(343),i(342),i(341),i(340),i(339),i(338),i(337),i(336),i(335),i(334),i(333),i(332),i(331),i(330),i(329),i(328),i(327),i(326),i(325),i(324),i(323),i(322),i(321),i(320),i(319),i(318),i(317),i(316),i(315),i(314),i(313),i(312),i(311),i(310),i(309),i(308),i(307),i(306),i(305),i(304),i(303),i(302),i(301),i(299),i(298),i(297),i(296),i(295),i(294),i(293),i(292),i(289),i(288),i(287),i(286),i(285),i(284),i(283),i(282),i(281),i(280),i(279),i(278),i(277),i(276),i(275),i(274),i(273),i(261),i(260),i(259),i(258),i(257),i(256),i(255),i(254),i(253),i(252),i(249),i(248),i(247),i(246),i(244),i(243),i(242),i(241),i(240),i(239),i(238),i(237),i(236),i(235),i(234),i(233),i(232),i(231),i(230),i(229),i(228),i(227),i(226),i(225),i(223),i(222),i(221),i(220),i(219),i(218),i(217),i(216),i(215),i(214),i(213),i(212),i(211),i(210),i(209),i(208),i(207),i(206),i(205),i(203),i(202),i(200),i(199),i(198),i(197),i(196),i(195),i(194),i(193),i(192),i(191),i(190),i(189),i(188),i(187),i(186),i(185),i(184),i(183),i(182),e.exports=i(0)},function(e,t){t.remove=function removeDiacritics(e){return e.replace(/[^\u0000-\u007e]/g,function(e){return n[e]||e})};for(var i=[{base:" ",chars:" "},{base:"0",chars:"߀"},{base:"A",chars:"ⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ"},{base:"AA",chars:"Ꜳ"},{base:"AE",chars:"ÆǼǢ"},{base:"AO",chars:"Ꜵ"},{base:"AU",chars:"Ꜷ"},{base:"AV",chars:"ꜸꜺ"},{base:"AY",chars:"Ꜽ"},{base:"B",chars:"ⒷBḂḄḆɃƁ"},{base:"C",chars:"ⒸCꜾḈĆCĈĊČÇƇȻ"},{base:"D",chars:"ⒹDḊĎḌḐḒḎĐƊƉᴅꝹ"},{base:"Dh",chars:"Ð"},{base:"DZ",chars:"DZDŽ"},{base:"Dz",chars:"DzDž"},{base:"E",chars:"ɛⒺEÈÉÊỀẾỄỂẼĒḔḖĔĖËẺĚȄȆẸỆȨḜĘḘḚƐƎᴇ"},{base:"F",chars:"ꝼⒻFḞƑꝻ"},{base:"G",chars:"ⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾɢ"},{base:"H",chars:"ⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ"},{base:"I",chars:"ⒾIÌÍÎĨĪĬİÏḮỈǏȈȊỊĮḬƗ"},{base:"J",chars:"ⒿJĴɈȷ"},{base:"K",chars:"ⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ"},{base:"L",chars:"ⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ"},{base:"LJ",chars:"LJ"},{base:"Lj",chars:"Lj"},{base:"M",chars:"ⓂMḾṀṂⱮƜϻ"},{base:"N",chars:"ꞤȠⓃNǸŃÑṄŇṆŅṊṈƝꞐᴎ"},{base:"NJ",chars:"NJ"},{base:"Nj",chars:"Nj"},{base:"O",chars:"ⓄOÒÓÔỒỐỖỔÕṌȬṎŌṐṒŎȮȰÖȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬØǾƆƟꝊꝌ"},{base:"OE",chars:"Œ"},{base:"OI",chars:"Ƣ"},{base:"OO",chars:"Ꝏ"},{base:"OU",chars:"Ȣ"},{base:"P",chars:"ⓅPṔṖƤⱣꝐꝒꝔ"},{base:"Q",chars:"ⓆQꝖꝘɊ"},{base:"R",chars:"ⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ"},{base:"S",chars:"ⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ"},{base:"T",chars:"ⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ"},{base:"Th",chars:"Þ"},{base:"TZ",chars:"Ꜩ"},{base:"U",chars:"ⓊUÙÚÛŨṸŪṺŬÜǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ"},{base:"V",chars:"ⓋVṼṾƲꝞɅ"},{base:"VY",chars:"Ꝡ"},{base:"W",chars:"ⓌWẀẂŴẆẄẈⱲ"},{base:"X",chars:"ⓍXẊẌ"},{base:"Y",chars:"ⓎYỲÝŶỸȲẎŸỶỴƳɎỾ"},{base:"Z",chars:"ⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ"},{base:"a",chars:"ⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑ"},{base:"aa",chars:"ꜳ"},{base:"ae",chars:"æǽǣ"},{base:"ao",chars:"ꜵ"},{base:"au",chars:"ꜷ"},{base:"av",chars:"ꜹꜻ"},{base:"ay",chars:"ꜽ"},{base:"b",chars:"ⓑbḃḅḇƀƃɓƂ"},{base:"c",chars:"cⓒćĉċčçḉƈȼꜿↄ"},{base:"d",chars:"ⓓdḋďḍḑḓḏđƌɖɗƋᏧԁꞪ"},{base:"dh",chars:"ð"},{base:"dz",chars:"dzdž"},{base:"e",chars:"ⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇǝ"},{base:"f",chars:"ⓕfḟƒ"},{base:"ff",chars:"ff"},{base:"fi",chars:"fi"},{base:"fl",chars:"fl"},{base:"ffi",chars:"ffi"},{base:"ffl",chars:"ffl"},{base:"g",chars:"ⓖgǵĝḡğġǧģǥɠꞡꝿᵹ"},{base:"h",chars:"ⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ"},{base:"hv",chars:"ƕ"},{base:"i",chars:"ⓘiìíîĩīĭïḯỉǐȉȋịįḭɨı"},{base:"j",chars:"ⓙjĵǰɉ"},{base:"k",chars:"ⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ"},{base:"l",chars:"ⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇɭ"},{base:"lj",chars:"lj"},{base:"m",chars:"ⓜmḿṁṃɱɯ"},{base:"n",chars:"ⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥлԉ"},{base:"nj",chars:"nj"},{base:"o",chars:"ⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿꝋꝍɵɔᴑ"},{base:"oe",chars:"œ"},{base:"oi",chars:"ƣ"},{base:"oo",chars:"ꝏ"},{base:"ou",chars:"ȣ"},{base:"p",chars:"ⓟpṕṗƥᵽꝑꝓꝕρ"},{base:"q",chars:"ⓠqɋꝗꝙ"},{base:"r",chars:"ⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ"},{base:"s",chars:"ⓢsśṥŝṡšṧṣṩșşȿꞩꞅẛʂ"},{base:"ss",chars:"ß"},{base:"t",chars:"ⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ"},{base:"th",chars:"þ"},{base:"tz",chars:"ꜩ"},{base:"u",chars:"ⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ"},{base:"v",chars:"ⓥvṽṿʋꝟʌ"},{base:"vy",chars:"ꝡ"},{base:"w",chars:"ⓦwẁẃŵẇẅẘẉⱳ"},{base:"x",chars:"ⓧxẋẍ"},{base:"y",chars:"ⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ"},{base:"z",chars:"ⓩzźẑżžẓẕƶȥɀⱬꝣ"}],n={},r=0;r3&&void 0!==arguments[3]?arguments[3]:[],r=l("li"),s=l("label",["for",t]),a=l("input",["id",t],["name",t],["type","checkbox"],["value",e],i);return s.appendChild(a),s.appendChild(f(n)),r.appendChild(s),r.label=s,r.check=a,r},g=function elm(t){return a.getElementById(t)},b=function tag(t,e){return t.getElementsByTagName(e)};function supportsClassList(){return a.documentElement.classList}},function(t,e,n){"use strict";n.r(e),n.d(e,"EMPTY_FN",function(){return i}),n.d(e,"isObj",function(){return r}),n.d(e,"isFn",function(){return s}),n.d(e,"isArray",function(){return a}),n.d(e,"isString",function(){return o}),n.d(e,"isNumber",function(){return u}),n.d(e,"isBoolean",function(){return l}),n.d(e,"isUndef",function(){return c}),n.d(e,"isNull",function(){return f}),n.d(e,"isEmpty",function(){return d});var i=function EMPTY_FN(){},r=function isObj(t){return"[object Object]"===Object.prototype.toString.call(t)},s=function isFn(t){return"[object Function]"===Object.prototype.toString.call(t)},a=function isArray(t){return"[object Array]"===Object.prototype.toString.call(t)},o=function isString(t){return"[object String]"===Object.prototype.toString.call(t)},u=function isNumber(t){return"[object Number]"===Object.prototype.toString.call(t)},l=function isBoolean(t){return"[object Boolean]"===Object.prototype.toString.call(t)},c=function isUndef(t){return void 0===t},f=function isNull(t){return null===t},d=function isEmpty(t){return c(t)||f(t)||0===t.length}},function(t,e,n){"use strict";n.r(e),n.d(e,"INPUT",function(){return b}),n.d(e,"SELECT",function(){return v}),n.d(e,"MULTIPLE",function(){return O}),n.d(e,"CHECKLIST",function(){return _}),n.d(e,"NONE",function(){return C}),n.d(e,"ENTER_KEY",function(){return w}),n.d(e,"TAB_KEY",function(){return x}),n.d(e,"ESC_KEY",function(){return k}),n.d(e,"UP_ARROW_KEY",function(){return j}),n.d(e,"DOWN_ARROW_KEY",function(){return E}),n.d(e,"HEADER_TAG",function(){return P}),n.d(e,"CELL_TAG",function(){return T}),n.d(e,"STRING",function(){return S}),n.d(e,"NUMBER",function(){return F}),n.d(e,"FORMATTED_NUMBER",function(){return N}),n.d(e,"DATE",function(){return R}),n.d(e,"IP_ADDRESS",function(){return D}),n.d(e,"AUTO_FILTER_DELAY",function(){return I}),n.d(e,"FEATURES",function(){return A});var i=n(91),r=n(90),s=n(89),a=n(86),o=n(85),u=n(84),l=n(83),c=n(82),f=n(81),d=n(80),h=n(79),p=n(78),m=n(77),y=n(76),g=n(19),b="input",v="select",O="multiple",_="checklist",C="none",w=13,x=9,k=27,j=38,E=40,P="TH",T="TD",S="string",F="number",N="formatted-number",R="date",D="ipaddress",I=750,A={dateType:{class:i.DateType,name:"dateType"},help:{class:r.Help,name:"help",enforce:!0},state:{class:s.State,name:"state"},markActiveColumns:{class:c.MarkActiveColumns,name:"markActiveColumns"},gridLayout:{class:a.GridLayout,name:"gridLayout"},loader:{class:o.Loader,name:"loader"},highlightKeyword:{class:u.HighlightKeyword,name:"highlightKeyword",property:"highlightKeywords"},popupFilter:{class:l.PopupFilter,name:"popupFilter",property:"popupFilters"},rowsCounter:{class:f.RowsCounter,name:"rowsCounter"},statusBar:{class:d.StatusBar,name:"statusBar"},clearButton:{class:h.ClearButton,name:"clearButton",property:"btnReset"},alternateRows:{class:p.AlternateRows,name:"alternateRows"},noResults:{class:m.NoResults,name:"noResults"},paging:{class:y.Paging,name:"paging"},toolbar:{class:g.Toolbar,name:"toolbar",enforce:!0}}},function(t,e,n){"use strict";n.r(e),n.d(e,"addEvt",function(){return r}),n.d(e,"removeEvt",function(){return s}),n.d(e,"stopEvt",function(){return a}),n.d(e,"cancelEvt",function(){return o}),n.d(e,"targetEvt",function(){return u}),n.d(e,"keyCode",function(){return l}),n.d(e,"isKeyPressed",function(){return c}),n.d(e,"bound",function(){return bound});var i=n(8),r=function addEvt(t,e,n,i){t.addEventListener?t.addEventListener(e,n,i):t.attachEvent?t.attachEvent("on"+e,n):t["on"+e]=n},s=function removeEvt(t,e,n,i){t.removeEventListener?t.removeEventListener(e,n,i):t.detachEvent?t.detachEvent("on"+e,n):t["on"+e]=null},a=function stopEvt(t){t||(t=i.root.event),t.stopPropagation?t.stopPropagation():t.cancelBubble=!0},o=function cancelEvt(t){t||(t=i.root.event),t.preventDefault?t.preventDefault():t.returnValue=!1},u=function targetEvt(t){return t||(t=i.root.event),t.target||t.srcElement},l=function keyCode(t){return t.charCode?t.charCode:t.keyCode?t.keyCode:t.which?t.which:0},c=function isKeyPressed(t){return-1!==(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).indexOf(l(t))};function bound(t,e){var n="".concat(t.name,"_bound");return e[n]||(e[n]=t.bind(e)),e[n]}},function(t,e,n){"use strict";n(386)()},function(t,e,n){"use strict";n(301)()},function(t,e,n){"use strict";n.r(e),function(t){function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}n.d(e,"root",function(){return i});var i="object"===("undefined"==typeof self?"undefined":_typeof(self))&&self.self===self&&self||"object"===(void 0===t?"undefined":_typeof(t))&&t.global===t&&t||void 0}.call(this,n(128))},function(t,e,n){"use strict";n.r(e),n.d(e,"trim",function(){return r}),n.d(e,"isEmpty",function(){return s}),n.d(e,"rgxEsc",function(){return a}),n.d(e,"matchCase",function(){return o}),n.d(e,"contains",function(){return u});var i=n(74),r=function trim(t){return t.trim?t.trim():t.replace(/^\s*|\s*$/g,"")},s=function isEmpty(t){return""===r(t)},a=function rgxEsc(t){return String(t).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},o=function matchCase(t){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?t:t.toLowerCase()},u=function contains(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=r?"g":"gi";return s&&(t=Object(i.remove)(t),e=Object(i.remove)(e)),(n?new RegExp("(^\\s*)"+a(t)+"(\\s*$)",o):new RegExp(a(t),o)).test(e)}},function(t,e,n){"use strict";function _defineProperties(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:l,e=arguments.length>1?arguments[1]:void 0,n=this.innerCont[t];return e&&n.appendChild(e),n}},{key:"createContainer",value:function createContainer(t,e){var n=Object(r.createElm)("div",["class",e]);return t.appendChild(n),n}},{key:"destroy",value:function destroy(){if(this.initialized){var t=this.tf;Object(r.removeElm)(this.cont),this.cont=null;var e=t.dom(),n=Object(r.tag)(e,"caption");[].forEach.call(n,function(t){return Object(r.removeElm)(t)}),this.initialized=!1}}}]),Toolbar}()},function(t,e,n){"use strict";n.r(e),n.d(e,"has",function(){return r});var i=n(9),r=function has(t,e,n){for(var r=Boolean(n),s=0,a=t.length;s1&&void 0!==arguments[1]?arguments[1]:".";if(Object(i.isNumber)(t))return t;var n=new RegExp("[^0-9-"+e+"]",["g"]),r=parseFloat((""+t).replace(/\((.*)\)/,"-$1").replace(n,"").replace(e,"."));return isNaN(r)?0:r}},function(t,e,n){"use strict";var i=n(29);t.exports=function callDateGet(t,e){return t["get"+(i(t)?"UTC":"")+e]()}},function(t,e,n){"use strict";var i=n(23);t.exports=function getWeekday(t){return i(t,"Day")}},function(t,e,n){"use strict";n(170)()},function(t,e,n){"use strict";var i=n(0);t.exports={sugarObject:i.Object,sugarArray:i.Array,sugarDate:i.Date,sugarString:i.String,sugarNumber:i.Number,sugarFunction:i.Function,sugarRegExp:i.RegExp}},function(t,e,n){"use strict";var i=n(39),r=n(38),s=n(24),a=n(12),o=n(14),u=a.isNumber,l=o.abs;t.exports=function setWeekday(t,e,n){if(u(e)){var a=s(t);if(n){var o=n>0?1:-1,c=e%7-a;c&&c/l(c)!==o&&(e+=7*o)}return i(t,r(t)+e-a),t.getTime()}}},function(t,e,n){"use strict";var i=n(14),r=i.ceil,s=i.floor,a=Math.trunc||function(t){return 0!==t&&isFinite(t)?t<0?r(t):s(t):t};t.exports=a},function(t,e,n){"use strict";var i=n(420);t.exports=i("utc")},function(t,e,n){"use strict";var i=n(68);t.exports=function createDate(t,e,n){return i(null,t,e,n).date}},function(t,e,n){"use strict";var i=n(23);t.exports=function getMonth(t){return i(t,"Month")}},function(t,e,n){"use strict";var i=n(23);t.exports=function getYear(t){return i(t,"FullYear")}},function(t,e,n){"use strict";var i=n(121),r=[{name:"millisecond",method:"Milliseconds",multiplier:1,start:0,end:999},{name:"second",method:"Seconds",multiplier:1e3,start:0,end:59},{name:"minute",method:"Minutes",multiplier:6e4,start:0,end:59},{name:"hour",method:"Hours",multiplier:36e5,start:0,end:23},{name:"day",alias:"date",method:"Date",ambiguous:!0,multiplier:864e5,start:1,end:function(t){return i(t)}},{name:"week",method:"ISOWeek",ambiguous:!0,multiplier:6048e5},{name:"month",method:"Month",ambiguous:!0,multiplier:26298e5,start:0,end:11},{name:"year",method:"FullYear",ambiguous:!0,multiplier:315576e5,start:0}];t.exports=r},function(t,e,n){"use strict";t.exports=function isDefined(t){return void 0!==t}},function(t,e,n){"use strict";var i=n(430);t.exports=function forEach(t,e){for(var n=0,r=t.length;ni?1:0},a=function numSortAsc(t,e){return t-e},o=function numSortDesc(t,e){return e-t},u=function dateSortAsc(t,e){return t.getTime()-e.getTime()},l=function dateSortDesc(t,e){return e.getTime()-t.getTime()},c=function sortNumberStr(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:",";return function(n,r){var s=Object(i.parse)(n,e),a=Object(i.parse)(r,e);return t(s,a)}},f=function sortDateStr(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-us";return function(n,i){var s=r.Date.create(n,e),a=r.Date.create(i,e);return t(s,a)}}},function(t,e,n){"use strict";var i=n(29);t.exports=function cloneDate(t){var e=new Date(t.getTime());return i(e,!!i(t)),e}},function(t,e,n){"use strict";var i=n(23);t.exports=function getDate(t){return i(t,"Date")}},function(t,e,n){"use strict";var i=n(40);t.exports=function setDate(t,e){i(t,"Date",e)}},function(t,e,n){"use strict";var i=n(29),r=n(23);t.exports=function callDateSet(t,e,n,s){s&&n===r(t,e,n)||t["set"+(i(t)?"UTC":"")+e](n)}},function(t,e,n){"use strict";var i=n(34),r=n(12),s=n(40),a=n(115),o=r.isFunction;t.exports=function setUnitAndLowerToEdge(t,e,n,r){return a(e,function(e,a){var u=r?e.end:e.start;return o(u)&&(u=u(t)),s(t,e.method,u),!i(n)||a>n}),t}},function(t,e,n){"use strict";var i=n(53);t.exports=function advanceDate(t,e,n,r){var s={};return s[e]=n,i(t,s,r,1)}},function(t,e,n){"use strict";var i=n(67);t.exports=function getNewDate(){return i("newDateInternal")()}},function(t,e,n){"use strict";var i=n(11),r=i.HOURS_INDEX,s=i.DAY_INDEX,a=i.WEEK_INDEX,o=i.MONTH_INDEX;t.exports=function getLowerUnitIndex(t){return t===o?s:t===a?r:t-1}},function(t,e,n){"use strict";t.exports=function isUndefined(t){return void 0===t}},function(t,e,n){"use strict";n(439),n(182),t.exports=n(0)},function(t,e,n){"use strict";var i=n(169);t.exports=function rangeIsValid(t){return i(t.start)&&i(t.end)&&typeof t.start==typeof t.end}},function(t,e,n){"use strict";t.exports=function dateIsValid(t){return!isNaN(t.getTime())}},function(t,e,n){"use strict";var i=n(385),r=n(383),s=i.defineInstance;t.exports=function defineInstanceSimilar(t,e,n,i){s(t,r(e,n),i)}},function(t,e,n){"use strict";var i=n(15),r=n(11),s=n(44),a=n(66),o=n(41),u=r.WEEK_INDEX,l=i.localeManager;t.exports=function moveToBeginningOfUnit(t,e,n){return e===u&&a(t,l.get(n).getFirstDayOfWeek()),o(t,s(e))}},function(t,e,n){"use strict";var i=n(15),r=n(11),s=n(111),a=n(44),o=n(41),u=r.WEEK_INDEX,l=i.localeManager;t.exports=function moveToEndOfUnit(t,e,n,i){return e===u&&s(t,l.get(n).getFirstDayOfWeek()),o(t,a(e),i,!0)}},function(t,e,n){"use strict";var i=n(11),r=n(34),s=n(402),a=n(69),o=i.DAY_INDEX;t.exports=function iterateOverDateParams(t,e,n,i){function run(n,i,a){var o=s(t,n);r(o)&&e(n,o,i,a)}a(function(t,e){var n=run(t.name,t,e);return!1!==n&&e===o&&(n=run("weekday",t,e)),n},n,i)}},function(t,e,n){"use strict";var i=n(33),r=n(11),s=n(28),a=n(39),o=n(38),u=n(31),l=n(43),c=n(27),f=n(14),d=n(23),h=n(12),p=n(407),m=n(44),y=n(406),g=n(405),b=n(52),v=r.DAY_INDEX,O=r.WEEK_INDEX,_=r.MONTH_INDEX,C=r.YEAR_INDEX,w=f.round,x=h.isNumber;t.exports=function updateDate(t,e,n,r,f,h){var k;function setUnit(n,l,p,b){var C,x,j=p.method;!function setUpperUnit(t,e){f&&!k&&(k="weekday"===t?O:y(e))}(n,b),function setSpecificity(t){t>e.specificity||(e.specificity=t)}(b),(x=l%1)&&(function handleFraction(t,n,r){if(n){var s=i[m(n)],a=w(t.multiplier/s.multiplier*r);e[s.name]=a}}(p,b,x),l=s(l)),"weekday"!==n?(C=b===_&&o(t)>28,!r||p.ambiguous?(r&&(b===O&&(l*=7,j=i[v].method),l=l*r+d(t,j)),g(t,j,l,r),C&&function monthHasShifted(t,e){return e<0&&(e=e%12+12),e%12!==u(t)}(t,l)&&a(t,0)):t.setTime(t.getTime()+l*r*p.multiplier)):r||c(t,l,h)}if(x(e)&&r)e={millisecond:e};else if(x(e))return t.setTime(e),t;return b(e,setUnit),n&&e.specificity&&p(t,e.specificity),function canDisambiguate(){if(k&&!(k>C))switch(f){case-1:return t>l();case 1:return t1&&void 0!==arguments[1]?arguments[1]:[],n=this.tf;if(n.isCustomOptions(t)||!n.sortSlc||Object(s.isArray)(n.sortSlc)&&-1===n.sortSlc.indexOf(t))return e;var i,o=n.caseSensitive,u=n.sortNumDesc;if(this.customSorter&&-1!==this.customSorter.col.indexOf(t)){var l=this.customSorter.col.indexOf(t);i=this.customSorter.comparer[l]}else if(n.hasType(t,[a.NUMBER,a.FORMATTED_NUMBER])){var c=n.getDecimal(t),f=r.numSortAsc;!0!==u&&-1===u.indexOf(t)||(f=r.numSortDesc),i=Object(r.sortNumberStr)(f,c)}else if(n.hasType(t,[a.DATE])){var d=n.feature("dateType").getLocale(t),h=r.dateSortAsc;i=Object(r.sortDateStr)(h,d)}else i=o?void 0:r.ignoreCase;return e.sort(i)}},{key:"refreshFilters",value:function refreshFilters(t){var e=this;t.forEach(function(t){var n=e.getValues(t);e.build(t,e.tf.linkedFilters),e.selectOptions(t,n)})}},{key:"isValidLinkedValue",value:function isValidLinkedValue(t,e){var n=this.tf;if(n.disableExcludedOptions)return!0;if(n.paging){if(!Object(s.isEmpty)(e)&&n.isRowValid(t))return!0}else if(n.isRowDisplayed(t))return!0;return!1}}]),BaseDropdown}()},function(t,e,n){"use strict";n.r(e);var i=n(8).root.document;e.default={write:function write(t,e,n){var r="";n&&(r="; expires="+(r=new Date((new Date).getTime()+36e5*n)).toGMTString()),i.cookie=t+"="+escape(e)+r},read:function read(t){var e="",n=t+"=";if(i.cookie.length>0){var r=i.cookie,s=r.indexOf(n);if(-1!==s){s+=n.length;var a=r.indexOf(";",s);-1===a&&(a=r.length),e=unescape(r.substring(s,a))}}return e},remove:function remove(t){this.write(t,"",-1)}}},function(t,e,n){"use strict";var i=n(12),r=n(47),s=n(96),a=n(167),o=n(166),u=n(165),l=n(94),c=i.isNumber,f=i.isString,d=i.isDate,h=i.isFunction;t.exports=function rangeEvery(t,e,n,i){var p,m,y,g,b=t.start,v=t.end,O=v0&&(e*=-1);O?_>=v:_<=v;)n||w.push(_),i&&i(_,C,t),_=p(),C++;return n?C-1:w}},function(t,e,n){"use strict";t.exports="year|month|week|day|hour|minute|second|millisecond"},function(t,e,n){"use strict";var i=n(71),r=n(39),s=n(38),a=n(37),o=n(45),u=n(111),l=n(66),c=n(113),f=i.ISO_FIRST_DAY_OF_WEEK,d=i.ISO_FIRST_DAY_OF_WEEK_YEAR;t.exports=function getWeekNumber(t,e,n,i){var h,p=0;for(o(n)&&(n=f),o(i)&&(i=d),h=u(a(t),n),c(h,n,i),e&&tt;if(u||(o=e,e=t,t=o),a=e-t,n.multiplier>1&&(a=i(a/n.multiplier)),n.ambiguous)for(t=r(t),a&&s(t,n.name,a);te));)a+=1;return u?-a:a}},function(t,e,n){"use strict";t.exports=function simpleCapitalize(t){return t.charAt(0).toUpperCase()+t.slice(1)}},function(t,e,n){"use strict";var i=n(27),r=n(24),s=n(14).floor;t.exports=function moveToBeginningOfWeek(t,e){return i(t,7*s((r(t)-e)/7)+e),t}},function(t,e,n){"use strict";var i=n(411),r=n(26),s=n(409),a=r.sugarDate;t.exports=s(a,i)},function(t,e,n){"use strict";var i=n(117),r=n(126),s=n(15),a=n(11),o=n(29),u=n(28),l=n(35),c=n(54),f=n(116),d=n(34),h=n(27),p=n(53),m=n(43),y=n(45),g=n(12),b=n(42),v=n(57),O=n(70),_=n(51),C=n(400),w=n(16),x=n(399),k=n(50),j=n(52),E=n(398),P=n(397),T=g.isNumber,S=g.isString,F=g.isDate,N=w.hasOwn,R=w.getOwn,D=s.English,I=s.localeManager,A=a.DAY_INDEX,M=a.WEEK_INDEX,L=a.MONTH_INDEX,H=a.YEAR_INDEX;t.exports=function getExtendedDate(t,e,n,s){var a,g,w,B,z,U,W;function getFormatParams(t,e){var n=R(B,"params")||{};return l(e.to,function(e,i){var s,o,u=t[i+1];u&&("yy"===e||"y"===e?(e="year",o=E(u,a,R(B,"prefer"))):(s=R(r,e))?(e=s.param||e,o=x(s,u)):o=w.getTokenValue(e,u),n[e]=o)}),n}function cloneDateByFlag(t,e){return o(t)&&!d(R(B,"fromUTC"))&&(B.fromUTC=!0),o(t)&&!d(R(B,"setUTC"))&&(B.setUTC=!0),e&&(t=new Date(t.getTime())),t}function afterDateSet(t){z.push(t)}function handleTimezoneOffset(t,e,n){o(a,!0);var i=(n||1)*(60*(t||0)+(e||0));i&&(g.minute=(g.minute||0)-i)}function handleMidday(t){g.hour=t%24,t>23&&afterDateSet(function(){b(a,"date",u(t/24))})}function handleRelativeUnit(t){var e=d(g.num)?g.num:1;d(g.weekday)&&(t===L?(setOrdinalWeekday(e),e=1):(p(a,{weekday:g.weekday},!0),delete g.weekday)),g.half&&(e*=g.half),d(g.shift)?e*=g.shift:g.sign&&(e*=g.sign),d(g.day)&&(e+=g.day,delete g.day),function separateAbsoluteUnits(t){var e;j(g,function(n,i,r,s){if(s>=t)return a.setTime(NaN),!1;s0&&(1===t&&(e=A,k(a,A)),_(a,i,R(B,"locale"),e)),d(n)&&(h(a,n,-t),f(a))}),e.specificity=i===L?A:i-1}function setOrdinalWeekday(t){g.weekday=7*(t-1)+g.weekday,g.date=1,W=1}return z=[],B=function getDateOptions(t){var e=S(t)?{locale:t}:t||{};return e.prefer=+!!R(e,"future")-+!!R(e,"past"),e}(n),a=t&&e?cloneDateByFlag(t,!0):m(),o(a,R(B,"fromUTC")),S(e)?a=function parseStringDate(t){t=t.toLowerCase(),w=I.get(R(B,"locale"));for(var e,n,r=0;e=w.compiledFormats[r];r++)if(n=t.match(e.reg)){if(w.cacheFormat(e,r),g=getFormatParams(n,e),d(g.timestamp)){t=g.timestamp,g=null;break}d(g.ampm)&&(1===(u=g.ampm)&&g.hour<12?g.hour+=12:0===u&&12===g.hour&&(g.hour=0)),(g.utc||d(g.tzHour))&&handleTimezoneOffset(g.tzHour,g.tzMinute,g.tzSign),d(g.shift)&&y(g.unit)&&(d(g.month)?g.unit=H:d(g.weekday)&&(g.unit=M)),d(g.num)&&y(g.unit)&&(s=g.num,d(g.weekday)?setOrdinalWeekday(s):d(g.month)&&(g.date=g.num)),g.midday&&handleMidday(g.midday),d(g.day)&&(g.day,f(a),y(g.unit)&&(g.unit=A,g.num=g.day,delete g.day)),d(g.unit)&&handleRelativeUnit(g.unit),g.edge&&handleEdge(g.edge,g),g.yearSign&&(g.year*=g.yearSign);break}var s,u;return g?U?p(a,g,!1,1):(o(a)&&f(a),p(a,g,!0,0,R(B,"prefer"),W)):(a=new Date(t),R(B,"fromUTC")&&a.setTime(a.getTime()+c(a)*i)),function fireCallbacks(){l(z,function(t){t.call()})}(),a}(e):F(e)?a=cloneDateByFlag(e,N(B,"clone")||s):O(e)?(g=v(e),p(a,g,!0)):(T(e)||null===e)&&a.setTime(e),o(a,!!R(B,"setUTC")),{set:g,date:a}}},function(t,e,n){"use strict";var i=n(33),r=n(11),s=n(45),a=r.YEAR_INDEX;t.exports=function iterateOverDateUnits(t,e,n){n=n||0,s(e)&&(e=a);for(var r=e;r>=n&&!1!==t(i[r],r);r--);}},function(t,e,n){"use strict";t.exports=function isObjectType(t,e){return!!t&&"object"===(e||typeof t)}},function(t,e,n){"use strict";t.exports={ISO_FIRST_DAY_OF_WEEK:1,ISO_FIRST_DAY_OF_WEEK_YEAR:4}},function(t,e,n){"use strict";var i=n(16).forEachProperty;t.exports=function simpleMerge(t,e){return i(e,function(e,n){t[n]=e}),t}},function(t,e,n){"use strict";var i=n(436),r=n(72),s=n(57);t.exports=function getEnglishVariant(t){return r(s(i),t)}},function(t,e){e.remove=function removeDiacritics(t){return t.replace(/[^\u0000-\u007e]/g,function(t){return i[t]||t})};for(var n=[{base:" ",chars:" "},{base:"0",chars:"߀"},{base:"A",chars:"ⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ"},{base:"AA",chars:"Ꜳ"},{base:"AE",chars:"ÆǼǢ"},{base:"AO",chars:"Ꜵ"},{base:"AU",chars:"Ꜷ"},{base:"AV",chars:"ꜸꜺ"},{base:"AY",chars:"Ꜽ"},{base:"B",chars:"ⒷBḂḄḆɃƁ"},{base:"C",chars:"ⒸCꜾḈĆCĈĊČÇƇȻ"},{base:"D",chars:"ⒹDḊĎḌḐḒḎĐƊƉᴅꝹ"},{base:"Dh",chars:"Ð"},{base:"DZ",chars:"DZDŽ"},{base:"Dz",chars:"DzDž"},{base:"E",chars:"ɛⒺEÈÉÊỀẾỄỂẼĒḔḖĔĖËẺĚȄȆẸỆȨḜĘḘḚƐƎᴇ"},{base:"F",chars:"ꝼⒻFḞƑꝻ"},{base:"G",chars:"ⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾɢ"},{base:"H",chars:"ⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ"},{base:"I",chars:"ⒾIÌÍÎĨĪĬİÏḮỈǏȈȊỊĮḬƗ"},{base:"J",chars:"ⒿJĴɈȷ"},{base:"K",chars:"ⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ"},{base:"L",chars:"ⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ"},{base:"LJ",chars:"LJ"},{base:"Lj",chars:"Lj"},{base:"M",chars:"ⓂMḾṀṂⱮƜϻ"},{base:"N",chars:"ꞤȠⓃNǸŃÑṄŇṆŅṊṈƝꞐᴎ"},{base:"NJ",chars:"NJ"},{base:"Nj",chars:"Nj"},{base:"O",chars:"ⓄOÒÓÔỒỐỖỔÕṌȬṎŌṐṒŎȮȰÖȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬØǾƆƟꝊꝌ"},{base:"OE",chars:"Œ"},{base:"OI",chars:"Ƣ"},{base:"OO",chars:"Ꝏ"},{base:"OU",chars:"Ȣ"},{base:"P",chars:"ⓅPṔṖƤⱣꝐꝒꝔ"},{base:"Q",chars:"ⓆQꝖꝘɊ"},{base:"R",chars:"ⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ"},{base:"S",chars:"ⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ"},{base:"T",chars:"ⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ"},{base:"Th",chars:"Þ"},{base:"TZ",chars:"Ꜩ"},{base:"U",chars:"ⓊUÙÚÛŨṸŪṺŬÜǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ"},{base:"V",chars:"ⓋVṼṾƲꝞɅ"},{base:"VY",chars:"Ꝡ"},{base:"W",chars:"ⓌWẀẂŴẆẄẈⱲ"},{base:"X",chars:"ⓍXẊẌ"},{base:"Y",chars:"ⓎYỲÝŶỸȲẎŸỶỴƳɎỾ"},{base:"Z",chars:"ⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ"},{base:"a",chars:"ⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑ"},{base:"aa",chars:"ꜳ"},{base:"ae",chars:"æǽǣ"},{base:"ao",chars:"ꜵ"},{base:"au",chars:"ꜷ"},{base:"av",chars:"ꜹꜻ"},{base:"ay",chars:"ꜽ"},{base:"b",chars:"ⓑbḃḅḇƀƃɓƂ"},{base:"c",chars:"cⓒćĉċčçḉƈȼꜿↄ"},{base:"d",chars:"ⓓdḋďḍḑḓḏđƌɖɗƋᏧԁꞪ"},{base:"dh",chars:"ð"},{base:"dz",chars:"dzdž"},{base:"e",chars:"ⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇǝ"},{base:"f",chars:"ⓕfḟƒ"},{base:"ff",chars:"ff"},{base:"fi",chars:"fi"},{base:"fl",chars:"fl"},{base:"ffi",chars:"ffi"},{base:"ffl",chars:"ffl"},{base:"g",chars:"ⓖgǵĝḡğġǧģǥɠꞡꝿᵹ"},{base:"h",chars:"ⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ"},{base:"hv",chars:"ƕ"},{base:"i",chars:"ⓘiìíîĩīĭïḯỉǐȉȋịįḭɨı"},{base:"j",chars:"ⓙjĵǰɉ"},{base:"k",chars:"ⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ"},{base:"l",chars:"ⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇɭ"},{base:"lj",chars:"lj"},{base:"m",chars:"ⓜmḿṁṃɱɯ"},{base:"n",chars:"ⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥлԉ"},{base:"nj",chars:"nj"},{base:"o",chars:"ⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿꝋꝍɵɔᴑ"},{base:"oe",chars:"œ"},{base:"oi",chars:"ƣ"},{base:"oo",chars:"ꝏ"},{base:"ou",chars:"ȣ"},{base:"p",chars:"ⓟpṕṗƥᵽꝑꝓꝕρ"},{base:"q",chars:"ⓠqɋꝗꝙ"},{base:"r",chars:"ⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ"},{base:"s",chars:"ⓢsśṥŝṡšṧṣṩșşȿꞩꞅẛʂ"},{base:"ss",chars:"ß"},{base:"t",chars:"ⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ"},{base:"th",chars:"þ"},{base:"tz",chars:"ꜩ"},{base:"u",chars:"ⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ"},{base:"v",chars:"ⓥvṽṿʋꝟʌ"},{base:"vy",chars:"ꝡ"},{base:"w",chars:"ⓦwẁẃŵẇẅẘẉⱳ"},{base:"x",chars:"ⓧxẋẍ"},{base:"y",chars:"ⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ"},{base:"z",chars:"ⓩzźẑżžẓẕƶȥɀⱬꝣ"}],i={},r=0;r1&&void 0!==arguments[1]&&arguments[1],i=this.tf;t=Number(t),this.emitter.emit("before-populating-filter",i,t),this.opts=[],this.optsTxt=[];var o=this.containers[t],u=Object(r.createElm)("ul",["id",i.fltIds[t]],["colIndex",t]);u.className=this.filterCssClass;var l,c=i.caseSensitive;if(this.isCustom=i.isCustomOptions(t),this.isCustom){var f=i.getCustomOptions(t);this.opts=f[0],this.optsTxt=f[1]}var d=i.getActiveFilterId();n&&d&&(l=i.getColumnIndexFromFilterId(d));var h=[];n&&i.disableExcludedOptions&&(this.excludedOpts=[]),o.innerHTML="",i.eachRow()(function(r){var o=i.getCellValue(r.cells[t]),u=Object(a.matchCase)(o,c);Object(s.has)(e.opts,u,c)||e.opts.push(o);var l=h[t];n&&i.disableExcludedOptions&&(l||(l=i.getVisibleColumnValues(t)),Object(s.has)(l,u,c)||Object(s.has)(e.excludedOpts,u,c)||e.excludedOpts.push(o))},function(t,r){return-1!==i.excludeRows.indexOf(r)||(!(t.cells.length===i.nbCells&&!e.isCustom)||(!(!n||e.isValidLinkedValue(r,l))||void 0))}),this.opts=this.sortOptions(t,this.opts),this.excludedOpts&&(this.excludedOpts=this.sortOptions(t,this.excludedOpts)),this.addChecks(t,u),i.loadFltOnDemand&&(o.innerHTML=""),o.appendChild(u),o.setAttribute("filled","1"),this.emitter.emit("after-populating-filter",i,t,o)}},{key:"addChecks",value:function addChecks(t,e){for(var n=this,i=this.tf,u=this.addTChecks(t,e),c=0;c0&&(i.checked=!1,Object(r.removeClass)(n,e.selectedItemCssClass))}),u.setAttribute("value",""),u.setAttribute("indexes","")}else{var h=d+s+n.separator,p=Object(a.trim)(f+" "+i+" "+n.orOperator);u.setAttribute("value",p),u.setAttribute("indexes",h);var m=Object(r.tag)(l[0],"input")[0];m&&(m.checked=!1)}Object(r.removeClass)(l[0],this.selectedItemCssClass),Object(r.addClass)(c,this.selectedItemCssClass)}else{var y=new RegExp(Object(a.rgxEsc)(i+" "+n.orOperator)),g=f.replace(y,""),b=new RegExp(Object(a.rgxEsc)(s+n.separator)),v=d.replace(b,"");u.setAttribute("value",Object(a.trim)(g)),u.setAttribute("indexes",v),Object(r.removeClass)(c,this.selectedItemCssClass)}}}},{key:"selectOptions",value:function selectOptions(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.tf,o=i.getFilterElement(t);if(o&&0!==n.length){var u=Object(r.tag)(o,"li");o.setAttribute("value",""),o.setAttribute("indexes",""),[].forEach.call(u,function(t){var o=Object(r.tag)(t,"input")[0],u=Object(a.matchCase)(o.value,i.caseSensitive);""!==u&&Object(s.has)(n,u,i.caseSensitive)?o.checked=!0:-1!==n.indexOf(i.nmOperator)&&u===Object(a.matchCase)(i.nonEmptyText,i.caseSensitive)?o.checked=!0:-1!==n.indexOf(i.emOperator)&&u===Object(a.matchCase)(i.emptyText,i.caseSensitive)?o.checked=!0:o.checked=!1,e.setItemOption(o)})}}},{key:"getValues",value:function getValues(t){var e=this.tf,n=e.getFilterElement(t).getAttribute("value"),i=Object(u.isEmpty)(n)?"":n;return i=(i=i.substr(0,i.length-3)).split(" "+e.orOperator+" ")}},{key:"destroy",value:function destroy(){var t=this;this.emitter.off(["build-checklist-filter"],function(e,n,i){return t.build(n,i)}),this.emitter.off(["select-checklist-options"],function(e,n,i){return t.selectOptions(n,i)}),this.emitter.off(["rows-changed"],function(){return t.refreshAll()}),this.initialized=!1}}]),CheckList}()},function(t,e,n){"use strict";n.r(e),n.d(e,"Paging",function(){return c});var i=n(10),r=n(2),s=n(3),a=n(5),o=n(4),u=n(1),l=n(19);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n"),e.btnPrevPageText=Object(u.defaultsStr)(n.btn_prev_page_text,"<"),e.btnLastPageText=Object(u.defaultsStr)(n.btn_last_page_text,">|"),e.btnFirstPageText=Object(u.defaultsStr)(n.btn_first_page_text,"|<"),e.btnNextPageHtml=Object(u.defaultsStr)(n.btn_next_page_html,t.enableIcons?'':null),e.btnPrevPageHtml=Object(u.defaultsStr)(n.btn_prev_page_html,t.enableIcons?'':null),e.btnFirstPageHtml=Object(u.defaultsStr)(n.btn_first_page_html,t.enableIcons?'':null),e.btnLastPageHtml=Object(u.defaultsStr)(n.btn_last_page_html,t.enableIcons?'':null),e.pageText=Object(u.defaultsStr)(n.page_text," Page "),e.ofText=Object(u.defaultsStr)(n.of_text," of "),e.nbPgSpanCssClass=Object(u.defaultsStr)(n.nb_pages_css_class,"nbpg"),e.hasBtns=Object(u.defaultsBool)(n.btns,!0),e.pageSelectorType=Object(u.defaultsStr)(n.page_selector_type,o.SELECT),e.toolbarPosition=Object(u.defaultsStr)(n.toolbar_position,l.CENTER),e.onBeforeChangePage=Object(u.defaultsFn)(n.on_before_change_page,s.EMPTY_FN),e.onAfterChangePage=Object(u.defaultsFn)(n.on_after_change_page,s.EMPTY_FN),e.slcResultsTxt=null,e.btnNextCont=null,e.btnPrevCont=null,e.btnLastCont=null,e.btnFirstCont=null,e.pgCont=null,e.pgBefore=null,e.pgAfter=null;var i=t.refRow,r=t.getRowsNb(!0);e.nbPages=Math.ceil((r-i)/e.pageLength);var c=_assertThisInitialized(_assertThisInitialized(e));return e.evt={slcIndex:function slcIndex(){return c.pageSelectorType===o.SELECT?c.pageSlc.options.selectedIndex:parseInt(c.pageSlc.value,10)-1},nbOpts:function nbOpts(){return c.pageSelectorType===o.SELECT?parseInt(c.pageSlc.options.length,10)-1:c.nbPages-1},next:function next(){var t=c.evt.slcIndex()0?c.evt.slcIndex()-1:c.evt.nbOpts();c.changePage(t)},last:function last(){c.changePage(c.evt.nbOpts())},first:function first(){c.changePage(0)},_detectKey:function _detectKey(e){Object(a.isKeyPressed)(e,[o.ENTER_KEY])&&(t.sorted?(t.filter(),c.changePage(c.evt.slcIndex())):c.changePage(),this.blur())},slcPagesChange:null,nextEvt:null,prevEvt:null,lastEvt:null,firstEvt:null},e}return function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_setPrototypeOf(t,e)}(Paging,i["Feature"]),function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}(Paging,[{key:"init",value:function init(){var t,e=this,n=this.tf,i=this.evt;if(!this.initialized){this.emitter.emit("initializing-feature",this,!Object(s.isNull)(this.tgtId)),this.hasResultsPerPage&&(this.resultsPerPage.length<2?this.hasResultsPerPage=!1:(this.pageLength=this.resultsPerPage[1][0],this.setResultsPerPage())),i.slcPagesChange=function(t){var n=t.target;e.changePage(n.selectedIndex)},this.pageSelectorType===o.SELECT&&((t=Object(r.createElm)(o.SELECT)).className=this.pgSlcCssClass,Object(a.addEvt)(t,"change",i.slcPagesChange)),this.pageSelectorType===o.INPUT&&((t=Object(r.createElm)(o.INPUT,["value",this.currentPageNb])).className=this.pgInpCssClass,Object(a.addEvt)(t,"keypress",i._detectKey));var u=Object(r.createElm)("span"),l=Object(r.createElm)("span"),c=Object(r.createElm)("span"),f=Object(r.createElm)("span");if(this.hasBtns){if(this.btnNextPageHtml)u.innerHTML=this.btnNextPageHtml,Object(a.addEvt)(u,"click",i.next);else{var d=Object(r.createElm)(o.INPUT,["type","button"],["value",this.btnNextPageText],["title","Next"]);d.className=this.btnCssClass,Object(a.addEvt)(d,"click",i.next),u.appendChild(d)}if(this.btnPrevPageHtml)l.innerHTML=this.btnPrevPageHtml,Object(a.addEvt)(l,"click",i.prev);else{var h=Object(r.createElm)(o.INPUT,["type","button"],["value",this.btnPrevPageText],["title","Previous"]);h.className=this.btnCssClass,Object(a.addEvt)(h,"click",i.prev),l.appendChild(h)}if(this.btnLastPageHtml)c.innerHTML=this.btnLastPageHtml,Object(a.addEvt)(c,"click",i.last);else{var p=Object(r.createElm)(o.INPUT,["type","button"],["value",this.btnLastPageText],["title","Last"]);p.className=this.btnCssClass,Object(a.addEvt)(p,"click",i.last),c.appendChild(p)}if(this.btnFirstPageHtml)f.innerHTML=this.btnFirstPageHtml,Object(a.addEvt)(f,"click",i.first);else{var m=Object(r.createElm)(o.INPUT,["type","button"],["value",this.btnFirstPageText],["title","First"]);m.className=this.btnCssClass,Object(a.addEvt)(m,"click",i.first),f.appendChild(m)}}var y=this.tgtId?Object(r.elm)(this.tgtId):n.feature("toolbar").container(this.toolbarPosition);y.appendChild(f),y.appendChild(l);var g=Object(r.createElm)("span");g.appendChild(Object(r.createText)(this.pageText)),g.className=this.nbPgSpanCssClass,y.appendChild(g),y.appendChild(t);var b=Object(r.createElm)("span");b.appendChild(Object(r.createText)(this.ofText)),b.className=this.nbPgSpanCssClass,y.appendChild(b);var v=Object(r.createElm)("span");v.className=this.nbPgSpanCssClass,v.appendChild(Object(r.createText)(" "+this.nbPages+" ")),y.appendChild(v),y.appendChild(u),y.appendChild(c),this.btnNextCont=u,this.btnPrevCont=l,this.btnLastCont=c,this.btnFirstCont=f,this.pgCont=v,this.pgBefore=g,this.pgAfter=b,this.pageSlc=t,this.setPagingInfo(),n.fltGrid||(n.validateAllRows(),this.setPagingInfo(n.validRowsIndex)),this.emitter.on(["after-filtering"],Object(a.bound)(this.resetPagingInfo,this)),this.emitter.on(["change-page"],Object(a.bound)(this.changePageHandler,this)),this.emitter.on(["change-page-results"],Object(a.bound)(this.changePageResultsHandler,this)),this.initialized=!0,this.emitter.emit("feature-initialized",this)}}},{key:"reset",value:function reset(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.enable(),this.init(),t&&this.tf.filter()}},{key:"resetPagingInfo",value:function resetPagingInfo(){this.startPagingRow=0,this.currentPageNb=1,this.setPagingInfo(this.tf.validRowsIndex)}},{key:"setPagingInfo",value:function setPagingInfo(t){var e=this.tf,n=this.tgtId?Object(r.elm)(this.tgtId):e.feature("toolbar").container(this.toolbarPosition);if(e.validRowsIndex=t||e.getValidRows(!0),this.nbPages=Math.ceil(e.validRowsIndex.length/this.pageLength),this.pgCont.innerHTML=this.nbPages,this.pageSelectorType===o.SELECT&&(this.pageSlc.innerHTML=""),this.nbPages>0)if(n.style.visibility="visible",this.pageSelectorType===o.SELECT)for(var i=0;i=i&&a=0&&t<=this.nbPages-1&&(this.onBeforeChangePage(this,t+1),this.currentPageNb=parseInt(t,10)+1,this.pageSelectorType===o.SELECT?this.pageSlc.options[t].selected=!0:this.pageSlc.value=this.currentPageNb,this.startPagingRow=this.pageSelectorType===o.SELECT?this.pageSlc.value:t*this.pageLength,this.groupByPage(),this.onAfterChangePage(this,t+1)),this.emitter.emit("after-page-change",e,t+1))}},{key:"changeResultsPerPage",value:function changeResultsPerPage(t){this.isEnabled()&&!isNaN(t)&&(this.pageLengthSlc.value=t,this.onChangeResultsPerPage())}},{key:"onChangeResultsPerPage",value:function onChangeResultsPerPage(){var t=this.tf;if(this.isEnabled()&&0!==t.getValidRowsNb()){var e=this.pageLengthSlc,n=this.pageSelectorType,i=this.pageSlc,r=this.emitter;r.emit("before-page-length-change",t);var s=e.selectedIndex,a=n===o.SELECT?i.selectedIndex:parseInt(i.value-1,10);if(this.pageLength=parseInt(e.options[s].value,10),this.startPagingRow=this.pageLength*a,!isNaN(this.pageLength)&&(this.startPagingRow>=t.nbFilterableRows&&(this.startPagingRow=t.nbFilterableRows-this.pageLength),this.setPagingInfo(),n===o.SELECT)){var u=i.options.length-1<=a?i.options.length-1:a;i.options[u].selected=!0}r.emit("after-page-length-change",t,this.pageLength)}}},{key:"resetPage",value:function resetPage(){var t=this.tf;if(this.isEnabled()){this.emitter.emit("before-reset-page",t);var e=t.feature("store").getPageNb();""!==e&&this.changePage(e-1),this.emitter.emit("after-reset-page",t,e)}}},{key:"resetPageLength",value:function resetPageLength(){var t=this.tf;if(this.isEnabled()){this.emitter.emit("before-reset-page-length",t);var e=t.feature("store").getPageLength();""!==e&&(this.pageLengthSlc.options[e].selected=!0,this.changeResultsPerPage()),this.emitter.emit("after-reset-page-length",t,e)}}},{key:"changePageHandler",value:function changePageHandler(t,e){this.setPage(e)}},{key:"changePageResultsHandler",value:function changePageResultsHandler(t,e){this.changeResultsPerPage(e)}},{key:"destroy",value:function destroy(){if(this.initialized){var t=this.evt;this.pageSlc&&(this.pageSelectorType===o.SELECT?Object(a.removeEvt)(this.pageSlc,"change",t.slcPagesChange):this.pageSelectorType===o.INPUT&&Object(a.removeEvt)(this.pageSlc,"keypress",t._detectKey),Object(r.removeElm)(this.pageSlc)),this.btnNextCont&&(Object(a.removeEvt)(this.btnNextCont,"click",t.next),Object(r.removeElm)(this.btnNextCont),this.btnNextCont=null),this.btnPrevCont&&(Object(a.removeEvt)(this.btnPrevCont,"click",t.prev),Object(r.removeElm)(this.btnPrevCont),this.btnPrevCont=null),this.btnLastCont&&(Object(a.removeEvt)(this.btnLastCont,"click",t.last),Object(r.removeElm)(this.btnLastCont),this.btnLastCont=null),this.btnFirstCont&&(Object(a.removeEvt)(this.btnFirstCont,"click",t.first),Object(r.removeElm)(this.btnFirstCont),this.btnFirstCont=null),this.pgBefore&&(Object(r.removeElm)(this.pgBefore),this.pgBefore=null),this.pgAfter&&(Object(r.removeElm)(this.pgAfter),this.pgAfter=null),this.pgCont&&(Object(r.removeElm)(this.pgCont),this.pgCont=null),this.hasResultsPerPage&&this.removeResultsPerPage(),this.emitter.off(["after-filtering"],Object(a.bound)(this.resetPagingInfo,this)),this.emitter.off(["change-page"],Object(a.bound)(this.changePageHandler,this)),this.emitter.off(["change-page-results"],Object(a.bound)(this.changePageResultsHandler,this)),this.pageSlc=null,this.nbPages=0,this.initialized=!1}}}]),Paging}()},function(t,e,n){"use strict";n.r(e),n.d(e,"NoResults",function(){return u});var i=n(10),r=n(2),s=n(3),a=n(4),o=n(1);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n0?this.hide():this.show()}},{key:"show",value:function show(){this.initialized&&this.isEnabled()&&(this.onBeforeShow(this.tf,this),this.setWidth(),this.cont.style.display="block",this.onAfterShow(this.tf,this))}},{key:"hide",value:function hide(){this.initialized&&this.isEnabled()&&(this.onBeforeHide(this.tf,this),this.cont.style.display=a.NONE,this.onAfterHide(this.tf,this))}},{key:"setWidth",value:function setWidth(){if(this.initialized&&!this.isExternal&&this.isEnabled()){var t=this.tf;if(t.gridLayout){var e=t.feature("gridLayout");this.cont.style.width=e.headTbl.clientWidth+"px"}else this.cont.style.width=(t.dom().tHead?t.dom().tHead.clientWidth:t.dom().tBodies[0].clientWidth)+"px"}}},{key:"destroy",value:function destroy(){var t=this;this.initialized&&(Object(r.removeElm)(this.cont),this.cont=null,this.emitter.off(["after-filtering"],function(){return t.toggle()}),this.initialized=!1)}}]),NoResults}()},function(t,e,n){"use strict";n.r(e),n.d(e,"AlternateRows",function(){return o});var i=n(10),r=n(2),s=n(1),a=n(5);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n'),e.toolbarPosition=Object(a.defaultsStr)(n.toolbar_position,u.RIGHT),e.container=null,e.element=null,e}return function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_setPrototypeOf(t,e)}(ClearButton,i["Feature"]),function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}(ClearButton,[{key:"onClick",value:function onClick(){this.isEnabled()&&this.tf.clearFilters()}},{key:"init",value:function init(){var t=this,e=this.tf;if(!this.initialized){this.emitter.emit("initializing-feature",this,!Object(o.isNull)(this.targetId));var n=Object(r.createElm)("span");if((this.targetId?Object(r.elm)(this.targetId):e.feature("toolbar").container(this.toolbarPosition)).appendChild(n),this.html){n.innerHTML=this.html;var i=n.firstChild;Object(s.addEvt)(i,"click",function(){return t.onClick()})}else{var a=Object(r.createElm)("a",["href","javascript:void(0);"]);a.className=this.cssClass,a.appendChild(Object(r.createText)(this.text)),n.appendChild(a),Object(s.addEvt)(a,"click",function(){return t.onClick()})}this.element=n.firstChild,this.container=n,this.initialized=!0,this.emitter.emit("feature-initialized",this)}}},{key:"destroy",value:function destroy(){this.initialized&&(Object(r.removeElm)(this.element),Object(r.removeElm)(this.container),this.element=null,this.container=null,this.initialized=!1)}}]),ClearButton}()},function(t,e,n){"use strict";n.r(e),n.d(e,"StatusBar",function(){return c});var i=n(10),r=n(8),s=n(2),a=n(3),o=n(1),u=n(19);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"";if(this.isEnabled()){this.onBeforeShowMsg(this.tf,e);var n=""===e?this.delay:1;r.root.setTimeout(function(){t.initialized&&(t.msgContainer.innerHTML=e,t.onAfterShowMsg(t.tf,e))},n)}}},{key:"destroy",value:function destroy(){var t=this;if(this.initialized){var e=this.emitter;this.container.innerHTML="",this.targetId||Object(s.removeElm)(this.container),this.labelContainer=null,this.msgContainer=null,this.container=null,e.off(["before-filtering"],function(){return t.message(t.msgFilter)}),e.off(["before-populating-filter"],function(){return t.message(t.msgPopulate)}),e.off(["before-page-change"],function(){return t.message(t.msgChangePage)}),e.off(["before-clearing-filters"],function(){return t.message(t.msgClear)}),e.off(["before-page-length-change"],function(){return t.message(t.msgChangeResults)}),e.off(["before-reset-page"],function(){return t.message(t.msgResetPage)}),e.off(["before-reset-page-length"],function(){return t.message(t.msgResetPageLength)}),e.off(["before-loading-extensions"],function(){return t.message(t.msgLoadExtensions)}),e.off(["before-loading-themes"],function(){return t.message(t.msgLoadThemes)}),e.off(l,function(){return t.message("")}),this.initialized=!1}}}]),StatusBar}()},function(t,e,n){"use strict";n.r(e),n.d(e,"RowsCounter",function(){return u});var i=n(10),r=n(2),s=n(3),a=n(1),o=n(19);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n0?1:0),a=s+i.pageLength-1<=r?s+i.pageLength-1:r;e=s+this.fromToTextSeparator+a+this.overText+r}}else e=t&&""!==t?t:n.getFilterableRowsNb()-n.nbHiddenRows;this.label.innerHTML=e,this.onAfterRefreshCounter(n,this.label,e)}}},{key:"destroy",value:function destroy(){var t=this;this.initialized&&(!this.targetId&&this.container?Object(r.removeElm)(this.container):Object(r.elm)(this.targetId).innerHTML="",this.label=null,this.container=null,this.emitter.off(["after-filtering","grouped-by-page"],function(){return t.refresh(tf.getValidRowsNb())}),this.emitter.off(["rows-changed"],function(){return t.refresh()}),this.initialized=!1)}}]),RowsCounter}()},function(t,e,n){"use strict";n.r(e),n.d(e,"MarkActiveColumns",function(){return o});var i=n(10),r=n(2),s=n(3),a=n(1);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:s.EMPTY_FN,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.tf.dom();[].forEach.call(n.querySelectorAll("tbody td:nth-child(".concat(t+1,")")),e)}},{key:"destroy",value:function destroy(){var t=this;this.initialized&&(this.clearActiveColumns(),this.emitter.off(["before-filtering"],function(){return t.clearActiveColumns()}),this.emitter.off(["cell-processed"],function(e,n){return t.markActiveColumn(n)}),this.initialized=!1)}}]),MarkActiveColumns}()},function(t,e,n){"use strict";n.r(e),n.d(e,"PopupFilter",function(){return c});var i=n(10),r=n(3),s=n(2),a=n(5),o=n(4),u=n(8),l=n(1);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n'),e.placeholderCssClass=Object(l.defaultsStr)(n.placeholder_css_class,"popUpPlaceholder"),e.containerCssClass=Object(l.defaultsStr)(n.div_css_class,"popUpFilter"),e.adjustToContainer=Object(l.defaultsBool)(n.adjust_to_container,!0),e.onBeforeOpen=Object(l.defaultsFn)(n.on_before_popup_filter_open,r.EMPTY_FN),e.onAfterOpen=Object(l.defaultsFn)(n.on_after_popup_filter_open,r.EMPTY_FN),e.onBeforeClose=Object(l.defaultsFn)(n.on_before_popup_filter_close,r.EMPTY_FN),e.onAfterClose=Object(l.defaultsFn)(n.on_after_popup_filter_close,r.EMPTY_FN),e.fltSpans=[],e.fltIcons=[],e.filtersCache=null,e.fltElms=Object(l.defaultsArr)(e.filtersCache,[]),e.prfxDiv="popup_",e.activeFilterIdx=-1,e}return function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_setPrototypeOf(t,e)}(PopupFilter,i["Feature"]),function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}(PopupFilter,[{key:"onClick",value:function onClick(t){var e=Object(a.targetEvt)(t).parentNode,n=parseInt(e.getAttribute("ci"),10);if(this.closeAll(n),this.toggle(n),this.adjustToContainer){var i=this.fltElms[n],r=.95*this.tf.getHeaderElement(n).clientWidth;i.style.width=parseInt(r,10)+"px"}Object(a.cancelEvt)(t),Object(a.stopEvt)(t)}},{key:"onMouseup",value:function onMouseup(t){if(-1!==this.activeFilterIdx){var e=Object(a.targetEvt)(t),n=this.fltElms[this.activeFilterIdx];if(this.fltIcons[this.activeFilterIdx]!==e){for(;e&&e!==n;)e=e.parentNode;e!==n&&this.close(this.activeFilterIdx)}}}},{key:"init",value:function init(){var t=this;if(!this.initialized){var e=this.tf;e.externalFltIds=[""],e.filtersRowIndex=0,e.headersRow<=1&&isNaN(e.config().headers_row_index)&&(e.headersRow=0),e.gridLayout&&(e.headersRow--,this.buildIcons()),this.emitter.on(["before-filtering"],function(){return t.setIconsState()}),this.emitter.on(["after-filtering"],function(){return t.closeAll()}),this.emitter.on(["cell-processed"],function(e,n){return t.changeState(n,!0)}),this.emitter.on(["filters-row-inserted"],function(){return t.buildIcons()}),this.emitter.on(["before-filter-init"],function(e,n){return t.build(n)}),this.initialized=!0}}},{key:"reset",value:function reset(){this.enable(),this.init(),this.buildIcons(),this.buildAll()}},{key:"buildIcons",value:function buildIcons(){var t=this,e=this.tf;e.headersRow++,e.eachCol(function(n){var i=Object(s.createElm)("span",["ci",n]);i.innerHTML=t.iconHtml,e.getHeaderElement(n).appendChild(i),Object(a.addEvt)(i,"click",function(e){return t.onClick(e)}),t.fltSpans[n]=i,t.fltIcons[n]=i.firstChild},function(t){return e.getFilterType(t)===o.NONE})}},{key:"buildAll",value:function buildAll(){for(var t=0;t0,e.tblMainCont=null,e.tblCont=null,e.headTblCont=null,e.headTbl=null,t.fltGrid=e.filters,e}return function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_setPrototypeOf(t,e)}(GridLayout,i["Feature"]),function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}(GridLayout,[{key:"init",value:function init(){var t=this,e=this.tf,n=e.dom();if(!this.initialized){this.setOverrides(),this.setDefaultColWidths(),this.tblMainCont=this.createContainer("div",this.mainContCssClass),this.width&&(this.tblMainCont.style.width=this.width),n.parentNode.insertBefore(this.tblMainCont,n),this.tblCont=this.createContainer("div",this.contCssClass),this.setConfigWidth(this.tblCont),this.height&&(this.tblCont.style.height=this.height),n.parentNode.insertBefore(this.tblCont,n);var i=Object(r.removeElm)(n);if(this.tblCont.appendChild(i),""===n.style.width){var u=this.initialTableWidth();n.style.width=(Object(a.contains)("%",u)?n.clientWidth:u)+"px"}var l=Object(r.removeElm)(this.tblCont);this.tblMainCont.appendChild(l),this.headTblCont=this.createContainer("div",this.headContCssClass),this.headTbl=Object(r.createElm)("table");var c=Object(r.createElm)("tHead"),f=n.rows[this.headRowIndex],d=this.getSortTriggerIds(f),h=this.createFiltersRow();this.setHeadersRow(c),this.headTbl.appendChild(c),0===e.filtersRowIndex?c.insertBefore(h,f):c.appendChild(h),this.headTblCont.appendChild(this.headTbl),this.tblCont.parentNode.insertBefore(this.headTblCont,this.tblCont);var p=Object(r.tag)(n,"thead");p.length>0&&n.removeChild(p[0]),this.headTbl.style.tableLayout="fixed",n.style.tableLayout="fixed",e.setColWidths(this.headTbl),this.headTbl.style.width=n.style.width,Object(s.addEvt)(this.tblCont,"scroll",function(e){var n=Object(s.targetEvt)(e).scrollLeft;t.headTblCont.scrollLeft=n});var m=e.extension("sort");m&&(m.asyncSort=!0,m.triggerIds=d),this.setColumnElements(),e.popupFilters&&(h.style.display=o.NONE),this.initialized=!0}}},{key:"setOverrides",value:function setOverrides(){var t=this.tf;t.refRow=0,t.headersRow=0,t.filtersRowIndex=1}},{key:"setDefaultColWidths",value:function setDefaultColWidths(){var t=this,e=this.tf;e.colWidths.length>0||(e.eachCol(function(n){var i,r=e.dom().rows[e.getHeadersRowIndex()].cells[n];i=""!==r.width?r.width:""!==r.style.width?parseInt(r.style.width,10):t.defaultColWidth,e.colWidths[n]=i}),e.setColWidths())}},{key:"initialTableWidth",value:function initialTableWidth(){var t,e=this.tf.dom();return t=""!==e.width?e.width:""!==e.style.width?e.style.width:e.clientWidth,parseInt(t,10)}},{key:"createContainer",value:function createContainer(t,e){var n=Object(r.createElm)(t);return n.className=e,n}},{key:"createFiltersRow",value:function createFiltersRow(){var t=this,e=this.tf,n=Object(r.createElm)("tr");return this.filters&&e.fltGrid&&(e.externalFltIds=[],e.eachCol(function(i){var s="".concat(e.prfxFlt+i+t.prfxGridFltTd+e.id),a=Object(r.createElm)(e.fltCellTag,["id",s]);n.appendChild(a),e.externalFltIds[i]=s})),n}},{key:"setColumnElements",value:function setColumnElements(){var t=this.tf,e=Object(r.tag)(t.dom(),"col");this.tblHasColTag=e.length>0;for(var n=t.getCellsNb()-1;n>=0;n--){var i=void 0;this.tblHasColTag?i=e[n]:(i=Object(r.createElm)("col"),t.dom().insertBefore(i,t.dom().firstChild)),i.style.width=t.colWidths[n],this.colElms[n]=i}this.tblHasColTag=!0}},{key:"setHeadersRow",value:function setHeadersRow(t){if(this.noHeaders)t.appendChild(Object(r.createElm)("tr"));else for(var e=0;e7)},c=function(){function Hash(t){!function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,Hash),this.state=t,this.lastHash=null,this.emitter=t.emitter,this.boundSync=null}return function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}(Hash,[{key:"init",value:function init(){var t=this;l()&&(this.lastHash=a.hash,this.boundSync=this.sync.bind(this),this.emitter.on(["state-changed"],function(e,n){return t.update(n)}),this.emitter.on(["initialized"],this.boundSync),Object(i.addEvt)(r.root,"hashchange",this.boundSync))}},{key:"update",value:function update(t){var e="#".concat(u(s.stringify(t)));this.lastHash!==e&&(a.hash=e,this.lastHash=e)}},{key:"parse",value:function parse(t){return-1===t.indexOf("#")?null:(t=t.substr(1),s.parse(o(t)))}},{key:"sync",value:function sync(){var t=this.parse(a.hash);t&&this.state.overrideAndSync(t)}},{key:"destroy",value:function destroy(){var t=this;this.emitter.off(["state-changed"],function(e,n){return t.update(n)}),this.emitter.off(["initialized"],this.boundSync),Object(i.removeEvt)(r.root,"hashchange",this.boundSync),this.state=null,this.lastHash=null,this.emitter=null}}]),Hash}()},function(t,e,n){"use strict";n.r(e),n.d(e,"State",function(){return l});var i=n(10),r=n(88),s=n(87),a=n(9),o=n(3),u=n(1);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n<, <=, >, >=, =, *, !, {, }, ||,&&, [empty], [nonempty], rgx:
Learn more
':n.text,e.instrHtml=Object(l.defaultsStr)(n.html,null),e.btnText=Object(l.defaultsStr)(n.btn_text,"?"),e.btnHtml=Object(l.defaultsStr)(n.btn_html,null),e.btnCssClass=Object(l.defaultsStr)(n.btn_css_class,"helpBtn"),e.contCssClass=Object(l.defaultsStr)(n.container_css_class,"helpCont"),e.btn=null,e.cont=null,e.boundMouseup=null,e.defaultHtml='

TableFilter v'+t.version+'

'+d+"
©2015-"+t.year+' Max Guglielmi
',e.toolbarPosition=Object(l.defaultsStr)(n.toolbar_position,c.RIGHT),e.emitter.on(["init-help"],function(){return e.init()}),e}return function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_setPrototypeOf(t,e)}(Help,i["Feature"]),function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}(Help,[{key:"onMouseup",value:function onMouseup(t){for(var e=Object(s.targetEvt)(t);e&&e!==this.cont&&e!==this.btn;)e=e.parentNode;e!==this.cont&&e!==this.btn&&this.toggle()}},{key:"init",value:function init(){var t=this;if(!this.initialized){this.emitter.emit("initializing-feature",this,!Object(u.isNull)(this.tgtId));var e=this.tf,n=Object(r.createElm)("span"),i=Object(r.createElm)("div");this.boundMouseup=this.onMouseup.bind(this),(this.tgtId?Object(r.elm)(this.tgtId):e.feature("toolbar").container(this.toolbarPosition)).appendChild(n);var a=this.contTgtId?Object(r.elm)(this.contTgtId):n;if(this.btnHtml){n.innerHTML=this.btnHtml;var o=n.firstChild;Object(s.addEvt)(o,"click",function(){return t.toggle()}),a.appendChild(i)}else{a.appendChild(i);var l=Object(r.createElm)("a",["href","javascript:void(0);"]);l.className=this.btnCssClass,l.appendChild(Object(r.createText)(this.btnText)),n.appendChild(l),Object(s.addEvt)(l,"click",function(){return t.toggle()})}this.instrHtml?(this.contTgtId&&a.appendChild(i),i.innerHTML=this.instrHtml,this.contTgtId||(i.className=this.contCssClass)):(i.innerHTML=this.instrText,i.className=this.contCssClass),i.innerHTML+=this.defaultHtml,Object(s.addEvt)(i,"click",function(){return t.toggle()}),this.cont=i,this.btn=n,this.initialized=!0,this.emitter.emit("feature-initialized",this)}}},{key:"toggle",value:function toggle(){if(this.isEnabled()){Object(s.removeEvt)(o.root,"mouseup",this.boundMouseup);var t=this.cont.style.display;""===t||t===a.NONE?(this.cont.style.display="inline",Object(s.addEvt)(o.root,"mouseup",this.boundMouseup)):this.cont.style.display=a.NONE}}},{key:"destroy",value:function destroy(){this.initialized&&(Object(r.removeElm)(this.btn),this.btn=null,Object(r.removeElm)(this.cont),this.cont=null,this.boundMouseup=null,this.initialized=!1)}}]),Help}()},function(t,e,n){"use strict";n.r(e),n.d(e,"DateType",function(){return u});var i=n(46),r=(n(147),n(10)),s=n(3),a=n(4),o=n(8);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:[];e.forEach(function(n,i){var r=t.getOptions(i,e);if(r.type===a.DATE&&r.hasOwnProperty("format")){var u=t.datetime.getLocale(r.locale||t.locale),l=Object(s.isArray)(r.format)?r.format:[r.format];try{l.forEach(function(t){u.addFormat(t)})}catch(t){o.root.console.error(t)}}})}},{key:"destroy",value:function destroy(){var t=this;this.initialized&&(this.emitter.off(["add-date-type-formats"],function(e,n){return t.addConfigFormats(n)}),this.initialized=!1)}}]),DateType}()},function(t,e,n){"use strict";n.r(e),n.d(e,"Dropdown",function(){return c});var i=n(58),r=n(2),s=n(20),a=n(9),o=n(5),u=n(4),l=n(1);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n1&&void 0!==arguments[1]&&arguments[1],i=this.tf;t=Number(t),this.emitter.emit("before-populating-filter",i,t),this.opts=[],this.optsTxt=[];var r,o=i.getFilterElement(t);if(this.isCustom=i.isCustomOptions(t),this.isCustom){var u=i.getCustomOptions(t);this.opts=u[0],this.optsTxt=u[1]}var l=i.getActiveFilterId();n&&l&&(r=i.getColumnIndexFromFilterId(l));var c=null,f=null;n&&i.disableExcludedOptions&&(c=[],f=[]),i.eachRow()(function(r){var o=i.getCellValue(r.cells[t]),u=Object(a.matchCase)(o,i.caseSensitive);if(Object(s.has)(e.opts,u,i.caseSensitive)||e.opts.push(o),n&&i.disableExcludedOptions){var l=f[t];l||(l=i.getVisibleColumnValues(t)),Object(s.has)(l,u,i.caseSensitive)||Object(s.has)(c,u,i.caseSensitive)||c.push(o)}},function(t,s){return-1!==i.excludeRows.indexOf(s)||(!(t.cells.length===i.nbCells&&!e.isCustom)||(!(!n||e.isValidLinkedValue(s,r))||void 0))}),this.opts=this.sortOptions(t,this.opts),c&&(c=this.sortOptions(t,c)),this.addOptions(t,o,n,c),this.emitter.emit("after-populating-filter",i,t,o)}},{key:"addOptions",value:function addOptions(t,e,n,i){var o=this.tf,l=e.value;e.innerHTML="",e=this.addFirstOption(e);for(var c=0;c1&&void 0!==arguments[1]?arguments[1]:[],n=this.tf;if(0!==e.length){var i=n.getFilterElement(t);[].forEach.call(i.options,function(t){""!==e[0]&&""!==t.value||(t.selected=!1),""!==t.value&&Object(s.has)(e,t.value,!0)&&(t.selected=!0)})}}},{key:"getValues",value:function getValues(t){var e=this.tf.getFilterElement(t),n=[];return e.selectedOptions?[].forEach.call(e.selectedOptions,function(t){return n.push(t.value)}):[].forEach.call(e.options,function(t){t.selected&&n.push(t.value)}),n}},{key:"destroy",value:function destroy(){var t=this;this.emitter.off(["build-select-filter"],function(e,n,i){return t.build(e,n,i)}),this.emitter.off(["select-options"],function(e,n,i){return t.selectOptions(n,i)}),this.emitter.off(["rows-changed"],function(){return t.refreshAll()}),this.initialized=!1}}]),Dropdown}()},function(t,e,n){"use strict";function _defineProperties(t,e){for(var n=0;n0?"future":"past",l.get(d).getRelativeFormat(s,f))}},function(t,e,n){"use strict";var i=n(15),r=n(252),s=n(31),a=n(34),o=n(43),u=n(251),l=n(24),c=n(48),f=n(12),d=n(110),h=f.isString,p=i.English;t.exports=function fullCompareDate(t,e,n){var i;if(c(t)){if(h(e))switch(e=r(e).toLowerCase(),!0){case"future"===e:return t.getTime()>o().getTime();case"past"===e:return t.getTime()0&&l(t)<6;case"weekend"===e:return 0===l(t)||6===l(t);case a(i=p.weekdayMap[e]):return l(t)===i;case a(i=p.monthMap[e]):return s(t)===i}return d(t,e,n)}}},function(t,e,n){"use strict";var i=n(48);t.exports=function assertDateIsValid(t){if(!i(t))throw new TypeError("Date is not valid")}},function(t,e,n){"use strict";var i=n(29),r=n(28),s=n(54),a=n(63),o=n(14).abs;t.exports=function getUTCOffset(t,e){var n,u=i(t)?0:s(t);return n=!0===e?":":"",!u&&e?"Z":a(r(-u/60),2,!0)+n+a(o(u%60),2)}},function(t,e,n){"use strict";var i=n(23);t.exports=function getHours(t){return i(t,"Hours")}},function(t,e,n){"use strict";t.exports={ISO8601:"{yyyy}-{MM}-{dd}T{HH}:{mm}:{ss}.{SSS}{Z}",RFC1123:"{Dow}, {dd} {Mon} {yyyy} {HH}:{mm}:{ss} {ZZ}",RFC1036:"{Weekday}, {dd}-{Mon}-{yy} {HH}:{mm}:{ss} {ZZ}"}},function(t,e,n){"use strict";var i=n(105),r=n(273),s=n(102),a=r.dateFormatMatcher;t.exports=function dateFormat(t,e,n){return s(t),e=i[e]||e||"{long}",a(e,t,n)}},function(t,e,n){"use strict";var i=n(12),r=n(57),s=n(70),a=n(292),o=n(291),u=i.isNumber,l=i.isString;t.exports=function collectDateArguments(t,e){var n=t[0],i=t[1];return e&&l(n)?n=a(n):u(n)&&u(i)?(n=o(t),i=null):s(n)&&(n=r(n)),[n,i]}},function(t,e,n){"use strict";var i=n(53),r=n(107);t.exports=function advanceDateWithArgs(t,e,n){return e=r(e,!0),i(t,e[0],e[1],n)}},function(t,e,n){"use strict";var i=n(68);t.exports=function createDateWithContext(t,e,n,r){return i(t,e,n,r).date}},function(t,e,n){"use strict";var i=n(117),r=n(33),s=n(11),a=n(29),o=n(54),u=n(37),l=n(34),c=n(42),f=n(48),d=n(51),h=n(68),p=n(50),m=s.MONTH_INDEX;t.exports=function compareDate(t,e,n,s,y){var g,b,v,O,_,C,w,x=0,k=0;return a(t)&&((y=y||{}).fromUTC=!0,y.setUTC=!0),C=h(null,e,y,!0),n>0&&(x=k=n,v=!0),!!f(C.date)&&(C.set&&C.set.specificity&&((l(C.set.edge)||l(C.set.shift))&&(b=!0,p(C.date,C.set.specificity,s)),_=b||C.set.specificity===m?d(u(C.date),C.set.specificity,s).getTime():function addSpecificUnit(){var t=r[C.set.specificity];return c(u(C.date),t.name,1).getTime()-1}(),!v&&l(C.set.sign)&&C.set.specificity&&(x=50,k=-50)),w=t.getTime(),O=C.date.getTime(),_=_||O,(g=function getTimezoneShift(){return C.set&&C.set.specificity?0:(o(C.date)-o(t))*i}())&&(O-=g,_-=g),w>=O-x&&w<=_+k)}},function(t,e,n){"use strict";var i=n(27),r=n(24),s=n(14).ceil;t.exports=function moveToEndOfWeek(t,e){var n=e-1;return i(t,7*s((r(t)-n)/7)+n),t}},function(t,e,n){"use strict";var i=n(401);t.exports=function getDateParamKey(t,e){return i(t,e)||i(t,e+"s")||"day"===e&&i(t,"date")}},function(t,e,n){"use strict";var i=n(11),r=n(39),s=n(41),a=n(66),o=i.MONTH_INDEX;t.exports=function moveToFirstDayOfWeekYear(t,e,n){s(t,o),r(t,n),a(t,e)}},function(t,e,n){"use strict";var i=n(71),r=n(38),s=n(39),a=n(404),o=n(32),u=n(31),l=n(403),c=n(37),f=n(24),d=n(27),h=n(12),p=n(113),m=h.isNumber,y=i.ISO_FIRST_DAY_OF_WEEK,g=i.ISO_FIRST_DAY_OF_WEEK_YEAR;t.exports=function setISOWeekNumber(t,e){if(m(e)){var n=c(t),i=f(t);p(n,y,g),s(n,r(n)+7*(e-1)),a(t,o(n)),l(t,u(n)),s(t,r(n)),d(t,i||7)}return t.getTime()}},function(t,e,n){"use strict";var i=n(33),r=n(44);t.exports=function walkUnitDown(t,e){for(;t>=0&&!1!==e(i[t],t);)t=r(t)}},function(t,e,n){"use strict";var i=n(11),r=n(41),s=i.HOURS_INDEX;t.exports=function resetTime(t){return r(t,s)}},function(t,e,n){"use strict";t.exports=6e4},function(t,e,n){"use strict";var i=n(14),r=n(69),s=i.abs;t.exports=function getAdjustedUnit(t,e){var n=0,i=0;return r(function(t,r){if((i=s(e(t)))>=1)return n=r,!1}),[i,n,t]}},function(t,e,n){"use strict";var i=n(14),r=i.abs,s=i.pow,a=i.round;t.exports=function withPrecision(t,e,n){var i=s(10,r(e||0));return n=n||a,e<0&&(i=1/i),n(t*i)/i}},function(t,e,n){"use strict";t.exports=String.fromCharCode},function(t,e,n){"use strict";var i=n(32),r=n(31),s=n(23);t.exports=function getDaysInMonth(t){return 32-s(new Date(i(t),r(t),32),"Date")}},function(t,e,n){"use strict";t.exports=function getRegNonCapturing(t,e){return t.length>1&&(t="(?:"+t+")"),e&&(t+="?"),t}},function(t,e,n){"use strict";var i=n(16).classToString;t.exports=function isClass(t,e,n){return n||(n=i(t)),n==="[object "+e+"]"}},function(t,e,n){"use strict";t.exports=function map(t,e){for(var n=[],i=0,r=t.length;i0),this.excludeRows=Object(u.defaultsArr)(o.exclude_rows,[]),this.externalFltIds=Object(u.defaultsArr)(o.external_flt_ids,[]),this.onFiltersLoaded=Object(u.defaultsFn)(o.on_filters_loaded,a.EMPTY_FN),this.singleFlt=Object(a.isObj)(o.single_filter)||Boolean(o.single_filter),this.singleFltExcludeCols=Object(a.isObj)(o.single_filter)&&Object(a.isArray)(o.single_filter.exclude_cols)?o.single_filter.exclude_cols:[],this.onRowValidated=Object(u.defaultsFn)(o.on_row_validated,a.EMPTY_FN),this.cellParser=Object(a.isObj)(o.cell_parser)&&Object(a.isFn)(o.cell_parser.parse)&&Object(a.isArray)(o.cell_parser.cols)?o.cell_parser:{cols:[],parse:a.EMPTY_FN},this.watermark=o.watermark||"",this.isWatermarkArray=Object(a.isArray)(this.watermark),this.help=Object(a.isUndef)(o.help_instructions)?void 0:Object(a.isObj)(o.help_instructions)||Boolean(o.help_instructions),this.popupFilters=Object(a.isObj)(o.popup_filters)||Boolean(o.popup_filters),this.markActiveColumns=Object(a.isObj)(o.mark_active_columns)||Boolean(o.mark_active_columns),this.clearFilterText=Object(u.defaultsStr)(o.clear_filter_text,"Clear"),this.enableEmptyOption=Boolean(o.enable_empty_option),this.emptyText=Object(u.defaultsStr)(o.empty_text,"(Empty)"),this.enableNonEmptyOption=Boolean(o.enable_non_empty_option),this.nonEmptyText=Object(u.defaultsStr)(o.non_empty_text,"(Non empty)"),this.onSlcChange=Object(u.defaultsBool)(o.on_change,!0),this.sortSlc=!!Object(a.isUndef)(o.sort_select)||(Object(a.isArray)(o.sort_select)?o.sort_select:Boolean(o.sort_select)),this.isSortNumAsc=Boolean(o.sort_num_asc),this.sortNumAsc=this.isSortNumAsc?o.sort_num_asc:[],this.isSortNumDesc=Boolean(o.sort_num_desc),this.sortNumDesc=this.isSortNumDesc?o.sort_num_desc:[],this.loadFltOnDemand=Boolean(o.load_filters_on_demand),this.hasCustomOptions=Object(a.isObj)(o.custom_options),this.customOptions=o.custom_options,this.rgxOperator=Object(u.defaultsStr)(o.regexp_operator,"rgx:"),this.emOperator=Object(u.defaultsStr)(o.empty_operator,"[empty]"),this.nmOperator=Object(u.defaultsStr)(o.nonempty_operator,"[nonempty]"),this.orOperator=Object(u.defaultsStr)(o.or_operator,"||"),this.anOperator=Object(u.defaultsStr)(o.and_operator,"&&"),this.grOperator=Object(u.defaultsStr)(o.greater_operator,">"),this.lwOperator=Object(u.defaultsStr)(o.lower_operator,"<"),this.leOperator=Object(u.defaultsStr)(o.lower_equal_operator,"<="),this.geOperator=Object(u.defaultsStr)(o.greater_equal_operator,">="),this.dfOperator=Object(u.defaultsStr)(o.different_operator,"!"),this.lkOperator=Object(u.defaultsStr)(o.like_operator,"*"),this.eqOperator=Object(u.defaultsStr)(o.equal_operator,"="),this.stOperator=Object(u.defaultsStr)(o.start_with_operator,"{"),this.enOperator=Object(u.defaultsStr)(o.end_with_operator,"}"),this.separator=Object(u.defaultsStr)(o.separator,","),this.rowsCounter=Object(a.isObj)(o.rows_counter)||Boolean(o.rows_counter),this.statusBar=Object(a.isObj)(o.status_bar)||Boolean(o.status_bar),this.loader=Object(a.isObj)(o.loader)||Boolean(o.loader),this.displayBtn=Boolean(o.btn),this.btnText=Object(u.defaultsStr)(o.btn_text,this.enableIcons?"":"Go"),this.btnCssClass=Object(u.defaultsStr)(o.btn_css_class,this.enableIcons?"btnflt_icon":"btnflt"),this.btnReset=Object(a.isObj)(o.btn_reset)||Boolean(o.btn_reset),this.onBeforeReset=Object(u.defaultsFn)(o.on_before_reset,a.EMPTY_FN),this.onAfterReset=Object(u.defaultsFn)(o.on_after_reset,a.EMPTY_FN),this.paging=Object(a.isObj)(o.paging)||Boolean(o.paging),this.nbHiddenRows=0,this.autoFilter=Object(a.isObj)(o.auto_filter)||Boolean(o.auto_filter),this.autoFilterDelay=Object(a.isObj)(o.auto_filter)&&Object(a.isNumber)(o.auto_filter.delay)?o.auto_filter.delay:h.AUTO_FILTER_DELAY,this.isUserTyping=null,this.autoFilterTimer=null,this.highlightKeywords=Boolean(o.highlight_keywords),this.noResults=Object(a.isObj)(o.no_results_message)||Boolean(o.no_results_message),this.state=Object(a.isObj)(o.state)||Boolean(o.state),this.dateType=!0,this.locale=Object(u.defaultsStr)(o.locale,"en"),this.thousandsSeparator=Object(u.defaultsStr)(o.thousands_separator,","),this.decimalSeparator=Object(u.defaultsStr)(o.decimal_separator,"."),this.colTypes=Object(a.isArray)(o.col_types)?o.col_types:[],this.prfxTf="TF",this.prfxFlt="flt",this.prfxValButton="btn",this.prfxResponsive="resp",this.stickyCssClass="sticky",this.extensions=Object(u.defaultsArr)(o.extensions,[]),this.enableDefaultTheme=Boolean(o.enable_default_theme),this.hasThemes=this.enableDefaultTheme||Object(a.isArray)(o.themes),this.themes=Object(u.defaultsArr)(o.themes,[]),this.themesPath=this.getThemesPath(),this.responsive=Boolean(o.responsive),this.toolbar=Object(a.isObj)(o.toolbar)||Boolean(o.toolbar),this.stickyHeaders=Boolean(o.sticky_headers),this.Mod={},this.ExtRegistry={},this.instantiateFeatures(Object.keys(h.FEATURES).map(function(t){return h.FEATURES[t]}))}return function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}(TableFilter,[{key:"init",value:function init(){var t=this;if(!this.initialized){this.import(this.stylesheetId,this.getStylesheetPath(),null,"link");var e,n=this.Mod;this.loadThemes();var i=h.FEATURES.dateType,s=h.FEATURES.help,a=h.FEATURES.state,o=h.FEATURES.markActiveColumns,u=h.FEATURES.gridLayout,l=h.FEATURES.loader,c=h.FEATURES.highlightKeyword,p=h.FEATURES.popupFilter,m=h.FEATURES.rowsCounter,y=h.FEATURES.statusBar,g=h.FEATURES.clearButton,b=h.FEATURES.alternateRows,v=h.FEATURES.noResults,O=h.FEATURES.paging,_=h.FEATURES.toolbar;if(this.initFeatures([i,s,a,o,u,l,c,p]),this.fltGrid){var C=this._insertFiltersRow();this.nbCells=this.getCellsNb(this.refRow),this.nbFilterableRows=this.getRowsNb();for(var w=this.singleFlt?1:this.nbCells,x=0;x0&&this.setFixedLayout(),this.stickyHeaders&&this.dom().tHead&&Object(r.addClass)(this.dom(),this.stickyCssClass)),this.initExtensions(),this.linkedFilters&&this.emitter.on(["after-filtering"],function(){return t.linkFilters()}),this.initialized=!0,this.onFiltersLoaded(this),this.emitter.emit("initialized",this)}}},{key:"detectKey",value:function detectKey(t){this.enterKey&&(Object(i.isKeyPressed)(t,[h.ENTER_KEY])?(this.filter(),Object(i.cancelEvt)(t),Object(i.stopEvt)(t)):(this.isUserTyping=!0,l.root.clearInterval(this.autoFilterTimer),this.autoFilterTimer=null))}},{key:"onKeyUp",value:function onKeyUp(t){if(this.autoFilter)if(this.isUserTyping=!1,Object(i.isKeyPressed)(t,[h.ENTER_KEY,h.TAB_KEY,h.ESC_KEY,h.UP_ARROW_KEY,h.DOWN_ARROW_KEY]))l.root.clearInterval(this.autoFilterTimer),this.autoFilterTimer=null;else{if(null!==this.autoFilterTimer)return;this.autoFilterTimer=l.root.setInterval(function filter(){l.root.clearInterval(this.autoFilterTimer),this.autoFilterTimer=null,this.isUserTyping||(this.filter(),this.isUserTyping=null)}.bind(this),this.autoFilterDelay)}}},{key:"onKeyDown",value:function onKeyDown(){this.autoFilter&&(this.isUserTyping=!0)}},{key:"onInpFocus",value:function onInpFocus(t){var e=Object(i.targetEvt)(t);this.emitter.emit("filter-focus",this,e)}},{key:"onInpBlur",value:function onInpBlur(){this.autoFilter&&(this.isUserTyping=!1,l.root.clearInterval(this.autoFilterTimer)),this.emitter.emit("filter-blur",this)}},{key:"_insertFiltersRow",value:function _insertFiltersRow(){if(!this.gridLayout){var t,e=Object(r.tag)(this.dom(),"thead");return(t=e.length>0?e[0].insertRow(this.filtersRowIndex):this.dom().insertRow(this.filtersRowIndex)).className=this.fltsRowCssClass,this.isExternalFlt()&&(t.style.display=h.NONE),this.emitter.emit("filters-row-inserted",this,t),t}}},{key:"_initNoFilters",value:function _initNoFilters(){this.fltGrid||(this.refRow=this.refRow>0?this.refRow-1:0,this.nbFilterableRows=this.getRowsNb())}},{key:"_buildInputFilter",value:function _buildInputFilter(t,e,n){var s=this,a=this.getFilterType(t),o=this.isExternalFlt()?this.externalFltIds[t]:null,u=a===h.INPUT?"text":"hidden",l=Object(r.createElm)(h.INPUT,["id",this.buildFilterId(t)],["type",u],["ct",t]);"hidden"!==u&&this.watermark&&l.setAttribute("placeholder",this.isWatermarkArray?this.watermark[t]||"":this.watermark),l.className=e||this.fltCssClass,Object(i.addEvt)(l,"focus",function(t){return s.onInpFocus(t)}),o?Object(r.elm)(o).appendChild(l):n.appendChild(l),this.fltIds.push(l.id),Object(i.addEvt)(l,"keypress",function(t){return s.detectKey(t)}),Object(i.addEvt)(l,"keydown",function(){return s.onKeyDown()}),Object(i.addEvt)(l,"keyup",function(t){return s.onKeyUp(t)}),Object(i.addEvt)(l,"blur",function(){return s.onInpBlur()})}},{key:"_buildSubmitButton",value:function _buildSubmitButton(t){var e=this,n=Object(r.createElm)(h.INPUT,["type","button"],["value",this.btnText]);n.className=this.btnCssClass,t.appendChild(n),Object(i.addEvt)(n,"click",function(){return e.filter()})}},{key:"instantiateFeatures",value:function instantiateFeatures(){var t=this;(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach(function(e){if(e.property=e.property||e.name,!t.hasConfig||!0===t[e.property]||!0===e.enforce){var n=e.class,i=e.name;t.Mod[i]=t.Mod[i]||new n(t)}})}},{key:"initFeatures",value:function initFeatures(){var t=this;(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach(function(e){var n=e.property,i=e.name;!0===t[n]&&t.Mod[i]&&t.Mod[i].init()})}},{key:"feature",value:function feature(t){return this.Mod[t]}},{key:"initExtensions",value:function initExtensions(){var t=this,e=this.extensions;0!==e.length&&(n.p=this.basePath,this.emitter.emit("before-loading-extensions",this),e.forEach(function(e){t.loadExtension(e)}),this.emitter.emit("after-loading-extensions",this))}},{key:"loadExtension",value:function loadExtension(t){var e=this;if(t&&t.name&&!this.hasExtension(t.name)){var i,r=t.name,s=t.path;r&&s?i=t.path+r:(r=r.replace(".js",""),i="extensions/{}/{}".replace(/{}/g,r)),n.e(0).then(function(){var s=[n(440)("./"+i)];(function(n){var i=new n.default(e,t);i.init(),e.ExtRegistry[r]=i}).apply(null,s)}).catch(n.oe)}}},{key:"extension",value:function extension(t){return this.ExtRegistry[t]}},{key:"hasExtension",value:function hasExtension(t){return!Object(a.isEmpty)(this.ExtRegistry[t])}},{key:"registerExtension",value:function registerExtension(t,e){this.ExtRegistry[e]=t}},{key:"destroyExtensions",value:function destroyExtensions(){var t=this.ExtRegistry;Object.keys(t).forEach(function(e){t[e].destroy(),t[e]=void 0})}},{key:"loadThemes",value:function loadThemes(){var t=this;if(this.hasThemes){var e=this.themes;if(this.emitter.emit("before-loading-themes",this),this.enableDefaultTheme){this.themes.push({name:"default"})}e.forEach(function(e,n){var i=e.name,r=e.path,s=t.prfxTf+i;i&&!r?r=t.themesPath+i+"/"+i+".css":!i&&e.path&&(i="theme{0}".replace("{0}",n)),t.isImported(r,"link")||t.import(s,r,null,"link")}),this.loader=!0,this.emitter.emit("after-loading-themes",this)}}},{key:"getStylesheet",value:function getStylesheet(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default";return Object(r.elm)(this.prfxTf+t)}},{key:"destroy",value:function destroy(){var t=this;if(this.initialized){var e=this.emitter;this.isExternalFlt()&&!this.popupFilters&&this.removeExternalFlts(),this.destroyExtensions(),this.validateAllRows(),e.emit("destroy",this),this.fltGrid&&!this.gridLayout&&this.dom().deleteRow(this.filtersRowIndex),this.hasExcludedRows&&e.off(["after-filtering"],function(){return t.setExcludeRows()}),this.linkedFilters&&e.off(["after-filtering"],function(){return t.linkFilters()}),this.emitter.off(["filter-focus"],function(e,n){return t.setActiveFilterId(n.id)}),Object(r.removeClass)(this.dom(),this.prfxTf),Object(r.removeClass)(this.dom(),this.prfxResponsive),this.dom().tHead&&Object(r.removeClass)(this.dom().tHead,this.stickyCssClass),this.nbHiddenRows=0,this.validRowsIndex=[],this.fltIds=[],this.initialized=!1}}},{key:"removeExternalFlts",value:function removeExternalFlts(){this.isExternalFlt()&&this.externalFltIds.forEach(function(t){var e=Object(r.elm)(t);e&&(e.innerHTML="")})}},{key:"isCustomOptions",value:function isCustomOptions(t){return this.hasCustomOptions&&-1!==this.customOptions.cols.indexOf(t)}},{key:"getCustomOptions",value:function getCustomOptions(t){if(!Object(a.isEmpty)(t)&&this.isCustomOptions(t)){for(var e=this.customOptions,n=[],i=[],r=e.cols.indexOf(t),s=e.values[r],o=e.texts[r],u=e.sorts[r],l=0,c=s.length;l1,b=p.toString().split(t.anOperator),v=b.length>1;if(Object(a.isArray)(p)||g||v){for(var O=void 0,_=void 0,C=!1,w=0,x=(_=Object(a.isArray)(p)?p:g?y:b).length;w=(I=L(t.replace(l,""),H)):U?_=D>(I=L(t.replace(f,""),H)):V?(I=L(t.replace(d,""),H),_=D.toString()!==I.toString()):Y?(I=L(t.replace(m,""),H),_=D.toString()===I.toString()):p.test(t)?_=Object(s.contains)(t.replace(p,""),e,!1,this.caseSensitive):M(t)?(I=L(t,H),_=D.toString()===I.toString()):_=F?!n.hasChildNodes():N?n.hasChildNodes():Object(s.contains)(t,e,this.isExactMatch(r),this.caseSensitive)}else if(i=Object(o.parse)(e,a)||Number(e),R)try{var K=t.replace(O,"");_=new RegExp(K).test(e)}catch(t){_=!1}else if(w)_=i<=Object(o.parse)(t.replace(u,""),a);else if(k)_=i>=Object(o.parse)(t.replace(l,""),a);else if(C)_=iObject(o.parse)(t.replace(f,""),a);else if(j)_=!Object(s.contains)(t.replace(d,""),e,!1,this.caseSensitive);else if(P)_=Object(s.contains)(t.replace(p,""),e,!1,this.caseSensitive);else if(E)_=Object(s.contains)(t.replace(m,""),e,!0,this.caseSensitive);else if(T)_=0===e.indexOf(t.replace(y,""));else if(S){var G=t.replace(g,"");_=e.lastIndexOf(G,e.length-1)===e.length-1-(G.length-1)&&e.lastIndexOf(G,e.length-1)>-1}else _=F?!n.hasChildNodes():N?n.hasChildNodes():i&&this.hasType(r,[h.NUMBER,h.FORMATTED_NUMBER])&&!this.singleFlt?i===(t=Object(o.parse)(t,a)||t)||Object(s.contains)(t.toString(),i.toString(),this.isExactMatch(r),this.caseSensitive):Object(s.contains)(t,e,this.isExactMatch(r),this.caseSensitive,this.ignoresDiacritics(r));return _}},{key:"getColumnData",value:function getColumnData(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getColValues(t,e,!0,n)}},{key:"getColumnValues",value:function getColumnValues(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getColValues(t,e,!1,n)}},{key:"getColValues",value:function getColValues(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],s=[],a=i?this.getCellData.bind(this):this.getCellValue.bind(this);return n&&s.push(this.getHeadersText()[t]),this.eachRow()(function(n,i){var o=-1!==r.indexOf(i),u=n.cells;if(u.length===e.nbCells&&!o){var l=a(u[t]);s.push(l)}}),s}},{key:"getFilterValue",value:function getFilterValue(t){if(this.fltGrid){var e="",n=this.getFilterElement(t);if(!n)return e;var i=this.getFilterType(t);return i!==h.MULTIPLE&&i!==h.CHECKLIST?e=n.value:i===h.MULTIPLE?e=this.feature("dropdown").getValues(t):i===h.CHECKLIST&&(e=this.feature("checkList").getValues(t)),(Object(a.isArray)(e)&&0===e.length||1===e.length&&""===e[0])&&(e=""),e}}},{key:"getFiltersValue",value:function getFiltersValue(){var t=this;if(this.fltGrid){var e=[];return this.fltIds.forEach(function(n,i){var r=t.getFilterValue(i);Object(a.isArray)(r)?e.push(r):e.push(Object(s.trim)(r))}),e}}},{key:"getFilterId",value:function getFilterId(t){if(this.fltGrid)return this.fltIds[t]}},{key:"getFiltersByType",value:function getFiltersByType(t,e){if(this.fltGrid){for(var n=[],i=0,r=this.fltIds.length;i0&&void 0!==arguments[0]?arguments[0]:0,e=this.dom().rows[t>=0?t:0];return e?e.cells.length:0}},{key:"getRowsNb",value:function getRowsNb(t){var e=this.getWorkingRows().length;return this.dom().tHead?t?e+this.dom().querySelectorAll("thead > tr").length:e:t?e:e-this.refRow}},{key:"getWorkingRows",value:function getWorkingRows(){return p.querySelectorAll("table#".concat(this.id," > tbody > tr"))}},{key:"getCellValue",value:function getCellValue(t){var e=t.cellIndex,n=this.cellParser;return-1!==n.cols.indexOf(e)?n.parse(this,t,e):Object(r.getText)(t)}},{key:"getCellData",value:function getCellData(t){var e=t.cellIndex,n=this.getCellValue(t);if(this.hasType(e,[h.FORMATTED_NUMBER]))return Object(o.parse)(n,this.getDecimal(e));if(this.hasType(e,[h.NUMBER]))return Number(n);if(this.hasType(e,[h.DATE])){var i=this.Mod.dateType;return i.parse(n,i.getLocale(e))}return n}},{key:"getData",value:function getData(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.getTableData(t,e,!0)}},{key:"getValues",value:function getValues(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.getTableData(t,e,!1)}},{key:"getTableData",value:function getTableData(){var t=this,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[],r=arguments.length>2&&void 0!==arguments[2]&&arguments[2]?this.getCellData.bind(this):this.getCellValue.bind(this);if(e){var s=this.getHeadersText(n);i.push([this.getHeadersRowIndex(),s])}return this.eachRow()(function(e,s){for(var a=[s,[]],o=e.cells,u=0,l=o.length;u0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.filteredData(t,e,!0)}},{key:"getFilteredValues",value:function getFilteredValues(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.filteredData(t,e,!1)}},{key:"filteredData",value:function filteredData(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(0===this.validRowsIndex.length)return[];var i=this.dom().rows,filteredData=[],r=n?this.getCellData.bind(this):this.getCellValue.bind(this);if(t){var s=this.getHeadersText(e);filteredData.push([this.getHeadersRowIndex(),s])}for(var a=this.getValidRows(!0),o=0;o1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(t,e,!0,n,!1)}},{key:"getVisibleColumnData",value:function getVisibleColumnData(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(t,e,!0,n,!0)}},{key:"getFilteredColumnValues",value:function getFilteredColumnValues(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(t,e,!1,n,!1)}},{key:"getVisibleColumnValues",value:function getVisibleColumnValues(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getFilteredDataCol(t,e,!1,n,!0)}},{key:"getFilteredDataCol",value:function getFilteredDataCol(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];if(Object(a.isUndef)(t))return[];var o=this.dom().rows,u=i?this.getCellData.bind(this):this.getCellValue.bind(this),l=this.getValidRows(!0).filter(function(t){return-1===r.indexOf(t)&&(!s||"none"!==e.getRowDisplay(o[t]))}).map(function(e){return u(o[e].cells[t])});return n&&l.unshift(this.getHeadersText()[t]),l}},{key:"getRowDisplay",value:function getRowDisplay(t){return t.style.display}},{key:"validateRow",value:function validateRow(t,e){var n=this.dom().rows[t];if(n&&Object(a.isBoolean)(e)){-1!==this.excludeRows.indexOf(t)&&(e=!0);var i=e?"":h.NONE,r=e?"true":"false";n.style.display=i,this.paging&&n.setAttribute("validRow",r),e&&(-1===this.validRowsIndex.indexOf(t)&&this.validRowsIndex.push(t),this.onRowValidated(this,t),this.emitter.emit("row-validated",this,t))}}},{key:"validateAllRows",value:function validateAllRows(){if(this.initialized){this.validRowsIndex=[];for(var t=this.refRow;t1&&void 0!==arguments[1]?arguments[1]:"";if(this.fltGrid){var n=this.getFilterElement(t),i=this.getFilterType(t);if(n)if(i!==h.MULTIPLE&&i!==h.CHECKLIST)this.loadFltOnDemand&&!this.initialized&&this.emitter.emit("build-select-filter",this,t,this.linkedFilters,this.isExternalFlt()),n.value=e;else if(i===h.MULTIPLE){var r=Object(a.isArray)(e)?e:e.split(" "+this.orOperator+" ");this.loadFltOnDemand&&!this.initialized&&this.emitter.emit("build-select-filter",this,t,this.linkedFilters,this.isExternalFlt()),this.emitter.emit("select-options",this,t,r)}else if(i===h.CHECKLIST){var o=[];this.loadFltOnDemand&&!this.initialized&&this.emitter.emit("build-checklist-filter",this,t,this.linkedFilters),o=Object(a.isArray)(e)?e:(e=Object(s.matchCase)(e,this.caseSensitive)).split(" "+this.orOperator+" "),this.emitter.emit("select-checklist-options",this,t,o)}}}},{key:"setFixedLayout",value:function setFixedLayout(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.dom(),e=this.colWidths,n=t.clientWidth;if(e.length>0){var i=this.defaultColWidth;n=e.reduce(function(t,e){return parseInt(t||i,10)+parseInt(e||i,10)})}t.style.width="".concat(n,"px"),t.style.tableLayout="fixed"}},{key:"setColWidths",value:function setColWidths(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.dom(),e=this.colWidths;if(0!==e.length){var n=Object(r.tag)(t,"col"),i=n.length>0,s=i?null:p.createDocumentFragment();this.eachCol(function(t){var a;i?a=n[t]:(a=Object(r.createElm)("col"),s.appendChild(a)),a.style.width=e[t]}),i||t.insertBefore(s,t.firstChild)}}},{key:"setExcludeRows",value:function setExcludeRows(){var t=this;this.hasExcludedRows&&this.excludeRows.forEach(function(e){return t.validateRow(e,!0)})}},{key:"clearFilters",value:function clearFilters(){if(this.fltGrid){this.emitter.emit("before-clearing-filters",this),this.onBeforeReset(this,this.getFiltersValue());for(var t=0,e=this.fltIds.length;t0&&void 0!==arguments[0]?arguments[0]:"").split("_")[0];return t=t.split(this.prfxFlt)[1],parseInt(t,10)}},{key:"buildFilterId",value:function buildFilterId(t){return"".concat(this.prfxFlt).concat(t,"_").concat(this.id)}},{key:"isExternalFlt",value:function isExternalFlt(){return this.externalFltIds.length>0}},{key:"getStylePath",value:function getStylePath(){return Object(u.defaultsStr)(this.config.style_path,this.basePath+"style/")}},{key:"getStylesheetPath",value:function getStylesheetPath(){return Object(u.defaultsStr)(this.config.stylesheet,this.getStylePath()+"tablefilter.css")}},{key:"getThemesPath",value:function getThemesPath(){return Object(u.defaultsStr)(this.config.themes_path,this.getStylePath()+"themes/")}},{key:"activateFilter",value:function activateFilter(t){Object(a.isUndef)(t)||this.setActiveFilterId(this.getFilterId(t))}},{key:"linkFilters",value:function linkFilters(){var t=this;if(this.linkedFilters&&this.activeFilterId){var e=this.getFiltersByType(h.SELECT,!0),n=this.getFiltersByType(h.MULTIPLE,!0),i=this.getFiltersByType(h.CHECKLIST,!0),s=e.concat(n);(s=s.concat(i)).forEach(function(e){var n=t.getFilterElement(e),s=t.getFilterValue(e);if(t.loadFltOnDemand){var a=Object(r.createOpt)(t.getClearFilterText(e),"");n.innerHTML="",n.appendChild(a)}-1!==i.indexOf(e)?t.emitter.emit("build-checklist-filter",t,e,!0):t.emitter.emit("build-select-filter",t,e,!0),t.setFilterValue(e,s)})}}},{key:"isExactMatch",value:function isExactMatch(t){var e=this.getFilterType(t);return this.exactMatchByCol[t]||this.exactMatch||e!==h.INPUT}},{key:"isRowValid",value:function isRowValid(t){return-1!==this.getValidRows().indexOf(t)}},{key:"isRowDisplayed",value:function isRowDisplayed(t){var e=this.dom().rows[t];return""===this.getRowDisplay(e)}},{key:"ignoresDiacritics",value:function ignoresDiacritics(t){var e=this.ignoreDiacritics;return Object(a.isArray)(e)?e[t]:Boolean(e)}},{key:"getClearFilterText",value:function getClearFilterText(t){var e=this.clearFilterText;return Object(a.isArray)(e)?e[t]:e}},{key:"eachCol",value:function eachCol(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.EMPTY_FN,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.EMPTY_FN,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.EMPTY_FN,i=this.getCellsNb(this.refRow),r=0;r0&&void 0!==arguments[0]?arguments[0]:this.refRow;return function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.EMPTY_FN,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.EMPTY_FN,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.EMPTY_FN,s=t.dom().rows,o=t.getRowsNb(!0),u=e;u1&&void 0!==arguments[1]?arguments[1]:"script",n=!1,i="script"===e?"src":"href",s=Object(r.tag)(p,e),o=0,u=s.length;o3&&void 0!==arguments[3]?arguments[3]:"script";if(!this.isImported(e,s)){var a,o=this,u=!1,l=Object(r.tag)(p,"head")[0];(a="link"===s.toLowerCase()?Object(r.createElm)("link",["id",t],["type","text/css"],["rel","stylesheet"],["href",e]):Object(r.createElm)("script",["id",t],["type","text/javascript"],["src",e])).onload=a.onreadystatechange=function(){u||i.readyState&&"loaded"!==i.readyState&&"complete"!==i.readyState||(u=!0,"function"==typeof n&&n.call(null,o))},a.onerror=function(){throw new Error("TableFilter could not load: ".concat(e))},l.appendChild(a)}}},{key:"isInitialized",value:function isInitialized(){return this.initialized}},{key:"getFiltersId",value:function getFiltersId(){return this.fltIds||[]}},{key:"getValidRows",value:function getValidRows(t){var e=this;return t?(this.validRowsIndex=[],this.eachRow()(function(t){e.paging?"true"!==t.getAttribute("validRow")&&null!==t.getAttribute("validRow")||e.validRowsIndex.push(t.rowIndex):e.getRowDisplay(t)!==h.NONE&&e.validRowsIndex.push(t.rowIndex)}),this.validRowsIndex):this.validRowsIndex}},{key:"getFiltersRowIndex",value:function getFiltersRowIndex(){return this.filtersRowIndex}},{key:"getHeadersRowIndex",value:function getHeadersRowIndex(){return this.headersRow}},{key:"getStartRowIndex",value:function getStartRowIndex(){return this.refRow}},{key:"getLastRowIndex",value:function getLastRowIndex(){return this.getRowsNb(!0)-1}},{key:"hasType",value:function hasType(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(0===this.colTypes.length)return!1;var n=this.colTypes[t];return Object(a.isObj)(n)&&(n=n.type),-1!==e.indexOf(n)}},{key:"getHeaderElement",value:function getHeaderElement(t){var e,n=this.gridLayout?this.Mod.gridLayout.headTbl:this.dom(),i=Object(r.tag)(n,"thead"),s=this.getHeadersRowIndex();return 0===i.length&&(e=n.rows[s].cells[t]),1===i.length&&(e=i[0].rows[s].cells[t]),e}},{key:"getHeadersText",value:function getHeadersText(){var t=this,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=[];return this.eachCol(function(e){var i=t.getHeaderElement(e),s=Object(r.getFirstTextNode)(i);n.push(s)},function(n){return!(!e||!t.hasExtension("colsVisibility"))&&t.extension("colsVisibility").isColHidden(n)}),n}},{key:"getFilterType",value:function getFilterType(t){return this.filterTypes[t]}},{key:"getFilterableRowsNb",value:function getFilterableRowsNb(){return this.getRowsNb(!1)}},{key:"getValidRowsNb",value:function getValidRowsNb(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getValidRows(t).length}},{key:"dom",value:function dom(){return this.tbl}},{key:"getDecimal",value:function getDecimal(t){var e=this.decimalSeparator;if(this.hasType(t,[h.FORMATTED_NUMBER])){var n=this.colTypes[t];n.hasOwnProperty("decimal")&&(e=n.decimal)}return e}},{key:"config",value:function config(){return this.cfg}}]),TableFilter}()},function(t,e,n){"use strict";n(13)("zh-TW",{ampmFront:!0,numeralUnits:!0,allowsFullWidth:!0,timeMarkerOptional:!0,units:"毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年",weekdays:"星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六",numerals:"〇,一,二,三,四,五,六,七,八,九",placeholders:"十,百,千,万",short:"{yyyy}/{MM}/{dd}",medium:"{yyyy}年{M}月{d}日",long:"{yyyy}年{M}月{d}日{time}",full:"{yyyy}年{M}月{d}日{weekday}{time}",stamp:"{yyyy}年{M}月{d}日{H}:{mm}{dow}",time:"{tt}{h}點{mm}分",past:"{num}{unit}{sign}",future:"{num}{unit}{sign}",duration:"{num}{unit}",timeSuffixes:",秒,分鐘?,點|時,日|號,,月,年",ampm:"上午,下午",modifiers:[{name:"day",src:"大前天",value:-3},{name:"day",src:"前天",value:-2},{name:"day",src:"昨天",value:-1},{name:"day",src:"今天",value:0},{name:"day",src:"明天",value:1},{name:"day",src:"後天",value:2},{name:"day",src:"大後天",value:3},{name:"sign",src:"前",value:-1},{name:"sign",src:"後",value:1},{name:"shift",src:"上|去",value:-1},{name:"shift",src:"這",value:0},{name:"shift",src:"下|明",value:1}],parse:["{num}{unit}{sign}","{shift}{unit:5-7}","{year?}{month}","{year}"],timeParse:["{day|weekday}","{shift}{weekday}","{year?}{month?}{date}"]})},function(t,e,n){"use strict";n(13)("zh-CN",{ampmFront:!0,numeralUnits:!0,allowsFullWidth:!0,timeMarkerOptional:!0,units:"毫秒,秒钟,分钟,小时,天,个星期|周,个月,年",weekdays:"星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六",numerals:"〇,一,二,三,四,五,六,七,八,九",placeholders:"十,百,千,万",short:"{yyyy}-{MM}-{dd}",medium:"{yyyy}年{M}月{d}日",long:"{yyyy}年{M}月{d}日{time}",full:"{yyyy}年{M}月{d}日{weekday}{time}",stamp:"{yyyy}年{M}月{d}日{H}:{mm}{dow}",time:"{tt}{h}点{mm}分",past:"{num}{unit}{sign}",future:"{num}{unit}{sign}",duration:"{num}{unit}",timeSuffixes:",秒,分钟?,点|时,日|号,,月,年",ampm:"上午,下午",modifiers:[{name:"day",src:"大前天",value:-3},{name:"day",src:"前天",value:-2},{name:"day",src:"昨天",value:-1},{name:"day",src:"今天",value:0},{name:"day",src:"明天",value:1},{name:"day",src:"后天",value:2},{name:"day",src:"大后天",value:3},{name:"sign",src:"前",value:-1},{name:"sign",src:"后",value:1},{name:"shift",src:"上|去",value:-1},{name:"shift",src:"这",value:0},{name:"shift",src:"下|明",value:1}],parse:["{num}{unit}{sign}","{shift}{unit:5-7}","{year?}{month}","{year}"],timeParse:["{day|weekday}","{shift}{weekday}","{year?}{month?}{date}"]})},function(t,e,n){"use strict";n(13)("sv",{plural:!0,units:"millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et",months:"jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|",weekdays:"sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag",numerals:"noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio",tokens:"den,för|for",articles:"den",short:"{yyyy}-{MM}-{dd}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday} {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",ampm:"am,pm",modifiers:[{name:"day",src:"förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar",value:-2},{name:"day",src:"går|i går|igår|gar|i gar|igar",value:-1},{name:"day",src:"dag|i dag|idag",value:0},{name:"day",src:"morgon|i morgon|imorgon",value:1},{name:"day",src:"över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon",value:2},{name:"sign",src:"sedan|sen",value:-1},{name:"sign",src:"om",value:1},{name:"shift",src:"i förra|förra|i forra|forra",value:-1},{name:"shift",src:"denna",value:0},{name:"shift",src:"nästa|nasta",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{sign} {num} {unit}","{1?} {num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{day|weekday}","{shift} {weekday}","{0?} {weekday?},? {date} {months?}\\.? {year?}"],timeFrontParse:["{day|weekday}","{shift} {weekday}","{0?} {weekday?},? {date} {months?}\\.? {year?}"]})},function(t,e,n){"use strict";n(13)("ru",{firstDayOfWeekYear:1,units:"миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году",months:"янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь",weekdays:"воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб",numerals:"ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять",tokens:"в|на,г\\.?(?:ода)?",short:"{dd}.{MM}.{yyyy}",medium:"{d} {month} {yyyy} г.",long:"{d} {month} {yyyy} г., {time}",full:"{weekday}, {d} {month} {yyyy} г., {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",timeMarkers:"в",ampm:" утра, вечера",modifiers:[{name:"day",src:"позавчера",value:-2},{name:"day",src:"вчера",value:-1},{name:"day",src:"сегодня",value:0},{name:"day",src:"завтра",value:1},{name:"day",src:"послезавтра",value:2},{name:"sign",src:"назад",value:-1},{name:"sign",src:"через",value:1},{name:"shift",src:"прошл:ый|ой|ом",value:-1},{name:"shift",src:"следующ:ий|ей|ем",value:1}],relative:function(t,e,n,i){var r,s,a=t.toString().slice(-1);switch(!0){case t>=11&&t<=15:s=3;break;case 1==a:s=1;break;case a>=2&&a<=4:s=2;break;default:s=3}switch(r=t+" "+this.units[8*s+e],i){case"duration":return r;case"past":return r+" назад";case"future":return"через "+r}},parse:["{num} {unit} {sign}","{sign} {num} {unit}","{months} {year?}","{0?} {shift} {unit:5-7}"],timeParse:["{day|weekday}","{0?} {shift} {weekday}","{date} {months?} {year?} {1?}"],timeFrontParse:["{0?} {shift} {weekday}","{date} {months?} {year?} {1?}"]})},function(t,e,n){"use strict";n(13)("pt",{plural:!0,units:"milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s",months:"jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|",weekdays:"dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado",numerals:"zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez",tokens:"a,de",short:"{dd}/{MM}/{yyyy}",medium:"{d} de {Month} de {yyyy}",long:"{d} de {Month} de {yyyy} {time}",full:"{Weekday}, {d} de {Month} de {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"às",ampm:"am,pm",modifiers:[{name:"day",src:"anteontem",value:-2},{name:"day",src:"ontem",value:-1},{name:"day",src:"hoje",value:0},{name:"day",src:"amanh:ã|a",value:1},{name:"sign",src:"atrás|atras|há|ha",value:-1},{name:"sign",src:"daqui a",value:1},{name:"shift",src:"passad:o|a",value:-1},{name:"shift",src:"próximo|próxima|proximo|proxima",value:1}],parse:["{months} {1?} {year?}","{num} {unit} {sign}","{sign} {num} {unit}","{0?} {unit:5-7} {shift}","{0?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{0?} {shift} {weekday}","{date} {1?} {months?} {1?} {year?}"],timeFrontParse:["{shift?} {day|weekday}","{date} {1?} {months?} {1?} {year?}"]})},function(t,e,n){"use strict";n(13)("pl",{plural:!0,units:"milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat",months:"sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień",weekdays:"nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę",numerals:"zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć",tokens:"w|we,roku",short:"{dd}.{MM}.{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday}, {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",timeMarkers:"o",ampm:"am,pm",modifiers:[{name:"day",src:"przedwczoraj",value:-2},{name:"day",src:"wczoraj",value:-1},{name:"day",src:"dzisiaj|dziś",value:0},{name:"day",src:"jutro",value:1},{name:"day",src:"pojutrze",value:2},{name:"sign",src:"temu|przed",value:-1},{name:"sign",src:"za",value:1},{name:"shift",src:"zeszły|zeszła|ostatni|ostatnia",value:-1},{name:"shift",src:"następny|następna|następnego|przyszły|przyszła|przyszłego",value:1}],relative:function(t,e,n,i){var r;if(4===e){if(1===t&&"past"===i)return"wczoraj";if(1===t&&"future"===i)return"jutro";if(2===t&&"past"===i)return"przedwczoraj";if(2===t&&"future"===i)return"pojutrze"}var s=+t.toFixed(0).slice(-1),a=+t.toFixed(0).slice(-2);switch(!0){case 1===t:r=0;break;case a>=12&&a<=14:r=2;break;case s>=2&&s<=4:r=1;break;default:r=2}var o=this.units[8*r+e],u=t+" ";switch("past"!==i&&"future"!==i||1!==t||(o=o.replace(/a$/,"ę")),o=u+o,i){case"duration":return o;case"past":return o+" temu";case"future":return"za "+o}},parse:["{num} {unit} {sign}","{sign} {num} {unit}","{months} {year?}","{shift} {unit:5-7}","{0} {shift?} {weekday}"],timeFrontParse:["{day|weekday}","{date} {months} {year?} {1?}","{0?} {shift?} {weekday}"]})},function(t,e,n){"use strict";n(13)("no",{plural:!0,units:"millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et",months:"januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember",weekdays:"søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag",numerals:"en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti",tokens:"den,for",articles:"den",short:"d. {d}. {month} {yyyy}",long:"den {d}. {month} {yyyy} {H}:{mm}",full:"{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",ampm:"am,pm",modifiers:[{name:"day",src:"forgårs|i forgårs|forgaars|i forgaars",value:-2},{name:"day",src:"i går|igår|i gaar|igaar",value:-1},{name:"day",src:"i dag|idag",value:0},{name:"day",src:"i morgen|imorgen",value:1},{name:"day",src:"overimorgen|overmorgen|over i morgen",value:2},{name:"sign",src:"siden",value:-1},{name:"sign",src:"om",value:1},{name:"shift",src:"i siste|siste",value:-1},{name:"shift",src:"denne",value:0},{name:"shift",src:"neste",value:1}],parse:["{num} {unit} {sign}","{sign} {num} {unit}","{1?} {num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{date} {month}","{shift} {weekday}","{0?} {weekday?},? {date?} {month}\\.? {year}"]})},function(t,e,n){"use strict";n(13)("nl",{plural:!0,units:"milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar",months:"jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|",weekdays:"zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za",numerals:"nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien",short:"{dd}-{MM}-{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {Month} {yyyy} {time}",full:"{weekday} {d} {Month} {yyyy} {time}",stamp:"{dow} {d} {Mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{num} {unit} {sign}",duration:"{num} {unit}",timeMarkers:"'s,om",modifiers:[{name:"day",src:"gisteren",value:-1},{name:"day",src:"vandaag",value:0},{name:"day",src:"morgen",value:1},{name:"day",src:"overmorgen",value:2},{name:"sign",src:"geleden",value:-1},{name:"sign",src:"vanaf nu",value:1},{name:"shift",src:"laatste|vorige|afgelopen",value:-1},{name:"shift",src:"volgend:|e",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{0?} {unit:5-7} {shift}","{0?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"],timeFrontParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"]})},function(t,e,n){"use strict";n(13)("ko",{ampmFront:!0,numeralUnits:!0,units:"밀리초,초,분,시간,일,주,개월|달,년|해",weekdays:"일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|",numerals:"영|제로,일|한,이,삼,사,오,육,칠,팔,구,십",short:"{yyyy}.{MM}.{dd}",medium:"{yyyy}년 {M}월 {d}일",long:"{yyyy}년 {M}월 {d}일 {time}",full:"{yyyy}년 {M}월 {d}일 {weekday} {time}",stamp:"{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}",time:"{tt} {h}시 {mm}분",past:"{num}{unit} {sign}",future:"{num}{unit} {sign}",duration:"{num}{unit}",timeSuffixes:",초,분,시,일,,월,년",ampm:"오전,오후",modifiers:[{name:"day",src:"그저께",value:-2},{name:"day",src:"어제",value:-1},{name:"day",src:"오늘",value:0},{name:"day",src:"내일",value:1},{name:"day",src:"모레",value:2},{name:"sign",src:"전",value:-1},{name:"sign",src:"후",value:1},{name:"shift",src:"지난|작",value:-1},{name:"shift",src:"이번|올",value:0},{name:"shift",src:"다음|내",value:1}],parse:["{num}{unit} {sign}","{shift?} {unit:5-7}","{year?} {month}","{year}"],timeParse:["{day|weekday}","{shift} {unit:5?} {weekday}","{year?} {month?} {date} {weekday?}"]})},function(t,e,n){"use strict";n(13)("ja",{ampmFront:!0,numeralUnits:!0,allowsFullWidth:!0,timeMarkerOptional:!0,firstDayOfWeek:0,firstDayOfWeekYear:1,units:"ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度",weekdays:"日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜",numerals:"〇,一,二,三,四,五,六,七,八,九",placeholders:"十,百,千,万",timeSuffixes:",秒,分,時,日,,月,年度?",short:"{yyyy}/{MM}/{dd}",medium:"{yyyy}年{M}月{d}日",long:"{yyyy}年{M}月{d}日{time}",full:"{yyyy}年{M}月{d}日{time} {weekday}",stamp:"{yyyy}年{M}月{d}日 {H}:{mm} {dow}",time:"{tt}{h}時{mm}分",past:"{num}{unit}{sign}",future:"{num}{unit}{sign}",duration:"{num}{unit}",ampm:"午前,午後",modifiers:[{name:"day",src:"一昨々日|前々々日",value:-3},{name:"day",src:"一昨日|おととい|前々日",value:-2},{name:"day",src:"昨日|前日",value:-1},{name:"day",src:"今日|当日|本日",value:0},{name:"day",src:"明日|翌日|次日",value:1},{name:"day",src:"明後日|翌々日",value:2},{name:"day",src:"明々後日|翌々々日",value:3},{name:"sign",src:"前",value:-1},{name:"sign",src:"後",value:1},{name:"edge",src:"始|初日|頭",value:-2},{name:"edge",src:"末|尻",value:2},{name:"edge",src:"末日",value:1},{name:"shift",src:"一昨々|前々々",value:-3},{name:"shift",src:"一昨|前々|先々",value:-2},{name:"shift",src:"先|昨|去|前",value:-1},{name:"shift",src:"今|本|当",value:0},{name:"shift",src:"来|明|翌|次",value:1},{name:"shift",src:"明後|翌々|次々|再来|さ来",value:2},{name:"shift",src:"明々後|翌々々",value:3}],parse:["{month}{edge}","{num}{unit}{sign}","{year?}{month}","{year}"],timeParse:["{day|weekday}","{shift}{unit:5}{weekday?}","{shift}{unit:7}{month}{edge}","{shift}{unit:7}{month?}{date?}","{shift}{unit:6}{edge?}{date?}","{year?}{month?}{date}"]})},function(t,e,n){"use strict";n(13)("it",{plural:!0,units:"millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i",months:"gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|",weekdays:"dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|",numerals:"zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci",tokens:"l'|la|il",short:"{dd}/{MM}/{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday}, {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{num} {unit} {sign}",duration:"{num} {unit}",timeMarkers:"alle",ampm:"am,pm",modifiers:[{name:"day",src:"ieri",value:-1},{name:"day",src:"oggi",value:0},{name:"day",src:"domani",value:1},{name:"day",src:"dopodomani",value:2},{name:"sign",src:"fa",value:-1},{name:"sign",src:"da adesso",value:1},{name:"shift",src:"scors:o|a",value:-1},{name:"shift",src:"prossim:o|a",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{0?} {unit:5-7} {shift}","{0?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"],timeFrontParse:["{shift?} {day|weekday}","{weekday?},? {date} {months?}\\.? {year?}"]})},function(t,e,n){"use strict";n(13)("fr",{plural:!0,units:"milliseconde:|s,seconde:|s,minute:|s,heure:|s,jour:|s,semaine:|s,mois,an:|s|née|nee",months:"janv:ier|,févr:ier|+fevr:ier|,mars,avr:il|,mai,juin,juil:let|,août,sept:embre|,oct:obre|,nov:embre|,déc:embre|+dec:embre|",weekdays:"dim:anche|,lun:di|,mar:di|,mer:credi|,jeu:di|,ven:dredi|,sam:edi|",numerals:"zéro,un:|e,deux,trois,quatre,cinq,six,sept,huit,neuf,dix",tokens:"l'|la|le,er",short:"{dd}/{MM}/{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday} {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"à",ampm:"am,pm",modifiers:[{name:"day",src:"hier",value:-1},{name:"day",src:"aujourd'hui",value:0},{name:"day",src:"demain",value:1},{name:"sign",src:"il y a",value:-1},{name:"sign",src:"dans|d'ici",value:1},{name:"shift",src:"derni:èr|er|ère|ere",value:-1},{name:"shift",src:"prochain:|e",value:1}],parse:["{months} {year?}","{sign} {num} {unit}","{0?} {unit:5-7} {shift}"],timeParse:["{day|weekday} {shift?}","{weekday?},? {0?} {date}{1?} {months}\\.? {year?}"],timeFrontParse:["{0?} {weekday} {shift}","{weekday?},? {0?} {date}{1?} {months}\\.? {year?}"]})},function(t,e,n){"use strict";n(13)("fi",{plural:!0,units:"millisekun:ti|tia|nin|teja|tina,sekun:ti|tia|nin|teja|tina,minuut:ti|tia|in|teja|tina,tun:ti|tia|nin|teja|tina,päiv:ä|ää|än|iä|änä,viik:ko|koa|on|olla|koja|kona,kuukau:si|tta|den+kuussa,vuo:si|tta|den|sia|tena|nna",months:"tammi:kuuta||kuu,helmi:kuuta||kuu,maalis:kuuta||kuu,huhti:kuuta||kuu,touko:kuuta||kuu,kesä:kuuta||kuu,heinä:kuuta||kuu,elo:kuuta||kuu,syys:kuuta||kuu,loka:kuuta||kuu,marras:kuuta||kuu,joulu:kuuta||kuu",weekdays:"su:nnuntai||nnuntaina,ma:anantai||anantaina,ti:istai||istaina,ke:skiviikko||skiviikkona,to:rstai||rstaina,pe:rjantai||rjantaina,la:uantai||uantaina",numerals:"nolla,yksi|ensimmäinen,kaksi|toinen,kolm:e|as,neljä:|s,vii:si|des,kuu:si|des,seitsemä:n|s,kahdeksa:n|s,yhdeksä:n|s,kymmene:n|s",short:"{d}.{M}.{yyyy}",medium:"{d}. {month} {yyyy}",long:"{d}. {month} {yyyy} klo {time}",full:"{weekday} {d}. {month} {yyyy} klo {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}.{mm}",timeMarkers:"klo,kello",ordinalSuffix:".",relative:function(t,e,n,i){var r=this.units;function numberWithUnit(n){return t+" "+r[8*n+e]}function baseUnit(){return numberWithUnit(1===t?0:1)}switch(i){case"duration":return baseUnit();case"past":return baseUnit()+" sitten";case"future":return numberWithUnit(2)+" kuluttua"}},modifiers:[{name:"day",src:"toissa päivänä",value:-2},{name:"day",src:"eilen|eilistä",value:-1},{name:"day",src:"tänään",value:0},{name:"day",src:"huomenna|huomista",value:1},{name:"day",src:"ylihuomenna|ylihuomista",value:2},{name:"sign",src:"sitten|aiemmin",value:-1},{name:"sign",src:"päästä|kuluttua|myöhemmin",value:1},{name:"edge",src:"lopussa",value:2},{name:"edge",src:"ensimmäinen|ensimmäisenä",value:-2},{name:"shift",src:"edel:linen|lisenä",value:-1},{name:"shift",src:"viime",value:-1},{name:"shift",src:"tä:llä|ssä|nä|mä",value:0},{name:"shift",src:"seuraava|seuraavana|tuleva|tulevana|ensi",value:1}],parse:["{months} {year?}","{shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date}\\.? {months?}\\.? {year?}"],timeFrontParse:["{shift?} {day|weekday}","{num?} {unit} {sign}","{weekday?},? {date}\\.? {months?}\\.? {year?}"]})},function(t,e,n){"use strict";n(13)("es",{plural:!0,units:"milisegundo:|s,segundo:|s,minuto:|s,hora:|s,día|días|dia|dias,semana:|s,mes:|es,año|años|ano|anos",months:"ene:ro|,feb:rero|,mar:zo|,abr:il|,may:o|,jun:io|,jul:io|,ago:sto|,sep:tiembre|,oct:ubre|,nov:iembre|,dic:iembre|",weekdays:"dom:ingo|,lun:es|,mar:tes|,mié:rcoles|+mie:rcoles|,jue:ves|,vie:rnes|,sáb:ado|+sab:ado|",numerals:"cero,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez",tokens:"el,la,de",short:"{dd}/{MM}/{yyyy}",medium:"{d} de {Month} de {yyyy}",long:"{d} de {Month} de {yyyy} {time}",full:"{weekday}, {d} de {month} de {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"a las",ampm:"am,pm",modifiers:[{name:"day",src:"anteayer",value:-2},{name:"day",src:"ayer",value:-1},{name:"day",src:"hoy",value:0},{name:"day",src:"mañana|manana",value:1},{name:"sign",src:"hace",value:-1},{name:"sign",src:"dentro de",value:1},{name:"shift",src:"pasad:o|a",value:-1},{name:"shift",src:"próximo|próxima|proximo|proxima",value:1}],parse:["{months} {2?} {year?}","{sign} {num} {unit}","{num} {unit} {sign}","{0?}{1?} {unit:5-7} {shift}","{0?}{1?} {shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday} {shift?}","{date} {2?} {months?}\\.? {2?} {year?}"],timeFrontParse:["{shift?} {weekday} {shift?}","{date} {2?} {months?}\\.? {2?} {year?}"]})},function(t,e,n){"use strict";n(13)("de",{plural:!0,units:"Millisekunde:|n,Sekunde:|n,Minute:|n,Stunde:|n,Tag:|en,Woche:|n,Monat:|en,Jahr:|en|e",months:"Jan:uar|,Feb:ruar|,M:är|ärz|ar|arz,Apr:il|,Mai,Juni,Juli,Aug:ust|,Sept:ember|,Okt:ober|,Nov:ember|,Dez:ember|",weekdays:"So:nntag|,Mo:ntag|,Di:enstag|,Mi:ttwoch|,Do:nnerstag|,Fr:eitag|,Sa:mstag|",numerals:"null,ein:|e|er|en|em,zwei,drei,vier,fuenf,sechs,sieben,acht,neun,zehn",tokens:"der",short:"{dd}.{MM}.{yyyy}",medium:"{d}. {Month} {yyyy}",long:"{d}. {Month} {yyyy} {time}",full:"{Weekday}, {d}. {Month} {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"um",ampm:"am,pm",modifiers:[{name:"day",src:"vorgestern",value:-2},{name:"day",src:"gestern",value:-1},{name:"day",src:"heute",value:0},{name:"day",src:"morgen",value:1},{name:"day",src:"übermorgen|ubermorgen|uebermorgen",value:2},{name:"sign",src:"vor:|her",value:-1},{name:"sign",src:"in",value:1},{name:"shift",src:"letzte:|r|n|s",value:-1},{name:"shift",src:"nächste:|r|n|s+nachste:|r|n|s+naechste:|r|n|s+kommende:n|r",value:1}],parse:["{months} {year?}","{sign} {num} {unit}","{num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{shift?} {day|weekday}","{weekday?},? {date}\\.? {months?}\\.? {year?}"],timeFrontParse:["{shift} {weekday}","{weekday?},? {date}\\.? {months?}\\.? {year?}"]})},function(t,e,n){"use strict";n(13)("da",{plural:!0,units:"millisekund:|er,sekund:|er,minut:|ter,tim:e|er,dag:|e,ug:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et",months:"jan:uar|,feb:ruar|,mar:ts|,apr:il|,maj,jun:i|,jul:i|,aug:ust|,sep:tember|,okt:ober|,nov:ember|,dec:ember|",weekdays:"søn:dag|+son:dag|,man:dag|,tir:sdag|,ons:dag|,tor:sdag|,fre:dag|,lør:dag|+lor:dag|",numerals:"nul,en|et,to,tre,fire,fem,seks,syv,otte,ni,ti",tokens:"den,for",articles:"den",short:"{dd}-{MM}-{yyyy}",medium:"{d}. {month} {yyyy}",long:"{d}. {month} {yyyy} {time}",full:"{weekday} d. {d}. {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{sign} {num} {unit}",duration:"{num} {unit}",ampm:"am,pm",modifiers:[{name:"day",src:"forgårs|i forgårs|forgaars|i forgaars",value:-2},{name:"day",src:"i går|igår|i gaar|igaar",value:-1},{name:"day",src:"i dag|idag",value:0},{name:"day",src:"i morgen|imorgen",value:1},{name:"day",src:"over morgon|overmorgen|i over morgen|i overmorgen|iovermorgen",value:2},{name:"sign",src:"siden",value:-1},{name:"sign",src:"om",value:1},{name:"shift",src:"i sidste|sidste",value:-1},{name:"shift",src:"denne",value:0},{name:"shift",src:"næste|naeste",value:1}],parse:["{months} {year?}","{num} {unit} {sign}","{sign} {num} {unit}","{1?} {num} {unit} {sign}","{shift} {unit:5-7}"],timeParse:["{day|weekday}","{date} {months?}\\.? {year?}"],timeFrontParse:["{shift} {weekday}","{0?} {weekday?},? {date}\\.? {months?}\\.? {year?}"]})},function(t,e,n){"use strict";n(13)("ca",{plural:!0,units:"milisegon:|s,segon:|s,minut:|s,hor:a|es,di:a|es,setman:a|es,mes:|os,any:|s",months:"gen:er|,febr:er|,mar:ç|,abr:il|,mai:g|,jun:y|,jul:iol|,ag:ost|,set:embre|,oct:ubre|,nov:embre|,des:embre|",weekdays:"diumenge|dg,dilluns|dl,dimarts|dt,dimecres|dc,dijous|dj,divendres|dv,dissabte|ds",numerals:"zero,un,dos,tres,quatre,cinc,sis,set,vuit,nou,deu",tokens:"el,la,de",short:"{dd}/{MM}/{yyyy}",medium:"{d} {month} {yyyy}",long:"{d} {month} {yyyy} {time}",full:"{weekday} {d} {month} {yyyy} {time}",stamp:"{dow} {d} {mon} {yyyy} {time}",time:"{H}:{mm}",past:"{sign} {num} {unit}",future:"{sign} {num} {unit}",duration:"{num} {unit}",timeMarkers:"a las",ampm:"am,pm",modifiers:[{name:"day",src:"abans d'ahir",value:-2},{name:"day",src:"ahir",value:-1},{name:"day",src:"avui",value:0},{name:"day",src:"demà|dema",value:1},{name:"sign",src:"fa",value:-1},{name:"sign",src:"en",value:1},{name:"shift",src:"passat",value:-1},{name:"shift",src:"el proper|la propera",value:1}],parse:["{sign} {num} {unit}","{num} {unit} {sign}","{0?}{1?} {unit:5-7} {shift}","{0?}{1?} {shift} {unit:5-7}"],timeParse:["{shift} {weekday}","{weekday} {shift}","{date?} {2?} {months}\\.? {2?} {year?}"]})},function(t,e,n){"use strict";n(146),n(145),n(144),n(143),n(142),n(141),n(140),n(139),n(138),n(137),n(136),n(135),n(134),n(133),n(132),n(131),n(130),t.exports=n(0)},function(t,e,n){"use strict";n(25)},function(t,e,n){"use strict";n(25)},function(t,e,n){"use strict";var i=n(18);n(21)(i,{union:function(t){return new i(this.startt.end?this.end:t.end)}})},function(t,e,n){"use strict";var i=n(18),r=n(47);n(21)(i,{toString:function(){return r(this)?this.start+".."+this.end:"Invalid Range"}})},function(t,e,n){"use strict";var i=n(18),r=n(60);n(21)(i,{toArray:function(){return r(this)}})},function(t,e,n){"use strict";var i=n(12).isString;t.exports=function getRangeMemberNumericValue(t){return i(t)?t.charCodeAt(0):t}},function(t,e,n){"use strict";var i=n(18),r=n(14),s=n(47),a=n(21),o=n(153),u=r.abs;a(i,{span:function(){var t=o(this.end)-o(this.start);return s(this)?u(t)+1:NaN}})},function(t,e,n){"use strict";n(25)},function(t,e,n){"use strict";n(25)},function(t,e,n){"use strict";n(25)},function(t,e,n){"use strict";n(25)},function(t,e,n){"use strict";var i=n(18),r=n(47);n(21)(i,{isValid:function(){return r(this)}})},function(t,e,n){"use strict";var i=n(18);n(21)(i,{intersect:function(t){return t.start>this.end||t.endt.start?this.start:t.start,this.end=this.start&&t.start<=this.end&&t.end>=this.start&&t.end<=this.end:t>=this.start&&t<=this.end)}})},function(t,e,n){"use strict";var i=n(18);n(21)(i,{clone:function(){return new i(this.start,this.end)}})},function(t,e,n){"use strict";var i=n(99);t.exports=function rangeClamp(t,e){var n=t.start,r=t.end,s=rr?n:r;return i(ea?a:e)}},function(t,e,n){"use strict";var i=n(18),r=n(174);n(21)(i,{clamp:function(t){return r(this,t)}})},function(t,e,n){"use strict";var i=n(61);t.exports=RegExp("(\\d+)?\\s*("+i+")s?","i")},function(t,e,n){"use strict";var i=n(61);t.exports="((?:\\d+)?\\s*(?:"+i+"))s?"},function(t,e,n){"use strict";var i=n(177);t.exports={RANGE_REG_FROM_TO:/(?:from)?\s*(.+)\s+(?:to|until)\s+(.+)$/i,RANGE_REG_REAR_DURATION:RegExp("(.+)\\s*for\\s*"+i,"i"),RANGE_REG_FRONT_DURATION:RegExp("(?:for)?\\s*"+i+"\\s*(?:starting)?\\s(?:at\\s)?(.+)","i")}},function(t,e,n){"use strict";var i=n(18),r=n(178),s=n(96),a=n(97),o=n(26),u=n(94),l=o.sugarDate,c=r.RANGE_REG_FROM_TO,f=r.RANGE_REG_REAR_DURATION,d=r.RANGE_REG_FRONT_DURATION;t.exports=function createDateRangeFromString(t){var e,n,r,o,h,p;return l.get&&(e=t.match(c))?(h=a(e[1].replace("from","at")),p=l.get(h,e[2]),new i(h,p)):((e=t.match(d))&&(r=e[1],n=e[2]),(e=t.match(f))&&(n=e[1],r=e[2]),n&&r?(h=a(n),o=u(r),p=s(h,o[0],o[1])):h=t,new i(a(h),a(p)))}},function(t,e,n){"use strict";var i=n(18),r=n(12),s=n(97),a=n(179),o=r.isString;t.exports=function(t,e){return 1===arguments.length&&o(t)?a(t):new i(s(t),s(e))}},function(t,e,n){"use strict";var i=n(0),r=n(180);i.Date.defineStatic({range:r}),t.exports=i.Date.range},function(t,e,n){"use strict";n(181),n(175),n(173),n(172),n(171),n(162),n(161),n(160),n(159),n(158),n(157),n(156),n(155),n(154),n(152),n(151),n(150),n(149),n(148),t.exports=n(0)},function(t,e,n){"use strict";var i=n(0);n(67);t.exports=i.Date.setOption},function(t,e,n){"use strict";var i=n(0);n(67);t.exports=i.Date.getOption},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.yearsUntil},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.yearsSince},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.yearsFromNow},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.yearsAgo},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.weeksUntil},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.weeksSince},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.weeksFromNow},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.weeksAgo},function(t,e,n){"use strict";var i=n(0),r=n(27);i.Date.defineInstance({setWeekday:function(t,e){return r(t,e)}}),t.exports=i.Date.setWeekday},function(t,e,n){"use strict";var i=n(0),r=n(29);i.Date.defineInstance({setUTC:function(t,e){return r(t,e)}}),t.exports=i.Date.setUTC},function(t,e,n){"use strict";var i=n(0),r=n(114);i.Date.defineInstance({setISOWeek:function(t,e){return r(t,e)}}),t.exports=i.Date.setISOWeek},function(t,e,n){"use strict";var i=n(0),r=n(53),s=n(107);i.Date.defineInstanceWithArguments({set:function(t,e){return e=s(e),r(t,e[0],e[1])}}),t.exports=i.Date.set},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.secondsUntil},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.secondsSince},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.secondsFromNow},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.secondsAgo},function(t,e,n){"use strict";var i=n(0),r=n(108);i.Date.defineInstanceWithArguments({rewind:function(t,e){return r(t,e,-1)}}),t.exports=i.Date.rewind},function(t,e,n){"use strict";var i=n(52);t.exports=function getUnitIndexForParamName(t){var e,n={};return n[t]=1,i(n,function(t,n,i,r){return e=r,!1}),e}},function(t,e,n){"use strict";var i=n(0),r=n(11),s=n(50),a=n(202),o=r.DAY_INDEX;i.Date.defineInstance({reset:function(t,e,n){var i=e?a(e):o;return s(t,i,n),t}}),t.exports=i.Date.reset},function(t,e,n){"use strict";var i=n(0),r=n(30),s=n(100);i.Date.defineInstance({relativeTo:function(t,e,n){return s(t,r(e),n)}}),t.exports=i.Date.relativeTo},function(t,e,n){"use strict";var i=n(43),r=n(14),s=n(118),a=n(64),o=r.abs;t.exports=function getAdjustedUnitForDate(t,e){return e||(e=i(),t>e&&(e=new Date(e.getTime()-10))),s(t-e,function(n){return o(a(t,e,n))})}},function(t,e,n){"use strict";var i=n(0),r=n(100);i.Date.defineInstance({relative:function(t,e,n){return r(t,null,e,n)}}),t.exports=i.Date.relative},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.monthsUntil},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.monthsSince},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.monthsFromNow},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.monthsAgo},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.minutesUntil},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.minutesSince},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.minutesFromNow},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.minutesAgo},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.millisecondsUntil},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.millisecondsSince},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.millisecondsFromNow},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.millisecondsAgo},function(t,e,n){"use strict";var i=n(0);i.Date.defineInstance({iso:function(t){return t.toISOString()}}),t.exports=i.Date.iso},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isYesterday},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isWeekend},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isWeekday},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isWednesday},function(t,e,n){"use strict";var i=n(0),r=n(48);i.Date.defineInstance({isValid:function(t){return r(t)}}),t.exports=i.Date.isValid},function(t,e,n){"use strict";var i=n(29),r=n(54);t.exports=function isUTC(t){return!!i(t)||0===r(t)}},function(t,e,n){"use strict";var i=n(0),r=n(225);i.Date.defineInstance({isUTC:function(t){return r(t)}}),t.exports=i.Date.isUTC},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isTuesday},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isTomorrow},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isToday},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isThursday},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.isThisYear},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.isThisWeek},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.isThisMonth},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isSunday},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isSaturday},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isPast},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.isNextYear},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.isNextWeek},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.isNextMonth},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isMonday},function(t,e,n){"use strict";var i=n(0),r=n(32);i.Date.defineInstance({isLeapYear:function(t){var e=r(t);return e%4==0&&e%100!=0||e%400==0}}),t.exports=i.Date.isLeapYear},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.isLastYear},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.isLastWeek},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.isLastMonth},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isFuture},function(t,e,n){"use strict";var i=n(15),r=n(55),s=n(101),a=n(26),o=n(49),u=i.English,l=a.sugarDate;t.exports=function buildRelativeAliases(){var t=r("Today Yesterday Tomorrow Weekday Weekend Future Past"),e=u.weekdays.slice(0,7),n=u.months.slice(0,12),i=t.concat(e).concat(n);o(l,i,function(t,e){t["is"+e]=function(t){return s(t,e)}})}},function(t,e,n){"use strict";var i=n(0);n(17),t.exports=i.Date.isFriday},function(t,e,n){"use strict";var i=n(0),r=n(30),s=n(14),a=s.min,o=s.max;i.Date.defineInstance({isBetween:function(t,e,n,i){var s=t.getTime(),u=r(e).getTime(),l=r(n).getTime(),c=a(u,l),f=o(u,l);return c-(i=i||0)<=s&&f+i>=s}}),t.exports=i.Date.isBetween},function(t,e,n){"use strict";var i=n(0),r=n(30);i.Date.defineInstance({isBefore:function(t,e,n){return t.getTime()r(e).getTime()-(n||0)}}),t.exports=i.Date.isAfter},function(t,e,n){"use strict";var i=n(39),r=n(38),s=n(32),a=n(31),o=n(43);t.exports=function compareDay(t,e){var n=o();return e&&i(n,r(n)+e),s(t)===s(n)&&a(t)===a(n)&&r(t)===r(n)}},function(t,e,n){"use strict";t.exports=function trim(t){return t.trim()}},function(t,e,n){"use strict";var i=n(0),r=n(101);i.Date.defineInstance({is:function(t,e,n){return r(t,e,n)}}),t.exports=i.Date.is},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.hoursUntil},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.hoursSince},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.hoursFromNow},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.hoursAgo},function(t,e,n){"use strict";var i=n(0),r=n(24);i.Date.defineInstance({getWeekday:function(t){return r(t)}}),t.exports=i.Date.getWeekday},function(t,e,n){"use strict";var i=n(0);i.Date.defineInstance({getUTCWeekday:function(t){return t.getUTCDay()}}),t.exports=i.Date.getUTCWeekday},function(t,e,n){"use strict";var i=n(0),r=n(103);i.Date.defineInstance({getUTCOffset:function(t,e){return r(t,e)}}),t.exports=i.Date.getUTCOffset},function(t,e,n){"use strict";var i=n(0),r=n(62);i.Date.defineInstance({getISOWeek:function(t){return r(t,!0)}}),t.exports=i.Date.getISOWeek},function(t,e,n){"use strict";var i=n(0),r=n(109);i.Date.defineInstance({get:function(t,e,n){return r(t,e,n)}}),t.exports=i.Date.get},function(t,e,n){"use strict";t.exports=1e3},function(t,e,n){"use strict";var i=n(263),r=n(16).hasOwn;t.exports=function memoizeFunction(t){var e={},n=0;return function(s){return r(e,s)?e[s]:(n===i&&(e={},n=0),n++,e[s]=t(s))}}},function(t,e,n){"use strict";t.exports=/([{}])\1|\{([^}]*)\}|(%)%|(%(\w*))/g},function(t,e,n){"use strict";var i=n(265),r=n(56),s=n(264),a=r.OPEN_BRACE,o=r.CLOSE_BRACE;t.exports=function createFormatMatcher(t,e,n){var r=i,u=s(function compile(t){var e,n=[],i=0;for(r.lastIndex=0;e=r.exec(t);)getSubstring(n,t,i,e.index),getToken(n,e),i=r.lastIndex;return getSubstring(n,t,i,t.length),n});function getToken(i,r){var s,a,o,u,l=r[2],c=r[3],f=r[5];r[4]&&e?(a=f,s=e):l?(a=l,s=t):o=c&&e?c:r[1]||r[0],s&&(function assertPassesPrecheck(t,e,n){if(t&&!t(e,n))throw new TypeError("Invalid token "+(e||n)+" in format string")}(n,l,f),u=function(t,e){return s(t,a,e)}),i.push(u||function getLiteral(t){return function(){return t}}(o))}function getSubstring(t,e,n,i){if(i>n){var r=e.slice(n,i);assertNoUnmatched(r,a),assertNoUnmatched(r,o),t.push(function(){return r})}}function assertNoUnmatched(t,e){if(-1!==t.indexOf(e))throw new TypeError("Unmatched "+e+" in format string")}return function(t,e,n){for(var i=u(t),r="",s=0;s0;)1&e&&(n+=t),(e>>=1)&&(t+=t);return n}},function(t,e,n){"use strict";t.exports=/(\w{3})[()\s\d]*$/},function(t,e,n){"use strict";var i=n(271),r=n(15),s=n(11),a=n(28),o=n(38),u=n(32),l=n(104),c=n(31),f=n(37),d=n(63),h=n(24),p=n(23),m=n(14),y=n(269),g=n(103),b=n(268),v=n(62),O=n(267),_=n(41),C=r.localeManager,w=s.MONTH_INDEX,x=m.ceil,k=[{ldml:"Dow",strf:"a",lowerToken:"dow",get:function(t,e){return C.get(e).getWeekdayName(h(t),2)}},{ldml:"Weekday",strf:"A",lowerToken:"weekday",allowAlternates:!0,get:function(t,e,n){return C.get(e).getWeekdayName(h(t),n)}},{ldml:"Mon",strf:"b h",lowerToken:"mon",get:function(t,e){return C.get(e).getMonthName(c(t),2)}},{ldml:"Month",strf:"B",lowerToken:"month",allowAlternates:!0,get:function(t,e,n){return C.get(e).getMonthName(c(t),n)}},{strf:"C",get:function(t){return u(t).toString().slice(0,2)}},{ldml:"d date day",strf:"d",strfPadding:2,ldmlPaddedToken:"dd",ordinalToken:"do",get:function(t){return o(t)}},{strf:"e",get:function(t){return d(o(t),2,!1,10," ")}},{ldml:"H 24hr",strf:"H",strfPadding:2,ldmlPaddedToken:"HH",get:function(t){return l(t)}},{ldml:"h hours 12hr",strf:"I",strfPadding:2,ldmlPaddedToken:"hh",get:function(t){return l(t)%12||12}},{ldml:"D",strf:"j",strfPadding:3,ldmlPaddedToken:"DDD",get:function(t){var e=_(f(t),w);return b(t,e)+1}},{ldml:"M",strf:"m",strfPadding:2,ordinalToken:"Mo",ldmlPaddedToken:"MM",get:function(t){return c(t)+1}},{ldml:"m minutes",strf:"M",strfPadding:2,ldmlPaddedToken:"mm",get:function(t){return p(t,"Minutes")}},{ldml:"Q",get:function(t){return x((c(t)+1)/3)}},{ldml:"TT",strf:"p",get:function(t,e){return O(t,e)}},{ldml:"tt",strf:"P",get:function(t,e){return O(t,e).toLowerCase()}},{ldml:"T",lowerToken:"t",get:function(t,e){return O(t,e).charAt(0)}},{ldml:"s seconds",strf:"S",strfPadding:2,ldmlPaddedToken:"ss",get:function(t){return p(t,"Seconds")}},{ldml:"S ms",strfPadding:3,ldmlPaddedToken:"SSS",get:function(t){return p(t,"Milliseconds")}},{ldml:"e",strf:"u",ordinalToken:"eo",get:function(t){return h(t)||7}},{strf:"U",strfPadding:2,get:function(t){return v(t,!1,0)}},{ldml:"W",strf:"V",strfPadding:2,ordinalToken:"Wo",ldmlPaddedToken:"WW",get:function(t){return v(t,!0)}},{strf:"w",get:function(t){return h(t)}},{ldml:"w",ordinalToken:"wo",ldmlPaddedToken:"ww",get:function(t,e){var n=C.get(e),i=n.getFirstDayOfWeek(e),r=n.getFirstDayOfWeekYear(e);return v(t,!0,i,r)}},{strf:"W",strfPadding:2,get:function(t){return v(t,!1)}},{ldmlPaddedToken:"gggg",ldmlTwoDigitToken:"gg",get:function(t,e){return y(t,e)}},{strf:"G",strfPadding:4,strfTwoDigitToken:"g",ldmlPaddedToken:"GGGG",ldmlTwoDigitToken:"GG",get:function(t,e){return y(t,e,!0)}},{ldml:"year",ldmlPaddedToken:"yyyy",ldmlTwoDigitToken:"yy",strf:"Y",strfPadding:4,strfTwoDigitToken:"y",get:function(t){return u(t)}},{ldml:"ZZ",strf:"z",get:function(t){return g(t)}},{ldml:"X",get:function(t){return a(t.getTime()/1e3)}},{ldml:"x",get:function(t){return t.getTime()}},{ldml:"Z",get:function(t){return g(t,!0)}},{ldml:"z",strf:"Z",get:function(t){var e=t.toString().match(i);return e?e[1]:""}},{strf:"D",alias:"%m/%d/%y"},{strf:"F",alias:"%Y-%m-%d"},{strf:"r",alias:"%I:%M:%S %p"},{strf:"R",alias:"%H:%M"},{strf:"T",alias:"%H:%M:%S"},{strf:"x",alias:"{short}"},{strf:"X",alias:"{time}"},{strf:"c",alias:"{stamp}"}];t.exports=k},function(t,e,n){"use strict";var i,r,s,a=n(15),o=n(272),u=n(105),l=n(35),c=n(63),f=n(55),d=n(26),h=n(16),p=n(266),m=n(49),y=a.localeManager,g=h.hasOwn,b=h.getOwn,v=h.forEachProperty,O=d.sugarDate;!function buildDateFormatTokens(){function addFormats(t,e,n){e&&l(f(e),function(e){t[e]=n})}function buildLowercase(t){return function(e,n){return t(e,n).toLowerCase()}}function buildPadded(t,e){return function(n,i){return c(t(n,i),e)}}function buildTwoDigits(t){return function(e,n){return t(e,n)%100}}function buildAlias(t){return function(e,n){return s(t,e,n)}}function buildAlternate(t,e){var n=function(n,i){return t.get(n,i,e)};addFormats(i,t.ldml+e,n),t.lowerToken&&(i[t.lowerToken+e]=buildLowercase(n))}function getIdentityFormat(t){return function(e,n){var i=y.get(n);return s(i[t],e,n)}}i={},r={},l(o,function(t){var e,n=t.get;t.lowerToken&&(i[t.lowerToken]=buildLowercase(n)),t.ordinalToken&&(i[t.ordinalToken]=function buildOrdinal(t){return function(e,n){var i=t(e,n);return i+y.get(n).getOrdinal(i)}}(n)),t.ldmlPaddedToken&&(i[t.ldmlPaddedToken]=buildPadded(n,t.ldmlPaddedToken.length)),t.ldmlTwoDigitToken&&(i[t.ldmlTwoDigitToken]=buildPadded(buildTwoDigits(n),2)),t.strfTwoDigitToken&&(r[t.strfTwoDigitToken]=buildPadded(buildTwoDigits(n),2)),t.strfPadding&&(e=buildPadded(n,t.strfPadding)),t.alias&&(n=buildAlias(t.alias)),t.allowAlternates&&function buildAlternates(t){for(var e=1;e<=5;e++)buildAlternate(t,e)}(t),addFormats(i,t.ldml,n),addFormats(r,t.strf,e||n)}),v(u,function(t,e){addFormats(i,e,buildAlias(t))}),m(O,"short medium long full",function(t,e){var n=getIdentityFormat(e);addFormats(i,e,n),t[e]=n}),addFormats(i,"time",getIdentityFormat("time")),addFormats(i,"stamp",getIdentityFormat("stamp"))}(),function buildDateFormatMatcher(){s=p(function getLdml(t,e,n){return b(i,e)(t,n)},function getStrf(t,e,n){return b(r,e)(t,n)},function checkDateToken(t,e){return g(i,t)||g(r,e)})}(),t.exports={ldmlTokens:i,strfTokens:r,dateFormatMatcher:s}},function(t,e,n){"use strict";var i=n(0),r=n(106);i.Date.defineInstance({format:function(t,e,n){return r(t,e,n)}}),t.exports=i.Date.format},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.endOfYear},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.endOfWeek},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.endOfMonth},function(t,e,n){"use strict";var i=n(0),r=n(11),s=n(24),a=n(27),o=n(51),u=r.DAY_INDEX;i.Date.defineInstance({endOfISOWeek:function(t){return 0!==s(t)&&a(t,7),o(t,u)}}),t.exports=i.Date.endOfISOWeek},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.endOfDay},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.daysUntil},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.daysSince},function(t,e,n){"use strict";var i=n(0),r=n(121);i.Date.defineInstance({daysInMonth:function(t){return r(t)}}),t.exports=i.Date.daysInMonth},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.daysFromNow},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.daysAgo},function(t,e,n){"use strict";var i=n(0),r=n(37);i.Date.defineInstance({clone:function(t){return r(t)}}),t.exports=i.Date.clone},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.beginningOfYear},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.beginningOfWeek},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.beginningOfMonth},function(t,e,n){"use strict";var i=n(0),r=n(116),s=n(24),a=n(27);i.Date.defineInstance({beginningOfISOWeek:function(t){var e=s(t);return 0===e?e=-6:1!==e&&(e=1),a(t,e),r(t)}}),t.exports=i.Date.beginningOfISOWeek},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.beginningOfDay},function(t,e,n){"use strict";var i=n(11),r=n(34),s=n(115),a=i.YEAR_INDEX;t.exports=function collectDateParamsFromArguments(t){var e={},n=0;return s(a,function(i){var s=t[n++];r(s)&&(e[i.name]=s)}),e}},function(t,e,n){"use strict";var i=n(45);t.exports=function getDateParamsFromString(t){var e,n,r={};return(e=t.match(/^(-?\d*[\d.]\d*)?\s?(\w+?)s?$/i))&&(i(n)&&(n=+e[1],isNaN(n)&&(n=1)),r[e[2].toLowerCase()]=n),r}},function(t,e,n){"use strict";var i=n(0),r=n(108);i.Date.defineInstanceWithArguments({advance:function(t,e){return r(t,e,1)}}),t.exports=i.Date.advance},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.addYears},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.addWeeks},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.addSeconds},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.addMonths},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.addMinutes},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.addMilliseconds},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.addHours},function(t,e,n){"use strict";var i=n(33),r=n(11),s=n(35),a=n(110),o=n(42),u=n(51),l=n(65),c=n(26),f=n(49),d=n(50),h=n(109),p=n(64),m=c.sugarDate,y=r.HOURS_INDEX,g=r.DAY_INDEX;t.exports=function buildDateUnitMethods(){f(m,i,function(t,e,n){var i=e.name,r=l(i);n>g&&s(["Last","This","Next"],function(e){t["is"+e+r]=function(t,n){return a(t,e+" "+i,0,n,{locale:"en"})}}),n>y&&(t["beginningOf"+r]=function(t,e){return d(t,n,e)},t["endOf"+r]=function(t,e){return u(t,n,e)}),t["add"+r+"s"]=function(t,e,n){return o(t,i,e,n)},t[i+"sAgo"]=t[i+"sUntil"]=function(t,n,i){return p(h(t,n,i,!0),t,e)},t[i+"sSince"]=t[i+"sFromNow"]=function(t,n,i){return p(t,h(t,n,i,!0),e)}})}},function(t,e,n){"use strict";var i=n(0);n(7),t.exports=i.Date.addDays},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.yearsFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.yearsBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.yearsAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.yearsAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.years},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.yearFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.yearBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.yearAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.yearAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.year},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.weeksFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.weeksBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.weeksAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.weeksAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.weeks},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.weekFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.weekBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.weekAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.weekAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.week},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.secondsFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.secondsBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.secondsAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.secondsAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.seconds},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.secondFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.secondBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.secondAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.secondAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.second},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.monthsFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.monthsBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.monthsAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.monthsAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.months},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.monthFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.monthBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.monthAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.monthAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.month},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.minutesFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.minutesBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.minutesAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.minutesAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.minutes},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.minuteFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.minuteBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.minuteAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.minuteAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.minute},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.millisecondsFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.millisecondsBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.millisecondsAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.millisecondsAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.milliseconds},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.millisecondFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.millisecondBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.millisecondAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.millisecondAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.millisecond},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.hoursFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.hoursBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.hoursAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.hoursAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.hours},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.hourFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.hourBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.hourAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.hourAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.hour},function(t,e,n){"use strict";var i=n(0),r=n(15).localeManager;i.Number.defineInstance({duration:function(t,e){return r.get(e).getDuration(t)}}),t.exports=i.Number.duration},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.daysFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.daysBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.daysAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.daysAfter},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.days},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.dayFromNow},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.dayBefore},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.dayAgo},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.dayAfter},function(t,e,n){"use strict";var i=n(35),r=n(55),s=n(12).isString;t.exports=function collectSimilarMethods(t,e){var n={};return s(t)&&(t=r(t)),i(t,function(t,i){e(n,t,i)}),n}},function(t,e,n){"use strict";t.exports=function wrapNamespace(t){return function(e,n,i){e[t](n,i)}}},function(t,e,n){"use strict";var i=n(384);t.exports={alias:i("alias"),defineStatic:i("defineStatic"),defineInstance:i("defineInstance"),defineStaticPolyfill:i("defineStaticPolyfill"),defineInstancePolyfill:i("defineInstancePolyfill"),defineInstanceAndStatic:i("defineInstanceAndStatic"),defineInstanceWithArguments:i("defineInstanceWithArguments")}},function(t,e,n){"use strict";var i=n(33),r=n(30),s=n(14),a=n(42),o=n(26),u=n(49),l=o.sugarNumber,c=s.round;t.exports=function buildNumberUnitMethods(){u(l,i,function(t,e){var n,i,s,o=e.name;n=function(t){return c(t*e.multiplier)},i=function(t,e,n){return a(r(e,n,!0),o,t)},s=function(t,e,n){return a(r(e,n,!0),o,-t)},t[o]=n,t[o+"s"]=n,t[o+"Before"]=s,t[o+"sBefore"]=s,t[o+"Ago"]=s,t[o+"sAgo"]=s,t[o+"After"]=i,t[o+"sAfter"]=i,t[o+"FromNow"]=i,t[o+"sFromNow"]=i})}},function(t,e,n){"use strict";var i=n(0);n(6),t.exports=i.Number.day},function(t,e,n){"use strict";var i=n(0),r=n(15).localeManager;i.Date.defineStatic({setLocale:function(t){return r.set(t)}}),t.exports=i.Date.setLocale},function(t,e,n){"use strict";var i=n(0),r=n(15).localeManager;i.Date.defineStatic({removeLocale:function(t){return r.remove(t)}}),t.exports=i.Date.removeLocale},function(t,e,n){"use strict";var i=n(0),r=n(15).localeManager;i.Date.defineStatic({getLocale:function(t){return r.get(t,!t)}}),t.exports=i.Date.getLocale},function(t,e,n){"use strict";var i=n(0),r=n(15).localeManager;i.Date.defineStatic({getAllLocales:function(){return r.getAll()}}),t.exports=i.Date.getAllLocales},function(t,e,n){"use strict";t.exports=function getKeys(t){return Object.keys(t)}},function(t,e,n){"use strict";var i=n(0),r=n(15),s=n(392),a=r.localeManager;i.Date.defineStatic({getAllLocaleCodes:function(){return s(a.getAll())}}),t.exports=i.Date.getAllLocaleCodes},function(t,e,n){"use strict";t.exports=function setChainableConstructor(t,e){t.prototype.constructor=function(){return e.apply(this,arguments)}}},function(t,e,n){"use strict";var i=n(30),r=n(26),s=n(394),a=r.sugarDate;t.exports=function setDateChainableConstructor(){s(a,i)}},function(t,e,n){"use strict";n(395)()},function(t,e,n){"use strict";var i=n(11),r=n(52),s=i.DAY_INDEX,a=i.YEAR_INDEX;t.exports=function iterateOverHigherDateParams(t,e){r(t,e,a,s)}},function(t,e,n){"use strict";var i=n(32),r=n(14).abs;t.exports=function getYearFromAbbreviation(t,e,n){var s,a=+t;return a+=a<50?2e3:1900,n&&(s=a-i(e))/r(s)!==n&&(a+=100*n),a}},function(t,e,n){"use strict";t.exports=function getParsingTokenValue(t,e){var n;return n=t.val?t.val:t.sign?"+"===e?1:-1:t.bool?!!n:+e.replace(/,/,"."),"month"===t.param&&(n-=1),n}},function(t,e,n){"use strict";var i=n(112);t.exports=function deleteDateParam(t,e){delete t[i(t,e)]}},function(t,e,n){"use strict";var i=n(16).hasOwn;t.exports=function getOwnKey(t,e){if(i(t,e))return e}},function(t,e,n){"use strict";var i=n(112),r=n(16).getOwn;t.exports=function getDateParam(t,e){return r(t,i(t,e))}},function(t,e,n){"use strict";var i=n(40);t.exports=function setMonth(t,e){i(t,"Month",e)}},function(t,e,n){"use strict";var i=n(40);t.exports=function setYear(t,e){i(t,"FullYear",e)}},function(t,e,n){"use strict";var i=n(40),r=n(114);t.exports=function callDateSetWithWeek(t,e,n,s){"ISOWeek"===e?r(t,n):i(t,e,n,s)}},function(t,e,n){"use strict";var i=n(11),r=i.DAY_INDEX,s=i.MONTH_INDEX;t.exports=function getHigherUnitIndex(t){return t===r?s:t+1}},function(t,e,n){"use strict";var i=n(44),r=n(41);t.exports=function resetLowerUnits(t,e){return r(t,i(e))}},function(t,e,n){"use strict";var i=n(16).setProperty;t.exports=function defineAccessor(t,e,n){i(t,e,n)}},function(t,e,n){"use strict";var i=n(57),r=n(408),s=n(16).forEachProperty;t.exports=function defineOptionsAccessor(t,e){var n=i(e);function getOption(t){return n[t]}return r(t,"getOption",getOption),r(t,"setOption",function setOption(t,i){var r;1===arguments.length?r=t:(r={})[t]=i,s(r,function(t,i){null===t&&(t=e[i]),n[i]=t})}),getOption}},function(t,e,n){"use strict";t.exports=function defaultNewDate(){return new Date}},function(t,e,n){"use strict";var i={newDateInternal:n(410)};t.exports=i},function(t,e,n){"use strict";var i=n(0),r=n(30);n(396),i.Date.defineStatic({create:function(t,e){return r(t,e)}}),t.exports=i.Date.create},function(t,e,n){"use strict";var i=n(125),r=n(122);t.exports=function getParsingTokenWithSuffix(t,e,n){var s=i[t];return s.requiresSuffix?e=r(e+r(n)):s.requiresSuffixOr?e+=r(s.requiresSuffixOr+"|"+n):e+=r(n,!0),e}},function(t,e,n){"use strict";var i=n(28),r=n(119),s=n(118);t.exports=function getAdjustedUnitForNumber(t){return s(t,function(e){return i(r(t/e.multiplier,1))})}},function(t,e,n){"use strict";t.exports=function allCharsReg(t){return RegExp("["+t+"]","g")}},function(t,e,n){"use strict";var i,r,s,a=n(56),o=n(120),u=n(415),l=a.HALF_WIDTH_ZERO,c=a.FULL_WIDTH_ZERO,f=a.HALF_WIDTH_PERIOD,d=a.FULL_WIDTH_PERIOD,h=a.HALF_WIDTH_COMMA;!function buildFullWidthNumber(){var t=d,e=f,n=h,a="";r={};for(var p,m=0;m<=9;m++)a+=p=o(m+c),r[p]=o(m+l);r[n]="",r[t]=e,r[e]=e,i=u(a+t+n+e),s=a}(),t.exports={fullWidthNumberReg:i,fullWidthNumberMap:r,fullWidthNumbers:s}},function(t,e,n){"use strict";var i=n(12).isString;t.exports=function escapeRegExp(t){return i(t)||(t=String(t)),t.replace(/([\\\/\'*+?|()\[\]{}.^$-])/g,"\\$1")}},function(t,e,n){"use strict";var i=n(124),r=n(417);t.exports=function arrayToRegAlternates(t){var e=t.join("");return t&&t.length?e.length===t.length?"["+e+"]":i(t,r).join("|"):""}},function(t,e,n){"use strict";t.exports="_sugar_"},function(t,e,n){"use strict";var i=n(419),r=n(16).setProperty;t.exports=function privatePropertyAccessor(t){var e=i+t;return function(t,n){return arguments.length>1?(r(t,e,n),t):t[e]}}},function(t,e,n){"use strict";t.exports=function getArrayWithOffset(t,e,n,i){var r;return n>1&&(r=t[e+(n-1)*i]),r||t[e]}},function(t,e,n){"use strict";t.exports=function getOrdinalSuffix(t){if(t>=11&&t<=13)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}}},function(t,e,n){"use strict";var i=n(16).hasOwn;t.exports=function hasValidPlainObjectPrototype(t){var e="constructor"in t;return!e&&!("toString"in t)||e&&!i(t,"constructor")&&i(t.constructor.prototype,"isPrototypeOf")}},function(t,e,n){"use strict";var i=n(16).hasOwn;t.exports=function hasOwnEnumeratedProperties(t){var e=Object.prototype;for(var n in t){var r=t[n];if(!i(t,n)&&r!==e[n])return!1}return!0}},function(t,e,n){"use strict";var i=n(123),r=n(70),s=n(424),a=n(423);t.exports=function isPlainObject(t,e){return r(t)&&i(t,"Object",e)&&a(t)&&s(t)}},function(t,e,n){"use strict";t.exports="Boolean Number String Date RegExp Function Array Error Set Map"},function(t,e,n){"use strict";var i=n(56).HALF_WIDTH_COMMA;t.exports=function commaSplit(t){return t.split(i)}},function(t,e,n){"use strict";t.exports=function isArrayIndex(t){return t>>>0==t&&4294967295!=t}},function(t,e,n){"use strict";var i=n(428);t.exports=function getSparseArrayIndexes(t,e,n,r){var s,a=[];for(s in t)i(s)&&(n||(r?s<=e:s>=e))&&a.push(+s);return a.sort(function(t,n){var i=t>e;return i!==n>e?i?-1:1:t-n}),a}},function(t,e,n){"use strict";var i=n(429);t.exports=function iterateOverSparseArray(t,e,n,r){for(var s,a=i(t,n,r),o=0,u=a.length;o0&&r%10==0)?(e&&(o+=a),u?a=r:o+=r):(o+=r*a,a*=10),e=n;return o},getOrdinal:function(t){return this.ordinalSuffix||g(t)},getRelativeFormat:function(t,e){return this.convertAdjustedToFormat(t,e)},getDuration:function(t){return this.convertAdjustedToFormat(x(F(0,t)),"duration")},getFirstDayOfWeek:function(){var t=this.firstDayOfWeek;return f(t)?t:N},getFirstDayOfWeekYear:function(){return this.firstDayOfWeekYear||R},convertAdjustedToFormat:function(t,e){var n,i,r,s=t[0],a=t[1],o=t[2],u=this[e]||this.relative;return I(u)?u.call(this,s,a,o,e):(r=this.plural&&1!==s?1:0,i=this.units[8*r+a]||this.units[a],n=this[o>0?"fromNow":"ago"],u.replace(/\{(.*?)\}/g,function(t,e){switch(e){case"num":return s;case"unit":return i;case"sign":return n}}))},cacheFormat:function(t,e){this.compiledFormats.splice(e,1),this.compiledFormats.unshift(t)},addFormat:function(t,e){var n=this;function getTokenSrc(t){var i,r,a,o=t.match(/\?$/),u=t.match(/^(\d+)\??$/),c=t.match(/(\d)(?:-(\d))?/),f=t.replace(/[^a-z]+$/i,"");return(a=j(n.parsingAliases,f))?(r=replaceParsingTokens(a),o&&(r=b(r,!0)),r):(u?r=n.tokens[u[1]]:(a=j(s,f))?r=a.src:(a=j(n.parsingTokens,f)||j(n,f),f=f.replace(/s$/,""),a||(a=j(n.parsingTokens,f)||j(n,f+"s")),D(a)?(r=a,i=n[f+"Suffix"]):(c&&(a=l(a,function(t,e){var i=e%(n.units?8:a.length);return i>=c[1]&&i<=(c[2]||c[1])})),r=C(a))),r?(u?r=b(r):(e.push(f),r="("+r+")"),i&&(r=k(f,r,i)),o&&(r+="?"),r):"")}function replaceParsingTokens(t){return(t=t.replace(/ /g," ?")).replace(/\{([^,]+?)\}/g,function(t,e){var n=e.split("|");return n.length>1?b(u(n,getTokenSrc).join("|")):getTokenSrc(e)})}e||(e=[],t=replaceParsingTokens(t)),n.addRawFormat(t,e)},addRawFormat:function(t,e){this.compiledFormats.unshift({reg:RegExp("^ *"+t+" *$","i"),to:e})},init:function(t){var e=this;function buildValueArray(t,n,i,r){var s,a=t,o=[];e[a]||(a+="s"),i||(i={},s=!0),function forAllAlternates(t,n){c(e[t],function(t,e){forEachAlternate(t,function(t,i){n(t,i,e)})})}(a,function(t,e,s){var a,u=e*n+s;a=r?r(s):s,i[t]=a,i[t.toLowerCase()]=a,o[u]=t}),e[a]=o,s&&(e[t+"Map"]=i)}function forEachAlternate(t,e){var n=u(t.split("+"),function(t){return t.replace(/(.+):(.+)$/,function(t,e,n){return u(n.split("|"),function(t){return e+t}).join("|")})}).join("|");c(n.split("|"),e)}function addFormatSet(t,n,i){c(e[t],function(t){n&&(t=getFormatWithTime(t,i)),e.addFormat(t)})}function getFormatWithTime(t,n){return n?function getTimeBefore(){return b("{time}[,\\s\\u3000]",!0)}()+t:t+function getTimeAfter(){var t,n=",?[\\s\\u3000]";return(t=C(e.timeMarkers))&&(n+="| (?:"+t+") "),n=b(n,e.timeMarkerOptional),b(n+"{time}",!0)}()}!function initFormats(){e.compiledFormats=[],e.parsingAliases={},e.parsingTokens={}}(),function initDefinition(){y(e,t)}(),function initArrayFields(){c(i,function(t){var n=e[t];D(n)?e[t]=d(n):n||(e[t]=[])})}(),buildValueArray("month",12),buildValueArray("weekday",7),buildValueArray("unit",8),buildValueArray("ampm",2),function buildNumerals(){var t={};buildValueArray("numeral",10,t),buildValueArray("article",1,t,function(){return 1}),buildValueArray("placeholder",4,t,function(t){return S(10,t+1)}),e.numeralMap=t}(),function buildTimeFormats(){e.parsingAliases.time=function getTimeFormat(){return e.ampmFront?"{ampm?} {hour} (?:{minute} (?::?{second})?)?":e.ampm.length?"{hour}(?:[.:]{minute}(?:[.:]{second})? {ampm?}| {ampm})":"{hour}(?:[.:]{minute}(?:[.:]{second})?)"}(),e.parsingAliases.tzOffset="(?:{Z}|{GMT?}(?:{tzSign}{tzHour}(?::?{tzMinute}(?: \\([\\w\\s]+\\))?)?)?)?"}(),function buildParsingTokens(){E(o,function(t,n){var i,r;i=t.base?s[t.base].src:t.src,(t.requiresNumerals||e.numeralUnits)&&(i+=function getNumeralSrc(){var t,n="";return t=e.numerals.concat(e.placeholders).concat(e.articles),e.allowsFullWidth&&(t=t.concat(T.split(""))),t.length&&(n="|(?:"+C(t)+")+"),n}()),(r=e[n+"s"])&&r.length&&(i+="|"+C(r)),e.parsingTokens[n]=i})}(),function buildTimeSuffixes(){_(function(t,n){var i=e.timeSuffixes[n];i&&(e[(t.alias||t.name)+"Suffix"]=i)})}(),function buildModifiers(){c(e.modifiers,function(t){var n,i=t.name,r=i+"Map";n=e[r]||{},forEachAlternate(t.src,function(r,s){var a=j(e.parsingTokens,i),o=t.value;n[r]=o,e.parsingTokens[i]=a?a+"|"+r:r,"sign"===t.name&&0===s&&(e[1===o?"fromNow":"ago"]=r)}),e[r]=n})}(),function addCoreFormats(){c(a,function(t){var n=t.src;t.mdy&&e.mdy&&(n=t.mdy),t.time?(e.addFormat(getFormatWithTime(n,!0)),e.addFormat(getFormatWithTime(n))):e.addFormat(n)}),e.addFormat("{time}")}(),function addLocaleFormats(){addFormatSet("parse"),addFormatSet("timeParse",!0),addFormatSet("timeFrontParse",!0,!0)}()}},new Locale(t)}},function(t,e,n){"use strict";var i=n(73)({short:"{yyyy}-{MM}-{dd}",medium:"{d} {Month}, {yyyy}",long:"{d} {Month}, {yyyy} {H}:{mm}",full:"{Weekday}, {d} {Month}, {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}"});t.exports=i},function(t,e,n){"use strict";t.exports={code:"en",plural:!0,timeMarkers:"at",ampm:"AM|A.M.|a,PM|P.M.|p",units:"millisecond:|s,second:|s,minute:|s,hour:|s,day:|s,week:|s,month:|s,year:|s",months:"Jan:uary|,Feb:ruary|,Mar:ch|,Apr:il|,May,Jun:e|,Jul:y|,Aug:ust|,Sep:tember|t|,Oct:ober|,Nov:ember|,Dec:ember|",weekdays:"Sun:day|,Mon:day|,Tue:sday|,Wed:nesday|,Thu:rsday|,Fri:day|,Sat:urday|+weekend",numerals:"zero,one|first,two|second,three|third,four:|th,five|fifth,six:|th,seven:|th,eight:|h,nin:e|th,ten:|th",articles:"a,an,the",tokens:"the,st|nd|rd|th,of|in,a|an,on",time:"{H}:{mm}",past:"{num} {unit} {sign}",future:"{num} {unit} {sign}",duration:"{num} {unit}",modifiers:[{name:"half",src:"half",value:.5},{name:"midday",src:"noon",value:12},{name:"midday",src:"midnight",value:24},{name:"day",src:"yesterday",value:-1},{name:"day",src:"today|tonight",value:0},{name:"day",src:"tomorrow",value:1},{name:"sign",src:"ago|before",value:-1},{name:"sign",src:"from now|after|from|in|later",value:1},{name:"edge",src:"first day|first|beginning",value:-2},{name:"edge",src:"last day",value:1},{name:"edge",src:"end|last",value:2},{name:"shift",src:"last",value:-1},{name:"shift",src:"the|this",value:0},{name:"shift",src:"next",value:1}],parse:["(?:just)? now","{shift} {unit:5-7}","{months?} (?:{year}|'{yy})","{midday} {4?} {day|weekday}","{months},?(?:[-.\\/\\s]{year})?","{edge} of (?:day)? {day|weekday}","{0} {num}{1?} {weekday} {2} {months},? {year?}","{shift?} {day?} {weekday?} {timeMarker?} {midday}","{sign?} {3?} {half} {3?} {unit:3-4|unit:7} {sign?}","{0?} {edge} {weekday?} {2} {shift?} {unit:4-7?} {months?},? {year?}"],timeParse:["{day|weekday}","{shift} {unit:5?} {weekday}","{0?} {date}{1?} {2?} {months?}","{weekday} {2?} {shift} {unit:5}","{0?} {num} {2?} {months}\\.?,? {year?}","{num?} {unit:4-5} {sign} {day|weekday}","{year}[-.\\/\\s]{months}[-.\\/\\s]{date}","{0|months} {date?}{1?} of {shift} {unit:6-7}","{0?} {num}{1?} {weekday} of {shift} {unit:6}","{date}[-.\\/\\s]{months}[-.\\/\\s](?:{year}|'?{yy})","{weekday?}\\.?,? {months}\\.?,? {date}{1?},? (?:{year}|'{yy})?"],timeFrontParse:["{sign} {num} {unit}","{num} {unit} {sign}","{4?} {day|weekday}"]}},function(t,e,n){"use strict";var i=n(73)({short:"{dd}/{MM}/{yyyy}",medium:"{d} {Month} {yyyy}",long:"{d} {Month} {yyyy} {H}:{mm}",full:"{Weekday}, {d} {Month}, {yyyy} {time}",stamp:"{Dow} {d} {Mon} {yyyy} {time}"});t.exports=i},function(t,e,n){"use strict";var i=n(437),r={"en-US":n(127),"en-GB":i,"en-AU":i,"en-CA":n(435)};t.exports=r},function(t,e,n){"use strict";n(13),n(412),n(393),n(391),n(390),n(389),n(388),n(387),n(382),n(381),n(380),n(379),n(378),n(377),n(376),n(375),n(374),n(373),n(372),n(371),n(370),n(369),n(368),n(367),n(366),n(365),n(364),n(363),n(362),n(361),n(360),n(359),n(358),n(357),n(356),n(355),n(354),n(353),n(352),n(351),n(350),n(349),n(348),n(347),n(346),n(345),n(344),n(343),n(342),n(341),n(340),n(339),n(338),n(337),n(336),n(335),n(334),n(333),n(332),n(331),n(330),n(329),n(328),n(327),n(326),n(325),n(324),n(323),n(322),n(321),n(320),n(319),n(318),n(317),n(316),n(315),n(314),n(313),n(312),n(311),n(310),n(309),n(308),n(307),n(306),n(305),n(304),n(303),n(302),n(300),n(299),n(298),n(297),n(296),n(295),n(294),n(293),n(290),n(289),n(288),n(287),n(286),n(285),n(284),n(283),n(282),n(281),n(280),n(279),n(278),n(277),n(276),n(275),n(274),n(262),n(261),n(260),n(259),n(258),n(257),n(256),n(255),n(254),n(253),n(250),n(249),n(248),n(247),n(245),n(244),n(243),n(242),n(241),n(240),n(239),n(238),n(237),n(236),n(235),n(234),n(233),n(232),n(231),n(230),n(229),n(228),n(227),n(226),n(224),n(223),n(222),n(221),n(220),n(219),n(218),n(217),n(216),n(215),n(214),n(213),n(212),n(211),n(210),n(209),n(208),n(207),n(206),n(204),n(203),n(201),n(200),n(199),n(198),n(197),n(196),n(195),n(194),n(193),n(192),n(191),n(190),n(189),n(188),n(187),n(186),n(185),n(184),n(183),t.exports=n(0)}])}); //# sourceMappingURL=tablefilter.js.map \ No newline at end of file diff --git a/dist/tablefilter/tablefilter.js.map b/dist/tablefilter/tablefilter.js.map index f4931770..c38416f1 100644 --- a/dist/tablefilter/tablefilter.js.map +++ b/dist/tablefilter/tablefilter.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./node_modules/sugar-core/sugar-core.js","webpack:///./node_modules/sugar-date/date/build/buildNumberUnitMethodsCall.js","webpack:///./node_modules/sugar-date/date/build/buildDateUnitMethodsCall.js","webpack:///./src/types.js","webpack:///./node_modules/sugar-date/date/var/DateUnitIndexes.js","webpack:///./node_modules/sugar-date/common/var/classChecks.js","webpack:///./node_modules/sugar-date/date/addLocale.js","webpack:///./src/settings.js","webpack:///./node_modules/sugar-date/common/var/mathAliases.js","webpack:///./node_modules/sugar-date/date/var/LocaleHelpers.js","webpack:///./src/dom.js","webpack:///./src/feature.js","webpack:///./node_modules/sugar-date/common/var/coreUtilityAliases.js","webpack:///./node_modules/sugar-date/date/build/buildRelativeAliasesCall.js","webpack:///./node_modules/sugar-date/range/internal/Range.js","webpack:///./src/const.js","webpack:///./src/root.js","webpack:///./node_modules/sugar-date/common/internal/defineOnPrototype.js","webpack:///./src/event.js","webpack:///./node_modules/sugar-date/common/internal/callDateGet.js","webpack:///./node_modules/sugar-date/date/internal/getWeekday.js","webpack:///./src/string.js","webpack:///./node_modules/sugar-date/range/build/buildDateRangeUnitsCall.js","webpack:///./node_modules/sugar-date/common/var/namespaceAliases.js","webpack:///./node_modules/sugar-date/date/internal/setWeekday.js","webpack:///./node_modules/sugar-date/common/var/trunc.js","webpack:///./node_modules/sugar-date/common/var/_utc.js","webpack:///./node_modules/sugar-date/date/internal/createDate.js","webpack:///./node_modules/sugar-date/date/internal/getMonth.js","webpack:///./node_modules/sugar-date/date/internal/getYear.js","webpack:///./node_modules/sugar-date/date/var/DateUnits.js","webpack:///./node_modules/sugar-date/common/internal/isDefined.js","webpack:///./node_modules/sugar-date/common/internal/forEach.js","webpack:///./src/modules/toolbar.js","webpack:///./node_modules/sugar-date/date/internal/cloneDate.js","webpack:///./node_modules/sugar-date/date/internal/getDate.js","webpack:///./node_modules/sugar-date/date/internal/setDate.js","webpack:///./node_modules/sugar-date/common/internal/callDateSet.js","webpack:///./node_modules/sugar-date/date/internal/setUnitAndLowerToEdge.js","webpack:///./node_modules/sugar-date/date/internal/advanceDate.js","webpack:///./node_modules/sugar-date/date/internal/getNewDate.js","webpack:///./node_modules/sugar-date/date/internal/getLowerUnitIndex.js","webpack:///./node_modules/sugar-date/common/internal/isUndefined.js","webpack:///./node_modules/sugar-date/range/internal/rangeIsValid.js","webpack:///./node_modules/sugar-date/date/internal/dateIsValid.js","webpack:///./node_modules/sugar-date/common/internal/defineInstanceSimilar.js","webpack:///./node_modules/sugar-date/date/internal/moveToBeginningOfUnit.js","webpack:///./node_modules/sugar-date/date/internal/moveToEndOfUnit.js","webpack:///./node_modules/sugar-date/date/internal/iterateOverDateParams.js","webpack:///./node_modules/sugar-date/date/internal/updateDate.js","webpack:///./node_modules/sugar-date/date/internal/tzOffset.js","webpack:///./node_modules/sugar-date/common/internal/spaceSplit.js","webpack:///./node_modules/sugar-date/common/var/CommonChars.js","webpack:///./node_modules/sugar-date/common/internal/simpleClone.js","webpack:///./node_modules/sugar-date/range/internal/rangeEvery.js","webpack:///./node_modules/sugar-date/range/var/DURATION_UNITS.js","webpack:///./node_modules/sugar-date/date/internal/getWeekNumber.js","webpack:///./node_modules/sugar-date/common/internal/padNumber.js","webpack:///./node_modules/sugar-date/date/internal/getTimeDistanceForUnit.js","webpack:///./node_modules/sugar-date/common/internal/simpleCapitalize.js","webpack:///./node_modules/sugar-date/date/internal/moveToBeginningOfWeek.js","webpack:///./node_modules/sugar-date/date/var/_dateOptions.js","webpack:///./node_modules/sugar-date/date/internal/getExtendedDate.js","webpack:///./node_modules/sugar-date/date/internal/iterateOverDateUnits.js","webpack:///./node_modules/sugar-date/common/internal/isObjectType.js","webpack:///./node_modules/sugar-date/date/var/ISODefaults.js","webpack:///./node_modules/sugar-date/common/internal/simpleMerge.js","webpack:///./node_modules/sugar-date/date/internal/getEnglishVariant.js","webpack:///./src/number.js","webpack:///./src/array.js","webpack:///./src/modules/baseDropdown.js","webpack:///./node_modules/sugar-date/range/internal/getDateIncrementObject.js","webpack:///./node_modules/sugar-date/range/var/MULTIPLIERS.js","webpack:///./node_modules/sugar-date/range/internal/incrementDate.js","webpack:///./node_modules/sugar-date/range/internal/getDateForRange.js","webpack:///./node_modules/sugar-date/range/internal/getRangeMemberPrimitiveValue.js","webpack:///./node_modules/sugar-date/range/internal/cloneRangeMember.js","webpack:///./node_modules/sugar-date/date/internal/dateRelative.js","webpack:///./node_modules/sugar-date/date/internal/fullCompareDate.js","webpack:///./node_modules/sugar-date/date/internal/assertDateIsValid.js","webpack:///./node_modules/sugar-date/date/internal/getUTCOffset.js","webpack:///./node_modules/sugar-date/date/internal/getHours.js","webpack:///./node_modules/sugar-date/date/var/CoreOutputFormats.js","webpack:///./node_modules/sugar-date/date/internal/dateFormat.js","webpack:///./node_modules/sugar-date/date/internal/collectDateArguments.js","webpack:///./node_modules/sugar-date/date/internal/advanceDateWithArgs.js","webpack:///./node_modules/sugar-date/date/internal/createDateWithContext.js","webpack:///./node_modules/sugar-date/date/internal/compareDate.js","webpack:///./node_modules/sugar-date/date/internal/moveToEndOfWeek.js","webpack:///./node_modules/sugar-date/date/internal/getDateParamKey.js","webpack:///./node_modules/sugar-date/date/internal/moveToFirstDayOfWeekYear.js","webpack:///./node_modules/sugar-date/date/internal/setISOWeekNumber.js","webpack:///./node_modules/sugar-date/date/internal/walkUnitDown.js","webpack:///./node_modules/sugar-date/date/internal/resetTime.js","webpack:///./node_modules/sugar-date/date/var/MINUTES.js","webpack:///./node_modules/sugar-date/date/internal/getAdjustedUnit.js","webpack:///./node_modules/sugar-date/common/internal/withPrecision.js","webpack:///./node_modules/sugar-date/common/var/chr.js","webpack:///./node_modules/sugar-date/date/internal/getDaysInMonth.js","webpack:///./node_modules/sugar-date/date/internal/getRegNonCapturing.js","webpack:///./node_modules/sugar-date/common/internal/isClass.js","webpack:///./node_modules/sugar-date/common/internal/map.js","webpack:///./node_modules/sugar-date/date/var/LocalizedParsingTokens.js","webpack:///./node_modules/sugar-date/date/var/ParsingTokens.js","webpack:///./node_modules/sugar-date/date/var/AmericanEnglishDefinition.js","webpack:///./node_modules/sugar-date/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/sort.js","webpack:///./src/modules/checkList.js","webpack:///./src/modules/paging.js","webpack:///./src/modules/noResults.js","webpack:///./src/modules/alternateRows.js","webpack:///./src/modules/clearButton.js","webpack:///./src/modules/statusBar.js","webpack:///./src/modules/rowsCounter.js","webpack:///./src/modules/markActiveColumns.js","webpack:///./src/modules/popupFilter.js","webpack:///./src/modules/highlightKeywords.js","webpack:///./src/modules/loader.js","webpack:///./src/modules/gridLayout.js","webpack:///./src/cookie.js","webpack:///./src/modules/storage.js","webpack:///./src/modules/hash.js","webpack:///./src/modules/state.js","webpack:///./src/modules/help.js","webpack:///./src/modules/dateType.js","webpack:///./src/modules/dropdown.js","webpack:///./src/emitter.js","webpack:///./src/tablefilter.js","webpack:///./node_modules/sugar-date/locales/zh-TW.js","webpack:///./node_modules/sugar-date/locales/zh-CN.js","webpack:///./node_modules/sugar-date/locales/sv.js","webpack:///./node_modules/sugar-date/locales/ru.js","webpack:///./node_modules/sugar-date/locales/pt.js","webpack:///./node_modules/sugar-date/locales/pl.js","webpack:///./node_modules/sugar-date/locales/no.js","webpack:///./node_modules/sugar-date/locales/nl.js","webpack:///./node_modules/sugar-date/locales/ko.js","webpack:///./node_modules/sugar-date/locales/ja.js","webpack:///./node_modules/sugar-date/locales/it.js","webpack:///./node_modules/sugar-date/locales/fr.js","webpack:///./node_modules/sugar-date/locales/fi.js","webpack:///./node_modules/sugar-date/locales/es.js","webpack:///./node_modules/sugar-date/locales/de.js","webpack:///./node_modules/sugar-date/locales/da.js","webpack:///./node_modules/sugar-date/locales/ca.js","webpack:///./node_modules/sugar-date/locales/index.js","webpack:///./node_modules/sugar-date/range/years.js","webpack:///./node_modules/sugar-date/range/weeks.js","webpack:///./node_modules/sugar-date/range/union.js","webpack:///./node_modules/sugar-date/range/toString.js","webpack:///./node_modules/sugar-date/range/toArray.js","webpack:///./node_modules/sugar-date/range/internal/getRangeMemberNumericValue.js","webpack:///./node_modules/sugar-date/range/span.js","webpack:///./node_modules/sugar-date/range/seconds.js","webpack:///./node_modules/sugar-date/range/months.js","webpack:///./node_modules/sugar-date/range/minutes.js","webpack:///./node_modules/sugar-date/range/milliseconds.js","webpack:///./node_modules/sugar-date/range/isValid.js","webpack:///./node_modules/sugar-date/range/intersect.js","webpack:///./node_modules/sugar-date/range/hours.js","webpack:///./node_modules/sugar-date/range/every.js","webpack:///./node_modules/sugar-date/common/internal/periodSplit.js","webpack:///./node_modules/sugar-date/range/internal/getPrecision.js","webpack:///./node_modules/sugar-date/range/internal/getGreaterPrecision.js","webpack:///./node_modules/sugar-date/range/internal/incrementString.js","webpack:///./node_modules/sugar-date/range/internal/incrementNumber.js","webpack:///./node_modules/sugar-date/range/internal/valueIsNotInfinite.js","webpack:///./node_modules/sugar-date/range/internal/isValidRangeMember.js","webpack:///./node_modules/sugar-date/range/internal/buildDateRangeUnits.js","webpack:///./node_modules/sugar-date/range/days.js","webpack:///./node_modules/sugar-date/range/contains.js","webpack:///./node_modules/sugar-date/range/clone.js","webpack:///./node_modules/sugar-date/range/internal/rangeClamp.js","webpack:///./node_modules/sugar-date/range/clamp.js","webpack:///./node_modules/sugar-date/range/var/DURATION_REG.js","webpack:///./node_modules/sugar-date/range/var/FULL_CAPTURED_DURATION.js","webpack:///./node_modules/sugar-date/range/var/DurationTextFormats.js","webpack:///./node_modules/sugar-date/range/internal/createDateRangeFromString.js","webpack:///./node_modules/sugar-date/range/var/DateRangeConstructor.js","webpack:///./node_modules/sugar-date/date/range.js","webpack:///./node_modules/sugar-date/range/index.js","webpack:///./node_modules/sugar-date/date/setOption.js","webpack:///./node_modules/sugar-date/date/getOption.js","webpack:///./node_modules/sugar-date/date/yearsUntil.js","webpack:///./node_modules/sugar-date/date/yearsSince.js","webpack:///./node_modules/sugar-date/date/yearsFromNow.js","webpack:///./node_modules/sugar-date/date/yearsAgo.js","webpack:///./node_modules/sugar-date/date/weeksUntil.js","webpack:///./node_modules/sugar-date/date/weeksSince.js","webpack:///./node_modules/sugar-date/date/weeksFromNow.js","webpack:///./node_modules/sugar-date/date/weeksAgo.js","webpack:///./node_modules/sugar-date/date/setWeekday.js","webpack:///./node_modules/sugar-date/date/setUTC.js","webpack:///./node_modules/sugar-date/date/setISOWeek.js","webpack:///./node_modules/sugar-date/date/set.js","webpack:///./node_modules/sugar-date/date/secondsUntil.js","webpack:///./node_modules/sugar-date/date/secondsSince.js","webpack:///./node_modules/sugar-date/date/secondsFromNow.js","webpack:///./node_modules/sugar-date/date/secondsAgo.js","webpack:///./node_modules/sugar-date/date/rewind.js","webpack:///./node_modules/sugar-date/date/internal/getUnitIndexForParamName.js","webpack:///./node_modules/sugar-date/date/reset.js","webpack:///./node_modules/sugar-date/date/relativeTo.js","webpack:///./node_modules/sugar-date/date/internal/getAdjustedUnitForDate.js","webpack:///./node_modules/sugar-date/date/relative.js","webpack:///./node_modules/sugar-date/date/monthsUntil.js","webpack:///./node_modules/sugar-date/date/monthsSince.js","webpack:///./node_modules/sugar-date/date/monthsFromNow.js","webpack:///./node_modules/sugar-date/date/monthsAgo.js","webpack:///./node_modules/sugar-date/date/minutesUntil.js","webpack:///./node_modules/sugar-date/date/minutesSince.js","webpack:///./node_modules/sugar-date/date/minutesFromNow.js","webpack:///./node_modules/sugar-date/date/minutesAgo.js","webpack:///./node_modules/sugar-date/date/millisecondsUntil.js","webpack:///./node_modules/sugar-date/date/millisecondsSince.js","webpack:///./node_modules/sugar-date/date/millisecondsFromNow.js","webpack:///./node_modules/sugar-date/date/millisecondsAgo.js","webpack:///./node_modules/sugar-date/date/iso.js","webpack:///./node_modules/sugar-date/date/isYesterday.js","webpack:///./node_modules/sugar-date/date/isWeekend.js","webpack:///./node_modules/sugar-date/date/isWeekday.js","webpack:///./node_modules/sugar-date/date/isWednesday.js","webpack:///./node_modules/sugar-date/date/isValid.js","webpack:///./node_modules/sugar-date/date/internal/isUTC.js","webpack:///./node_modules/sugar-date/date/isUTC.js","webpack:///./node_modules/sugar-date/date/isTuesday.js","webpack:///./node_modules/sugar-date/date/isTomorrow.js","webpack:///./node_modules/sugar-date/date/isToday.js","webpack:///./node_modules/sugar-date/date/isThursday.js","webpack:///./node_modules/sugar-date/date/isThisYear.js","webpack:///./node_modules/sugar-date/date/isThisWeek.js","webpack:///./node_modules/sugar-date/date/isThisMonth.js","webpack:///./node_modules/sugar-date/date/isSunday.js","webpack:///./node_modules/sugar-date/date/isSaturday.js","webpack:///./node_modules/sugar-date/date/isPast.js","webpack:///./node_modules/sugar-date/date/isNextYear.js","webpack:///./node_modules/sugar-date/date/isNextWeek.js","webpack:///./node_modules/sugar-date/date/isNextMonth.js","webpack:///./node_modules/sugar-date/date/isMonday.js","webpack:///./node_modules/sugar-date/date/isLeapYear.js","webpack:///./node_modules/sugar-date/date/isLastYear.js","webpack:///./node_modules/sugar-date/date/isLastWeek.js","webpack:///./node_modules/sugar-date/date/isLastMonth.js","webpack:///./node_modules/sugar-date/date/isFuture.js","webpack:///./node_modules/sugar-date/date/internal/buildRelativeAliases.js","webpack:///./node_modules/sugar-date/date/isFriday.js","webpack:///./node_modules/sugar-date/date/isBetween.js","webpack:///./node_modules/sugar-date/date/isBefore.js","webpack:///./node_modules/sugar-date/date/isAfter.js","webpack:///./node_modules/sugar-date/date/internal/compareDay.js","webpack:///./node_modules/sugar-date/common/internal/trim.js","webpack:///./node_modules/sugar-date/date/is.js","webpack:///./node_modules/sugar-date/date/hoursUntil.js","webpack:///./node_modules/sugar-date/date/hoursSince.js","webpack:///./node_modules/sugar-date/date/hoursFromNow.js","webpack:///./node_modules/sugar-date/date/hoursAgo.js","webpack:///./node_modules/sugar-date/date/getWeekday.js","webpack:///./node_modules/sugar-date/date/getUTCWeekday.js","webpack:///./node_modules/sugar-date/date/getUTCOffset.js","webpack:///./node_modules/sugar-date/date/getISOWeek.js","webpack:///./node_modules/sugar-date/date/get.js","webpack:///./node_modules/sugar-date/common/var/INTERNAL_MEMOIZE_LIMIT.js","webpack:///./node_modules/sugar-date/common/internal/memoizeFunction.js","webpack:///./node_modules/sugar-date/common/var/STRING_FORMAT_REG.js","webpack:///./node_modules/sugar-date/common/internal/createFormatMatcher.js","webpack:///./node_modules/sugar-date/date/internal/getMeridiemToken.js","webpack:///./node_modules/sugar-date/date/internal/getDaysSince.js","webpack:///./node_modules/sugar-date/date/internal/getWeekYear.js","webpack:///./node_modules/sugar-date/common/internal/repeatString.js","webpack:///./node_modules/sugar-date/date/var/TIMEZONE_ABBREVIATION_REG.js","webpack:///./node_modules/sugar-date/date/var/FormatTokensBase.js","webpack:///./node_modules/sugar-date/date/var/formattingTokens.js","webpack:///./node_modules/sugar-date/date/format.js","webpack:///./node_modules/sugar-date/date/endOfYear.js","webpack:///./node_modules/sugar-date/date/endOfWeek.js","webpack:///./node_modules/sugar-date/date/endOfMonth.js","webpack:///./node_modules/sugar-date/date/endOfISOWeek.js","webpack:///./node_modules/sugar-date/date/endOfDay.js","webpack:///./node_modules/sugar-date/date/daysUntil.js","webpack:///./node_modules/sugar-date/date/daysSince.js","webpack:///./node_modules/sugar-date/date/daysInMonth.js","webpack:///./node_modules/sugar-date/date/daysFromNow.js","webpack:///./node_modules/sugar-date/date/daysAgo.js","webpack:///./node_modules/sugar-date/date/clone.js","webpack:///./node_modules/sugar-date/date/beginningOfYear.js","webpack:///./node_modules/sugar-date/date/beginningOfWeek.js","webpack:///./node_modules/sugar-date/date/beginningOfMonth.js","webpack:///./node_modules/sugar-date/date/beginningOfISOWeek.js","webpack:///./node_modules/sugar-date/date/beginningOfDay.js","webpack:///./node_modules/sugar-date/date/internal/collectDateParamsFromArguments.js","webpack:///./node_modules/sugar-date/date/internal/getDateParamsFromString.js","webpack:///./node_modules/sugar-date/date/advance.js","webpack:///./node_modules/sugar-date/date/addYears.js","webpack:///./node_modules/sugar-date/date/addWeeks.js","webpack:///./node_modules/sugar-date/date/addSeconds.js","webpack:///./node_modules/sugar-date/date/addMonths.js","webpack:///./node_modules/sugar-date/date/addMinutes.js","webpack:///./node_modules/sugar-date/date/addMilliseconds.js","webpack:///./node_modules/sugar-date/date/addHours.js","webpack:///./node_modules/sugar-date/date/internal/buildDateUnitMethods.js","webpack:///./node_modules/sugar-date/date/addDays.js","webpack:///./node_modules/sugar-date/number/yearsFromNow.js","webpack:///./node_modules/sugar-date/number/yearsBefore.js","webpack:///./node_modules/sugar-date/number/yearsAgo.js","webpack:///./node_modules/sugar-date/number/yearsAfter.js","webpack:///./node_modules/sugar-date/number/years.js","webpack:///./node_modules/sugar-date/number/yearFromNow.js","webpack:///./node_modules/sugar-date/number/yearBefore.js","webpack:///./node_modules/sugar-date/number/yearAgo.js","webpack:///./node_modules/sugar-date/number/yearAfter.js","webpack:///./node_modules/sugar-date/number/year.js","webpack:///./node_modules/sugar-date/number/weeksFromNow.js","webpack:///./node_modules/sugar-date/number/weeksBefore.js","webpack:///./node_modules/sugar-date/number/weeksAgo.js","webpack:///./node_modules/sugar-date/number/weeksAfter.js","webpack:///./node_modules/sugar-date/number/weeks.js","webpack:///./node_modules/sugar-date/number/weekFromNow.js","webpack:///./node_modules/sugar-date/number/weekBefore.js","webpack:///./node_modules/sugar-date/number/weekAgo.js","webpack:///./node_modules/sugar-date/number/weekAfter.js","webpack:///./node_modules/sugar-date/number/week.js","webpack:///./node_modules/sugar-date/number/secondsFromNow.js","webpack:///./node_modules/sugar-date/number/secondsBefore.js","webpack:///./node_modules/sugar-date/number/secondsAgo.js","webpack:///./node_modules/sugar-date/number/secondsAfter.js","webpack:///./node_modules/sugar-date/number/seconds.js","webpack:///./node_modules/sugar-date/number/secondFromNow.js","webpack:///./node_modules/sugar-date/number/secondBefore.js","webpack:///./node_modules/sugar-date/number/secondAgo.js","webpack:///./node_modules/sugar-date/number/secondAfter.js","webpack:///./node_modules/sugar-date/number/second.js","webpack:///./node_modules/sugar-date/number/monthsFromNow.js","webpack:///./node_modules/sugar-date/number/monthsBefore.js","webpack:///./node_modules/sugar-date/number/monthsAgo.js","webpack:///./node_modules/sugar-date/number/monthsAfter.js","webpack:///./node_modules/sugar-date/number/months.js","webpack:///./node_modules/sugar-date/number/monthFromNow.js","webpack:///./node_modules/sugar-date/number/monthBefore.js","webpack:///./node_modules/sugar-date/number/monthAgo.js","webpack:///./node_modules/sugar-date/number/monthAfter.js","webpack:///./node_modules/sugar-date/number/month.js","webpack:///./node_modules/sugar-date/number/minutesFromNow.js","webpack:///./node_modules/sugar-date/number/minutesBefore.js","webpack:///./node_modules/sugar-date/number/minutesAgo.js","webpack:///./node_modules/sugar-date/number/minutesAfter.js","webpack:///./node_modules/sugar-date/number/minutes.js","webpack:///./node_modules/sugar-date/number/minuteFromNow.js","webpack:///./node_modules/sugar-date/number/minuteBefore.js","webpack:///./node_modules/sugar-date/number/minuteAgo.js","webpack:///./node_modules/sugar-date/number/minuteAfter.js","webpack:///./node_modules/sugar-date/number/minute.js","webpack:///./node_modules/sugar-date/number/millisecondsFromNow.js","webpack:///./node_modules/sugar-date/number/millisecondsBefore.js","webpack:///./node_modules/sugar-date/number/millisecondsAgo.js","webpack:///./node_modules/sugar-date/number/millisecondsAfter.js","webpack:///./node_modules/sugar-date/number/milliseconds.js","webpack:///./node_modules/sugar-date/number/millisecondFromNow.js","webpack:///./node_modules/sugar-date/number/millisecondBefore.js","webpack:///./node_modules/sugar-date/number/millisecondAgo.js","webpack:///./node_modules/sugar-date/number/millisecondAfter.js","webpack:///./node_modules/sugar-date/number/millisecond.js","webpack:///./node_modules/sugar-date/number/hoursFromNow.js","webpack:///./node_modules/sugar-date/number/hoursBefore.js","webpack:///./node_modules/sugar-date/number/hoursAgo.js","webpack:///./node_modules/sugar-date/number/hoursAfter.js","webpack:///./node_modules/sugar-date/number/hours.js","webpack:///./node_modules/sugar-date/number/hourFromNow.js","webpack:///./node_modules/sugar-date/number/hourBefore.js","webpack:///./node_modules/sugar-date/number/hourAgo.js","webpack:///./node_modules/sugar-date/number/hourAfter.js","webpack:///./node_modules/sugar-date/number/hour.js","webpack:///./node_modules/sugar-date/number/duration.js","webpack:///./node_modules/sugar-date/number/daysFromNow.js","webpack:///./node_modules/sugar-date/number/daysBefore.js","webpack:///./node_modules/sugar-date/number/daysAgo.js","webpack:///./node_modules/sugar-date/number/daysAfter.js","webpack:///./node_modules/sugar-date/number/days.js","webpack:///./node_modules/sugar-date/number/dayFromNow.js","webpack:///./node_modules/sugar-date/number/dayBefore.js","webpack:///./node_modules/sugar-date/number/dayAgo.js","webpack:///./node_modules/sugar-date/number/dayAfter.js","webpack:///./node_modules/sugar-date/common/internal/collectSimilarMethods.js","webpack:///./node_modules/sugar-date/common/internal/wrapNamespace.js","webpack:///./node_modules/sugar-date/common/var/methodDefineAliases.js","webpack:///./node_modules/sugar-date/date/internal/buildNumberUnitMethods.js","webpack:///./node_modules/sugar-date/number/day.js","webpack:///./node_modules/sugar-date/date/setLocale.js","webpack:///./node_modules/sugar-date/date/removeLocale.js","webpack:///./node_modules/sugar-date/date/getLocale.js","webpack:///./node_modules/sugar-date/date/getAllLocales.js","webpack:///./node_modules/sugar-date/common/internal/getKeys.js","webpack:///./node_modules/sugar-date/date/getAllLocaleCodes.js","webpack:///./node_modules/sugar-date/common/internal/setChainableConstructor.js","webpack:///./node_modules/sugar-date/date/internal/setDateChainableConstructor.js","webpack:///./node_modules/sugar-date/date/build/setDateChainableConstructorCall.js","webpack:///./node_modules/sugar-date/date/internal/iterateOverHigherDateParams.js","webpack:///./node_modules/sugar-date/date/internal/getYearFromAbbreviation.js","webpack:///./node_modules/sugar-date/date/internal/getParsingTokenValue.js","webpack:///./node_modules/sugar-date/date/internal/deleteDateParam.js","webpack:///./node_modules/sugar-date/common/internal/getOwnKey.js","webpack:///./node_modules/sugar-date/date/internal/getDateParam.js","webpack:///./node_modules/sugar-date/date/internal/setMonth.js","webpack:///./node_modules/sugar-date/date/internal/setYear.js","webpack:///./node_modules/sugar-date/date/internal/callDateSetWithWeek.js","webpack:///./node_modules/sugar-date/date/internal/getHigherUnitIndex.js","webpack:///./node_modules/sugar-date/date/internal/resetLowerUnits.js","webpack:///./node_modules/sugar-date/common/internal/defineAccessor.js","webpack:///./node_modules/sugar-date/common/internal/defineOptionsAccessor.js","webpack:///./node_modules/sugar-date/date/internal/defaultNewDate.js","webpack:///./node_modules/sugar-date/date/var/DATE_OPTIONS.js","webpack:///./node_modules/sugar-date/date/create.js","webpack:///./node_modules/sugar-date/date/internal/getParsingTokenWithSuffix.js","webpack:///./node_modules/sugar-date/date/internal/getAdjustedUnitForNumber.js","webpack:///./node_modules/sugar-date/common/internal/allCharsReg.js","webpack:///./node_modules/sugar-date/common/var/fullwidthNumberHelpers.js","webpack:///./node_modules/sugar-date/common/internal/escapeRegExp.js","webpack:///./node_modules/sugar-date/date/internal/arrayToRegAlternates.js","webpack:///./node_modules/sugar-date/common/var/PRIVATE_PROP_PREFIX.js","webpack:///./node_modules/sugar-date/common/internal/privatePropertyAccessor.js","webpack:///./node_modules/sugar-date/date/internal/getArrayWithOffset.js","webpack:///./node_modules/sugar-date/common/internal/getOrdinalSuffix.js","webpack:///./node_modules/sugar-date/common/internal/hasValidPlainObjectPrototype.js","webpack:///./node_modules/sugar-date/common/internal/hasOwnEnumeratedProperties.js","webpack:///./node_modules/sugar-date/common/internal/isPlainObject.js","webpack:///./node_modules/sugar-date/common/var/NATIVE_TYPES.js","webpack:///./node_modules/sugar-date/common/internal/commaSplit.js","webpack:///./node_modules/sugar-date/common/internal/isArrayIndex.js","webpack:///./node_modules/sugar-date/common/internal/getSparseArrayIndexes.js","webpack:///./node_modules/sugar-date/common/internal/iterateOverSparseArray.js","webpack:///./node_modules/sugar-date/common/internal/filter.js","webpack:///./node_modules/sugar-date/date/var/CoreParsingFormats.js","webpack:///./node_modules/sugar-date/date/var/LOCALE_ARRAY_FIELDS.js","webpack:///./node_modules/sugar-date/date/internal/getNewLocale.js","webpack:///./node_modules/sugar-date/date/var/CanadianEnglishDefinition.js","webpack:///./node_modules/sugar-date/date/var/EnglishLocaleBaseDefinition.js","webpack:///./node_modules/sugar-date/date/var/BritishEnglishDefinition.js","webpack:///./node_modules/sugar-date/date/var/LazyLoadedLocales.js","webpack:///./node_modules/sugar-date/date/index.js","webpack:///./node_modules/diacritics/index.js"],"names":["webpackUniversalModuleDefinition","root","factory","exports","module","define","amd","a","i","window","webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","installedModules","1","__webpack_require__","l","e","requireEnsure","promises","installedChunkData","promise","Promise","resolve","reject","head","document","getElementsByTagName","script","createElement","charset","timeout","nc","setAttribute","src","p","0","setTimeout","onScriptComplete","type","target","event","onerror","onload","clearTimeout","chunk","errorType","realSrc","error","Error","request","undefined","appendChild","all","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","r","value","n","__esModule","getDefault","getModuleExports","object","property","oe","err","console","jsonpArray","oldJsonpFunction","bind","slice","s","global","Sugar","SUGAR_GLOBAL","NATIVE_NAMES","STATIC","INSTANCE","PROPERTY_DESCRIPTOR_SUPPORT","defineProperties","globalContext","this","hasExports","allowObjectPrototype","namespacesByName","namespacesByClassString","definePropertyShim","obj","prop","descriptor","DefaultChainable","getNewChainableClass","createNamespace","isObject","sugarNamespace","defineWithOptionCollect","methodName","instance","args","setProperty","arg1","arg2","arg3","opts","collectDefineOptions","defineMethods","methods","flags","forEachProperty","method","instanceMethod","staticMethod","wrapMethodWithArguments","wrapInstanceMethod","fn","wrapInstanceMethodFixed","b","setMethod","active","extend","last","extendNative","defineChainableMethod","source","methodsByName","nativeClass","nativeProto","staticMethods","instanceMethods","arrayOptionExists","field","val","arr","el","canExtend","objectRestricted","disallowedByFlags","methodIsExcepted","namespaceIsExcepted","arrayOptionExcludes","objectPrototype","hasOwn","mapNativeToChainable","mapObjectChainablesToNamespace","setObjectChainableOnNamespace","toString","startCollect","len","collectedArgs","Math","max","arguments","apply","polyfill","override","SugarChainable","arg","constructor","raw","existing","collision","dcp","wrapped","wrapWithChainableResult","disambiguate","disambiguateMethod","classToString","TypeError","mapObjectChainableToAllNamespaces","proto","methodNames","ownPropertyNames","nativeMethodProhibited","getOwnPropertyNames","internalToString","internalHasOwnProperty","key","writable","getOwn","setupGlobal","split","setGlobalProperties","buildNumberUnitMethods","buildDateUnitMethods","EMPTY_FN","isObj","isFn","isArray","isString","isNumber","isBoolean","isUndef","isNull","isEmpty","HOURS_INDEX","DAY_INDEX","WEEK_INDEX","MONTH_INDEX","YEAR_INDEX","isSerializable","isDate","isRegExp","isFunction","isSet","isMap","isError","NATIVE_TYPES","forEach","isClass","spaceSplit","isPlainObject","buildClassChecks","knownTypes","addKnownType","className","buildClassCheck","globalObject","getConstructorClassCheck","ctorStr","String","getToStringClassCheck","str","buildPrimitiveClassCheck","toLowerCase","t","addCoreTypes","names","Array","Set","Map","addArrayTypes","isKnownType","localeManager","Date","defineStatic","addLocale","code","set","add","_types","defaultsBool","defaultVal","defaultsStr","defaultsNb","isNaN","defaultsArr","defaultsFn","abs","pow","min","ceil","floor","round","English","LazyLoadedLocales","AmericanEnglishDefinition","getNewLocale","buildLocales","LocaleManager","loc","locales","fallback","current","getAll","def","compiledFormats","remove","_root","_string","doc","createElm","getText","node","textContent","trim","innerText","getFirstTextNode","childNodes","nodeType","_len","_key","tag","createText","removeElm","parentNode","removeChild","txt","createTextNode","hasClass","ele","cls","supportsClassList","classList","contains","match","RegExp","addClass","removeClass","reg","replace","createOpt","text","isSel","opt","createCheckItem","id","chkValue","labelText","extraAttr","li","label","check","elm","getElementById","tagname","documentElement","Feature","tf","feature","_this","_classCallCheck","enabled","config","emitter","initialized","on","destroy","enable","init","util","buildRelativeAliases","cloneRangeMember","Range","start","end","_dateType","_help","_state","_gridLayout","_loader","_highlightKeywords","_popupFilter","_markActiveColumns","_rowsCounter","_statusBar","_clearButton","_alternateRows","_noResults","_paging","_toolbar","INPUT","SELECT","MULTIPLE","CHECKLIST","NONE","ENTER_KEY","TAB_KEY","ESC_KEY","UP_ARROW_KEY","DOWN_ARROW_KEY","HEADER_TAG","CELL_TAG","STRING","NUMBER","FORMATTED_NUMBER","DATE","IP_ADDRESS","AUTO_FILTER_DELAY","FEATURES","dateType","class","help","enforce","state","markActiveColumns","gridLayout","loader","highlightKeyword","popupFilter","rowsCounter","statusBar","clearButton","alternateRows","noResults","paging","toolbar","self","_typeof","defineOnPrototype","ctor","bound","scope","boundFnName","keyCode","addEvt","func","capture","addEventListener","attachEvent","removeEvt","removeEventListener","detachEvent","stopEvt","evt","stopPropagation","cancelBubble","cancelEvt","preventDefault","returnValue","targetEvt","srcElement","charCode","which","isKeyPressed","indexOf","_utc","callDateGet","getWeekday","_diacritics","rgxEsc","matchCase","term","exactMatch","caseSensitive","ignoreDiacritics","modifier","test","buildDateRangeUnits","sugarObject","sugarArray","sugarDate","sugarString","sugarNumber","Number","sugarFunction","Function","sugarRegExp","setDate","getDate","classChecks","mathAliases","setWeekday","dow","dir","currentWeekday","ndir","offset","getTime","trunc","isFinite","privatePropertyAccessor","getExtendedDate","createDate","options","forceClone","date","getMonth","getYear","getDaysInMonth","DateUnits","multiplier","alias","ambiguous","isDefined","iterateOverSparseArray","_feature","_dom","_settings","EVENTS","RIGHT","LEFT","CENTER","Toolbar","_possibleConstructorReturn","__proto__","getPrototypeOf","f","contCssClass","container_css_class","lContCssClass","left_cont_css_class","rContCssClass","right_cont_css_class","cContCssClass","center_cont_css_class","tgtId","target_id","cont","lCont","rCont","cCont","innerCont","left","center","right","isExternal","container","Mod","tblMainCont","infDivCssClass","dom","insertBefore","firstChild","createContainer","emit","position","css","div","tbl","captions","cloneDate","clone","callDateSet","safe","walkUnitDown","setUnitAndLowerToEdge","startIndex","stopIndex","unit","updateDate","advanceDate","num","reset","_dateOptions","getNewDate","DateUnitIndexes","getLowerUnitIndex","index","isUndefined","isValidRangeMember","rangeIsValid","range","dateIsValid","methodDefineAliases","collectSimilarMethods","defineInstance","defineInstanceSimilar","LocaleHelpers","moveToBeginningOfWeek","moveToBeginningOfUnit","unitIndex","localeCode","getFirstDayOfWeek","moveToEndOfWeek","moveToEndOfUnit","getDateParam","iterateOverDateUnits","iterateOverDateParams","params","endIndex","run","result","resetLowerUnits","getHigherUnitIndex","callDateSetWithWeek","advance","prefer","weekdayDir","upperUnitIndex","setUnit","unitName","checkMonth","fraction","setUpperUnit","setSpecificity","specificity","handleFraction","lowerUnit","monthHasShifted","targetMonth","setTime","millisecond","canDisambiguate","disambiguateHigherUnit","tzOffset","getTimezoneOffset","HALF_WIDTH_ZERO","FULL_WIDTH_ZERO","HALF_WIDTH_PERIOD","FULL_WIDTH_PERIOD","HALF_WIDTH_COMMA","OPEN_BRACE","CLOSE_BRACE","simpleMerge","simpleClone","incrementDate","incrementNumber","incrementString","getGreaterPrecision","getDateIncrementObject","rangeEvery","step","countOnly","increment","precision","dio","inverse","NaN","ISODefaults","moveToFirstDayOfWeekYear","ISO_FIRST_DAY_OF_WEEK","ISO_FIRST_DAY_OF_WEEK_YEAR","getWeekNumber","allowPrevious","firstDayOfWeek","firstDayOfWeekYear","isoWeek","repeatString","padNumber","place","sign","base","replacement","getTimeDistanceForUnit","d1","d2","tmp","fwd","simpleCapitalize","charAt","toUpperCase","DATE_OPTIONS","namespaceAliases","defineOptionsAccessor","MINUTES","ParsingTokens","resetTime","isObjectType","deleteDateParam","coreUtilityAliases","getParsingTokenValue","getYearFromAbbreviation","iterateOverHigherDateParams","contextDate","afterCallbacks","relative","getFormatParams","dif","to","token","param","getTokenValue","cloneDateByFlag","fromUTC","setUTC","afterDateSet","handleTimezoneOffset","tzHour","tzMinute","tzSign","minute","handleMidday","hour","handleRelativeUnit","weekday","setOrdinalWeekday","half","day","separateAbsoluteUnits","edge","handleEdge","units","weekdayOfMonth","edgeIndex","month","getDateOptions","locale","parseStringDate","cacheFormat","timestamp","ampm","utc","midday","yearSign","year","fireCallbacks","EnglishLocaleBaseDefinition","getEnglishVariant","v","parse","decimal","regex","unformatted","parseFloat","has","sCase","Boolean","_sort","_const","BaseDropdown","customSorter","filter_options_sorter","col","comparer","isCustom","optsTxt","excludedOpts","colIndex","isCustomOptions","sortSlc","sortNumDesc","compareFn","idx","hasType","getDecimal","sortNumberStr","getLocale","sortDateStr","ignoreCase","sort","colIndexes","_this2","colIdx","values","getValues","build","linkedFilters","selectOptions","rowIdx","activeFilterIdx","disableExcludedOptions","isRowValid","isRowDisplayed","DURATION_REG","amt","Hours","Minutes","Seconds","Milliseconds","MULTIPLIERS","amount","mult","getDateForRange","create","getRangeMemberPrimitiveValue","valueOf","dateFormat","assertDateIsValid","getAdjustedUnitForDate","dateRelative","dRelative","adu","format","concat","getRelativeFormat","compareDay","compareDate","fullCompareDate","margin","weekdayMap","monthMap","getUTCOffset","iso","colon","getHours","ISO8601","RFC1123","RFC1036","CoreOutputFormats","formattingTokens","dateFormatMatcher","getDateParamsFromString","collectDateParamsFromArguments","collectDateArguments","allowDuration","advanceDateWithArgs","createDateWithContext","timezoneShift","compareEdges","loMargin","hiMargin","addSpecificUnit","getTimezoneShift","getOwnKey","getDateParamKey","setYear","setMonth","setISOWeekNumber","getAdjustedUnit","ms","withPrecision","fromCharCode","getRegNonCapturing","map","requiresSuffix","requiresSuffixOr","second","requiresNumerals","yyyy","MM","dd","hh","mm","ss","yy","y","ihh","imm","GMT","Z","mdy","short","medium","long","full","stamp","time","g","eval","_number","_sugarDate","x","numSortAsc","numSortDesc","dateSortAsc","date1","date2","dateSortDesc","numStr1","numStr2","num1","num2","dateStr1","dateStr2","_baseDropdown","_array","_event","CheckList","containers","containerCssClass","div_checklist_css_class","filterCssClass","checklist_css_class","itemCssClass","checklist_item_css_class","selectedItemCssClass","checklist_selected_item_css_class","activateText","activate_checklist_text","disabledItemCssClass","checklist_item_disabled_css_class","enableResetOption","enable_checklist_reset_filter","prfx","setItemOption","filter","loadFltOnDemand","getAttribute","ct","onCheckListClick","colIdxs","getFiltersByType","refreshFilters","_this3","externalFltTgtId","externalFltIds","divCont","fltIds","buildFilterId","isLinked","refreshAll","_this4","flt","ul","customValues","getCustomOptions","activeIdx","activeFilterId","getActiveFilterId","getColumnIndexFromFilterId","filteredDataCol","innerHTML","eachRow","row","cellValue","getCellValue","cells","cellString","filteredCol","getVisibleColumnValues","k","excludeRows","nbCells","isValidLinkedValue","sortOptions","addChecks","_this5","chkCt","addTChecks","lbl","fltId","lblIdx","disabled","optionClick","style","display","_this6","li0","getClearFilterText","enableEmptyOption","li1","emOperator","emptyText","enableNonEmptyOption","li2","nmOperator","nonEmptyText","_this7","chkIndex","dataset","getFilterElement","parseInt","items","slcValues","slcIndexes","checked","separator","chx","indexes","orOperator","chx0","replaceValue","replaceIndex","_this8","lis","chk","chkVal","fltAttr","substr","_this9","off","Paging","btnCssClass","btn_css_class","pageSlc","pageLengthSlc","pageLength","pageLengthTgtId","results_per_page_target_id","pgSlcCssClass","slc_css_class","pgInpCssClass","inp_css_class","resultsPerPage","results_per_page","hasResultsPerPage","resultsSlcCssClass","results_slc_css_class","resultsSpanCssClass","results_span_css_class","startPagingRow","nbPages","currentPageNb","btnNextPageText","btn_next_page_text","btnPrevPageText","btn_prev_page_text","btnLastPageText","btn_last_page_text","btnFirstPageText","btn_first_page_text","btnNextPageHtml","btn_next_page_html","enableIcons","btnPrevPageHtml","btn_prev_page_html","btnFirstPageHtml","btn_first_page_html","btnLastPageHtml","btn_last_page_html","pageText","page_text","ofText","of_text","nbPgSpanCssClass","nb_pages_css_class","hasBtns","btns","pageSelectorType","page_selector_type","toolbarPosition","toolbar_position","onBeforeChangePage","on_before_change_page","onAfterChangePage","on_after_change_page","slcResultsTxt","btnNextCont","btnPrevCont","btnLastCont","btnFirstCont","pgCont","pgBefore","pgAfter","startRow","refRow","nrows","getRowsNb","slcIndex","selectedIndex","nbOpts","next","nextIndex","changePage","prev","prevIndex","first","_detectKey","sorted","blur","slcPagesChange","nextEvt","prevEvt","lastEvt","firstEvt","slcPages","setResultsPerPage","slc","btnNextSpan","btnPrevSpan","btnLastSpan","btnFirstSpan","btnNext","btnPrev","btnLast","btnFirst","targetEl","pgBeforeSpan","pgAfterSpan","pgSpan","setPagingInfo","fltGrid","validateAllRows","validRowsIndex","resetPagingInfo","changePageHandler","changePageResultsHandler","filterTable","validRows","getValidRows","visibility","z","groupByPage","rows","endPagingRow","h","getValidRowsNb","validRowIdx","rowDisplayed","cmd","isInitialized","isEnabled","btnEvt","cmdtype","slcResultsChange","ev","onChangeResultsPerPage","slcR","slcRText","slcROpts","slcRSpan","btn","currOpt","Option","selected","slcPagesSelIndex","nbFilterableRows","slcIdx","pgNb","getPageNb","pglenIndex","getPageLength","changeResultsPerPage","pageNumber","setPage","removeResultsPerPage","NoResults","no_results_message","content","customContainer","custom_container","customContainerId","custom_container_id","cssClass","css_class","onBeforeShow","on_before_show_msg","onAfterShow","on_after_show_msg","onBeforeHide","on_before_hide_msg","onAfterHide","on_after_hide_msg","nextSibling","toggle","hide","show","setWidth","width","headTbl","clientWidth","tHead","tBodies","AlternateRows","evenCss","even_row_css_class","oddCss","odd_row_css_class","processAll","processRowHandler","indexLen","j","setRowBg","arrIdx","isValid","removeRowBg","rowIndex","arrIndex","processRow","ClearButton","btn_reset","targetId","tooltip","html","element","clearFilters","resetEl","onClick","fltReset","StatusBar","status_bar","msgContainer","labelContainer","delay","onBeforeShowMsg","onAfterShowMsg","msgFilter","msg_filter","msgPopulate","msg_populate","msgPopulateCheckList","msg_populate_checklist","msgChangePage","msg_change_page","msgClear","msg_clear","msgChangeResults","msg_change_results","msgResetPage","msg_reset_page","msgResetPageLength","msg_reset_page_length","msgSort","msg_sort","msgLoadExtensions","msg_load_extensions","msgLoadThemes","msg_load_themes","statusDiv","statusSpan","statusSpanText","message","RowsCounter","rows_counter","fromToTextSeparator","overText","over_text","onBeforeRefreshCounter","on_before_refresh_counter","onAfterRefreshCounter","on_after_refresh_counter","countDiv","countSpan","countText","refresh","totTxt","nbValidRows","pagingStartRow","pagingEndRow","getFilterableRowsNb","nbHiddenRows","MarkActiveColumns","mark_active_columns","headerCssClass","header_css_class","cellCssClass","cell_css_class","highlightColumn","highlight_column","onBeforeActiveColumn","on_before_active_column","onAfterActiveColumn","on_after_active_column","clearActiveColumns","markActiveColumn","eachCol","getHeaderElement","eachColumnCell","cell","header","querySelectorAll","PopupFilter","popup_filters","closeOnFiltering","close_on_filtering","iconPath","image","themesPath","activeIconPath","image_active","iconHtml","image_html","placeholderCssClass","placeholder_css_class","div_css_class","adjustToContainer","adjust_to_container","onBeforeOpen","on_before_popup_filter_open","onAfterOpen","on_after_popup_filter_open","onBeforeClose","on_before_popup_filter_close","onAfterClose","on_after_popup_filter_close","fltSpans","fltIcons","filtersCache","fltElms","prfxDiv","closeAll","headerWidth","targetElm","activeFlt","close","filtersRowIndex","headersRow","headers_row_index","buildIcons","setIconsState","cellIndex","changeState","buildAll","icon","getFilterType","contId","placeholder","isOpen","open","onMouseup","focus","exceptIdx","fltType","iconImg","HighlightKeyword","highlightCssClass","highlight_css_class","unhighlightAll","_processTerm","hasChildNodes","children","highlight","termIdx","nodeValue","pn","nv","before","after","highlightedNodes","nodeVal","replaceChild","normalize","highlightKeywords","getFiltersValue","item","unhighlight","reLk","lkOperator","reEq","eqOperator","reSt","stOperator","reEn","enOperator","reLe","leOperator","reGe","geOperator","reL","lwOperator","reG","grOperator","reD","dfOperator","Loader","closeDelay","onShow","on_show_loader","onHide","on_hide_loader","containerDiv","displayLoader","GridLayout","grid_layout","height","mainContCssClass","cont_css_class","tbl_cont_css_class","headContCssClass","tbl_head_css_class","inf_grid_css_class","headRowIndex","headRows","headers_rows","filters","noHeaders","no_headers","defaultColWidth","default_col_width","colElms","prfxGridFltTd","prfxGridTh","sourceTblHtml","outerHTML","tblHasColTag","tblCont","headTblCont","setOverrides","setDefaultColWidths","setConfigWidth","tblW","initialTableWidth","tH","hRow","sortTriggers","getSortTriggerIds","filtersRow","createFiltersRow","setHeadersRow","thead","tableLayout","setColWidths","scrollLeft","extension","asyncSort","triggerIds","setColumnElements","popupFilters","colWidths","colW","getHeadersRowIndex","fltTdId","prfxFlt","cl","fltCellTag","cols","getCellsNb","tableHead","thId","write","hours","expire","toGMTString","cookie","escape","read","cookieValue","search","unescape","substring","JSON","localStorage","location","hasStorage","Storage","enableLocalStorage","enableCookie","duration","cookieDuration","save","sync","getKey","stringify","_cookie2","default","removeItem","retrieve","overrideAndSync","prfxTf","path","pathname","decodeURIComponent","encodeURIComponent","hasHashChange","docMode","documentMode","Hash","lastHash","boundSync","hash","update","_hash","_storage","State","cfg","enableHash","types","persistFilters","persistPageNumber","page_number","persistPageLength","page_length","persistSort","persistColsVisibility","columns_visibility","persistFiltersVisibility","filters_visibility","cookie_duration","enableStorage","storage","pageNb","hiddenCols","filtersVisibility","prfxCol","pageNbKey","pageLengthKey","filtersVisKey","updatePage","updatePageLength","descending","updateSort","_syncSort","_syncColsVisibility","updateColsVisibility","_syncFiltersVisibility","visible","updateFiltersVisibility","keys","column","hidden","_syncFilters","disable","setFilterValue","WIKI_URL","WEBSITE_URL","Help","help_instructions","contTgtId","container_target_id","instrText","instrHtml","btnText","btn_text","btnHtml","btn_html","boundMouseup","defaultHtml","version","divContainer","helpEl","helplink","divDisplay","DateType","datetime","setLocale","addConfigFormats","colTypes","dateStr","colType","getOptions","formats","addFormat","ex","Dropdown","enableSlcResetFilter","enable_slc_reset_filter","non_empty_text","multipleSlcTooltip","multiple_slc_tooltip","onSlcChange","selectFlts","multipleFlts","multiple","title","fltCssClass","fltMultiCssClass","opt0","onSlcFocus","addOptions","slcValue","addFirstOption","isDisabled","opt1","opt2","option","selectedOptions","Emitter","events","evts","splice","_emitter","_dropdown","_checkList","TableFilter","getFullYear","hasConfig","nodeName","filterTypes","basePath","base_path","grid","filters_row_index","filters_cell_tag","stylePath","getStylePath","stylesheet","getStylesheetPath","stylesheetId","fltsRowCssClass","flts_row_css_class","enable_icons","alternate_rows","col_widths","flt_css_class","flt_multi_css_class","fltSmallCssClass","flt_small_css_class","singleFltCssClass","single_filter","enterKey","enter_key","onBeforeFilter","on_before_filter","onAfterFilter","on_after_filter","case_sensitive","hasExactMatchByCol","columns_exact_match","exactMatchByCol","exact_match","ignore_diacritics","linked_filters","disable_excluded_options","hasExcludedRows","exclude_rows","external_flt_ids","onFiltersLoaded","on_filters_loaded","singleFlt","singleFltExcludeCols","exclude_cols","onRowValidated","on_row_validated","cellParser","cell_parser","watermark","isWatermarkArray","clearFilterText","clear_filter_text","enable_empty_option","empty_text","enable_non_empty_option","on_change","sort_select","isSortNumAsc","sort_num_asc","sortNumAsc","isSortNumDesc","sort_num_desc","load_filters_on_demand","hasCustomOptions","custom_options","customOptions","rgxOperator","regexp_operator","empty_operator","nonempty_operator","or_operator","anOperator","and_operator","greater_operator","lower_operator","lower_equal_operator","greater_equal_operator","different_operator","like_operator","equal_operator","start_with_operator","end_with_operator","displayBtn","btnReset","onBeforeReset","on_before_reset","onAfterReset","on_after_reset","autoFilter","auto_filter","autoFilterDelay","isUserTyping","autoFilterTimer","highlight_keywords","thousandsSeparator","thousands_separator","decimalSeparator","decimal_separator","col_types","prfxValButton","prfxResponsive","stickyCssClass","extensions","enableDefaultTheme","enable_default_theme","hasThemes","themes","getThemesPath","responsive","stickyHeaders","sticky_headers","ExtRegistry","instantiateFeatures","import","inpclass","loadThemes","initFeatures","fltrow","_insertFiltersRow","fltCell","colSpan","dropdown","isExternalFlt","checkList","_buildInputFilter","_buildSubmitButton","setActiveFilterId","_initNoFilters","setExcludeRows","setFixedLayout","initExtensions","linkFilters","clearInterval","setInterval","insertRow","inpType","inp","onInpFocus","detectKey","onKeyDown","onKeyUp","onInpBlur","Cls","exts","ext","loadExtension","hasExtension","modulePath","then","__WEBPACK_AMD_REQUIRE_ARRAY__","mod","inst","catch","theme","styleId","isImported","_this10","removeExternalFlts","destroyExtensions","deleteRow","externalFlt","optTxt","optArray","slcTexts","texts","slcSort","sorts","_this11","hiddenRows","searchArgs","occurence","isMatch","isSingleFltMatch","sA","sAOrSplit","hasMultiOrSA","sAAndSplit","hasMultiAndSA","cS","found","w","_match","validateRow","numData","reEm","reNm","reRe","hasLO","hasLE","hasGR","hasGE","hasDF","hasEQ","hasLK","hasST","hasEN","hasEM","hasNM","hasRE","dte1","dte2","isValidDate","parseDate","isLDate","isLEDate","isGDate","isGEDate","isDFDate","isEQDate","isExactMatch","srchArg","searchArg","lastIndexOf","ignoresDiacritics","includeHeaders","exclude","getColValues","_this12","typed","colValues","getContent","getCellData","getHeadersText","isExludedRow","fltValue","fltColType","_this13","getFilterValue","bool","tr","nbRows","getWorkingRows","excludeHiddenCols","getTableData","_this14","tblData","headers","rowData","isColHidden","cellContent","filteredData","rData","getFilteredDataCol","_this15","validColValues","getRowDisplay","unshift","displayFlag","validFlag","query","tableWidth","defaultWidth","reduce","colTags","frag","createDocumentFragment","_this16","filterId","style_path","themes_path","getFilterId","_this17","slcA1","slcA2","slcA3","curSlc","slcSelectedValue","ignoreDiac","clearText","continueFn","breakFn","_this18","startIdx","filePath","imported","attr","files","fileId","callback","_this19","isLoaded","file","onreadystatechange","readyState","reCalc","_this20","table","_this21","headerText","ampmFront","numeralUnits","allowsFullWidth","timeMarkerOptional","weekdays","numerals","placeholders","past","future","timeSuffixes","modifiers","timeParse","plural","months","tokens","articles","timeFrontParse","timeMarkers","numberWithUnit","toFixed","last2","prefix","ordinalSuffix","baseUnit","union","toArray","getRangeMemberNumericValue","charCodeAt","span","intersect","every","periodSplit","getPrecision","n1","n2","chr","valueIsNotInfinite","Infinity","DURATION_UNITS","rangeClamp","clamp","FULL_CAPTURED_DURATION","RANGE_REG_FROM_TO","RANGE_REG_REAR_DURATION","RANGE_REG_FRONT_DURATION","DurationTextFormats","createDateRangeFromString","DateRangeConstructor","setOption","getOption","yearsUntil","yearsSince","yearsFromNow","yearsAgo","weeksUntil","weeksSince","weeksFromNow","weeksAgo","setISOWeek","defineInstanceWithArguments","secondsUntil","secondsSince","secondsFromNow","secondsAgo","rewind","getUnitIndexForParamName","relativeTo","u","monthsUntil","monthsSince","monthsFromNow","monthsAgo","minutesUntil","minutesSince","minutesFromNow","minutesAgo","millisecondsUntil","millisecondsSince","millisecondsFromNow","millisecondsAgo","toISOString","isYesterday","isWeekend","isWeekday","isWednesday","isUTC","isTuesday","isTomorrow","isToday","isThursday","isThisYear","isThisWeek","isThisMonth","isSunday","isSaturday","isPast","isNextYear","isNextWeek","isNextMonth","isMonday","isLeapYear","isLastYear","isLastWeek","isLastMonth","isFuture","special","together","isFriday","isBetween","t1","t2","lo","hi","isBefore","isAfter","comp","is","hoursUntil","hoursSince","hoursFromNow","hoursAgo","getUTCWeekday","getUTCDay","getISOWeek","INTERNAL_MEMOIZE_LIMIT","memoizeFunction","memo","counter","STRING_FORMAT_REG","CommonChars","createFormatMatcher","bracketMatcher","percentMatcher","precheck","compileMemoized","compile","lastIndex","exec","getSubstring","getToken","literal","bKey","pLit","pKey","assertPassesPrecheck","bt","pt","getLiteral","sub","assertNoUnmatched","getMeridiemToken","getDaysSince","getWeekYear","week","getFirstDayOfWeekYear","TIMEZONE_ABBREVIATION_REG","FormatTokensBase","ldml","strf","lowerToken","getWeekdayName","allowAlternates","alternate","getMonthName","strfPadding","ldmlPaddedToken","ordinalToken","doy","ldmlTwoDigitToken","strfTwoDigitToken","ldmlTokens","strfTokens","buildDateFormatTokens","addFormats","buildLowercase","buildPadded","padding","buildTwoDigits","buildAlias","buildAlternate","getIdentityFormat","getPadded","buildOrdinal","getOrdinal","buildAlternates","buildDateFormatMatcher","getLdml","getStrf","checkDateToken","endOfYear","endOfWeek","endOfMonth","endOfISOWeek","endOfDay","daysUntil","daysSince","daysInMonth","daysFromNow","daysAgo","beginningOfYear","beginningOfWeek","beginningOfMonth","beginningOfISOWeek","beginningOfDay","addYears","addWeeks","addSeconds","addMonths","addMinutes","addMilliseconds","addHours","caps","addDays","yearsBefore","yearsAfter","years","yearFromNow","yearBefore","yearAgo","yearAfter","weeksBefore","weeksAfter","weeks","weekFromNow","weekBefore","weekAgo","weekAfter","secondsBefore","secondsAfter","seconds","secondFromNow","secondBefore","secondAgo","secondAfter","monthsBefore","monthsAfter","monthFromNow","monthBefore","monthAgo","monthAfter","minutesBefore","minutesAfter","minutes","minuteFromNow","minuteBefore","minuteAgo","minuteAfter","millisecondsBefore","millisecondsAfter","milliseconds","millisecondFromNow","millisecondBefore","millisecondAgo","millisecondAfter","hoursBefore","hoursAfter","hourFromNow","hourBefore","hourAgo","hourAfter","getDuration","daysBefore","daysAfter","days","dayFromNow","dayBefore","dayAgo","dayAfter","wrapNamespace","defineStaticPolyfill","defineInstancePolyfill","defineInstanceAndStatic","removeLocale","getAllLocales","getKeys","getAllLocaleCodes","setChainableConstructor","createFn","setDateChainableConstructor","delta","defineAccessor","namespace","defaults","defaultNewDate","newDateInternal","LocalizedParsingTokens","getParsingTokenWithSuffix","suffix","getAdjustedUnitForNumber","allCharsReg","fullWidthNumberReg","fullWidthNumberMap","fullWidthNumbers","buildFullWidthNumber","fwp","hwp","hwc","fwn","digit","escapeRegExp","arrayToRegAlternates","joined","join","PRIVATE_PROP_PREFIX","privateKey","getArrayWithOffset","getOrdinalSuffix","hasValidPlainObjectPrototype","hasConstructor","hasOwnEnumeratedProperties","objectProto","commaSplit","isArrayIndex","getSparseArrayIndexes","fromIndex","loop","fromRight","aLoop","LOCALE_ARRAY_FIELDS","CoreParsingFormats","fullwidthNumberHelpers","Locale","monthSuffix","getNumber","numeralMap","getNumeralValue","lastWasPlace","isPlace","numeral","convertAdjustedToFormat","getTokenSrc","parsingAliases","replaceParsingTokens","parsingTokens","addRawFormat","buildValueArray","setMap","forAllAlternates","forEachAlternate","alt","suffixes","addFormatSet","allowTime","timeFront","getFormatWithTime","baseFormat","timeBefore","getTimeBefore","getTimeAfter","localized","markers","initFormats","initDefinition","initArrayFields","buildNumerals","buildTimeFormats","getTimeFormat","buildParsingTokens","getNumeralSrc","buildTimeSuffixes","buildModifiers","mapKey","addCoreFormats","df","addLocaleFormats","CanadianEnglishDefinition","BritishEnglishDefinition","en-US","en-GB","en-AU","en-CA","removeDiacritics","diacriticsMap","replacementList","chars"],"mappings":"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ACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KAGAA,EAAA,KACAA,EAAA,KAEAzB,EAAAD,QAAA0B,EAAA,kBCpMA1B,EAAA6R,OAoTA,SAAA62D,iBAAA15D,GACA,OAAAA,EAAA8E,QAAA,6BAAA5P,GACA,OAAAykE,EAAAzkE,SATA,IA3SA,IAAA0kE,IAEAthD,KAAA,IACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,sCAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,QAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,OAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,YAEAvhD,KAAA,IACAuhD,MAAA,iBAEAvhD,KAAA,IACAuhD,MAAA,kBAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,OAEAvhD,KAAA,KACAuhD,MAAA,OAEAvhD,KAAA,IACAuhD,MAAA,oCAEAvhD,KAAA,IACAuhD,MAAA,WAEAvhD,KAAA,IACAuhD,MAAA,oBAEAvhD,KAAA,IACAuhD,MAAA,kBAEAvhD,KAAA,IACAuhD,MAAA,wBAEAvhD,KAAA,IACAuhD,MAAA,UAEAvhD,KAAA,IACAuhD,MAAA,kBAEAvhD,KAAA,IACAuhD,MAAA,sBAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,aAEAvhD,KAAA,IACAuhD,MAAA,qBAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,+CAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,cAEAvhD,KAAA,IACAuhD,MAAA,UAEAvhD,KAAA,IACAuhD,MAAA,qBAEAvhD,KAAA,IACAuhD,MAAA,qBAEAvhD,KAAA,IACAuhD,MAAA,mBAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,sCAEAvhD,KAAA,IACAuhD,MAAA,YAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,cAEAvhD,KAAA,IACAuhD,MAAA,SAEAvhD,KAAA,IACAuhD,MAAA,mBAEAvhD,KAAA,IACAuhD,MAAA,kBAEAvhD,KAAA,IACAuhD,MAAA,wCAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,QAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,OAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,cAEAvhD,KAAA,IACAuhD,MAAA,iBAEAvhD,KAAA,IACAuhD,MAAA,qBAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,OAEAvhD,KAAA,IACAuhD,MAAA,kCAEAvhD,KAAA,IACAuhD,MAAA,SAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,MACAuhD,MAAA,MAEAvhD,KAAA,MACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,mBAEAvhD,KAAA,IACAuhD,MAAA,mBAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,wBAEAvhD,KAAA,IACAuhD,MAAA,UAEAvhD,KAAA,IACAuhD,MAAA,kBAEAvhD,KAAA,IACAuhD,MAAA,wBAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,YAEAvhD,KAAA,IACAuhD,MAAA,uBAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,gDAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,eAEAvhD,KAAA,IACAuhD,MAAA,UAEAvhD,KAAA,IACAuhD,MAAA,qBAEAvhD,KAAA,IACAuhD,MAAA,sBAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,oBAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,sCAEAvhD,KAAA,IACAuhD,MAAA,YAEAvhD,KAAA,KACAuhD,MAAA,MAEAvhD,KAAA,IACAuhD,MAAA,eAEAvhD,KAAA,IACAuhD,MAAA,SAEAvhD,KAAA,IACAuhD,MAAA,oBAEAvhD,KAAA,IACAuhD,MAAA,kBAIAF,KACAtoE,EAAA,EAAeA,EAAAuoE,EAAA9nE,OAA4BT,GAAA,EAE3C,IADA,IAAAwoE,EAAAD,EAAAvoE,GAAAwoE,MACAniC,EAAA,EAAiBA,EAAAmiC,EAAA/nE,OAAkB4lC,GAAA,EACnCiiC,EAAAE,EAAAniC,IAAAkiC,EAAAvoE,GAAAinB,KAUAtnB,EAAA4oE,kBACA5oE,EAAA2oE","file":"tablefilter.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1]\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\t\tvar script = document.createElement('script');\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120000;\n\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = __webpack_require__.p + \"tf-\" + ({}[chunkId]||chunkId) + \"-\" + {\"0\":\"2c8620168298c5a11749\"}[chunkId] + \".js\";\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tfunction onScriptComplete(event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\tvar error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\thead.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 128);\n","/*\n * Sugar v2.0.4\n *\n * Freely distributable and licensed under the MIT-style license.\n * Copyright (c) Andrew Plummer\n * https://sugarjs.com/\n *\n * ---------------------------- */\n(function() {\n 'use strict';\n\n /***\n * @module Core\n * @description Core functionality including the ability to define methods and\n * extend onto natives.\n *\n ***/\n\n // The global to export.\n var Sugar;\n\n // The name of Sugar in the global namespace.\n var SUGAR_GLOBAL = 'Sugar';\n\n // Natives available on initialization. Letting Object go first to ensure its\n // global is set by the time the rest are checking for chainable Object methods.\n var NATIVE_NAMES = 'Object Number String Array Date RegExp Function';\n\n // Static method flag\n var STATIC = 0x1;\n\n // Instance method flag\n var INSTANCE = 0x2;\n\n // IE8 has a broken defineProperty but no defineProperties so this saves a try/catch.\n var PROPERTY_DESCRIPTOR_SUPPORT = !!(Object.defineProperty && Object.defineProperties);\n\n // The global context. Rhino uses a different \"global\" keyword so\n // do an extra check to be sure that it's actually the global context.\n var globalContext = typeof global !== 'undefined' && global.Object === Object ? global : this;\n\n // Is the environment node?\n var hasExports = typeof module !== 'undefined' && module.exports;\n\n // Whether object instance methods can be mapped to the prototype.\n var allowObjectPrototype = false;\n\n // A map from Array to SugarArray.\n var namespacesByName = {};\n\n // A map from [object Object] to namespace.\n var namespacesByClassString = {};\n\n // Defining properties.\n var defineProperty = PROPERTY_DESCRIPTOR_SUPPORT ? Object.defineProperty : definePropertyShim;\n\n // A default chainable class for unknown types.\n var DefaultChainable = getNewChainableClass('Chainable');\n\n\n // Global methods\n\n function setupGlobal() {\n Sugar = globalContext[SUGAR_GLOBAL];\n if (Sugar) {\n // Reuse already defined Sugar global object.\n return;\n }\n Sugar = function(arg) {\n forEachProperty(Sugar, function(sugarNamespace, name) {\n // Although only the only enumerable properties on the global\n // object are Sugar namespaces, environments that can't set\n // non-enumerable properties will step through the utility methods\n // as well here, so use this check to only allow true namespaces.\n if (hasOwn(namespacesByName, name)) {\n sugarNamespace.extend(arg);\n }\n });\n return Sugar;\n };\n if (hasExports) {\n module.exports = Sugar;\n } else {\n try {\n globalContext[SUGAR_GLOBAL] = Sugar;\n } catch (e) {\n // Contexts such as QML have a read-only global context.\n }\n }\n forEachProperty(NATIVE_NAMES.split(' '), function(name) {\n createNamespace(name);\n });\n setGlobalProperties();\n }\n\n /***\n * @method createNamespace(name)\n * @returns SugarNamespace\n * @namespace Sugar\n * @short Creates a new Sugar namespace.\n * @extra This method is for plugin developers who want to define methods to be\n * used with natives that Sugar does not handle by default. The new\n * namespace will appear on the `Sugar` global with all the methods of\n * normal namespaces, including the ability to define new methods. When\n * extended, any defined methods will be mapped to `name` in the global\n * context.\n *\n * @example\n *\n * Sugar.createNamespace('Boolean');\n *\n * @param {string} name - The namespace name.\n *\n ***/\n function createNamespace(name) {\n\n // Is the current namespace Object?\n var isObject = name === 'Object';\n\n // A Sugar namespace is also a chainable class: Sugar.Array, etc.\n var sugarNamespace = getNewChainableClass(name, true);\n\n /***\n * @method extend([opts])\n * @returns Sugar\n * @namespace Sugar\n * @short Extends Sugar defined methods onto natives.\n * @extra This method can be called on individual namespaces like\n * `Sugar.Array` or on the `Sugar` global itself, in which case\n * [opts] will be forwarded to each `extend` call. For more,\n * see `extending`.\n *\n * @options\n *\n * methods An array of method names to explicitly extend.\n *\n * except An array of method names or global namespaces (`Array`,\n * `String`) to explicitly exclude. Namespaces should be the\n * actual global objects, not strings.\n *\n * namespaces An array of global namespaces (`Array`, `String`) to\n * explicitly extend. Namespaces should be the actual\n * global objects, not strings.\n *\n * enhance A shortcut to disallow all \"enhance\" flags at once\n * (flags listed below). For more, see `enhanced methods`.\n * Default is `true`.\n *\n * enhanceString A boolean allowing String enhancements. Default is `true`.\n *\n * enhanceArray A boolean allowing Array enhancements. Default is `true`.\n *\n * objectPrototype A boolean allowing Sugar to extend Object.prototype\n * with instance methods. This option is off by default\n * and should generally not be used except with caution.\n * For more, see `object methods`.\n *\n * @example\n *\n * Sugar.Array.extend();\n * Sugar.extend();\n *\n * @option {Array} [methods]\n * @option {Array} [except]\n * @option {Array} [namespaces]\n * @option {boolean} [enhance]\n * @option {boolean} [enhanceString]\n * @option {boolean} [enhanceArray]\n * @option {boolean} [objectPrototype]\n * @param {ExtendOptions} [opts]\n *\n ***\n * @method extend([opts])\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Extends Sugar defined methods for a specific namespace onto natives.\n * @param {ExtendOptions} [opts]\n *\n ***/\n var extend = function (opts) {\n\n var nativeClass = globalContext[name], nativeProto = nativeClass.prototype;\n var staticMethods = {}, instanceMethods = {}, methodsByName;\n\n function objectRestricted(name, target) {\n return isObject && target === nativeProto &&\n (!allowObjectPrototype || name === 'get' || name === 'set');\n }\n\n function arrayOptionExists(field, val) {\n var arr = opts[field];\n if (arr) {\n for (var i = 0, el; el = arr[i]; i++) {\n if (el === val) {\n return true;\n }\n }\n }\n return false;\n }\n\n function arrayOptionExcludes(field, val) {\n return opts[field] && !arrayOptionExists(field, val);\n }\n\n function disallowedByFlags(methodName, target, flags) {\n // Disallowing methods by flag currently only applies if methods already\n // exist to avoid enhancing native methods, as aliases should still be\n // extended (i.e. Array#all should still be extended even if Array#every\n // is being disallowed by a flag).\n if (!target[methodName] || !flags) {\n return false;\n }\n for (var i = 0; i < flags.length; i++) {\n if (opts[flags[i]] === false) {\n return true;\n }\n }\n }\n\n function namespaceIsExcepted() {\n return arrayOptionExists('except', nativeClass) ||\n arrayOptionExcludes('namespaces', nativeClass);\n }\n\n function methodIsExcepted(methodName) {\n return arrayOptionExists('except', methodName);\n }\n\n function canExtend(methodName, method, target) {\n return !objectRestricted(methodName, target) &&\n !disallowedByFlags(methodName, target, method.flags) &&\n !methodIsExcepted(methodName);\n }\n\n opts = opts || {};\n methodsByName = opts.methods;\n\n if (namespaceIsExcepted()) {\n return;\n } else if (isObject && typeof opts.objectPrototype === 'boolean') {\n // Store \"objectPrototype\" flag for future reference.\n allowObjectPrototype = opts.objectPrototype;\n }\n\n forEachProperty(methodsByName || sugarNamespace, function(method, methodName) {\n if (methodsByName) {\n // If we have method names passed in an array,\n // then we need to flip the key and value here\n // and find the method in the Sugar namespace.\n methodName = method;\n method = sugarNamespace[methodName];\n }\n if (hasOwn(method, 'instance') && canExtend(methodName, method, nativeProto)) {\n instanceMethods[methodName] = method.instance;\n }\n if(hasOwn(method, 'static') && canExtend(methodName, method, nativeClass)) {\n staticMethods[methodName] = method;\n }\n });\n\n // Accessing the extend target each time instead of holding a reference as\n // it may have been overwritten (for example Date by Sinon). Also need to\n // access through the global to allow extension of user-defined namespaces.\n extendNative(nativeClass, staticMethods);\n extendNative(nativeProto, instanceMethods);\n\n if (!methodsByName) {\n // If there are no method names passed, then\n // all methods in the namespace will be extended\n // to the native. This includes all future defined\n // methods, so add a flag here to check later.\n setProperty(sugarNamespace, 'active', true);\n }\n return sugarNamespace;\n };\n\n function defineWithOptionCollect(methodName, instance, args) {\n setProperty(sugarNamespace, methodName, function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n defineMethods(sugarNamespace, opts.methods, instance, args, opts.last);\n return sugarNamespace;\n });\n }\n\n /***\n * @method defineStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods on the namespace that can later be extended\n * onto the native globals.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. If `extend` was previously called\n * with no arguments, the method will be immediately mapped to its\n * native when defined.\n *\n * @example\n *\n * Sugar.Number.defineStatic({\n * isOdd: function (num) {\n * return num % 2 === 1;\n * }\n * });\n *\n * @signature defineStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStatic', STATIC);\n\n /***\n * @method defineInstance(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines methods on the namespace that can later be extended as\n * instance methods onto the native prototype.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. All functions should accept the\n * native for which they are mapped as their first argument, and should\n * never refer to `this`. If `extend` was previously called with no\n * arguments, the method will be immediately mapped to its native when\n * defined.\n *\n * Methods cannot accept more than 4 arguments in addition to the\n * native (5 arguments total). Any additional arguments will not be\n * mapped. If the method needs to accept unlimited arguments, use\n * `defineInstanceWithArguments`. Otherwise if more options are\n * required, use an options object instead.\n *\n * @example\n *\n * Sugar.Number.defineInstance({\n * square: function (num) {\n * return num * num;\n * }\n * });\n *\n * @signature defineInstance(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstance', INSTANCE);\n\n /***\n * @method defineInstanceAndStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short A shortcut to define both static and instance methods on the namespace.\n * @extra This method is intended for use with `Object` instance methods. Sugar\n * will not map any methods to `Object.prototype` by default, so defining\n * instance methods as static helps facilitate their proper use.\n *\n * @example\n *\n * Sugar.Object.defineInstanceAndStatic({\n * isAwesome: function (obj) {\n * // check if obj is awesome!\n * }\n * });\n *\n * @signature defineInstanceAndStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceAndStatic', INSTANCE | STATIC);\n\n\n /***\n * @method defineStaticWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that collect arguments.\n * @extra This method is identical to `defineStatic`, except that when defined\n * methods are called, they will collect any arguments past `n - 1`,\n * where `n` is the number of arguments that the method accepts.\n * Collected arguments will be passed to the method in an array\n * as the last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineStaticWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineStaticWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStaticWithArguments', STATIC, true);\n\n /***\n * @method defineInstanceWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that collect arguments.\n * @extra This method is identical to `defineInstance`, except that when\n * defined methods are called, they will collect any arguments past\n * `n - 1`, where `n` is the number of arguments that the method\n * accepts. Collected arguments will be passed to the method as the\n * last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineInstanceWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineInstanceWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceWithArguments', INSTANCE, true);\n\n /***\n * @method defineStaticPolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that are mapped onto the native if they do\n * not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments.\n *\n * @example\n *\n * Sugar.Object.defineStaticPolyfill({\n * keys: function (obj) {\n * // get keys!\n * }\n * });\n *\n * @signature defineStaticPolyfill(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n setProperty(sugarNamespace, 'defineStaticPolyfill', function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n extendNative(globalContext[name], opts.methods, true, opts.last);\n return sugarNamespace;\n });\n\n /***\n * @method defineInstancePolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that are mapped onto the native prototype\n * if they do not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments. This method differs from\n * `defineInstance` as there is no static signature (as the method\n * is mapped as-is to the native), so it should refer to its `this`\n * object.\n *\n * @example\n *\n * Sugar.Array.defineInstancePolyfill({\n * indexOf: function (arr, el) {\n * // index finding code here!\n * }\n * });\n *\n * @signature defineInstancePolyfill(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n setProperty(sugarNamespace, 'defineInstancePolyfill', function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n extendNative(globalContext[name].prototype, opts.methods, true, opts.last);\n // Map instance polyfills to chainable as well.\n forEachProperty(opts.methods, function(fn, methodName) {\n defineChainableMethod(sugarNamespace, methodName, fn);\n });\n return sugarNamespace;\n });\n\n /***\n * @method alias(toName, from)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Aliases one Sugar method to another.\n *\n * @example\n *\n * Sugar.Array.alias('all', 'every');\n *\n * @signature alias(toName, fn)\n * @param {string} toName - Name for new method.\n * @param {string|Function} from - Method to alias, or string shortcut.\n ***/\n setProperty(sugarNamespace, 'alias', function(name, source) {\n var method = typeof source === 'string' ? sugarNamespace[source] : source;\n setMethod(sugarNamespace, name, method);\n return sugarNamespace;\n });\n\n // Each namespace can extend only itself through its .extend method.\n setProperty(sugarNamespace, 'extend', extend);\n\n // Cache the class to namespace relationship for later use.\n namespacesByName[name] = sugarNamespace;\n namespacesByClassString['[object ' + name + ']'] = sugarNamespace;\n\n mapNativeToChainable(name);\n mapObjectChainablesToNamespace(sugarNamespace);\n\n\n // Export\n return Sugar[name] = sugarNamespace;\n }\n\n function setGlobalProperties() {\n setProperty(Sugar, 'extend', Sugar);\n setProperty(Sugar, 'toString', toString);\n setProperty(Sugar, 'createNamespace', createNamespace);\n\n setProperty(Sugar, 'util', {\n 'hasOwn': hasOwn,\n 'getOwn': getOwn,\n 'setProperty': setProperty,\n 'classToString': classToString,\n 'defineProperty': defineProperty,\n 'forEachProperty': forEachProperty,\n 'mapNativeToChainable': mapNativeToChainable\n });\n }\n\n function toString() {\n return SUGAR_GLOBAL;\n }\n\n\n // Defining Methods\n\n function defineMethods(sugarNamespace, methods, type, args, flags) {\n forEachProperty(methods, function(method, methodName) {\n var instanceMethod, staticMethod = method;\n if (args) {\n staticMethod = wrapMethodWithArguments(method);\n }\n if (flags) {\n staticMethod.flags = flags;\n }\n\n // A method may define its own custom implementation, so\n // make sure that's not the case before creating one.\n if (type & INSTANCE && !method.instance) {\n instanceMethod = wrapInstanceMethod(method, args);\n setProperty(staticMethod, 'instance', instanceMethod);\n }\n\n if (type & STATIC) {\n setProperty(staticMethod, 'static', true);\n }\n\n setMethod(sugarNamespace, methodName, staticMethod);\n\n if (sugarNamespace.active) {\n // If the namespace has been activated (.extend has been called),\n // then map this method as well.\n sugarNamespace.extend(methodName);\n }\n });\n }\n\n function collectDefineOptions(arg1, arg2, arg3) {\n var methods, last;\n if (typeof arg1 === 'string') {\n methods = {};\n methods[arg1] = arg2;\n last = arg3;\n } else {\n methods = arg1;\n last = arg2;\n }\n return {\n last: last,\n methods: methods\n };\n }\n\n function wrapInstanceMethod(fn, args) {\n return args ? wrapMethodWithArguments(fn, true) : wrapInstanceMethodFixed(fn);\n }\n\n function wrapMethodWithArguments(fn, instance) {\n // Functions accepting enumerated arguments will always have \"args\" as the\n // last argument, so subtract one from the function length to get the point\n // at which to start collecting arguments. If this is an instance method on\n // a prototype, then \"this\" will be pushed into the arguments array so start\n // collecting 1 argument earlier.\n var startCollect = fn.length - 1 - (instance ? 1 : 0);\n return function() {\n var args = [], collectedArgs = [], len;\n if (instance) {\n args.push(this);\n }\n len = Math.max(arguments.length, startCollect);\n // Optimized: no leaking arguments\n for (var i = 0; i < len; i++) {\n if (i < startCollect) {\n args.push(arguments[i]);\n } else {\n collectedArgs.push(arguments[i]);\n }\n }\n args.push(collectedArgs);\n return fn.apply(this, args);\n };\n }\n\n function wrapInstanceMethodFixed(fn) {\n switch(fn.length) {\n // Wrapped instance methods will always be passed the instance\n // as the first argument, but requiring the argument to be defined\n // may cause confusion here, so return the same wrapped function regardless.\n case 0:\n case 1:\n return function() {\n return fn(this);\n };\n case 2:\n return function(a) {\n return fn(this, a);\n };\n case 3:\n return function(a, b) {\n return fn(this, a, b);\n };\n case 4:\n return function(a, b, c) {\n return fn(this, a, b, c);\n };\n case 5:\n return function(a, b, c, d) {\n return fn(this, a, b, c, d);\n };\n }\n }\n\n // Method helpers\n\n function extendNative(target, source, polyfill, override) {\n forEachProperty(source, function(method, name) {\n if (polyfill && !override && target[name]) {\n // Method exists, so bail.\n return;\n }\n setProperty(target, name, method);\n });\n }\n\n function setMethod(sugarNamespace, methodName, method) {\n sugarNamespace[methodName] = method;\n if (method.instance) {\n defineChainableMethod(sugarNamespace, methodName, method.instance, true);\n }\n }\n\n\n // Chainables\n\n function getNewChainableClass(name) {\n var fn = function SugarChainable(obj, arg) {\n if (!(this instanceof fn)) {\n return new fn(obj, arg);\n }\n if (this.constructor !== fn) {\n // Allow modules to define their own constructors.\n obj = this.constructor.apply(obj, arguments);\n }\n this.raw = obj;\n };\n setProperty(fn, 'toString', function() {\n return SUGAR_GLOBAL + name;\n });\n setProperty(fn.prototype, 'valueOf', function() {\n return this.raw;\n });\n return fn;\n }\n\n function defineChainableMethod(sugarNamespace, methodName, fn) {\n var wrapped = wrapWithChainableResult(fn), existing, collision, dcp;\n dcp = DefaultChainable.prototype;\n existing = dcp[methodName];\n\n // If the method was previously defined on the default chainable, then a\n // collision exists, so set the method to a disambiguation function that will\n // lazily evaluate the object and find it's associated chainable. An extra\n // check is required to avoid false positives from Object inherited methods.\n collision = existing && existing !== Object.prototype[methodName];\n\n // The disambiguation function is only required once.\n if (!existing || !existing.disambiguate) {\n dcp[methodName] = collision ? disambiguateMethod(methodName) : wrapped;\n }\n\n // The target chainable always receives the wrapped method. Additionally,\n // if the target chainable is Sugar.Object, then map the wrapped method\n // to all other namespaces as well if they do not define their own method\n // of the same name. This way, a Sugar.Number will have methods like\n // isEqual that can be called on any object without having to traverse up\n // the prototype chain and perform disambiguation, which costs cycles.\n // Note that the \"if\" block below actually does nothing on init as Object\n // goes first and no other namespaces exist yet. However it needs to be\n // here as Object instance methods defined later also need to be mapped\n // back onto existing namespaces.\n sugarNamespace.prototype[methodName] = wrapped;\n if (sugarNamespace === Sugar.Object) {\n mapObjectChainableToAllNamespaces(methodName, wrapped);\n }\n }\n\n function mapObjectChainablesToNamespace(sugarNamespace) {\n forEachProperty(Sugar.Object && Sugar.Object.prototype, function(val, methodName) {\n if (typeof val === 'function') {\n setObjectChainableOnNamespace(sugarNamespace, methodName, val);\n }\n });\n }\n\n function mapObjectChainableToAllNamespaces(methodName, fn) {\n forEachProperty(namespacesByName, function(sugarNamespace) {\n setObjectChainableOnNamespace(sugarNamespace, methodName, fn);\n });\n }\n\n function setObjectChainableOnNamespace(sugarNamespace, methodName, fn) {\n var proto = sugarNamespace.prototype;\n if (!hasOwn(proto, methodName)) {\n proto[methodName] = fn;\n }\n }\n\n function wrapWithChainableResult(fn) {\n return function() {\n return new DefaultChainable(fn.apply(this.raw, arguments));\n };\n }\n\n function disambiguateMethod(methodName) {\n var fn = function() {\n var raw = this.raw, sugarNamespace, fn;\n if (raw != null) {\n // Find the Sugar namespace for this unknown.\n sugarNamespace = namespacesByClassString[classToString(raw)];\n }\n if (!sugarNamespace) {\n // If no sugarNamespace can be resolved, then default\n // back to Sugar.Object so that undefined and other\n // non-supported types can still have basic object\n // methods called on them, such as type checks.\n sugarNamespace = Sugar.Object;\n }\n\n fn = new sugarNamespace(raw)[methodName];\n\n if (fn.disambiguate) {\n // If the method about to be called on this chainable is\n // itself a disambiguation method, then throw an error to\n // prevent infinite recursion.\n throw new TypeError('Cannot resolve namespace for ' + raw);\n }\n\n return fn.apply(this, arguments);\n };\n fn.disambiguate = true;\n return fn;\n }\n\n function mapNativeToChainable(name, methodNames) {\n var sugarNamespace = namespacesByName[name],\n nativeProto = globalContext[name].prototype;\n\n if (!methodNames && ownPropertyNames) {\n methodNames = ownPropertyNames(nativeProto);\n }\n\n forEachProperty(methodNames, function(methodName) {\n if (nativeMethodProhibited(methodName)) {\n // Sugar chainables have their own constructors as well as \"valueOf\"\n // methods, so exclude them here. The __proto__ argument should be trapped\n // by the function check below, however simply accessing this property on\n // Object.prototype causes QML to segfault, so pre-emptively excluding it.\n return;\n }\n try {\n var fn = nativeProto[methodName];\n if (typeof fn !== 'function') {\n // Bail on anything not a function.\n return;\n }\n } catch (e) {\n // Function.prototype has properties that\n // will throw errors when accessed.\n return;\n }\n defineChainableMethod(sugarNamespace, methodName, fn);\n });\n }\n\n function nativeMethodProhibited(methodName) {\n return methodName === 'constructor' ||\n methodName === 'valueOf' ||\n methodName === '__proto__';\n }\n\n\n // Util\n\n // Internal references\n var ownPropertyNames = Object.getOwnPropertyNames,\n internalToString = Object.prototype.toString,\n internalHasOwnProperty = Object.prototype.hasOwnProperty;\n\n // Defining this as a variable here as the ES5 module\n // overwrites it to patch DONTENUM.\n var forEachProperty = function (obj, fn) {\n for(var key in obj) {\n if (!hasOwn(obj, key)) continue;\n if (fn.call(obj, obj[key], key, obj) === false) break;\n }\n };\n\n function definePropertyShim(obj, prop, descriptor) {\n obj[prop] = descriptor.value;\n }\n\n function setProperty(target, name, value, enumerable) {\n defineProperty(target, name, {\n value: value,\n enumerable: !!enumerable,\n configurable: true,\n writable: true\n });\n }\n\n // PERF: Attempts to speed this method up get very Heisenbergy. Quickly\n // returning based on typeof works for primitives, but slows down object\n // types. Even === checks on null and undefined (no typeof) will end up\n // basically breaking even. This seems to be as fast as it can go.\n function classToString(obj) {\n return internalToString.call(obj);\n }\n\n function hasOwn(obj, prop) {\n return !!obj && internalHasOwnProperty.call(obj, prop);\n }\n\n function getOwn(obj, prop) {\n if (hasOwn(obj, prop)) {\n return obj[prop];\n }\n }\n\n setupGlobal();\n\n}).call(this);","'use strict';\n\nvar buildNumberUnitMethods = require('../internal/buildNumberUnitMethods');\n\nbuildNumberUnitMethods();","'use strict';\n\nvar buildDateUnitMethods = require('../internal/buildDateUnitMethods');\n\nbuildDateUnitMethods();","\r\n/**\r\n * Types utilities\r\n */\r\n\r\nconst UNDEFINED = void 0;\r\n\r\n/**\r\n * Return an empty function\r\n * @return {Function}\r\n */\r\nexport const EMPTY_FN = function() {};\r\n\r\n/**\r\n * Check passed argument is an object\r\n * @param {Object} obj\r\n * @return {Boolean}\r\n */\r\nexport const isObj =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Object]';\r\n\r\n/**\r\n * Check passed argument is a function\r\n * @param {Function} obj\r\n * @return {Boolean}\r\n */\r\nexport const isFn =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Function]';\r\n\r\n/**\r\n * Check passed argument is an array\r\n * @param {Array} obj\r\n * @return {Boolean}\r\n */\r\nexport const isArray =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Array]';\r\n\r\n/**\r\n * Check passed argument is a string\r\n * @param {String} obj obj\r\n * @returns {Boolean}\r\n */\r\nexport const isString =\r\n (obj) => Object.prototype.toString.call(obj) === '[object String]';\r\n\r\n/**\r\n * Check passed argument is a number\r\n * @param {Number} obj\r\n * @returns {Boolean}\r\n */\r\nexport const isNumber =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Number]';\r\n\r\n/**\r\n * Check passed argument is a boolean\r\n * @param {Boolean} obj\r\n * @returns {Boolean}\r\n */\r\nexport const isBoolean =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Boolean]';\r\n\r\n/**\r\n * Check passed argument is undefined\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isUndef = (obj) => obj === UNDEFINED;\r\n\r\n/**\r\n * Check passed argument is null\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isNull = (obj) => obj === null;\r\n\r\n/**\r\n * Check passed argument is empty (undefined, null or empty string)\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (obj) => isUndef(obj) || isNull(obj) || obj.length === 0;\r\n","'use strict';\n\nmodule.exports = {\n HOURS_INDEX: 3,\n DAY_INDEX: 4,\n WEEK_INDEX: 5,\n MONTH_INDEX: 6,\n YEAR_INDEX: 7\n};","'use strict';\n\nvar NATIVE_TYPES = require('./NATIVE_TYPES'),\n forEach = require('../internal/forEach'),\n isClass = require('../internal/isClass'),\n spaceSplit = require('../internal/spaceSplit'),\n isPlainObject = require('../internal/isPlainObject'),\n coreUtilityAliases = require('./coreUtilityAliases');\n\nvar classToString = coreUtilityAliases.classToString;\n\nvar isSerializable,\n isBoolean, isNumber, isString,\n isDate, isRegExp, isFunction,\n isArray, isSet, isMap, isError;\n\nfunction buildClassChecks() {\n\n var knownTypes = {};\n\n function addCoreTypes() {\n\n var names = spaceSplit(NATIVE_TYPES);\n\n isBoolean = buildPrimitiveClassCheck(names[0]);\n isNumber = buildPrimitiveClassCheck(names[1]);\n isString = buildPrimitiveClassCheck(names[2]);\n\n isDate = buildClassCheck(names[3]);\n isRegExp = buildClassCheck(names[4]);\n\n // Wanted to enhance performance here by using simply \"typeof\"\n // but Firefox has two major issues that make this impossible,\n // one fixed, the other not, so perform a full class check here.\n //\n // 1. Regexes can be typeof \"function\" in FF < 3\n // https://bugzilla.mozilla.org/show_bug.cgi?id=61911 (fixed)\n //\n // 2. HTMLEmbedElement and HTMLObjectElement are be typeof \"function\"\n // https://bugzilla.mozilla.org/show_bug.cgi?id=268945 (won't fix)\n isFunction = buildClassCheck(names[5]);\n\n\n isArray = Array.isArray || buildClassCheck(names[6]);\n isError = buildClassCheck(names[7]);\n\n isSet = buildClassCheck(names[8], typeof Set !== 'undefined' && Set);\n isMap = buildClassCheck(names[9], typeof Map !== 'undefined' && Map);\n\n // Add core types as known so that they can be checked by value below,\n // notably excluding Functions and adding Arguments and Error.\n addKnownType('Arguments');\n addKnownType(names[0]);\n addKnownType(names[1]);\n addKnownType(names[2]);\n addKnownType(names[3]);\n addKnownType(names[4]);\n addKnownType(names[6]);\n\n }\n\n function addArrayTypes() {\n var types = 'Int8 Uint8 Uint8Clamped Int16 Uint16 Int32 Uint32 Float32 Float64';\n forEach(spaceSplit(types), function(str) {\n addKnownType(str + 'Array');\n });\n }\n\n function addKnownType(className) {\n var str = '[object '+ className +']';\n knownTypes[str] = true;\n }\n\n function isKnownType(className) {\n return knownTypes[className];\n }\n\n function buildClassCheck(className, globalObject) {\n if (globalObject && isClass(new globalObject, 'Object')) {\n return getConstructorClassCheck(globalObject);\n } else {\n return getToStringClassCheck(className);\n }\n }\n\n function getConstructorClassCheck(obj) {\n var ctorStr = String(obj);\n return function(obj) {\n return String(obj.constructor) === ctorStr;\n };\n }\n\n function getToStringClassCheck(className) {\n return function(obj, str) {\n // perf: Returning up front on instanceof appears to be slower.\n return isClass(obj, className, str);\n };\n }\n\n function buildPrimitiveClassCheck(className) {\n var type = className.toLowerCase();\n return function(obj) {\n var t = typeof obj;\n return t === type || t === 'object' && isClass(obj, className);\n };\n }\n\n addCoreTypes();\n addArrayTypes();\n\n isSerializable = function(obj, className) {\n // Only known objects can be serialized. This notably excludes functions,\n // host objects, Symbols (which are matched by reference), and instances\n // of classes. The latter can arguably be matched by value, but\n // distinguishing between these and host objects -- which should never be\n // compared by value -- is very tricky so not dealing with it here.\n className = className || classToString(obj);\n return isKnownType(className) || isPlainObject(obj, className);\n };\n\n}\n\nbuildClassChecks();\n\nmodule.exports = {\n isSerializable: isSerializable,\n isBoolean: isBoolean,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isRegExp: isRegExp,\n isFunction: isFunction,\n isArray: isArray,\n isSet: isSet,\n isMap: isMap,\n isError: isError\n};","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'addLocale': function(code, set) {\n return localeManager.add(code, set);\n }\n\n});\n\nmodule.exports = Sugar.Date.addLocale;","import {isBoolean, isString, isFn, isArray} from './types';\r\n\r\n/** Configuration settings helpers */\r\n\r\n/**\r\n * If passed value is not of boolean type return the default value\r\n * otherwise return the value itself\r\n * @param {Boolean|Any} value\r\n * @param {Boolean} default value\r\n * @return {Boolean|Any}\r\n */\r\nexport const defaultsBool =\r\n (val, defaultVal) => isBoolean(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of string type return the default value\r\n * otherwise return the value itself\r\n * @param {String|Any} value\r\n * @param {String} default value\r\n * @return {String|Any}\r\n */\r\nexport const defaultsStr =\r\n (val, defaultVal) => isString(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of number type return the default value\r\n * otherwise return the value itself\r\n * @param {Number|Any} value\r\n * @param {Number} default value\r\n * @return {Number|Any}\r\n */\r\nexport const defaultsNb =\r\n (val, defaultVal) => isNaN(val) ? defaultVal : val;\r\n\r\n/**\r\n * If passed value is not of array type return the default value\r\n * otherwise return the value itself\r\n * @param {Array|Any} value\r\n * @param {Array} default value\r\n * @return {Array|Any}\r\n */\r\nexport const defaultsArr =\r\n (val, defaultVal) => isArray(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of function type return the default value\r\n * otherwise return the value itself\r\n * @param {Function|Any} value\r\n * @param {Function} default value\r\n * @return {Function|Any}\r\n */\r\nexport const defaultsFn =\r\n (val, defaultVal) => isFn(val) ? val : defaultVal;\r\n","'use strict';\n\nmodule.exports = {\n abs: Math.abs,\n pow: Math.pow,\n min: Math.min,\n max: Math.max,\n ceil: Math.ceil,\n floor: Math.floor,\n round: Math.round\n};","'use strict';\n\nvar LazyLoadedLocales = require('./LazyLoadedLocales'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n getNewLocale = require('../internal/getNewLocale');\n\nvar English, localeManager;\n\nfunction buildLocales() {\n\n function LocaleManager(loc) {\n this.locales = {};\n this.add(loc);\n }\n\n LocaleManager.prototype = {\n\n get: function(code, fallback) {\n var loc = this.locales[code];\n if (!loc && LazyLoadedLocales[code]) {\n loc = this.add(code, LazyLoadedLocales[code]);\n } else if (!loc && code) {\n loc = this.locales[code.slice(0, 2)];\n }\n return loc || fallback === false ? loc : this.current;\n },\n\n getAll: function() {\n return this.locales;\n },\n\n set: function(code) {\n var loc = this.get(code, false);\n if (!loc) {\n throw new TypeError('Invalid Locale: ' + code);\n }\n return this.current = loc;\n },\n\n add: function(code, def) {\n if (!def) {\n def = code;\n code = def.code;\n } else {\n def.code = code;\n }\n var loc = def.compiledFormats ? def : getNewLocale(def);\n this.locales[code] = loc;\n if (!this.current) {\n this.current = loc;\n }\n return loc;\n },\n\n remove: function(code) {\n if (this.current.code === code) {\n this.current = this.get('en');\n }\n return delete this.locales[code];\n }\n\n };\n\n // Sorry about this guys...\n English = getNewLocale(AmericanEnglishDefinition);\n localeManager = new LocaleManager(English);\n}\n\nbuildLocales();\n\nmodule.exports = {\n English: English,\n localeManager: localeManager\n};","import {root} from './root';\r\nimport {isArray, isString, isUndef} from './types';\r\nimport {trim} from './string';\r\n\r\n/**\r\n * DOM utilities\r\n */\r\n\r\nconst doc = root.document;\r\n\r\n/**\r\n * Returns text + text of children of given node\r\n * @param {NodeElement} node\r\n * @return {String}\r\n */\r\nexport const getText = (node) => {\r\n if (isUndef(node.textContent)) {\r\n return trim(node.innerText);\r\n }\r\n return trim(node.textContent);\r\n};\r\n\r\n/**\r\n * Returns the first text node contained in the supplied node\r\n * @param {NodeElement} node node\r\n * @return {String}\r\n */\r\nexport const getFirstTextNode = (node) => {\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n let n = node.childNodes[i];\r\n if (n.nodeType === 3) {\r\n return n.data;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Creates an html element with given collection of attributes\r\n * @param {String} tag a string of the html tag to create\r\n * @param {Array} an undetermined number of arrays containing the with 2\r\n * items, the attribute name and its value ['id','myId']\r\n * @return {Object} created element\r\n */\r\nexport const createElm = (...args) => {\r\n let tag = args[0];\r\n if (!isString(tag)) {\r\n return null;\r\n }\r\n\r\n let el = doc.createElement(tag);\r\n for (let i = 0; i < args.length; i++) {\r\n let arg = args[i];\r\n\r\n if (isArray(arg) && arg.length === 2) {\r\n el.setAttribute(arg[0], arg[1]);\r\n }\r\n }\r\n return el;\r\n};\r\n\r\n/**\r\n * Removes passed node from DOM\r\n * @param {DOMElement} node\r\n * @return {DOMElement} old node reference\r\n */\r\nexport const removeElm = (node) => node.parentNode.removeChild(node);\r\n\r\n/**\r\n * Returns a text node with given text\r\n * @param {String} txt\r\n * @return {Object}\r\n */\r\nexport const createText = (txt) => doc.createTextNode(txt);\r\n\r\n/**\r\n * Determine whether the passed elements is assigned the given class\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n * @returns {Boolean}\r\n */\r\nexport const hasClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return false;\r\n }\r\n\r\n if (supportsClassList()) {\r\n return ele.classList.contains(cls);\r\n }\r\n return ele.className.match(new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)'));\r\n};\r\n\r\n/**\r\n * Adds the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const addClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.add(cls);\r\n return;\r\n }\r\n\r\n if (ele.className === '') {\r\n ele.className = cls;\r\n }\r\n else if (!hasClass(ele, cls)) {\r\n ele.className += ' ' + cls;\r\n }\r\n};\r\n\r\n/**\r\n * Removes the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const removeClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.remove(cls);\r\n return;\r\n }\r\n let reg = new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)', 'g');\r\n ele.className = ele.className.replace(reg, '');\r\n};\r\n\r\n/**\r\n * Creates and returns an option element\r\n * @param {String} text option text\r\n * @param {String} value option value\r\n * @param {Boolean} isSel whether option is selected\r\n * @return {Object} option element\r\n */\r\nexport const createOpt = (text, value, isSel) => {\r\n let isSelected = isSel ? true : false;\r\n let opt = isSelected ?\r\n createElm('option', ['value', value], ['selected', 'true']) :\r\n createElm('option', ['value', value]);\r\n opt.appendChild(createText(text));\r\n return opt;\r\n};\r\n\r\n/**\r\n * Creates and returns a checklist item\r\n * @param {String} id index of check item\r\n * @param {String} chkValue check item value\r\n * @param {String} labelText check item label text\r\n * @param {Array} extraAttr array containing attribute name and its value\r\n * @return {Object} li DOM element\r\n */\r\nexport const createCheckItem = (id, chkValue, labelText, extraAttr = []) => {\r\n let li = createElm('li');\r\n let label = createElm('label', ['for', id]);\r\n let check = createElm('input',\r\n ['id', id],\r\n ['name', id],\r\n ['type', 'checkbox'],\r\n ['value', chkValue],\r\n extraAttr\r\n );\r\n label.appendChild(check);\r\n label.appendChild(createText(labelText));\r\n li.appendChild(label);\r\n li.label = label;\r\n li.check = check;\r\n return li;\r\n};\r\n\r\n/**\r\n * Returns the element matching the supplied Id\r\n * @param {String} id Element identifier\r\n * @return {DOMElement}\r\n */\r\nexport const elm = (id) => doc.getElementById(id);\r\n\r\n/**\r\n * Returns list of element matching the supplied tag name\r\n * @param {String} tagname Tag name\r\n * @return {NodeList}\r\n */\r\nexport const tag = (o, tagname) => o.getElementsByTagName(tagname);\r\n\r\n// HTML5 classList API\r\nfunction supportsClassList() {\r\n return doc.documentElement.classList;\r\n}\r\n","\r\nconst NOT_IMPLEMENTED = 'Not implemented.';\r\n\r\n/**\r\n * Base class defining the interface of a TableFilter feature\r\n */\r\nexport class Feature {\r\n /**\r\n * Creates an instance of Feature\r\n * @param {Object} tf TableFilter instance\r\n * @param {String} feature Feature name known by TableFilter\r\n */\r\n constructor(tf, feature) {\r\n /**\r\n * TableFilter instance\r\n * @type {TableFilter}\r\n */\r\n this.tf = tf;\r\n\r\n /**\r\n * Feature name\r\n * @type {String}\r\n */\r\n this.feature = feature;\r\n\r\n /**\r\n * TableFilter feature setting\r\n * @type {Boolean}\r\n */\r\n this.enabled = tf[feature];\r\n\r\n /**\r\n * TableFilter configuration\r\n * @type {Object}\r\n */\r\n this.config = tf.config();\r\n\r\n /**\r\n * TableFilter emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = tf.emitter;\r\n\r\n /**\r\n * Field indicating whether Feature is initialized\r\n * @type {Boolean}\r\n */\r\n this.initialized = false;\r\n\r\n /** Subscribe to destroy event */\r\n this.emitter.on(['destroy'], () => this.destroy());\r\n }\r\n\r\n /**\r\n * Initialize the feature\r\n */\r\n init() {\r\n throw new Error(NOT_IMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Reset the feature after being disabled\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n }\r\n\r\n /**\r\n * Destroy the feature\r\n */\r\n destroy() {\r\n throw new Error(NOT_IMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Enable the feature\r\n */\r\n enable() {\r\n this.enabled = true;\r\n }\r\n\r\n /**\r\n * Disable the feature\r\n */\r\n disable() {\r\n this.enabled = false;\r\n }\r\n\r\n /**\r\n * Indicate whether the feature is enabled or not\r\n * @returns {Boolean}\r\n */\r\n isEnabled() {\r\n return this.enabled === true;\r\n }\r\n}\r\n","'use strict';\n\nvar Sugar = require('sugar-core');\n\nmodule.exports = {\n hasOwn: Sugar.util.hasOwn,\n getOwn: Sugar.util.getOwn,\n setProperty: Sugar.util.setProperty,\n classToString: Sugar.util.classToString,\n defineProperty: Sugar.util.defineProperty,\n forEachProperty: Sugar.util.forEachProperty,\n mapNativeToChainable: Sugar.util.mapNativeToChainable\n};","'use strict';\n\nvar buildRelativeAliases = require('../internal/buildRelativeAliases');\n\nbuildRelativeAliases();","'use strict';\n\nvar cloneRangeMember = require('./cloneRangeMember');\n\nfunction Range(start, end) {\n this.start = cloneRangeMember(start);\n this.end = cloneRangeMember(end);\n}\n\nmodule.exports = Range;","import {DateType} from './modules/dateType';\r\nimport {Help} from './modules/help';\r\nimport {State} from './modules/state';\r\nimport {GridLayout} from './modules/gridLayout';\r\nimport {Loader} from './modules/loader';\r\nimport {HighlightKeyword} from './modules/highlightKeywords';\r\nimport {PopupFilter} from './modules/popupFilter';\r\nimport {MarkActiveColumns} from './modules/markActiveColumns';\r\nimport {RowsCounter} from './modules/rowsCounter';\r\nimport {StatusBar} from './modules/statusBar';\r\nimport {ClearButton} from './modules/clearButton';\r\nimport {AlternateRows} from './modules/alternateRows';\r\nimport {NoResults} from './modules/noResults';\r\nimport {Paging} from './modules/paging';\r\nimport {Toolbar} from './modules/toolbar';\r\n\r\n/**\r\n * Filter types\r\n */\r\n\r\n/**\r\n * Input filter type\r\n * @type {String}\r\n */\r\nexport const INPUT = 'input';\r\n/**\r\n * Select filter type\r\n * @type {String}\r\n */\r\nexport const SELECT = 'select';\r\n/**\r\n * Multiple select filter type\r\n * @type {String}\r\n */\r\nexport const MULTIPLE = 'multiple';\r\n/**\r\n * Checklist filter type\r\n * @type {String}\r\n */\r\nexport const CHECKLIST = 'checklist';\r\n/**\r\n * None filter type\r\n * @type {String}\r\n */\r\nexport const NONE = 'none';\r\n\r\n/**\r\n * Key codes\r\n */\r\n\r\n/**\r\n * Enter key code\r\n * @type {Number}\r\n */\r\nexport const ENTER_KEY = 13;\r\n/**\r\n * Tab key code\r\n * @type {Number}\r\n */\r\nexport const TAB_KEY = 9;\r\n/**\r\n * Escape key code\r\n * @type {Number}\r\n */\r\nexport const ESC_KEY = 27;\r\n/**\r\n * Up arrow key code\r\n * @type {Number}\r\n */\r\nexport const UP_ARROW_KEY = 38;\r\n/**\r\n * Down arrow key code\r\n * @type {Number}\r\n */\r\nexport const DOWN_ARROW_KEY = 40;\r\n\r\n/**\r\n * HTML tags\r\n */\r\n\r\n/**\r\n * Header cell tag\r\n * @type {String}\r\n */\r\nexport const HEADER_TAG = 'TH';\r\n/**\r\n * Cell tag\r\n * @type {String}\r\n */\r\nexport const CELL_TAG = 'TD';\r\n\r\n/**\r\n * Data types\r\n */\r\n\r\n/**\r\n * String\r\n * @type {String}\r\n */\r\nexport const STRING = 'string';\r\n\r\n/**\r\n * Number\r\n * @type {String}\r\n */\r\nexport const NUMBER = 'number';\r\n\r\n/**\r\n * Formatted number\r\n * @type {String}\r\n */\r\nexport const FORMATTED_NUMBER = 'formatted-number';\r\n\r\n/**\r\n * Date\r\n * @type {String}\r\n */\r\nexport const DATE = 'date';\r\n\r\n/**\r\n * IP address\r\n * @type {String}\r\n */\r\nexport const IP_ADDRESS = 'ipaddress';\r\n\r\n/**\r\n * Default values\r\n */\r\n\r\n/**\r\n * Auto filter delay in milliseconds\r\n * @type {Number}\r\n */\r\nexport const AUTO_FILTER_DELAY = 750;\r\n\r\n/**\r\n * TableFilter features definitions\r\n * @type {Object}\r\n */\r\nexport const FEATURES = {\r\n dateType: {\r\n class: DateType,\r\n name: 'dateType'\r\n },\r\n help: {\r\n class: Help,\r\n name: 'help',\r\n enforce: true\r\n },\r\n state: {\r\n class: State,\r\n name: 'state'\r\n },\r\n markActiveColumns: {\r\n class: MarkActiveColumns,\r\n name: 'markActiveColumns'\r\n },\r\n gridLayout: {\r\n class: GridLayout,\r\n name: 'gridLayout'\r\n },\r\n loader: {\r\n class: Loader,\r\n name: 'loader'\r\n },\r\n highlightKeyword: {\r\n class: HighlightKeyword,\r\n name: 'highlightKeyword',\r\n property: 'highlightKeywords'\r\n },\r\n popupFilter: {\r\n class: PopupFilter,\r\n name: 'popupFilter',\r\n property: 'popupFilters'\r\n },\r\n rowsCounter: {\r\n class: RowsCounter,\r\n name: 'rowsCounter'\r\n },\r\n statusBar: {\r\n class: StatusBar,\r\n name: 'statusBar'\r\n },\r\n clearButton: {\r\n class: ClearButton,\r\n name: 'clearButton',\r\n property: 'btnReset'\r\n },\r\n alternateRows: {\r\n class: AlternateRows,\r\n name: 'alternateRows'\r\n },\r\n noResults: {\r\n class: NoResults,\r\n name: 'noResults'\r\n },\r\n paging: {\r\n class: Paging,\r\n name: 'paging'\r\n },\r\n toolbar: {\r\n class: Toolbar,\r\n name: 'toolbar',\r\n enforce: true\r\n }\r\n};\r\n","/**\r\n * Export window or global object depending on the environment\r\n */\r\nexport const root = (typeof self === 'object' && self.self === self && self) ||\r\n (typeof global === 'object' && global.global === global && global) ||\r\n this;\r\n","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOnPrototype(ctor, methods) {\n var proto = ctor.prototype;\n forEachProperty(methods, function(val, key) {\n proto[key] = val;\n });\n}\n\nmodule.exports = defineOnPrototype;","import {root} from './root';\n\n/**\n * DOM event utilities\n */\n\n/**\n * Add event handler for specified event on passed element\n *\n * @param {DOMElement} obj Element\n * @param {String} type Event type\n * @param {Function} Handler\n * @param {Boolean} capture Specifiy whether the event should be executed in\n * the capturing or in the bubbling phase\n */\nexport const addEvt = (obj, type, func, capture) => {\n if (obj.addEventListener) {\n obj.addEventListener(type, func, capture);\n }\n else if (obj.attachEvent) {\n obj.attachEvent('on' + type, func);\n } else {\n obj['on' + type] = func;\n }\n};\n\n/**\n * Remove event handler for specified event on passed element\n *\n * @param {DOMElement} obj Element\n * @param {String} type Event type\n * @param {Function} Handler\n * @param {Boolean} capture Specifiy whether the event should be executed in\n * the capturing or in the bubbling phase\n */\nexport const removeEvt = (obj, type, func, capture) => {\n if (obj.removeEventListener) {\n obj.removeEventListener(type, func, capture);\n } else if (obj.detachEvent) {\n obj.detachEvent('on' + type, func);\n } else {\n obj['on' + type] = null;\n }\n};\n\n/**\n * Prevents further propagation of the current event in the bubbling phase\n *\n * @param {Event} evt Event on the DOM\n */\nexport const stopEvt = (evt) => {\n if (!evt) {\n evt = root.event;\n }\n if (evt.stopPropagation) {\n evt.stopPropagation();\n } else {\n evt.cancelBubble = true;\n }\n};\n\n/**\n * Cancels the event if it is cancelable, without stopping further\n * propagation of the event.\n *\n * @param {Event} evt Event on the DOM\n */\nexport const cancelEvt = (evt) => {\n if (!evt) {\n evt = root.event;\n }\n if (evt.preventDefault) {\n evt.preventDefault();\n } else {\n evt.returnValue = false;\n }\n};\n\n/**\n * Reference to the object that dispatched the event\n *\n * @param {Event} evt Event on the DOM\n * @returns {DOMElement}\n */\nexport const targetEvt = (evt) => {\n if (!evt) {\n evt = root.event;\n }\n return evt.target || evt.srcElement;\n};\n\n/**\n * Returns the Unicode value of pressed key\n *\n * @param {Event} evt Event on the DOM\n * @returns {Number}\n */\nexport const keyCode = (evt) => {\n return evt.charCode ? evt.charCode :\n (evt.keyCode ? evt.keyCode : (evt.which ? evt.which : 0));\n};\n\n/**\n * Check code of pressed key is one of the expected key codes\n *\n * @param {Event} evt key event\n * @param {Array} keyCodes list of keycodes to check\n */\nexport const isKeyPressed = (evt, keyCodes = []) => {\n return keyCodes.indexOf(keyCode(evt)) !== -1;\n};\n\n/**\n * Bind passed function to passed scope\n * @param {Function} fn function\n * @param {Object} scope object instance\n */\nexport function bound(fn, scope) {\n let boundFnName = `${fn.name}_bound`;\n if (!scope[boundFnName]) {\n scope[boundFnName] = fn.bind(scope);\n }\n return scope[boundFnName];\n}\n","'use strict';\n\nvar _utc = require('../var/_utc');\n\nfunction callDateGet(d, method) {\n return d['get' + (_utc(d) ? 'UTC' : '') + method]();\n}\n\nmodule.exports = callDateGet;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getWeekday(d) {\n return callDateGet(d, 'Day');\n}\n\nmodule.exports = getWeekday;","import {remove as removeDiacritics} from 'diacritics';\r\n\r\n/**\r\n * String utilities\r\n */\r\n\r\n/**\r\n * Removes whitespace from both sides of passed string\r\n * @param {String} text\r\n * @return {String}\r\n */\r\nexport const trim = (text) => {\r\n if (text.trim) {\r\n return text.trim();\r\n }\r\n return text.replace(/^\\s*|\\s*$/g, '');\r\n};\r\n\r\n/**\r\n * Checks if passed string is empty\r\n * @param {String} text\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (text) => trim(text) === '';\r\n\r\n/**\r\n * Makes regex safe string by escaping special characters from passed string\r\n * @param {String} text\r\n * @return {String} escaped string\r\n */\r\nexport const rgxEsc = (text) => {\r\n let chars = /[-\\/\\\\^$*+?.()|[\\]{}]/g;\r\n let escMatch = '\\\\$&';\r\n return String(text).replace(chars, escMatch);\r\n};\r\n\r\n/**\r\n * Returns passed string as lowercase if caseSensitive flag set false. By\r\n * default it returns the string with no casing changes.\r\n * @param {String} text\r\n * @return {String} string\r\n */\r\nexport const matchCase = (text, caseSensitive = false) => {\r\n if (!caseSensitive) {\r\n return text.toLowerCase();\r\n }\r\n return text;\r\n};\r\n\r\n/**\r\n * Checks if passed data contains the searched term\r\n * @param {String} term Searched term\r\n * @param {String} data Data string\r\n * @param {Boolean} exactMatch Exact match\r\n * @param {Boolean} caseSensitive Case sensitive\r\n * @param {Boolean} ignoreDiacritics Ignore diacritics\r\n * @return {Boolean}\r\n */\r\nexport const contains = (term, data, exactMatch = false, caseSensitive = false,\r\n ignoreDiacritics = false) => {\r\n // Improved by Cedric Wartel (cwl) automatic exact match for selects and\r\n // special characters are now filtered\r\n let regexp;\r\n let modifier = caseSensitive ? 'g' : 'gi';\r\n if (ignoreDiacritics) {\r\n term = removeDiacritics(term);\r\n data = removeDiacritics(data);\r\n }\r\n if (exactMatch) {\r\n regexp = new RegExp('(^\\\\s*)' + rgxEsc(term) + '(\\\\s*$)',\r\n modifier);\r\n } else {\r\n regexp = new RegExp(rgxEsc(term), modifier);\r\n }\r\n return regexp.test(data);\r\n};\r\n","'use strict';\n\nvar buildDateRangeUnits = require('../internal/buildDateRangeUnits');\n\nbuildDateRangeUnits();","'use strict';\n\nvar Sugar = require('sugar-core');\n\nmodule.exports = {\n sugarObject: Sugar.Object,\n sugarArray: Sugar.Array,\n sugarDate: Sugar.Date,\n sugarString: Sugar.String,\n sugarNumber: Sugar.Number,\n sugarFunction: Sugar.Function,\n sugarRegExp: Sugar.RegExp\n};","'use strict';\n\nvar setDate = require('./setDate'),\n getDate = require('./getDate'),\n getWeekday = require('./getWeekday'),\n classChecks = require('../../common/var/classChecks'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar isNumber = classChecks.isNumber,\n abs = mathAliases.abs;\n\nfunction setWeekday(d, dow, dir) {\n if (!isNumber(dow)) return;\n var currentWeekday = getWeekday(d);\n if (dir) {\n // Allow a \"direction\" parameter to determine whether a weekday can\n // be set beyond the current weekday in either direction.\n var ndir = dir > 0 ? 1 : -1;\n var offset = dow % 7 - currentWeekday;\n if (offset && offset / abs(offset) !== ndir) {\n dow += 7 * ndir;\n }\n }\n setDate(d, getDate(d) + dow - currentWeekday);\n return d.getTime();\n}\n\nmodule.exports = setWeekday;","'use strict';\n\nvar mathAliases = require('./mathAliases');\n\nvar ceil = mathAliases.ceil,\n floor = mathAliases.floor;\n\nvar trunc = Math.trunc || function(n) {\n if (n === 0 || !isFinite(n)) return n;\n return n < 0 ? ceil(n) : floor(n);\n};\n\nmodule.exports = trunc;","'use strict';\n\nvar privatePropertyAccessor = require('../internal/privatePropertyAccessor');\n\nmodule.exports = privatePropertyAccessor('utc');","'use strict';\n\nvar getExtendedDate = require('./getExtendedDate');\n\nfunction createDate(d, options, forceClone) {\n return getExtendedDate(null, d, options, forceClone).date;\n}\n\nmodule.exports = createDate;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getMonth(d) {\n return callDateGet(d, 'Month');\n}\n\nmodule.exports = getMonth;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getYear(d) {\n return callDateGet(d, 'FullYear');\n}\n\nmodule.exports = getYear;","'use strict';\n\nvar getDaysInMonth = require('../internal/getDaysInMonth');\n\nvar DateUnits = [\n {\n name: 'millisecond',\n method: 'Milliseconds',\n multiplier: 1,\n start: 0,\n end: 999\n },\n {\n name: 'second',\n method: 'Seconds',\n multiplier: 1000,\n start: 0,\n end: 59\n },\n {\n name: 'minute',\n method: 'Minutes',\n multiplier: 60 * 1000,\n start: 0,\n end: 59\n },\n {\n name: 'hour',\n method: 'Hours',\n multiplier: 60 * 60 * 1000,\n start: 0,\n end: 23\n },\n {\n name: 'day',\n alias: 'date',\n method: 'Date',\n ambiguous: true,\n multiplier: 24 * 60 * 60 * 1000,\n start: 1,\n end: function(d) {\n return getDaysInMonth(d);\n }\n },\n {\n name: 'week',\n method: 'ISOWeek',\n ambiguous: true,\n multiplier: 7 * 24 * 60 * 60 * 1000\n },\n {\n name: 'month',\n method: 'Month',\n ambiguous: true,\n multiplier: 30.4375 * 24 * 60 * 60 * 1000,\n start: 0,\n end: 11\n },\n {\n name: 'year',\n method: 'FullYear',\n ambiguous: true,\n multiplier: 365.25 * 24 * 60 * 60 * 1000,\n start: 0\n }\n];\n\nmodule.exports = DateUnits;","'use strict';\n\nfunction isDefined(o) {\n return o !== undefined;\n}\n\nmodule.exports = isDefined;","'use strict';\n\nvar iterateOverSparseArray = require('./iterateOverSparseArray');\n\nfunction forEach(arr, fn) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (!(i in arr)) {\n return iterateOverSparseArray(arr, fn, i);\n }\n fn(arr[i], i);\n }\n}\n\nmodule.exports = forEach;","import {Feature} from '../feature';\r\nimport {createElm, removeElm, elm, tag} from '../dom';\r\nimport {defaultsStr} from '../settings';\r\nimport {isUndef} from '../types';\r\n\r\nconst EVENTS = [\r\n 'initializing-feature',\r\n 'initializing-extension'\r\n];\r\n\r\n/** Left position in toolbar */\r\nexport const LEFT = 'left';\r\n/** Right position in toolbar */\r\nexport const RIGHT = 'right';\r\n/** Center position in toolbar */\r\nexport const CENTER = 'center';\r\n\r\n/**\r\n * Toolbar UI component\r\n * @export\r\n * @class Toolbar\r\n * @extends {Feature}\r\n */\r\nexport class Toolbar extends Feature {\r\n\r\n /**\r\n * Create an instance of Toolbar\r\n * @param {TableFilter} tf TableFilter instance\r\n * @memberof Toolbar\r\n */\r\n constructor(tf) {\r\n super(tf, 'toolbar');\r\n\r\n // Configuration object\r\n let f = this.config.toolbar || {};\r\n\r\n /**\r\n * Css class for toolbar's container DOM element\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.container_css_class, 'inf');\r\n\r\n /**\r\n * Css class for left-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.lContCssClass = defaultsStr(f.left_cont_css_class, 'ldiv');\r\n\r\n /**\r\n * Css class for right-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.rContCssClass = defaultsStr(f.right_cont_css_class, 'rdiv');\r\n\r\n /**\r\n * Css class for middle inner container DOM element\r\n * @type {String}\r\n */\r\n this.cContCssClass = defaultsStr(f.center_cont_css_class, 'mdiv');\r\n\r\n /**\r\n * Toolbar's custom container ID\r\n * @type {String}\r\n */\r\n this.tgtId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Toolbar's container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Left-side inner container DOM element (rows counter in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.lCont = null;\r\n\r\n /**\r\n * Right-side inner container DOM element (reset button,\r\n * page length selector in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.rCont = null;\r\n\r\n /**\r\n * Middle inner container DOM element (paging elements in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.cCont = null;\r\n\r\n /**\r\n * Container elements inside toolbar\r\n * @private\r\n */\r\n this.innerCont = {\r\n left: null,\r\n center: null,\r\n right: null\r\n };\r\n\r\n this.emitter.on(EVENTS,\r\n (feature, isExternal) => this.init(isExternal));\r\n\r\n /** @inherited */\r\n this.enabled = true;\r\n }\r\n\r\n /**\r\n * Initialize toolbar components\r\n * @param {Boolean} isExternal initialize only if component belongs\r\n * to toolbar\r\n */\r\n init(isExternal) {\r\n if (this.initialized || isExternal) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n // default container\r\n let container = createElm('div');\r\n container.className = this.contCssClass;\r\n\r\n // custom container\r\n if (this.tgtId) {\r\n elm(this.tgtId).appendChild(container);\r\n }\r\n // grid-layout\r\n else if (tf.gridLayout) {\r\n let gridLayout = tf.Mod.gridLayout;\r\n gridLayout.tblMainCont.appendChild(container);\r\n container.className = gridLayout.infDivCssClass;\r\n }\r\n // default location: just above the table\r\n else {\r\n let cont = createElm('caption');\r\n cont.appendChild(container);\r\n tf.dom().insertBefore(cont, tf.dom().firstChild);\r\n }\r\n this.cont = container;\r\n\r\n // left container\r\n this.lCont = this.createContainer(container, this.lContCssClass);\r\n\r\n // right container\r\n this.rCont = this.createContainer(container, this.rContCssClass);\r\n\r\n // middle container\r\n this.cCont = this.createContainer(container, this.cContCssClass);\r\n\r\n this.innerCont = {\r\n left: this.lCont,\r\n center: this.cCont,\r\n right: this.rCont\r\n };\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n // emit help initialisation only if undefined\r\n if (isUndef(tf.help)) {\r\n // explicitily enable help to initialise feature by\r\n // default, only if setting is undefined\r\n tf.Mod.help.enable();\r\n this.emitter.emit('init-help', tf);\r\n }\r\n }\r\n\r\n /**\r\n * Return the container based on requested position inside the toolbar\r\n * @param {String} [position=RIGHT] 3 possible positions: 'left', 'center',\r\n * 'right'\r\n * @param {DOMElement} el optional DOM element to be inserter in container\r\n * @returns {DOMElement}\r\n */\r\n container(position = RIGHT, el) {\r\n let cont = this.innerCont[position];\r\n if (el) {\r\n cont.appendChild(el);\r\n }\r\n return cont;\r\n }\r\n\r\n /**\r\n * Create DOM element inside passed container\r\n * @param {DOMElement} container\r\n * @param {String} css\r\n * @private\r\n */\r\n createContainer(container, css) {\r\n let div = createElm('div', ['class', css]);\r\n container.appendChild(div);\r\n return div;\r\n }\r\n\r\n /**\r\n * Destroy Toolbar instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n let tbl = tf.dom();\r\n let captions = tag(tbl, 'caption');\r\n [].forEach.call(captions, (el) => removeElm(el));\r\n\r\n /** @inherited */\r\n this.initialized = false;\r\n }\r\n}\r\n","'use strict';\n\nvar _utc = require('../../common/var/_utc');\n\nfunction cloneDate(d) {\n // Rhino environments have a bug where new Date(d) truncates\n // milliseconds so need to call getTime() here.\n var clone = new Date(d.getTime());\n _utc(clone, !!_utc(d));\n return clone;\n}\n\nmodule.exports = cloneDate;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getDate(d) {\n return callDateGet(d, 'Date');\n}\n\nmodule.exports = getDate;","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setDate(d, val) {\n callDateSet(d, 'Date', val);\n}\n\nmodule.exports = setDate;","'use strict';\n\nvar _utc = require('../var/_utc'),\n callDateGet = require('./callDateGet');\n\nfunction callDateSet(d, method, value, safe) {\n // \"Safe\" denotes not setting the date if the value is the same as what is\n // currently set. In theory this should be a noop, however it will cause\n // timezone shifts when in the middle of a DST fallback. This is unavoidable\n // as the notation itself is ambiguous (i.e. there are two \"1:00ams\" on\n // November 1st, 2015 in northern hemisphere timezones that follow DST),\n // however when advancing or rewinding dates this can throw off calculations\n // so avoiding this unintentional shifting on an opt-in basis.\n if (safe && value === callDateGet(d, method, value)) {\n return;\n }\n d['set' + (_utc(d) ? 'UTC' : '') + method](value);\n}\n\nmodule.exports = callDateSet;","'use strict';\n\nvar isDefined = require('../../common/internal/isDefined'),\n classChecks = require('../../common/var/classChecks'),\n callDateSet = require('../../common/internal/callDateSet'),\n walkUnitDown = require('./walkUnitDown');\n\nvar isFunction = classChecks.isFunction;\n\nfunction setUnitAndLowerToEdge(d, startIndex, stopIndex, end) {\n walkUnitDown(startIndex, function(unit, i) {\n var val = end ? unit.end : unit.start;\n if (isFunction(val)) {\n val = val(d);\n }\n callDateSet(d, unit.method, val);\n return !isDefined(stopIndex) || i > stopIndex;\n });\n return d;\n}\n\nmodule.exports = setUnitAndLowerToEdge;","'use strict';\n\nvar updateDate = require('./updateDate');\n\nfunction advanceDate(d, unit, num, reset) {\n var set = {};\n set[unit] = num;\n return updateDate(d, set, reset, 1);\n}\n\nmodule.exports = advanceDate;","'use strict';\n\nvar _dateOptions = require('../var/_dateOptions');\n\nfunction getNewDate() {\n return _dateOptions('newDateInternal')();\n}\n\nmodule.exports = getNewDate;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes');\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getLowerUnitIndex(index) {\n if (index === MONTH_INDEX) {\n return DAY_INDEX;\n } else if (index === WEEK_INDEX) {\n return HOURS_INDEX;\n }\n return index - 1;\n}\n\nmodule.exports = getLowerUnitIndex;","'use strict';\n\nfunction isUndefined(o) {\n return o === undefined;\n}\n\nmodule.exports = isUndefined;","'use strict';\n\nvar isValidRangeMember = require('./isValidRangeMember');\n\nfunction rangeIsValid(range) {\n return isValidRangeMember(range.start) &&\n isValidRangeMember(range.end) &&\n typeof range.start === typeof range.end;\n}\n\nmodule.exports = rangeIsValid;","'use strict';\n\nfunction dateIsValid(d) {\n return !isNaN(d.getTime());\n}\n\nmodule.exports = dateIsValid;","'use strict';\n\nvar methodDefineAliases = require('../var/methodDefineAliases'),\n collectSimilarMethods = require('./collectSimilarMethods');\n\nvar defineInstance = methodDefineAliases.defineInstance;\n\nfunction defineInstanceSimilar(sugarNamespace, set, fn, flags) {\n defineInstance(sugarNamespace, collectSimilarMethods(set, fn), flags);\n}\n\nmodule.exports = defineInstanceSimilar;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n localeManager = LocaleHelpers.localeManager;\n\nfunction moveToBeginningOfUnit(d, unitIndex, localeCode) {\n if (unitIndex === WEEK_INDEX) {\n moveToBeginningOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek());\n }\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex));\n}\n\nmodule.exports = moveToBeginningOfUnit;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n moveToEndOfWeek = require('./moveToEndOfWeek'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n localeManager = LocaleHelpers.localeManager;\n\nfunction moveToEndOfUnit(d, unitIndex, localeCode, stopIndex) {\n if (unitIndex === WEEK_INDEX) {\n moveToEndOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek());\n }\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex), stopIndex, true);\n}\n\nmodule.exports = moveToEndOfUnit;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n isDefined = require('../../common/internal/isDefined'),\n getDateParam = require('./getDateParam'),\n iterateOverDateUnits = require('./iterateOverDateUnits');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction iterateOverDateParams(params, fn, startIndex, endIndex) {\n\n function run(name, unit, i) {\n var val = getDateParam(params, name);\n if (isDefined(val)) {\n fn(name, val, unit, i);\n }\n }\n\n iterateOverDateUnits(function (unit, i) {\n var result = run(unit.name, unit, i);\n if (result !== false && i === DAY_INDEX) {\n // Check for \"weekday\", which has a distinct meaning\n // in the context of setting a date, but has the same\n // meaning as \"day\" as a unit of time.\n result = run('weekday', unit, i);\n }\n return result;\n }, startIndex, endIndex);\n\n}\n\nmodule.exports = iterateOverDateParams;","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n trunc = require('../../common/var/trunc'),\n setDate = require('./setDate'),\n getDate = require('./getDate'),\n getMonth = require('./getMonth'),\n getNewDate = require('./getNewDate'),\n setWeekday = require('./setWeekday'),\n mathAliases = require('../../common/var/mathAliases'),\n callDateGet = require('../../common/internal/callDateGet'),\n classChecks = require('../../common/var/classChecks'),\n resetLowerUnits = require('./resetLowerUnits'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n getHigherUnitIndex = require('./getHigherUnitIndex'),\n callDateSetWithWeek = require('./callDateSetWithWeek'),\n iterateOverDateParams = require('./iterateOverDateParams');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX,\n round = mathAliases.round,\n isNumber = classChecks.isNumber;\n\nfunction updateDate(d, params, reset, advance, prefer, weekdayDir) {\n var upperUnitIndex;\n\n function setUpperUnit(unitName, unitIndex) {\n if (prefer && !upperUnitIndex) {\n if (unitName === 'weekday') {\n upperUnitIndex = WEEK_INDEX;\n } else {\n upperUnitIndex = getHigherUnitIndex(unitIndex);\n }\n }\n }\n\n function setSpecificity(unitIndex) {\n // Other functions may preemptively set the specificity before arriving\n // here so concede to them if they have already set more specific units.\n if (unitIndex > params.specificity) {\n return;\n }\n params.specificity = unitIndex;\n }\n\n function canDisambiguate() {\n if (!upperUnitIndex || upperUnitIndex > YEAR_INDEX) {\n return;\n }\n switch(prefer) {\n case -1: return d > getNewDate();\n case 1: return d < getNewDate();\n }\n }\n\n function disambiguateHigherUnit() {\n var unit = DateUnits[upperUnitIndex];\n advance = prefer;\n setUnit(unit.name, 1, unit, upperUnitIndex);\n }\n\n function handleFraction(unit, unitIndex, fraction) {\n if (unitIndex) {\n var lowerUnit = DateUnits[getLowerUnitIndex(unitIndex)];\n var val = round(unit.multiplier / lowerUnit.multiplier * fraction);\n params[lowerUnit.name] = val;\n }\n }\n\n function monthHasShifted(d, targetMonth) {\n if (targetMonth < 0) {\n targetMonth = targetMonth % 12 + 12;\n }\n return targetMonth % 12 !== getMonth(d);\n }\n\n function setUnit(unitName, value, unit, unitIndex) {\n var method = unit.method, checkMonth, fraction;\n\n setUpperUnit(unitName, unitIndex);\n setSpecificity(unitIndex);\n\n fraction = value % 1;\n if (fraction) {\n handleFraction(unit, unitIndex, fraction);\n value = trunc(value);\n }\n\n if (unitName === 'weekday') {\n if (!advance) {\n // Weekdays are always considered absolute units so simply set them\n // here even if it is an \"advance\" operation. This is to help avoid\n // ambiguous meanings in \"advance\" as well as to neatly allow formats\n // like \"Wednesday of next week\" without more complex logic.\n setWeekday(d, value, weekdayDir);\n }\n return;\n }\n checkMonth = unitIndex === MONTH_INDEX && getDate(d) > 28;\n\n // If we are advancing or rewinding, then we need we need to set the\n // absolute time if the unit is \"hours\" or less. This is due to the fact\n // that setting by method is ambiguous during DST shifts. For example,\n // 1:00am on November 1st 2015 occurs twice in North American timezones\n // with DST, the second time being after the clocks are rolled back at\n // 2:00am. When springing forward this is automatically handled as there\n // is no 2:00am so the date automatically jumps to 3:00am. However, when\n // rolling back, setHours(2) will always choose the first \"2am\" even if\n // the date is currently set to the second, causing unintended jumps.\n // This ambiguity is unavoidable when setting dates as the notation is\n // ambiguous. However when advancing, we clearly want the resulting date\n // to be an acutal hour ahead, which can only be accomplished by setting\n // the absolute time. Conversely, any unit higher than \"hours\" MUST use\n // the internal set methods, as they are ambiguous as absolute units of\n // time. Years may be 365 or 366 days depending on leap years, months are\n // all over the place, and even days may be 23-25 hours depending on DST\n // shifts. Finally, note that the kind of jumping described above will\n // occur when calling ANY \"set\" method on the date and will occur even if\n // the value being set is identical to the one currently set (i.e.\n // setHours(2) on a date at 2am may not be a noop). This is precarious,\n // so avoiding this situation in callDateSet by checking up front that\n // the value is not the same before setting.\n if (advance && !unit.ambiguous) {\n d.setTime(d.getTime() + (value * advance * unit.multiplier));\n return;\n } else if (advance) {\n if (unitIndex === WEEK_INDEX) {\n value *= 7;\n method = DateUnits[DAY_INDEX].method;\n }\n value = (value * advance) + callDateGet(d, method);\n }\n callDateSetWithWeek(d, method, value, advance);\n if (checkMonth && monthHasShifted(d, value)) {\n // As we are setting the units in reverse order, there is a chance that\n // our date may accidentally traverse into a new month, such as setting\n // { month: 1, date 15 } on January 31st. Check for this here and reset\n // the date to the last day of the previous month if this has happened.\n setDate(d, 0);\n }\n }\n\n if (isNumber(params) && advance) {\n // If param is a number and advancing, the number is in milliseconds.\n params = { millisecond: params };\n } else if (isNumber(params)) {\n // Otherwise just set the timestamp and return.\n d.setTime(params);\n return d;\n }\n\n iterateOverDateParams(params, setUnit);\n\n if (reset && params.specificity) {\n resetLowerUnits(d, params.specificity);\n }\n\n // If past or future is preferred, then the process of \"disambiguation\" will\n // ensure that an ambiguous time/date (\"4pm\", \"thursday\", \"June\", etc.) will\n // be in the past or future. Weeks are only considered ambiguous if there is\n // a weekday, i.e. \"thursday\" is an ambiguous week, but \"the 4th\" is an\n // ambiguous month.\n if (canDisambiguate()) {\n disambiguateHigherUnit();\n }\n return d;\n}\n\nmodule.exports = updateDate;","'use strict';\n\nfunction tzOffset(d) {\n return d.getTimezoneOffset();\n}\n\nmodule.exports = tzOffset;","'use strict';\n\nfunction spaceSplit(str) {\n return str.split(' ');\n}\n\nmodule.exports = spaceSplit;","'use strict';\n\nmodule.exports = {\n HALF_WIDTH_ZERO: 0x30,\n FULL_WIDTH_ZERO: 0xff10,\n HALF_WIDTH_PERIOD: '.',\n FULL_WIDTH_PERIOD: '.',\n HALF_WIDTH_COMMA: ',',\n OPEN_BRACE: '{',\n CLOSE_BRACE: '}'\n};","'use strict';\n\nvar simpleMerge = require('./simpleMerge');\n\nfunction simpleClone(obj) {\n return simpleMerge({}, obj);\n}\n\nmodule.exports = simpleClone;","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n rangeIsValid = require('./rangeIsValid'),\n incrementDate = require('./incrementDate'),\n incrementNumber = require('./incrementNumber'),\n incrementString = require('./incrementString'),\n getGreaterPrecision = require('./getGreaterPrecision'),\n getDateIncrementObject = require('./getDateIncrementObject');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString,\n isDate = classChecks.isDate,\n isFunction = classChecks.isFunction;\n\nfunction rangeEvery(range, step, countOnly, fn) {\n var increment,\n precision,\n dio,\n unit,\n start = range.start,\n end = range.end,\n inverse = end < start,\n current = start,\n index = 0,\n result = [];\n\n if (!rangeIsValid(range)) {\n return countOnly ? NaN : [];\n }\n if (isFunction(step)) {\n fn = step;\n step = null;\n }\n step = step || 1;\n if (isNumber(start)) {\n precision = getGreaterPrecision(start, step);\n increment = function() {\n return incrementNumber(current, step, precision);\n };\n } else if (isString(start)) {\n increment = function() {\n return incrementString(current, step);\n };\n } else if (isDate(start)) {\n dio = getDateIncrementObject(step);\n step = dio[0];\n unit = dio[1];\n increment = function() {\n return incrementDate(current, step, unit);\n };\n }\n // Avoiding infinite loops\n if (inverse && step > 0) {\n step *= -1;\n }\n while(inverse ? current >= end : current <= end) {\n if (!countOnly) {\n result.push(current);\n }\n if (fn) {\n fn(current, index, range);\n }\n current = increment();\n index++;\n }\n return countOnly ? index - 1 : result;\n}\n\nmodule.exports = rangeEvery;","'use strict';\n\nmodule.exports = 'year|month|week|day|hour|minute|second|millisecond';","'use strict';\n\nvar ISODefaults = require('../var/ISODefaults'),\n setDate = require('./setDate'),\n getDate = require('./getDate'),\n cloneDate = require('./cloneDate'),\n isUndefined = require('../../common/internal/isUndefined'),\n moveToEndOfWeek = require('./moveToEndOfWeek'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek'),\n moveToFirstDayOfWeekYear = require('./moveToFirstDayOfWeekYear');\n\nvar ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR;\n\nfunction getWeekNumber(d, allowPrevious, firstDayOfWeek, firstDayOfWeekYear) {\n var isoWeek, n = 0;\n if (isUndefined(firstDayOfWeek)) {\n firstDayOfWeek = ISO_FIRST_DAY_OF_WEEK;\n }\n if (isUndefined(firstDayOfWeekYear)) {\n firstDayOfWeekYear = ISO_FIRST_DAY_OF_WEEK_YEAR;\n }\n // Moving to the end of the week allows for forward year traversal, ie\n // Dec 29 2014 is actually week 01 of 2015.\n isoWeek = moveToEndOfWeek(cloneDate(d), firstDayOfWeek);\n moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear);\n if (allowPrevious && d < isoWeek) {\n // If the date is still before the start of the year, then it should be\n // the last week of the previous year, ie Jan 1 2016 is actually week 53\n // of 2015, so move to the beginning of the week to traverse the year.\n isoWeek = moveToBeginningOfWeek(cloneDate(d), firstDayOfWeek);\n moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear);\n }\n while (isoWeek <= d) {\n // Doing a very simple walk to get the week number.\n setDate(isoWeek, getDate(isoWeek) + 7);\n n++;\n }\n return n;\n}\n\nmodule.exports = getWeekNumber;","'use strict';\n\nvar mathAliases = require('../var/mathAliases'),\n repeatString = require('./repeatString');\n\nvar abs = mathAliases.abs;\n\nfunction padNumber(num, place, sign, base, replacement) {\n var str = abs(num).toString(base || 10);\n str = repeatString(replacement || '0', place - str.replace(/\\.\\d+/, '').length) + str;\n if (sign || num < 0) {\n str = (num < 0 ? '-' : '+') + str;\n }\n return str;\n}\n\nmodule.exports = padNumber;","'use strict';\n\nvar trunc = require('../../common/var/trunc'),\n cloneDate = require('./cloneDate'),\n advanceDate = require('./advanceDate');\n\nfunction getTimeDistanceForUnit(d1, d2, unit) {\n var fwd = d2 > d1, num, tmp;\n if (!fwd) {\n tmp = d2;\n d2 = d1;\n d1 = tmp;\n }\n num = d2 - d1;\n if (unit.multiplier > 1) {\n num = trunc(num / unit.multiplier);\n }\n // For higher order with potential ambiguity, use the numeric calculation\n // as a starting point, then iterate until we pass the target date.\n if (unit.ambiguous) {\n d1 = cloneDate(d1);\n if (num) {\n advanceDate(d1, unit.name, num);\n }\n while (d1 < d2) {\n advanceDate(d1, unit.name, 1);\n if (d1 > d2) {\n break;\n }\n num += 1;\n }\n }\n return fwd ? -num : num;\n}\n\nmodule.exports = getTimeDistanceForUnit;","'use strict';\n\nfunction simpleCapitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nmodule.exports = simpleCapitalize;","'use strict';\n\nvar setWeekday = require('./setWeekday'),\n getWeekday = require('./getWeekday'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar floor = mathAliases.floor;\n\nfunction moveToBeginningOfWeek(d, firstDayOfWeek) {\n setWeekday(d, floor((getWeekday(d) - firstDayOfWeek) / 7) * 7 + firstDayOfWeek);\n return d;\n}\n\nmodule.exports = moveToBeginningOfWeek;","'use strict';\n\nvar DATE_OPTIONS = require('./DATE_OPTIONS'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineOptionsAccessor = require('../../common/internal/defineOptionsAccessor');\n\nvar sugarDate = namespaceAliases.sugarDate;\n\nmodule.exports = defineOptionsAccessor(sugarDate, DATE_OPTIONS);","'use strict';\n\nvar MINUTES = require('../var/MINUTES'),\n ParsingTokens = require('../var/ParsingTokens'),\n LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n _utc = require('../../common/var/_utc'),\n trunc = require('../../common/var/trunc'),\n forEach = require('../../common/internal/forEach'),\n tzOffset = require('./tzOffset'),\n resetTime = require('./resetTime'),\n isDefined = require('../../common/internal/isDefined'),\n setWeekday = require('./setWeekday'),\n updateDate = require('./updateDate'),\n getNewDate = require('./getNewDate'),\n isUndefined = require('../../common/internal/isUndefined'),\n classChecks = require('../../common/var/classChecks'),\n advanceDate = require('./advanceDate'),\n simpleClone = require('../../common/internal/simpleClone'),\n isObjectType = require('../../common/internal/isObjectType'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n deleteDateParam = require('./deleteDateParam'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n getParsingTokenValue = require('./getParsingTokenValue'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit'),\n iterateOverDateParams = require('./iterateOverDateParams'),\n getYearFromAbbreviation = require('./getYearFromAbbreviation'),\n iterateOverHigherDateParams = require('./iterateOverHigherDateParams');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString,\n isDate = classChecks.isDate,\n hasOwn = coreUtilityAliases.hasOwn,\n getOwn = coreUtilityAliases.getOwn,\n English = LocaleHelpers.English,\n localeManager = LocaleHelpers.localeManager,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction getExtendedDate(contextDate, d, opt, forceClone) {\n\n var date, set, loc, options, afterCallbacks, relative, weekdayDir;\n\n afterCallbacks = [];\n options = getDateOptions(opt);\n\n function getDateOptions(opt) {\n var options = isString(opt) ? { locale: opt } : opt || {};\n options.prefer = +!!getOwn(options, 'future') - +!!getOwn(options, 'past');\n return options;\n }\n\n function getFormatParams(match, dif) {\n var set = getOwn(options, 'params') || {};\n forEach(dif.to, function(field, i) {\n var str = match[i + 1], token, val;\n if (!str) return;\n if (field === 'yy' || field === 'y') {\n field = 'year';\n val = getYearFromAbbreviation(str, date, getOwn(options, 'prefer'));\n } else if (token = getOwn(ParsingTokens, field)) {\n field = token.param || field;\n val = getParsingTokenValue(token, str);\n } else {\n val = loc.getTokenValue(field, str);\n }\n set[field] = val;\n });\n return set;\n }\n\n // Clone date will set the utc flag, but it will\n // be overriden later, so set option flags instead.\n function cloneDateByFlag(d, clone) {\n if (_utc(d) && !isDefined(getOwn(options, 'fromUTC'))) {\n options.fromUTC = true;\n }\n if (_utc(d) && !isDefined(getOwn(options, 'setUTC'))) {\n options.setUTC = true;\n }\n if (clone) {\n d = new Date(d.getTime());\n }\n return d;\n }\n\n function afterDateSet(fn) {\n afterCallbacks.push(fn);\n }\n\n function fireCallbacks() {\n forEach(afterCallbacks, function(fn) {\n fn.call();\n });\n }\n\n function parseStringDate(str) {\n\n str = str.toLowerCase();\n\n // The act of getting the locale will initialize\n // if it is missing and add the required formats.\n loc = localeManager.get(getOwn(options, 'locale'));\n\n for (var i = 0, dif, match; dif = loc.compiledFormats[i]; i++) {\n match = str.match(dif.reg);\n if (match) {\n\n // Note that caching the format will modify the compiledFormats array\n // which is not a good idea to do inside its for loop, however we\n // know at this point that we have a matched format and that we will\n // break out below, so simpler to do it here.\n loc.cacheFormat(dif, i);\n\n set = getFormatParams(match, dif);\n\n if (isDefined(set.timestamp)) {\n str = set.timestamp;\n set = null;\n break;\n }\n\n if (isDefined(set.ampm)) {\n handleAmpm(set.ampm);\n }\n\n if (set.utc || isDefined(set.tzHour)) {\n handleTimezoneOffset(set.tzHour, set.tzMinute, set.tzSign);\n }\n\n if (isDefined(set.shift) && isUndefined(set.unit)) {\n // \"next january\", \"next monday\", etc\n handleUnitlessShift();\n }\n\n if (isDefined(set.num) && isUndefined(set.unit)) {\n // \"the second of January\", etc\n handleUnitlessNum(set.num);\n }\n\n if (set.midday) {\n // \"noon\" and \"midnight\"\n handleMidday(set.midday);\n }\n\n if (isDefined(set.day)) {\n // Relative day localizations such as \"today\" and \"tomorrow\".\n handleRelativeDay(set.day);\n }\n\n if (isDefined(set.unit)) {\n // \"3 days ago\", etc\n handleRelativeUnit(set.unit);\n }\n\n if (set.edge) {\n // \"the end of January\", etc\n handleEdge(set.edge, set);\n }\n\n if (set.yearSign) {\n set.year *= set.yearSign;\n }\n\n break;\n }\n }\n\n if (!set) {\n // Fall back to native parsing\n date = new Date(str);\n if (getOwn(options, 'fromUTC')) {\n // Falling back to system date here which cannot be parsed as UTC,\n // so if we're forcing UTC then simply add the offset.\n date.setTime(date.getTime() + (tzOffset(date) * MINUTES));\n }\n } else if (relative) {\n updateDate(date, set, false, 1);\n } else {\n if (_utc(date)) {\n // UTC times can traverse into other days or even months,\n // so preemtively reset the time here to prevent this.\n resetTime(date);\n }\n updateDate(date, set, true, 0, getOwn(options, 'prefer'), weekdayDir);\n }\n fireCallbacks();\n return date;\n }\n\n function handleAmpm(ampm) {\n if (ampm === 1 && set.hour < 12) {\n // If the time is 1pm-11pm advance the time by 12 hours.\n set.hour += 12;\n } else if (ampm === 0 && set.hour === 12) {\n // If it is 12:00am then set the hour to 0.\n set.hour = 0;\n }\n }\n\n function handleTimezoneOffset(tzHour, tzMinute, tzSign) {\n // Adjust for timezone offset\n _utc(date, true);\n var offset = (tzSign || 1) * ((tzHour || 0) * 60 + (tzMinute || 0));\n if (offset) {\n set.minute = (set.minute || 0) - offset;\n }\n }\n\n function handleUnitlessShift() {\n if (isDefined(set.month)) {\n // \"next January\"\n set.unit = YEAR_INDEX;\n } else if (isDefined(set.weekday)) {\n // \"next Monday\"\n set.unit = WEEK_INDEX;\n }\n }\n\n function handleUnitlessNum(num) {\n if (isDefined(set.weekday)) {\n // \"The second Tuesday of March\"\n setOrdinalWeekday(num);\n } else if (isDefined(set.month)) {\n // \"The second of March\"\n set.date = set.num;\n }\n }\n\n function handleMidday(hour) {\n set.hour = hour % 24;\n if (hour > 23) {\n // If the date has hours past 24, we need to prevent it from traversing\n // into a new day as that would make it being part of a new week in\n // ambiguous dates such as \"Monday\".\n afterDateSet(function() {\n advanceDate(date, 'date', trunc(hour / 24));\n });\n }\n }\n\n function handleRelativeDay() {\n resetTime(date);\n if (isUndefined(set.unit)) {\n set.unit = DAY_INDEX;\n set.num = set.day;\n delete set.day;\n }\n }\n\n function handleRelativeUnit(unitIndex) {\n var num = isDefined(set.num) ? set.num : 1;\n\n // If a weekday is defined, there are 3 possible formats being applied:\n //\n // 1. \"the day after monday\": unit is days\n // 2. \"next monday\": short for \"next week monday\", unit is weeks\n // 3. \"the 2nd monday of next month\": unit is months\n //\n // In the first case, we need to set the weekday up front, as the day is\n // relative to it. The second case also needs to be handled up front for\n // formats like \"next monday at midnight\" which will have its weekday reset\n // if not set up front. The last case will set up the params necessary to\n // shift the weekday and allow separateAbsoluteUnits below to handle setting\n // it after the date has been shifted.\n if(isDefined(set.weekday)) {\n if(unitIndex === MONTH_INDEX) {\n setOrdinalWeekday(num);\n num = 1;\n } else {\n updateDate(date, { weekday: set.weekday }, true);\n delete set.weekday;\n }\n }\n\n if (set.half) {\n // Allow localized \"half\" as a standalone colloquialism. Purposely avoiding\n // the locale number system to reduce complexity. The units \"month\" and\n // \"week\" are purposely excluded in the English date formats below, as\n // \"half a week\" and \"half a month\" are meaningless as exact dates.\n num *= set.half;\n }\n\n if (isDefined(set.shift)) {\n // Shift and unit, ie \"next month\", \"last week\", etc.\n num *= set.shift;\n } else if (set.sign) {\n // Unit and sign, ie \"months ago\", \"weeks from now\", etc.\n num *= set.sign;\n }\n\n if (isDefined(set.day)) {\n // \"the day after tomorrow\"\n num += set.day;\n delete set.day;\n }\n\n // Formats like \"the 15th of last month\" or \"6:30pm of next week\"\n // contain absolute units in addition to relative ones, so separate\n // them here, remove them from the params, and set up a callback to\n // set them after the relative ones have been set.\n separateAbsoluteUnits(unitIndex);\n\n // Finally shift the unit.\n set[English.units[unitIndex]] = num;\n relative = true;\n }\n\n function handleEdge(edge, params) {\n var edgeIndex = params.unit, weekdayOfMonth;\n if (!edgeIndex) {\n // If we have \"the end of January\", then we need to find the unit index.\n iterateOverHigherDateParams(params, function(unitName, val, unit, i) {\n if (unitName === 'weekday' && isDefined(params.month)) {\n // If both a month and weekday exist, then we have a format like\n // \"the last tuesday in November, 2012\", where the \"last\" is still\n // relative to the end of the month, so prevent the unit \"weekday\"\n // from taking over.\n return;\n }\n edgeIndex = i;\n });\n }\n if (edgeIndex === MONTH_INDEX && isDefined(params.weekday)) {\n // If a weekday in a month exists (as described above),\n // then set it up to be set after the date has been shifted.\n weekdayOfMonth = params.weekday;\n delete params.weekday;\n }\n afterDateSet(function() {\n var stopIndex;\n // \"edge\" values that are at the very edge are \"2\" so the beginning of the\n // year is -2 and the end of the year is 2. Conversely, the \"last day\" is\n // actually 00:00am so it is 1. -1 is reserved but unused for now.\n if (edge < 0) {\n moveToBeginningOfUnit(date, edgeIndex, getOwn(options, 'locale'));\n } else if (edge > 0) {\n if (edge === 1) {\n stopIndex = DAY_INDEX;\n moveToBeginningOfUnit(date, DAY_INDEX);\n }\n moveToEndOfUnit(date, edgeIndex, getOwn(options, 'locale'), stopIndex);\n }\n if (isDefined(weekdayOfMonth)) {\n setWeekday(date, weekdayOfMonth, -edge);\n resetTime(date);\n }\n });\n if (edgeIndex === MONTH_INDEX) {\n params.specificity = DAY_INDEX;\n } else {\n params.specificity = edgeIndex - 1;\n }\n }\n\n function setOrdinalWeekday(num) {\n // If we have \"the 2nd Tuesday of June\", then pass the \"weekdayDir\"\n // flag along to updateDate so that the date does not accidentally traverse\n // into the previous month. This needs to be independent of the \"prefer\"\n // flag because we are only ensuring that the weekday is in the future, not\n // the entire date.\n set.weekday = 7 * (num - 1) + set.weekday;\n set.date = 1;\n weekdayDir = 1;\n }\n\n function separateAbsoluteUnits(unitIndex) {\n var params;\n\n iterateOverDateParams(set, function(name, val, unit, i) {\n // If there is a time unit set that is more specific than\n // the matched unit we have a string like \"5:30am in 2 minutes\",\n // which is meaningless, so invalidate the date...\n if (i >= unitIndex) {\n date.setTime(NaN);\n return false;\n } else if (i < unitIndex) {\n // ...otherwise set the params to set the absolute date\n // as a callback after the relative date has been set.\n params = params || {};\n params[name] = val;\n deleteDateParam(set, name);\n }\n });\n if (params) {\n afterDateSet(function() {\n updateDate(date, params, true, false, getOwn(options, 'prefer'), weekdayDir);\n });\n if (set.edge) {\n // \"the end of March of next year\"\n handleEdge(set.edge, params);\n delete set.edge;\n }\n }\n }\n\n if (contextDate && d) {\n // If a context date is passed (\"get\" and \"unitsFromNow\"),\n // then use it as the starting point.\n date = cloneDateByFlag(contextDate, true);\n } else {\n date = getNewDate();\n }\n\n _utc(date, getOwn(options, 'fromUTC'));\n\n if (isString(d)) {\n date = parseStringDate(d);\n } else if (isDate(d)) {\n date = cloneDateByFlag(d, hasOwn(options, 'clone') || forceClone);\n } else if (isObjectType(d)) {\n set = simpleClone(d);\n updateDate(date, set, true);\n } else if (isNumber(d) || d === null) {\n date.setTime(d);\n }\n // A date created by parsing a string presumes that the format *itself* is\n // UTC, but not that the date, once created, should be manipulated as such. In\n // other words, if you are creating a date object from a server time\n // \"2012-11-15T12:00:00Z\", in the majority of cases you are using it to create\n // a date that will, after creation, be manipulated as local, so reset the utc\n // flag here unless \"setUTC\" is also set.\n _utc(date, !!getOwn(options, 'setUTC'));\n return {\n set: set,\n date: date\n };\n}\n\nmodule.exports = getExtendedDate;","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n isUndefined = require('../../common/internal/isUndefined');\n\nvar YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction iterateOverDateUnits(fn, startIndex, endIndex) {\n endIndex = endIndex || 0;\n if (isUndefined(startIndex)) {\n startIndex = YEAR_INDEX;\n }\n for (var index = startIndex; index >= endIndex; index--) {\n if (fn(DateUnits[index], index) === false) {\n break;\n }\n }\n}\n\nmodule.exports = iterateOverDateUnits;","'use strict';\n\nfunction isObjectType(obj, type) {\n return !!obj && (type || typeof obj) === 'object';\n}\n\nmodule.exports = isObjectType;","'use strict';\n\nmodule.exports = {\n ISO_FIRST_DAY_OF_WEEK: 1,\n ISO_FIRST_DAY_OF_WEEK_YEAR: 4\n};","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction simpleMerge(target, source) {\n forEachProperty(source, function(val, key) {\n target[key] = val;\n });\n return target;\n}\n\nmodule.exports = simpleMerge;","'use strict';\n\nvar EnglishLocaleBaseDefinition = require('../var/EnglishLocaleBaseDefinition'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n simpleClone = require('../../common/internal/simpleClone');\n\nfunction getEnglishVariant(v) {\n return simpleMerge(simpleClone(EnglishLocaleBaseDefinition), v);\n}\n\nmodule.exports = getEnglishVariant;","import {isNumber} from './types';\r\n\r\n/**\r\n * Takes a string, removes all formatting/cruft and returns the raw float value\r\n * @param {String} Formatted number\r\n * @param {String} Decimal type '.' or ','\r\n * @return {Number} Unformatted number\r\n *\r\n * https://github.com/openexchangerates/accounting.js/blob/master/accounting.js\r\n */\r\nexport const parse = (value, decimal = '.') => {\r\n // Return the value as-is if it's already a number\r\n if (isNumber(value)) {\r\n return value;\r\n }\r\n\r\n // Build regex to strip out everything except digits, decimal point and\r\n // minus sign\r\n let regex = new RegExp('[^0-9-' + decimal + ']', ['g']);\r\n let unformatted = parseFloat(\r\n ('' + value)\r\n // replace bracketed values with negatives\r\n .replace(/\\((.*)\\)/, '-$1')\r\n // strip out any cruft\r\n .replace(regex, '')\r\n // make sure decimal point is standard\r\n .replace(decimal, '.')\r\n );\r\n\r\n // This will fail silently\r\n return !isNaN(unformatted) ? unformatted : 0;\r\n};\r\n","/**\r\n * Array utilities\r\n */\r\n\r\nimport {matchCase} from './string';\r\n\r\n/**\r\n * Checks if given item can be found in the passed collection\r\n * @param {Array} arr collection\r\n * @param {Any} val item to search\r\n * @param {Boolean} caseSensitive respects case if true\r\n * @return {Boolean}\r\n */\r\nexport const has = (arr, val, caseSensitive) => {\r\n let sCase = Boolean(caseSensitive);\r\n for (var i = 0, l = arr.length; i < l; i++) {\r\n if (matchCase(arr[i].toString(), sCase) === val) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n","import {Feature} from '../feature';\r\nimport {\r\n ignoreCase, numSortAsc, numSortDesc,\r\n dateSortAsc, sortNumberStr, sortDateStr\r\n} from '../sort';\r\nimport {isArray, isObj, isEmpty} from '../types';\r\nimport {NUMBER, FORMATTED_NUMBER, DATE} from '../const';\r\n\r\n/**\r\n * Base class for Dropdown and CheckList UI components\r\n * @export\r\n * @class BaseDropdown\r\n * @extends {Feature}\r\n */\r\nexport class BaseDropdown extends Feature {\r\n\r\n /**\r\n * Creates an instance of BaseDropdown\r\n * @param {TableFilter} tf\r\n */\r\n constructor(tf) {\r\n super(tf, 'baseDropdown');\r\n\r\n let f = this.config;\r\n\r\n /**\r\n * Filter options custom sorter on a column basis\r\n * @type {Object}\r\n */\r\n this.customSorter = isObj(f.filter_options_sorter) &&\r\n isArray(f.filter_options_sorter.col) &&\r\n isArray(f.filter_options_sorter.comparer) ?\r\n f.filter_options_sorter :\r\n null;\r\n\r\n // TODO: move here all properties shared by Dropdown CheckList\r\n\r\n /**\r\n * Has custom options\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isCustom = false;\r\n\r\n /**\r\n * List of options values\r\n * @type {Array}\r\n * @private\r\n */\r\n this.opts = [];\r\n\r\n /**\r\n * List of options texts for custom values\r\n * @type {Array}\r\n * @private\r\n */\r\n this.optsTxt = [];\r\n\r\n /**\r\n * List of options to be excluded from the checklist filter\r\n * @type {Array}\r\n * @private\r\n */\r\n this.excludedOpts = [];\r\n }\r\n\r\n /**\r\n * Sort passed options based on the type of the specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [options=[]] Collection of values\r\n * @return {Array} Sorted values\r\n * @private\r\n */\r\n sortOptions(colIndex, options = []) {\r\n let tf = this.tf;\r\n\r\n if (tf.isCustomOptions(colIndex) || !tf.sortSlc ||\r\n (isArray(tf.sortSlc) && tf.sortSlc.indexOf(colIndex) === -1)) {\r\n return options;\r\n }\r\n\r\n let { caseSensitive, sortNumDesc } = tf;\r\n let compareFn;\r\n\r\n if (this.customSorter &&\r\n this.customSorter.col.indexOf(colIndex) !== -1) {\r\n var idx = this.customSorter.col.indexOf(colIndex);\r\n compareFn = this.customSorter.comparer[idx];\r\n }\r\n else if (tf.hasType(colIndex, [NUMBER, FORMATTED_NUMBER])) {\r\n let decimal = tf.getDecimal(colIndex);\r\n let comparer = numSortAsc;\r\n if (sortNumDesc === true || sortNumDesc.indexOf(colIndex) !== -1) {\r\n comparer = numSortDesc;\r\n }\r\n compareFn = sortNumberStr(comparer, decimal);\r\n }\r\n else if (tf.hasType(colIndex, [DATE])) {\r\n let locale = tf.feature('dateType').getLocale(colIndex);\r\n let comparer = dateSortAsc;\r\n compareFn = sortDateStr(comparer, locale);\r\n } else { // string\r\n compareFn = caseSensitive ? undefined : ignoreCase;\r\n }\r\n\r\n return options.sort(compareFn);\r\n }\r\n\r\n /**\r\n * Regenerate filters of specified columns and maintain selection if any\r\n * @param {Array} colIndexes Collection of column indexes\r\n * @private\r\n */\r\n refreshFilters(colIndexes) {\r\n colIndexes.forEach((colIdx) => {\r\n let values = this.getValues(colIdx);\r\n this.build(colIdx, this.tf.linkedFilters);\r\n this.selectOptions(colIdx, values);\r\n });\r\n }\r\n\r\n /**\r\n * Check passed row contains a valid linked value\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} activeFilterIdx Current active filter index\r\n * @returns {Boolean}\r\n */\r\n isValidLinkedValue(rowIdx, activeFilterIdx) {\r\n let tf = this.tf;\r\n\r\n if (tf.disableExcludedOptions) {\r\n return true;\r\n }\r\n\r\n if (tf.paging) {\r\n if (!isEmpty(activeFilterIdx) && tf.isRowValid(rowIdx)) {\r\n return true;\r\n }\r\n } else {\r\n if (tf.isRowDisplayed(rowIdx)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","'use strict';\n\nvar DURATION_REG = require('../var/DURATION_REG'),\n classChecks = require('../../common/var/classChecks'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize');\n\nvar isNumber = classChecks.isNumber;\n\nfunction getDateIncrementObject(amt) {\n var match, val, unit;\n if (isNumber(amt)) {\n return [amt, 'Milliseconds'];\n }\n match = amt.match(DURATION_REG);\n val = +match[1] || 1;\n unit = simpleCapitalize(match[2].toLowerCase());\n if (unit.match(/hour|minute|second/i)) {\n unit += 's';\n } else if (unit === 'Year') {\n unit = 'FullYear';\n } else if (unit === 'Week') {\n unit = 'Date';\n val *= 7;\n } else if (unit === 'Day') {\n unit = 'Date';\n }\n return [val, unit];\n}\n\nmodule.exports = getDateIncrementObject;","'use strict';\n\nvar MULTIPLIERS = {\n 'Hours': 60 * 60 * 1000,\n 'Minutes': 60 * 1000,\n 'Seconds': 1000,\n 'Milliseconds': 1\n};\n\nmodule.exports = MULTIPLIERS;","'use strict';\n\nvar MULTIPLIERS = require('../var/MULTIPLIERS'),\n callDateSet = require('../../common/internal/callDateSet'),\n callDateGet = require('../../common/internal/callDateGet');\n\nfunction incrementDate(src, amount, unit) {\n var mult = MULTIPLIERS[unit], d;\n if (mult) {\n d = new Date(src.getTime() + (amount * mult));\n } else {\n d = new Date(src);\n callDateSet(d, unit, callDateGet(src, unit) + amount);\n }\n return d;\n}\n\nmodule.exports = incrementDate;","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n namespaceAliases = require('../../common/var/namespaceAliases');\n\nvar isDate = classChecks.isDate,\n sugarDate = namespaceAliases.sugarDate;\n\nfunction getDateForRange(d) {\n if (isDate(d)) {\n return d;\n } else if (d == null) {\n return new Date();\n } else if (sugarDate.create) {\n return sugarDate.create(d);\n }\n return new Date(d);\n}\n\nmodule.exports = getDateForRange;","'use strict';\n\nvar classChecks = require('../../common/var/classChecks');\n\nvar isDate = classChecks.isDate;\n\nfunction getRangeMemberPrimitiveValue(m) {\n if (m == null) return m;\n return isDate(m) ? m.getTime() : m.valueOf();\n}\n\nmodule.exports = getRangeMemberPrimitiveValue;","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n getRangeMemberPrimitiveValue = require('./getRangeMemberPrimitiveValue');\n\nvar isDate = classChecks.isDate;\n\nfunction cloneRangeMember(m) {\n if (isDate(m)) {\n return new Date(m.getTime());\n } else {\n return getRangeMemberPrimitiveValue(m);\n }\n}\n\nmodule.exports = cloneRangeMember;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n dateFormat = require('./dateFormat'),\n classChecks = require('../../common/var/classChecks'),\n assertDateIsValid = require('./assertDateIsValid'),\n getAdjustedUnitForDate = require('./getAdjustedUnitForDate');\n\nvar isFunction = classChecks.isFunction,\n localeManager = LocaleHelpers.localeManager;\n\nfunction dateRelative(d, dRelative, arg1, arg2) {\n var adu, format, type, localeCode, fn;\n assertDateIsValid(d);\n if (isFunction(arg1)) {\n fn = arg1;\n } else {\n localeCode = arg1;\n fn = arg2;\n }\n adu = getAdjustedUnitForDate(d, dRelative);\n if (fn) {\n format = fn.apply(d, adu.concat(localeManager.get(localeCode)));\n if (format) {\n return dateFormat(d, format, localeCode);\n }\n }\n // Adjust up if time is in ms, as this doesn't\n // look very good for a standard relative date.\n if (adu[1] === 0) {\n adu[1] = 1;\n adu[0] = 1;\n }\n if (dRelative) {\n type = 'duration';\n } else if (adu[2] > 0) {\n type = 'future';\n } else {\n type = 'past';\n }\n return localeManager.get(localeCode).getRelativeFormat(adu, type);\n}\n\nmodule.exports = dateRelative;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n trim = require('../../common/internal/trim'),\n getMonth = require('./getMonth'),\n isDefined = require('../../common/internal/isDefined'),\n getNewDate = require('./getNewDate'),\n compareDay = require('./compareDay'),\n getWeekday = require('./getWeekday'),\n dateIsValid = require('./dateIsValid'),\n classChecks = require('../../common/var/classChecks'),\n compareDate = require('./compareDate');\n\nvar isString = classChecks.isString,\n English = LocaleHelpers.English;\n\nfunction fullCompareDate(date, d, margin) {\n var tmp;\n if (!dateIsValid(date)) return;\n if (isString(d)) {\n d = trim(d).toLowerCase();\n switch(true) {\n case d === 'future': return date.getTime() > getNewDate().getTime();\n case d === 'past': return date.getTime() < getNewDate().getTime();\n case d === 'today': return compareDay(date);\n case d === 'tomorrow': return compareDay(date, 1);\n case d === 'yesterday': return compareDay(date, -1);\n case d === 'weekday': return getWeekday(date) > 0 && getWeekday(date) < 6;\n case d === 'weekend': return getWeekday(date) === 0 || getWeekday(date) === 6;\n\n case (isDefined(tmp = English.weekdayMap[d])):\n return getWeekday(date) === tmp;\n case (isDefined(tmp = English.monthMap[d])):\n return getMonth(date) === tmp;\n }\n }\n return compareDate(date, d, margin);\n}\n\nmodule.exports = fullCompareDate;","'use strict';\n\nvar dateIsValid = require('./dateIsValid');\n\nfunction assertDateIsValid(d) {\n if (!dateIsValid(d)) {\n throw new TypeError('Date is not valid');\n }\n}\n\nmodule.exports = assertDateIsValid;","'use strict';\n\nvar _utc = require('../../common/var/_utc'),\n trunc = require('../../common/var/trunc'),\n tzOffset = require('./tzOffset'),\n padNumber = require('../../common/internal/padNumber'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar abs = mathAliases.abs;\n\nfunction getUTCOffset(d, iso) {\n var offset = _utc(d) ? 0 : tzOffset(d), hours, mins, colon;\n colon = iso === true ? ':' : '';\n if (!offset && iso) return 'Z';\n hours = padNumber(trunc(-offset / 60), 2, true);\n mins = padNumber(abs(offset % 60), 2);\n return hours + colon + mins;\n}\n\nmodule.exports = getUTCOffset;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getHours(d) {\n return callDateGet(d, 'Hours');\n}\n\nmodule.exports = getHours;","'use strict';\n\nvar CoreOutputFormats = {\n 'ISO8601': '{yyyy}-{MM}-{dd}T{HH}:{mm}:{ss}.{SSS}{Z}',\n 'RFC1123': '{Dow}, {dd} {Mon} {yyyy} {HH}:{mm}:{ss} {ZZ}',\n 'RFC1036': '{Weekday}, {dd}-{Mon}-{yy} {HH}:{mm}:{ss} {ZZ}'\n};\n\nmodule.exports = CoreOutputFormats;","'use strict';\n\nvar CoreOutputFormats = require('../var/CoreOutputFormats'),\n formattingTokens = require('../var/formattingTokens'),\n assertDateIsValid = require('./assertDateIsValid');\n\nvar dateFormatMatcher = formattingTokens.dateFormatMatcher;\n\nfunction dateFormat(d, format, localeCode) {\n assertDateIsValid(d);\n format = CoreOutputFormats[format] || format || '{long}';\n return dateFormatMatcher(format, d, localeCode);\n}\n\nmodule.exports = dateFormat;","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n simpleClone = require('../../common/internal/simpleClone'),\n isObjectType = require('../../common/internal/isObjectType'),\n getDateParamsFromString = require('./getDateParamsFromString'),\n collectDateParamsFromArguments = require('./collectDateParamsFromArguments');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString;\n\nfunction collectDateArguments(args, allowDuration) {\n var arg1 = args[0], arg2 = args[1];\n if (allowDuration && isString(arg1)) {\n arg1 = getDateParamsFromString(arg1);\n } else if (isNumber(arg1) && isNumber(arg2)) {\n arg1 = collectDateParamsFromArguments(args);\n arg2 = null;\n } else {\n if (isObjectType(arg1)) {\n arg1 = simpleClone(arg1);\n }\n }\n return [arg1, arg2];\n}\n\nmodule.exports = collectDateArguments;","'use strict';\n\nvar updateDate = require('./updateDate'),\n collectDateArguments = require('./collectDateArguments');\n\nfunction advanceDateWithArgs(d, args, dir) {\n args = collectDateArguments(args, true);\n return updateDate(d, args[0], args[1], dir);\n}\n\nmodule.exports = advanceDateWithArgs;","'use strict';\n\nvar getExtendedDate = require('./getExtendedDate');\n\nfunction createDateWithContext(contextDate, d, options, forceClone) {\n return getExtendedDate(contextDate, d, options, forceClone).date;\n}\n\nmodule.exports = createDateWithContext;","'use strict';\n\nvar MINUTES = require('../var/MINUTES'),\n DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n _utc = require('../../common/var/_utc'),\n tzOffset = require('./tzOffset'),\n cloneDate = require('./cloneDate'),\n isDefined = require('../../common/internal/isDefined'),\n advanceDate = require('./advanceDate'),\n dateIsValid = require('./dateIsValid'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n getExtendedDate = require('./getExtendedDate'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit');\n\nvar MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction compareDate(date, d, margin, localeCode, options) {\n var loMargin = 0, hiMargin = 0, timezoneShift, compareEdges, override, min, max, p, t;\n\n function getTimezoneShift() {\n // If there is any specificity in the date then we're implicitly not\n // checking absolute time, so ignore timezone shifts.\n if (p.set && p.set.specificity) {\n return 0;\n }\n return (tzOffset(p.date) - tzOffset(date)) * MINUTES;\n }\n\n function addSpecificUnit() {\n var unit = DateUnits[p.set.specificity];\n return advanceDate(cloneDate(p.date), unit.name, 1).getTime() - 1;\n }\n\n if (_utc(date)) {\n options = options || {};\n options.fromUTC = true;\n options.setUTC = true;\n }\n\n p = getExtendedDate(null, d, options, true);\n\n if (margin > 0) {\n loMargin = hiMargin = margin;\n override = true;\n }\n if (!dateIsValid(p.date)) return false;\n if (p.set && p.set.specificity) {\n if (isDefined(p.set.edge) || isDefined(p.set.shift)) {\n compareEdges = true;\n moveToBeginningOfUnit(p.date, p.set.specificity, localeCode);\n }\n if (compareEdges || p.set.specificity === MONTH_INDEX) {\n max = moveToEndOfUnit(cloneDate(p.date), p.set.specificity, localeCode).getTime();\n } else {\n max = addSpecificUnit();\n }\n if (!override && isDefined(p.set.sign) && p.set.specificity) {\n // If the time is relative, there can occasionally be an disparity between\n // the relative date and \"now\", which it is being compared to, so set an\n // extra margin to account for this.\n loMargin = 50;\n hiMargin = -50;\n }\n }\n t = date.getTime();\n min = p.date.getTime();\n max = max || min;\n timezoneShift = getTimezoneShift();\n if (timezoneShift) {\n min -= timezoneShift;\n max -= timezoneShift;\n }\n return t >= (min - loMargin) && t <= (max + hiMargin);\n}\n\nmodule.exports = compareDate;","'use strict';\n\nvar setWeekday = require('./setWeekday'),\n getWeekday = require('./getWeekday'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar ceil = mathAliases.ceil;\n\nfunction moveToEndOfWeek(d, firstDayOfWeek) {\n var target = firstDayOfWeek - 1;\n setWeekday(d, ceil((getWeekday(d) - target) / 7) * 7 + target);\n return d;\n}\n\nmodule.exports = moveToEndOfWeek;","'use strict';\n\nvar getOwnKey = require('../../common/internal/getOwnKey');\n\nfunction getDateParamKey(params, key) {\n return getOwnKey(params, key) ||\n getOwnKey(params, key + 's') ||\n (key === 'day' && getOwnKey(params, 'date'));\n}\n\nmodule.exports = getDateParamKey;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n setDate = require('./setDate'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek');\n\nvar MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction moveToFirstDayOfWeekYear(d, firstDayOfWeek, firstDayOfWeekYear) {\n setUnitAndLowerToEdge(d, MONTH_INDEX);\n setDate(d, firstDayOfWeekYear);\n moveToBeginningOfWeek(d, firstDayOfWeek);\n}\n\nmodule.exports = moveToFirstDayOfWeekYear;","'use strict';\n\nvar ISODefaults = require('../var/ISODefaults'),\n getDate = require('./getDate'),\n setDate = require('./setDate'),\n setYear = require('./setYear'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n setMonth = require('./setMonth'),\n cloneDate = require('./cloneDate'),\n getWeekday = require('./getWeekday'),\n setWeekday = require('./setWeekday'),\n classChecks = require('../../common/var/classChecks'),\n moveToFirstDayOfWeekYear = require('./moveToFirstDayOfWeekYear');\n\nvar isNumber = classChecks.isNumber,\n ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR;\n\nfunction setISOWeekNumber(d, num) {\n if (isNumber(num)) {\n // Intentionally avoiding updateDate here to prevent circular dependencies.\n var isoWeek = cloneDate(d), dow = getWeekday(d);\n moveToFirstDayOfWeekYear(isoWeek, ISO_FIRST_DAY_OF_WEEK, ISO_FIRST_DAY_OF_WEEK_YEAR);\n setDate(isoWeek, getDate(isoWeek) + 7 * (num - 1));\n setYear(d, getYear(isoWeek));\n setMonth(d, getMonth(isoWeek));\n setDate(d, getDate(isoWeek));\n setWeekday(d, dow || 7);\n }\n return d.getTime();\n}\n\nmodule.exports = setISOWeekNumber;","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n getLowerUnitIndex = require('./getLowerUnitIndex');\n\nfunction walkUnitDown(unitIndex, fn) {\n while (unitIndex >= 0) {\n if (fn(DateUnits[unitIndex], unitIndex) === false) {\n break;\n }\n unitIndex = getLowerUnitIndex(unitIndex);\n }\n}\n\nmodule.exports = walkUnitDown;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX;\n\nfunction resetTime(d) {\n return setUnitAndLowerToEdge(d, HOURS_INDEX);\n}\n\nmodule.exports = resetTime;","'use strict';\n\nmodule.exports = 60 * 1000;","'use strict';\n\nvar mathAliases = require('../../common/var/mathAliases'),\n iterateOverDateUnits = require('./iterateOverDateUnits');\n\nvar abs = mathAliases.abs;\n\nfunction getAdjustedUnit(ms, fn) {\n var unitIndex = 0, value = 0;\n iterateOverDateUnits(function(unit, i) {\n value = abs(fn(unit));\n if (value >= 1) {\n unitIndex = i;\n return false;\n }\n });\n return [value, unitIndex, ms];\n}\n\nmodule.exports = getAdjustedUnit;","'use strict';\n\nvar mathAliases = require('../var/mathAliases');\n\nvar abs = mathAliases.abs,\n pow = mathAliases.pow,\n round = mathAliases.round;\n\nfunction withPrecision(val, precision, fn) {\n var multiplier = pow(10, abs(precision || 0));\n fn = fn || round;\n if (precision < 0) multiplier = 1 / multiplier;\n return fn(val * multiplier) / multiplier;\n}\n\nmodule.exports = withPrecision;","'use strict';\n\nmodule.exports = String.fromCharCode;","'use strict';\n\nvar getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n callDateGet = require('../../common/internal/callDateGet');\n\nfunction getDaysInMonth(d) {\n return 32 - callDateGet(new Date(getYear(d), getMonth(d), 32), 'Date');\n}\n\nmodule.exports = getDaysInMonth;","'use strict';\n\nfunction getRegNonCapturing(src, opt) {\n if (src.length > 1) {\n src = '(?:' + src + ')';\n }\n if (opt) {\n src += '?';\n }\n return src;\n}\n\nmodule.exports = getRegNonCapturing;","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar classToString = coreUtilityAliases.classToString;\n\nfunction isClass(obj, className, str) {\n if (!str) {\n str = classToString(obj);\n }\n return str === '[object '+ className +']';\n}\n\nmodule.exports = isClass;","'use strict';\n\nfunction map(arr, fn) {\n // perf: Not using fixed array len here as it may be sparse.\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n if (i in arr) {\n result.push(fn(arr[i], i));\n }\n }\n return result;\n}\n\nmodule.exports = map;","'use strict';\n\nvar LocalizedParsingTokens = {\n 'year': {\n base: 'yyyy',\n requiresSuffix: true\n },\n 'month': {\n base: 'MM',\n requiresSuffix: true\n },\n 'date': {\n base: 'dd',\n requiresSuffix: true\n },\n 'hour': {\n base: 'hh',\n requiresSuffixOr: ':'\n },\n 'minute': {\n base: 'mm'\n },\n 'second': {\n base: 'ss'\n },\n 'num': {\n src: '\\\\d+',\n requiresNumerals: true\n }\n};\n\nmodule.exports = LocalizedParsingTokens;","'use strict';\n\nvar ParsingTokens = {\n 'yyyy': {\n param: 'year',\n src: '\\\\d{4}'\n },\n 'MM': {\n param: 'month',\n src: '[01]?\\\\d'\n },\n 'dd': {\n param: 'date',\n src: '[0123]?\\\\d'\n },\n 'hh': {\n param: 'hour',\n src: '[0-2]?\\\\d'\n },\n 'mm': {\n param: 'minute',\n src: '[0-5]\\\\d'\n },\n 'ss': {\n param: 'second',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'yy': {\n param: 'year',\n src: '\\\\d{2}'\n },\n 'y': {\n param: 'year',\n src: '\\\\d'\n },\n 'yearSign': {\n src: '[+-]',\n sign: true\n },\n 'tzHour': {\n src: '[0-1]\\\\d'\n },\n 'tzMinute': {\n src: '[0-5]\\\\d'\n },\n 'tzSign': {\n src: '[+−-]',\n sign: true\n },\n 'ihh': {\n param: 'hour',\n src: '[0-2]?\\\\d(?:[,.]\\\\d+)?'\n },\n 'imm': {\n param: 'minute',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'GMT': {\n param: 'utc',\n src: 'GMT',\n val: 1\n },\n 'Z': {\n param: 'utc',\n src: 'Z',\n val: 1\n },\n 'timestamp': {\n src: '\\\\d+'\n }\n};\n\nmodule.exports = ParsingTokens;","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar AmericanEnglishDefinition = getEnglishVariant({\n 'mdy': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'short': '{MM}/{dd}/{yyyy}',\n 'medium': '{Month} {d}, {yyyy}',\n 'long': '{Month} {d}, {yyyy} {time}',\n 'full': '{Weekday}, {Month} {d}, {yyyy} {time}',\n 'stamp': '{Dow} {Mon} {d} {yyyy} {time}',\n 'time': '{h}:{mm} {TT}'\n});\n\nmodule.exports = AmericanEnglishDefinition;","'use strict';\n\nrequire('./date');\nrequire('./range');\n\nmodule.exports = require('sugar-core');","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","import {parse as parseNb} from './number';\r\nimport {Date as SugarDate} from 'sugar-date';\r\n\r\n/** Sorting utilities */\r\n\r\n/**\r\n * Case insensitive compare function for passed strings\r\n * @param {String} First string\r\n * @param {String} Second string\r\n * @return {Number} -1 if first string lower than second one\r\n * 0 if first string same order as second one\r\n * 1 if first string greater than second one\r\n */\r\nexport const ignoreCase = (a, b) => {\r\n let x = a.toLowerCase();\r\n let y = b.toLowerCase();\r\n return x < y ? -1 : (x > y ? 1 : 0);\r\n};\r\n\r\n/**\r\n * Compare function for sorting passed numbers in ascending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortAsc = (a, b) => (a - b);\r\n\r\n/**\r\n * Compare function for sorting passed numbers in descending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortDesc = (a, b) => (b - a);\r\n\r\n/**\r\n * Compare function for sorting passed dates in ascending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortAsc = (date1, date2) => date1.getTime() - date2.getTime();\r\n\r\n/**\r\n * Compare function for sorting passed dates in descending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortDesc = (date1, date2) => date2.getTime() - date1.getTime();\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted numbers in desired\r\n * fashion according to supplied compare function and decimal separator\r\n * @param {Function} Compare function\r\n * @param {String} [decimal=','] Decimal separator\r\n * @return {Function} Compare function receiving parsed numeric arguments\r\n */\r\nexport const sortNumberStr = (compareFn, decimal = ',') => {\r\n return (numStr1, numStr2) => {\r\n let num1 = parseNb(numStr1, decimal);\r\n let num2 = parseNb(numStr2, decimal);\r\n return compareFn(num1, num2);\r\n };\r\n};\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted dates in desired\r\n * fashion according to supplied compare function and locale\r\n * @param {Function} Compare function\r\n * @param {String} [locale='en-us'] Locale code\r\n * @return {Function} Compare function receiving parsed date arguments\r\n */\r\nexport const sortDateStr = (compareFn, locale = 'en-us') => {\r\n return (dateStr1, dateStr2) => {\r\n let date1 = SugarDate.create(dateStr1, locale);\r\n let date2 = SugarDate.create(dateStr2, locale);\r\n return compareFn(date1, date2);\r\n };\r\n};\r\n","import {BaseDropdown} from './baseDropdown';\r\nimport {\r\n addClass, createCheckItem, createText, createElm, elm, removeClass, tag\r\n} from '../dom';\r\nimport {has} from '../array';\r\nimport {matchCase, trim, rgxEsc} from '../string';\r\nimport {addEvt, removeEvt, targetEvt} from '../event';\r\nimport {isEmpty} from '../types';\r\nimport {CHECKLIST, NONE} from '../const';\r\nimport {defaultsStr, defaultsBool} from '../settings';\r\n\r\n/**\r\n * Checklist filter UI component\r\n * @export\r\n * @class CheckList\r\n * @extends {BaseDropdown}\r\n */\r\nexport class CheckList extends BaseDropdown {\r\n\r\n /**\r\n * Creates an instance of CheckList\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'checkList');\r\n\r\n let f = this.config;\r\n\r\n /**\r\n * List of container DOM elements\r\n * @type {Array}\r\n */\r\n this.containers = [];\r\n\r\n /**\r\n * Css class for the container of the checklist filter (div)\r\n * @type {String}\r\n */\r\n this.containerCssClass = defaultsStr(f.div_checklist_css_class,\r\n 'div_checklist');\r\n\r\n /**\r\n * Css class for the checklist filter element (ul)\r\n * @type {String}\r\n */\r\n this.filterCssClass = defaultsStr(f.checklist_css_class,\r\n 'flt_checklist');\r\n\r\n /**\r\n * Css class for the item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.itemCssClass = defaultsStr(f.checklist_item_css_class,\r\n 'flt_checklist_item');\r\n\r\n /**\r\n * Css class for a selected item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.selectedItemCssClass = defaultsStr(\r\n f.checklist_selected_item_css_class,\r\n 'flt_checklist_slc_item'\r\n );\r\n\r\n /**\r\n * Text placed in the filter's container when load filter on demand\r\n * feature is enabled\r\n * @type {String}\r\n */\r\n this.activateText = defaultsStr(\r\n f.activate_checklist_text,\r\n 'Click to load filter data'\r\n );\r\n\r\n /**\r\n * Css class for a disabled item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.disabledItemCssClass = defaultsStr(\r\n f.checklist_item_disabled_css_class,\r\n 'flt_checklist_item_disabled'\r\n );\r\n\r\n /**\r\n * Enable the reset filter option as first item\r\n * @type {Boolean}\r\n */\r\n this.enableResetOption = defaultsBool(f.enable_checklist_reset_filter,\r\n true);\r\n\r\n /**\r\n * Prefix for container element ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfx = 'chkdiv_';\r\n }\r\n\r\n /**\r\n * Checklist option click event handler\r\n * @param {Event} evt\r\n * @private\r\n */\r\n optionClick(evt) {\r\n let elm = targetEvt(evt);\r\n let tf = this.tf;\r\n\r\n this.emitter.emit('filter-focus', tf, elm);\r\n this.setItemOption(elm);\r\n tf.filter();\r\n }\r\n\r\n /**\r\n * Checklist container click event handler for load-on-demand feature\r\n * @param {Event} evt\r\n * @private\r\n */\r\n onCheckListClick(evt) {\r\n let elm = targetEvt(evt);\r\n if (this.tf.loadFltOnDemand && elm.getAttribute('filled') === '0') {\r\n let ct = elm.getAttribute('ct');\r\n let div = this.containers[ct];\r\n this.build(ct);\r\n removeEvt(div, 'click', (evt) => this.onCheckListClick(evt));\r\n }\r\n }\r\n\r\n /**\r\n * Refresh all checklist filters\r\n */\r\n refreshAll() {\r\n let colIdxs = this.tf.getFiltersByType(CHECKLIST, true);\r\n this.refreshFilters(colIdxs);\r\n }\r\n\r\n /**\r\n * Initialize checklist filter\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isExternal External filter flag\r\n * @param {DOMElement} container Dom element containing the filter\r\n */\r\n init(colIndex, isExternal, container) {\r\n let tf = this.tf;\r\n let externalFltTgtId = isExternal ?\r\n tf.externalFltIds[colIndex] : null;\r\n\r\n let divCont = createElm('div',\r\n ['id', `${this.prfx}${colIndex}_${tf.id}`],\r\n ['ct', colIndex], ['filled', '0']);\r\n divCont.className = this.containerCssClass;\r\n\r\n //filter is appended in desired element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(divCont);\r\n } else {\r\n container.appendChild(divCont);\r\n }\r\n\r\n this.containers[colIndex] = divCont;\r\n tf.fltIds.push(tf.buildFilterId(colIndex));\r\n\r\n if (!tf.loadFltOnDemand) {\r\n this.build(colIndex);\r\n } else {\r\n addEvt(divCont, 'click', (evt) => this.onCheckListClick(evt));\r\n divCont.appendChild(createText(this.activateText));\r\n }\r\n\r\n this.emitter.on(\r\n ['build-checklist-filter'],\r\n (tf, colIndex, isLinked) => this.build(colIndex, isLinked)\r\n );\r\n\r\n this.emitter.on(\r\n ['select-checklist-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n\r\n this.emitter.on(['rows-changed'], () => this.refreshAll());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Build checklist UI\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isLinked Enable linked filters behaviour\r\n */\r\n build(colIndex, isLinked = false) {\r\n let tf = this.tf;\r\n colIndex = Number(colIndex);\r\n\r\n this.emitter.emit('before-populating-filter', tf, colIndex);\r\n\r\n /** @inherited */\r\n this.opts = [];\r\n /** @inherited */\r\n this.optsTxt = [];\r\n\r\n let flt = this.containers[colIndex];\r\n let ul = createElm('ul',\r\n ['id', tf.fltIds[colIndex]],\r\n ['colIndex', colIndex]);\r\n ul.className = this.filterCssClass;\r\n\r\n let caseSensitive = tf.caseSensitive;\r\n /** @inherited */\r\n this.isCustom = tf.isCustomOptions(colIndex);\r\n\r\n //Retrieves custom values\r\n if (this.isCustom) {\r\n let customValues = tf.getCustomOptions(colIndex);\r\n this.opts = customValues[0];\r\n this.optsTxt = customValues[1];\r\n }\r\n\r\n let activeIdx;\r\n let activeFilterId = tf.getActiveFilterId();\r\n\r\n if (isLinked && activeFilterId) {\r\n activeIdx = tf.getColumnIndexFromFilterId(activeFilterId);\r\n }\r\n\r\n let filteredDataCol = [];\r\n if (isLinked && tf.disableExcludedOptions) {\r\n /** @inherited */\r\n this.excludedOpts = [];\r\n }\r\n\r\n flt.innerHTML = '';\r\n\r\n let eachRow = tf.eachRow();\r\n eachRow(\r\n (row) => {\r\n let cellValue = tf.getCellValue(row.cells[colIndex]);\r\n //Vary Peter's patch\r\n let cellString = matchCase(cellValue, caseSensitive);\r\n // checks if celldata is already in array\r\n if (!has(this.opts, cellString, caseSensitive)) {\r\n this.opts.push(cellValue);\r\n }\r\n let filteredCol = filteredDataCol[colIndex];\r\n if (isLinked && tf.disableExcludedOptions) {\r\n if (!filteredCol) {\r\n filteredCol = tf.getVisibleColumnValues(colIndex);\r\n }\r\n if (!has(filteredCol, cellString, caseSensitive) &&\r\n !has(this.excludedOpts, cellString, caseSensitive)) {\r\n this.excludedOpts.push(cellValue);\r\n }\r\n }\r\n },\r\n // continue conditions function\r\n (row, k) => {\r\n // excluded rows don't need to appear on selects as always valid\r\n if (tf.excludeRows.indexOf(k) !== -1) {\r\n return true;\r\n }\r\n\r\n // checks if row has expected number of cells\r\n if (row.cells.length !== tf.nbCells || this.isCustom) {\r\n return true;\r\n }\r\n\r\n if (isLinked && !this.isValidLinkedValue(k, activeIdx)) {\r\n return true;\r\n }\r\n }\r\n );\r\n\r\n //sort options\r\n this.opts = this.sortOptions(colIndex, this.opts);\r\n if (this.excludedOpts) {\r\n this.excludedOpts = this.sortOptions(colIndex, this.excludedOpts);\r\n }\r\n\r\n this.addChecks(colIndex, ul);\r\n\r\n if (tf.loadFltOnDemand) {\r\n flt.innerHTML = '';\r\n }\r\n flt.appendChild(ul);\r\n flt.setAttribute('filled', '1');\r\n\r\n this.emitter.emit('after-populating-filter', tf, colIndex, flt);\r\n }\r\n\r\n /**\r\n * Add checklist options\r\n * @param {Number} colIndex Column index\r\n * @param {Object} ul Ul element\r\n * @private\r\n */\r\n addChecks(colIndex, ul) {\r\n let tf = this.tf;\r\n let chkCt = this.addTChecks(colIndex, ul);\r\n\r\n for (let y = 0; y < this.opts.length; y++) {\r\n let val = this.opts[y]; //item value\r\n let lbl = this.isCustom ? this.optsTxt[y] : val; //item text\r\n let fltId = tf.fltIds[colIndex];\r\n let lblIdx = y + chkCt;\r\n let li = createCheckItem(`${fltId}_${lblIdx}`, val, lbl,\r\n ['data-idx', lblIdx]);\r\n li.className = this.itemCssClass;\r\n\r\n if (tf.linkedFilters && tf.disableExcludedOptions &&\r\n has(this.excludedOpts, matchCase(val, tf.caseSensitive),\r\n tf.caseSensitive)) {\r\n addClass(li, this.disabledItemCssClass);\r\n li.check.disabled = true;\r\n li.disabled = true;\r\n } else {\r\n addEvt(li.check, 'click', evt => this.optionClick(evt));\r\n }\r\n ul.appendChild(li);\r\n\r\n if (val === '') {\r\n //item is hidden\r\n li.style.display = NONE;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add checklist header option\r\n * @param {Number} colIndex Column index\r\n * @param {Object} ul Ul element\r\n * @private\r\n */\r\n addTChecks(colIndex, ul) {\r\n let tf = this.tf;\r\n let chkCt = 1;\r\n let fltId = tf.fltIds[colIndex];\r\n let li0 = createCheckItem(`${fltId}_0`, '',\r\n tf.getClearFilterText(colIndex), ['data-idx', 0]);\r\n li0.className = this.itemCssClass;\r\n ul.appendChild(li0);\r\n\r\n addEvt(li0.check, 'click', evt => this.optionClick(evt));\r\n\r\n if (!this.enableResetOption) {\r\n li0.style.display = NONE;\r\n }\r\n\r\n if (tf.enableEmptyOption) {\r\n let li1 = createCheckItem(`${fltId}_1`, tf.emOperator,\r\n tf.emptyText, ['data-idx', 1]);\r\n li1.className = this.itemCssClass;\r\n ul.appendChild(li1);\r\n addEvt(li1.check, 'click', evt => this.optionClick(evt));\r\n chkCt++;\r\n }\r\n\r\n if (tf.enableNonEmptyOption) {\r\n let li2 = createCheckItem(`${fltId}_2`, tf.nmOperator,\r\n tf.nonEmptyText, ['data-idx', 2]);\r\n li2.className = this.itemCssClass;\r\n ul.appendChild(li2);\r\n addEvt(li2.check, 'click', evt => this.optionClick(evt));\r\n chkCt++;\r\n }\r\n return chkCt;\r\n }\r\n\r\n /**\r\n * Set/unset value of passed item option in filter's DOM element attribute\r\n * @param {Object} o checklist option DOM element\r\n * @private\r\n */\r\n setItemOption(o) {\r\n if (!o) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let chkValue = o.value; //checked item value\r\n let chkIndex = o.dataset.idx;\r\n let colIdx = tf.getColumnIndexFromFilterId(o.id);\r\n let n = tf.getFilterElement(parseInt(colIdx, 10));\r\n let items = n.childNodes;\r\n let li = items[chkIndex];\r\n //selected values (ul tag)\r\n let slcValues = n.getAttribute('value') || '';\r\n //selected items indexes (ul tag)\r\n let slcIndexes = n.getAttribute('indexes') || '';\r\n\r\n if (o.checked) {\r\n //show all item\r\n if (chkValue === '') {\r\n //items indexes\r\n let indexes = slcIndexes.split(tf.separator);\r\n indexes.forEach(idx => {\r\n idx = Number(idx);\r\n let li = items[idx];\r\n let chx = tag(li, 'input')[0];\r\n if (chx && idx > 0) {\r\n chx.checked = false;\r\n removeClass(li, this.selectedItemCssClass);\r\n }\r\n });\r\n\r\n n.setAttribute('value', '');\r\n n.setAttribute('indexes', '');\r\n\r\n } else {\r\n let indexes = slcIndexes + chkIndex + tf.separator;\r\n let values =\r\n trim(slcValues + ' ' + chkValue + ' ' + tf.orOperator);\r\n\r\n n.setAttribute('value', values);\r\n n.setAttribute('indexes', indexes);\r\n\r\n //uncheck first option\r\n let chx0 = tag(items[0], 'input')[0];\r\n if (chx0) {\r\n chx0.checked = false;\r\n }\r\n }\r\n\r\n removeClass(items[0], this.selectedItemCssClass);\r\n addClass(li, this.selectedItemCssClass);\r\n } else { //removes values and indexes\r\n let replaceValue =\r\n new RegExp(rgxEsc(chkValue + ' ' + tf.orOperator));\r\n let values = slcValues.replace(replaceValue, '');\r\n let replaceIndex = new RegExp(rgxEsc(chkIndex + tf.separator));\r\n let indexes = slcIndexes.replace(replaceIndex, '');\r\n\r\n n.setAttribute('value', trim(values));\r\n n.setAttribute('indexes', indexes);\r\n\r\n removeClass(li, this.selectedItemCssClass);\r\n }\r\n }\r\n\r\n /**\r\n * Select filter options programmatically\r\n * @param {Number} colIndex Column index\r\n * @param {Array} values Array of option values to select\r\n */\r\n selectOptions(colIndex, values = []) {\r\n let tf = this.tf;\r\n let flt = tf.getFilterElement(colIndex);\r\n if (!flt || values.length === 0) {\r\n return;\r\n }\r\n\r\n let lis = tag(flt, 'li');\r\n\r\n flt.setAttribute('value', '');\r\n flt.setAttribute('indexes', '');\r\n\r\n [].forEach.call(lis, (li) => {\r\n let chk = tag(li, 'input')[0];\r\n let chkVal = matchCase(chk.value, tf.caseSensitive);\r\n\r\n if (chkVal !== '' && has(values, chkVal, tf.caseSensitive)) {\r\n chk.checked = true;\r\n } else {\r\n // Check non-empty-text or empty-text option\r\n if (values.indexOf(tf.nmOperator) !== -1 &&\r\n chkVal === matchCase(tf.nonEmptyText, tf.caseSensitive)) {\r\n chk.checked = true;\r\n }\r\n else if (values.indexOf(tf.emOperator) !== -1 &&\r\n chkVal === matchCase(tf.emptyText, tf.caseSensitive)) {\r\n chk.checked = true;\r\n } else {\r\n chk.checked = false;\r\n }\r\n }\r\n this.setItemOption(chk);\r\n });\r\n }\r\n\r\n /**\r\n * Get filter values for a given column index\r\n * @param {Number} colIndex Column index\r\n * @returns {Array} values Collection of selected values\r\n */\r\n getValues(colIndex) {\r\n let tf = this.tf;\r\n let flt = tf.getFilterElement(colIndex);\r\n let fltAttr = flt.getAttribute('value');\r\n let values = isEmpty(fltAttr) ? '' : fltAttr;\r\n //removes last operator ||\r\n values = values.substr(0, values.length - 3);\r\n //turn || separated values into array\r\n values = values.split(' ' + tf.orOperator + ' ');\r\n\r\n return values;\r\n }\r\n\r\n /**\r\n * Destroy CheckList instance\r\n */\r\n destroy() {\r\n this.emitter.off(\r\n ['build-checklist-filter'],\r\n (tf, colIndex, isLinked) => this.build(colIndex, isLinked)\r\n );\r\n this.emitter.off(\r\n ['select-checklist-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.off(['rows-changed'], () => this.refreshAll());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, createOpt, createText, elm, removeElm} from '../dom';\r\nimport {isArray, isNull, EMPTY_FN} from '../types';\r\nimport {addEvt, removeEvt, isKeyPressed, bound} from '../event';\r\nimport {INPUT, SELECT, NONE, ENTER_KEY} from '../const';\r\nimport {\r\n defaultsStr, defaultsNb, defaultsBool, defaultsArr, defaultsFn\r\n} from '../settings';\r\nimport {CENTER, RIGHT} from './toolbar';\r\n\r\n/**\r\n * Paging UI component\r\n * @export\r\n * @class Paging\r\n * @extends {Feature}\r\n */\r\nexport class Paging extends Feature {\r\n\r\n /**\r\n * Creates an instance of Paging\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'paging');\r\n\r\n // Configuration object\r\n let f = this.config.paging || {};\r\n\r\n /**\r\n * Css class for the paging buttons (previous, next, etc.)\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class, 'pgInp');\r\n\r\n /**\r\n * Main select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageSlc = null;\r\n\r\n /**\r\n * Results per page select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageLengthSlc = null;\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.tgtId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Number of rows contained in a page\r\n * @type {Number}\r\n */\r\n this.pageLength = defaultsNb(f.length, 10);\r\n\r\n /**\r\n * ID of custom container element for the results per page selector\r\n * @type {String}\r\n */\r\n this.pageLengthTgtId = defaultsStr(f.results_per_page_target_id, null);\r\n\r\n /**\r\n * Css class for the paging select element\r\n * @type {String}\r\n */\r\n this.pgSlcCssClass = defaultsStr(f.slc_css_class, 'pgSlc');\r\n\r\n /**\r\n * Css class for the paging input element\r\n * @type {String}\r\n */\r\n this.pgInpCssClass = defaultsStr(f.inp_css_class, 'pgNbInp');\r\n\r\n /**\r\n * Label and values for the results per page select, example of usage:\r\n * ['Records: ', [10,25,50,100]]\r\n * @type {Array}\r\n */\r\n this.resultsPerPage = defaultsArr(f.results_per_page, null);\r\n\r\n /**\r\n * Determines if results per page is configured\r\n * @type {Boolean}\r\n */\r\n this.hasResultsPerPage = isArray(this.resultsPerPage);\r\n\r\n /**\r\n * Css class for the results per page select\r\n * @type {String}\r\n */\r\n this.resultsSlcCssClass = defaultsStr(f.results_slc_css_class, 'rspg');\r\n\r\n /**\r\n * Css class for the label preceding results per page select\r\n * @type {String}\r\n */\r\n this.resultsSpanCssClass = defaultsStr(f.results_span_css_class,\r\n 'rspgSpan');\r\n\r\n /**\r\n * Index of the first row of current page\r\n * @type {Number}\r\n * @private\r\n */\r\n this.startPagingRow = 0;\r\n\r\n /**\r\n * Total number of pages\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbPages = 0;\r\n\r\n /**\r\n * Current page number\r\n * @type {Number}\r\n * @private\r\n */\r\n this.currentPageNb = 1;\r\n\r\n /**\r\n * Next page button text\r\n * @type {String}\r\n */\r\n this.btnNextPageText = defaultsStr(f.btn_next_page_text, '>');\r\n\r\n /**\r\n * Previous page button text\r\n * @type {String}\r\n */\r\n this.btnPrevPageText = defaultsStr(f.btn_prev_page_text, '<');\r\n\r\n /**\r\n * Last page button text\r\n * @type {String}\r\n */\r\n this.btnLastPageText = defaultsStr(f.btn_last_page_text, '>|');\r\n\r\n /**\r\n * First page button text\r\n * @type {String}\r\n */\r\n this.btnFirstPageText = defaultsStr(f.btn_first_page_text, '|<');\r\n\r\n /**\r\n * Next page button HTML\r\n * @type {String}\r\n */\r\n this.btnNextPageHtml = defaultsStr(f.btn_next_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Previous page button HTML\r\n * @type {String}\r\n */\r\n this.btnPrevPageHtml = defaultsStr(f.btn_prev_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * First page button HTML\r\n * @type {String}\r\n */\r\n this.btnFirstPageHtml = defaultsStr(f.btn_first_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Last page button HTML\r\n * @type {String}\r\n */\r\n this.btnLastPageHtml = defaultsStr(f.btn_last_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Text preceeding page selector drop-down\r\n * @type {String}\r\n */\r\n this.pageText = defaultsStr(f.page_text, ' Page ');\r\n\r\n /**\r\n * Text after page selector drop-down\r\n * @type {String}\r\n */\r\n this.ofText = defaultsStr(f.of_text, ' of ');\r\n\r\n /**\r\n * Css class for the span containing total number of pages\r\n * @type {String}\r\n */\r\n this.nbPgSpanCssClass = defaultsStr(f.nb_pages_css_class, 'nbpg');\r\n\r\n /**\r\n * Determines if paging buttons are enabled (default: true)\r\n * @type {Boolean}\r\n */\r\n this.hasBtns = defaultsBool(f.btns, true);\r\n\r\n /**\r\n * Defines page selector type, two possible values: 'select', 'input'\r\n * @type {String}\r\n */\r\n this.pageSelectorType = defaultsStr(f.page_selector_type, SELECT);\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, CENTER);\r\n\r\n /**\r\n * Callback fired before the page is changed\r\n * @type {Function}\r\n */\r\n this.onBeforeChangePage = defaultsFn(f.on_before_change_page, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the page is changed\r\n * @type {Function}\r\n */\r\n this.onAfterChangePage = defaultsFn(f.on_after_change_page, EMPTY_FN);\r\n\r\n /**\r\n * Label preciding results per page select\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.slcResultsTxt = null;\r\n /**\r\n * Span containing next page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnNextCont = null;\r\n /**\r\n * Span containing previous page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnPrevCont = null;\r\n /**\r\n * Span containing last page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnLastCont = null;\r\n /**\r\n * Span containing first page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnFirstCont = null;\r\n /**\r\n * Span for tot nb pages\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgCont = null;\r\n /**\r\n * Span preceding pages select (contains 'Page')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgBefore = null;\r\n /**\r\n * Span following pages select (contains ' of ')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgAfter = null;\r\n\r\n let startRow = tf.refRow;\r\n let nrows = tf.getRowsNb(true);\r\n //calculates page nb\r\n this.nbPages = Math.ceil((nrows - startRow) / this.pageLength);\r\n\r\n let o = this;\r\n /**\r\n * Paging DOM events handlers\r\n * @type {String}\r\n * @private\r\n */\r\n this.evt = {\r\n slcIndex() {\r\n return (o.pageSelectorType === SELECT) ?\r\n o.pageSlc.options.selectedIndex :\r\n parseInt(o.pageSlc.value, 10) - 1;\r\n },\r\n nbOpts() {\r\n return (o.pageSelectorType === SELECT) ?\r\n parseInt(o.pageSlc.options.length, 10) - 1 :\r\n (o.nbPages - 1);\r\n },\r\n next() {\r\n let nextIndex = o.evt.slcIndex() < o.evt.nbOpts() ?\r\n o.evt.slcIndex() + 1 : 0;\r\n o.changePage(nextIndex);\r\n },\r\n prev() {\r\n let prevIndex = o.evt.slcIndex() > 0 ?\r\n o.evt.slcIndex() - 1 : o.evt.nbOpts();\r\n o.changePage(prevIndex);\r\n },\r\n last() {\r\n o.changePage(o.evt.nbOpts());\r\n },\r\n first() {\r\n o.changePage(0);\r\n },\r\n _detectKey(e) {\r\n if (isKeyPressed(e, [ENTER_KEY])) {\r\n if (tf.sorted) {\r\n tf.filter();\r\n o.changePage(o.evt.slcIndex());\r\n } else {\r\n o.changePage();\r\n }\r\n this.blur();\r\n }\r\n },\r\n slcPagesChange: null,\r\n nextEvt: null,\r\n prevEvt: null,\r\n lastEvt: null,\r\n firstEvt: null\r\n };\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n let slcPages;\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-feature', this, !isNull(this.tgtId));\r\n\r\n // Check resultsPerPage is in expected format and initialise the\r\n // results per page component\r\n if (this.hasResultsPerPage) {\r\n if (this.resultsPerPage.length < 2) {\r\n this.hasResultsPerPage = false;\r\n } else {\r\n this.pageLength = this.resultsPerPage[1][0];\r\n this.setResultsPerPage();\r\n }\r\n }\r\n\r\n evt.slcPagesChange = (event) => {\r\n let slc = event.target;\r\n this.changePage(slc.selectedIndex);\r\n };\r\n\r\n // Paging drop-down list selector\r\n if (this.pageSelectorType === SELECT) {\r\n slcPages = createElm(SELECT);\r\n slcPages.className = this.pgSlcCssClass;\r\n addEvt(slcPages, 'change', evt.slcPagesChange);\r\n }\r\n\r\n // Paging input selector\r\n if (this.pageSelectorType === INPUT) {\r\n slcPages = createElm(INPUT, ['value', this.currentPageNb]);\r\n slcPages.className = this.pgInpCssClass;\r\n addEvt(slcPages, 'keypress', evt._detectKey);\r\n }\r\n\r\n // btns containers\r\n let btnNextSpan = createElm('span');\r\n let btnPrevSpan = createElm('span');\r\n let btnLastSpan = createElm('span');\r\n let btnFirstSpan = createElm('span');\r\n\r\n if (this.hasBtns) {\r\n // Next button\r\n if (!this.btnNextPageHtml) {\r\n let btnNext = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnNextPageText],\r\n ['title', 'Next']\r\n );\r\n btnNext.className = this.btnCssClass;\r\n addEvt(btnNext, 'click', evt.next);\r\n btnNextSpan.appendChild(btnNext);\r\n } else {\r\n btnNextSpan.innerHTML = this.btnNextPageHtml;\r\n addEvt(btnNextSpan, 'click', evt.next);\r\n }\r\n // Previous button\r\n if (!this.btnPrevPageHtml) {\r\n let btnPrev = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnPrevPageText],\r\n ['title', 'Previous']\r\n );\r\n btnPrev.className = this.btnCssClass;\r\n addEvt(btnPrev, 'click', evt.prev);\r\n btnPrevSpan.appendChild(btnPrev);\r\n } else {\r\n btnPrevSpan.innerHTML = this.btnPrevPageHtml;\r\n addEvt(btnPrevSpan, 'click', evt.prev);\r\n }\r\n // Last button\r\n if (!this.btnLastPageHtml) {\r\n let btnLast = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnLastPageText],\r\n ['title', 'Last']\r\n );\r\n btnLast.className = this.btnCssClass;\r\n addEvt(btnLast, 'click', evt.last);\r\n btnLastSpan.appendChild(btnLast);\r\n } else {\r\n btnLastSpan.innerHTML = this.btnLastPageHtml;\r\n addEvt(btnLastSpan, 'click', evt.last);\r\n }\r\n // First button\r\n if (!this.btnFirstPageHtml) {\r\n let btnFirst = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnFirstPageText],\r\n ['title', 'First']\r\n );\r\n btnFirst.className = this.btnCssClass;\r\n addEvt(btnFirst, 'click', evt.first);\r\n btnFirstSpan.appendChild(btnFirst);\r\n } else {\r\n btnFirstSpan.innerHTML = this.btnFirstPageHtml;\r\n addEvt(btnFirstSpan, 'click', evt.first);\r\n }\r\n }\r\n\r\n // paging elements (buttons+drop-down list) are added to defined element\r\n let targetEl = !this.tgtId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.tgtId);\r\n targetEl.appendChild(btnFirstSpan);\r\n targetEl.appendChild(btnPrevSpan);\r\n\r\n let pgBeforeSpan = createElm('span');\r\n pgBeforeSpan.appendChild(createText(this.pageText));\r\n pgBeforeSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgBeforeSpan);\r\n targetEl.appendChild(slcPages);\r\n let pgAfterSpan = createElm('span');\r\n pgAfterSpan.appendChild(createText(this.ofText));\r\n pgAfterSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgAfterSpan);\r\n let pgSpan = createElm('span');\r\n pgSpan.className = this.nbPgSpanCssClass;\r\n pgSpan.appendChild(createText(' ' + this.nbPages + ' '));\r\n targetEl.appendChild(pgSpan);\r\n targetEl.appendChild(btnNextSpan);\r\n targetEl.appendChild(btnLastSpan);\r\n\r\n this.btnNextCont = btnNextSpan;\r\n this.btnPrevCont = btnPrevSpan;\r\n this.btnLastCont = btnLastSpan;\r\n this.btnFirstCont = btnFirstSpan;\r\n this.pgCont = pgSpan;\r\n this.pgBefore = pgBeforeSpan;\r\n this.pgAfter = pgAfterSpan;\r\n this.pageSlc = slcPages;\r\n\r\n this.setPagingInfo();\r\n\r\n if (!tf.fltGrid) {\r\n tf.validateAllRows();\r\n this.setPagingInfo(tf.validRowsIndex);\r\n }\r\n\r\n this.emitter.on(['after-filtering'], bound(this.resetPagingInfo, this));\r\n this.emitter.on(['change-page'], bound(this.changePageHandler, this));\r\n this.emitter.on(['change-page-results'],\r\n bound(this.changePageResultsHandler, this));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Reset paging when filters are already instantiated\r\n * @param {Boolean} filterTable Execute filtering once paging instanciated\r\n */\r\n reset(filterTable = false) {\r\n this.enable();\r\n this.init();\r\n\r\n if (filterTable) {\r\n this.tf.filter();\r\n }\r\n }\r\n\r\n /**\r\n * Reset paging info from scratch after a filtering process\r\n */\r\n resetPagingInfo() {\r\n this.startPagingRow = 0;\r\n this.currentPageNb = 1;\r\n this.setPagingInfo(this.tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Calculate number of pages based on valid rows\r\n * Refresh paging select according to number of pages\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n setPagingInfo(validRows) {\r\n let tf = this.tf;\r\n let cont = !this.tgtId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.tgtId);\r\n\r\n //store valid rows indexes\r\n tf.validRowsIndex = validRows || tf.getValidRows(true);\r\n\r\n //calculate nb of pages\r\n this.nbPages = Math.ceil(tf.validRowsIndex.length / this.pageLength);\r\n //refresh page nb span\r\n this.pgCont.innerHTML = this.nbPages;\r\n //select clearing shortcut\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.innerHTML = '';\r\n }\r\n\r\n if (this.nbPages > 0) {\r\n cont.style.visibility = 'visible';\r\n if (this.pageSelectorType === SELECT) {\r\n for (let z = 0; z < this.nbPages; z++) {\r\n let opt = createOpt(z + 1, z * this.pageLength, false);\r\n this.pageSlc.options[z] = opt;\r\n }\r\n } else {\r\n //input type\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n } else {\r\n /*** if no results paging select and buttons are hidden ***/\r\n cont.style.visibility = 'hidden';\r\n }\r\n this.groupByPage(tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Group table rows by page and display valid rows\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n groupByPage(validRows) {\r\n let tf = this.tf;\r\n let rows = tf.dom().rows;\r\n let startPagingRow = parseInt(this.startPagingRow, 10);\r\n let endPagingRow = startPagingRow + parseInt(this.pageLength, 10);\r\n\r\n //store valid rows indexes\r\n if (validRows) {\r\n tf.validRowsIndex = validRows;\r\n }\r\n\r\n //this loop shows valid rows of current page\r\n for (let h = 0, len = tf.getValidRowsNb(true); h < len; h++) {\r\n let validRowIdx = tf.validRowsIndex[h];\r\n let r = rows[validRowIdx];\r\n let isRowValid = r.getAttribute('validRow');\r\n let rowDisplayed = false;\r\n\r\n if (h >= startPagingRow && h < endPagingRow) {\r\n if (isNull(isRowValid) || Boolean(isRowValid === 'true')) {\r\n r.style.display = '';\r\n rowDisplayed = true;\r\n }\r\n } else {\r\n r.style.display = NONE;\r\n }\r\n this.emitter.emit('row-paged', tf, validRowIdx, h, rowDisplayed);\r\n }\r\n\r\n // broadcast grouping by page\r\n this.emitter.emit('grouped-by-page', tf, this);\r\n }\r\n\r\n /**\r\n * Return the current page number\r\n * @return {Number} Page number\r\n */\r\n getPage() {\r\n return this.currentPageNb;\r\n }\r\n\r\n /**\r\n * Show page defined by passed argument (string or number):\r\n * @param {String}/{Number} cmd possible string values: 'next',\r\n * 'previous', 'last', 'first' or page number as per param\r\n */\r\n setPage(cmd) {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.isEnabled()) {\r\n return;\r\n }\r\n let btnEvt = this.evt,\r\n cmdtype = typeof cmd;\r\n if (cmdtype === 'string') {\r\n switch (cmd.toLowerCase()) {\r\n case 'next':\r\n btnEvt.next();\r\n break;\r\n case 'previous':\r\n btnEvt.prev();\r\n break;\r\n case 'last':\r\n btnEvt.last();\r\n break;\r\n case 'first':\r\n btnEvt.first();\r\n break;\r\n default:\r\n btnEvt.next();\r\n break;\r\n }\r\n }\r\n else if (cmdtype === 'number') {\r\n this.changePage(cmd - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Generates UI elements for the number of results per page drop-down\r\n */\r\n setResultsPerPage() {\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.pageLengthSlc || !this.resultsPerPage) {\r\n return;\r\n }\r\n\r\n evt.slcResultsChange = (ev) => {\r\n this.onChangeResultsPerPage();\r\n ev.target.blur();\r\n };\r\n\r\n let slcR = createElm(SELECT);\r\n slcR.className = this.resultsSlcCssClass;\r\n let slcRText = this.resultsPerPage[0],\r\n slcROpts = this.resultsPerPage[1];\r\n let slcRSpan = createElm('span');\r\n slcRSpan.className = this.resultsSpanCssClass;\r\n\r\n // results per page select is added to external element\r\n let targetEl = !this.pageLengthTgtId ?\r\n tf.feature('toolbar').container(RIGHT) :\r\n elm(this.pageLengthTgtId);\r\n slcRSpan.appendChild(createText(slcRText));\r\n\r\n let help = tf.feature('help');\r\n if (help && help.btn) {\r\n help.btn.parentNode.insertBefore(slcRSpan, help.btn);\r\n help.btn.parentNode.insertBefore(slcR, help.btn);\r\n } else {\r\n targetEl.appendChild(slcRSpan);\r\n targetEl.appendChild(slcR);\r\n }\r\n\r\n for (let r = 0; r < slcROpts.length; r++) {\r\n let currOpt = new Option(slcROpts[r], slcROpts[r], false, false);\r\n slcR.options[r] = currOpt;\r\n }\r\n addEvt(slcR, 'change', evt.slcResultsChange);\r\n this.slcResultsTxt = slcRSpan;\r\n this.pageLengthSlc = slcR;\r\n }\r\n\r\n /**\r\n * Remove number of results per page UI elements\r\n */\r\n removeResultsPerPage() {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.pageLengthSlc ||\r\n !this.resultsPerPage) {\r\n return;\r\n }\r\n if (this.pageLengthSlc) {\r\n removeElm(this.pageLengthSlc);\r\n }\r\n if (this.slcResultsTxt) {\r\n removeElm(this.slcResultsTxt);\r\n }\r\n this.pageLengthSlc = null;\r\n this.slcResultsTxt = null;\r\n }\r\n\r\n /**\r\n * Change the page based on passed index\r\n * @param {Number} index Index of the page (0-n)\r\n */\r\n changePage(index) {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-page-change', tf, (index + 1));\r\n\r\n if (index === null) {\r\n index = this.pageSelectorType === SELECT ?\r\n this.pageSlc.options.selectedIndex : this.pageSlc.value - 1;\r\n }\r\n if (index >= 0 && index <= (this.nbPages - 1)) {\r\n this.onBeforeChangePage(this, (index + 1));\r\n\r\n this.currentPageNb = parseInt(index, 10) + 1;\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.options[index].selected = true;\r\n } else {\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n this.startPagingRow = (this.pageSelectorType === SELECT) ?\r\n this.pageSlc.value : (index * this.pageLength);\r\n\r\n this.groupByPage();\r\n\r\n this.onAfterChangePage(this, (index + 1));\r\n }\r\n\r\n this.emitter.emit('after-page-change', tf, (index + 1));\r\n }\r\n\r\n /**\r\n * Change the number of results per page based on passed value\r\n * @param {String} val The number of results per page\r\n */\r\n changeResultsPerPage(val) {\r\n if (!this.isEnabled() || isNaN(val)) {\r\n return;\r\n }\r\n\r\n this.pageLengthSlc.value = val;\r\n this.onChangeResultsPerPage();\r\n }\r\n\r\n /**\r\n * Change rows according to page results drop-down\r\n */\r\n onChangeResultsPerPage() {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled() || tf.getValidRowsNb() === 0) {\r\n return;\r\n }\r\n\r\n let {\r\n pageLengthSlc: slcR, pageSelectorType, pageSlc, emitter\r\n } = this;\r\n\r\n emitter.emit('before-page-length-change', tf);\r\n\r\n let slcIndex = slcR.selectedIndex;\r\n let slcPagesSelIndex = (pageSelectorType === SELECT) ?\r\n pageSlc.selectedIndex : parseInt(pageSlc.value - 1, 10);\r\n this.pageLength = parseInt(slcR.options[slcIndex].value, 10);\r\n this.startPagingRow = this.pageLength * slcPagesSelIndex;\r\n\r\n if (!isNaN(this.pageLength)) {\r\n if (this.startPagingRow >= tf.nbFilterableRows) {\r\n this.startPagingRow = (tf.nbFilterableRows - this.pageLength);\r\n }\r\n this.setPagingInfo();\r\n\r\n if (pageSelectorType === SELECT) {\r\n let slcIdx = (pageSlc.options.length - 1 <= slcPagesSelIndex) ?\r\n (pageSlc.options.length - 1) :\r\n slcPagesSelIndex;\r\n pageSlc.options[slcIdx].selected = true;\r\n }\r\n }\r\n\r\n emitter.emit('after-page-length-change', tf, this.pageLength);\r\n }\r\n\r\n /**\r\n * Re-set page nb at page re-load\r\n */\r\n resetPage() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page', tf);\r\n let pgNb = tf.feature('store').getPageNb();\r\n if (pgNb !== '') {\r\n this.changePage((pgNb - 1));\r\n }\r\n this.emitter.emit('after-reset-page', tf, pgNb);\r\n }\r\n\r\n /**\r\n * Re-set page length value at page re-load\r\n */\r\n resetPageLength() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page-length', tf);\r\n let pglenIndex = tf.feature('store').getPageLength();\r\n\r\n if (pglenIndex !== '') {\r\n this.pageLengthSlc.options[pglenIndex].selected = true;\r\n this.changeResultsPerPage();\r\n }\r\n this.emitter.emit('after-reset-page-length', tf, pglenIndex);\r\n }\r\n\r\n /** @private */\r\n changePageHandler(tf, pageNumber) {\r\n this.setPage(pageNumber);\r\n }\r\n\r\n /** @private */\r\n changePageResultsHandler(tf, pageLength) {\r\n this.changeResultsPerPage(pageLength);\r\n }\r\n\r\n /**\r\n * Remove paging feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let evt = this.evt;\r\n\r\n if (this.pageSlc) {\r\n if (this.pageSelectorType === SELECT) {\r\n removeEvt(this.pageSlc, 'change', evt.slcPagesChange);\r\n }\r\n else if (this.pageSelectorType === INPUT) {\r\n removeEvt(this.pageSlc, 'keypress', evt._detectKey);\r\n }\r\n removeElm(this.pageSlc);\r\n }\r\n\r\n if (this.btnNextCont) {\r\n removeEvt(this.btnNextCont, 'click', evt.next);\r\n removeElm(this.btnNextCont);\r\n this.btnNextCont = null;\r\n }\r\n\r\n if (this.btnPrevCont) {\r\n removeEvt(this.btnPrevCont, 'click', evt.prev);\r\n removeElm(this.btnPrevCont);\r\n this.btnPrevCont = null;\r\n }\r\n\r\n if (this.btnLastCont) {\r\n removeEvt(this.btnLastCont, 'click', evt.last);\r\n removeElm(this.btnLastCont);\r\n this.btnLastCont = null;\r\n }\r\n\r\n if (this.btnFirstCont) {\r\n removeEvt(this.btnFirstCont, 'click', evt.first);\r\n removeElm(this.btnFirstCont);\r\n this.btnFirstCont = null;\r\n }\r\n\r\n if (this.pgBefore) {\r\n removeElm(this.pgBefore);\r\n this.pgBefore = null;\r\n }\r\n\r\n if (this.pgAfter) {\r\n removeElm(this.pgAfter);\r\n this.pgAfter = null;\r\n }\r\n\r\n if (this.pgCont) {\r\n removeElm(this.pgCont);\r\n this.pgCont = null;\r\n }\r\n\r\n if (this.hasResultsPerPage) {\r\n this.removeResultsPerPage();\r\n }\r\n\r\n this.emitter.off(['after-filtering'],\r\n bound(this.resetPagingInfo, this));\r\n this.emitter.off(['change-page'], bound(this.changePageHandler, this));\r\n this.emitter.off(['change-page-results'],\r\n bound(this.changePageResultsHandler, this));\r\n\r\n this.pageSlc = null;\r\n this.nbPages = 0;\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, elm, removeElm} from '../dom';\r\nimport {isEmpty, EMPTY_FN} from '../types';\r\nimport {NONE} from '../const';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\n\r\n/**\r\n * UI when filtering yields no matches\r\n * @export\r\n * @class NoResults\r\n * @extends {Feature}\r\n */\r\nexport class NoResults extends Feature {\r\n\r\n /**\r\n * Creates an instance of NoResults\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'noResults');\r\n\r\n //configuration object\r\n let f = this.config.no_results_message || {};\r\n\r\n /**\r\n * Text (accepts HTML)\r\n * @type {String}\r\n */\r\n this.content = defaultsStr(f.content, 'No results');\r\n\r\n /**\r\n * Custom container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.customContainer = defaultsStr(f.custom_container, null);\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.customContainerId = defaultsStr(f.custom_container_id, null);\r\n\r\n /**\r\n * Indicates if UI is contained in a external element\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isExternal = !isEmpty(this.customContainer) ||\r\n !isEmpty(this.customContainerId);\r\n\r\n /**\r\n * Css class assigned to container element\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'no-results');\r\n\r\n /**\r\n * Stores container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeShow = defaultsFn(f.on_before_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterShow = defaultsFn(f.on_after_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before the message is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeHide = defaultsFn(f.on_before_hide_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the message is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterHide = defaultsFn(f.on_after_hide_msg, EMPTY_FN);\r\n }\r\n\r\n /**\r\n * Initializes NoResults instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let target = this.customContainer || elm(this.customContainerId) ||\r\n tf.dom();\r\n\r\n //container\r\n let cont = createElm('div');\r\n cont.className = this.cssClass;\r\n cont.innerHTML = this.content;\r\n\r\n if (this.isExternal) {\r\n target.appendChild(cont);\r\n } else {\r\n target.parentNode.insertBefore(cont, target.nextSibling);\r\n }\r\n\r\n this.cont = cont;\r\n\r\n // subscribe to after-filtering event\r\n this.emitter.on(\r\n ['initialized', 'after-filtering'],\r\n () => this.toggle()\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Toggle no results message\r\n */\r\n toggle() {\r\n if (this.tf.getValidRowsNb() > 0) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n /**\r\n * Show no results message\r\n */\r\n show() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeShow(this.tf, this);\r\n\r\n this.setWidth();\r\n this.cont.style.display = 'block';\r\n\r\n this.onAfterShow(this.tf, this);\r\n }\r\n\r\n /**\r\n * Hide no results message\r\n */\r\n hide() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeHide(this.tf, this);\r\n\r\n this.cont.style.display = NONE;\r\n\r\n this.onAfterHide(this.tf, this);\r\n }\r\n\r\n /**\r\n * Sets no results container width\r\n * @private\r\n */\r\n setWidth() {\r\n if (!this.initialized || this.isExternal || !this.isEnabled()) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n if (tf.gridLayout) {\r\n let gridLayout = tf.feature('gridLayout');\r\n this.cont.style.width = gridLayout.headTbl.clientWidth + 'px';\r\n } else {\r\n this.cont.style.width = (tf.dom().tHead ?\r\n tf.dom().tHead.clientWidth :\r\n tf.dom().tBodies[0].clientWidth) + 'px';\r\n }\r\n }\r\n\r\n /** Remove feature */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.cont);\r\n this.cont = null;\r\n // unsubscribe to after-filtering event\r\n this.emitter.off(['after-filtering'], () => this.toggle());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\nimport {addClass, removeClass} from '../dom';\nimport {defaultsStr} from '../settings';\nimport {bound} from '../event';\n\n/**\n * Rows with alternating background color for improved readability\n */\nexport class AlternateRows extends Feature {\n\n /**\n * Creates an instance of AlternateRows.\n *\n * @param {Object} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'alternateRows');\n\n let config = this.config;\n /**\n * Css class for even rows (default: 'even')\n * @type {String}\n */\n this.evenCss = defaultsStr(config.even_row_css_class, 'even');\n\n /**\n * Css class for odd rows (default: 'odd')\n * @type {String}\n */\n this.oddCss = defaultsStr(config.odd_row_css_class, 'odd');\n }\n\n /**\n * Sets alternating rows color\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n this.processAll();\n\n // Subscribe to events\n this.emitter.on(['row-processed', 'row-paged'],\n bound(this.processRowHandler, this));\n this.emitter.on(['column-sorted', 'rows-changed'],\n bound(this.processAll, this));\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\n * Apply background to all valid rows\n */\n processAll() {\n if (!this.isEnabled()) {\n return;\n }\n let tf = this.tf;\n let validRowsIndex = tf.getValidRows(true);\n let indexLen = validRowsIndex.length;\n let idx = 0;\n\n //alternates bg color\n for (let j = 0; j < indexLen; j++) {\n let rowIdx = validRowsIndex[j];\n this.setRowBg(rowIdx, idx);\n idx++;\n }\n }\n\n /**\n * Set/remove row background based on row validation\n * @param {Number} rowIdx Row index\n * @param {Number} arrIdx Array index\n * @param {Boolean} isValid Valid row flag\n */\n processRow(rowIdx, arrIdx, isValid) {\n if (isValid) {\n this.setRowBg(rowIdx, arrIdx);\n } else {\n this.removeRowBg(rowIdx);\n }\n }\n\n /**\n * Sets row background color\n * @param {Number} rowIdx Row index\n * @param {Number} idx Valid rows collection index needed to calculate bg\n * color\n * @private\n */\n setRowBg(rowIdx, idx) {\n if (!this.isEnabled() || isNaN(rowIdx)) {\n return;\n }\n let rows = this.tf.dom().rows;\n let i = isNaN(idx) ? rowIdx : idx;\n this.removeRowBg(rowIdx);\n\n addClass(rows[rowIdx], (i % 2) ? this.evenCss : this.oddCss);\n }\n\n /**\n * Removes row background color\n * @param {Number} idx Row index\n * @private\n */\n removeRowBg(idx) {\n if (isNaN(idx)) {\n return;\n }\n let rows = this.tf.dom().rows;\n removeClass(rows[idx], this.oddCss);\n removeClass(rows[idx], this.evenCss);\n }\n\n /** @private */\n processRowHandler(tf, rowIndex, arrIndex, isValid) {\n this.processRow(rowIndex, arrIndex, isValid);\n }\n\n /**\n * Removes all alternating backgrounds\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n let eachRow = this.tf.eachRow(0);\n eachRow((row, i) => this.removeRowBg(i));\n\n // Unsubscribe to events\n this.emitter.off(['row-processed', 'row-paged'],\n bound(this.processRowHandler, this));\n this.emitter.off(['column-sorted', 'rows-changed'],\n bound(this.processAll, this));\n\n this.initialized = false;\n }\n\n}\n","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {addEvt} from '../event';\r\nimport {defaultsStr} from '../settings';\r\nimport {isNull} from '../types';\r\nimport {RIGHT} from './toolbar';\r\n\r\n/**\r\n * Clear button UI component\r\n */\r\nexport class ClearButton extends Feature {\r\n\r\n /**\r\n * Creates an instance of ClearButton\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'btnReset');\r\n\r\n let f = this.config.btn_reset || {};\r\n\r\n /**\r\n * Container element ID\r\n * @type {String}\r\n */\r\n this.targetId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Text for the clear button\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, null);\r\n\r\n /**\r\n * Css class for reset button\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'reset');\r\n\r\n /**\r\n * Tooltip text for the clear button\r\n * @type {String}\r\n */\r\n this.tooltip = f.tooltip || 'Clear filters';\r\n\r\n /**\r\n * Custom Html string for the clear button\r\n * @type {String}\r\n */\r\n this.html = defaultsStr(f.html,\r\n (!tf.enableIcons || this.text ? null :\r\n ''));\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\r\n\r\n /**\r\n * Clear button container element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Clear button element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.element = null;\r\n }\r\n\r\n /**\r\n * Click event handler for clear button\r\n * @private\r\n */\r\n onClick() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.tf.clearFilters();\r\n }\r\n\r\n /**\r\n * Initialize clear button component\r\n */\r\n init() {\r\n let tf = this.tf;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-feature', this, !isNull(this.targetId));\r\n\r\n let cont = createElm('span');\r\n\r\n let targetEl = !this.targetId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.targetId);\r\n targetEl.appendChild(cont);\r\n\r\n if (!this.html) {\r\n let fltReset = createElm('a', ['href', 'javascript:void(0);']);\r\n fltReset.className = this.cssClass;\r\n fltReset.appendChild(createText(this.text));\r\n cont.appendChild(fltReset);\r\n addEvt(fltReset, 'click', () => this.onClick());\r\n } else {\r\n cont.innerHTML = this.html;\r\n let resetEl = cont.firstChild;\r\n addEvt(resetEl, 'click', () => this.onClick());\r\n }\r\n this.element = cont.firstChild;\r\n this.container = cont;\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Destroy ClearButton instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.element);\r\n removeElm(this.container);\r\n this.element = null;\r\n this.container = null;\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {root} from '../root';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {EMPTY_FN, isNull} from '../types';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\nimport {LEFT} from './toolbar';\r\n\r\nconst EVENTS = [\r\n 'after-filtering',\r\n 'after-populating-filter',\r\n 'after-page-change',\r\n 'after-clearing-filters',\r\n 'after-page-length-change',\r\n 'after-reset-page',\r\n 'after-reset-page-length',\r\n 'after-loading-extensions',\r\n 'after-loading-themes'\r\n];\r\n\r\n/**\r\n * Status bar UI component\r\n * @export\r\n * @class StatusBar\r\n * @extends {Feature}\r\n */\r\nexport class StatusBar extends Feature {\r\n\r\n /**\r\n * Creates an instance of StatusBar\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'statusBar');\r\n\r\n // Configuration object\r\n let f = this.config.status_bar || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Message container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.msgContainer = null;\r\n\r\n /**\r\n * Label container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.labelContainer = null;\r\n\r\n /**\r\n * Text preceding status message\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, '');\r\n\r\n /**\r\n * Css class for container element\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'status');\r\n\r\n /**\r\n * Message visibility duration in milliseconds\r\n * @type {Number}\r\n * @private\r\n */\r\n this.delay = 250;\r\n\r\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeShowMsg = defaultsFn(f.on_before_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterShowMsg = defaultsFn(f.on_after_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Message appearing upon filtering\r\n * @type {String}\r\n */\r\n this.msgFilter = defaultsStr(f.msg_filter, 'Filtering data...');\r\n\r\n /**\r\n * Message appearing when a drop-down filter is populated\r\n * @type {String}\r\n */\r\n this.msgPopulate = defaultsStr(f.msg_populate, 'Populating filter...');\r\n\r\n /**\r\n * Message appearing when a checklist filter is populated\r\n * @type {String}\r\n */\r\n this.msgPopulateCheckList = defaultsStr(f.msg_populate_checklist,\r\n 'Populating list...');\r\n\r\n /**\r\n * Message appearing when a pagination page is changed\r\n * @type {String}\r\n */\r\n this.msgChangePage = defaultsStr(f.msg_change_page,\r\n 'Collecting paging data...');\r\n\r\n /**\r\n * Message appearing when filters are cleared\r\n * @type {String}\r\n */\r\n this.msgClear = defaultsStr(f.msg_clear, 'Clearing filters...');\r\n\r\n /**\r\n * Message appearing when the page length is changed\r\n * @type {String}\r\n */\r\n this.msgChangeResults = defaultsStr(f.msg_change_results,\r\n 'Changing results per page...');\r\n\r\n /**\r\n * Message appearing when the page is re-set\r\n * @type {String}\r\n */\r\n this.msgResetPage = defaultsStr(f.msg_reset_page, 'Re-setting page...');\r\n\r\n /**\r\n * Message appearing when the page length is re-set\r\n * @type {String}\r\n */\r\n this.msgResetPageLength = defaultsStr(f.msg_reset_page_length,\r\n 'Re-setting page length...');\r\n\r\n /**\r\n * Message appearing upon column sorting\r\n * @type {String}\r\n */\r\n this.msgSort = defaultsStr(f.msg_sort, 'Sorting data...');\r\n\r\n /**\r\n * Message appearing when extensions are loading\r\n * @type {String}\r\n */\r\n this.msgLoadExtensions = defaultsStr(f.msg_load_extensions,\r\n 'Loading extensions...');\r\n\r\n /**\r\n * Message appearing when themes are loading\r\n * @type {String}\r\n */\r\n this.msgLoadThemes = defaultsStr(f.msg_load_themes,\r\n 'Loading theme(s)...');\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, LEFT);\r\n }\r\n\r\n /**\r\n * Initializes StatusBar instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let emitter = this.emitter;\r\n\r\n emitter.emit('initializing-feature', this, !isNull(this.targetId));\r\n\r\n // status bar container\r\n let statusDiv = createElm('div');\r\n statusDiv.className = this.cssClass;\r\n\r\n // status bar label\r\n let statusSpan = createElm('span');\r\n // preceding text\r\n let statusSpanText = createElm('span');\r\n statusSpanText.appendChild(createText(this.text));\r\n\r\n // target element container\r\n let targetEl = (!this.targetId) ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.targetId);\r\n\r\n // default container\r\n if (!this.targetId) {\r\n statusDiv.appendChild(statusSpanText);\r\n statusDiv.appendChild(statusSpan);\r\n targetEl.appendChild(statusDiv);\r\n } else {\r\n // custom container, no need to append statusDiv\r\n targetEl.appendChild(statusSpanText);\r\n targetEl.appendChild(statusSpan);\r\n }\r\n\r\n this.container = statusDiv;\r\n this.msgContainer = statusSpan;\r\n this.labelContainer = statusSpanText;\r\n\r\n // subscribe to events\r\n emitter.on(['before-filtering'], () => this.message(this.msgFilter));\r\n emitter.on(['before-populating-filter'],\r\n () => this.message(this.msgPopulate));\r\n emitter.on(['before-page-change'],\r\n () => this.message(this.msgChangePage));\r\n emitter.on(['before-clearing-filters'], () =>\r\n this.message(this.msgClear));\r\n emitter.on(['before-page-length-change'],\r\n () => this.message(this.msgChangeResults));\r\n emitter.on(['before-reset-page'],\r\n () => this.message(this.msgResetPage));\r\n emitter.on(['before-reset-page-length'],\r\n () => this.message(this.msgResetPageLength));\r\n emitter.on(['before-loading-extensions'],\r\n () => this.message(this.msgLoadExtensions));\r\n emitter.on(['before-loading-themes'],\r\n () => this.message(this.msgLoadThemes));\r\n\r\n emitter.on(EVENTS, () => this.message(''));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Display status message\r\n * @param {String} [t=''] Message to be displayed\r\n */\r\n message(t = '') {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n this.onBeforeShowMsg(this.tf, t);\r\n\r\n let d = t === '' ? this.delay : 1;\r\n root.setTimeout(() => {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.msgContainer.innerHTML = t;\r\n\r\n this.onAfterShowMsg(this.tf, t);\r\n }, d);\r\n }\r\n\r\n /**\r\n * Destroy StatusBar instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n this.container.innerHTML = '';\r\n if (!this.targetId) {\r\n removeElm(this.container);\r\n }\r\n this.labelContainer = null;\r\n this.msgContainer = null;\r\n this.container = null;\r\n\r\n // Unsubscribe to events\r\n emitter.off(['before-filtering'], () => this.message(this.msgFilter));\r\n emitter.off(['before-populating-filter'],\r\n () => this.message(this.msgPopulate));\r\n emitter.off(['before-page-change'],\r\n () => this.message(this.msgChangePage));\r\n emitter.off(['before-clearing-filters'],\r\n () => this.message(this.msgClear));\r\n emitter.off(['before-page-length-change'],\r\n () => this.message(this.msgChangeResults));\r\n emitter.off(['before-reset-page'], () =>\r\n this.message(this.msgResetPage));\r\n emitter.off(['before-reset-page-length'],\r\n () => this.message(this.msgResetPageLength));\r\n emitter.off(['before-loading-extensions'],\r\n () => this.message(this.msgLoadExtensions));\r\n emitter.off(['before-loading-themes'],\r\n () => this.message(this.msgLoadThemes));\r\n\r\n emitter.off(EVENTS, () => this.message(''));\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {EMPTY_FN, isNull} from '../types';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\nimport {LEFT} from './toolbar';\r\n\r\n/**\r\n * Rows counter UI component\r\n * @export\r\n * @class RowsCounter\r\n * @extends {Feature}\r\n */\r\nexport class RowsCounter extends Feature {\r\n\r\n /**\r\n * Creates an instance of RowsCounter\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'rowsCounter');\r\n\r\n // TableFilter configuration\r\n let f = this.config.rows_counter || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Container DOM element for label displaying the total number of rows\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.label = null;\r\n\r\n /**\r\n * Text preceding the total number of rows\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, 'Rows: ');\r\n\r\n /**\r\n * Separator symbol appearing between the first and last visible rows of\r\n * current page when paging is enabled. ie: Rows: 31-40 / 70\r\n * @type {String}\r\n */\r\n this.fromToTextSeparator = defaultsStr(f.separator, '-');\r\n\r\n /**\r\n * Separator symbol appearing between the first and last visible rows of\r\n * current page and the total number of filterable rows when paging is\r\n * enabled. ie: Rows: 31-40 / 70\r\n * @type {String}\r\n */\r\n this.overText = defaultsStr(f.over_text, ' / ');\r\n\r\n /**\r\n * Css class for container element\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'tot');\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, LEFT);\r\n\r\n /**\r\n * Callback fired before the counter is refreshed\r\n * @type {Function}\r\n */\r\n this.onBeforeRefreshCounter = defaultsFn(f.on_before_refresh_counter,\r\n EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the counter is refreshed\r\n * @type {Function}\r\n */\r\n this.onAfterRefreshCounter = defaultsFn(f.on_after_refresh_counter,\r\n EMPTY_FN);\r\n }\r\n\r\n /**\r\n * Initializes RowsCounter instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-feature', this, !isNull(this.targetId));\r\n\r\n let tf = this.tf;\r\n\r\n //rows counter container\r\n let countDiv = createElm('div');\r\n countDiv.className = this.cssClass;\r\n //rows counter label\r\n let countSpan = createElm('span');\r\n let countText = createElm('span');\r\n countText.appendChild(createText(this.text));\r\n\r\n // counter is added to defined element\r\n let targetEl = !this.targetId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.targetId);\r\n\r\n //default container: 'lDiv'\r\n if (!this.targetId) {\r\n countDiv.appendChild(countText);\r\n countDiv.appendChild(countSpan);\r\n targetEl.appendChild(countDiv);\r\n } else {\r\n //custom container, no need to append statusDiv\r\n targetEl.appendChild(countText);\r\n targetEl.appendChild(countSpan);\r\n }\r\n this.container = countDiv;\r\n this.label = countSpan;\r\n\r\n // subscribe to events\r\n this.emitter.on(['after-filtering', 'grouped-by-page'],\r\n () => this.refresh(tf.getValidRowsNb()));\r\n this.emitter.on(['rows-changed'], () => this.refresh());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n this.refresh();\r\n\r\n this.emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Refreshes the rows counter\r\n * @param {Number} p Optional parameter the total number of rows to display\r\n */\r\n refresh(p) {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n this.onBeforeRefreshCounter(tf, this.label);\r\n\r\n let totTxt;\r\n if (!tf.paging) {\r\n if (p && p !== '') {\r\n totTxt = p;\r\n } else {\r\n totTxt = tf.getFilterableRowsNb() - tf.nbHiddenRows;\r\n }\r\n } else {\r\n let paging = tf.feature('paging');\r\n if (paging) {\r\n let nbValidRows = tf.getValidRowsNb();\r\n //paging start row\r\n let pagingStartRow = parseInt(paging.startPagingRow, 10) +\r\n ((nbValidRows > 0) ? 1 : 0);\r\n let pagingEndRow =\r\n (pagingStartRow + paging.pageLength) - 1 <=\r\n nbValidRows ?\r\n pagingStartRow + paging.pageLength - 1 :\r\n nbValidRows;\r\n totTxt = pagingStartRow + this.fromToTextSeparator +\r\n pagingEndRow + this.overText + nbValidRows;\r\n }\r\n }\r\n\r\n this.label.innerHTML = totTxt;\r\n this.onAfterRefreshCounter(tf, this.label, totTxt);\r\n }\r\n\r\n /**\r\n * Remove feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n if (!this.targetId && this.container) {\r\n removeElm(this.container);\r\n } else {\r\n elm(this.targetId).innerHTML = '';\r\n }\r\n this.label = null;\r\n this.container = null;\r\n\r\n // unsubscribe to events\r\n this.emitter.off(['after-filtering', 'grouped-by-page'],\r\n () => this.refresh(tf.getValidRowsNb()));\r\n this.emitter.off(['rows-changed'], () => this.refresh());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {addClass, removeClass, hasClass} from '../dom';\r\nimport {EMPTY_FN} from '../types';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\n\r\n/**\r\n * Visual indicator for filtered columns\r\n * @export\r\n * @class MarkActiveColumns\r\n * @extends {Feature}\r\n */\r\nexport class MarkActiveColumns extends Feature {\r\n\r\n /**\r\n * Create an instance of MarkActiveColumns\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'markActiveColumns');\r\n\r\n let config = this.config.mark_active_columns || {};\r\n\r\n /**\r\n * Css class for filtered (active) columns\r\n * @type {String}\r\n */\r\n this.headerCssClass = defaultsStr(config.header_css_class,\r\n 'activeHeader');\r\n\r\n /**\r\n * Css class for filtered (active) column cells\r\n * @type {String}\r\n */\r\n this.cellCssClass = defaultsStr(config.cell_css_class,\r\n 'activeCell');\r\n\r\n /**\r\n * Enable/disable column highlighting\r\n * @type {Boolean}\r\n */\r\n this.highlightColumn = Boolean(config.highlight_column);\r\n\r\n /**\r\n * Callback fired before a column is marked as filtered\r\n * @type {Function}\r\n */\r\n this.onBeforeActiveColumn = defaultsFn(config.on_before_active_column,\r\n EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a column is marked as filtered\r\n * @type {Function}\r\n */\r\n this.onAfterActiveColumn = defaultsFn(config.on_after_active_column,\r\n EMPTY_FN);\r\n }\r\n\r\n /**\r\n * Initialise MarkActiveColumns instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.on(['before-filtering'], () => this.clearActiveColumns());\r\n this.emitter.on(\r\n ['cell-processed'],\r\n (tf, colIndex) => this.markActiveColumn(colIndex)\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Clear filtered columns visual indicator (background color)\r\n */\r\n clearActiveColumns() {\r\n let tf = this.tf;\r\n tf.eachCol((idx) => {\r\n removeClass(tf.getHeaderElement(idx), this.headerCssClass);\r\n\r\n if (this.highlightColumn) {\r\n this.eachColumnCell(idx,\r\n (cell) => removeClass(cell, this.cellCssClass));\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark currently filtered column\r\n * @param {Number} colIndex Column index\r\n */\r\n markActiveColumn(colIndex) {\r\n let tf = this.tf;\r\n let header = tf.getHeaderElement(colIndex);\r\n if (hasClass(header, this.headerCssClass)) {\r\n return;\r\n }\r\n\r\n this.onBeforeActiveColumn(this, colIndex);\r\n\r\n addClass(header, this.headerCssClass);\r\n\r\n if (this.highlightColumn) {\r\n this.eachColumnCell(colIndex,\r\n (cell) => addClass(cell, this.cellCssClass));\r\n }\r\n\r\n this.onAfterActiveColumn(this, colIndex);\r\n }\r\n\r\n /**\r\n * Column cells iterator\r\n * TODO: make public and move into TableFilter if used elsewhere\r\n * @param {Number} colIndex\r\n * @param {Function} fn\r\n * @param {DOMElement} tbl\r\n * @private\r\n */\r\n eachColumnCell(colIndex, fn = EMPTY_FN, tbl = this.tf.dom()) {\r\n // TODO: remove [].forEach when polyfill for PhanthomJs is available\r\n [].forEach.call(\r\n tbl.querySelectorAll(`tbody td:nth-child(${colIndex + 1})`), fn);\r\n }\r\n\r\n /**\r\n * Remove feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.clearActiveColumns();\r\n this.emitter.off(['before-filtering'], () => this.clearActiveColumns());\r\n this.emitter.off(\r\n ['cell-processed'],\r\n (tf, colIndex) => this.markActiveColumn(colIndex)\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {isUndef, EMPTY_FN} from '../types';\r\nimport {createElm, removeElm} from '../dom';\r\nimport {addEvt, cancelEvt, stopEvt, targetEvt, removeEvt} from '../event';\r\nimport {INPUT, NONE, CHECKLIST, MULTIPLE} from '../const';\r\nimport {root} from '../root';\r\nimport {defaultsStr, defaultsBool, defaultsArr, defaultsFn} from '../settings';\r\n\r\n/**\r\n * Pop-up filter component\r\n * @export\r\n * @class PopupFilter\r\n * @extends {Feature}\r\n */\r\nexport class PopupFilter extends Feature {\r\n\r\n /**\r\n * Creates an instance of PopupFilter\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'popupFilters');\r\n\r\n // Configuration object\r\n let f = this.config.popup_filters || {};\r\n\r\n /**\r\n * Close active popup filter upon filtering, enabled by default\r\n * @type {Boolean}\r\n */\r\n this.closeOnFiltering = defaultsBool(f.close_on_filtering, true);\r\n\r\n /**\r\n * Filter icon path\r\n * @type {String}\r\n */\r\n this.iconPath = defaultsStr(f.image, tf.themesPath + 'icn_filter.gif');\r\n\r\n /**\r\n * Active filter icon path\r\n * @type {string}\r\n */\r\n this.activeIconPath = defaultsStr(f.image_active,\r\n tf.themesPath + 'icn_filterActive.gif');\r\n\r\n /**\r\n * HTML for the filter icon\r\n * @type {string}\r\n */\r\n this.iconHtml = defaultsStr(f.image_html,\r\n '\"Column');\r\n\r\n /**\r\n * Css class assigned to the popup container element\r\n * @type {String}\r\n */\r\n this.placeholderCssClass = defaultsStr(f.placeholder_css_class,\r\n 'popUpPlaceholder');\r\n\r\n /**\r\n * Css class assigned to filter container element\r\n * @type {String}\r\n */\r\n this.containerCssClass = defaultsStr(f.div_css_class, 'popUpFilter');\r\n\r\n /**\r\n * Ensure filter's container element width matches column width, enabled\r\n * by default\r\n * @type {Boolean}\r\n */\r\n this.adjustToContainer = defaultsBool(f.adjust_to_container, true);\r\n\r\n /**\r\n * Callback fired before a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onBeforeOpen = defaultsFn(f.on_before_popup_filter_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onAfterOpen = defaultsFn(f.on_after_popup_filter_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onBeforeClose = defaultsFn(f.on_before_popup_filter_close,\r\n EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onAfterClose = defaultsFn(f.on_after_popup_filter_close, EMPTY_FN);\r\n\r\n /**\r\n * Collection of filters spans\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltSpans = [];\r\n\r\n /**\r\n * Collection of filters icons\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIcons = [];\r\n\r\n /**\r\n * Collection of filters icons cached after pop-up filters are removed\r\n * @type {Array}\r\n * @private\r\n */\r\n this.filtersCache = null;\r\n\r\n /**\r\n * Collection of filters containers\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltElms = defaultsArr(this.filtersCache, []);\r\n\r\n /**\r\n * Prefix for pop-up filter container ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxDiv = 'popup_';\r\n\r\n /**\r\n * Column index of popup filter currently active\r\n * @type {Number}\r\n * @private\r\n */\r\n this.activeFilterIdx = -1;\r\n }\r\n\r\n /**\r\n * Click event handler for pop-up filter icon\r\n * @private\r\n */\r\n onClick(evt) {\r\n let elm = targetEvt(evt).parentNode;\r\n let colIndex = parseInt(elm.getAttribute('ci'), 10);\r\n\r\n this.closeAll(colIndex);\r\n this.toggle(colIndex);\r\n\r\n if (this.adjustToContainer) {\r\n let cont = this.fltElms[colIndex],\r\n header = this.tf.getHeaderElement(colIndex),\r\n headerWidth = header.clientWidth * 0.95;\r\n cont.style.width = parseInt(headerWidth, 10) + 'px';\r\n }\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup filter auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n if (this.activeFilterIdx === -1) {\r\n return;\r\n }\r\n let targetElm = targetEvt(evt);\r\n let activeFlt = this.fltElms[this.activeFilterIdx];\r\n let icon = this.fltIcons[this.activeFilterIdx];\r\n\r\n if (icon === targetElm) {\r\n return;\r\n }\r\n\r\n while (targetElm && targetElm !== activeFlt) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== activeFlt) {\r\n this.close(this.activeFilterIdx);\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n // Enable external filters\r\n tf.externalFltIds = [''];\r\n\r\n // Override filters row index supplied by configuration\r\n tf.filtersRowIndex = 0;\r\n\r\n // Override headers row index if no grouped headers\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.headersRow <= 1 && isNaN(tf.config().headers_row_index)) {\r\n tf.headersRow = 0;\r\n }\r\n\r\n // Adjust headers row index for grid-layout mode\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.gridLayout) {\r\n tf.headersRow--;\r\n this.buildIcons();\r\n }\r\n\r\n // subscribe to events\r\n this.emitter.on(['before-filtering'], () => this.setIconsState());\r\n this.emitter.on(['after-filtering'], () => this.closeAll());\r\n this.emitter.on(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.on(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.on(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset previously destroyed feature\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n this.buildIcons();\r\n this.buildAll();\r\n }\r\n\r\n /**\r\n * Build all filters icons\r\n */\r\n buildIcons() {\r\n let tf = this.tf;\r\n\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n tf.headersRow++;\r\n\r\n tf.eachCol(\r\n (i) => {\r\n let icon = createElm('span', ['ci', i]);\r\n icon.innerHTML = this.iconHtml;\r\n let header = tf.getHeaderElement(i);\r\n header.appendChild(icon);\r\n addEvt(icon, 'click', (evt) => this.onClick(evt));\r\n this.fltSpans[i] = icon;\r\n this.fltIcons[i] = icon.firstChild;\r\n },\r\n // continue condition function\r\n (i) => tf.getFilterType(i) === NONE\r\n );\r\n }\r\n\r\n /**\r\n * Build all pop-up filters elements\r\n */\r\n buildAll() {\r\n for (let i = 0; i < this.filtersCache.length; i++) {\r\n this.build(i, this.filtersCache[i]);\r\n }\r\n }\r\n\r\n /**\r\n * Build a specified pop-up filter elements\r\n * @param {Number} colIndex Column index\r\n * @param {Object} div Optional container DOM element\r\n */\r\n build(colIndex, div) {\r\n let tf = this.tf;\r\n let contId = `${this.prfxDiv}${tf.id}_${colIndex}`;\r\n let placeholder = createElm('div', ['class', this.placeholderCssClass]);\r\n let cont = div ||\r\n createElm('div', ['id', contId], ['class', this.containerCssClass]);\r\n tf.externalFltIds[colIndex] = cont.id;\r\n placeholder.appendChild(cont);\r\n\r\n let header = tf.getHeaderElement(colIndex);\r\n header.insertBefore(placeholder, header.firstChild);\r\n addEvt(cont, 'click', (evt) => stopEvt(evt));\r\n this.fltElms[colIndex] = cont;\r\n }\r\n\r\n /**\r\n * Toggle visibility of specified filter\r\n * @param {Number} colIndex Column index\r\n */\r\n toggle(colIndex) {\r\n if (!this.isOpen(colIndex)) {\r\n this.open(colIndex);\r\n } else {\r\n this.close(colIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Open popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n open(colIndex) {\r\n let tf = this.tf,\r\n container = this.fltElms[colIndex];\r\n\r\n this.onBeforeOpen(this, container, colIndex);\r\n\r\n container.style.display = 'block';\r\n this.activeFilterIdx = colIndex;\r\n addEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n if (tf.getFilterType(colIndex) === INPUT) {\r\n let flt = tf.getFilterElement(colIndex);\r\n if (flt) {\r\n flt.focus();\r\n }\r\n }\r\n\r\n this.onAfterOpen(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Close popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n close(colIndex) {\r\n let container = this.fltElms[colIndex];\r\n\r\n this.onBeforeClose(this, container, colIndex);\r\n\r\n container.style.display = NONE;\r\n if (this.activeFilterIdx === colIndex) {\r\n this.activeFilterIdx = -1;\r\n }\r\n removeEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n this.onAfterClose(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Check if popup filter for specified column is open\r\n * @param {Number} colIndex Column index\r\n * @returns {Boolean}\r\n */\r\n isOpen(colIndex) {\r\n return this.fltElms[colIndex].style.display === 'block';\r\n }\r\n\r\n /**\r\n * Close all filters excepted for the specified one if any\r\n * @param {Number} exceptIdx Column index of the filter to not close\r\n */\r\n closeAll(exceptIdx) {\r\n // Do not close filters only if argument is undefined and close on\r\n // filtering option is disabled\r\n if (isUndef(exceptIdx) && !this.closeOnFiltering) {\r\n return;\r\n }\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n if (i === exceptIdx) {\r\n continue;\r\n }\r\n let fltType = this.tf.getFilterType(i);\r\n let isMultipleFilter =\r\n (fltType === CHECKLIST || fltType === MULTIPLE);\r\n\r\n // Always hide all single selection filter types but hide multiple\r\n // selection filter types only if index set\r\n if (!isMultipleFilter || !isUndef(exceptIdx)) {\r\n this.close(i);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Build all the icons representing the pop-up filters\r\n */\r\n setIconsState() {\r\n for (let i = 0; i < this.fltIcons.length; i++) {\r\n this.changeState(i, false);\r\n }\r\n }\r\n\r\n /**\r\n * Apply specified icon state\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} active Apply active state\r\n */\r\n changeState(colIndex, active) {\r\n let icon = this.fltIcons[colIndex];\r\n if (icon) {\r\n icon.src = active ? this.activeIconPath : this.iconPath;\r\n }\r\n }\r\n\r\n /**\r\n * Remove pop-up filters\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.filtersCache = [];\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n let container = this.fltElms[i],\r\n placeholder = container.parentNode,\r\n icon = this.fltSpans[i],\r\n iconImg = this.fltIcons[i];\r\n if (container) {\r\n removeElm(container);\r\n this.filtersCache[i] = container;\r\n }\r\n container = null;\r\n if (placeholder) {\r\n removeElm(placeholder);\r\n }\r\n placeholder = null;\r\n if (icon) {\r\n removeElm(icon);\r\n }\r\n icon = null;\r\n if (iconImg) {\r\n removeElm(iconImg);\r\n }\r\n iconImg = null;\r\n }\r\n this.fltElms = [];\r\n this.fltSpans = [];\r\n this.fltIcons = [];\r\n\r\n // TODO: expose an API to handle external filter IDs\r\n this.tf.externalFltIds = [];\r\n\r\n // unsubscribe to events\r\n this.emitter.off(['before-filtering'], () => this.setIconsState());\r\n this.emitter.off(['after-filtering'], () => this.closeAll());\r\n this.emitter.off(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.off(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.off(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n","import {createText, createElm, getText} from '../dom';\r\nimport {isArray} from '../types';\r\nimport {rgxEsc} from '../string';\r\nimport {defaultsStr} from '../settings';\r\n\r\n/**\r\n * Highlight matched keywords upon filtering\r\n *\r\n * @export\r\n * @class HighlightKeyword\r\n */\r\nexport class HighlightKeyword {\r\n\r\n /**\r\n * Creates an instance of HighlightKeyword\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n let f = tf.config();\r\n\r\n /**\r\n * Css class for highlighted term\r\n * @type {String}\r\n */\r\n this.highlightCssClass = defaultsStr(f.highlight_css_class, 'keyword');\r\n\r\n /**\r\n * TableFilter instance\r\n * @type {TableFilter}\r\n */\r\n this.tf = tf;\r\n\r\n /**\r\n * TableFilter's emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = tf.emitter;\r\n }\r\n\r\n /**\r\n * Initializes HighlightKeyword instance\r\n */\r\n init() {\r\n this.emitter.on(\r\n ['before-filtering', 'destroy'],\r\n () => this.unhighlightAll()\r\n );\r\n this.emitter.on(\r\n ['highlight-keyword'],\r\n (tf, cell, term) => this._processTerm(cell, term)\r\n );\r\n }\r\n\r\n /**\r\n * Highlight occurences of searched term in passed node\r\n * @param {Node} node\r\n * @param {String} term Searched term\r\n * @param {String} cssClass Css class name\r\n *\r\n * TODO: refactor this method\r\n */\r\n highlight(node, term, cssClass) {\r\n // Iterate into this nodes childNodes\r\n if (node.hasChildNodes) {\r\n let children = node.childNodes;\r\n for (let i = 0; i < children.length; i++) {\r\n this.highlight(children[i], term, cssClass);\r\n }\r\n }\r\n\r\n if (node.nodeType === 3) {\r\n let nodeVal = node.nodeValue.toLowerCase();\r\n let termIdx = nodeVal.indexOf(term.toLowerCase());\r\n\r\n if (termIdx !== -1) {\r\n let pn = node.parentNode;\r\n if (pn && pn.className !== cssClass) {\r\n // term not highlighted yet\r\n let nv = node.nodeValue,\r\n // Create a load of replacement nodes\r\n before = createText(nv.substr(0, termIdx)),\r\n value = nv.substr(termIdx, term.length),\r\n after = createText(nv.substr(termIdx + term.length)),\r\n text = createText(value),\r\n container = createElm('span');\r\n container.className = cssClass;\r\n container.appendChild(text);\r\n pn.insertBefore(before, node);\r\n pn.insertBefore(container, node);\r\n pn.insertBefore(after, node);\r\n pn.removeChild(node);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Removes highlight to nodes matching passed string\r\n * @param {String} term\r\n * @param {String} cssClass Css class to remove\r\n */\r\n unhighlight(term, cssClass) {\r\n let highlightedNodes = this.tf.dom().querySelectorAll(`.${cssClass}`);\r\n for (let i = 0; i < highlightedNodes.length; i++) {\r\n let n = highlightedNodes[i];\r\n let nodeVal = getText(n);\r\n\r\n if (nodeVal.toLowerCase().indexOf(term.toLowerCase()) !== -1) {\r\n let parentNode = n.parentNode;\r\n parentNode.replaceChild(createText(nodeVal), n);\r\n parentNode.normalize();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear all occurrences of highlighted nodes\r\n */\r\n unhighlightAll() {\r\n if (!this.tf.highlightKeywords) {\r\n return;\r\n }\r\n // iterate filters values to unhighlight all values\r\n this.tf.getFiltersValue().forEach((val) => {\r\n if (isArray(val)) {\r\n val.forEach((item) =>\r\n this.unhighlight(item, this.highlightCssClass));\r\n } else {\r\n this.unhighlight(val, this.highlightCssClass);\r\n }\r\n });\r\n }\r\n\r\n /** Remove feature */\r\n destroy() {\r\n this.emitter.off(\r\n ['before-filtering', 'destroy'],\r\n () => this.unhighlightAll()\r\n );\r\n this.emitter.off(\r\n ['highlight-keyword'],\r\n (tf, cell, term) => this._processTerm(cell, term)\r\n );\r\n }\r\n\r\n /**\r\n * Ensure filtering operators are handled before highlighting any match\r\n * @param {any} Table cell to look searched term into\r\n * @param {any} Searched termIdx\r\n */\r\n _processTerm(cell, term) {\r\n let tf = this.tf;\r\n let reLk = new RegExp(rgxEsc(tf.lkOperator));\r\n let reEq = new RegExp(tf.eqOperator);\r\n let reSt = new RegExp(tf.stOperator);\r\n let reEn = new RegExp(tf.enOperator);\r\n let reLe = new RegExp(tf.leOperator);\r\n let reGe = new RegExp(tf.geOperator);\r\n let reL = new RegExp(tf.lwOperator);\r\n let reG = new RegExp(tf.grOperator);\r\n let reD = new RegExp(tf.dfOperator);\r\n\r\n term = term\r\n .replace(reLk, '')\r\n .replace(reEq, '')\r\n .replace(reSt, '')\r\n .replace(reEn, '');\r\n\r\n if (reLe.test(term) || reGe.test(term) || reL.test(term) ||\r\n reG.test(term) || reD.test(term)) {\r\n term = getText(cell);\r\n }\r\n\r\n if (term === '') {\r\n return;\r\n }\r\n\r\n this.highlight(cell, term, this.highlightCssClass);\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {EMPTY_FN} from '../types';\r\nimport {root} from '../root';\r\nimport {NONE} from '../const';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\n\r\nconst EVENTS = [\r\n 'before-filtering',\r\n 'before-populating-filter',\r\n 'before-page-change',\r\n 'before-clearing-filters',\r\n 'before-page-length-change',\r\n 'before-reset-page',\r\n 'before-reset-page-length',\r\n 'before-loading-extensions',\r\n 'before-loading-themes'\r\n];\r\n\r\n/**\r\n * Activity indicator\r\n *\r\n * @export\r\n * @class Loader\r\n * @extends {Feature}\r\n */\r\nexport class Loader extends Feature {\r\n\r\n /**\r\n * Creates an instance of Loader.\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'loader');\r\n\r\n let f = this.config.loader || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Loader container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Text displayed when indicator is visible\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, 'Loading...');\r\n\r\n /**\r\n * Custom HTML injected in Loader's container element\r\n * @type {String}\r\n */\r\n this.html = defaultsStr(f.html, null);\r\n\r\n /**\r\n * Css class for Loader's container element\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'loader');\r\n\r\n /**\r\n * Close delay in milliseconds\r\n * @type {Number}\r\n */\r\n this.closeDelay = 250;\r\n\r\n /**\r\n * Callback fired when loader is displayed\r\n * @type {Function}\r\n */\r\n this.onShow = defaultsFn(f.on_show_loader, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired when loader is closed\r\n * @type {Function}\r\n */\r\n this.onHide = defaultsFn(f.on_hide_loader, EMPTY_FN);\r\n }\r\n\r\n /**\r\n * Initializes Loader instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let emitter = this.emitter;\r\n\r\n let containerDiv = createElm('div');\r\n containerDiv.className = this.cssClass;\r\n\r\n let targetEl = !this.targetId ?\r\n tf.dom().parentNode : elm(this.targetId);\r\n if (!this.targetId) {\r\n targetEl.insertBefore(containerDiv, tf.dom());\r\n } else {\r\n targetEl.appendChild(containerDiv);\r\n }\r\n this.cont = containerDiv;\r\n if (!this.html) {\r\n this.cont.appendChild(createText(this.text));\r\n } else {\r\n this.cont.innerHTML = this.html;\r\n }\r\n\r\n this.show(NONE);\r\n\r\n // Subscribe to events\r\n emitter.on(EVENTS, () => this.show(''));\r\n emitter.on(EVENTS, () => this.show(NONE));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Shows or hides activity indicator\r\n * @param {String} Two possible values: '' or 'none'\r\n */\r\n show(p) {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n let displayLoader = () => {\r\n if (!this.cont) {\r\n return;\r\n }\r\n if (p !== NONE) {\r\n this.onShow(this);\r\n }\r\n this.cont.style.display = p;\r\n if (p === NONE) {\r\n this.onHide(this);\r\n }\r\n };\r\n\r\n let t = p === NONE ? this.closeDelay : 1;\r\n root.setTimeout(displayLoader, t);\r\n }\r\n\r\n /**\r\n * Removes feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n // Unsubscribe to events\r\n emitter.off(EVENTS, () => this.show(''));\r\n emitter.off(EVENTS, () => this.show(NONE));\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, removeElm, elm, tag} from '../dom';\r\nimport {addEvt, targetEvt} from '../event';\r\nimport {contains} from '../string';\r\nimport {NONE} from '../const';\r\nimport {\r\n defaultsBool, defaultsStr, defaultsNb, defaultsArr\r\n} from '../settings';\r\n\r\n/**\r\n * Grid layout, table with fixed headers\r\n */\r\nexport class GridLayout extends Feature {\r\n\r\n /**\r\n * Creates an instance of GridLayout\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'gridLayout');\r\n\r\n let f = this.config.grid_layout || {};\r\n\r\n /**\r\n * Grid-layout container width as CSS string\r\n * @type {String}\r\n */\r\n this.width = defaultsStr(f.width, null);\r\n\r\n /**\r\n * Grid-layout container height as CSS string\r\n * @type {String}\r\n */\r\n this.height = defaultsStr(f.height, null);\r\n\r\n /**\r\n * Css class for main container element\r\n * @type {String}\r\n */\r\n this.mainContCssClass = defaultsStr(f.cont_css_class, 'grd_Cont');\r\n\r\n /**\r\n * Css class for body table container element\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.tbl_cont_css_class, 'grd_tblCont');\r\n\r\n /**\r\n * Css class for headers table container element\r\n * @type {String}\r\n */\r\n this.headContCssClass = defaultsStr(f.tbl_head_css_class,\r\n 'grd_headTblCont');\r\n\r\n /**\r\n * Css class for toolbar container element (rows counter, paging etc.)\r\n * @type {String}\r\n */\r\n this.infDivCssClass = defaultsStr(f.inf_grid_css_class, 'grd_inf');\r\n\r\n /**\r\n * Index of the headers row, default: 0\r\n * @type {Number}\r\n */\r\n this.headRowIndex = defaultsNb(f.headers_row_index, 0);\r\n\r\n /**\r\n * Collection of the header row indexes to be moved into headers table\r\n * @type {Array}\r\n */\r\n this.headRows = defaultsArr(f.headers_rows, [0]);\r\n\r\n /**\r\n * Enable or disable column filters generation, default: true\r\n * @type {Boolean}\r\n */\r\n this.filters = defaultsBool(f.filters, true);\r\n\r\n /**\r\n * Enable or disable column headers, default: false\r\n * @type {Boolean}\r\n */\r\n this.noHeaders = Boolean(f.no_headers);\r\n\r\n /**\r\n * Grid-layout default column widht as CSS string\r\n * @type {String}\r\n */\r\n this.defaultColWidth = defaultsStr(f.default_col_width, '100px');\r\n\r\n /**\r\n * List of column elements\r\n * @type {Array}\r\n * @private\r\n */\r\n this.colElms = [];\r\n\r\n /**\r\n * Prefix for grid-layout filter's cell ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxGridFltTd = '_td_';\r\n\r\n /**\r\n * Prefix for grid-layout header's cell ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxGridTh = 'tblHeadTh_';\r\n\r\n /**\r\n * Mark-up of original HTML table\r\n * @type {String}\r\n * @private\r\n */\r\n this.sourceTblHtml = tf.dom().outerHTML;\r\n\r\n /**\r\n * Indicates if working table has column elements\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.tblHasColTag = tag(tf.dom(), 'col').length > 0 ? true : false;\r\n\r\n /**\r\n * Main container element\r\n * @private\r\n */\r\n this.tblMainCont = null;\r\n\r\n /**\r\n * Table container element\r\n * @private\r\n */\r\n this.tblCont = null;\r\n\r\n /**\r\n * Headers' table container element\r\n * @private\r\n */\r\n this.headTblCont = null;\r\n\r\n /**\r\n * Headers' table element\r\n * @private\r\n */\r\n this.headTbl = null;\r\n\r\n // filters flag at TF level\r\n tf.fltGrid = this.filters;\r\n }\r\n\r\n /**\r\n * Generates a grid with fixed headers\r\n * TODO: reduce size of init by extracting single purposed methods\r\n */\r\n init() {\r\n let tf = this.tf;\r\n let tbl = tf.dom();\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // Override relevant TableFilter properties\r\n this.setOverrides();\r\n\r\n // Assign default column widths\r\n this.setDefaultColWidths();\r\n\r\n //Main container: it will contain all the elements\r\n this.tblMainCont = this.createContainer(\r\n 'div', this.mainContCssClass);\r\n if (this.width) {\r\n this.tblMainCont.style.width = this.width;\r\n }\r\n tbl.parentNode.insertBefore(this.tblMainCont, tbl);\r\n\r\n //Table container: div wrapping content table\r\n this.tblCont = this.createContainer('div', this.contCssClass);\r\n this.setConfigWidth(this.tblCont);\r\n if (this.height) {\r\n this.tblCont.style.height = this.height;\r\n }\r\n tbl.parentNode.insertBefore(this.tblCont, tbl);\r\n let t = removeElm(tbl);\r\n this.tblCont.appendChild(t);\r\n\r\n //In case table width is expressed in %\r\n if (tbl.style.width === '') {\r\n let tblW = this.initialTableWidth();\r\n tbl.style.width = (contains('%', tblW) ?\r\n tbl.clientWidth : tblW) + 'px';\r\n }\r\n\r\n let d = removeElm(this.tblCont);\r\n this.tblMainCont.appendChild(d);\r\n\r\n //Headers table container: div wrapping headers table\r\n this.headTblCont = this.createContainer(\r\n 'div', this.headContCssClass);\r\n\r\n //Headers table\r\n this.headTbl = createElm('table');\r\n let tH = createElm('tHead');\r\n\r\n //1st row should be headers row, ids are added if not set\r\n //Those ids are used by the sort feature\r\n let hRow = tbl.rows[this.headRowIndex];\r\n let sortTriggers = this.getSortTriggerIds(hRow);\r\n\r\n //Filters row is created\r\n let filtersRow = this.createFiltersRow();\r\n\r\n //Headers row are moved from content table to headers table\r\n this.setHeadersRow(tH);\r\n\r\n this.headTbl.appendChild(tH);\r\n if (tf.filtersRowIndex === 0) {\r\n tH.insertBefore(filtersRow, hRow);\r\n } else {\r\n tH.appendChild(filtersRow);\r\n }\r\n\r\n this.headTblCont.appendChild(this.headTbl);\r\n this.tblCont.parentNode.insertBefore(this.headTblCont, this.tblCont);\r\n\r\n //THead needs to be removed in content table for sort feature\r\n let thead = tag(tbl, 'thead');\r\n if (thead.length > 0) {\r\n tbl.removeChild(thead[0]);\r\n }\r\n\r\n // ensure table layout is always set even if already set in css\r\n // definitions, potentially with custom css class this could be lost\r\n this.headTbl.style.tableLayout = 'fixed';\r\n tbl.style.tableLayout = 'fixed';\r\n\r\n //content table without headers needs col widths to be reset\r\n tf.setColWidths(this.headTbl);\r\n\r\n //Headers container width\r\n this.headTbl.style.width = tbl.style.width;\r\n //\r\n\r\n //scroll synchronisation\r\n addEvt(this.tblCont, 'scroll', (evt) => {\r\n let elm = targetEvt(evt);\r\n let scrollLeft = elm.scrollLeft;\r\n this.headTblCont.scrollLeft = scrollLeft;\r\n //New pointerX calc taking into account scrollLeft\r\n // if(!o.isPointerXOverwritten){\r\n // try{\r\n // o.Evt.pointerX = function(evt){\r\n // let e = evt || global.event;\r\n // let bdScrollLeft = tf_StandardBody().scrollLeft +\r\n // scrollLeft;\r\n // return (e.pageX + scrollLeft) ||\r\n // (e.clientX + bdScrollLeft);\r\n // };\r\n // o.isPointerXOverwritten = true;\r\n // } catch(err) {\r\n // o.isPointerXOverwritten = false;\r\n // }\r\n // }\r\n });\r\n\r\n // TODO: Trigger a custom event handled by sort extension\r\n let sort = tf.extension('sort');\r\n if (sort) {\r\n sort.asyncSort = true;\r\n sort.triggerIds = sortTriggers;\r\n }\r\n\r\n //Col elements are enough to keep column widths after sorting and\r\n //filtering\r\n this.setColumnElements();\r\n\r\n if (tf.popupFilters) {\r\n filtersRow.style.display = NONE;\r\n }\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Overrides TableFilter instance properties to adjust to grid layout mode\r\n * @private\r\n */\r\n setOverrides() {\r\n let tf = this.tf;\r\n tf.refRow = 0;\r\n tf.headersRow = 0;\r\n tf.filtersRowIndex = 1;\r\n }\r\n\r\n /**\r\n * Set grid-layout default column widths if column widths are not defined\r\n * @private\r\n */\r\n setDefaultColWidths() {\r\n let tf = this.tf;\r\n if (tf.colWidths.length > 0) {\r\n return;\r\n }\r\n\r\n tf.eachCol((k) => {\r\n let colW;\r\n let cell = tf.dom().rows[tf.getHeadersRowIndex()].cells[k];\r\n if (cell.width !== '') {\r\n colW = cell.width;\r\n } else if (cell.style.width !== '') {\r\n colW = parseInt(cell.style.width, 10);\r\n } else {\r\n colW = this.defaultColWidth;\r\n }\r\n tf.colWidths[k] = colW;\r\n });\r\n\r\n tf.setColWidths();\r\n }\r\n\r\n /**\r\n * Initial table width\r\n * @returns {Number}\r\n * @private\r\n */\r\n initialTableWidth() {\r\n let tbl = this.tf.dom();\r\n let width; //initial table width\r\n\r\n if (tbl.width !== '') {\r\n width = tbl.width;\r\n }\r\n else if (tbl.style.width !== '') {\r\n width = tbl.style.width;\r\n } else {\r\n width = tbl.clientWidth;\r\n }\r\n return parseInt(width, 10);\r\n }\r\n\r\n /**\r\n * Creates container element\r\n * @param {String} tag Tag name\r\n * @param {String} className Css class to assign to element\r\n * @returns {DOMElement}\r\n * @private\r\n */\r\n createContainer(tag, className) {\r\n let element = createElm(tag);\r\n element.className = className;\r\n return element;\r\n }\r\n\r\n /**\r\n * Creates filters row with cells\r\n * @returns {HTMLTableRowElement}\r\n * @private\r\n */\r\n createFiltersRow() {\r\n let tf = this.tf;\r\n let filtersRow = createElm('tr');\r\n if (this.filters && tf.fltGrid) {\r\n tf.externalFltIds = [];\r\n tf.eachCol((j) => {\r\n let fltTdId = `${tf.prfxFlt + j + this.prfxGridFltTd + tf.id}`;\r\n let cl = createElm(tf.fltCellTag, ['id', fltTdId]);\r\n filtersRow.appendChild(cl);\r\n tf.externalFltIds[j] = fltTdId;\r\n });\r\n }\r\n return filtersRow;\r\n }\r\n\r\n /**\r\n * Generates column elements if necessary and assigns their widths\r\n * @private\r\n */\r\n setColumnElements() {\r\n let tf = this.tf;\r\n let cols = tag(tf.dom(), 'col');\r\n this.tblHasColTag = cols.length > 0;\r\n\r\n for (let k = (tf.getCellsNb() - 1); k >= 0; k--) {\r\n let col;\r\n\r\n if (!this.tblHasColTag) {\r\n col = createElm('col');\r\n tf.dom().insertBefore(col, tf.dom().firstChild);\r\n } else {\r\n col = cols[k];\r\n }\r\n col.style.width = tf.colWidths[k];\r\n this.colElms[k] = col;\r\n }\r\n this.tblHasColTag = true;\r\n }\r\n\r\n /**\r\n * Sets headers row in headers table\r\n * @param {HTMLHeadElement} tableHead Table head element\r\n * @private\r\n */\r\n setHeadersRow(tableHead) {\r\n if (this.noHeaders) {\r\n // Handle table with no headers, assuming here headers do not\r\n // exist\r\n tableHead.appendChild(createElm('tr'));\r\n } else {\r\n // Headers row are moved from content table to headers table\r\n for (let i = 0; i < this.headRows.length; i++) {\r\n let row = this.tf.dom().rows[this.headRows[i]];\r\n tableHead.appendChild(row);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets width defined in configuration to passed element\r\n * @param {DOMElement} element DOM element\r\n * @private\r\n */\r\n setConfigWidth(element) {\r\n if (!this.width) {\r\n return;\r\n }\r\n if (this.width.indexOf('%') !== -1) {\r\n element.style.width = '100%';\r\n } else {\r\n element.style.width = this.width;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a list of header IDs used for specifing external sort triggers\r\n * @param {HTMLTableRowElement} row DOM row element\r\n * @returns {Array} List of IDs\r\n * @private\r\n */\r\n getSortTriggerIds(row) {\r\n let tf = this.tf;\r\n let sortTriggers = [];\r\n tf.eachCol((n) => {\r\n let c = row.cells[n];\r\n let thId = c.getAttribute('id');\r\n if (!thId || thId === '') {\r\n thId = `${this.prfxGridTh + n}_${tf.id}`;\r\n c.setAttribute('id', thId);\r\n }\r\n sortTriggers.push(thId);\r\n });\r\n return sortTriggers;\r\n }\r\n\r\n /**\r\n * Removes the grid layout\r\n */\r\n destroy() {\r\n let tf = this.tf;\r\n let tbl = tf.dom();\r\n\r\n if (!this.initialized) {\r\n return;\r\n }\r\n let t = removeElm(tbl);\r\n this.tblMainCont.parentNode.insertBefore(t, this.tblMainCont);\r\n removeElm(this.tblMainCont);\r\n\r\n this.tblMainCont = null;\r\n this.headTblCont = null;\r\n this.headTbl = null;\r\n this.tblCont = null;\r\n\r\n tbl.outerHTML = this.sourceTblHtml;\r\n //needed to keep reference of table element for future usage\r\n this.tf.tbl = elm(tf.id);\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {root} from './root';\r\n\r\n/**\r\n * Cookie utilities\r\n */\r\n\r\nconst doc = root.document;\r\n\r\nexport default {\r\n\r\n /**\r\n * Write a cookie\r\n * @param {String} name Name of the cookie\r\n * @param {String} value Value of the cookie\r\n * @param {Number} hours Cookie duration in hours\r\n */\r\n write(name, value, hours) {\r\n let expire = '';\r\n if (hours) {\r\n expire = new Date((new Date()).getTime() + hours * 3600000);\r\n expire = '; expires=' + expire.toGMTString();\r\n }\r\n doc.cookie = name + '=' + escape(value) + expire;\r\n },\r\n\r\n /**\r\n * Read a cookie\r\n * @param {String} name Name of the cookie\r\n * @returns {String} Value of the cookie\r\n */\r\n read(name) {\r\n let cookieValue = '',\r\n search = name + '=';\r\n if (doc.cookie.length > 0) {\r\n let cookie = doc.cookie,\r\n offset = cookie.indexOf(search);\r\n if (offset !== -1) {\r\n offset += search.length;\r\n let end = cookie.indexOf(';', offset);\r\n if (end === -1) {\r\n end = cookie.length;\r\n }\r\n cookieValue = unescape(cookie.substring(offset, end));\r\n }\r\n }\r\n return cookieValue;\r\n },\r\n\r\n /**\r\n * Remove a cookie\r\n * @param {String} name Name of the cookie\r\n */\r\n remove(name) {\r\n this.write(name, '', -1);\r\n }\r\n\r\n};\r\n","import Cookie from '../cookie';\r\nimport {root} from '../root';\r\n\r\nconst JSON = root.JSON;\r\nconst localStorage = root.localStorage;\r\nconst location = root.location;\r\n\r\n/**\r\n * Checks if browser has Storage feature\r\n */\r\nexport const hasStorage = () => {\r\n return 'Storage' in root;\r\n};\r\n\r\n/**\r\n * Stores the features state in browser's local storage or cookie\r\n *\r\n * @export\r\n * @class Storage\r\n */\r\nexport class Storage {\r\n\r\n /**\r\n * Creates an instance of Storage\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n constructor(state) {\r\n\r\n /**\r\n * State object\r\n * @type {State}\r\n * @private\r\n */\r\n this.state = state;\r\n\r\n /**\r\n * TableFilter object\r\n * @type {TableFilter}\r\n * @private\r\n */\r\n this.tf = state.tf;\r\n\r\n /**\r\n * Persist with local storage\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.enableLocalStorage = state.enableLocalStorage && hasStorage();\r\n\r\n /**\r\n * Persist with cookie\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.enableCookie = state.enableCookie && !this.enableLocalStorage;\r\n\r\n /**\r\n * Emitter object\r\n * @type {Emitter}\r\n * @private\r\n */\r\n this.emitter = state.emitter;\r\n\r\n /**\r\n * Cookie duration in hours from state object\r\n * @type {Number}\r\n * @private\r\n */\r\n this.duration = state.cookieDuration;\r\n }\r\n\r\n\r\n /**\r\n * Initializes the Storage object\r\n */\r\n init() {\r\n this.emitter.on(['state-changed'], (tf, state) => this.save(state));\r\n this.emitter.on(['initialized'], () => this.sync());\r\n }\r\n\r\n /**\r\n * Persists the features state on state changes\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n save(state) {\r\n if (this.enableLocalStorage) {\r\n localStorage[this.getKey()] = JSON.stringify(state);\r\n } else {\r\n Cookie.write(this.getKey(), JSON.stringify(state), this.duration);\r\n }\r\n }\r\n\r\n /**\r\n * Turns stored string into a State JSON object\r\n *\r\n * @returns {Object} JSON object\r\n */\r\n retrieve() {\r\n let state = null;\r\n if (this.enableLocalStorage) {\r\n state = localStorage[this.getKey()];\r\n } else {\r\n state = Cookie.read(this.getKey());\r\n }\r\n\r\n if (!state) {\r\n return null;\r\n }\r\n return JSON.parse(state);\r\n }\r\n\r\n /**\r\n * Removes persisted state from storage\r\n */\r\n remove() {\r\n if (this.enableLocalStorage) {\r\n localStorage.removeItem(this.getKey());\r\n } else {\r\n Cookie.remove(this.getKey());\r\n }\r\n }\r\n\r\n /**\r\n * Applies persisted state to features\r\n */\r\n sync() {\r\n let state = this.retrieve();\r\n if (!state) {\r\n return;\r\n }\r\n // override current state with persisted one and sync features\r\n this.state.overrideAndSync(state);\r\n }\r\n\r\n /**\r\n * Returns the storage key\r\n *\r\n * @returns {String} Key\r\n */\r\n getKey() {\r\n return JSON.stringify({\r\n key: `${this.tf.prfxTf}_${this.tf.id}`,\r\n path: location.pathname\r\n });\r\n }\r\n\r\n /**\r\n * Release Storage event subscriptions and clear fields\r\n */\r\n destroy() {\r\n this.emitter.off(['state-changed'], (tf, state) => this.save(state));\r\n this.emitter.off(['initialized'], () => this.sync());\r\n\r\n this.remove();\r\n\r\n this.state = null;\r\n this.emitter = null;\r\n }\r\n}\r\n","import {addEvt, removeEvt} from '../event';\r\nimport {root} from '../root';\r\n\r\nconst JSON = root.JSON;\r\nconst location = root.location;\r\nconst decodeURIComponent = root.decodeURIComponent;\r\nconst encodeURIComponent = root.encodeURIComponent;\r\n\r\n/**\r\n * Checks if browser has onhashchange event\r\n */\r\nexport const hasHashChange = () => {\r\n let docMode = root.documentMode;\r\n return ('onhashchange' in root) && (docMode === undefined || docMode > 7);\r\n};\r\n\r\n/**\r\n * Manages state via URL hash changes\r\n *\r\n * @export\r\n * @class Hash\r\n */\r\nexport class Hash {\r\n\r\n /**\r\n * Creates an instance of Hash\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n constructor(state) {\r\n /**\r\n * State object\r\n * @type {State}\r\n */\r\n this.state = state;\r\n\r\n /**\r\n * Cached URL hash\r\n * @type {String} Hash string\r\n * @private\r\n */\r\n this.lastHash = null;\r\n\r\n /**\r\n * Application event emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = state.emitter;\r\n\r\n /**\r\n * Bound sync wrapper for future use\r\n * @private\r\n */\r\n this.boundSync = null;\r\n }\r\n\r\n /**\r\n * Initializes the Hash object\r\n */\r\n init() {\r\n if (!hasHashChange()) {\r\n return;\r\n }\r\n\r\n this.lastHash = location.hash;\r\n //Store a bound sync wrapper\r\n this.boundSync = this.sync.bind(this);\r\n this.emitter.on(['state-changed'], (tf, state) => this.update(state));\r\n this.emitter.on(['initialized'], this.boundSync);\r\n addEvt(root, 'hashchange', this.boundSync);\r\n }\r\n\r\n /**\r\n * Updates the URL hash based on a state change\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n update(state) {\r\n let hash = `#${encodeURIComponent(JSON.stringify(state))}`;\r\n if (this.lastHash === hash) {\r\n return;\r\n }\r\n\r\n location.hash = hash;\r\n this.lastHash = hash;\r\n }\r\n\r\n /**\r\n * Converts a URL hash into a state JSON object\r\n *\r\n * @param {String} hash URL hash fragment\r\n * @returns {Object} JSON object\r\n */\r\n parse(hash) {\r\n if (hash.indexOf('#') === -1) {\r\n return null;\r\n }\r\n hash = hash.substr(1);\r\n return JSON.parse(decodeURIComponent(hash));\r\n }\r\n\r\n /**\r\n * Applies current hash state to features\r\n */\r\n sync() {\r\n let state = this.parse(location.hash);\r\n if (!state) {\r\n return;\r\n }\r\n // override current state with persisted one and sync features\r\n this.state.overrideAndSync(state);\r\n }\r\n\r\n /**\r\n * Release Hash event subscriptions and clear fields\r\n */\r\n destroy() {\r\n this.emitter.off(['state-changed'], (tf, state) => this.update(state));\r\n this.emitter.off(['initialized'], this.boundSync);\r\n removeEvt(root, 'hashchange', this.boundSync);\r\n\r\n this.state = null;\r\n this.lastHash = null;\r\n this.emitter = null;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {Hash} from './hash';\r\nimport {Storage} from './storage';\r\nimport {isEmpty} from '../string';\r\nimport {isArray, isNull, isString, isUndef} from '../types';\r\nimport {defaultsBool, defaultsNb} from '../settings';\r\n\r\n/**\r\n * Features state object persistable with localStorage, cookie or URL hash\r\n *\r\n * @export\r\n * @class State\r\n * @extends {Feature}\r\n */\r\nexport class State extends Feature {\r\n\r\n /**\r\n * Creates an instance of State\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'state');\r\n\r\n let cfg = this.config.state || {};\r\n\r\n /**\r\n * Determines whether state is persisted with URL hash\r\n * @type {Boolean}\r\n */\r\n this.enableHash = cfg === true ||\r\n (isArray(cfg.types) && cfg.types.indexOf('hash') !== -1);\r\n\r\n /**\r\n * Determines whether state is persisted with localStorage\r\n * @type {Boolean}\r\n */\r\n this.enableLocalStorage = isArray(cfg.types) &&\r\n cfg.types.indexOf('local_storage') !== -1;\r\n\r\n /**\r\n * Determines whether state is persisted with localStorage\r\n * @type {Boolean}\r\n */\r\n this.enableCookie = isArray(cfg.types) &&\r\n cfg.types.indexOf('cookie') !== -1;\r\n\r\n /**\r\n * Persist filters values, enabled by default\r\n * @type {Boolean}\r\n */\r\n this.persistFilters = defaultsBool(cfg.filters, true);\r\n\r\n /**\r\n * Persist current page number when paging is enabled\r\n * @type {Boolean}\r\n */\r\n this.persistPageNumber = Boolean(cfg.page_number);\r\n\r\n /**\r\n * Persist page length when paging is enabled\r\n * @type {Boolean}\r\n */\r\n this.persistPageLength = Boolean(cfg.page_length);\r\n\r\n /**\r\n * Persist column sorting\r\n * @type {Boolean}\r\n */\r\n this.persistSort = Boolean(cfg.sort);\r\n\r\n /**\r\n * Persist columns visibility\r\n * @type {Boolean}\r\n */\r\n this.persistColsVisibility = Boolean(cfg.columns_visibility);\r\n\r\n /**\r\n * Persist filters row visibility\r\n * @type {Boolean}\r\n */\r\n this.persistFiltersVisibility = Boolean(cfg.filters_visibility);\r\n\r\n /**\r\n * Cookie duration in hours\r\n * @type {Boolean}\r\n */\r\n this.cookieDuration = defaultsNb(parseInt(cfg.cookie_duration, 10),\r\n 87600);\r\n\r\n /**\r\n * Enable Storage if localStorage or cookie is required\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.enableStorage = this.enableLocalStorage || this.enableCookie;\r\n\r\n /**\r\n * Storage instance if storage is required\r\n * @type {Storage}\r\n * @private\r\n */\r\n this.storage = null;\r\n\r\n /**\r\n * Hash instance if URL hash is required\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hash = null;\r\n\r\n /**\r\n * Current page number\r\n * @type {Number}\r\n * @private\r\n */\r\n this.pageNb = null;\r\n\r\n /**\r\n * Current page length\r\n * @type {Number}\r\n * @private\r\n */\r\n this.pageLength = null;\r\n\r\n /**\r\n * Current column sorting\r\n * @type {Object}\r\n * @private\r\n */\r\n this.sort = null;\r\n\r\n /**\r\n * Current hidden columns\r\n * @type {Object}\r\n * @private\r\n */\r\n this.hiddenCols = null;\r\n\r\n /**\r\n * Filters row visibility\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.filtersVisibility = null;\r\n\r\n /**\r\n * State object\r\n * @type {Object}\r\n * @private\r\n */\r\n this.state = {};\r\n\r\n /**\r\n * Prefix for column ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxCol = 'col_';\r\n\r\n /**\r\n * Prefix for page number ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.pageNbKey = 'page';\r\n\r\n /**\r\n * Prefix for page length ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.pageLengthKey = 'page_length';\r\n\r\n /**\r\n * Prefix for filters visibility ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.filtersVisKey = 'filters_visibility';\r\n }\r\n\r\n /**\r\n * Initializes State instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.on(['after-filtering'], () => this.update());\r\n this.emitter.on(['after-page-change', 'after-clearing-filters'],\r\n (tf, pageNb) => this.updatePage(pageNb));\r\n this.emitter.on(['after-page-length-change'],\r\n (tf, pageLength) => this.updatePageLength(pageLength));\r\n this.emitter.on(['column-sorted'],\r\n (tf, index, descending) => this.updateSort(index, descending));\r\n this.emitter.on(['sort-initialized'], () => this._syncSort());\r\n this.emitter.on(['columns-visibility-initialized'],\r\n () => this._syncColsVisibility());\r\n this.emitter.on(['column-shown', 'column-hidden'], (tf, feature,\r\n colIndex, hiddenCols) => this.updateColsVisibility(hiddenCols));\r\n this.emitter.on(['filters-visibility-initialized'],\r\n () => this._syncFiltersVisibility());\r\n this.emitter.on(['filters-toggled'],\r\n (tf, extension, visible) => this.updateFiltersVisibility(visible));\r\n\r\n if (this.enableHash) {\r\n this.hash = new Hash(this);\r\n this.hash.init();\r\n }\r\n if (this.enableStorage) {\r\n this.storage = new Storage(this);\r\n this.storage.init();\r\n }\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n\r\n /**\r\n * Update state object based on current features state\r\n */\r\n update() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n let state = this.state;\r\n let tf = this.tf;\r\n\r\n if (this.persistFilters) {\r\n let filterValues = tf.getFiltersValue();\r\n\r\n filterValues.forEach((val, idx) => {\r\n let key = `${this.prfxCol}${idx}`;\r\n\r\n if (isString(val) && isEmpty(val)) {\r\n if (state.hasOwnProperty(key)) {\r\n state[key].flt = undefined;\r\n }\r\n } else {\r\n state[key] = state[key] || {};\r\n state[key].flt = val;\r\n }\r\n });\r\n }\r\n\r\n if (this.persistPageNumber) {\r\n if (isNull(this.pageNb)) {\r\n state[this.pageNbKey] = undefined;\r\n } else {\r\n state[this.pageNbKey] = this.pageNb;\r\n }\r\n }\r\n\r\n if (this.persistPageLength) {\r\n if (isNull(this.pageLength)) {\r\n state[this.pageLengthKey] = undefined;\r\n } else {\r\n state[this.pageLengthKey] = this.pageLength;\r\n }\r\n }\r\n\r\n if (this.persistSort) {\r\n if (!isNull(this.sort)) {\r\n // Remove previuosly sorted column\r\n Object.keys(state).forEach((key) => {\r\n if (key.indexOf(this.prfxCol) !== -1 && state[key]) {\r\n state[key].sort = undefined;\r\n }\r\n });\r\n\r\n let key = `${this.prfxCol}${this.sort.column}`;\r\n state[key] = state[key] || {};\r\n state[key].sort = { descending: this.sort.descending };\r\n }\r\n }\r\n\r\n if (this.persistColsVisibility) {\r\n if (!isNull(this.hiddenCols)) {\r\n // Clear previuosly hidden columns\r\n Object.keys(state).forEach((key) => {\r\n if (key.indexOf(this.prfxCol) !== -1 && state[key]) {\r\n state[key].hidden = undefined;\r\n }\r\n });\r\n\r\n this.hiddenCols.forEach((colIdx) => {\r\n let key = `${this.prfxCol}${colIdx}`;\r\n state[key] = state[key] || {};\r\n state[key].hidden = true;\r\n });\r\n }\r\n }\r\n\r\n if (this.persistFiltersVisibility) {\r\n if (isNull(this.filtersVisibility)) {\r\n state[this.filtersVisKey] = undefined;\r\n } else {\r\n state[this.filtersVisKey] = this.filtersVisibility;\r\n }\r\n }\r\n\r\n this.emitter.emit('state-changed', tf, state);\r\n }\r\n\r\n /**\r\n * Refresh page number field on page number changes\r\n *\r\n * @param {Number} pageNb Current page number\r\n */\r\n updatePage(pageNb) {\r\n this.pageNb = pageNb;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Refresh page length field on page length changes\r\n *\r\n * @param {Number} pageLength Current page length value\r\n */\r\n updatePageLength(pageLength) {\r\n this.pageLength = pageLength;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Refresh column sorting information on sort changes\r\n *\r\n * @param index {Number} Column index\r\n * @param {Boolean} descending Descending manner\r\n */\r\n updateSort(index, descending) {\r\n this.sort = {\r\n column: index,\r\n descending: descending\r\n };\r\n this.update();\r\n }\r\n\r\n /**\r\n * Refresh hidden columns information on columns visibility changes\r\n *\r\n * @param {Array} hiddenCols Columns indexes\r\n */\r\n updateColsVisibility(hiddenCols) {\r\n this.hiddenCols = hiddenCols;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Refresh filters visibility on filters visibility change\r\n *\r\n * @param {Boolean} visible Visibility flad\r\n */\r\n updateFiltersVisibility(visible) {\r\n this.filtersVisibility = visible;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Override state field\r\n *\r\n * @param state State object\r\n */\r\n override(state) {\r\n this.state = state;\r\n this.emitter.emit('state-changed', this.tf, state);\r\n }\r\n\r\n /**\r\n * Sync stored features state\r\n */\r\n sync() {\r\n let state = this.state;\r\n let tf = this.tf;\r\n\r\n this._syncFilters();\r\n\r\n if (this.persistPageNumber) {\r\n let pageNumber = state[this.pageNbKey];\r\n this.emitter.emit('change-page', tf, pageNumber);\r\n }\r\n\r\n if (this.persistPageLength) {\r\n let pageLength = state[this.pageLengthKey];\r\n this.emitter.emit('change-page-results', tf, pageLength);\r\n }\r\n\r\n this._syncSort();\r\n this._syncColsVisibility();\r\n this._syncFiltersVisibility();\r\n }\r\n\r\n /**\r\n * Override current state with passed one and sync features\r\n *\r\n * @param {Object} state State object\r\n */\r\n overrideAndSync(state) {\r\n // To prevent state to react to features changes, state is temporarily\r\n // disabled\r\n this.disable();\r\n // State is overriden with passed state object\r\n this.override(state);\r\n // New hash state is applied to features\r\n this.sync();\r\n // State is re-enabled\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Sync filters with stored values and filter table\r\n *\r\n * @private\r\n */\r\n _syncFilters() {\r\n if (!this.persistFilters) {\r\n return;\r\n }\r\n let state = this.state;\r\n let tf = this.tf;\r\n\r\n // clear all filters\r\n // TODO: use tf.clearFilters() once it allows to not filter the table\r\n tf.eachCol((colIdx) => tf.setFilterValue(colIdx, ''));\r\n\r\n Object.keys(state).forEach((key) => {\r\n if (key.indexOf(this.prfxCol) !== -1) {\r\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\r\n let val = state[key].flt;\r\n tf.setFilterValue(colIdx, val);\r\n }\r\n });\r\n\r\n tf.filter();\r\n }\r\n\r\n /**\r\n * Sync sorted column with stored sorting information and sort table\r\n *\r\n * @private\r\n */\r\n _syncSort() {\r\n if (!this.persistSort) {\r\n return;\r\n }\r\n let state = this.state;\r\n let tf = this.tf;\r\n\r\n Object.keys(state).forEach((key) => {\r\n if (key.indexOf(this.prfxCol) !== -1) {\r\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\r\n if (!isUndef(state[key].sort)) {\r\n let sort = state[key].sort;\r\n this.emitter.emit('sort', tf, colIdx, sort.descending);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Sync hidden columns with stored information\r\n *\r\n * @private\r\n */\r\n _syncColsVisibility() {\r\n if (!this.persistColsVisibility) {\r\n return;\r\n }\r\n let state = this.state;\r\n let tf = this.tf;\r\n let hiddenCols = [];\r\n\r\n Object.keys(state).forEach((key) => {\r\n if (key.indexOf(this.prfxCol) !== -1) {\r\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\r\n if (!isUndef(state[key].hidden)) {\r\n hiddenCols.push(colIdx);\r\n }\r\n }\r\n });\r\n\r\n hiddenCols.forEach((colIdx) => {\r\n this.emitter.emit('hide-column', tf, colIdx);\r\n });\r\n }\r\n\r\n /**\r\n * Sync filters visibility with stored information\r\n *\r\n * @private\r\n */\r\n _syncFiltersVisibility() {\r\n if (!this.persistFiltersVisibility) {\r\n return;\r\n }\r\n let state = this.state;\r\n let tf = this.tf;\r\n let filtersVisibility = state[this.filtersVisKey];\r\n\r\n this.filtersVisibility = filtersVisibility;\r\n this.emitter.emit('show-filters', tf, filtersVisibility);\r\n }\r\n\r\n /**\r\n * Destroy State instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.state = {};\r\n\r\n this.emitter.off(['after-filtering'], () => this.update());\r\n this.emitter.off(['after-page-change', 'after-clearing-filters'],\r\n (tf, pageNb) => this.updatePage(pageNb));\r\n this.emitter.off(['after-page-length-change'],\r\n (tf, index) => this.updatePageLength(index));\r\n this.emitter.off(['column-sorted'],\r\n (tf, index, descending) => this.updateSort(index, descending));\r\n this.emitter.off(['sort-initialized'], () => this._syncSort());\r\n this.emitter.off(['columns-visibility-initialized'],\r\n () => this._syncColsVisibility());\r\n this.emitter.off(['column-shown', 'column-hidden'], (tf, feature,\r\n colIndex, hiddenCols) => this.updateColsVisibility(hiddenCols));\r\n this.emitter.off(['filters-visibility-initialized'],\r\n () => this._syncFiltersVisibility());\r\n this.emitter.off(['filters-toggled'],\r\n (tf, extension, visible) => this.updateFiltersVisibility(visible));\r\n\r\n if (this.enableHash) {\r\n this.hash.destroy();\r\n this.hash = null;\r\n }\r\n\r\n if (this.enableStorage) {\r\n this.storage.destroy();\r\n this.storage = null;\r\n }\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\nimport {createElm, createText, elm, removeElm} from '../dom';\nimport {addEvt, targetEvt, removeEvt} from '../event';\nimport {NONE} from '../const';\nimport {root} from '../root';\nimport {isEmpty, isNull} from '../types';\nimport {defaultsStr} from '../settings';\nimport {RIGHT} from './toolbar';\n\nconst WIKI_URL = 'https://github.com/koalyptus/TableFilter/wiki/' +\n '4.-Filter-operators';\nconst WEBSITE_URL = 'https://www.tablefilter.com/';\n\n/**\n * Help UI component\n */\nexport class Help extends Feature {\n\n /**\n * Creates an instance of Help\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'help');\n\n let f = this.config.help_instructions || {};\n\n /**\n * ID of main custom container element\n * @type {String}\n */\n this.tgtId = defaultsStr(f.target_id, null);\n\n /**\n * ID of custom container element for instructions\n * @type {String}\n */\n this.contTgtId = defaultsStr(f.container_target_id, null);\n\n /**\n * Instructions text (accepts HTML)\n * @type {String}\n */\n this.instrText = !isEmpty(f.text) ? f.text :\n 'Use the filters above each column to filter and limit table ' +\n 'data. Advanced searches can be performed by using the following ' +\n 'operators:
<, <=, >, ' +\n '>=, =, *, !, {, }, ' +\n '||,&&, [empty], [nonempty], ' +\n 'rgx:
' +\n 'Learn more
';\n\n /**\n * Instructions HTML\n * @type {String}\n */\n this.instrHtml = defaultsStr(f.html, null);\n\n /**\n * Help button text ('?')\n * @type {String}\n */\n this.btnText = defaultsStr(f.btn_text, '?');\n\n /**\n * Custom help button HTML\n * @type {String}\n */\n this.btnHtml = defaultsStr(f.btn_html, null);\n\n /**\n * Css class for help button\n * @type {String}\n */\n this.btnCssClass = defaultsStr(f.btn_css_class, 'helpBtn');\n\n /**\n * Css class for help container element\n * @type {String}\n */\n this.contCssClass = defaultsStr(f.container_css_class, 'helpCont');\n\n /**\n * Button DOM element\n * @type {DOMElement}\n */\n this.btn = null;\n\n /**\n * Help container DOM element\n * @type {DOMElement}\n */\n this.cont = null;\n\n /**\n * Bound mouseup wrapper\n * @private\n */\n this.boundMouseup = null;\n\n /**\n * Default HTML appended to instructions text\n * @type {String}\n */\n this.defaultHtml = '

TableFilter ' +\n 'v' + tf.version + '

' + '' + WEBSITE_URL + '' +\n '
©2015-' + tf.year + ' Max Guglielmi' +\n '
' +\n 'Close
';\n\n /**\n * Default position in toolbar ('left'|'center'|'right')\n * @type {String}\n */\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\n\n this.emitter.on(['init-help'], () => this.init());\n }\n\n /**\n * Mouse-up event handler handling popup auto-close behaviour\n * @private\n */\n onMouseup(evt) {\n let targetElm = targetEvt(evt);\n\n while (targetElm && targetElm !== this.cont && targetElm !== this.btn) {\n targetElm = targetElm.parentNode;\n }\n\n if (targetElm !== this.cont && targetElm !== this.btn) {\n this.toggle();\n }\n\n return;\n }\n\n /**\n * Initialise Help instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n this.emitter.emit('initializing-feature', this, !isNull(this.tgtId));\n\n let tf = this.tf;\n\n let btn = createElm('span');\n let cont = createElm('div');\n\n this.boundMouseup = this.onMouseup.bind(this);\n\n //help button is added to defined element\n let targetEl = !this.tgtId ?\n tf.feature('toolbar').container(this.toolbarPosition) :\n elm(this.tgtId);\n targetEl.appendChild(btn);\n\n let divContainer = !this.contTgtId ? btn : elm(this.contTgtId);\n\n if (!this.btnHtml) {\n divContainer.appendChild(cont);\n let helplink = createElm('a', ['href', 'javascript:void(0);']);\n helplink.className = this.btnCssClass;\n helplink.appendChild(createText(this.btnText));\n btn.appendChild(helplink);\n addEvt(helplink, 'click', () => this.toggle());\n } else {\n btn.innerHTML = this.btnHtml;\n let helpEl = btn.firstChild;\n addEvt(helpEl, 'click', () => this.toggle());\n divContainer.appendChild(cont);\n }\n\n if (!this.instrHtml) {\n cont.innerHTML = this.instrText;\n cont.className = this.contCssClass;\n } else {\n if (this.contTgtId) {\n divContainer.appendChild(cont);\n }\n cont.innerHTML = this.instrHtml;\n if (!this.contTgtId) {\n cont.className = this.contCssClass;\n }\n }\n cont.innerHTML += this.defaultHtml;\n addEvt(cont, 'click', () => this.toggle());\n\n this.cont = cont;\n this.btn = btn;\n /** @inherited */\n this.initialized = true;\n\n this.emitter.emit('feature-initialized', this);\n }\n\n /**\n * Toggle help pop-up\n */\n toggle() {\n // check only if explicitily disabled as in this case undefined\n // signifies the help feature is enabled by default\n if (!this.isEnabled()) {\n return;\n }\n\n // ensure mouseup event handler is removed\n removeEvt(root, 'mouseup', this.boundMouseup);\n\n let divDisplay = this.cont.style.display;\n if (divDisplay === '' || divDisplay === NONE) {\n this.cont.style.display = 'inline';\n addEvt(root, 'mouseup', this.boundMouseup);\n } else {\n this.cont.style.display = NONE;\n }\n }\n\n /**\n * Remove help UI\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n removeElm(this.btn);\n this.btn = null;\n\n removeElm(this.cont);\n this.cont = null;\n\n this.boundMouseup = null;\n this.initialized = false;\n }\n\n}\n","import {Date as SugarDate} from 'sugar-date';\r\nimport 'sugar-date/locales';\r\nimport {Feature} from '../feature';\r\nimport {isObj, isArray} from '../types';\r\nimport {DATE} from '../const';\r\nimport {root} from '../root';\r\n\r\n/**\r\n * Wrapper for Sugar Date module providing datetime helpers and locales\r\n * @export\r\n * @class DateType\r\n */\r\nexport class DateType extends Feature {\r\n\r\n /**\r\n * Creates an instance of DateType\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'dateType');\r\n\r\n /**\r\n * Global locale\r\n * @type {String}\r\n */\r\n this.locale = tf.locale;\r\n\r\n /**\r\n * Sugar Date instance\r\n * @type {Object}\r\n */\r\n this.datetime = SugarDate;\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initialize DateType instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // Set global locale\r\n this.datetime.setLocale(this.locale);\r\n\r\n // Add formats from column types configuration if any\r\n this.addConfigFormats(this.tf.colTypes);\r\n\r\n this.emitter.on(\r\n ['add-date-type-formats'],\r\n (tf, types) => this.addConfigFormats(types)\r\n );\r\n\r\n // Broadcast date-type initialization\r\n this.emitter.emit('date-type-initialized', this.tf, this);\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Parse a string representation of a date for a specified locale and return\r\n * a date object\r\n * @param {String} dateStr String representation of a date\r\n * @param {String} localeCode Locale code (ie 'en-us')\r\n * @returns {Date}\r\n */\r\n parse(dateStr, localeCode) {\r\n return this.datetime.create(dateStr, localeCode);\r\n }\r\n\r\n /**\r\n * Check string representation of a date for a specified locale is valid\r\n * @param {any} dateStr String representation of a date\r\n * @param {any} localeCode Locale code (ie 'en-us')\r\n * @returns {Boolean}\r\n */\r\n isValid(dateStr, localeCode) {\r\n return this.datetime.isValid(this.parse(dateStr, localeCode));\r\n }\r\n\r\n /**\r\n * Return the type object of a specified column as per configuration or\r\n * passed collection\r\n * @param {Number} colIndex Column index\r\n * @param {Array} types Collection of column types, optional\r\n * @returns {Object}\r\n */\r\n getOptions(colIndex, types) {\r\n types = types || this.tf.colTypes;\r\n let colType = types[colIndex];\r\n return isObj(colType) ? colType : {};\r\n }\r\n\r\n /**\r\n * Return the locale code for supplied column index as per configuration\r\n * or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} Locale code (ie: 'en-us')\r\n */\r\n getLocale(colIndex) {\r\n return this.getOptions(colIndex).locale || this.locale;\r\n }\r\n\r\n /**\r\n * Add date time format(s) to a locale as specified by the passed\r\n * collection of column types, ie:\r\n * [\r\n * 'string',\r\n * 'number',\r\n * { type: 'date', locale: 'en', format: ['{dd}/{MM}/{yyyy}']}\r\n * ]\r\n *\r\n * @param {Array} [types=[]] Collection of column types\r\n */\r\n addConfigFormats(types=[]) {\r\n types.forEach((type, idx) => {\r\n let options = this.getOptions(idx, types);\r\n if (options.type === DATE && options.hasOwnProperty('format')) {\r\n let locale = this.datetime.getLocale(\r\n options.locale || this.locale\r\n );\r\n let formats = isArray(options.format) ?\r\n options.format : [options.format];\r\n\r\n // Sugar date module throws exceptions with locale.addFormat\r\n try {\r\n formats.forEach((format) => {\r\n locale.addFormat(format);\r\n });\r\n } catch (ex) {\r\n root.console.error(ex);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Remove DateType instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n // TODO: remove added formats\r\n\r\n this.emitter.off(\r\n ['add-date-type-formats'],\r\n (tf, types) => this.addConfigFormats(types)\r\n );\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {BaseDropdown} from './baseDropdown';\r\nimport {createElm, createOpt, elm} from '../dom';\r\nimport {has} from '../array';\r\nimport {matchCase} from '../string';\r\nimport {addEvt, targetEvt} from '../event';\r\nimport {SELECT, MULTIPLE, NONE} from '../const';\r\nimport {defaultsStr, defaultsBool} from '../settings';\r\n\r\n/**\r\n * Dropdown filter UI component\r\n * @export\r\n * @class Dropdown\r\n * @extends {BaseDropdown}\r\n */\r\nexport class Dropdown extends BaseDropdown {\r\n\r\n /**\r\n * Creates an instance of Dropdown\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'dropdown');\r\n\r\n // Configuration object\r\n let f = this.config;\r\n\r\n /**\r\n * Enable the reset filter option as first item\r\n * @type {Boolean}\r\n */\r\n this.enableSlcResetFilter =\r\n defaultsBool(f.enable_slc_reset_filter, true);\r\n\r\n /**\r\n * Non empty option text\r\n * @type {String}\r\n */\r\n this.nonEmptyText = defaultsStr(f.non_empty_text, '(Non empty)');\r\n\r\n /**\r\n * Tooltip text appearing on multiple select\r\n * @type {String}\r\n */\r\n this.multipleSlcTooltip = defaultsStr(f.multiple_slc_tooltip,\r\n 'Use Ctrl/Cmd key for multiple selections');\r\n }\r\n\r\n\r\n /**\r\n * Drop-down filter focus event handler\r\n * @param {Event} e DOM Event\r\n * @private\r\n */\r\n onSlcFocus(e) {\r\n let elm = targetEvt(e);\r\n let tf = this.tf;\r\n // select is populated when element has focus\r\n if (tf.loadFltOnDemand && elm.getAttribute('filled') === '0') {\r\n let ct = elm.getAttribute('ct');\r\n this.build(ct);\r\n }\r\n this.emitter.emit('filter-focus', tf, elm);\r\n }\r\n\r\n /**\r\n * Drop-down filter change event handler\r\n * @private\r\n */\r\n onSlcChange() {\r\n if (this.tf.onSlcChange) {\r\n this.tf.filter();\r\n }\r\n }\r\n\r\n /**\r\n * Refresh all drop-down filters\r\n */\r\n refreshAll() {\r\n let selectFlts = this.tf.getFiltersByType(SELECT, true);\r\n let multipleFlts = this.tf.getFiltersByType(MULTIPLE, true);\r\n let colIdxs = selectFlts.concat(multipleFlts);\r\n this.refreshFilters(colIdxs);\r\n }\r\n\r\n /**\r\n * Initialize drop-down filter\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isExternal External filter flag\r\n * @param {DOMElement} container Dom element containing the filter\r\n */\r\n init(colIndex, isExternal, container) {\r\n let tf = this.tf;\r\n let col = tf.getFilterType(colIndex);\r\n let externalFltTgtId = isExternal ?\r\n tf.externalFltIds[colIndex] : null;\r\n\r\n let slc = createElm(SELECT,\r\n ['id', tf.buildFilterId(colIndex)],\r\n ['ct', colIndex], ['filled', '0']\r\n );\r\n\r\n if (col === MULTIPLE) {\r\n slc.multiple = MULTIPLE;\r\n slc.title = this.multipleSlcTooltip;\r\n }\r\n slc.className = col.toLowerCase() === SELECT ?\r\n tf.fltCssClass : tf.fltMultiCssClass;\r\n\r\n //filter is appended in container element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(slc);\r\n } else {\r\n container.appendChild(slc);\r\n }\r\n\r\n tf.fltIds.push(slc.id);\r\n\r\n if (!tf.loadFltOnDemand) {\r\n this.build(colIndex);\r\n } else {\r\n //1st option is created here since build isn't invoked\r\n let opt0 = createOpt(tf.getClearFilterText(colIndex), '');\r\n slc.appendChild(opt0);\r\n }\r\n\r\n addEvt(slc, 'change', () => this.onSlcChange());\r\n addEvt(slc, 'focus', (e) => this.onSlcFocus(e));\r\n\r\n this.emitter.on(\r\n ['build-select-filter'],\r\n (tf, colIndex, isLinked, isExternal) =>\r\n this.build(colIndex, isLinked, isExternal)\r\n );\r\n this.emitter.on(\r\n ['select-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.on(['rows-changed'], () => this.refreshAll());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Build drop-down filter UI\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isLinked Enable linked filters behaviour\r\n */\r\n build(colIndex, isLinked = false) {\r\n let tf = this.tf;\r\n colIndex = Number(colIndex);\r\n\r\n this.emitter.emit('before-populating-filter', tf, colIndex);\r\n\r\n /** @inherited */\r\n this.opts = [];\r\n /** @inherited */\r\n this.optsTxt = [];\r\n\r\n let slc = tf.getFilterElement(colIndex);\r\n\r\n //custom select test\r\n /** @inherited */\r\n this.isCustom = tf.isCustomOptions(colIndex);\r\n\r\n //Retrieves custom values\r\n if (this.isCustom) {\r\n let customValues = tf.getCustomOptions(colIndex);\r\n this.opts = customValues[0];\r\n this.optsTxt = customValues[1];\r\n }\r\n\r\n //custom selects text\r\n let activeIdx;\r\n let activeFilterId = tf.getActiveFilterId();\r\n if (isLinked && activeFilterId) {\r\n activeIdx = tf.getColumnIndexFromFilterId(activeFilterId);\r\n }\r\n\r\n let excludedOpts = null,\r\n filteredDataCol = null;\r\n if (isLinked && tf.disableExcludedOptions) {\r\n excludedOpts = [];\r\n filteredDataCol = [];\r\n }\r\n\r\n let eachRow = tf.eachRow();\r\n eachRow(\r\n (row) => {\r\n let cellValue = tf.getCellValue(row.cells[colIndex]);\r\n //Vary Peter's patch\r\n let cellString = matchCase(cellValue, tf.caseSensitive);\r\n\r\n // checks if celldata is already in array\r\n if (!has(this.opts, cellString, tf.caseSensitive)) {\r\n this.opts.push(cellValue);\r\n }\r\n\r\n if (isLinked && tf.disableExcludedOptions) {\r\n let filteredCol = filteredDataCol[colIndex];\r\n if (!filteredCol) {\r\n filteredCol = tf.getVisibleColumnValues(colIndex);\r\n }\r\n if (!has(filteredCol, cellString, tf.caseSensitive) &&\r\n !has(excludedOpts, cellString, tf.caseSensitive)) {\r\n excludedOpts.push(cellValue);\r\n }\r\n }\r\n },\r\n // continue conditions function\r\n (row, k) => {\r\n // excluded rows don't need to appear on selects as always valid\r\n if (tf.excludeRows.indexOf(k) !== -1) {\r\n return true;\r\n }\r\n\r\n // checks if row has expected number of cells\r\n if (row.cells.length !== tf.nbCells || this.isCustom) {\r\n return true;\r\n }\r\n\r\n if (isLinked && !this.isValidLinkedValue(k, activeIdx)) {\r\n return true;\r\n }\r\n }\r\n );\r\n\r\n //sort options\r\n this.opts = this.sortOptions(colIndex, this.opts);\r\n if (excludedOpts) {\r\n excludedOpts = this.sortOptions(colIndex, excludedOpts);\r\n }\r\n\r\n //populates drop-down\r\n this.addOptions(colIndex, slc, isLinked, excludedOpts);\r\n\r\n this.emitter.emit('after-populating-filter', tf, colIndex, slc);\r\n }\r\n\r\n /**\r\n * Add drop-down options\r\n * @param {Number} colIndex Column index\r\n * @param {Object} slc Select Dom element\r\n * @param {Boolean} isLinked Enable linked refresh behaviour\r\n * @param {Array} excludedOpts Array of excluded options\r\n */\r\n addOptions(colIndex, slc, isLinked, excludedOpts) {\r\n let tf = this.tf,\r\n slcValue = slc.value;\r\n\r\n slc.innerHTML = '';\r\n slc = this.addFirstOption(slc);\r\n\r\n for (let y = 0; y < this.opts.length; y++) {\r\n if (this.opts[y] === '') {\r\n continue;\r\n }\r\n let val = this.opts[y]; //option value\r\n let lbl = this.isCustom ? this.optsTxt[y] : val; //option text\r\n let isDisabled = false;\r\n if (isLinked && tf.disableExcludedOptions &&\r\n has(excludedOpts, matchCase(val, tf.caseSensitive),\r\n tf.caseSensitive)) {\r\n isDisabled = true;\r\n }\r\n\r\n let opt;\r\n //fill select on demand\r\n if (tf.loadFltOnDemand && slcValue === this.opts[y] &&\r\n tf.getFilterType(colIndex) === SELECT) {\r\n opt = createOpt(lbl, val, true);\r\n } else {\r\n opt = createOpt(lbl, val, false);\r\n }\r\n if (isDisabled) {\r\n opt.disabled = true;\r\n }\r\n slc.appendChild(opt);\r\n }// for y\r\n\r\n slc.setAttribute('filled', '1');\r\n }\r\n\r\n /**\r\n * Add drop-down header option\r\n * @param {Object} slc Select DOM element\r\n */\r\n addFirstOption(slc) {\r\n let tf = this.tf;\r\n let colIdx = tf.getColumnIndexFromFilterId(slc.id);\r\n let opt0 = createOpt((!this.enableSlcResetFilter ?\r\n '' : tf.getClearFilterText(colIdx)), '');\r\n if (!this.enableSlcResetFilter) {\r\n opt0.style.display = NONE;\r\n }\r\n slc.appendChild(opt0);\r\n if (tf.enableEmptyOption) {\r\n let opt1 = createOpt(tf.emptyText, tf.emOperator);\r\n slc.appendChild(opt1);\r\n }\r\n if (tf.enableNonEmptyOption) {\r\n let opt2 = createOpt(tf.nonEmptyText, tf.nmOperator);\r\n slc.appendChild(opt2);\r\n }\r\n return slc;\r\n }\r\n\r\n /**\r\n * Select filter options programmatically\r\n * @param {Number} colIndex Column index\r\n * @param {Array} values Array of option values to select\r\n */\r\n selectOptions(colIndex, values = []) {\r\n let tf = this.tf;\r\n if (values.length === 0) {\r\n return;\r\n }\r\n let slc = tf.getFilterElement(colIndex);\r\n [].forEach.call(slc.options, (option) => {\r\n // Empty value means clear all selections and first option is the\r\n // clear all option\r\n if (values[0] === '' || option.value === '') {\r\n option.selected = false;\r\n }\r\n\r\n if (option.value !== '' && has(values, option.value, true)) {\r\n option.selected = true;\r\n }//if\r\n });\r\n }\r\n\r\n /**\r\n * Get filter values for a given column index\r\n * @param {Number} colIndex Column index\r\n * @returns {Array} values Array of selected values\r\n */\r\n getValues(colIndex) {\r\n let tf = this.tf;\r\n let slc = tf.getFilterElement(colIndex);\r\n let values = [];\r\n\r\n // IE >= 9 does not support the selectedOptions property :(\r\n if (slc.selectedOptions) {\r\n [].forEach.call(slc.selectedOptions,\r\n option => values.push(option.value));\r\n } else {\r\n [].forEach.call(slc.options, (option) => {\r\n if (option.selected) {\r\n values.push(option.value);\r\n }\r\n });\r\n }\r\n\r\n return values;\r\n }\r\n\r\n /**\r\n * Destroy Dropdown instance\r\n */\r\n destroy() {\r\n this.emitter.off(\r\n ['build-select-filter'],\r\n (colIndex, isLinked, isExternal) =>\r\n this.build(colIndex, isLinked, isExternal)\r\n );\r\n this.emitter.off(\r\n ['select-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.off(['rows-changed'], () => this.refreshAll());\r\n this.initialized = false;\r\n }\r\n}\r\n","/**\n * Event emitter class\n */\nexport class Emitter {\n /**\n * Creates an instance of Emitter.\n */\n constructor() {\n /**\n * Events object\n * @type {Object}\n */\n this.events = {};\n }\n\n /**\n * Subscribe to an event\n * @param {Array} evts Collection of event names\n * @param {Function} fn Function invoked when event is emitted\n */\n on(evts, fn) {\n evts.forEach((evt) => {\n this.events[evt] = this.events[evt] || [];\n this.events[evt].push(fn);\n });\n }\n\n /**\n * Unsubscribe to an event\n * @param {Array} evts Collection of event names\n * @param {Function} fn Function invoked when event is emitted\n */\n off(evts, fn) {\n evts.forEach((evt) => {\n if (evt in this.events) {\n this.events[evt].splice(this.events[evt].indexOf(fn), 1);\n }\n });\n }\n\n /**\n * Emit an event\n * @param {String} evt Event name followed by any other argument passed to\n * the invoked function\n */\n emit(evt /*, args...*/) {\n if (evt in this.events) {\n for (let i = 0; i < this.events[evt].length; i++) {\n this.events[evt][i].apply(this, [].slice.call(arguments, 1));\n }\n }\n }\n}\n","import {addEvt, cancelEvt, stopEvt, targetEvt, isKeyPressed} from './event';\nimport {\n addClass, createElm, createOpt, elm, getText, getFirstTextNode,\n removeClass, tag\n} from './dom';\nimport {contains, matchCase, rgxEsc, trim} from './string';\nimport {\n isArray, isEmpty, isFn, isNumber, isObj, isString, isUndef, EMPTY_FN,\n isBoolean\n} from './types';\nimport {parse as parseNb} from './number';\nimport {\n defaultsBool, defaultsStr, defaultsFn,\n defaultsNb, defaultsArr\n} from './settings';\n\nimport {root} from './root';\nimport {Emitter} from './emitter';\nimport {Dropdown} from './modules/dropdown';\nimport {CheckList} from './modules/checkList';\n\nimport {\n INPUT, SELECT, MULTIPLE, CHECKLIST, NONE,\n ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY,\n CELL_TAG, AUTO_FILTER_DELAY, NUMBER, DATE, FORMATTED_NUMBER,\n FEATURES\n} from './const';\n\nlet doc = root.document;\n\n/**\n * Makes HTML tables filterable and a bit more :)\n *\n * @export\n * @class TableFilter\n */\nexport class TableFilter {\n\n /**\n * Creates an instance of TableFilter\n * requires `table` or `id` arguments, `row` and `configuration` optional\n * @param {HTMLTableElement} table Table DOM element\n * @param {String} id Table id\n * @param {Number} row index indicating the 1st row\n * @param {Object} configuration object\n */\n constructor(...args) {\n /**\n * ID of current instance\n * @type {String}\n * @private\n */\n this.id = null;\n\n /**\n * Current version\n * @type {String}\n */\n this.version = '0.6.56';\n\n /**\n * Current year\n * @type {Number}\n * @private\n */\n this.year = new Date().getFullYear();\n\n /**\n * HTML Table DOM element\n * @type {DOMElement}\n * @private\n */\n this.tbl = null;\n\n /**\n * Calculated row's index from which starts filtering once filters\n * are generated\n * @type {Number}\n */\n this.refRow = null;\n\n /**\n * Index of the headers row\n * @type {Number}\n * @private\n */\n this.headersRow = null;\n\n /**\n * Configuration object\n * @type {Object}\n * @private\n */\n this.cfg = {};\n\n /**\n * Number of rows that can be filtered\n * @type {Number}\n * @private\n */\n this.nbFilterableRows = 0;\n\n /**\n * Number of cells in the reference row\n * @type {Number}\n * @private\n */\n this.nbCells = null;\n\n /**\n * Has a configuration object\n * @type {Object}\n * @private\n */\n this.hasConfig = false;\n\n /** @private */\n this.initialized = false;\n\n let startRow;\n\n // TODO: use for-of\n args.forEach((arg) => {\n if (typeof arg === 'object' && arg.nodeName === 'TABLE') {\n this.tbl = arg;\n this.id = arg.id || `tf_${new Date().getTime()}_`;\n this.tbl.id = this.id;\n } else if (isString(arg)) {\n this.id = arg;\n this.tbl = elm(arg);\n } else if (isNumber(arg)) {\n startRow = arg;\n } else if (isObj(arg)) {\n this.cfg = arg;\n this.hasConfig = true;\n }\n });\n\n if (!this.tbl || this.tbl.nodeName !== 'TABLE') {\n throw new Error(`Could not instantiate TableFilter: HTML table\n DOM element not found.`);\n }\n\n if (this.getRowsNb(true) === 0) {\n throw new Error(`Could not instantiate TableFilter: HTML table\n requires at least 1 row.`);\n }\n\n // configuration object\n let f = this.cfg;\n\n /**\n * Event emitter instance\n * @type {Emitter}\n */\n this.emitter = new Emitter();\n\n // start row\n this.refRow = isUndef(startRow) ? 2 : (startRow + 1);\n\n /**\n * Collection of filter type by column\n * @type {Array}\n * @private\n */\n this.filterTypes = [].map.call(\n (this.dom().rows[this.refRow] || this.dom().rows[0]).cells,\n (cell, idx) => {\n let colType = this.cfg[`col_${idx}`];\n return !colType ? INPUT : colType.toLowerCase();\n });\n\n /**\n * Base path for static assets\n * @type {String}\n */\n this.basePath = defaultsStr(f.base_path, 'tablefilter/');\n\n /*** filters' grid properties ***/\n\n /**\n * Enable/disable filters\n * @type {Boolean}\n */\n this.fltGrid = defaultsBool(f.grid, true);\n\n /**\n * Enable/disable grid layout (fixed headers)\n * @type {Object|Boolean}\n */\n this.gridLayout = isObj(f.grid_layout) || Boolean(f.grid_layout);\n\n /**\n * Filters row index\n * @type {Number}\n */\n this.filtersRowIndex = defaultsNb(f.filters_row_index, 0);\n\n /**\n * Headers row index\n * @type {Number}\n */\n this.headersRow = defaultsNb(f.headers_row_index,\n (this.filtersRowIndex === 0 ? 1 : 0));\n\n /**\n * Define the type of cell containing a filter (td/th)\n * @type {String}\n */\n this.fltCellTag = defaultsStr(f.filters_cell_tag, CELL_TAG);\n\n /**\n * List of filters IDs\n * @type {Array}\n * @private\n */\n this.fltIds = [];\n\n /**\n * List of valid rows indexes (rows visible upon filtering)\n * @type {Array}\n * @private\n */\n this.validRowsIndex = [];\n\n /*** filters' grid appearance ***/\n /**\n * Path for stylesheets\n * @type {String}\n */\n this.stylePath = this.getStylePath();\n\n /**\n * Main stylesheet path\n * @type {String}\n */\n this.stylesheet = this.getStylesheetPath();\n\n /**\n * Main stylesheet ID\n * @type {String}\n * @private\n */\n this.stylesheetId = this.id + '_style';\n\n /**\n * Css class for the filters row\n * @type {String}\n */\n this.fltsRowCssClass = defaultsStr(f.flts_row_css_class, 'fltrow');\n\n /**\n * Enable/disable icons (paging, reset button)\n * @type {Boolean}\n */\n this.enableIcons = defaultsBool(f.enable_icons, true);\n\n /**\n * Enable/disable alternating rows\n * @type {Boolean}\n */\n this.alternateRows = Boolean(f.alternate_rows);\n\n /**\n * Columns widths array\n * @type {Array}\n */\n this.colWidths = defaultsArr(f.col_widths, []);\n\n /**\n * Default column width when column widths are defined\n */\n this.defaultColWidth = defaultsNb(f.default_col_width, 100);\n\n /**\n * Css class for a filter element\n * @type {String}\n */\n this.fltCssClass = defaultsStr(f.flt_css_class, 'flt');\n\n /**\n * Css class for multiple select filters\n * @type {String}\n */\n this.fltMultiCssClass = defaultsStr(f.flt_multi_css_class, 'flt_multi');\n\n /**\n * Css class for small filter (when submit button is active)\n * @type {String}\n */\n this.fltSmallCssClass = defaultsStr(f.flt_small_css_class, 'flt_s');\n\n /**\n * Css class for single filter type\n * @type {String}\n */\n this.singleFltCssClass = defaultsStr((f.single_filter || {}).css_class,\n 'single_flt');\n\n /*** filters' grid behaviours ***/\n\n /**\n * Enable/disable enter key for input type filters\n * @type {Boolean}\n */\n this.enterKey = defaultsBool(f.enter_key, true);\n\n /**\n * Callback fired before filtering process starts\n * @type {Function}\n */\n this.onBeforeFilter = defaultsFn(f.on_before_filter, EMPTY_FN);\n\n /**\n * Callback fired after filtering process is completed\n * @type {Function}\n */\n this.onAfterFilter = defaultsFn(f.on_after_filter, EMPTY_FN);\n\n /**\n * Enable/disable case sensitivity filtering\n * @type {Boolean}\n */\n this.caseSensitive = Boolean(f.case_sensitive);\n\n /**\n * Indicate whether exact match filtering is enabled on a per column\n * basis\n * @type {Boolean}\n * @private\n */\n this.hasExactMatchByCol = isArray(f.columns_exact_match);\n\n /**\n * Exact match filtering per column array\n * @type {Array}\n */\n this.exactMatchByCol = this.hasExactMatchByCol ?\n f.columns_exact_match : [];\n\n /**\n * Globally enable/disable exact match filtering\n * @type {Boolean}\n */\n this.exactMatch = Boolean(f.exact_match);\n\n /**\n * Ignore diacritics globally or on a column basis\n * @type {Boolean|Array}\n */\n this.ignoreDiacritics = f.ignore_diacritics;\n\n /**\n * Enable/disable linked filters filtering mode\n * @type {Boolean}\n */\n this.linkedFilters = Boolean(f.linked_filters);\n\n /**\n * Enable/disable readonly state for excluded options when\n * linked filters filtering mode is on\n * @type {Boolean}\n */\n this.disableExcludedOptions = Boolean(f.disable_excluded_options);\n\n /**\n * Active filter ID\n * @type {String}\n * @private\n */\n this.activeFilterId = null;\n\n /**\n * Determine if there are excluded rows from filtering\n * @type {Boolean}\n * @private\n */\n this.hasExcludedRows = Boolean(isArray(f.exclude_rows) &&\n f.exclude_rows.length > 0);\n\n /**\n * List of row indexes to be excluded from filtering\n * @type {Array}\n */\n this.excludeRows = defaultsArr(f.exclude_rows, []);\n\n /**\n * List of containers IDs where external filters will be generated\n * @type {Array}\n */\n this.externalFltIds = defaultsArr(f.external_flt_ids, []);\n\n /**\n * Callback fired after filters are generated\n * @type {Function}\n */\n this.onFiltersLoaded = defaultsFn(f.on_filters_loaded, EMPTY_FN);\n\n /**\n * Enable/disable single filter mode\n * @type {Boolean|Object}\n */\n this.singleFlt = isObj(f.single_filter) ||\n Boolean(f.single_filter);\n\n /**\n * Specify columns to be excluded from single filter search, by default\n * searching in all columns:\n * single_filter: {\n * exclude_cols: [2, 7]\n * }\n */\n this.singleFltExcludeCols = isObj(f.single_filter) &&\n isArray(f.single_filter.exclude_cols) ?\n f.single_filter.exclude_cols : [];\n\n /**\n * Callback fired after a row is validated during filtering\n * @type {Function}\n */\n this.onRowValidated = defaultsFn(f.on_row_validated, EMPTY_FN);\n\n /**\n * Specify which column implements a custom cell parser to retrieve the\n * cell value:\n * cell_parser: {\n * cols: [0, 2],\n * parse: function(tf, cell, colIndex) {\n * // custom cell parser logic here\n * return cellValue;\n * }\n * }\n * @type {Object}\n */\n this.cellParser = isObj(f.cell_parser) && isFn(f.cell_parser.parse) &&\n isArray(f.cell_parser.cols) ?\n f.cell_parser : { cols: [], parse: EMPTY_FN };\n\n /**\n * Global watermark text for input filter type or watermark for each\n * filter if an array is supplied\n * @type {String|Array}\n */\n this.watermark = f.watermark || '';\n\n /**\n * Indicate whether watermark is on a per column basis\n * @type {Boolean}\n * @private\n */\n this.isWatermarkArray = isArray(this.watermark);\n\n /**\n * Indicate whether help UI component is disabled\n * @type {Boolean}\n */\n this.help = isUndef(f.help_instructions) ? undefined :\n (isObj(f.help_instructions) || Boolean(f.help_instructions));\n\n /**\n * Indicate whether pop-up filters UI is enabled\n * @type {Boolean|Object}\n */\n this.popupFilters = isObj(f.popup_filters) || Boolean(f.popup_filters);\n\n /**\n * Indicate whether filtered (active) columns indicator is enabled\n * @type {Boolean}\n */\n this.markActiveColumns = isObj(f.mark_active_columns) ||\n Boolean(f.mark_active_columns);\n\n /*** select filter's customisation and behaviours ***/\n /**\n * Text for clear option in drop-down filter types (1st option)\n * @type {String|Array}\n */\n this.clearFilterText = defaultsStr(f.clear_filter_text, 'Clear');\n\n /**\n * Indicate whether empty option is enabled in drop-down filter types\n * @type {Boolean}\n */\n this.enableEmptyOption = Boolean(f.enable_empty_option);\n\n /**\n * Text for empty option in drop-down filter types\n * @type {String}\n */\n this.emptyText = defaultsStr(f.empty_text, '(Empty)');\n\n /**\n * Indicate whether non-empty option is enabled in drop-down filter\n * types\n * @type {Boolean}\n */\n this.enableNonEmptyOption = Boolean(f.enable_non_empty_option);\n\n /**\n * Text for non-empty option in drop-down filter types\n * @type {String}\n */\n this.nonEmptyText = defaultsStr(f.non_empty_text, '(Non empty)');\n\n /**\n * Indicate whether drop-down filter types filter the table by default\n * on change event\n * @type {Boolean}\n */\n this.onSlcChange = defaultsBool(f.on_change, true);\n\n /**\n * Make drop-down filter types options sorted in alpha-numeric manner\n * by default globally or on a column basis\n * @type {Boolean|Array}\n */\n this.sortSlc = isUndef(f.sort_select) ? true :\n isArray(f.sort_select) ? f.sort_select : Boolean(f.sort_select);\n\n /**\n * Indicate whether options in drop-down filter types are sorted in a\n * ascending numeric manner\n * @type {Boolean}\n * @private\n */\n this.isSortNumAsc = Boolean(f.sort_num_asc);\n\n /**\n * List of columns implementing options sorting in a ascending numeric\n * manner\n * @type {Array}\n */\n this.sortNumAsc = this.isSortNumAsc ? f.sort_num_asc : [];\n\n /**\n * Indicate whether options in drop-down filter types are sorted in a\n * descending numeric manner\n * @type {Boolean}\n * @private\n */\n this.isSortNumDesc = Boolean(f.sort_num_desc);\n\n /**\n * List of columns implementing options sorting in a descending numeric\n * manner\n * @type {Array}\n */\n this.sortNumDesc = this.isSortNumDesc ? f.sort_num_desc : [];\n\n /**\n * Indicate whether drop-down filter types are populated on demand at\n * first usage\n * @type {Boolean}\n */\n this.loadFltOnDemand = Boolean(f.load_filters_on_demand);\n\n /**\n * Indicate whether custom drop-down filter options are implemented\n * @type {Boolean}\n */\n this.hasCustomOptions = isObj(f.custom_options);\n\n /**\n * Custom options definition of a per column basis, ie:\n *\tcustom_options: {\n * cols:[0, 1],\n * texts: [\n * ['a0', 'b0', 'c0'],\n * ['a1', 'b1', 'c1']\n * ],\n * values: [\n * ['a0', 'b0', 'c0'],\n * ['a1', 'b1', 'c1']\n * ],\n * sorts: [false, true]\n * }\n *\n * @type {Object}\n */\n this.customOptions = f.custom_options;\n\n /*** Filter operators ***/\n /**\n * Regular expression operator for input filter. Defaults to 'rgx:'\n * @type {String}\n */\n this.rgxOperator = defaultsStr(f.regexp_operator, 'rgx:');\n\n /**\n * Empty cells operator for input filter. Defaults to '[empty]'\n * @type {String}\n */\n this.emOperator = defaultsStr(f.empty_operator, '[empty]');\n\n /**\n * Non-empty cells operator for input filter. Defaults to '[nonempty]'\n * @type {String}\n */\n this.nmOperator = defaultsStr(f.nonempty_operator, '[nonempty]');\n\n /**\n * Logical OR operator for input filter. Defaults to '||'\n * @type {String}\n */\n this.orOperator = defaultsStr(f.or_operator, '||');\n\n /**\n * Logical AND operator for input filter. Defaults to '&&'\n * @type {String}\n */\n this.anOperator = defaultsStr(f.and_operator, '&&');\n\n /**\n * Greater than operator for input filter. Defaults to '>'\n * @type {String}\n */\n this.grOperator = defaultsStr(f.greater_operator, '>');\n\n /**\n * Lower than operator for input filter. Defaults to '<'\n * @type {String}\n */\n this.lwOperator = defaultsStr(f.lower_operator, '<');\n\n /**\n * Lower than or equal operator for input filter. Defaults to '<='\n * @type {String}\n */\n this.leOperator = defaultsStr(f.lower_equal_operator, '<=');\n\n /**\n * Greater than or equal operator for input filter. Defaults to '>='\n * @type {String}\n */\n this.geOperator = defaultsStr(f.greater_equal_operator, '>=');\n\n /**\n * Inequality operator for input filter. Defaults to '!'\n * @type {String}\n */\n this.dfOperator = defaultsStr(f.different_operator, '!');\n\n /**\n * Like operator for input filter. Defaults to '*'\n * @type {String}\n */\n this.lkOperator = defaultsStr(f.like_operator, '*');\n\n /**\n * Strict equality operator for input filter. Defaults to '='\n * @type {String}\n */\n this.eqOperator = defaultsStr(f.equal_operator, '=');\n\n /**\n * Starts with operator for input filter. Defaults to '='\n * @type {String}\n */\n this.stOperator = defaultsStr(f.start_with_operator, '{');\n\n /**\n * Ends with operator for input filter. Defaults to '='\n * @type {String}\n */\n this.enOperator = defaultsStr(f.end_with_operator, '}');\n\n // this.curExp = f.cur_exp || '^[¥£€$]';\n\n /**\n * Stored values separator\n * @type {String}\n */\n this.separator = defaultsStr(f.separator, ',');\n\n /**\n * Enable rows counter UI component\n * @type {Boolean|Object}\n */\n this.rowsCounter = isObj(f.rows_counter) || Boolean(f.rows_counter);\n\n /**\n * Enable status bar UI component\n * @type {Boolean|Object}\n */\n this.statusBar = isObj(f.status_bar) || Boolean(f.status_bar);\n\n /**\n * Enable activity/spinner indicator UI component\n * @type {Boolean|Object}\n */\n this.loader = isObj(f.loader) || Boolean(f.loader);\n\n /*** validation - reset buttons/links ***/\n /**\n * Enable filters submission button\n * @type {Boolean}\n */\n this.displayBtn = Boolean(f.btn);\n\n /**\n * Define filters submission button text\n * @type {String}\n */\n this.btnText = defaultsStr(f.btn_text, (!this.enableIcons ? 'Go' : ''));\n\n /**\n * Css class for filters submission button\n * @type {String}\n */\n this.btnCssClass = defaultsStr(f.btn_css_class,\n (!this.enableIcons ? 'btnflt' : 'btnflt_icon'));\n\n /**\n * Enable clear button\n * @type {Object|Boolean}\n */\n this.btnReset = isObj(f.btn_reset) || Boolean(f.btn_reset);\n\n /**\n * Callback fired before filters are cleared\n * @type {Function}\n */\n this.onBeforeReset = defaultsFn(f.on_before_reset, EMPTY_FN);\n\n /**\n * Callback fired after filters are cleared\n * @type {Function}\n */\n this.onAfterReset = defaultsFn(f.on_after_reset, EMPTY_FN);\n\n /**\n * Enable paging component\n * @type {Object|Boolean}\n */\n this.paging = isObj(f.paging) || Boolean(f.paging);\n\n /**\n * Number of hidden rows\n * @type {Number}\n * @private\n */\n this.nbHiddenRows = 0;\n\n /**\n * Enable auto-filter behaviour, table is filtered when a user\n * stops typing\n * @type {Object|Boolean}\n */\n this.autoFilter = isObj(f.auto_filter) || Boolean(f.auto_filter);\n\n /**\n * Auto-filter delay in milliseconds\n * @type {Number}\n */\n this.autoFilterDelay = isObj(f.auto_filter) &&\n isNumber(f.auto_filter.delay) ?\n f.auto_filter.delay : AUTO_FILTER_DELAY;\n\n /**\n * Indicate whether user is typing\n * @type {Boolean}\n * @private\n */\n this.isUserTyping = null;\n\n /**\n * Auto-filter interval ID\n * @type {String}\n * @private\n */\n this.autoFilterTimer = null;\n\n /**\n * Enable keyword highlighting behaviour\n * @type {Boolean}\n */\n this.highlightKeywords = Boolean(f.highlight_keywords);\n\n /**\n * Enable no results message UI component\n * @type {Object|Boolean}\n */\n this.noResults = isObj(f.no_results_message) ||\n Boolean(f.no_results_message);\n\n /**\n * Enable state persistence\n * @type {Object|Boolean}\n */\n this.state = isObj(f.state) || Boolean(f.state);\n\n /*** data types ***/\n\n /**\n * Enable date type module\n * @type {Boolean}\n * @private\n */\n this.dateType = true;\n\n /**\n * Define default locale, default to 'en' as per Sugar Date module:\n * https://sugarjs.com/docs/#/DateLocales\n * @type {String}\n */\n this.locale = defaultsStr(f.locale, 'en');\n\n /**\n * Define thousands separator ',' or '.', defaults to ','\n * @type {String}\n */\n this.thousandsSeparator = defaultsStr(f.thousands_separator, ',');\n\n /**\n * Define decimal separator ',' or '.', defaults to '.'\n * @type {String}\n */\n this.decimalSeparator = defaultsStr(f.decimal_separator, '.');\n\n /**\n * Define data types on a column basis, possible values 'string',\n * 'number', 'formatted-number', 'date', 'ipaddress' ie:\n * col_types : [\n * 'string', 'date', 'number',\n * { type: 'formatted-number', decimal: ',', thousands: '.' },\n * { type: 'date', locale: 'en-gb' },\n * { type: 'date', format: ['{dd}-{months}-{yyyy|yy}'] }\n * ]\n *\n * Refer to https://sugarjs.com/docs/#/DateParsing for exhaustive\n * information on date parsing formats supported by Sugar Date\n * @type {Array}\n */\n this.colTypes = isArray(f.col_types) ? f.col_types : [];\n\n /*** ids prefixes ***/\n /**\n * Main prefix\n * @private\n */\n this.prfxTf = 'TF';\n\n /**\n * Filter's ID prefix (inputs - selects)\n * @private\n */\n this.prfxFlt = 'flt';\n\n /**\n * Button's ID prefix\n * @private\n */\n this.prfxValButton = 'btn';\n\n /**\n * Responsive Css class\n * @private\n */\n this.prfxResponsive = 'resp';\n\n /** @private */\n this.stickyCssClass = 'sticky';\n\n /*** extensions ***/\n /**\n * List of loaded extensions\n * @type {Array}\n */\n this.extensions = defaultsArr(f.extensions, []);\n\n /*** themes ***/\n /**\n * Enable default theme\n * @type {Boolean}\n */\n this.enableDefaultTheme = Boolean(f.enable_default_theme);\n\n /**\n * Determine whether themes are enables\n * @type {Boolean}\n * @private\n */\n this.hasThemes = (this.enableDefaultTheme || isArray(f.themes));\n\n /**\n * List of themes, ie:\n * themes: [{ name: 'skyblue' }]\n * @type {Array}\n */\n this.themes = defaultsArr(f.themes, []);\n\n /**\n * Define path to themes assets, defaults to\n * 'tablefilter/style/themes/'. Usage:\n * themes: [{ name: 'skyblue' }]\n * @type {Array}\n */\n this.themesPath = this.getThemesPath();\n\n /**\n * Enable responsive layout\n * @type {Boolean}\n */\n this.responsive = Boolean(f.responsive);\n\n /**\n * Enable toolbar component\n * @type {Object|Boolean}\n */\n this.toolbar = isObj(f.toolbar) || Boolean(f.toolbar);\n\n /**\n * Enable sticky headers\n * @type {Boolean}\n */\n this.stickyHeaders = Boolean(f.sticky_headers);\n\n /**\n * Features registry\n * @private\n */\n this.Mod = {};\n\n /**\n * Extensions registry\n * @private\n */\n this.ExtRegistry = {};\n\n // conditionally instantiate required features\n this.instantiateFeatures(\n Object.keys(FEATURES).map((item) => FEATURES[item])\n );\n }\n\n /**\n * Initialise features and layout\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n // import main stylesheet\n this.import(this.stylesheetId, this.getStylesheetPath(), null, 'link');\n\n let Mod = this.Mod;\n let inpclass;\n\n //loads theme\n this.loadThemes();\n\n const { dateType, help, state, markActiveColumns, gridLayout, loader,\n highlightKeyword, popupFilter, rowsCounter, statusBar, clearButton,\n alternateRows, noResults, paging, toolbar } = FEATURES;\n\n //explicitly initialise features in given order\n this.initFeatures([\n dateType,\n help,\n state,\n markActiveColumns,\n gridLayout,\n loader,\n highlightKeyword,\n popupFilter\n ]);\n\n //filters grid is not generated\n if (!this.fltGrid) {\n this._initNoFilters();\n } else {\n let fltrow = this._insertFiltersRow();\n\n this.nbCells = this.getCellsNb(this.refRow);\n this.nbFilterableRows = this.getRowsNb();\n\n let n = this.singleFlt ? 1 : this.nbCells;\n\n //build filters\n for (let i = 0; i < n; i++) {\n this.emitter.emit('before-filter-init', this, i);\n\n let fltCell = createElm(this.fltCellTag),\n col = this.getFilterType(i);\n\n if (this.singleFlt) {\n fltCell.colSpan = this.nbCells;\n }\n if (!this.gridLayout) {\n fltrow.appendChild(fltCell);\n }\n inpclass = (i === n - 1 && this.displayBtn) ?\n this.fltSmallCssClass : this.fltCssClass;\n\n //only 1 input for single search\n if (this.singleFlt) {\n col = INPUT;\n inpclass = this.singleFltCssClass;\n }\n\n //drop-down filters\n if (col === SELECT || col === MULTIPLE) {\n Mod.dropdown = Mod.dropdown || new Dropdown(this);\n Mod.dropdown.init(i, this.isExternalFlt(), fltCell);\n }\n // checklist\n else if (col === CHECKLIST) {\n Mod.checkList = Mod.checkList || new CheckList(this);\n Mod.checkList.init(i, this.isExternalFlt(), fltCell);\n } else {\n this._buildInputFilter(i, inpclass, fltCell);\n }\n\n // this adds submit button\n if (i === n - 1 && this.displayBtn) {\n this._buildSubmitButton(\n this.isExternalFlt() ?\n elm(this.externalFltIds[i]) :\n fltCell\n );\n }\n\n this.emitter.emit('after-filter-init', this, i);\n }\n\n this.emitter.on(['filter-focus'],\n (tf, filter) => this.setActiveFilterId(filter.id));\n\n }//if this.fltGrid\n\n /* Features */\n if (this.hasExcludedRows) {\n this.emitter.on(['after-filtering'], () => this.setExcludeRows());\n this.setExcludeRows();\n }\n\n this.initFeatures([\n rowsCounter,\n statusBar,\n clearButton,\n alternateRows,\n noResults,\n paging,\n toolbar\n ]);\n\n this.setColWidths();\n\n //TF css class is added to table\n if (!this.gridLayout) {\n addClass(this.dom(), this.prfxTf);\n if (this.responsive) {\n addClass(this.dom(), this.prfxResponsive);\n }\n if (this.colWidths.length > 0) {\n this.setFixedLayout();\n }\n if (this.stickyHeaders && this.dom().tHead) {\n addClass(this.dom(), this.stickyCssClass);\n }\n }\n\n /* Load extensions */\n this.initExtensions();\n\n // Subscribe to events\n if (this.linkedFilters) {\n this.emitter.on(['after-filtering'], () => this.linkFilters());\n }\n\n this.initialized = true;\n\n this.onFiltersLoaded(this);\n\n this.emitter.emit('initialized', this);\n }\n\n /**\n * Detect key\n * @param {Event} evt\n */\n detectKey(evt) {\n if (!this.enterKey) {\n return;\n }\n\n if (isKeyPressed(evt, [ENTER_KEY])) {\n this.filter();\n cancelEvt(evt);\n stopEvt(evt);\n } else {\n this.isUserTyping = true;\n root.clearInterval(this.autoFilterTimer);\n this.autoFilterTimer = null;\n }\n }\n\n /**\n * Filter's keyup event: if auto-filter on, detect user is typing and filter\n * columns\n * @param {Event} evt\n */\n onKeyUp(evt) {\n if (!this.autoFilter) {\n return;\n }\n this.isUserTyping = false;\n\n function filter() {\n root.clearInterval(this.autoFilterTimer);\n this.autoFilterTimer = null;\n if (!this.isUserTyping) {\n this.filter();\n this.isUserTyping = null;\n }\n }\n\n if (isKeyPressed(evt,\n [ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY])) {\n root.clearInterval(this.autoFilterTimer);\n this.autoFilterTimer = null;\n } else {\n if (this.autoFilterTimer !== null) {\n return;\n }\n this.autoFilterTimer = root.setInterval(\n filter.bind(this),\n this.autoFilterDelay);\n }\n }\n\n /**\n * Filter's keydown event: if auto-filter on, detect user is typing\n */\n onKeyDown() {\n if (this.autoFilter) {\n this.isUserTyping = true;\n }\n }\n\n /**\n * Filter's focus event\n * @param {Event} evt\n */\n onInpFocus(evt) {\n let elm = targetEvt(evt);\n this.emitter.emit('filter-focus', this, elm);\n }\n\n /**\n * Filter's blur event: if auto-filter on, clear interval on filter blur\n */\n onInpBlur() {\n if (this.autoFilter) {\n this.isUserTyping = false;\n root.clearInterval(this.autoFilterTimer);\n }\n this.emitter.emit('filter-blur', this);\n }\n\n /**\n * Insert filters row at initialization\n */\n _insertFiltersRow() {\n // TODO: prevent filters row generation for popup filters too,\n // to reduce and simplify headers row index adjusting across lib modules\n // (GridLayout, PopupFilter etc)\n if (this.gridLayout) {\n return;\n }\n let fltrow;\n\n let thead = tag(this.dom(), 'thead');\n if (thead.length > 0) {\n fltrow = thead[0].insertRow(this.filtersRowIndex);\n } else {\n fltrow = this.dom().insertRow(this.filtersRowIndex);\n }\n\n fltrow.className = this.fltsRowCssClass;\n\n if (this.isExternalFlt()) {\n fltrow.style.display = NONE;\n }\n\n this.emitter.emit('filters-row-inserted', this, fltrow);\n return fltrow;\n }\n\n /**\n * Initialize filtersless table\n */\n _initNoFilters() {\n if (this.fltGrid) {\n return;\n }\n this.refRow = this.refRow > 0 ? this.refRow - 1 : 0;\n this.nbFilterableRows = this.getRowsNb();\n }\n\n /**\n * Build input filter type\n * @param {Number} colIndex Column index\n * @param {String} cssClass Css class applied to filter\n * @param {DOMElement} container Container DOM element\n */\n _buildInputFilter(colIndex, cssClass, container) {\n let col = this.getFilterType(colIndex);\n let externalFltTgtId = this.isExternalFlt() ?\n this.externalFltIds[colIndex] : null;\n let inpType = col === INPUT ? 'text' : 'hidden';\n let inp = createElm(INPUT,\n ['id', this.buildFilterId(colIndex)],\n ['type', inpType], ['ct', colIndex]);\n\n if (inpType !== 'hidden' && this.watermark) {\n inp.setAttribute('placeholder',\n this.isWatermarkArray ? (this.watermark[colIndex] || '') :\n this.watermark\n );\n }\n inp.className = cssClass || this.fltCssClass;\n addEvt(inp, 'focus', (evt) => this.onInpFocus(evt));\n\n //filter is appended in custom element\n if (externalFltTgtId) {\n elm(externalFltTgtId).appendChild(inp);\n } else {\n container.appendChild(inp);\n }\n\n this.fltIds.push(inp.id);\n\n addEvt(inp, 'keypress', (evt) => this.detectKey(evt));\n addEvt(inp, 'keydown', () => this.onKeyDown());\n addEvt(inp, 'keyup', (evt) => this.onKeyUp(evt));\n addEvt(inp, 'blur', () => this.onInpBlur());\n }\n\n /**\n * Build submit button\n * @param {DOMElement} container Container DOM element\n */\n _buildSubmitButton(container) {\n let btn = createElm(INPUT,\n ['type', 'button'],\n ['value', this.btnText]\n );\n btn.className = this.btnCssClass;\n\n //filter is appended in container element\n container.appendChild(btn);\n\n addEvt(btn, 'click', () => this.filter());\n }\n\n /**\n * Istantiate the collection of features required by the\n * configuration and add them to the features registry. A feature is\n * described by a `class` and `name` fields and and optional `property`\n * field:\n * {\n * class: AClass,\n * name: 'aClass'\n * }\n * @param {Array} [features=[]]\n * @private\n */\n instantiateFeatures(features = []) {\n features.forEach((feature) => {\n // TODO: remove the property field.\n // Due to naming convention inconsistencies, a `property`\n // field is added to allow a conditional instanciation based\n // on that property on TableFilter, if supplied.\n feature.property = feature.property || feature.name;\n if (!this.hasConfig || this[feature.property] === true ||\n feature.enforce === true) {\n let {class: Cls, name} = feature;\n\n this.Mod[name] = this.Mod[name] || new Cls(this);\n }\n });\n }\n\n /**\n * Initialise the passed features collection. A feature is described by a\n * `class` and `name` fields and and optional `property` field:\n * {\n * class: AClass,\n * name: 'aClass'\n * }\n * @param {Array} [features=[]]\n * @private\n */\n initFeatures(features = []) {\n features.forEach((feature) => {\n let {property, name} = feature;\n if (this[property] === true && this.Mod[name]) {\n this.Mod[name].init();\n }\n });\n }\n\n /**\n * Return a feature instance for a given name\n * @param {String} name Name of the feature\n * @return {Object}\n */\n feature(name) {\n return this.Mod[name];\n }\n\n /**\n * Initialise all the extensions defined in the configuration object\n */\n initExtensions() {\n let exts = this.extensions;\n if (exts.length === 0) {\n return;\n }\n\n // Set config's publicPath dynamically for Webpack...\n __webpack_public_path__ = this.basePath;\n\n this.emitter.emit('before-loading-extensions', this);\n\n exts.forEach((ext) => {\n this.loadExtension(ext);\n });\n this.emitter.emit('after-loading-extensions', this);\n }\n\n /**\n * Load an extension module\n * @param {Object} ext Extension config object\n */\n loadExtension(ext) {\n if (!ext || !ext.name || this.hasExtension(ext.name)) {\n return;\n }\n\n let {name, path} = ext;\n let modulePath;\n\n if (name && path) {\n modulePath = ext.path + name;\n } else {\n name = name.replace('.js', '');\n modulePath = 'extensions/{}/{}'.replace(/{}/g, name);\n }\n\n // Require pattern for Webpack\n require(['./' + modulePath], (mod) => {\n /* eslint-disable */\n let inst = new mod.default(this, ext);\n /* eslint-enable */\n inst.init();\n this.ExtRegistry[name] = inst;\n });\n }\n\n /**\n * Get an extension instance\n * @param {String} name Name of the extension\n * @return {Object} Extension instance\n */\n extension(name) {\n return this.ExtRegistry[name];\n }\n\n /**\n * Check passed extension name exists\n * @param {String} name Name of the extension\n * @return {Boolean}\n */\n hasExtension(name) {\n return !isEmpty(this.ExtRegistry[name]);\n }\n\n /**\n * Register the passed extension instance with associated name\n * @param {Object} inst Extension instance\n * @param {String} name Name of the extension\n */\n registerExtension(inst, name) {\n this.ExtRegistry[name] = inst;\n }\n\n /**\n * Destroy all the extensions store in extensions registry\n */\n destroyExtensions() {\n let reg = this.ExtRegistry;\n\n Object.keys(reg).forEach((key) => {\n reg[key].destroy();\n reg[key] = undefined;\n });\n }\n\n /**\n * Load themes defined in the configuration object\n */\n loadThemes() {\n if (!this.hasThemes) {\n return;\n }\n\n let themes = this.themes;\n this.emitter.emit('before-loading-themes', this);\n\n //Default theme config\n if (this.enableDefaultTheme) {\n let defaultTheme = { name: 'default' };\n this.themes.push(defaultTheme);\n }\n\n themes.forEach((theme, i) => {\n let {name, path} = theme;\n let styleId = this.prfxTf + name;\n if (name && !path) {\n path = this.themesPath + name + '/' + name + '.css';\n }\n else if (!name && theme.path) {\n name = 'theme{0}'.replace('{0}', i);\n }\n\n if (!this.isImported(path, 'link')) {\n this.import(styleId, path, null, 'link');\n }\n });\n\n // Enable loader indicator\n this.loader = true;\n\n this.emitter.emit('after-loading-themes', this);\n }\n\n /**\n * Return stylesheet DOM element for a given theme name\n * @return {DOMElement} stylesheet element\n */\n getStylesheet(name = 'default') {\n return elm(this.prfxTf + name);\n }\n\n /**\n * Destroy filter grid\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n let emitter = this.emitter;\n\n if (this.isExternalFlt() && !this.popupFilters) {\n this.removeExternalFlts();\n }\n\n this.destroyExtensions();\n\n this.validateAllRows();\n\n // broadcast destroy event modules and extensions are subscribed to\n emitter.emit('destroy', this);\n\n if (this.fltGrid && !this.gridLayout) {\n this.dom().deleteRow(this.filtersRowIndex);\n }\n\n // unsubscribe to events\n if (this.hasExcludedRows) {\n emitter.off(['after-filtering'], () => this.setExcludeRows());\n }\n if (this.linkedFilters) {\n emitter.off(['after-filtering'], () => this.linkFilters());\n }\n this.emitter.off(['filter-focus'],\n (tf, filter) => this.setActiveFilterId(filter.id));\n\n removeClass(this.dom(), this.prfxTf);\n removeClass(this.dom(), this.prfxResponsive);\n if (this.dom().tHead) {\n removeClass(this.dom().tHead, this.stickyCssClass);\n }\n\n this.nbHiddenRows = 0;\n this.validRowsIndex = [];\n this.fltIds = [];\n this.initialized = false;\n }\n\n /**\n * Remove all the external column filters\n */\n removeExternalFlts() {\n if (!this.isExternalFlt()) {\n return;\n }\n let ids = this.externalFltIds;\n ids.forEach((id) => {\n let externalFlt = elm(id);\n if (externalFlt) {\n externalFlt.innerHTML = '';\n }\n });\n }\n\n /**\n * Check if given column implements a filter with custom options\n * @param {Number} colIndex Column's index\n * @return {Boolean}\n */\n isCustomOptions(colIndex) {\n return this.hasCustomOptions &&\n this.customOptions.cols.indexOf(colIndex) !== -1;\n }\n\n /**\n * Returns an array [[value0, value1 ...],[text0, text1 ...]] with the\n * custom options values and texts\n * @param {Number} colIndex Column's index\n * @return {Array}\n */\n getCustomOptions(colIndex) {\n if (isEmpty(colIndex) || !this.isCustomOptions(colIndex)) {\n return;\n }\n\n let customOptions = this.customOptions;\n let cols = customOptions.cols;\n let optTxt = [], optArray = [];\n let index = cols.indexOf(colIndex);\n let slcValues = customOptions.values[index];\n let slcTexts = customOptions.texts[index];\n let slcSort = customOptions.sorts[index];\n\n for (let r = 0, len = slcValues.length; r < len; r++) {\n optArray.push(slcValues[r]);\n if (slcTexts[r]) {\n optTxt.push(slcTexts[r]);\n } else {\n optTxt.push(slcValues[r]);\n }\n }\n if (slcSort) {\n optArray.sort();\n optTxt.sort();\n }\n return [optArray, optTxt];\n }\n\n /**\n * Filter the table by retrieving the data from each cell in every single\n * row and comparing it to the search term for current column. A row is\n * hidden when all the search terms are not found in inspected row.\n */\n filter() {\n if (!this.fltGrid || !this.initialized) {\n return;\n }\n\n let emitter = this.emitter;\n\n //fire onbefore callback\n this.onBeforeFilter(this);\n emitter.emit('before-filtering', this);\n\n let hiddenRows = 0;\n\n this.validRowsIndex = [];\n // search args\n let searchArgs = this.getFiltersValue();\n\n let eachRow = this.eachRow();\n eachRow(\n (row, k) => {\n // already filtered rows display re-init\n row.style.display = '';\n\n let cells = row.cells;\n let nbCells = cells.length;\n\n let occurence = [],\n isMatch = true,\n //only for single filter search\n isSingleFltMatch = false;\n\n // this loop retrieves cell data\n for (let j = 0; j < nbCells; j++) {\n //searched keyword\n let sA = searchArgs[this.singleFlt ? 0 : j];\n\n if (sA === '') {\n continue;\n }\n\n let cellValue = matchCase(this.getCellValue(cells[j]),\n this.caseSensitive);\n\n //multiple search parameter operator ||\n let sAOrSplit = sA.toString().split(this.orOperator),\n //multiple search || parameter boolean\n hasMultiOrSA = sAOrSplit.length > 1,\n //multiple search parameter operator &&\n sAAndSplit = sA.toString().split(this.anOperator),\n //multiple search && parameter boolean\n hasMultiAndSA = sAAndSplit.length > 1;\n\n //detect operators or array query\n if (isArray(sA) || hasMultiOrSA || hasMultiAndSA) {\n let cS, s;\n let found = false;\n\n if (isArray(sA)) {\n s = sA;\n } else {\n s = hasMultiOrSA ? sAOrSplit : sAAndSplit;\n }\n // isolate search term and check occurence in cell data\n for (let w = 0, len = s.length; w < len; w++) {\n cS = trim(s[w]);\n found = this._match(cS, cellValue, cells[j]);\n\n if (found) {\n emitter.emit('highlight-keyword', this,\n cells[j], cS);\n }\n if ((hasMultiOrSA && found) ||\n (hasMultiAndSA && !found)) {\n break;\n }\n if (isArray(sA) && found) {\n break;\n }\n }\n occurence[j] = found;\n\n }\n //single search parameter\n else {\n occurence[j] =\n this._match(trim(sA), cellValue, cells[j]);\n if (occurence[j]) {\n emitter.emit('highlight-keyword', this, cells[j],\n sA);\n }\n }\n\n if (!occurence[j]) {\n isMatch = false;\n }\n\n if (this.singleFlt &&\n this.singleFltExcludeCols.indexOf(j) === -1 &&\n occurence[j]) {\n isSingleFltMatch = true;\n }\n\n emitter.emit('cell-processed', this, j, cells[j]);\n }//for j\n\n if (isSingleFltMatch) {\n isMatch = true;\n }\n\n this.validateRow(k, isMatch);\n if (!isMatch) {\n hiddenRows++;\n }\n\n emitter.emit('row-processed', this, k,\n this.validRowsIndex.length - 1, isMatch);\n },\n // continue condition\n (row) => row.cells.length !== this.nbCells\n );\n\n this.nbHiddenRows = hiddenRows;\n\n //fire onafterfilter callback\n this.onAfterFilter(this);\n\n emitter.emit('after-filtering', this, searchArgs);\n }\n\n /**\n * Match search term in cell data\n * @param {String} term Search term\n * @param {String} cellValue Cell data\n * @param {DOMElement} cell Current cell\n * @return {Boolean}\n * @private\n */\n _match(term, cellValue, cell) {\n let numData;\n let colIdx = cell.cellIndex;\n let decimal = this.getDecimal(colIdx);\n let reLe = new RegExp(this.leOperator),\n reGe = new RegExp(this.geOperator),\n reL = new RegExp(this.lwOperator),\n reG = new RegExp(this.grOperator),\n reD = new RegExp(this.dfOperator),\n reLk = new RegExp(rgxEsc(this.lkOperator)),\n reEq = new RegExp(this.eqOperator),\n reSt = new RegExp(this.stOperator),\n reEn = new RegExp(this.enOperator),\n // re_an = new RegExp(this.anOperator),\n // re_cr = new RegExp(this.curExp),\n reEm = this.emOperator,\n reNm = this.nmOperator,\n reRe = new RegExp(rgxEsc(this.rgxOperator));\n\n term = matchCase(term, this.caseSensitive);\n\n let occurence = false;\n\n //Search arg operator tests\n let hasLO = reL.test(term),\n hasLE = reLe.test(term),\n hasGR = reG.test(term),\n hasGE = reGe.test(term),\n hasDF = reD.test(term),\n hasEQ = reEq.test(term),\n hasLK = reLk.test(term),\n // hatermN = re_an.test(term),\n hasST = reSt.test(term),\n hasEN = reEn.test(term),\n hasEM = (reEm === term),\n hasNM = (reNm === term),\n hasRE = reRe.test(term);\n\n // Check for dates or resolve date type\n if (this.hasType(colIdx, [DATE])) {\n let dte1, dte2;\n\n let dateType = this.Mod.dateType;\n let isValidDate = dateType.isValid.bind(dateType);\n let parseDate = dateType.parse.bind(dateType);\n let locale = dateType.getLocale(colIdx);\n\n // Search arg dates tests\n let isLDate = hasLO &&\n isValidDate(term.replace(reL, ''), locale);\n let isLEDate = hasLE &&\n isValidDate(term.replace(reLe, ''), locale);\n let isGDate = hasGR &&\n isValidDate(term.replace(reG, ''), locale);\n let isGEDate = hasGE &&\n isValidDate(term.replace(reGe, ''), locale);\n let isDFDate = hasDF &&\n isValidDate(term.replace(reD, ''), locale);\n let isEQDate = hasEQ &&\n isValidDate(term.replace(reEq, ''), locale);\n\n dte1 = parseDate(cellValue, locale);\n\n // lower equal date\n if (isLEDate) {\n dte2 = parseDate(term.replace(reLe, ''), locale);\n occurence = dte1 <= dte2;\n }\n // lower date\n else if (isLDate) {\n dte2 = parseDate(term.replace(reL, ''), locale);\n occurence = dte1 < dte2;\n }\n // greater equal date\n else if (isGEDate) {\n dte2 = parseDate(term.replace(reGe, ''), locale);\n occurence = dte1 >= dte2;\n }\n // greater date\n else if (isGDate) {\n dte2 = parseDate(term.replace(reG, ''), locale);\n occurence = dte1 > dte2;\n }\n // different date\n else if (isDFDate) {\n dte2 = parseDate(term.replace(reD, ''), locale);\n occurence = dte1.toString() !== dte2.toString();\n }\n // equal date\n else if (isEQDate) {\n dte2 = parseDate(term.replace(reEq, ''), locale);\n occurence = dte1.toString() === dte2.toString();\n }\n // searched keyword with * operator doesn't have to be a date\n else if (reLk.test(term)) {// like date\n occurence = contains(term.replace(reLk, ''), cellValue,\n false, this.caseSensitive);\n }\n else if (isValidDate(term)) {\n dte2 = parseDate(term, locale);\n occurence = dte1.toString() === dte2.toString();\n }\n //empty\n else if (hasEM) {\n occurence = !cell.hasChildNodes();\n }\n //non-empty\n else if (hasNM) {\n occurence = cell.hasChildNodes();\n } else {\n occurence = contains(term, cellValue,\n this.isExactMatch(colIdx), this.caseSensitive);\n }\n } else {\n // Convert to number anyways to auto-resolve type in case not\n // defined by configuration. Order is important first try to\n // parse formatted number then fallback to Number coercion\n // to avoid false positives with Number\n numData = parseNb(cellValue, decimal) || Number(cellValue);\n\n // first checks if there is any operator (<,>,<=,>=,!,*,=,{,},\n // rgx:)\n\n //regexp\n if (hasRE) {\n //in case regexp throws\n try {\n //operator is removed\n let srchArg = term.replace(reRe, '');\n let rgx = new RegExp(srchArg);\n occurence = rgx.test(cellValue);\n } catch (ex) {\n occurence = false;\n }\n }\n // lower equal\n else if (hasLE) {\n occurence = numData <= parseNb(\n term.replace(reLe, ''),\n decimal\n );\n }\n //greater equal\n else if (hasGE) {\n occurence = numData >= parseNb(\n term.replace(reGe, ''),\n decimal\n );\n }\n //lower\n else if (hasLO) {\n occurence = numData < parseNb(\n term.replace(reL, ''),\n decimal\n );\n }\n //greater\n else if (hasGR) {\n occurence = numData > parseNb(\n term.replace(reG, ''),\n decimal\n );\n }\n //different\n else if (hasDF) {\n occurence = contains(term.replace(reD, ''), cellValue,\n false, this.caseSensitive) ? false : true;\n }\n //like\n else if (hasLK) {\n occurence = contains(term.replace(reLk, ''), cellValue,\n false, this.caseSensitive);\n }\n //equal\n else if (hasEQ) {\n occurence = contains(term.replace(reEq, ''), cellValue,\n true, this.caseSensitive);\n }\n //starts with\n else if (hasST) {\n occurence = cellValue.indexOf(term.replace(reSt, '')) === 0 ?\n true : false;\n }\n //ends with\n else if (hasEN) {\n let searchArg = term.replace(reEn, '');\n occurence =\n cellValue.lastIndexOf(searchArg, cellValue.length - 1) ===\n (cellValue.length - 1) - (searchArg.length - 1) &&\n cellValue.lastIndexOf(searchArg, cellValue.length - 1)\n > -1 ? true : false;\n }\n //empty\n else if (hasEM) {\n occurence = !cell.hasChildNodes();\n }\n //non-empty\n else if (hasNM) {\n occurence = cell.hasChildNodes();\n } else {\n // If numeric type data, perform a strict equality test and\n // fallback to unformatted number string comparison\n if (numData &&\n this.hasType(colIdx, [NUMBER, FORMATTED_NUMBER]) &&\n !this.singleFlt) {\n // parseNb can return 0 for strings which are not\n // formatted numbers, in that case return the original\n // string. TODO: handle this in parseNb\n term = parseNb(term, decimal) || term;\n occurence = numData === term ||\n contains(term.toString(), numData.toString(),\n this.isExactMatch(colIdx), this.caseSensitive);\n } else {\n // Finally test search term is contained in cell data\n occurence = contains(\n term,\n cellValue,\n this.isExactMatch(colIdx),\n this.caseSensitive,\n this.ignoresDiacritics(colIdx)\n );\n }\n }\n\n }//else\n\n return occurence;\n }\n\n /**\n * Return the data of a specified column\n * @param {Number} colIndex Column index\n * @param {Boolean} [includeHeaders=false] Include headers row\n * @param {Array} [exclude=[]] List of row indexes to be excluded\n * @return Flat list of data for a column\n */\n getColumnData(colIndex, includeHeaders = false, exclude = []) {\n return this.getColValues(colIndex, includeHeaders, true, exclude);\n }\n\n /**\n * Return the values of a specified column\n * @param {Number} colIndex Column index\n * @param {Boolean} [includeHeaders=false] Include headers row\n * @param {Array} [exclude=[]] List of row indexes to be excluded\n * @return Flat list of values for a column\n */\n getColumnValues(colIndex, includeHeaders = false, exclude = []) {\n return this.getColValues(colIndex, includeHeaders, false, exclude);\n }\n\n /**\n * Return the data of a specified column\n * @param {Number} colIndex Column index\n * @param {Boolean} [includeHeaders=false] Include headers row\n * @param {Boolean} [typed=false] Return a typed value\n * @param {Array} [exclude=[]] List of row indexes to be excluded\n * @return {Array} Flat list of data for a column\n * @private\n */\n getColValues(\n colIndex,\n includeHeaders = false,\n typed = false,\n exclude = []\n ) {\n let colValues = [];\n let getContent = typed ? this.getCellData.bind(this) :\n this.getCellValue.bind(this);\n\n if (includeHeaders) {\n colValues.push(this.getHeadersText()[colIndex]);\n }\n\n let eachRow = this.eachRow();\n eachRow((row, i) => {\n // checks if current row index appears in exclude array\n let isExludedRow = exclude.indexOf(i) !== -1;\n let cells = row.cells;\n\n // checks if row has exact cell # and is not excluded\n if (cells.length === this.nbCells && !isExludedRow) {\n let data = getContent(cells[colIndex]);\n colValues.push(data);\n }\n });\n return colValues;\n }\n\n /**\n * Return the filter's value of a specified column\n * @param {Number} index Column index\n * @return {String} Filter value\n */\n getFilterValue(index) {\n if (!this.fltGrid) {\n return;\n }\n let fltValue = '';\n let flt = this.getFilterElement(index);\n if (!flt) {\n return fltValue;\n }\n\n let fltColType = this.getFilterType(index);\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\n fltValue = flt.value;\n }\n //mutiple select\n else if (fltColType === MULTIPLE) {\n fltValue = this.feature('dropdown').getValues(index);\n }\n //checklist\n else if (fltColType === CHECKLIST) {\n fltValue = this.feature('checkList').getValues(index);\n }\n //return an empty string if collection is empty or contains a single\n //empty string\n if (isArray(fltValue) && fltValue.length === 0 ||\n (fltValue.length === 1 && fltValue[0] === '')) {\n fltValue = '';\n }\n\n return fltValue;\n }\n\n /**\n * Return the filters' values\n * @return {Array} List of filters' values\n */\n getFiltersValue() {\n if (!this.fltGrid) {\n return;\n }\n let searchArgs = [];\n\n this.fltIds.forEach((id, i) => {\n let fltValue = this.getFilterValue(i);\n if (isArray(fltValue)) {\n searchArgs.push(fltValue);\n } else {\n searchArgs.push(trim(fltValue));\n }\n });\n return searchArgs;\n }\n\n /**\n * Return the ID of a specified column's filter\n * @param {Number} index Column's index\n * @return {String} ID of the filter element\n */\n getFilterId(index) {\n if (!this.fltGrid) {\n return;\n }\n return this.fltIds[index];\n }\n\n /**\n * Return the list of ids of filters matching a specified type.\n * Note: hidden filters are also returned\n *\n * @param {String} type Filter type string ('input', 'select', 'multiple',\n * 'checklist')\n * @param {Boolean} bool If true returns columns indexes instead of IDs\n * @return {[type]} List of element IDs or column indexes\n */\n getFiltersByType(type, bool) {\n if (!this.fltGrid) {\n return;\n }\n let arr = [];\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\n let fltType = this.getFilterType(i);\n if (fltType === type.toLowerCase()) {\n let a = bool ? i : this.fltIds[i];\n arr.push(a);\n }\n }\n return arr;\n }\n\n /**\n * Return the filter's DOM element for a given column\n * @param {Number} index Column's index\n * @return {DOMElement}\n */\n getFilterElement(index) {\n return elm(this.fltIds[index]);\n }\n\n /**\n * Return the number of cells for a given row index\n * @param {Number} rowIndex Index of the row\n * @return {Number} Number of cells\n */\n getCellsNb(rowIndex = 0) {\n let tr = this.dom().rows[rowIndex >= 0 ? rowIndex : 0];\n return tr ? tr.cells.length : 0;\n }\n\n /**\n * Return the number of working rows starting from reference row if\n * defined\n * @param {Boolean} includeHeaders Include the headers row(s)\n * @return {Number} Number of working rows\n */\n getRowsNb(includeHeaders) {\n let nbRows = this.getWorkingRows().length;\n if (this.dom().tHead) {\n return includeHeaders ?\n nbRows + this.dom().querySelectorAll('thead > tr').length :\n nbRows;\n }\n return includeHeaders ? nbRows : nbRows - this.refRow;\n }\n\n /**\n * Return the collection of the working rows, that is, the rows belonging\n * to the tbody section(s)\n * @returns {Array}\n */\n getWorkingRows() {\n return doc.querySelectorAll(`table#${this.id} > tbody > tr`);\n }\n\n /**\n * Return the text content of a given cell\n * @param {DOMElement} Cell's DOM element\n * @return {String}\n */\n getCellValue(cell) {\n let idx = cell.cellIndex;\n let cellParser = this.cellParser;\n // Invoke cellParser for this column if any\n if (cellParser.cols.indexOf(idx) !== -1) {\n return cellParser.parse(this, cell, idx);\n } else {\n return getText(cell);\n }\n }\n\n /**\n * Return the typed data of a given cell based on the column type definition\n * @param {DOMElement} cell Cell's DOM element\n * @return {String|Number|Date}\n */\n getCellData(cell) {\n let colIndex = cell.cellIndex;\n let value = this.getCellValue(cell);\n\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\n return parseNb(value, this.getDecimal(colIndex));\n }\n else if (this.hasType(colIndex, [NUMBER])) {\n return Number(value);\n }\n else if (this.hasType(colIndex, [DATE])){\n let dateType = this.Mod.dateType;\n return dateType.parse(value, dateType.getLocale(colIndex));\n }\n\n return value;\n }\n\n /**\n * Return the table data based on its columns data type definitions\n * with following structure:\n * [\n * [rowIndex, [data0, data1...]],\n * [rowIndex, [data0, data1...]]\n * ]\n * @param {Boolean} [includeHeaders=false] Include headers row\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\n * @return {Array}\n */\n getData(includeHeaders = false, excludeHiddenCols = false) {\n return this.getTableData(includeHeaders, excludeHiddenCols, true);\n }\n\n /**\n * Return the table values with following structure:\n * [\n * [rowIndex, [value0, value1...]],\n * [rowIndex, [value0, value1...]]\n * ]\n * @param {Boolean} [includeHeaders=false] Include headers row\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\n * @return {Array}\n */\n getValues(includeHeaders = false, excludeHiddenCols = false) {\n return this.getTableData(includeHeaders, excludeHiddenCols, false);\n }\n\n /**\n * Return the table data with following structure:\n * [\n * [rowIndex, [value0, value1...]],\n * [rowIndex, [value0, value1...]]\n * ]\n * @param {Boolean} [includeHeaders=false] Include headers row\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\n * @param {Boolean} [typed=false] Return typed value\n * @return {Array}\n * @private\n *\n * TODO: provide an API returning data in JSON format\n */\n getTableData(\n includeHeaders = false,\n excludeHiddenCols = false,\n typed = false\n ) {\n let tblData = [];\n let getContent = typed ? this.getCellData.bind(this) :\n this.getCellValue.bind(this);\n\n if (includeHeaders) {\n let headers = this.getHeadersText(excludeHiddenCols);\n tblData.push([this.getHeadersRowIndex(), headers]);\n }\n\n let eachRow = this.eachRow();\n eachRow((row, k) => {\n let rowData = [k, []];\n let cells = row.cells;\n for (let j = 0, len = cells.length; j < len; j++) {\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\n if (this.extension('colsVisibility').isColHidden(j)) {\n continue;\n }\n }\n let cellContent = getContent(cells[j]);\n rowData[1].push(cellContent);\n }\n tblData.push(rowData);\n });\n return tblData;\n }\n\n /**\n * Return the filtered table data based on its columns data type definitions\n * with following structure:\n * [\n * [rowIndex, [data0, data1...]],\n * [rowIndex, [data0, data1...]]\n * ]\n * @param {Boolean} [includeHeaders=false] Include headers row\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\n * @return {Array}\n *\n * TODO: provide an API returning data in JSON format\n */\n getFilteredData(includeHeaders = false, excludeHiddenCols = false) {\n return this.filteredData(includeHeaders, excludeHiddenCols, true);\n }\n\n /**\n * Return the filtered table values with following structure:\n * [\n * [rowIndex, [value0, value1...]],\n * [rowIndex, [value0, value1...]]\n * ]\n * @param {Boolean} [includeHeaders=false] Include headers row\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\n * @return {Array}\n *\n * TODO: provide an API returning data in JSON format\n */\n getFilteredValues(includeHeaders = false, excludeHiddenCols = false) {\n return this.filteredData(includeHeaders, excludeHiddenCols, false);\n }\n\n /**\n * Return the filtered data with following structure:\n * [\n * [rowIndex, [value0, value1...]],\n * [rowIndex, [value0, value1...]]\n * ]\n * @param {Boolean} [includeHeaders=false] Include headers row\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\n * @param {Boolean} [typed=false] Return typed value\n * @return {Array}\n * @private\n *\n * TODO: provide an API returning data in JSON format\n */\n filteredData(\n includeHeaders = false,\n excludeHiddenCols = false,\n typed = false\n ) {\n if (this.validRowsIndex.length === 0) {\n return [];\n }\n let rows = this.dom().rows,\n filteredData = [];\n let getContent = typed ? this.getCellData.bind(this) :\n this.getCellValue.bind(this);\n\n if (includeHeaders) {\n let headers = this.getHeadersText(excludeHiddenCols);\n filteredData.push([this.getHeadersRowIndex(), headers]);\n }\n\n let validRows = this.getValidRows(true);\n for (let i = 0; i < validRows.length; i++) {\n let rData = [this.validRowsIndex[i], []],\n cells = rows[this.validRowsIndex[i]].cells;\n for (let k = 0; k < cells.length; k++) {\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\n if (this.extension('colsVisibility').isColHidden(k)) {\n continue;\n }\n }\n let cellValue = getContent(cells[k]);\n rData[1].push(cellValue);\n }\n filteredData.push(rData);\n }\n return filteredData;\n }\n\n /**\n * Return the filtered data for a given column index\n * @param {any} colIndex Colmun's index\n * @param {boolean} [includeHeaders=false] Optional Include headers row\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\n * @return {Array} Flat list of typed values [data0, data1, data2...]\n *\n * TODO: provide an API returning data in JSON format\n */\n getFilteredColumnData(colIndex, includeHeaders = false, exclude = []) {\n return this.getFilteredDataCol(\n colIndex, includeHeaders, true, exclude, false);\n }\n\n /**\n * Return the filtered and visible data for a given column index\n * @param {any} colIndex Colmun's index\n * @param {boolean} [includeHeaders=false] Optional Include headers row\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\n * @return {Array} Flat list of typed values [data0, data1, data2...]\n *\n * TODO: provide an API returning data in JSON format\n */\n getVisibleColumnData(colIndex, includeHeaders = false, exclude = []) {\n return this.getFilteredDataCol(\n colIndex, includeHeaders, true, exclude, true);\n }\n\n /**\n * Return the filtered values for a given column index\n * @param {any} colIndex Colmun's index\n * @param {boolean} [includeHeaders=false] Optional Include headers row\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\n *\n * TODO: provide an API returning data in JSON format\n */\n getFilteredColumnValues(colIndex, includeHeaders = false, exclude = []) {\n return this.getFilteredDataCol(\n colIndex, includeHeaders, false, exclude, false);\n }\n\n /**\n * Return the filtered and visible values for a given column index\n * @param {any} colIndex Colmun's index\n * @param {boolean} [includeHeaders=false] Optional Include headers row\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\n *\n * TODO: provide an API returning data in JSON format\n */\n getVisibleColumnValues(colIndex, includeHeaders = false, exclude = []) {\n return this.getFilteredDataCol(\n colIndex, includeHeaders, false, exclude, true);\n }\n\n /**\n * Return the filtered data for a given column index\n * @param {Number} colIndex Colmun's index\n * @param {Boolean} [includeHeaders=false] Include headers row\n * @param {Boolean} [typed=false] Return typed value\n * @param {Array} [exclude=[]] List of row indexes to be excluded\n * @param {Boolean} [visible=true] Return only filtered and visible data\n * (relevant for paging)\n * @return {Array} Flat list of values ['val0','val1','val2'...]\n * @private\n *\n * TODO: provide an API returning data in JSON format\n */\n getFilteredDataCol(\n colIndex,\n includeHeaders = false,\n typed = false,\n exclude = [],\n visible = true\n ) {\n if (isUndef(colIndex)) {\n return [];\n }\n\n let rows = this.dom().rows;\n let getContent = typed ? this.getCellData.bind(this) :\n this.getCellValue.bind(this);\n\n // ensure valid rows index do not contain excluded rows and row is\n // displayed\n let validRows = this.getValidRows(true).filter((rowIdx) => {\n return exclude.indexOf(rowIdx) === -1 &&\n (visible ?\n this.getRowDisplay(rows[rowIdx]) !== 'none' :\n true);\n });\n\n // convert column value to expected type if necessary\n let validColValues = validRows.map((rowIdx) => {\n return getContent(rows[rowIdx].cells[colIndex]);\n });\n\n if (includeHeaders) {\n validColValues.unshift(this.getHeadersText()[colIndex]);\n }\n\n return validColValues;\n }\n\n /**\n * Get the display value of a row\n * @param {HTMLTableRowElement} row DOM element of the row\n * @return {String} Usually 'none' or ''\n */\n getRowDisplay(row) {\n return row.style.display;\n }\n\n /**\n * Validate/invalidate row by setting the 'validRow' attribute on the row\n * @param {Number} rowIndex Index of the row\n * @param {Boolean} isValid\n */\n validateRow(rowIndex, isValid) {\n let row = this.dom().rows[rowIndex];\n if (!row || !isBoolean(isValid)) {\n return;\n }\n\n // always visible rows are valid\n if (this.excludeRows.indexOf(rowIndex) !== -1) {\n isValid = true;\n }\n\n let displayFlag = isValid ? '' : NONE,\n validFlag = isValid ? 'true' : 'false';\n row.style.display = displayFlag;\n\n if (this.paging) {\n row.setAttribute('validRow', validFlag);\n }\n\n if (isValid) {\n if (this.validRowsIndex.indexOf(rowIndex) === -1) {\n this.validRowsIndex.push(rowIndex);\n }\n\n this.onRowValidated(this, rowIndex);\n this.emitter.emit('row-validated', this, rowIndex);\n }\n }\n\n /**\n * Validate all filterable rows\n */\n validateAllRows() {\n if (!this.initialized) {\n return;\n }\n this.validRowsIndex = [];\n for (let k = this.refRow; k < this.nbFilterableRows; k++) {\n this.validateRow(k, true);\n }\n }\n\n /**\n * Set search value to a given filter\n * @param {Number} index Column's index\n * @param {String or Array} query searcharg Search term\n */\n setFilterValue(index, query = '') {\n if (!this.fltGrid) {\n return;\n }\n let slc = this.getFilterElement(index),\n fltColType = this.getFilterType(index);\n\n if (!slc) {\n return;\n }\n\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\n if (this.loadFltOnDemand && !this.initialized) {\n this.emitter.emit('build-select-filter', this, index,\n this.linkedFilters, this.isExternalFlt());\n }\n slc.value = query;\n }\n //multiple selects\n else if (fltColType === MULTIPLE) {\n let values = isArray(query) ? query :\n query.split(' ' + this.orOperator + ' ');\n\n if (this.loadFltOnDemand && !this.initialized) {\n this.emitter.emit('build-select-filter', this, index,\n this.linkedFilters, this.isExternalFlt());\n }\n\n this.emitter.emit('select-options', this, index, values);\n }\n //checklist\n else if (fltColType === CHECKLIST) {\n let values = [];\n if (this.loadFltOnDemand && !this.initialized) {\n this.emitter.emit('build-checklist-filter', this, index,\n this.linkedFilters);\n }\n if (isArray(query)) {\n values = query;\n } else {\n query = matchCase(query, this.caseSensitive);\n values = query.split(' ' + this.orOperator + ' ');\n }\n\n this.emitter.emit('select-checklist-options', this, index, values);\n }\n }\n\n /**\n * Make passed or default working table element width fixed\n * @param {TableElement} tbl optional table DOM element\n */\n setFixedLayout(tbl = this.dom()) {\n let colWidths = this.colWidths;\n let tableWidth = tbl.clientWidth;\n\n if (colWidths.length > 0) {\n let defaultWidth = this.defaultColWidth;\n tableWidth = colWidths\n .reduce((x, y) =>\n parseInt((x || defaultWidth), 10) +\n parseInt((y || defaultWidth), 10)\n );\n }\n\n tbl.style.width = `${tableWidth}px`;\n tbl.style.tableLayout = 'fixed';\n }\n\n /**\n * Set passed or default working table columns' widths with configuration\n * values\n * @param {TableElement} tbl optional table DOM element\n */\n setColWidths(tbl = this.dom()) {\n let colWidths = this.colWidths;\n if (colWidths.length === 0) {\n return;\n }\n\n let colTags = tag(tbl, 'col');\n let tblHasColTag = colTags.length > 0;\n let frag = !tblHasColTag ? doc.createDocumentFragment() : null;\n\n this.eachCol((k) => {\n let col;\n if (tblHasColTag) {\n col = colTags[k];\n } else {\n col = createElm('col');\n frag.appendChild(col);\n }\n col.style.width = colWidths[k];\n });\n\n if (!tblHasColTag) {\n tbl.insertBefore(frag, tbl.firstChild);\n }\n }\n\n /**\n * Exclude rows from actions\n */\n setExcludeRows() {\n if (!this.hasExcludedRows) {\n return;\n }\n this.excludeRows.forEach((rowIdx) => this.validateRow(rowIdx, true));\n }\n\n /**\n * Clear all the filters' values\n */\n clearFilters() {\n if (!this.fltGrid) {\n return;\n }\n\n this.emitter.emit('before-clearing-filters', this);\n this.onBeforeReset(this, this.getFiltersValue());\n\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\n this.setFilterValue(i, '');\n }\n\n this.filter();\n\n this.onAfterReset(this);\n this.emitter.emit('after-clearing-filters', this);\n }\n\n /**\n * Return the ID of the current active filter\n * @return {String}\n */\n getActiveFilterId() {\n return this.activeFilterId;\n }\n\n /**\n * Set the ID of the current active filter\n * @param {String} filterId Element ID\n */\n setActiveFilterId(filterId) {\n this.activeFilterId = filterId;\n }\n\n /**\n * Return the column index for a given filter ID\n * @param {string} [filterId=''] Filter ID\n * @return {Number} Column index\n */\n getColumnIndexFromFilterId(filterId = '') {\n let idx = filterId.split('_')[0];\n idx = idx.split(this.prfxFlt)[1];\n return parseInt(idx, 10);\n }\n\n /**\n * Build filter element ID for a given column index\n * @param {any} colIndex\n * @return {String} Filter element ID string\n * @private\n */\n buildFilterId(colIndex) {\n return `${this.prfxFlt}${colIndex}_${this.id}`;\n }\n\n /**\n * Check if has external filters\n * @returns {Boolean}\n * @private\n */\n isExternalFlt() {\n return this.externalFltIds.length > 0;\n }\n\n /**\n * Returns styles path\n * @returns {String}\n * @private\n */\n getStylePath() {\n return defaultsStr(this.config.style_path, this.basePath + 'style/');\n }\n\n /**\n * Returns main stylesheet path\n * @returns {String}\n * @private\n */\n getStylesheetPath() {\n return defaultsStr(this.config.stylesheet,\n this.getStylePath() + 'tablefilter.css');\n }\n\n /**\n * Returns themes path\n * @returns {String}\n * @private\n */\n getThemesPath() {\n return defaultsStr(this.config.themes_path,\n this.getStylePath() + 'themes/');\n }\n\n /**\n * Make specified column's filter active\n * @param colIndex Index of a column\n */\n activateFilter(colIndex) {\n if (isUndef(colIndex)) {\n return;\n }\n this.setActiveFilterId(this.getFilterId(colIndex));\n }\n\n /**\n * Refresh the filters subject to linking ('select', 'multiple',\n * 'checklist' type)\n */\n linkFilters() {\n if (!this.linkedFilters || !this.activeFilterId) {\n return;\n }\n let slcA1 = this.getFiltersByType(SELECT, true),\n slcA2 = this.getFiltersByType(MULTIPLE, true),\n slcA3 = this.getFiltersByType(CHECKLIST, true),\n slcIndex = slcA1.concat(slcA2);\n slcIndex = slcIndex.concat(slcA3);\n\n slcIndex.forEach((colIdx) => {\n let curSlc = this.getFilterElement(colIdx);\n let slcSelectedValue = this.getFilterValue(colIdx);\n\n //1st option needs to be inserted\n if (this.loadFltOnDemand) {\n let opt0 = createOpt(this.getClearFilterText(colIdx), '');\n curSlc.innerHTML = '';\n curSlc.appendChild(opt0);\n }\n\n if (slcA3.indexOf(colIdx) !== -1) {\n this.emitter.emit('build-checklist-filter', this, colIdx,\n true);\n } else {\n this.emitter.emit('build-select-filter', this, colIdx,\n true);\n }\n\n this.setFilterValue(colIdx, slcSelectedValue);\n });\n }\n\n /**\n * Determine if passed filter column implements exact query match\n * @param {Number} colIndex Column index\n * @return {Boolean}\n */\n isExactMatch(colIndex) {\n let fltType = this.getFilterType(colIndex);\n return this.exactMatchByCol[colIndex] || this.exactMatch ||\n fltType !== INPUT;\n }\n\n /**\n * Check if passed row is valid\n * @param {Number} rowIndex Row index\n * @return {Boolean}\n */\n isRowValid(rowIndex) {\n return this.getValidRows().indexOf(rowIndex) !== -1;\n }\n\n /**\n * Check if passed row is visible\n * @param {Number} rowIndex Row index\n * @return {Boolean}\n */\n isRowDisplayed(rowIndex) {\n let row = this.dom().rows[rowIndex];\n return this.getRowDisplay(row) === '';\n }\n\n /**\n * Check if specified column filter ignores diacritics.\n * Note this is only applicable to input filter types.\n * @param {Number} colIndex Column index\n * @return {Boolean}\n */\n ignoresDiacritics(colIndex) {\n let ignoreDiac = this.ignoreDiacritics;\n if (isArray(ignoreDiac)) {\n return ignoreDiac[colIndex];\n }\n return Boolean(ignoreDiac);\n }\n\n /**\n * Return clear all text for specified filter column\n * @param {Number} colIndex Column index\n * @return {String}\n */\n getClearFilterText(colIndex) {\n let clearText = this.clearFilterText;\n if (isArray(clearText)) {\n return clearText[colIndex];\n }\n return clearText;\n }\n\n /**\n * Column iterator invoking continue and break condition callbacks if any\n * then calling supplied callback for each item\n * @param {Function} [fn=EMPTY_FN] callback\n * @param {Function} [continueFn=EMPTY_FN] continue condition callback\n * @param {Function} [breakFn=EMPTY_FN] break condition callback\n */\n eachCol(fn = EMPTY_FN, continueFn = EMPTY_FN, breakFn = EMPTY_FN) {\n let len = this.getCellsNb(this.refRow);\n for (let i = 0; i < len; i++) {\n if (continueFn(i) === true) {\n continue;\n }\n if (breakFn(i) === true) {\n break;\n }\n fn(i);\n }\n }\n\n /**\n * Rows iterator starting from supplied row index or defaulting to reference\n * row index. Closure function accepts a callback function and optional\n * continue and break callbacks.\n * @param {Number} startIdx Row index from which filtering starts\n */\n eachRow(startIdx = this.refRow) {\n return (fn = EMPTY_FN, continueFn = EMPTY_FN, breakFn = EMPTY_FN) => {\n let rows = this.dom().rows;\n let len = this.getRowsNb(true);\n for (let i = startIdx; i < len; i++) {\n if (continueFn(rows[i], i) === true) {\n continue;\n }\n if (breakFn(rows[i], i) === true) {\n break;\n }\n fn(rows[i], i);\n }\n };\n }\n\n /**\n * Check if passed script or stylesheet is already imported\n * @param {String} filePath Ressource path\n * @param {String} type Possible values: 'script' or 'link'\n * @return {Boolean}\n */\n isImported(filePath, type = 'script') {\n let imported = false,\n attr = type === 'script' ? 'src' : 'href',\n files = tag(doc, type);\n for (let i = 0, len = files.length; i < len; i++) {\n if (isUndef(files[i][attr])) {\n continue;\n }\n if (files[i][attr].match(filePath)) {\n imported = true;\n break;\n }\n }\n return imported;\n }\n\n /**\n * Import script or stylesheet\n * @param {String} fileId Ressource ID\n * @param {String} filePath Ressource path\n * @param {Function} callback Callback\n * @param {String} type Possible values: 'script' or 'link'\n */\n import(fileId, filePath, callback, type = 'script') {\n if (this.isImported(filePath, type)) {\n return;\n }\n let o = this,\n isLoaded = false,\n file,\n head = tag(doc, 'head')[0];\n\n if (type.toLowerCase() === 'link') {\n file = createElm('link',\n ['id', fileId], ['type', 'text/css'],\n ['rel', 'stylesheet'], ['href', filePath]\n );\n } else {\n file = createElm('script',\n ['id', fileId],\n ['type', 'text/javascript'], ['src', filePath]\n );\n }\n\n //Browser <> IE onload event works only for scripts, not for stylesheets\n file.onload = file.onreadystatechange = () => {\n if (!isLoaded &&\n (!this.readyState || this.readyState === 'loaded' ||\n this.readyState === 'complete')) {\n isLoaded = true;\n if (typeof callback === 'function') {\n callback.call(null, o);\n }\n }\n };\n file.onerror = () => {\n throw new Error(`TableFilter could not load: ${filePath}`);\n };\n head.appendChild(file);\n }\n\n /**\n * Check if table has filters grid\n * @return {Boolean}\n */\n isInitialized() {\n return this.initialized;\n }\n\n /**\n * Get list of filter IDs\n * @return {Array} List of filters ids\n */\n getFiltersId() {\n return this.fltIds || [];\n }\n\n /**\n * Get filtered (valid) rows indexes\n * @param {Boolean} reCalc Force calculation of filtered rows list\n * @return {Array} List of row indexes\n */\n getValidRows(reCalc) {\n if (!reCalc) {\n return this.validRowsIndex;\n }\n\n this.validRowsIndex = [];\n\n let eachRow = this.eachRow();\n eachRow((row) => {\n if (!this.paging) {\n if (this.getRowDisplay(row) !== NONE) {\n this.validRowsIndex.push(row.rowIndex);\n }\n } else {\n if (row.getAttribute('validRow') === 'true' ||\n row.getAttribute('validRow') === null) {\n this.validRowsIndex.push(row.rowIndex);\n }\n }\n });\n return this.validRowsIndex;\n }\n\n /**\n * Get the index of the row containing the filters\n * @return {Number}\n */\n getFiltersRowIndex() {\n return this.filtersRowIndex;\n }\n\n /**\n * Get the index of the headers row\n * @return {Number}\n */\n getHeadersRowIndex() {\n return this.headersRow;\n }\n\n /**\n * Get the row index from where the filtering process start (1st filterable\n * row)\n * @return {Number}\n */\n getStartRowIndex() {\n return this.refRow;\n }\n\n /**\n * Get the index of the last row\n * @return {Number}\n */\n getLastRowIndex() {\n let nbRows = this.getRowsNb(true);\n return (nbRows - 1);\n }\n\n /**\n * Determine whether the specified column has one of the passed types\n * @param {Number} colIndex Column index\n * @param {Array} [types=[]] List of column types\n * @return {Boolean}\n */\n hasType(colIndex, types = []) {\n if (this.colTypes.length === 0) {\n return false;\n }\n let colType = this.colTypes[colIndex];\n if (isObj(colType)) {\n colType = colType.type;\n }\n return types.indexOf(colType) !== -1;\n }\n\n /**\n * Get the header DOM element for a given column index\n * @param {Number} colIndex Column index\n * @return {Element}\n */\n getHeaderElement(colIndex) {\n let table = this.gridLayout ? this.Mod.gridLayout.headTbl : this.dom();\n let tHead = tag(table, 'thead');\n let rowIdx = this.getHeadersRowIndex();\n let header;\n if (tHead.length === 0) {\n header = table.rows[rowIdx].cells[colIndex];\n }\n if (tHead.length === 1) {\n header = tHead[0].rows[rowIdx].cells[colIndex];\n }\n return header;\n }\n\n /**\n * Return the list of headers' text\n * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns\n * @return {Array} list of headers' text\n */\n getHeadersText(excludeHiddenCols = false) {\n let headers = [];\n this.eachCol(\n (j) => {\n let header = this.getHeaderElement(j);\n let headerText = getFirstTextNode(header);\n headers.push(headerText);\n },\n // continue condition function\n (j) => {\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\n return this.extension('colsVisibility').isColHidden(j);\n }\n return false;\n }\n );\n return headers;\n }\n\n /**\n * Return the filter type for a specified column\n * @param {Number} colIndex Column's index\n * @return {String}\n */\n getFilterType(colIndex) {\n return this.filterTypes[colIndex];\n }\n\n /**\n * Get the total number of filterable rows\n * @return {Number}\n */\n getFilterableRowsNb() {\n return this.getRowsNb(false);\n }\n\n /**\n * Return the total number of valid rows\n * @param {Boolean} [reCalc=false] Forces calculation of filtered rows\n * @return {Number}\n */\n getValidRowsNb(reCalc = false) {\n return this.getValidRows(reCalc).length;\n }\n\n /**\n * Return the working DOM element\n * @return {HTMLTableElement}\n */\n dom() {\n return this.tbl;\n }\n\n /**\n * Return the decimal separator for supplied column as per column type\n * configuration or global setting\n * @param {Number} colIndex Column index\n * @returns {String} '.' or ','\n */\n getDecimal(colIndex) {\n let decimal = this.decimalSeparator;\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\n let colType = this.colTypes[colIndex];\n if (colType.hasOwnProperty('decimal')) {\n decimal = colType.decimal;\n }\n }\n return decimal;\n }\n\n /**\n * Get the configuration object (literal object)\n * @return {Object}\n */\n config() {\n return this.cfg;\n }\n}\n","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Traditional Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-TW')\n *\n */\naddLocale('zh-TW', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年',\n 'weekdays': '星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}點{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分鐘?,點|時,日|號,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '後天', 'value': 2 },\n { 'name': 'day', 'src': '大後天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '這', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-TW\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Simplified Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-CN')\n *\n */\naddLocale('zh-CN', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒钟,分钟,小时,天,个星期|周,个月,年',\n 'weekdays': '星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}点{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分钟?,点|时,日|号,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '后天', 'value': 2 },\n { 'name': 'day', 'src': '大后天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '后', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '这', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-CN\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Swedish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('sv')\n *\n */\naddLocale('sv', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et',\n 'months': 'jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag',\n 'numerals': 'noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio',\n 'tokens': 'den,för|for',\n 'articles': 'den',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar', 'value': -2 },\n { 'name': 'day', 'src': 'går|i går|igår|gar|i gar|igar', 'value': -1 },\n { 'name': 'day', 'src': 'dag|i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'morgon|i morgon|imorgon', 'value': 1 },\n { 'name': 'day', 'src': 'över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon', 'value': 2 },\n { 'name': 'sign', 'src': 'sedan|sen', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i förra|förra|i forra|forra', 'value': -1 },\n { 'name': 'shift', 'src': 'denna', 'value': 0 },\n { 'name': 'shift', 'src': 'nästa|nasta', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"sv\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Russian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ru')\n *\n */\naddLocale('ru', {\n 'firstDayOfWeekYear': 1,\n 'units': 'миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году',\n 'months': 'янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь',\n 'weekdays': 'воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб',\n 'numerals': 'ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять',\n 'tokens': 'в|на,г\\\\.?(?:ода)?',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy} г.',\n 'long': '{d} {month} {yyyy} г., {time}',\n 'full': '{weekday}, {d} {month} {yyyy} г., {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'в',\n 'ampm': ' утра, вечера',\n 'modifiers': [\n { 'name': 'day', 'src': 'позавчера', 'value': -2 },\n { 'name': 'day', 'src': 'вчера', 'value': -1 },\n { 'name': 'day', 'src': 'сегодня', 'value': 0 },\n { 'name': 'day', 'src': 'завтра', 'value': 1 },\n { 'name': 'day', 'src': 'послезавтра', 'value': 2 },\n { 'name': 'sign', 'src': 'назад', 'value': -1 },\n { 'name': 'sign', 'src': 'через', 'value': 1 },\n { 'name': 'shift', 'src': 'прошл:ый|ой|ом', 'value': -1 },\n { 'name': 'shift', 'src': 'следующ:ий|ей|ем', 'value': 1 }\n ],\n 'relative': function(num, unit, ms, format) {\n var numberWithUnit, last = num.toString().slice(-1), mult;\n switch(true) {\n case num >= 11 && num <= 15: mult = 3; break;\n case last == 1: mult = 1; break;\n case last >= 2 && last <= 4: mult = 2; break;\n default: mult = 3;\n }\n numberWithUnit = num + ' ' + this['units'][(mult * 8) + unit];\n switch(format) {\n case 'duration': return numberWithUnit;\n case 'past': return numberWithUnit + ' назад';\n case 'future': return 'через ' + numberWithUnit;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ],\n 'timeFrontParse': [\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ru\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Portuguese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pt')\n *\n */\naddLocale('pt', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s',\n 'months': 'jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|',\n 'weekdays': 'dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado',\n 'numerals': 'zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez',\n 'tokens': 'a,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{Weekday}, {d} de {Month} de {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'às',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteontem', 'value': -2 },\n { 'name': 'day', 'src': 'ontem', 'value': -1 },\n { 'name': 'day', 'src': 'hoje', 'value': 0 },\n { 'name': 'day', 'src': 'amanh:ã|a', 'value': 1 },\n { 'name': 'sign', 'src': 'atrás|atras|há|ha', 'value': -1 },\n { 'name': 'sign', 'src': 'daqui a', 'value': 1 },\n { 'name': 'shift', 'src': 'passad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {1?} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pt\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Polish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pl')\n *\n */\naddLocale('pl', {\n 'plural': true,\n 'units': 'milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat',\n 'months': 'sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień',\n 'weekdays': 'nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę',\n 'numerals': 'zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć',\n 'tokens': 'w|we,roku',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full' : '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'o',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'przedwczoraj', 'value': -2 },\n { 'name': 'day', 'src': 'wczoraj', 'value': -1 },\n { 'name': 'day', 'src': 'dzisiaj|dziś', 'value': 0 },\n { 'name': 'day', 'src': 'jutro', 'value': 1 },\n { 'name': 'day', 'src': 'pojutrze', 'value': 2 },\n { 'name': 'sign', 'src': 'temu|przed', 'value': -1 },\n { 'name': 'sign', 'src': 'za', 'value': 1 },\n { 'name': 'shift', 'src': 'zeszły|zeszła|ostatni|ostatnia', 'value': -1 },\n { 'name': 'shift', 'src': 'następny|następna|następnego|przyszły|przyszła|przyszłego', 'value': 1 }\n ],\n 'relative': function (num, unit, ms, format) {\n // special cases for relative days\n var DAY = 4;\n if (unit === DAY) {\n if (num === 1 && format === 'past') return 'wczoraj';\n if (num === 1 && format === 'future') return 'jutro';\n if (num === 2 && format === 'past') return 'przedwczoraj';\n if (num === 2 && format === 'future') return 'pojutrze';\n }\n\n var mult;\n var last = +num.toFixed(0).slice(-1);\n var last2 = +num.toFixed(0).slice(-2);\n switch (true) {\n case num === 1: mult = 0; break;\n case last2 >= 12 && last2 <= 14: mult = 2; break;\n case last >= 2 && last <= 4: mult = 1; break;\n default: mult = 2;\n }\n var text = this['units'][(mult * 8) + unit];\n var prefix = num + ' ';\n\n // changing to accusative case for 'past' and 'future' formats\n // (only singular feminine unit words are different in accusative, each of which ends with 'a')\n if ((format === 'past' || format === 'future') && num === 1) {\n text = text.replace(/a$/, 'ę');\n }\n\n text = prefix + text;\n switch (format) {\n case 'duration': return text;\n case 'past': return text + ' temu';\n case 'future': return 'za ' + text;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{shift} {unit:5-7}',\n '{0} {shift?} {weekday}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{date} {months} {year?} {1?}',\n '{0?} {shift?} {weekday}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pl\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Norwegian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('no')\n *\n */\naddLocale('no', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember',\n 'weekdays': 'søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag',\n 'numerals': 'en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short':'d. {d}. {month} {yyyy}',\n 'long': 'den {d}. {month} {yyyy} {H}:{mm}',\n 'full': '{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'overimorgen|overmorgen|over i morgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i siste|siste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'neste', 'value': 1 }\n ],\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{date} {month}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date?} {month}\\\\.? {year}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"no\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Dutch locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('nl')\n *\n */\naddLocale('nl', {\n 'plural': true,\n 'units': 'milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar',\n 'months': 'jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za',\n 'numerals': 'nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {time}',\n 'full': '{weekday} {d} {Month} {yyyy} {time}',\n 'stamp': '{dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': \"'s,om\",\n 'modifiers': [\n { 'name': 'day', 'src': 'gisteren', 'value': -1 },\n { 'name': 'day', 'src': 'vandaag', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'overmorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'geleden', 'value': -1 },\n { 'name': 'sign', 'src': 'vanaf nu', 'value': 1 },\n { 'name': 'shift', 'src': 'laatste|vorige|afgelopen', 'value': -1 },\n { 'name': 'shift', 'src': 'volgend:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"nl\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Korean locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ko')\n *\n */\naddLocale('ko', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'units': '밀리초,초,분,시간,일,주,개월|달,년|해',\n 'weekdays': '일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|',\n 'numerals': '영|제로,일|한,이,삼,사,오,육,칠,팔,구,십',\n 'short': '{yyyy}.{MM}.{dd}',\n 'medium': '{yyyy}년 {M}월 {d}일',\n 'long': '{yyyy}년 {M}월 {d}일 {time}',\n 'full': '{yyyy}년 {M}월 {d}일 {weekday} {time}',\n 'stamp': '{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}',\n 'time': '{tt} {h}시 {mm}분',\n 'past': '{num}{unit} {sign}',\n 'future': '{num}{unit} {sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',초,분,시,일,,월,년',\n 'ampm': '오전,오후',\n 'modifiers': [\n { 'name': 'day', 'src': '그저께', 'value': -2 },\n { 'name': 'day', 'src': '어제', 'value': -1 },\n { 'name': 'day', 'src': '오늘', 'value': 0 },\n { 'name': 'day', 'src': '내일', 'value': 1 },\n { 'name': 'day', 'src': '모레', 'value': 2 },\n { 'name': 'sign', 'src': '전', 'value': -1 },\n { 'name': 'sign', 'src': '후', 'value': 1 },\n { 'name': 'shift', 'src': '지난|작', 'value': -1 },\n { 'name': 'shift', 'src': '이번|올', 'value': 0 },\n { 'name': 'shift', 'src': '다음|내', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit} {sign}',\n '{shift?} {unit:5-7}',\n '{year?} {month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{year?} {month?} {date} {weekday?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ko\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Japanese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ja')\n *\n */\naddLocale('ja', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'units': 'ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度',\n 'weekdays': '日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'timeSuffixes': ',秒,分,時,日,,月,年度?',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{time} {weekday}',\n 'stamp': '{yyyy}年{M}月{d}日 {H}:{mm} {dow}',\n 'time': '{tt}{h}時{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'ampm': '午前,午後',\n 'modifiers': [\n { 'name': 'day', 'src': '一昨々日|前々々日', 'value': -3 },\n { 'name': 'day', 'src': '一昨日|おととい|前々日', 'value': -2 },\n { 'name': 'day', 'src': '昨日|前日', 'value': -1 },\n { 'name': 'day', 'src': '今日|当日|本日', 'value': 0 },\n { 'name': 'day', 'src': '明日|翌日|次日', 'value': 1 },\n { 'name': 'day', 'src': '明後日|翌々日', 'value': 2 },\n { 'name': 'day', 'src': '明々後日|翌々々日', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'edge', 'src': '始|初日|頭', 'value': -2 },\n { 'name': 'edge', 'src': '末|尻', 'value': 2 },\n { 'name': 'edge', 'src': '末日', 'value': 1 },\n { 'name': 'shift', 'src': '一昨々|前々々', 'value': -3 },\n { 'name': 'shift', 'src': '一昨|前々|先々', 'value': -2 },\n { 'name': 'shift', 'src': '先|昨|去|前', 'value': -1 },\n { 'name': 'shift', 'src': '今|本|当', 'value': 0 },\n { 'name': 'shift', 'src': '来|明|翌|次', 'value': 1 },\n { 'name': 'shift', 'src': '明後|翌々|次々|再来|さ来', 'value': 2 },\n { 'name': 'shift', 'src': '明々後|翌々々', 'value': 3 }\n ],\n 'parse': [\n '{month}{edge}',\n '{num}{unit}{sign}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{unit:5}{weekday?}',\n '{shift}{unit:7}{month}{edge}',\n '{shift}{unit:7}{month?}{date?}',\n '{shift}{unit:6}{edge?}{date?}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ja\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Italian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('it')\n *\n */\naddLocale('it', {\n 'plural': true,\n 'units': 'millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i',\n 'months': 'gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|',\n 'weekdays': 'dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|',\n 'numerals': \"zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci\",\n 'tokens': \"l'|la|il\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'alle',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'ieri', 'value': -1 },\n { 'name': 'day', 'src': 'oggi', 'value': 0 },\n { 'name': 'day', 'src': 'domani', 'value': 1 },\n { 'name': 'day', 'src': 'dopodomani', 'value': 2 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'da adesso', 'value': 1 },\n { 'name': 'shift', 'src': 'scors:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'prossim:o|a', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"it\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * French locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('fr')\n *\n */\naddLocale('fr', {\n 'plural': true,\n 'units': 'milliseconde:|s,seconde:|s,minute:|s,heure:|s,jour:|s,semaine:|s,mois,an:|s|née|nee',\n 'months': 'janv:ier|,févr:ier|+fevr:ier|,mars,avr:il|,mai,juin,juil:let|,août,sept:embre|,oct:obre|,nov:embre|,déc:embre|+dec:embre|',\n 'weekdays': 'dim:anche|,lun:di|,mar:di|,mer:credi|,jeu:di|,ven:dredi|,sam:edi|',\n 'numerals': 'zéro,un:|e,deux,trois,quatre,cinq,six,sept,huit,neuf,dix',\n 'tokens': \"l'|la|le,er\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'à',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'hier', 'value': -1 },\n { 'name': 'day', 'src': \"aujourd'hui\", 'value': 0 },\n { 'name': 'day', 'src': 'demain', 'value': 1 },\n { 'name': 'sign', 'src': 'il y a', 'value': -1 },\n { 'name': 'sign', 'src': \"dans|d'ici\", 'value': 1 },\n { 'name': 'shift', 'src': 'derni:èr|er|ère|ere', 'value': -1 },\n { 'name': 'shift', 'src': 'prochain:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}'\n ],\n 'timeParse': [\n '{day|weekday} {shift?}',\n '{weekday?},? {0?} {date}{1?} {months}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{0?} {weekday} {shift}',\n '{weekday?},? {0?} {date}{1?} {months}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"fr\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Finnish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('fi')\n *\n */\naddLocale('fi', {\n 'plural': true,\n 'units': 'millisekun:ti|tia|nin|teja|tina,sekun:ti|tia|nin|teja|tina,minuut:ti|tia|in|teja|tina,tun:ti|tia|nin|teja|tina,päiv:ä|ää|än|iä|änä,viik:ko|koa|on|olla|koja|kona,kuukau:si|tta|den+kuussa,vuo:si|tta|den|sia|tena|nna',\n 'months': 'tammi:kuuta||kuu,helmi:kuuta||kuu,maalis:kuuta||kuu,huhti:kuuta||kuu,touko:kuuta||kuu,kesä:kuuta||kuu,heinä:kuuta||kuu,elo:kuuta||kuu,syys:kuuta||kuu,loka:kuuta||kuu,marras:kuuta||kuu,joulu:kuuta||kuu',\n 'weekdays': 'su:nnuntai||nnuntaina,ma:anantai||anantaina,ti:istai||istaina,ke:skiviikko||skiviikkona,to:rstai||rstaina,pe:rjantai||rjantaina,la:uantai||uantaina',\n 'numerals': 'nolla,yksi|ensimmäinen,kaksi|toinen,kolm:e|as,neljä:|s,vii:si|des,kuu:si|des,seitsemä:n|s,kahdeksa:n|s,yhdeksä:n|s,kymmene:n|s',\n 'short': '{d}.{M}.{yyyy}',\n 'medium': '{d}. {month} {yyyy}',\n 'long': '{d}. {month} {yyyy} klo {time}',\n 'full': '{weekday} {d}. {month} {yyyy} klo {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}.{mm}',\n 'timeMarkers': 'klo,kello',\n 'ordinalSuffix': '.',\n 'relative': function(num, unit, ms, format) {\n var units = this['units'];\n function numberWithUnit(mult) {\n return num + ' ' + units[(8 * mult) + unit];\n }\n function baseUnit() {\n return numberWithUnit(num === 1 ? 0 : 1);\n }\n switch(format) {\n case 'duration': return baseUnit();\n case 'past': return baseUnit() + ' sitten';\n case 'future': return numberWithUnit(2) + ' kuluttua';\n }\n },\n 'modifiers': [\n { 'name': 'day', 'src': 'toissa päivänä', 'value': -2 },\n { 'name': 'day', 'src': 'eilen|eilistä', 'value': -1 },\n { 'name': 'day', 'src': 'tänään', 'value': 0 },\n { 'name': 'day', 'src': 'huomenna|huomista', 'value': 1 },\n { 'name': 'day', 'src': 'ylihuomenna|ylihuomista', 'value': 2 },\n { 'name': 'sign', 'src': 'sitten|aiemmin', 'value': -1 },\n { 'name': 'sign', 'src': 'päästä|kuluttua|myöhemmin', 'value': 1 },\n { 'name': 'edge', 'src': 'lopussa', 'value': 2 },\n { 'name': 'edge', 'src': 'ensimmäinen|ensimmäisenä', 'value': -2 },\n { 'name': 'shift', 'src': 'edel:linen|lisenä', 'value': -1 },\n { 'name': 'shift', 'src': 'viime', 'value': -1 },\n { 'name': 'shift', 'src': 'tä:llä|ssä|nä|mä', 'value': 0 },\n { 'name': 'shift', 'src': 'seuraava|seuraavana|tuleva|tulevana|ensi', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{num?} {unit} {sign}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"fi\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Spanish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('es')\n *\n */\naddLocale('es', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,día|días|dia|dias,semana:|s,mes:|es,año|años|ano|anos',\n 'months': 'ene:ro|,feb:rero|,mar:zo|,abr:il|,may:o|,jun:io|,jul:io|,ago:sto|,sep:tiembre|,oct:ubre|,nov:iembre|,dic:iembre|',\n 'weekdays': 'dom:ingo|,lun:es|,mar:tes|,mié:rcoles|+mie:rcoles|,jue:ves|,vie:rnes|,sáb:ado|+sab:ado|',\n 'numerals': 'cero,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez',\n 'tokens': 'el,la,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{weekday}, {d} de {month} de {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'a las',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteayer', 'value': -2 },\n { 'name': 'day', 'src': 'ayer', 'value': -1 },\n { 'name': 'day', 'src': 'hoy', 'value': 0 },\n { 'name': 'day', 'src': 'mañana|manana', 'value': 1 },\n { 'name': 'sign', 'src': 'hace', 'value': -1 },\n { 'name': 'sign', 'src': 'dentro de', 'value': 1 },\n { 'name': 'shift', 'src': 'pasad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {2?} {year?}',\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{0?}{1?} {unit:5-7} {shift}',\n '{0?}{1?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday} {shift?}',\n '{date} {2?} {months?}\\\\.? {2?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {weekday} {shift?}',\n '{date} {2?} {months?}\\\\.? {2?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"es\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * German locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('de')\n *\n */\naddLocale('de', {\n 'plural': true,\n 'units': 'Millisekunde:|n,Sekunde:|n,Minute:|n,Stunde:|n,Tag:|en,Woche:|n,Monat:|en,Jahr:|en|e',\n 'months': 'Jan:uar|,Feb:ruar|,M:är|ärz|ar|arz,Apr:il|,Mai,Juni,Juli,Aug:ust|,Sept:ember|,Okt:ober|,Nov:ember|,Dez:ember|',\n 'weekdays': 'So:nntag|,Mo:ntag|,Di:enstag|,Mi:ttwoch|,Do:nnerstag|,Fr:eitag|,Sa:mstag|',\n 'numerals': 'null,ein:|e|er|en|em,zwei,drei,vier,fuenf,sechs,sieben,acht,neun,zehn',\n 'tokens': 'der',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d}. {Month} {yyyy}',\n 'long': '{d}. {Month} {yyyy} {time}',\n 'full': '{Weekday}, {d}. {Month} {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'um',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'vorgestern', 'value': -2 },\n { 'name': 'day', 'src': 'gestern', 'value': -1 },\n { 'name': 'day', 'src': 'heute', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'übermorgen|ubermorgen|uebermorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'vor:|her', 'value': -1 },\n { 'name': 'sign', 'src': 'in', 'value': 1 },\n { 'name': 'shift', 'src': 'letzte:|r|n|s', 'value': -1 },\n { 'name': 'shift', 'src': 'nächste:|r|n|s+nachste:|r|n|s+naechste:|r|n|s+kommende:n|r', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift} {weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"de\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Danish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('da')\n *\n */\naddLocale('da', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|ter,tim:e|er,dag:|e,ug:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'jan:uar|,feb:ruar|,mar:ts|,apr:il|,maj,jun:i|,jul:i|,aug:ust|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'søn:dag|+son:dag|,man:dag|,tir:sdag|,ons:dag|,tor:sdag|,fre:dag|,lør:dag|+lor:dag|',\n 'numerals': 'nul,en|et,to,tre,fire,fem,seks,syv,otte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d}. {month} {yyyy}',\n 'long': '{d}. {month} {yyyy} {time}',\n 'full': '{weekday} d. {d}. {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'over morgon|overmorgen|i over morgen|i overmorgen|iovermorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i sidste|sidste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'næste|naeste', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift} {weekday}',\n '{0?} {weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"da\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Catalan locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ca')\n *\n */\naddLocale('ca', {\n 'plural': true,\n 'units': 'milisegon:|s,segon:|s,minut:|s,hor:a|es,di:a|es,setman:a|es,mes:|os,any:|s',\n 'months': 'gen:er|,febr:er|,mar:ç|,abr:il|,mai:g|,jun:y|,jul:iol|,ag:ost|,set:embre|,oct:ubre|,nov:embre|,des:embre|',\n 'weekdays': 'diumenge|dg,dilluns|dl,dimarts|dt,dimecres|dc,dijous|dj,divendres|dv,dissabte|ds',\n 'numerals': 'zero,un,dos,tres,quatre,cinc,sis,set,vuit,nou,deu',\n 'tokens': 'el,la,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'a las',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': \"abans d'ahir\", 'value': -2 },\n { 'name': 'day', 'src': 'ahir', 'value': -1 },\n { 'name': 'day', 'src': 'avui', 'value': 0 },\n { 'name': 'day', 'src': 'demà|dema', 'value': 1 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'en', 'value': 1 },\n { 'name': 'shift', 'src': 'passat', 'value': -1 },\n { 'name': 'shift', 'src': 'el proper|la propera', 'value': 1 }\n ],\n 'parse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{0?}{1?} {unit:5-7} {shift}',\n '{0?}{1?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift} {weekday}',\n '{weekday} {shift}',\n '{date?} {2?} {months}\\\\.? {2?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ca\" locale.","'use strict';\n\nrequire('./ca');\nrequire('./da');\nrequire('./de');\nrequire('./es');\nrequire('./fi');\nrequire('./fr');\nrequire('./it');\nrequire('./ja');\nrequire('./ko');\nrequire('./nl');\nrequire('./no');\nrequire('./pl');\nrequire('./pt');\nrequire('./ru');\nrequire('./sv');\nrequire('./zh-CN');\nrequire('./zh-TW');\n\nmodule.exports = require('sugar-core');","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"years\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"weeks\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'union': function(range) {\n return new Range(\n this.start < range.start ? this.start : range.start,\n this.end > range.end ? this.end : range.end\n );\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"union\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'toString': function() {\n return rangeIsValid(this) ? this.start + '..' + this.end : 'Invalid Range';\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"toString\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeEvery = require('./internal/rangeEvery'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'toArray': function() {\n return rangeEvery(this);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"toArray\" on Range.prototype.","'use strict';\n\nvar classChecks = require('../../common/var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction getRangeMemberNumericValue(m) {\n return isString(m) ? m.charCodeAt(0) : m;\n}\n\nmodule.exports = getRangeMemberNumericValue;","'use strict';\n\nvar Range = require('./internal/Range'),\n mathAliases = require('../common/var/mathAliases'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype'),\n getRangeMemberNumericValue = require('./internal/getRangeMemberNumericValue');\n\nvar abs = mathAliases.abs;\n\ndefineOnPrototype(Range, {\n\n 'span': function() {\n var n = getRangeMemberNumericValue(this.end) - getRangeMemberNumericValue(this.start);\n return rangeIsValid(this) ? abs(n) + 1 : NaN;\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"span\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"seconds\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"months\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"minutes\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"milliseconds\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'isValid': function() {\n return rangeIsValid(this);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"isValid\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'intersect': function(range) {\n if (range.start > this.end || range.end < this.start) {\n return new Range(NaN, NaN);\n }\n return new Range(\n this.start > range.start ? this.start : range.start,\n this.end < range.end ? this.end : range.end\n );\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"intersect\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"hours\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeEvery = require('./internal/rangeEvery'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'every': function(amount, fn) {\n return rangeEvery(this, amount, false, fn);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"every\" on Range.prototype.","'use strict';\n\nvar CommonChars = require('../var/CommonChars');\n\nvar HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD;\n\nfunction periodSplit(str) {\n return str.split(HALF_WIDTH_PERIOD);\n}\n\nmodule.exports = periodSplit;","'use strict';\n\nvar periodSplit = require('../../common/internal/periodSplit');\n\nfunction getPrecision(n) {\n var split = periodSplit(n.toString());\n return split[1] ? split[1].length : 0;\n}\n\nmodule.exports = getPrecision;","'use strict';\n\nvar mathAliases = require('../../common/var/mathAliases'),\n getPrecision = require('./getPrecision');\n\nvar max = mathAliases.max;\n\nfunction getGreaterPrecision(n1, n2) {\n return max(getPrecision(n1), getPrecision(n2));\n}\n\nmodule.exports = getGreaterPrecision;","'use strict';\n\nvar chr = require('../../common/var/chr');\n\nfunction incrementString(current, amount) {\n return chr(current.charCodeAt(0) + amount);\n}\n\nmodule.exports = incrementString;","'use strict';\n\nvar withPrecision = require('../../common/internal/withPrecision');\n\nfunction incrementNumber(current, amount, precision) {\n return withPrecision(current + amount, precision);\n}\n\nmodule.exports = incrementNumber;","'use strict';\n\nfunction valueIsNotInfinite(m) {\n return m !== -Infinity && m !== Infinity;\n}\n\nmodule.exports = valueIsNotInfinite;","'use strict';\n\nvar valueIsNotInfinite = require('./valueIsNotInfinite'),\n getRangeMemberPrimitiveValue = require('./getRangeMemberPrimitiveValue');\n\nfunction isValidRangeMember(m) {\n var val = getRangeMemberPrimitiveValue(m);\n return (!!val || val === 0) && valueIsNotInfinite(m);\n}\n\nmodule.exports = isValidRangeMember;","'use strict';\n\nvar MULTIPLIERS = require('../var/MULTIPLIERS'),\n DURATION_UNITS = require('../var/DURATION_UNITS'),\n Range = require('./Range'),\n trunc = require('../../common/var/trunc'),\n forEach = require('../../common/internal/forEach'),\n rangeEvery = require('./rangeEvery'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize'),\n defineOnPrototype = require('../../common/internal/defineOnPrototype');\n\nfunction buildDateRangeUnits() {\n var methods = {};\n forEach(DURATION_UNITS.split('|'), function(unit, i) {\n var name = unit + 's', mult, fn;\n if (i < 4) {\n fn = function() {\n return rangeEvery(this, unit, true);\n };\n } else {\n mult = MULTIPLIERS[simpleCapitalize(name)];\n fn = function() {\n return trunc((this.end - this.start) / mult);\n };\n }\n methods[name] = fn;\n });\n defineOnPrototype(Range, methods);\n}\n\nmodule.exports = buildDateRangeUnits;","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"days\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'contains': function(el) {\n if (el == null) return false;\n if (el.start && el.end) {\n return el.start >= this.start && el.start <= this.end &&\n el.end >= this.start && el.end <= this.end;\n } else {\n return el >= this.start && el <= this.end;\n }\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"contains\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'clone': function() {\n return new Range(this.start, this.end);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"clone\" on Range.prototype.","'use strict';\n\nvar cloneRangeMember = require('./cloneRangeMember');\n\nfunction rangeClamp(range, obj) {\n var clamped,\n start = range.start,\n end = range.end,\n min = end < start ? end : start,\n max = start > end ? start : end;\n if (obj < min) {\n clamped = min;\n } else if (obj > max) {\n clamped = max;\n } else {\n clamped = obj;\n }\n return cloneRangeMember(clamped);\n}\n\nmodule.exports = rangeClamp;","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeClamp = require('./internal/rangeClamp'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'clamp': function(el) {\n return rangeClamp(this, el);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"clamp\" on Range.prototype.","'use strict';\n\nvar DURATION_UNITS = require('./DURATION_UNITS');\n\nmodule.exports = RegExp('(\\\\d+)?\\\\s*('+ DURATION_UNITS +')s?', 'i');","'use strict';\n\nvar DURATION_UNITS = require('./DURATION_UNITS');\n\nmodule.exports = '((?:\\\\d+)?\\\\s*(?:' + DURATION_UNITS + '))s?';","'use strict';\n\nvar FULL_CAPTURED_DURATION = require('./FULL_CAPTURED_DURATION');\n\nmodule.exports = {\n RANGE_REG_FROM_TO: /(?:from)?\\s*(.+)\\s+(?:to|until)\\s+(.+)$/i,\n RANGE_REG_REAR_DURATION: RegExp('(.+)\\\\s*for\\\\s*' + FULL_CAPTURED_DURATION, 'i'),\n RANGE_REG_FRONT_DURATION: RegExp('(?:for)?\\\\s*'+ FULL_CAPTURED_DURATION +'\\\\s*(?:starting)?\\\\s(?:at\\\\s)?(.+)', 'i')\n};","'use strict';\n\nvar Range = require('./Range'),\n DurationTextFormats = require('../var/DurationTextFormats'),\n incrementDate = require('./incrementDate'),\n getDateForRange = require('./getDateForRange'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n getDateIncrementObject = require('./getDateIncrementObject');\n\nvar sugarDate = namespaceAliases.sugarDate,\n RANGE_REG_FROM_TO = DurationTextFormats.RANGE_REG_FROM_TO,\n RANGE_REG_REAR_DURATION = DurationTextFormats.RANGE_REG_REAR_DURATION,\n RANGE_REG_FRONT_DURATION = DurationTextFormats.RANGE_REG_FRONT_DURATION;\n\nfunction createDateRangeFromString(str) {\n var match, datetime, duration, dio, start, end;\n if (sugarDate.get && (match = str.match(RANGE_REG_FROM_TO))) {\n start = getDateForRange(match[1].replace('from', 'at'));\n end = sugarDate.get(start, match[2]);\n return new Range(start, end);\n }\n if (match = str.match(RANGE_REG_FRONT_DURATION)) {\n duration = match[1];\n datetime = match[2];\n }\n if (match = str.match(RANGE_REG_REAR_DURATION)) {\n datetime = match[1];\n duration = match[2];\n }\n if (datetime && duration) {\n start = getDateForRange(datetime);\n dio = getDateIncrementObject(duration);\n end = incrementDate(start, dio[0], dio[1]);\n } else {\n start = str;\n }\n return new Range(getDateForRange(start), getDateForRange(end));\n}\n\nmodule.exports = createDateRangeFromString;","'use strict';\n\nvar Range = require('../internal/Range'),\n classChecks = require('../../common/var/classChecks'),\n getDateForRange = require('../internal/getDateForRange'),\n createDateRangeFromString = require('../internal/createDateRangeFromString');\n\nvar isString = classChecks.isString;\n\nvar DateRangeConstructor = function(start, end) {\n if (arguments.length === 1 && isString(start)) {\n return createDateRangeFromString(start);\n }\n return new Range(getDateForRange(start), getDateForRange(end));\n};\n\nmodule.exports = DateRangeConstructor;","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateRangeConstructor = require('../range/var/DateRangeConstructor');\n\nSugar.Date.defineStatic({\n\n 'range': DateRangeConstructor\n\n});\n\nmodule.exports = Sugar.Date.range;","'use strict';\n\n// Static Methods\nrequire('../date/range');\n\n// Prototype Methods\nrequire('./clamp');\nrequire('./clone');\nrequire('./contains');\nrequire('./days');\nrequire('./every');\nrequire('./hours');\nrequire('./intersect');\nrequire('./isValid');\nrequire('./milliseconds');\nrequire('./minutes');\nrequire('./months');\nrequire('./seconds');\nrequire('./span');\nrequire('./toArray');\nrequire('./toString');\nrequire('./union');\nrequire('./weeks');\nrequire('./years');\n\nmodule.exports = require('sugar-core');","'use strict';\n\nvar Sugar = require('sugar-core'),\n _dateOptions = require('./var/_dateOptions');\n\nmodule.exports = Sugar.Date.setOption;","'use strict';\n\nvar Sugar = require('sugar-core'),\n _dateOptions = require('./var/_dateOptions');\n\nmodule.exports = Sugar.Date.getOption;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksAgo;","'use strict';\n\nvar Sugar = require('sugar-core'),\n setWeekday = require('./internal/setWeekday');\n\nSugar.Date.defineInstance({\n\n 'setWeekday': function(date, dow) {\n return setWeekday(date, dow);\n }\n\n});\n\nmodule.exports = Sugar.Date.setWeekday;","'use strict';\n\nvar Sugar = require('sugar-core'),\n _utc = require('../common/var/_utc');\n\nSugar.Date.defineInstance({\n\n 'setUTC': function(date, on) {\n return _utc(date, on);\n }\n\n});\n\nmodule.exports = Sugar.Date.setUTC;","'use strict';\n\nvar Sugar = require('sugar-core'),\n setISOWeekNumber = require('./internal/setISOWeekNumber');\n\nSugar.Date.defineInstance({\n\n 'setISOWeek': function(date, num) {\n return setISOWeekNumber(date, num);\n }\n\n});\n\nmodule.exports = Sugar.Date.setISOWeek;","'use strict';\n\nvar Sugar = require('sugar-core'),\n updateDate = require('./internal/updateDate'),\n collectDateArguments = require('./internal/collectDateArguments');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'set': function(d, args) {\n args = collectDateArguments(args);\n return updateDate(d, args[0], args[1]);\n }\n\n});\n\nmodule.exports = Sugar.Date.set;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsAgo;","'use strict';\n\nvar Sugar = require('sugar-core'),\n advanceDateWithArgs = require('./internal/advanceDateWithArgs');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'rewind': function(d, args) {\n return advanceDateWithArgs(d, args, -1);\n }\n\n});\n\nmodule.exports = Sugar.Date.rewind;","'use strict';\n\nvar iterateOverDateParams = require('./iterateOverDateParams');\n\nfunction getUnitIndexForParamName(name) {\n var params = {}, unitIndex;\n params[name] = 1;\n iterateOverDateParams(params, function(name, val, unit, i) {\n unitIndex = i;\n return false;\n });\n return unitIndex;\n}\n\nmodule.exports = getUnitIndexForParamName;","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateUnitIndexes = require('./var/DateUnitIndexes'),\n moveToBeginningOfUnit = require('./internal/moveToBeginningOfUnit'),\n getUnitIndexForParamName = require('./internal/getUnitIndexForParamName');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nSugar.Date.defineInstance({\n\n 'reset': function(date, unit, localeCode) {\n var unitIndex = unit ? getUnitIndexForParamName(unit) : DAY_INDEX;\n moveToBeginningOfUnit(date, unitIndex, localeCode);\n return date;\n }\n\n});\n\nmodule.exports = Sugar.Date.reset;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate'),\n dateRelative = require('./internal/dateRelative');\n\nSugar.Date.defineInstance({\n\n 'relativeTo': function(date, d, localeCode) {\n return dateRelative(date, createDate(d), localeCode);\n }\n\n});\n\nmodule.exports = Sugar.Date.relativeTo;","'use strict';\n\nvar getNewDate = require('./getNewDate'),\n mathAliases = require('../../common/var/mathAliases'),\n getAdjustedUnit = require('./getAdjustedUnit'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar abs = mathAliases.abs;\n\nfunction getAdjustedUnitForDate(d, dRelative) {\n var ms;\n if (!dRelative) {\n dRelative = getNewDate();\n if (d > dRelative) {\n // If our date is greater than the one that we got from getNewDate, it\n // means that we are finding the unit for a date that is in the future\n // relative to now. However, often the incoming date was created in\n // the same cycle as our comparison, but our \"now\" date will have been\n // created an instant after it, creating situations where \"5 minutes from\n // now\" becomes \"4 minutes from now\" in the same tick. To prevent this,\n // subtract a buffer of 10ms to compensate.\n dRelative = new Date(dRelative.getTime() - 10);\n }\n }\n ms = d - dRelative;\n return getAdjustedUnit(ms, function(u) {\n return abs(getTimeDistanceForUnit(d, dRelative, u));\n });\n}\n\nmodule.exports = getAdjustedUnitForDate;","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateRelative = require('./internal/dateRelative');\n\nSugar.Date.defineInstance({\n\n 'relative': function(date, localeCode, fn) {\n return dateRelative(date, null, localeCode, fn);\n }\n\n});\n\nmodule.exports = Sugar.Date.relative;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nSugar.Date.defineInstance({\n\n 'iso': function(date) {\n return date.toISOString();\n }\n\n});\n\nmodule.exports = Sugar.Date.iso;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isYesterday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWeekend;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWeekday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWednesday;","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateIsValid = require('./internal/dateIsValid');\n\nSugar.Date.defineInstance({\n\n 'isValid': function(date) {\n return dateIsValid(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.isValid;","'use strict';\n\nvar _utc = require('../../common/var/_utc'),\n tzOffset = require('./tzOffset');\n\nfunction isUTC(d) {\n return !!_utc(d) || tzOffset(d) === 0;\n}\n\nmodule.exports = isUTC;","'use strict';\n\nvar Sugar = require('sugar-core'),\n isUTC = require('./internal/isUTC');\n\nSugar.Date.defineInstance({\n\n 'isUTC': function(date) {\n return isUTC(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.isUTC;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isTuesday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isTomorrow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isToday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isThursday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisMonth;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isSunday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isSaturday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isPast;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextMonth;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isMonday;","'use strict';\n\nvar Sugar = require('sugar-core'),\n getYear = require('./internal/getYear');\n\nSugar.Date.defineInstance({\n\n 'isLeapYear': function(date) {\n var year = getYear(date);\n return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isLeapYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastMonth;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isFuture;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n spaceSplit = require('../../common/internal/spaceSplit'),\n fullCompareDate = require('./fullCompareDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar English = LocaleHelpers.English,\n sugarDate = namespaceAliases.sugarDate;\n\nfunction buildRelativeAliases() {\n var special = spaceSplit('Today Yesterday Tomorrow Weekday Weekend Future Past');\n var weekdays = English.weekdays.slice(0, 7);\n var months = English.months.slice(0, 12);\n var together = special.concat(weekdays).concat(months);\n defineInstanceSimilar(sugarDate, together, function(methods, name) {\n methods['is'+ name] = function(d) {\n return fullCompareDate(d, name);\n };\n });\n}\n\nmodule.exports = buildRelativeAliases;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isFriday;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate'),\n mathAliases = require('../common/var/mathAliases');\n\nvar min = mathAliases.min,\n max = mathAliases.max;\n\nSugar.Date.defineInstance({\n\n 'isBetween': function(date, d1, d2, margin) {\n var t = date.getTime();\n var t1 = createDate(d1).getTime();\n var t2 = createDate(d2).getTime();\n var lo = min(t1, t2);\n var hi = max(t1, t2);\n margin = margin || 0;\n return (lo - margin <= t) && (hi + margin >= t);\n }\n\n});\n\nmodule.exports = Sugar.Date.isBetween;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nSugar.Date.defineInstance({\n\n 'isBefore': function(date, d, margin) {\n return date.getTime() < createDate(d).getTime() + (margin || 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isBefore;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nSugar.Date.defineInstance({\n\n 'isAfter': function(date, d, margin) {\n return date.getTime() > createDate(d).getTime() - (margin || 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isAfter;","'use strict';\n\nvar setDate = require('./setDate'),\n getDate = require('./getDate'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n getNewDate = require('./getNewDate');\n\nfunction compareDay(d, shift) {\n var comp = getNewDate();\n if (shift) {\n setDate(comp, getDate(comp) + shift);\n }\n return getYear(d) === getYear(comp) &&\n getMonth(d) === getMonth(comp) &&\n getDate(d) === getDate(comp);\n}\n\nmodule.exports = compareDay;","'use strict';\n\nfunction trim(str) {\n return str.trim();\n}\n\nmodule.exports = trim;","'use strict';\n\nvar Sugar = require('sugar-core'),\n fullCompareDate = require('./internal/fullCompareDate');\n\nSugar.Date.defineInstance({\n\n 'is': function(date, d, margin) {\n return fullCompareDate(date, d, margin);\n }\n\n});\n\nmodule.exports = Sugar.Date.is;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursAgo;","'use strict';\n\nvar Sugar = require('sugar-core'),\n getWeekday = require('./internal/getWeekday');\n\nSugar.Date.defineInstance({\n\n 'getWeekday': function(date) {\n return getWeekday(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.getWeekday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nSugar.Date.defineInstance({\n\n 'getUTCWeekday': function(date) {\n return date.getUTCDay();\n }\n\n});\n\nmodule.exports = Sugar.Date.getUTCWeekday;","'use strict';\n\nvar Sugar = require('sugar-core'),\n getUTCOffset = require('./internal/getUTCOffset');\n\nSugar.Date.defineInstance({\n\n 'getUTCOffset': function(date, iso) {\n return getUTCOffset(date, iso);\n }\n\n});\n\nmodule.exports = Sugar.Date.getUTCOffset;","'use strict';\n\nvar Sugar = require('sugar-core'),\n getWeekNumber = require('./internal/getWeekNumber');\n\nSugar.Date.defineInstance({\n\n 'getISOWeek': function(date) {\n return getWeekNumber(date, true);\n }\n\n});\n\nmodule.exports = Sugar.Date.getISOWeek;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDateWithContext = require('./internal/createDateWithContext');\n\nSugar.Date.defineInstance({\n\n 'get': function(date, d, options) {\n return createDateWithContext(date, d, options);\n }\n\n});\n\nmodule.exports = Sugar.Date.get;","'use strict';\n\nmodule.exports = 1000;","'use strict';\n\nvar INTERNAL_MEMOIZE_LIMIT = require('../var/INTERNAL_MEMOIZE_LIMIT'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction memoizeFunction(fn) {\n var memo = {}, counter = 0;\n\n return function(key) {\n if (hasOwn(memo, key)) {\n return memo[key];\n }\n if (counter === INTERNAL_MEMOIZE_LIMIT) {\n memo = {};\n counter = 0;\n }\n counter++;\n return memo[key] = fn(key);\n };\n}\n\nmodule.exports = memoizeFunction;","'use strict';\n\nmodule.exports = /([{}])\\1|\\{([^}]*)\\}|(%)%|(%(\\w*))/g;","'use strict';\n\nvar STRING_FORMAT_REG = require('../var/STRING_FORMAT_REG'),\n CommonChars = require('../var/CommonChars'),\n memoizeFunction = require('./memoizeFunction');\n\nvar OPEN_BRACE = CommonChars.OPEN_BRACE,\n CLOSE_BRACE = CommonChars.CLOSE_BRACE;\n\nfunction createFormatMatcher(bracketMatcher, percentMatcher, precheck) {\n\n var reg = STRING_FORMAT_REG;\n var compileMemoized = memoizeFunction(compile);\n\n function getToken(format, match) {\n var get, token, literal, fn;\n var bKey = match[2];\n var pLit = match[3];\n var pKey = match[5];\n if (match[4] && percentMatcher) {\n token = pKey;\n get = percentMatcher;\n } else if (bKey) {\n token = bKey;\n get = bracketMatcher;\n } else if (pLit && percentMatcher) {\n literal = pLit;\n } else {\n literal = match[1] || match[0];\n }\n if (get) {\n assertPassesPrecheck(precheck, bKey, pKey);\n fn = function(obj, opt) {\n return get(obj, token, opt);\n };\n }\n format.push(fn || getLiteral(literal));\n }\n\n function getSubstring(format, str, start, end) {\n if (end > start) {\n var sub = str.slice(start, end);\n assertNoUnmatched(sub, OPEN_BRACE);\n assertNoUnmatched(sub, CLOSE_BRACE);\n format.push(function() {\n return sub;\n });\n }\n }\n\n function getLiteral(str) {\n return function() {\n return str;\n };\n }\n\n function assertPassesPrecheck(precheck, bt, pt) {\n if (precheck && !precheck(bt, pt)) {\n throw new TypeError('Invalid token '+ (bt || pt) +' in format string');\n }\n }\n\n function assertNoUnmatched(str, chr) {\n if (str.indexOf(chr) !== -1) {\n throw new TypeError('Unmatched '+ chr +' in format string');\n }\n }\n\n function compile(str) {\n var format = [], lastIndex = 0, match;\n reg.lastIndex = 0;\n while(match = reg.exec(str)) {\n getSubstring(format, str, lastIndex, match.index);\n getToken(format, match);\n lastIndex = reg.lastIndex;\n }\n getSubstring(format, str, lastIndex, str.length);\n return format;\n }\n\n return function(str, obj, opt) {\n var format = compileMemoized(str), result = '';\n for (var i = 0; i < format.length; i++) {\n result += format[i](obj, opt);\n }\n return result;\n };\n}\n\nmodule.exports = createFormatMatcher;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n trunc = require('../../common/var/trunc'),\n getHours = require('./getHours');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nfunction getMeridiemToken(d, localeCode) {\n var hours = getHours(d);\n return localeManager.get(localeCode).ampm[trunc(hours / 12)] || '';\n}\n\nmodule.exports = getMeridiemToken;","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction getDaysSince(d1, d2) {\n return getTimeDistanceForUnit(d1, d2, DateUnits[DAY_INDEX]);\n}\n\nmodule.exports = getDaysSince;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n getWeekNumber = require('./getWeekNumber');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nfunction getWeekYear(d, localeCode, iso) {\n var year, month, firstDayOfWeek, firstDayOfWeekYear, week, loc;\n year = getYear(d);\n month = getMonth(d);\n if (month === 0 || month === 11) {\n if (!iso) {\n loc = localeManager.get(localeCode);\n firstDayOfWeek = loc.getFirstDayOfWeek(localeCode);\n firstDayOfWeekYear = loc.getFirstDayOfWeekYear(localeCode);\n }\n week = getWeekNumber(d, false, firstDayOfWeek, firstDayOfWeekYear);\n if (month === 0 && week === 0) {\n year -= 1;\n } else if (month === 11 && week === 1) {\n year += 1;\n }\n }\n return year;\n}\n\nmodule.exports = getWeekYear;","'use strict';\n\nfunction repeatString(str, num) {\n var result = '';\n str = str.toString();\n while (num > 0) {\n if (num & 1) {\n result += str;\n }\n if (num >>= 1) {\n str += str;\n }\n }\n return result;\n}\n\nmodule.exports = repeatString;","'use strict';\n\nmodule.exports = /(\\w{3})[()\\s\\d]*$/;","'use strict';\n\nvar TIMEZONE_ABBREVIATION_REG = require('./TIMEZONE_ABBREVIATION_REG'),\n LocaleHelpers = require('./LocaleHelpers'),\n DateUnitIndexes = require('./DateUnitIndexes'),\n trunc = require('../../common/var/trunc'),\n getDate = require('../internal/getDate'),\n getYear = require('../internal/getYear'),\n getHours = require('../internal/getHours'),\n getMonth = require('../internal/getMonth'),\n cloneDate = require('../internal/cloneDate'),\n padNumber = require('../../common/internal/padNumber'),\n getWeekday = require('../internal/getWeekday'),\n callDateGet = require('../../common/internal/callDateGet'),\n mathAliases = require('../../common/var/mathAliases'),\n getWeekYear = require('../internal/getWeekYear'),\n getUTCOffset = require('../internal/getUTCOffset'),\n getDaysSince = require('../internal/getDaysSince'),\n getWeekNumber = require('../internal/getWeekNumber'),\n getMeridiemToken = require('../internal/getMeridiemToken'),\n setUnitAndLowerToEdge = require('../internal/setUnitAndLowerToEdge');\n\nvar localeManager = LocaleHelpers.localeManager,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n ceil = mathAliases.ceil;\n\nvar FormatTokensBase = [\n {\n ldml: 'Dow',\n strf: 'a',\n lowerToken: 'dow',\n get: function(d, localeCode) {\n return localeManager.get(localeCode).getWeekdayName(getWeekday(d), 2);\n }\n },\n {\n ldml: 'Weekday',\n strf: 'A',\n lowerToken: 'weekday',\n allowAlternates: true,\n get: function(d, localeCode, alternate) {\n return localeManager.get(localeCode).getWeekdayName(getWeekday(d), alternate);\n }\n },\n {\n ldml: 'Mon',\n strf: 'b h',\n lowerToken: 'mon',\n get: function(d, localeCode) {\n return localeManager.get(localeCode).getMonthName(getMonth(d), 2);\n }\n },\n {\n ldml: 'Month',\n strf: 'B',\n lowerToken: 'month',\n allowAlternates: true,\n get: function(d, localeCode, alternate) {\n return localeManager.get(localeCode).getMonthName(getMonth(d), alternate);\n }\n },\n {\n strf: 'C',\n get: function(d) {\n return getYear(d).toString().slice(0, 2);\n }\n },\n {\n ldml: 'd date day',\n strf: 'd',\n strfPadding: 2,\n ldmlPaddedToken: 'dd',\n ordinalToken: 'do',\n get: function(d) {\n return getDate(d);\n }\n },\n {\n strf: 'e',\n get: function(d) {\n return padNumber(getDate(d), 2, false, 10, ' ');\n }\n },\n {\n ldml: 'H 24hr',\n strf: 'H',\n strfPadding: 2,\n ldmlPaddedToken: 'HH',\n get: function(d) {\n return getHours(d);\n }\n },\n {\n ldml: 'h hours 12hr',\n strf: 'I',\n strfPadding: 2,\n ldmlPaddedToken: 'hh',\n get: function(d) {\n return getHours(d) % 12 || 12;\n }\n },\n {\n ldml: 'D',\n strf: 'j',\n strfPadding: 3,\n ldmlPaddedToken: 'DDD',\n get: function(d) {\n var s = setUnitAndLowerToEdge(cloneDate(d), MONTH_INDEX);\n return getDaysSince(d, s) + 1;\n }\n },\n {\n ldml: 'M',\n strf: 'm',\n strfPadding: 2,\n ordinalToken: 'Mo',\n ldmlPaddedToken: 'MM',\n get: function(d) {\n return getMonth(d) + 1;\n }\n },\n {\n ldml: 'm minutes',\n strf: 'M',\n strfPadding: 2,\n ldmlPaddedToken: 'mm',\n get: function(d) {\n return callDateGet(d, 'Minutes');\n }\n },\n {\n ldml: 'Q',\n get: function(d) {\n return ceil((getMonth(d) + 1) / 3);\n }\n },\n {\n ldml: 'TT',\n strf: 'p',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode);\n }\n },\n {\n ldml: 'tt',\n strf: 'P',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode).toLowerCase();\n }\n },\n {\n ldml: 'T',\n lowerToken: 't',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode).charAt(0);\n }\n },\n {\n ldml: 's seconds',\n strf: 'S',\n strfPadding: 2,\n ldmlPaddedToken: 'ss',\n get: function(d) {\n return callDateGet(d, 'Seconds');\n }\n },\n {\n ldml: 'S ms',\n strfPadding: 3,\n ldmlPaddedToken: 'SSS',\n get: function(d) {\n return callDateGet(d, 'Milliseconds');\n }\n },\n {\n ldml: 'e',\n strf: 'u',\n ordinalToken: 'eo',\n get: function(d) {\n return getWeekday(d) || 7;\n }\n },\n {\n strf: 'U',\n strfPadding: 2,\n get: function(d) {\n // Sunday first, 0-53\n return getWeekNumber(d, false, 0);\n }\n },\n {\n ldml: 'W',\n strf: 'V',\n strfPadding: 2,\n ordinalToken: 'Wo',\n ldmlPaddedToken: 'WW',\n get: function(d) {\n // Monday first, 1-53 (ISO8601)\n return getWeekNumber(d, true);\n }\n },\n {\n strf: 'w',\n get: function(d) {\n return getWeekday(d);\n }\n },\n {\n ldml: 'w',\n ordinalToken: 'wo',\n ldmlPaddedToken: 'ww',\n get: function(d, localeCode) {\n // Locale dependent, 1-53\n var loc = localeManager.get(localeCode),\n dow = loc.getFirstDayOfWeek(localeCode),\n doy = loc.getFirstDayOfWeekYear(localeCode);\n return getWeekNumber(d, true, dow, doy);\n }\n },\n {\n strf: 'W',\n strfPadding: 2,\n get: function(d) {\n // Monday first, 0-53\n return getWeekNumber(d, false);\n }\n },\n {\n ldmlPaddedToken: 'gggg',\n ldmlTwoDigitToken: 'gg',\n get: function(d, localeCode) {\n return getWeekYear(d, localeCode);\n }\n },\n {\n strf: 'G',\n strfPadding: 4,\n strfTwoDigitToken: 'g',\n ldmlPaddedToken: 'GGGG',\n ldmlTwoDigitToken: 'GG',\n get: function(d, localeCode) {\n return getWeekYear(d, localeCode, true);\n }\n },\n {\n ldml: 'year',\n ldmlPaddedToken: 'yyyy',\n ldmlTwoDigitToken: 'yy',\n strf: 'Y',\n strfPadding: 4,\n strfTwoDigitToken: 'y',\n get: function(d) {\n return getYear(d);\n }\n },\n {\n ldml: 'ZZ',\n strf: 'z',\n get: function(d) {\n return getUTCOffset(d);\n }\n },\n {\n ldml: 'X',\n get: function(d) {\n return trunc(d.getTime() / 1000);\n }\n },\n {\n ldml: 'x',\n get: function(d) {\n return d.getTime();\n }\n },\n {\n ldml: 'Z',\n get: function(d) {\n return getUTCOffset(d, true);\n }\n },\n {\n ldml: 'z',\n strf: 'Z',\n get: function(d) {\n // Note that this is not accurate in all browsing environments!\n // https://github.com/moment/moment/issues/162\n // It will continue to be supported for Node and usage with the\n // understanding that it may be blank.\n var match = d.toString().match(TIMEZONE_ABBREVIATION_REG);\n return match ? match[1]: '';\n }\n },\n {\n strf: 'D',\n alias: '%m/%d/%y'\n },\n {\n strf: 'F',\n alias: '%Y-%m-%d'\n },\n {\n strf: 'r',\n alias: '%I:%M:%S %p'\n },\n {\n strf: 'R',\n alias: '%H:%M'\n },\n {\n strf: 'T',\n alias: '%H:%M:%S'\n },\n {\n strf: 'x',\n alias: '{short}'\n },\n {\n strf: 'X',\n alias: '{time}'\n },\n {\n strf: 'c',\n alias: '{stamp}'\n }\n];\n\nmodule.exports = FormatTokensBase;","'use strict';\n\nvar LocaleHelpers = require('./LocaleHelpers'),\n FormatTokensBase = require('./FormatTokensBase'),\n CoreOutputFormats = require('./CoreOutputFormats'),\n forEach = require('../../common/internal/forEach'),\n padNumber = require('../../common/internal/padNumber'),\n spaceSplit = require('../../common/internal/spaceSplit'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n createFormatMatcher = require('../../common/internal/createFormatMatcher'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar localeManager = LocaleHelpers.localeManager,\n hasOwn = coreUtilityAliases.hasOwn,\n getOwn = coreUtilityAliases.getOwn,\n forEachProperty = coreUtilityAliases.forEachProperty,\n sugarDate = namespaceAliases.sugarDate;\n\nvar ldmlTokens, strfTokens;\n\nfunction buildDateFormatTokens() {\n\n function addFormats(target, tokens, fn) {\n if (tokens) {\n forEach(spaceSplit(tokens), function(token) {\n target[token] = fn;\n });\n }\n }\n\n function buildLowercase(get) {\n return function(d, localeCode) {\n return get(d, localeCode).toLowerCase();\n };\n }\n\n function buildOrdinal(get) {\n return function(d, localeCode) {\n var n = get(d, localeCode);\n return n + localeManager.get(localeCode).getOrdinal(n);\n };\n }\n\n function buildPadded(get, padding) {\n return function(d, localeCode) {\n return padNumber(get(d, localeCode), padding);\n };\n }\n\n function buildTwoDigits(get) {\n return function(d, localeCode) {\n return get(d, localeCode) % 100;\n };\n }\n\n function buildAlias(alias) {\n return function(d, localeCode) {\n return dateFormatMatcher(alias, d, localeCode);\n };\n }\n\n function buildAlternates(f) {\n for (var n = 1; n <= 5; n++) {\n buildAlternate(f, n);\n }\n }\n\n function buildAlternate(f, n) {\n var alternate = function(d, localeCode) {\n return f.get(d, localeCode, n);\n };\n addFormats(ldmlTokens, f.ldml + n, alternate);\n if (f.lowerToken) {\n ldmlTokens[f.lowerToken + n] = buildLowercase(alternate);\n }\n }\n\n function getIdentityFormat(name) {\n return function(d, localeCode) {\n var loc = localeManager.get(localeCode);\n return dateFormatMatcher(loc[name], d, localeCode);\n };\n }\n\n ldmlTokens = {};\n strfTokens = {};\n\n forEach(FormatTokensBase, function(f) {\n var get = f.get, getPadded;\n if (f.lowerToken) {\n ldmlTokens[f.lowerToken] = buildLowercase(get);\n }\n if (f.ordinalToken) {\n ldmlTokens[f.ordinalToken] = buildOrdinal(get, f);\n }\n if (f.ldmlPaddedToken) {\n ldmlTokens[f.ldmlPaddedToken] = buildPadded(get, f.ldmlPaddedToken.length);\n }\n if (f.ldmlTwoDigitToken) {\n ldmlTokens[f.ldmlTwoDigitToken] = buildPadded(buildTwoDigits(get), 2);\n }\n if (f.strfTwoDigitToken) {\n strfTokens[f.strfTwoDigitToken] = buildPadded(buildTwoDigits(get), 2);\n }\n if (f.strfPadding) {\n getPadded = buildPadded(get, f.strfPadding);\n }\n if (f.alias) {\n get = buildAlias(f.alias);\n }\n if (f.allowAlternates) {\n buildAlternates(f);\n }\n addFormats(ldmlTokens, f.ldml, get);\n addFormats(strfTokens, f.strf, getPadded || get);\n });\n\n forEachProperty(CoreOutputFormats, function(src, name) {\n addFormats(ldmlTokens, name, buildAlias(src));\n });\n\n defineInstanceSimilar(sugarDate, 'short medium long full', function(methods, name) {\n var fn = getIdentityFormat(name);\n addFormats(ldmlTokens, name, fn);\n methods[name] = fn;\n });\n\n addFormats(ldmlTokens, 'time', getIdentityFormat('time'));\n addFormats(ldmlTokens, 'stamp', getIdentityFormat('stamp'));\n}\n\nvar dateFormatMatcher;\n\nfunction buildDateFormatMatcher() {\n\n function getLdml(d, token, localeCode) {\n return getOwn(ldmlTokens, token)(d, localeCode);\n }\n\n function getStrf(d, token, localeCode) {\n return getOwn(strfTokens, token)(d, localeCode);\n }\n\n function checkDateToken(ldml, strf) {\n return hasOwn(ldmlTokens, ldml) || hasOwn(strfTokens, strf);\n }\n\n // Format matcher for LDML or STRF tokens.\n dateFormatMatcher = createFormatMatcher(getLdml, getStrf, checkDateToken);\n}\n\nbuildDateFormatTokens();\n\nbuildDateFormatMatcher();\n\nmodule.exports = {\n ldmlTokens: ldmlTokens,\n strfTokens: strfTokens,\n dateFormatMatcher: dateFormatMatcher\n};","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateFormat = require('./internal/dateFormat');\n\nSugar.Date.defineInstance({\n\n 'format': function(date, f, localeCode) {\n return dateFormat(date, f, localeCode);\n }\n\n});\n\nmodule.exports = Sugar.Date.format;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfMonth;","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateUnitIndexes = require('./var/DateUnitIndexes'),\n getWeekday = require('./internal/getWeekday'),\n setWeekday = require('./internal/setWeekday'),\n moveToEndOfUnit = require('./internal/moveToEndOfUnit');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nSugar.Date.defineInstance({\n\n 'endOfISOWeek': function(date) {\n if (getWeekday(date) !== 0) {\n setWeekday(date, 7);\n }\n return moveToEndOfUnit(date, DAY_INDEX);\n }\n\n});\n\nmodule.exports = Sugar.Date.endOfISOWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfDay;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysSince;","'use strict';\n\nvar Sugar = require('sugar-core'),\n getDaysInMonth = require('./internal/getDaysInMonth');\n\nSugar.Date.defineInstance({\n\n 'daysInMonth': function(date) {\n return getDaysInMonth(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.daysInMonth;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysAgo;","'use strict';\n\nvar Sugar = require('sugar-core'),\n cloneDate = require('./internal/cloneDate');\n\nSugar.Date.defineInstance({\n\n 'clone': function(date) {\n return cloneDate(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.clone;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfMonth;","'use strict';\n\nvar Sugar = require('sugar-core'),\n resetTime = require('./internal/resetTime'),\n getWeekday = require('./internal/getWeekday'),\n setWeekday = require('./internal/setWeekday');\n\nSugar.Date.defineInstance({\n\n 'beginningOfISOWeek': function(date) {\n var day = getWeekday(date);\n if (day === 0) {\n day = -6;\n } else if (day !== 1) {\n day = 1;\n }\n setWeekday(date, day);\n return resetTime(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.beginningOfISOWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfDay;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n isDefined = require('../../common/internal/isDefined'),\n walkUnitDown = require('./walkUnitDown');\n\nvar YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction collectDateParamsFromArguments(args) {\n var params = {}, index = 0;\n walkUnitDown(YEAR_INDEX, function(unit) {\n var arg = args[index++];\n if (isDefined(arg)) {\n params[unit.name] = arg;\n }\n });\n return params;\n}\n\nmodule.exports = collectDateParamsFromArguments;","'use strict';\n\nvar isUndefined = require('../../common/internal/isUndefined');\n\nfunction getDateParamsFromString(str) {\n var match, num, params = {};\n match = str.match(/^(-?\\d*[\\d.]\\d*)?\\s?(\\w+?)s?$/i);\n if (match) {\n if (isUndefined(num)) {\n num = +match[1];\n if (isNaN(num)) {\n num = 1;\n }\n }\n params[match[2].toLowerCase()] = num;\n }\n return params;\n}\n\nmodule.exports = getDateParamsFromString;","'use strict';\n\nvar Sugar = require('sugar-core'),\n advanceDateWithArgs = require('./internal/advanceDateWithArgs');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'advance': function(d, args) {\n return advanceDateWithArgs(d, args, 1);\n }\n\n});\n\nmodule.exports = Sugar.Date.advance;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addYears;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addWeeks;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addSeconds;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMonths;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMinutes;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMilliseconds;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addHours;","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n forEach = require('../../common/internal/forEach'),\n compareDate = require('./compareDate'),\n advanceDate = require('./advanceDate'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit'),\n createDateWithContext = require('./createDateWithContext'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar sugarDate = namespaceAliases.sugarDate,\n HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction buildDateUnitMethods() {\n\n defineInstanceSimilar(sugarDate, DateUnits, function(methods, unit, index) {\n var name = unit.name, caps = simpleCapitalize(name);\n\n if (index > DAY_INDEX) {\n forEach(['Last','This','Next'], function(shift) {\n methods['is' + shift + caps] = function(d, localeCode) {\n return compareDate(d, shift + ' ' + name, 0, localeCode, { locale: 'en' });\n };\n });\n }\n if (index > HOURS_INDEX) {\n methods['beginningOf' + caps] = function(d, localeCode) {\n return moveToBeginningOfUnit(d, index, localeCode);\n };\n methods['endOf' + caps] = function(d, localeCode) {\n return moveToEndOfUnit(d, index, localeCode);\n };\n }\n\n methods['add' + caps + 's'] = function(d, num, reset) {\n return advanceDate(d, name, num, reset);\n };\n\n var since = function(date, d, options) {\n return getTimeDistanceForUnit(date, createDateWithContext(date, d, options, true), unit);\n };\n var until = function(date, d, options) {\n return getTimeDistanceForUnit(createDateWithContext(date, d, options, true), date, unit);\n };\n\n methods[name + 'sAgo'] = methods[name + 'sUntil'] = until;\n methods[name + 'sSince'] = methods[name + 'sFromNow'] = since;\n\n });\n\n}\n\nmodule.exports = buildDateUnitMethods;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addDays;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.years;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.year;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeks;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.week;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.seconds;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.second;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.months;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.month;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutes;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minute;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.milliseconds;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecond;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hours;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hour;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('../date/var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Number.defineInstance({\n\n 'duration': function(n, localeCode) {\n return localeManager.get(localeCode).getDuration(n);\n }\n\n});\n\nmodule.exports = Sugar.Number.duration;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.days;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayAfter;","'use strict';\n\nvar forEach = require('./forEach'),\n spaceSplit = require('./spaceSplit'),\n classChecks = require('../var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction collectSimilarMethods(set, fn) {\n var methods = {};\n if (isString(set)) {\n set = spaceSplit(set);\n }\n forEach(set, function(el, i) {\n fn(methods, el, i);\n });\n return methods;\n}\n\nmodule.exports = collectSimilarMethods;","'use strict';\n\nfunction wrapNamespace(method) {\n return function(sugarNamespace, arg1, arg2) {\n sugarNamespace[method](arg1, arg2);\n };\n}\n\nmodule.exports = wrapNamespace;","'use strict';\n\nvar wrapNamespace = require('../internal/wrapNamespace');\n\nmodule.exports = {\n alias: wrapNamespace('alias'),\n defineStatic: wrapNamespace('defineStatic'),\n defineInstance: wrapNamespace('defineInstance'),\n defineStaticPolyfill: wrapNamespace('defineStaticPolyfill'),\n defineInstancePolyfill: wrapNamespace('defineInstancePolyfill'),\n defineInstanceAndStatic: wrapNamespace('defineInstanceAndStatic'),\n defineInstanceWithArguments: wrapNamespace('defineInstanceWithArguments')\n};","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n createDate = require('./createDate'),\n mathAliases = require('../../common/var/mathAliases'),\n advanceDate = require('./advanceDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar sugarNumber = namespaceAliases.sugarNumber,\n round = mathAliases.round;\n\nfunction buildNumberUnitMethods() {\n defineInstanceSimilar(sugarNumber, DateUnits, function(methods, unit) {\n var name = unit.name, base, after, before;\n base = function(n) {\n return round(n * unit.multiplier);\n };\n after = function(n, d, options) {\n return advanceDate(createDate(d, options, true), name, n);\n };\n before = function(n, d, options) {\n return advanceDate(createDate(d, options, true), name, -n);\n };\n methods[name] = base;\n methods[name + 's'] = base;\n methods[name + 'Before'] = before;\n methods[name + 'sBefore'] = before;\n methods[name + 'Ago'] = before;\n methods[name + 'sAgo'] = before;\n methods[name + 'After'] = after;\n methods[name + 'sAfter'] = after;\n methods[name + 'FromNow'] = after;\n methods[name + 'sFromNow'] = after;\n });\n}\n\nmodule.exports = buildNumberUnitMethods;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.day;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'setLocale': function(code) {\n return localeManager.set(code);\n }\n\n});\n\nmodule.exports = Sugar.Date.setLocale;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'removeLocale': function(code) {\n return localeManager.remove(code);\n }\n\n});\n\nmodule.exports = Sugar.Date.removeLocale;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getLocale': function(code) {\n return localeManager.get(code, !code);\n }\n\n});\n\nmodule.exports = Sugar.Date.getLocale;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getAllLocales': function() {\n return localeManager.getAll();\n }\n\n});\n\nmodule.exports = Sugar.Date.getAllLocales;","'use strict';\n\nfunction getKeys(obj) {\n return Object.keys(obj);\n}\n\nmodule.exports = getKeys;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers'),\n getKeys = require('../common/internal/getKeys');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getAllLocaleCodes': function() {\n return getKeys(localeManager.getAll());\n }\n\n});\n\nmodule.exports = Sugar.Date.getAllLocaleCodes;","'use strict';\n\nfunction setChainableConstructor(sugarNamespace, createFn) {\n sugarNamespace.prototype.constructor = function() {\n return createFn.apply(this, arguments);\n };\n}\n\nmodule.exports = setChainableConstructor;","'use strict';\n\nvar createDate = require('./createDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n setChainableConstructor = require('../../common/internal/setChainableConstructor');\n\nvar sugarDate = namespaceAliases.sugarDate;\n\nfunction setDateChainableConstructor() {\n setChainableConstructor(sugarDate, createDate);\n}\n\nmodule.exports = setDateChainableConstructor;","'use strict';\n\nvar setDateChainableConstructor = require('../internal/setDateChainableConstructor');\n\nsetDateChainableConstructor();","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n iterateOverDateParams = require('./iterateOverDateParams');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction iterateOverHigherDateParams(params, fn) {\n iterateOverDateParams(params, fn, YEAR_INDEX, DAY_INDEX);\n}\n\nmodule.exports = iterateOverHigherDateParams;","'use strict';\n\nvar getYear = require('./getYear'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar abs = mathAliases.abs;\n\nfunction getYearFromAbbreviation(str, d, prefer) {\n // Following IETF here, adding 1900 or 2000 depending on the last two digits.\n // Note that this makes no accordance for what should happen after 2050, but\n // intentionally ignoring this for now. https://www.ietf.org/rfc/rfc2822.txt\n var val = +str, delta;\n val += val < 50 ? 2000 : 1900;\n if (prefer) {\n delta = val - getYear(d);\n if (delta / abs(delta) !== prefer) {\n val += prefer * 100;\n }\n }\n return val;\n}\n\nmodule.exports = getYearFromAbbreviation;","'use strict';\n\nfunction getParsingTokenValue(token, str) {\n var val;\n if (token.val) {\n val = token.val;\n } else if (token.sign) {\n val = str === '+' ? 1 : -1;\n } else if (token.bool) {\n val = !!val;\n } else {\n val = +str.replace(/,/, '.');\n }\n if (token.param === 'month') {\n val -= 1;\n }\n return val;\n}\n\nmodule.exports = getParsingTokenValue;","'use strict';\n\nvar getDateParamKey = require('./getDateParamKey');\n\nfunction deleteDateParam(params, key) {\n delete params[getDateParamKey(params, key)];\n}\n\nmodule.exports = deleteDateParam;","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction getOwnKey(obj, key) {\n if (hasOwn(obj, key)) {\n return key;\n }\n}\n\nmodule.exports = getOwnKey;","'use strict';\n\nvar getDateParamKey = require('./getDateParamKey'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases');\n\nvar getOwn = coreUtilityAliases.getOwn;\n\nfunction getDateParam(params, key) {\n return getOwn(params, getDateParamKey(params, key));\n}\n\nmodule.exports = getDateParam;","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setMonth(d, val) {\n callDateSet(d, 'Month', val);\n}\n\nmodule.exports = setMonth;","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setYear(d, val) {\n callDateSet(d, 'FullYear', val);\n}\n\nmodule.exports = setYear;","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet'),\n setISOWeekNumber = require('./setISOWeekNumber');\n\nfunction callDateSetWithWeek(d, method, value, safe) {\n if (method === 'ISOWeek') {\n setISOWeekNumber(d, value);\n } else {\n callDateSet(d, method, value, safe);\n }\n}\n\nmodule.exports = callDateSetWithWeek;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getHigherUnitIndex(index) {\n return index === DAY_INDEX ? MONTH_INDEX : index + 1;\n}\n\nmodule.exports = getHigherUnitIndex;","'use strict';\n\nvar getLowerUnitIndex = require('./getLowerUnitIndex'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nfunction resetLowerUnits(d, unitIndex) {\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex));\n}\n\nmodule.exports = resetLowerUnits;","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar setProperty = coreUtilityAliases.setProperty;\n\nfunction defineAccessor(namespace, name, fn) {\n setProperty(namespace, name, fn);\n}\n\nmodule.exports = defineAccessor;","'use strict';\n\nvar simpleClone = require('./simpleClone'),\n defineAccessor = require('./defineAccessor'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOptionsAccessor(namespace, defaults) {\n var obj = simpleClone(defaults);\n\n function getOption(name) {\n return obj[name];\n }\n\n function setOption(arg1, arg2) {\n var options;\n if (arguments.length === 1) {\n options = arg1;\n } else {\n options = {};\n options[arg1] = arg2;\n }\n forEachProperty(options, function(val, name) {\n if (val === null) {\n val = defaults[name];\n }\n obj[name] = val;\n });\n }\n\n defineAccessor(namespace, 'getOption', getOption);\n defineAccessor(namespace, 'setOption', setOption);\n return getOption;\n}\n\nmodule.exports = defineOptionsAccessor;","'use strict';\n\nfunction defaultNewDate() {\n return new Date;\n}\n\nmodule.exports = defaultNewDate;","'use strict';\n\nvar defaultNewDate = require('../internal/defaultNewDate');\n\nvar DATE_OPTIONS = {\n 'newDateInternal': defaultNewDate\n};\n\nmodule.exports = DATE_OPTIONS;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nrequire('./build/setDateChainableConstructorCall');\n\nSugar.Date.defineStatic({\n\n 'create': function(d, options) {\n return createDate(d, options);\n }\n\n});\n\nmodule.exports = Sugar.Date.create;","'use strict';\n\nvar LocalizedParsingTokens = require('../var/LocalizedParsingTokens'),\n getRegNonCapturing = require('./getRegNonCapturing');\n\nfunction getParsingTokenWithSuffix(field, src, suffix) {\n var token = LocalizedParsingTokens[field];\n if (token.requiresSuffix) {\n src = getRegNonCapturing(src + getRegNonCapturing(suffix));\n } else if (token.requiresSuffixOr) {\n src += getRegNonCapturing(token.requiresSuffixOr + '|' + suffix);\n } else {\n src += getRegNonCapturing(suffix, true);\n }\n return src;\n}\n\nmodule.exports = getParsingTokenWithSuffix;","'use strict';\n\nvar trunc = require('../../common/var/trunc'),\n withPrecision = require('../../common/internal/withPrecision'),\n getAdjustedUnit = require('./getAdjustedUnit');\n\nfunction getAdjustedUnitForNumber(ms) {\n return getAdjustedUnit(ms, function(unit) {\n return trunc(withPrecision(ms / unit.multiplier, 1));\n });\n}\n\nmodule.exports = getAdjustedUnitForNumber;","'use strict';\n\nfunction allCharsReg(src) {\n return RegExp('[' + src + ']', 'g');\n}\n\nmodule.exports = allCharsReg;","'use strict';\n\nvar CommonChars = require('./CommonChars'),\n chr = require('./chr'),\n allCharsReg = require('../internal/allCharsReg');\n\nvar HALF_WIDTH_ZERO = CommonChars.HALF_WIDTH_ZERO,\n FULL_WIDTH_ZERO = CommonChars.FULL_WIDTH_ZERO,\n HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD,\n FULL_WIDTH_PERIOD = CommonChars.FULL_WIDTH_PERIOD,\n HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA;\n\nvar fullWidthNumberReg, fullWidthNumberMap, fullWidthNumbers;\n\nfunction buildFullWidthNumber() {\n var fwp = FULL_WIDTH_PERIOD, hwp = HALF_WIDTH_PERIOD, hwc = HALF_WIDTH_COMMA, fwn = '';\n fullWidthNumberMap = {};\n for (var i = 0, digit; i <= 9; i++) {\n digit = chr(i + FULL_WIDTH_ZERO);\n fwn += digit;\n fullWidthNumberMap[digit] = chr(i + HALF_WIDTH_ZERO);\n }\n fullWidthNumberMap[hwc] = '';\n fullWidthNumberMap[fwp] = hwp;\n // Mapping this to itself to capture it easily\n // in stringToNumber to detect decimals later.\n fullWidthNumberMap[hwp] = hwp;\n fullWidthNumberReg = allCharsReg(fwn + fwp + hwc + hwp);\n fullWidthNumbers = fwn;\n}\n\nbuildFullWidthNumber();\n\nmodule.exports = {\n fullWidthNumberReg: fullWidthNumberReg,\n fullWidthNumberMap: fullWidthNumberMap,\n fullWidthNumbers: fullWidthNumbers\n};","'use strict';\n\nvar classChecks = require('../var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction escapeRegExp(str) {\n if (!isString(str)) str = String(str);\n return str.replace(/([\\\\\\/\\'*+?|()\\[\\]{}.^$-])/g,'\\\\$1');\n}\n\nmodule.exports = escapeRegExp;","'use strict';\n\nvar map = require('../../common/internal/map'),\n escapeRegExp = require('../../common/internal/escapeRegExp');\n\nfunction arrayToRegAlternates(arr) {\n var joined = arr.join('');\n if (!arr || !arr.length) {\n return '';\n }\n if (joined.length === arr.length) {\n return '[' + joined + ']';\n }\n // map handles sparse arrays so no need to compact the array here.\n return map(arr, escapeRegExp).join('|');\n}\n\nmodule.exports = arrayToRegAlternates;","'use strict';\n\nmodule.exports = '_sugar_';","'use strict';\n\nvar PRIVATE_PROP_PREFIX = require('../var/PRIVATE_PROP_PREFIX'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar setProperty = coreUtilityAliases.setProperty;\n\nfunction privatePropertyAccessor(key) {\n var privateKey = PRIVATE_PROP_PREFIX + key;\n return function(obj, val) {\n if (arguments.length > 1) {\n setProperty(obj, privateKey, val);\n return obj;\n }\n return obj[privateKey];\n };\n}\n\nmodule.exports = privatePropertyAccessor;","'use strict';\n\nfunction getArrayWithOffset(arr, n, alternate, offset) {\n var val;\n if (alternate > 1) {\n val = arr[n + (alternate - 1) * offset];\n }\n return val || arr[n];\n}\n\nmodule.exports = getArrayWithOffset;","'use strict';\n\nfunction getOrdinalSuffix(num) {\n if (num >= 11 && num <= 13) {\n return 'th';\n } else {\n switch(num % 10) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n default: return 'th';\n }\n }\n}\n\nmodule.exports = getOrdinalSuffix;","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction hasValidPlainObjectPrototype(obj) {\n var hasToString = 'toString' in obj;\n var hasConstructor = 'constructor' in obj;\n // An object created with Object.create(null) has no methods in the\n // prototype chain, so check if any are missing. The additional hasToString\n // check is for false positives on some host objects in old IE which have\n // toString but no constructor. If the object has an inherited constructor,\n // then check if it is Object (the \"isPrototypeOf\" tapdance here is a more\n // robust way of ensuring this if the global has been hijacked). Note that\n // accessing the constructor directly (without \"in\" or \"hasOwnProperty\")\n // will throw a permissions error in IE8 on cross-domain windows.\n return (!hasConstructor && !hasToString) ||\n (hasConstructor && !hasOwn(obj, 'constructor') &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf'));\n}\n\nmodule.exports = hasValidPlainObjectPrototype;","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction hasOwnEnumeratedProperties(obj) {\n // Plain objects are generally defined as having enumerated properties\n // all their own, however in early IE environments without defineProperty,\n // there may also be enumerated methods in the prototype chain, so check\n // for both of these cases.\n var objectProto = Object.prototype;\n for (var key in obj) {\n var val = obj[key];\n if (!hasOwn(obj, key) && val !== objectProto[key]) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = hasOwnEnumeratedProperties;","'use strict';\n\nvar isClass = require('./isClass'),\n isObjectType = require('./isObjectType'),\n hasOwnEnumeratedProperties = require('./hasOwnEnumeratedProperties'),\n hasValidPlainObjectPrototype = require('./hasValidPlainObjectPrototype');\n\nfunction isPlainObject(obj, className) {\n return isObjectType(obj) &&\n isClass(obj, 'Object', className) &&\n hasValidPlainObjectPrototype(obj) &&\n hasOwnEnumeratedProperties(obj);\n}\n\nmodule.exports = isPlainObject;","'use strict';\n\nmodule.exports = 'Boolean Number String Date RegExp Function Array Error Set Map';","'use strict';\n\nvar CommonChars = require('../var/CommonChars');\n\nvar HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA;\n\nfunction commaSplit(str) {\n return str.split(HALF_WIDTH_COMMA);\n}\n\nmodule.exports = commaSplit;","'use strict';\n\nfunction isArrayIndex(n) {\n return n >>> 0 == n && n != 0xFFFFFFFF;\n}\n\nmodule.exports = isArrayIndex;","'use strict';\n\nvar isArrayIndex = require('./isArrayIndex');\n\nfunction getSparseArrayIndexes(arr, fromIndex, loop, fromRight) {\n var indexes = [], i;\n for (i in arr) {\n if (isArrayIndex(i) && (loop || (fromRight ? i <= fromIndex : i >= fromIndex))) {\n indexes.push(+i);\n }\n }\n indexes.sort(function(a, b) {\n var aLoop = a > fromIndex;\n var bLoop = b > fromIndex;\n if (aLoop !== bLoop) {\n return aLoop ? -1 : 1;\n }\n return a - b;\n });\n return indexes;\n}\n\nmodule.exports = getSparseArrayIndexes;","'use strict';\n\nvar getSparseArrayIndexes = require('./getSparseArrayIndexes');\n\nfunction iterateOverSparseArray(arr, fn, fromIndex, loop) {\n var indexes = getSparseArrayIndexes(arr, fromIndex, loop), index;\n for (var i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n fn.call(arr, arr[index], index, arr);\n }\n return arr;\n}\n\nmodule.exports = iterateOverSparseArray;","'use strict';\n\nfunction filter(arr, fn) {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n var el = arr[i];\n if (i in arr && fn(el, i)) {\n result.push(el);\n }\n }\n return result;\n}\n\nmodule.exports = filter;","'use strict';\n\nvar CoreParsingFormats = [\n {\n // 12-1978\n // 08-1978 (MDY)\n src: '{MM}[-.\\\\/]{yyyy}'\n },\n {\n // 12/08/1978\n // 08/12/1978 (MDY)\n time: true,\n src: '{dd}[-.\\\\/]{MM}(?:[-.\\\\/]{yyyy|yy|y})?',\n mdy: '{MM}[-.\\\\/]{dd}(?:[-.\\\\/]{yyyy|yy|y})?'\n },\n {\n // 1975-08-25\n time: true,\n src: '{yyyy}[-.\\\\/]{MM}(?:[-.\\\\/]{dd})?'\n },\n {\n // .NET JSON\n src: '\\\\\\\\/Date\\\\({timestamp}(?:[+-]\\\\d{4,4})?\\\\)\\\\\\\\/'\n },\n {\n // ISO-8601\n src: '{yearSign?}{yyyy}(?:-?{MM}(?:-?{dd}(?:T{ihh}(?::?{imm}(?::?{ss})?)?)?)?)?{tzOffset?}'\n }\n];\n\nmodule.exports = CoreParsingFormats;","'use strict';\n\nvar LOCALE_ARRAY_FIELDS = [\n 'months', 'weekdays', 'units', 'numerals', 'placeholders',\n 'articles', 'tokens', 'timeMarkers', 'ampm', 'timeSuffixes',\n 'parse', 'timeParse', 'timeFrontParse', 'modifiers'\n];\n\nmodule.exports = LOCALE_ARRAY_FIELDS;","'use strict';\n\nvar LOCALE_ARRAY_FIELDS = require('../var/LOCALE_ARRAY_FIELDS'),\n ISODefaults = require('../var/ISODefaults'),\n ParsingTokens = require('../var/ParsingTokens'),\n CoreParsingFormats = require('../var/CoreParsingFormats'),\n LocalizedParsingTokens = require('../var/LocalizedParsingTokens'),\n map = require('../../common/internal/map'),\n filter = require('../../common/internal/filter'),\n forEach = require('../../common/internal/forEach'),\n isDefined = require('../../common/internal/isDefined'),\n commaSplit = require('../../common/internal/commaSplit'),\n classChecks = require('../../common/var/classChecks'),\n isUndefined = require('../../common/internal/isUndefined'),\n mathAliases = require('../../common/var/mathAliases'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n getOrdinalSuffix = require('../../common/internal/getOrdinalSuffix'),\n getRegNonCapturing = require('./getRegNonCapturing'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n getArrayWithOffset = require('./getArrayWithOffset'),\n iterateOverDateUnits = require('./iterateOverDateUnits'),\n arrayToRegAlternates = require('./arrayToRegAlternates'),\n fullwidthNumberHelpers = require('../../common/var/fullwidthNumberHelpers'),\n getAdjustedUnitForNumber = require('./getAdjustedUnitForNumber'),\n getParsingTokenWithSuffix = require('./getParsingTokenWithSuffix');\n\nvar getOwn = coreUtilityAliases.getOwn,\n forEachProperty = coreUtilityAliases.forEachProperty,\n fullWidthNumberMap = fullwidthNumberHelpers.fullWidthNumberMap,\n fullWidthNumbers = fullwidthNumberHelpers.fullWidthNumbers,\n pow = mathAliases.pow,\n max = mathAliases.max,\n ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR,\n isString = classChecks.isString,\n isFunction = classChecks.isFunction;\n\nfunction getNewLocale(def) {\n\n function Locale(def) {\n this.init(def);\n }\n\n Locale.prototype = {\n\n getMonthName: function(n, alternate) {\n if (this.monthSuffix) {\n return (n + 1) + this.monthSuffix;\n }\n return getArrayWithOffset(this.months, n, alternate, 12);\n },\n\n getWeekdayName: function(n, alternate) {\n return getArrayWithOffset(this.weekdays, n, alternate, 7);\n },\n\n getTokenValue: function(field, str) {\n var map = this[field + 'Map'], val;\n if (map) {\n val = map[str];\n }\n if (isUndefined(val)) {\n val = this.getNumber(str);\n if (field === 'month') {\n // Months are the only numeric date field\n // whose value is not the same as its number.\n val -= 1;\n }\n }\n return val;\n },\n\n getNumber: function(str) {\n var num = this.numeralMap[str];\n if (isDefined(num)) {\n return num;\n }\n // The unary plus operator here show better performance and handles\n // every format that parseFloat does with the exception of trailing\n // characters, which are guaranteed not to be in our string at this point.\n num = +str.replace(/,/, '.');\n if (!isNaN(num)) {\n return num;\n }\n num = this.getNumeralValue(str);\n if (!isNaN(num)) {\n this.numeralMap[str] = num;\n return num;\n }\n return num;\n },\n\n getNumeralValue: function(str) {\n var place = 1, num = 0, lastWasPlace, isPlace, numeral, digit, arr;\n // Note that \"numerals\" that need to be converted through this method are\n // all considered to be single characters in order to handle CJK. This\n // method is by no means unique to CJK, but the complexity of handling\n // inflections in non-CJK languages adds too much overhead for not enough\n // value, so avoiding for now.\n arr = str.split('');\n for (var i = arr.length - 1; numeral = arr[i]; i--) {\n digit = getOwn(this.numeralMap, numeral);\n if (isUndefined(digit)) {\n digit = getOwn(fullWidthNumberMap, numeral) || 0;\n }\n isPlace = digit > 0 && digit % 10 === 0;\n if (isPlace) {\n if (lastWasPlace) {\n num += place;\n }\n if (i) {\n place = digit;\n } else {\n num += digit;\n }\n } else {\n num += digit * place;\n place *= 10;\n }\n lastWasPlace = isPlace;\n }\n return num;\n },\n\n getOrdinal: function(n) {\n var suffix = this.ordinalSuffix;\n return suffix || getOrdinalSuffix(n);\n },\n\n getRelativeFormat: function(adu, type) {\n return this.convertAdjustedToFormat(adu, type);\n },\n\n getDuration: function(ms) {\n return this.convertAdjustedToFormat(getAdjustedUnitForNumber(max(0, ms)), 'duration');\n },\n\n getFirstDayOfWeek: function() {\n var val = this.firstDayOfWeek;\n return isDefined(val) ? val : ISO_FIRST_DAY_OF_WEEK;\n },\n\n getFirstDayOfWeekYear: function() {\n return this.firstDayOfWeekYear || ISO_FIRST_DAY_OF_WEEK_YEAR;\n },\n\n convertAdjustedToFormat: function(adu, type) {\n var sign, unit, mult,\n num = adu[0],\n u = adu[1],\n ms = adu[2],\n format = this[type] || this.relative;\n if (isFunction(format)) {\n return format.call(this, num, u, ms, type);\n }\n mult = !this.plural || num === 1 ? 0 : 1;\n unit = this.units[mult * 8 + u] || this.units[u];\n sign = this[ms > 0 ? 'fromNow' : 'ago'];\n return format.replace(/\\{(.*?)\\}/g, function(full, match) {\n switch(match) {\n case 'num': return num;\n case 'unit': return unit;\n case 'sign': return sign;\n }\n });\n },\n\n cacheFormat: function(dif, i) {\n this.compiledFormats.splice(i, 1);\n this.compiledFormats.unshift(dif);\n },\n\n addFormat: function(src, to) {\n var loc = this;\n\n function getTokenSrc(str) {\n var suffix, src, val,\n opt = str.match(/\\?$/),\n nc = str.match(/^(\\d+)\\??$/),\n slice = str.match(/(\\d)(?:-(\\d))?/),\n key = str.replace(/[^a-z]+$/i, '');\n\n // Allowing alias tokens such as {time}\n if (val = getOwn(loc.parsingAliases, key)) {\n src = replaceParsingTokens(val);\n if (opt) {\n src = getRegNonCapturing(src, true);\n }\n return src;\n }\n\n if (nc) {\n src = loc.tokens[nc[1]];\n } else if (val = getOwn(ParsingTokens, key)) {\n src = val.src;\n } else {\n val = getOwn(loc.parsingTokens, key) || getOwn(loc, key);\n\n // Both the \"months\" array and the \"month\" parsing token can be accessed\n // by either {month} or {months}, falling back as necessary, however\n // regardless of whether or not a fallback occurs, the final field to\n // be passed to addRawFormat must be normalized as singular.\n key = key.replace(/s$/, '');\n\n if (!val) {\n val = getOwn(loc.parsingTokens, key) || getOwn(loc, key + 's');\n }\n\n if (isString(val)) {\n src = val;\n suffix = loc[key + 'Suffix'];\n } else {\n if (slice) {\n val = filter(val, function(m, i) {\n var mod = i % (loc.units ? 8 : val.length);\n return mod >= slice[1] && mod <= (slice[2] || slice[1]);\n });\n }\n src = arrayToRegAlternates(val);\n }\n }\n if (!src) {\n return '';\n }\n if (nc) {\n // Non-capturing tokens like {0}\n src = getRegNonCapturing(src);\n } else {\n // Capturing group and add to parsed tokens\n to.push(key);\n src = '(' + src + ')';\n }\n if (suffix) {\n // Date/time suffixes such as those in CJK\n src = getParsingTokenWithSuffix(key, src, suffix);\n }\n if (opt) {\n src += '?';\n }\n return src;\n }\n\n function replaceParsingTokens(str) {\n\n // Make spaces optional\n str = str.replace(/ /g, ' ?');\n\n return str.replace(/\\{([^,]+?)\\}/g, function(match, token) {\n var tokens = token.split('|'), src;\n if (tokens.length > 1) {\n src = getRegNonCapturing(map(tokens, getTokenSrc).join('|'));\n } else {\n src = getTokenSrc(token);\n }\n return src;\n });\n }\n\n if (!to) {\n to = [];\n src = replaceParsingTokens(src);\n }\n\n loc.addRawFormat(src, to);\n },\n\n addRawFormat: function(format, to) {\n this.compiledFormats.unshift({\n reg: RegExp('^ *' + format + ' *$', 'i'),\n to: to\n });\n },\n\n init: function(def) {\n var loc = this;\n\n // -- Initialization helpers\n\n function initFormats() {\n loc.compiledFormats = [];\n loc.parsingAliases = {};\n loc.parsingTokens = {};\n }\n\n function initDefinition() {\n simpleMerge(loc, def);\n }\n\n function initArrayFields() {\n forEach(LOCALE_ARRAY_FIELDS, function(name) {\n var val = loc[name];\n if (isString(val)) {\n loc[name] = commaSplit(val);\n } else if (!val) {\n loc[name] = [];\n }\n });\n }\n\n // -- Value array build helpers\n\n function buildValueArray(name, mod, map, fn) {\n var field = name, all = [], setMap;\n if (!loc[field]) {\n field += 's';\n }\n if (!map) {\n map = {};\n setMap = true;\n }\n forAllAlternates(field, function(alt, j, i) {\n var idx = j * mod + i, val;\n val = fn ? fn(i) : i;\n map[alt] = val;\n map[alt.toLowerCase()] = val;\n all[idx] = alt;\n });\n loc[field] = all;\n if (setMap) {\n loc[name + 'Map'] = map;\n }\n }\n\n function forAllAlternates(field, fn) {\n forEach(loc[field], function(str, i) {\n forEachAlternate(str, function(alt, j) {\n fn(alt, j, i);\n });\n });\n }\n\n function forEachAlternate(str, fn) {\n var arr = map(str.split('+'), function(split) {\n return split.replace(/(.+):(.+)$/, function(full, base, suffixes) {\n return map(suffixes.split('|'), function(suffix) {\n return base + suffix;\n }).join('|');\n });\n }).join('|');\n forEach(arr.split('|'), fn);\n }\n\n function buildNumerals() {\n var map = {};\n buildValueArray('numeral', 10, map);\n buildValueArray('article', 1, map, function() {\n return 1;\n });\n buildValueArray('placeholder', 4, map, function(n) {\n return pow(10, n + 1);\n });\n loc.numeralMap = map;\n }\n\n function buildTimeFormats() {\n loc.parsingAliases['time'] = getTimeFormat();\n loc.parsingAliases['tzOffset'] = getTZOffsetFormat();\n }\n\n function getTimeFormat() {\n var src;\n if (loc.ampmFront) {\n // \"ampmFront\" exists mostly for CJK locales, which also presume that\n // time suffixes exist, allowing this to be a simpler regex.\n src = '{ampm?} {hour} (?:{minute} (?::?{second})?)?';\n } else if(loc.ampm.length) {\n src = '{hour}(?:[.:]{minute}(?:[.:]{second})? {ampm?}| {ampm})';\n } else {\n src = '{hour}(?:[.:]{minute}(?:[.:]{second})?)';\n }\n return src;\n }\n\n function getTZOffsetFormat() {\n return '(?:{Z}|{GMT?}(?:{tzSign}{tzHour}(?::?{tzMinute}(?: \\\\([\\\\w\\\\s]+\\\\))?)?)?)?';\n }\n\n function buildParsingTokens() {\n forEachProperty(LocalizedParsingTokens, function(token, name) {\n var src, arr;\n src = token.base ? ParsingTokens[token.base].src : token.src;\n if (token.requiresNumerals || loc.numeralUnits) {\n src += getNumeralSrc();\n }\n arr = loc[name + 's'];\n if (arr && arr.length) {\n src += '|' + arrayToRegAlternates(arr);\n }\n loc.parsingTokens[name] = src;\n });\n }\n\n function getNumeralSrc() {\n var all, src = '';\n all = loc.numerals.concat(loc.placeholders).concat(loc.articles);\n if (loc.allowsFullWidth) {\n all = all.concat(fullWidthNumbers.split(''));\n }\n if (all.length) {\n src = '|(?:' + arrayToRegAlternates(all) + ')+';\n }\n return src;\n }\n\n function buildTimeSuffixes() {\n iterateOverDateUnits(function(unit, i) {\n var token = loc.timeSuffixes[i];\n if (token) {\n loc[(unit.alias || unit.name) + 'Suffix'] = token;\n }\n });\n }\n\n function buildModifiers() {\n forEach(loc.modifiers, function(modifier) {\n var name = modifier.name, mapKey = name + 'Map', map;\n map = loc[mapKey] || {};\n forEachAlternate(modifier.src, function(alt, j) {\n var token = getOwn(loc.parsingTokens, name), val = modifier.value;\n map[alt] = val;\n loc.parsingTokens[name] = token ? token + '|' + alt : alt;\n if (modifier.name === 'sign' && j === 0) {\n // Hooking in here to set the first \"fromNow\" or \"ago\" modifier\n // directly on the locale, so that it can be reused in the\n // relative format.\n loc[val === 1 ? 'fromNow' : 'ago'] = alt;\n }\n });\n loc[mapKey] = map;\n });\n }\n\n // -- Format adding helpers\n\n function addCoreFormats() {\n forEach(CoreParsingFormats, function(df) {\n var src = df.src;\n if (df.mdy && loc.mdy) {\n // Use the mm/dd/yyyy variant if it\n // exists and the locale requires it\n src = df.mdy;\n }\n if (df.time) {\n // Core formats that allow time require the time\n // reg on both sides, so add both versions here.\n loc.addFormat(getFormatWithTime(src, true));\n loc.addFormat(getFormatWithTime(src));\n } else {\n loc.addFormat(src);\n }\n });\n loc.addFormat('{time}');\n }\n\n function addLocaleFormats() {\n addFormatSet('parse');\n addFormatSet('timeParse', true);\n addFormatSet('timeFrontParse', true, true);\n }\n\n function addFormatSet(field, allowTime, timeFront) {\n forEach(loc[field], function(format) {\n if (allowTime) {\n format = getFormatWithTime(format, timeFront);\n }\n loc.addFormat(format);\n });\n }\n\n function getFormatWithTime(baseFormat, timeBefore) {\n if (timeBefore) {\n return getTimeBefore() + baseFormat;\n }\n return baseFormat + getTimeAfter();\n }\n\n function getTimeBefore() {\n return getRegNonCapturing('{time}[,\\\\s\\\\u3000]', true);\n }\n\n function getTimeAfter() {\n var markers = ',?[\\\\s\\\\u3000]', localized;\n localized = arrayToRegAlternates(loc.timeMarkers);\n if (localized) {\n markers += '| (?:' + localized + ') ';\n }\n markers = getRegNonCapturing(markers, loc.timeMarkerOptional);\n return getRegNonCapturing(markers + '{time}', true);\n }\n\n initFormats();\n initDefinition();\n initArrayFields();\n\n buildValueArray('month', 12);\n buildValueArray('weekday', 7);\n buildValueArray('unit', 8);\n buildValueArray('ampm', 2);\n\n buildNumerals();\n buildTimeFormats();\n buildParsingTokens();\n buildTimeSuffixes();\n buildModifiers();\n\n // The order of these formats is important. Order is reversed so formats\n // that are initialized later will take precedence. Generally, this means\n // that more specific formats should come later.\n addCoreFormats();\n addLocaleFormats();\n\n }\n\n };\n\n return new Locale(def);\n}\n\nmodule.exports = getNewLocale;","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar CanadianEnglishDefinition = getEnglishVariant({\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {Month}, {yyyy}',\n 'long': '{d} {Month}, {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = CanadianEnglishDefinition;","'use strict';\n\nvar EnglishLocaleBaseDefinition = {\n 'code': 'en',\n 'plural': true,\n 'timeMarkers': 'at',\n 'ampm': 'AM|A.M.|a,PM|P.M.|p',\n 'units': 'millisecond:|s,second:|s,minute:|s,hour:|s,day:|s,week:|s,month:|s,year:|s',\n 'months': 'Jan:uary|,Feb:ruary|,Mar:ch|,Apr:il|,May,Jun:e|,Jul:y|,Aug:ust|,Sep:tember|t|,Oct:ober|,Nov:ember|,Dec:ember|',\n 'weekdays': 'Sun:day|,Mon:day|,Tue:sday|,Wed:nesday|,Thu:rsday|,Fri:day|,Sat:urday|+weekend',\n 'numerals': 'zero,one|first,two|second,three|third,four:|th,five|fifth,six:|th,seven:|th,eight:|h,nin:e|th,ten:|th',\n 'articles': 'a,an,the',\n 'tokens': 'the,st|nd|rd|th,of|in,a|an,on',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'modifiers': [\n { 'name': 'half', 'src': 'half', 'value': .5 },\n { 'name': 'midday', 'src': 'noon', 'value': 12 },\n { 'name': 'midday', 'src': 'midnight', 'value': 24 },\n { 'name': 'day', 'src': 'yesterday', 'value': -1 },\n { 'name': 'day', 'src': 'today|tonight', 'value': 0 },\n { 'name': 'day', 'src': 'tomorrow', 'value': 1 },\n { 'name': 'sign', 'src': 'ago|before', 'value': -1 },\n { 'name': 'sign', 'src': 'from now|after|from|in|later', 'value': 1 },\n { 'name': 'edge', 'src': 'first day|first|beginning', 'value': -2 },\n { 'name': 'edge', 'src': 'last day', 'value': 1 },\n { 'name': 'edge', 'src': 'end|last', 'value': 2 },\n { 'name': 'shift', 'src': 'last', 'value': -1 },\n { 'name': 'shift', 'src': 'the|this', 'value': 0 },\n { 'name': 'shift', 'src': 'next', 'value': 1 }\n ],\n 'parse': [\n '(?:just)? now',\n '{shift} {unit:5-7}',\n \"{months?} (?:{year}|'{yy})\",\n '{midday} {4?} {day|weekday}',\n '{months},?(?:[-.\\\\/\\\\s]{year})?',\n '{edge} of (?:day)? {day|weekday}',\n '{0} {num}{1?} {weekday} {2} {months},? {year?}',\n '{shift?} {day?} {weekday?} {timeMarker?} {midday}',\n '{sign?} {3?} {half} {3?} {unit:3-4|unit:7} {sign?}',\n '{0?} {edge} {weekday?} {2} {shift?} {unit:4-7?} {months?},? {year?}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{0?} {date}{1?} {2?} {months?}',\n '{weekday} {2?} {shift} {unit:5}',\n '{0?} {num} {2?} {months}\\\\.?,? {year?}',\n '{num?} {unit:4-5} {sign} {day|weekday}',\n '{year}[-.\\\\/\\\\s]{months}[-.\\\\/\\\\s]{date}',\n '{0|months} {date?}{1?} of {shift} {unit:6-7}',\n '{0?} {num}{1?} {weekday} of {shift} {unit:6}',\n \"{date}[-.\\\\/\\\\s]{months}[-.\\\\/\\\\s](?:{year}|'?{yy})\",\n \"{weekday?}\\\\.?,? {months}\\\\.?,? {date}{1?},? (?:{year}|'{yy})?\"\n ],\n 'timeFrontParse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{4?} {day|weekday}'\n ]\n};\n\nmodule.exports = EnglishLocaleBaseDefinition;","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar BritishEnglishDefinition = getEnglishVariant({\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {Month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = BritishEnglishDefinition;","'use strict';\n\nvar BritishEnglishDefinition = require('./BritishEnglishDefinition'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n CanadianEnglishDefinition = require('./CanadianEnglishDefinition');\n\nvar LazyLoadedLocales = {\n 'en-US': AmericanEnglishDefinition,\n 'en-GB': BritishEnglishDefinition,\n 'en-AU': BritishEnglishDefinition,\n 'en-CA': CanadianEnglishDefinition\n};\n\nmodule.exports = LazyLoadedLocales;","'use strict';\n\n// Static Methods\nrequire('./addLocale');\nrequire('./create');\nrequire('./getAllLocaleCodes');\nrequire('./getAllLocales');\nrequire('./getLocale');\nrequire('./removeLocale');\nrequire('./setLocale');\n\n// Instance Methods\nrequire('../number/day');\nrequire('../number/dayAfter');\nrequire('../number/dayAgo');\nrequire('../number/dayBefore');\nrequire('../number/dayFromNow');\nrequire('../number/days');\nrequire('../number/daysAfter');\nrequire('../number/daysAgo');\nrequire('../number/daysBefore');\nrequire('../number/daysFromNow');\nrequire('../number/duration');\nrequire('../number/hour');\nrequire('../number/hourAfter');\nrequire('../number/hourAgo');\nrequire('../number/hourBefore');\nrequire('../number/hourFromNow');\nrequire('../number/hours');\nrequire('../number/hoursAfter');\nrequire('../number/hoursAgo');\nrequire('../number/hoursBefore');\nrequire('../number/hoursFromNow');\nrequire('../number/millisecond');\nrequire('../number/millisecondAfter');\nrequire('../number/millisecondAgo');\nrequire('../number/millisecondBefore');\nrequire('../number/millisecondFromNow');\nrequire('../number/milliseconds');\nrequire('../number/millisecondsAfter');\nrequire('../number/millisecondsAgo');\nrequire('../number/millisecondsBefore');\nrequire('../number/millisecondsFromNow');\nrequire('../number/minute');\nrequire('../number/minuteAfter');\nrequire('../number/minuteAgo');\nrequire('../number/minuteBefore');\nrequire('../number/minuteFromNow');\nrequire('../number/minutes');\nrequire('../number/minutesAfter');\nrequire('../number/minutesAgo');\nrequire('../number/minutesBefore');\nrequire('../number/minutesFromNow');\nrequire('../number/month');\nrequire('../number/monthAfter');\nrequire('../number/monthAgo');\nrequire('../number/monthBefore');\nrequire('../number/monthFromNow');\nrequire('../number/months');\nrequire('../number/monthsAfter');\nrequire('../number/monthsAgo');\nrequire('../number/monthsBefore');\nrequire('../number/monthsFromNow');\nrequire('../number/second');\nrequire('../number/secondAfter');\nrequire('../number/secondAgo');\nrequire('../number/secondBefore');\nrequire('../number/secondFromNow');\nrequire('../number/seconds');\nrequire('../number/secondsAfter');\nrequire('../number/secondsAgo');\nrequire('../number/secondsBefore');\nrequire('../number/secondsFromNow');\nrequire('../number/week');\nrequire('../number/weekAfter');\nrequire('../number/weekAgo');\nrequire('../number/weekBefore');\nrequire('../number/weekFromNow');\nrequire('../number/weeks');\nrequire('../number/weeksAfter');\nrequire('../number/weeksAgo');\nrequire('../number/weeksBefore');\nrequire('../number/weeksFromNow');\nrequire('../number/year');\nrequire('../number/yearAfter');\nrequire('../number/yearAgo');\nrequire('../number/yearBefore');\nrequire('../number/yearFromNow');\nrequire('../number/years');\nrequire('../number/yearsAfter');\nrequire('../number/yearsAgo');\nrequire('../number/yearsBefore');\nrequire('../number/yearsFromNow');\nrequire('./addDays');\nrequire('./addHours');\nrequire('./addMilliseconds');\nrequire('./addMinutes');\nrequire('./addMonths');\nrequire('./addSeconds');\nrequire('./addWeeks');\nrequire('./addYears');\nrequire('./advance');\nrequire('./beginningOfDay');\nrequire('./beginningOfISOWeek');\nrequire('./beginningOfMonth');\nrequire('./beginningOfWeek');\nrequire('./beginningOfYear');\nrequire('./clone');\nrequire('./daysAgo');\nrequire('./daysFromNow');\nrequire('./daysInMonth');\nrequire('./daysSince');\nrequire('./daysUntil');\nrequire('./endOfDay');\nrequire('./endOfISOWeek');\nrequire('./endOfMonth');\nrequire('./endOfWeek');\nrequire('./endOfYear');\nrequire('./format');\nrequire('./get');\nrequire('./getISOWeek');\nrequire('./getUTCOffset');\nrequire('./getUTCWeekday');\nrequire('./getWeekday');\nrequire('./hoursAgo');\nrequire('./hoursFromNow');\nrequire('./hoursSince');\nrequire('./hoursUntil');\nrequire('./is');\nrequire('./isAfter');\nrequire('./isBefore');\nrequire('./isBetween');\nrequire('./isFriday');\nrequire('./isFuture');\nrequire('./isLastMonth');\nrequire('./isLastWeek');\nrequire('./isLastYear');\nrequire('./isLeapYear');\nrequire('./isMonday');\nrequire('./isNextMonth');\nrequire('./isNextWeek');\nrequire('./isNextYear');\nrequire('./isPast');\nrequire('./isSaturday');\nrequire('./isSunday');\nrequire('./isThisMonth');\nrequire('./isThisWeek');\nrequire('./isThisYear');\nrequire('./isThursday');\nrequire('./isToday');\nrequire('./isTomorrow');\nrequire('./isTuesday');\nrequire('./isUTC');\nrequire('./isValid');\nrequire('./isWednesday');\nrequire('./isWeekday');\nrequire('./isWeekend');\nrequire('./isYesterday');\nrequire('./iso');\nrequire('./millisecondsAgo');\nrequire('./millisecondsFromNow');\nrequire('./millisecondsSince');\nrequire('./millisecondsUntil');\nrequire('./minutesAgo');\nrequire('./minutesFromNow');\nrequire('./minutesSince');\nrequire('./minutesUntil');\nrequire('./monthsAgo');\nrequire('./monthsFromNow');\nrequire('./monthsSince');\nrequire('./monthsUntil');\nrequire('./relative');\nrequire('./relativeTo');\nrequire('./reset');\nrequire('./rewind');\nrequire('./secondsAgo');\nrequire('./secondsFromNow');\nrequire('./secondsSince');\nrequire('./secondsUntil');\nrequire('./set');\nrequire('./setISOWeek');\nrequire('./setUTC');\nrequire('./setWeekday');\nrequire('./weeksAgo');\nrequire('./weeksFromNow');\nrequire('./weeksSince');\nrequire('./weeksUntil');\nrequire('./yearsAgo');\nrequire('./yearsFromNow');\nrequire('./yearsSince');\nrequire('./yearsUntil');\n\n// Accessors\nrequire('./getOption');\nrequire('./setOption');\n\nmodule.exports = require('sugar-core');","exports.remove = removeDiacritics;\n\nvar replacementList = [\n {\n base: ' ',\n chars: \"\\u00A0\",\n }, {\n base: '0',\n chars: \"\\u07C0\",\n }, {\n base: 'A',\n chars: \"\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\",\n }, {\n base: 'AA',\n chars: \"\\uA732\",\n }, {\n base: 'AE',\n chars: \"\\u00C6\\u01FC\\u01E2\",\n }, {\n base: 'AO',\n chars: \"\\uA734\",\n }, {\n base: 'AU',\n chars: \"\\uA736\",\n }, {\n base: 'AV',\n chars: \"\\uA738\\uA73A\",\n }, {\n base: 'AY',\n chars: \"\\uA73C\",\n }, {\n base: 'B',\n chars: \"\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0181\",\n }, {\n base: 'C',\n chars: \"\\u24b8\\uff23\\uA73E\\u1E08\\u0106\\u0043\\u0108\\u010A\\u010C\\u00C7\\u0187\\u023B\",\n }, {\n base: 'D',\n chars: \"\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018A\\u0189\\u1D05\\uA779\",\n }, {\n base: 'Dh',\n chars: \"\\u00D0\",\n }, {\n base: 'DZ',\n chars: \"\\u01F1\\u01C4\",\n }, {\n base: 'Dz',\n chars: \"\\u01F2\\u01C5\",\n }, {\n base: 'E',\n chars: \"\\u025B\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\\u1D07\",\n }, {\n base: 'F',\n chars: \"\\uA77C\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\",\n }, {\n base: 'G',\n chars: \"\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\\u0262\",\n }, {\n base: 'H',\n chars: \"\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\",\n }, {\n base: 'I',\n chars: \"\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\",\n }, {\n base: 'J',\n chars: \"\\u24BF\\uFF2A\\u0134\\u0248\\u0237\",\n }, {\n base: 'K',\n chars: \"\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\",\n }, {\n base: 'L',\n chars: \"\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\",\n }, {\n base: 'LJ',\n chars: \"\\u01C7\",\n }, {\n base: 'Lj',\n chars: \"\\u01C8\",\n }, {\n base: 'M',\n chars: \"\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\\u03FB\",\n }, {\n base: 'N',\n chars: \"\\uA7A4\\u0220\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u019D\\uA790\\u1D0E\",\n }, {\n base: 'NJ',\n chars: \"\\u01CA\",\n }, {\n base: 'Nj',\n chars: \"\\u01CB\",\n }, {\n base: 'O',\n chars: \"\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\",\n }, {\n base: 'OE',\n chars: \"\\u0152\",\n }, {\n base: 'OI',\n chars: \"\\u01A2\",\n }, {\n base: 'OO',\n chars: \"\\uA74E\",\n }, {\n base: 'OU',\n chars: \"\\u0222\",\n }, {\n base: 'P',\n chars: \"\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\",\n }, {\n base: 'Q',\n chars: \"\\u24C6\\uFF31\\uA756\\uA758\\u024A\",\n }, {\n base: 'R',\n chars: \"\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\",\n }, {\n base: 'S',\n chars: \"\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\",\n }, {\n base: 'T',\n chars: \"\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\",\n }, {\n base: 'Th',\n chars: \"\\u00DE\",\n }, {\n base: 'TZ',\n chars: \"\\uA728\",\n }, {\n base: 'U',\n chars: \"\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\",\n }, {\n base: 'V',\n chars: \"\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\",\n }, {\n base: 'VY',\n chars: \"\\uA760\",\n }, {\n base: 'W',\n chars: \"\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\",\n }, {\n base: 'X',\n chars: \"\\u24CD\\uFF38\\u1E8A\\u1E8C\",\n }, {\n base: 'Y',\n chars: \"\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\",\n }, {\n base: 'Z',\n chars: \"\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\",\n }, {\n base: 'a',\n chars: \"\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\\u0251\",\n }, {\n base: 'aa',\n chars: \"\\uA733\",\n }, {\n base: 'ae',\n chars: \"\\u00E6\\u01FD\\u01E3\",\n }, {\n base: 'ao',\n chars: \"\\uA735\",\n }, {\n base: 'au',\n chars: \"\\uA737\",\n }, {\n base: 'av',\n chars: \"\\uA739\\uA73B\",\n }, {\n base: 'ay',\n chars: \"\\uA73D\",\n }, {\n base: 'b',\n chars: \"\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\\u0182\",\n }, {\n base: 'c',\n chars: \"\\uFF43\\u24D2\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184\",\n }, {\n base: 'd',\n chars: \"\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\u018B\\u13E7\\u0501\\uA7AA\",\n }, {\n base: 'dh',\n chars: \"\\u00F0\",\n }, {\n base: 'dz',\n chars: \"\\u01F3\\u01C6\",\n }, {\n base: 'e',\n chars: \"\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u01DD\",\n }, {\n base: 'f',\n chars: \"\\u24D5\\uFF46\\u1E1F\\u0192\",\n }, {\n base: 'ff',\n chars: \"\\uFB00\",\n }, {\n base: 'fi',\n chars: \"\\uFB01\",\n }, {\n base: 'fl',\n chars: \"\\uFB02\",\n }, {\n base: 'ffi',\n chars: \"\\uFB03\",\n }, {\n base: 'ffl',\n chars: \"\\uFB04\",\n }, {\n base: 'g',\n chars: \"\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\uA77F\\u1D79\",\n }, {\n base: 'h',\n chars: \"\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\",\n }, {\n base: 'hv',\n chars: \"\\u0195\",\n }, {\n base: 'i',\n chars: \"\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\",\n }, {\n base: 'j',\n chars: \"\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\",\n }, {\n base: 'k',\n chars: \"\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\",\n }, {\n base: 'l',\n chars: \"\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\\u026D\",\n }, {\n base: 'lj',\n chars: \"\\u01C9\",\n }, {\n base: 'm',\n chars: \"\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\",\n }, {\n base: 'n',\n chars: \"\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u043B\\u0509\",\n }, {\n base: 'nj',\n chars: \"\\u01CC\",\n }, {\n base: 'o',\n chars: \"\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\uA74B\\uA74D\\u0275\\u0254\\u1D11\",\n }, {\n base: 'oe',\n chars: \"\\u0153\",\n }, {\n base: 'oi',\n chars: \"\\u01A3\",\n }, {\n base: 'oo',\n chars: \"\\uA74F\",\n }, {\n base: 'ou',\n chars: \"\\u0223\",\n }, {\n base: 'p',\n chars: \"\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\\u03C1\",\n }, {\n base: 'q',\n chars: \"\\u24E0\\uFF51\\u024B\\uA757\\uA759\",\n }, {\n base: 'r',\n chars: \"\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\",\n }, {\n base: 's',\n chars: \"\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u0282\",\n }, {\n base: 'ss',\n chars: \"\\xDF\",\n }, {\n base: 't',\n chars: \"\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\",\n }, {\n base: 'th',\n chars: \"\\u00FE\",\n }, {\n base: 'tz',\n chars: \"\\uA729\",\n }, {\n base: 'u',\n chars: \"\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\",\n }, {\n base: 'v',\n chars: \"\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\",\n }, {\n base: 'vy',\n chars: \"\\uA761\",\n }, {\n base: 'w',\n chars: \"\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\",\n }, {\n base: 'x',\n chars: \"\\u24E7\\uFF58\\u1E8B\\u1E8D\",\n }, {\n base: 'y',\n chars: \"\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\",\n }, {\n base: 'z',\n chars: \"\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\",\n }\n];\n\nvar diacriticsMap = {};\nfor (var i = 0; i < replacementList.length; i += 1) {\n var chars = replacementList[i].chars;\n for (var j = 0; j < chars.length; j += 1) {\n diacriticsMap[chars[j]] = replacementList[i].base;\n }\n}\n\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007e]/g, function(c) {\n return diacriticsMap[c] || c;\n });\n}\n\nexports.replacementList = replacementList;\nexports.diacriticsMap = diacriticsMap;\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./node_modules/sugar-core/sugar-core.js","webpack:///./src/settings.js","webpack:///./src/dom.js","webpack:///./src/types.js","webpack:///./src/const.js","webpack:///./src/event.js","webpack:///./node_modules/sugar-date/date/build/buildNumberUnitMethodsCall.js","webpack:///./node_modules/sugar-date/date/build/buildDateUnitMethodsCall.js","webpack:///./src/root.js","webpack:///./src/string.js","webpack:///./src/feature.js","webpack:///./node_modules/sugar-date/date/var/DateUnitIndexes.js","webpack:///./node_modules/sugar-date/common/var/classChecks.js","webpack:///./node_modules/sugar-date/date/addLocale.js","webpack:///./node_modules/sugar-date/common/var/mathAliases.js","webpack:///./node_modules/sugar-date/date/var/LocaleHelpers.js","webpack:///./node_modules/sugar-date/common/var/coreUtilityAliases.js","webpack:///./node_modules/sugar-date/date/build/buildRelativeAliasesCall.js","webpack:///./node_modules/sugar-date/range/internal/Range.js","webpack:///./src/modules/toolbar.js","webpack:///./src/array.js","webpack:///./node_modules/sugar-date/common/internal/defineOnPrototype.js","webpack:///./src/number.js","webpack:///./node_modules/sugar-date/common/internal/callDateGet.js","webpack:///./node_modules/sugar-date/date/internal/getWeekday.js","webpack:///./node_modules/sugar-date/range/build/buildDateRangeUnitsCall.js","webpack:///./node_modules/sugar-date/common/var/namespaceAliases.js","webpack:///./node_modules/sugar-date/date/internal/setWeekday.js","webpack:///./node_modules/sugar-date/common/var/trunc.js","webpack:///./node_modules/sugar-date/common/var/_utc.js","webpack:///./node_modules/sugar-date/date/internal/createDate.js","webpack:///./node_modules/sugar-date/date/internal/getMonth.js","webpack:///./node_modules/sugar-date/date/internal/getYear.js","webpack:///./node_modules/sugar-date/date/var/DateUnits.js","webpack:///./node_modules/sugar-date/common/internal/isDefined.js","webpack:///./node_modules/sugar-date/common/internal/forEach.js","webpack:///./src/sort.js","webpack:///./node_modules/sugar-date/date/internal/cloneDate.js","webpack:///./node_modules/sugar-date/date/internal/getDate.js","webpack:///./node_modules/sugar-date/date/internal/setDate.js","webpack:///./node_modules/sugar-date/common/internal/callDateSet.js","webpack:///./node_modules/sugar-date/date/internal/setUnitAndLowerToEdge.js","webpack:///./node_modules/sugar-date/date/internal/advanceDate.js","webpack:///./node_modules/sugar-date/date/internal/getNewDate.js","webpack:///./node_modules/sugar-date/date/internal/getLowerUnitIndex.js","webpack:///./node_modules/sugar-date/common/internal/isUndefined.js","webpack:///./node_modules/sugar-date/index.js","webpack:///./node_modules/sugar-date/range/internal/rangeIsValid.js","webpack:///./node_modules/sugar-date/date/internal/dateIsValid.js","webpack:///./node_modules/sugar-date/common/internal/defineInstanceSimilar.js","webpack:///./node_modules/sugar-date/date/internal/moveToBeginningOfUnit.js","webpack:///./node_modules/sugar-date/date/internal/moveToEndOfUnit.js","webpack:///./node_modules/sugar-date/date/internal/iterateOverDateParams.js","webpack:///./node_modules/sugar-date/date/internal/updateDate.js","webpack:///./node_modules/sugar-date/date/internal/tzOffset.js","webpack:///./node_modules/sugar-date/common/internal/spaceSplit.js","webpack:///./node_modules/sugar-date/common/var/CommonChars.js","webpack:///./node_modules/sugar-date/common/internal/simpleClone.js","webpack:///./src/modules/baseDropdown.js","webpack:///./src/cookie.js","webpack:///./node_modules/sugar-date/range/internal/rangeEvery.js","webpack:///./node_modules/sugar-date/range/var/DURATION_UNITS.js","webpack:///./node_modules/sugar-date/date/internal/getWeekNumber.js","webpack:///./node_modules/sugar-date/common/internal/padNumber.js","webpack:///./node_modules/sugar-date/date/internal/getTimeDistanceForUnit.js","webpack:///./node_modules/sugar-date/common/internal/simpleCapitalize.js","webpack:///./node_modules/sugar-date/date/internal/moveToBeginningOfWeek.js","webpack:///./node_modules/sugar-date/date/var/_dateOptions.js","webpack:///./node_modules/sugar-date/date/internal/getExtendedDate.js","webpack:///./node_modules/sugar-date/date/internal/iterateOverDateUnits.js","webpack:///./node_modules/sugar-date/common/internal/isObjectType.js","webpack:///./node_modules/sugar-date/date/var/ISODefaults.js","webpack:///./node_modules/sugar-date/common/internal/simpleMerge.js","webpack:///./node_modules/sugar-date/date/internal/getEnglishVariant.js","webpack:///./node_modules/diacritics/index.js","webpack:///./src/modules/checkList.js","webpack:///./src/modules/paging.js","webpack:///./src/modules/noResults.js","webpack:///./src/modules/alternateRows.js","webpack:///./src/modules/clearButton.js","webpack:///./src/modules/statusBar.js","webpack:///./src/modules/rowsCounter.js","webpack:///./src/modules/markActiveColumns.js","webpack:///./src/modules/popupFilter.js","webpack:///./src/modules/highlightKeywords.js","webpack:///./src/modules/loader.js","webpack:///./src/modules/gridLayout.js","webpack:///./src/modules/storage.js","webpack:///./src/modules/hash.js","webpack:///./src/modules/state.js","webpack:///./src/modules/help.js","webpack:///./src/modules/dateType.js","webpack:///./src/modules/dropdown.js","webpack:///./src/emitter.js","webpack:///./node_modules/sugar-date/range/internal/getDateIncrementObject.js","webpack:///./node_modules/sugar-date/range/var/MULTIPLIERS.js","webpack:///./node_modules/sugar-date/range/internal/incrementDate.js","webpack:///./node_modules/sugar-date/range/internal/getDateForRange.js","webpack:///./node_modules/sugar-date/range/internal/getRangeMemberPrimitiveValue.js","webpack:///./node_modules/sugar-date/range/internal/cloneRangeMember.js","webpack:///./node_modules/sugar-date/date/internal/dateRelative.js","webpack:///./node_modules/sugar-date/date/internal/fullCompareDate.js","webpack:///./node_modules/sugar-date/date/internal/assertDateIsValid.js","webpack:///./node_modules/sugar-date/date/internal/getUTCOffset.js","webpack:///./node_modules/sugar-date/date/internal/getHours.js","webpack:///./node_modules/sugar-date/date/var/CoreOutputFormats.js","webpack:///./node_modules/sugar-date/date/internal/dateFormat.js","webpack:///./node_modules/sugar-date/date/internal/collectDateArguments.js","webpack:///./node_modules/sugar-date/date/internal/advanceDateWithArgs.js","webpack:///./node_modules/sugar-date/date/internal/createDateWithContext.js","webpack:///./node_modules/sugar-date/date/internal/compareDate.js","webpack:///./node_modules/sugar-date/date/internal/moveToEndOfWeek.js","webpack:///./node_modules/sugar-date/date/internal/getDateParamKey.js","webpack:///./node_modules/sugar-date/date/internal/moveToFirstDayOfWeekYear.js","webpack:///./node_modules/sugar-date/date/internal/setISOWeekNumber.js","webpack:///./node_modules/sugar-date/date/internal/walkUnitDown.js","webpack:///./node_modules/sugar-date/date/internal/resetTime.js","webpack:///./node_modules/sugar-date/date/var/MINUTES.js","webpack:///./node_modules/sugar-date/date/internal/getAdjustedUnit.js","webpack:///./node_modules/sugar-date/common/internal/withPrecision.js","webpack:///./node_modules/sugar-date/common/var/chr.js","webpack:///./node_modules/sugar-date/date/internal/getDaysInMonth.js","webpack:///./node_modules/sugar-date/date/internal/getRegNonCapturing.js","webpack:///./node_modules/sugar-date/common/internal/isClass.js","webpack:///./node_modules/sugar-date/common/internal/map.js","webpack:///./node_modules/sugar-date/date/var/LocalizedParsingTokens.js","webpack:///./node_modules/sugar-date/date/var/ParsingTokens.js","webpack:///./node_modules/sugar-date/date/var/AmericanEnglishDefinition.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/tablefilter.js","webpack:///./node_modules/sugar-date/locales/zh-TW.js","webpack:///./node_modules/sugar-date/locales/zh-CN.js","webpack:///./node_modules/sugar-date/locales/sv.js","webpack:///./node_modules/sugar-date/locales/ru.js","webpack:///./node_modules/sugar-date/locales/pt.js","webpack:///./node_modules/sugar-date/locales/pl.js","webpack:///./node_modules/sugar-date/locales/no.js","webpack:///./node_modules/sugar-date/locales/nl.js","webpack:///./node_modules/sugar-date/locales/ko.js","webpack:///./node_modules/sugar-date/locales/ja.js","webpack:///./node_modules/sugar-date/locales/it.js","webpack:///./node_modules/sugar-date/locales/fr.js","webpack:///./node_modules/sugar-date/locales/fi.js","webpack:///./node_modules/sugar-date/locales/es.js","webpack:///./node_modules/sugar-date/locales/de.js","webpack:///./node_modules/sugar-date/locales/da.js","webpack:///./node_modules/sugar-date/locales/ca.js","webpack:///./node_modules/sugar-date/locales/index.js","webpack:///./node_modules/sugar-date/range/years.js","webpack:///./node_modules/sugar-date/range/weeks.js","webpack:///./node_modules/sugar-date/range/union.js","webpack:///./node_modules/sugar-date/range/toString.js","webpack:///./node_modules/sugar-date/range/toArray.js","webpack:///./node_modules/sugar-date/range/internal/getRangeMemberNumericValue.js","webpack:///./node_modules/sugar-date/range/span.js","webpack:///./node_modules/sugar-date/range/seconds.js","webpack:///./node_modules/sugar-date/range/months.js","webpack:///./node_modules/sugar-date/range/minutes.js","webpack:///./node_modules/sugar-date/range/milliseconds.js","webpack:///./node_modules/sugar-date/range/isValid.js","webpack:///./node_modules/sugar-date/range/intersect.js","webpack:///./node_modules/sugar-date/range/hours.js","webpack:///./node_modules/sugar-date/range/every.js","webpack:///./node_modules/sugar-date/common/internal/periodSplit.js","webpack:///./node_modules/sugar-date/range/internal/getPrecision.js","webpack:///./node_modules/sugar-date/range/internal/getGreaterPrecision.js","webpack:///./node_modules/sugar-date/range/internal/incrementString.js","webpack:///./node_modules/sugar-date/range/internal/incrementNumber.js","webpack:///./node_modules/sugar-date/range/internal/valueIsNotInfinite.js","webpack:///./node_modules/sugar-date/range/internal/isValidRangeMember.js","webpack:///./node_modules/sugar-date/range/internal/buildDateRangeUnits.js","webpack:///./node_modules/sugar-date/range/days.js","webpack:///./node_modules/sugar-date/range/contains.js","webpack:///./node_modules/sugar-date/range/clone.js","webpack:///./node_modules/sugar-date/range/internal/rangeClamp.js","webpack:///./node_modules/sugar-date/range/clamp.js","webpack:///./node_modules/sugar-date/range/var/DURATION_REG.js","webpack:///./node_modules/sugar-date/range/var/FULL_CAPTURED_DURATION.js","webpack:///./node_modules/sugar-date/range/var/DurationTextFormats.js","webpack:///./node_modules/sugar-date/range/internal/createDateRangeFromString.js","webpack:///./node_modules/sugar-date/range/var/DateRangeConstructor.js","webpack:///./node_modules/sugar-date/date/range.js","webpack:///./node_modules/sugar-date/range/index.js","webpack:///./node_modules/sugar-date/date/setOption.js","webpack:///./node_modules/sugar-date/date/getOption.js","webpack:///./node_modules/sugar-date/date/yearsUntil.js","webpack:///./node_modules/sugar-date/date/yearsSince.js","webpack:///./node_modules/sugar-date/date/yearsFromNow.js","webpack:///./node_modules/sugar-date/date/yearsAgo.js","webpack:///./node_modules/sugar-date/date/weeksUntil.js","webpack:///./node_modules/sugar-date/date/weeksSince.js","webpack:///./node_modules/sugar-date/date/weeksFromNow.js","webpack:///./node_modules/sugar-date/date/weeksAgo.js","webpack:///./node_modules/sugar-date/date/setWeekday.js","webpack:///./node_modules/sugar-date/date/setUTC.js","webpack:///./node_modules/sugar-date/date/setISOWeek.js","webpack:///./node_modules/sugar-date/date/set.js","webpack:///./node_modules/sugar-date/date/secondsUntil.js","webpack:///./node_modules/sugar-date/date/secondsSince.js","webpack:///./node_modules/sugar-date/date/secondsFromNow.js","webpack:///./node_modules/sugar-date/date/secondsAgo.js","webpack:///./node_modules/sugar-date/date/rewind.js","webpack:///./node_modules/sugar-date/date/internal/getUnitIndexForParamName.js","webpack:///./node_modules/sugar-date/date/reset.js","webpack:///./node_modules/sugar-date/date/relativeTo.js","webpack:///./node_modules/sugar-date/date/internal/getAdjustedUnitForDate.js","webpack:///./node_modules/sugar-date/date/relative.js","webpack:///./node_modules/sugar-date/date/monthsUntil.js","webpack:///./node_modules/sugar-date/date/monthsSince.js","webpack:///./node_modules/sugar-date/date/monthsFromNow.js","webpack:///./node_modules/sugar-date/date/monthsAgo.js","webpack:///./node_modules/sugar-date/date/minutesUntil.js","webpack:///./node_modules/sugar-date/date/minutesSince.js","webpack:///./node_modules/sugar-date/date/minutesFromNow.js","webpack:///./node_modules/sugar-date/date/minutesAgo.js","webpack:///./node_modules/sugar-date/date/millisecondsUntil.js","webpack:///./node_modules/sugar-date/date/millisecondsSince.js","webpack:///./node_modules/sugar-date/date/millisecondsFromNow.js","webpack:///./node_modules/sugar-date/date/millisecondsAgo.js","webpack:///./node_modules/sugar-date/date/iso.js","webpack:///./node_modules/sugar-date/date/isYesterday.js","webpack:///./node_modules/sugar-date/date/isWeekend.js","webpack:///./node_modules/sugar-date/date/isWeekday.js","webpack:///./node_modules/sugar-date/date/isWednesday.js","webpack:///./node_modules/sugar-date/date/isValid.js","webpack:///./node_modules/sugar-date/date/internal/isUTC.js","webpack:///./node_modules/sugar-date/date/isUTC.js","webpack:///./node_modules/sugar-date/date/isTuesday.js","webpack:///./node_modules/sugar-date/date/isTomorrow.js","webpack:///./node_modules/sugar-date/date/isToday.js","webpack:///./node_modules/sugar-date/date/isThursday.js","webpack:///./node_modules/sugar-date/date/isThisYear.js","webpack:///./node_modules/sugar-date/date/isThisWeek.js","webpack:///./node_modules/sugar-date/date/isThisMonth.js","webpack:///./node_modules/sugar-date/date/isSunday.js","webpack:///./node_modules/sugar-date/date/isSaturday.js","webpack:///./node_modules/sugar-date/date/isPast.js","webpack:///./node_modules/sugar-date/date/isNextYear.js","webpack:///./node_modules/sugar-date/date/isNextWeek.js","webpack:///./node_modules/sugar-date/date/isNextMonth.js","webpack:///./node_modules/sugar-date/date/isMonday.js","webpack:///./node_modules/sugar-date/date/isLeapYear.js","webpack:///./node_modules/sugar-date/date/isLastYear.js","webpack:///./node_modules/sugar-date/date/isLastWeek.js","webpack:///./node_modules/sugar-date/date/isLastMonth.js","webpack:///./node_modules/sugar-date/date/isFuture.js","webpack:///./node_modules/sugar-date/date/internal/buildRelativeAliases.js","webpack:///./node_modules/sugar-date/date/isFriday.js","webpack:///./node_modules/sugar-date/date/isBetween.js","webpack:///./node_modules/sugar-date/date/isBefore.js","webpack:///./node_modules/sugar-date/date/isAfter.js","webpack:///./node_modules/sugar-date/date/internal/compareDay.js","webpack:///./node_modules/sugar-date/common/internal/trim.js","webpack:///./node_modules/sugar-date/date/is.js","webpack:///./node_modules/sugar-date/date/hoursUntil.js","webpack:///./node_modules/sugar-date/date/hoursSince.js","webpack:///./node_modules/sugar-date/date/hoursFromNow.js","webpack:///./node_modules/sugar-date/date/hoursAgo.js","webpack:///./node_modules/sugar-date/date/getWeekday.js","webpack:///./node_modules/sugar-date/date/getUTCWeekday.js","webpack:///./node_modules/sugar-date/date/getUTCOffset.js","webpack:///./node_modules/sugar-date/date/getISOWeek.js","webpack:///./node_modules/sugar-date/date/get.js","webpack:///./node_modules/sugar-date/common/var/INTERNAL_MEMOIZE_LIMIT.js","webpack:///./node_modules/sugar-date/common/internal/memoizeFunction.js","webpack:///./node_modules/sugar-date/common/var/STRING_FORMAT_REG.js","webpack:///./node_modules/sugar-date/common/internal/createFormatMatcher.js","webpack:///./node_modules/sugar-date/date/internal/getMeridiemToken.js","webpack:///./node_modules/sugar-date/date/internal/getDaysSince.js","webpack:///./node_modules/sugar-date/date/internal/getWeekYear.js","webpack:///./node_modules/sugar-date/common/internal/repeatString.js","webpack:///./node_modules/sugar-date/date/var/TIMEZONE_ABBREVIATION_REG.js","webpack:///./node_modules/sugar-date/date/var/FormatTokensBase.js","webpack:///./node_modules/sugar-date/date/var/formattingTokens.js","webpack:///./node_modules/sugar-date/date/format.js","webpack:///./node_modules/sugar-date/date/endOfYear.js","webpack:///./node_modules/sugar-date/date/endOfWeek.js","webpack:///./node_modules/sugar-date/date/endOfMonth.js","webpack:///./node_modules/sugar-date/date/endOfISOWeek.js","webpack:///./node_modules/sugar-date/date/endOfDay.js","webpack:///./node_modules/sugar-date/date/daysUntil.js","webpack:///./node_modules/sugar-date/date/daysSince.js","webpack:///./node_modules/sugar-date/date/daysInMonth.js","webpack:///./node_modules/sugar-date/date/daysFromNow.js","webpack:///./node_modules/sugar-date/date/daysAgo.js","webpack:///./node_modules/sugar-date/date/clone.js","webpack:///./node_modules/sugar-date/date/beginningOfYear.js","webpack:///./node_modules/sugar-date/date/beginningOfWeek.js","webpack:///./node_modules/sugar-date/date/beginningOfMonth.js","webpack:///./node_modules/sugar-date/date/beginningOfISOWeek.js","webpack:///./node_modules/sugar-date/date/beginningOfDay.js","webpack:///./node_modules/sugar-date/date/internal/collectDateParamsFromArguments.js","webpack:///./node_modules/sugar-date/date/internal/getDateParamsFromString.js","webpack:///./node_modules/sugar-date/date/advance.js","webpack:///./node_modules/sugar-date/date/addYears.js","webpack:///./node_modules/sugar-date/date/addWeeks.js","webpack:///./node_modules/sugar-date/date/addSeconds.js","webpack:///./node_modules/sugar-date/date/addMonths.js","webpack:///./node_modules/sugar-date/date/addMinutes.js","webpack:///./node_modules/sugar-date/date/addMilliseconds.js","webpack:///./node_modules/sugar-date/date/addHours.js","webpack:///./node_modules/sugar-date/date/internal/buildDateUnitMethods.js","webpack:///./node_modules/sugar-date/date/addDays.js","webpack:///./node_modules/sugar-date/number/yearsFromNow.js","webpack:///./node_modules/sugar-date/number/yearsBefore.js","webpack:///./node_modules/sugar-date/number/yearsAgo.js","webpack:///./node_modules/sugar-date/number/yearsAfter.js","webpack:///./node_modules/sugar-date/number/years.js","webpack:///./node_modules/sugar-date/number/yearFromNow.js","webpack:///./node_modules/sugar-date/number/yearBefore.js","webpack:///./node_modules/sugar-date/number/yearAgo.js","webpack:///./node_modules/sugar-date/number/yearAfter.js","webpack:///./node_modules/sugar-date/number/year.js","webpack:///./node_modules/sugar-date/number/weeksFromNow.js","webpack:///./node_modules/sugar-date/number/weeksBefore.js","webpack:///./node_modules/sugar-date/number/weeksAgo.js","webpack:///./node_modules/sugar-date/number/weeksAfter.js","webpack:///./node_modules/sugar-date/number/weeks.js","webpack:///./node_modules/sugar-date/number/weekFromNow.js","webpack:///./node_modules/sugar-date/number/weekBefore.js","webpack:///./node_modules/sugar-date/number/weekAgo.js","webpack:///./node_modules/sugar-date/number/weekAfter.js","webpack:///./node_modules/sugar-date/number/week.js","webpack:///./node_modules/sugar-date/number/secondsFromNow.js","webpack:///./node_modules/sugar-date/number/secondsBefore.js","webpack:///./node_modules/sugar-date/number/secondsAgo.js","webpack:///./node_modules/sugar-date/number/secondsAfter.js","webpack:///./node_modules/sugar-date/number/seconds.js","webpack:///./node_modules/sugar-date/number/secondFromNow.js","webpack:///./node_modules/sugar-date/number/secondBefore.js","webpack:///./node_modules/sugar-date/number/secondAgo.js","webpack:///./node_modules/sugar-date/number/secondAfter.js","webpack:///./node_modules/sugar-date/number/second.js","webpack:///./node_modules/sugar-date/number/monthsFromNow.js","webpack:///./node_modules/sugar-date/number/monthsBefore.js","webpack:///./node_modules/sugar-date/number/monthsAgo.js","webpack:///./node_modules/sugar-date/number/monthsAfter.js","webpack:///./node_modules/sugar-date/number/months.js","webpack:///./node_modules/sugar-date/number/monthFromNow.js","webpack:///./node_modules/sugar-date/number/monthBefore.js","webpack:///./node_modules/sugar-date/number/monthAgo.js","webpack:///./node_modules/sugar-date/number/monthAfter.js","webpack:///./node_modules/sugar-date/number/month.js","webpack:///./node_modules/sugar-date/number/minutesFromNow.js","webpack:///./node_modules/sugar-date/number/minutesBefore.js","webpack:///./node_modules/sugar-date/number/minutesAgo.js","webpack:///./node_modules/sugar-date/number/minutesAfter.js","webpack:///./node_modules/sugar-date/number/minutes.js","webpack:///./node_modules/sugar-date/number/minuteFromNow.js","webpack:///./node_modules/sugar-date/number/minuteBefore.js","webpack:///./node_modules/sugar-date/number/minuteAgo.js","webpack:///./node_modules/sugar-date/number/minuteAfter.js","webpack:///./node_modules/sugar-date/number/minute.js","webpack:///./node_modules/sugar-date/number/millisecondsFromNow.js","webpack:///./node_modules/sugar-date/number/millisecondsBefore.js","webpack:///./node_modules/sugar-date/number/millisecondsAgo.js","webpack:///./node_modules/sugar-date/number/millisecondsAfter.js","webpack:///./node_modules/sugar-date/number/milliseconds.js","webpack:///./node_modules/sugar-date/number/millisecondFromNow.js","webpack:///./node_modules/sugar-date/number/millisecondBefore.js","webpack:///./node_modules/sugar-date/number/millisecondAgo.js","webpack:///./node_modules/sugar-date/number/millisecondAfter.js","webpack:///./node_modules/sugar-date/number/millisecond.js","webpack:///./node_modules/sugar-date/number/hoursFromNow.js","webpack:///./node_modules/sugar-date/number/hoursBefore.js","webpack:///./node_modules/sugar-date/number/hoursAgo.js","webpack:///./node_modules/sugar-date/number/hoursAfter.js","webpack:///./node_modules/sugar-date/number/hours.js","webpack:///./node_modules/sugar-date/number/hourFromNow.js","webpack:///./node_modules/sugar-date/number/hourBefore.js","webpack:///./node_modules/sugar-date/number/hourAgo.js","webpack:///./node_modules/sugar-date/number/hourAfter.js","webpack:///./node_modules/sugar-date/number/hour.js","webpack:///./node_modules/sugar-date/number/duration.js","webpack:///./node_modules/sugar-date/number/daysFromNow.js","webpack:///./node_modules/sugar-date/number/daysBefore.js","webpack:///./node_modules/sugar-date/number/daysAgo.js","webpack:///./node_modules/sugar-date/number/daysAfter.js","webpack:///./node_modules/sugar-date/number/days.js","webpack:///./node_modules/sugar-date/number/dayFromNow.js","webpack:///./node_modules/sugar-date/number/dayBefore.js","webpack:///./node_modules/sugar-date/number/dayAgo.js","webpack:///./node_modules/sugar-date/number/dayAfter.js","webpack:///./node_modules/sugar-date/common/internal/collectSimilarMethods.js","webpack:///./node_modules/sugar-date/common/internal/wrapNamespace.js","webpack:///./node_modules/sugar-date/common/var/methodDefineAliases.js","webpack:///./node_modules/sugar-date/date/internal/buildNumberUnitMethods.js","webpack:///./node_modules/sugar-date/number/day.js","webpack:///./node_modules/sugar-date/date/setLocale.js","webpack:///./node_modules/sugar-date/date/removeLocale.js","webpack:///./node_modules/sugar-date/date/getLocale.js","webpack:///./node_modules/sugar-date/date/getAllLocales.js","webpack:///./node_modules/sugar-date/common/internal/getKeys.js","webpack:///./node_modules/sugar-date/date/getAllLocaleCodes.js","webpack:///./node_modules/sugar-date/common/internal/setChainableConstructor.js","webpack:///./node_modules/sugar-date/date/internal/setDateChainableConstructor.js","webpack:///./node_modules/sugar-date/date/build/setDateChainableConstructorCall.js","webpack:///./node_modules/sugar-date/date/internal/iterateOverHigherDateParams.js","webpack:///./node_modules/sugar-date/date/internal/getYearFromAbbreviation.js","webpack:///./node_modules/sugar-date/date/internal/getParsingTokenValue.js","webpack:///./node_modules/sugar-date/date/internal/deleteDateParam.js","webpack:///./node_modules/sugar-date/common/internal/getOwnKey.js","webpack:///./node_modules/sugar-date/date/internal/getDateParam.js","webpack:///./node_modules/sugar-date/date/internal/setMonth.js","webpack:///./node_modules/sugar-date/date/internal/setYear.js","webpack:///./node_modules/sugar-date/date/internal/callDateSetWithWeek.js","webpack:///./node_modules/sugar-date/date/internal/getHigherUnitIndex.js","webpack:///./node_modules/sugar-date/date/internal/resetLowerUnits.js","webpack:///./node_modules/sugar-date/common/internal/defineAccessor.js","webpack:///./node_modules/sugar-date/common/internal/defineOptionsAccessor.js","webpack:///./node_modules/sugar-date/date/internal/defaultNewDate.js","webpack:///./node_modules/sugar-date/date/var/DATE_OPTIONS.js","webpack:///./node_modules/sugar-date/date/create.js","webpack:///./node_modules/sugar-date/date/internal/getParsingTokenWithSuffix.js","webpack:///./node_modules/sugar-date/date/internal/getAdjustedUnitForNumber.js","webpack:///./node_modules/sugar-date/common/internal/allCharsReg.js","webpack:///./node_modules/sugar-date/common/var/fullwidthNumberHelpers.js","webpack:///./node_modules/sugar-date/common/internal/escapeRegExp.js","webpack:///./node_modules/sugar-date/date/internal/arrayToRegAlternates.js","webpack:///./node_modules/sugar-date/common/var/PRIVATE_PROP_PREFIX.js","webpack:///./node_modules/sugar-date/common/internal/privatePropertyAccessor.js","webpack:///./node_modules/sugar-date/date/internal/getArrayWithOffset.js","webpack:///./node_modules/sugar-date/common/internal/getOrdinalSuffix.js","webpack:///./node_modules/sugar-date/common/internal/hasValidPlainObjectPrototype.js","webpack:///./node_modules/sugar-date/common/internal/hasOwnEnumeratedProperties.js","webpack:///./node_modules/sugar-date/common/internal/isPlainObject.js","webpack:///./node_modules/sugar-date/common/var/NATIVE_TYPES.js","webpack:///./node_modules/sugar-date/common/internal/commaSplit.js","webpack:///./node_modules/sugar-date/common/internal/isArrayIndex.js","webpack:///./node_modules/sugar-date/common/internal/getSparseArrayIndexes.js","webpack:///./node_modules/sugar-date/common/internal/iterateOverSparseArray.js","webpack:///./node_modules/sugar-date/common/internal/filter.js","webpack:///./node_modules/sugar-date/date/var/CoreParsingFormats.js","webpack:///./node_modules/sugar-date/date/var/LOCALE_ARRAY_FIELDS.js","webpack:///./node_modules/sugar-date/date/internal/getNewLocale.js","webpack:///./node_modules/sugar-date/date/var/CanadianEnglishDefinition.js","webpack:///./node_modules/sugar-date/date/var/EnglishLocaleBaseDefinition.js","webpack:///./node_modules/sugar-date/date/var/BritishEnglishDefinition.js","webpack:///./node_modules/sugar-date/date/var/LazyLoadedLocales.js","webpack:///./node_modules/sugar-date/date/index.js"],"names":["webpackUniversalModuleDefinition","root","factory","exports","module","define","amd","a","i","window","webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","installedModules","1","__webpack_require__","l","e","requireEnsure","promises","installedChunkData","promise","Promise","resolve","reject","head","document","getElementsByTagName","script","createElement","charset","timeout","nc","setAttribute","src","p","0","setTimeout","onScriptComplete","type","target","event","onerror","onload","clearTimeout","chunk","errorType","realSrc","error","Error","request","undefined","appendChild","all","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","r","value","n","__esModule","getDefault","getModuleExports","object","property","oe","err","console","jsonpArray","oldJsonpFunction","bind","slice","s","global","Sugar","SUGAR_GLOBAL","NATIVE_NAMES","STATIC","INSTANCE","PROPERTY_DESCRIPTOR_SUPPORT","defineProperties","globalContext","this","hasExports","allowObjectPrototype","namespacesByName","namespacesByClassString","definePropertyShim","obj","prop","descriptor","DefaultChainable","getNewChainableClass","createNamespace","isObject","sugarNamespace","defineWithOptionCollect","methodName","instance","args","setProperty","arg1","arg2","arg3","opts","collectDefineOptions","defineMethods","methods","flags","forEachProperty","method","instanceMethod","staticMethod","wrapMethodWithArguments","wrapInstanceMethod","fn","wrapInstanceMethodFixed","b","setMethod","active","extend","last","extendNative","defineChainableMethod","source","methodsByName","nativeClass","nativeProto","staticMethods","instanceMethods","arrayOptionExists","field","val","arr","el","canExtend","objectRestricted","disallowedByFlags","methodIsExcepted","namespaceIsExcepted","arrayOptionExcludes","objectPrototype","hasOwn","mapNativeToChainable","mapObjectChainablesToNamespace","setObjectChainableOnNamespace","toString","startCollect","len","collectedArgs","Math","max","arguments","apply","polyfill","override","SugarChainable","arg","constructor","raw","existing","collision","dcp","wrapped","wrapWithChainableResult","disambiguate","disambiguateMethod","classToString","TypeError","mapObjectChainableToAllNamespaces","proto","methodNames","ownPropertyNames","nativeMethodProhibited","getOwnPropertyNames","internalToString","internalHasOwnProperty","key","writable","getOwn","setupGlobal","split","setGlobalProperties","defaultsBool","defaultVal","_types__WEBPACK_IMPORTED_MODULE_0__","defaultsStr","defaultsNb","isNaN","defaultsArr","defaultsFn","doc","_root__WEBPACK_IMPORTED_MODULE_0__","getText","node","_types__WEBPACK_IMPORTED_MODULE_1__","textContent","_string__WEBPACK_IMPORTED_MODULE_2__","innerText","getFirstTextNode","childNodes","nodeType","createElm","tag","removeElm","parentNode","removeChild","createText","txt","createTextNode","hasClass","ele","cls","supportsClassList","classList","contains","className","match","RegExp","addClass","add","removeClass","remove","reg","replace","createOpt","text","isSel","opt","createCheckItem","id","chkValue","labelText","extraAttr","li","label","check","elm","getElementById","tagname","documentElement","__webpack_exports__","isEmpty","EMPTY_FN","isObj","isFn","isArray","isString","isNumber","isBoolean","isUndef","isNull","INPUT","SELECT","MULTIPLE","CHECKLIST","NONE","ENTER_KEY","TAB_KEY","ESC_KEY","UP_ARROW_KEY","DOWN_ARROW_KEY","HEADER_TAG","CELL_TAG","STRING","NUMBER","FORMATTED_NUMBER","DATE","IP_ADDRESS","AUTO_FILTER_DELAY","FEATURES","dateType","class","_modules_dateType__WEBPACK_IMPORTED_MODULE_0__","help","_modules_help__WEBPACK_IMPORTED_MODULE_1__","enforce","state","_modules_state__WEBPACK_IMPORTED_MODULE_2__","markActiveColumns","_modules_markActiveColumns__WEBPACK_IMPORTED_MODULE_7__","gridLayout","_modules_gridLayout__WEBPACK_IMPORTED_MODULE_3__","loader","_modules_loader__WEBPACK_IMPORTED_MODULE_4__","highlightKeyword","_modules_highlightKeywords__WEBPACK_IMPORTED_MODULE_5__","popupFilter","_modules_popupFilter__WEBPACK_IMPORTED_MODULE_6__","rowsCounter","_modules_rowsCounter__WEBPACK_IMPORTED_MODULE_8__","statusBar","_modules_statusBar__WEBPACK_IMPORTED_MODULE_9__","clearButton","_modules_clearButton__WEBPACK_IMPORTED_MODULE_10__","alternateRows","_modules_alternateRows__WEBPACK_IMPORTED_MODULE_11__","noResults","_modules_noResults__WEBPACK_IMPORTED_MODULE_12__","paging","_modules_paging__WEBPACK_IMPORTED_MODULE_13__","toolbar","_modules_toolbar__WEBPACK_IMPORTED_MODULE_14__","addEvt","func","capture","addEventListener","attachEvent","removeEvt","removeEventListener","detachEvent","stopEvt","evt","stopPropagation","cancelBubble","cancelEvt","preventDefault","returnValue","targetEvt","srcElement","keyCode","charCode","which","isKeyPressed","indexOf","bound","scope","boundFnName","concat","buildNumberUnitMethods","buildDateUnitMethods","self","_typeof","trim","rgxEsc","String","matchCase","toLowerCase","term","exactMatch","caseSensitive","ignoreDiacritics","modifier","diacritics__WEBPACK_IMPORTED_MODULE_0__","test","Feature","tf","feature","_this","_classCallCheck","enabled","config","emitter","initialized","on","destroy","_createClass","init","reset","enable","disable","isEnabled","HOURS_INDEX","DAY_INDEX","WEEK_INDEX","MONTH_INDEX","YEAR_INDEX","isSerializable","isDate","isRegExp","isFunction","isSet","isMap","isError","NATIVE_TYPES","forEach","isClass","spaceSplit","isPlainObject","buildClassChecks","knownTypes","addKnownType","buildClassCheck","globalObject","getConstructorClassCheck","ctorStr","getToStringClassCheck","str","buildPrimitiveClassCheck","t","addCoreTypes","names","Array","Set","Map","addArrayTypes","isKnownType","localeManager","Date","defineStatic","addLocale","code","set","abs","pow","min","ceil","floor","round","English","LazyLoadedLocales","AmericanEnglishDefinition","getNewLocale","buildLocales","LocaleManager","loc","locales","fallback","current","getAll","def","compiledFormats","util","buildRelativeAliases","cloneRangeMember","Range","start","end","EVENTS","LEFT","RIGHT","CENTER","Toolbar","_Feature","f","_possibleConstructorReturn","_getPrototypeOf","contCssClass","_settings__WEBPACK_IMPORTED_MODULE_2__","container_css_class","lContCssClass","left_cont_css_class","rContCssClass","right_cont_css_class","cContCssClass","center_cont_css_class","tgtId","target_id","cont","lCont","rCont","cCont","innerCont","left","center","right","isExternal","_inherits","_feature__WEBPACK_IMPORTED_MODULE_0__","container","_dom__WEBPACK_IMPORTED_MODULE_1__","Mod","tblMainCont","infDivCssClass","dom","insertBefore","firstChild","createContainer","_types__WEBPACK_IMPORTED_MODULE_3__","emit","position","css","div","tbl","captions","_string__WEBPACK_IMPORTED_MODULE_0__","has","sCase","Boolean","defineOnPrototype","ctor","parse","decimal","regex","unformatted","parseFloat","_utc","callDateGet","getWeekday","buildDateRangeUnits","sugarObject","sugarArray","sugarDate","sugarString","sugarNumber","Number","sugarFunction","Function","sugarRegExp","setDate","getDate","classChecks","mathAliases","setWeekday","dow","dir","currentWeekday","ndir","offset","getTime","trunc","isFinite","privatePropertyAccessor","getExtendedDate","createDate","options","forceClone","date","getMonth","getYear","getDaysInMonth","DateUnits","multiplier","alias","ambiguous","isDefined","iterateOverSparseArray","ignoreCase","x","y","numSortAsc","numSortDesc","dateSortAsc","date1","date2","dateSortDesc","sortNumberStr","compareFn","numStr1","numStr2","num1","_number__WEBPACK_IMPORTED_MODULE_0__","num2","sortDateStr","locale","dateStr1","dateStr2","sugar_date__WEBPACK_IMPORTED_MODULE_1__","create","cloneDate","clone","callDateSet","safe","walkUnitDown","setUnitAndLowerToEdge","startIndex","stopIndex","unit","updateDate","advanceDate","num","_dateOptions","getNewDate","DateUnitIndexes","getLowerUnitIndex","index","isUndefined","isValidRangeMember","rangeIsValid","range","dateIsValid","methodDefineAliases","collectSimilarMethods","defineInstance","defineInstanceSimilar","LocaleHelpers","moveToBeginningOfWeek","moveToBeginningOfUnit","unitIndex","localeCode","getFirstDayOfWeek","moveToEndOfWeek","moveToEndOfUnit","getDateParam","iterateOverDateUnits","iterateOverDateParams","params","endIndex","run","result","resetLowerUnits","getHigherUnitIndex","callDateSetWithWeek","advance","prefer","weekdayDir","upperUnitIndex","setUnit","unitName","checkMonth","fraction","setUpperUnit","setSpecificity","specificity","handleFraction","lowerUnit","monthHasShifted","targetMonth","setTime","millisecond","canDisambiguate","disambiguateHigherUnit","tzOffset","getTimezoneOffset","HALF_WIDTH_ZERO","FULL_WIDTH_ZERO","HALF_WIDTH_PERIOD","FULL_WIDTH_PERIOD","HALF_WIDTH_COMMA","OPEN_BRACE","CLOSE_BRACE","simpleMerge","simpleClone","BaseDropdown","customSorter","_types__WEBPACK_IMPORTED_MODULE_2__","filter_options_sorter","col","comparer","isCustom","optsTxt","excludedOpts","sortOptions","colIndex","isCustomOptions","sortSlc","sortNumDesc","idx","hasType","_const__WEBPACK_IMPORTED_MODULE_3__","getDecimal","_sort__WEBPACK_IMPORTED_MODULE_1__","getLocale","sort","refreshFilters","colIndexes","_this2","colIdx","values","getValues","build","linkedFilters","selectOptions","isValidLinkedValue","rowIdx","activeFilterIdx","disableExcludedOptions","isRowValid","isRowDisplayed","write","hours","expire","toGMTString","cookie","escape","read","cookieValue","search","unescape","substring","incrementDate","incrementNumber","incrementString","getGreaterPrecision","getDateIncrementObject","rangeEvery","step","countOnly","increment","precision","dio","inverse","NaN","ISODefaults","moveToFirstDayOfWeekYear","ISO_FIRST_DAY_OF_WEEK","ISO_FIRST_DAY_OF_WEEK_YEAR","getWeekNumber","allowPrevious","firstDayOfWeek","firstDayOfWeekYear","isoWeek","repeatString","padNumber","place","sign","base","replacement","getTimeDistanceForUnit","d1","d2","tmp","fwd","simpleCapitalize","charAt","toUpperCase","DATE_OPTIONS","namespaceAliases","defineOptionsAccessor","MINUTES","ParsingTokens","resetTime","isObjectType","deleteDateParam","coreUtilityAliases","getParsingTokenValue","getYearFromAbbreviation","iterateOverHigherDateParams","contextDate","afterCallbacks","relative","getFormatParams","dif","to","token","param","getTokenValue","cloneDateByFlag","fromUTC","setUTC","afterDateSet","handleTimezoneOffset","tzHour","tzMinute","tzSign","minute","handleMidday","hour","handleRelativeUnit","weekday","setOrdinalWeekday","half","day","separateAbsoluteUnits","edge","handleEdge","units","weekdayOfMonth","edgeIndex","month","getDateOptions","parseStringDate","cacheFormat","timestamp","ampm","utc","midday","yearSign","year","fireCallbacks","EnglishLocaleBaseDefinition","getEnglishVariant","v","removeDiacritics","diacriticsMap","replacementList","chars","j","CheckList","_BaseDropdown","containers","containerCssClass","_settings__WEBPACK_IMPORTED_MODULE_7__","div_checklist_css_class","filterCssClass","checklist_css_class","itemCssClass","checklist_item_css_class","selectedItemCssClass","checklist_selected_item_css_class","activateText","activate_checklist_text","disabledItemCssClass","checklist_item_disabled_css_class","enableResetOption","enable_checklist_reset_filter","prfx","_baseDropdown__WEBPACK_IMPORTED_MODULE_0__","optionClick","_event__WEBPACK_IMPORTED_MODULE_4__","setItemOption","filter","onCheckListClick","loadFltOnDemand","getAttribute","ct","refreshAll","colIdxs","getFiltersByType","_const__WEBPACK_IMPORTED_MODULE_6__","_this3","externalFltTgtId","externalFltIds","divCont","fltIds","buildFilterId","isLinked","_this4","flt","ul","activeIdx","customValues","getCustomOptions","activeFilterId","getActiveFilterId","getColumnIndexFromFilterId","filteredDataCol","innerHTML","eachRow","row","cellValue","getCellValue","cells","cellString","_string__WEBPACK_IMPORTED_MODULE_3__","_array__WEBPACK_IMPORTED_MODULE_2__","filteredCol","getVisibleColumnValues","k","excludeRows","nbCells","addChecks","_this5","chkCt","addTChecks","lbl","fltId","lblIdx","disabled","style","display","_this6","li0","getClearFilterText","enableEmptyOption","li1","emOperator","emptyText","enableNonEmptyOption","li2","nmOperator","nonEmptyText","_this7","chkIndex","dataset","getFilterElement","parseInt","items","slcValues","slcIndexes","checked","separator","chx","indexes","orOperator","chx0","replaceValue","replaceIndex","_this8","lis","chk","chkVal","fltAttr","_types__WEBPACK_IMPORTED_MODULE_5__","substr","_this9","off","Paging","btnCssClass","_settings__WEBPACK_IMPORTED_MODULE_5__","btn_css_class","pageSlc","pageLengthSlc","pageLength","pageLengthTgtId","results_per_page_target_id","pgSlcCssClass","slc_css_class","pgInpCssClass","inp_css_class","resultsPerPage","results_per_page","hasResultsPerPage","resultsSlcCssClass","results_slc_css_class","resultsSpanCssClass","results_span_css_class","startPagingRow","nbPages","currentPageNb","btnNextPageText","btn_next_page_text","btnPrevPageText","btn_prev_page_text","btnLastPageText","btn_last_page_text","btnFirstPageText","btn_first_page_text","btnNextPageHtml","btn_next_page_html","enableIcons","btnPrevPageHtml","btn_prev_page_html","btnFirstPageHtml","btn_first_page_html","btnLastPageHtml","btn_last_page_html","pageText","page_text","ofText","of_text","nbPgSpanCssClass","nb_pages_css_class","hasBtns","btns","pageSelectorType","page_selector_type","_const__WEBPACK_IMPORTED_MODULE_4__","toolbarPosition","toolbar_position","_toolbar__WEBPACK_IMPORTED_MODULE_6__","onBeforeChangePage","on_before_change_page","onAfterChangePage","on_after_change_page","slcResultsTxt","btnNextCont","btnPrevCont","btnLastCont","btnFirstCont","pgCont","pgBefore","pgAfter","startRow","refRow","nrows","getRowsNb","_assertThisInitialized","slcIndex","selectedIndex","nbOpts","next","nextIndex","changePage","prev","prevIndex","first","_detectKey","_event__WEBPACK_IMPORTED_MODULE_3__","sorted","blur","slcPagesChange","nextEvt","prevEvt","lastEvt","firstEvt","slcPages","setResultsPerPage","slc","btnNextSpan","btnPrevSpan","btnLastSpan","btnFirstSpan","btnNext","btnPrev","btnLast","btnFirst","targetEl","pgBeforeSpan","pgAfterSpan","pgSpan","setPagingInfo","fltGrid","validateAllRows","validRowsIndex","resetPagingInfo","changePageHandler","changePageResultsHandler","filterTable","validRows","getValidRows","visibility","z","groupByPage","rows","endPagingRow","h","getValidRowsNb","validRowIdx","rowDisplayed","getPage","setPage","cmd","isInitialized","btnEvt","cmdtype","slcResultsChange","ev","onChangeResultsPerPage","slcR","slcRText","slcROpts","slcRSpan","btn","currOpt","Option","removeResultsPerPage","selected","changeResultsPerPage","slcPagesSelIndex","nbFilterableRows","slcIdx","resetPage","pgNb","getPageNb","resetPageLength","pglenIndex","getPageLength","pageNumber","NoResults","no_results_message","content","_settings__WEBPACK_IMPORTED_MODULE_4__","customContainer","custom_container","customContainerId","custom_container_id","cssClass","css_class","onBeforeShow","on_before_show_msg","onAfterShow","on_after_show_msg","onBeforeHide","on_before_hide_msg","onAfterHide","on_after_hide_msg","nextSibling","toggle","hide","show","setWidth","width","headTbl","clientWidth","tHead","tBodies","AlternateRows","evenCss","even_row_css_class","oddCss","odd_row_css_class","processAll","processRowHandler","indexLen","setRowBg","processRow","arrIdx","isValid","removeRowBg","rowIndex","arrIndex","ClearButton","btn_reset","targetId","_settings__WEBPACK_IMPORTED_MODULE_3__","tooltip","html","_toolbar__WEBPACK_IMPORTED_MODULE_5__","element","onClick","clearFilters","_types__WEBPACK_IMPORTED_MODULE_4__","resetEl","_event__WEBPACK_IMPORTED_MODULE_2__","fltReset","StatusBar","status_bar","msgContainer","labelContainer","delay","onBeforeShowMsg","onAfterShowMsg","msgFilter","msg_filter","msgPopulate","msg_populate","msgPopulateCheckList","msg_populate_checklist","msgChangePage","msg_change_page","msgClear","msg_clear","msgChangeResults","msg_change_results","msgResetPage","msg_reset_page","msgResetPageLength","msg_reset_page_length","msgSort","msg_sort","msgLoadExtensions","msg_load_extensions","msgLoadThemes","msg_load_themes","statusDiv","_dom__WEBPACK_IMPORTED_MODULE_2__","statusSpan","statusSpanText","message","_root__WEBPACK_IMPORTED_MODULE_1__","RowsCounter","rows_counter","fromToTextSeparator","overText","over_text","_toolbar__WEBPACK_IMPORTED_MODULE_4__","onBeforeRefreshCounter","on_before_refresh_counter","onAfterRefreshCounter","on_after_refresh_counter","countDiv","countSpan","countText","refresh","totTxt","nbValidRows","pagingStartRow","pagingEndRow","getFilterableRowsNb","nbHiddenRows","MarkActiveColumns","mark_active_columns","headerCssClass","header_css_class","cellCssClass","cell_css_class","highlightColumn","highlight_column","onBeforeActiveColumn","on_before_active_column","onAfterActiveColumn","on_after_active_column","clearActiveColumns","markActiveColumn","eachCol","getHeaderElement","eachColumnCell","cell","header","querySelectorAll","PopupFilter","popup_filters","closeOnFiltering","_settings__WEBPACK_IMPORTED_MODULE_6__","close_on_filtering","iconPath","image","themesPath","activeIconPath","image_active","iconHtml","image_html","placeholderCssClass","placeholder_css_class","div_css_class","adjustToContainer","adjust_to_container","onBeforeOpen","on_before_popup_filter_open","onAfterOpen","on_after_popup_filter_open","onBeforeClose","on_before_popup_filter_close","onAfterClose","on_after_popup_filter_close","fltSpans","fltIcons","filtersCache","fltElms","prfxDiv","closeAll","headerWidth","onMouseup","targetElm","activeFlt","close","filtersRowIndex","headersRow","headers_row_index","buildIcons","setIconsState","cellIndex","changeState","buildAll","icon","getFilterType","contId","placeholder","isOpen","open","_root__WEBPACK_IMPORTED_MODULE_5__","focus","exceptIdx","fltType","iconImg","HighlightKeyword","highlightCssClass","highlight_css_class","unhighlightAll","_processTerm","highlight","hasChildNodes","children","termIdx","nodeValue","pn","nv","before","_dom__WEBPACK_IMPORTED_MODULE_0__","after","unhighlight","highlightedNodes","nodeVal","replaceChild","normalize","highlightKeywords","getFiltersValue","item","reLk","lkOperator","reEq","eqOperator","reSt","stOperator","reEn","enOperator","reLe","leOperator","reGe","geOperator","reL","lwOperator","reG","grOperator","reD","dfOperator","Loader","closeDelay","onShow","on_show_loader","onHide","on_hide_loader","containerDiv","_root__WEBPACK_IMPORTED_MODULE_3__","displayLoader","GridLayout","grid_layout","height","mainContCssClass","cont_css_class","tbl_cont_css_class","headContCssClass","tbl_head_css_class","inf_grid_css_class","headRowIndex","headRows","headers_rows","filters","noHeaders","no_headers","defaultColWidth","default_col_width","colElms","prfxGridFltTd","prfxGridTh","sourceTblHtml","outerHTML","tblHasColTag","tblCont","headTblCont","setOverrides","setDefaultColWidths","setConfigWidth","tblW","initialTableWidth","tH","hRow","sortTriggers","getSortTriggerIds","filtersRow","createFiltersRow","setHeadersRow","thead","tableLayout","setColWidths","scrollLeft","extension","asyncSort","triggerIds","setColumnElements","popupFilters","colWidths","colW","getHeadersRowIndex","fltTdId","prfxFlt","cl","fltCellTag","cols","getCellsNb","tableHead","thId","JSON","localStorage","location","hasStorage","Storage","enableLocalStorage","enableCookie","duration","cookieDuration","save","sync","getKey","stringify","_cookie__WEBPACK_IMPORTED_MODULE_0__","retrieve","removeItem","overrideAndSync","prfxTf","path","pathname","decodeURIComponent","encodeURIComponent","hasHashChange","docMode","documentMode","Hash","lastHash","boundSync","hash","update","_event__WEBPACK_IMPORTED_MODULE_0__","State","cfg","enableHash","types","persistFilters","persistPageNumber","page_number","persistPageLength","page_length","persistSort","persistColsVisibility","columns_visibility","persistFiltersVisibility","filters_visibility","cookie_duration","enableStorage","storage","pageNb","hiddenCols","filtersVisibility","prfxCol","pageNbKey","pageLengthKey","filtersVisKey","updatePage","updatePageLength","descending","updateSort","_syncSort","_syncColsVisibility","updateColsVisibility","_syncFiltersVisibility","visible","updateFiltersVisibility","_hash__WEBPACK_IMPORTED_MODULE_1__","_storage__WEBPACK_IMPORTED_MODULE_2__","keys","column","hidden","_syncFilters","setFilterValue","WIKI_URL","WEBSITE_URL","Help","help_instructions","contTgtId","container_target_id","instrText","instrHtml","btnText","btn_text","btnHtml","btn_html","boundMouseup","defaultHtml","version","_toolbar__WEBPACK_IMPORTED_MODULE_7__","divContainer","helpEl","helplink","_root__WEBPACK_IMPORTED_MODULE_4__","divDisplay","DateType","datetime","sugar_date__WEBPACK_IMPORTED_MODULE_0__","_feature__WEBPACK_IMPORTED_MODULE_2__","setLocale","addConfigFormats","colTypes","dateStr","getOptions","colType","formats","format","addFormat","ex","Dropdown","enableSlcResetFilter","enable_slc_reset_filter","non_empty_text","multipleSlcTooltip","multiple_slc_tooltip","onSlcFocus","onSlcChange","selectFlts","_const__WEBPACK_IMPORTED_MODULE_5__","multipleFlts","multiple","title","fltCssClass","fltMultiCssClass","opt0","addOptions","slcValue","addFirstOption","isDisabled","opt1","opt2","option","selectedOptions","Emitter","events","evts","splice","DURATION_REG","amt","Hours","Minutes","Seconds","Milliseconds","MULTIPLIERS","amount","mult","getDateForRange","getRangeMemberPrimitiveValue","valueOf","dateFormat","assertDateIsValid","getAdjustedUnitForDate","dateRelative","dRelative","adu","getRelativeFormat","compareDay","compareDate","fullCompareDate","margin","weekdayMap","monthMap","getUTCOffset","iso","colon","getHours","ISO8601","RFC1123","RFC1036","CoreOutputFormats","formattingTokens","dateFormatMatcher","getDateParamsFromString","collectDateParamsFromArguments","collectDateArguments","allowDuration","advanceDateWithArgs","createDateWithContext","timezoneShift","compareEdges","loMargin","hiMargin","addSpecificUnit","getTimezoneShift","getOwnKey","getDateParamKey","setYear","setMonth","setISOWeekNumber","getAdjustedUnit","ms","withPrecision","fromCharCode","getRegNonCapturing","map","requiresSuffix","requiresSuffixOr","second","requiresNumerals","yyyy","MM","dd","hh","mm","ss","yy","ihh","imm","GMT","Z","mdy","short","medium","long","full","stamp","time","g","eval","_root__WEBPACK_IMPORTED_MODULE_6__","TableFilter","getFullYear","hasConfig","_len","_key","nodeName","_emitter__WEBPACK_IMPORTED_MODULE_7__","filterTypes","_const__WEBPACK_IMPORTED_MODULE_10__","basePath","base_path","grid","filters_row_index","filters_cell_tag","stylePath","getStylePath","stylesheet","getStylesheetPath","stylesheetId","fltsRowCssClass","flts_row_css_class","enable_icons","alternate_rows","col_widths","flt_css_class","flt_multi_css_class","fltSmallCssClass","flt_small_css_class","singleFltCssClass","single_filter","enterKey","enter_key","onBeforeFilter","on_before_filter","onAfterFilter","on_after_filter","case_sensitive","hasExactMatchByCol","columns_exact_match","exactMatchByCol","exact_match","ignore_diacritics","linked_filters","disable_excluded_options","hasExcludedRows","exclude_rows","external_flt_ids","onFiltersLoaded","on_filters_loaded","singleFlt","singleFltExcludeCols","exclude_cols","onRowValidated","on_row_validated","cellParser","cell_parser","watermark","isWatermarkArray","clearFilterText","clear_filter_text","enable_empty_option","empty_text","enable_non_empty_option","on_change","sort_select","isSortNumAsc","sort_num_asc","sortNumAsc","isSortNumDesc","sort_num_desc","load_filters_on_demand","hasCustomOptions","custom_options","customOptions","rgxOperator","regexp_operator","empty_operator","nonempty_operator","or_operator","anOperator","and_operator","greater_operator","lower_operator","lower_equal_operator","greater_equal_operator","different_operator","like_operator","equal_operator","start_with_operator","end_with_operator","displayBtn","btnReset","onBeforeReset","on_before_reset","onAfterReset","on_after_reset","autoFilter","auto_filter","autoFilterDelay","isUserTyping","autoFilterTimer","highlight_keywords","thousandsSeparator","thousands_separator","decimalSeparator","decimal_separator","col_types","prfxValButton","prfxResponsive","stickyCssClass","extensions","enableDefaultTheme","enable_default_theme","hasThemes","themes","getThemesPath","responsive","stickyHeaders","sticky_headers","ExtRegistry","instantiateFeatures","import","inpclass","loadThemes","initFeatures","fltrow","_insertFiltersRow","fltCell","colSpan","dropdown","_modules_dropdown__WEBPACK_IMPORTED_MODULE_8__","isExternalFlt","checkList","_modules_checkList__WEBPACK_IMPORTED_MODULE_9__","_buildInputFilter","_buildSubmitButton","setActiveFilterId","_initNoFilters","setExcludeRows","setFixedLayout","initExtensions","linkFilters","detectKey","clearInterval","onKeyUp","setInterval","onKeyDown","onInpFocus","onInpBlur","insertRow","inpType","inp","Cls","exts","ext","loadExtension","hasExtension","modulePath","then","__WEBPACK_AMD_REQUIRE_ARRAY__","mod","inst","default","catch","registerExtension","destroyExtensions","theme","styleId","isImported","getStylesheet","_this10","removeExternalFlts","deleteRow","externalFlt","optTxt","optArray","slcTexts","texts","slcSort","sorts","_this11","hiddenRows","searchArgs","occurence","isMatch","isSingleFltMatch","sA","sAOrSplit","hasMultiOrSA","sAAndSplit","hasMultiAndSA","cS","found","w","_match","validateRow","numData","reEm","reNm","reRe","hasLO","hasLE","hasGR","hasGE","hasDF","hasEQ","hasLK","hasST","hasEN","hasEM","hasNM","hasRE","dte1","dte2","isValidDate","parseDate","isLDate","isLEDate","isGDate","isGEDate","isDFDate","isEQDate","isExactMatch","_number__WEBPACK_IMPORTED_MODULE_4__","srchArg","searchArg","lastIndexOf","ignoresDiacritics","getColumnData","includeHeaders","exclude","getColValues","getColumnValues","_this12","typed","colValues","getContent","getCellData","getHeadersText","isExludedRow","getFilterValue","fltValue","fltColType","_this13","getFilterId","bool","tr","nbRows","getWorkingRows","getData","excludeHiddenCols","getTableData","_this14","tblData","headers","rowData","isColHidden","cellContent","getFilteredData","filteredData","getFilteredValues","rData","getFilteredColumnData","getFilteredDataCol","getVisibleColumnData","getFilteredColumnValues","_this15","validColValues","getRowDisplay","unshift","displayFlag","validFlag","query","tableWidth","defaultWidth","reduce","colTags","frag","createDocumentFragment","_this16","filterId","style_path","themes_path","activateFilter","_this17","slcA1","slcA2","slcA3","curSlc","slcSelectedValue","ignoreDiac","clearText","continueFn","breakFn","_this18","startIdx","filePath","imported","attr","files","_import","fileId","callback","_this19","file","isLoaded","onreadystatechange","readyState","getFiltersId","reCalc","_this20","getFiltersRowIndex","getStartRowIndex","getLastRowIndex","table","_this21","headerText","ampmFront","numeralUnits","allowsFullWidth","timeMarkerOptional","weekdays","numerals","placeholders","past","future","timeSuffixes","modifiers","timeParse","plural","months","tokens","articles","timeFrontParse","timeMarkers","numberWithUnit","toFixed","last2","prefix","ordinalSuffix","baseUnit","union","toArray","getRangeMemberNumericValue","charCodeAt","span","intersect","every","periodSplit","getPrecision","n1","n2","chr","valueIsNotInfinite","Infinity","DURATION_UNITS","rangeClamp","clamp","FULL_CAPTURED_DURATION","RANGE_REG_FROM_TO","RANGE_REG_REAR_DURATION","RANGE_REG_FRONT_DURATION","DurationTextFormats","createDateRangeFromString","DateRangeConstructor","setOption","getOption","yearsUntil","yearsSince","yearsFromNow","yearsAgo","weeksUntil","weeksSince","weeksFromNow","weeksAgo","setISOWeek","defineInstanceWithArguments","secondsUntil","secondsSince","secondsFromNow","secondsAgo","rewind","getUnitIndexForParamName","relativeTo","u","monthsUntil","monthsSince","monthsFromNow","monthsAgo","minutesUntil","minutesSince","minutesFromNow","minutesAgo","millisecondsUntil","millisecondsSince","millisecondsFromNow","millisecondsAgo","toISOString","isYesterday","isWeekend","isWeekday","isWednesday","isUTC","isTuesday","isTomorrow","isToday","isThursday","isThisYear","isThisWeek","isThisMonth","isSunday","isSaturday","isPast","isNextYear","isNextWeek","isNextMonth","isMonday","isLeapYear","isLastYear","isLastWeek","isLastMonth","isFuture","special","together","isFriday","isBetween","t1","t2","lo","hi","isBefore","isAfter","comp","is","hoursUntil","hoursSince","hoursFromNow","hoursAgo","getUTCWeekday","getUTCDay","getISOWeek","INTERNAL_MEMOIZE_LIMIT","memoizeFunction","memo","counter","STRING_FORMAT_REG","CommonChars","createFormatMatcher","bracketMatcher","percentMatcher","precheck","compileMemoized","compile","lastIndex","exec","getSubstring","getToken","literal","bKey","pLit","pKey","assertPassesPrecheck","bt","pt","getLiteral","sub","assertNoUnmatched","getMeridiemToken","getDaysSince","getWeekYear","week","getFirstDayOfWeekYear","TIMEZONE_ABBREVIATION_REG","FormatTokensBase","ldml","strf","lowerToken","getWeekdayName","allowAlternates","alternate","getMonthName","strfPadding","ldmlPaddedToken","ordinalToken","doy","ldmlTwoDigitToken","strfTwoDigitToken","ldmlTokens","strfTokens","buildDateFormatTokens","addFormats","buildLowercase","buildPadded","padding","buildTwoDigits","buildAlias","buildAlternate","getIdentityFormat","getPadded","buildOrdinal","getOrdinal","buildAlternates","buildDateFormatMatcher","getLdml","getStrf","checkDateToken","endOfYear","endOfWeek","endOfMonth","endOfISOWeek","endOfDay","daysUntil","daysSince","daysInMonth","daysFromNow","daysAgo","beginningOfYear","beginningOfWeek","beginningOfMonth","beginningOfISOWeek","beginningOfDay","addYears","addWeeks","addSeconds","addMonths","addMinutes","addMilliseconds","addHours","caps","addDays","yearsBefore","yearsAfter","years","yearFromNow","yearBefore","yearAgo","yearAfter","weeksBefore","weeksAfter","weeks","weekFromNow","weekBefore","weekAgo","weekAfter","secondsBefore","secondsAfter","seconds","secondFromNow","secondBefore","secondAgo","secondAfter","monthsBefore","monthsAfter","monthFromNow","monthBefore","monthAgo","monthAfter","minutesBefore","minutesAfter","minutes","minuteFromNow","minuteBefore","minuteAgo","minuteAfter","millisecondsBefore","millisecondsAfter","milliseconds","millisecondFromNow","millisecondBefore","millisecondAgo","millisecondAfter","hoursBefore","hoursAfter","hourFromNow","hourBefore","hourAgo","hourAfter","getDuration","daysBefore","daysAfter","days","dayFromNow","dayBefore","dayAgo","dayAfter","wrapNamespace","defineStaticPolyfill","defineInstancePolyfill","defineInstanceAndStatic","removeLocale","getAllLocales","getKeys","getAllLocaleCodes","setChainableConstructor","createFn","setDateChainableConstructor","delta","defineAccessor","namespace","defaults","defaultNewDate","newDateInternal","LocalizedParsingTokens","getParsingTokenWithSuffix","suffix","getAdjustedUnitForNumber","allCharsReg","fullWidthNumberReg","fullWidthNumberMap","fullWidthNumbers","buildFullWidthNumber","fwp","hwp","hwc","fwn","digit","escapeRegExp","arrayToRegAlternates","joined","join","PRIVATE_PROP_PREFIX","privateKey","getArrayWithOffset","getOrdinalSuffix","hasValidPlainObjectPrototype","hasConstructor","hasOwnEnumeratedProperties","objectProto","commaSplit","isArrayIndex","getSparseArrayIndexes","fromIndex","loop","fromRight","aLoop","LOCALE_ARRAY_FIELDS","CoreParsingFormats","fullwidthNumberHelpers","Locale","monthSuffix","getNumber","numeralMap","getNumeralValue","lastWasPlace","isPlace","numeral","convertAdjustedToFormat","getTokenSrc","parsingAliases","replaceParsingTokens","parsingTokens","addRawFormat","buildValueArray","setMap","forAllAlternates","forEachAlternate","alt","suffixes","addFormatSet","allowTime","timeFront","getFormatWithTime","baseFormat","timeBefore","getTimeBefore","getTimeAfter","localized","markers","initFormats","initDefinition","initArrayFields","buildNumerals","buildTimeFormats","getTimeFormat","buildParsingTokens","getNumeralSrc","buildTimeSuffixes","buildModifiers","mapKey","addCoreFormats","df","addLocaleFormats","CanadianEnglishDefinition","BritishEnglishDefinition","en-US","en-GB","en-AU","en-CA"],"mappings":"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CAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KAGAA,EAAA,KACAA,EAAA,KAEAzB,EAAAD,QAAA0B,EAAA","file":"tablefilter.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1]\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\t\tvar script = document.createElement('script');\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120000;\n\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = __webpack_require__.p + \"tf-\" + ({}[chunkId]||chunkId) + \"-\" + {\"0\":\"db54cfc612ffa547f4a3\"}[chunkId] + \".js\";\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tfunction onScriptComplete(event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\tvar error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\thead.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 129);\n","/*\n * Sugar v2.0.4\n *\n * Freely distributable and licensed under the MIT-style license.\n * Copyright (c) Andrew Plummer\n * https://sugarjs.com/\n *\n * ---------------------------- */\n(function() {\n 'use strict';\n\n /***\n * @module Core\n * @description Core functionality including the ability to define methods and\n * extend onto natives.\n *\n ***/\n\n // The global to export.\n var Sugar;\n\n // The name of Sugar in the global namespace.\n var SUGAR_GLOBAL = 'Sugar';\n\n // Natives available on initialization. Letting Object go first to ensure its\n // global is set by the time the rest are checking for chainable Object methods.\n var NATIVE_NAMES = 'Object Number String Array Date RegExp Function';\n\n // Static method flag\n var STATIC = 0x1;\n\n // Instance method flag\n var INSTANCE = 0x2;\n\n // IE8 has a broken defineProperty but no defineProperties so this saves a try/catch.\n var PROPERTY_DESCRIPTOR_SUPPORT = !!(Object.defineProperty && Object.defineProperties);\n\n // The global context. Rhino uses a different \"global\" keyword so\n // do an extra check to be sure that it's actually the global context.\n var globalContext = typeof global !== 'undefined' && global.Object === Object ? global : this;\n\n // Is the environment node?\n var hasExports = typeof module !== 'undefined' && module.exports;\n\n // Whether object instance methods can be mapped to the prototype.\n var allowObjectPrototype = false;\n\n // A map from Array to SugarArray.\n var namespacesByName = {};\n\n // A map from [object Object] to namespace.\n var namespacesByClassString = {};\n\n // Defining properties.\n var defineProperty = PROPERTY_DESCRIPTOR_SUPPORT ? Object.defineProperty : definePropertyShim;\n\n // A default chainable class for unknown types.\n var DefaultChainable = getNewChainableClass('Chainable');\n\n\n // Global methods\n\n function setupGlobal() {\n Sugar = globalContext[SUGAR_GLOBAL];\n if (Sugar) {\n // Reuse already defined Sugar global object.\n return;\n }\n Sugar = function(arg) {\n forEachProperty(Sugar, function(sugarNamespace, name) {\n // Although only the only enumerable properties on the global\n // object are Sugar namespaces, environments that can't set\n // non-enumerable properties will step through the utility methods\n // as well here, so use this check to only allow true namespaces.\n if (hasOwn(namespacesByName, name)) {\n sugarNamespace.extend(arg);\n }\n });\n return Sugar;\n };\n if (hasExports) {\n module.exports = Sugar;\n } else {\n try {\n globalContext[SUGAR_GLOBAL] = Sugar;\n } catch (e) {\n // Contexts such as QML have a read-only global context.\n }\n }\n forEachProperty(NATIVE_NAMES.split(' '), function(name) {\n createNamespace(name);\n });\n setGlobalProperties();\n }\n\n /***\n * @method createNamespace(name)\n * @returns SugarNamespace\n * @namespace Sugar\n * @short Creates a new Sugar namespace.\n * @extra This method is for plugin developers who want to define methods to be\n * used with natives that Sugar does not handle by default. The new\n * namespace will appear on the `Sugar` global with all the methods of\n * normal namespaces, including the ability to define new methods. When\n * extended, any defined methods will be mapped to `name` in the global\n * context.\n *\n * @example\n *\n * Sugar.createNamespace('Boolean');\n *\n * @param {string} name - The namespace name.\n *\n ***/\n function createNamespace(name) {\n\n // Is the current namespace Object?\n var isObject = name === 'Object';\n\n // A Sugar namespace is also a chainable class: Sugar.Array, etc.\n var sugarNamespace = getNewChainableClass(name, true);\n\n /***\n * @method extend([opts])\n * @returns Sugar\n * @namespace Sugar\n * @short Extends Sugar defined methods onto natives.\n * @extra This method can be called on individual namespaces like\n * `Sugar.Array` or on the `Sugar` global itself, in which case\n * [opts] will be forwarded to each `extend` call. For more,\n * see `extending`.\n *\n * @options\n *\n * methods An array of method names to explicitly extend.\n *\n * except An array of method names or global namespaces (`Array`,\n * `String`) to explicitly exclude. Namespaces should be the\n * actual global objects, not strings.\n *\n * namespaces An array of global namespaces (`Array`, `String`) to\n * explicitly extend. Namespaces should be the actual\n * global objects, not strings.\n *\n * enhance A shortcut to disallow all \"enhance\" flags at once\n * (flags listed below). For more, see `enhanced methods`.\n * Default is `true`.\n *\n * enhanceString A boolean allowing String enhancements. Default is `true`.\n *\n * enhanceArray A boolean allowing Array enhancements. Default is `true`.\n *\n * objectPrototype A boolean allowing Sugar to extend Object.prototype\n * with instance methods. This option is off by default\n * and should generally not be used except with caution.\n * For more, see `object methods`.\n *\n * @example\n *\n * Sugar.Array.extend();\n * Sugar.extend();\n *\n * @option {Array} [methods]\n * @option {Array} [except]\n * @option {Array} [namespaces]\n * @option {boolean} [enhance]\n * @option {boolean} [enhanceString]\n * @option {boolean} [enhanceArray]\n * @option {boolean} [objectPrototype]\n * @param {ExtendOptions} [opts]\n *\n ***\n * @method extend([opts])\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Extends Sugar defined methods for a specific namespace onto natives.\n * @param {ExtendOptions} [opts]\n *\n ***/\n var extend = function (opts) {\n\n var nativeClass = globalContext[name], nativeProto = nativeClass.prototype;\n var staticMethods = {}, instanceMethods = {}, methodsByName;\n\n function objectRestricted(name, target) {\n return isObject && target === nativeProto &&\n (!allowObjectPrototype || name === 'get' || name === 'set');\n }\n\n function arrayOptionExists(field, val) {\n var arr = opts[field];\n if (arr) {\n for (var i = 0, el; el = arr[i]; i++) {\n if (el === val) {\n return true;\n }\n }\n }\n return false;\n }\n\n function arrayOptionExcludes(field, val) {\n return opts[field] && !arrayOptionExists(field, val);\n }\n\n function disallowedByFlags(methodName, target, flags) {\n // Disallowing methods by flag currently only applies if methods already\n // exist to avoid enhancing native methods, as aliases should still be\n // extended (i.e. Array#all should still be extended even if Array#every\n // is being disallowed by a flag).\n if (!target[methodName] || !flags) {\n return false;\n }\n for (var i = 0; i < flags.length; i++) {\n if (opts[flags[i]] === false) {\n return true;\n }\n }\n }\n\n function namespaceIsExcepted() {\n return arrayOptionExists('except', nativeClass) ||\n arrayOptionExcludes('namespaces', nativeClass);\n }\n\n function methodIsExcepted(methodName) {\n return arrayOptionExists('except', methodName);\n }\n\n function canExtend(methodName, method, target) {\n return !objectRestricted(methodName, target) &&\n !disallowedByFlags(methodName, target, method.flags) &&\n !methodIsExcepted(methodName);\n }\n\n opts = opts || {};\n methodsByName = opts.methods;\n\n if (namespaceIsExcepted()) {\n return;\n } else if (isObject && typeof opts.objectPrototype === 'boolean') {\n // Store \"objectPrototype\" flag for future reference.\n allowObjectPrototype = opts.objectPrototype;\n }\n\n forEachProperty(methodsByName || sugarNamespace, function(method, methodName) {\n if (methodsByName) {\n // If we have method names passed in an array,\n // then we need to flip the key and value here\n // and find the method in the Sugar namespace.\n methodName = method;\n method = sugarNamespace[methodName];\n }\n if (hasOwn(method, 'instance') && canExtend(methodName, method, nativeProto)) {\n instanceMethods[methodName] = method.instance;\n }\n if(hasOwn(method, 'static') && canExtend(methodName, method, nativeClass)) {\n staticMethods[methodName] = method;\n }\n });\n\n // Accessing the extend target each time instead of holding a reference as\n // it may have been overwritten (for example Date by Sinon). Also need to\n // access through the global to allow extension of user-defined namespaces.\n extendNative(nativeClass, staticMethods);\n extendNative(nativeProto, instanceMethods);\n\n if (!methodsByName) {\n // If there are no method names passed, then\n // all methods in the namespace will be extended\n // to the native. This includes all future defined\n // methods, so add a flag here to check later.\n setProperty(sugarNamespace, 'active', true);\n }\n return sugarNamespace;\n };\n\n function defineWithOptionCollect(methodName, instance, args) {\n setProperty(sugarNamespace, methodName, function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n defineMethods(sugarNamespace, opts.methods, instance, args, opts.last);\n return sugarNamespace;\n });\n }\n\n /***\n * @method defineStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods on the namespace that can later be extended\n * onto the native globals.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. If `extend` was previously called\n * with no arguments, the method will be immediately mapped to its\n * native when defined.\n *\n * @example\n *\n * Sugar.Number.defineStatic({\n * isOdd: function (num) {\n * return num % 2 === 1;\n * }\n * });\n *\n * @signature defineStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStatic', STATIC);\n\n /***\n * @method defineInstance(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines methods on the namespace that can later be extended as\n * instance methods onto the native prototype.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. All functions should accept the\n * native for which they are mapped as their first argument, and should\n * never refer to `this`. If `extend` was previously called with no\n * arguments, the method will be immediately mapped to its native when\n * defined.\n *\n * Methods cannot accept more than 4 arguments in addition to the\n * native (5 arguments total). Any additional arguments will not be\n * mapped. If the method needs to accept unlimited arguments, use\n * `defineInstanceWithArguments`. Otherwise if more options are\n * required, use an options object instead.\n *\n * @example\n *\n * Sugar.Number.defineInstance({\n * square: function (num) {\n * return num * num;\n * }\n * });\n *\n * @signature defineInstance(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstance', INSTANCE);\n\n /***\n * @method defineInstanceAndStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short A shortcut to define both static and instance methods on the namespace.\n * @extra This method is intended for use with `Object` instance methods. Sugar\n * will not map any methods to `Object.prototype` by default, so defining\n * instance methods as static helps facilitate their proper use.\n *\n * @example\n *\n * Sugar.Object.defineInstanceAndStatic({\n * isAwesome: function (obj) {\n * // check if obj is awesome!\n * }\n * });\n *\n * @signature defineInstanceAndStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceAndStatic', INSTANCE | STATIC);\n\n\n /***\n * @method defineStaticWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that collect arguments.\n * @extra This method is identical to `defineStatic`, except that when defined\n * methods are called, they will collect any arguments past `n - 1`,\n * where `n` is the number of arguments that the method accepts.\n * Collected arguments will be passed to the method in an array\n * as the last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineStaticWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineStaticWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStaticWithArguments', STATIC, true);\n\n /***\n * @method defineInstanceWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that collect arguments.\n * @extra This method is identical to `defineInstance`, except that when\n * defined methods are called, they will collect any arguments past\n * `n - 1`, where `n` is the number of arguments that the method\n * accepts. Collected arguments will be passed to the method as the\n * last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineInstanceWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineInstanceWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceWithArguments', INSTANCE, true);\n\n /***\n * @method defineStaticPolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that are mapped onto the native if they do\n * not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments.\n *\n * @example\n *\n * Sugar.Object.defineStaticPolyfill({\n * keys: function (obj) {\n * // get keys!\n * }\n * });\n *\n * @signature defineStaticPolyfill(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n setProperty(sugarNamespace, 'defineStaticPolyfill', function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n extendNative(globalContext[name], opts.methods, true, opts.last);\n return sugarNamespace;\n });\n\n /***\n * @method defineInstancePolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that are mapped onto the native prototype\n * if they do not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments. This method differs from\n * `defineInstance` as there is no static signature (as the method\n * is mapped as-is to the native), so it should refer to its `this`\n * object.\n *\n * @example\n *\n * Sugar.Array.defineInstancePolyfill({\n * indexOf: function (arr, el) {\n * // index finding code here!\n * }\n * });\n *\n * @signature defineInstancePolyfill(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n setProperty(sugarNamespace, 'defineInstancePolyfill', function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n extendNative(globalContext[name].prototype, opts.methods, true, opts.last);\n // Map instance polyfills to chainable as well.\n forEachProperty(opts.methods, function(fn, methodName) {\n defineChainableMethod(sugarNamespace, methodName, fn);\n });\n return sugarNamespace;\n });\n\n /***\n * @method alias(toName, from)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Aliases one Sugar method to another.\n *\n * @example\n *\n * Sugar.Array.alias('all', 'every');\n *\n * @signature alias(toName, fn)\n * @param {string} toName - Name for new method.\n * @param {string|Function} from - Method to alias, or string shortcut.\n ***/\n setProperty(sugarNamespace, 'alias', function(name, source) {\n var method = typeof source === 'string' ? sugarNamespace[source] : source;\n setMethod(sugarNamespace, name, method);\n return sugarNamespace;\n });\n\n // Each namespace can extend only itself through its .extend method.\n setProperty(sugarNamespace, 'extend', extend);\n\n // Cache the class to namespace relationship for later use.\n namespacesByName[name] = sugarNamespace;\n namespacesByClassString['[object ' + name + ']'] = sugarNamespace;\n\n mapNativeToChainable(name);\n mapObjectChainablesToNamespace(sugarNamespace);\n\n\n // Export\n return Sugar[name] = sugarNamespace;\n }\n\n function setGlobalProperties() {\n setProperty(Sugar, 'extend', Sugar);\n setProperty(Sugar, 'toString', toString);\n setProperty(Sugar, 'createNamespace', createNamespace);\n\n setProperty(Sugar, 'util', {\n 'hasOwn': hasOwn,\n 'getOwn': getOwn,\n 'setProperty': setProperty,\n 'classToString': classToString,\n 'defineProperty': defineProperty,\n 'forEachProperty': forEachProperty,\n 'mapNativeToChainable': mapNativeToChainable\n });\n }\n\n function toString() {\n return SUGAR_GLOBAL;\n }\n\n\n // Defining Methods\n\n function defineMethods(sugarNamespace, methods, type, args, flags) {\n forEachProperty(methods, function(method, methodName) {\n var instanceMethod, staticMethod = method;\n if (args) {\n staticMethod = wrapMethodWithArguments(method);\n }\n if (flags) {\n staticMethod.flags = flags;\n }\n\n // A method may define its own custom implementation, so\n // make sure that's not the case before creating one.\n if (type & INSTANCE && !method.instance) {\n instanceMethod = wrapInstanceMethod(method, args);\n setProperty(staticMethod, 'instance', instanceMethod);\n }\n\n if (type & STATIC) {\n setProperty(staticMethod, 'static', true);\n }\n\n setMethod(sugarNamespace, methodName, staticMethod);\n\n if (sugarNamespace.active) {\n // If the namespace has been activated (.extend has been called),\n // then map this method as well.\n sugarNamespace.extend(methodName);\n }\n });\n }\n\n function collectDefineOptions(arg1, arg2, arg3) {\n var methods, last;\n if (typeof arg1 === 'string') {\n methods = {};\n methods[arg1] = arg2;\n last = arg3;\n } else {\n methods = arg1;\n last = arg2;\n }\n return {\n last: last,\n methods: methods\n };\n }\n\n function wrapInstanceMethod(fn, args) {\n return args ? wrapMethodWithArguments(fn, true) : wrapInstanceMethodFixed(fn);\n }\n\n function wrapMethodWithArguments(fn, instance) {\n // Functions accepting enumerated arguments will always have \"args\" as the\n // last argument, so subtract one from the function length to get the point\n // at which to start collecting arguments. If this is an instance method on\n // a prototype, then \"this\" will be pushed into the arguments array so start\n // collecting 1 argument earlier.\n var startCollect = fn.length - 1 - (instance ? 1 : 0);\n return function() {\n var args = [], collectedArgs = [], len;\n if (instance) {\n args.push(this);\n }\n len = Math.max(arguments.length, startCollect);\n // Optimized: no leaking arguments\n for (var i = 0; i < len; i++) {\n if (i < startCollect) {\n args.push(arguments[i]);\n } else {\n collectedArgs.push(arguments[i]);\n }\n }\n args.push(collectedArgs);\n return fn.apply(this, args);\n };\n }\n\n function wrapInstanceMethodFixed(fn) {\n switch(fn.length) {\n // Wrapped instance methods will always be passed the instance\n // as the first argument, but requiring the argument to be defined\n // may cause confusion here, so return the same wrapped function regardless.\n case 0:\n case 1:\n return function() {\n return fn(this);\n };\n case 2:\n return function(a) {\n return fn(this, a);\n };\n case 3:\n return function(a, b) {\n return fn(this, a, b);\n };\n case 4:\n return function(a, b, c) {\n return fn(this, a, b, c);\n };\n case 5:\n return function(a, b, c, d) {\n return fn(this, a, b, c, d);\n };\n }\n }\n\n // Method helpers\n\n function extendNative(target, source, polyfill, override) {\n forEachProperty(source, function(method, name) {\n if (polyfill && !override && target[name]) {\n // Method exists, so bail.\n return;\n }\n setProperty(target, name, method);\n });\n }\n\n function setMethod(sugarNamespace, methodName, method) {\n sugarNamespace[methodName] = method;\n if (method.instance) {\n defineChainableMethod(sugarNamespace, methodName, method.instance, true);\n }\n }\n\n\n // Chainables\n\n function getNewChainableClass(name) {\n var fn = function SugarChainable(obj, arg) {\n if (!(this instanceof fn)) {\n return new fn(obj, arg);\n }\n if (this.constructor !== fn) {\n // Allow modules to define their own constructors.\n obj = this.constructor.apply(obj, arguments);\n }\n this.raw = obj;\n };\n setProperty(fn, 'toString', function() {\n return SUGAR_GLOBAL + name;\n });\n setProperty(fn.prototype, 'valueOf', function() {\n return this.raw;\n });\n return fn;\n }\n\n function defineChainableMethod(sugarNamespace, methodName, fn) {\n var wrapped = wrapWithChainableResult(fn), existing, collision, dcp;\n dcp = DefaultChainable.prototype;\n existing = dcp[methodName];\n\n // If the method was previously defined on the default chainable, then a\n // collision exists, so set the method to a disambiguation function that will\n // lazily evaluate the object and find it's associated chainable. An extra\n // check is required to avoid false positives from Object inherited methods.\n collision = existing && existing !== Object.prototype[methodName];\n\n // The disambiguation function is only required once.\n if (!existing || !existing.disambiguate) {\n dcp[methodName] = collision ? disambiguateMethod(methodName) : wrapped;\n }\n\n // The target chainable always receives the wrapped method. Additionally,\n // if the target chainable is Sugar.Object, then map the wrapped method\n // to all other namespaces as well if they do not define their own method\n // of the same name. This way, a Sugar.Number will have methods like\n // isEqual that can be called on any object without having to traverse up\n // the prototype chain and perform disambiguation, which costs cycles.\n // Note that the \"if\" block below actually does nothing on init as Object\n // goes first and no other namespaces exist yet. However it needs to be\n // here as Object instance methods defined later also need to be mapped\n // back onto existing namespaces.\n sugarNamespace.prototype[methodName] = wrapped;\n if (sugarNamespace === Sugar.Object) {\n mapObjectChainableToAllNamespaces(methodName, wrapped);\n }\n }\n\n function mapObjectChainablesToNamespace(sugarNamespace) {\n forEachProperty(Sugar.Object && Sugar.Object.prototype, function(val, methodName) {\n if (typeof val === 'function') {\n setObjectChainableOnNamespace(sugarNamespace, methodName, val);\n }\n });\n }\n\n function mapObjectChainableToAllNamespaces(methodName, fn) {\n forEachProperty(namespacesByName, function(sugarNamespace) {\n setObjectChainableOnNamespace(sugarNamespace, methodName, fn);\n });\n }\n\n function setObjectChainableOnNamespace(sugarNamespace, methodName, fn) {\n var proto = sugarNamespace.prototype;\n if (!hasOwn(proto, methodName)) {\n proto[methodName] = fn;\n }\n }\n\n function wrapWithChainableResult(fn) {\n return function() {\n return new DefaultChainable(fn.apply(this.raw, arguments));\n };\n }\n\n function disambiguateMethod(methodName) {\n var fn = function() {\n var raw = this.raw, sugarNamespace, fn;\n if (raw != null) {\n // Find the Sugar namespace for this unknown.\n sugarNamespace = namespacesByClassString[classToString(raw)];\n }\n if (!sugarNamespace) {\n // If no sugarNamespace can be resolved, then default\n // back to Sugar.Object so that undefined and other\n // non-supported types can still have basic object\n // methods called on them, such as type checks.\n sugarNamespace = Sugar.Object;\n }\n\n fn = new sugarNamespace(raw)[methodName];\n\n if (fn.disambiguate) {\n // If the method about to be called on this chainable is\n // itself a disambiguation method, then throw an error to\n // prevent infinite recursion.\n throw new TypeError('Cannot resolve namespace for ' + raw);\n }\n\n return fn.apply(this, arguments);\n };\n fn.disambiguate = true;\n return fn;\n }\n\n function mapNativeToChainable(name, methodNames) {\n var sugarNamespace = namespacesByName[name],\n nativeProto = globalContext[name].prototype;\n\n if (!methodNames && ownPropertyNames) {\n methodNames = ownPropertyNames(nativeProto);\n }\n\n forEachProperty(methodNames, function(methodName) {\n if (nativeMethodProhibited(methodName)) {\n // Sugar chainables have their own constructors as well as \"valueOf\"\n // methods, so exclude them here. The __proto__ argument should be trapped\n // by the function check below, however simply accessing this property on\n // Object.prototype causes QML to segfault, so pre-emptively excluding it.\n return;\n }\n try {\n var fn = nativeProto[methodName];\n if (typeof fn !== 'function') {\n // Bail on anything not a function.\n return;\n }\n } catch (e) {\n // Function.prototype has properties that\n // will throw errors when accessed.\n return;\n }\n defineChainableMethod(sugarNamespace, methodName, fn);\n });\n }\n\n function nativeMethodProhibited(methodName) {\n return methodName === 'constructor' ||\n methodName === 'valueOf' ||\n methodName === '__proto__';\n }\n\n\n // Util\n\n // Internal references\n var ownPropertyNames = Object.getOwnPropertyNames,\n internalToString = Object.prototype.toString,\n internalHasOwnProperty = Object.prototype.hasOwnProperty;\n\n // Defining this as a variable here as the ES5 module\n // overwrites it to patch DONTENUM.\n var forEachProperty = function (obj, fn) {\n for(var key in obj) {\n if (!hasOwn(obj, key)) continue;\n if (fn.call(obj, obj[key], key, obj) === false) break;\n }\n };\n\n function definePropertyShim(obj, prop, descriptor) {\n obj[prop] = descriptor.value;\n }\n\n function setProperty(target, name, value, enumerable) {\n defineProperty(target, name, {\n value: value,\n enumerable: !!enumerable,\n configurable: true,\n writable: true\n });\n }\n\n // PERF: Attempts to speed this method up get very Heisenbergy. Quickly\n // returning based on typeof works for primitives, but slows down object\n // types. Even === checks on null and undefined (no typeof) will end up\n // basically breaking even. This seems to be as fast as it can go.\n function classToString(obj) {\n return internalToString.call(obj);\n }\n\n function hasOwn(obj, prop) {\n return !!obj && internalHasOwnProperty.call(obj, prop);\n }\n\n function getOwn(obj, prop) {\n if (hasOwn(obj, prop)) {\n return obj[prop];\n }\n }\n\n setupGlobal();\n\n}).call(this);","import {isBoolean, isString, isFn, isArray} from './types';\r\n\r\n/** Configuration settings helpers */\r\n\r\n/**\r\n * If passed value is not of boolean type return the default value\r\n * otherwise return the value itself\r\n * @param {Boolean|Any} value\r\n * @param {Boolean} default value\r\n * @return {Boolean|Any}\r\n */\r\nexport const defaultsBool =\r\n (val, defaultVal) => isBoolean(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of string type return the default value\r\n * otherwise return the value itself\r\n * @param {String|Any} value\r\n * @param {String} default value\r\n * @return {String|Any}\r\n */\r\nexport const defaultsStr =\r\n (val, defaultVal) => isString(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of number type return the default value\r\n * otherwise return the value itself\r\n * @param {Number|Any} value\r\n * @param {Number} default value\r\n * @return {Number|Any}\r\n */\r\nexport const defaultsNb =\r\n (val, defaultVal) => isNaN(val) ? defaultVal : val;\r\n\r\n/**\r\n * If passed value is not of array type return the default value\r\n * otherwise return the value itself\r\n * @param {Array|Any} value\r\n * @param {Array} default value\r\n * @return {Array|Any}\r\n */\r\nexport const defaultsArr =\r\n (val, defaultVal) => isArray(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of function type return the default value\r\n * otherwise return the value itself\r\n * @param {Function|Any} value\r\n * @param {Function} default value\r\n * @return {Function|Any}\r\n */\r\nexport const defaultsFn =\r\n (val, defaultVal) => isFn(val) ? val : defaultVal;\r\n","import {root} from './root';\r\nimport {isArray, isString, isUndef} from './types';\r\nimport {trim} from './string';\r\n\r\n/**\r\n * DOM utilities\r\n */\r\n\r\nconst doc = root.document;\r\n\r\n/**\r\n * Returns text + text of children of given node\r\n * @param {NodeElement} node\r\n * @return {String}\r\n */\r\nexport const getText = (node) => {\r\n if (isUndef(node.textContent)) {\r\n return trim(node.innerText);\r\n }\r\n return trim(node.textContent);\r\n};\r\n\r\n/**\r\n * Returns the first text node contained in the supplied node\r\n * @param {NodeElement} node node\r\n * @return {String}\r\n */\r\nexport const getFirstTextNode = (node) => {\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n let n = node.childNodes[i];\r\n if (n.nodeType === 3) {\r\n return n.data;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Creates an html element with given collection of attributes\r\n * @param {String} tag a string of the html tag to create\r\n * @param {Array} an undetermined number of arrays containing the with 2\r\n * items, the attribute name and its value ['id','myId']\r\n * @return {Object} created element\r\n */\r\nexport const createElm = (...args) => {\r\n let tag = args[0];\r\n if (!isString(tag)) {\r\n return null;\r\n }\r\n\r\n let el = doc.createElement(tag);\r\n for (let i = 0; i < args.length; i++) {\r\n let arg = args[i];\r\n\r\n if (isArray(arg) && arg.length === 2) {\r\n el.setAttribute(arg[0], arg[1]);\r\n }\r\n }\r\n return el;\r\n};\r\n\r\n/**\r\n * Removes passed node from DOM\r\n * @param {DOMElement} node\r\n * @return {DOMElement} old node reference\r\n */\r\nexport const removeElm = (node) => node.parentNode.removeChild(node);\r\n\r\n/**\r\n * Returns a text node with given text\r\n * @param {String} txt\r\n * @return {Object}\r\n */\r\nexport const createText = (txt) => doc.createTextNode(txt);\r\n\r\n/**\r\n * Determine whether the passed elements is assigned the given class\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n * @returns {Boolean}\r\n */\r\nexport const hasClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return false;\r\n }\r\n\r\n if (supportsClassList()) {\r\n return ele.classList.contains(cls);\r\n }\r\n return ele.className.match(new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)'));\r\n};\r\n\r\n/**\r\n * Adds the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const addClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.add(cls);\r\n return;\r\n }\r\n\r\n if (ele.className === '') {\r\n ele.className = cls;\r\n }\r\n else if (!hasClass(ele, cls)) {\r\n ele.className += ' ' + cls;\r\n }\r\n};\r\n\r\n/**\r\n * Removes the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const removeClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.remove(cls);\r\n return;\r\n }\r\n let reg = new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)', 'g');\r\n ele.className = ele.className.replace(reg, '');\r\n};\r\n\r\n/**\r\n * Creates and returns an option element\r\n * @param {String} text option text\r\n * @param {String} value option value\r\n * @param {Boolean} isSel whether option is selected\r\n * @return {Object} option element\r\n */\r\nexport const createOpt = (text, value, isSel) => {\r\n let isSelected = isSel ? true : false;\r\n let opt = isSelected ?\r\n createElm('option', ['value', value], ['selected', 'true']) :\r\n createElm('option', ['value', value]);\r\n opt.appendChild(createText(text));\r\n return opt;\r\n};\r\n\r\n/**\r\n * Creates and returns a checklist item\r\n * @param {String} id index of check item\r\n * @param {String} chkValue check item value\r\n * @param {String} labelText check item label text\r\n * @param {Array} extraAttr array containing attribute name and its value\r\n * @return {Object} li DOM element\r\n */\r\nexport const createCheckItem = (id, chkValue, labelText, extraAttr = []) => {\r\n let li = createElm('li');\r\n let label = createElm('label', ['for', id]);\r\n let check = createElm('input',\r\n ['id', id],\r\n ['name', id],\r\n ['type', 'checkbox'],\r\n ['value', chkValue],\r\n extraAttr\r\n );\r\n label.appendChild(check);\r\n label.appendChild(createText(labelText));\r\n li.appendChild(label);\r\n li.label = label;\r\n li.check = check;\r\n return li;\r\n};\r\n\r\n/**\r\n * Returns the element matching the supplied Id\r\n * @param {String} id Element identifier\r\n * @return {DOMElement}\r\n */\r\nexport const elm = (id) => doc.getElementById(id);\r\n\r\n/**\r\n * Returns list of element matching the supplied tag name\r\n * @param {String} tagname Tag name\r\n * @return {NodeList}\r\n */\r\nexport const tag = (o, tagname) => o.getElementsByTagName(tagname);\r\n\r\n// HTML5 classList API\r\nfunction supportsClassList() {\r\n return doc.documentElement.classList;\r\n}\r\n","\r\n/**\r\n * Types utilities\r\n */\r\n\r\nconst UNDEFINED = void 0;\r\n\r\n/**\r\n * Return an empty function\r\n * @return {Function}\r\n */\r\nexport const EMPTY_FN = function() {};\r\n\r\n/**\r\n * Check passed argument is an object\r\n * @param {Object} obj\r\n * @return {Boolean}\r\n */\r\nexport const isObj =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Object]';\r\n\r\n/**\r\n * Check passed argument is a function\r\n * @param {Function} obj\r\n * @return {Boolean}\r\n */\r\nexport const isFn =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Function]';\r\n\r\n/**\r\n * Check passed argument is an array\r\n * @param {Array} obj\r\n * @return {Boolean}\r\n */\r\nexport const isArray =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Array]';\r\n\r\n/**\r\n * Check passed argument is a string\r\n * @param {String} obj obj\r\n * @returns {Boolean}\r\n */\r\nexport const isString =\r\n (obj) => Object.prototype.toString.call(obj) === '[object String]';\r\n\r\n/**\r\n * Check passed argument is a number\r\n * @param {Number} obj\r\n * @returns {Boolean}\r\n */\r\nexport const isNumber =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Number]';\r\n\r\n/**\r\n * Check passed argument is a boolean\r\n * @param {Boolean} obj\r\n * @returns {Boolean}\r\n */\r\nexport const isBoolean =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Boolean]';\r\n\r\n/**\r\n * Check passed argument is undefined\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isUndef = (obj) => obj === UNDEFINED;\r\n\r\n/**\r\n * Check passed argument is null\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isNull = (obj) => obj === null;\r\n\r\n/**\r\n * Check passed argument is empty (undefined, null or empty string)\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (obj) => isUndef(obj) || isNull(obj) || obj.length === 0;\r\n","import {DateType} from './modules/dateType';\r\nimport {Help} from './modules/help';\r\nimport {State} from './modules/state';\r\nimport {GridLayout} from './modules/gridLayout';\r\nimport {Loader} from './modules/loader';\r\nimport {HighlightKeyword} from './modules/highlightKeywords';\r\nimport {PopupFilter} from './modules/popupFilter';\r\nimport {MarkActiveColumns} from './modules/markActiveColumns';\r\nimport {RowsCounter} from './modules/rowsCounter';\r\nimport {StatusBar} from './modules/statusBar';\r\nimport {ClearButton} from './modules/clearButton';\r\nimport {AlternateRows} from './modules/alternateRows';\r\nimport {NoResults} from './modules/noResults';\r\nimport {Paging} from './modules/paging';\r\nimport {Toolbar} from './modules/toolbar';\r\n\r\n/**\r\n * Filter types\r\n */\r\n\r\n/**\r\n * Input filter type\r\n * @type {String}\r\n */\r\nexport const INPUT = 'input';\r\n/**\r\n * Select filter type\r\n * @type {String}\r\n */\r\nexport const SELECT = 'select';\r\n/**\r\n * Multiple select filter type\r\n * @type {String}\r\n */\r\nexport const MULTIPLE = 'multiple';\r\n/**\r\n * Checklist filter type\r\n * @type {String}\r\n */\r\nexport const CHECKLIST = 'checklist';\r\n/**\r\n * None filter type\r\n * @type {String}\r\n */\r\nexport const NONE = 'none';\r\n\r\n/**\r\n * Key codes\r\n */\r\n\r\n/**\r\n * Enter key code\r\n * @type {Number}\r\n */\r\nexport const ENTER_KEY = 13;\r\n/**\r\n * Tab key code\r\n * @type {Number}\r\n */\r\nexport const TAB_KEY = 9;\r\n/**\r\n * Escape key code\r\n * @type {Number}\r\n */\r\nexport const ESC_KEY = 27;\r\n/**\r\n * Up arrow key code\r\n * @type {Number}\r\n */\r\nexport const UP_ARROW_KEY = 38;\r\n/**\r\n * Down arrow key code\r\n * @type {Number}\r\n */\r\nexport const DOWN_ARROW_KEY = 40;\r\n\r\n/**\r\n * HTML tags\r\n */\r\n\r\n/**\r\n * Header cell tag\r\n * @type {String}\r\n */\r\nexport const HEADER_TAG = 'TH';\r\n/**\r\n * Cell tag\r\n * @type {String}\r\n */\r\nexport const CELL_TAG = 'TD';\r\n\r\n/**\r\n * Data types\r\n */\r\n\r\n/**\r\n * String\r\n * @type {String}\r\n */\r\nexport const STRING = 'string';\r\n\r\n/**\r\n * Number\r\n * @type {String}\r\n */\r\nexport const NUMBER = 'number';\r\n\r\n/**\r\n * Formatted number\r\n * @type {String}\r\n */\r\nexport const FORMATTED_NUMBER = 'formatted-number';\r\n\r\n/**\r\n * Date\r\n * @type {String}\r\n */\r\nexport const DATE = 'date';\r\n\r\n/**\r\n * IP address\r\n * @type {String}\r\n */\r\nexport const IP_ADDRESS = 'ipaddress';\r\n\r\n/**\r\n * Default values\r\n */\r\n\r\n/**\r\n * Auto filter delay in milliseconds\r\n * @type {Number}\r\n */\r\nexport const AUTO_FILTER_DELAY = 750;\r\n\r\n/**\r\n * TableFilter features definitions\r\n * @type {Object}\r\n */\r\nexport const FEATURES = {\r\n dateType: {\r\n class: DateType,\r\n name: 'dateType'\r\n },\r\n help: {\r\n class: Help,\r\n name: 'help',\r\n enforce: true\r\n },\r\n state: {\r\n class: State,\r\n name: 'state'\r\n },\r\n markActiveColumns: {\r\n class: MarkActiveColumns,\r\n name: 'markActiveColumns'\r\n },\r\n gridLayout: {\r\n class: GridLayout,\r\n name: 'gridLayout'\r\n },\r\n loader: {\r\n class: Loader,\r\n name: 'loader'\r\n },\r\n highlightKeyword: {\r\n class: HighlightKeyword,\r\n name: 'highlightKeyword',\r\n property: 'highlightKeywords'\r\n },\r\n popupFilter: {\r\n class: PopupFilter,\r\n name: 'popupFilter',\r\n property: 'popupFilters'\r\n },\r\n rowsCounter: {\r\n class: RowsCounter,\r\n name: 'rowsCounter'\r\n },\r\n statusBar: {\r\n class: StatusBar,\r\n name: 'statusBar'\r\n },\r\n clearButton: {\r\n class: ClearButton,\r\n name: 'clearButton',\r\n property: 'btnReset'\r\n },\r\n alternateRows: {\r\n class: AlternateRows,\r\n name: 'alternateRows'\r\n },\r\n noResults: {\r\n class: NoResults,\r\n name: 'noResults'\r\n },\r\n paging: {\r\n class: Paging,\r\n name: 'paging'\r\n },\r\n toolbar: {\r\n class: Toolbar,\r\n name: 'toolbar',\r\n enforce: true\r\n }\r\n};\r\n","import {root} from './root';\n\n/**\n * DOM event utilities\n */\n\n/**\n * Add event handler for specified event on passed element\n *\n * @param {DOMElement} obj Element\n * @param {String} type Event type\n * @param {Function} Handler\n * @param {Boolean} capture Specifiy whether the event should be executed in\n * the capturing or in the bubbling phase\n */\nexport const addEvt = (obj, type, func, capture) => {\n if (obj.addEventListener) {\n obj.addEventListener(type, func, capture);\n }\n else if (obj.attachEvent) {\n obj.attachEvent('on' + type, func);\n } else {\n obj['on' + type] = func;\n }\n};\n\n/**\n * Remove event handler for specified event on passed element\n *\n * @param {DOMElement} obj Element\n * @param {String} type Event type\n * @param {Function} Handler\n * @param {Boolean} capture Specifiy whether the event should be executed in\n * the capturing or in the bubbling phase\n */\nexport const removeEvt = (obj, type, func, capture) => {\n if (obj.removeEventListener) {\n obj.removeEventListener(type, func, capture);\n } else if (obj.detachEvent) {\n obj.detachEvent('on' + type, func);\n } else {\n obj['on' + type] = null;\n }\n};\n\n/**\n * Prevents further propagation of the current event in the bubbling phase\n *\n * @param {Event} evt Event on the DOM\n */\nexport const stopEvt = (evt) => {\n if (!evt) {\n evt = root.event;\n }\n if (evt.stopPropagation) {\n evt.stopPropagation();\n } else {\n evt.cancelBubble = true;\n }\n};\n\n/**\n * Cancels the event if it is cancelable, without stopping further\n * propagation of the event.\n *\n * @param {Event} evt Event on the DOM\n */\nexport const cancelEvt = (evt) => {\n if (!evt) {\n evt = root.event;\n }\n if (evt.preventDefault) {\n evt.preventDefault();\n } else {\n evt.returnValue = false;\n }\n};\n\n/**\n * Reference to the object that dispatched the event\n *\n * @param {Event} evt Event on the DOM\n * @returns {DOMElement}\n */\nexport const targetEvt = (evt) => {\n if (!evt) {\n evt = root.event;\n }\n return evt.target || evt.srcElement;\n};\n\n/**\n * Returns the Unicode value of pressed key\n *\n * @param {Event} evt Event on the DOM\n * @returns {Number}\n */\nexport const keyCode = (evt) => {\n return evt.charCode ? evt.charCode :\n (evt.keyCode ? evt.keyCode : (evt.which ? evt.which : 0));\n};\n\n/**\n * Check code of pressed key is one of the expected key codes\n *\n * @param {Event} evt key event\n * @param {Array} keyCodes list of keycodes to check\n */\nexport const isKeyPressed = (evt, keyCodes = []) => {\n return keyCodes.indexOf(keyCode(evt)) !== -1;\n};\n\n/**\n * Bind passed function to passed scope\n * @param {Function} fn function\n * @param {Object} scope object instance\n */\nexport function bound(fn, scope) {\n let boundFnName = `${fn.name}_bound`;\n if (!scope[boundFnName]) {\n scope[boundFnName] = fn.bind(scope);\n }\n return scope[boundFnName];\n}\n","'use strict';\n\nvar buildNumberUnitMethods = require('../internal/buildNumberUnitMethods');\n\nbuildNumberUnitMethods();","'use strict';\n\nvar buildDateUnitMethods = require('../internal/buildDateUnitMethods');\n\nbuildDateUnitMethods();","/**\r\n * Export window or global object depending on the environment\r\n */\r\nexport const root = (typeof self === 'object' && self.self === self && self) ||\r\n (typeof global === 'object' && global.global === global && global) ||\r\n this;\r\n","import {remove as removeDiacritics} from 'diacritics';\r\n\r\n/**\r\n * String utilities\r\n */\r\n\r\n/**\r\n * Removes whitespace from both sides of passed string\r\n * @param {String} text\r\n * @return {String}\r\n */\r\nexport const trim = (text) => {\r\n if (text.trim) {\r\n return text.trim();\r\n }\r\n return text.replace(/^\\s*|\\s*$/g, '');\r\n};\r\n\r\n/**\r\n * Checks if passed string is empty\r\n * @param {String} text\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (text) => trim(text) === '';\r\n\r\n/**\r\n * Makes regex safe string by escaping special characters from passed string\r\n * @param {String} text\r\n * @return {String} escaped string\r\n */\r\nexport const rgxEsc = (text) => {\r\n let chars = /[-\\/\\\\^$*+?.()|[\\]{}]/g;\r\n let escMatch = '\\\\$&';\r\n return String(text).replace(chars, escMatch);\r\n};\r\n\r\n/**\r\n * Returns passed string as lowercase if caseSensitive flag set false. By\r\n * default it returns the string with no casing changes.\r\n * @param {String} text\r\n * @return {String} string\r\n */\r\nexport const matchCase = (text, caseSensitive = false) => {\r\n if (!caseSensitive) {\r\n return text.toLowerCase();\r\n }\r\n return text;\r\n};\r\n\r\n/**\r\n * Checks if passed data contains the searched term\r\n * @param {String} term Searched term\r\n * @param {String} data Data string\r\n * @param {Boolean} exactMatch Exact match\r\n * @param {Boolean} caseSensitive Case sensitive\r\n * @param {Boolean} ignoreDiacritics Ignore diacritics\r\n * @return {Boolean}\r\n */\r\nexport const contains = (term, data, exactMatch = false, caseSensitive = false,\r\n ignoreDiacritics = false) => {\r\n // Improved by Cedric Wartel (cwl) automatic exact match for selects and\r\n // special characters are now filtered\r\n let regexp;\r\n let modifier = caseSensitive ? 'g' : 'gi';\r\n if (ignoreDiacritics) {\r\n term = removeDiacritics(term);\r\n data = removeDiacritics(data);\r\n }\r\n if (exactMatch) {\r\n regexp = new RegExp('(^\\\\s*)' + rgxEsc(term) + '(\\\\s*$)',\r\n modifier);\r\n } else {\r\n regexp = new RegExp(rgxEsc(term), modifier);\r\n }\r\n return regexp.test(data);\r\n};\r\n","\r\nconst NOT_IMPLEMENTED = 'Not implemented.';\r\n\r\n/**\r\n * Base class defining the interface of a TableFilter feature\r\n */\r\nexport class Feature {\r\n /**\r\n * Creates an instance of Feature\r\n * @param {Object} tf TableFilter instance\r\n * @param {String} feature Feature name known by TableFilter\r\n */\r\n constructor(tf, feature) {\r\n /**\r\n * TableFilter instance\r\n * @type {TableFilter}\r\n */\r\n this.tf = tf;\r\n\r\n /**\r\n * Feature name\r\n * @type {String}\r\n */\r\n this.feature = feature;\r\n\r\n /**\r\n * TableFilter feature setting\r\n * @type {Boolean}\r\n */\r\n this.enabled = tf[feature];\r\n\r\n /**\r\n * TableFilter configuration\r\n * @type {Object}\r\n */\r\n this.config = tf.config();\r\n\r\n /**\r\n * TableFilter emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = tf.emitter;\r\n\r\n /**\r\n * Field indicating whether Feature is initialized\r\n * @type {Boolean}\r\n */\r\n this.initialized = false;\r\n\r\n /** Subscribe to destroy event */\r\n this.emitter.on(['destroy'], () => this.destroy());\r\n }\r\n\r\n /**\r\n * Initialize the feature\r\n */\r\n init() {\r\n throw new Error(NOT_IMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Reset the feature after being disabled\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n }\r\n\r\n /**\r\n * Destroy the feature\r\n */\r\n destroy() {\r\n throw new Error(NOT_IMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Enable the feature\r\n */\r\n enable() {\r\n this.enabled = true;\r\n }\r\n\r\n /**\r\n * Disable the feature\r\n */\r\n disable() {\r\n this.enabled = false;\r\n }\r\n\r\n /**\r\n * Indicate whether the feature is enabled or not\r\n * @returns {Boolean}\r\n */\r\n isEnabled() {\r\n return this.enabled === true;\r\n }\r\n}\r\n","'use strict';\n\nmodule.exports = {\n HOURS_INDEX: 3,\n DAY_INDEX: 4,\n WEEK_INDEX: 5,\n MONTH_INDEX: 6,\n YEAR_INDEX: 7\n};","'use strict';\n\nvar NATIVE_TYPES = require('./NATIVE_TYPES'),\n forEach = require('../internal/forEach'),\n isClass = require('../internal/isClass'),\n spaceSplit = require('../internal/spaceSplit'),\n isPlainObject = require('../internal/isPlainObject'),\n coreUtilityAliases = require('./coreUtilityAliases');\n\nvar classToString = coreUtilityAliases.classToString;\n\nvar isSerializable,\n isBoolean, isNumber, isString,\n isDate, isRegExp, isFunction,\n isArray, isSet, isMap, isError;\n\nfunction buildClassChecks() {\n\n var knownTypes = {};\n\n function addCoreTypes() {\n\n var names = spaceSplit(NATIVE_TYPES);\n\n isBoolean = buildPrimitiveClassCheck(names[0]);\n isNumber = buildPrimitiveClassCheck(names[1]);\n isString = buildPrimitiveClassCheck(names[2]);\n\n isDate = buildClassCheck(names[3]);\n isRegExp = buildClassCheck(names[4]);\n\n // Wanted to enhance performance here by using simply \"typeof\"\n // but Firefox has two major issues that make this impossible,\n // one fixed, the other not, so perform a full class check here.\n //\n // 1. Regexes can be typeof \"function\" in FF < 3\n // https://bugzilla.mozilla.org/show_bug.cgi?id=61911 (fixed)\n //\n // 2. HTMLEmbedElement and HTMLObjectElement are be typeof \"function\"\n // https://bugzilla.mozilla.org/show_bug.cgi?id=268945 (won't fix)\n isFunction = buildClassCheck(names[5]);\n\n\n isArray = Array.isArray || buildClassCheck(names[6]);\n isError = buildClassCheck(names[7]);\n\n isSet = buildClassCheck(names[8], typeof Set !== 'undefined' && Set);\n isMap = buildClassCheck(names[9], typeof Map !== 'undefined' && Map);\n\n // Add core types as known so that they can be checked by value below,\n // notably excluding Functions and adding Arguments and Error.\n addKnownType('Arguments');\n addKnownType(names[0]);\n addKnownType(names[1]);\n addKnownType(names[2]);\n addKnownType(names[3]);\n addKnownType(names[4]);\n addKnownType(names[6]);\n\n }\n\n function addArrayTypes() {\n var types = 'Int8 Uint8 Uint8Clamped Int16 Uint16 Int32 Uint32 Float32 Float64';\n forEach(spaceSplit(types), function(str) {\n addKnownType(str + 'Array');\n });\n }\n\n function addKnownType(className) {\n var str = '[object '+ className +']';\n knownTypes[str] = true;\n }\n\n function isKnownType(className) {\n return knownTypes[className];\n }\n\n function buildClassCheck(className, globalObject) {\n if (globalObject && isClass(new globalObject, 'Object')) {\n return getConstructorClassCheck(globalObject);\n } else {\n return getToStringClassCheck(className);\n }\n }\n\n function getConstructorClassCheck(obj) {\n var ctorStr = String(obj);\n return function(obj) {\n return String(obj.constructor) === ctorStr;\n };\n }\n\n function getToStringClassCheck(className) {\n return function(obj, str) {\n // perf: Returning up front on instanceof appears to be slower.\n return isClass(obj, className, str);\n };\n }\n\n function buildPrimitiveClassCheck(className) {\n var type = className.toLowerCase();\n return function(obj) {\n var t = typeof obj;\n return t === type || t === 'object' && isClass(obj, className);\n };\n }\n\n addCoreTypes();\n addArrayTypes();\n\n isSerializable = function(obj, className) {\n // Only known objects can be serialized. This notably excludes functions,\n // host objects, Symbols (which are matched by reference), and instances\n // of classes. The latter can arguably be matched by value, but\n // distinguishing between these and host objects -- which should never be\n // compared by value -- is very tricky so not dealing with it here.\n className = className || classToString(obj);\n return isKnownType(className) || isPlainObject(obj, className);\n };\n\n}\n\nbuildClassChecks();\n\nmodule.exports = {\n isSerializable: isSerializable,\n isBoolean: isBoolean,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isRegExp: isRegExp,\n isFunction: isFunction,\n isArray: isArray,\n isSet: isSet,\n isMap: isMap,\n isError: isError\n};","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'addLocale': function(code, set) {\n return localeManager.add(code, set);\n }\n\n});\n\nmodule.exports = Sugar.Date.addLocale;","'use strict';\n\nmodule.exports = {\n abs: Math.abs,\n pow: Math.pow,\n min: Math.min,\n max: Math.max,\n ceil: Math.ceil,\n floor: Math.floor,\n round: Math.round\n};","'use strict';\n\nvar LazyLoadedLocales = require('./LazyLoadedLocales'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n getNewLocale = require('../internal/getNewLocale');\n\nvar English, localeManager;\n\nfunction buildLocales() {\n\n function LocaleManager(loc) {\n this.locales = {};\n this.add(loc);\n }\n\n LocaleManager.prototype = {\n\n get: function(code, fallback) {\n var loc = this.locales[code];\n if (!loc && LazyLoadedLocales[code]) {\n loc = this.add(code, LazyLoadedLocales[code]);\n } else if (!loc && code) {\n loc = this.locales[code.slice(0, 2)];\n }\n return loc || fallback === false ? loc : this.current;\n },\n\n getAll: function() {\n return this.locales;\n },\n\n set: function(code) {\n var loc = this.get(code, false);\n if (!loc) {\n throw new TypeError('Invalid Locale: ' + code);\n }\n return this.current = loc;\n },\n\n add: function(code, def) {\n if (!def) {\n def = code;\n code = def.code;\n } else {\n def.code = code;\n }\n var loc = def.compiledFormats ? def : getNewLocale(def);\n this.locales[code] = loc;\n if (!this.current) {\n this.current = loc;\n }\n return loc;\n },\n\n remove: function(code) {\n if (this.current.code === code) {\n this.current = this.get('en');\n }\n return delete this.locales[code];\n }\n\n };\n\n // Sorry about this guys...\n English = getNewLocale(AmericanEnglishDefinition);\n localeManager = new LocaleManager(English);\n}\n\nbuildLocales();\n\nmodule.exports = {\n English: English,\n localeManager: localeManager\n};","'use strict';\n\nvar Sugar = require('sugar-core');\n\nmodule.exports = {\n hasOwn: Sugar.util.hasOwn,\n getOwn: Sugar.util.getOwn,\n setProperty: Sugar.util.setProperty,\n classToString: Sugar.util.classToString,\n defineProperty: Sugar.util.defineProperty,\n forEachProperty: Sugar.util.forEachProperty,\n mapNativeToChainable: Sugar.util.mapNativeToChainable\n};","'use strict';\n\nvar buildRelativeAliases = require('../internal/buildRelativeAliases');\n\nbuildRelativeAliases();","'use strict';\n\nvar cloneRangeMember = require('./cloneRangeMember');\n\nfunction Range(start, end) {\n this.start = cloneRangeMember(start);\n this.end = cloneRangeMember(end);\n}\n\nmodule.exports = Range;","import {Feature} from '../feature';\r\nimport {createElm, removeElm, elm, tag} from '../dom';\r\nimport {defaultsStr} from '../settings';\r\nimport {isUndef} from '../types';\r\n\r\nconst EVENTS = [\r\n 'initializing-feature',\r\n 'initializing-extension'\r\n];\r\n\r\n/** Left position in toolbar */\r\nexport const LEFT = 'left';\r\n/** Right position in toolbar */\r\nexport const RIGHT = 'right';\r\n/** Center position in toolbar */\r\nexport const CENTER = 'center';\r\n\r\n/**\r\n * Toolbar UI component\r\n * @export\r\n * @class Toolbar\r\n * @extends {Feature}\r\n */\r\nexport class Toolbar extends Feature {\r\n\r\n /**\r\n * Create an instance of Toolbar\r\n * @param {TableFilter} tf TableFilter instance\r\n * @memberof Toolbar\r\n */\r\n constructor(tf) {\r\n super(tf, 'toolbar');\r\n\r\n // Configuration object\r\n let f = this.config.toolbar || {};\r\n\r\n /**\r\n * Css class for toolbar's container DOM element\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.container_css_class, 'inf');\r\n\r\n /**\r\n * Css class for left-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.lContCssClass = defaultsStr(f.left_cont_css_class, 'ldiv');\r\n\r\n /**\r\n * Css class for right-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.rContCssClass = defaultsStr(f.right_cont_css_class, 'rdiv');\r\n\r\n /**\r\n * Css class for middle inner container DOM element\r\n * @type {String}\r\n */\r\n this.cContCssClass = defaultsStr(f.center_cont_css_class, 'mdiv');\r\n\r\n /**\r\n * Toolbar's custom container ID\r\n * @type {String}\r\n */\r\n this.tgtId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Toolbar's container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Left-side inner container DOM element (rows counter in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.lCont = null;\r\n\r\n /**\r\n * Right-side inner container DOM element (reset button,\r\n * page length selector in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.rCont = null;\r\n\r\n /**\r\n * Middle inner container DOM element (paging elements in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.cCont = null;\r\n\r\n /**\r\n * Container elements inside toolbar\r\n * @private\r\n */\r\n this.innerCont = {\r\n left: null,\r\n center: null,\r\n right: null\r\n };\r\n\r\n this.emitter.on(EVENTS,\r\n (feature, isExternal) => this.init(isExternal));\r\n\r\n /** @inherited */\r\n this.enabled = true;\r\n }\r\n\r\n /**\r\n * Initialize toolbar components\r\n * @param {Boolean} isExternal initialize only if component belongs\r\n * to toolbar\r\n */\r\n init(isExternal) {\r\n if (this.initialized || isExternal) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n // default container\r\n let container = createElm('div');\r\n container.className = this.contCssClass;\r\n\r\n // custom container\r\n if (this.tgtId) {\r\n elm(this.tgtId).appendChild(container);\r\n }\r\n // grid-layout\r\n else if (tf.gridLayout) {\r\n let gridLayout = tf.Mod.gridLayout;\r\n gridLayout.tblMainCont.appendChild(container);\r\n container.className = gridLayout.infDivCssClass;\r\n }\r\n // default location: just above the table\r\n else {\r\n let cont = createElm('caption');\r\n cont.appendChild(container);\r\n tf.dom().insertBefore(cont, tf.dom().firstChild);\r\n }\r\n this.cont = container;\r\n\r\n // left container\r\n this.lCont = this.createContainer(container, this.lContCssClass);\r\n\r\n // right container\r\n this.rCont = this.createContainer(container, this.rContCssClass);\r\n\r\n // middle container\r\n this.cCont = this.createContainer(container, this.cContCssClass);\r\n\r\n this.innerCont = {\r\n left: this.lCont,\r\n center: this.cCont,\r\n right: this.rCont\r\n };\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n // emit help initialisation only if undefined\r\n if (isUndef(tf.help)) {\r\n // explicitily enable help to initialise feature by\r\n // default, only if setting is undefined\r\n tf.Mod.help.enable();\r\n this.emitter.emit('init-help', tf);\r\n }\r\n }\r\n\r\n /**\r\n * Return the container based on requested position inside the toolbar\r\n * @param {String} [position=RIGHT] 3 possible positions: 'left', 'center',\r\n * 'right'\r\n * @param {DOMElement} el optional DOM element to be inserter in container\r\n * @returns {DOMElement}\r\n */\r\n container(position = RIGHT, el) {\r\n let cont = this.innerCont[position];\r\n if (el) {\r\n cont.appendChild(el);\r\n }\r\n return cont;\r\n }\r\n\r\n /**\r\n * Create DOM element inside passed container\r\n * @param {DOMElement} container\r\n * @param {String} css\r\n * @private\r\n */\r\n createContainer(container, css) {\r\n let div = createElm('div', ['class', css]);\r\n container.appendChild(div);\r\n return div;\r\n }\r\n\r\n /**\r\n * Destroy Toolbar instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n let tbl = tf.dom();\r\n let captions = tag(tbl, 'caption');\r\n [].forEach.call(captions, (el) => removeElm(el));\r\n\r\n /** @inherited */\r\n this.initialized = false;\r\n }\r\n}\r\n","/**\r\n * Array utilities\r\n */\r\n\r\nimport {matchCase} from './string';\r\n\r\n/**\r\n * Checks if given item can be found in the passed collection\r\n * @param {Array} arr collection\r\n * @param {Any} val item to search\r\n * @param {Boolean} caseSensitive respects case if true\r\n * @return {Boolean}\r\n */\r\nexport const has = (arr, val, caseSensitive) => {\r\n let sCase = Boolean(caseSensitive);\r\n for (var i = 0, l = arr.length; i < l; i++) {\r\n if (matchCase(arr[i].toString(), sCase) === val) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOnPrototype(ctor, methods) {\n var proto = ctor.prototype;\n forEachProperty(methods, function(val, key) {\n proto[key] = val;\n });\n}\n\nmodule.exports = defineOnPrototype;","import {isNumber} from './types';\r\n\r\n/**\r\n * Takes a string, removes all formatting/cruft and returns the raw float value\r\n * @param {String} Formatted number\r\n * @param {String} Decimal type '.' or ','\r\n * @return {Number} Unformatted number\r\n *\r\n * https://github.com/openexchangerates/accounting.js/blob/master/accounting.js\r\n */\r\nexport const parse = (value, decimal = '.') => {\r\n // Return the value as-is if it's already a number\r\n if (isNumber(value)) {\r\n return value;\r\n }\r\n\r\n // Build regex to strip out everything except digits, decimal point and\r\n // minus sign\r\n let regex = new RegExp('[^0-9-' + decimal + ']', ['g']);\r\n let unformatted = parseFloat(\r\n ('' + value)\r\n // replace bracketed values with negatives\r\n .replace(/\\((.*)\\)/, '-$1')\r\n // strip out any cruft\r\n .replace(regex, '')\r\n // make sure decimal point is standard\r\n .replace(decimal, '.')\r\n );\r\n\r\n // This will fail silently\r\n return !isNaN(unformatted) ? unformatted : 0;\r\n};\r\n","'use strict';\n\nvar _utc = require('../var/_utc');\n\nfunction callDateGet(d, method) {\n return d['get' + (_utc(d) ? 'UTC' : '') + method]();\n}\n\nmodule.exports = callDateGet;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getWeekday(d) {\n return callDateGet(d, 'Day');\n}\n\nmodule.exports = getWeekday;","'use strict';\n\nvar buildDateRangeUnits = require('../internal/buildDateRangeUnits');\n\nbuildDateRangeUnits();","'use strict';\n\nvar Sugar = require('sugar-core');\n\nmodule.exports = {\n sugarObject: Sugar.Object,\n sugarArray: Sugar.Array,\n sugarDate: Sugar.Date,\n sugarString: Sugar.String,\n sugarNumber: Sugar.Number,\n sugarFunction: Sugar.Function,\n sugarRegExp: Sugar.RegExp\n};","'use strict';\n\nvar setDate = require('./setDate'),\n getDate = require('./getDate'),\n getWeekday = require('./getWeekday'),\n classChecks = require('../../common/var/classChecks'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar isNumber = classChecks.isNumber,\n abs = mathAliases.abs;\n\nfunction setWeekday(d, dow, dir) {\n if (!isNumber(dow)) return;\n var currentWeekday = getWeekday(d);\n if (dir) {\n // Allow a \"direction\" parameter to determine whether a weekday can\n // be set beyond the current weekday in either direction.\n var ndir = dir > 0 ? 1 : -1;\n var offset = dow % 7 - currentWeekday;\n if (offset && offset / abs(offset) !== ndir) {\n dow += 7 * ndir;\n }\n }\n setDate(d, getDate(d) + dow - currentWeekday);\n return d.getTime();\n}\n\nmodule.exports = setWeekday;","'use strict';\n\nvar mathAliases = require('./mathAliases');\n\nvar ceil = mathAliases.ceil,\n floor = mathAliases.floor;\n\nvar trunc = Math.trunc || function(n) {\n if (n === 0 || !isFinite(n)) return n;\n return n < 0 ? ceil(n) : floor(n);\n};\n\nmodule.exports = trunc;","'use strict';\n\nvar privatePropertyAccessor = require('../internal/privatePropertyAccessor');\n\nmodule.exports = privatePropertyAccessor('utc');","'use strict';\n\nvar getExtendedDate = require('./getExtendedDate');\n\nfunction createDate(d, options, forceClone) {\n return getExtendedDate(null, d, options, forceClone).date;\n}\n\nmodule.exports = createDate;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getMonth(d) {\n return callDateGet(d, 'Month');\n}\n\nmodule.exports = getMonth;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getYear(d) {\n return callDateGet(d, 'FullYear');\n}\n\nmodule.exports = getYear;","'use strict';\n\nvar getDaysInMonth = require('../internal/getDaysInMonth');\n\nvar DateUnits = [\n {\n name: 'millisecond',\n method: 'Milliseconds',\n multiplier: 1,\n start: 0,\n end: 999\n },\n {\n name: 'second',\n method: 'Seconds',\n multiplier: 1000,\n start: 0,\n end: 59\n },\n {\n name: 'minute',\n method: 'Minutes',\n multiplier: 60 * 1000,\n start: 0,\n end: 59\n },\n {\n name: 'hour',\n method: 'Hours',\n multiplier: 60 * 60 * 1000,\n start: 0,\n end: 23\n },\n {\n name: 'day',\n alias: 'date',\n method: 'Date',\n ambiguous: true,\n multiplier: 24 * 60 * 60 * 1000,\n start: 1,\n end: function(d) {\n return getDaysInMonth(d);\n }\n },\n {\n name: 'week',\n method: 'ISOWeek',\n ambiguous: true,\n multiplier: 7 * 24 * 60 * 60 * 1000\n },\n {\n name: 'month',\n method: 'Month',\n ambiguous: true,\n multiplier: 30.4375 * 24 * 60 * 60 * 1000,\n start: 0,\n end: 11\n },\n {\n name: 'year',\n method: 'FullYear',\n ambiguous: true,\n multiplier: 365.25 * 24 * 60 * 60 * 1000,\n start: 0\n }\n];\n\nmodule.exports = DateUnits;","'use strict';\n\nfunction isDefined(o) {\n return o !== undefined;\n}\n\nmodule.exports = isDefined;","'use strict';\n\nvar iterateOverSparseArray = require('./iterateOverSparseArray');\n\nfunction forEach(arr, fn) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (!(i in arr)) {\n return iterateOverSparseArray(arr, fn, i);\n }\n fn(arr[i], i);\n }\n}\n\nmodule.exports = forEach;","import {parse as parseNb} from './number';\r\nimport {Date as SugarDate} from 'sugar-date';\r\n\r\n/** Sorting utilities */\r\n\r\n/**\r\n * Case insensitive compare function for passed strings\r\n * @param {String} First string\r\n * @param {String} Second string\r\n * @return {Number} -1 if first string lower than second one\r\n * 0 if first string same order as second one\r\n * 1 if first string greater than second one\r\n */\r\nexport const ignoreCase = (a, b) => {\r\n let x = a.toLowerCase();\r\n let y = b.toLowerCase();\r\n return x < y ? -1 : (x > y ? 1 : 0);\r\n};\r\n\r\n/**\r\n * Compare function for sorting passed numbers in ascending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortAsc = (a, b) => (a - b);\r\n\r\n/**\r\n * Compare function for sorting passed numbers in descending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortDesc = (a, b) => (b - a);\r\n\r\n/**\r\n * Compare function for sorting passed dates in ascending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortAsc = (date1, date2) => date1.getTime() - date2.getTime();\r\n\r\n/**\r\n * Compare function for sorting passed dates in descending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortDesc = (date1, date2) => date2.getTime() - date1.getTime();\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted numbers in desired\r\n * fashion according to supplied compare function and decimal separator\r\n * @param {Function} Compare function\r\n * @param {String} [decimal=','] Decimal separator\r\n * @return {Function} Compare function receiving parsed numeric arguments\r\n */\r\nexport const sortNumberStr = (compareFn, decimal = ',') => {\r\n return (numStr1, numStr2) => {\r\n let num1 = parseNb(numStr1, decimal);\r\n let num2 = parseNb(numStr2, decimal);\r\n return compareFn(num1, num2);\r\n };\r\n};\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted dates in desired\r\n * fashion according to supplied compare function and locale\r\n * @param {Function} Compare function\r\n * @param {String} [locale='en-us'] Locale code\r\n * @return {Function} Compare function receiving parsed date arguments\r\n */\r\nexport const sortDateStr = (compareFn, locale = 'en-us') => {\r\n return (dateStr1, dateStr2) => {\r\n let date1 = SugarDate.create(dateStr1, locale);\r\n let date2 = SugarDate.create(dateStr2, locale);\r\n return compareFn(date1, date2);\r\n };\r\n};\r\n","'use strict';\n\nvar _utc = require('../../common/var/_utc');\n\nfunction cloneDate(d) {\n // Rhino environments have a bug where new Date(d) truncates\n // milliseconds so need to call getTime() here.\n var clone = new Date(d.getTime());\n _utc(clone, !!_utc(d));\n return clone;\n}\n\nmodule.exports = cloneDate;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getDate(d) {\n return callDateGet(d, 'Date');\n}\n\nmodule.exports = getDate;","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setDate(d, val) {\n callDateSet(d, 'Date', val);\n}\n\nmodule.exports = setDate;","'use strict';\n\nvar _utc = require('../var/_utc'),\n callDateGet = require('./callDateGet');\n\nfunction callDateSet(d, method, value, safe) {\n // \"Safe\" denotes not setting the date if the value is the same as what is\n // currently set. In theory this should be a noop, however it will cause\n // timezone shifts when in the middle of a DST fallback. This is unavoidable\n // as the notation itself is ambiguous (i.e. there are two \"1:00ams\" on\n // November 1st, 2015 in northern hemisphere timezones that follow DST),\n // however when advancing or rewinding dates this can throw off calculations\n // so avoiding this unintentional shifting on an opt-in basis.\n if (safe && value === callDateGet(d, method, value)) {\n return;\n }\n d['set' + (_utc(d) ? 'UTC' : '') + method](value);\n}\n\nmodule.exports = callDateSet;","'use strict';\n\nvar isDefined = require('../../common/internal/isDefined'),\n classChecks = require('../../common/var/classChecks'),\n callDateSet = require('../../common/internal/callDateSet'),\n walkUnitDown = require('./walkUnitDown');\n\nvar isFunction = classChecks.isFunction;\n\nfunction setUnitAndLowerToEdge(d, startIndex, stopIndex, end) {\n walkUnitDown(startIndex, function(unit, i) {\n var val = end ? unit.end : unit.start;\n if (isFunction(val)) {\n val = val(d);\n }\n callDateSet(d, unit.method, val);\n return !isDefined(stopIndex) || i > stopIndex;\n });\n return d;\n}\n\nmodule.exports = setUnitAndLowerToEdge;","'use strict';\n\nvar updateDate = require('./updateDate');\n\nfunction advanceDate(d, unit, num, reset) {\n var set = {};\n set[unit] = num;\n return updateDate(d, set, reset, 1);\n}\n\nmodule.exports = advanceDate;","'use strict';\n\nvar _dateOptions = require('../var/_dateOptions');\n\nfunction getNewDate() {\n return _dateOptions('newDateInternal')();\n}\n\nmodule.exports = getNewDate;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes');\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getLowerUnitIndex(index) {\n if (index === MONTH_INDEX) {\n return DAY_INDEX;\n } else if (index === WEEK_INDEX) {\n return HOURS_INDEX;\n }\n return index - 1;\n}\n\nmodule.exports = getLowerUnitIndex;","'use strict';\n\nfunction isUndefined(o) {\n return o === undefined;\n}\n\nmodule.exports = isUndefined;","'use strict';\n\nrequire('./date');\nrequire('./range');\n\nmodule.exports = require('sugar-core');","'use strict';\n\nvar isValidRangeMember = require('./isValidRangeMember');\n\nfunction rangeIsValid(range) {\n return isValidRangeMember(range.start) &&\n isValidRangeMember(range.end) &&\n typeof range.start === typeof range.end;\n}\n\nmodule.exports = rangeIsValid;","'use strict';\n\nfunction dateIsValid(d) {\n return !isNaN(d.getTime());\n}\n\nmodule.exports = dateIsValid;","'use strict';\n\nvar methodDefineAliases = require('../var/methodDefineAliases'),\n collectSimilarMethods = require('./collectSimilarMethods');\n\nvar defineInstance = methodDefineAliases.defineInstance;\n\nfunction defineInstanceSimilar(sugarNamespace, set, fn, flags) {\n defineInstance(sugarNamespace, collectSimilarMethods(set, fn), flags);\n}\n\nmodule.exports = defineInstanceSimilar;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n localeManager = LocaleHelpers.localeManager;\n\nfunction moveToBeginningOfUnit(d, unitIndex, localeCode) {\n if (unitIndex === WEEK_INDEX) {\n moveToBeginningOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek());\n }\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex));\n}\n\nmodule.exports = moveToBeginningOfUnit;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n moveToEndOfWeek = require('./moveToEndOfWeek'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n localeManager = LocaleHelpers.localeManager;\n\nfunction moveToEndOfUnit(d, unitIndex, localeCode, stopIndex) {\n if (unitIndex === WEEK_INDEX) {\n moveToEndOfWeek(d, localeManager.get(localeCode).getFirstDayOfWeek());\n }\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex), stopIndex, true);\n}\n\nmodule.exports = moveToEndOfUnit;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n isDefined = require('../../common/internal/isDefined'),\n getDateParam = require('./getDateParam'),\n iterateOverDateUnits = require('./iterateOverDateUnits');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction iterateOverDateParams(params, fn, startIndex, endIndex) {\n\n function run(name, unit, i) {\n var val = getDateParam(params, name);\n if (isDefined(val)) {\n fn(name, val, unit, i);\n }\n }\n\n iterateOverDateUnits(function (unit, i) {\n var result = run(unit.name, unit, i);\n if (result !== false && i === DAY_INDEX) {\n // Check for \"weekday\", which has a distinct meaning\n // in the context of setting a date, but has the same\n // meaning as \"day\" as a unit of time.\n result = run('weekday', unit, i);\n }\n return result;\n }, startIndex, endIndex);\n\n}\n\nmodule.exports = iterateOverDateParams;","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n trunc = require('../../common/var/trunc'),\n setDate = require('./setDate'),\n getDate = require('./getDate'),\n getMonth = require('./getMonth'),\n getNewDate = require('./getNewDate'),\n setWeekday = require('./setWeekday'),\n mathAliases = require('../../common/var/mathAliases'),\n callDateGet = require('../../common/internal/callDateGet'),\n classChecks = require('../../common/var/classChecks'),\n resetLowerUnits = require('./resetLowerUnits'),\n getLowerUnitIndex = require('./getLowerUnitIndex'),\n getHigherUnitIndex = require('./getHigherUnitIndex'),\n callDateSetWithWeek = require('./callDateSetWithWeek'),\n iterateOverDateParams = require('./iterateOverDateParams');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX,\n round = mathAliases.round,\n isNumber = classChecks.isNumber;\n\nfunction updateDate(d, params, reset, advance, prefer, weekdayDir) {\n var upperUnitIndex;\n\n function setUpperUnit(unitName, unitIndex) {\n if (prefer && !upperUnitIndex) {\n if (unitName === 'weekday') {\n upperUnitIndex = WEEK_INDEX;\n } else {\n upperUnitIndex = getHigherUnitIndex(unitIndex);\n }\n }\n }\n\n function setSpecificity(unitIndex) {\n // Other functions may preemptively set the specificity before arriving\n // here so concede to them if they have already set more specific units.\n if (unitIndex > params.specificity) {\n return;\n }\n params.specificity = unitIndex;\n }\n\n function canDisambiguate() {\n if (!upperUnitIndex || upperUnitIndex > YEAR_INDEX) {\n return;\n }\n switch(prefer) {\n case -1: return d > getNewDate();\n case 1: return d < getNewDate();\n }\n }\n\n function disambiguateHigherUnit() {\n var unit = DateUnits[upperUnitIndex];\n advance = prefer;\n setUnit(unit.name, 1, unit, upperUnitIndex);\n }\n\n function handleFraction(unit, unitIndex, fraction) {\n if (unitIndex) {\n var lowerUnit = DateUnits[getLowerUnitIndex(unitIndex)];\n var val = round(unit.multiplier / lowerUnit.multiplier * fraction);\n params[lowerUnit.name] = val;\n }\n }\n\n function monthHasShifted(d, targetMonth) {\n if (targetMonth < 0) {\n targetMonth = targetMonth % 12 + 12;\n }\n return targetMonth % 12 !== getMonth(d);\n }\n\n function setUnit(unitName, value, unit, unitIndex) {\n var method = unit.method, checkMonth, fraction;\n\n setUpperUnit(unitName, unitIndex);\n setSpecificity(unitIndex);\n\n fraction = value % 1;\n if (fraction) {\n handleFraction(unit, unitIndex, fraction);\n value = trunc(value);\n }\n\n if (unitName === 'weekday') {\n if (!advance) {\n // Weekdays are always considered absolute units so simply set them\n // here even if it is an \"advance\" operation. This is to help avoid\n // ambiguous meanings in \"advance\" as well as to neatly allow formats\n // like \"Wednesday of next week\" without more complex logic.\n setWeekday(d, value, weekdayDir);\n }\n return;\n }\n checkMonth = unitIndex === MONTH_INDEX && getDate(d) > 28;\n\n // If we are advancing or rewinding, then we need we need to set the\n // absolute time if the unit is \"hours\" or less. This is due to the fact\n // that setting by method is ambiguous during DST shifts. For example,\n // 1:00am on November 1st 2015 occurs twice in North American timezones\n // with DST, the second time being after the clocks are rolled back at\n // 2:00am. When springing forward this is automatically handled as there\n // is no 2:00am so the date automatically jumps to 3:00am. However, when\n // rolling back, setHours(2) will always choose the first \"2am\" even if\n // the date is currently set to the second, causing unintended jumps.\n // This ambiguity is unavoidable when setting dates as the notation is\n // ambiguous. However when advancing, we clearly want the resulting date\n // to be an acutal hour ahead, which can only be accomplished by setting\n // the absolute time. Conversely, any unit higher than \"hours\" MUST use\n // the internal set methods, as they are ambiguous as absolute units of\n // time. Years may be 365 or 366 days depending on leap years, months are\n // all over the place, and even days may be 23-25 hours depending on DST\n // shifts. Finally, note that the kind of jumping described above will\n // occur when calling ANY \"set\" method on the date and will occur even if\n // the value being set is identical to the one currently set (i.e.\n // setHours(2) on a date at 2am may not be a noop). This is precarious,\n // so avoiding this situation in callDateSet by checking up front that\n // the value is not the same before setting.\n if (advance && !unit.ambiguous) {\n d.setTime(d.getTime() + (value * advance * unit.multiplier));\n return;\n } else if (advance) {\n if (unitIndex === WEEK_INDEX) {\n value *= 7;\n method = DateUnits[DAY_INDEX].method;\n }\n value = (value * advance) + callDateGet(d, method);\n }\n callDateSetWithWeek(d, method, value, advance);\n if (checkMonth && monthHasShifted(d, value)) {\n // As we are setting the units in reverse order, there is a chance that\n // our date may accidentally traverse into a new month, such as setting\n // { month: 1, date 15 } on January 31st. Check for this here and reset\n // the date to the last day of the previous month if this has happened.\n setDate(d, 0);\n }\n }\n\n if (isNumber(params) && advance) {\n // If param is a number and advancing, the number is in milliseconds.\n params = { millisecond: params };\n } else if (isNumber(params)) {\n // Otherwise just set the timestamp and return.\n d.setTime(params);\n return d;\n }\n\n iterateOverDateParams(params, setUnit);\n\n if (reset && params.specificity) {\n resetLowerUnits(d, params.specificity);\n }\n\n // If past or future is preferred, then the process of \"disambiguation\" will\n // ensure that an ambiguous time/date (\"4pm\", \"thursday\", \"June\", etc.) will\n // be in the past or future. Weeks are only considered ambiguous if there is\n // a weekday, i.e. \"thursday\" is an ambiguous week, but \"the 4th\" is an\n // ambiguous month.\n if (canDisambiguate()) {\n disambiguateHigherUnit();\n }\n return d;\n}\n\nmodule.exports = updateDate;","'use strict';\n\nfunction tzOffset(d) {\n return d.getTimezoneOffset();\n}\n\nmodule.exports = tzOffset;","'use strict';\n\nfunction spaceSplit(str) {\n return str.split(' ');\n}\n\nmodule.exports = spaceSplit;","'use strict';\n\nmodule.exports = {\n HALF_WIDTH_ZERO: 0x30,\n FULL_WIDTH_ZERO: 0xff10,\n HALF_WIDTH_PERIOD: '.',\n FULL_WIDTH_PERIOD: '.',\n HALF_WIDTH_COMMA: ',',\n OPEN_BRACE: '{',\n CLOSE_BRACE: '}'\n};","'use strict';\n\nvar simpleMerge = require('./simpleMerge');\n\nfunction simpleClone(obj) {\n return simpleMerge({}, obj);\n}\n\nmodule.exports = simpleClone;","import {Feature} from '../feature';\r\nimport {\r\n ignoreCase, numSortAsc, numSortDesc,\r\n dateSortAsc, sortNumberStr, sortDateStr\r\n} from '../sort';\r\nimport {isArray, isObj, isEmpty} from '../types';\r\nimport {NUMBER, FORMATTED_NUMBER, DATE} from '../const';\r\n\r\n/**\r\n * Base class for Dropdown and CheckList UI components\r\n * @export\r\n * @class BaseDropdown\r\n * @extends {Feature}\r\n */\r\nexport class BaseDropdown extends Feature {\r\n\r\n /**\r\n * Creates an instance of BaseDropdown\r\n * @param {TableFilter} tf\r\n */\r\n constructor(tf) {\r\n super(tf, 'baseDropdown');\r\n\r\n let f = this.config;\r\n\r\n /**\r\n * Filter options custom sorter on a column basis\r\n * @type {Object}\r\n */\r\n this.customSorter = isObj(f.filter_options_sorter) &&\r\n isArray(f.filter_options_sorter.col) &&\r\n isArray(f.filter_options_sorter.comparer) ?\r\n f.filter_options_sorter :\r\n null;\r\n\r\n // TODO: move here all properties shared by Dropdown CheckList\r\n\r\n /**\r\n * Has custom options\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isCustom = false;\r\n\r\n /**\r\n * List of options values\r\n * @type {Array}\r\n * @private\r\n */\r\n this.opts = [];\r\n\r\n /**\r\n * List of options texts for custom values\r\n * @type {Array}\r\n * @private\r\n */\r\n this.optsTxt = [];\r\n\r\n /**\r\n * List of options to be excluded from the checklist filter\r\n * @type {Array}\r\n * @private\r\n */\r\n this.excludedOpts = [];\r\n }\r\n\r\n /**\r\n * Sort passed options based on the type of the specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [options=[]] Collection of values\r\n * @return {Array} Sorted values\r\n * @private\r\n */\r\n sortOptions(colIndex, options = []) {\r\n let tf = this.tf;\r\n\r\n if (tf.isCustomOptions(colIndex) || !tf.sortSlc ||\r\n (isArray(tf.sortSlc) && tf.sortSlc.indexOf(colIndex) === -1)) {\r\n return options;\r\n }\r\n\r\n let { caseSensitive, sortNumDesc } = tf;\r\n let compareFn;\r\n\r\n if (this.customSorter &&\r\n this.customSorter.col.indexOf(colIndex) !== -1) {\r\n var idx = this.customSorter.col.indexOf(colIndex);\r\n compareFn = this.customSorter.comparer[idx];\r\n }\r\n else if (tf.hasType(colIndex, [NUMBER, FORMATTED_NUMBER])) {\r\n let decimal = tf.getDecimal(colIndex);\r\n let comparer = numSortAsc;\r\n if (sortNumDesc === true || sortNumDesc.indexOf(colIndex) !== -1) {\r\n comparer = numSortDesc;\r\n }\r\n compareFn = sortNumberStr(comparer, decimal);\r\n }\r\n else if (tf.hasType(colIndex, [DATE])) {\r\n let locale = tf.feature('dateType').getLocale(colIndex);\r\n let comparer = dateSortAsc;\r\n compareFn = sortDateStr(comparer, locale);\r\n } else { // string\r\n compareFn = caseSensitive ? undefined : ignoreCase;\r\n }\r\n\r\n return options.sort(compareFn);\r\n }\r\n\r\n /**\r\n * Regenerate filters of specified columns and maintain selection if any\r\n * @param {Array} colIndexes Collection of column indexes\r\n * @private\r\n */\r\n refreshFilters(colIndexes) {\r\n colIndexes.forEach((colIdx) => {\r\n let values = this.getValues(colIdx);\r\n this.build(colIdx, this.tf.linkedFilters);\r\n this.selectOptions(colIdx, values);\r\n });\r\n }\r\n\r\n /**\r\n * Check passed row contains a valid linked value\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} activeFilterIdx Current active filter index\r\n * @returns {Boolean}\r\n */\r\n isValidLinkedValue(rowIdx, activeFilterIdx) {\r\n let tf = this.tf;\r\n\r\n if (tf.disableExcludedOptions) {\r\n return true;\r\n }\r\n\r\n if (tf.paging) {\r\n if (!isEmpty(activeFilterIdx) && tf.isRowValid(rowIdx)) {\r\n return true;\r\n }\r\n } else {\r\n if (tf.isRowDisplayed(rowIdx)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import {root} from './root';\r\n\r\n/**\r\n * Cookie utilities\r\n */\r\n\r\nconst doc = root.document;\r\n\r\nexport default {\r\n\r\n /**\r\n * Write a cookie\r\n * @param {String} name Name of the cookie\r\n * @param {String} value Value of the cookie\r\n * @param {Number} hours Cookie duration in hours\r\n */\r\n write(name, value, hours) {\r\n let expire = '';\r\n if (hours) {\r\n expire = new Date((new Date()).getTime() + hours * 3600000);\r\n expire = '; expires=' + expire.toGMTString();\r\n }\r\n doc.cookie = name + '=' + escape(value) + expire;\r\n },\r\n\r\n /**\r\n * Read a cookie\r\n * @param {String} name Name of the cookie\r\n * @returns {String} Value of the cookie\r\n */\r\n read(name) {\r\n let cookieValue = '',\r\n search = name + '=';\r\n if (doc.cookie.length > 0) {\r\n let cookie = doc.cookie,\r\n offset = cookie.indexOf(search);\r\n if (offset !== -1) {\r\n offset += search.length;\r\n let end = cookie.indexOf(';', offset);\r\n if (end === -1) {\r\n end = cookie.length;\r\n }\r\n cookieValue = unescape(cookie.substring(offset, end));\r\n }\r\n }\r\n return cookieValue;\r\n },\r\n\r\n /**\r\n * Remove a cookie\r\n * @param {String} name Name of the cookie\r\n */\r\n remove(name) {\r\n this.write(name, '', -1);\r\n }\r\n\r\n};\r\n","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n rangeIsValid = require('./rangeIsValid'),\n incrementDate = require('./incrementDate'),\n incrementNumber = require('./incrementNumber'),\n incrementString = require('./incrementString'),\n getGreaterPrecision = require('./getGreaterPrecision'),\n getDateIncrementObject = require('./getDateIncrementObject');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString,\n isDate = classChecks.isDate,\n isFunction = classChecks.isFunction;\n\nfunction rangeEvery(range, step, countOnly, fn) {\n var increment,\n precision,\n dio,\n unit,\n start = range.start,\n end = range.end,\n inverse = end < start,\n current = start,\n index = 0,\n result = [];\n\n if (!rangeIsValid(range)) {\n return countOnly ? NaN : [];\n }\n if (isFunction(step)) {\n fn = step;\n step = null;\n }\n step = step || 1;\n if (isNumber(start)) {\n precision = getGreaterPrecision(start, step);\n increment = function() {\n return incrementNumber(current, step, precision);\n };\n } else if (isString(start)) {\n increment = function() {\n return incrementString(current, step);\n };\n } else if (isDate(start)) {\n dio = getDateIncrementObject(step);\n step = dio[0];\n unit = dio[1];\n increment = function() {\n return incrementDate(current, step, unit);\n };\n }\n // Avoiding infinite loops\n if (inverse && step > 0) {\n step *= -1;\n }\n while(inverse ? current >= end : current <= end) {\n if (!countOnly) {\n result.push(current);\n }\n if (fn) {\n fn(current, index, range);\n }\n current = increment();\n index++;\n }\n return countOnly ? index - 1 : result;\n}\n\nmodule.exports = rangeEvery;","'use strict';\n\nmodule.exports = 'year|month|week|day|hour|minute|second|millisecond';","'use strict';\n\nvar ISODefaults = require('../var/ISODefaults'),\n setDate = require('./setDate'),\n getDate = require('./getDate'),\n cloneDate = require('./cloneDate'),\n isUndefined = require('../../common/internal/isUndefined'),\n moveToEndOfWeek = require('./moveToEndOfWeek'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek'),\n moveToFirstDayOfWeekYear = require('./moveToFirstDayOfWeekYear');\n\nvar ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR;\n\nfunction getWeekNumber(d, allowPrevious, firstDayOfWeek, firstDayOfWeekYear) {\n var isoWeek, n = 0;\n if (isUndefined(firstDayOfWeek)) {\n firstDayOfWeek = ISO_FIRST_DAY_OF_WEEK;\n }\n if (isUndefined(firstDayOfWeekYear)) {\n firstDayOfWeekYear = ISO_FIRST_DAY_OF_WEEK_YEAR;\n }\n // Moving to the end of the week allows for forward year traversal, ie\n // Dec 29 2014 is actually week 01 of 2015.\n isoWeek = moveToEndOfWeek(cloneDate(d), firstDayOfWeek);\n moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear);\n if (allowPrevious && d < isoWeek) {\n // If the date is still before the start of the year, then it should be\n // the last week of the previous year, ie Jan 1 2016 is actually week 53\n // of 2015, so move to the beginning of the week to traverse the year.\n isoWeek = moveToBeginningOfWeek(cloneDate(d), firstDayOfWeek);\n moveToFirstDayOfWeekYear(isoWeek, firstDayOfWeek, firstDayOfWeekYear);\n }\n while (isoWeek <= d) {\n // Doing a very simple walk to get the week number.\n setDate(isoWeek, getDate(isoWeek) + 7);\n n++;\n }\n return n;\n}\n\nmodule.exports = getWeekNumber;","'use strict';\n\nvar mathAliases = require('../var/mathAliases'),\n repeatString = require('./repeatString');\n\nvar abs = mathAliases.abs;\n\nfunction padNumber(num, place, sign, base, replacement) {\n var str = abs(num).toString(base || 10);\n str = repeatString(replacement || '0', place - str.replace(/\\.\\d+/, '').length) + str;\n if (sign || num < 0) {\n str = (num < 0 ? '-' : '+') + str;\n }\n return str;\n}\n\nmodule.exports = padNumber;","'use strict';\n\nvar trunc = require('../../common/var/trunc'),\n cloneDate = require('./cloneDate'),\n advanceDate = require('./advanceDate');\n\nfunction getTimeDistanceForUnit(d1, d2, unit) {\n var fwd = d2 > d1, num, tmp;\n if (!fwd) {\n tmp = d2;\n d2 = d1;\n d1 = tmp;\n }\n num = d2 - d1;\n if (unit.multiplier > 1) {\n num = trunc(num / unit.multiplier);\n }\n // For higher order with potential ambiguity, use the numeric calculation\n // as a starting point, then iterate until we pass the target date.\n if (unit.ambiguous) {\n d1 = cloneDate(d1);\n if (num) {\n advanceDate(d1, unit.name, num);\n }\n while (d1 < d2) {\n advanceDate(d1, unit.name, 1);\n if (d1 > d2) {\n break;\n }\n num += 1;\n }\n }\n return fwd ? -num : num;\n}\n\nmodule.exports = getTimeDistanceForUnit;","'use strict';\n\nfunction simpleCapitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nmodule.exports = simpleCapitalize;","'use strict';\n\nvar setWeekday = require('./setWeekday'),\n getWeekday = require('./getWeekday'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar floor = mathAliases.floor;\n\nfunction moveToBeginningOfWeek(d, firstDayOfWeek) {\n setWeekday(d, floor((getWeekday(d) - firstDayOfWeek) / 7) * 7 + firstDayOfWeek);\n return d;\n}\n\nmodule.exports = moveToBeginningOfWeek;","'use strict';\n\nvar DATE_OPTIONS = require('./DATE_OPTIONS'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineOptionsAccessor = require('../../common/internal/defineOptionsAccessor');\n\nvar sugarDate = namespaceAliases.sugarDate;\n\nmodule.exports = defineOptionsAccessor(sugarDate, DATE_OPTIONS);","'use strict';\n\nvar MINUTES = require('../var/MINUTES'),\n ParsingTokens = require('../var/ParsingTokens'),\n LocaleHelpers = require('../var/LocaleHelpers'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n _utc = require('../../common/var/_utc'),\n trunc = require('../../common/var/trunc'),\n forEach = require('../../common/internal/forEach'),\n tzOffset = require('./tzOffset'),\n resetTime = require('./resetTime'),\n isDefined = require('../../common/internal/isDefined'),\n setWeekday = require('./setWeekday'),\n updateDate = require('./updateDate'),\n getNewDate = require('./getNewDate'),\n isUndefined = require('../../common/internal/isUndefined'),\n classChecks = require('../../common/var/classChecks'),\n advanceDate = require('./advanceDate'),\n simpleClone = require('../../common/internal/simpleClone'),\n isObjectType = require('../../common/internal/isObjectType'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n deleteDateParam = require('./deleteDateParam'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n getParsingTokenValue = require('./getParsingTokenValue'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit'),\n iterateOverDateParams = require('./iterateOverDateParams'),\n getYearFromAbbreviation = require('./getYearFromAbbreviation'),\n iterateOverHigherDateParams = require('./iterateOverHigherDateParams');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString,\n isDate = classChecks.isDate,\n hasOwn = coreUtilityAliases.hasOwn,\n getOwn = coreUtilityAliases.getOwn,\n English = LocaleHelpers.English,\n localeManager = LocaleHelpers.localeManager,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction getExtendedDate(contextDate, d, opt, forceClone) {\n\n var date, set, loc, options, afterCallbacks, relative, weekdayDir;\n\n afterCallbacks = [];\n options = getDateOptions(opt);\n\n function getDateOptions(opt) {\n var options = isString(opt) ? { locale: opt } : opt || {};\n options.prefer = +!!getOwn(options, 'future') - +!!getOwn(options, 'past');\n return options;\n }\n\n function getFormatParams(match, dif) {\n var set = getOwn(options, 'params') || {};\n forEach(dif.to, function(field, i) {\n var str = match[i + 1], token, val;\n if (!str) return;\n if (field === 'yy' || field === 'y') {\n field = 'year';\n val = getYearFromAbbreviation(str, date, getOwn(options, 'prefer'));\n } else if (token = getOwn(ParsingTokens, field)) {\n field = token.param || field;\n val = getParsingTokenValue(token, str);\n } else {\n val = loc.getTokenValue(field, str);\n }\n set[field] = val;\n });\n return set;\n }\n\n // Clone date will set the utc flag, but it will\n // be overriden later, so set option flags instead.\n function cloneDateByFlag(d, clone) {\n if (_utc(d) && !isDefined(getOwn(options, 'fromUTC'))) {\n options.fromUTC = true;\n }\n if (_utc(d) && !isDefined(getOwn(options, 'setUTC'))) {\n options.setUTC = true;\n }\n if (clone) {\n d = new Date(d.getTime());\n }\n return d;\n }\n\n function afterDateSet(fn) {\n afterCallbacks.push(fn);\n }\n\n function fireCallbacks() {\n forEach(afterCallbacks, function(fn) {\n fn.call();\n });\n }\n\n function parseStringDate(str) {\n\n str = str.toLowerCase();\n\n // The act of getting the locale will initialize\n // if it is missing and add the required formats.\n loc = localeManager.get(getOwn(options, 'locale'));\n\n for (var i = 0, dif, match; dif = loc.compiledFormats[i]; i++) {\n match = str.match(dif.reg);\n if (match) {\n\n // Note that caching the format will modify the compiledFormats array\n // which is not a good idea to do inside its for loop, however we\n // know at this point that we have a matched format and that we will\n // break out below, so simpler to do it here.\n loc.cacheFormat(dif, i);\n\n set = getFormatParams(match, dif);\n\n if (isDefined(set.timestamp)) {\n str = set.timestamp;\n set = null;\n break;\n }\n\n if (isDefined(set.ampm)) {\n handleAmpm(set.ampm);\n }\n\n if (set.utc || isDefined(set.tzHour)) {\n handleTimezoneOffset(set.tzHour, set.tzMinute, set.tzSign);\n }\n\n if (isDefined(set.shift) && isUndefined(set.unit)) {\n // \"next january\", \"next monday\", etc\n handleUnitlessShift();\n }\n\n if (isDefined(set.num) && isUndefined(set.unit)) {\n // \"the second of January\", etc\n handleUnitlessNum(set.num);\n }\n\n if (set.midday) {\n // \"noon\" and \"midnight\"\n handleMidday(set.midday);\n }\n\n if (isDefined(set.day)) {\n // Relative day localizations such as \"today\" and \"tomorrow\".\n handleRelativeDay(set.day);\n }\n\n if (isDefined(set.unit)) {\n // \"3 days ago\", etc\n handleRelativeUnit(set.unit);\n }\n\n if (set.edge) {\n // \"the end of January\", etc\n handleEdge(set.edge, set);\n }\n\n if (set.yearSign) {\n set.year *= set.yearSign;\n }\n\n break;\n }\n }\n\n if (!set) {\n // Fall back to native parsing\n date = new Date(str);\n if (getOwn(options, 'fromUTC')) {\n // Falling back to system date here which cannot be parsed as UTC,\n // so if we're forcing UTC then simply add the offset.\n date.setTime(date.getTime() + (tzOffset(date) * MINUTES));\n }\n } else if (relative) {\n updateDate(date, set, false, 1);\n } else {\n if (_utc(date)) {\n // UTC times can traverse into other days or even months,\n // so preemtively reset the time here to prevent this.\n resetTime(date);\n }\n updateDate(date, set, true, 0, getOwn(options, 'prefer'), weekdayDir);\n }\n fireCallbacks();\n return date;\n }\n\n function handleAmpm(ampm) {\n if (ampm === 1 && set.hour < 12) {\n // If the time is 1pm-11pm advance the time by 12 hours.\n set.hour += 12;\n } else if (ampm === 0 && set.hour === 12) {\n // If it is 12:00am then set the hour to 0.\n set.hour = 0;\n }\n }\n\n function handleTimezoneOffset(tzHour, tzMinute, tzSign) {\n // Adjust for timezone offset\n _utc(date, true);\n var offset = (tzSign || 1) * ((tzHour || 0) * 60 + (tzMinute || 0));\n if (offset) {\n set.minute = (set.minute || 0) - offset;\n }\n }\n\n function handleUnitlessShift() {\n if (isDefined(set.month)) {\n // \"next January\"\n set.unit = YEAR_INDEX;\n } else if (isDefined(set.weekday)) {\n // \"next Monday\"\n set.unit = WEEK_INDEX;\n }\n }\n\n function handleUnitlessNum(num) {\n if (isDefined(set.weekday)) {\n // \"The second Tuesday of March\"\n setOrdinalWeekday(num);\n } else if (isDefined(set.month)) {\n // \"The second of March\"\n set.date = set.num;\n }\n }\n\n function handleMidday(hour) {\n set.hour = hour % 24;\n if (hour > 23) {\n // If the date has hours past 24, we need to prevent it from traversing\n // into a new day as that would make it being part of a new week in\n // ambiguous dates such as \"Monday\".\n afterDateSet(function() {\n advanceDate(date, 'date', trunc(hour / 24));\n });\n }\n }\n\n function handleRelativeDay() {\n resetTime(date);\n if (isUndefined(set.unit)) {\n set.unit = DAY_INDEX;\n set.num = set.day;\n delete set.day;\n }\n }\n\n function handleRelativeUnit(unitIndex) {\n var num = isDefined(set.num) ? set.num : 1;\n\n // If a weekday is defined, there are 3 possible formats being applied:\n //\n // 1. \"the day after monday\": unit is days\n // 2. \"next monday\": short for \"next week monday\", unit is weeks\n // 3. \"the 2nd monday of next month\": unit is months\n //\n // In the first case, we need to set the weekday up front, as the day is\n // relative to it. The second case also needs to be handled up front for\n // formats like \"next monday at midnight\" which will have its weekday reset\n // if not set up front. The last case will set up the params necessary to\n // shift the weekday and allow separateAbsoluteUnits below to handle setting\n // it after the date has been shifted.\n if(isDefined(set.weekday)) {\n if(unitIndex === MONTH_INDEX) {\n setOrdinalWeekday(num);\n num = 1;\n } else {\n updateDate(date, { weekday: set.weekday }, true);\n delete set.weekday;\n }\n }\n\n if (set.half) {\n // Allow localized \"half\" as a standalone colloquialism. Purposely avoiding\n // the locale number system to reduce complexity. The units \"month\" and\n // \"week\" are purposely excluded in the English date formats below, as\n // \"half a week\" and \"half a month\" are meaningless as exact dates.\n num *= set.half;\n }\n\n if (isDefined(set.shift)) {\n // Shift and unit, ie \"next month\", \"last week\", etc.\n num *= set.shift;\n } else if (set.sign) {\n // Unit and sign, ie \"months ago\", \"weeks from now\", etc.\n num *= set.sign;\n }\n\n if (isDefined(set.day)) {\n // \"the day after tomorrow\"\n num += set.day;\n delete set.day;\n }\n\n // Formats like \"the 15th of last month\" or \"6:30pm of next week\"\n // contain absolute units in addition to relative ones, so separate\n // them here, remove them from the params, and set up a callback to\n // set them after the relative ones have been set.\n separateAbsoluteUnits(unitIndex);\n\n // Finally shift the unit.\n set[English.units[unitIndex]] = num;\n relative = true;\n }\n\n function handleEdge(edge, params) {\n var edgeIndex = params.unit, weekdayOfMonth;\n if (!edgeIndex) {\n // If we have \"the end of January\", then we need to find the unit index.\n iterateOverHigherDateParams(params, function(unitName, val, unit, i) {\n if (unitName === 'weekday' && isDefined(params.month)) {\n // If both a month and weekday exist, then we have a format like\n // \"the last tuesday in November, 2012\", where the \"last\" is still\n // relative to the end of the month, so prevent the unit \"weekday\"\n // from taking over.\n return;\n }\n edgeIndex = i;\n });\n }\n if (edgeIndex === MONTH_INDEX && isDefined(params.weekday)) {\n // If a weekday in a month exists (as described above),\n // then set it up to be set after the date has been shifted.\n weekdayOfMonth = params.weekday;\n delete params.weekday;\n }\n afterDateSet(function() {\n var stopIndex;\n // \"edge\" values that are at the very edge are \"2\" so the beginning of the\n // year is -2 and the end of the year is 2. Conversely, the \"last day\" is\n // actually 00:00am so it is 1. -1 is reserved but unused for now.\n if (edge < 0) {\n moveToBeginningOfUnit(date, edgeIndex, getOwn(options, 'locale'));\n } else if (edge > 0) {\n if (edge === 1) {\n stopIndex = DAY_INDEX;\n moveToBeginningOfUnit(date, DAY_INDEX);\n }\n moveToEndOfUnit(date, edgeIndex, getOwn(options, 'locale'), stopIndex);\n }\n if (isDefined(weekdayOfMonth)) {\n setWeekday(date, weekdayOfMonth, -edge);\n resetTime(date);\n }\n });\n if (edgeIndex === MONTH_INDEX) {\n params.specificity = DAY_INDEX;\n } else {\n params.specificity = edgeIndex - 1;\n }\n }\n\n function setOrdinalWeekday(num) {\n // If we have \"the 2nd Tuesday of June\", then pass the \"weekdayDir\"\n // flag along to updateDate so that the date does not accidentally traverse\n // into the previous month. This needs to be independent of the \"prefer\"\n // flag because we are only ensuring that the weekday is in the future, not\n // the entire date.\n set.weekday = 7 * (num - 1) + set.weekday;\n set.date = 1;\n weekdayDir = 1;\n }\n\n function separateAbsoluteUnits(unitIndex) {\n var params;\n\n iterateOverDateParams(set, function(name, val, unit, i) {\n // If there is a time unit set that is more specific than\n // the matched unit we have a string like \"5:30am in 2 minutes\",\n // which is meaningless, so invalidate the date...\n if (i >= unitIndex) {\n date.setTime(NaN);\n return false;\n } else if (i < unitIndex) {\n // ...otherwise set the params to set the absolute date\n // as a callback after the relative date has been set.\n params = params || {};\n params[name] = val;\n deleteDateParam(set, name);\n }\n });\n if (params) {\n afterDateSet(function() {\n updateDate(date, params, true, false, getOwn(options, 'prefer'), weekdayDir);\n });\n if (set.edge) {\n // \"the end of March of next year\"\n handleEdge(set.edge, params);\n delete set.edge;\n }\n }\n }\n\n if (contextDate && d) {\n // If a context date is passed (\"get\" and \"unitsFromNow\"),\n // then use it as the starting point.\n date = cloneDateByFlag(contextDate, true);\n } else {\n date = getNewDate();\n }\n\n _utc(date, getOwn(options, 'fromUTC'));\n\n if (isString(d)) {\n date = parseStringDate(d);\n } else if (isDate(d)) {\n date = cloneDateByFlag(d, hasOwn(options, 'clone') || forceClone);\n } else if (isObjectType(d)) {\n set = simpleClone(d);\n updateDate(date, set, true);\n } else if (isNumber(d) || d === null) {\n date.setTime(d);\n }\n // A date created by parsing a string presumes that the format *itself* is\n // UTC, but not that the date, once created, should be manipulated as such. In\n // other words, if you are creating a date object from a server time\n // \"2012-11-15T12:00:00Z\", in the majority of cases you are using it to create\n // a date that will, after creation, be manipulated as local, so reset the utc\n // flag here unless \"setUTC\" is also set.\n _utc(date, !!getOwn(options, 'setUTC'));\n return {\n set: set,\n date: date\n };\n}\n\nmodule.exports = getExtendedDate;","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n isUndefined = require('../../common/internal/isUndefined');\n\nvar YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction iterateOverDateUnits(fn, startIndex, endIndex) {\n endIndex = endIndex || 0;\n if (isUndefined(startIndex)) {\n startIndex = YEAR_INDEX;\n }\n for (var index = startIndex; index >= endIndex; index--) {\n if (fn(DateUnits[index], index) === false) {\n break;\n }\n }\n}\n\nmodule.exports = iterateOverDateUnits;","'use strict';\n\nfunction isObjectType(obj, type) {\n return !!obj && (type || typeof obj) === 'object';\n}\n\nmodule.exports = isObjectType;","'use strict';\n\nmodule.exports = {\n ISO_FIRST_DAY_OF_WEEK: 1,\n ISO_FIRST_DAY_OF_WEEK_YEAR: 4\n};","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction simpleMerge(target, source) {\n forEachProperty(source, function(val, key) {\n target[key] = val;\n });\n return target;\n}\n\nmodule.exports = simpleMerge;","'use strict';\n\nvar EnglishLocaleBaseDefinition = require('../var/EnglishLocaleBaseDefinition'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n simpleClone = require('../../common/internal/simpleClone');\n\nfunction getEnglishVariant(v) {\n return simpleMerge(simpleClone(EnglishLocaleBaseDefinition), v);\n}\n\nmodule.exports = getEnglishVariant;","exports.remove = removeDiacritics;\n\nvar replacementList = [\n {\n base: ' ',\n chars: \"\\u00A0\",\n }, {\n base: '0',\n chars: \"\\u07C0\",\n }, {\n base: 'A',\n chars: \"\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\",\n }, {\n base: 'AA',\n chars: \"\\uA732\",\n }, {\n base: 'AE',\n chars: \"\\u00C6\\u01FC\\u01E2\",\n }, {\n base: 'AO',\n chars: \"\\uA734\",\n }, {\n base: 'AU',\n chars: \"\\uA736\",\n }, {\n base: 'AV',\n chars: \"\\uA738\\uA73A\",\n }, {\n base: 'AY',\n chars: \"\\uA73C\",\n }, {\n base: 'B',\n chars: \"\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0181\",\n }, {\n base: 'C',\n chars: \"\\u24b8\\uff23\\uA73E\\u1E08\\u0106\\u0043\\u0108\\u010A\\u010C\\u00C7\\u0187\\u023B\",\n }, {\n base: 'D',\n chars: \"\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018A\\u0189\\u1D05\\uA779\",\n }, {\n base: 'Dh',\n chars: \"\\u00D0\",\n }, {\n base: 'DZ',\n chars: \"\\u01F1\\u01C4\",\n }, {\n base: 'Dz',\n chars: \"\\u01F2\\u01C5\",\n }, {\n base: 'E',\n chars: \"\\u025B\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\\u1D07\",\n }, {\n base: 'F',\n chars: \"\\uA77C\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\",\n }, {\n base: 'G',\n chars: \"\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\\u0262\",\n }, {\n base: 'H',\n chars: \"\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\",\n }, {\n base: 'I',\n chars: \"\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\",\n }, {\n base: 'J',\n chars: \"\\u24BF\\uFF2A\\u0134\\u0248\\u0237\",\n }, {\n base: 'K',\n chars: \"\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\",\n }, {\n base: 'L',\n chars: \"\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\",\n }, {\n base: 'LJ',\n chars: \"\\u01C7\",\n }, {\n base: 'Lj',\n chars: \"\\u01C8\",\n }, {\n base: 'M',\n chars: \"\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\\u03FB\",\n }, {\n base: 'N',\n chars: \"\\uA7A4\\u0220\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u019D\\uA790\\u1D0E\",\n }, {\n base: 'NJ',\n chars: \"\\u01CA\",\n }, {\n base: 'Nj',\n chars: \"\\u01CB\",\n }, {\n base: 'O',\n chars: \"\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\",\n }, {\n base: 'OE',\n chars: \"\\u0152\",\n }, {\n base: 'OI',\n chars: \"\\u01A2\",\n }, {\n base: 'OO',\n chars: \"\\uA74E\",\n }, {\n base: 'OU',\n chars: \"\\u0222\",\n }, {\n base: 'P',\n chars: \"\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\",\n }, {\n base: 'Q',\n chars: \"\\u24C6\\uFF31\\uA756\\uA758\\u024A\",\n }, {\n base: 'R',\n chars: \"\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\",\n }, {\n base: 'S',\n chars: \"\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\",\n }, {\n base: 'T',\n chars: \"\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\",\n }, {\n base: 'Th',\n chars: \"\\u00DE\",\n }, {\n base: 'TZ',\n chars: \"\\uA728\",\n }, {\n base: 'U',\n chars: \"\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\",\n }, {\n base: 'V',\n chars: \"\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\",\n }, {\n base: 'VY',\n chars: \"\\uA760\",\n }, {\n base: 'W',\n chars: \"\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\",\n }, {\n base: 'X',\n chars: \"\\u24CD\\uFF38\\u1E8A\\u1E8C\",\n }, {\n base: 'Y',\n chars: \"\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\",\n }, {\n base: 'Z',\n chars: \"\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\",\n }, {\n base: 'a',\n chars: \"\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\\u0251\",\n }, {\n base: 'aa',\n chars: \"\\uA733\",\n }, {\n base: 'ae',\n chars: \"\\u00E6\\u01FD\\u01E3\",\n }, {\n base: 'ao',\n chars: \"\\uA735\",\n }, {\n base: 'au',\n chars: \"\\uA737\",\n }, {\n base: 'av',\n chars: \"\\uA739\\uA73B\",\n }, {\n base: 'ay',\n chars: \"\\uA73D\",\n }, {\n base: 'b',\n chars: \"\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\\u0182\",\n }, {\n base: 'c',\n chars: \"\\uFF43\\u24D2\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184\",\n }, {\n base: 'd',\n chars: \"\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\u018B\\u13E7\\u0501\\uA7AA\",\n }, {\n base: 'dh',\n chars: \"\\u00F0\",\n }, {\n base: 'dz',\n chars: \"\\u01F3\\u01C6\",\n }, {\n base: 'e',\n chars: \"\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u01DD\",\n }, {\n base: 'f',\n chars: \"\\u24D5\\uFF46\\u1E1F\\u0192\",\n }, {\n base: 'ff',\n chars: \"\\uFB00\",\n }, {\n base: 'fi',\n chars: \"\\uFB01\",\n }, {\n base: 'fl',\n chars: \"\\uFB02\",\n }, {\n base: 'ffi',\n chars: \"\\uFB03\",\n }, {\n base: 'ffl',\n chars: \"\\uFB04\",\n }, {\n base: 'g',\n chars: \"\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\uA77F\\u1D79\",\n }, {\n base: 'h',\n chars: \"\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\",\n }, {\n base: 'hv',\n chars: \"\\u0195\",\n }, {\n base: 'i',\n chars: \"\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\",\n }, {\n base: 'j',\n chars: \"\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\",\n }, {\n base: 'k',\n chars: \"\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\",\n }, {\n base: 'l',\n chars: \"\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\\u026D\",\n }, {\n base: 'lj',\n chars: \"\\u01C9\",\n }, {\n base: 'm',\n chars: \"\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\",\n }, {\n base: 'n',\n chars: \"\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u043B\\u0509\",\n }, {\n base: 'nj',\n chars: \"\\u01CC\",\n }, {\n base: 'o',\n chars: \"\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\uA74B\\uA74D\\u0275\\u0254\\u1D11\",\n }, {\n base: 'oe',\n chars: \"\\u0153\",\n }, {\n base: 'oi',\n chars: \"\\u01A3\",\n }, {\n base: 'oo',\n chars: \"\\uA74F\",\n }, {\n base: 'ou',\n chars: \"\\u0223\",\n }, {\n base: 'p',\n chars: \"\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\\u03C1\",\n }, {\n base: 'q',\n chars: \"\\u24E0\\uFF51\\u024B\\uA757\\uA759\",\n }, {\n base: 'r',\n chars: \"\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\",\n }, {\n base: 's',\n chars: \"\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u0282\",\n }, {\n base: 'ss',\n chars: \"\\xDF\",\n }, {\n base: 't',\n chars: \"\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\",\n }, {\n base: 'th',\n chars: \"\\u00FE\",\n }, {\n base: 'tz',\n chars: \"\\uA729\",\n }, {\n base: 'u',\n chars: \"\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\",\n }, {\n base: 'v',\n chars: \"\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\",\n }, {\n base: 'vy',\n chars: \"\\uA761\",\n }, {\n base: 'w',\n chars: \"\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\",\n }, {\n base: 'x',\n chars: \"\\u24E7\\uFF58\\u1E8B\\u1E8D\",\n }, {\n base: 'y',\n chars: \"\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\",\n }, {\n base: 'z',\n chars: \"\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\",\n }\n];\n\nvar diacriticsMap = {};\nfor (var i = 0; i < replacementList.length; i += 1) {\n var chars = replacementList[i].chars;\n for (var j = 0; j < chars.length; j += 1) {\n diacriticsMap[chars[j]] = replacementList[i].base;\n }\n}\n\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007e]/g, function(c) {\n return diacriticsMap[c] || c;\n });\n}\n\nexports.replacementList = replacementList;\nexports.diacriticsMap = diacriticsMap;\n","import {BaseDropdown} from './baseDropdown';\r\nimport {\r\n addClass, createCheckItem, createText, createElm, elm, removeClass, tag\r\n} from '../dom';\r\nimport {has} from '../array';\r\nimport {matchCase, trim, rgxEsc} from '../string';\r\nimport {addEvt, removeEvt, targetEvt} from '../event';\r\nimport {isEmpty} from '../types';\r\nimport {CHECKLIST, NONE} from '../const';\r\nimport {defaultsStr, defaultsBool} from '../settings';\r\n\r\n/**\r\n * Checklist filter UI component\r\n * @export\r\n * @class CheckList\r\n * @extends {BaseDropdown}\r\n */\r\nexport class CheckList extends BaseDropdown {\r\n\r\n /**\r\n * Creates an instance of CheckList\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'checkList');\r\n\r\n let f = this.config;\r\n\r\n /**\r\n * List of container DOM elements\r\n * @type {Array}\r\n */\r\n this.containers = [];\r\n\r\n /**\r\n * Css class for the container of the checklist filter (div)\r\n * @type {String}\r\n */\r\n this.containerCssClass = defaultsStr(f.div_checklist_css_class,\r\n 'div_checklist');\r\n\r\n /**\r\n * Css class for the checklist filter element (ul)\r\n * @type {String}\r\n */\r\n this.filterCssClass = defaultsStr(f.checklist_css_class,\r\n 'flt_checklist');\r\n\r\n /**\r\n * Css class for the item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.itemCssClass = defaultsStr(f.checklist_item_css_class,\r\n 'flt_checklist_item');\r\n\r\n /**\r\n * Css class for a selected item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.selectedItemCssClass = defaultsStr(\r\n f.checklist_selected_item_css_class,\r\n 'flt_checklist_slc_item'\r\n );\r\n\r\n /**\r\n * Text placed in the filter's container when load filter on demand\r\n * feature is enabled\r\n * @type {String}\r\n */\r\n this.activateText = defaultsStr(\r\n f.activate_checklist_text,\r\n 'Click to load filter data'\r\n );\r\n\r\n /**\r\n * Css class for a disabled item of a checklist (li)\r\n * @type {String}\r\n */\r\n this.disabledItemCssClass = defaultsStr(\r\n f.checklist_item_disabled_css_class,\r\n 'flt_checklist_item_disabled'\r\n );\r\n\r\n /**\r\n * Enable the reset filter option as first item\r\n * @type {Boolean}\r\n */\r\n this.enableResetOption = defaultsBool(f.enable_checklist_reset_filter,\r\n true);\r\n\r\n /**\r\n * Prefix for container element ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfx = 'chkdiv_';\r\n }\r\n\r\n /**\r\n * Checklist option click event handler\r\n * @param {Event} evt\r\n * @private\r\n */\r\n optionClick(evt) {\r\n let elm = targetEvt(evt);\r\n let tf = this.tf;\r\n\r\n this.emitter.emit('filter-focus', tf, elm);\r\n this.setItemOption(elm);\r\n tf.filter();\r\n }\r\n\r\n /**\r\n * Checklist container click event handler for load-on-demand feature\r\n * @param {Event} evt\r\n * @private\r\n */\r\n onCheckListClick(evt) {\r\n let elm = targetEvt(evt);\r\n if (this.tf.loadFltOnDemand && elm.getAttribute('filled') === '0') {\r\n let ct = elm.getAttribute('ct');\r\n let div = this.containers[ct];\r\n this.build(ct);\r\n removeEvt(div, 'click', (evt) => this.onCheckListClick(evt));\r\n }\r\n }\r\n\r\n /**\r\n * Refresh all checklist filters\r\n */\r\n refreshAll() {\r\n let colIdxs = this.tf.getFiltersByType(CHECKLIST, true);\r\n this.refreshFilters(colIdxs);\r\n }\r\n\r\n /**\r\n * Initialize checklist filter\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isExternal External filter flag\r\n * @param {DOMElement} container Dom element containing the filter\r\n */\r\n init(colIndex, isExternal, container) {\r\n let tf = this.tf;\r\n let externalFltTgtId = isExternal ?\r\n tf.externalFltIds[colIndex] : null;\r\n\r\n let divCont = createElm('div',\r\n ['id', `${this.prfx}${colIndex}_${tf.id}`],\r\n ['ct', colIndex], ['filled', '0']);\r\n divCont.className = this.containerCssClass;\r\n\r\n //filter is appended in desired element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(divCont);\r\n } else {\r\n container.appendChild(divCont);\r\n }\r\n\r\n this.containers[colIndex] = divCont;\r\n tf.fltIds.push(tf.buildFilterId(colIndex));\r\n\r\n if (!tf.loadFltOnDemand) {\r\n this.build(colIndex);\r\n } else {\r\n addEvt(divCont, 'click', (evt) => this.onCheckListClick(evt));\r\n divCont.appendChild(createText(this.activateText));\r\n }\r\n\r\n this.emitter.on(\r\n ['build-checklist-filter'],\r\n (tf, colIndex, isLinked) => this.build(colIndex, isLinked)\r\n );\r\n\r\n this.emitter.on(\r\n ['select-checklist-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n\r\n this.emitter.on(['rows-changed'], () => this.refreshAll());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Build checklist UI\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isLinked Enable linked filters behaviour\r\n */\r\n build(colIndex, isLinked = false) {\r\n let tf = this.tf;\r\n colIndex = Number(colIndex);\r\n\r\n this.emitter.emit('before-populating-filter', tf, colIndex);\r\n\r\n /** @inherited */\r\n this.opts = [];\r\n /** @inherited */\r\n this.optsTxt = [];\r\n\r\n let flt = this.containers[colIndex];\r\n let ul = createElm('ul',\r\n ['id', tf.fltIds[colIndex]],\r\n ['colIndex', colIndex]);\r\n ul.className = this.filterCssClass;\r\n\r\n let caseSensitive = tf.caseSensitive;\r\n /** @inherited */\r\n this.isCustom = tf.isCustomOptions(colIndex);\r\n\r\n //Retrieves custom values\r\n if (this.isCustom) {\r\n let customValues = tf.getCustomOptions(colIndex);\r\n this.opts = customValues[0];\r\n this.optsTxt = customValues[1];\r\n }\r\n\r\n let activeIdx;\r\n let activeFilterId = tf.getActiveFilterId();\r\n\r\n if (isLinked && activeFilterId) {\r\n activeIdx = tf.getColumnIndexFromFilterId(activeFilterId);\r\n }\r\n\r\n let filteredDataCol = [];\r\n if (isLinked && tf.disableExcludedOptions) {\r\n /** @inherited */\r\n this.excludedOpts = [];\r\n }\r\n\r\n flt.innerHTML = '';\r\n\r\n let eachRow = tf.eachRow();\r\n eachRow(\r\n (row) => {\r\n let cellValue = tf.getCellValue(row.cells[colIndex]);\r\n //Vary Peter's patch\r\n let cellString = matchCase(cellValue, caseSensitive);\r\n // checks if celldata is already in array\r\n if (!has(this.opts, cellString, caseSensitive)) {\r\n this.opts.push(cellValue);\r\n }\r\n let filteredCol = filteredDataCol[colIndex];\r\n if (isLinked && tf.disableExcludedOptions) {\r\n if (!filteredCol) {\r\n filteredCol = tf.getVisibleColumnValues(colIndex);\r\n }\r\n if (!has(filteredCol, cellString, caseSensitive) &&\r\n !has(this.excludedOpts, cellString, caseSensitive)) {\r\n this.excludedOpts.push(cellValue);\r\n }\r\n }\r\n },\r\n // continue conditions function\r\n (row, k) => {\r\n // excluded rows don't need to appear on selects as always valid\r\n if (tf.excludeRows.indexOf(k) !== -1) {\r\n return true;\r\n }\r\n\r\n // checks if row has expected number of cells\r\n if (row.cells.length !== tf.nbCells || this.isCustom) {\r\n return true;\r\n }\r\n\r\n if (isLinked && !this.isValidLinkedValue(k, activeIdx)) {\r\n return true;\r\n }\r\n }\r\n );\r\n\r\n //sort options\r\n this.opts = this.sortOptions(colIndex, this.opts);\r\n if (this.excludedOpts) {\r\n this.excludedOpts = this.sortOptions(colIndex, this.excludedOpts);\r\n }\r\n\r\n this.addChecks(colIndex, ul);\r\n\r\n if (tf.loadFltOnDemand) {\r\n flt.innerHTML = '';\r\n }\r\n flt.appendChild(ul);\r\n flt.setAttribute('filled', '1');\r\n\r\n this.emitter.emit('after-populating-filter', tf, colIndex, flt);\r\n }\r\n\r\n /**\r\n * Add checklist options\r\n * @param {Number} colIndex Column index\r\n * @param {Object} ul Ul element\r\n * @private\r\n */\r\n addChecks(colIndex, ul) {\r\n let tf = this.tf;\r\n let chkCt = this.addTChecks(colIndex, ul);\r\n\r\n for (let y = 0; y < this.opts.length; y++) {\r\n let val = this.opts[y]; //item value\r\n let lbl = this.isCustom ? this.optsTxt[y] : val; //item text\r\n let fltId = tf.fltIds[colIndex];\r\n let lblIdx = y + chkCt;\r\n let li = createCheckItem(`${fltId}_${lblIdx}`, val, lbl,\r\n ['data-idx', lblIdx]);\r\n li.className = this.itemCssClass;\r\n\r\n if (tf.linkedFilters && tf.disableExcludedOptions &&\r\n has(this.excludedOpts, matchCase(val, tf.caseSensitive),\r\n tf.caseSensitive)) {\r\n addClass(li, this.disabledItemCssClass);\r\n li.check.disabled = true;\r\n li.disabled = true;\r\n } else {\r\n addEvt(li.check, 'click', evt => this.optionClick(evt));\r\n }\r\n ul.appendChild(li);\r\n\r\n if (val === '') {\r\n //item is hidden\r\n li.style.display = NONE;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add checklist header option\r\n * @param {Number} colIndex Column index\r\n * @param {Object} ul Ul element\r\n * @private\r\n */\r\n addTChecks(colIndex, ul) {\r\n let tf = this.tf;\r\n let chkCt = 1;\r\n let fltId = tf.fltIds[colIndex];\r\n let li0 = createCheckItem(`${fltId}_0`, '',\r\n tf.getClearFilterText(colIndex), ['data-idx', 0]);\r\n li0.className = this.itemCssClass;\r\n ul.appendChild(li0);\r\n\r\n addEvt(li0.check, 'click', evt => this.optionClick(evt));\r\n\r\n if (!this.enableResetOption) {\r\n li0.style.display = NONE;\r\n }\r\n\r\n if (tf.enableEmptyOption) {\r\n let li1 = createCheckItem(`${fltId}_1`, tf.emOperator,\r\n tf.emptyText, ['data-idx', 1]);\r\n li1.className = this.itemCssClass;\r\n ul.appendChild(li1);\r\n addEvt(li1.check, 'click', evt => this.optionClick(evt));\r\n chkCt++;\r\n }\r\n\r\n if (tf.enableNonEmptyOption) {\r\n let li2 = createCheckItem(`${fltId}_2`, tf.nmOperator,\r\n tf.nonEmptyText, ['data-idx', 2]);\r\n li2.className = this.itemCssClass;\r\n ul.appendChild(li2);\r\n addEvt(li2.check, 'click', evt => this.optionClick(evt));\r\n chkCt++;\r\n }\r\n return chkCt;\r\n }\r\n\r\n /**\r\n * Set/unset value of passed item option in filter's DOM element attribute\r\n * @param {Object} o checklist option DOM element\r\n * @private\r\n */\r\n setItemOption(o) {\r\n if (!o) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let chkValue = o.value; //checked item value\r\n let chkIndex = o.dataset.idx;\r\n let colIdx = tf.getColumnIndexFromFilterId(o.id);\r\n let n = tf.getFilterElement(parseInt(colIdx, 10));\r\n let items = n.childNodes;\r\n let li = items[chkIndex];\r\n //selected values (ul tag)\r\n let slcValues = n.getAttribute('value') || '';\r\n //selected items indexes (ul tag)\r\n let slcIndexes = n.getAttribute('indexes') || '';\r\n\r\n if (o.checked) {\r\n //show all item\r\n if (chkValue === '') {\r\n //items indexes\r\n let indexes = slcIndexes.split(tf.separator);\r\n indexes.forEach(idx => {\r\n idx = Number(idx);\r\n let li = items[idx];\r\n let chx = tag(li, 'input')[0];\r\n if (chx && idx > 0) {\r\n chx.checked = false;\r\n removeClass(li, this.selectedItemCssClass);\r\n }\r\n });\r\n\r\n n.setAttribute('value', '');\r\n n.setAttribute('indexes', '');\r\n\r\n } else {\r\n let indexes = slcIndexes + chkIndex + tf.separator;\r\n let values =\r\n trim(slcValues + ' ' + chkValue + ' ' + tf.orOperator);\r\n\r\n n.setAttribute('value', values);\r\n n.setAttribute('indexes', indexes);\r\n\r\n //uncheck first option\r\n let chx0 = tag(items[0], 'input')[0];\r\n if (chx0) {\r\n chx0.checked = false;\r\n }\r\n }\r\n\r\n removeClass(items[0], this.selectedItemCssClass);\r\n addClass(li, this.selectedItemCssClass);\r\n } else { //removes values and indexes\r\n let replaceValue =\r\n new RegExp(rgxEsc(chkValue + ' ' + tf.orOperator));\r\n let values = slcValues.replace(replaceValue, '');\r\n let replaceIndex = new RegExp(rgxEsc(chkIndex + tf.separator));\r\n let indexes = slcIndexes.replace(replaceIndex, '');\r\n\r\n n.setAttribute('value', trim(values));\r\n n.setAttribute('indexes', indexes);\r\n\r\n removeClass(li, this.selectedItemCssClass);\r\n }\r\n }\r\n\r\n /**\r\n * Select filter options programmatically\r\n * @param {Number} colIndex Column index\r\n * @param {Array} values Array of option values to select\r\n */\r\n selectOptions(colIndex, values = []) {\r\n let tf = this.tf;\r\n let flt = tf.getFilterElement(colIndex);\r\n if (!flt || values.length === 0) {\r\n return;\r\n }\r\n\r\n let lis = tag(flt, 'li');\r\n\r\n flt.setAttribute('value', '');\r\n flt.setAttribute('indexes', '');\r\n\r\n [].forEach.call(lis, (li) => {\r\n let chk = tag(li, 'input')[0];\r\n let chkVal = matchCase(chk.value, tf.caseSensitive);\r\n\r\n if (chkVal !== '' && has(values, chkVal, tf.caseSensitive)) {\r\n chk.checked = true;\r\n } else {\r\n // Check non-empty-text or empty-text option\r\n if (values.indexOf(tf.nmOperator) !== -1 &&\r\n chkVal === matchCase(tf.nonEmptyText, tf.caseSensitive)) {\r\n chk.checked = true;\r\n }\r\n else if (values.indexOf(tf.emOperator) !== -1 &&\r\n chkVal === matchCase(tf.emptyText, tf.caseSensitive)) {\r\n chk.checked = true;\r\n } else {\r\n chk.checked = false;\r\n }\r\n }\r\n this.setItemOption(chk);\r\n });\r\n }\r\n\r\n /**\r\n * Get filter values for a given column index\r\n * @param {Number} colIndex Column index\r\n * @returns {Array} values Collection of selected values\r\n */\r\n getValues(colIndex) {\r\n let tf = this.tf;\r\n let flt = tf.getFilterElement(colIndex);\r\n let fltAttr = flt.getAttribute('value');\r\n let values = isEmpty(fltAttr) ? '' : fltAttr;\r\n //removes last operator ||\r\n values = values.substr(0, values.length - 3);\r\n //turn || separated values into array\r\n values = values.split(' ' + tf.orOperator + ' ');\r\n\r\n return values;\r\n }\r\n\r\n /**\r\n * Destroy CheckList instance\r\n */\r\n destroy() {\r\n this.emitter.off(\r\n ['build-checklist-filter'],\r\n (tf, colIndex, isLinked) => this.build(colIndex, isLinked)\r\n );\r\n this.emitter.off(\r\n ['select-checklist-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.off(['rows-changed'], () => this.refreshAll());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, createOpt, createText, elm, removeElm} from '../dom';\r\nimport {isArray, isNull, EMPTY_FN} from '../types';\r\nimport {addEvt, removeEvt, isKeyPressed, bound} from '../event';\r\nimport {INPUT, SELECT, NONE, ENTER_KEY} from '../const';\r\nimport {\r\n defaultsStr, defaultsNb, defaultsBool, defaultsArr, defaultsFn\r\n} from '../settings';\r\nimport {CENTER, RIGHT} from './toolbar';\r\n\r\n/**\r\n * Paging UI component\r\n * @export\r\n * @class Paging\r\n * @extends {Feature}\r\n */\r\nexport class Paging extends Feature {\r\n\r\n /**\r\n * Creates an instance of Paging\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'paging');\r\n\r\n // Configuration object\r\n let f = this.config.paging || {};\r\n\r\n /**\r\n * Css class for the paging buttons (previous, next, etc.)\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class, 'pgInp');\r\n\r\n /**\r\n * Main select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageSlc = null;\r\n\r\n /**\r\n * Results per page select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageLengthSlc = null;\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.tgtId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Number of rows contained in a page\r\n * @type {Number}\r\n */\r\n this.pageLength = defaultsNb(f.length, 10);\r\n\r\n /**\r\n * ID of custom container element for the results per page selector\r\n * @type {String}\r\n */\r\n this.pageLengthTgtId = defaultsStr(f.results_per_page_target_id, null);\r\n\r\n /**\r\n * Css class for the paging select element\r\n * @type {String}\r\n */\r\n this.pgSlcCssClass = defaultsStr(f.slc_css_class, 'pgSlc');\r\n\r\n /**\r\n * Css class for the paging input element\r\n * @type {String}\r\n */\r\n this.pgInpCssClass = defaultsStr(f.inp_css_class, 'pgNbInp');\r\n\r\n /**\r\n * Label and values for the results per page select, example of usage:\r\n * ['Records: ', [10,25,50,100]]\r\n * @type {Array}\r\n */\r\n this.resultsPerPage = defaultsArr(f.results_per_page, null);\r\n\r\n /**\r\n * Determines if results per page is configured\r\n * @type {Boolean}\r\n */\r\n this.hasResultsPerPage = isArray(this.resultsPerPage);\r\n\r\n /**\r\n * Css class for the results per page select\r\n * @type {String}\r\n */\r\n this.resultsSlcCssClass = defaultsStr(f.results_slc_css_class, 'rspg');\r\n\r\n /**\r\n * Css class for the label preceding results per page select\r\n * @type {String}\r\n */\r\n this.resultsSpanCssClass = defaultsStr(f.results_span_css_class,\r\n 'rspgSpan');\r\n\r\n /**\r\n * Index of the first row of current page\r\n * @type {Number}\r\n * @private\r\n */\r\n this.startPagingRow = 0;\r\n\r\n /**\r\n * Total number of pages\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbPages = 0;\r\n\r\n /**\r\n * Current page number\r\n * @type {Number}\r\n * @private\r\n */\r\n this.currentPageNb = 1;\r\n\r\n /**\r\n * Next page button text\r\n * @type {String}\r\n */\r\n this.btnNextPageText = defaultsStr(f.btn_next_page_text, '>');\r\n\r\n /**\r\n * Previous page button text\r\n * @type {String}\r\n */\r\n this.btnPrevPageText = defaultsStr(f.btn_prev_page_text, '<');\r\n\r\n /**\r\n * Last page button text\r\n * @type {String}\r\n */\r\n this.btnLastPageText = defaultsStr(f.btn_last_page_text, '>|');\r\n\r\n /**\r\n * First page button text\r\n * @type {String}\r\n */\r\n this.btnFirstPageText = defaultsStr(f.btn_first_page_text, '|<');\r\n\r\n /**\r\n * Next page button HTML\r\n * @type {String}\r\n */\r\n this.btnNextPageHtml = defaultsStr(f.btn_next_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Previous page button HTML\r\n * @type {String}\r\n */\r\n this.btnPrevPageHtml = defaultsStr(f.btn_prev_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * First page button HTML\r\n * @type {String}\r\n */\r\n this.btnFirstPageHtml = defaultsStr(f.btn_first_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Last page button HTML\r\n * @type {String}\r\n */\r\n this.btnLastPageHtml = defaultsStr(f.btn_last_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Text preceeding page selector drop-down\r\n * @type {String}\r\n */\r\n this.pageText = defaultsStr(f.page_text, ' Page ');\r\n\r\n /**\r\n * Text after page selector drop-down\r\n * @type {String}\r\n */\r\n this.ofText = defaultsStr(f.of_text, ' of ');\r\n\r\n /**\r\n * Css class for the span containing total number of pages\r\n * @type {String}\r\n */\r\n this.nbPgSpanCssClass = defaultsStr(f.nb_pages_css_class, 'nbpg');\r\n\r\n /**\r\n * Determines if paging buttons are enabled (default: true)\r\n * @type {Boolean}\r\n */\r\n this.hasBtns = defaultsBool(f.btns, true);\r\n\r\n /**\r\n * Defines page selector type, two possible values: 'select', 'input'\r\n * @type {String}\r\n */\r\n this.pageSelectorType = defaultsStr(f.page_selector_type, SELECT);\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, CENTER);\r\n\r\n /**\r\n * Callback fired before the page is changed\r\n * @type {Function}\r\n */\r\n this.onBeforeChangePage = defaultsFn(f.on_before_change_page, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the page is changed\r\n * @type {Function}\r\n */\r\n this.onAfterChangePage = defaultsFn(f.on_after_change_page, EMPTY_FN);\r\n\r\n /**\r\n * Label preciding results per page select\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.slcResultsTxt = null;\r\n /**\r\n * Span containing next page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnNextCont = null;\r\n /**\r\n * Span containing previous page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnPrevCont = null;\r\n /**\r\n * Span containing last page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnLastCont = null;\r\n /**\r\n * Span containing first page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnFirstCont = null;\r\n /**\r\n * Span for tot nb pages\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgCont = null;\r\n /**\r\n * Span preceding pages select (contains 'Page')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgBefore = null;\r\n /**\r\n * Span following pages select (contains ' of ')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgAfter = null;\r\n\r\n let startRow = tf.refRow;\r\n let nrows = tf.getRowsNb(true);\r\n //calculates page nb\r\n this.nbPages = Math.ceil((nrows - startRow) / this.pageLength);\r\n\r\n let o = this;\r\n /**\r\n * Paging DOM events handlers\r\n * @type {String}\r\n * @private\r\n */\r\n this.evt = {\r\n slcIndex() {\r\n return (o.pageSelectorType === SELECT) ?\r\n o.pageSlc.options.selectedIndex :\r\n parseInt(o.pageSlc.value, 10) - 1;\r\n },\r\n nbOpts() {\r\n return (o.pageSelectorType === SELECT) ?\r\n parseInt(o.pageSlc.options.length, 10) - 1 :\r\n (o.nbPages - 1);\r\n },\r\n next() {\r\n let nextIndex = o.evt.slcIndex() < o.evt.nbOpts() ?\r\n o.evt.slcIndex() + 1 : 0;\r\n o.changePage(nextIndex);\r\n },\r\n prev() {\r\n let prevIndex = o.evt.slcIndex() > 0 ?\r\n o.evt.slcIndex() - 1 : o.evt.nbOpts();\r\n o.changePage(prevIndex);\r\n },\r\n last() {\r\n o.changePage(o.evt.nbOpts());\r\n },\r\n first() {\r\n o.changePage(0);\r\n },\r\n _detectKey(e) {\r\n if (isKeyPressed(e, [ENTER_KEY])) {\r\n if (tf.sorted) {\r\n tf.filter();\r\n o.changePage(o.evt.slcIndex());\r\n } else {\r\n o.changePage();\r\n }\r\n this.blur();\r\n }\r\n },\r\n slcPagesChange: null,\r\n nextEvt: null,\r\n prevEvt: null,\r\n lastEvt: null,\r\n firstEvt: null\r\n };\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n let slcPages;\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-feature', this, !isNull(this.tgtId));\r\n\r\n // Check resultsPerPage is in expected format and initialise the\r\n // results per page component\r\n if (this.hasResultsPerPage) {\r\n if (this.resultsPerPage.length < 2) {\r\n this.hasResultsPerPage = false;\r\n } else {\r\n this.pageLength = this.resultsPerPage[1][0];\r\n this.setResultsPerPage();\r\n }\r\n }\r\n\r\n evt.slcPagesChange = (event) => {\r\n let slc = event.target;\r\n this.changePage(slc.selectedIndex);\r\n };\r\n\r\n // Paging drop-down list selector\r\n if (this.pageSelectorType === SELECT) {\r\n slcPages = createElm(SELECT);\r\n slcPages.className = this.pgSlcCssClass;\r\n addEvt(slcPages, 'change', evt.slcPagesChange);\r\n }\r\n\r\n // Paging input selector\r\n if (this.pageSelectorType === INPUT) {\r\n slcPages = createElm(INPUT, ['value', this.currentPageNb]);\r\n slcPages.className = this.pgInpCssClass;\r\n addEvt(slcPages, 'keypress', evt._detectKey);\r\n }\r\n\r\n // btns containers\r\n let btnNextSpan = createElm('span');\r\n let btnPrevSpan = createElm('span');\r\n let btnLastSpan = createElm('span');\r\n let btnFirstSpan = createElm('span');\r\n\r\n if (this.hasBtns) {\r\n // Next button\r\n if (!this.btnNextPageHtml) {\r\n let btnNext = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnNextPageText],\r\n ['title', 'Next']\r\n );\r\n btnNext.className = this.btnCssClass;\r\n addEvt(btnNext, 'click', evt.next);\r\n btnNextSpan.appendChild(btnNext);\r\n } else {\r\n btnNextSpan.innerHTML = this.btnNextPageHtml;\r\n addEvt(btnNextSpan, 'click', evt.next);\r\n }\r\n // Previous button\r\n if (!this.btnPrevPageHtml) {\r\n let btnPrev = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnPrevPageText],\r\n ['title', 'Previous']\r\n );\r\n btnPrev.className = this.btnCssClass;\r\n addEvt(btnPrev, 'click', evt.prev);\r\n btnPrevSpan.appendChild(btnPrev);\r\n } else {\r\n btnPrevSpan.innerHTML = this.btnPrevPageHtml;\r\n addEvt(btnPrevSpan, 'click', evt.prev);\r\n }\r\n // Last button\r\n if (!this.btnLastPageHtml) {\r\n let btnLast = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnLastPageText],\r\n ['title', 'Last']\r\n );\r\n btnLast.className = this.btnCssClass;\r\n addEvt(btnLast, 'click', evt.last);\r\n btnLastSpan.appendChild(btnLast);\r\n } else {\r\n btnLastSpan.innerHTML = this.btnLastPageHtml;\r\n addEvt(btnLastSpan, 'click', evt.last);\r\n }\r\n // First button\r\n if (!this.btnFirstPageHtml) {\r\n let btnFirst = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnFirstPageText],\r\n ['title', 'First']\r\n );\r\n btnFirst.className = this.btnCssClass;\r\n addEvt(btnFirst, 'click', evt.first);\r\n btnFirstSpan.appendChild(btnFirst);\r\n } else {\r\n btnFirstSpan.innerHTML = this.btnFirstPageHtml;\r\n addEvt(btnFirstSpan, 'click', evt.first);\r\n }\r\n }\r\n\r\n // paging elements (buttons+drop-down list) are added to defined element\r\n let targetEl = !this.tgtId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.tgtId);\r\n targetEl.appendChild(btnFirstSpan);\r\n targetEl.appendChild(btnPrevSpan);\r\n\r\n let pgBeforeSpan = createElm('span');\r\n pgBeforeSpan.appendChild(createText(this.pageText));\r\n pgBeforeSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgBeforeSpan);\r\n targetEl.appendChild(slcPages);\r\n let pgAfterSpan = createElm('span');\r\n pgAfterSpan.appendChild(createText(this.ofText));\r\n pgAfterSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgAfterSpan);\r\n let pgSpan = createElm('span');\r\n pgSpan.className = this.nbPgSpanCssClass;\r\n pgSpan.appendChild(createText(' ' + this.nbPages + ' '));\r\n targetEl.appendChild(pgSpan);\r\n targetEl.appendChild(btnNextSpan);\r\n targetEl.appendChild(btnLastSpan);\r\n\r\n this.btnNextCont = btnNextSpan;\r\n this.btnPrevCont = btnPrevSpan;\r\n this.btnLastCont = btnLastSpan;\r\n this.btnFirstCont = btnFirstSpan;\r\n this.pgCont = pgSpan;\r\n this.pgBefore = pgBeforeSpan;\r\n this.pgAfter = pgAfterSpan;\r\n this.pageSlc = slcPages;\r\n\r\n this.setPagingInfo();\r\n\r\n if (!tf.fltGrid) {\r\n tf.validateAllRows();\r\n this.setPagingInfo(tf.validRowsIndex);\r\n }\r\n\r\n this.emitter.on(['after-filtering'], bound(this.resetPagingInfo, this));\r\n this.emitter.on(['change-page'], bound(this.changePageHandler, this));\r\n this.emitter.on(['change-page-results'],\r\n bound(this.changePageResultsHandler, this));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Reset paging when filters are already instantiated\r\n * @param {Boolean} filterTable Execute filtering once paging instanciated\r\n */\r\n reset(filterTable = false) {\r\n this.enable();\r\n this.init();\r\n\r\n if (filterTable) {\r\n this.tf.filter();\r\n }\r\n }\r\n\r\n /**\r\n * Reset paging info from scratch after a filtering process\r\n */\r\n resetPagingInfo() {\r\n this.startPagingRow = 0;\r\n this.currentPageNb = 1;\r\n this.setPagingInfo(this.tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Calculate number of pages based on valid rows\r\n * Refresh paging select according to number of pages\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n setPagingInfo(validRows) {\r\n let tf = this.tf;\r\n let cont = !this.tgtId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.tgtId);\r\n\r\n //store valid rows indexes\r\n tf.validRowsIndex = validRows || tf.getValidRows(true);\r\n\r\n //calculate nb of pages\r\n this.nbPages = Math.ceil(tf.validRowsIndex.length / this.pageLength);\r\n //refresh page nb span\r\n this.pgCont.innerHTML = this.nbPages;\r\n //select clearing shortcut\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.innerHTML = '';\r\n }\r\n\r\n if (this.nbPages > 0) {\r\n cont.style.visibility = 'visible';\r\n if (this.pageSelectorType === SELECT) {\r\n for (let z = 0; z < this.nbPages; z++) {\r\n let opt = createOpt(z + 1, z * this.pageLength, false);\r\n this.pageSlc.options[z] = opt;\r\n }\r\n } else {\r\n //input type\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n } else {\r\n /*** if no results paging select and buttons are hidden ***/\r\n cont.style.visibility = 'hidden';\r\n }\r\n this.groupByPage(tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Group table rows by page and display valid rows\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n groupByPage(validRows) {\r\n let tf = this.tf;\r\n let rows = tf.dom().rows;\r\n let startPagingRow = parseInt(this.startPagingRow, 10);\r\n let endPagingRow = startPagingRow + parseInt(this.pageLength, 10);\r\n\r\n //store valid rows indexes\r\n if (validRows) {\r\n tf.validRowsIndex = validRows;\r\n }\r\n\r\n //this loop shows valid rows of current page\r\n for (let h = 0, len = tf.getValidRowsNb(true); h < len; h++) {\r\n let validRowIdx = tf.validRowsIndex[h];\r\n let r = rows[validRowIdx];\r\n let isRowValid = r.getAttribute('validRow');\r\n let rowDisplayed = false;\r\n\r\n if (h >= startPagingRow && h < endPagingRow) {\r\n if (isNull(isRowValid) || Boolean(isRowValid === 'true')) {\r\n r.style.display = '';\r\n rowDisplayed = true;\r\n }\r\n } else {\r\n r.style.display = NONE;\r\n }\r\n this.emitter.emit('row-paged', tf, validRowIdx, h, rowDisplayed);\r\n }\r\n\r\n // broadcast grouping by page\r\n this.emitter.emit('grouped-by-page', tf, this);\r\n }\r\n\r\n /**\r\n * Return the current page number\r\n * @return {Number} Page number\r\n */\r\n getPage() {\r\n return this.currentPageNb;\r\n }\r\n\r\n /**\r\n * Show page defined by passed argument (string or number):\r\n * @param {String}/{Number} cmd possible string values: 'next',\r\n * 'previous', 'last', 'first' or page number as per param\r\n */\r\n setPage(cmd) {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.isEnabled()) {\r\n return;\r\n }\r\n let btnEvt = this.evt,\r\n cmdtype = typeof cmd;\r\n if (cmdtype === 'string') {\r\n switch (cmd.toLowerCase()) {\r\n case 'next':\r\n btnEvt.next();\r\n break;\r\n case 'previous':\r\n btnEvt.prev();\r\n break;\r\n case 'last':\r\n btnEvt.last();\r\n break;\r\n case 'first':\r\n btnEvt.first();\r\n break;\r\n default:\r\n btnEvt.next();\r\n break;\r\n }\r\n }\r\n else if (cmdtype === 'number') {\r\n this.changePage(cmd - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Generates UI elements for the number of results per page drop-down\r\n */\r\n setResultsPerPage() {\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.pageLengthSlc || !this.resultsPerPage) {\r\n return;\r\n }\r\n\r\n evt.slcResultsChange = (ev) => {\r\n this.onChangeResultsPerPage();\r\n ev.target.blur();\r\n };\r\n\r\n let slcR = createElm(SELECT);\r\n slcR.className = this.resultsSlcCssClass;\r\n let slcRText = this.resultsPerPage[0],\r\n slcROpts = this.resultsPerPage[1];\r\n let slcRSpan = createElm('span');\r\n slcRSpan.className = this.resultsSpanCssClass;\r\n\r\n // results per page select is added to external element\r\n let targetEl = !this.pageLengthTgtId ?\r\n tf.feature('toolbar').container(RIGHT) :\r\n elm(this.pageLengthTgtId);\r\n slcRSpan.appendChild(createText(slcRText));\r\n\r\n let help = tf.feature('help');\r\n if (help && help.btn) {\r\n help.btn.parentNode.insertBefore(slcRSpan, help.btn);\r\n help.btn.parentNode.insertBefore(slcR, help.btn);\r\n } else {\r\n targetEl.appendChild(slcRSpan);\r\n targetEl.appendChild(slcR);\r\n }\r\n\r\n for (let r = 0; r < slcROpts.length; r++) {\r\n let currOpt = new Option(slcROpts[r], slcROpts[r], false, false);\r\n slcR.options[r] = currOpt;\r\n }\r\n addEvt(slcR, 'change', evt.slcResultsChange);\r\n this.slcResultsTxt = slcRSpan;\r\n this.pageLengthSlc = slcR;\r\n }\r\n\r\n /**\r\n * Remove number of results per page UI elements\r\n */\r\n removeResultsPerPage() {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.pageLengthSlc ||\r\n !this.resultsPerPage) {\r\n return;\r\n }\r\n if (this.pageLengthSlc) {\r\n removeElm(this.pageLengthSlc);\r\n }\r\n if (this.slcResultsTxt) {\r\n removeElm(this.slcResultsTxt);\r\n }\r\n this.pageLengthSlc = null;\r\n this.slcResultsTxt = null;\r\n }\r\n\r\n /**\r\n * Change the page based on passed index\r\n * @param {Number} index Index of the page (0-n)\r\n */\r\n changePage(index) {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-page-change', tf, (index + 1));\r\n\r\n if (index === null) {\r\n index = this.pageSelectorType === SELECT ?\r\n this.pageSlc.options.selectedIndex : this.pageSlc.value - 1;\r\n }\r\n if (index >= 0 && index <= (this.nbPages - 1)) {\r\n this.onBeforeChangePage(this, (index + 1));\r\n\r\n this.currentPageNb = parseInt(index, 10) + 1;\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.options[index].selected = true;\r\n } else {\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n this.startPagingRow = (this.pageSelectorType === SELECT) ?\r\n this.pageSlc.value : (index * this.pageLength);\r\n\r\n this.groupByPage();\r\n\r\n this.onAfterChangePage(this, (index + 1));\r\n }\r\n\r\n this.emitter.emit('after-page-change', tf, (index + 1));\r\n }\r\n\r\n /**\r\n * Change the number of results per page based on passed value\r\n * @param {String} val The number of results per page\r\n */\r\n changeResultsPerPage(val) {\r\n if (!this.isEnabled() || isNaN(val)) {\r\n return;\r\n }\r\n\r\n this.pageLengthSlc.value = val;\r\n this.onChangeResultsPerPage();\r\n }\r\n\r\n /**\r\n * Change rows according to page results drop-down\r\n */\r\n onChangeResultsPerPage() {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled() || tf.getValidRowsNb() === 0) {\r\n return;\r\n }\r\n\r\n let {\r\n pageLengthSlc: slcR, pageSelectorType, pageSlc, emitter\r\n } = this;\r\n\r\n emitter.emit('before-page-length-change', tf);\r\n\r\n let slcIndex = slcR.selectedIndex;\r\n let slcPagesSelIndex = (pageSelectorType === SELECT) ?\r\n pageSlc.selectedIndex : parseInt(pageSlc.value - 1, 10);\r\n this.pageLength = parseInt(slcR.options[slcIndex].value, 10);\r\n this.startPagingRow = this.pageLength * slcPagesSelIndex;\r\n\r\n if (!isNaN(this.pageLength)) {\r\n if (this.startPagingRow >= tf.nbFilterableRows) {\r\n this.startPagingRow = (tf.nbFilterableRows - this.pageLength);\r\n }\r\n this.setPagingInfo();\r\n\r\n if (pageSelectorType === SELECT) {\r\n let slcIdx = (pageSlc.options.length - 1 <= slcPagesSelIndex) ?\r\n (pageSlc.options.length - 1) :\r\n slcPagesSelIndex;\r\n pageSlc.options[slcIdx].selected = true;\r\n }\r\n }\r\n\r\n emitter.emit('after-page-length-change', tf, this.pageLength);\r\n }\r\n\r\n /**\r\n * Re-set page nb at page re-load\r\n */\r\n resetPage() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page', tf);\r\n let pgNb = tf.feature('store').getPageNb();\r\n if (pgNb !== '') {\r\n this.changePage((pgNb - 1));\r\n }\r\n this.emitter.emit('after-reset-page', tf, pgNb);\r\n }\r\n\r\n /**\r\n * Re-set page length value at page re-load\r\n */\r\n resetPageLength() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page-length', tf);\r\n let pglenIndex = tf.feature('store').getPageLength();\r\n\r\n if (pglenIndex !== '') {\r\n this.pageLengthSlc.options[pglenIndex].selected = true;\r\n this.changeResultsPerPage();\r\n }\r\n this.emitter.emit('after-reset-page-length', tf, pglenIndex);\r\n }\r\n\r\n /** @private */\r\n changePageHandler(tf, pageNumber) {\r\n this.setPage(pageNumber);\r\n }\r\n\r\n /** @private */\r\n changePageResultsHandler(tf, pageLength) {\r\n this.changeResultsPerPage(pageLength);\r\n }\r\n\r\n /**\r\n * Remove paging feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let evt = this.evt;\r\n\r\n if (this.pageSlc) {\r\n if (this.pageSelectorType === SELECT) {\r\n removeEvt(this.pageSlc, 'change', evt.slcPagesChange);\r\n }\r\n else if (this.pageSelectorType === INPUT) {\r\n removeEvt(this.pageSlc, 'keypress', evt._detectKey);\r\n }\r\n removeElm(this.pageSlc);\r\n }\r\n\r\n if (this.btnNextCont) {\r\n removeEvt(this.btnNextCont, 'click', evt.next);\r\n removeElm(this.btnNextCont);\r\n this.btnNextCont = null;\r\n }\r\n\r\n if (this.btnPrevCont) {\r\n removeEvt(this.btnPrevCont, 'click', evt.prev);\r\n removeElm(this.btnPrevCont);\r\n this.btnPrevCont = null;\r\n }\r\n\r\n if (this.btnLastCont) {\r\n removeEvt(this.btnLastCont, 'click', evt.last);\r\n removeElm(this.btnLastCont);\r\n this.btnLastCont = null;\r\n }\r\n\r\n if (this.btnFirstCont) {\r\n removeEvt(this.btnFirstCont, 'click', evt.first);\r\n removeElm(this.btnFirstCont);\r\n this.btnFirstCont = null;\r\n }\r\n\r\n if (this.pgBefore) {\r\n removeElm(this.pgBefore);\r\n this.pgBefore = null;\r\n }\r\n\r\n if (this.pgAfter) {\r\n removeElm(this.pgAfter);\r\n this.pgAfter = null;\r\n }\r\n\r\n if (this.pgCont) {\r\n removeElm(this.pgCont);\r\n this.pgCont = null;\r\n }\r\n\r\n if (this.hasResultsPerPage) {\r\n this.removeResultsPerPage();\r\n }\r\n\r\n this.emitter.off(['after-filtering'],\r\n bound(this.resetPagingInfo, this));\r\n this.emitter.off(['change-page'], bound(this.changePageHandler, this));\r\n this.emitter.off(['change-page-results'],\r\n bound(this.changePageResultsHandler, this));\r\n\r\n this.pageSlc = null;\r\n this.nbPages = 0;\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, elm, removeElm} from '../dom';\r\nimport {isEmpty, EMPTY_FN} from '../types';\r\nimport {NONE} from '../const';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\n\r\n/**\r\n * UI when filtering yields no matches\r\n * @export\r\n * @class NoResults\r\n * @extends {Feature}\r\n */\r\nexport class NoResults extends Feature {\r\n\r\n /**\r\n * Creates an instance of NoResults\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'noResults');\r\n\r\n //configuration object\r\n let f = this.config.no_results_message || {};\r\n\r\n /**\r\n * Text (accepts HTML)\r\n * @type {String}\r\n */\r\n this.content = defaultsStr(f.content, 'No results');\r\n\r\n /**\r\n * Custom container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.customContainer = defaultsStr(f.custom_container, null);\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.customContainerId = defaultsStr(f.custom_container_id, null);\r\n\r\n /**\r\n * Indicates if UI is contained in a external element\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isExternal = !isEmpty(this.customContainer) ||\r\n !isEmpty(this.customContainerId);\r\n\r\n /**\r\n * Css class assigned to container element\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'no-results');\r\n\r\n /**\r\n * Stores container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeShow = defaultsFn(f.on_before_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterShow = defaultsFn(f.on_after_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before the message is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeHide = defaultsFn(f.on_before_hide_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the message is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterHide = defaultsFn(f.on_after_hide_msg, EMPTY_FN);\r\n }\r\n\r\n /**\r\n * Initializes NoResults instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let target = this.customContainer || elm(this.customContainerId) ||\r\n tf.dom();\r\n\r\n //container\r\n let cont = createElm('div');\r\n cont.className = this.cssClass;\r\n cont.innerHTML = this.content;\r\n\r\n if (this.isExternal) {\r\n target.appendChild(cont);\r\n } else {\r\n target.parentNode.insertBefore(cont, target.nextSibling);\r\n }\r\n\r\n this.cont = cont;\r\n\r\n // subscribe to after-filtering event\r\n this.emitter.on(\r\n ['initialized', 'after-filtering'],\r\n () => this.toggle()\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Toggle no results message\r\n */\r\n toggle() {\r\n if (this.tf.getValidRowsNb() > 0) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n /**\r\n * Show no results message\r\n */\r\n show() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeShow(this.tf, this);\r\n\r\n this.setWidth();\r\n this.cont.style.display = 'block';\r\n\r\n this.onAfterShow(this.tf, this);\r\n }\r\n\r\n /**\r\n * Hide no results message\r\n */\r\n hide() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeHide(this.tf, this);\r\n\r\n this.cont.style.display = NONE;\r\n\r\n this.onAfterHide(this.tf, this);\r\n }\r\n\r\n /**\r\n * Sets no results container width\r\n * @private\r\n */\r\n setWidth() {\r\n if (!this.initialized || this.isExternal || !this.isEnabled()) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n if (tf.gridLayout) {\r\n let gridLayout = tf.feature('gridLayout');\r\n this.cont.style.width = gridLayout.headTbl.clientWidth + 'px';\r\n } else {\r\n this.cont.style.width = (tf.dom().tHead ?\r\n tf.dom().tHead.clientWidth :\r\n tf.dom().tBodies[0].clientWidth) + 'px';\r\n }\r\n }\r\n\r\n /** Remove feature */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.cont);\r\n this.cont = null;\r\n // unsubscribe to after-filtering event\r\n this.emitter.off(['after-filtering'], () => this.toggle());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\nimport {addClass, removeClass} from '../dom';\nimport {defaultsStr} from '../settings';\nimport {bound} from '../event';\n\n/**\n * Rows with alternating background color for improved readability\n */\nexport class AlternateRows extends Feature {\n\n /**\n * Creates an instance of AlternateRows.\n *\n * @param {Object} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'alternateRows');\n\n let config = this.config;\n /**\n * Css class for even rows (default: 'even')\n * @type {String}\n */\n this.evenCss = defaultsStr(config.even_row_css_class, 'even');\n\n /**\n * Css class for odd rows (default: 'odd')\n * @type {String}\n */\n this.oddCss = defaultsStr(config.odd_row_css_class, 'odd');\n }\n\n /**\n * Sets alternating rows color\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n this.processAll();\n\n // Subscribe to events\n this.emitter.on(['row-processed', 'row-paged'],\n bound(this.processRowHandler, this));\n this.emitter.on(['column-sorted', 'rows-changed'],\n bound(this.processAll, this));\n\n /** @inherited */\n this.initialized = true;\n }\n\n /**\n * Apply background to all valid rows\n */\n processAll() {\n if (!this.isEnabled()) {\n return;\n }\n let tf = this.tf;\n let validRowsIndex = tf.getValidRows(true);\n let indexLen = validRowsIndex.length;\n let idx = 0;\n\n //alternates bg color\n for (let j = 0; j < indexLen; j++) {\n let rowIdx = validRowsIndex[j];\n this.setRowBg(rowIdx, idx);\n idx++;\n }\n }\n\n /**\n * Set/remove row background based on row validation\n * @param {Number} rowIdx Row index\n * @param {Number} arrIdx Array index\n * @param {Boolean} isValid Valid row flag\n */\n processRow(rowIdx, arrIdx, isValid) {\n if (isValid) {\n this.setRowBg(rowIdx, arrIdx);\n } else {\n this.removeRowBg(rowIdx);\n }\n }\n\n /**\n * Sets row background color\n * @param {Number} rowIdx Row index\n * @param {Number} idx Valid rows collection index needed to calculate bg\n * color\n * @private\n */\n setRowBg(rowIdx, idx) {\n if (!this.isEnabled() || isNaN(rowIdx)) {\n return;\n }\n let rows = this.tf.dom().rows;\n let i = isNaN(idx) ? rowIdx : idx;\n this.removeRowBg(rowIdx);\n\n addClass(rows[rowIdx], (i % 2) ? this.evenCss : this.oddCss);\n }\n\n /**\n * Removes row background color\n * @param {Number} idx Row index\n * @private\n */\n removeRowBg(idx) {\n if (isNaN(idx)) {\n return;\n }\n let rows = this.tf.dom().rows;\n removeClass(rows[idx], this.oddCss);\n removeClass(rows[idx], this.evenCss);\n }\n\n /** @private */\n processRowHandler(tf, rowIndex, arrIndex, isValid) {\n this.processRow(rowIndex, arrIndex, isValid);\n }\n\n /**\n * Removes all alternating backgrounds\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n\n let eachRow = this.tf.eachRow(0);\n eachRow((row, i) => this.removeRowBg(i));\n\n // Unsubscribe to events\n this.emitter.off(['row-processed', 'row-paged'],\n bound(this.processRowHandler, this));\n this.emitter.off(['column-sorted', 'rows-changed'],\n bound(this.processAll, this));\n\n this.initialized = false;\n }\n\n}\n","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {addEvt} from '../event';\r\nimport {defaultsStr} from '../settings';\r\nimport {isNull} from '../types';\r\nimport {RIGHT} from './toolbar';\r\n\r\n/**\r\n * Clear button UI component\r\n */\r\nexport class ClearButton extends Feature {\r\n\r\n /**\r\n * Creates an instance of ClearButton\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'btnReset');\r\n\r\n let f = this.config.btn_reset || {};\r\n\r\n /**\r\n * Container element ID\r\n * @type {String}\r\n */\r\n this.targetId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Text for the clear button\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, null);\r\n\r\n /**\r\n * Css class for reset button\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'reset');\r\n\r\n /**\r\n * Tooltip text for the clear button\r\n * @type {String}\r\n */\r\n this.tooltip = f.tooltip || 'Clear filters';\r\n\r\n /**\r\n * Custom Html string for the clear button\r\n * @type {String}\r\n */\r\n this.html = defaultsStr(f.html,\r\n (!tf.enableIcons || this.text ? null :\r\n ''));\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\r\n\r\n /**\r\n * Clear button container element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Clear button element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.element = null;\r\n }\r\n\r\n /**\r\n * Click event handler for clear button\r\n * @private\r\n */\r\n onClick() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.tf.clearFilters();\r\n }\r\n\r\n /**\r\n * Initialize clear button component\r\n */\r\n init() {\r\n let tf = this.tf;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-feature', this, !isNull(this.targetId));\r\n\r\n let cont = createElm('span');\r\n\r\n let targetEl = !this.targetId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.targetId);\r\n targetEl.appendChild(cont);\r\n\r\n if (!this.html) {\r\n let fltReset = createElm('a', ['href', 'javascript:void(0);']);\r\n fltReset.className = this.cssClass;\r\n fltReset.appendChild(createText(this.text));\r\n cont.appendChild(fltReset);\r\n addEvt(fltReset, 'click', () => this.onClick());\r\n } else {\r\n cont.innerHTML = this.html;\r\n let resetEl = cont.firstChild;\r\n addEvt(resetEl, 'click', () => this.onClick());\r\n }\r\n this.element = cont.firstChild;\r\n this.container = cont;\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Destroy ClearButton instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.element);\r\n removeElm(this.container);\r\n this.element = null;\r\n this.container = null;\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {root} from '../root';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {EMPTY_FN, isNull} from '../types';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\nimport {LEFT} from './toolbar';\r\n\r\nconst EVENTS = [\r\n 'after-filtering',\r\n 'after-populating-filter',\r\n 'after-page-change',\r\n 'after-clearing-filters',\r\n 'after-page-length-change',\r\n 'after-reset-page',\r\n 'after-reset-page-length',\r\n 'after-loading-extensions',\r\n 'after-loading-themes'\r\n];\r\n\r\n/**\r\n * Status bar UI component\r\n * @export\r\n * @class StatusBar\r\n * @extends {Feature}\r\n */\r\nexport class StatusBar extends Feature {\r\n\r\n /**\r\n * Creates an instance of StatusBar\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'statusBar');\r\n\r\n // Configuration object\r\n let f = this.config.status_bar || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Message container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.msgContainer = null;\r\n\r\n /**\r\n * Label container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.labelContainer = null;\r\n\r\n /**\r\n * Text preceding status message\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, '');\r\n\r\n /**\r\n * Css class for container element\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'status');\r\n\r\n /**\r\n * Message visibility duration in milliseconds\r\n * @type {Number}\r\n * @private\r\n */\r\n this.delay = 250;\r\n\r\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeShowMsg = defaultsFn(f.on_before_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterShowMsg = defaultsFn(f.on_after_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Message appearing upon filtering\r\n * @type {String}\r\n */\r\n this.msgFilter = defaultsStr(f.msg_filter, 'Filtering data...');\r\n\r\n /**\r\n * Message appearing when a drop-down filter is populated\r\n * @type {String}\r\n */\r\n this.msgPopulate = defaultsStr(f.msg_populate, 'Populating filter...');\r\n\r\n /**\r\n * Message appearing when a checklist filter is populated\r\n * @type {String}\r\n */\r\n this.msgPopulateCheckList = defaultsStr(f.msg_populate_checklist,\r\n 'Populating list...');\r\n\r\n /**\r\n * Message appearing when a pagination page is changed\r\n * @type {String}\r\n */\r\n this.msgChangePage = defaultsStr(f.msg_change_page,\r\n 'Collecting paging data...');\r\n\r\n /**\r\n * Message appearing when filters are cleared\r\n * @type {String}\r\n */\r\n this.msgClear = defaultsStr(f.msg_clear, 'Clearing filters...');\r\n\r\n /**\r\n * Message appearing when the page length is changed\r\n * @type {String}\r\n */\r\n this.msgChangeResults = defaultsStr(f.msg_change_results,\r\n 'Changing results per page...');\r\n\r\n /**\r\n * Message appearing when the page is re-set\r\n * @type {String}\r\n */\r\n this.msgResetPage = defaultsStr(f.msg_reset_page, 'Re-setting page...');\r\n\r\n /**\r\n * Message appearing when the page length is re-set\r\n * @type {String}\r\n */\r\n this.msgResetPageLength = defaultsStr(f.msg_reset_page_length,\r\n 'Re-setting page length...');\r\n\r\n /**\r\n * Message appearing upon column sorting\r\n * @type {String}\r\n */\r\n this.msgSort = defaultsStr(f.msg_sort, 'Sorting data...');\r\n\r\n /**\r\n * Message appearing when extensions are loading\r\n * @type {String}\r\n */\r\n this.msgLoadExtensions = defaultsStr(f.msg_load_extensions,\r\n 'Loading extensions...');\r\n\r\n /**\r\n * Message appearing when themes are loading\r\n * @type {String}\r\n */\r\n this.msgLoadThemes = defaultsStr(f.msg_load_themes,\r\n 'Loading theme(s)...');\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, LEFT);\r\n }\r\n\r\n /**\r\n * Initializes StatusBar instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let emitter = this.emitter;\r\n\r\n emitter.emit('initializing-feature', this, !isNull(this.targetId));\r\n\r\n // status bar container\r\n let statusDiv = createElm('div');\r\n statusDiv.className = this.cssClass;\r\n\r\n // status bar label\r\n let statusSpan = createElm('span');\r\n // preceding text\r\n let statusSpanText = createElm('span');\r\n statusSpanText.appendChild(createText(this.text));\r\n\r\n // target element container\r\n let targetEl = (!this.targetId) ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.targetId);\r\n\r\n // default container\r\n if (!this.targetId) {\r\n statusDiv.appendChild(statusSpanText);\r\n statusDiv.appendChild(statusSpan);\r\n targetEl.appendChild(statusDiv);\r\n } else {\r\n // custom container, no need to append statusDiv\r\n targetEl.appendChild(statusSpanText);\r\n targetEl.appendChild(statusSpan);\r\n }\r\n\r\n this.container = statusDiv;\r\n this.msgContainer = statusSpan;\r\n this.labelContainer = statusSpanText;\r\n\r\n // subscribe to events\r\n emitter.on(['before-filtering'], () => this.message(this.msgFilter));\r\n emitter.on(['before-populating-filter'],\r\n () => this.message(this.msgPopulate));\r\n emitter.on(['before-page-change'],\r\n () => this.message(this.msgChangePage));\r\n emitter.on(['before-clearing-filters'], () =>\r\n this.message(this.msgClear));\r\n emitter.on(['before-page-length-change'],\r\n () => this.message(this.msgChangeResults));\r\n emitter.on(['before-reset-page'],\r\n () => this.message(this.msgResetPage));\r\n emitter.on(['before-reset-page-length'],\r\n () => this.message(this.msgResetPageLength));\r\n emitter.on(['before-loading-extensions'],\r\n () => this.message(this.msgLoadExtensions));\r\n emitter.on(['before-loading-themes'],\r\n () => this.message(this.msgLoadThemes));\r\n\r\n emitter.on(EVENTS, () => this.message(''));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Display status message\r\n * @param {String} [t=''] Message to be displayed\r\n */\r\n message(t = '') {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n this.onBeforeShowMsg(this.tf, t);\r\n\r\n let d = t === '' ? this.delay : 1;\r\n root.setTimeout(() => {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.msgContainer.innerHTML = t;\r\n\r\n this.onAfterShowMsg(this.tf, t);\r\n }, d);\r\n }\r\n\r\n /**\r\n * Destroy StatusBar instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n this.container.innerHTML = '';\r\n if (!this.targetId) {\r\n removeElm(this.container);\r\n }\r\n this.labelContainer = null;\r\n this.msgContainer = null;\r\n this.container = null;\r\n\r\n // Unsubscribe to events\r\n emitter.off(['before-filtering'], () => this.message(this.msgFilter));\r\n emitter.off(['before-populating-filter'],\r\n () => this.message(this.msgPopulate));\r\n emitter.off(['before-page-change'],\r\n () => this.message(this.msgChangePage));\r\n emitter.off(['before-clearing-filters'],\r\n () => this.message(this.msgClear));\r\n emitter.off(['before-page-length-change'],\r\n () => this.message(this.msgChangeResults));\r\n emitter.off(['before-reset-page'], () =>\r\n this.message(this.msgResetPage));\r\n emitter.off(['before-reset-page-length'],\r\n () => this.message(this.msgResetPageLength));\r\n emitter.off(['before-loading-extensions'],\r\n () => this.message(this.msgLoadExtensions));\r\n emitter.off(['before-loading-themes'],\r\n () => this.message(this.msgLoadThemes));\r\n\r\n emitter.off(EVENTS, () => this.message(''));\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {EMPTY_FN, isNull} from '../types';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\nimport {LEFT} from './toolbar';\r\n\r\n/**\r\n * Rows counter UI component\r\n * @export\r\n * @class RowsCounter\r\n * @extends {Feature}\r\n */\r\nexport class RowsCounter extends Feature {\r\n\r\n /**\r\n * Creates an instance of RowsCounter\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'rowsCounter');\r\n\r\n // TableFilter configuration\r\n let f = this.config.rows_counter || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Container DOM element for label displaying the total number of rows\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.label = null;\r\n\r\n /**\r\n * Text preceding the total number of rows\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, 'Rows: ');\r\n\r\n /**\r\n * Separator symbol appearing between the first and last visible rows of\r\n * current page when paging is enabled. ie: Rows: 31-40 / 70\r\n * @type {String}\r\n */\r\n this.fromToTextSeparator = defaultsStr(f.separator, '-');\r\n\r\n /**\r\n * Separator symbol appearing between the first and last visible rows of\r\n * current page and the total number of filterable rows when paging is\r\n * enabled. ie: Rows: 31-40 / 70\r\n * @type {String}\r\n */\r\n this.overText = defaultsStr(f.over_text, ' / ');\r\n\r\n /**\r\n * Css class for container element\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'tot');\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, LEFT);\r\n\r\n /**\r\n * Callback fired before the counter is refreshed\r\n * @type {Function}\r\n */\r\n this.onBeforeRefreshCounter = defaultsFn(f.on_before_refresh_counter,\r\n EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the counter is refreshed\r\n * @type {Function}\r\n */\r\n this.onAfterRefreshCounter = defaultsFn(f.on_after_refresh_counter,\r\n EMPTY_FN);\r\n }\r\n\r\n /**\r\n * Initializes RowsCounter instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-feature', this, !isNull(this.targetId));\r\n\r\n let tf = this.tf;\r\n\r\n //rows counter container\r\n let countDiv = createElm('div');\r\n countDiv.className = this.cssClass;\r\n //rows counter label\r\n let countSpan = createElm('span');\r\n let countText = createElm('span');\r\n countText.appendChild(createText(this.text));\r\n\r\n // counter is added to defined element\r\n let targetEl = !this.targetId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.targetId);\r\n\r\n //default container: 'lDiv'\r\n if (!this.targetId) {\r\n countDiv.appendChild(countText);\r\n countDiv.appendChild(countSpan);\r\n targetEl.appendChild(countDiv);\r\n } else {\r\n //custom container, no need to append statusDiv\r\n targetEl.appendChild(countText);\r\n targetEl.appendChild(countSpan);\r\n }\r\n this.container = countDiv;\r\n this.label = countSpan;\r\n\r\n // subscribe to events\r\n this.emitter.on(['after-filtering', 'grouped-by-page'],\r\n () => this.refresh(tf.getValidRowsNb()));\r\n this.emitter.on(['rows-changed'], () => this.refresh());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n this.refresh();\r\n\r\n this.emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Refreshes the rows counter\r\n * @param {Number} p Optional parameter the total number of rows to display\r\n */\r\n refresh(p) {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n this.onBeforeRefreshCounter(tf, this.label);\r\n\r\n let totTxt;\r\n if (!tf.paging) {\r\n if (p && p !== '') {\r\n totTxt = p;\r\n } else {\r\n totTxt = tf.getFilterableRowsNb() - tf.nbHiddenRows;\r\n }\r\n } else {\r\n let paging = tf.feature('paging');\r\n if (paging) {\r\n let nbValidRows = tf.getValidRowsNb();\r\n //paging start row\r\n let pagingStartRow = parseInt(paging.startPagingRow, 10) +\r\n ((nbValidRows > 0) ? 1 : 0);\r\n let pagingEndRow =\r\n (pagingStartRow + paging.pageLength) - 1 <=\r\n nbValidRows ?\r\n pagingStartRow + paging.pageLength - 1 :\r\n nbValidRows;\r\n totTxt = pagingStartRow + this.fromToTextSeparator +\r\n pagingEndRow + this.overText + nbValidRows;\r\n }\r\n }\r\n\r\n this.label.innerHTML = totTxt;\r\n this.onAfterRefreshCounter(tf, this.label, totTxt);\r\n }\r\n\r\n /**\r\n * Remove feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n if (!this.targetId && this.container) {\r\n removeElm(this.container);\r\n } else {\r\n elm(this.targetId).innerHTML = '';\r\n }\r\n this.label = null;\r\n this.container = null;\r\n\r\n // unsubscribe to events\r\n this.emitter.off(['after-filtering', 'grouped-by-page'],\r\n () => this.refresh(tf.getValidRowsNb()));\r\n this.emitter.off(['rows-changed'], () => this.refresh());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {addClass, removeClass, hasClass} from '../dom';\r\nimport {EMPTY_FN} from '../types';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\n\r\n/**\r\n * Visual indicator for filtered columns\r\n * @export\r\n * @class MarkActiveColumns\r\n * @extends {Feature}\r\n */\r\nexport class MarkActiveColumns extends Feature {\r\n\r\n /**\r\n * Create an instance of MarkActiveColumns\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'markActiveColumns');\r\n\r\n let config = this.config.mark_active_columns || {};\r\n\r\n /**\r\n * Css class for filtered (active) columns\r\n * @type {String}\r\n */\r\n this.headerCssClass = defaultsStr(config.header_css_class,\r\n 'activeHeader');\r\n\r\n /**\r\n * Css class for filtered (active) column cells\r\n * @type {String}\r\n */\r\n this.cellCssClass = defaultsStr(config.cell_css_class,\r\n 'activeCell');\r\n\r\n /**\r\n * Enable/disable column highlighting\r\n * @type {Boolean}\r\n */\r\n this.highlightColumn = Boolean(config.highlight_column);\r\n\r\n /**\r\n * Callback fired before a column is marked as filtered\r\n * @type {Function}\r\n */\r\n this.onBeforeActiveColumn = defaultsFn(config.on_before_active_column,\r\n EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a column is marked as filtered\r\n * @type {Function}\r\n */\r\n this.onAfterActiveColumn = defaultsFn(config.on_after_active_column,\r\n EMPTY_FN);\r\n }\r\n\r\n /**\r\n * Initialise MarkActiveColumns instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.on(['before-filtering'], () => this.clearActiveColumns());\r\n this.emitter.on(\r\n ['cell-processed'],\r\n (tf, colIndex) => this.markActiveColumn(colIndex)\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Clear filtered columns visual indicator (background color)\r\n */\r\n clearActiveColumns() {\r\n let tf = this.tf;\r\n tf.eachCol((idx) => {\r\n removeClass(tf.getHeaderElement(idx), this.headerCssClass);\r\n\r\n if (this.highlightColumn) {\r\n this.eachColumnCell(idx,\r\n (cell) => removeClass(cell, this.cellCssClass));\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Mark currently filtered column\r\n * @param {Number} colIndex Column index\r\n */\r\n markActiveColumn(colIndex) {\r\n let tf = this.tf;\r\n let header = tf.getHeaderElement(colIndex);\r\n if (hasClass(header, this.headerCssClass)) {\r\n return;\r\n }\r\n\r\n this.onBeforeActiveColumn(this, colIndex);\r\n\r\n addClass(header, this.headerCssClass);\r\n\r\n if (this.highlightColumn) {\r\n this.eachColumnCell(colIndex,\r\n (cell) => addClass(cell, this.cellCssClass));\r\n }\r\n\r\n this.onAfterActiveColumn(this, colIndex);\r\n }\r\n\r\n /**\r\n * Column cells iterator\r\n * TODO: make public and move into TableFilter if used elsewhere\r\n * @param {Number} colIndex\r\n * @param {Function} fn\r\n * @param {DOMElement} tbl\r\n * @private\r\n */\r\n eachColumnCell(colIndex, fn = EMPTY_FN, tbl = this.tf.dom()) {\r\n // TODO: remove [].forEach when polyfill for PhanthomJs is available\r\n [].forEach.call(\r\n tbl.querySelectorAll(`tbody td:nth-child(${colIndex + 1})`), fn);\r\n }\r\n\r\n /**\r\n * Remove feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.clearActiveColumns();\r\n this.emitter.off(['before-filtering'], () => this.clearActiveColumns());\r\n this.emitter.off(\r\n ['cell-processed'],\r\n (tf, colIndex) => this.markActiveColumn(colIndex)\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {isUndef, EMPTY_FN} from '../types';\r\nimport {createElm, removeElm} from '../dom';\r\nimport {addEvt, cancelEvt, stopEvt, targetEvt, removeEvt} from '../event';\r\nimport {INPUT, NONE, CHECKLIST, MULTIPLE} from '../const';\r\nimport {root} from '../root';\r\nimport {defaultsStr, defaultsBool, defaultsArr, defaultsFn} from '../settings';\r\n\r\n/**\r\n * Pop-up filter component\r\n * @export\r\n * @class PopupFilter\r\n * @extends {Feature}\r\n */\r\nexport class PopupFilter extends Feature {\r\n\r\n /**\r\n * Creates an instance of PopupFilter\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'popupFilters');\r\n\r\n // Configuration object\r\n let f = this.config.popup_filters || {};\r\n\r\n /**\r\n * Close active popup filter upon filtering, enabled by default\r\n * @type {Boolean}\r\n */\r\n this.closeOnFiltering = defaultsBool(f.close_on_filtering, true);\r\n\r\n /**\r\n * Filter icon path\r\n * @type {String}\r\n */\r\n this.iconPath = defaultsStr(f.image, tf.themesPath + 'icn_filter.gif');\r\n\r\n /**\r\n * Active filter icon path\r\n * @type {string}\r\n */\r\n this.activeIconPath = defaultsStr(f.image_active,\r\n tf.themesPath + 'icn_filterActive.gif');\r\n\r\n /**\r\n * HTML for the filter icon\r\n * @type {string}\r\n */\r\n this.iconHtml = defaultsStr(f.image_html,\r\n '\"Column');\r\n\r\n /**\r\n * Css class assigned to the popup container element\r\n * @type {String}\r\n */\r\n this.placeholderCssClass = defaultsStr(f.placeholder_css_class,\r\n 'popUpPlaceholder');\r\n\r\n /**\r\n * Css class assigned to filter container element\r\n * @type {String}\r\n */\r\n this.containerCssClass = defaultsStr(f.div_css_class, 'popUpFilter');\r\n\r\n /**\r\n * Ensure filter's container element width matches column width, enabled\r\n * by default\r\n * @type {Boolean}\r\n */\r\n this.adjustToContainer = defaultsBool(f.adjust_to_container, true);\r\n\r\n /**\r\n * Callback fired before a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onBeforeOpen = defaultsFn(f.on_before_popup_filter_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onAfterOpen = defaultsFn(f.on_after_popup_filter_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onBeforeClose = defaultsFn(f.on_before_popup_filter_close,\r\n EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onAfterClose = defaultsFn(f.on_after_popup_filter_close, EMPTY_FN);\r\n\r\n /**\r\n * Collection of filters spans\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltSpans = [];\r\n\r\n /**\r\n * Collection of filters icons\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIcons = [];\r\n\r\n /**\r\n * Collection of filters icons cached after pop-up filters are removed\r\n * @type {Array}\r\n * @private\r\n */\r\n this.filtersCache = null;\r\n\r\n /**\r\n * Collection of filters containers\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltElms = defaultsArr(this.filtersCache, []);\r\n\r\n /**\r\n * Prefix for pop-up filter container ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxDiv = 'popup_';\r\n\r\n /**\r\n * Column index of popup filter currently active\r\n * @type {Number}\r\n * @private\r\n */\r\n this.activeFilterIdx = -1;\r\n }\r\n\r\n /**\r\n * Click event handler for pop-up filter icon\r\n * @private\r\n */\r\n onClick(evt) {\r\n let elm = targetEvt(evt).parentNode;\r\n let colIndex = parseInt(elm.getAttribute('ci'), 10);\r\n\r\n this.closeAll(colIndex);\r\n this.toggle(colIndex);\r\n\r\n if (this.adjustToContainer) {\r\n let cont = this.fltElms[colIndex],\r\n header = this.tf.getHeaderElement(colIndex),\r\n headerWidth = header.clientWidth * 0.95;\r\n cont.style.width = parseInt(headerWidth, 10) + 'px';\r\n }\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup filter auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n if (this.activeFilterIdx === -1) {\r\n return;\r\n }\r\n let targetElm = targetEvt(evt);\r\n let activeFlt = this.fltElms[this.activeFilterIdx];\r\n let icon = this.fltIcons[this.activeFilterIdx];\r\n\r\n if (icon === targetElm) {\r\n return;\r\n }\r\n\r\n while (targetElm && targetElm !== activeFlt) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== activeFlt) {\r\n this.close(this.activeFilterIdx);\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n // Enable external filters\r\n tf.externalFltIds = [''];\r\n\r\n // Override filters row index supplied by configuration\r\n tf.filtersRowIndex = 0;\r\n\r\n // Override headers row index if no grouped headers\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.headersRow <= 1 && isNaN(tf.config().headers_row_index)) {\r\n tf.headersRow = 0;\r\n }\r\n\r\n // Adjust headers row index for grid-layout mode\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.gridLayout) {\r\n tf.headersRow--;\r\n this.buildIcons();\r\n }\r\n\r\n // subscribe to events\r\n this.emitter.on(['before-filtering'], () => this.setIconsState());\r\n this.emitter.on(['after-filtering'], () => this.closeAll());\r\n this.emitter.on(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.on(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.on(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset previously destroyed feature\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n this.buildIcons();\r\n this.buildAll();\r\n }\r\n\r\n /**\r\n * Build all filters icons\r\n */\r\n buildIcons() {\r\n let tf = this.tf;\r\n\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n tf.headersRow++;\r\n\r\n tf.eachCol(\r\n (i) => {\r\n let icon = createElm('span', ['ci', i]);\r\n icon.innerHTML = this.iconHtml;\r\n let header = tf.getHeaderElement(i);\r\n header.appendChild(icon);\r\n addEvt(icon, 'click', (evt) => this.onClick(evt));\r\n this.fltSpans[i] = icon;\r\n this.fltIcons[i] = icon.firstChild;\r\n },\r\n // continue condition function\r\n (i) => tf.getFilterType(i) === NONE\r\n );\r\n }\r\n\r\n /**\r\n * Build all pop-up filters elements\r\n */\r\n buildAll() {\r\n for (let i = 0; i < this.filtersCache.length; i++) {\r\n this.build(i, this.filtersCache[i]);\r\n }\r\n }\r\n\r\n /**\r\n * Build a specified pop-up filter elements\r\n * @param {Number} colIndex Column index\r\n * @param {Object} div Optional container DOM element\r\n */\r\n build(colIndex, div) {\r\n let tf = this.tf;\r\n let contId = `${this.prfxDiv}${tf.id}_${colIndex}`;\r\n let placeholder = createElm('div', ['class', this.placeholderCssClass]);\r\n let cont = div ||\r\n createElm('div', ['id', contId], ['class', this.containerCssClass]);\r\n tf.externalFltIds[colIndex] = cont.id;\r\n placeholder.appendChild(cont);\r\n\r\n let header = tf.getHeaderElement(colIndex);\r\n header.insertBefore(placeholder, header.firstChild);\r\n addEvt(cont, 'click', (evt) => stopEvt(evt));\r\n this.fltElms[colIndex] = cont;\r\n }\r\n\r\n /**\r\n * Toggle visibility of specified filter\r\n * @param {Number} colIndex Column index\r\n */\r\n toggle(colIndex) {\r\n if (!this.isOpen(colIndex)) {\r\n this.open(colIndex);\r\n } else {\r\n this.close(colIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Open popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n open(colIndex) {\r\n let tf = this.tf,\r\n container = this.fltElms[colIndex];\r\n\r\n this.onBeforeOpen(this, container, colIndex);\r\n\r\n container.style.display = 'block';\r\n this.activeFilterIdx = colIndex;\r\n addEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n if (tf.getFilterType(colIndex) === INPUT) {\r\n let flt = tf.getFilterElement(colIndex);\r\n if (flt) {\r\n flt.focus();\r\n }\r\n }\r\n\r\n this.onAfterOpen(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Close popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n close(colIndex) {\r\n let container = this.fltElms[colIndex];\r\n\r\n this.onBeforeClose(this, container, colIndex);\r\n\r\n container.style.display = NONE;\r\n if (this.activeFilterIdx === colIndex) {\r\n this.activeFilterIdx = -1;\r\n }\r\n removeEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n this.onAfterClose(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Check if popup filter for specified column is open\r\n * @param {Number} colIndex Column index\r\n * @returns {Boolean}\r\n */\r\n isOpen(colIndex) {\r\n return this.fltElms[colIndex].style.display === 'block';\r\n }\r\n\r\n /**\r\n * Close all filters excepted for the specified one if any\r\n * @param {Number} exceptIdx Column index of the filter to not close\r\n */\r\n closeAll(exceptIdx) {\r\n // Do not close filters only if argument is undefined and close on\r\n // filtering option is disabled\r\n if (isUndef(exceptIdx) && !this.closeOnFiltering) {\r\n return;\r\n }\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n if (i === exceptIdx) {\r\n continue;\r\n }\r\n let fltType = this.tf.getFilterType(i);\r\n let isMultipleFilter =\r\n (fltType === CHECKLIST || fltType === MULTIPLE);\r\n\r\n // Always hide all single selection filter types but hide multiple\r\n // selection filter types only if index set\r\n if (!isMultipleFilter || !isUndef(exceptIdx)) {\r\n this.close(i);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Build all the icons representing the pop-up filters\r\n */\r\n setIconsState() {\r\n for (let i = 0; i < this.fltIcons.length; i++) {\r\n this.changeState(i, false);\r\n }\r\n }\r\n\r\n /**\r\n * Apply specified icon state\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} active Apply active state\r\n */\r\n changeState(colIndex, active) {\r\n let icon = this.fltIcons[colIndex];\r\n if (icon) {\r\n icon.src = active ? this.activeIconPath : this.iconPath;\r\n }\r\n }\r\n\r\n /**\r\n * Remove pop-up filters\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.filtersCache = [];\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n let container = this.fltElms[i],\r\n placeholder = container.parentNode,\r\n icon = this.fltSpans[i],\r\n iconImg = this.fltIcons[i];\r\n if (container) {\r\n removeElm(container);\r\n this.filtersCache[i] = container;\r\n }\r\n container = null;\r\n if (placeholder) {\r\n removeElm(placeholder);\r\n }\r\n placeholder = null;\r\n if (icon) {\r\n removeElm(icon);\r\n }\r\n icon = null;\r\n if (iconImg) {\r\n removeElm(iconImg);\r\n }\r\n iconImg = null;\r\n }\r\n this.fltElms = [];\r\n this.fltSpans = [];\r\n this.fltIcons = [];\r\n\r\n // TODO: expose an API to handle external filter IDs\r\n this.tf.externalFltIds = [];\r\n\r\n // unsubscribe to events\r\n this.emitter.off(['before-filtering'], () => this.setIconsState());\r\n this.emitter.off(['after-filtering'], () => this.closeAll());\r\n this.emitter.off(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.off(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.off(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n","import {createText, createElm, getText} from '../dom';\r\nimport {isArray} from '../types';\r\nimport {rgxEsc} from '../string';\r\nimport {defaultsStr} from '../settings';\r\n\r\n/**\r\n * Highlight matched keywords upon filtering\r\n *\r\n * @export\r\n * @class HighlightKeyword\r\n */\r\nexport class HighlightKeyword {\r\n\r\n /**\r\n * Creates an instance of HighlightKeyword\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n let f = tf.config();\r\n\r\n /**\r\n * Css class for highlighted term\r\n * @type {String}\r\n */\r\n this.highlightCssClass = defaultsStr(f.highlight_css_class, 'keyword');\r\n\r\n /**\r\n * TableFilter instance\r\n * @type {TableFilter}\r\n */\r\n this.tf = tf;\r\n\r\n /**\r\n * TableFilter's emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = tf.emitter;\r\n }\r\n\r\n /**\r\n * Initializes HighlightKeyword instance\r\n */\r\n init() {\r\n this.emitter.on(\r\n ['before-filtering', 'destroy'],\r\n () => this.unhighlightAll()\r\n );\r\n this.emitter.on(\r\n ['highlight-keyword'],\r\n (tf, cell, term) => this._processTerm(cell, term)\r\n );\r\n }\r\n\r\n /**\r\n * Highlight occurences of searched term in passed node\r\n * @param {Node} node\r\n * @param {String} term Searched term\r\n * @param {String} cssClass Css class name\r\n *\r\n * TODO: refactor this method\r\n */\r\n highlight(node, term, cssClass) {\r\n // Iterate into this nodes childNodes\r\n if (node.hasChildNodes) {\r\n let children = node.childNodes;\r\n for (let i = 0; i < children.length; i++) {\r\n this.highlight(children[i], term, cssClass);\r\n }\r\n }\r\n\r\n if (node.nodeType === 3) {\r\n let nodeVal = node.nodeValue.toLowerCase();\r\n let termIdx = nodeVal.indexOf(term.toLowerCase());\r\n\r\n if (termIdx !== -1) {\r\n let pn = node.parentNode;\r\n if (pn && pn.className !== cssClass) {\r\n // term not highlighted yet\r\n let nv = node.nodeValue,\r\n // Create a load of replacement nodes\r\n before = createText(nv.substr(0, termIdx)),\r\n value = nv.substr(termIdx, term.length),\r\n after = createText(nv.substr(termIdx + term.length)),\r\n text = createText(value),\r\n container = createElm('span');\r\n container.className = cssClass;\r\n container.appendChild(text);\r\n pn.insertBefore(before, node);\r\n pn.insertBefore(container, node);\r\n pn.insertBefore(after, node);\r\n pn.removeChild(node);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Removes highlight to nodes matching passed string\r\n * @param {String} term\r\n * @param {String} cssClass Css class to remove\r\n */\r\n unhighlight(term, cssClass) {\r\n let highlightedNodes = this.tf.dom().querySelectorAll(`.${cssClass}`);\r\n for (let i = 0; i < highlightedNodes.length; i++) {\r\n let n = highlightedNodes[i];\r\n let nodeVal = getText(n);\r\n\r\n if (nodeVal.toLowerCase().indexOf(term.toLowerCase()) !== -1) {\r\n let parentNode = n.parentNode;\r\n parentNode.replaceChild(createText(nodeVal), n);\r\n parentNode.normalize();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear all occurrences of highlighted nodes\r\n */\r\n unhighlightAll() {\r\n if (!this.tf.highlightKeywords) {\r\n return;\r\n }\r\n // iterate filters values to unhighlight all values\r\n this.tf.getFiltersValue().forEach((val) => {\r\n if (isArray(val)) {\r\n val.forEach((item) =>\r\n this.unhighlight(item, this.highlightCssClass));\r\n } else {\r\n this.unhighlight(val, this.highlightCssClass);\r\n }\r\n });\r\n }\r\n\r\n /** Remove feature */\r\n destroy() {\r\n this.emitter.off(\r\n ['before-filtering', 'destroy'],\r\n () => this.unhighlightAll()\r\n );\r\n this.emitter.off(\r\n ['highlight-keyword'],\r\n (tf, cell, term) => this._processTerm(cell, term)\r\n );\r\n }\r\n\r\n /**\r\n * Ensure filtering operators are handled before highlighting any match\r\n * @param {any} Table cell to look searched term into\r\n * @param {any} Searched termIdx\r\n */\r\n _processTerm(cell, term) {\r\n let tf = this.tf;\r\n let reLk = new RegExp(rgxEsc(tf.lkOperator));\r\n let reEq = new RegExp(tf.eqOperator);\r\n let reSt = new RegExp(tf.stOperator);\r\n let reEn = new RegExp(tf.enOperator);\r\n let reLe = new RegExp(tf.leOperator);\r\n let reGe = new RegExp(tf.geOperator);\r\n let reL = new RegExp(tf.lwOperator);\r\n let reG = new RegExp(tf.grOperator);\r\n let reD = new RegExp(tf.dfOperator);\r\n\r\n term = term\r\n .replace(reLk, '')\r\n .replace(reEq, '')\r\n .replace(reSt, '')\r\n .replace(reEn, '');\r\n\r\n if (reLe.test(term) || reGe.test(term) || reL.test(term) ||\r\n reG.test(term) || reD.test(term)) {\r\n term = getText(cell);\r\n }\r\n\r\n if (term === '') {\r\n return;\r\n }\r\n\r\n this.highlight(cell, term, this.highlightCssClass);\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {EMPTY_FN} from '../types';\r\nimport {root} from '../root';\r\nimport {NONE} from '../const';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\n\r\nconst EVENTS = [\r\n 'before-filtering',\r\n 'before-populating-filter',\r\n 'before-page-change',\r\n 'before-clearing-filters',\r\n 'before-page-length-change',\r\n 'before-reset-page',\r\n 'before-reset-page-length',\r\n 'before-loading-extensions',\r\n 'before-loading-themes'\r\n];\r\n\r\n/**\r\n * Activity indicator\r\n *\r\n * @export\r\n * @class Loader\r\n * @extends {Feature}\r\n */\r\nexport class Loader extends Feature {\r\n\r\n /**\r\n * Creates an instance of Loader.\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'loader');\r\n\r\n let f = this.config.loader || {};\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.targetId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Loader container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Text displayed when indicator is visible\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, 'Loading...');\r\n\r\n /**\r\n * Custom HTML injected in Loader's container element\r\n * @type {String}\r\n */\r\n this.html = defaultsStr(f.html, null);\r\n\r\n /**\r\n * Css class for Loader's container element\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'loader');\r\n\r\n /**\r\n * Close delay in milliseconds\r\n * @type {Number}\r\n */\r\n this.closeDelay = 250;\r\n\r\n /**\r\n * Callback fired when loader is displayed\r\n * @type {Function}\r\n */\r\n this.onShow = defaultsFn(f.on_show_loader, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired when loader is closed\r\n * @type {Function}\r\n */\r\n this.onHide = defaultsFn(f.on_hide_loader, EMPTY_FN);\r\n }\r\n\r\n /**\r\n * Initializes Loader instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n let emitter = this.emitter;\r\n\r\n let containerDiv = createElm('div');\r\n containerDiv.className = this.cssClass;\r\n\r\n let targetEl = !this.targetId ?\r\n tf.dom().parentNode : elm(this.targetId);\r\n if (!this.targetId) {\r\n targetEl.insertBefore(containerDiv, tf.dom());\r\n } else {\r\n targetEl.appendChild(containerDiv);\r\n }\r\n this.cont = containerDiv;\r\n if (!this.html) {\r\n this.cont.appendChild(createText(this.text));\r\n } else {\r\n this.cont.innerHTML = this.html;\r\n }\r\n\r\n this.show(NONE);\r\n\r\n // Subscribe to events\r\n emitter.on(EVENTS, () => this.show(''));\r\n emitter.on(EVENTS, () => this.show(NONE));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Shows or hides activity indicator\r\n * @param {String} Two possible values: '' or 'none'\r\n */\r\n show(p) {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n let displayLoader = () => {\r\n if (!this.cont) {\r\n return;\r\n }\r\n if (p !== NONE) {\r\n this.onShow(this);\r\n }\r\n this.cont.style.display = p;\r\n if (p === NONE) {\r\n this.onHide(this);\r\n }\r\n };\r\n\r\n let t = p === NONE ? this.closeDelay : 1;\r\n root.setTimeout(displayLoader, t);\r\n }\r\n\r\n /**\r\n * Removes feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n // Unsubscribe to events\r\n emitter.off(EVENTS, () => this.show(''));\r\n emitter.off(EVENTS, () => this.show(NONE));\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, removeElm, elm, tag} from '../dom';\r\nimport {addEvt, targetEvt} from '../event';\r\nimport {contains} from '../string';\r\nimport {NONE} from '../const';\r\nimport {\r\n defaultsBool, defaultsStr, defaultsNb, defaultsArr\r\n} from '../settings';\r\n\r\n/**\r\n * Grid layout, table with fixed headers\r\n */\r\nexport class GridLayout extends Feature {\r\n\r\n /**\r\n * Creates an instance of GridLayout\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'gridLayout');\r\n\r\n let f = this.config.grid_layout || {};\r\n\r\n /**\r\n * Grid-layout container width as CSS string\r\n * @type {String}\r\n */\r\n this.width = defaultsStr(f.width, null);\r\n\r\n /**\r\n * Grid-layout container height as CSS string\r\n * @type {String}\r\n */\r\n this.height = defaultsStr(f.height, null);\r\n\r\n /**\r\n * Css class for main container element\r\n * @type {String}\r\n */\r\n this.mainContCssClass = defaultsStr(f.cont_css_class, 'grd_Cont');\r\n\r\n /**\r\n * Css class for body table container element\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.tbl_cont_css_class, 'grd_tblCont');\r\n\r\n /**\r\n * Css class for headers table container element\r\n * @type {String}\r\n */\r\n this.headContCssClass = defaultsStr(f.tbl_head_css_class,\r\n 'grd_headTblCont');\r\n\r\n /**\r\n * Css class for toolbar container element (rows counter, paging etc.)\r\n * @type {String}\r\n */\r\n this.infDivCssClass = defaultsStr(f.inf_grid_css_class, 'grd_inf');\r\n\r\n /**\r\n * Index of the headers row, default: 0\r\n * @type {Number}\r\n */\r\n this.headRowIndex = defaultsNb(f.headers_row_index, 0);\r\n\r\n /**\r\n * Collection of the header row indexes to be moved into headers table\r\n * @type {Array}\r\n */\r\n this.headRows = defaultsArr(f.headers_rows, [0]);\r\n\r\n /**\r\n * Enable or disable column filters generation, default: true\r\n * @type {Boolean}\r\n */\r\n this.filters = defaultsBool(f.filters, true);\r\n\r\n /**\r\n * Enable or disable column headers, default: false\r\n * @type {Boolean}\r\n */\r\n this.noHeaders = Boolean(f.no_headers);\r\n\r\n /**\r\n * Grid-layout default column widht as CSS string\r\n * @type {String}\r\n */\r\n this.defaultColWidth = defaultsStr(f.default_col_width, '100px');\r\n\r\n /**\r\n * List of column elements\r\n * @type {Array}\r\n * @private\r\n */\r\n this.colElms = [];\r\n\r\n /**\r\n * Prefix for grid-layout filter's cell ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxGridFltTd = '_td_';\r\n\r\n /**\r\n * Prefix for grid-layout header's cell ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxGridTh = 'tblHeadTh_';\r\n\r\n /**\r\n * Mark-up of original HTML table\r\n * @type {String}\r\n * @private\r\n */\r\n this.sourceTblHtml = tf.dom().outerHTML;\r\n\r\n /**\r\n * Indicates if working table has column elements\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.tblHasColTag = tag(tf.dom(), 'col').length > 0 ? true : false;\r\n\r\n /**\r\n * Main container element\r\n * @private\r\n */\r\n this.tblMainCont = null;\r\n\r\n /**\r\n * Table container element\r\n * @private\r\n */\r\n this.tblCont = null;\r\n\r\n /**\r\n * Headers' table container element\r\n * @private\r\n */\r\n this.headTblCont = null;\r\n\r\n /**\r\n * Headers' table element\r\n * @private\r\n */\r\n this.headTbl = null;\r\n\r\n // filters flag at TF level\r\n tf.fltGrid = this.filters;\r\n }\r\n\r\n /**\r\n * Generates a grid with fixed headers\r\n * TODO: reduce size of init by extracting single purposed methods\r\n */\r\n init() {\r\n let tf = this.tf;\r\n let tbl = tf.dom();\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // Override relevant TableFilter properties\r\n this.setOverrides();\r\n\r\n // Assign default column widths\r\n this.setDefaultColWidths();\r\n\r\n //Main container: it will contain all the elements\r\n this.tblMainCont = this.createContainer(\r\n 'div', this.mainContCssClass);\r\n if (this.width) {\r\n this.tblMainCont.style.width = this.width;\r\n }\r\n tbl.parentNode.insertBefore(this.tblMainCont, tbl);\r\n\r\n //Table container: div wrapping content table\r\n this.tblCont = this.createContainer('div', this.contCssClass);\r\n this.setConfigWidth(this.tblCont);\r\n if (this.height) {\r\n this.tblCont.style.height = this.height;\r\n }\r\n tbl.parentNode.insertBefore(this.tblCont, tbl);\r\n let t = removeElm(tbl);\r\n this.tblCont.appendChild(t);\r\n\r\n //In case table width is expressed in %\r\n if (tbl.style.width === '') {\r\n let tblW = this.initialTableWidth();\r\n tbl.style.width = (contains('%', tblW) ?\r\n tbl.clientWidth : tblW) + 'px';\r\n }\r\n\r\n let d = removeElm(this.tblCont);\r\n this.tblMainCont.appendChild(d);\r\n\r\n //Headers table container: div wrapping headers table\r\n this.headTblCont = this.createContainer(\r\n 'div', this.headContCssClass);\r\n\r\n //Headers table\r\n this.headTbl = createElm('table');\r\n let tH = createElm('tHead');\r\n\r\n //1st row should be headers row, ids are added if not set\r\n //Those ids are used by the sort feature\r\n let hRow = tbl.rows[this.headRowIndex];\r\n let sortTriggers = this.getSortTriggerIds(hRow);\r\n\r\n //Filters row is created\r\n let filtersRow = this.createFiltersRow();\r\n\r\n //Headers row are moved from content table to headers table\r\n this.setHeadersRow(tH);\r\n\r\n this.headTbl.appendChild(tH);\r\n if (tf.filtersRowIndex === 0) {\r\n tH.insertBefore(filtersRow, hRow);\r\n } else {\r\n tH.appendChild(filtersRow);\r\n }\r\n\r\n this.headTblCont.appendChild(this.headTbl);\r\n this.tblCont.parentNode.insertBefore(this.headTblCont, this.tblCont);\r\n\r\n //THead needs to be removed in content table for sort feature\r\n let thead = tag(tbl, 'thead');\r\n if (thead.length > 0) {\r\n tbl.removeChild(thead[0]);\r\n }\r\n\r\n // ensure table layout is always set even if already set in css\r\n // definitions, potentially with custom css class this could be lost\r\n this.headTbl.style.tableLayout = 'fixed';\r\n tbl.style.tableLayout = 'fixed';\r\n\r\n //content table without headers needs col widths to be reset\r\n tf.setColWidths(this.headTbl);\r\n\r\n //Headers container width\r\n this.headTbl.style.width = tbl.style.width;\r\n //\r\n\r\n //scroll synchronisation\r\n addEvt(this.tblCont, 'scroll', (evt) => {\r\n let elm = targetEvt(evt);\r\n let scrollLeft = elm.scrollLeft;\r\n this.headTblCont.scrollLeft = scrollLeft;\r\n //New pointerX calc taking into account scrollLeft\r\n // if(!o.isPointerXOverwritten){\r\n // try{\r\n // o.Evt.pointerX = function(evt){\r\n // let e = evt || global.event;\r\n // let bdScrollLeft = tf_StandardBody().scrollLeft +\r\n // scrollLeft;\r\n // return (e.pageX + scrollLeft) ||\r\n // (e.clientX + bdScrollLeft);\r\n // };\r\n // o.isPointerXOverwritten = true;\r\n // } catch(err) {\r\n // o.isPointerXOverwritten = false;\r\n // }\r\n // }\r\n });\r\n\r\n // TODO: Trigger a custom event handled by sort extension\r\n let sort = tf.extension('sort');\r\n if (sort) {\r\n sort.asyncSort = true;\r\n sort.triggerIds = sortTriggers;\r\n }\r\n\r\n //Col elements are enough to keep column widths after sorting and\r\n //filtering\r\n this.setColumnElements();\r\n\r\n if (tf.popupFilters) {\r\n filtersRow.style.display = NONE;\r\n }\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Overrides TableFilter instance properties to adjust to grid layout mode\r\n * @private\r\n */\r\n setOverrides() {\r\n let tf = this.tf;\r\n tf.refRow = 0;\r\n tf.headersRow = 0;\r\n tf.filtersRowIndex = 1;\r\n }\r\n\r\n /**\r\n * Set grid-layout default column widths if column widths are not defined\r\n * @private\r\n */\r\n setDefaultColWidths() {\r\n let tf = this.tf;\r\n if (tf.colWidths.length > 0) {\r\n return;\r\n }\r\n\r\n tf.eachCol((k) => {\r\n let colW;\r\n let cell = tf.dom().rows[tf.getHeadersRowIndex()].cells[k];\r\n if (cell.width !== '') {\r\n colW = cell.width;\r\n } else if (cell.style.width !== '') {\r\n colW = parseInt(cell.style.width, 10);\r\n } else {\r\n colW = this.defaultColWidth;\r\n }\r\n tf.colWidths[k] = colW;\r\n });\r\n\r\n tf.setColWidths();\r\n }\r\n\r\n /**\r\n * Initial table width\r\n * @returns {Number}\r\n * @private\r\n */\r\n initialTableWidth() {\r\n let tbl = this.tf.dom();\r\n let width; //initial table width\r\n\r\n if (tbl.width !== '') {\r\n width = tbl.width;\r\n }\r\n else if (tbl.style.width !== '') {\r\n width = tbl.style.width;\r\n } else {\r\n width = tbl.clientWidth;\r\n }\r\n return parseInt(width, 10);\r\n }\r\n\r\n /**\r\n * Creates container element\r\n * @param {String} tag Tag name\r\n * @param {String} className Css class to assign to element\r\n * @returns {DOMElement}\r\n * @private\r\n */\r\n createContainer(tag, className) {\r\n let element = createElm(tag);\r\n element.className = className;\r\n return element;\r\n }\r\n\r\n /**\r\n * Creates filters row with cells\r\n * @returns {HTMLTableRowElement}\r\n * @private\r\n */\r\n createFiltersRow() {\r\n let tf = this.tf;\r\n let filtersRow = createElm('tr');\r\n if (this.filters && tf.fltGrid) {\r\n tf.externalFltIds = [];\r\n tf.eachCol((j) => {\r\n let fltTdId = `${tf.prfxFlt + j + this.prfxGridFltTd + tf.id}`;\r\n let cl = createElm(tf.fltCellTag, ['id', fltTdId]);\r\n filtersRow.appendChild(cl);\r\n tf.externalFltIds[j] = fltTdId;\r\n });\r\n }\r\n return filtersRow;\r\n }\r\n\r\n /**\r\n * Generates column elements if necessary and assigns their widths\r\n * @private\r\n */\r\n setColumnElements() {\r\n let tf = this.tf;\r\n let cols = tag(tf.dom(), 'col');\r\n this.tblHasColTag = cols.length > 0;\r\n\r\n for (let k = (tf.getCellsNb() - 1); k >= 0; k--) {\r\n let col;\r\n\r\n if (!this.tblHasColTag) {\r\n col = createElm('col');\r\n tf.dom().insertBefore(col, tf.dom().firstChild);\r\n } else {\r\n col = cols[k];\r\n }\r\n col.style.width = tf.colWidths[k];\r\n this.colElms[k] = col;\r\n }\r\n this.tblHasColTag = true;\r\n }\r\n\r\n /**\r\n * Sets headers row in headers table\r\n * @param {HTMLHeadElement} tableHead Table head element\r\n * @private\r\n */\r\n setHeadersRow(tableHead) {\r\n if (this.noHeaders) {\r\n // Handle table with no headers, assuming here headers do not\r\n // exist\r\n tableHead.appendChild(createElm('tr'));\r\n } else {\r\n // Headers row are moved from content table to headers table\r\n for (let i = 0; i < this.headRows.length; i++) {\r\n let row = this.tf.dom().rows[this.headRows[i]];\r\n tableHead.appendChild(row);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets width defined in configuration to passed element\r\n * @param {DOMElement} element DOM element\r\n * @private\r\n */\r\n setConfigWidth(element) {\r\n if (!this.width) {\r\n return;\r\n }\r\n if (this.width.indexOf('%') !== -1) {\r\n element.style.width = '100%';\r\n } else {\r\n element.style.width = this.width;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a list of header IDs used for specifing external sort triggers\r\n * @param {HTMLTableRowElement} row DOM row element\r\n * @returns {Array} List of IDs\r\n * @private\r\n */\r\n getSortTriggerIds(row) {\r\n let tf = this.tf;\r\n let sortTriggers = [];\r\n tf.eachCol((n) => {\r\n let c = row.cells[n];\r\n let thId = c.getAttribute('id');\r\n if (!thId || thId === '') {\r\n thId = `${this.prfxGridTh + n}_${tf.id}`;\r\n c.setAttribute('id', thId);\r\n }\r\n sortTriggers.push(thId);\r\n });\r\n return sortTriggers;\r\n }\r\n\r\n /**\r\n * Removes the grid layout\r\n */\r\n destroy() {\r\n let tf = this.tf;\r\n let tbl = tf.dom();\r\n\r\n if (!this.initialized) {\r\n return;\r\n }\r\n let t = removeElm(tbl);\r\n this.tblMainCont.parentNode.insertBefore(t, this.tblMainCont);\r\n removeElm(this.tblMainCont);\r\n\r\n this.tblMainCont = null;\r\n this.headTblCont = null;\r\n this.headTbl = null;\r\n this.tblCont = null;\r\n\r\n tbl.outerHTML = this.sourceTblHtml;\r\n //needed to keep reference of table element for future usage\r\n this.tf.tbl = elm(tf.id);\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import Cookie from '../cookie';\r\nimport {root} from '../root';\r\n\r\nconst JSON = root.JSON;\r\nconst localStorage = root.localStorage;\r\nconst location = root.location;\r\n\r\n/**\r\n * Checks if browser has Storage feature\r\n */\r\nexport const hasStorage = () => {\r\n return 'Storage' in root;\r\n};\r\n\r\n/**\r\n * Stores the features state in browser's local storage or cookie\r\n *\r\n * @export\r\n * @class Storage\r\n */\r\nexport class Storage {\r\n\r\n /**\r\n * Creates an instance of Storage\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n constructor(state) {\r\n\r\n /**\r\n * State object\r\n * @type {State}\r\n * @private\r\n */\r\n this.state = state;\r\n\r\n /**\r\n * TableFilter object\r\n * @type {TableFilter}\r\n * @private\r\n */\r\n this.tf = state.tf;\r\n\r\n /**\r\n * Persist with local storage\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.enableLocalStorage = state.enableLocalStorage && hasStorage();\r\n\r\n /**\r\n * Persist with cookie\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.enableCookie = state.enableCookie && !this.enableLocalStorage;\r\n\r\n /**\r\n * Emitter object\r\n * @type {Emitter}\r\n * @private\r\n */\r\n this.emitter = state.emitter;\r\n\r\n /**\r\n * Cookie duration in hours from state object\r\n * @type {Number}\r\n * @private\r\n */\r\n this.duration = state.cookieDuration;\r\n }\r\n\r\n\r\n /**\r\n * Initializes the Storage object\r\n */\r\n init() {\r\n this.emitter.on(['state-changed'], (tf, state) => this.save(state));\r\n this.emitter.on(['initialized'], () => this.sync());\r\n }\r\n\r\n /**\r\n * Persists the features state on state changes\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n save(state) {\r\n if (this.enableLocalStorage) {\r\n localStorage[this.getKey()] = JSON.stringify(state);\r\n } else {\r\n Cookie.write(this.getKey(), JSON.stringify(state), this.duration);\r\n }\r\n }\r\n\r\n /**\r\n * Turns stored string into a State JSON object\r\n *\r\n * @returns {Object} JSON object\r\n */\r\n retrieve() {\r\n let state = null;\r\n if (this.enableLocalStorage) {\r\n state = localStorage[this.getKey()];\r\n } else {\r\n state = Cookie.read(this.getKey());\r\n }\r\n\r\n if (!state) {\r\n return null;\r\n }\r\n return JSON.parse(state);\r\n }\r\n\r\n /**\r\n * Removes persisted state from storage\r\n */\r\n remove() {\r\n if (this.enableLocalStorage) {\r\n localStorage.removeItem(this.getKey());\r\n } else {\r\n Cookie.remove(this.getKey());\r\n }\r\n }\r\n\r\n /**\r\n * Applies persisted state to features\r\n */\r\n sync() {\r\n let state = this.retrieve();\r\n if (!state) {\r\n return;\r\n }\r\n // override current state with persisted one and sync features\r\n this.state.overrideAndSync(state);\r\n }\r\n\r\n /**\r\n * Returns the storage key\r\n *\r\n * @returns {String} Key\r\n */\r\n getKey() {\r\n return JSON.stringify({\r\n key: `${this.tf.prfxTf}_${this.tf.id}`,\r\n path: location.pathname\r\n });\r\n }\r\n\r\n /**\r\n * Release Storage event subscriptions and clear fields\r\n */\r\n destroy() {\r\n this.emitter.off(['state-changed'], (tf, state) => this.save(state));\r\n this.emitter.off(['initialized'], () => this.sync());\r\n\r\n this.remove();\r\n\r\n this.state = null;\r\n this.emitter = null;\r\n }\r\n}\r\n","import {addEvt, removeEvt} from '../event';\r\nimport {root} from '../root';\r\n\r\nconst JSON = root.JSON;\r\nconst location = root.location;\r\nconst decodeURIComponent = root.decodeURIComponent;\r\nconst encodeURIComponent = root.encodeURIComponent;\r\n\r\n/**\r\n * Checks if browser has onhashchange event\r\n */\r\nexport const hasHashChange = () => {\r\n let docMode = root.documentMode;\r\n return ('onhashchange' in root) && (docMode === undefined || docMode > 7);\r\n};\r\n\r\n/**\r\n * Manages state via URL hash changes\r\n *\r\n * @export\r\n * @class Hash\r\n */\r\nexport class Hash {\r\n\r\n /**\r\n * Creates an instance of Hash\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n constructor(state) {\r\n /**\r\n * State object\r\n * @type {State}\r\n */\r\n this.state = state;\r\n\r\n /**\r\n * Cached URL hash\r\n * @type {String} Hash string\r\n * @private\r\n */\r\n this.lastHash = null;\r\n\r\n /**\r\n * Application event emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = state.emitter;\r\n\r\n /**\r\n * Bound sync wrapper for future use\r\n * @private\r\n */\r\n this.boundSync = null;\r\n }\r\n\r\n /**\r\n * Initializes the Hash object\r\n */\r\n init() {\r\n if (!hasHashChange()) {\r\n return;\r\n }\r\n\r\n this.lastHash = location.hash;\r\n //Store a bound sync wrapper\r\n this.boundSync = this.sync.bind(this);\r\n this.emitter.on(['state-changed'], (tf, state) => this.update(state));\r\n this.emitter.on(['initialized'], this.boundSync);\r\n addEvt(root, 'hashchange', this.boundSync);\r\n }\r\n\r\n /**\r\n * Updates the URL hash based on a state change\r\n *\r\n * @param {State} state Instance of State\r\n */\r\n update(state) {\r\n let hash = `#${encodeURIComponent(JSON.stringify(state))}`;\r\n if (this.lastHash === hash) {\r\n return;\r\n }\r\n\r\n location.hash = hash;\r\n this.lastHash = hash;\r\n }\r\n\r\n /**\r\n * Converts a URL hash into a state JSON object\r\n *\r\n * @param {String} hash URL hash fragment\r\n * @returns {Object} JSON object\r\n */\r\n parse(hash) {\r\n if (hash.indexOf('#') === -1) {\r\n return null;\r\n }\r\n hash = hash.substr(1);\r\n return JSON.parse(decodeURIComponent(hash));\r\n }\r\n\r\n /**\r\n * Applies current hash state to features\r\n */\r\n sync() {\r\n let state = this.parse(location.hash);\r\n if (!state) {\r\n return;\r\n }\r\n // override current state with persisted one and sync features\r\n this.state.overrideAndSync(state);\r\n }\r\n\r\n /**\r\n * Release Hash event subscriptions and clear fields\r\n */\r\n destroy() {\r\n this.emitter.off(['state-changed'], (tf, state) => this.update(state));\r\n this.emitter.off(['initialized'], this.boundSync);\r\n removeEvt(root, 'hashchange', this.boundSync);\r\n\r\n this.state = null;\r\n this.lastHash = null;\r\n this.emitter = null;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {Hash} from './hash';\r\nimport {Storage} from './storage';\r\nimport {isEmpty} from '../string';\r\nimport {isArray, isNull, isString, isUndef} from '../types';\r\nimport {defaultsBool, defaultsNb} from '../settings';\r\n\r\n/**\r\n * Features state object persistable with localStorage, cookie or URL hash\r\n *\r\n * @export\r\n * @class State\r\n * @extends {Feature}\r\n */\r\nexport class State extends Feature {\r\n\r\n /**\r\n * Creates an instance of State\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'state');\r\n\r\n let cfg = this.config.state || {};\r\n\r\n /**\r\n * Determines whether state is persisted with URL hash\r\n * @type {Boolean}\r\n */\r\n this.enableHash = cfg === true ||\r\n (isArray(cfg.types) && cfg.types.indexOf('hash') !== -1);\r\n\r\n /**\r\n * Determines whether state is persisted with localStorage\r\n * @type {Boolean}\r\n */\r\n this.enableLocalStorage = isArray(cfg.types) &&\r\n cfg.types.indexOf('local_storage') !== -1;\r\n\r\n /**\r\n * Determines whether state is persisted with localStorage\r\n * @type {Boolean}\r\n */\r\n this.enableCookie = isArray(cfg.types) &&\r\n cfg.types.indexOf('cookie') !== -1;\r\n\r\n /**\r\n * Persist filters values, enabled by default\r\n * @type {Boolean}\r\n */\r\n this.persistFilters = defaultsBool(cfg.filters, true);\r\n\r\n /**\r\n * Persist current page number when paging is enabled\r\n * @type {Boolean}\r\n */\r\n this.persistPageNumber = Boolean(cfg.page_number);\r\n\r\n /**\r\n * Persist page length when paging is enabled\r\n * @type {Boolean}\r\n */\r\n this.persistPageLength = Boolean(cfg.page_length);\r\n\r\n /**\r\n * Persist column sorting\r\n * @type {Boolean}\r\n */\r\n this.persistSort = Boolean(cfg.sort);\r\n\r\n /**\r\n * Persist columns visibility\r\n * @type {Boolean}\r\n */\r\n this.persistColsVisibility = Boolean(cfg.columns_visibility);\r\n\r\n /**\r\n * Persist filters row visibility\r\n * @type {Boolean}\r\n */\r\n this.persistFiltersVisibility = Boolean(cfg.filters_visibility);\r\n\r\n /**\r\n * Cookie duration in hours\r\n * @type {Boolean}\r\n */\r\n this.cookieDuration = defaultsNb(parseInt(cfg.cookie_duration, 10),\r\n 87600);\r\n\r\n /**\r\n * Enable Storage if localStorage or cookie is required\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.enableStorage = this.enableLocalStorage || this.enableCookie;\r\n\r\n /**\r\n * Storage instance if storage is required\r\n * @type {Storage}\r\n * @private\r\n */\r\n this.storage = null;\r\n\r\n /**\r\n * Hash instance if URL hash is required\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hash = null;\r\n\r\n /**\r\n * Current page number\r\n * @type {Number}\r\n * @private\r\n */\r\n this.pageNb = null;\r\n\r\n /**\r\n * Current page length\r\n * @type {Number}\r\n * @private\r\n */\r\n this.pageLength = null;\r\n\r\n /**\r\n * Current column sorting\r\n * @type {Object}\r\n * @private\r\n */\r\n this.sort = null;\r\n\r\n /**\r\n * Current hidden columns\r\n * @type {Object}\r\n * @private\r\n */\r\n this.hiddenCols = null;\r\n\r\n /**\r\n * Filters row visibility\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.filtersVisibility = null;\r\n\r\n /**\r\n * State object\r\n * @type {Object}\r\n * @private\r\n */\r\n this.state = {};\r\n\r\n /**\r\n * Prefix for column ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxCol = 'col_';\r\n\r\n /**\r\n * Prefix for page number ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.pageNbKey = 'page';\r\n\r\n /**\r\n * Prefix for page length ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.pageLengthKey = 'page_length';\r\n\r\n /**\r\n * Prefix for filters visibility ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.filtersVisKey = 'filters_visibility';\r\n }\r\n\r\n /**\r\n * Initializes State instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.on(['after-filtering'], () => this.update());\r\n this.emitter.on(['after-page-change', 'after-clearing-filters'],\r\n (tf, pageNb) => this.updatePage(pageNb));\r\n this.emitter.on(['after-page-length-change'],\r\n (tf, pageLength) => this.updatePageLength(pageLength));\r\n this.emitter.on(['column-sorted'],\r\n (tf, index, descending) => this.updateSort(index, descending));\r\n this.emitter.on(['sort-initialized'], () => this._syncSort());\r\n this.emitter.on(['columns-visibility-initialized'],\r\n () => this._syncColsVisibility());\r\n this.emitter.on(['column-shown', 'column-hidden'], (tf, feature,\r\n colIndex, hiddenCols) => this.updateColsVisibility(hiddenCols));\r\n this.emitter.on(['filters-visibility-initialized'],\r\n () => this._syncFiltersVisibility());\r\n this.emitter.on(['filters-toggled'],\r\n (tf, extension, visible) => this.updateFiltersVisibility(visible));\r\n\r\n if (this.enableHash) {\r\n this.hash = new Hash(this);\r\n this.hash.init();\r\n }\r\n if (this.enableStorage) {\r\n this.storage = new Storage(this);\r\n this.storage.init();\r\n }\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n\r\n /**\r\n * Update state object based on current features state\r\n */\r\n update() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n let state = this.state;\r\n let tf = this.tf;\r\n\r\n if (this.persistFilters) {\r\n let filterValues = tf.getFiltersValue();\r\n\r\n filterValues.forEach((val, idx) => {\r\n let key = `${this.prfxCol}${idx}`;\r\n\r\n if (isString(val) && isEmpty(val)) {\r\n if (state.hasOwnProperty(key)) {\r\n state[key].flt = undefined;\r\n }\r\n } else {\r\n state[key] = state[key] || {};\r\n state[key].flt = val;\r\n }\r\n });\r\n }\r\n\r\n if (this.persistPageNumber) {\r\n if (isNull(this.pageNb)) {\r\n state[this.pageNbKey] = undefined;\r\n } else {\r\n state[this.pageNbKey] = this.pageNb;\r\n }\r\n }\r\n\r\n if (this.persistPageLength) {\r\n if (isNull(this.pageLength)) {\r\n state[this.pageLengthKey] = undefined;\r\n } else {\r\n state[this.pageLengthKey] = this.pageLength;\r\n }\r\n }\r\n\r\n if (this.persistSort) {\r\n if (!isNull(this.sort)) {\r\n // Remove previuosly sorted column\r\n Object.keys(state).forEach((key) => {\r\n if (key.indexOf(this.prfxCol) !== -1 && state[key]) {\r\n state[key].sort = undefined;\r\n }\r\n });\r\n\r\n let key = `${this.prfxCol}${this.sort.column}`;\r\n state[key] = state[key] || {};\r\n state[key].sort = { descending: this.sort.descending };\r\n }\r\n }\r\n\r\n if (this.persistColsVisibility) {\r\n if (!isNull(this.hiddenCols)) {\r\n // Clear previuosly hidden columns\r\n Object.keys(state).forEach((key) => {\r\n if (key.indexOf(this.prfxCol) !== -1 && state[key]) {\r\n state[key].hidden = undefined;\r\n }\r\n });\r\n\r\n this.hiddenCols.forEach((colIdx) => {\r\n let key = `${this.prfxCol}${colIdx}`;\r\n state[key] = state[key] || {};\r\n state[key].hidden = true;\r\n });\r\n }\r\n }\r\n\r\n if (this.persistFiltersVisibility) {\r\n if (isNull(this.filtersVisibility)) {\r\n state[this.filtersVisKey] = undefined;\r\n } else {\r\n state[this.filtersVisKey] = this.filtersVisibility;\r\n }\r\n }\r\n\r\n this.emitter.emit('state-changed', tf, state);\r\n }\r\n\r\n /**\r\n * Refresh page number field on page number changes\r\n *\r\n * @param {Number} pageNb Current page number\r\n */\r\n updatePage(pageNb) {\r\n this.pageNb = pageNb;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Refresh page length field on page length changes\r\n *\r\n * @param {Number} pageLength Current page length value\r\n */\r\n updatePageLength(pageLength) {\r\n this.pageLength = pageLength;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Refresh column sorting information on sort changes\r\n *\r\n * @param index {Number} Column index\r\n * @param {Boolean} descending Descending manner\r\n */\r\n updateSort(index, descending) {\r\n this.sort = {\r\n column: index,\r\n descending: descending\r\n };\r\n this.update();\r\n }\r\n\r\n /**\r\n * Refresh hidden columns information on columns visibility changes\r\n *\r\n * @param {Array} hiddenCols Columns indexes\r\n */\r\n updateColsVisibility(hiddenCols) {\r\n this.hiddenCols = hiddenCols;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Refresh filters visibility on filters visibility change\r\n *\r\n * @param {Boolean} visible Visibility flad\r\n */\r\n updateFiltersVisibility(visible) {\r\n this.filtersVisibility = visible;\r\n this.update();\r\n }\r\n\r\n /**\r\n * Override state field\r\n *\r\n * @param state State object\r\n */\r\n override(state) {\r\n this.state = state;\r\n this.emitter.emit('state-changed', this.tf, state);\r\n }\r\n\r\n /**\r\n * Sync stored features state\r\n */\r\n sync() {\r\n let state = this.state;\r\n let tf = this.tf;\r\n\r\n this._syncFilters();\r\n\r\n if (this.persistPageNumber) {\r\n let pageNumber = state[this.pageNbKey];\r\n this.emitter.emit('change-page', tf, pageNumber);\r\n }\r\n\r\n if (this.persistPageLength) {\r\n let pageLength = state[this.pageLengthKey];\r\n this.emitter.emit('change-page-results', tf, pageLength);\r\n }\r\n\r\n this._syncSort();\r\n this._syncColsVisibility();\r\n this._syncFiltersVisibility();\r\n }\r\n\r\n /**\r\n * Override current state with passed one and sync features\r\n *\r\n * @param {Object} state State object\r\n */\r\n overrideAndSync(state) {\r\n // To prevent state to react to features changes, state is temporarily\r\n // disabled\r\n this.disable();\r\n // State is overriden with passed state object\r\n this.override(state);\r\n // New hash state is applied to features\r\n this.sync();\r\n // State is re-enabled\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Sync filters with stored values and filter table\r\n *\r\n * @private\r\n */\r\n _syncFilters() {\r\n if (!this.persistFilters) {\r\n return;\r\n }\r\n let state = this.state;\r\n let tf = this.tf;\r\n\r\n // clear all filters\r\n // TODO: use tf.clearFilters() once it allows to not filter the table\r\n tf.eachCol((colIdx) => tf.setFilterValue(colIdx, ''));\r\n\r\n Object.keys(state).forEach((key) => {\r\n if (key.indexOf(this.prfxCol) !== -1) {\r\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\r\n let val = state[key].flt;\r\n tf.setFilterValue(colIdx, val);\r\n }\r\n });\r\n\r\n tf.filter();\r\n }\r\n\r\n /**\r\n * Sync sorted column with stored sorting information and sort table\r\n *\r\n * @private\r\n */\r\n _syncSort() {\r\n if (!this.persistSort) {\r\n return;\r\n }\r\n let state = this.state;\r\n let tf = this.tf;\r\n\r\n Object.keys(state).forEach((key) => {\r\n if (key.indexOf(this.prfxCol) !== -1) {\r\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\r\n if (!isUndef(state[key].sort)) {\r\n let sort = state[key].sort;\r\n this.emitter.emit('sort', tf, colIdx, sort.descending);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Sync hidden columns with stored information\r\n *\r\n * @private\r\n */\r\n _syncColsVisibility() {\r\n if (!this.persistColsVisibility) {\r\n return;\r\n }\r\n let state = this.state;\r\n let tf = this.tf;\r\n let hiddenCols = [];\r\n\r\n Object.keys(state).forEach((key) => {\r\n if (key.indexOf(this.prfxCol) !== -1) {\r\n let colIdx = parseInt(key.replace(this.prfxCol, ''), 10);\r\n if (!isUndef(state[key].hidden)) {\r\n hiddenCols.push(colIdx);\r\n }\r\n }\r\n });\r\n\r\n hiddenCols.forEach((colIdx) => {\r\n this.emitter.emit('hide-column', tf, colIdx);\r\n });\r\n }\r\n\r\n /**\r\n * Sync filters visibility with stored information\r\n *\r\n * @private\r\n */\r\n _syncFiltersVisibility() {\r\n if (!this.persistFiltersVisibility) {\r\n return;\r\n }\r\n let state = this.state;\r\n let tf = this.tf;\r\n let filtersVisibility = state[this.filtersVisKey];\r\n\r\n this.filtersVisibility = filtersVisibility;\r\n this.emitter.emit('show-filters', tf, filtersVisibility);\r\n }\r\n\r\n /**\r\n * Destroy State instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.state = {};\r\n\r\n this.emitter.off(['after-filtering'], () => this.update());\r\n this.emitter.off(['after-page-change', 'after-clearing-filters'],\r\n (tf, pageNb) => this.updatePage(pageNb));\r\n this.emitter.off(['after-page-length-change'],\r\n (tf, index) => this.updatePageLength(index));\r\n this.emitter.off(['column-sorted'],\r\n (tf, index, descending) => this.updateSort(index, descending));\r\n this.emitter.off(['sort-initialized'], () => this._syncSort());\r\n this.emitter.off(['columns-visibility-initialized'],\r\n () => this._syncColsVisibility());\r\n this.emitter.off(['column-shown', 'column-hidden'], (tf, feature,\r\n colIndex, hiddenCols) => this.updateColsVisibility(hiddenCols));\r\n this.emitter.off(['filters-visibility-initialized'],\r\n () => this._syncFiltersVisibility());\r\n this.emitter.off(['filters-toggled'],\r\n (tf, extension, visible) => this.updateFiltersVisibility(visible));\r\n\r\n if (this.enableHash) {\r\n this.hash.destroy();\r\n this.hash = null;\r\n }\r\n\r\n if (this.enableStorage) {\r\n this.storage.destroy();\r\n this.storage = null;\r\n }\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\nimport {createElm, createText, elm, removeElm} from '../dom';\nimport {addEvt, targetEvt, removeEvt} from '../event';\nimport {NONE} from '../const';\nimport {root} from '../root';\nimport {isEmpty, isNull} from '../types';\nimport {defaultsStr} from '../settings';\nimport {RIGHT} from './toolbar';\n\nconst WIKI_URL = 'https://github.com/koalyptus/TableFilter/wiki/' +\n '4.-Filter-operators';\nconst WEBSITE_URL = 'https://www.tablefilter.com/';\n\n/**\n * Help UI component\n */\nexport class Help extends Feature {\n\n /**\n * Creates an instance of Help\n * @param {TableFilter} tf TableFilter instance\n */\n constructor(tf) {\n super(tf, 'help');\n\n let f = this.config.help_instructions || {};\n\n /**\n * ID of main custom container element\n * @type {String}\n */\n this.tgtId = defaultsStr(f.target_id, null);\n\n /**\n * ID of custom container element for instructions\n * @type {String}\n */\n this.contTgtId = defaultsStr(f.container_target_id, null);\n\n /**\n * Instructions text (accepts HTML)\n * @type {String}\n */\n this.instrText = !isEmpty(f.text) ? f.text :\n 'Use the filters above each column to filter and limit table ' +\n 'data. Advanced searches can be performed by using the following ' +\n 'operators:
<, <=, >, ' +\n '>=, =, *, !, {, }, ' +\n '||,&&, [empty], [nonempty], ' +\n 'rgx:
' +\n 'Learn more
';\n\n /**\n * Instructions HTML\n * @type {String}\n */\n this.instrHtml = defaultsStr(f.html, null);\n\n /**\n * Help button text ('?')\n * @type {String}\n */\n this.btnText = defaultsStr(f.btn_text, '?');\n\n /**\n * Custom help button HTML\n * @type {String}\n */\n this.btnHtml = defaultsStr(f.btn_html, null);\n\n /**\n * Css class for help button\n * @type {String}\n */\n this.btnCssClass = defaultsStr(f.btn_css_class, 'helpBtn');\n\n /**\n * Css class for help container element\n * @type {String}\n */\n this.contCssClass = defaultsStr(f.container_css_class, 'helpCont');\n\n /**\n * Button DOM element\n * @type {DOMElement}\n */\n this.btn = null;\n\n /**\n * Help container DOM element\n * @type {DOMElement}\n */\n this.cont = null;\n\n /**\n * Bound mouseup wrapper\n * @private\n */\n this.boundMouseup = null;\n\n /**\n * Default HTML appended to instructions text\n * @type {String}\n */\n this.defaultHtml = '

TableFilter ' +\n 'v' + tf.version + '

' + '' + WEBSITE_URL + '' +\n '
©2015-' + tf.year + ' Max Guglielmi' +\n '
' +\n 'Close
';\n\n /**\n * Default position in toolbar ('left'|'center'|'right')\n * @type {String}\n */\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\n\n this.emitter.on(['init-help'], () => this.init());\n }\n\n /**\n * Mouse-up event handler handling popup auto-close behaviour\n * @private\n */\n onMouseup(evt) {\n let targetElm = targetEvt(evt);\n\n while (targetElm && targetElm !== this.cont && targetElm !== this.btn) {\n targetElm = targetElm.parentNode;\n }\n\n if (targetElm !== this.cont && targetElm !== this.btn) {\n this.toggle();\n }\n\n return;\n }\n\n /**\n * Initialise Help instance\n */\n init() {\n if (this.initialized) {\n return;\n }\n\n this.emitter.emit('initializing-feature', this, !isNull(this.tgtId));\n\n let tf = this.tf;\n\n let btn = createElm('span');\n let cont = createElm('div');\n\n this.boundMouseup = this.onMouseup.bind(this);\n\n //help button is added to defined element\n let targetEl = !this.tgtId ?\n tf.feature('toolbar').container(this.toolbarPosition) :\n elm(this.tgtId);\n targetEl.appendChild(btn);\n\n let divContainer = !this.contTgtId ? btn : elm(this.contTgtId);\n\n if (!this.btnHtml) {\n divContainer.appendChild(cont);\n let helplink = createElm('a', ['href', 'javascript:void(0);']);\n helplink.className = this.btnCssClass;\n helplink.appendChild(createText(this.btnText));\n btn.appendChild(helplink);\n addEvt(helplink, 'click', () => this.toggle());\n } else {\n btn.innerHTML = this.btnHtml;\n let helpEl = btn.firstChild;\n addEvt(helpEl, 'click', () => this.toggle());\n divContainer.appendChild(cont);\n }\n\n if (!this.instrHtml) {\n cont.innerHTML = this.instrText;\n cont.className = this.contCssClass;\n } else {\n if (this.contTgtId) {\n divContainer.appendChild(cont);\n }\n cont.innerHTML = this.instrHtml;\n if (!this.contTgtId) {\n cont.className = this.contCssClass;\n }\n }\n cont.innerHTML += this.defaultHtml;\n addEvt(cont, 'click', () => this.toggle());\n\n this.cont = cont;\n this.btn = btn;\n /** @inherited */\n this.initialized = true;\n\n this.emitter.emit('feature-initialized', this);\n }\n\n /**\n * Toggle help pop-up\n */\n toggle() {\n // check only if explicitily disabled as in this case undefined\n // signifies the help feature is enabled by default\n if (!this.isEnabled()) {\n return;\n }\n\n // ensure mouseup event handler is removed\n removeEvt(root, 'mouseup', this.boundMouseup);\n\n let divDisplay = this.cont.style.display;\n if (divDisplay === '' || divDisplay === NONE) {\n this.cont.style.display = 'inline';\n addEvt(root, 'mouseup', this.boundMouseup);\n } else {\n this.cont.style.display = NONE;\n }\n }\n\n /**\n * Remove help UI\n */\n destroy() {\n if (!this.initialized) {\n return;\n }\n removeElm(this.btn);\n this.btn = null;\n\n removeElm(this.cont);\n this.cont = null;\n\n this.boundMouseup = null;\n this.initialized = false;\n }\n\n}\n","import {Date as SugarDate} from 'sugar-date';\r\nimport 'sugar-date/locales';\r\nimport {Feature} from '../feature';\r\nimport {isObj, isArray} from '../types';\r\nimport {DATE} from '../const';\r\nimport {root} from '../root';\r\n\r\n/**\r\n * Wrapper for Sugar Date module providing datetime helpers and locales\r\n * @export\r\n * @class DateType\r\n */\r\nexport class DateType extends Feature {\r\n\r\n /**\r\n * Creates an instance of DateType\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'dateType');\r\n\r\n /**\r\n * Global locale\r\n * @type {String}\r\n */\r\n this.locale = tf.locale;\r\n\r\n /**\r\n * Sugar Date instance\r\n * @type {Object}\r\n */\r\n this.datetime = SugarDate;\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initialize DateType instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // Set global locale\r\n this.datetime.setLocale(this.locale);\r\n\r\n // Add formats from column types configuration if any\r\n this.addConfigFormats(this.tf.colTypes);\r\n\r\n this.emitter.on(\r\n ['add-date-type-formats'],\r\n (tf, types) => this.addConfigFormats(types)\r\n );\r\n\r\n // Broadcast date-type initialization\r\n this.emitter.emit('date-type-initialized', this.tf, this);\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Parse a string representation of a date for a specified locale and return\r\n * a date object\r\n * @param {String} dateStr String representation of a date\r\n * @param {String} localeCode Locale code (ie 'en-us')\r\n * @returns {Date}\r\n */\r\n parse(dateStr, localeCode) {\r\n return this.datetime.create(dateStr, localeCode);\r\n }\r\n\r\n /**\r\n * Check string representation of a date for a specified locale is valid\r\n * @param {any} dateStr String representation of a date\r\n * @param {any} localeCode Locale code (ie 'en-us')\r\n * @returns {Boolean}\r\n */\r\n isValid(dateStr, localeCode) {\r\n return this.datetime.isValid(this.parse(dateStr, localeCode));\r\n }\r\n\r\n /**\r\n * Return the type object of a specified column as per configuration or\r\n * passed collection\r\n * @param {Number} colIndex Column index\r\n * @param {Array} types Collection of column types, optional\r\n * @returns {Object}\r\n */\r\n getOptions(colIndex, types) {\r\n types = types || this.tf.colTypes;\r\n let colType = types[colIndex];\r\n return isObj(colType) ? colType : {};\r\n }\r\n\r\n /**\r\n * Return the locale code for supplied column index as per configuration\r\n * or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} Locale code (ie: 'en-us')\r\n */\r\n getLocale(colIndex) {\r\n return this.getOptions(colIndex).locale || this.locale;\r\n }\r\n\r\n /**\r\n * Add date time format(s) to a locale as specified by the passed\r\n * collection of column types, ie:\r\n * [\r\n * 'string',\r\n * 'number',\r\n * { type: 'date', locale: 'en', format: ['{dd}/{MM}/{yyyy}']}\r\n * ]\r\n *\r\n * @param {Array} [types=[]] Collection of column types\r\n */\r\n addConfigFormats(types=[]) {\r\n types.forEach((type, idx) => {\r\n let options = this.getOptions(idx, types);\r\n if (options.type === DATE && options.hasOwnProperty('format')) {\r\n let locale = this.datetime.getLocale(\r\n options.locale || this.locale\r\n );\r\n let formats = isArray(options.format) ?\r\n options.format : [options.format];\r\n\r\n // Sugar date module throws exceptions with locale.addFormat\r\n try {\r\n formats.forEach((format) => {\r\n locale.addFormat(format);\r\n });\r\n } catch (ex) {\r\n root.console.error(ex);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Remove DateType instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n // TODO: remove added formats\r\n\r\n this.emitter.off(\r\n ['add-date-type-formats'],\r\n (tf, types) => this.addConfigFormats(types)\r\n );\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {BaseDropdown} from './baseDropdown';\r\nimport {createElm, createOpt, elm} from '../dom';\r\nimport {has} from '../array';\r\nimport {matchCase} from '../string';\r\nimport {addEvt, targetEvt} from '../event';\r\nimport {SELECT, MULTIPLE, NONE} from '../const';\r\nimport {defaultsStr, defaultsBool} from '../settings';\r\n\r\n/**\r\n * Dropdown filter UI component\r\n * @export\r\n * @class Dropdown\r\n * @extends {BaseDropdown}\r\n */\r\nexport class Dropdown extends BaseDropdown {\r\n\r\n /**\r\n * Creates an instance of Dropdown\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, 'dropdown');\r\n\r\n // Configuration object\r\n let f = this.config;\r\n\r\n /**\r\n * Enable the reset filter option as first item\r\n * @type {Boolean}\r\n */\r\n this.enableSlcResetFilter =\r\n defaultsBool(f.enable_slc_reset_filter, true);\r\n\r\n /**\r\n * Non empty option text\r\n * @type {String}\r\n */\r\n this.nonEmptyText = defaultsStr(f.non_empty_text, '(Non empty)');\r\n\r\n /**\r\n * Tooltip text appearing on multiple select\r\n * @type {String}\r\n */\r\n this.multipleSlcTooltip = defaultsStr(f.multiple_slc_tooltip,\r\n 'Use Ctrl/Cmd key for multiple selections');\r\n }\r\n\r\n\r\n /**\r\n * Drop-down filter focus event handler\r\n * @param {Event} e DOM Event\r\n * @private\r\n */\r\n onSlcFocus(e) {\r\n let elm = targetEvt(e);\r\n let tf = this.tf;\r\n // select is populated when element has focus\r\n if (tf.loadFltOnDemand && elm.getAttribute('filled') === '0') {\r\n let ct = elm.getAttribute('ct');\r\n this.build(ct);\r\n }\r\n this.emitter.emit('filter-focus', tf, elm);\r\n }\r\n\r\n /**\r\n * Drop-down filter change event handler\r\n * @private\r\n */\r\n onSlcChange() {\r\n if (this.tf.onSlcChange) {\r\n this.tf.filter();\r\n }\r\n }\r\n\r\n /**\r\n * Refresh all drop-down filters\r\n */\r\n refreshAll() {\r\n let selectFlts = this.tf.getFiltersByType(SELECT, true);\r\n let multipleFlts = this.tf.getFiltersByType(MULTIPLE, true);\r\n let colIdxs = selectFlts.concat(multipleFlts);\r\n this.refreshFilters(colIdxs);\r\n }\r\n\r\n /**\r\n * Initialize drop-down filter\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isExternal External filter flag\r\n * @param {DOMElement} container Dom element containing the filter\r\n */\r\n init(colIndex, isExternal, container) {\r\n let tf = this.tf;\r\n let col = tf.getFilterType(colIndex);\r\n let externalFltTgtId = isExternal ?\r\n tf.externalFltIds[colIndex] : null;\r\n\r\n let slc = createElm(SELECT,\r\n ['id', tf.buildFilterId(colIndex)],\r\n ['ct', colIndex], ['filled', '0']\r\n );\r\n\r\n if (col === MULTIPLE) {\r\n slc.multiple = MULTIPLE;\r\n slc.title = this.multipleSlcTooltip;\r\n }\r\n slc.className = col.toLowerCase() === SELECT ?\r\n tf.fltCssClass : tf.fltMultiCssClass;\r\n\r\n //filter is appended in container element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(slc);\r\n } else {\r\n container.appendChild(slc);\r\n }\r\n\r\n tf.fltIds.push(slc.id);\r\n\r\n if (!tf.loadFltOnDemand) {\r\n this.build(colIndex);\r\n } else {\r\n //1st option is created here since build isn't invoked\r\n let opt0 = createOpt(tf.getClearFilterText(colIndex), '');\r\n slc.appendChild(opt0);\r\n }\r\n\r\n addEvt(slc, 'change', () => this.onSlcChange());\r\n addEvt(slc, 'focus', (e) => this.onSlcFocus(e));\r\n\r\n this.emitter.on(\r\n ['build-select-filter'],\r\n (tf, colIndex, isLinked, isExternal) =>\r\n this.build(colIndex, isLinked, isExternal)\r\n );\r\n this.emitter.on(\r\n ['select-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.on(['rows-changed'], () => this.refreshAll());\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Build drop-down filter UI\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} isLinked Enable linked filters behaviour\r\n */\r\n build(colIndex, isLinked = false) {\r\n let tf = this.tf;\r\n colIndex = Number(colIndex);\r\n\r\n this.emitter.emit('before-populating-filter', tf, colIndex);\r\n\r\n /** @inherited */\r\n this.opts = [];\r\n /** @inherited */\r\n this.optsTxt = [];\r\n\r\n let slc = tf.getFilterElement(colIndex);\r\n\r\n //custom select test\r\n /** @inherited */\r\n this.isCustom = tf.isCustomOptions(colIndex);\r\n\r\n //Retrieves custom values\r\n if (this.isCustom) {\r\n let customValues = tf.getCustomOptions(colIndex);\r\n this.opts = customValues[0];\r\n this.optsTxt = customValues[1];\r\n }\r\n\r\n //custom selects text\r\n let activeIdx;\r\n let activeFilterId = tf.getActiveFilterId();\r\n if (isLinked && activeFilterId) {\r\n activeIdx = tf.getColumnIndexFromFilterId(activeFilterId);\r\n }\r\n\r\n let excludedOpts = null,\r\n filteredDataCol = null;\r\n if (isLinked && tf.disableExcludedOptions) {\r\n excludedOpts = [];\r\n filteredDataCol = [];\r\n }\r\n\r\n let eachRow = tf.eachRow();\r\n eachRow(\r\n (row) => {\r\n let cellValue = tf.getCellValue(row.cells[colIndex]);\r\n //Vary Peter's patch\r\n let cellString = matchCase(cellValue, tf.caseSensitive);\r\n\r\n // checks if celldata is already in array\r\n if (!has(this.opts, cellString, tf.caseSensitive)) {\r\n this.opts.push(cellValue);\r\n }\r\n\r\n if (isLinked && tf.disableExcludedOptions) {\r\n let filteredCol = filteredDataCol[colIndex];\r\n if (!filteredCol) {\r\n filteredCol = tf.getVisibleColumnValues(colIndex);\r\n }\r\n if (!has(filteredCol, cellString, tf.caseSensitive) &&\r\n !has(excludedOpts, cellString, tf.caseSensitive)) {\r\n excludedOpts.push(cellValue);\r\n }\r\n }\r\n },\r\n // continue conditions function\r\n (row, k) => {\r\n // excluded rows don't need to appear on selects as always valid\r\n if (tf.excludeRows.indexOf(k) !== -1) {\r\n return true;\r\n }\r\n\r\n // checks if row has expected number of cells\r\n if (row.cells.length !== tf.nbCells || this.isCustom) {\r\n return true;\r\n }\r\n\r\n if (isLinked && !this.isValidLinkedValue(k, activeIdx)) {\r\n return true;\r\n }\r\n }\r\n );\r\n\r\n //sort options\r\n this.opts = this.sortOptions(colIndex, this.opts);\r\n if (excludedOpts) {\r\n excludedOpts = this.sortOptions(colIndex, excludedOpts);\r\n }\r\n\r\n //populates drop-down\r\n this.addOptions(colIndex, slc, isLinked, excludedOpts);\r\n\r\n this.emitter.emit('after-populating-filter', tf, colIndex, slc);\r\n }\r\n\r\n /**\r\n * Add drop-down options\r\n * @param {Number} colIndex Column index\r\n * @param {Object} slc Select Dom element\r\n * @param {Boolean} isLinked Enable linked refresh behaviour\r\n * @param {Array} excludedOpts Array of excluded options\r\n */\r\n addOptions(colIndex, slc, isLinked, excludedOpts) {\r\n let tf = this.tf,\r\n slcValue = slc.value;\r\n\r\n slc.innerHTML = '';\r\n slc = this.addFirstOption(slc);\r\n\r\n for (let y = 0; y < this.opts.length; y++) {\r\n if (this.opts[y] === '') {\r\n continue;\r\n }\r\n let val = this.opts[y]; //option value\r\n let lbl = this.isCustom ? this.optsTxt[y] : val; //option text\r\n let isDisabled = false;\r\n if (isLinked && tf.disableExcludedOptions &&\r\n has(excludedOpts, matchCase(val, tf.caseSensitive),\r\n tf.caseSensitive)) {\r\n isDisabled = true;\r\n }\r\n\r\n let opt;\r\n //fill select on demand\r\n if (tf.loadFltOnDemand && slcValue === this.opts[y] &&\r\n tf.getFilterType(colIndex) === SELECT) {\r\n opt = createOpt(lbl, val, true);\r\n } else {\r\n opt = createOpt(lbl, val, false);\r\n }\r\n if (isDisabled) {\r\n opt.disabled = true;\r\n }\r\n slc.appendChild(opt);\r\n }// for y\r\n\r\n slc.setAttribute('filled', '1');\r\n }\r\n\r\n /**\r\n * Add drop-down header option\r\n * @param {Object} slc Select DOM element\r\n */\r\n addFirstOption(slc) {\r\n let tf = this.tf;\r\n let colIdx = tf.getColumnIndexFromFilterId(slc.id);\r\n let opt0 = createOpt((!this.enableSlcResetFilter ?\r\n '' : tf.getClearFilterText(colIdx)), '');\r\n if (!this.enableSlcResetFilter) {\r\n opt0.style.display = NONE;\r\n }\r\n slc.appendChild(opt0);\r\n if (tf.enableEmptyOption) {\r\n let opt1 = createOpt(tf.emptyText, tf.emOperator);\r\n slc.appendChild(opt1);\r\n }\r\n if (tf.enableNonEmptyOption) {\r\n let opt2 = createOpt(tf.nonEmptyText, tf.nmOperator);\r\n slc.appendChild(opt2);\r\n }\r\n return slc;\r\n }\r\n\r\n /**\r\n * Select filter options programmatically\r\n * @param {Number} colIndex Column index\r\n * @param {Array} values Array of option values to select\r\n */\r\n selectOptions(colIndex, values = []) {\r\n let tf = this.tf;\r\n if (values.length === 0) {\r\n return;\r\n }\r\n let slc = tf.getFilterElement(colIndex);\r\n [].forEach.call(slc.options, (option) => {\r\n // Empty value means clear all selections and first option is the\r\n // clear all option\r\n if (values[0] === '' || option.value === '') {\r\n option.selected = false;\r\n }\r\n\r\n if (option.value !== '' && has(values, option.value, true)) {\r\n option.selected = true;\r\n }//if\r\n });\r\n }\r\n\r\n /**\r\n * Get filter values for a given column index\r\n * @param {Number} colIndex Column index\r\n * @returns {Array} values Array of selected values\r\n */\r\n getValues(colIndex) {\r\n let tf = this.tf;\r\n let slc = tf.getFilterElement(colIndex);\r\n let values = [];\r\n\r\n // IE >= 9 does not support the selectedOptions property :(\r\n if (slc.selectedOptions) {\r\n [].forEach.call(slc.selectedOptions,\r\n option => values.push(option.value));\r\n } else {\r\n [].forEach.call(slc.options, (option) => {\r\n if (option.selected) {\r\n values.push(option.value);\r\n }\r\n });\r\n }\r\n\r\n return values;\r\n }\r\n\r\n /**\r\n * Destroy Dropdown instance\r\n */\r\n destroy() {\r\n this.emitter.off(\r\n ['build-select-filter'],\r\n (colIndex, isLinked, isExternal) =>\r\n this.build(colIndex, isLinked, isExternal)\r\n );\r\n this.emitter.off(\r\n ['select-options'],\r\n (tf, colIndex, values) => this.selectOptions(colIndex, values)\r\n );\r\n this.emitter.off(['rows-changed'], () => this.refreshAll());\r\n this.initialized = false;\r\n }\r\n}\r\n","/**\n * Event emitter class\n */\nexport class Emitter {\n /**\n * Creates an instance of Emitter.\n */\n constructor() {\n /**\n * Events object\n * @type {Object}\n */\n this.events = {};\n }\n\n /**\n * Subscribe to an event\n * @param {Array} evts Collection of event names\n * @param {Function} fn Function invoked when event is emitted\n */\n on(evts, fn) {\n evts.forEach((evt) => {\n this.events[evt] = this.events[evt] || [];\n this.events[evt].push(fn);\n });\n }\n\n /**\n * Unsubscribe to an event\n * @param {Array} evts Collection of event names\n * @param {Function} fn Function invoked when event is emitted\n */\n off(evts, fn) {\n evts.forEach((evt) => {\n if (evt in this.events) {\n this.events[evt].splice(this.events[evt].indexOf(fn), 1);\n }\n });\n }\n\n /**\n * Emit an event\n * @param {String} evt Event name followed by any other argument passed to\n * the invoked function\n */\n emit(evt /*, args...*/) {\n if (evt in this.events) {\n for (let i = 0; i < this.events[evt].length; i++) {\n this.events[evt][i].apply(this, [].slice.call(arguments, 1));\n }\n }\n }\n}\n","'use strict';\n\nvar DURATION_REG = require('../var/DURATION_REG'),\n classChecks = require('../../common/var/classChecks'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize');\n\nvar isNumber = classChecks.isNumber;\n\nfunction getDateIncrementObject(amt) {\n var match, val, unit;\n if (isNumber(amt)) {\n return [amt, 'Milliseconds'];\n }\n match = amt.match(DURATION_REG);\n val = +match[1] || 1;\n unit = simpleCapitalize(match[2].toLowerCase());\n if (unit.match(/hour|minute|second/i)) {\n unit += 's';\n } else if (unit === 'Year') {\n unit = 'FullYear';\n } else if (unit === 'Week') {\n unit = 'Date';\n val *= 7;\n } else if (unit === 'Day') {\n unit = 'Date';\n }\n return [val, unit];\n}\n\nmodule.exports = getDateIncrementObject;","'use strict';\n\nvar MULTIPLIERS = {\n 'Hours': 60 * 60 * 1000,\n 'Minutes': 60 * 1000,\n 'Seconds': 1000,\n 'Milliseconds': 1\n};\n\nmodule.exports = MULTIPLIERS;","'use strict';\n\nvar MULTIPLIERS = require('../var/MULTIPLIERS'),\n callDateSet = require('../../common/internal/callDateSet'),\n callDateGet = require('../../common/internal/callDateGet');\n\nfunction incrementDate(src, amount, unit) {\n var mult = MULTIPLIERS[unit], d;\n if (mult) {\n d = new Date(src.getTime() + (amount * mult));\n } else {\n d = new Date(src);\n callDateSet(d, unit, callDateGet(src, unit) + amount);\n }\n return d;\n}\n\nmodule.exports = incrementDate;","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n namespaceAliases = require('../../common/var/namespaceAliases');\n\nvar isDate = classChecks.isDate,\n sugarDate = namespaceAliases.sugarDate;\n\nfunction getDateForRange(d) {\n if (isDate(d)) {\n return d;\n } else if (d == null) {\n return new Date();\n } else if (sugarDate.create) {\n return sugarDate.create(d);\n }\n return new Date(d);\n}\n\nmodule.exports = getDateForRange;","'use strict';\n\nvar classChecks = require('../../common/var/classChecks');\n\nvar isDate = classChecks.isDate;\n\nfunction getRangeMemberPrimitiveValue(m) {\n if (m == null) return m;\n return isDate(m) ? m.getTime() : m.valueOf();\n}\n\nmodule.exports = getRangeMemberPrimitiveValue;","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n getRangeMemberPrimitiveValue = require('./getRangeMemberPrimitiveValue');\n\nvar isDate = classChecks.isDate;\n\nfunction cloneRangeMember(m) {\n if (isDate(m)) {\n return new Date(m.getTime());\n } else {\n return getRangeMemberPrimitiveValue(m);\n }\n}\n\nmodule.exports = cloneRangeMember;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n dateFormat = require('./dateFormat'),\n classChecks = require('../../common/var/classChecks'),\n assertDateIsValid = require('./assertDateIsValid'),\n getAdjustedUnitForDate = require('./getAdjustedUnitForDate');\n\nvar isFunction = classChecks.isFunction,\n localeManager = LocaleHelpers.localeManager;\n\nfunction dateRelative(d, dRelative, arg1, arg2) {\n var adu, format, type, localeCode, fn;\n assertDateIsValid(d);\n if (isFunction(arg1)) {\n fn = arg1;\n } else {\n localeCode = arg1;\n fn = arg2;\n }\n adu = getAdjustedUnitForDate(d, dRelative);\n if (fn) {\n format = fn.apply(d, adu.concat(localeManager.get(localeCode)));\n if (format) {\n return dateFormat(d, format, localeCode);\n }\n }\n // Adjust up if time is in ms, as this doesn't\n // look very good for a standard relative date.\n if (adu[1] === 0) {\n adu[1] = 1;\n adu[0] = 1;\n }\n if (dRelative) {\n type = 'duration';\n } else if (adu[2] > 0) {\n type = 'future';\n } else {\n type = 'past';\n }\n return localeManager.get(localeCode).getRelativeFormat(adu, type);\n}\n\nmodule.exports = dateRelative;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n trim = require('../../common/internal/trim'),\n getMonth = require('./getMonth'),\n isDefined = require('../../common/internal/isDefined'),\n getNewDate = require('./getNewDate'),\n compareDay = require('./compareDay'),\n getWeekday = require('./getWeekday'),\n dateIsValid = require('./dateIsValid'),\n classChecks = require('../../common/var/classChecks'),\n compareDate = require('./compareDate');\n\nvar isString = classChecks.isString,\n English = LocaleHelpers.English;\n\nfunction fullCompareDate(date, d, margin) {\n var tmp;\n if (!dateIsValid(date)) return;\n if (isString(d)) {\n d = trim(d).toLowerCase();\n switch(true) {\n case d === 'future': return date.getTime() > getNewDate().getTime();\n case d === 'past': return date.getTime() < getNewDate().getTime();\n case d === 'today': return compareDay(date);\n case d === 'tomorrow': return compareDay(date, 1);\n case d === 'yesterday': return compareDay(date, -1);\n case d === 'weekday': return getWeekday(date) > 0 && getWeekday(date) < 6;\n case d === 'weekend': return getWeekday(date) === 0 || getWeekday(date) === 6;\n\n case (isDefined(tmp = English.weekdayMap[d])):\n return getWeekday(date) === tmp;\n case (isDefined(tmp = English.monthMap[d])):\n return getMonth(date) === tmp;\n }\n }\n return compareDate(date, d, margin);\n}\n\nmodule.exports = fullCompareDate;","'use strict';\n\nvar dateIsValid = require('./dateIsValid');\n\nfunction assertDateIsValid(d) {\n if (!dateIsValid(d)) {\n throw new TypeError('Date is not valid');\n }\n}\n\nmodule.exports = assertDateIsValid;","'use strict';\n\nvar _utc = require('../../common/var/_utc'),\n trunc = require('../../common/var/trunc'),\n tzOffset = require('./tzOffset'),\n padNumber = require('../../common/internal/padNumber'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar abs = mathAliases.abs;\n\nfunction getUTCOffset(d, iso) {\n var offset = _utc(d) ? 0 : tzOffset(d), hours, mins, colon;\n colon = iso === true ? ':' : '';\n if (!offset && iso) return 'Z';\n hours = padNumber(trunc(-offset / 60), 2, true);\n mins = padNumber(abs(offset % 60), 2);\n return hours + colon + mins;\n}\n\nmodule.exports = getUTCOffset;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getHours(d) {\n return callDateGet(d, 'Hours');\n}\n\nmodule.exports = getHours;","'use strict';\n\nvar CoreOutputFormats = {\n 'ISO8601': '{yyyy}-{MM}-{dd}T{HH}:{mm}:{ss}.{SSS}{Z}',\n 'RFC1123': '{Dow}, {dd} {Mon} {yyyy} {HH}:{mm}:{ss} {ZZ}',\n 'RFC1036': '{Weekday}, {dd}-{Mon}-{yy} {HH}:{mm}:{ss} {ZZ}'\n};\n\nmodule.exports = CoreOutputFormats;","'use strict';\n\nvar CoreOutputFormats = require('../var/CoreOutputFormats'),\n formattingTokens = require('../var/formattingTokens'),\n assertDateIsValid = require('./assertDateIsValid');\n\nvar dateFormatMatcher = formattingTokens.dateFormatMatcher;\n\nfunction dateFormat(d, format, localeCode) {\n assertDateIsValid(d);\n format = CoreOutputFormats[format] || format || '{long}';\n return dateFormatMatcher(format, d, localeCode);\n}\n\nmodule.exports = dateFormat;","'use strict';\n\nvar classChecks = require('../../common/var/classChecks'),\n simpleClone = require('../../common/internal/simpleClone'),\n isObjectType = require('../../common/internal/isObjectType'),\n getDateParamsFromString = require('./getDateParamsFromString'),\n collectDateParamsFromArguments = require('./collectDateParamsFromArguments');\n\nvar isNumber = classChecks.isNumber,\n isString = classChecks.isString;\n\nfunction collectDateArguments(args, allowDuration) {\n var arg1 = args[0], arg2 = args[1];\n if (allowDuration && isString(arg1)) {\n arg1 = getDateParamsFromString(arg1);\n } else if (isNumber(arg1) && isNumber(arg2)) {\n arg1 = collectDateParamsFromArguments(args);\n arg2 = null;\n } else {\n if (isObjectType(arg1)) {\n arg1 = simpleClone(arg1);\n }\n }\n return [arg1, arg2];\n}\n\nmodule.exports = collectDateArguments;","'use strict';\n\nvar updateDate = require('./updateDate'),\n collectDateArguments = require('./collectDateArguments');\n\nfunction advanceDateWithArgs(d, args, dir) {\n args = collectDateArguments(args, true);\n return updateDate(d, args[0], args[1], dir);\n}\n\nmodule.exports = advanceDateWithArgs;","'use strict';\n\nvar getExtendedDate = require('./getExtendedDate');\n\nfunction createDateWithContext(contextDate, d, options, forceClone) {\n return getExtendedDate(contextDate, d, options, forceClone).date;\n}\n\nmodule.exports = createDateWithContext;","'use strict';\n\nvar MINUTES = require('../var/MINUTES'),\n DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n _utc = require('../../common/var/_utc'),\n tzOffset = require('./tzOffset'),\n cloneDate = require('./cloneDate'),\n isDefined = require('../../common/internal/isDefined'),\n advanceDate = require('./advanceDate'),\n dateIsValid = require('./dateIsValid'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n getExtendedDate = require('./getExtendedDate'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit');\n\nvar MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction compareDate(date, d, margin, localeCode, options) {\n var loMargin = 0, hiMargin = 0, timezoneShift, compareEdges, override, min, max, p, t;\n\n function getTimezoneShift() {\n // If there is any specificity in the date then we're implicitly not\n // checking absolute time, so ignore timezone shifts.\n if (p.set && p.set.specificity) {\n return 0;\n }\n return (tzOffset(p.date) - tzOffset(date)) * MINUTES;\n }\n\n function addSpecificUnit() {\n var unit = DateUnits[p.set.specificity];\n return advanceDate(cloneDate(p.date), unit.name, 1).getTime() - 1;\n }\n\n if (_utc(date)) {\n options = options || {};\n options.fromUTC = true;\n options.setUTC = true;\n }\n\n p = getExtendedDate(null, d, options, true);\n\n if (margin > 0) {\n loMargin = hiMargin = margin;\n override = true;\n }\n if (!dateIsValid(p.date)) return false;\n if (p.set && p.set.specificity) {\n if (isDefined(p.set.edge) || isDefined(p.set.shift)) {\n compareEdges = true;\n moveToBeginningOfUnit(p.date, p.set.specificity, localeCode);\n }\n if (compareEdges || p.set.specificity === MONTH_INDEX) {\n max = moveToEndOfUnit(cloneDate(p.date), p.set.specificity, localeCode).getTime();\n } else {\n max = addSpecificUnit();\n }\n if (!override && isDefined(p.set.sign) && p.set.specificity) {\n // If the time is relative, there can occasionally be an disparity between\n // the relative date and \"now\", which it is being compared to, so set an\n // extra margin to account for this.\n loMargin = 50;\n hiMargin = -50;\n }\n }\n t = date.getTime();\n min = p.date.getTime();\n max = max || min;\n timezoneShift = getTimezoneShift();\n if (timezoneShift) {\n min -= timezoneShift;\n max -= timezoneShift;\n }\n return t >= (min - loMargin) && t <= (max + hiMargin);\n}\n\nmodule.exports = compareDate;","'use strict';\n\nvar setWeekday = require('./setWeekday'),\n getWeekday = require('./getWeekday'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar ceil = mathAliases.ceil;\n\nfunction moveToEndOfWeek(d, firstDayOfWeek) {\n var target = firstDayOfWeek - 1;\n setWeekday(d, ceil((getWeekday(d) - target) / 7) * 7 + target);\n return d;\n}\n\nmodule.exports = moveToEndOfWeek;","'use strict';\n\nvar getOwnKey = require('../../common/internal/getOwnKey');\n\nfunction getDateParamKey(params, key) {\n return getOwnKey(params, key) ||\n getOwnKey(params, key + 's') ||\n (key === 'day' && getOwnKey(params, 'date'));\n}\n\nmodule.exports = getDateParamKey;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n setDate = require('./setDate'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge'),\n moveToBeginningOfWeek = require('./moveToBeginningOfWeek');\n\nvar MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction moveToFirstDayOfWeekYear(d, firstDayOfWeek, firstDayOfWeekYear) {\n setUnitAndLowerToEdge(d, MONTH_INDEX);\n setDate(d, firstDayOfWeekYear);\n moveToBeginningOfWeek(d, firstDayOfWeek);\n}\n\nmodule.exports = moveToFirstDayOfWeekYear;","'use strict';\n\nvar ISODefaults = require('../var/ISODefaults'),\n getDate = require('./getDate'),\n setDate = require('./setDate'),\n setYear = require('./setYear'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n setMonth = require('./setMonth'),\n cloneDate = require('./cloneDate'),\n getWeekday = require('./getWeekday'),\n setWeekday = require('./setWeekday'),\n classChecks = require('../../common/var/classChecks'),\n moveToFirstDayOfWeekYear = require('./moveToFirstDayOfWeekYear');\n\nvar isNumber = classChecks.isNumber,\n ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR;\n\nfunction setISOWeekNumber(d, num) {\n if (isNumber(num)) {\n // Intentionally avoiding updateDate here to prevent circular dependencies.\n var isoWeek = cloneDate(d), dow = getWeekday(d);\n moveToFirstDayOfWeekYear(isoWeek, ISO_FIRST_DAY_OF_WEEK, ISO_FIRST_DAY_OF_WEEK_YEAR);\n setDate(isoWeek, getDate(isoWeek) + 7 * (num - 1));\n setYear(d, getYear(isoWeek));\n setMonth(d, getMonth(isoWeek));\n setDate(d, getDate(isoWeek));\n setWeekday(d, dow || 7);\n }\n return d.getTime();\n}\n\nmodule.exports = setISOWeekNumber;","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n getLowerUnitIndex = require('./getLowerUnitIndex');\n\nfunction walkUnitDown(unitIndex, fn) {\n while (unitIndex >= 0) {\n if (fn(DateUnits[unitIndex], unitIndex) === false) {\n break;\n }\n unitIndex = getLowerUnitIndex(unitIndex);\n }\n}\n\nmodule.exports = walkUnitDown;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX;\n\nfunction resetTime(d) {\n return setUnitAndLowerToEdge(d, HOURS_INDEX);\n}\n\nmodule.exports = resetTime;","'use strict';\n\nmodule.exports = 60 * 1000;","'use strict';\n\nvar mathAliases = require('../../common/var/mathAliases'),\n iterateOverDateUnits = require('./iterateOverDateUnits');\n\nvar abs = mathAliases.abs;\n\nfunction getAdjustedUnit(ms, fn) {\n var unitIndex = 0, value = 0;\n iterateOverDateUnits(function(unit, i) {\n value = abs(fn(unit));\n if (value >= 1) {\n unitIndex = i;\n return false;\n }\n });\n return [value, unitIndex, ms];\n}\n\nmodule.exports = getAdjustedUnit;","'use strict';\n\nvar mathAliases = require('../var/mathAliases');\n\nvar abs = mathAliases.abs,\n pow = mathAliases.pow,\n round = mathAliases.round;\n\nfunction withPrecision(val, precision, fn) {\n var multiplier = pow(10, abs(precision || 0));\n fn = fn || round;\n if (precision < 0) multiplier = 1 / multiplier;\n return fn(val * multiplier) / multiplier;\n}\n\nmodule.exports = withPrecision;","'use strict';\n\nmodule.exports = String.fromCharCode;","'use strict';\n\nvar getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n callDateGet = require('../../common/internal/callDateGet');\n\nfunction getDaysInMonth(d) {\n return 32 - callDateGet(new Date(getYear(d), getMonth(d), 32), 'Date');\n}\n\nmodule.exports = getDaysInMonth;","'use strict';\n\nfunction getRegNonCapturing(src, opt) {\n if (src.length > 1) {\n src = '(?:' + src + ')';\n }\n if (opt) {\n src += '?';\n }\n return src;\n}\n\nmodule.exports = getRegNonCapturing;","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar classToString = coreUtilityAliases.classToString;\n\nfunction isClass(obj, className, str) {\n if (!str) {\n str = classToString(obj);\n }\n return str === '[object '+ className +']';\n}\n\nmodule.exports = isClass;","'use strict';\n\nfunction map(arr, fn) {\n // perf: Not using fixed array len here as it may be sparse.\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n if (i in arr) {\n result.push(fn(arr[i], i));\n }\n }\n return result;\n}\n\nmodule.exports = map;","'use strict';\n\nvar LocalizedParsingTokens = {\n 'year': {\n base: 'yyyy',\n requiresSuffix: true\n },\n 'month': {\n base: 'MM',\n requiresSuffix: true\n },\n 'date': {\n base: 'dd',\n requiresSuffix: true\n },\n 'hour': {\n base: 'hh',\n requiresSuffixOr: ':'\n },\n 'minute': {\n base: 'mm'\n },\n 'second': {\n base: 'ss'\n },\n 'num': {\n src: '\\\\d+',\n requiresNumerals: true\n }\n};\n\nmodule.exports = LocalizedParsingTokens;","'use strict';\n\nvar ParsingTokens = {\n 'yyyy': {\n param: 'year',\n src: '\\\\d{4}'\n },\n 'MM': {\n param: 'month',\n src: '[01]?\\\\d'\n },\n 'dd': {\n param: 'date',\n src: '[0123]?\\\\d'\n },\n 'hh': {\n param: 'hour',\n src: '[0-2]?\\\\d'\n },\n 'mm': {\n param: 'minute',\n src: '[0-5]\\\\d'\n },\n 'ss': {\n param: 'second',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'yy': {\n param: 'year',\n src: '\\\\d{2}'\n },\n 'y': {\n param: 'year',\n src: '\\\\d'\n },\n 'yearSign': {\n src: '[+-]',\n sign: true\n },\n 'tzHour': {\n src: '[0-1]\\\\d'\n },\n 'tzMinute': {\n src: '[0-5]\\\\d'\n },\n 'tzSign': {\n src: '[+−-]',\n sign: true\n },\n 'ihh': {\n param: 'hour',\n src: '[0-2]?\\\\d(?:[,.]\\\\d+)?'\n },\n 'imm': {\n param: 'minute',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'GMT': {\n param: 'utc',\n src: 'GMT',\n val: 1\n },\n 'Z': {\n param: 'utc',\n src: 'Z',\n val: 1\n },\n 'timestamp': {\n src: '\\\\d+'\n }\n};\n\nmodule.exports = ParsingTokens;","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar AmericanEnglishDefinition = getEnglishVariant({\n 'mdy': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'short': '{MM}/{dd}/{yyyy}',\n 'medium': '{Month} {d}, {yyyy}',\n 'long': '{Month} {d}, {yyyy} {time}',\n 'full': '{Weekday}, {Month} {d}, {yyyy} {time}',\n 'stamp': '{Dow} {Mon} {d} {yyyy} {time}',\n 'time': '{h}:{mm} {TT}'\n});\n\nmodule.exports = AmericanEnglishDefinition;","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","import {addEvt, cancelEvt, stopEvt, targetEvt, isKeyPressed} from './event';\r\nimport {\r\n addClass, createElm, createOpt, elm, getText, getFirstTextNode,\r\n removeClass, tag\r\n} from './dom';\r\nimport {contains, matchCase, rgxEsc, trim} from './string';\r\nimport {\r\n isArray, isEmpty, isFn, isNumber, isObj, isString, isUndef, EMPTY_FN,\r\n isBoolean\r\n} from './types';\r\nimport {parse as parseNb} from './number';\r\nimport {\r\n defaultsBool, defaultsStr, defaultsFn,\r\n defaultsNb, defaultsArr\r\n} from './settings';\r\n\r\nimport {root} from './root';\r\nimport {Emitter} from './emitter';\r\nimport {Dropdown} from './modules/dropdown';\r\nimport {CheckList} from './modules/checkList';\r\n\r\nimport {\r\n INPUT, SELECT, MULTIPLE, CHECKLIST, NONE,\r\n ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY,\r\n CELL_TAG, AUTO_FILTER_DELAY, NUMBER, DATE, FORMATTED_NUMBER,\r\n FEATURES\r\n} from './const';\r\n\r\nlet doc = root.document;\r\n\r\n/**\r\n * Makes HTML tables filterable and a bit more :)\r\n *\r\n * @export\r\n * @class TableFilter\r\n */\r\nexport class TableFilter {\r\n\r\n /**\r\n * Creates an instance of TableFilter\r\n * requires `table` or `id` arguments, `row` and `configuration` optional\r\n * @param {HTMLTableElement} table Table DOM element\r\n * @param {String} id Table id\r\n * @param {Number} row index indicating the 1st row\r\n * @param {Object} configuration object\r\n */\r\n constructor(...args) {\r\n /**\r\n * ID of current instance\r\n * @type {String}\r\n * @private\r\n */\r\n this.id = null;\r\n\r\n /**\r\n * Current version\r\n * @type {String}\r\n */\r\n this.version = '0.6.59';\r\n\r\n /**\r\n * Current year\r\n * @type {Number}\r\n * @private\r\n */\r\n this.year = new Date().getFullYear();\r\n\r\n /**\r\n * HTML Table DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.tbl = null;\r\n\r\n /**\r\n * Calculated row's index from which starts filtering once filters\r\n * are generated\r\n * @type {Number}\r\n */\r\n this.refRow = null;\r\n\r\n /**\r\n * Index of the headers row\r\n * @type {Number}\r\n * @private\r\n */\r\n this.headersRow = null;\r\n\r\n /**\r\n * Configuration object\r\n * @type {Object}\r\n * @private\r\n */\r\n this.cfg = {};\r\n\r\n /**\r\n * Number of rows that can be filtered\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbFilterableRows = 0;\r\n\r\n /**\r\n * Number of cells in the reference row\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbCells = null;\r\n\r\n /**\r\n * Has a configuration object\r\n * @type {Object}\r\n * @private\r\n */\r\n this.hasConfig = false;\r\n\r\n /** @private */\r\n this.initialized = false;\r\n\r\n let startRow;\r\n\r\n // TODO: use for-of\r\n args.forEach((arg) => {\r\n if (typeof arg === 'object' && arg.nodeName === 'TABLE') {\r\n this.tbl = arg;\r\n this.id = arg.id || `tf_${new Date().getTime()}_`;\r\n this.tbl.id = this.id;\r\n } else if (isString(arg)) {\r\n this.id = arg;\r\n this.tbl = elm(arg);\r\n } else if (isNumber(arg)) {\r\n startRow = arg;\r\n } else if (isObj(arg)) {\r\n this.cfg = arg;\r\n this.hasConfig = true;\r\n }\r\n });\r\n\r\n if (!this.tbl || this.tbl.nodeName !== 'TABLE') {\r\n throw new Error(`Could not instantiate TableFilter: HTML table\r\n DOM element not found.`);\r\n }\r\n\r\n if (this.getRowsNb(true) === 0) {\r\n throw new Error(`Could not instantiate TableFilter: HTML table\r\n requires at least 1 row.`);\r\n }\r\n\r\n // configuration object\r\n let f = this.cfg;\r\n\r\n /**\r\n * Event emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = new Emitter();\r\n\r\n // start row\r\n this.refRow = isUndef(startRow) ? 2 : (startRow + 1);\r\n\r\n /**\r\n * Collection of filter type by column\r\n * @type {Array}\r\n * @private\r\n */\r\n this.filterTypes = [].map.call(\r\n (this.dom().rows[this.refRow] || this.dom().rows[0]).cells,\r\n (cell, idx) => {\r\n let colType = this.cfg[`col_${idx}`];\r\n return !colType ? INPUT : colType.toLowerCase();\r\n });\r\n\r\n /**\r\n * Base path for static assets\r\n * @type {String}\r\n */\r\n this.basePath = defaultsStr(f.base_path, 'tablefilter/');\r\n\r\n /*** filters' grid properties ***/\r\n\r\n /**\r\n * Enable/disable filters\r\n * @type {Boolean}\r\n */\r\n this.fltGrid = defaultsBool(f.grid, true);\r\n\r\n /**\r\n * Enable/disable grid layout (fixed headers)\r\n * @type {Object|Boolean}\r\n */\r\n this.gridLayout = isObj(f.grid_layout) || Boolean(f.grid_layout);\r\n\r\n /**\r\n * Filters row index\r\n * @type {Number}\r\n */\r\n this.filtersRowIndex = defaultsNb(f.filters_row_index, 0);\r\n\r\n /**\r\n * Headers row index\r\n * @type {Number}\r\n */\r\n this.headersRow = defaultsNb(f.headers_row_index,\r\n (this.filtersRowIndex === 0 ? 1 : 0));\r\n\r\n /**\r\n * Define the type of cell containing a filter (td/th)\r\n * @type {String}\r\n */\r\n this.fltCellTag = defaultsStr(f.filters_cell_tag, CELL_TAG);\r\n\r\n /**\r\n * List of filters IDs\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIds = [];\r\n\r\n /**\r\n * List of valid rows indexes (rows visible upon filtering)\r\n * @type {Array}\r\n * @private\r\n */\r\n this.validRowsIndex = [];\r\n\r\n /*** filters' grid appearance ***/\r\n /**\r\n * Path for stylesheets\r\n * @type {String}\r\n */\r\n this.stylePath = this.getStylePath();\r\n\r\n /**\r\n * Main stylesheet path\r\n * @type {String}\r\n */\r\n this.stylesheet = this.getStylesheetPath();\r\n\r\n /**\r\n * Main stylesheet ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.stylesheetId = this.id + '_style';\r\n\r\n /**\r\n * Css class for the filters row\r\n * @type {String}\r\n */\r\n this.fltsRowCssClass = defaultsStr(f.flts_row_css_class, 'fltrow');\r\n\r\n /**\r\n * Enable/disable icons (paging, reset button)\r\n * @type {Boolean}\r\n */\r\n this.enableIcons = defaultsBool(f.enable_icons, true);\r\n\r\n /**\r\n * Enable/disable alternating rows\r\n * @type {Boolean}\r\n */\r\n this.alternateRows = Boolean(f.alternate_rows);\r\n\r\n /**\r\n * Columns widths array\r\n * @type {Array}\r\n */\r\n this.colWidths = defaultsArr(f.col_widths, []);\r\n\r\n /**\r\n * Default column width when column widths are defined\r\n */\r\n this.defaultColWidth = defaultsNb(f.default_col_width, 100);\r\n\r\n /**\r\n * Css class for a filter element\r\n * @type {String}\r\n */\r\n this.fltCssClass = defaultsStr(f.flt_css_class, 'flt');\r\n\r\n /**\r\n * Css class for multiple select filters\r\n * @type {String}\r\n */\r\n this.fltMultiCssClass = defaultsStr(f.flt_multi_css_class, 'flt_multi');\r\n\r\n /**\r\n * Css class for small filter (when submit button is active)\r\n * @type {String}\r\n */\r\n this.fltSmallCssClass = defaultsStr(f.flt_small_css_class, 'flt_s');\r\n\r\n /**\r\n * Css class for single filter type\r\n * @type {String}\r\n */\r\n this.singleFltCssClass = defaultsStr((f.single_filter || {}).css_class,\r\n 'single_flt');\r\n\r\n /*** filters' grid behaviours ***/\r\n\r\n /**\r\n * Enable/disable enter key for input type filters\r\n * @type {Boolean}\r\n */\r\n this.enterKey = defaultsBool(f.enter_key, true);\r\n\r\n /**\r\n * Callback fired before filtering process starts\r\n * @type {Function}\r\n */\r\n this.onBeforeFilter = defaultsFn(f.on_before_filter, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after filtering process is completed\r\n * @type {Function}\r\n */\r\n this.onAfterFilter = defaultsFn(f.on_after_filter, EMPTY_FN);\r\n\r\n /**\r\n * Enable/disable case sensitivity filtering\r\n * @type {Boolean}\r\n */\r\n this.caseSensitive = Boolean(f.case_sensitive);\r\n\r\n /**\r\n * Indicate whether exact match filtering is enabled on a per column\r\n * basis\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasExactMatchByCol = isArray(f.columns_exact_match);\r\n\r\n /**\r\n * Exact match filtering per column array\r\n * @type {Array}\r\n */\r\n this.exactMatchByCol = this.hasExactMatchByCol ?\r\n f.columns_exact_match : [];\r\n\r\n /**\r\n * Globally enable/disable exact match filtering\r\n * @type {Boolean}\r\n */\r\n this.exactMatch = Boolean(f.exact_match);\r\n\r\n /**\r\n * Ignore diacritics globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\r\n this.ignoreDiacritics = f.ignore_diacritics;\r\n\r\n /**\r\n * Enable/disable linked filters filtering mode\r\n * @type {Boolean}\r\n */\r\n this.linkedFilters = Boolean(f.linked_filters);\r\n\r\n /**\r\n * Enable/disable readonly state for excluded options when\r\n * linked filters filtering mode is on\r\n * @type {Boolean}\r\n */\r\n this.disableExcludedOptions = Boolean(f.disable_excluded_options);\r\n\r\n /**\r\n * Active filter ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.activeFilterId = null;\r\n\r\n /**\r\n * Determine if there are excluded rows from filtering\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasExcludedRows = Boolean(isArray(f.exclude_rows) &&\r\n f.exclude_rows.length > 0);\r\n\r\n /**\r\n * List of row indexes to be excluded from filtering\r\n * @type {Array}\r\n */\r\n this.excludeRows = defaultsArr(f.exclude_rows, []);\r\n\r\n /**\r\n * List of containers IDs where external filters will be generated\r\n * @type {Array}\r\n */\r\n this.externalFltIds = defaultsArr(f.external_flt_ids, []);\r\n\r\n /**\r\n * Callback fired after filters are generated\r\n * @type {Function}\r\n */\r\n this.onFiltersLoaded = defaultsFn(f.on_filters_loaded, EMPTY_FN);\r\n\r\n /**\r\n * Enable/disable single filter mode\r\n * @type {Boolean|Object}\r\n */\r\n this.singleFlt = isObj(f.single_filter) ||\r\n Boolean(f.single_filter);\r\n\r\n /**\r\n * Specify columns to be excluded from single filter search, by default\r\n * searching in all columns:\r\n * single_filter: {\r\n * exclude_cols: [2, 7]\r\n * }\r\n */\r\n this.singleFltExcludeCols = isObj(f.single_filter) &&\r\n isArray(f.single_filter.exclude_cols) ?\r\n f.single_filter.exclude_cols : [];\r\n\r\n /**\r\n * Callback fired after a row is validated during filtering\r\n * @type {Function}\r\n */\r\n this.onRowValidated = defaultsFn(f.on_row_validated, EMPTY_FN);\r\n\r\n /**\r\n * Specify which column implements a custom cell parser to retrieve the\r\n * cell value:\r\n * cell_parser: {\r\n * cols: [0, 2],\r\n * parse: function(tf, cell, colIndex) {\r\n * // custom cell parser logic here\r\n * return cellValue;\r\n * }\r\n * }\r\n * @type {Object}\r\n */\r\n this.cellParser = isObj(f.cell_parser) && isFn(f.cell_parser.parse) &&\r\n isArray(f.cell_parser.cols) ?\r\n f.cell_parser : { cols: [], parse: EMPTY_FN };\r\n\r\n /**\r\n * Global watermark text for input filter type or watermark for each\r\n * filter if an array is supplied\r\n * @type {String|Array}\r\n */\r\n this.watermark = f.watermark || '';\r\n\r\n /**\r\n * Indicate whether watermark is on a per column basis\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isWatermarkArray = isArray(this.watermark);\r\n\r\n /**\r\n * Indicate whether help UI component is disabled\r\n * @type {Boolean}\r\n */\r\n this.help = isUndef(f.help_instructions) ? undefined :\r\n (isObj(f.help_instructions) || Boolean(f.help_instructions));\r\n\r\n /**\r\n * Indicate whether pop-up filters UI is enabled\r\n * @type {Boolean|Object}\r\n */\r\n this.popupFilters = isObj(f.popup_filters) || Boolean(f.popup_filters);\r\n\r\n /**\r\n * Indicate whether filtered (active) columns indicator is enabled\r\n * @type {Boolean}\r\n */\r\n this.markActiveColumns = isObj(f.mark_active_columns) ||\r\n Boolean(f.mark_active_columns);\r\n\r\n /*** select filter's customisation and behaviours ***/\r\n /**\r\n * Text for clear option in drop-down filter types (1st option)\r\n * @type {String|Array}\r\n */\r\n this.clearFilterText = defaultsStr(f.clear_filter_text, 'Clear');\r\n\r\n /**\r\n * Indicate whether empty option is enabled in drop-down filter types\r\n * @type {Boolean}\r\n */\r\n this.enableEmptyOption = Boolean(f.enable_empty_option);\r\n\r\n /**\r\n * Text for empty option in drop-down filter types\r\n * @type {String}\r\n */\r\n this.emptyText = defaultsStr(f.empty_text, '(Empty)');\r\n\r\n /**\r\n * Indicate whether non-empty option is enabled in drop-down filter\r\n * types\r\n * @type {Boolean}\r\n */\r\n this.enableNonEmptyOption = Boolean(f.enable_non_empty_option);\r\n\r\n /**\r\n * Text for non-empty option in drop-down filter types\r\n * @type {String}\r\n */\r\n this.nonEmptyText = defaultsStr(f.non_empty_text, '(Non empty)');\r\n\r\n /**\r\n * Indicate whether drop-down filter types filter the table by default\r\n * on change event\r\n * @type {Boolean}\r\n */\r\n this.onSlcChange = defaultsBool(f.on_change, true);\r\n\r\n /**\r\n * Make drop-down filter types options sorted in alpha-numeric manner\r\n * by default globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\r\n this.sortSlc = isUndef(f.sort_select) ? true :\r\n isArray(f.sort_select) ? f.sort_select : Boolean(f.sort_select);\r\n\r\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * ascending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isSortNumAsc = Boolean(f.sort_num_asc);\r\n\r\n /**\r\n * List of columns implementing options sorting in a ascending numeric\r\n * manner\r\n * @type {Array}\r\n */\r\n this.sortNumAsc = this.isSortNumAsc ? f.sort_num_asc : [];\r\n\r\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * descending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isSortNumDesc = Boolean(f.sort_num_desc);\r\n\r\n /**\r\n * List of columns implementing options sorting in a descending numeric\r\n * manner\r\n * @type {Array}\r\n */\r\n this.sortNumDesc = this.isSortNumDesc ? f.sort_num_desc : [];\r\n\r\n /**\r\n * Indicate whether drop-down filter types are populated on demand at\r\n * first usage\r\n * @type {Boolean}\r\n */\r\n this.loadFltOnDemand = Boolean(f.load_filters_on_demand);\r\n\r\n /**\r\n * Indicate whether custom drop-down filter options are implemented\r\n * @type {Boolean}\r\n */\r\n this.hasCustomOptions = isObj(f.custom_options);\r\n\r\n /**\r\n * Custom options definition of a per column basis, ie:\r\n *\tcustom_options: {\r\n * cols:[0, 1],\r\n * texts: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * values: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * sorts: [false, true]\r\n * }\r\n *\r\n * @type {Object}\r\n */\r\n this.customOptions = f.custom_options;\r\n\r\n /*** Filter operators ***/\r\n /**\r\n * Regular expression operator for input filter. Defaults to 'rgx:'\r\n * @type {String}\r\n */\r\n this.rgxOperator = defaultsStr(f.regexp_operator, 'rgx:');\r\n\r\n /**\r\n * Empty cells operator for input filter. Defaults to '[empty]'\r\n * @type {String}\r\n */\r\n this.emOperator = defaultsStr(f.empty_operator, '[empty]');\r\n\r\n /**\r\n * Non-empty cells operator for input filter. Defaults to '[nonempty]'\r\n * @type {String}\r\n */\r\n this.nmOperator = defaultsStr(f.nonempty_operator, '[nonempty]');\r\n\r\n /**\r\n * Logical OR operator for input filter. Defaults to '||'\r\n * @type {String}\r\n */\r\n this.orOperator = defaultsStr(f.or_operator, '||');\r\n\r\n /**\r\n * Logical AND operator for input filter. Defaults to '&&'\r\n * @type {String}\r\n */\r\n this.anOperator = defaultsStr(f.and_operator, '&&');\r\n\r\n /**\r\n * Greater than operator for input filter. Defaults to '>'\r\n * @type {String}\r\n */\r\n this.grOperator = defaultsStr(f.greater_operator, '>');\r\n\r\n /**\r\n * Lower than operator for input filter. Defaults to '<'\r\n * @type {String}\r\n */\r\n this.lwOperator = defaultsStr(f.lower_operator, '<');\r\n\r\n /**\r\n * Lower than or equal operator for input filter. Defaults to '<='\r\n * @type {String}\r\n */\r\n this.leOperator = defaultsStr(f.lower_equal_operator, '<=');\r\n\r\n /**\r\n * Greater than or equal operator for input filter. Defaults to '>='\r\n * @type {String}\r\n */\r\n this.geOperator = defaultsStr(f.greater_equal_operator, '>=');\r\n\r\n /**\r\n * Inequality operator for input filter. Defaults to '!'\r\n * @type {String}\r\n */\r\n this.dfOperator = defaultsStr(f.different_operator, '!');\r\n\r\n /**\r\n * Like operator for input filter. Defaults to '*'\r\n * @type {String}\r\n */\r\n this.lkOperator = defaultsStr(f.like_operator, '*');\r\n\r\n /**\r\n * Strict equality operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.eqOperator = defaultsStr(f.equal_operator, '=');\r\n\r\n /**\r\n * Starts with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.stOperator = defaultsStr(f.start_with_operator, '{');\r\n\r\n /**\r\n * Ends with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.enOperator = defaultsStr(f.end_with_operator, '}');\r\n\r\n // this.curExp = f.cur_exp || '^[¥£€$]';\r\n\r\n /**\r\n * Stored values separator\r\n * @type {String}\r\n */\r\n this.separator = defaultsStr(f.separator, ',');\r\n\r\n /**\r\n * Enable rows counter UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.rowsCounter = isObj(f.rows_counter) || Boolean(f.rows_counter);\r\n\r\n /**\r\n * Enable status bar UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.statusBar = isObj(f.status_bar) || Boolean(f.status_bar);\r\n\r\n /**\r\n * Enable activity/spinner indicator UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.loader = isObj(f.loader) || Boolean(f.loader);\r\n\r\n /*** validation - reset buttons/links ***/\r\n /**\r\n * Enable filters submission button\r\n * @type {Boolean}\r\n */\r\n this.displayBtn = Boolean(f.btn);\r\n\r\n /**\r\n * Define filters submission button text\r\n * @type {String}\r\n */\r\n this.btnText = defaultsStr(f.btn_text, (!this.enableIcons ? 'Go' : ''));\r\n\r\n /**\r\n * Css class for filters submission button\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class,\r\n (!this.enableIcons ? 'btnflt' : 'btnflt_icon'));\r\n\r\n /**\r\n * Enable clear button\r\n * @type {Object|Boolean}\r\n */\r\n this.btnReset = isObj(f.btn_reset) || Boolean(f.btn_reset);\r\n\r\n /**\r\n * Callback fired before filters are cleared\r\n * @type {Function}\r\n */\r\n this.onBeforeReset = defaultsFn(f.on_before_reset, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after filters are cleared\r\n * @type {Function}\r\n */\r\n this.onAfterReset = defaultsFn(f.on_after_reset, EMPTY_FN);\r\n\r\n /**\r\n * Enable paging component\r\n * @type {Object|Boolean}\r\n */\r\n this.paging = isObj(f.paging) || Boolean(f.paging);\r\n\r\n /**\r\n * Number of hidden rows\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbHiddenRows = 0;\r\n\r\n /**\r\n * Enable auto-filter behaviour, table is filtered when a user\r\n * stops typing\r\n * @type {Object|Boolean}\r\n */\r\n this.autoFilter = isObj(f.auto_filter) || Boolean(f.auto_filter);\r\n\r\n /**\r\n * Auto-filter delay in milliseconds\r\n * @type {Number}\r\n */\r\n this.autoFilterDelay = isObj(f.auto_filter) &&\r\n isNumber(f.auto_filter.delay) ?\r\n f.auto_filter.delay : AUTO_FILTER_DELAY;\r\n\r\n /**\r\n * Indicate whether user is typing\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isUserTyping = null;\r\n\r\n /**\r\n * Auto-filter interval ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.autoFilterTimer = null;\r\n\r\n /**\r\n * Enable keyword highlighting behaviour\r\n * @type {Boolean}\r\n */\r\n this.highlightKeywords = Boolean(f.highlight_keywords);\r\n\r\n /**\r\n * Enable no results message UI component\r\n * @type {Object|Boolean}\r\n */\r\n this.noResults = isObj(f.no_results_message) ||\r\n Boolean(f.no_results_message);\r\n\r\n /**\r\n * Enable state persistence\r\n * @type {Object|Boolean}\r\n */\r\n this.state = isObj(f.state) || Boolean(f.state);\r\n\r\n /*** data types ***/\r\n\r\n /**\r\n * Enable date type module\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.dateType = true;\r\n\r\n /**\r\n * Define default locale, default to 'en' as per Sugar Date module:\r\n * https://sugarjs.com/docs/#/DateLocales\r\n * @type {String}\r\n */\r\n this.locale = defaultsStr(f.locale, 'en');\r\n\r\n /**\r\n * Define thousands separator ',' or '.', defaults to ','\r\n * @type {String}\r\n */\r\n this.thousandsSeparator = defaultsStr(f.thousands_separator, ',');\r\n\r\n /**\r\n * Define decimal separator ',' or '.', defaults to '.'\r\n * @type {String}\r\n */\r\n this.decimalSeparator = defaultsStr(f.decimal_separator, '.');\r\n\r\n /**\r\n * Define data types on a column basis, possible values 'string',\r\n * 'number', 'formatted-number', 'date', 'ipaddress' ie:\r\n * col_types : [\r\n * 'string', 'date', 'number',\r\n * { type: 'formatted-number', decimal: ',', thousands: '.' },\r\n * { type: 'date', locale: 'en-gb' },\r\n * { type: 'date', format: ['{dd}-{months}-{yyyy|yy}'] }\r\n * ]\r\n *\r\n * Refer to https://sugarjs.com/docs/#/DateParsing for exhaustive\r\n * information on date parsing formats supported by Sugar Date\r\n * @type {Array}\r\n */\r\n this.colTypes = isArray(f.col_types) ? f.col_types : [];\r\n\r\n /*** ids prefixes ***/\r\n /**\r\n * Main prefix\r\n * @private\r\n */\r\n this.prfxTf = 'TF';\r\n\r\n /**\r\n * Filter's ID prefix (inputs - selects)\r\n * @private\r\n */\r\n this.prfxFlt = 'flt';\r\n\r\n /**\r\n * Button's ID prefix\r\n * @private\r\n */\r\n this.prfxValButton = 'btn';\r\n\r\n /**\r\n * Responsive Css class\r\n * @private\r\n */\r\n this.prfxResponsive = 'resp';\r\n\r\n /** @private */\r\n this.stickyCssClass = 'sticky';\r\n\r\n /*** extensions ***/\r\n /**\r\n * List of loaded extensions\r\n * @type {Array}\r\n */\r\n this.extensions = defaultsArr(f.extensions, []);\r\n\r\n /*** themes ***/\r\n /**\r\n * Enable default theme\r\n * @type {Boolean}\r\n */\r\n this.enableDefaultTheme = Boolean(f.enable_default_theme);\r\n\r\n /**\r\n * Determine whether themes are enables\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasThemes = (this.enableDefaultTheme || isArray(f.themes));\r\n\r\n /**\r\n * List of themes, ie:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\r\n this.themes = defaultsArr(f.themes, []);\r\n\r\n /**\r\n * Define path to themes assets, defaults to\r\n * 'tablefilter/style/themes/'. Usage:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\r\n this.themesPath = this.getThemesPath();\r\n\r\n /**\r\n * Enable responsive layout\r\n * @type {Boolean}\r\n */\r\n this.responsive = Boolean(f.responsive);\r\n\r\n /**\r\n * Enable toolbar component\r\n * @type {Object|Boolean}\r\n */\r\n this.toolbar = isObj(f.toolbar) || Boolean(f.toolbar);\r\n\r\n /**\r\n * Enable sticky headers\r\n * @type {Boolean}\r\n */\r\n this.stickyHeaders = Boolean(f.sticky_headers);\r\n\r\n /**\r\n * Features registry\r\n * @private\r\n */\r\n this.Mod = {};\r\n\r\n /**\r\n * Extensions registry\r\n * @private\r\n */\r\n this.ExtRegistry = {};\r\n\r\n // conditionally instantiate required features\r\n this.instantiateFeatures(\r\n Object.keys(FEATURES).map((item) => FEATURES[item])\r\n );\r\n }\r\n\r\n /**\r\n * Initialise features and layout\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // import main stylesheet\r\n this.import(this.stylesheetId, this.getStylesheetPath(), null, 'link');\r\n\r\n let Mod = this.Mod;\r\n let inpclass;\r\n\r\n //loads theme\r\n this.loadThemes();\r\n\r\n const { dateType, help, state, markActiveColumns, gridLayout, loader,\r\n highlightKeyword, popupFilter, rowsCounter, statusBar, clearButton,\r\n alternateRows, noResults, paging, toolbar } = FEATURES;\r\n\r\n //explicitly initialise features in given order\r\n this.initFeatures([\r\n dateType,\r\n help,\r\n state,\r\n markActiveColumns,\r\n gridLayout,\r\n loader,\r\n highlightKeyword,\r\n popupFilter\r\n ]);\r\n\r\n //filters grid is not generated\r\n if (!this.fltGrid) {\r\n this._initNoFilters();\r\n } else {\r\n let fltrow = this._insertFiltersRow();\r\n\r\n this.nbCells = this.getCellsNb(this.refRow);\r\n this.nbFilterableRows = this.getRowsNb();\r\n\r\n let n = this.singleFlt ? 1 : this.nbCells;\r\n\r\n //build filters\r\n for (let i = 0; i < n; i++) {\r\n this.emitter.emit('before-filter-init', this, i);\r\n\r\n let fltCell = createElm(this.fltCellTag),\r\n col = this.getFilterType(i);\r\n\r\n if (this.singleFlt) {\r\n fltCell.colSpan = this.nbCells;\r\n }\r\n if (!this.gridLayout) {\r\n fltrow.appendChild(fltCell);\r\n }\r\n inpclass = (i === n - 1 && this.displayBtn) ?\r\n this.fltSmallCssClass : this.fltCssClass;\r\n\r\n //only 1 input for single search\r\n if (this.singleFlt) {\r\n col = INPUT;\r\n inpclass = this.singleFltCssClass;\r\n }\r\n\r\n //drop-down filters\r\n if (col === SELECT || col === MULTIPLE) {\r\n Mod.dropdown = Mod.dropdown || new Dropdown(this);\r\n Mod.dropdown.init(i, this.isExternalFlt(), fltCell);\r\n }\r\n // checklist\r\n else if (col === CHECKLIST) {\r\n Mod.checkList = Mod.checkList || new CheckList(this);\r\n Mod.checkList.init(i, this.isExternalFlt(), fltCell);\r\n } else {\r\n this._buildInputFilter(i, inpclass, fltCell);\r\n }\r\n\r\n // this adds submit button\r\n if (i === n - 1 && this.displayBtn) {\r\n this._buildSubmitButton(\r\n this.isExternalFlt() ?\r\n elm(this.externalFltIds[i]) :\r\n fltCell\r\n );\r\n }\r\n\r\n this.emitter.emit('after-filter-init', this, i);\r\n }\r\n\r\n this.emitter.on(['filter-focus'],\r\n (tf, filter) => this.setActiveFilterId(filter.id));\r\n\r\n }//if this.fltGrid\r\n\r\n /* Features */\r\n if (this.hasExcludedRows) {\r\n this.emitter.on(['after-filtering'], () => this.setExcludeRows());\r\n this.setExcludeRows();\r\n }\r\n\r\n this.initFeatures([\r\n rowsCounter,\r\n statusBar,\r\n clearButton,\r\n alternateRows,\r\n noResults,\r\n paging,\r\n toolbar\r\n ]);\r\n\r\n this.setColWidths();\r\n\r\n //TF css class is added to table\r\n if (!this.gridLayout) {\r\n addClass(this.dom(), this.prfxTf);\r\n if (this.responsive) {\r\n addClass(this.dom(), this.prfxResponsive);\r\n }\r\n if (this.colWidths.length > 0) {\r\n this.setFixedLayout();\r\n }\r\n if (this.stickyHeaders && this.dom().tHead) {\r\n addClass(this.dom(), this.stickyCssClass);\r\n }\r\n }\r\n\r\n /* Load extensions */\r\n this.initExtensions();\r\n\r\n // Subscribe to events\r\n if (this.linkedFilters) {\r\n this.emitter.on(['after-filtering'], () => this.linkFilters());\r\n }\r\n\r\n this.initialized = true;\r\n\r\n this.onFiltersLoaded(this);\r\n\r\n this.emitter.emit('initialized', this);\r\n }\r\n\r\n /**\r\n * Detect key\r\n * @param {Event} evt\r\n */\r\n detectKey(evt) {\r\n if (!this.enterKey) {\r\n return;\r\n }\r\n\r\n if (isKeyPressed(evt, [ENTER_KEY])) {\r\n this.filter();\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n } else {\r\n this.isUserTyping = true;\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n }\r\n }\r\n\r\n /**\r\n * Filter's keyup event: if auto-filter on, detect user is typing and filter\r\n * columns\r\n * @param {Event} evt\r\n */\r\n onKeyUp(evt) {\r\n if (!this.autoFilter) {\r\n return;\r\n }\r\n this.isUserTyping = false;\r\n\r\n function filter() {\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n if (!this.isUserTyping) {\r\n this.filter();\r\n this.isUserTyping = null;\r\n }\r\n }\r\n\r\n if (isKeyPressed(evt,\r\n [ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY])) {\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n } else {\r\n if (this.autoFilterTimer !== null) {\r\n return;\r\n }\r\n this.autoFilterTimer = root.setInterval(\r\n filter.bind(this),\r\n this.autoFilterDelay);\r\n }\r\n }\r\n\r\n /**\r\n * Filter's keydown event: if auto-filter on, detect user is typing\r\n */\r\n onKeyDown() {\r\n if (this.autoFilter) {\r\n this.isUserTyping = true;\r\n }\r\n }\r\n\r\n /**\r\n * Filter's focus event\r\n * @param {Event} evt\r\n */\r\n onInpFocus(evt) {\r\n let elm = targetEvt(evt);\r\n this.emitter.emit('filter-focus', this, elm);\r\n }\r\n\r\n /**\r\n * Filter's blur event: if auto-filter on, clear interval on filter blur\r\n */\r\n onInpBlur() {\r\n if (this.autoFilter) {\r\n this.isUserTyping = false;\r\n root.clearInterval(this.autoFilterTimer);\r\n }\r\n this.emitter.emit('filter-blur', this);\r\n }\r\n\r\n /**\r\n * Insert filters row at initialization\r\n */\r\n _insertFiltersRow() {\r\n // TODO: prevent filters row generation for popup filters too,\r\n // to reduce and simplify headers row index adjusting across lib modules\r\n // (GridLayout, PopupFilter etc)\r\n if (this.gridLayout) {\r\n return;\r\n }\r\n let fltrow;\r\n\r\n let thead = tag(this.dom(), 'thead');\r\n if (thead.length > 0) {\r\n fltrow = thead[0].insertRow(this.filtersRowIndex);\r\n } else {\r\n fltrow = this.dom().insertRow(this.filtersRowIndex);\r\n }\r\n\r\n fltrow.className = this.fltsRowCssClass;\r\n\r\n if (this.isExternalFlt()) {\r\n fltrow.style.display = NONE;\r\n }\r\n\r\n this.emitter.emit('filters-row-inserted', this, fltrow);\r\n return fltrow;\r\n }\r\n\r\n /**\r\n * Initialize filtersless table\r\n */\r\n _initNoFilters() {\r\n if (this.fltGrid) {\r\n return;\r\n }\r\n this.refRow = this.refRow > 0 ? this.refRow - 1 : 0;\r\n this.nbFilterableRows = this.getRowsNb();\r\n }\r\n\r\n /**\r\n * Build input filter type\r\n * @param {Number} colIndex Column index\r\n * @param {String} cssClass Css class applied to filter\r\n * @param {DOMElement} container Container DOM element\r\n */\r\n _buildInputFilter(colIndex, cssClass, container) {\r\n let col = this.getFilterType(colIndex);\r\n let externalFltTgtId = this.isExternalFlt() ?\r\n this.externalFltIds[colIndex] : null;\r\n let inpType = col === INPUT ? 'text' : 'hidden';\r\n let inp = createElm(INPUT,\r\n ['id', this.buildFilterId(colIndex)],\r\n ['type', inpType], ['ct', colIndex]);\r\n\r\n if (inpType !== 'hidden' && this.watermark) {\r\n inp.setAttribute('placeholder',\r\n this.isWatermarkArray ? (this.watermark[colIndex] || '') :\r\n this.watermark\r\n );\r\n }\r\n inp.className = cssClass || this.fltCssClass;\r\n addEvt(inp, 'focus', (evt) => this.onInpFocus(evt));\r\n\r\n //filter is appended in custom element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(inp);\r\n } else {\r\n container.appendChild(inp);\r\n }\r\n\r\n this.fltIds.push(inp.id);\r\n\r\n addEvt(inp, 'keypress', (evt) => this.detectKey(evt));\r\n addEvt(inp, 'keydown', () => this.onKeyDown());\r\n addEvt(inp, 'keyup', (evt) => this.onKeyUp(evt));\r\n addEvt(inp, 'blur', () => this.onInpBlur());\r\n }\r\n\r\n /**\r\n * Build submit button\r\n * @param {DOMElement} container Container DOM element\r\n */\r\n _buildSubmitButton(container) {\r\n let btn = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnText]\r\n );\r\n btn.className = this.btnCssClass;\r\n\r\n //filter is appended in container element\r\n container.appendChild(btn);\r\n\r\n addEvt(btn, 'click', () => this.filter());\r\n }\r\n\r\n /**\r\n * Istantiate the collection of features required by the\r\n * configuration and add them to the features registry. A feature is\r\n * described by a `class` and `name` fields and and optional `property`\r\n * field:\r\n * {\r\n * class: AClass,\r\n * name: 'aClass'\r\n * }\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\r\n instantiateFeatures(features = []) {\r\n features.forEach((feature) => {\r\n // TODO: remove the property field.\r\n // Due to naming convention inconsistencies, a `property`\r\n // field is added to allow a conditional instanciation based\r\n // on that property on TableFilter, if supplied.\r\n feature.property = feature.property || feature.name;\r\n if (!this.hasConfig || this[feature.property] === true ||\r\n feature.enforce === true) {\r\n let {class: Cls, name} = feature;\r\n\r\n this.Mod[name] = this.Mod[name] || new Cls(this);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Initialise the passed features collection. A feature is described by a\r\n * `class` and `name` fields and and optional `property` field:\r\n * {\r\n * class: AClass,\r\n * name: 'aClass'\r\n * }\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\r\n initFeatures(features = []) {\r\n features.forEach((feature) => {\r\n let {property, name} = feature;\r\n if (this[property] === true && this.Mod[name]) {\r\n this.Mod[name].init();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Return a feature instance for a given name\r\n * @param {String} name Name of the feature\r\n * @return {Object}\r\n */\r\n feature(name) {\r\n return this.Mod[name];\r\n }\r\n\r\n /**\r\n * Initialise all the extensions defined in the configuration object\r\n */\r\n initExtensions() {\r\n let exts = this.extensions;\r\n if (exts.length === 0) {\r\n return;\r\n }\r\n\r\n // Set config's publicPath dynamically for Webpack...\r\n __webpack_public_path__ = this.basePath;\r\n\r\n this.emitter.emit('before-loading-extensions', this);\r\n\r\n exts.forEach((ext) => {\r\n this.loadExtension(ext);\r\n });\r\n this.emitter.emit('after-loading-extensions', this);\r\n }\r\n\r\n /**\r\n * Load an extension module\r\n * @param {Object} ext Extension config object\r\n */\r\n loadExtension(ext) {\r\n if (!ext || !ext.name || this.hasExtension(ext.name)) {\r\n return;\r\n }\r\n\r\n let {name, path} = ext;\r\n let modulePath;\r\n\r\n if (name && path) {\r\n modulePath = ext.path + name;\r\n } else {\r\n name = name.replace('.js', '');\r\n modulePath = 'extensions/{}/{}'.replace(/{}/g, name);\r\n }\r\n\r\n // Require pattern for Webpack\r\n require(['./' + modulePath], (mod) => {\r\n /* eslint-disable */\r\n let inst = new mod.default(this, ext);\r\n /* eslint-enable */\r\n inst.init();\r\n this.ExtRegistry[name] = inst;\r\n });\r\n }\r\n\r\n /**\r\n * Get an extension instance\r\n * @param {String} name Name of the extension\r\n * @return {Object} Extension instance\r\n */\r\n extension(name) {\r\n return this.ExtRegistry[name];\r\n }\r\n\r\n /**\r\n * Check passed extension name exists\r\n * @param {String} name Name of the extension\r\n * @return {Boolean}\r\n */\r\n hasExtension(name) {\r\n return !isEmpty(this.ExtRegistry[name]);\r\n }\r\n\r\n /**\r\n * Register the passed extension instance with associated name\r\n * @param {Object} inst Extension instance\r\n * @param {String} name Name of the extension\r\n */\r\n registerExtension(inst, name) {\r\n this.ExtRegistry[name] = inst;\r\n }\r\n\r\n /**\r\n * Destroy all the extensions store in extensions registry\r\n */\r\n destroyExtensions() {\r\n let reg = this.ExtRegistry;\r\n\r\n Object.keys(reg).forEach((key) => {\r\n reg[key].destroy();\r\n reg[key] = undefined;\r\n });\r\n }\r\n\r\n /**\r\n * Load themes defined in the configuration object\r\n */\r\n loadThemes() {\r\n if (!this.hasThemes) {\r\n return;\r\n }\r\n\r\n let themes = this.themes;\r\n this.emitter.emit('before-loading-themes', this);\r\n\r\n //Default theme config\r\n if (this.enableDefaultTheme) {\r\n let defaultTheme = { name: 'default' };\r\n this.themes.push(defaultTheme);\r\n }\r\n\r\n themes.forEach((theme, i) => {\r\n let {name, path} = theme;\r\n let styleId = this.prfxTf + name;\r\n if (name && !path) {\r\n path = this.themesPath + name + '/' + name + '.css';\r\n }\r\n else if (!name && theme.path) {\r\n name = 'theme{0}'.replace('{0}', i);\r\n }\r\n\r\n if (!this.isImported(path, 'link')) {\r\n this.import(styleId, path, null, 'link');\r\n }\r\n });\r\n\r\n // Enable loader indicator\r\n this.loader = true;\r\n\r\n this.emitter.emit('after-loading-themes', this);\r\n }\r\n\r\n /**\r\n * Return stylesheet DOM element for a given theme name\r\n * @return {DOMElement} stylesheet element\r\n */\r\n getStylesheet(name = 'default') {\r\n return elm(this.prfxTf + name);\r\n }\r\n\r\n /**\r\n * Destroy filter grid\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n if (this.isExternalFlt() && !this.popupFilters) {\r\n this.removeExternalFlts();\r\n }\r\n\r\n this.destroyExtensions();\r\n\r\n this.validateAllRows();\r\n\r\n // broadcast destroy event modules and extensions are subscribed to\r\n emitter.emit('destroy', this);\r\n\r\n if (this.fltGrid && !this.gridLayout) {\r\n this.dom().deleteRow(this.filtersRowIndex);\r\n }\r\n\r\n // unsubscribe to events\r\n if (this.hasExcludedRows) {\r\n emitter.off(['after-filtering'], () => this.setExcludeRows());\r\n }\r\n if (this.linkedFilters) {\r\n emitter.off(['after-filtering'], () => this.linkFilters());\r\n }\r\n this.emitter.off(['filter-focus'],\r\n (tf, filter) => this.setActiveFilterId(filter.id));\r\n\r\n removeClass(this.dom(), this.prfxTf);\r\n removeClass(this.dom(), this.prfxResponsive);\r\n if (this.dom().tHead) {\r\n removeClass(this.dom().tHead, this.stickyCssClass);\r\n }\r\n\r\n this.nbHiddenRows = 0;\r\n this.validRowsIndex = [];\r\n this.fltIds = [];\r\n this.initialized = false;\r\n }\r\n\r\n /**\r\n * Remove all the external column filters\r\n */\r\n removeExternalFlts() {\r\n if (!this.isExternalFlt()) {\r\n return;\r\n }\r\n let ids = this.externalFltIds;\r\n ids.forEach((id) => {\r\n let externalFlt = elm(id);\r\n if (externalFlt) {\r\n externalFlt.innerHTML = '';\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Check if given column implements a filter with custom options\r\n * @param {Number} colIndex Column's index\r\n * @return {Boolean}\r\n */\r\n isCustomOptions(colIndex) {\r\n return this.hasCustomOptions &&\r\n this.customOptions.cols.indexOf(colIndex) !== -1;\r\n }\r\n\r\n /**\r\n * Returns an array [[value0, value1 ...],[text0, text1 ...]] with the\r\n * custom options values and texts\r\n * @param {Number} colIndex Column's index\r\n * @return {Array}\r\n */\r\n getCustomOptions(colIndex) {\r\n if (isEmpty(colIndex) || !this.isCustomOptions(colIndex)) {\r\n return;\r\n }\r\n\r\n let customOptions = this.customOptions;\r\n let cols = customOptions.cols;\r\n let optTxt = [], optArray = [];\r\n let index = cols.indexOf(colIndex);\r\n let slcValues = customOptions.values[index];\r\n let slcTexts = customOptions.texts[index];\r\n let slcSort = customOptions.sorts[index];\r\n\r\n for (let r = 0, len = slcValues.length; r < len; r++) {\r\n optArray.push(slcValues[r]);\r\n if (slcTexts[r]) {\r\n optTxt.push(slcTexts[r]);\r\n } else {\r\n optTxt.push(slcValues[r]);\r\n }\r\n }\r\n if (slcSort) {\r\n optArray.sort();\r\n optTxt.sort();\r\n }\r\n return [optArray, optTxt];\r\n }\r\n\r\n /**\r\n * Filter the table by retrieving the data from each cell in every single\r\n * row and comparing it to the search term for current column. A row is\r\n * hidden when all the search terms are not found in inspected row.\r\n */\r\n filter() {\r\n if (!this.fltGrid || !this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n //fire onbefore callback\r\n this.onBeforeFilter(this);\r\n emitter.emit('before-filtering', this);\r\n\r\n let hiddenRows = 0;\r\n\r\n this.validRowsIndex = [];\r\n // search args\r\n let searchArgs = this.getFiltersValue();\r\n\r\n let eachRow = this.eachRow();\r\n eachRow(\r\n (row, k) => {\r\n // already filtered rows display re-init\r\n row.style.display = '';\r\n\r\n let cells = row.cells;\r\n let nbCells = cells.length;\r\n\r\n let occurence = [],\r\n isMatch = true,\r\n //only for single filter search\r\n isSingleFltMatch = false;\r\n\r\n // this loop retrieves cell data\r\n for (let j = 0; j < nbCells; j++) {\r\n //searched keyword\r\n let sA = searchArgs[this.singleFlt ? 0 : j];\r\n\r\n if (sA === '') {\r\n continue;\r\n }\r\n\r\n let cellValue = matchCase(this.getCellValue(cells[j]),\r\n this.caseSensitive);\r\n\r\n //multiple search parameter operator ||\r\n let sAOrSplit = sA.toString().split(this.orOperator),\r\n //multiple search || parameter boolean\r\n hasMultiOrSA = sAOrSplit.length > 1,\r\n //multiple search parameter operator &&\r\n sAAndSplit = sA.toString().split(this.anOperator),\r\n //multiple search && parameter boolean\r\n hasMultiAndSA = sAAndSplit.length > 1;\r\n\r\n //detect operators or array query\r\n if (isArray(sA) || hasMultiOrSA || hasMultiAndSA) {\r\n let cS, s;\r\n let found = false;\r\n\r\n if (isArray(sA)) {\r\n s = sA;\r\n } else {\r\n s = hasMultiOrSA ? sAOrSplit : sAAndSplit;\r\n }\r\n // isolate search term and check occurence in cell data\r\n for (let w = 0, len = s.length; w < len; w++) {\r\n cS = trim(s[w]);\r\n found = this._match(cS, cellValue, cells[j]);\r\n\r\n if (found) {\r\n emitter.emit('highlight-keyword', this,\r\n cells[j], cS);\r\n }\r\n if ((hasMultiOrSA && found) ||\r\n (hasMultiAndSA && !found)) {\r\n break;\r\n }\r\n if (isArray(sA) && found) {\r\n break;\r\n }\r\n }\r\n occurence[j] = found;\r\n\r\n }\r\n //single search parameter\r\n else {\r\n occurence[j] =\r\n this._match(trim(sA), cellValue, cells[j]);\r\n if (occurence[j]) {\r\n emitter.emit('highlight-keyword', this, cells[j],\r\n sA);\r\n }\r\n }\r\n\r\n if (!occurence[j]) {\r\n isMatch = false;\r\n }\r\n\r\n if (this.singleFlt &&\r\n this.singleFltExcludeCols.indexOf(j) === -1 &&\r\n occurence[j]) {\r\n isSingleFltMatch = true;\r\n }\r\n\r\n emitter.emit('cell-processed', this, j, cells[j]);\r\n }//for j\r\n\r\n if (isSingleFltMatch) {\r\n isMatch = true;\r\n }\r\n\r\n this.validateRow(k, isMatch);\r\n if (!isMatch) {\r\n hiddenRows++;\r\n }\r\n\r\n emitter.emit('row-processed', this, k,\r\n this.validRowsIndex.length - 1, isMatch);\r\n },\r\n // continue condition\r\n (row) => row.cells.length !== this.nbCells\r\n );\r\n\r\n this.nbHiddenRows = hiddenRows;\r\n\r\n //fire onafterfilter callback\r\n this.onAfterFilter(this);\r\n\r\n emitter.emit('after-filtering', this, searchArgs);\r\n }\r\n\r\n /**\r\n * Match search term in cell data\r\n * @param {String} term Search term\r\n * @param {String} cellValue Cell data\r\n * @param {DOMElement} cell Current cell\r\n * @return {Boolean}\r\n * @private\r\n */\r\n _match(term, cellValue, cell) {\r\n let numData;\r\n let colIdx = cell.cellIndex;\r\n let decimal = this.getDecimal(colIdx);\r\n let reLe = new RegExp(this.leOperator),\r\n reGe = new RegExp(this.geOperator),\r\n reL = new RegExp(this.lwOperator),\r\n reG = new RegExp(this.grOperator),\r\n reD = new RegExp(this.dfOperator),\r\n reLk = new RegExp(rgxEsc(this.lkOperator)),\r\n reEq = new RegExp(this.eqOperator),\r\n reSt = new RegExp(this.stOperator),\r\n reEn = new RegExp(this.enOperator),\r\n // re_an = new RegExp(this.anOperator),\r\n // re_cr = new RegExp(this.curExp),\r\n reEm = this.emOperator,\r\n reNm = this.nmOperator,\r\n reRe = new RegExp(rgxEsc(this.rgxOperator));\r\n\r\n term = matchCase(term, this.caseSensitive);\r\n\r\n let occurence = false;\r\n\r\n //Search arg operator tests\r\n let hasLO = reL.test(term),\r\n hasLE = reLe.test(term),\r\n hasGR = reG.test(term),\r\n hasGE = reGe.test(term),\r\n hasDF = reD.test(term),\r\n hasEQ = reEq.test(term),\r\n hasLK = reLk.test(term),\r\n // hatermN = re_an.test(term),\r\n hasST = reSt.test(term),\r\n hasEN = reEn.test(term),\r\n hasEM = (reEm === term),\r\n hasNM = (reNm === term),\r\n hasRE = reRe.test(term);\r\n\r\n // Check for dates or resolve date type\r\n if (this.hasType(colIdx, [DATE])) {\r\n let dte1, dte2;\r\n\r\n let dateType = this.Mod.dateType;\r\n let isValidDate = dateType.isValid.bind(dateType);\r\n let parseDate = dateType.parse.bind(dateType);\r\n let locale = dateType.getLocale(colIdx);\r\n\r\n // Search arg dates tests\r\n let isLDate = hasLO &&\r\n isValidDate(term.replace(reL, ''), locale);\r\n let isLEDate = hasLE &&\r\n isValidDate(term.replace(reLe, ''), locale);\r\n let isGDate = hasGR &&\r\n isValidDate(term.replace(reG, ''), locale);\r\n let isGEDate = hasGE &&\r\n isValidDate(term.replace(reGe, ''), locale);\r\n let isDFDate = hasDF &&\r\n isValidDate(term.replace(reD, ''), locale);\r\n let isEQDate = hasEQ &&\r\n isValidDate(term.replace(reEq, ''), locale);\r\n\r\n dte1 = parseDate(cellValue, locale);\r\n\r\n // lower equal date\r\n if (isLEDate) {\r\n dte2 = parseDate(term.replace(reLe, ''), locale);\r\n occurence = dte1 <= dte2;\r\n }\r\n // lower date\r\n else if (isLDate) {\r\n dte2 = parseDate(term.replace(reL, ''), locale);\r\n occurence = dte1 < dte2;\r\n }\r\n // greater equal date\r\n else if (isGEDate) {\r\n dte2 = parseDate(term.replace(reGe, ''), locale);\r\n occurence = dte1 >= dte2;\r\n }\r\n // greater date\r\n else if (isGDate) {\r\n dte2 = parseDate(term.replace(reG, ''), locale);\r\n occurence = dte1 > dte2;\r\n }\r\n // different date\r\n else if (isDFDate) {\r\n dte2 = parseDate(term.replace(reD, ''), locale);\r\n occurence = dte1.toString() !== dte2.toString();\r\n }\r\n // equal date\r\n else if (isEQDate) {\r\n dte2 = parseDate(term.replace(reEq, ''), locale);\r\n occurence = dte1.toString() === dte2.toString();\r\n }\r\n // searched keyword with * operator doesn't have to be a date\r\n else if (reLk.test(term)) {// like date\r\n occurence = contains(term.replace(reLk, ''), cellValue,\r\n false, this.caseSensitive);\r\n }\r\n else if (isValidDate(term)) {\r\n dte2 = parseDate(term, locale);\r\n occurence = dte1.toString() === dte2.toString();\r\n }\r\n //empty\r\n else if (hasEM) {\r\n occurence = !cell.hasChildNodes();\r\n }\r\n //non-empty\r\n else if (hasNM) {\r\n occurence = cell.hasChildNodes();\r\n } else {\r\n occurence = contains(term, cellValue,\r\n this.isExactMatch(colIdx), this.caseSensitive);\r\n }\r\n } else {\r\n // Convert to number anyways to auto-resolve type in case not\r\n // defined by configuration. Order is important first try to\r\n // parse formatted number then fallback to Number coercion\r\n // to avoid false positives with Number\r\n numData = parseNb(cellValue, decimal) || Number(cellValue);\r\n\r\n // first checks if there is any operator (<,>,<=,>=,!,*,=,{,},\r\n // rgx:)\r\n\r\n //regexp\r\n if (hasRE) {\r\n //in case regexp throws\r\n try {\r\n //operator is removed\r\n let srchArg = term.replace(reRe, '');\r\n let rgx = new RegExp(srchArg);\r\n occurence = rgx.test(cellValue);\r\n } catch (ex) {\r\n occurence = false;\r\n }\r\n }\r\n // lower equal\r\n else if (hasLE) {\r\n occurence = numData <= parseNb(\r\n term.replace(reLe, ''),\r\n decimal\r\n );\r\n }\r\n //greater equal\r\n else if (hasGE) {\r\n occurence = numData >= parseNb(\r\n term.replace(reGe, ''),\r\n decimal\r\n );\r\n }\r\n //lower\r\n else if (hasLO) {\r\n occurence = numData < parseNb(\r\n term.replace(reL, ''),\r\n decimal\r\n );\r\n }\r\n //greater\r\n else if (hasGR) {\r\n occurence = numData > parseNb(\r\n term.replace(reG, ''),\r\n decimal\r\n );\r\n }\r\n //different\r\n else if (hasDF) {\r\n occurence = contains(term.replace(reD, ''), cellValue,\r\n false, this.caseSensitive) ? false : true;\r\n }\r\n //like\r\n else if (hasLK) {\r\n occurence = contains(term.replace(reLk, ''), cellValue,\r\n false, this.caseSensitive);\r\n }\r\n //equal\r\n else if (hasEQ) {\r\n occurence = contains(term.replace(reEq, ''), cellValue,\r\n true, this.caseSensitive);\r\n }\r\n //starts with\r\n else if (hasST) {\r\n occurence = cellValue.indexOf(term.replace(reSt, '')) === 0 ?\r\n true : false;\r\n }\r\n //ends with\r\n else if (hasEN) {\r\n let searchArg = term.replace(reEn, '');\r\n occurence =\r\n cellValue.lastIndexOf(searchArg, cellValue.length - 1) ===\r\n (cellValue.length - 1) - (searchArg.length - 1) &&\r\n cellValue.lastIndexOf(searchArg, cellValue.length - 1)\r\n > -1 ? true : false;\r\n }\r\n //empty\r\n else if (hasEM) {\r\n occurence = !cell.hasChildNodes();\r\n }\r\n //non-empty\r\n else if (hasNM) {\r\n occurence = cell.hasChildNodes();\r\n } else {\r\n // If numeric type data, perform a strict equality test and\r\n // fallback to unformatted number string comparison\r\n if (numData &&\r\n this.hasType(colIdx, [NUMBER, FORMATTED_NUMBER]) &&\r\n !this.singleFlt) {\r\n // parseNb can return 0 for strings which are not\r\n // formatted numbers, in that case return the original\r\n // string. TODO: handle this in parseNb\r\n term = parseNb(term, decimal) || term;\r\n occurence = numData === term ||\r\n contains(term.toString(), numData.toString(),\r\n this.isExactMatch(colIdx), this.caseSensitive);\r\n } else {\r\n // Finally test search term is contained in cell data\r\n occurence = contains(\r\n term,\r\n cellValue,\r\n this.isExactMatch(colIdx),\r\n this.caseSensitive,\r\n this.ignoresDiacritics(colIdx)\r\n );\r\n }\r\n }\r\n\r\n }//else\r\n\r\n return occurence;\r\n }\r\n\r\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of data for a column\r\n */\r\n getColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getColValues(colIndex, includeHeaders, true, exclude);\r\n }\r\n\r\n /**\r\n * Return the values of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of values for a column\r\n */\r\n getColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getColValues(colIndex, includeHeaders, false, exclude);\r\n }\r\n\r\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return a typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return {Array} Flat list of data for a column\r\n * @private\r\n */\r\n getColValues(\r\n colIndex,\r\n includeHeaders = false,\r\n typed = false,\r\n exclude = []\r\n ) {\r\n let colValues = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n colValues.push(this.getHeadersText()[colIndex]);\r\n }\r\n\r\n let eachRow = this.eachRow();\r\n eachRow((row, i) => {\r\n // checks if current row index appears in exclude array\r\n let isExludedRow = exclude.indexOf(i) !== -1;\r\n let cells = row.cells;\r\n\r\n // checks if row has exact cell # and is not excluded\r\n if (cells.length === this.nbCells && !isExludedRow) {\r\n let data = getContent(cells[colIndex]);\r\n colValues.push(data);\r\n }\r\n });\r\n return colValues;\r\n }\r\n\r\n /**\r\n * Return the filter's value of a specified column\r\n * @param {Number} index Column index\r\n * @return {String} Filter value\r\n */\r\n getFilterValue(index) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let fltValue = '';\r\n let flt = this.getFilterElement(index);\r\n if (!flt) {\r\n return fltValue;\r\n }\r\n\r\n let fltColType = this.getFilterType(index);\r\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\r\n fltValue = flt.value;\r\n }\r\n //mutiple select\r\n else if (fltColType === MULTIPLE) {\r\n fltValue = this.feature('dropdown').getValues(index);\r\n }\r\n //checklist\r\n else if (fltColType === CHECKLIST) {\r\n fltValue = this.feature('checkList').getValues(index);\r\n }\r\n //return an empty string if collection is empty or contains a single\r\n //empty string\r\n if (isArray(fltValue) && fltValue.length === 0 ||\r\n (fltValue.length === 1 && fltValue[0] === '')) {\r\n fltValue = '';\r\n }\r\n\r\n return fltValue;\r\n }\r\n\r\n /**\r\n * Return the filters' values\r\n * @return {Array} List of filters' values\r\n */\r\n getFiltersValue() {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let searchArgs = [];\r\n\r\n this.fltIds.forEach((id, i) => {\r\n let fltValue = this.getFilterValue(i);\r\n if (isArray(fltValue)) {\r\n searchArgs.push(fltValue);\r\n } else {\r\n searchArgs.push(trim(fltValue));\r\n }\r\n });\r\n return searchArgs;\r\n }\r\n\r\n /**\r\n * Return the ID of a specified column's filter\r\n * @param {Number} index Column's index\r\n * @return {String} ID of the filter element\r\n */\r\n getFilterId(index) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n return this.fltIds[index];\r\n }\r\n\r\n /**\r\n * Return the list of ids of filters matching a specified type.\r\n * Note: hidden filters are also returned\r\n *\r\n * @param {String} type Filter type string ('input', 'select', 'multiple',\r\n * 'checklist')\r\n * @param {Boolean} bool If true returns columns indexes instead of IDs\r\n * @return {[type]} List of element IDs or column indexes\r\n */\r\n getFiltersByType(type, bool) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let arr = [];\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n let fltType = this.getFilterType(i);\r\n if (fltType === type.toLowerCase()) {\r\n let a = bool ? i : this.fltIds[i];\r\n arr.push(a);\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n /**\r\n * Return the filter's DOM element for a given column\r\n * @param {Number} index Column's index\r\n * @return {DOMElement}\r\n */\r\n getFilterElement(index) {\r\n return elm(this.fltIds[index]);\r\n }\r\n\r\n /**\r\n * Return the number of cells for a given row index\r\n * @param {Number} rowIndex Index of the row\r\n * @return {Number} Number of cells\r\n */\r\n getCellsNb(rowIndex = 0) {\r\n let tr = this.dom().rows[rowIndex >= 0 ? rowIndex : 0];\r\n return tr ? tr.cells.length : 0;\r\n }\r\n\r\n /**\r\n * Return the number of working rows starting from reference row if\r\n * defined\r\n * @param {Boolean} includeHeaders Include the headers row(s)\r\n * @return {Number} Number of working rows\r\n */\r\n getRowsNb(includeHeaders) {\r\n let nbRows = this.getWorkingRows().length;\r\n if (this.dom().tHead) {\r\n return includeHeaders ?\r\n nbRows + this.dom().querySelectorAll('thead > tr').length :\r\n nbRows;\r\n }\r\n return includeHeaders ? nbRows : nbRows - this.refRow;\r\n }\r\n\r\n /**\r\n * Return the collection of the working rows, that is, the rows belonging\r\n * to the tbody section(s)\r\n * @returns {Array}\r\n */\r\n getWorkingRows() {\r\n return doc.querySelectorAll(`table#${this.id} > tbody > tr`);\r\n }\r\n\r\n /**\r\n * Return the text content of a given cell\r\n * @param {DOMElement} Cell's DOM element\r\n * @return {String}\r\n */\r\n getCellValue(cell) {\r\n let idx = cell.cellIndex;\r\n let cellParser = this.cellParser;\r\n // Invoke cellParser for this column if any\r\n if (cellParser.cols.indexOf(idx) !== -1) {\r\n return cellParser.parse(this, cell, idx);\r\n } else {\r\n return getText(cell);\r\n }\r\n }\r\n\r\n /**\r\n * Return the typed data of a given cell based on the column type definition\r\n * @param {DOMElement} cell Cell's DOM element\r\n * @return {String|Number|Date}\r\n */\r\n getCellData(cell) {\r\n let colIndex = cell.cellIndex;\r\n let value = this.getCellValue(cell);\r\n\r\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n return parseNb(value, this.getDecimal(colIndex));\r\n }\r\n else if (this.hasType(colIndex, [NUMBER])) {\r\n return Number(value);\r\n }\r\n else if (this.hasType(colIndex, [DATE])){\r\n let dateType = this.Mod.dateType;\r\n return dateType.parse(value, dateType.getLocale(colIndex));\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Return the table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\r\n getData(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.getTableData(includeHeaders, excludeHiddenCols, true);\r\n }\r\n\r\n /**\r\n * Return the table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\r\n getValues(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.getTableData(includeHeaders, excludeHiddenCols, false);\r\n }\r\n\r\n /**\r\n * Return the table data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getTableData(\r\n includeHeaders = false,\r\n excludeHiddenCols = false,\r\n typed = false\r\n ) {\r\n let tblData = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n let headers = this.getHeadersText(excludeHiddenCols);\r\n tblData.push([this.getHeadersRowIndex(), headers]);\r\n }\r\n\r\n let eachRow = this.eachRow();\r\n eachRow((row, k) => {\r\n let rowData = [k, []];\r\n let cells = row.cells;\r\n for (let j = 0, len = cells.length; j < len; j++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(j)) {\r\n continue;\r\n }\r\n }\r\n let cellContent = getContent(cells[j]);\r\n rowData[1].push(cellContent);\r\n }\r\n tblData.push(rowData);\r\n });\r\n return tblData;\r\n }\r\n\r\n /**\r\n * Return the filtered table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredData(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.filteredData(includeHeaders, excludeHiddenCols, true);\r\n }\r\n\r\n /**\r\n * Return the filtered table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredValues(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.filteredData(includeHeaders, excludeHiddenCols, false);\r\n }\r\n\r\n /**\r\n * Return the filtered data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n filteredData(\r\n includeHeaders = false,\r\n excludeHiddenCols = false,\r\n typed = false\r\n ) {\r\n if (this.validRowsIndex.length === 0) {\r\n return [];\r\n }\r\n let rows = this.dom().rows,\r\n filteredData = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n let headers = this.getHeadersText(excludeHiddenCols);\r\n filteredData.push([this.getHeadersRowIndex(), headers]);\r\n }\r\n\r\n let validRows = this.getValidRows(true);\r\n for (let i = 0; i < validRows.length; i++) {\r\n let rData = [this.validRowsIndex[i], []],\r\n cells = rows[this.validRowsIndex[i]].cells;\r\n for (let k = 0; k < cells.length; k++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(k)) {\r\n continue;\r\n }\r\n }\r\n let cellValue = getContent(cells[k]);\r\n rData[1].push(cellValue);\r\n }\r\n filteredData.push(rData);\r\n }\r\n return filteredData;\r\n }\r\n\r\n /**\r\n * Return the filtered data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, true, exclude, false);\r\n }\r\n\r\n /**\r\n * Return the filtered and visible data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getVisibleColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, true, exclude, true);\r\n }\r\n\r\n /**\r\n * Return the filtered values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, false, exclude, false);\r\n }\r\n\r\n /**\r\n * Return the filtered and visible values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getVisibleColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, false, exclude, true);\r\n }\r\n\r\n /**\r\n * Return the filtered data for a given column index\r\n * @param {Number} colIndex Colmun's index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @param {Boolean} [visible=true] Return only filtered and visible data\r\n * (relevant for paging)\r\n * @return {Array} Flat list of values ['val0','val1','val2'...]\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredDataCol(\r\n colIndex,\r\n includeHeaders = false,\r\n typed = false,\r\n exclude = [],\r\n visible = true\r\n ) {\r\n if (isUndef(colIndex)) {\r\n return [];\r\n }\r\n\r\n let rows = this.dom().rows;\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n // ensure valid rows index do not contain excluded rows and row is\r\n // displayed\r\n let validRows = this.getValidRows(true).filter((rowIdx) => {\r\n return exclude.indexOf(rowIdx) === -1 &&\r\n (visible ?\r\n this.getRowDisplay(rows[rowIdx]) !== 'none' :\r\n true);\r\n });\r\n\r\n // convert column value to expected type if necessary\r\n let validColValues = validRows.map((rowIdx) => {\r\n return getContent(rows[rowIdx].cells[colIndex]);\r\n });\r\n\r\n if (includeHeaders) {\r\n validColValues.unshift(this.getHeadersText()[colIndex]);\r\n }\r\n\r\n return validColValues;\r\n }\r\n\r\n /**\r\n * Get the display value of a row\r\n * @param {HTMLTableRowElement} row DOM element of the row\r\n * @return {String} Usually 'none' or ''\r\n */\r\n getRowDisplay(row) {\r\n return row.style.display;\r\n }\r\n\r\n /**\r\n * Validate/invalidate row by setting the 'validRow' attribute on the row\r\n * @param {Number} rowIndex Index of the row\r\n * @param {Boolean} isValid\r\n */\r\n validateRow(rowIndex, isValid) {\r\n let row = this.dom().rows[rowIndex];\r\n if (!row || !isBoolean(isValid)) {\r\n return;\r\n }\r\n\r\n // always visible rows are valid\r\n if (this.excludeRows.indexOf(rowIndex) !== -1) {\r\n isValid = true;\r\n }\r\n\r\n let displayFlag = isValid ? '' : NONE,\r\n validFlag = isValid ? 'true' : 'false';\r\n row.style.display = displayFlag;\r\n\r\n if (this.paging) {\r\n row.setAttribute('validRow', validFlag);\r\n }\r\n\r\n if (isValid) {\r\n if (this.validRowsIndex.indexOf(rowIndex) === -1) {\r\n this.validRowsIndex.push(rowIndex);\r\n }\r\n\r\n this.onRowValidated(this, rowIndex);\r\n this.emitter.emit('row-validated', this, rowIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Validate all filterable rows\r\n */\r\n validateAllRows() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.validRowsIndex = [];\r\n for (let k = this.refRow; k < this.nbFilterableRows; k++) {\r\n this.validateRow(k, true);\r\n }\r\n }\r\n\r\n /**\r\n * Set search value to a given filter\r\n * @param {Number} index Column's index\r\n * @param {String or Array} query searcharg Search term\r\n */\r\n setFilterValue(index, query = '') {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let slc = this.getFilterElement(index),\r\n fltColType = this.getFilterType(index);\r\n\r\n if (!slc) {\r\n return;\r\n }\r\n\r\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-select-filter', this, index,\r\n this.linkedFilters, this.isExternalFlt());\r\n }\r\n slc.value = query;\r\n }\r\n //multiple selects\r\n else if (fltColType === MULTIPLE) {\r\n let values = isArray(query) ? query :\r\n query.split(' ' + this.orOperator + ' ');\r\n\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-select-filter', this, index,\r\n this.linkedFilters, this.isExternalFlt());\r\n }\r\n\r\n this.emitter.emit('select-options', this, index, values);\r\n }\r\n //checklist\r\n else if (fltColType === CHECKLIST) {\r\n let values = [];\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-checklist-filter', this, index,\r\n this.linkedFilters);\r\n }\r\n if (isArray(query)) {\r\n values = query;\r\n } else {\r\n query = matchCase(query, this.caseSensitive);\r\n values = query.split(' ' + this.orOperator + ' ');\r\n }\r\n\r\n this.emitter.emit('select-checklist-options', this, index, values);\r\n }\r\n }\r\n\r\n /**\r\n * Make passed or default working table element width fixed\r\n * @param {TableElement} tbl optional table DOM element\r\n */\r\n setFixedLayout(tbl = this.dom()) {\r\n let colWidths = this.colWidths;\r\n let tableWidth = tbl.clientWidth;\r\n\r\n if (colWidths.length > 0) {\r\n let defaultWidth = this.defaultColWidth;\r\n tableWidth = colWidths\r\n .reduce((x, y) =>\r\n parseInt((x || defaultWidth), 10) +\r\n parseInt((y || defaultWidth), 10)\r\n );\r\n }\r\n\r\n tbl.style.width = `${tableWidth}px`;\r\n tbl.style.tableLayout = 'fixed';\r\n }\r\n\r\n /**\r\n * Set passed or default working table columns' widths with configuration\r\n * values\r\n * @param {TableElement} tbl optional table DOM element\r\n */\r\n setColWidths(tbl = this.dom()) {\r\n let colWidths = this.colWidths;\r\n if (colWidths.length === 0) {\r\n return;\r\n }\r\n\r\n let colTags = tag(tbl, 'col');\r\n let tblHasColTag = colTags.length > 0;\r\n let frag = !tblHasColTag ? doc.createDocumentFragment() : null;\r\n\r\n this.eachCol((k) => {\r\n let col;\r\n if (tblHasColTag) {\r\n col = colTags[k];\r\n } else {\r\n col = createElm('col');\r\n frag.appendChild(col);\r\n }\r\n col.style.width = colWidths[k];\r\n });\r\n\r\n if (!tblHasColTag) {\r\n tbl.insertBefore(frag, tbl.firstChild);\r\n }\r\n }\r\n\r\n /**\r\n * Exclude rows from actions\r\n */\r\n setExcludeRows() {\r\n if (!this.hasExcludedRows) {\r\n return;\r\n }\r\n this.excludeRows.forEach((rowIdx) => this.validateRow(rowIdx, true));\r\n }\r\n\r\n /**\r\n * Clear all the filters' values\r\n */\r\n clearFilters() {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-clearing-filters', this);\r\n this.onBeforeReset(this, this.getFiltersValue());\r\n\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n this.setFilterValue(i, '');\r\n }\r\n\r\n this.filter();\r\n\r\n this.onAfterReset(this);\r\n this.emitter.emit('after-clearing-filters', this);\r\n }\r\n\r\n /**\r\n * Return the ID of the current active filter\r\n * @return {String}\r\n */\r\n getActiveFilterId() {\r\n return this.activeFilterId;\r\n }\r\n\r\n /**\r\n * Set the ID of the current active filter\r\n * @param {String} filterId Element ID\r\n */\r\n setActiveFilterId(filterId) {\r\n this.activeFilterId = filterId;\r\n }\r\n\r\n /**\r\n * Return the column index for a given filter ID\r\n * @param {string} [filterId=''] Filter ID\r\n * @return {Number} Column index\r\n */\r\n getColumnIndexFromFilterId(filterId = '') {\r\n let idx = filterId.split('_')[0];\r\n idx = idx.split(this.prfxFlt)[1];\r\n return parseInt(idx, 10);\r\n }\r\n\r\n /**\r\n * Build filter element ID for a given column index\r\n * @param {any} colIndex\r\n * @return {String} Filter element ID string\r\n * @private\r\n */\r\n buildFilterId(colIndex) {\r\n return `${this.prfxFlt}${colIndex}_${this.id}`;\r\n }\r\n\r\n /**\r\n * Check if has external filters\r\n * @returns {Boolean}\r\n * @private\r\n */\r\n isExternalFlt() {\r\n return this.externalFltIds.length > 0;\r\n }\r\n\r\n /**\r\n * Returns styles path\r\n * @returns {String}\r\n * @private\r\n */\r\n getStylePath() {\r\n return defaultsStr(this.config.style_path, this.basePath + 'style/');\r\n }\r\n\r\n /**\r\n * Returns main stylesheet path\r\n * @returns {String}\r\n * @private\r\n */\r\n getStylesheetPath() {\r\n return defaultsStr(this.config.stylesheet,\r\n this.getStylePath() + 'tablefilter.css');\r\n }\r\n\r\n /**\r\n * Returns themes path\r\n * @returns {String}\r\n * @private\r\n */\r\n getThemesPath() {\r\n return defaultsStr(this.config.themes_path,\r\n this.getStylePath() + 'themes/');\r\n }\r\n\r\n /**\r\n * Make specified column's filter active\r\n * @param colIndex Index of a column\r\n */\r\n activateFilter(colIndex) {\r\n if (isUndef(colIndex)) {\r\n return;\r\n }\r\n this.setActiveFilterId(this.getFilterId(colIndex));\r\n }\r\n\r\n /**\r\n * Refresh the filters subject to linking ('select', 'multiple',\r\n * 'checklist' type)\r\n */\r\n linkFilters() {\r\n if (!this.linkedFilters || !this.activeFilterId) {\r\n return;\r\n }\r\n let slcA1 = this.getFiltersByType(SELECT, true),\r\n slcA2 = this.getFiltersByType(MULTIPLE, true),\r\n slcA3 = this.getFiltersByType(CHECKLIST, true),\r\n slcIndex = slcA1.concat(slcA2);\r\n slcIndex = slcIndex.concat(slcA3);\r\n\r\n slcIndex.forEach((colIdx) => {\r\n let curSlc = this.getFilterElement(colIdx);\r\n let slcSelectedValue = this.getFilterValue(colIdx);\r\n\r\n //1st option needs to be inserted\r\n if (this.loadFltOnDemand) {\r\n let opt0 = createOpt(this.getClearFilterText(colIdx), '');\r\n curSlc.innerHTML = '';\r\n curSlc.appendChild(opt0);\r\n }\r\n\r\n if (slcA3.indexOf(colIdx) !== -1) {\r\n this.emitter.emit('build-checklist-filter', this, colIdx,\r\n true);\r\n } else {\r\n this.emitter.emit('build-select-filter', this, colIdx,\r\n true);\r\n }\r\n\r\n this.setFilterValue(colIdx, slcSelectedValue);\r\n });\r\n }\r\n\r\n /**\r\n * Determine if passed filter column implements exact query match\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\r\n isExactMatch(colIndex) {\r\n let fltType = this.getFilterType(colIndex);\r\n return this.exactMatchByCol[colIndex] || this.exactMatch ||\r\n fltType !== INPUT;\r\n }\r\n\r\n /**\r\n * Check if passed row is valid\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\r\n isRowValid(rowIndex) {\r\n return this.getValidRows().indexOf(rowIndex) !== -1;\r\n }\r\n\r\n /**\r\n * Check if passed row is visible\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\r\n isRowDisplayed(rowIndex) {\r\n let row = this.dom().rows[rowIndex];\r\n return this.getRowDisplay(row) === '';\r\n }\r\n\r\n /**\r\n * Check if specified column filter ignores diacritics.\r\n * Note this is only applicable to input filter types.\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\r\n ignoresDiacritics(colIndex) {\r\n let ignoreDiac = this.ignoreDiacritics;\r\n if (isArray(ignoreDiac)) {\r\n return ignoreDiac[colIndex];\r\n }\r\n return Boolean(ignoreDiac);\r\n }\r\n\r\n /**\r\n * Return clear all text for specified filter column\r\n * @param {Number} colIndex Column index\r\n * @return {String}\r\n */\r\n getClearFilterText(colIndex) {\r\n let clearText = this.clearFilterText;\r\n if (isArray(clearText)) {\r\n return clearText[colIndex];\r\n }\r\n return clearText;\r\n }\r\n\r\n /**\r\n * Column iterator invoking continue and break condition callbacks if any\r\n * then calling supplied callback for each item\r\n * @param {Function} [fn=EMPTY_FN] callback\r\n * @param {Function} [continueFn=EMPTY_FN] continue condition callback\r\n * @param {Function} [breakFn=EMPTY_FN] break condition callback\r\n */\r\n eachCol(fn = EMPTY_FN, continueFn = EMPTY_FN, breakFn = EMPTY_FN) {\r\n let len = this.getCellsNb(this.refRow);\r\n for (let i = 0; i < len; i++) {\r\n if (continueFn(i) === true) {\r\n continue;\r\n }\r\n if (breakFn(i) === true) {\r\n break;\r\n }\r\n fn(i);\r\n }\r\n }\r\n\r\n /**\r\n * Rows iterator starting from supplied row index or defaulting to reference\r\n * row index. Closure function accepts a callback function and optional\r\n * continue and break callbacks.\r\n * @param {Number} startIdx Row index from which filtering starts\r\n */\r\n eachRow(startIdx = this.refRow) {\r\n return (fn = EMPTY_FN, continueFn = EMPTY_FN, breakFn = EMPTY_FN) => {\r\n let rows = this.dom().rows;\r\n let len = this.getRowsNb(true);\r\n for (let i = startIdx; i < len; i++) {\r\n if (continueFn(rows[i], i) === true) {\r\n continue;\r\n }\r\n if (breakFn(rows[i], i) === true) {\r\n break;\r\n }\r\n fn(rows[i], i);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Check if passed script or stylesheet is already imported\r\n * @param {String} filePath Ressource path\r\n * @param {String} type Possible values: 'script' or 'link'\r\n * @return {Boolean}\r\n */\r\n isImported(filePath, type = 'script') {\r\n let imported = false,\r\n attr = type === 'script' ? 'src' : 'href',\r\n files = tag(doc, type);\r\n for (let i = 0, len = files.length; i < len; i++) {\r\n if (isUndef(files[i][attr])) {\r\n continue;\r\n }\r\n if (files[i][attr].match(filePath)) {\r\n imported = true;\r\n break;\r\n }\r\n }\r\n return imported;\r\n }\r\n\r\n /**\r\n * Import script or stylesheet\r\n * @param {String} fileId Ressource ID\r\n * @param {String} filePath Ressource path\r\n * @param {Function} callback Callback\r\n * @param {String} type Possible values: 'script' or 'link'\r\n */\r\n import(fileId, filePath, callback, type = 'script') {\r\n if (this.isImported(filePath, type)) {\r\n return;\r\n }\r\n let o = this,\r\n isLoaded = false,\r\n file,\r\n head = tag(doc, 'head')[0];\r\n\r\n if (type.toLowerCase() === 'link') {\r\n file = createElm('link',\r\n ['id', fileId], ['type', 'text/css'],\r\n ['rel', 'stylesheet'], ['href', filePath]\r\n );\r\n } else {\r\n file = createElm('script',\r\n ['id', fileId],\r\n ['type', 'text/javascript'], ['src', filePath]\r\n );\r\n }\r\n\r\n //Browser <> IE onload event works only for scripts, not for stylesheets\r\n file.onload = file.onreadystatechange = () => {\r\n if (!isLoaded &&\r\n (!this.readyState || this.readyState === 'loaded' ||\r\n this.readyState === 'complete')) {\r\n isLoaded = true;\r\n if (typeof callback === 'function') {\r\n callback.call(null, o);\r\n }\r\n }\r\n };\r\n file.onerror = () => {\r\n throw new Error(`TableFilter could not load: ${filePath}`);\r\n };\r\n head.appendChild(file);\r\n }\r\n\r\n /**\r\n * Check if table has filters grid\r\n * @return {Boolean}\r\n */\r\n isInitialized() {\r\n return this.initialized;\r\n }\r\n\r\n /**\r\n * Get list of filter IDs\r\n * @return {Array} List of filters ids\r\n */\r\n getFiltersId() {\r\n return this.fltIds || [];\r\n }\r\n\r\n /**\r\n * Get filtered (valid) rows indexes\r\n * @param {Boolean} reCalc Force calculation of filtered rows list\r\n * @return {Array} List of row indexes\r\n */\r\n getValidRows(reCalc) {\r\n if (!reCalc) {\r\n return this.validRowsIndex;\r\n }\r\n\r\n this.validRowsIndex = [];\r\n\r\n let eachRow = this.eachRow();\r\n eachRow((row) => {\r\n if (!this.paging) {\r\n if (this.getRowDisplay(row) !== NONE) {\r\n this.validRowsIndex.push(row.rowIndex);\r\n }\r\n } else {\r\n if (row.getAttribute('validRow') === 'true' ||\r\n row.getAttribute('validRow') === null) {\r\n this.validRowsIndex.push(row.rowIndex);\r\n }\r\n }\r\n });\r\n return this.validRowsIndex;\r\n }\r\n\r\n /**\r\n * Get the index of the row containing the filters\r\n * @return {Number}\r\n */\r\n getFiltersRowIndex() {\r\n return this.filtersRowIndex;\r\n }\r\n\r\n /**\r\n * Get the index of the headers row\r\n * @return {Number}\r\n */\r\n getHeadersRowIndex() {\r\n return this.headersRow;\r\n }\r\n\r\n /**\r\n * Get the row index from where the filtering process start (1st filterable\r\n * row)\r\n * @return {Number}\r\n */\r\n getStartRowIndex() {\r\n return this.refRow;\r\n }\r\n\r\n /**\r\n * Get the index of the last row\r\n * @return {Number}\r\n */\r\n getLastRowIndex() {\r\n let nbRows = this.getRowsNb(true);\r\n return (nbRows - 1);\r\n }\r\n\r\n /**\r\n * Determine whether the specified column has one of the passed types\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [types=[]] List of column types\r\n * @return {Boolean}\r\n */\r\n hasType(colIndex, types = []) {\r\n if (this.colTypes.length === 0) {\r\n return false;\r\n }\r\n let colType = this.colTypes[colIndex];\r\n if (isObj(colType)) {\r\n colType = colType.type;\r\n }\r\n return types.indexOf(colType) !== -1;\r\n }\r\n\r\n /**\r\n * Get the header DOM element for a given column index\r\n * @param {Number} colIndex Column index\r\n * @return {Element}\r\n */\r\n getHeaderElement(colIndex) {\r\n let table = this.gridLayout ? this.Mod.gridLayout.headTbl : this.dom();\r\n let tHead = tag(table, 'thead');\r\n let rowIdx = this.getHeadersRowIndex();\r\n let header;\r\n if (tHead.length === 0) {\r\n header = table.rows[rowIdx].cells[colIndex];\r\n }\r\n if (tHead.length === 1) {\r\n header = tHead[0].rows[rowIdx].cells[colIndex];\r\n }\r\n return header;\r\n }\r\n\r\n /**\r\n * Return the list of headers' text\r\n * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns\r\n * @return {Array} list of headers' text\r\n */\r\n getHeadersText(excludeHiddenCols = false) {\r\n let headers = [];\r\n this.eachCol(\r\n (j) => {\r\n let header = this.getHeaderElement(j);\r\n let headerText = getFirstTextNode(header);\r\n headers.push(headerText);\r\n },\r\n // continue condition function\r\n (j) => {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n return this.extension('colsVisibility').isColHidden(j);\r\n }\r\n return false;\r\n }\r\n );\r\n return headers;\r\n }\r\n\r\n /**\r\n * Return the filter type for a specified column\r\n * @param {Number} colIndex Column's index\r\n * @return {String}\r\n */\r\n getFilterType(colIndex) {\r\n return this.filterTypes[colIndex];\r\n }\r\n\r\n /**\r\n * Get the total number of filterable rows\r\n * @return {Number}\r\n */\r\n getFilterableRowsNb() {\r\n return this.getRowsNb(false);\r\n }\r\n\r\n /**\r\n * Return the total number of valid rows\r\n * @param {Boolean} [reCalc=false] Forces calculation of filtered rows\r\n * @return {Number}\r\n */\r\n getValidRowsNb(reCalc = false) {\r\n return this.getValidRows(reCalc).length;\r\n }\r\n\r\n /**\r\n * Return the working DOM element\r\n * @return {HTMLTableElement}\r\n */\r\n dom() {\r\n return this.tbl;\r\n }\r\n\r\n /**\r\n * Return the decimal separator for supplied column as per column type\r\n * configuration or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} '.' or ','\r\n */\r\n getDecimal(colIndex) {\r\n let decimal = this.decimalSeparator;\r\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n let colType = this.colTypes[colIndex];\r\n if (colType.hasOwnProperty('decimal')) {\r\n decimal = colType.decimal;\r\n }\r\n }\r\n return decimal;\r\n }\r\n\r\n /**\r\n * Get the configuration object (literal object)\r\n * @return {Object}\r\n */\r\n config() {\r\n return this.cfg;\r\n }\r\n}\r\n","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Traditional Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-TW')\n *\n */\naddLocale('zh-TW', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年',\n 'weekdays': '星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}點{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分鐘?,點|時,日|號,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '後天', 'value': 2 },\n { 'name': 'day', 'src': '大後天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '這', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-TW\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Simplified Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-CN')\n *\n */\naddLocale('zh-CN', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒钟,分钟,小时,天,个星期|周,个月,年',\n 'weekdays': '星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}点{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分钟?,点|时,日|号,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '后天', 'value': 2 },\n { 'name': 'day', 'src': '大后天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '后', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '这', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-CN\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Swedish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('sv')\n *\n */\naddLocale('sv', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et',\n 'months': 'jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag',\n 'numerals': 'noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio',\n 'tokens': 'den,för|for',\n 'articles': 'den',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar', 'value': -2 },\n { 'name': 'day', 'src': 'går|i går|igår|gar|i gar|igar', 'value': -1 },\n { 'name': 'day', 'src': 'dag|i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'morgon|i morgon|imorgon', 'value': 1 },\n { 'name': 'day', 'src': 'över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon', 'value': 2 },\n { 'name': 'sign', 'src': 'sedan|sen', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i förra|förra|i forra|forra', 'value': -1 },\n { 'name': 'shift', 'src': 'denna', 'value': 0 },\n { 'name': 'shift', 'src': 'nästa|nasta', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"sv\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Russian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ru')\n *\n */\naddLocale('ru', {\n 'firstDayOfWeekYear': 1,\n 'units': 'миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году',\n 'months': 'янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь',\n 'weekdays': 'воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб',\n 'numerals': 'ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять',\n 'tokens': 'в|на,г\\\\.?(?:ода)?',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy} г.',\n 'long': '{d} {month} {yyyy} г., {time}',\n 'full': '{weekday}, {d} {month} {yyyy} г., {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'в',\n 'ampm': ' утра, вечера',\n 'modifiers': [\n { 'name': 'day', 'src': 'позавчера', 'value': -2 },\n { 'name': 'day', 'src': 'вчера', 'value': -1 },\n { 'name': 'day', 'src': 'сегодня', 'value': 0 },\n { 'name': 'day', 'src': 'завтра', 'value': 1 },\n { 'name': 'day', 'src': 'послезавтра', 'value': 2 },\n { 'name': 'sign', 'src': 'назад', 'value': -1 },\n { 'name': 'sign', 'src': 'через', 'value': 1 },\n { 'name': 'shift', 'src': 'прошл:ый|ой|ом', 'value': -1 },\n { 'name': 'shift', 'src': 'следующ:ий|ей|ем', 'value': 1 }\n ],\n 'relative': function(num, unit, ms, format) {\n var numberWithUnit, last = num.toString().slice(-1), mult;\n switch(true) {\n case num >= 11 && num <= 15: mult = 3; break;\n case last == 1: mult = 1; break;\n case last >= 2 && last <= 4: mult = 2; break;\n default: mult = 3;\n }\n numberWithUnit = num + ' ' + this['units'][(mult * 8) + unit];\n switch(format) {\n case 'duration': return numberWithUnit;\n case 'past': return numberWithUnit + ' назад';\n case 'future': return 'через ' + numberWithUnit;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ],\n 'timeFrontParse': [\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ru\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Portuguese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pt')\n *\n */\naddLocale('pt', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s',\n 'months': 'jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|',\n 'weekdays': 'dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado',\n 'numerals': 'zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez',\n 'tokens': 'a,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{Weekday}, {d} de {Month} de {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'às',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteontem', 'value': -2 },\n { 'name': 'day', 'src': 'ontem', 'value': -1 },\n { 'name': 'day', 'src': 'hoje', 'value': 0 },\n { 'name': 'day', 'src': 'amanh:ã|a', 'value': 1 },\n { 'name': 'sign', 'src': 'atrás|atras|há|ha', 'value': -1 },\n { 'name': 'sign', 'src': 'daqui a', 'value': 1 },\n { 'name': 'shift', 'src': 'passad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {1?} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pt\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Polish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pl')\n *\n */\naddLocale('pl', {\n 'plural': true,\n 'units': 'milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat',\n 'months': 'sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień',\n 'weekdays': 'nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę',\n 'numerals': 'zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć',\n 'tokens': 'w|we,roku',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full' : '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'o',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'przedwczoraj', 'value': -2 },\n { 'name': 'day', 'src': 'wczoraj', 'value': -1 },\n { 'name': 'day', 'src': 'dzisiaj|dziś', 'value': 0 },\n { 'name': 'day', 'src': 'jutro', 'value': 1 },\n { 'name': 'day', 'src': 'pojutrze', 'value': 2 },\n { 'name': 'sign', 'src': 'temu|przed', 'value': -1 },\n { 'name': 'sign', 'src': 'za', 'value': 1 },\n { 'name': 'shift', 'src': 'zeszły|zeszła|ostatni|ostatnia', 'value': -1 },\n { 'name': 'shift', 'src': 'następny|następna|następnego|przyszły|przyszła|przyszłego', 'value': 1 }\n ],\n 'relative': function (num, unit, ms, format) {\n // special cases for relative days\n var DAY = 4;\n if (unit === DAY) {\n if (num === 1 && format === 'past') return 'wczoraj';\n if (num === 1 && format === 'future') return 'jutro';\n if (num === 2 && format === 'past') return 'przedwczoraj';\n if (num === 2 && format === 'future') return 'pojutrze';\n }\n\n var mult;\n var last = +num.toFixed(0).slice(-1);\n var last2 = +num.toFixed(0).slice(-2);\n switch (true) {\n case num === 1: mult = 0; break;\n case last2 >= 12 && last2 <= 14: mult = 2; break;\n case last >= 2 && last <= 4: mult = 1; break;\n default: mult = 2;\n }\n var text = this['units'][(mult * 8) + unit];\n var prefix = num + ' ';\n\n // changing to accusative case for 'past' and 'future' formats\n // (only singular feminine unit words are different in accusative, each of which ends with 'a')\n if ((format === 'past' || format === 'future') && num === 1) {\n text = text.replace(/a$/, 'ę');\n }\n\n text = prefix + text;\n switch (format) {\n case 'duration': return text;\n case 'past': return text + ' temu';\n case 'future': return 'za ' + text;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{shift} {unit:5-7}',\n '{0} {shift?} {weekday}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{date} {months} {year?} {1?}',\n '{0?} {shift?} {weekday}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pl\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Norwegian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('no')\n *\n */\naddLocale('no', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember',\n 'weekdays': 'søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag',\n 'numerals': 'en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short':'d. {d}. {month} {yyyy}',\n 'long': 'den {d}. {month} {yyyy} {H}:{mm}',\n 'full': '{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'overimorgen|overmorgen|over i morgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i siste|siste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'neste', 'value': 1 }\n ],\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{date} {month}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date?} {month}\\\\.? {year}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"no\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Dutch locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('nl')\n *\n */\naddLocale('nl', {\n 'plural': true,\n 'units': 'milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar',\n 'months': 'jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za',\n 'numerals': 'nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {time}',\n 'full': '{weekday} {d} {Month} {yyyy} {time}',\n 'stamp': '{dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': \"'s,om\",\n 'modifiers': [\n { 'name': 'day', 'src': 'gisteren', 'value': -1 },\n { 'name': 'day', 'src': 'vandaag', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'overmorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'geleden', 'value': -1 },\n { 'name': 'sign', 'src': 'vanaf nu', 'value': 1 },\n { 'name': 'shift', 'src': 'laatste|vorige|afgelopen', 'value': -1 },\n { 'name': 'shift', 'src': 'volgend:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"nl\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Korean locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ko')\n *\n */\naddLocale('ko', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'units': '밀리초,초,분,시간,일,주,개월|달,년|해',\n 'weekdays': '일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|',\n 'numerals': '영|제로,일|한,이,삼,사,오,육,칠,팔,구,십',\n 'short': '{yyyy}.{MM}.{dd}',\n 'medium': '{yyyy}년 {M}월 {d}일',\n 'long': '{yyyy}년 {M}월 {d}일 {time}',\n 'full': '{yyyy}년 {M}월 {d}일 {weekday} {time}',\n 'stamp': '{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}',\n 'time': '{tt} {h}시 {mm}분',\n 'past': '{num}{unit} {sign}',\n 'future': '{num}{unit} {sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',초,분,시,일,,월,년',\n 'ampm': '오전,오후',\n 'modifiers': [\n { 'name': 'day', 'src': '그저께', 'value': -2 },\n { 'name': 'day', 'src': '어제', 'value': -1 },\n { 'name': 'day', 'src': '오늘', 'value': 0 },\n { 'name': 'day', 'src': '내일', 'value': 1 },\n { 'name': 'day', 'src': '모레', 'value': 2 },\n { 'name': 'sign', 'src': '전', 'value': -1 },\n { 'name': 'sign', 'src': '후', 'value': 1 },\n { 'name': 'shift', 'src': '지난|작', 'value': -1 },\n { 'name': 'shift', 'src': '이번|올', 'value': 0 },\n { 'name': 'shift', 'src': '다음|내', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit} {sign}',\n '{shift?} {unit:5-7}',\n '{year?} {month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{year?} {month?} {date} {weekday?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ko\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Japanese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ja')\n *\n */\naddLocale('ja', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'units': 'ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度',\n 'weekdays': '日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'timeSuffixes': ',秒,分,時,日,,月,年度?',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{time} {weekday}',\n 'stamp': '{yyyy}年{M}月{d}日 {H}:{mm} {dow}',\n 'time': '{tt}{h}時{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'ampm': '午前,午後',\n 'modifiers': [\n { 'name': 'day', 'src': '一昨々日|前々々日', 'value': -3 },\n { 'name': 'day', 'src': '一昨日|おととい|前々日', 'value': -2 },\n { 'name': 'day', 'src': '昨日|前日', 'value': -1 },\n { 'name': 'day', 'src': '今日|当日|本日', 'value': 0 },\n { 'name': 'day', 'src': '明日|翌日|次日', 'value': 1 },\n { 'name': 'day', 'src': '明後日|翌々日', 'value': 2 },\n { 'name': 'day', 'src': '明々後日|翌々々日', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'edge', 'src': '始|初日|頭', 'value': -2 },\n { 'name': 'edge', 'src': '末|尻', 'value': 2 },\n { 'name': 'edge', 'src': '末日', 'value': 1 },\n { 'name': 'shift', 'src': '一昨々|前々々', 'value': -3 },\n { 'name': 'shift', 'src': '一昨|前々|先々', 'value': -2 },\n { 'name': 'shift', 'src': '先|昨|去|前', 'value': -1 },\n { 'name': 'shift', 'src': '今|本|当', 'value': 0 },\n { 'name': 'shift', 'src': '来|明|翌|次', 'value': 1 },\n { 'name': 'shift', 'src': '明後|翌々|次々|再来|さ来', 'value': 2 },\n { 'name': 'shift', 'src': '明々後|翌々々', 'value': 3 }\n ],\n 'parse': [\n '{month}{edge}',\n '{num}{unit}{sign}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{unit:5}{weekday?}',\n '{shift}{unit:7}{month}{edge}',\n '{shift}{unit:7}{month?}{date?}',\n '{shift}{unit:6}{edge?}{date?}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ja\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Italian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('it')\n *\n */\naddLocale('it', {\n 'plural': true,\n 'units': 'millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i',\n 'months': 'gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|',\n 'weekdays': 'dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|',\n 'numerals': \"zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci\",\n 'tokens': \"l'|la|il\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'alle',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'ieri', 'value': -1 },\n { 'name': 'day', 'src': 'oggi', 'value': 0 },\n { 'name': 'day', 'src': 'domani', 'value': 1 },\n { 'name': 'day', 'src': 'dopodomani', 'value': 2 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'da adesso', 'value': 1 },\n { 'name': 'shift', 'src': 'scors:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'prossim:o|a', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"it\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * French locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('fr')\n *\n */\naddLocale('fr', {\n 'plural': true,\n 'units': 'milliseconde:|s,seconde:|s,minute:|s,heure:|s,jour:|s,semaine:|s,mois,an:|s|née|nee',\n 'months': 'janv:ier|,févr:ier|+fevr:ier|,mars,avr:il|,mai,juin,juil:let|,août,sept:embre|,oct:obre|,nov:embre|,déc:embre|+dec:embre|',\n 'weekdays': 'dim:anche|,lun:di|,mar:di|,mer:credi|,jeu:di|,ven:dredi|,sam:edi|',\n 'numerals': 'zéro,un:|e,deux,trois,quatre,cinq,six,sept,huit,neuf,dix',\n 'tokens': \"l'|la|le,er\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'à',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'hier', 'value': -1 },\n { 'name': 'day', 'src': \"aujourd'hui\", 'value': 0 },\n { 'name': 'day', 'src': 'demain', 'value': 1 },\n { 'name': 'sign', 'src': 'il y a', 'value': -1 },\n { 'name': 'sign', 'src': \"dans|d'ici\", 'value': 1 },\n { 'name': 'shift', 'src': 'derni:èr|er|ère|ere', 'value': -1 },\n { 'name': 'shift', 'src': 'prochain:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}'\n ],\n 'timeParse': [\n '{day|weekday} {shift?}',\n '{weekday?},? {0?} {date}{1?} {months}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{0?} {weekday} {shift}',\n '{weekday?},? {0?} {date}{1?} {months}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"fr\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Finnish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('fi')\n *\n */\naddLocale('fi', {\n 'plural': true,\n 'units': 'millisekun:ti|tia|nin|teja|tina,sekun:ti|tia|nin|teja|tina,minuut:ti|tia|in|teja|tina,tun:ti|tia|nin|teja|tina,päiv:ä|ää|än|iä|änä,viik:ko|koa|on|olla|koja|kona,kuukau:si|tta|den+kuussa,vuo:si|tta|den|sia|tena|nna',\n 'months': 'tammi:kuuta||kuu,helmi:kuuta||kuu,maalis:kuuta||kuu,huhti:kuuta||kuu,touko:kuuta||kuu,kesä:kuuta||kuu,heinä:kuuta||kuu,elo:kuuta||kuu,syys:kuuta||kuu,loka:kuuta||kuu,marras:kuuta||kuu,joulu:kuuta||kuu',\n 'weekdays': 'su:nnuntai||nnuntaina,ma:anantai||anantaina,ti:istai||istaina,ke:skiviikko||skiviikkona,to:rstai||rstaina,pe:rjantai||rjantaina,la:uantai||uantaina',\n 'numerals': 'nolla,yksi|ensimmäinen,kaksi|toinen,kolm:e|as,neljä:|s,vii:si|des,kuu:si|des,seitsemä:n|s,kahdeksa:n|s,yhdeksä:n|s,kymmene:n|s',\n 'short': '{d}.{M}.{yyyy}',\n 'medium': '{d}. {month} {yyyy}',\n 'long': '{d}. {month} {yyyy} klo {time}',\n 'full': '{weekday} {d}. {month} {yyyy} klo {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}.{mm}',\n 'timeMarkers': 'klo,kello',\n 'ordinalSuffix': '.',\n 'relative': function(num, unit, ms, format) {\n var units = this['units'];\n function numberWithUnit(mult) {\n return num + ' ' + units[(8 * mult) + unit];\n }\n function baseUnit() {\n return numberWithUnit(num === 1 ? 0 : 1);\n }\n switch(format) {\n case 'duration': return baseUnit();\n case 'past': return baseUnit() + ' sitten';\n case 'future': return numberWithUnit(2) + ' kuluttua';\n }\n },\n 'modifiers': [\n { 'name': 'day', 'src': 'toissa päivänä', 'value': -2 },\n { 'name': 'day', 'src': 'eilen|eilistä', 'value': -1 },\n { 'name': 'day', 'src': 'tänään', 'value': 0 },\n { 'name': 'day', 'src': 'huomenna|huomista', 'value': 1 },\n { 'name': 'day', 'src': 'ylihuomenna|ylihuomista', 'value': 2 },\n { 'name': 'sign', 'src': 'sitten|aiemmin', 'value': -1 },\n { 'name': 'sign', 'src': 'päästä|kuluttua|myöhemmin', 'value': 1 },\n { 'name': 'edge', 'src': 'lopussa', 'value': 2 },\n { 'name': 'edge', 'src': 'ensimmäinen|ensimmäisenä', 'value': -2 },\n { 'name': 'shift', 'src': 'edel:linen|lisenä', 'value': -1 },\n { 'name': 'shift', 'src': 'viime', 'value': -1 },\n { 'name': 'shift', 'src': 'tä:llä|ssä|nä|mä', 'value': 0 },\n { 'name': 'shift', 'src': 'seuraava|seuraavana|tuleva|tulevana|ensi', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{num?} {unit} {sign}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"fi\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Spanish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('es')\n *\n */\naddLocale('es', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,día|días|dia|dias,semana:|s,mes:|es,año|años|ano|anos',\n 'months': 'ene:ro|,feb:rero|,mar:zo|,abr:il|,may:o|,jun:io|,jul:io|,ago:sto|,sep:tiembre|,oct:ubre|,nov:iembre|,dic:iembre|',\n 'weekdays': 'dom:ingo|,lun:es|,mar:tes|,mié:rcoles|+mie:rcoles|,jue:ves|,vie:rnes|,sáb:ado|+sab:ado|',\n 'numerals': 'cero,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez',\n 'tokens': 'el,la,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{weekday}, {d} de {month} de {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'a las',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteayer', 'value': -2 },\n { 'name': 'day', 'src': 'ayer', 'value': -1 },\n { 'name': 'day', 'src': 'hoy', 'value': 0 },\n { 'name': 'day', 'src': 'mañana|manana', 'value': 1 },\n { 'name': 'sign', 'src': 'hace', 'value': -1 },\n { 'name': 'sign', 'src': 'dentro de', 'value': 1 },\n { 'name': 'shift', 'src': 'pasad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {2?} {year?}',\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{0?}{1?} {unit:5-7} {shift}',\n '{0?}{1?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday} {shift?}',\n '{date} {2?} {months?}\\\\.? {2?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {weekday} {shift?}',\n '{date} {2?} {months?}\\\\.? {2?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"es\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * German locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('de')\n *\n */\naddLocale('de', {\n 'plural': true,\n 'units': 'Millisekunde:|n,Sekunde:|n,Minute:|n,Stunde:|n,Tag:|en,Woche:|n,Monat:|en,Jahr:|en|e',\n 'months': 'Jan:uar|,Feb:ruar|,M:är|ärz|ar|arz,Apr:il|,Mai,Juni,Juli,Aug:ust|,Sept:ember|,Okt:ober|,Nov:ember|,Dez:ember|',\n 'weekdays': 'So:nntag|,Mo:ntag|,Di:enstag|,Mi:ttwoch|,Do:nnerstag|,Fr:eitag|,Sa:mstag|',\n 'numerals': 'null,ein:|e|er|en|em,zwei,drei,vier,fuenf,sechs,sieben,acht,neun,zehn',\n 'tokens': 'der',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d}. {Month} {yyyy}',\n 'long': '{d}. {Month} {yyyy} {time}',\n 'full': '{Weekday}, {d}. {Month} {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'um',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'vorgestern', 'value': -2 },\n { 'name': 'day', 'src': 'gestern', 'value': -1 },\n { 'name': 'day', 'src': 'heute', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'übermorgen|ubermorgen|uebermorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'vor:|her', 'value': -1 },\n { 'name': 'sign', 'src': 'in', 'value': 1 },\n { 'name': 'shift', 'src': 'letzte:|r|n|s', 'value': -1 },\n { 'name': 'shift', 'src': 'nächste:|r|n|s+nachste:|r|n|s+naechste:|r|n|s+kommende:n|r', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift} {weekday}',\n '{weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"de\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Danish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('da')\n *\n */\naddLocale('da', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|ter,tim:e|er,dag:|e,ug:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'jan:uar|,feb:ruar|,mar:ts|,apr:il|,maj,jun:i|,jul:i|,aug:ust|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'søn:dag|+son:dag|,man:dag|,tir:sdag|,ons:dag|,tor:sdag|,fre:dag|,lør:dag|+lor:dag|',\n 'numerals': 'nul,en|et,to,tre,fire,fem,seks,syv,otte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d}. {month} {yyyy}',\n 'long': '{d}. {month} {yyyy} {time}',\n 'full': '{weekday} d. {d}. {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'over morgon|overmorgen|i over morgen|i overmorgen|iovermorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i sidste|sidste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'næste|naeste', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift} {weekday}',\n '{0?} {weekday?},? {date}\\\\.? {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"da\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Catalan locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ca')\n *\n */\naddLocale('ca', {\n 'plural': true,\n 'units': 'milisegon:|s,segon:|s,minut:|s,hor:a|es,di:a|es,setman:a|es,mes:|os,any:|s',\n 'months': 'gen:er|,febr:er|,mar:ç|,abr:il|,mai:g|,jun:y|,jul:iol|,ag:ost|,set:embre|,oct:ubre|,nov:embre|,des:embre|',\n 'weekdays': 'diumenge|dg,dilluns|dl,dimarts|dt,dimecres|dc,dijous|dj,divendres|dv,dissabte|ds',\n 'numerals': 'zero,un,dos,tres,quatre,cinc,sis,set,vuit,nou,deu',\n 'tokens': 'el,la,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{sign} {num} {unit}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'a las',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': \"abans d'ahir\", 'value': -2 },\n { 'name': 'day', 'src': 'ahir', 'value': -1 },\n { 'name': 'day', 'src': 'avui', 'value': 0 },\n { 'name': 'day', 'src': 'demà|dema', 'value': 1 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'en', 'value': 1 },\n { 'name': 'shift', 'src': 'passat', 'value': -1 },\n { 'name': 'shift', 'src': 'el proper|la propera', 'value': 1 }\n ],\n 'parse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{0?}{1?} {unit:5-7} {shift}',\n '{0?}{1?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift} {weekday}',\n '{weekday} {shift}',\n '{date?} {2?} {months}\\\\.? {2?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ca\" locale.","'use strict';\n\nrequire('./ca');\nrequire('./da');\nrequire('./de');\nrequire('./es');\nrequire('./fi');\nrequire('./fr');\nrequire('./it');\nrequire('./ja');\nrequire('./ko');\nrequire('./nl');\nrequire('./no');\nrequire('./pl');\nrequire('./pt');\nrequire('./ru');\nrequire('./sv');\nrequire('./zh-CN');\nrequire('./zh-TW');\n\nmodule.exports = require('sugar-core');","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"years\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"weeks\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'union': function(range) {\n return new Range(\n this.start < range.start ? this.start : range.start,\n this.end > range.end ? this.end : range.end\n );\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"union\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'toString': function() {\n return rangeIsValid(this) ? this.start + '..' + this.end : 'Invalid Range';\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"toString\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeEvery = require('./internal/rangeEvery'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'toArray': function() {\n return rangeEvery(this);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"toArray\" on Range.prototype.","'use strict';\n\nvar classChecks = require('../../common/var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction getRangeMemberNumericValue(m) {\n return isString(m) ? m.charCodeAt(0) : m;\n}\n\nmodule.exports = getRangeMemberNumericValue;","'use strict';\n\nvar Range = require('./internal/Range'),\n mathAliases = require('../common/var/mathAliases'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype'),\n getRangeMemberNumericValue = require('./internal/getRangeMemberNumericValue');\n\nvar abs = mathAliases.abs;\n\ndefineOnPrototype(Range, {\n\n 'span': function() {\n var n = getRangeMemberNumericValue(this.end) - getRangeMemberNumericValue(this.start);\n return rangeIsValid(this) ? abs(n) + 1 : NaN;\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"span\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"seconds\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"months\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"minutes\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"milliseconds\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeIsValid = require('./internal/rangeIsValid'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'isValid': function() {\n return rangeIsValid(this);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"isValid\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'intersect': function(range) {\n if (range.start > this.end || range.end < this.start) {\n return new Range(NaN, NaN);\n }\n return new Range(\n this.start > range.start ? this.start : range.start,\n this.end < range.end ? this.end : range.end\n );\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"intersect\" on Range.prototype.","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"hours\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeEvery = require('./internal/rangeEvery'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'every': function(amount, fn) {\n return rangeEvery(this, amount, false, fn);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"every\" on Range.prototype.","'use strict';\n\nvar CommonChars = require('../var/CommonChars');\n\nvar HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD;\n\nfunction periodSplit(str) {\n return str.split(HALF_WIDTH_PERIOD);\n}\n\nmodule.exports = periodSplit;","'use strict';\n\nvar periodSplit = require('../../common/internal/periodSplit');\n\nfunction getPrecision(n) {\n var split = periodSplit(n.toString());\n return split[1] ? split[1].length : 0;\n}\n\nmodule.exports = getPrecision;","'use strict';\n\nvar mathAliases = require('../../common/var/mathAliases'),\n getPrecision = require('./getPrecision');\n\nvar max = mathAliases.max;\n\nfunction getGreaterPrecision(n1, n2) {\n return max(getPrecision(n1), getPrecision(n2));\n}\n\nmodule.exports = getGreaterPrecision;","'use strict';\n\nvar chr = require('../../common/var/chr');\n\nfunction incrementString(current, amount) {\n return chr(current.charCodeAt(0) + amount);\n}\n\nmodule.exports = incrementString;","'use strict';\n\nvar withPrecision = require('../../common/internal/withPrecision');\n\nfunction incrementNumber(current, amount, precision) {\n return withPrecision(current + amount, precision);\n}\n\nmodule.exports = incrementNumber;","'use strict';\n\nfunction valueIsNotInfinite(m) {\n return m !== -Infinity && m !== Infinity;\n}\n\nmodule.exports = valueIsNotInfinite;","'use strict';\n\nvar valueIsNotInfinite = require('./valueIsNotInfinite'),\n getRangeMemberPrimitiveValue = require('./getRangeMemberPrimitiveValue');\n\nfunction isValidRangeMember(m) {\n var val = getRangeMemberPrimitiveValue(m);\n return (!!val || val === 0) && valueIsNotInfinite(m);\n}\n\nmodule.exports = isValidRangeMember;","'use strict';\n\nvar MULTIPLIERS = require('../var/MULTIPLIERS'),\n DURATION_UNITS = require('../var/DURATION_UNITS'),\n Range = require('./Range'),\n trunc = require('../../common/var/trunc'),\n forEach = require('../../common/internal/forEach'),\n rangeEvery = require('./rangeEvery'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize'),\n defineOnPrototype = require('../../common/internal/defineOnPrototype');\n\nfunction buildDateRangeUnits() {\n var methods = {};\n forEach(DURATION_UNITS.split('|'), function(unit, i) {\n var name = unit + 's', mult, fn;\n if (i < 4) {\n fn = function() {\n return rangeEvery(this, unit, true);\n };\n } else {\n mult = MULTIPLIERS[simpleCapitalize(name)];\n fn = function() {\n return trunc((this.end - this.start) / mult);\n };\n }\n methods[name] = fn;\n });\n defineOnPrototype(Range, methods);\n}\n\nmodule.exports = buildDateRangeUnits;","'use strict';\n\nrequire('./build/buildDateRangeUnitsCall');\n\n// This package does not export anything as it is\n// simply defining \"days\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'contains': function(el) {\n if (el == null) return false;\n if (el.start && el.end) {\n return el.start >= this.start && el.start <= this.end &&\n el.end >= this.start && el.end <= this.end;\n } else {\n return el >= this.start && el <= this.end;\n }\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"contains\" on Range.prototype.","'use strict';\n\nvar Range = require('./internal/Range'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'clone': function() {\n return new Range(this.start, this.end);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"clone\" on Range.prototype.","'use strict';\n\nvar cloneRangeMember = require('./cloneRangeMember');\n\nfunction rangeClamp(range, obj) {\n var clamped,\n start = range.start,\n end = range.end,\n min = end < start ? end : start,\n max = start > end ? start : end;\n if (obj < min) {\n clamped = min;\n } else if (obj > max) {\n clamped = max;\n } else {\n clamped = obj;\n }\n return cloneRangeMember(clamped);\n}\n\nmodule.exports = rangeClamp;","'use strict';\n\nvar Range = require('./internal/Range'),\n rangeClamp = require('./internal/rangeClamp'),\n defineOnPrototype = require('../common/internal/defineOnPrototype');\n\ndefineOnPrototype(Range, {\n\n 'clamp': function(el) {\n return rangeClamp(this, el);\n }\n\n});\n\n// This package does not export anything as it is\n// simply defining \"clamp\" on Range.prototype.","'use strict';\n\nvar DURATION_UNITS = require('./DURATION_UNITS');\n\nmodule.exports = RegExp('(\\\\d+)?\\\\s*('+ DURATION_UNITS +')s?', 'i');","'use strict';\n\nvar DURATION_UNITS = require('./DURATION_UNITS');\n\nmodule.exports = '((?:\\\\d+)?\\\\s*(?:' + DURATION_UNITS + '))s?';","'use strict';\n\nvar FULL_CAPTURED_DURATION = require('./FULL_CAPTURED_DURATION');\n\nmodule.exports = {\n RANGE_REG_FROM_TO: /(?:from)?\\s*(.+)\\s+(?:to|until)\\s+(.+)$/i,\n RANGE_REG_REAR_DURATION: RegExp('(.+)\\\\s*for\\\\s*' + FULL_CAPTURED_DURATION, 'i'),\n RANGE_REG_FRONT_DURATION: RegExp('(?:for)?\\\\s*'+ FULL_CAPTURED_DURATION +'\\\\s*(?:starting)?\\\\s(?:at\\\\s)?(.+)', 'i')\n};","'use strict';\n\nvar Range = require('./Range'),\n DurationTextFormats = require('../var/DurationTextFormats'),\n incrementDate = require('./incrementDate'),\n getDateForRange = require('./getDateForRange'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n getDateIncrementObject = require('./getDateIncrementObject');\n\nvar sugarDate = namespaceAliases.sugarDate,\n RANGE_REG_FROM_TO = DurationTextFormats.RANGE_REG_FROM_TO,\n RANGE_REG_REAR_DURATION = DurationTextFormats.RANGE_REG_REAR_DURATION,\n RANGE_REG_FRONT_DURATION = DurationTextFormats.RANGE_REG_FRONT_DURATION;\n\nfunction createDateRangeFromString(str) {\n var match, datetime, duration, dio, start, end;\n if (sugarDate.get && (match = str.match(RANGE_REG_FROM_TO))) {\n start = getDateForRange(match[1].replace('from', 'at'));\n end = sugarDate.get(start, match[2]);\n return new Range(start, end);\n }\n if (match = str.match(RANGE_REG_FRONT_DURATION)) {\n duration = match[1];\n datetime = match[2];\n }\n if (match = str.match(RANGE_REG_REAR_DURATION)) {\n datetime = match[1];\n duration = match[2];\n }\n if (datetime && duration) {\n start = getDateForRange(datetime);\n dio = getDateIncrementObject(duration);\n end = incrementDate(start, dio[0], dio[1]);\n } else {\n start = str;\n }\n return new Range(getDateForRange(start), getDateForRange(end));\n}\n\nmodule.exports = createDateRangeFromString;","'use strict';\n\nvar Range = require('../internal/Range'),\n classChecks = require('../../common/var/classChecks'),\n getDateForRange = require('../internal/getDateForRange'),\n createDateRangeFromString = require('../internal/createDateRangeFromString');\n\nvar isString = classChecks.isString;\n\nvar DateRangeConstructor = function(start, end) {\n if (arguments.length === 1 && isString(start)) {\n return createDateRangeFromString(start);\n }\n return new Range(getDateForRange(start), getDateForRange(end));\n};\n\nmodule.exports = DateRangeConstructor;","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateRangeConstructor = require('../range/var/DateRangeConstructor');\n\nSugar.Date.defineStatic({\n\n 'range': DateRangeConstructor\n\n});\n\nmodule.exports = Sugar.Date.range;","'use strict';\n\n// Static Methods\nrequire('../date/range');\n\n// Prototype Methods\nrequire('./clamp');\nrequire('./clone');\nrequire('./contains');\nrequire('./days');\nrequire('./every');\nrequire('./hours');\nrequire('./intersect');\nrequire('./isValid');\nrequire('./milliseconds');\nrequire('./minutes');\nrequire('./months');\nrequire('./seconds');\nrequire('./span');\nrequire('./toArray');\nrequire('./toString');\nrequire('./union');\nrequire('./weeks');\nrequire('./years');\n\nmodule.exports = require('sugar-core');","'use strict';\n\nvar Sugar = require('sugar-core'),\n _dateOptions = require('./var/_dateOptions');\n\nmodule.exports = Sugar.Date.setOption;","'use strict';\n\nvar Sugar = require('sugar-core'),\n _dateOptions = require('./var/_dateOptions');\n\nmodule.exports = Sugar.Date.getOption;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.yearsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.weeksAgo;","'use strict';\n\nvar Sugar = require('sugar-core'),\n setWeekday = require('./internal/setWeekday');\n\nSugar.Date.defineInstance({\n\n 'setWeekday': function(date, dow) {\n return setWeekday(date, dow);\n }\n\n});\n\nmodule.exports = Sugar.Date.setWeekday;","'use strict';\n\nvar Sugar = require('sugar-core'),\n _utc = require('../common/var/_utc');\n\nSugar.Date.defineInstance({\n\n 'setUTC': function(date, on) {\n return _utc(date, on);\n }\n\n});\n\nmodule.exports = Sugar.Date.setUTC;","'use strict';\n\nvar Sugar = require('sugar-core'),\n setISOWeekNumber = require('./internal/setISOWeekNumber');\n\nSugar.Date.defineInstance({\n\n 'setISOWeek': function(date, num) {\n return setISOWeekNumber(date, num);\n }\n\n});\n\nmodule.exports = Sugar.Date.setISOWeek;","'use strict';\n\nvar Sugar = require('sugar-core'),\n updateDate = require('./internal/updateDate'),\n collectDateArguments = require('./internal/collectDateArguments');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'set': function(d, args) {\n args = collectDateArguments(args);\n return updateDate(d, args[0], args[1]);\n }\n\n});\n\nmodule.exports = Sugar.Date.set;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.secondsAgo;","'use strict';\n\nvar Sugar = require('sugar-core'),\n advanceDateWithArgs = require('./internal/advanceDateWithArgs');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'rewind': function(d, args) {\n return advanceDateWithArgs(d, args, -1);\n }\n\n});\n\nmodule.exports = Sugar.Date.rewind;","'use strict';\n\nvar iterateOverDateParams = require('./iterateOverDateParams');\n\nfunction getUnitIndexForParamName(name) {\n var params = {}, unitIndex;\n params[name] = 1;\n iterateOverDateParams(params, function(name, val, unit, i) {\n unitIndex = i;\n return false;\n });\n return unitIndex;\n}\n\nmodule.exports = getUnitIndexForParamName;","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateUnitIndexes = require('./var/DateUnitIndexes'),\n moveToBeginningOfUnit = require('./internal/moveToBeginningOfUnit'),\n getUnitIndexForParamName = require('./internal/getUnitIndexForParamName');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nSugar.Date.defineInstance({\n\n 'reset': function(date, unit, localeCode) {\n var unitIndex = unit ? getUnitIndexForParamName(unit) : DAY_INDEX;\n moveToBeginningOfUnit(date, unitIndex, localeCode);\n return date;\n }\n\n});\n\nmodule.exports = Sugar.Date.reset;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate'),\n dateRelative = require('./internal/dateRelative');\n\nSugar.Date.defineInstance({\n\n 'relativeTo': function(date, d, localeCode) {\n return dateRelative(date, createDate(d), localeCode);\n }\n\n});\n\nmodule.exports = Sugar.Date.relativeTo;","'use strict';\n\nvar getNewDate = require('./getNewDate'),\n mathAliases = require('../../common/var/mathAliases'),\n getAdjustedUnit = require('./getAdjustedUnit'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar abs = mathAliases.abs;\n\nfunction getAdjustedUnitForDate(d, dRelative) {\n var ms;\n if (!dRelative) {\n dRelative = getNewDate();\n if (d > dRelative) {\n // If our date is greater than the one that we got from getNewDate, it\n // means that we are finding the unit for a date that is in the future\n // relative to now. However, often the incoming date was created in\n // the same cycle as our comparison, but our \"now\" date will have been\n // created an instant after it, creating situations where \"5 minutes from\n // now\" becomes \"4 minutes from now\" in the same tick. To prevent this,\n // subtract a buffer of 10ms to compensate.\n dRelative = new Date(dRelative.getTime() - 10);\n }\n }\n ms = d - dRelative;\n return getAdjustedUnit(ms, function(u) {\n return abs(getTimeDistanceForUnit(d, dRelative, u));\n });\n}\n\nmodule.exports = getAdjustedUnitForDate;","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateRelative = require('./internal/dateRelative');\n\nSugar.Date.defineInstance({\n\n 'relative': function(date, localeCode, fn) {\n return dateRelative(date, null, localeCode, fn);\n }\n\n});\n\nmodule.exports = Sugar.Date.relative;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.monthsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.minutesAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.millisecondsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nSugar.Date.defineInstance({\n\n 'iso': function(date) {\n return date.toISOString();\n }\n\n});\n\nmodule.exports = Sugar.Date.iso;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isYesterday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWeekend;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWeekday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isWednesday;","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateIsValid = require('./internal/dateIsValid');\n\nSugar.Date.defineInstance({\n\n 'isValid': function(date) {\n return dateIsValid(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.isValid;","'use strict';\n\nvar _utc = require('../../common/var/_utc'),\n tzOffset = require('./tzOffset');\n\nfunction isUTC(d) {\n return !!_utc(d) || tzOffset(d) === 0;\n}\n\nmodule.exports = isUTC;","'use strict';\n\nvar Sugar = require('sugar-core'),\n isUTC = require('./internal/isUTC');\n\nSugar.Date.defineInstance({\n\n 'isUTC': function(date) {\n return isUTC(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.isUTC;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isTuesday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isTomorrow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isToday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isThursday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isThisMonth;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isSunday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isSaturday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isPast;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isNextMonth;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isMonday;","'use strict';\n\nvar Sugar = require('sugar-core'),\n getYear = require('./internal/getYear');\n\nSugar.Date.defineInstance({\n\n 'isLeapYear': function(date) {\n var year = getYear(date);\n return (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isLeapYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.isLastMonth;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isFuture;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n spaceSplit = require('../../common/internal/spaceSplit'),\n fullCompareDate = require('./fullCompareDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar English = LocaleHelpers.English,\n sugarDate = namespaceAliases.sugarDate;\n\nfunction buildRelativeAliases() {\n var special = spaceSplit('Today Yesterday Tomorrow Weekday Weekend Future Past');\n var weekdays = English.weekdays.slice(0, 7);\n var months = English.months.slice(0, 12);\n var together = special.concat(weekdays).concat(months);\n defineInstanceSimilar(sugarDate, together, function(methods, name) {\n methods['is'+ name] = function(d) {\n return fullCompareDate(d, name);\n };\n });\n}\n\nmodule.exports = buildRelativeAliases;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildRelativeAliasesCall');\n\nmodule.exports = Sugar.Date.isFriday;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate'),\n mathAliases = require('../common/var/mathAliases');\n\nvar min = mathAliases.min,\n max = mathAliases.max;\n\nSugar.Date.defineInstance({\n\n 'isBetween': function(date, d1, d2, margin) {\n var t = date.getTime();\n var t1 = createDate(d1).getTime();\n var t2 = createDate(d2).getTime();\n var lo = min(t1, t2);\n var hi = max(t1, t2);\n margin = margin || 0;\n return (lo - margin <= t) && (hi + margin >= t);\n }\n\n});\n\nmodule.exports = Sugar.Date.isBetween;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nSugar.Date.defineInstance({\n\n 'isBefore': function(date, d, margin) {\n return date.getTime() < createDate(d).getTime() + (margin || 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isBefore;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nSugar.Date.defineInstance({\n\n 'isAfter': function(date, d, margin) {\n return date.getTime() > createDate(d).getTime() - (margin || 0);\n }\n\n});\n\nmodule.exports = Sugar.Date.isAfter;","'use strict';\n\nvar setDate = require('./setDate'),\n getDate = require('./getDate'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n getNewDate = require('./getNewDate');\n\nfunction compareDay(d, shift) {\n var comp = getNewDate();\n if (shift) {\n setDate(comp, getDate(comp) + shift);\n }\n return getYear(d) === getYear(comp) &&\n getMonth(d) === getMonth(comp) &&\n getDate(d) === getDate(comp);\n}\n\nmodule.exports = compareDay;","'use strict';\n\nfunction trim(str) {\n return str.trim();\n}\n\nmodule.exports = trim;","'use strict';\n\nvar Sugar = require('sugar-core'),\n fullCompareDate = require('./internal/fullCompareDate');\n\nSugar.Date.defineInstance({\n\n 'is': function(date, d, margin) {\n return fullCompareDate(date, d, margin);\n }\n\n});\n\nmodule.exports = Sugar.Date.is;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursSince;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.hoursAgo;","'use strict';\n\nvar Sugar = require('sugar-core'),\n getWeekday = require('./internal/getWeekday');\n\nSugar.Date.defineInstance({\n\n 'getWeekday': function(date) {\n return getWeekday(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.getWeekday;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nSugar.Date.defineInstance({\n\n 'getUTCWeekday': function(date) {\n return date.getUTCDay();\n }\n\n});\n\nmodule.exports = Sugar.Date.getUTCWeekday;","'use strict';\n\nvar Sugar = require('sugar-core'),\n getUTCOffset = require('./internal/getUTCOffset');\n\nSugar.Date.defineInstance({\n\n 'getUTCOffset': function(date, iso) {\n return getUTCOffset(date, iso);\n }\n\n});\n\nmodule.exports = Sugar.Date.getUTCOffset;","'use strict';\n\nvar Sugar = require('sugar-core'),\n getWeekNumber = require('./internal/getWeekNumber');\n\nSugar.Date.defineInstance({\n\n 'getISOWeek': function(date) {\n return getWeekNumber(date, true);\n }\n\n});\n\nmodule.exports = Sugar.Date.getISOWeek;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDateWithContext = require('./internal/createDateWithContext');\n\nSugar.Date.defineInstance({\n\n 'get': function(date, d, options) {\n return createDateWithContext(date, d, options);\n }\n\n});\n\nmodule.exports = Sugar.Date.get;","'use strict';\n\nmodule.exports = 1000;","'use strict';\n\nvar INTERNAL_MEMOIZE_LIMIT = require('../var/INTERNAL_MEMOIZE_LIMIT'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction memoizeFunction(fn) {\n var memo = {}, counter = 0;\n\n return function(key) {\n if (hasOwn(memo, key)) {\n return memo[key];\n }\n if (counter === INTERNAL_MEMOIZE_LIMIT) {\n memo = {};\n counter = 0;\n }\n counter++;\n return memo[key] = fn(key);\n };\n}\n\nmodule.exports = memoizeFunction;","'use strict';\n\nmodule.exports = /([{}])\\1|\\{([^}]*)\\}|(%)%|(%(\\w*))/g;","'use strict';\n\nvar STRING_FORMAT_REG = require('../var/STRING_FORMAT_REG'),\n CommonChars = require('../var/CommonChars'),\n memoizeFunction = require('./memoizeFunction');\n\nvar OPEN_BRACE = CommonChars.OPEN_BRACE,\n CLOSE_BRACE = CommonChars.CLOSE_BRACE;\n\nfunction createFormatMatcher(bracketMatcher, percentMatcher, precheck) {\n\n var reg = STRING_FORMAT_REG;\n var compileMemoized = memoizeFunction(compile);\n\n function getToken(format, match) {\n var get, token, literal, fn;\n var bKey = match[2];\n var pLit = match[3];\n var pKey = match[5];\n if (match[4] && percentMatcher) {\n token = pKey;\n get = percentMatcher;\n } else if (bKey) {\n token = bKey;\n get = bracketMatcher;\n } else if (pLit && percentMatcher) {\n literal = pLit;\n } else {\n literal = match[1] || match[0];\n }\n if (get) {\n assertPassesPrecheck(precheck, bKey, pKey);\n fn = function(obj, opt) {\n return get(obj, token, opt);\n };\n }\n format.push(fn || getLiteral(literal));\n }\n\n function getSubstring(format, str, start, end) {\n if (end > start) {\n var sub = str.slice(start, end);\n assertNoUnmatched(sub, OPEN_BRACE);\n assertNoUnmatched(sub, CLOSE_BRACE);\n format.push(function() {\n return sub;\n });\n }\n }\n\n function getLiteral(str) {\n return function() {\n return str;\n };\n }\n\n function assertPassesPrecheck(precheck, bt, pt) {\n if (precheck && !precheck(bt, pt)) {\n throw new TypeError('Invalid token '+ (bt || pt) +' in format string');\n }\n }\n\n function assertNoUnmatched(str, chr) {\n if (str.indexOf(chr) !== -1) {\n throw new TypeError('Unmatched '+ chr +' in format string');\n }\n }\n\n function compile(str) {\n var format = [], lastIndex = 0, match;\n reg.lastIndex = 0;\n while(match = reg.exec(str)) {\n getSubstring(format, str, lastIndex, match.index);\n getToken(format, match);\n lastIndex = reg.lastIndex;\n }\n getSubstring(format, str, lastIndex, str.length);\n return format;\n }\n\n return function(str, obj, opt) {\n var format = compileMemoized(str), result = '';\n for (var i = 0; i < format.length; i++) {\n result += format[i](obj, opt);\n }\n return result;\n };\n}\n\nmodule.exports = createFormatMatcher;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n trunc = require('../../common/var/trunc'),\n getHours = require('./getHours');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nfunction getMeridiemToken(d, localeCode) {\n var hours = getHours(d);\n return localeManager.get(localeCode).ampm[trunc(hours / 12)] || '';\n}\n\nmodule.exports = getMeridiemToken;","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction getDaysSince(d1, d2) {\n return getTimeDistanceForUnit(d1, d2, DateUnits[DAY_INDEX]);\n}\n\nmodule.exports = getDaysSince;","'use strict';\n\nvar LocaleHelpers = require('../var/LocaleHelpers'),\n getYear = require('./getYear'),\n getMonth = require('./getMonth'),\n getWeekNumber = require('./getWeekNumber');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nfunction getWeekYear(d, localeCode, iso) {\n var year, month, firstDayOfWeek, firstDayOfWeekYear, week, loc;\n year = getYear(d);\n month = getMonth(d);\n if (month === 0 || month === 11) {\n if (!iso) {\n loc = localeManager.get(localeCode);\n firstDayOfWeek = loc.getFirstDayOfWeek(localeCode);\n firstDayOfWeekYear = loc.getFirstDayOfWeekYear(localeCode);\n }\n week = getWeekNumber(d, false, firstDayOfWeek, firstDayOfWeekYear);\n if (month === 0 && week === 0) {\n year -= 1;\n } else if (month === 11 && week === 1) {\n year += 1;\n }\n }\n return year;\n}\n\nmodule.exports = getWeekYear;","'use strict';\n\nfunction repeatString(str, num) {\n var result = '';\n str = str.toString();\n while (num > 0) {\n if (num & 1) {\n result += str;\n }\n if (num >>= 1) {\n str += str;\n }\n }\n return result;\n}\n\nmodule.exports = repeatString;","'use strict';\n\nmodule.exports = /(\\w{3})[()\\s\\d]*$/;","'use strict';\n\nvar TIMEZONE_ABBREVIATION_REG = require('./TIMEZONE_ABBREVIATION_REG'),\n LocaleHelpers = require('./LocaleHelpers'),\n DateUnitIndexes = require('./DateUnitIndexes'),\n trunc = require('../../common/var/trunc'),\n getDate = require('../internal/getDate'),\n getYear = require('../internal/getYear'),\n getHours = require('../internal/getHours'),\n getMonth = require('../internal/getMonth'),\n cloneDate = require('../internal/cloneDate'),\n padNumber = require('../../common/internal/padNumber'),\n getWeekday = require('../internal/getWeekday'),\n callDateGet = require('../../common/internal/callDateGet'),\n mathAliases = require('../../common/var/mathAliases'),\n getWeekYear = require('../internal/getWeekYear'),\n getUTCOffset = require('../internal/getUTCOffset'),\n getDaysSince = require('../internal/getDaysSince'),\n getWeekNumber = require('../internal/getWeekNumber'),\n getMeridiemToken = require('../internal/getMeridiemToken'),\n setUnitAndLowerToEdge = require('../internal/setUnitAndLowerToEdge');\n\nvar localeManager = LocaleHelpers.localeManager,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX,\n ceil = mathAliases.ceil;\n\nvar FormatTokensBase = [\n {\n ldml: 'Dow',\n strf: 'a',\n lowerToken: 'dow',\n get: function(d, localeCode) {\n return localeManager.get(localeCode).getWeekdayName(getWeekday(d), 2);\n }\n },\n {\n ldml: 'Weekday',\n strf: 'A',\n lowerToken: 'weekday',\n allowAlternates: true,\n get: function(d, localeCode, alternate) {\n return localeManager.get(localeCode).getWeekdayName(getWeekday(d), alternate);\n }\n },\n {\n ldml: 'Mon',\n strf: 'b h',\n lowerToken: 'mon',\n get: function(d, localeCode) {\n return localeManager.get(localeCode).getMonthName(getMonth(d), 2);\n }\n },\n {\n ldml: 'Month',\n strf: 'B',\n lowerToken: 'month',\n allowAlternates: true,\n get: function(d, localeCode, alternate) {\n return localeManager.get(localeCode).getMonthName(getMonth(d), alternate);\n }\n },\n {\n strf: 'C',\n get: function(d) {\n return getYear(d).toString().slice(0, 2);\n }\n },\n {\n ldml: 'd date day',\n strf: 'd',\n strfPadding: 2,\n ldmlPaddedToken: 'dd',\n ordinalToken: 'do',\n get: function(d) {\n return getDate(d);\n }\n },\n {\n strf: 'e',\n get: function(d) {\n return padNumber(getDate(d), 2, false, 10, ' ');\n }\n },\n {\n ldml: 'H 24hr',\n strf: 'H',\n strfPadding: 2,\n ldmlPaddedToken: 'HH',\n get: function(d) {\n return getHours(d);\n }\n },\n {\n ldml: 'h hours 12hr',\n strf: 'I',\n strfPadding: 2,\n ldmlPaddedToken: 'hh',\n get: function(d) {\n return getHours(d) % 12 || 12;\n }\n },\n {\n ldml: 'D',\n strf: 'j',\n strfPadding: 3,\n ldmlPaddedToken: 'DDD',\n get: function(d) {\n var s = setUnitAndLowerToEdge(cloneDate(d), MONTH_INDEX);\n return getDaysSince(d, s) + 1;\n }\n },\n {\n ldml: 'M',\n strf: 'm',\n strfPadding: 2,\n ordinalToken: 'Mo',\n ldmlPaddedToken: 'MM',\n get: function(d) {\n return getMonth(d) + 1;\n }\n },\n {\n ldml: 'm minutes',\n strf: 'M',\n strfPadding: 2,\n ldmlPaddedToken: 'mm',\n get: function(d) {\n return callDateGet(d, 'Minutes');\n }\n },\n {\n ldml: 'Q',\n get: function(d) {\n return ceil((getMonth(d) + 1) / 3);\n }\n },\n {\n ldml: 'TT',\n strf: 'p',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode);\n }\n },\n {\n ldml: 'tt',\n strf: 'P',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode).toLowerCase();\n }\n },\n {\n ldml: 'T',\n lowerToken: 't',\n get: function(d, localeCode) {\n return getMeridiemToken(d, localeCode).charAt(0);\n }\n },\n {\n ldml: 's seconds',\n strf: 'S',\n strfPadding: 2,\n ldmlPaddedToken: 'ss',\n get: function(d) {\n return callDateGet(d, 'Seconds');\n }\n },\n {\n ldml: 'S ms',\n strfPadding: 3,\n ldmlPaddedToken: 'SSS',\n get: function(d) {\n return callDateGet(d, 'Milliseconds');\n }\n },\n {\n ldml: 'e',\n strf: 'u',\n ordinalToken: 'eo',\n get: function(d) {\n return getWeekday(d) || 7;\n }\n },\n {\n strf: 'U',\n strfPadding: 2,\n get: function(d) {\n // Sunday first, 0-53\n return getWeekNumber(d, false, 0);\n }\n },\n {\n ldml: 'W',\n strf: 'V',\n strfPadding: 2,\n ordinalToken: 'Wo',\n ldmlPaddedToken: 'WW',\n get: function(d) {\n // Monday first, 1-53 (ISO8601)\n return getWeekNumber(d, true);\n }\n },\n {\n strf: 'w',\n get: function(d) {\n return getWeekday(d);\n }\n },\n {\n ldml: 'w',\n ordinalToken: 'wo',\n ldmlPaddedToken: 'ww',\n get: function(d, localeCode) {\n // Locale dependent, 1-53\n var loc = localeManager.get(localeCode),\n dow = loc.getFirstDayOfWeek(localeCode),\n doy = loc.getFirstDayOfWeekYear(localeCode);\n return getWeekNumber(d, true, dow, doy);\n }\n },\n {\n strf: 'W',\n strfPadding: 2,\n get: function(d) {\n // Monday first, 0-53\n return getWeekNumber(d, false);\n }\n },\n {\n ldmlPaddedToken: 'gggg',\n ldmlTwoDigitToken: 'gg',\n get: function(d, localeCode) {\n return getWeekYear(d, localeCode);\n }\n },\n {\n strf: 'G',\n strfPadding: 4,\n strfTwoDigitToken: 'g',\n ldmlPaddedToken: 'GGGG',\n ldmlTwoDigitToken: 'GG',\n get: function(d, localeCode) {\n return getWeekYear(d, localeCode, true);\n }\n },\n {\n ldml: 'year',\n ldmlPaddedToken: 'yyyy',\n ldmlTwoDigitToken: 'yy',\n strf: 'Y',\n strfPadding: 4,\n strfTwoDigitToken: 'y',\n get: function(d) {\n return getYear(d);\n }\n },\n {\n ldml: 'ZZ',\n strf: 'z',\n get: function(d) {\n return getUTCOffset(d);\n }\n },\n {\n ldml: 'X',\n get: function(d) {\n return trunc(d.getTime() / 1000);\n }\n },\n {\n ldml: 'x',\n get: function(d) {\n return d.getTime();\n }\n },\n {\n ldml: 'Z',\n get: function(d) {\n return getUTCOffset(d, true);\n }\n },\n {\n ldml: 'z',\n strf: 'Z',\n get: function(d) {\n // Note that this is not accurate in all browsing environments!\n // https://github.com/moment/moment/issues/162\n // It will continue to be supported for Node and usage with the\n // understanding that it may be blank.\n var match = d.toString().match(TIMEZONE_ABBREVIATION_REG);\n return match ? match[1]: '';\n }\n },\n {\n strf: 'D',\n alias: '%m/%d/%y'\n },\n {\n strf: 'F',\n alias: '%Y-%m-%d'\n },\n {\n strf: 'r',\n alias: '%I:%M:%S %p'\n },\n {\n strf: 'R',\n alias: '%H:%M'\n },\n {\n strf: 'T',\n alias: '%H:%M:%S'\n },\n {\n strf: 'x',\n alias: '{short}'\n },\n {\n strf: 'X',\n alias: '{time}'\n },\n {\n strf: 'c',\n alias: '{stamp}'\n }\n];\n\nmodule.exports = FormatTokensBase;","'use strict';\n\nvar LocaleHelpers = require('./LocaleHelpers'),\n FormatTokensBase = require('./FormatTokensBase'),\n CoreOutputFormats = require('./CoreOutputFormats'),\n forEach = require('../../common/internal/forEach'),\n padNumber = require('../../common/internal/padNumber'),\n spaceSplit = require('../../common/internal/spaceSplit'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n createFormatMatcher = require('../../common/internal/createFormatMatcher'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar localeManager = LocaleHelpers.localeManager,\n hasOwn = coreUtilityAliases.hasOwn,\n getOwn = coreUtilityAliases.getOwn,\n forEachProperty = coreUtilityAliases.forEachProperty,\n sugarDate = namespaceAliases.sugarDate;\n\nvar ldmlTokens, strfTokens;\n\nfunction buildDateFormatTokens() {\n\n function addFormats(target, tokens, fn) {\n if (tokens) {\n forEach(spaceSplit(tokens), function(token) {\n target[token] = fn;\n });\n }\n }\n\n function buildLowercase(get) {\n return function(d, localeCode) {\n return get(d, localeCode).toLowerCase();\n };\n }\n\n function buildOrdinal(get) {\n return function(d, localeCode) {\n var n = get(d, localeCode);\n return n + localeManager.get(localeCode).getOrdinal(n);\n };\n }\n\n function buildPadded(get, padding) {\n return function(d, localeCode) {\n return padNumber(get(d, localeCode), padding);\n };\n }\n\n function buildTwoDigits(get) {\n return function(d, localeCode) {\n return get(d, localeCode) % 100;\n };\n }\n\n function buildAlias(alias) {\n return function(d, localeCode) {\n return dateFormatMatcher(alias, d, localeCode);\n };\n }\n\n function buildAlternates(f) {\n for (var n = 1; n <= 5; n++) {\n buildAlternate(f, n);\n }\n }\n\n function buildAlternate(f, n) {\n var alternate = function(d, localeCode) {\n return f.get(d, localeCode, n);\n };\n addFormats(ldmlTokens, f.ldml + n, alternate);\n if (f.lowerToken) {\n ldmlTokens[f.lowerToken + n] = buildLowercase(alternate);\n }\n }\n\n function getIdentityFormat(name) {\n return function(d, localeCode) {\n var loc = localeManager.get(localeCode);\n return dateFormatMatcher(loc[name], d, localeCode);\n };\n }\n\n ldmlTokens = {};\n strfTokens = {};\n\n forEach(FormatTokensBase, function(f) {\n var get = f.get, getPadded;\n if (f.lowerToken) {\n ldmlTokens[f.lowerToken] = buildLowercase(get);\n }\n if (f.ordinalToken) {\n ldmlTokens[f.ordinalToken] = buildOrdinal(get, f);\n }\n if (f.ldmlPaddedToken) {\n ldmlTokens[f.ldmlPaddedToken] = buildPadded(get, f.ldmlPaddedToken.length);\n }\n if (f.ldmlTwoDigitToken) {\n ldmlTokens[f.ldmlTwoDigitToken] = buildPadded(buildTwoDigits(get), 2);\n }\n if (f.strfTwoDigitToken) {\n strfTokens[f.strfTwoDigitToken] = buildPadded(buildTwoDigits(get), 2);\n }\n if (f.strfPadding) {\n getPadded = buildPadded(get, f.strfPadding);\n }\n if (f.alias) {\n get = buildAlias(f.alias);\n }\n if (f.allowAlternates) {\n buildAlternates(f);\n }\n addFormats(ldmlTokens, f.ldml, get);\n addFormats(strfTokens, f.strf, getPadded || get);\n });\n\n forEachProperty(CoreOutputFormats, function(src, name) {\n addFormats(ldmlTokens, name, buildAlias(src));\n });\n\n defineInstanceSimilar(sugarDate, 'short medium long full', function(methods, name) {\n var fn = getIdentityFormat(name);\n addFormats(ldmlTokens, name, fn);\n methods[name] = fn;\n });\n\n addFormats(ldmlTokens, 'time', getIdentityFormat('time'));\n addFormats(ldmlTokens, 'stamp', getIdentityFormat('stamp'));\n}\n\nvar dateFormatMatcher;\n\nfunction buildDateFormatMatcher() {\n\n function getLdml(d, token, localeCode) {\n return getOwn(ldmlTokens, token)(d, localeCode);\n }\n\n function getStrf(d, token, localeCode) {\n return getOwn(strfTokens, token)(d, localeCode);\n }\n\n function checkDateToken(ldml, strf) {\n return hasOwn(ldmlTokens, ldml) || hasOwn(strfTokens, strf);\n }\n\n // Format matcher for LDML or STRF tokens.\n dateFormatMatcher = createFormatMatcher(getLdml, getStrf, checkDateToken);\n}\n\nbuildDateFormatTokens();\n\nbuildDateFormatMatcher();\n\nmodule.exports = {\n ldmlTokens: ldmlTokens,\n strfTokens: strfTokens,\n dateFormatMatcher: dateFormatMatcher\n};","'use strict';\n\nvar Sugar = require('sugar-core'),\n dateFormat = require('./internal/dateFormat');\n\nSugar.Date.defineInstance({\n\n 'format': function(date, f, localeCode) {\n return dateFormat(date, f, localeCode);\n }\n\n});\n\nmodule.exports = Sugar.Date.format;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfMonth;","'use strict';\n\nvar Sugar = require('sugar-core'),\n DateUnitIndexes = require('./var/DateUnitIndexes'),\n getWeekday = require('./internal/getWeekday'),\n setWeekday = require('./internal/setWeekday'),\n moveToEndOfUnit = require('./internal/moveToEndOfUnit');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nSugar.Date.defineInstance({\n\n 'endOfISOWeek': function(date) {\n if (getWeekday(date) !== 0) {\n setWeekday(date, 7);\n }\n return moveToEndOfUnit(date, DAY_INDEX);\n }\n\n});\n\nmodule.exports = Sugar.Date.endOfISOWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.endOfDay;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysUntil;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysSince;","'use strict';\n\nvar Sugar = require('sugar-core'),\n getDaysInMonth = require('./internal/getDaysInMonth');\n\nSugar.Date.defineInstance({\n\n 'daysInMonth': function(date) {\n return getDaysInMonth(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.daysInMonth;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.daysAgo;","'use strict';\n\nvar Sugar = require('sugar-core'),\n cloneDate = require('./internal/cloneDate');\n\nSugar.Date.defineInstance({\n\n 'clone': function(date) {\n return cloneDate(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.clone;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfYear;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfMonth;","'use strict';\n\nvar Sugar = require('sugar-core'),\n resetTime = require('./internal/resetTime'),\n getWeekday = require('./internal/getWeekday'),\n setWeekday = require('./internal/setWeekday');\n\nSugar.Date.defineInstance({\n\n 'beginningOfISOWeek': function(date) {\n var day = getWeekday(date);\n if (day === 0) {\n day = -6;\n } else if (day !== 1) {\n day = 1;\n }\n setWeekday(date, day);\n return resetTime(date);\n }\n\n});\n\nmodule.exports = Sugar.Date.beginningOfISOWeek;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.beginningOfDay;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n isDefined = require('../../common/internal/isDefined'),\n walkUnitDown = require('./walkUnitDown');\n\nvar YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction collectDateParamsFromArguments(args) {\n var params = {}, index = 0;\n walkUnitDown(YEAR_INDEX, function(unit) {\n var arg = args[index++];\n if (isDefined(arg)) {\n params[unit.name] = arg;\n }\n });\n return params;\n}\n\nmodule.exports = collectDateParamsFromArguments;","'use strict';\n\nvar isUndefined = require('../../common/internal/isUndefined');\n\nfunction getDateParamsFromString(str) {\n var match, num, params = {};\n match = str.match(/^(-?\\d*[\\d.]\\d*)?\\s?(\\w+?)s?$/i);\n if (match) {\n if (isUndefined(num)) {\n num = +match[1];\n if (isNaN(num)) {\n num = 1;\n }\n }\n params[match[2].toLowerCase()] = num;\n }\n return params;\n}\n\nmodule.exports = getDateParamsFromString;","'use strict';\n\nvar Sugar = require('sugar-core'),\n advanceDateWithArgs = require('./internal/advanceDateWithArgs');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'advance': function(d, args) {\n return advanceDateWithArgs(d, args, 1);\n }\n\n});\n\nmodule.exports = Sugar.Date.advance;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addYears;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addWeeks;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addSeconds;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMonths;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMinutes;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addMilliseconds;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addHours;","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n DateUnitIndexes = require('../var/DateUnitIndexes'),\n forEach = require('../../common/internal/forEach'),\n compareDate = require('./compareDate'),\n advanceDate = require('./advanceDate'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit'),\n createDateWithContext = require('./createDateWithContext'),\n getTimeDistanceForUnit = require('./getTimeDistanceForUnit');\n\nvar sugarDate = namespaceAliases.sugarDate,\n HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX;\n\nfunction buildDateUnitMethods() {\n\n defineInstanceSimilar(sugarDate, DateUnits, function(methods, unit, index) {\n var name = unit.name, caps = simpleCapitalize(name);\n\n if (index > DAY_INDEX) {\n forEach(['Last','This','Next'], function(shift) {\n methods['is' + shift + caps] = function(d, localeCode) {\n return compareDate(d, shift + ' ' + name, 0, localeCode, { locale: 'en' });\n };\n });\n }\n if (index > HOURS_INDEX) {\n methods['beginningOf' + caps] = function(d, localeCode) {\n return moveToBeginningOfUnit(d, index, localeCode);\n };\n methods['endOf' + caps] = function(d, localeCode) {\n return moveToEndOfUnit(d, index, localeCode);\n };\n }\n\n methods['add' + caps + 's'] = function(d, num, reset) {\n return advanceDate(d, name, num, reset);\n };\n\n var since = function(date, d, options) {\n return getTimeDistanceForUnit(date, createDateWithContext(date, d, options, true), unit);\n };\n var until = function(date, d, options) {\n return getTimeDistanceForUnit(createDateWithContext(date, d, options, true), date, unit);\n };\n\n methods[name + 'sAgo'] = methods[name + 'sUntil'] = until;\n methods[name + 'sSince'] = methods[name + 'sFromNow'] = since;\n\n });\n\n}\n\nmodule.exports = buildDateUnitMethods;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('./build/buildDateUnitMethodsCall');\n\nmodule.exports = Sugar.Date.addDays;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearsAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.years;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.yearAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.year;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeksAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weeks;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.weekAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.week;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondsAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.seconds;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.secondAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.second;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthsAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.months;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.monthAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.month;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutesAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minutes;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minuteAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.minute;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondsAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.milliseconds;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecondAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.millisecond;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hoursAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hours;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hourAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.hour;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('../date/var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Number.defineInstance({\n\n 'duration': function(n, localeCode) {\n return localeManager.get(localeCode).getDuration(n);\n }\n\n});\n\nmodule.exports = Sugar.Number.duration;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.daysAfter;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.days;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayFromNow;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayBefore;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayAgo;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.dayAfter;","'use strict';\n\nvar forEach = require('./forEach'),\n spaceSplit = require('./spaceSplit'),\n classChecks = require('../var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction collectSimilarMethods(set, fn) {\n var methods = {};\n if (isString(set)) {\n set = spaceSplit(set);\n }\n forEach(set, function(el, i) {\n fn(methods, el, i);\n });\n return methods;\n}\n\nmodule.exports = collectSimilarMethods;","'use strict';\n\nfunction wrapNamespace(method) {\n return function(sugarNamespace, arg1, arg2) {\n sugarNamespace[method](arg1, arg2);\n };\n}\n\nmodule.exports = wrapNamespace;","'use strict';\n\nvar wrapNamespace = require('../internal/wrapNamespace');\n\nmodule.exports = {\n alias: wrapNamespace('alias'),\n defineStatic: wrapNamespace('defineStatic'),\n defineInstance: wrapNamespace('defineInstance'),\n defineStaticPolyfill: wrapNamespace('defineStaticPolyfill'),\n defineInstancePolyfill: wrapNamespace('defineInstancePolyfill'),\n defineInstanceAndStatic: wrapNamespace('defineInstanceAndStatic'),\n defineInstanceWithArguments: wrapNamespace('defineInstanceWithArguments')\n};","'use strict';\n\nvar DateUnits = require('../var/DateUnits'),\n createDate = require('./createDate'),\n mathAliases = require('../../common/var/mathAliases'),\n advanceDate = require('./advanceDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar');\n\nvar sugarNumber = namespaceAliases.sugarNumber,\n round = mathAliases.round;\n\nfunction buildNumberUnitMethods() {\n defineInstanceSimilar(sugarNumber, DateUnits, function(methods, unit) {\n var name = unit.name, base, after, before;\n base = function(n) {\n return round(n * unit.multiplier);\n };\n after = function(n, d, options) {\n return advanceDate(createDate(d, options, true), name, n);\n };\n before = function(n, d, options) {\n return advanceDate(createDate(d, options, true), name, -n);\n };\n methods[name] = base;\n methods[name + 's'] = base;\n methods[name + 'Before'] = before;\n methods[name + 'sBefore'] = before;\n methods[name + 'Ago'] = before;\n methods[name + 'sAgo'] = before;\n methods[name + 'After'] = after;\n methods[name + 'sAfter'] = after;\n methods[name + 'FromNow'] = after;\n methods[name + 'sFromNow'] = after;\n });\n}\n\nmodule.exports = buildNumberUnitMethods;","'use strict';\n\nvar Sugar = require('sugar-core');\n\nrequire('../date/build/buildNumberUnitMethodsCall');\n\nmodule.exports = Sugar.Number.day;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'setLocale': function(code) {\n return localeManager.set(code);\n }\n\n});\n\nmodule.exports = Sugar.Date.setLocale;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'removeLocale': function(code) {\n return localeManager.remove(code);\n }\n\n});\n\nmodule.exports = Sugar.Date.removeLocale;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getLocale': function(code) {\n return localeManager.get(code, !code);\n }\n\n});\n\nmodule.exports = Sugar.Date.getLocale;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getAllLocales': function() {\n return localeManager.getAll();\n }\n\n});\n\nmodule.exports = Sugar.Date.getAllLocales;","'use strict';\n\nfunction getKeys(obj) {\n return Object.keys(obj);\n}\n\nmodule.exports = getKeys;","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers'),\n getKeys = require('../common/internal/getKeys');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'getAllLocaleCodes': function() {\n return getKeys(localeManager.getAll());\n }\n\n});\n\nmodule.exports = Sugar.Date.getAllLocaleCodes;","'use strict';\n\nfunction setChainableConstructor(sugarNamespace, createFn) {\n sugarNamespace.prototype.constructor = function() {\n return createFn.apply(this, arguments);\n };\n}\n\nmodule.exports = setChainableConstructor;","'use strict';\n\nvar createDate = require('./createDate'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n setChainableConstructor = require('../../common/internal/setChainableConstructor');\n\nvar sugarDate = namespaceAliases.sugarDate;\n\nfunction setDateChainableConstructor() {\n setChainableConstructor(sugarDate, createDate);\n}\n\nmodule.exports = setDateChainableConstructor;","'use strict';\n\nvar setDateChainableConstructor = require('../internal/setDateChainableConstructor');\n\nsetDateChainableConstructor();","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes'),\n iterateOverDateParams = require('./iterateOverDateParams');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n YEAR_INDEX = DateUnitIndexes.YEAR_INDEX;\n\nfunction iterateOverHigherDateParams(params, fn) {\n iterateOverDateParams(params, fn, YEAR_INDEX, DAY_INDEX);\n}\n\nmodule.exports = iterateOverHigherDateParams;","'use strict';\n\nvar getYear = require('./getYear'),\n mathAliases = require('../../common/var/mathAliases');\n\nvar abs = mathAliases.abs;\n\nfunction getYearFromAbbreviation(str, d, prefer) {\n // Following IETF here, adding 1900 or 2000 depending on the last two digits.\n // Note that this makes no accordance for what should happen after 2050, but\n // intentionally ignoring this for now. https://www.ietf.org/rfc/rfc2822.txt\n var val = +str, delta;\n val += val < 50 ? 2000 : 1900;\n if (prefer) {\n delta = val - getYear(d);\n if (delta / abs(delta) !== prefer) {\n val += prefer * 100;\n }\n }\n return val;\n}\n\nmodule.exports = getYearFromAbbreviation;","'use strict';\n\nfunction getParsingTokenValue(token, str) {\n var val;\n if (token.val) {\n val = token.val;\n } else if (token.sign) {\n val = str === '+' ? 1 : -1;\n } else if (token.bool) {\n val = !!val;\n } else {\n val = +str.replace(/,/, '.');\n }\n if (token.param === 'month') {\n val -= 1;\n }\n return val;\n}\n\nmodule.exports = getParsingTokenValue;","'use strict';\n\nvar getDateParamKey = require('./getDateParamKey');\n\nfunction deleteDateParam(params, key) {\n delete params[getDateParamKey(params, key)];\n}\n\nmodule.exports = deleteDateParam;","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction getOwnKey(obj, key) {\n if (hasOwn(obj, key)) {\n return key;\n }\n}\n\nmodule.exports = getOwnKey;","'use strict';\n\nvar getDateParamKey = require('./getDateParamKey'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases');\n\nvar getOwn = coreUtilityAliases.getOwn;\n\nfunction getDateParam(params, key) {\n return getOwn(params, getDateParamKey(params, key));\n}\n\nmodule.exports = getDateParam;","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setMonth(d, val) {\n callDateSet(d, 'Month', val);\n}\n\nmodule.exports = setMonth;","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setYear(d, val) {\n callDateSet(d, 'FullYear', val);\n}\n\nmodule.exports = setYear;","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet'),\n setISOWeekNumber = require('./setISOWeekNumber');\n\nfunction callDateSetWithWeek(d, method, value, safe) {\n if (method === 'ISOWeek') {\n setISOWeekNumber(d, value);\n } else {\n callDateSet(d, method, value, safe);\n }\n}\n\nmodule.exports = callDateSetWithWeek;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes');\n\nvar DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getHigherUnitIndex(index) {\n return index === DAY_INDEX ? MONTH_INDEX : index + 1;\n}\n\nmodule.exports = getHigherUnitIndex;","'use strict';\n\nvar getLowerUnitIndex = require('./getLowerUnitIndex'),\n setUnitAndLowerToEdge = require('./setUnitAndLowerToEdge');\n\nfunction resetLowerUnits(d, unitIndex) {\n return setUnitAndLowerToEdge(d, getLowerUnitIndex(unitIndex));\n}\n\nmodule.exports = resetLowerUnits;","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar setProperty = coreUtilityAliases.setProperty;\n\nfunction defineAccessor(namespace, name, fn) {\n setProperty(namespace, name, fn);\n}\n\nmodule.exports = defineAccessor;","'use strict';\n\nvar simpleClone = require('./simpleClone'),\n defineAccessor = require('./defineAccessor'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOptionsAccessor(namespace, defaults) {\n var obj = simpleClone(defaults);\n\n function getOption(name) {\n return obj[name];\n }\n\n function setOption(arg1, arg2) {\n var options;\n if (arguments.length === 1) {\n options = arg1;\n } else {\n options = {};\n options[arg1] = arg2;\n }\n forEachProperty(options, function(val, name) {\n if (val === null) {\n val = defaults[name];\n }\n obj[name] = val;\n });\n }\n\n defineAccessor(namespace, 'getOption', getOption);\n defineAccessor(namespace, 'setOption', setOption);\n return getOption;\n}\n\nmodule.exports = defineOptionsAccessor;","'use strict';\n\nfunction defaultNewDate() {\n return new Date;\n}\n\nmodule.exports = defaultNewDate;","'use strict';\n\nvar defaultNewDate = require('../internal/defaultNewDate');\n\nvar DATE_OPTIONS = {\n 'newDateInternal': defaultNewDate\n};\n\nmodule.exports = DATE_OPTIONS;","'use strict';\n\nvar Sugar = require('sugar-core'),\n createDate = require('./internal/createDate');\n\nrequire('./build/setDateChainableConstructorCall');\n\nSugar.Date.defineStatic({\n\n 'create': function(d, options) {\n return createDate(d, options);\n }\n\n});\n\nmodule.exports = Sugar.Date.create;","'use strict';\n\nvar LocalizedParsingTokens = require('../var/LocalizedParsingTokens'),\n getRegNonCapturing = require('./getRegNonCapturing');\n\nfunction getParsingTokenWithSuffix(field, src, suffix) {\n var token = LocalizedParsingTokens[field];\n if (token.requiresSuffix) {\n src = getRegNonCapturing(src + getRegNonCapturing(suffix));\n } else if (token.requiresSuffixOr) {\n src += getRegNonCapturing(token.requiresSuffixOr + '|' + suffix);\n } else {\n src += getRegNonCapturing(suffix, true);\n }\n return src;\n}\n\nmodule.exports = getParsingTokenWithSuffix;","'use strict';\n\nvar trunc = require('../../common/var/trunc'),\n withPrecision = require('../../common/internal/withPrecision'),\n getAdjustedUnit = require('./getAdjustedUnit');\n\nfunction getAdjustedUnitForNumber(ms) {\n return getAdjustedUnit(ms, function(unit) {\n return trunc(withPrecision(ms / unit.multiplier, 1));\n });\n}\n\nmodule.exports = getAdjustedUnitForNumber;","'use strict';\n\nfunction allCharsReg(src) {\n return RegExp('[' + src + ']', 'g');\n}\n\nmodule.exports = allCharsReg;","'use strict';\n\nvar CommonChars = require('./CommonChars'),\n chr = require('./chr'),\n allCharsReg = require('../internal/allCharsReg');\n\nvar HALF_WIDTH_ZERO = CommonChars.HALF_WIDTH_ZERO,\n FULL_WIDTH_ZERO = CommonChars.FULL_WIDTH_ZERO,\n HALF_WIDTH_PERIOD = CommonChars.HALF_WIDTH_PERIOD,\n FULL_WIDTH_PERIOD = CommonChars.FULL_WIDTH_PERIOD,\n HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA;\n\nvar fullWidthNumberReg, fullWidthNumberMap, fullWidthNumbers;\n\nfunction buildFullWidthNumber() {\n var fwp = FULL_WIDTH_PERIOD, hwp = HALF_WIDTH_PERIOD, hwc = HALF_WIDTH_COMMA, fwn = '';\n fullWidthNumberMap = {};\n for (var i = 0, digit; i <= 9; i++) {\n digit = chr(i + FULL_WIDTH_ZERO);\n fwn += digit;\n fullWidthNumberMap[digit] = chr(i + HALF_WIDTH_ZERO);\n }\n fullWidthNumberMap[hwc] = '';\n fullWidthNumberMap[fwp] = hwp;\n // Mapping this to itself to capture it easily\n // in stringToNumber to detect decimals later.\n fullWidthNumberMap[hwp] = hwp;\n fullWidthNumberReg = allCharsReg(fwn + fwp + hwc + hwp);\n fullWidthNumbers = fwn;\n}\n\nbuildFullWidthNumber();\n\nmodule.exports = {\n fullWidthNumberReg: fullWidthNumberReg,\n fullWidthNumberMap: fullWidthNumberMap,\n fullWidthNumbers: fullWidthNumbers\n};","'use strict';\n\nvar classChecks = require('../var/classChecks');\n\nvar isString = classChecks.isString;\n\nfunction escapeRegExp(str) {\n if (!isString(str)) str = String(str);\n return str.replace(/([\\\\\\/\\'*+?|()\\[\\]{}.^$-])/g,'\\\\$1');\n}\n\nmodule.exports = escapeRegExp;","'use strict';\n\nvar map = require('../../common/internal/map'),\n escapeRegExp = require('../../common/internal/escapeRegExp');\n\nfunction arrayToRegAlternates(arr) {\n var joined = arr.join('');\n if (!arr || !arr.length) {\n return '';\n }\n if (joined.length === arr.length) {\n return '[' + joined + ']';\n }\n // map handles sparse arrays so no need to compact the array here.\n return map(arr, escapeRegExp).join('|');\n}\n\nmodule.exports = arrayToRegAlternates;","'use strict';\n\nmodule.exports = '_sugar_';","'use strict';\n\nvar PRIVATE_PROP_PREFIX = require('../var/PRIVATE_PROP_PREFIX'),\n coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar setProperty = coreUtilityAliases.setProperty;\n\nfunction privatePropertyAccessor(key) {\n var privateKey = PRIVATE_PROP_PREFIX + key;\n return function(obj, val) {\n if (arguments.length > 1) {\n setProperty(obj, privateKey, val);\n return obj;\n }\n return obj[privateKey];\n };\n}\n\nmodule.exports = privatePropertyAccessor;","'use strict';\n\nfunction getArrayWithOffset(arr, n, alternate, offset) {\n var val;\n if (alternate > 1) {\n val = arr[n + (alternate - 1) * offset];\n }\n return val || arr[n];\n}\n\nmodule.exports = getArrayWithOffset;","'use strict';\n\nfunction getOrdinalSuffix(num) {\n if (num >= 11 && num <= 13) {\n return 'th';\n } else {\n switch(num % 10) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n default: return 'th';\n }\n }\n}\n\nmodule.exports = getOrdinalSuffix;","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction hasValidPlainObjectPrototype(obj) {\n var hasToString = 'toString' in obj;\n var hasConstructor = 'constructor' in obj;\n // An object created with Object.create(null) has no methods in the\n // prototype chain, so check if any are missing. The additional hasToString\n // check is for false positives on some host objects in old IE which have\n // toString but no constructor. If the object has an inherited constructor,\n // then check if it is Object (the \"isPrototypeOf\" tapdance here is a more\n // robust way of ensuring this if the global has been hijacked). Note that\n // accessing the constructor directly (without \"in\" or \"hasOwnProperty\")\n // will throw a permissions error in IE8 on cross-domain windows.\n return (!hasConstructor && !hasToString) ||\n (hasConstructor && !hasOwn(obj, 'constructor') &&\n hasOwn(obj.constructor.prototype, 'isPrototypeOf'));\n}\n\nmodule.exports = hasValidPlainObjectPrototype;","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar hasOwn = coreUtilityAliases.hasOwn;\n\nfunction hasOwnEnumeratedProperties(obj) {\n // Plain objects are generally defined as having enumerated properties\n // all their own, however in early IE environments without defineProperty,\n // there may also be enumerated methods in the prototype chain, so check\n // for both of these cases.\n var objectProto = Object.prototype;\n for (var key in obj) {\n var val = obj[key];\n if (!hasOwn(obj, key) && val !== objectProto[key]) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = hasOwnEnumeratedProperties;","'use strict';\n\nvar isClass = require('./isClass'),\n isObjectType = require('./isObjectType'),\n hasOwnEnumeratedProperties = require('./hasOwnEnumeratedProperties'),\n hasValidPlainObjectPrototype = require('./hasValidPlainObjectPrototype');\n\nfunction isPlainObject(obj, className) {\n return isObjectType(obj) &&\n isClass(obj, 'Object', className) &&\n hasValidPlainObjectPrototype(obj) &&\n hasOwnEnumeratedProperties(obj);\n}\n\nmodule.exports = isPlainObject;","'use strict';\n\nmodule.exports = 'Boolean Number String Date RegExp Function Array Error Set Map';","'use strict';\n\nvar CommonChars = require('../var/CommonChars');\n\nvar HALF_WIDTH_COMMA = CommonChars.HALF_WIDTH_COMMA;\n\nfunction commaSplit(str) {\n return str.split(HALF_WIDTH_COMMA);\n}\n\nmodule.exports = commaSplit;","'use strict';\n\nfunction isArrayIndex(n) {\n return n >>> 0 == n && n != 0xFFFFFFFF;\n}\n\nmodule.exports = isArrayIndex;","'use strict';\n\nvar isArrayIndex = require('./isArrayIndex');\n\nfunction getSparseArrayIndexes(arr, fromIndex, loop, fromRight) {\n var indexes = [], i;\n for (i in arr) {\n if (isArrayIndex(i) && (loop || (fromRight ? i <= fromIndex : i >= fromIndex))) {\n indexes.push(+i);\n }\n }\n indexes.sort(function(a, b) {\n var aLoop = a > fromIndex;\n var bLoop = b > fromIndex;\n if (aLoop !== bLoop) {\n return aLoop ? -1 : 1;\n }\n return a - b;\n });\n return indexes;\n}\n\nmodule.exports = getSparseArrayIndexes;","'use strict';\n\nvar getSparseArrayIndexes = require('./getSparseArrayIndexes');\n\nfunction iterateOverSparseArray(arr, fn, fromIndex, loop) {\n var indexes = getSparseArrayIndexes(arr, fromIndex, loop), index;\n for (var i = 0, len = indexes.length; i < len; i++) {\n index = indexes[i];\n fn.call(arr, arr[index], index, arr);\n }\n return arr;\n}\n\nmodule.exports = iterateOverSparseArray;","'use strict';\n\nfunction filter(arr, fn) {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n var el = arr[i];\n if (i in arr && fn(el, i)) {\n result.push(el);\n }\n }\n return result;\n}\n\nmodule.exports = filter;","'use strict';\n\nvar CoreParsingFormats = [\n {\n // 12-1978\n // 08-1978 (MDY)\n src: '{MM}[-.\\\\/]{yyyy}'\n },\n {\n // 12/08/1978\n // 08/12/1978 (MDY)\n time: true,\n src: '{dd}[-.\\\\/]{MM}(?:[-.\\\\/]{yyyy|yy|y})?',\n mdy: '{MM}[-.\\\\/]{dd}(?:[-.\\\\/]{yyyy|yy|y})?'\n },\n {\n // 1975-08-25\n time: true,\n src: '{yyyy}[-.\\\\/]{MM}(?:[-.\\\\/]{dd})?'\n },\n {\n // .NET JSON\n src: '\\\\\\\\/Date\\\\({timestamp}(?:[+-]\\\\d{4,4})?\\\\)\\\\\\\\/'\n },\n {\n // ISO-8601\n src: '{yearSign?}{yyyy}(?:-?{MM}(?:-?{dd}(?:T{ihh}(?::?{imm}(?::?{ss})?)?)?)?)?{tzOffset?}'\n }\n];\n\nmodule.exports = CoreParsingFormats;","'use strict';\n\nvar LOCALE_ARRAY_FIELDS = [\n 'months', 'weekdays', 'units', 'numerals', 'placeholders',\n 'articles', 'tokens', 'timeMarkers', 'ampm', 'timeSuffixes',\n 'parse', 'timeParse', 'timeFrontParse', 'modifiers'\n];\n\nmodule.exports = LOCALE_ARRAY_FIELDS;","'use strict';\n\nvar LOCALE_ARRAY_FIELDS = require('../var/LOCALE_ARRAY_FIELDS'),\n ISODefaults = require('../var/ISODefaults'),\n ParsingTokens = require('../var/ParsingTokens'),\n CoreParsingFormats = require('../var/CoreParsingFormats'),\n LocalizedParsingTokens = require('../var/LocalizedParsingTokens'),\n map = require('../../common/internal/map'),\n filter = require('../../common/internal/filter'),\n forEach = require('../../common/internal/forEach'),\n isDefined = require('../../common/internal/isDefined'),\n commaSplit = require('../../common/internal/commaSplit'),\n classChecks = require('../../common/var/classChecks'),\n isUndefined = require('../../common/internal/isUndefined'),\n mathAliases = require('../../common/var/mathAliases'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n getOrdinalSuffix = require('../../common/internal/getOrdinalSuffix'),\n getRegNonCapturing = require('./getRegNonCapturing'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n getArrayWithOffset = require('./getArrayWithOffset'),\n iterateOverDateUnits = require('./iterateOverDateUnits'),\n arrayToRegAlternates = require('./arrayToRegAlternates'),\n fullwidthNumberHelpers = require('../../common/var/fullwidthNumberHelpers'),\n getAdjustedUnitForNumber = require('./getAdjustedUnitForNumber'),\n getParsingTokenWithSuffix = require('./getParsingTokenWithSuffix');\n\nvar getOwn = coreUtilityAliases.getOwn,\n forEachProperty = coreUtilityAliases.forEachProperty,\n fullWidthNumberMap = fullwidthNumberHelpers.fullWidthNumberMap,\n fullWidthNumbers = fullwidthNumberHelpers.fullWidthNumbers,\n pow = mathAliases.pow,\n max = mathAliases.max,\n ISO_FIRST_DAY_OF_WEEK = ISODefaults.ISO_FIRST_DAY_OF_WEEK,\n ISO_FIRST_DAY_OF_WEEK_YEAR = ISODefaults.ISO_FIRST_DAY_OF_WEEK_YEAR,\n isString = classChecks.isString,\n isFunction = classChecks.isFunction;\n\nfunction getNewLocale(def) {\n\n function Locale(def) {\n this.init(def);\n }\n\n Locale.prototype = {\n\n getMonthName: function(n, alternate) {\n if (this.monthSuffix) {\n return (n + 1) + this.monthSuffix;\n }\n return getArrayWithOffset(this.months, n, alternate, 12);\n },\n\n getWeekdayName: function(n, alternate) {\n return getArrayWithOffset(this.weekdays, n, alternate, 7);\n },\n\n getTokenValue: function(field, str) {\n var map = this[field + 'Map'], val;\n if (map) {\n val = map[str];\n }\n if (isUndefined(val)) {\n val = this.getNumber(str);\n if (field === 'month') {\n // Months are the only numeric date field\n // whose value is not the same as its number.\n val -= 1;\n }\n }\n return val;\n },\n\n getNumber: function(str) {\n var num = this.numeralMap[str];\n if (isDefined(num)) {\n return num;\n }\n // The unary plus operator here show better performance and handles\n // every format that parseFloat does with the exception of trailing\n // characters, which are guaranteed not to be in our string at this point.\n num = +str.replace(/,/, '.');\n if (!isNaN(num)) {\n return num;\n }\n num = this.getNumeralValue(str);\n if (!isNaN(num)) {\n this.numeralMap[str] = num;\n return num;\n }\n return num;\n },\n\n getNumeralValue: function(str) {\n var place = 1, num = 0, lastWasPlace, isPlace, numeral, digit, arr;\n // Note that \"numerals\" that need to be converted through this method are\n // all considered to be single characters in order to handle CJK. This\n // method is by no means unique to CJK, but the complexity of handling\n // inflections in non-CJK languages adds too much overhead for not enough\n // value, so avoiding for now.\n arr = str.split('');\n for (var i = arr.length - 1; numeral = arr[i]; i--) {\n digit = getOwn(this.numeralMap, numeral);\n if (isUndefined(digit)) {\n digit = getOwn(fullWidthNumberMap, numeral) || 0;\n }\n isPlace = digit > 0 && digit % 10 === 0;\n if (isPlace) {\n if (lastWasPlace) {\n num += place;\n }\n if (i) {\n place = digit;\n } else {\n num += digit;\n }\n } else {\n num += digit * place;\n place *= 10;\n }\n lastWasPlace = isPlace;\n }\n return num;\n },\n\n getOrdinal: function(n) {\n var suffix = this.ordinalSuffix;\n return suffix || getOrdinalSuffix(n);\n },\n\n getRelativeFormat: function(adu, type) {\n return this.convertAdjustedToFormat(adu, type);\n },\n\n getDuration: function(ms) {\n return this.convertAdjustedToFormat(getAdjustedUnitForNumber(max(0, ms)), 'duration');\n },\n\n getFirstDayOfWeek: function() {\n var val = this.firstDayOfWeek;\n return isDefined(val) ? val : ISO_FIRST_DAY_OF_WEEK;\n },\n\n getFirstDayOfWeekYear: function() {\n return this.firstDayOfWeekYear || ISO_FIRST_DAY_OF_WEEK_YEAR;\n },\n\n convertAdjustedToFormat: function(adu, type) {\n var sign, unit, mult,\n num = adu[0],\n u = adu[1],\n ms = adu[2],\n format = this[type] || this.relative;\n if (isFunction(format)) {\n return format.call(this, num, u, ms, type);\n }\n mult = !this.plural || num === 1 ? 0 : 1;\n unit = this.units[mult * 8 + u] || this.units[u];\n sign = this[ms > 0 ? 'fromNow' : 'ago'];\n return format.replace(/\\{(.*?)\\}/g, function(full, match) {\n switch(match) {\n case 'num': return num;\n case 'unit': return unit;\n case 'sign': return sign;\n }\n });\n },\n\n cacheFormat: function(dif, i) {\n this.compiledFormats.splice(i, 1);\n this.compiledFormats.unshift(dif);\n },\n\n addFormat: function(src, to) {\n var loc = this;\n\n function getTokenSrc(str) {\n var suffix, src, val,\n opt = str.match(/\\?$/),\n nc = str.match(/^(\\d+)\\??$/),\n slice = str.match(/(\\d)(?:-(\\d))?/),\n key = str.replace(/[^a-z]+$/i, '');\n\n // Allowing alias tokens such as {time}\n if (val = getOwn(loc.parsingAliases, key)) {\n src = replaceParsingTokens(val);\n if (opt) {\n src = getRegNonCapturing(src, true);\n }\n return src;\n }\n\n if (nc) {\n src = loc.tokens[nc[1]];\n } else if (val = getOwn(ParsingTokens, key)) {\n src = val.src;\n } else {\n val = getOwn(loc.parsingTokens, key) || getOwn(loc, key);\n\n // Both the \"months\" array and the \"month\" parsing token can be accessed\n // by either {month} or {months}, falling back as necessary, however\n // regardless of whether or not a fallback occurs, the final field to\n // be passed to addRawFormat must be normalized as singular.\n key = key.replace(/s$/, '');\n\n if (!val) {\n val = getOwn(loc.parsingTokens, key) || getOwn(loc, key + 's');\n }\n\n if (isString(val)) {\n src = val;\n suffix = loc[key + 'Suffix'];\n } else {\n if (slice) {\n val = filter(val, function(m, i) {\n var mod = i % (loc.units ? 8 : val.length);\n return mod >= slice[1] && mod <= (slice[2] || slice[1]);\n });\n }\n src = arrayToRegAlternates(val);\n }\n }\n if (!src) {\n return '';\n }\n if (nc) {\n // Non-capturing tokens like {0}\n src = getRegNonCapturing(src);\n } else {\n // Capturing group and add to parsed tokens\n to.push(key);\n src = '(' + src + ')';\n }\n if (suffix) {\n // Date/time suffixes such as those in CJK\n src = getParsingTokenWithSuffix(key, src, suffix);\n }\n if (opt) {\n src += '?';\n }\n return src;\n }\n\n function replaceParsingTokens(str) {\n\n // Make spaces optional\n str = str.replace(/ /g, ' ?');\n\n return str.replace(/\\{([^,]+?)\\}/g, function(match, token) {\n var tokens = token.split('|'), src;\n if (tokens.length > 1) {\n src = getRegNonCapturing(map(tokens, getTokenSrc).join('|'));\n } else {\n src = getTokenSrc(token);\n }\n return src;\n });\n }\n\n if (!to) {\n to = [];\n src = replaceParsingTokens(src);\n }\n\n loc.addRawFormat(src, to);\n },\n\n addRawFormat: function(format, to) {\n this.compiledFormats.unshift({\n reg: RegExp('^ *' + format + ' *$', 'i'),\n to: to\n });\n },\n\n init: function(def) {\n var loc = this;\n\n // -- Initialization helpers\n\n function initFormats() {\n loc.compiledFormats = [];\n loc.parsingAliases = {};\n loc.parsingTokens = {};\n }\n\n function initDefinition() {\n simpleMerge(loc, def);\n }\n\n function initArrayFields() {\n forEach(LOCALE_ARRAY_FIELDS, function(name) {\n var val = loc[name];\n if (isString(val)) {\n loc[name] = commaSplit(val);\n } else if (!val) {\n loc[name] = [];\n }\n });\n }\n\n // -- Value array build helpers\n\n function buildValueArray(name, mod, map, fn) {\n var field = name, all = [], setMap;\n if (!loc[field]) {\n field += 's';\n }\n if (!map) {\n map = {};\n setMap = true;\n }\n forAllAlternates(field, function(alt, j, i) {\n var idx = j * mod + i, val;\n val = fn ? fn(i) : i;\n map[alt] = val;\n map[alt.toLowerCase()] = val;\n all[idx] = alt;\n });\n loc[field] = all;\n if (setMap) {\n loc[name + 'Map'] = map;\n }\n }\n\n function forAllAlternates(field, fn) {\n forEach(loc[field], function(str, i) {\n forEachAlternate(str, function(alt, j) {\n fn(alt, j, i);\n });\n });\n }\n\n function forEachAlternate(str, fn) {\n var arr = map(str.split('+'), function(split) {\n return split.replace(/(.+):(.+)$/, function(full, base, suffixes) {\n return map(suffixes.split('|'), function(suffix) {\n return base + suffix;\n }).join('|');\n });\n }).join('|');\n forEach(arr.split('|'), fn);\n }\n\n function buildNumerals() {\n var map = {};\n buildValueArray('numeral', 10, map);\n buildValueArray('article', 1, map, function() {\n return 1;\n });\n buildValueArray('placeholder', 4, map, function(n) {\n return pow(10, n + 1);\n });\n loc.numeralMap = map;\n }\n\n function buildTimeFormats() {\n loc.parsingAliases['time'] = getTimeFormat();\n loc.parsingAliases['tzOffset'] = getTZOffsetFormat();\n }\n\n function getTimeFormat() {\n var src;\n if (loc.ampmFront) {\n // \"ampmFront\" exists mostly for CJK locales, which also presume that\n // time suffixes exist, allowing this to be a simpler regex.\n src = '{ampm?} {hour} (?:{minute} (?::?{second})?)?';\n } else if(loc.ampm.length) {\n src = '{hour}(?:[.:]{minute}(?:[.:]{second})? {ampm?}| {ampm})';\n } else {\n src = '{hour}(?:[.:]{minute}(?:[.:]{second})?)';\n }\n return src;\n }\n\n function getTZOffsetFormat() {\n return '(?:{Z}|{GMT?}(?:{tzSign}{tzHour}(?::?{tzMinute}(?: \\\\([\\\\w\\\\s]+\\\\))?)?)?)?';\n }\n\n function buildParsingTokens() {\n forEachProperty(LocalizedParsingTokens, function(token, name) {\n var src, arr;\n src = token.base ? ParsingTokens[token.base].src : token.src;\n if (token.requiresNumerals || loc.numeralUnits) {\n src += getNumeralSrc();\n }\n arr = loc[name + 's'];\n if (arr && arr.length) {\n src += '|' + arrayToRegAlternates(arr);\n }\n loc.parsingTokens[name] = src;\n });\n }\n\n function getNumeralSrc() {\n var all, src = '';\n all = loc.numerals.concat(loc.placeholders).concat(loc.articles);\n if (loc.allowsFullWidth) {\n all = all.concat(fullWidthNumbers.split(''));\n }\n if (all.length) {\n src = '|(?:' + arrayToRegAlternates(all) + ')+';\n }\n return src;\n }\n\n function buildTimeSuffixes() {\n iterateOverDateUnits(function(unit, i) {\n var token = loc.timeSuffixes[i];\n if (token) {\n loc[(unit.alias || unit.name) + 'Suffix'] = token;\n }\n });\n }\n\n function buildModifiers() {\n forEach(loc.modifiers, function(modifier) {\n var name = modifier.name, mapKey = name + 'Map', map;\n map = loc[mapKey] || {};\n forEachAlternate(modifier.src, function(alt, j) {\n var token = getOwn(loc.parsingTokens, name), val = modifier.value;\n map[alt] = val;\n loc.parsingTokens[name] = token ? token + '|' + alt : alt;\n if (modifier.name === 'sign' && j === 0) {\n // Hooking in here to set the first \"fromNow\" or \"ago\" modifier\n // directly on the locale, so that it can be reused in the\n // relative format.\n loc[val === 1 ? 'fromNow' : 'ago'] = alt;\n }\n });\n loc[mapKey] = map;\n });\n }\n\n // -- Format adding helpers\n\n function addCoreFormats() {\n forEach(CoreParsingFormats, function(df) {\n var src = df.src;\n if (df.mdy && loc.mdy) {\n // Use the mm/dd/yyyy variant if it\n // exists and the locale requires it\n src = df.mdy;\n }\n if (df.time) {\n // Core formats that allow time require the time\n // reg on both sides, so add both versions here.\n loc.addFormat(getFormatWithTime(src, true));\n loc.addFormat(getFormatWithTime(src));\n } else {\n loc.addFormat(src);\n }\n });\n loc.addFormat('{time}');\n }\n\n function addLocaleFormats() {\n addFormatSet('parse');\n addFormatSet('timeParse', true);\n addFormatSet('timeFrontParse', true, true);\n }\n\n function addFormatSet(field, allowTime, timeFront) {\n forEach(loc[field], function(format) {\n if (allowTime) {\n format = getFormatWithTime(format, timeFront);\n }\n loc.addFormat(format);\n });\n }\n\n function getFormatWithTime(baseFormat, timeBefore) {\n if (timeBefore) {\n return getTimeBefore() + baseFormat;\n }\n return baseFormat + getTimeAfter();\n }\n\n function getTimeBefore() {\n return getRegNonCapturing('{time}[,\\\\s\\\\u3000]', true);\n }\n\n function getTimeAfter() {\n var markers = ',?[\\\\s\\\\u3000]', localized;\n localized = arrayToRegAlternates(loc.timeMarkers);\n if (localized) {\n markers += '| (?:' + localized + ') ';\n }\n markers = getRegNonCapturing(markers, loc.timeMarkerOptional);\n return getRegNonCapturing(markers + '{time}', true);\n }\n\n initFormats();\n initDefinition();\n initArrayFields();\n\n buildValueArray('month', 12);\n buildValueArray('weekday', 7);\n buildValueArray('unit', 8);\n buildValueArray('ampm', 2);\n\n buildNumerals();\n buildTimeFormats();\n buildParsingTokens();\n buildTimeSuffixes();\n buildModifiers();\n\n // The order of these formats is important. Order is reversed so formats\n // that are initialized later will take precedence. Generally, this means\n // that more specific formats should come later.\n addCoreFormats();\n addLocaleFormats();\n\n }\n\n };\n\n return new Locale(def);\n}\n\nmodule.exports = getNewLocale;","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar CanadianEnglishDefinition = getEnglishVariant({\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {Month}, {yyyy}',\n 'long': '{d} {Month}, {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = CanadianEnglishDefinition;","'use strict';\n\nvar EnglishLocaleBaseDefinition = {\n 'code': 'en',\n 'plural': true,\n 'timeMarkers': 'at',\n 'ampm': 'AM|A.M.|a,PM|P.M.|p',\n 'units': 'millisecond:|s,second:|s,minute:|s,hour:|s,day:|s,week:|s,month:|s,year:|s',\n 'months': 'Jan:uary|,Feb:ruary|,Mar:ch|,Apr:il|,May,Jun:e|,Jul:y|,Aug:ust|,Sep:tember|t|,Oct:ober|,Nov:ember|,Dec:ember|',\n 'weekdays': 'Sun:day|,Mon:day|,Tue:sday|,Wed:nesday|,Thu:rsday|,Fri:day|,Sat:urday|+weekend',\n 'numerals': 'zero,one|first,two|second,three|third,four:|th,five|fifth,six:|th,seven:|th,eight:|h,nin:e|th,ten:|th',\n 'articles': 'a,an,the',\n 'tokens': 'the,st|nd|rd|th,of|in,a|an,on',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'modifiers': [\n { 'name': 'half', 'src': 'half', 'value': .5 },\n { 'name': 'midday', 'src': 'noon', 'value': 12 },\n { 'name': 'midday', 'src': 'midnight', 'value': 24 },\n { 'name': 'day', 'src': 'yesterday', 'value': -1 },\n { 'name': 'day', 'src': 'today|tonight', 'value': 0 },\n { 'name': 'day', 'src': 'tomorrow', 'value': 1 },\n { 'name': 'sign', 'src': 'ago|before', 'value': -1 },\n { 'name': 'sign', 'src': 'from now|after|from|in|later', 'value': 1 },\n { 'name': 'edge', 'src': 'first day|first|beginning', 'value': -2 },\n { 'name': 'edge', 'src': 'last day', 'value': 1 },\n { 'name': 'edge', 'src': 'end|last', 'value': 2 },\n { 'name': 'shift', 'src': 'last', 'value': -1 },\n { 'name': 'shift', 'src': 'the|this', 'value': 0 },\n { 'name': 'shift', 'src': 'next', 'value': 1 }\n ],\n 'parse': [\n '(?:just)? now',\n '{shift} {unit:5-7}',\n \"{months?} (?:{year}|'{yy})\",\n '{midday} {4?} {day|weekday}',\n '{months},?(?:[-.\\\\/\\\\s]{year})?',\n '{edge} of (?:day)? {day|weekday}',\n '{0} {num}{1?} {weekday} {2} {months},? {year?}',\n '{shift?} {day?} {weekday?} {timeMarker?} {midday}',\n '{sign?} {3?} {half} {3?} {unit:3-4|unit:7} {sign?}',\n '{0?} {edge} {weekday?} {2} {shift?} {unit:4-7?} {months?},? {year?}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{0?} {date}{1?} {2?} {months?}',\n '{weekday} {2?} {shift} {unit:5}',\n '{0?} {num} {2?} {months}\\\\.?,? {year?}',\n '{num?} {unit:4-5} {sign} {day|weekday}',\n '{year}[-.\\\\/\\\\s]{months}[-.\\\\/\\\\s]{date}',\n '{0|months} {date?}{1?} of {shift} {unit:6-7}',\n '{0?} {num}{1?} {weekday} of {shift} {unit:6}',\n \"{date}[-.\\\\/\\\\s]{months}[-.\\\\/\\\\s](?:{year}|'?{yy})\",\n \"{weekday?}\\\\.?,? {months}\\\\.?,? {date}{1?},? (?:{year}|'{yy})?\"\n ],\n 'timeFrontParse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{4?} {day|weekday}'\n ]\n};\n\nmodule.exports = EnglishLocaleBaseDefinition;","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar BritishEnglishDefinition = getEnglishVariant({\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {Month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = BritishEnglishDefinition;","'use strict';\n\nvar BritishEnglishDefinition = require('./BritishEnglishDefinition'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n CanadianEnglishDefinition = require('./CanadianEnglishDefinition');\n\nvar LazyLoadedLocales = {\n 'en-US': AmericanEnglishDefinition,\n 'en-GB': BritishEnglishDefinition,\n 'en-AU': BritishEnglishDefinition,\n 'en-CA': CanadianEnglishDefinition\n};\n\nmodule.exports = LazyLoadedLocales;","'use strict';\n\n// Static Methods\nrequire('./addLocale');\nrequire('./create');\nrequire('./getAllLocaleCodes');\nrequire('./getAllLocales');\nrequire('./getLocale');\nrequire('./removeLocale');\nrequire('./setLocale');\n\n// Instance Methods\nrequire('../number/day');\nrequire('../number/dayAfter');\nrequire('../number/dayAgo');\nrequire('../number/dayBefore');\nrequire('../number/dayFromNow');\nrequire('../number/days');\nrequire('../number/daysAfter');\nrequire('../number/daysAgo');\nrequire('../number/daysBefore');\nrequire('../number/daysFromNow');\nrequire('../number/duration');\nrequire('../number/hour');\nrequire('../number/hourAfter');\nrequire('../number/hourAgo');\nrequire('../number/hourBefore');\nrequire('../number/hourFromNow');\nrequire('../number/hours');\nrequire('../number/hoursAfter');\nrequire('../number/hoursAgo');\nrequire('../number/hoursBefore');\nrequire('../number/hoursFromNow');\nrequire('../number/millisecond');\nrequire('../number/millisecondAfter');\nrequire('../number/millisecondAgo');\nrequire('../number/millisecondBefore');\nrequire('../number/millisecondFromNow');\nrequire('../number/milliseconds');\nrequire('../number/millisecondsAfter');\nrequire('../number/millisecondsAgo');\nrequire('../number/millisecondsBefore');\nrequire('../number/millisecondsFromNow');\nrequire('../number/minute');\nrequire('../number/minuteAfter');\nrequire('../number/minuteAgo');\nrequire('../number/minuteBefore');\nrequire('../number/minuteFromNow');\nrequire('../number/minutes');\nrequire('../number/minutesAfter');\nrequire('../number/minutesAgo');\nrequire('../number/minutesBefore');\nrequire('../number/minutesFromNow');\nrequire('../number/month');\nrequire('../number/monthAfter');\nrequire('../number/monthAgo');\nrequire('../number/monthBefore');\nrequire('../number/monthFromNow');\nrequire('../number/months');\nrequire('../number/monthsAfter');\nrequire('../number/monthsAgo');\nrequire('../number/monthsBefore');\nrequire('../number/monthsFromNow');\nrequire('../number/second');\nrequire('../number/secondAfter');\nrequire('../number/secondAgo');\nrequire('../number/secondBefore');\nrequire('../number/secondFromNow');\nrequire('../number/seconds');\nrequire('../number/secondsAfter');\nrequire('../number/secondsAgo');\nrequire('../number/secondsBefore');\nrequire('../number/secondsFromNow');\nrequire('../number/week');\nrequire('../number/weekAfter');\nrequire('../number/weekAgo');\nrequire('../number/weekBefore');\nrequire('../number/weekFromNow');\nrequire('../number/weeks');\nrequire('../number/weeksAfter');\nrequire('../number/weeksAgo');\nrequire('../number/weeksBefore');\nrequire('../number/weeksFromNow');\nrequire('../number/year');\nrequire('../number/yearAfter');\nrequire('../number/yearAgo');\nrequire('../number/yearBefore');\nrequire('../number/yearFromNow');\nrequire('../number/years');\nrequire('../number/yearsAfter');\nrequire('../number/yearsAgo');\nrequire('../number/yearsBefore');\nrequire('../number/yearsFromNow');\nrequire('./addDays');\nrequire('./addHours');\nrequire('./addMilliseconds');\nrequire('./addMinutes');\nrequire('./addMonths');\nrequire('./addSeconds');\nrequire('./addWeeks');\nrequire('./addYears');\nrequire('./advance');\nrequire('./beginningOfDay');\nrequire('./beginningOfISOWeek');\nrequire('./beginningOfMonth');\nrequire('./beginningOfWeek');\nrequire('./beginningOfYear');\nrequire('./clone');\nrequire('./daysAgo');\nrequire('./daysFromNow');\nrequire('./daysInMonth');\nrequire('./daysSince');\nrequire('./daysUntil');\nrequire('./endOfDay');\nrequire('./endOfISOWeek');\nrequire('./endOfMonth');\nrequire('./endOfWeek');\nrequire('./endOfYear');\nrequire('./format');\nrequire('./get');\nrequire('./getISOWeek');\nrequire('./getUTCOffset');\nrequire('./getUTCWeekday');\nrequire('./getWeekday');\nrequire('./hoursAgo');\nrequire('./hoursFromNow');\nrequire('./hoursSince');\nrequire('./hoursUntil');\nrequire('./is');\nrequire('./isAfter');\nrequire('./isBefore');\nrequire('./isBetween');\nrequire('./isFriday');\nrequire('./isFuture');\nrequire('./isLastMonth');\nrequire('./isLastWeek');\nrequire('./isLastYear');\nrequire('./isLeapYear');\nrequire('./isMonday');\nrequire('./isNextMonth');\nrequire('./isNextWeek');\nrequire('./isNextYear');\nrequire('./isPast');\nrequire('./isSaturday');\nrequire('./isSunday');\nrequire('./isThisMonth');\nrequire('./isThisWeek');\nrequire('./isThisYear');\nrequire('./isThursday');\nrequire('./isToday');\nrequire('./isTomorrow');\nrequire('./isTuesday');\nrequire('./isUTC');\nrequire('./isValid');\nrequire('./isWednesday');\nrequire('./isWeekday');\nrequire('./isWeekend');\nrequire('./isYesterday');\nrequire('./iso');\nrequire('./millisecondsAgo');\nrequire('./millisecondsFromNow');\nrequire('./millisecondsSince');\nrequire('./millisecondsUntil');\nrequire('./minutesAgo');\nrequire('./minutesFromNow');\nrequire('./minutesSince');\nrequire('./minutesUntil');\nrequire('./monthsAgo');\nrequire('./monthsFromNow');\nrequire('./monthsSince');\nrequire('./monthsUntil');\nrequire('./relative');\nrequire('./relativeTo');\nrequire('./reset');\nrequire('./rewind');\nrequire('./secondsAgo');\nrequire('./secondsFromNow');\nrequire('./secondsSince');\nrequire('./secondsUntil');\nrequire('./set');\nrequire('./setISOWeek');\nrequire('./setUTC');\nrequire('./setWeekday');\nrequire('./weeksAgo');\nrequire('./weeksFromNow');\nrequire('./weeksSince');\nrequire('./weeksUntil');\nrequire('./yearsAgo');\nrequire('./yearsFromNow');\nrequire('./yearsSince');\nrequire('./yearsUntil');\n\n// Accessors\nrequire('./getOption');\nrequire('./setOption');\n\nmodule.exports = require('sugar-core');"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/tablefilter/tf-0-2c8620168298c5a11749.js b/dist/tablefilter/tf-0-2c8620168298c5a11749.js deleted file mode 100644 index 86fad1db..00000000 --- a/dist/tablefilter/tf-0-2c8620168298c5a11749.js +++ /dev/null @@ -1,2 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{440:function(e,t,n){var r={"./array":69,"./array.js":69,"./const":15,"./const.js":15,"./cookie":120,"./cookie.js":120,"./dom":10,"./dom.js":10,"./emitter":127,"./emitter.js":127,"./event":18,"./event.js":18,"./extensions/advancedGrid/adapterEzEditTable":442,"./extensions/advancedGrid/adapterEzEditTable.js":442,"./extensions/advancedGrid/advancedGrid":447,"./extensions/advancedGrid/advancedGrid.js":447,"./extensions/colOps/colOps":446,"./extensions/colOps/colOps.js":446,"./extensions/colsVisibility/colsVisibility":445,"./extensions/colsVisibility/colsVisibility.js":445,"./extensions/filtersVisibility/filtersVisibility":444,"./extensions/filtersVisibility/filtersVisibility.js":444,"./extensions/sort/adapterSortabletable":441,"./extensions/sort/adapterSortabletable.js":441,"./extensions/sort/sort":443,"./extensions/sort/sort.js":443,"./feature":11,"./feature.js":11,"./modules/alternateRows":111,"./modules/alternateRows.js":111,"./modules/baseDropdown":70,"./modules/baseDropdown.js":70,"./modules/checkList":108,"./modules/checkList.js":108,"./modules/clearButton":112,"./modules/clearButton.js":112,"./modules/dateType":125,"./modules/dateType.js":125,"./modules/dropdown":126,"./modules/dropdown.js":126,"./modules/gridLayout":119,"./modules/gridLayout.js":119,"./modules/hash":122,"./modules/hash.js":122,"./modules/help":124,"./modules/help.js":124,"./modules/highlightKeywords":117,"./modules/highlightKeywords.js":117,"./modules/loader":118,"./modules/loader.js":118,"./modules/markActiveColumns":115,"./modules/markActiveColumns.js":115,"./modules/noResults":110,"./modules/noResults.js":110,"./modules/paging":109,"./modules/paging.js":109,"./modules/popupFilter":116,"./modules/popupFilter.js":116,"./modules/rowsCounter":114,"./modules/rowsCounter.js":114,"./modules/state":123,"./modules/state.js":123,"./modules/statusBar":113,"./modules/statusBar.js":113,"./modules/storage":121,"./modules/storage.js":121,"./modules/toolbar":33,"./modules/toolbar.js":33,"./number":68,"./number.js":68,"./root":16,"./root.js":16,"./settings":7,"./settings.js":7,"./sort":107,"./sort.js":107,"./string":21,"./string.js":21,"./tablefilter":128,"./tablefilter.js":128,"./types":3,"./types.js":3};function webpackContext(e){var t=webpackContextResolve(e);return n(t)}function webpackContextResolve(e){var t=r[e];if(!(t+1)){var n=new Error('Cannot find module "'+e+'".');throw n.code="MODULE_NOT_FOUND",n}return t}webpackContext.keys=function webpackContextKeys(){return Object.keys(r)},webpackContext.resolve=webpackContextResolve,e.exports=webpackContext,webpackContext.id=440},441:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function defineProperties(e,t){for(var n=0;n0){var i=e.triggerIds;t=[],n=i.length;for(var o=0;o0&&function(){for(var t=e.triggerIds,n=0;nr.length;)r="0"+r;t[n]=r}return t.join(".")}function sortIP(e,t){var n=ipAddress(e.value.toLowerCase()),r=ipAddress(t.value.toLowerCase());return n===r?0:n0&&!n.startRow?void 0:n.startRow||e.refRow,n.base_path=n.base_path||e.basePath+"ezEditTable/";var r=n.editable,i=n.selection;i&&(n.default_selection=n.default_selection||"row"),n.active_cell_css=n.active_cell_css||"ezETSelectedCell";var s=0,a=0;if(i){var l=function onAfterSelection(t,n,r){var i=t.Selection,o=function doSelect(r){if("row"===t.defaultSelection)i.SelectRowByIndex(r);else{t.ClearSelections();var o=n.cellIndex,s=e.dom().rows[r];"both"===t.defaultSelection&&i.SelectRowByIndex(r),s&&i.SelectCell(s.cells[o])}if(e.validRowsIndex.length!==e.getRowsNb()){var a=e.dom().rows[r];a&&a.scrollIntoView(!1),u&&(u.cellIndex===e.getCellsNb()-1&&e.gridLayout?e.tblCont.scrollLeft=1e8:0===u.cellIndex&&e.gridLayout?e.tblCont.scrollLeft=0:u.scrollIntoView(!1))}};if(e.validRowsIndex){var l=e.validRowsIndex,d=l.length,c="row"!==t.defaultSelection?n.parentNode:n,u="TD"===n.nodeName?n:null,f=void 0!==r?t.Event.GetKey(r):0,h=-1!==l.indexOf(c.rowIndex),p=void 0,b=e.feature("paging"),m=34===f||33===f?b&&b.pageLength||t.nbRowsPerPage:1;if(h)34!==f&&33!==f?(s=l.indexOf(c.rowIndex),a=c.rowIndex):(p=34===f?s+m<=d-1?l[s+m]:[d-1]:s-m<=l[0]?l[0]:l[s-m],a=p,s=l.indexOf(p),o(p));else{if(c.rowIndex>a)if(c.rowIndex>=l[d-1])p=l[d-1];else{var g=s+m;p=g>d-1?l[d-1]:l[g]}else if(c.rowIndex<=l[0])p=l[0];else{var y=l[s-m];p=y||l[0]}a=c.rowIndex,o(p)}}},d=function onBeforeSelection(t,n){var r="row"!==t.defaultSelection?n.parentNode:n;if(e.paging&&e.feature("paging").nbPages>1){var i=e.feature("paging");t.nbRowsPerPage=i.pageLength;var o=e.validRowsIndex,s=o.length,a=parseInt(i.startPagingRow,10)+parseInt(i.pageLength,10),l=r.rowIndex;l===o[s-1]&&i.currentPageNb!==i.nbPages?i.setPage("last"):l===o[0]&&1!==i.currentPageNb?i.setPage("first"):l>o[a-1]&&lo[0]&&i.setPage("previous")}};if(e.paging&&(e.feature("paging").onAfterChangePage=function(e){var t=e.tf.extension("advancedGrid")._ezEditTable.Selection,n=t.GetActiveRow();n&&n.scrollIntoView(!1);var r=t.GetActiveCell();r&&r.scrollIntoView(!1)}),"row"===n.default_selection){var c=n.on_before_selected_row;n.on_before_selected_row=function(){var e=arguments;d(e[0],e[1],e[2]),c&&c.call(null,e[0],e[1],e[2])};var u=n.on_after_selected_row;n.on_after_selected_row=function(){var e=arguments;l(e[0],e[1],e[2]),u&&u.call(null,e[0],e[1],e[2])}}else{var f=n.on_before_selected_cell;n.on_before_selected_cell=function(){var e=arguments;d(e[0],e[1],e[2]),f&&f.call(null,e[0],e[1],e[2])};var h=n.on_after_selected_cell;n.on_after_selected_cell=function(){var e=arguments;l(e[0],e[1],e[2]),h&&h.call(null,e[0],e[1],e[2])}}}if(r){var p=n.on_added_dom_row;if(n.on_added_dom_row=function(){var t=arguments;e.nbFilterableRows++,e.paging?(e.nbFilterableRows++,e.paging=!1,e.feature("paging").destroy(),e.feature("paging").reset()):e.emitter.emit("rows-changed",e,this),e.alternateRows&&e.feature("alternateRows").init(),p&&p.call(null,t[0],t[1],t[2])},n.actions&&n.actions.delete){var b=n.actions.delete.on_after_submit;n.actions.delete.on_after_submit=function(){var t=arguments;e.nbFilterableRows--,e.paging?(e.nbFilterableRows--,e.paging=!1,e.feature("paging").destroy(),e.feature("paging").reset(!1)):e.emitter.emit("rows-changed",e,this),e.alternateRows&&e.feature("alternateRows").init(),b&&b.call(null,t[0],t[1])}}}try{this._ezEditTable=new EditTable(e.id,n,t),this._ezEditTable.Init()}catch(e){throw new Error('Failed to instantiate EditTable object.\n \n"ezEditTable" dependency not found.')}this.initialized=!0}},{key:"reset",value:function reset(){var e=this._ezEditTable;e&&(this.cfg.selection&&e.Selection.Set(),this.cfg.editable&&e.Editable.Set())}},{key:"toggle",value:function toggle(){var e=this._ezEditTable;e.editable?e.Editable.Remove():e.Editable.Set(),e.selection?e.Selection.Remove():e.Selection.Set()}},{key:"_toggleForInputFilter",value:function _toggleForInputFilter(){var e=this.tf;if(e.getActiveFilterId()){var t=e.getColumnIndexFromFilterId(e.getActiveFilterId());e.getFilterType(t)===s.INPUT&&this.toggle()}}},{key:"destroy",value:function destroy(){var e=this;if(this.initialized){var t=this._ezEditTable;t&&(this.cfg.selection&&(t.Selection.ClearSelections(),t.Selection.Remove()),this.cfg.editable&&t.Editable.Remove()),this.emitter.off(["filter-focus","filter-blur"],function(){return e._toggleForInputFilter()}),this.initialized=!1}}}]),AdapterEzEditTable}();t.default=d},443:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}(n(441));n(16).root.SortableTable||n(450),t.default=r.default},444:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function defineProperties(e,t){for(var n=0;n',n.icnCollapseHtml='Collapse filters',n.defaultText="Toggle filters",n.targetId=t.target_id||null,n.enableIcon=(0,l.defaultsBool)(t.enable_icon,!0),n.btnText=(0,l.defaultsStr)(t.btn_text,""),n.collapseBtnHtml=n.enableIcon?n.icnCollapseHtml+n.btnText:n.btnText||n.defaultText,n.expandBtnHtml=n.enableIcon?n.icnExpandHtml+n.btnText:n.btnText||n.defaultText,n.btnHtml=(0,l.defaultsStr)(t.btn_html,null),n.btnCssClass=(0,l.defaultsStr)(t.btn_css_class,"btnExpClpFlt"),n.contCssClass=(0,l.defaultsStr)(t.cont_css_class,"expClpFlt"),n.filtersRowIndex=(0,l.defaultsNb)(t.filters_row_index,e.getFiltersRowIndex()),n.visibleAtStart=(0,l.defaultsNb)(t.visible_at_start,!0),n.toolbarPosition=(0,l.defaultsStr)(t.toolbar_position,d.RIGHT),n.onBeforeShow=(0,l.defaultsFn)(t.on_before_show,s.EMPTY_FN),n.onAfterShow=(0,l.defaultsFn)(t.on_after_show,s.EMPTY_FN),n.onBeforeHide=(0,l.defaultsFn)(t.on_before_hide,s.EMPTY_FN),n.onAfterHide=(0,l.defaultsFn)(t.on_after_hide,s.EMPTY_FN),e.import(t.name+"Style",e.getStylePath()+n.stylesheet,null,"link"),n.enable(),n}return function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(FiltersVisibility,i.Feature),r(FiltersVisibility,[{key:"init",value:function init(){var e=this;this.initialized||(this.emitter.emit("initializing-extension",this,!(0,s.isNull)(this.targetId)),this.buildUI(),this.initialized=!0,this.emitter.on(["show-filters"],function(t,n){return e.show(n)}),this.emitter.emit("filters-visibility-initialized",this.tf,this),this.emitter.emit("extension-initialized",this))}},{key:"buildUI",value:function buildUI(){var e=this,t=this.tf,n=(0,o.createElm)("span");n.className=this.contCssClass;var r=this.targetId?(0,o.elm)(this.targetId):t.feature("toolbar").container(this.toolbarPosition);if(this.targetId)r.appendChild(n);else{var i=r.firstChild;i.parentNode.insertBefore(n,i)}var s=void 0;this.btnHtml?(n.innerHTML=this.btnHtml,s=n.firstChild):((s=(0,o.createElm)("a",["href","javascript:void(0);"])).className=this.btnCssClass,s.title=this.btnText||this.defaultText,s.innerHTML=this.collapseBtnHtml,n.appendChild(s)),(0,a.addEvt)(s,"click",function(){return e.toggle()}),this.contEl=n,this.btnEl=s,this.visibleAtStart||this.toggle()}},{key:"toggle",value:function toggle(){var e=this.tf,t=""===(e.gridLayout?e.feature("gridLayout").headTbl:e.dom()).rows[this.filtersRowIndex].style.display;this.show(!t)}},{key:"show",value:function show(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.tf,n=(t.gridLayout?t.feature("gridLayout").headTbl:t.dom()).rows[this.filtersRowIndex];e&&this.onBeforeShow(this),e||this.onBeforeHide(this),n.style.display=e?"":"none",this.enableIcon&&!this.btnHtml&&(this.btnEl.innerHTML=e?this.collapseBtnHtml:this.expandBtnHtml),e&&this.onAfterShow(this),e||this.onAfterHide(this),this.emitter.emit("filters-toggled",t,this,e)}},{key:"destroy",value:function destroy(){var e=this;this.initialized&&(this.emitter.off(["show-filters"],function(t,n){return e.show(n)}),this.btnEl.innerHTML="",(0,o.removeElm)(this.btnEl),this.btnEl=null,this.contEl.innerHTML="",(0,o.removeElm)(this.contEl),this.contEl=null,this.initialized=!1)}}]),FiltersVisibility}();t.default=c},445:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function defineProperties(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"sum",n=arguments[2],r=this.excludeRows||[],i=tf.getVisibleColumnData(e,!1,r);return Number(this.calc(i,t,n))}},{key:"calc",value:function calc(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"sum",n=arguments[2],r=0;switch("q1"!==t&&"q3"!==t&&"median"!==t||(e=this.sortColumnValues(e,a.numSortAsc)),t){case"mean":r=this.calcMean(e);break;case"sum":r=this.calcSum(e);break;case"min":r=this.calcMin(e);break;case"max":r=this.calcMax(e);break;case"median":r=this.calcMedian(e);break;case"q1":r=this.calcQ1(e);break;case"q3":r=this.calcQ3(e)}return(0,s.isEmpty)(n)?r:r.toFixed(n)}},{key:"calcSum",value:function calcSum(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(0,s.isEmpty)(e)?0:e.reduce(function(e,t){return Number(e)+Number(t)})}},{key:"calcMean",value:function calcMean(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=this.calcSum(e)/e.length;return Number(t)}},{key:"calcMax",value:function calcMax(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return Math.max.apply(null,e)}},{key:"calcMin",value:function calcMin(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return Math.min.apply(null,e)}},{key:"calcMedian",value:function calcMedian(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.length,n=0;return t%2==1?(n=Math.floor(t/2),Number(e[n])):(Number(e[t/2])+Number(e[t/2-1]))/2}},{key:"calcQ1",value:function calcQ1(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=t.length;return 4*(e=Math.floor(n/4))===n?(Number(t[e-1])+Number(t[e]))/2:Number(t[e])}},{key:"calcQ3",value:function calcQ3(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=t.length,r=0;return 4*(e=Math.floor(n/4))===n?(r=3*e,(Number(t[r])+Number(t[r-1]))/2):Number(t[n-e-1])}},{key:"sortColumnValues",value:function sortColumnValues(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];return e.sort(t)}},{key:"writeResult",value:function writeResult(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"innerhtml",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},s=(0,o.elm)(t);if(s)switch(e=e.toFixed(r),e=isNaN(e)||!isFinite(e)?"":(0,d.default)(i)(e),n.toLowerCase()){case"innerhtml":s.innerHTML=e;break;case"setvalue":s.value=e;break;case"createtextnode":var a=s.firstChild,l=(0,o.createText)(e);s.replaceChild(l,a)}}},{key:"configureFormat",value:function configureFormat(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.tf;if(n.hasType(e,[l.FORMATTED_NUMBER])){var r=n.colTypes[e];r.decimal&&!t.decimal&&(t.decimal=r.decimal),r.thousands&&!t.integerSeparator&&(t.integerSeparator=r.thousands)}else t.decimal=t.decimal||"",t.integerSeparator=t.integerSeparator||"";return t}},{key:"destroy",value:function destroy(){this.initialized&&(this.emitter.off(f,(0,u.bound)(this.calcAll,this)),this.initialized=!1)}}]),ColOps}();t.default=h},447:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}(n(442));t.default=r.default},448:function(e,t){e.exports='/*----------------------------------------------------------------------------\\\r\n| Sortable Table 1.12 |\r\n|-----------------------------------------------------------------------------|\r\n| Created by Erik Arvidsson |\r\n| (http://webfx.eae.net/contact.html#erik) |\r\n| For WebFX (http://webfx.eae.net/) |\r\n|-----------------------------------------------------------------------------|\r\n| A DOM 1 based script that allows an ordinary HTML table to be sortable. |\r\n|-----------------------------------------------------------------------------|\r\n| Copyright (c) 1998 - 2006 Erik Arvidsson |\r\n|-----------------------------------------------------------------------------|\r\n| Licensed under the Apache License, Version 2.0 (the "License"); you may not |\r\n| use this file except in compliance with the License. You may obtain a copy |\r\n| of the License at http://www.apache.org/licenses/LICENSE-2.0 |\r\n| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |\r\n| Unless required by applicable law or agreed to in writing, software |\r\n| distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |\r\n| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |\r\n| License for the specific language governing permissions and limitations |\r\n| under the License. |\r\n|-----------------------------------------------------------------------------|\r\n| 2003-01-10 | First version |\r\n| 2003-01-19 | Minor changes to the date parsing |\r\n| 2003-01-28 | JScript 5.0 fixes (no support for \'in\' operator) |\r\n| 2003-02-01 | Sloppy typo like error fixed in getInnerText |\r\n| 2003-07-04 | Added workaround for IE cellIndex bug. |\r\n| 2003-11-09 | The bDescending argument to sort was not correctly working |\r\n| | Using onclick DOM0 event if no support for addEventListener |\r\n| | or attachEvent |\r\n| 2004-01-13 | Adding addSortType and removeSortType which makes it a lot |\r\n| | easier to add new, custom sort types. |\r\n| 2004-01-27 | Switch to use descending = false as the default sort order. |\r\n| | Change defaultDescending to suit your needs. |\r\n| 2004-03-14 | Improved sort type None look and feel a bit |\r\n| 2004-08-26 | Made the handling of tBody and tHead more flexible. Now you |\r\n| | can use another tHead or no tHead, and you can chose some |\r\n| | other tBody. |\r\n| 2006-04-25 | Changed license to Apache Software License 2.0 |\r\n|-----------------------------------------------------------------------------|\r\n| Created 2003-01-10 | All changes are in the log above. | Updated 2006-04-25 |\r\n\\----------------------------------------------------------------------------*/\r\n\r\n\r\nfunction SortableTable(oTable, oSortTypes) {\r\n\r\n\tthis.sortTypes = oSortTypes || [];\r\n\r\n\tthis.sortColumn = null;\r\n\tthis.descending = null;\r\n\r\n\tvar oThis = this;\r\n\tthis._headerOnclick = function (e) {\r\n\t\toThis.headerOnclick(e);\r\n\t};\r\n\r\n\tif (oTable) {\r\n\t\tthis.setTable( oTable );\r\n\t\tthis.document = oTable.ownerDocument || oTable.document;\r\n\t}\r\n\telse {\r\n\t\tthis.document = document;\r\n\t}\r\n\r\n\r\n\t// only IE needs this\r\n\tvar win = this.document.defaultView || this.document.parentWindow;\r\n\tthis._onunload = function () {\r\n\t\toThis.destroy();\r\n\t};\r\n\tif (win && typeof win.attachEvent != "undefined") {\r\n\t\twin.attachEvent("onunload", this._onunload);\r\n\t}\r\n}\r\n\r\nSortableTable.gecko = navigator.product == "Gecko";\r\nSortableTable.msie = /msie/i.test(navigator.userAgent);\r\n// Mozilla is faster when doing the DOM manipulations on\r\n// an orphaned element. MSIE is not\r\nSortableTable.removeBeforeSort = SortableTable.gecko;\r\n\r\nSortableTable.prototype.onsort = function () {};\r\n\r\n// default sort order. true -> descending, false -> ascending\r\nSortableTable.prototype.defaultDescending = false;\r\n\r\n// shared between all instances. This is intentional to allow external files\r\n// to modify the prototype\r\nSortableTable.prototype._sortTypeInfo = {};\r\n\r\nSortableTable.prototype.setTable = function (oTable) {\r\n\tif ( this.tHead )\r\n\t\tthis.uninitHeader();\r\n\tthis.element = oTable;\r\n\tthis.setTHead( oTable.tHead );\r\n\tthis.setTBody( oTable.tBodies[0] );\r\n};\r\n\r\nSortableTable.prototype.setTHead = function (oTHead) {\r\n\tif (this.tHead && this.tHead != oTHead )\r\n\t\tthis.uninitHeader();\r\n\tthis.tHead = oTHead;\r\n\tthis.initHeader( this.sortTypes );\r\n};\r\n\r\nSortableTable.prototype.setTBody = function (oTBody) {\r\n\tthis.tBody = oTBody;\r\n};\r\n\r\nSortableTable.prototype.setSortTypes = function ( oSortTypes ) {\r\n\tif ( this.tHead )\r\n\t\tthis.uninitHeader();\r\n\tthis.sortTypes = oSortTypes || [];\r\n\tif ( this.tHead )\r\n\t\tthis.initHeader( this.sortTypes );\r\n};\r\n\r\n// adds arrow containers and events\r\n// also binds sort type to the header cells so that reordering columns does\r\n// not break the sort types\r\nSortableTable.prototype.initHeader = function (oSortTypes) {\r\n\tif (!this.tHead) return;\r\n\tvar cells = this.tHead.rows[0].cells;\r\n\tvar doc = this.tHead.ownerDocument || this.tHead.document;\r\n\tthis.sortTypes = oSortTypes || [];\r\n\tvar l = cells.length;\r\n\tvar img, c;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tc = cells[i];\r\n\t\tif (this.sortTypes[i] != null && this.sortTypes[i] != "None") {\r\n\t\t\timg = doc.createElement("IMG");\r\n\t\t\timg.src = "images/blank.png";\r\n\t\t\tc.appendChild(img);\r\n\t\t\tif (this.sortTypes[i] != null)\r\n\t\t\t\tc._sortType = this.sortTypes[i];\r\n\t\t\tif (typeof c.addEventListener != "undefined")\r\n\t\t\t\tc.addEventListener("click", this._headerOnclick, false);\r\n\t\t\telse if (typeof c.attachEvent != "undefined")\r\n\t\t\t\tc.attachEvent("onclick", this._headerOnclick);\r\n\t\t\telse\r\n\t\t\t\tc.onclick = this._headerOnclick;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tc.setAttribute( "_sortType", oSortTypes[i] );\r\n\t\t\tc._sortType = "None";\r\n\t\t}\r\n\t}\r\n\tthis.updateHeaderArrows();\r\n};\r\n\r\n// remove arrows and events\r\nSortableTable.prototype.uninitHeader = function () {\r\n\tif (!this.tHead) return;\r\n\tvar cells = this.tHead.rows[0].cells;\r\n\tvar l = cells.length;\r\n\tvar c;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tc = cells[i];\r\n\t\tif (c._sortType != null && c._sortType != "None") {\r\n\t\t\tc.removeChild(c.lastChild);\r\n\t\t\tif (typeof c.removeEventListener != "undefined")\r\n\t\t\t\tc.removeEventListener("click", this._headerOnclick, false);\r\n\t\t\telse if (typeof c.detachEvent != "undefined")\r\n\t\t\t\tc.detachEvent("onclick", this._headerOnclick);\r\n\t\t\tc._sortType = null;\r\n\t\t\tc.removeAttribute( "_sortType" );\r\n\t\t}\r\n\t}\r\n};\r\n\r\nSortableTable.prototype.updateHeaderArrows = function () {\r\n\tif (!this.tHead) return;\r\n\tvar cells = this.tHead.rows[0].cells;\r\n\tvar l = cells.length;\r\n\tvar img;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tif (cells[i]._sortType != null && cells[i]._sortType != "None") {\r\n\t\t\timg = cells[i].lastChild;\r\n\t\t\tif (i == this.sortColumn)\r\n\t\t\t\timg.className = "sort-arrow " + (this.descending ? "descending" : "ascending");\r\n\t\t\telse\r\n\t\t\t\timg.className = "sort-arrow";\r\n\t\t}\r\n\t}\r\n};\r\n\r\nSortableTable.prototype.headerOnclick = function (e) {\r\n\t// find TD element\r\n\tvar el = e.target || e.srcElement;\r\n\twhile (el.tagName != "TD")\r\n\t\tel = el.parentNode;\r\n\r\n\tthis.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);\r\n};\r\n\r\n// IE returns wrong cellIndex when columns are hidden\r\nSortableTable.getCellIndex = function (oTd) {\r\n\tvar cells = oTd.parentNode.childNodes\r\n\tvar l = cells.length;\r\n\tvar i;\r\n\tfor (i = 0; cells[i] != oTd && i < l; i++)\r\n\t\t;\r\n\treturn i;\r\n};\r\n\r\nSortableTable.prototype.getSortType = function (nColumn) {\r\n\treturn this.sortTypes[nColumn] || "String";\r\n};\r\n\r\n// only nColumn is required\r\n// if bDescending is left out the old value is taken into account\r\n// if sSortType is left out the sort type is found from the sortTypes array\r\n\r\nSortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {\r\n\tif (!this.tBody) return;\r\n\tif (sSortType == null)\r\n\t\tsSortType = this.getSortType(nColumn);\r\n\r\n\t// exit if None\r\n\tif (sSortType == "None")\r\n\t\treturn;\r\n\r\n\tif (bDescending == null) {\r\n\t\tif (this.sortColumn != nColumn)\r\n\t\t\tthis.descending = this.defaultDescending;\r\n\t\telse\r\n\t\t\tthis.descending = !this.descending;\r\n\t}\r\n\telse\r\n\t\tthis.descending = bDescending;\r\n\r\n\tthis.sortColumn = nColumn;\r\n\r\n\tif (typeof this.onbeforesort == "function")\r\n\t\tthis.onbeforesort();\r\n\r\n\tvar f = this.getSortFunction(sSortType, nColumn);\r\n\tvar a = this.getCache(sSortType, nColumn);\r\n\tvar tBody = this.tBody;\r\n\r\n\ta.sort(f);\r\n\r\n\tif (this.descending)\r\n\t\ta.reverse();\r\n\r\n\tif (SortableTable.removeBeforeSort) {\r\n\t\t// remove from doc\r\n\t\tvar nextSibling = tBody.nextSibling;\r\n\t\tvar p = tBody.parentNode;\r\n\t\tp.removeChild(tBody);\r\n\t}\r\n\r\n\t// insert in the new order\r\n\tvar l = a.length;\r\n\tfor (var i = 0; i < l; i++)\r\n\t\ttBody.appendChild(a[i].element);\r\n\r\n\tif (SortableTable.removeBeforeSort) {\r\n\t\t// insert into doc\r\n\t\tp.insertBefore(tBody, nextSibling);\r\n\t}\r\n\r\n\tthis.updateHeaderArrows();\r\n\r\n\tthis.destroyCache(a);\r\n\r\n\tif (typeof this.onsort == "function")\r\n\t\tthis.onsort();\r\n};\r\n\r\nSortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {\r\n\tvar oThis = this;\r\n\tthis._asyncsort = function () {\r\n\t\toThis.sort(nColumn, bDescending, sSortType);\r\n\t};\r\n\twindow.setTimeout(this._asyncsort, 1);\r\n};\r\n\r\nSortableTable.prototype.getCache = function (sType, nColumn) {\r\n\tif (!this.tBody) return [];\r\n\tvar rows = this.tBody.rows;\r\n\tvar l = rows.length;\r\n\tvar a = new Array(l);\r\n\tvar r;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tr = rows[i];\r\n\t\ta[i] = {\r\n\t\t\tvalue:\t\tthis.getRowValue(r, sType, nColumn),\r\n\t\t\telement:\tr\r\n\t\t};\r\n\t};\r\n\treturn a;\r\n};\r\n\r\nSortableTable.prototype.destroyCache = function (oArray) {\r\n\tvar l = oArray.length;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\toArray[i].value = null;\r\n\t\toArray[i].element = null;\r\n\t\toArray[i] = null;\r\n\t}\r\n};\r\n\r\nSortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\r\n\t// if we have defined a custom getRowValue use that\r\n\tif (this._sortTypeInfo[sType] && this._sortTypeInfo[sType].getRowValue)\r\n\t\treturn this._sortTypeInfo[sType].getRowValue(oRow, nColumn);\r\n\r\n\tvar s;\r\n\tvar c = oRow.cells[nColumn];\r\n\tif (typeof c.innerText != "undefined")\r\n\t\ts = c.innerText;\r\n\telse\r\n\t\ts = SortableTable.getInnerText(c);\r\n\treturn this.getValueFromString(s, sType);\r\n};\r\n\r\nSortableTable.getInnerText = function (oNode) {\r\n\tvar s = "";\r\n\tvar cs = oNode.childNodes;\r\n\tvar l = cs.length;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tswitch (cs[i].nodeType) {\r\n\t\t\tcase 1: //ELEMENT_NODE\r\n\t\t\t\ts += SortableTable.getInnerText(cs[i]);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 3:\t//TEXT_NODE\r\n\t\t\t\ts += cs[i].nodeValue;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\treturn s;\r\n};\r\n\r\nSortableTable.prototype.getValueFromString = function (sText, sType) {\r\n\tif (this._sortTypeInfo[sType])\r\n\t\treturn this._sortTypeInfo[sType].getValueFromString( sText );\r\n\treturn sText;\r\n\t/*\r\n\tswitch (sType) {\r\n\t\tcase "Number":\r\n\t\t\treturn Number(sText);\r\n\t\tcase "CaseInsensitiveString":\r\n\t\t\treturn sText.toUpperCase();\r\n\t\tcase "Date":\r\n\t\t\tvar parts = sText.split("-");\r\n\t\t\tvar d = new Date(0);\r\n\t\t\td.setFullYear(parts[0]);\r\n\t\t\td.setDate(parts[2]);\r\n\t\t\td.setMonth(parts[1] - 1);\r\n\t\t\treturn d.valueOf();\r\n\t}\r\n\treturn sText;\r\n\t*/\r\n\t};\r\n\r\nSortableTable.prototype.getSortFunction = function (sType, nColumn) {\r\n\tif (this._sortTypeInfo[sType])\r\n\t\treturn this._sortTypeInfo[sType].compare;\r\n\treturn SortableTable.basicCompare;\r\n};\r\n\r\nSortableTable.prototype.destroy = function () {\r\n\tthis.uninitHeader();\r\n\tvar win = this.document.parentWindow;\r\n\tif (win && typeof win.detachEvent != "undefined") {\t// only IE needs this\r\n\t\twin.detachEvent("onunload", this._onunload);\r\n\t}\r\n\tthis._onunload = null;\r\n\tthis.element = null;\r\n\tthis.tHead = null;\r\n\tthis.tBody = null;\r\n\tthis.document = null;\r\n\tthis._headerOnclick = null;\r\n\tthis.sortTypes = null;\r\n\tthis._asyncsort = null;\r\n\tthis.onsort = null;\r\n};\r\n\r\n// Adds a sort type to all instance of SortableTable\r\n// sType : String - the identifier of the sort type\r\n// fGetValueFromString : function ( s : string ) : T - A function that takes a\r\n// string and casts it to a desired format. If left out the string is just\r\n// returned\r\n// fCompareFunction : function ( n1 : T, n2 : T ) : Number - A normal JS sort\r\n// compare function. Takes two values and compares them. If left out less than,\r\n// <, compare is used\r\n// fGetRowValue : function( oRow : HTMLTRElement, nColumn : int ) : T - A function\r\n// that takes the row and the column index and returns the value used to compare.\r\n// If left out then the innerText is first taken for the cell and then the\r\n// fGetValueFromString is used to convert that string the desired value and type\r\n\r\nSortableTable.prototype.addSortType = function (sType, fGetValueFromString, fCompareFunction, fGetRowValue) {\r\n\tthis._sortTypeInfo[sType] = {\r\n\t\ttype:\t\t\t\tsType,\r\n\t\tgetValueFromString:\tfGetValueFromString || SortableTable.idFunction,\r\n\t\tcompare:\t\t\tfCompareFunction || SortableTable.basicCompare,\r\n\t\tgetRowValue:\t\tfGetRowValue\r\n\t};\r\n};\r\n\r\n// this removes the sort type from all instances of SortableTable\r\nSortableTable.prototype.removeSortType = function (sType) {\r\n\tdelete this._sortTypeInfo[sType];\r\n};\r\n\r\nSortableTable.basicCompare = function compare(n1, n2) {\r\n\tif (n1.value < n2.value)\r\n\t\treturn -1;\r\n\tif (n2.value < n1.value)\r\n\t\treturn 1;\r\n\treturn 0;\r\n};\r\n\r\nSortableTable.idFunction = function (x) {\r\n\treturn x;\r\n};\r\n\r\nSortableTable.toUpperCase = function (s) {\r\n\treturn s.toUpperCase();\r\n};\r\n\r\nSortableTable.toDate = function (s) {\r\n\tvar parts = s.split("-");\r\n\tvar d = new Date(0);\r\n\td.setFullYear(parts[0]);\r\n\td.setDate(parts[2]);\r\n\td.setMonth(parts[1] - 1);\r\n\treturn d.valueOf();\r\n};\r\n\r\n\r\n// add sort types\r\nSortableTable.prototype.addSortType("Number", Number);\r\nSortableTable.prototype.addSortType("CaseInsensitiveString", SortableTable.toUpperCase);\r\nSortableTable.prototype.addSortType("Date", SortableTable.toDate);\r\nSortableTable.prototype.addSortType("String");\r\n// None is a special case\r\n'},449:function(e,t){e.exports=function(e){function log(e){"undefined"!=typeof console&&(console.error||console.log)("[Script Loader]",e)}try{"undefined"!=typeof execScript&&function isIE(){return"undefined"!=typeof attachEvent&&"undefined"==typeof addEventListener}()?execScript(e):"undefined"!=typeof eval?eval.call(null,e):log("EvalError: No eval function available")}catch(e){log(e)}}},450:function(e,t,n){n(449)(n(448))},451:function(e,t){function formatter(e){if((e=e||{}).negativeType=e.negativeType||("R"===e.negative?"right":"left"),"string"!=typeof e.negativeLeftSymbol)switch(e.negativeType){case"left":e.negativeLeftSymbol="-";break;case"brackets":e.negativeLeftSymbol="(";break;default:e.negativeLeftSymbol=""}if("string"!=typeof e.negativeRightSymbol)switch(e.negativeType){case"right":e.negativeRightSymbol="-";break;case"brackets":e.negativeRightSymbol=")";break;default:e.negativeRightSymbol=""}function format(t,n){if(n=n||{},!t&&0!==t)return"";var r=[],i="-"===(t=""+t).charAt(0);return t=t.replace(/^\-/g,""),e.negativeLeftOut||n.noUnits||r.push(e.prefix),i&&r.push(e.negativeLeftSymbol),e.negativeLeftOut&&!n.noUnits&&r.push(e.prefix),t=t.split("."),null!=e.round&&function round(e,t){if(e[1]&&t>=0&&e[1].length>t){var n=e[1].slice(0,t);if(+e[1].substr(t,1)>=5){for(var r="";"0"===n.charAt(0);)r+="0",n=n.substr(1);(n=r+(n=+n+1+"")).length>t&&(e[0]=+e[0]+ +n.charAt(0)+"",n=n.substring(1))}e[1]=n}return e}(t,e.round),null!=e.truncate&&(t[1]=function truncate(e,t){e&&(e+="");return e&&e.length>t?e.substr(0,t):e}(t[1],e.truncate)),e.padLeft>0&&(t[0]=function padLeft(e,t){e+="";var n=[];for(;n.length+e.length0&&(t[1]=function padRight(e,t){e?e+="":e="";var n=[];for(;n.length+e.length 0) {\r\n let triggers = adpt.triggerIds;\r\n cells = [];\r\n l = triggers.length;\r\n for (let j = 0; j < l; j++) {\r\n cells.push(elm(triggers[j]));\r\n }\r\n } else {\r\n if (!this.tHead) {\r\n return;\r\n }\r\n cells = stt.tHead.rows[stt.headersRow].cells;\r\n l = cells.length;\r\n }\r\n for (let i = 0; i < l; i++) {\r\n let cell = cells[i];\r\n if (!cell) {\r\n continue;\r\n }\r\n let cellAttr = cell.getAttribute('_sortType');\r\n if (cellAttr !== null && cellAttr !== 'None') {\r\n img = cell.lastChild || cell;\r\n if (img.nodeName.toLowerCase() !== 'img') {\r\n img = createElm('img',\r\n ['src', adpt.imgPath + adpt.imgBlank]);\r\n cell.appendChild(img);\r\n }\r\n if (i === stt.sortColumn) {\r\n img.className = adpt.imgClassName + ' ' +\r\n (this.descending ?\r\n adpt.imgDescClassName :\r\n adpt.imgAscClassName);\r\n } else {\r\n img.className = adpt.imgClassName;\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Overrides getRowValue for custom key value feature\r\n * @param {Object} oRow Row element\r\n * @param {String} sType\r\n * @param {Number} nColumn\r\n * @return {String}\r\n */\r\n SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\r\n let stt = this;\r\n // if we have defined a custom getRowValue use that\r\n let sortTypeInfo = stt._sortTypeInfo[sType];\r\n if (sortTypeInfo && sortTypeInfo.getRowValue) {\r\n return sortTypeInfo.getRowValue(oRow, nColumn);\r\n }\r\n let c = oRow.cells[nColumn];\r\n let s = SortableTable.getInnerText(c);\r\n return stt.getValueFromString(s, sType);\r\n };\r\n\r\n /**\r\n * Overrides getInnerText in order to avoid Firefox unexpected sorting\r\n * behaviour with untrimmed text elements\r\n * @param {Object} cell DOM element\r\n * @return {String} DOM element inner text\r\n */\r\n SortableTable.getInnerText = function (cell) {\r\n if (!cell) {\r\n return;\r\n }\r\n if (cell.getAttribute(adpt.customKey)) {\r\n return cell.getAttribute(adpt.customKey);\r\n } else {\r\n return tf.getCellValue(cell);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Adds a sort type\r\n */\r\n addSortType(...args) {\r\n // Extract the arguments\r\n let [id, caster, sorter, getRowValue] = args;\r\n SortableTable.prototype.addSortType(id, caster, sorter, getRowValue);\r\n }\r\n\r\n /**\r\n * Sets the sort types on a column basis\r\n * @private\r\n */\r\n setSortTypes() {\r\n let tf = this.tf,\r\n sortTypes = this.sortTypes,\r\n _sortTypes = [];\r\n\r\n tf.eachCol((i) => {\r\n let colType;\r\n if (sortTypes[i]) {\r\n colType = sortTypes[i];\r\n if (isObj(colType)) {\r\n if (colType.type === DATE) {\r\n colType = this._addDateType(i, sortTypes);\r\n }\r\n else if (colType.type === FORMATTED_NUMBER) {\r\n let decimal = colType.decimal || tf.decimalSeparator;\r\n colType = this._addNumberType(i, decimal);\r\n }\r\n } else {\r\n colType = colType.toLowerCase();\r\n if (colType === DATE) {\r\n colType = this._addDateType(i, sortTypes);\r\n }\r\n else if (colType === FORMATTED_NUMBER ||\r\n colType === NUMBER) {\r\n colType = this._addNumberType(i, tf.decimalSeparator);\r\n }\r\n else if (colType === NONE) {\r\n // TODO: normalise 'none' vs 'None'\r\n colType = 'None';\r\n }\r\n }\r\n } else {\r\n colType = STRING;\r\n }\r\n _sortTypes.push(colType);\r\n });\r\n\r\n //Public TF method to add sort type\r\n\r\n //Custom sort types\r\n this.addSortType('caseinsensitivestring', SortableTable.toUpperCase);\r\n this.addSortType(STRING);\r\n this.addSortType(IP_ADDRESS, ipAddress, sortIP);\r\n\r\n this.stt = new SortableTable(tf.dom(), _sortTypes);\r\n\r\n /*** external table headers adapter ***/\r\n if (this.asyncSort && this.triggerIds.length > 0) {\r\n let triggers = this.triggerIds;\r\n for (let j = 0; j < triggers.length; j++) {\r\n if (triggers[j] === null) {\r\n continue;\r\n }\r\n let trigger = elm(triggers[j]);\r\n if (trigger) {\r\n trigger.style.cursor = 'pointer';\r\n\r\n addEvt(trigger, 'click', (evt) => {\r\n let elm = evt.target;\r\n if (!this.tf.sort) {\r\n return;\r\n }\r\n this.stt.asyncSort(triggers.indexOf(elm.id));\r\n });\r\n trigger.setAttribute('_sortType', _sortTypes[j]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n _addDateType(colIndex, types) {\r\n let tf = this.tf;\r\n let dateType = tf.feature('dateType');\r\n let locale = dateType.getOptions(colIndex, types).locale || tf.locale;\r\n let colType = `${DATE}-${locale}`;\r\n\r\n this.addSortType(colType, (value) => {\r\n let parsedDate = dateType.parse(value, locale);\r\n // Invalid date defaults to Wed Feb 04 -768 11:00:00\r\n return isNaN(+parsedDate) ? new Date(-86400000000000) : parsedDate;\r\n });\r\n return colType;\r\n }\r\n\r\n _addNumberType(colIndex, decimal) {\r\n let colType = `${FORMATTED_NUMBER}${decimal === '.' ? '' : '-custom'}`;\r\n\r\n this.addSortType(colType, (value) => {\r\n return parseNb(value, decimal);\r\n });\r\n return colType;\r\n }\r\n\r\n /**\r\n * Remove extension\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n this.emitter.off(['sort'], bound(this.sortByColumnIndexHandler, this));\r\n this.sorted = false;\r\n this.stt.destroy();\r\n\r\n let ids = tf.getFiltersId();\r\n for (let idx = 0; idx < ids.length; idx++) {\r\n let header = tf.getHeaderElement(idx);\r\n let img = tag(header, 'img');\r\n\r\n if (img.length === 1) {\r\n header.removeChild(img[0]);\r\n }\r\n }\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\r\n//Converters\r\nfunction ipAddress(value) {\r\n let vals = value.split('.');\r\n for (let x in vals) {\r\n let val = vals[x];\r\n while (3 > val.length) {\r\n val = '0' + val;\r\n }\r\n vals[x] = val;\r\n }\r\n return vals.join('.');\r\n}\r\n\r\nfunction sortIP(a, b) {\r\n let aa = ipAddress(a.value.toLowerCase());\r\n let bb = ipAddress(b.value.toLowerCase());\r\n if (aa === bb) {\r\n return 0;\r\n } else if (aa < bb) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n}\r\n","import {Feature} from '../../feature';\r\nimport {tag} from '../../dom';\r\nimport {INPUT} from '../../const';\r\nimport {defaultsStr} from '../../settings';\r\nimport {root} from '../../root';\r\n\r\nconst INSTANTIATION_ERROR = `Failed to instantiate EditTable object.\r\n \\n\"ezEditTable\" dependency not found.`;\r\n\r\n/**\r\n * Adapter module for ezEditTable, an external library providing advanced\r\n * grid features (selection and edition):\r\n * http://codecanyon.net/item/ezedittable-enhance-html-tables/2425123?ref=koalyptus\r\n */\r\nexport default class AdapterEzEditTable extends Feature {\r\n\r\n /**\r\n * Creates an instance of AdapterEzEditTable\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} cfg Configuration options for ezEditTable library\r\n */\r\n constructor(tf, cfg) {\r\n super(tf, cfg.name);\r\n\r\n /**\r\n * Module description\r\n * @type {String}\r\n */\r\n this.desc = defaultsStr(cfg.description, 'ezEditTable adapter');\r\n\r\n /**\r\n * Filename of ezEditTable library\r\n * @type {String}\r\n */\r\n this.filename = defaultsStr(cfg.filename, 'ezEditTable.js');\r\n\r\n /**\r\n * Path to ezEditTable library\r\n * @type {String}\r\n */\r\n this.vendorPath = cfg.vendor_path;\r\n\r\n /**\r\n * Load ezEditTable stylesheet\r\n * @type {Boolean}\r\n */\r\n this.loadStylesheet = Boolean(cfg.load_stylesheet);\r\n\r\n /**\r\n * Path to ezEditTable stylesheet\r\n * @type {String}\r\n */\r\n this.stylesheet = defaultsStr(cfg.stylesheet,\r\n this.vendorPath + 'ezEditTable.css');\r\n\r\n /**\r\n * Name of ezEditTable stylesheet\r\n * @type {String}\r\n */\r\n this.stylesheetName = defaultsStr(cfg.stylesheet_name,\r\n 'ezEditTableCss');\r\n\r\n // Enable the ezEditTable's scroll into view behaviour if grid layout on\r\n cfg.scroll_into_view = cfg.scroll_into_view === false ?\r\n false : tf.gridLayout;\r\n\r\n /**\r\n * ezEditTable instance\r\n * @type {EditTable}\r\n * @private\r\n */\r\n this._ezEditTable = null;\r\n\r\n /**\r\n * ezEditTable configuration\r\n * @private\r\n */\r\n this.cfg = cfg;\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Conditionally load ezEditTable library and set advanced grid\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n if (root.EditTable) {\r\n this._setAdvancedGrid();\r\n } else {\r\n let path = this.vendorPath + this.filename;\r\n tf.import(this.filename, path, () => this._setAdvancedGrid());\r\n }\r\n if (this.loadStylesheet && !tf.isImported(this.stylesheet, 'link')) {\r\n tf.import(this.stylesheetName, this.stylesheet, null, 'link');\r\n }\r\n\r\n // TODO: hack to prevent ezEditTable enter key event hijaking.\r\n // Needs to be fixed in the vendor's library\r\n this.emitter.on(['filter-focus', 'filter-blur'],\r\n () => this._toggleForInputFilter());\r\n\r\n /**\r\n * @inherited\r\n */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Instantiate ezEditTable component for advanced grid features\r\n * @private\r\n */\r\n _setAdvancedGrid() {\r\n let tf = this.tf;\r\n\r\n //start row for EditTable constructor needs to be calculated\r\n let startRow,\r\n cfg = this.cfg,\r\n thead = tag(tf.dom(), 'thead');\r\n\r\n //if thead exists and startRow not specified, startRow is calculated\r\n //automatically by EditTable\r\n if (thead.length > 0 && !cfg.startRow) {\r\n startRow = undefined;\r\n }\r\n //otherwise startRow config property if any or TableFilter refRow\r\n else {\r\n startRow = cfg.startRow || tf.refRow;\r\n }\r\n\r\n cfg.base_path = cfg.base_path || tf.basePath + 'ezEditTable/';\r\n let editable = cfg.editable;\r\n let selectable = cfg.selection;\r\n\r\n if (selectable) {\r\n cfg.default_selection = cfg.default_selection || 'row';\r\n }\r\n //CSS Styles\r\n cfg.active_cell_css = cfg.active_cell_css || 'ezETSelectedCell';\r\n\r\n let _lastValidRowIndex = 0;\r\n let _lastRowIndex = 0;\r\n\r\n if (selectable) {\r\n //Row navigation needs to be calculated according to TableFilter's\r\n //validRowsIndex array\r\n let onAfterSelection = function (et, selectedElm, e) {\r\n let slc = et.Selection;\r\n //Next valid filtered row needs to be selected\r\n let doSelect = function (nextRowIndex) {\r\n if (et.defaultSelection === 'row') {\r\n /* eslint-disable */\r\n slc.SelectRowByIndex(nextRowIndex);\r\n /* eslint-enable */\r\n } else {\r\n /* eslint-disable */\r\n et.ClearSelections();\r\n /* eslint-enable */\r\n let cellIndex = selectedElm.cellIndex,\r\n row = tf.dom().rows[nextRowIndex];\r\n if (et.defaultSelection === 'both') {\r\n /* eslint-disable */\r\n slc.SelectRowByIndex(nextRowIndex);\r\n /* eslint-enable */\r\n }\r\n if (row) {\r\n /* eslint-disable */\r\n slc.SelectCell(row.cells[cellIndex]);\r\n /* eslint-enable */\r\n }\r\n }\r\n //Table is filtered\r\n if (tf.validRowsIndex.length !== tf.getRowsNb()) {\r\n let r = tf.dom().rows[nextRowIndex];\r\n if (r) {\r\n r.scrollIntoView(false);\r\n }\r\n if (cell) {\r\n if (cell.cellIndex === (tf.getCellsNb() - 1) &&\r\n tf.gridLayout) {\r\n tf.tblCont.scrollLeft = 100000000;\r\n }\r\n else if (cell.cellIndex === 0 && tf.gridLayout) {\r\n tf.tblCont.scrollLeft = 0;\r\n } else {\r\n cell.scrollIntoView(false);\r\n }\r\n }\r\n }\r\n };\r\n\r\n //table is not filtered\r\n if (!tf.validRowsIndex) {\r\n return;\r\n }\r\n let validIndexes = tf.validRowsIndex,\r\n validIdxLen = validIndexes.length,\r\n row = et.defaultSelection !== 'row' ?\r\n selectedElm.parentNode : selectedElm,\r\n //cell for default_selection = 'both' or 'cell'\r\n cell = selectedElm.nodeName === 'TD' ? selectedElm : null,\r\n /* eslint-disable */\r\n keyCode = e !== undefined ? et.Event.GetKey(e) : 0,\r\n /* eslint-enable */\r\n isRowValid = validIndexes.indexOf(row.rowIndex) !== -1,\r\n nextRowIndex,\r\n paging = tf.feature('paging'),\r\n //pgup/pgdown keys\r\n d = keyCode === 34 || keyCode === 33 ?\r\n (paging && paging.pageLength || et.nbRowsPerPage) :\r\n 1;\r\n\r\n //If next row is not valid, next valid filtered row needs to be\r\n //calculated\r\n if (!isRowValid) {\r\n //Selection direction up/down\r\n if (row.rowIndex > _lastRowIndex) {\r\n //last row\r\n if (row.rowIndex >= validIndexes[validIdxLen - 1]) {\r\n nextRowIndex = validIndexes[validIdxLen - 1];\r\n } else {\r\n let calcRowIndex = (_lastValidRowIndex + d);\r\n if (calcRowIndex > (validIdxLen - 1)) {\r\n nextRowIndex = validIndexes[validIdxLen - 1];\r\n } else {\r\n nextRowIndex = validIndexes[calcRowIndex];\r\n }\r\n }\r\n } else {\r\n //first row\r\n if (row.rowIndex <= validIndexes[0]) {\r\n nextRowIndex = validIndexes[0];\r\n } else {\r\n let v = validIndexes[_lastValidRowIndex - d];\r\n nextRowIndex = v ? v : validIndexes[0];\r\n }\r\n }\r\n _lastRowIndex = row.rowIndex;\r\n doSelect(nextRowIndex);\r\n } else {\r\n //If filtered row is valid, special calculation for\r\n //pgup/pgdown keys\r\n if (keyCode !== 34 && keyCode !== 33) {\r\n _lastValidRowIndex = validIndexes.indexOf(row.rowIndex);\r\n _lastRowIndex = row.rowIndex;\r\n } else {\r\n if (keyCode === 34) { //pgdown\r\n //last row\r\n if ((_lastValidRowIndex + d) <= (validIdxLen - 1)) {\r\n nextRowIndex = validIndexes[\r\n _lastValidRowIndex + d];\r\n } else {\r\n nextRowIndex = [validIdxLen - 1];\r\n }\r\n } else { //pgup\r\n //first row\r\n if ((_lastValidRowIndex - d) <= validIndexes[0]) {\r\n nextRowIndex = validIndexes[0];\r\n } else {\r\n nextRowIndex = validIndexes[\r\n _lastValidRowIndex - d];\r\n }\r\n }\r\n _lastRowIndex = nextRowIndex;\r\n _lastValidRowIndex = validIndexes.indexOf(nextRowIndex);\r\n doSelect(nextRowIndex);\r\n }\r\n }\r\n };\r\n\r\n //Page navigation has to be enforced whenever selected row is out of\r\n //the current page range\r\n let onBeforeSelection = function (et, selectedElm) {\r\n let row = et.defaultSelection !== 'row' ?\r\n selectedElm.parentNode : selectedElm;\r\n if (tf.paging) {\r\n if (tf.feature('paging').nbPages > 1) {\r\n let paging = tf.feature('paging');\r\n //page length is re-assigned in case it has changed\r\n et.nbRowsPerPage = paging.pageLength;\r\n let validIndexes = tf.validRowsIndex,\r\n validIdxLen = validIndexes.length,\r\n pagingEndRow = parseInt(paging.startPagingRow, 10) +\r\n parseInt(paging.pageLength, 10);\r\n let rowIndex = row.rowIndex;\r\n\r\n if ((rowIndex === validIndexes[validIdxLen - 1]) &&\r\n paging.currentPageNb !== paging.nbPages) {\r\n paging.setPage('last');\r\n }\r\n else if ((rowIndex === validIndexes[0]) &&\r\n paging.currentPageNb !== 1) {\r\n paging.setPage('first');\r\n }\r\n else if (rowIndex > validIndexes[pagingEndRow - 1] &&\r\n rowIndex < validIndexes[validIdxLen - 1]) {\r\n paging.setPage('next');\r\n }\r\n else if (\r\n rowIndex < validIndexes[paging.startPagingRow] &&\r\n rowIndex > validIndexes[0]) {\r\n paging.setPage('previous');\r\n }\r\n }\r\n }\r\n };\r\n\r\n //Selected row needs to be visible when paging is activated\r\n if (tf.paging) {\r\n tf.feature('paging').onAfterChangePage = function (paging) {\r\n let advGrid = paging.tf.extension('advancedGrid');\r\n let et = advGrid._ezEditTable;\r\n let slc = et.Selection;\r\n /* eslint-disable */\r\n let row = slc.GetActiveRow();\r\n /* eslint-enable */\r\n if (row) {\r\n row.scrollIntoView(false);\r\n }\r\n /* eslint-disable */\r\n let cell = slc.GetActiveCell();\r\n /* eslint-enable */\r\n if (cell) {\r\n cell.scrollIntoView(false);\r\n }\r\n };\r\n }\r\n\r\n //Rows navigation when rows are filtered is performed with the\r\n //EditTable row selection callback events\r\n if (cfg.default_selection === 'row') {\r\n let fnB = cfg.on_before_selected_row;\r\n cfg.on_before_selected_row = function () {\r\n var args = arguments;\r\n onBeforeSelection(args[0], args[1], args[2]);\r\n if (fnB) {\r\n fnB.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n let fnA = cfg.on_after_selected_row;\r\n cfg.on_after_selected_row = function () {\r\n var args = arguments;\r\n onAfterSelection(args[0], args[1], args[2]);\r\n if (fnA) {\r\n fnA.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n } else {\r\n let fnD = cfg.on_before_selected_cell;\r\n cfg.on_before_selected_cell = function () {\r\n var args = arguments;\r\n onBeforeSelection(args[0], args[1], args[2]);\r\n if (fnD) {\r\n fnD.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n let fnC = cfg.on_after_selected_cell;\r\n cfg.on_after_selected_cell = function () {\r\n var args = arguments;\r\n onAfterSelection(args[0], args[1], args[2]);\r\n if (fnC) {\r\n fnC.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n }\r\n }\r\n if (editable) {\r\n //Added or removed rows, TF rows number needs to be re-calculated\r\n let fnE = cfg.on_added_dom_row;\r\n cfg.on_added_dom_row = function () {\r\n var args = arguments;\r\n tf.nbFilterableRows++;\r\n if (!tf.paging) {\r\n tf.emitter.emit('rows-changed', tf, this);\r\n } else {\r\n tf.nbFilterableRows++;\r\n tf.paging = false;\r\n tf.feature('paging').destroy();\r\n tf.feature('paging').reset();\r\n }\r\n if (tf.alternateRows) {\r\n tf.feature('alternateRows').init();\r\n }\r\n if (fnE) {\r\n fnE.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n if (cfg.actions && cfg.actions['delete']) {\r\n let fnF = cfg.actions['delete'].on_after_submit;\r\n cfg.actions['delete'].on_after_submit = function () {\r\n var args = arguments;\r\n tf.nbFilterableRows--;\r\n if (!tf.paging) {\r\n tf.emitter.emit('rows-changed', tf, this);\r\n } else {\r\n tf.nbFilterableRows--;\r\n tf.paging = false;\r\n tf.feature('paging').destroy();\r\n tf.feature('paging').reset(false);\r\n }\r\n if (tf.alternateRows) {\r\n tf.feature('alternateRows').init();\r\n }\r\n if (fnF) {\r\n fnF.call(null, args[0], args[1]);\r\n }\r\n };\r\n }\r\n }\r\n\r\n try {\r\n /* eslint-disable */\r\n this._ezEditTable = new EditTable(tf.id, cfg, startRow);\r\n this._ezEditTable.Init();\r\n /* eslint-enable */\r\n } catch (e) { throw new Error(INSTANTIATION_ERROR); }\r\n\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset advanced grid when previously removed\r\n */\r\n reset() {\r\n let ezEditTable = this._ezEditTable;\r\n if (ezEditTable) {\r\n if (this.cfg.selection) {\r\n /* eslint-disable */\r\n ezEditTable.Selection.Set();\r\n /* eslint-enable */\r\n }\r\n if (this.cfg.editable) {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Set();\r\n /* eslint-enable */\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Toggle behaviour\r\n */\r\n toggle() {\r\n let ezEditTable = this._ezEditTable;\r\n if (ezEditTable.editable) {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Remove();\r\n /* eslint-enable */\r\n } else {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Set();\r\n /* eslint-enable */\r\n }\r\n if (ezEditTable.selection) {\r\n /* eslint-disable */\r\n ezEditTable.Selection.Remove();\r\n /* eslint-enable */\r\n } else {\r\n /* eslint-disable */\r\n ezEditTable.Selection.Set();\r\n /* eslint-enable */\r\n }\r\n }\r\n\r\n _toggleForInputFilter() {\r\n let tf = this.tf;\r\n if (!tf.getActiveFilterId()) {\r\n return;\r\n }\r\n let colIndex = tf.getColumnIndexFromFilterId(tf.getActiveFilterId());\r\n let filterType = tf.getFilterType(colIndex);\r\n if (filterType === INPUT) {\r\n this.toggle();\r\n }\r\n }\r\n\r\n /**\r\n * Remove advanced grid\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n let ezEditTable = this._ezEditTable;\r\n if (ezEditTable) {\r\n if (this.cfg.selection) {\r\n /* eslint-disable */\r\n ezEditTable.Selection.ClearSelections();\r\n ezEditTable.Selection.Remove();\r\n /* eslint-enable */\r\n }\r\n if (this.cfg.editable) {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Remove();\r\n /* eslint-enable */\r\n }\r\n }\r\n\r\n this.emitter.off(['filter-focus', 'filter-blur'],\r\n () => this._toggleForInputFilter());\r\n this.initialized = false;\r\n }\r\n}\r\n","import AdapterSortableTable from './adapterSortabletable';\r\nimport {root} from '../../root';\r\n\r\nif (!root.SortableTable) {\r\n require('script-loader!sortabletable');\r\n}\r\n\r\nexport default AdapterSortableTable;\r\n","import {Feature} from '../../feature';\r\nimport {createElm, removeElm, elm} from '../../dom';\r\nimport {EMPTY_FN, isNull} from '../../types';\r\nimport {addEvt} from '../../event';\r\nimport {\r\n defaultsBool, defaultsStr, defaultsFn, defaultsNb,\r\n} from '../../settings';\r\nimport {RIGHT} from '../../modules/toolbar';\r\n\r\n/**\r\n * Filters Visibility extension\r\n */\r\nexport default class FiltersVisibility extends Feature {\r\n\r\n /**\r\n * Creates an instance of FiltersVisibility\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} Configuration object\r\n */\r\n constructor(tf, f) {\r\n super(tf, f.name);\r\n\r\n /**\r\n * Module name\r\n * @type {String}\r\n */\r\n this.name = f.name;\r\n\r\n /**\r\n * Module description\r\n * @type {String}\r\n */\r\n this.desc = defaultsStr(f.description,\r\n 'Filters row visibility manager');\r\n\r\n /**\r\n * Extension's stylesheet filename\r\n * @type {String}\r\n */\r\n this.stylesheet = defaultsStr(f.stylesheet , 'filtersVisibility.css');\r\n\r\n /**\r\n * Expand icon filename\r\n * @type {String}\r\n */\r\n this.icnExpand = defaultsStr(f.expand_icon_name, 'icn_exp.png');\r\n\r\n /**\r\n * Collapse icon filename\r\n * @type {String}\r\n */\r\n this.icnCollapse = defaultsStr(f.collapse_icon_name, 'icn_clp.png');\r\n\r\n /**\r\n * Main container element\r\n * @private\r\n */\r\n this.contEl = null;\r\n\r\n /**\r\n * Button element\r\n * @private\r\n */\r\n this.btnEl = null;\r\n\r\n /**\r\n * Expand icon HTML\r\n * @private\r\n */\r\n this.icnExpandHtml = '\"Expand';\r\n\r\n /**\r\n * Collapse icon HTML\r\n * @private\r\n */\r\n this.icnCollapseHtml = '\"Collapse';\r\n\r\n /**\r\n * Default text\r\n * @private\r\n */\r\n this.defaultText = 'Toggle filters';\r\n\r\n /**\r\n * ID of main container element\r\n * @type {String}\r\n */\r\n this.targetId = f.target_id || null;\r\n\r\n /**\r\n * Enable expand/collapse icon, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.enableIcon = defaultsBool(f.enable_icon, true);\r\n\r\n /**\r\n * Custom text for button\r\n * @type {String}\r\n */\r\n this.btnText = defaultsStr(f.btn_text, '');\r\n\r\n /**\r\n * Collapse button HTML\r\n * @private\r\n */\r\n this.collapseBtnHtml = this.enableIcon ?\r\n this.icnCollapseHtml + this.btnText :\r\n this.btnText || this.defaultText;\r\n\r\n /**\r\n * Expand button HTML\r\n * @private\r\n */\r\n this.expandBtnHtml = this.enableIcon ?\r\n this.icnExpandHtml + this.btnText :\r\n this.btnText || this.defaultText;\r\n\r\n /**\r\n * Button's custom HTML\r\n * @type {String}\r\n */\r\n this.btnHtml = defaultsStr(f.btn_html, null);\r\n\r\n /**\r\n * Css class for expand/collapse filters button\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class, 'btnExpClpFlt');\r\n\r\n /**\r\n * Css class for main container\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.cont_css_class, 'expClpFlt');\r\n\r\n /**\r\n * Filters row index\r\n * @type {Number}\r\n */\r\n this.filtersRowIndex = defaultsNb(f.filters_row_index,\r\n tf.getFiltersRowIndex());\r\n\r\n /**\r\n * Make filters visible at initialization, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.visibleAtStart = defaultsNb(f.visible_at_start, true);\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\r\n\r\n /**\r\n * Callback fired before filters row is shown\r\n * @type {Function}\r\n */\r\n this.onBeforeShow = defaultsFn(f.on_before_show, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after filters row is shown\r\n * @type {Function}\r\n */\r\n this.onAfterShow = defaultsFn(f.on_after_show, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before filters row is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeHide = defaultsFn(f.on_before_hide, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after filters row is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterHide = defaultsFn(f.on_after_hide, EMPTY_FN);\r\n\r\n //Import extension's stylesheet\r\n tf.import(f.name + 'Style', tf.getStylePath() + this.stylesheet, null,\r\n 'link');\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initialise extension\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-extension', this,\r\n !isNull(this.targetId));\r\n\r\n this.buildUI();\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.on(['show-filters'], (tf, visible) => this.show(visible));\r\n this.emitter.emit('filters-visibility-initialized', this.tf, this);\r\n this.emitter.emit('extension-initialized', this);\r\n }\r\n\r\n /**\r\n * Build UI elements\r\n */\r\n buildUI() {\r\n let tf = this.tf;\r\n let span = createElm('span');\r\n span.className = this.contCssClass;\r\n\r\n // Container element (rdiv or custom element)\r\n let targetEl = !this.targetId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.targetId);\r\n\r\n if (!this.targetId) {\r\n let firstChild = targetEl.firstChild;\r\n firstChild.parentNode.insertBefore(span, firstChild);\r\n } else {\r\n targetEl.appendChild(span);\r\n }\r\n\r\n let btn;\r\n if (!this.btnHtml) {\r\n btn = createElm('a', ['href', 'javascript:void(0);']);\r\n btn.className = this.btnCssClass;\r\n btn.title = this.btnText || this.defaultText;\r\n btn.innerHTML = this.collapseBtnHtml;\r\n span.appendChild(btn);\r\n } else { // Custom html\r\n span.innerHTML = this.btnHtml;\r\n btn = span.firstChild;\r\n }\r\n\r\n addEvt(btn, 'click', () => this.toggle());\r\n\r\n this.contEl = span;\r\n this.btnEl = btn;\r\n\r\n if (!this.visibleAtStart) {\r\n this.toggle();\r\n }\r\n }\r\n\r\n /**\r\n * Toggle filters visibility\r\n */\r\n toggle() {\r\n let tf = this.tf;\r\n let tbl = tf.gridLayout ? tf.feature('gridLayout').headTbl : tf.dom();\r\n let fltRow = tbl.rows[this.filtersRowIndex];\r\n let isDisplayed = fltRow.style.display === '';\r\n\r\n this.show(!isDisplayed);\r\n }\r\n\r\n /**\r\n * Show or hide filters\r\n *\r\n * @param {boolean} [visible=true] Visibility flag\r\n */\r\n show(visible = true) {\r\n let tf = this.tf;\r\n let tbl = tf.gridLayout ? tf.feature('gridLayout').headTbl : tf.dom();\r\n let fltRow = tbl.rows[this.filtersRowIndex];\r\n\r\n if (visible) {\r\n this.onBeforeShow(this);\r\n }\r\n if (!visible) {\r\n this.onBeforeHide(this);\r\n }\r\n\r\n fltRow.style.display = visible ? '' : 'none';\r\n if (this.enableIcon && !this.btnHtml) {\r\n this.btnEl.innerHTML = visible ?\r\n this.collapseBtnHtml : this.expandBtnHtml;\r\n }\r\n\r\n if (visible) {\r\n this.onAfterShow(this);\r\n }\r\n if (!visible) {\r\n this.onAfterHide(this);\r\n }\r\n\r\n this.emitter.emit('filters-toggled', tf, this, visible);\r\n }\r\n\r\n /**\r\n * Destroy the UI\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.off(['show-filters'], (tf, visible) => this.show(visible));\r\n\r\n this.btnEl.innerHTML = '';\r\n removeElm(this.btnEl);\r\n this.btnEl = null;\r\n\r\n this.contEl.innerHTML = '';\r\n removeElm(this.contEl);\r\n this.contEl = null;\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n","import {Feature} from '../../feature';\r\nimport {\r\n addClass, removeClass, createCheckItem, createElm, elm, removeElm,\r\n getText, tag\r\n} from '../../dom';\r\nimport {isUndef, EMPTY_FN, isNull} from '../../types';\r\nimport {addEvt, targetEvt, removeEvt} from '../../event';\r\nimport {root} from '../../root';\r\nimport {NONE} from '../../const';\r\nimport {\r\n defaultsBool, defaultsStr, defaultsFn, defaultsNb, defaultsArr\r\n} from '../../settings';\r\nimport {RIGHT} from '../../modules/toolbar';\r\n\r\n/**\r\n * Columns Visibility extension\r\n */\r\nexport default class ColsVisibility extends Feature {\r\n\r\n /**\r\n * Creates an instance of ColsVisibility\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} Configuration object\r\n */\r\n constructor(tf, f) {\r\n super(tf, f.name);\r\n\r\n // Configuration object\r\n let cfg = this.config;\r\n\r\n /**\r\n * Module name\r\n * @type {String}\r\n */\r\n this.name = f.name;\r\n\r\n /**\r\n * Module description\r\n * @type {String}\r\n */\r\n this.desc = defaultsStr(f.description, 'Columns visibility manager');\r\n\r\n /**\r\n * show/hide columns container element\r\n * @private\r\n */\r\n this.spanEl = null;\r\n\r\n /**\r\n * show/hide columns button element\r\n * @private\r\n */\r\n this.btnEl = null;\r\n\r\n /**\r\n * show/hide columns main container element\r\n * @private\r\n */\r\n this.contEl = null;\r\n\r\n /**\r\n * Enable tick to hide a column, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.tickToHide = defaultsBool(f.tick_to_hide, true);\r\n\r\n /**\r\n * Enable columns manager UI, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.manager = defaultsBool(f.manager, true);\r\n\r\n /**\r\n * Headers HTML table reference only if headers are external\r\n * @type {DOMElement}\r\n */\r\n this.headersTbl = f.headers_table || null;\r\n\r\n /**\r\n * Headers row index only if headers are external\r\n * @type {Number}\r\n */\r\n this.headersIndex = defaultsNb(f.headers_index, 1);\r\n\r\n /**\r\n * ID of main container element\r\n * @type {String}\r\n */\r\n this.contElTgtId = defaultsStr(f.container_target_id, null);\r\n\r\n /**\r\n * Alternative text for column headers in column manager UI\r\n * @type {Array}\r\n */\r\n this.headersText = defaultsArr(f.headers_text, []);\r\n\r\n /**\r\n * ID of button's container element\r\n * @type {String}\r\n */\r\n this.btnTgtId = defaultsStr(f.btn_target_id, null);\r\n\r\n /**\r\n * Button's text, defaults to Columns▼\r\n * @type {String}\r\n */\r\n this.btnText = defaultsStr(f.btn_text, 'Columns▼');\r\n\r\n /**\r\n * Button's inner HTML\r\n * @type {String}\r\n */\r\n this.btnHtml = defaultsStr(f.btn_html, null);\r\n\r\n /**\r\n * Css class for button\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class, 'colVis');\r\n\r\n /**\r\n * Columns manager UI close link text, defaults to 'Close'\r\n * @type {String}\r\n */\r\n this.btnCloseText = defaultsStr(f.btn_close_text, 'Close');\r\n\r\n /**\r\n * Columns manager UI close link HTML\r\n * @type {String}\r\n */\r\n this.btnCloseHtml = defaultsStr(f.btn_close_html, null);\r\n\r\n /**\r\n * Css for columns manager UI close link\r\n * @type {String}\r\n */\r\n this.btnCloseCssClass = defaultsStr(f.btn_close_css_class,\r\n this.btnCssClass);\r\n\r\n /**\r\n * Extension's stylesheet filename\r\n * @type {String}\r\n */\r\n this.stylesheet = defaultsStr(f.stylesheet, 'colsVisibility.css');\r\n\r\n /**\r\n * Css for columns manager UI span\r\n * @type {String}\r\n */\r\n this.spanCssClass = defaultsStr(f.span_css_class, 'colVisSpan');\r\n\r\n /**\r\n * Css for columns manager UI main container\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.cont_css_class, 'colVisCont');\r\n\r\n /**\r\n * Css for columns manager UI checklist (ul)\r\n * @type {String}\r\n */\r\n this.listCssClass = defaultsStr(cfg.list_css_class, 'cols_checklist');\r\n\r\n /**\r\n * Css for columns manager UI checklist item (li)\r\n * @type {String}\r\n */\r\n this.listItemCssClass = defaultsStr(cfg.checklist_item_css_class,\r\n 'cols_checklist_item');\r\n\r\n /**\r\n * Css for columns manager UI checklist item selected state (li)\r\n * @type {String}\r\n */\r\n this.listSlcItemCssClass = defaultsStr(\r\n cfg.checklist_selected_item_css_class,\r\n 'cols_checklist_slc_item'\r\n );\r\n\r\n /**\r\n * Text preceding the columns list, defaults to 'Hide' or 'Show'\r\n * depending on tick mode (tick_to_hide option)\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, this.tickToHide ? 'Hide: ' : 'Show: ');\r\n\r\n /**\r\n * List of columns indexes to be hidden at initialization\r\n * @type {Array}\r\n */\r\n this.atStart = defaultsArr(f.at_start, []);\r\n\r\n /**\r\n * Enable hover behaviour on columns manager button/link\r\n * @type {Boolean}\r\n */\r\n this.enableHover = Boolean(f.enable_hover);\r\n\r\n /**\r\n * Enable select all option, disabled by default\r\n * @type {Boolean}\r\n */\r\n this.enableTickAll = Boolean(f.enable_tick_all);\r\n\r\n /**\r\n * Text for select all option, defaults to 'Select all:'\r\n * @type {String}\r\n */\r\n this.tickAllText = defaultsStr(f.tick_all_text, 'Select all:');\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\r\n\r\n /**\r\n * List of indexes of hidden columns\r\n * @private\r\n */\r\n this.hiddenCols = [];\r\n\r\n /**\r\n * Bound mouseup wrapper\r\n * @private\r\n */\r\n this.boundMouseup = null;\r\n\r\n /**\r\n * Callback fired when the extension is initialized\r\n * @type {Function}\r\n */\r\n this.onLoaded = defaultsFn(f.on_loaded, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before the columns manager is opened\r\n * @type {Function}\r\n */\r\n this.onBeforeOpen = defaultsFn(f.on_before_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the columns manager is opened\r\n * @type {Function}\r\n */\r\n this.onAfterOpen = defaultsFn(f.on_after_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before the columns manager is closed\r\n * @type {Function}\r\n */\r\n this.onBeforeClose = defaultsFn(f.on_before_close, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the columns manager is closed\r\n * @type {Function}\r\n */\r\n this.onAfterClose = defaultsFn(f.on_after_close, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before a column is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeColHidden = defaultsFn(f.on_before_col_hidden, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a column is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterColHidden = defaultsFn(f.on_after_col_hidden, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before a column is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeColDisplayed = defaultsFn(f.on_before_col_displayed,\r\n EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a column is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterColDisplayed = defaultsFn(f.on_after_col_displayed,\r\n EMPTY_FN);\r\n\r\n //Grid layout support\r\n if (tf.gridLayout) {\r\n this.headersTbl = tf.feature('gridLayout').headTbl; //headers table\r\n this.headersIndex = 0; //headers index\r\n }\r\n\r\n //Loads extension stylesheet\r\n tf.import(f.name + 'Style', tf.getStylePath() + this.stylesheet, null,\r\n 'link');\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n let targetElm = targetEvt(evt);\r\n\r\n while (targetElm && targetElm !== this.contEl\r\n && targetElm !== this.btnEl) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== this.contEl && targetElm !== this.btnEl) {\r\n this.toggle();\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Toggle columns manager UI\r\n */\r\n toggle() {\r\n // ensure mouseup event handler is removed\r\n removeEvt(root, 'mouseup', this.boundMouseup);\r\n\r\n let contDisplay = this.contEl.style.display;\r\n\r\n if (contDisplay !== 'inline') {\r\n this.onBeforeOpen(this);\r\n }\r\n if (contDisplay === 'inline') {\r\n this.onBeforeClose(this);\r\n }\r\n\r\n this.contEl.style.display = contDisplay === 'inline' ?\r\n NONE : 'inline';\r\n\r\n if (contDisplay !== 'inline') {\r\n this.onAfterOpen(this);\r\n addEvt(root, 'mouseup', this.boundMouseup);\r\n }\r\n if (contDisplay === 'inline') {\r\n this.onAfterClose(this);\r\n }\r\n }\r\n\r\n /**\r\n * Check an item in columns manager UI\r\n * @private\r\n */\r\n checkItem(lbl) {\r\n let li = lbl.parentNode;\r\n if (!li || !lbl) {\r\n return;\r\n }\r\n let isChecked = lbl.firstChild.checked;\r\n let colIndex = lbl.firstChild.getAttribute('id').split('_')[1];\r\n colIndex = parseInt(colIndex, 10);\r\n if (isChecked) {\r\n addClass(li, this.listSlcItemCssClass);\r\n } else {\r\n removeClass(li, this.listSlcItemCssClass);\r\n }\r\n\r\n let hide = false;\r\n if ((this.tickToHide && isChecked) ||\r\n (!this.tickToHide && !isChecked)) {\r\n hide = true;\r\n }\r\n this.setHidden(colIndex, hide);\r\n }\r\n\r\n /**\r\n * Initializes ColsVisibility instance\r\n */\r\n init() {\r\n if (this.initialized || !this.manager) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-extension', this,\r\n !isNull(this.btnTgtId));\r\n\r\n this.emitter.on(['hide-column'],\r\n (tf, colIndex) => this.hideCol(colIndex));\r\n\r\n this.buildBtn();\r\n this.buildManager();\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.boundMouseup = this.onMouseup.bind(this);\r\n\r\n this.emitter.emit('columns-visibility-initialized', this.tf, this);\r\n this.emitter.emit('extension-initialized', this);\r\n\r\n // Hide columns at start at very end of initialization, do not move\r\n // as order is important\r\n this._hideAtStart();\r\n }\r\n\r\n /**\r\n * Build main button UI\r\n */\r\n buildBtn() {\r\n if (this.btnEl) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let span = createElm('span');\r\n span.className = this.spanCssClass;\r\n\r\n // Container element (rdiv or custom element)\r\n let targetEl = !this.btnTgtId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.btnTgtId);\r\n\r\n if (!this.btnTgtId) {\r\n let firstChild = targetEl.firstChild;\r\n firstChild.parentNode.insertBefore(span, firstChild);\r\n } else {\r\n targetEl.appendChild(span);\r\n }\r\n\r\n if (!this.btnHtml) {\r\n let btn = createElm('a', ['href', 'javascript:;']);\r\n btn.className = this.btnCssClass;\r\n btn.title = this.desc;\r\n\r\n btn.innerHTML = this.btnText;\r\n span.appendChild(btn);\r\n if (!this.enableHover) {\r\n addEvt(btn, 'click', (evt) => this.toggle(evt));\r\n } else {\r\n addEvt(btn, 'mouseover', (evt) => this.toggle(evt));\r\n }\r\n } else { // Custom html\r\n span.innerHTML = this.btnHtml;\r\n let colVisEl = span.firstChild;\r\n if (!this.enableHover) {\r\n addEvt(colVisEl, 'click', (evt) => this.toggle(evt));\r\n } else {\r\n addEvt(colVisEl, 'mouseover', (evt) => this.toggle(evt));\r\n }\r\n }\r\n\r\n this.spanEl = span;\r\n this.btnEl = this.spanEl.firstChild;\r\n\r\n this.onLoaded(this);\r\n }\r\n\r\n /**\r\n * Build columns manager UI\r\n */\r\n buildManager() {\r\n let tf = this.tf;\r\n\r\n let container = !this.contElTgtId ?\r\n createElm('div') :\r\n elm(this.contElTgtId);\r\n container.className = this.contCssClass;\r\n\r\n //Extension description\r\n let extNameLabel = createElm('p');\r\n extNameLabel.innerHTML = this.text;\r\n container.appendChild(extNameLabel);\r\n\r\n //Headers list\r\n let ul = createElm('ul');\r\n ul.className = this.listCssClass;\r\n\r\n let tbl = this.headersTbl || tf.dom();\r\n let headerIndex = this.headersTbl ?\r\n this.headersIndex : tf.getHeadersRowIndex();\r\n let headerRow = tbl.rows[headerIndex];\r\n\r\n //Tick all option\r\n if (this.enableTickAll) {\r\n let li = createCheckItem('col__' + tf.id, this.tickAllText,\r\n this.tickAllText);\r\n addClass(li, this.listItemCssClass);\r\n ul.appendChild(li);\r\n li.check.checked = !this.tickToHide;\r\n\r\n addEvt(li.check, 'click', () => {\r\n for (let h = 0; h < headerRow.cells.length; h++) {\r\n let itm = elm('col_' + h + '_' + tf.id);\r\n if (itm && li.check.checked !== itm.checked) {\r\n itm.click();\r\n itm.checked = li.check.checked;\r\n }\r\n }\r\n });\r\n }\r\n\r\n for (let i = 0; i < headerRow.cells.length; i++) {\r\n let cell = headerRow.cells[i];\r\n let cellText = this.headersText[i] || this._getHeaderText(cell);\r\n let liElm = createCheckItem('col_' + i + '_' + tf.id, cellText,\r\n cellText);\r\n addClass(liElm, this.listItemCssClass);\r\n if (!this.tickToHide) {\r\n addClass(liElm, this.listSlcItemCssClass);\r\n }\r\n ul.appendChild(liElm);\r\n if (!this.tickToHide) {\r\n liElm.check.checked = true;\r\n }\r\n\r\n addEvt(liElm.check, 'click', (evt) => {\r\n let elm = targetEvt(evt);\r\n let lbl = elm.parentNode;\r\n this.checkItem(lbl);\r\n });\r\n }\r\n\r\n //separator\r\n let p = createElm('p', ['align', 'center']);\r\n let btn;\r\n //Close link\r\n if (!this.btnCloseHtml) {\r\n btn = createElm('a', ['href', 'javascript:;']);\r\n btn.className = this.btnCloseCssClass;\r\n btn.innerHTML = this.btnCloseText;\r\n addEvt(btn, 'click', (evt) => this.toggle(evt));\r\n p.appendChild(btn);\r\n } else {\r\n p.innerHTML = this.btnCloseHtml;\r\n btn = p.firstChild;\r\n addEvt(btn, 'click', (evt) => this.toggle(evt));\r\n }\r\n\r\n container.appendChild(ul);\r\n container.appendChild(p);\r\n\r\n this.btnEl.parentNode.insertBefore(container, this.btnEl);\r\n this.contEl = container;\r\n }\r\n\r\n /**\r\n * Hide or show specified columns\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} hide Hide column if true or show if false\r\n */\r\n setHidden(colIndex, hide) {\r\n let tf = this.tf;\r\n let tbl = tf.dom();\r\n\r\n if (hide) {\r\n this.onBeforeColHidden(this, colIndex);\r\n } else {\r\n this.onBeforeColDisplayed(this, colIndex);\r\n }\r\n\r\n this._hideElements(tbl, colIndex, hide);\r\n if (this.headersTbl) {\r\n this._hideElements(this.headersTbl, colIndex, hide);\r\n }\r\n\r\n let hiddenCols = this.hiddenCols;\r\n let itemIndex = hiddenCols.indexOf(colIndex);\r\n if (hide) {\r\n if (itemIndex === -1) {\r\n this.hiddenCols.push(colIndex);\r\n }\r\n } else {\r\n if (itemIndex !== -1) {\r\n this.hiddenCols.splice(itemIndex, 1);\r\n }\r\n }\r\n\r\n if (hide) {\r\n this.onAfterColHidden(this, colIndex);\r\n this.emitter.emit('column-hidden', tf, this, colIndex,\r\n this.hiddenCols);\r\n } else {\r\n this.onAfterColDisplayed(this, colIndex);\r\n this.emitter.emit('column-shown', tf, this, colIndex,\r\n this.hiddenCols);\r\n }\r\n }\r\n\r\n /**\r\n * Show specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n showCol(colIndex) {\r\n if (isUndef(colIndex) || !this.isColHidden(colIndex)) {\r\n return;\r\n }\r\n if (this.manager && this.contEl) {\r\n let itm = elm('col_' + colIndex + '_' + this.tf.id);\r\n if (itm) {\r\n itm.click();\r\n }\r\n } else {\r\n this.setHidden(colIndex, false);\r\n }\r\n }\r\n\r\n /**\r\n * Hide specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n hideCol(colIndex) {\r\n if (isUndef(colIndex) || this.isColHidden(colIndex)) {\r\n return;\r\n }\r\n if (this.manager && this.contEl) {\r\n let itm = elm('col_' + colIndex + '_' + this.tf.id);\r\n if (itm) {\r\n itm.click();\r\n }\r\n } else {\r\n this.setHidden(colIndex, true);\r\n }\r\n }\r\n\r\n /**\r\n * Determine if specified column is hidden\r\n * @param {Number} colIndex Column index\r\n */\r\n isColHidden(colIndex) {\r\n if (this.hiddenCols.indexOf(colIndex) !== -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Toggle visibility of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n toggleCol(colIndex) {\r\n if (isUndef(colIndex) || this.isColHidden(colIndex)) {\r\n this.showCol(colIndex);\r\n } else {\r\n this.hideCol(colIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Return the indexes of the columns currently hidden\r\n * @return {Array} column indexes\r\n */\r\n getHiddenCols() {\r\n return this.hiddenCols;\r\n }\r\n\r\n /**\r\n * Remove the columns manager\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n if (elm(this.contElTgtId)) {\r\n elm(this.contElTgtId).innerHTML = '';\r\n } else {\r\n this.contEl.innerHTML = '';\r\n removeElm(this.contEl);\r\n this.contEl = null;\r\n }\r\n this.btnEl.innerHTML = '';\r\n removeElm(this.btnEl);\r\n this.btnEl = null;\r\n\r\n this.emitter.off(['hide-column'],\r\n (tf, colIndex) => this.hideCol(colIndex));\r\n\r\n this.boundMouseup = null;\r\n\r\n this.initialized = false;\r\n }\r\n\r\n _getHeaderText(cell) {\r\n if (!cell.hasChildNodes) {\r\n return '';\r\n }\r\n\r\n for (let i = 0; i < cell.childNodes.length; i++) {\r\n let n = cell.childNodes[i];\r\n if (n.nodeType === 3) {\r\n return n.nodeValue;\r\n } else if (n.nodeType === 1) {\r\n if (n.id && n.id.indexOf('popUp') !== -1) {\r\n continue;\r\n } else {\r\n return getText(n);\r\n }\r\n }\r\n continue;\r\n }\r\n return '';\r\n }\r\n\r\n _hideElements(tbl, colIdx, hide) {\r\n this._hideCells(tbl, colIdx, hide);\r\n this._hideCol(tbl, colIdx, hide);\r\n }\r\n\r\n _hideCells(tbl, colIdx, hide) {\r\n for (let i = 0; i < tbl.rows.length; i++) {\r\n let row = tbl.rows[i];\r\n let cell = row.cells[colIdx];\r\n if (cell) {\r\n cell.style.display = hide ? NONE : '';\r\n }\r\n }\r\n }\r\n\r\n _hideCol(tbl, colIdx, hide) {\r\n let colElms = tag(tbl, 'col');\r\n if (colElms.length === 0) {\r\n return;\r\n }\r\n colElms[colIdx].style.display = hide ? NONE : '';\r\n }\r\n\r\n _hideAtStart() {\r\n this.atStart.forEach((colIdx) => {\r\n this.hideCol(colIdx);\r\n });\r\n }\r\n}\r\n","import {Feature} from '../../feature';\r\nimport {createText, elm} from '../../dom';\r\nimport {isArray, isEmpty, EMPTY_FN} from '../../types';\r\nimport {numSortAsc} from '../../sort';\r\nimport {FORMATTED_NUMBER} from '../../const';\r\nimport formatNumber from 'format-number';\r\nimport {defaultsFn, defaultsArr} from '../../settings';\r\nimport {bound} from '../../event';\r\n\r\nconst EVENTS = [\r\n 'after-filtering',\r\n 'after-page-change',\r\n 'after-page-length-change'\r\n];\r\n\r\nconst SUM = 'sum';\r\nconst MEAN = 'mean';\r\nconst MIN = 'min';\r\nconst MAX = 'max';\r\nconst MEDIAN = 'median';\r\nconst Q1 = 'q1';\r\nconst Q3 = 'q3';\r\n\r\n/**\r\n * Column calculations extension\r\n */\r\nexport default class ColOps extends Feature {\r\n\r\n /**\r\n * Creates an instance of ColOps\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} opts Configuration object\r\n */\r\n constructor(tf, opts) {\r\n super(tf, opts.name);\r\n\r\n /**\r\n * Callback fired before columns operations start\r\n * @type {Function}\r\n */\r\n this.onBeforeOperation = defaultsFn(opts.on_before_operation, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after columns operations are completed\r\n * @type {Function}\r\n */\r\n this.onAfterOperation = defaultsFn(opts.on_after_operation, EMPTY_FN);\r\n\r\n /**\r\n * Configuration options\r\n * @type {Object}\r\n */\r\n this.opts = opts;\r\n\r\n /**\r\n * List of DOM element IDs containing column's calculation result\r\n * @type {Array}\r\n */\r\n this.labelIds = defaultsArr(opts.id, []);\r\n\r\n /**\r\n * List of columns' indexes for calculations\r\n * @type {Array}\r\n */\r\n this.colIndexes = defaultsArr(opts.col, []);\r\n\r\n /**\r\n * List of operations - possible values: 'sum', 'mean', 'min', 'max',\r\n * 'median', 'q1', 'q3'\r\n * @type {Array}\r\n */\r\n this.operations = defaultsArr(opts.operation, []);\r\n\r\n /**\r\n * List of write methods used to write the result - possible values:\r\n * 'innerHTML', 'setValue', 'createTextNode'\r\n * @type {Array}\r\n */\r\n this.outputTypes = defaultsArr(opts.write_method, []);\r\n\r\n /**\r\n * List of format objects used for formatting the result -\r\n * refer to https://github.com/componitable/format-number to check\r\n * configuration options\r\n * @type {Array}\r\n */\r\n this.formatResults = defaultsArr(opts.format_result, []);\r\n\r\n /**\r\n * List of row indexes displaying the results\r\n * @type {Array}\r\n */\r\n this.totRowIndexes = defaultsArr(opts.tot_row_index, []);\r\n\r\n /**\r\n * List of row indexes excluded from calculations\r\n * @type {Array}\r\n */\r\n this.excludeRows = defaultsArr(opts.exclude_row, []);\r\n\r\n /**\r\n * List of decimal precision for calculation results\r\n * @type {Array}\r\n */\r\n this.decimalPrecisions = defaultsArr(opts.decimal_precision, 2);\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initializes ColOps instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n // subscribe to events\r\n this.emitter.on(EVENTS, bound(this.calcAll, this));\r\n\r\n this.calcAll();\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Calculates columns' values\r\n * Configuration options are stored in 'opts' property\r\n * - 'id' contains ids of elements showing result (array)\r\n * - 'col' contains the columns' indexes (array)\r\n * - 'operation' contains operation type (array, values: 'sum', 'mean',\r\n * 'min', 'max', 'median', 'q1', 'q3')\r\n * - 'write_method' array defines which method to use for displaying the\r\n * result (innerHTML, setValue, createTextNode) - default: 'innerHTML'\r\n * - 'tot_row_index' defines in which row results are displayed\r\n * (integers array)\r\n *\r\n * - changes made by Nuovella:\r\n * (1) optimized the routine (now it will only process each column once),\r\n * (2) added calculations for the median, lower and upper quartile.\r\n */\r\n calcAll() {\r\n let tf = this.tf;\r\n if (!tf.isInitialized()) {\r\n return;\r\n }\r\n\r\n this.onBeforeOperation(tf, this);\r\n this.emitter.emit('before-column-operation', tf, this);\r\n\r\n let { colIndexes, operations: colOperations, outputTypes,\r\n totRowIndexes, excludeRows, formatResults,\r\n decimalPrecisions } = this;\r\n\r\n //nuovella: determine unique list of columns to operate on\r\n let uIndexes = [];\r\n colIndexes.forEach((val) => {\r\n if (uIndexes.indexOf(val) === -1) {\r\n uIndexes.push(val);\r\n }\r\n });\r\n\r\n let nbCols = uIndexes.length,\r\n rows = tf.dom().rows,\r\n colValues = [];\r\n\r\n for (let u = 0; u < nbCols; u++) {\r\n //this retrieves col values\r\n //use uIndexes because we only want to pass through this loop\r\n //once for each column get the values in this unique column\r\n colValues.push(\r\n tf.getVisibleColumnData(uIndexes[u], false, excludeRows)\r\n );\r\n\r\n let curValues = colValues[u];\r\n\r\n //next: calculate all operations for this column\r\n let result = 0,\r\n operations = [],\r\n precisions = [],\r\n labels = [],\r\n writeType,\r\n formatResult = [],\r\n idx = 0;\r\n\r\n for (let k = 0; k < colIndexes.length; k++) {\r\n if (colIndexes[k] !== uIndexes[u]) {\r\n continue;\r\n }\r\n operations[idx] = (colOperations[k] || 'sum').toLowerCase();\r\n precisions[idx] = decimalPrecisions[k];\r\n labels[idx] = this.labelIds[k];\r\n writeType = isArray(outputTypes) ? outputTypes[k] : null;\r\n formatResult[idx] =\r\n this.configureFormat(uIndexes[u], formatResults[k]);\r\n idx++;\r\n }\r\n\r\n for (let i = 0; i < idx; i++) {\r\n // emit values before column calculation\r\n this.emitter.emit(\r\n 'before-column-calc',\r\n tf,\r\n this,\r\n uIndexes[u],\r\n curValues,\r\n operations[i],\r\n precisions[i]\r\n );\r\n\r\n result = Number(this.calc(curValues, operations[i], null));\r\n\r\n // emit column calculation result\r\n this.emitter.emit(\r\n 'column-calc',\r\n tf,\r\n this,\r\n uIndexes[u],\r\n result,\r\n operations[i],\r\n precisions[i]\r\n );\r\n\r\n // write result in expected DOM element\r\n this.writeResult(\r\n result,\r\n labels[i],\r\n writeType,\r\n precisions[i],\r\n formatResult[i]\r\n );\r\n\r\n }//for i\r\n\r\n // row(s) with result are always visible\r\n let totRow = totRowIndexes && totRowIndexes[u] ?\r\n rows[totRowIndexes[u]] : null;\r\n if (totRow) {\r\n totRow.style.display = '';\r\n }\r\n }//for u\r\n\r\n this.onAfterOperation(tf, this);\r\n this.emitter.emit('after-column-operation', tf, this);\r\n }\r\n\r\n /**\r\n * Make desired calculation on specified column.\r\n * @param {Number} colIndex Column index\r\n * @param {String} [operation=SUM] Operation type\r\n * @param {Number} precision Decimal precision\r\n * @returns {Number}\r\n */\r\n columnCalc(colIndex, operation = SUM, precision) {\r\n let excludeRows = this.excludeRows || [];\r\n let colValues = tf.getVisibleColumnData(colIndex, false, excludeRows);\r\n\r\n return Number(this.calc(colValues, operation, precision));\r\n }\r\n\r\n /**\r\n * Make calculation on passed values.\r\n * @param {Array} values List of values\r\n * @param {String} [operation=SUM] Optional operation type\r\n * @param {Number} precision Optional result precision\r\n * @returns {Number}\r\n * @private\r\n */\r\n calc(colValues, operation = SUM, precision) {\r\n let result = 0;\r\n\r\n if (operation === Q1 || operation === Q3 || operation === MEDIAN) {\r\n colValues = this.sortColumnValues(colValues, numSortAsc);\r\n }\r\n\r\n switch (operation) {\r\n case MEAN:\r\n result = this.calcMean(colValues);\r\n break;\r\n case SUM:\r\n result = this.calcSum(colValues);\r\n break;\r\n case MIN:\r\n result = this.calcMin(colValues);\r\n break;\r\n case MAX:\r\n result = this.calcMax(colValues);\r\n break;\r\n case MEDIAN:\r\n result = this.calcMedian(colValues);\r\n break;\r\n case Q1:\r\n result = this.calcQ1(colValues);\r\n break;\r\n case Q3:\r\n result = this.calcQ3(colValues);\r\n break;\r\n }\r\n\r\n return isEmpty(precision) ? result : result.toFixed(precision);\r\n }\r\n\r\n /**\r\n * Calculate the sum of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcSum(values = []) {\r\n if (isEmpty(values)) {\r\n return 0;\r\n }\r\n let result = values.reduce((x, y) => Number(x) + Number(y));\r\n return result;\r\n }\r\n\r\n /**\r\n * Calculate the mean of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMean(values = []) {\r\n let result = this.calcSum(values) / values.length;\r\n return Number(result);\r\n }\r\n\r\n /**\r\n * Calculate the max value of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMax(values = []) {\r\n return Math.max.apply(null, values);\r\n }\r\n\r\n /**\r\n * Calculate the min value of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMin(values = []) {\r\n return Math.min.apply(null, values);\r\n }\r\n\r\n /**\r\n * Calculate the median of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMedian(values = []) {\r\n let nbValues = values.length;\r\n let aux = 0;\r\n if (nbValues % 2 === 1) {\r\n aux = Math.floor(nbValues / 2);\r\n return Number(values[aux]);\r\n }\r\n return (Number(values[nbValues / 2]) +\r\n Number(values[((nbValues / 2) - 1)])) / 2;\r\n }\r\n\r\n /**\r\n * Calculate the lower quartile of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcQ1(values = []) {\r\n let nbValues = values.length;\r\n let posa = 0.0;\r\n posa = Math.floor(nbValues / 4);\r\n if (4 * posa === nbValues) {\r\n return (Number(values[posa - 1]) +\r\n Number(values[posa])) / 2;\r\n }\r\n return Number(values[posa]);\r\n }\r\n\r\n /**\r\n * Calculate the upper quartile of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcQ3(values = []) {\r\n let nbValues = values.length;\r\n let posa = 0.0;\r\n let posb = 0.0;\r\n posa = Math.floor(nbValues / 4);\r\n if (4 * posa === nbValues) {\r\n posb = 3 * posa;\r\n return (Number(values[posb]) +\r\n Number(values[posb - 1])) / 2;\r\n }\r\n return Number(values[nbValues - posa - 1]);\r\n }\r\n\r\n /**\r\n * Sort passed values with supplied sorter function.\r\n * @param {Array} [values=[]] List of values to be sorted\r\n * @param {Function} sorter Sorter function\r\n * @returns {Array}\r\n */\r\n sortColumnValues(values = [], sorter) {\r\n return values.sort(sorter);\r\n }\r\n\r\n /**\r\n * Write calculation result in passed DOM element with supplied write method\r\n * and decimal precision.\r\n * @param {Number} [result=0] Calculation result\r\n * @param {DOMElement} label DOM element\r\n * @param {String} [writeType='innerhtml'] Write method\r\n * @param {Number} [precision=2] Applied decimal precision\r\n * @private\r\n */\r\n writeResult(result = 0, label, writeType = 'innerhtml',\r\n precision = 2, format = {}) {\r\n let labelElm = elm(label);\r\n\r\n if (!labelElm) {\r\n return;\r\n }\r\n\r\n result = result.toFixed(precision);\r\n if (isNaN(result) || !isFinite(result)) {\r\n result = '';\r\n } else {\r\n result = formatNumber(format)(result);\r\n }\r\n\r\n switch (writeType.toLowerCase()) {\r\n case 'innerhtml':\r\n labelElm.innerHTML = result;\r\n break;\r\n case 'setvalue':\r\n labelElm.value = result;\r\n break;\r\n case 'createtextnode':\r\n let oldNode = labelElm.firstChild;\r\n let txtNode = createText(result);\r\n labelElm.replaceChild(txtNode, oldNode);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Configure the format options used to format the operation result based\r\n * on column type.\r\n * @param {Number} colIndex Column index\r\n * @param {Object} [format={}] Format object\r\n * @returns {Object}\r\n * @private\r\n */\r\n configureFormat(colIndex, format = {}) {\r\n let tf = this.tf;\r\n if (tf.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n let colType = tf.colTypes[colIndex];\r\n if (colType.decimal && !format.decimal) {\r\n format.decimal = colType.decimal;\r\n }\r\n if (colType.thousands && !format.integerSeparator) {\r\n format.integerSeparator = colType.thousands;\r\n }\r\n } else {\r\n format.decimal = format.decimal || '';\r\n format.integerSeparator = format.integerSeparator || '';\r\n }\r\n return format;\r\n }\r\n\r\n /** Remove extension */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n // unsubscribe to events\r\n this.emitter.off(EVENTS, bound(this.calcAll, this));\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n","import AdapterEzEditTable from './adapterEzEditTable';\r\n\r\nexport default AdapterEzEditTable;","module.exports = \"/*----------------------------------------------------------------------------\\\\\\r\\n| Sortable Table 1.12 |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Created by Erik Arvidsson |\\r\\n| (http://webfx.eae.net/contact.html#erik) |\\r\\n| For WebFX (http://webfx.eae.net/) |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| A DOM 1 based script that allows an ordinary HTML table to be sortable. |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Copyright (c) 1998 - 2006 Erik Arvidsson |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not |\\r\\n| use this file except in compliance with the License. You may obtain a copy |\\r\\n| of the License at http://www.apache.org/licenses/LICENSE-2.0 |\\r\\n| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |\\r\\n| Unless required by applicable law or agreed to in writing, software |\\r\\n| distributed under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT |\\r\\n| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |\\r\\n| License for the specific language governing permissions and limitations |\\r\\n| under the License. |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| 2003-01-10 | First version |\\r\\n| 2003-01-19 | Minor changes to the date parsing |\\r\\n| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator) |\\r\\n| 2003-02-01 | Sloppy typo like error fixed in getInnerText |\\r\\n| 2003-07-04 | Added workaround for IE cellIndex bug. |\\r\\n| 2003-11-09 | The bDescending argument to sort was not correctly working |\\r\\n| | Using onclick DOM0 event if no support for addEventListener |\\r\\n| | or attachEvent |\\r\\n| 2004-01-13 | Adding addSortType and removeSortType which makes it a lot |\\r\\n| | easier to add new, custom sort types. |\\r\\n| 2004-01-27 | Switch to use descending = false as the default sort order. |\\r\\n| | Change defaultDescending to suit your needs. |\\r\\n| 2004-03-14 | Improved sort type None look and feel a bit |\\r\\n| 2004-08-26 | Made the handling of tBody and tHead more flexible. Now you |\\r\\n| | can use another tHead or no tHead, and you can chose some |\\r\\n| | other tBody. |\\r\\n| 2006-04-25 | Changed license to Apache Software License 2.0 |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Created 2003-01-10 | All changes are in the log above. | Updated 2006-04-25 |\\r\\n\\\\----------------------------------------------------------------------------*/\\r\\n\\r\\n\\r\\nfunction SortableTable(oTable, oSortTypes) {\\r\\n\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\r\\n\\tthis.sortColumn = null;\\r\\n\\tthis.descending = null;\\r\\n\\r\\n\\tvar oThis = this;\\r\\n\\tthis._headerOnclick = function (e) {\\r\\n\\t\\toThis.headerOnclick(e);\\r\\n\\t};\\r\\n\\r\\n\\tif (oTable) {\\r\\n\\t\\tthis.setTable( oTable );\\r\\n\\t\\tthis.document = oTable.ownerDocument || oTable.document;\\r\\n\\t}\\r\\n\\telse {\\r\\n\\t\\tthis.document = document;\\r\\n\\t}\\r\\n\\r\\n\\r\\n\\t// only IE needs this\\r\\n\\tvar win = this.document.defaultView || this.document.parentWindow;\\r\\n\\tthis._onunload = function () {\\r\\n\\t\\toThis.destroy();\\r\\n\\t};\\r\\n\\tif (win && typeof win.attachEvent != \\\"undefined\\\") {\\r\\n\\t\\twin.attachEvent(\\\"onunload\\\", this._onunload);\\r\\n\\t}\\r\\n}\\r\\n\\r\\nSortableTable.gecko = navigator.product == \\\"Gecko\\\";\\r\\nSortableTable.msie = /msie/i.test(navigator.userAgent);\\r\\n// Mozilla is faster when doing the DOM manipulations on\\r\\n// an orphaned element. MSIE is not\\r\\nSortableTable.removeBeforeSort = SortableTable.gecko;\\r\\n\\r\\nSortableTable.prototype.onsort = function () {};\\r\\n\\r\\n// default sort order. true -> descending, false -> ascending\\r\\nSortableTable.prototype.defaultDescending = false;\\r\\n\\r\\n// shared between all instances. This is intentional to allow external files\\r\\n// to modify the prototype\\r\\nSortableTable.prototype._sortTypeInfo = {};\\r\\n\\r\\nSortableTable.prototype.setTable = function (oTable) {\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.element = oTable;\\r\\n\\tthis.setTHead( oTable.tHead );\\r\\n\\tthis.setTBody( oTable.tBodies[0] );\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setTHead = function (oTHead) {\\r\\n\\tif (this.tHead && this.tHead != oTHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.tHead = oTHead;\\r\\n\\tthis.initHeader( this.sortTypes );\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setTBody = function (oTBody) {\\r\\n\\tthis.tBody = oTBody;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setSortTypes = function ( oSortTypes ) {\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.initHeader( this.sortTypes );\\r\\n};\\r\\n\\r\\n// adds arrow containers and events\\r\\n// also binds sort type to the header cells so that reordering columns does\\r\\n// not break the sort types\\r\\nSortableTable.prototype.initHeader = function (oSortTypes) {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar doc = this.tHead.ownerDocument || this.tHead.document;\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\tvar l = cells.length;\\r\\n\\tvar img, c;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tc = cells[i];\\r\\n\\t\\tif (this.sortTypes[i] != null && this.sortTypes[i] != \\\"None\\\") {\\r\\n\\t\\t\\timg = doc.createElement(\\\"IMG\\\");\\r\\n\\t\\t\\timg.src = \\\"images/blank.png\\\";\\r\\n\\t\\t\\tc.appendChild(img);\\r\\n\\t\\t\\tif (this.sortTypes[i] != null)\\r\\n\\t\\t\\t\\tc._sortType = this.sortTypes[i];\\r\\n\\t\\t\\tif (typeof c.addEventListener != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.addEventListener(\\\"click\\\", this._headerOnclick, false);\\r\\n\\t\\t\\telse if (typeof c.attachEvent != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.attachEvent(\\\"onclick\\\", this._headerOnclick);\\r\\n\\t\\t\\telse\\r\\n\\t\\t\\t\\tc.onclick = this._headerOnclick;\\r\\n\\t\\t}\\r\\n\\t\\telse\\r\\n\\t\\t{\\r\\n\\t\\t\\tc.setAttribute( \\\"_sortType\\\", oSortTypes[i] );\\r\\n\\t\\t\\tc._sortType = \\\"None\\\";\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\tthis.updateHeaderArrows();\\r\\n};\\r\\n\\r\\n// remove arrows and events\\r\\nSortableTable.prototype.uninitHeader = function () {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar l = cells.length;\\r\\n\\tvar c;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tc = cells[i];\\r\\n\\t\\tif (c._sortType != null && c._sortType != \\\"None\\\") {\\r\\n\\t\\t\\tc.removeChild(c.lastChild);\\r\\n\\t\\t\\tif (typeof c.removeEventListener != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.removeEventListener(\\\"click\\\", this._headerOnclick, false);\\r\\n\\t\\t\\telse if (typeof c.detachEvent != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.detachEvent(\\\"onclick\\\", this._headerOnclick);\\r\\n\\t\\t\\tc._sortType = null;\\r\\n\\t\\t\\tc.removeAttribute( \\\"_sortType\\\" );\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.updateHeaderArrows = function () {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar l = cells.length;\\r\\n\\tvar img;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tif (cells[i]._sortType != null && cells[i]._sortType != \\\"None\\\") {\\r\\n\\t\\t\\timg = cells[i].lastChild;\\r\\n\\t\\t\\tif (i == this.sortColumn)\\r\\n\\t\\t\\t\\timg.className = \\\"sort-arrow \\\" + (this.descending ? \\\"descending\\\" : \\\"ascending\\\");\\r\\n\\t\\t\\telse\\r\\n\\t\\t\\t\\timg.className = \\\"sort-arrow\\\";\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.headerOnclick = function (e) {\\r\\n\\t// find TD element\\r\\n\\tvar el = e.target || e.srcElement;\\r\\n\\twhile (el.tagName != \\\"TD\\\")\\r\\n\\t\\tel = el.parentNode;\\r\\n\\r\\n\\tthis.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);\\r\\n};\\r\\n\\r\\n// IE returns wrong cellIndex when columns are hidden\\r\\nSortableTable.getCellIndex = function (oTd) {\\r\\n\\tvar cells = oTd.parentNode.childNodes\\r\\n\\tvar l = cells.length;\\r\\n\\tvar i;\\r\\n\\tfor (i = 0; cells[i] != oTd && i < l; i++)\\r\\n\\t\\t;\\r\\n\\treturn i;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getSortType = function (nColumn) {\\r\\n\\treturn this.sortTypes[nColumn] || \\\"String\\\";\\r\\n};\\r\\n\\r\\n// only nColumn is required\\r\\n// if bDescending is left out the old value is taken into account\\r\\n// if sSortType is left out the sort type is found from the sortTypes array\\r\\n\\r\\nSortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {\\r\\n\\tif (!this.tBody) return;\\r\\n\\tif (sSortType == null)\\r\\n\\t\\tsSortType = this.getSortType(nColumn);\\r\\n\\r\\n\\t// exit if None\\r\\n\\tif (sSortType == \\\"None\\\")\\r\\n\\t\\treturn;\\r\\n\\r\\n\\tif (bDescending == null) {\\r\\n\\t\\tif (this.sortColumn != nColumn)\\r\\n\\t\\t\\tthis.descending = this.defaultDescending;\\r\\n\\t\\telse\\r\\n\\t\\t\\tthis.descending = !this.descending;\\r\\n\\t}\\r\\n\\telse\\r\\n\\t\\tthis.descending = bDescending;\\r\\n\\r\\n\\tthis.sortColumn = nColumn;\\r\\n\\r\\n\\tif (typeof this.onbeforesort == \\\"function\\\")\\r\\n\\t\\tthis.onbeforesort();\\r\\n\\r\\n\\tvar f = this.getSortFunction(sSortType, nColumn);\\r\\n\\tvar a = this.getCache(sSortType, nColumn);\\r\\n\\tvar tBody = this.tBody;\\r\\n\\r\\n\\ta.sort(f);\\r\\n\\r\\n\\tif (this.descending)\\r\\n\\t\\ta.reverse();\\r\\n\\r\\n\\tif (SortableTable.removeBeforeSort) {\\r\\n\\t\\t// remove from doc\\r\\n\\t\\tvar nextSibling = tBody.nextSibling;\\r\\n\\t\\tvar p = tBody.parentNode;\\r\\n\\t\\tp.removeChild(tBody);\\r\\n\\t}\\r\\n\\r\\n\\t// insert in the new order\\r\\n\\tvar l = a.length;\\r\\n\\tfor (var i = 0; i < l; i++)\\r\\n\\t\\ttBody.appendChild(a[i].element);\\r\\n\\r\\n\\tif (SortableTable.removeBeforeSort) {\\r\\n\\t\\t// insert into doc\\r\\n\\t\\tp.insertBefore(tBody, nextSibling);\\r\\n\\t}\\r\\n\\r\\n\\tthis.updateHeaderArrows();\\r\\n\\r\\n\\tthis.destroyCache(a);\\r\\n\\r\\n\\tif (typeof this.onsort == \\\"function\\\")\\r\\n\\t\\tthis.onsort();\\r\\n};\\r\\n\\r\\nSortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {\\r\\n\\tvar oThis = this;\\r\\n\\tthis._asyncsort = function () {\\r\\n\\t\\toThis.sort(nColumn, bDescending, sSortType);\\r\\n\\t};\\r\\n\\twindow.setTimeout(this._asyncsort, 1);\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getCache = function (sType, nColumn) {\\r\\n\\tif (!this.tBody) return [];\\r\\n\\tvar rows = this.tBody.rows;\\r\\n\\tvar l = rows.length;\\r\\n\\tvar a = new Array(l);\\r\\n\\tvar r;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tr = rows[i];\\r\\n\\t\\ta[i] = {\\r\\n\\t\\t\\tvalue:\\t\\tthis.getRowValue(r, sType, nColumn),\\r\\n\\t\\t\\telement:\\tr\\r\\n\\t\\t};\\r\\n\\t};\\r\\n\\treturn a;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.destroyCache = function (oArray) {\\r\\n\\tvar l = oArray.length;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\toArray[i].value = null;\\r\\n\\t\\toArray[i].element = null;\\r\\n\\t\\toArray[i] = null;\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\\r\\n\\t// if we have defined a custom getRowValue use that\\r\\n\\tif (this._sortTypeInfo[sType] && this._sortTypeInfo[sType].getRowValue)\\r\\n\\t\\treturn this._sortTypeInfo[sType].getRowValue(oRow, nColumn);\\r\\n\\r\\n\\tvar s;\\r\\n\\tvar c = oRow.cells[nColumn];\\r\\n\\tif (typeof c.innerText != \\\"undefined\\\")\\r\\n\\t\\ts = c.innerText;\\r\\n\\telse\\r\\n\\t\\ts = SortableTable.getInnerText(c);\\r\\n\\treturn this.getValueFromString(s, sType);\\r\\n};\\r\\n\\r\\nSortableTable.getInnerText = function (oNode) {\\r\\n\\tvar s = \\\"\\\";\\r\\n\\tvar cs = oNode.childNodes;\\r\\n\\tvar l = cs.length;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tswitch (cs[i].nodeType) {\\r\\n\\t\\t\\tcase 1: //ELEMENT_NODE\\r\\n\\t\\t\\t\\ts += SortableTable.getInnerText(cs[i]);\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\tcase 3:\\t//TEXT_NODE\\r\\n\\t\\t\\t\\ts += cs[i].nodeValue;\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\treturn s;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getValueFromString = function (sText, sType) {\\r\\n\\tif (this._sortTypeInfo[sType])\\r\\n\\t\\treturn this._sortTypeInfo[sType].getValueFromString( sText );\\r\\n\\treturn sText;\\r\\n\\t/*\\r\\n\\tswitch (sType) {\\r\\n\\t\\tcase \\\"Number\\\":\\r\\n\\t\\t\\treturn Number(sText);\\r\\n\\t\\tcase \\\"CaseInsensitiveString\\\":\\r\\n\\t\\t\\treturn sText.toUpperCase();\\r\\n\\t\\tcase \\\"Date\\\":\\r\\n\\t\\t\\tvar parts = sText.split(\\\"-\\\");\\r\\n\\t\\t\\tvar d = new Date(0);\\r\\n\\t\\t\\td.setFullYear(parts[0]);\\r\\n\\t\\t\\td.setDate(parts[2]);\\r\\n\\t\\t\\td.setMonth(parts[1] - 1);\\r\\n\\t\\t\\treturn d.valueOf();\\r\\n\\t}\\r\\n\\treturn sText;\\r\\n\\t*/\\r\\n\\t};\\r\\n\\r\\nSortableTable.prototype.getSortFunction = function (sType, nColumn) {\\r\\n\\tif (this._sortTypeInfo[sType])\\r\\n\\t\\treturn this._sortTypeInfo[sType].compare;\\r\\n\\treturn SortableTable.basicCompare;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.destroy = function () {\\r\\n\\tthis.uninitHeader();\\r\\n\\tvar win = this.document.parentWindow;\\r\\n\\tif (win && typeof win.detachEvent != \\\"undefined\\\") {\\t// only IE needs this\\r\\n\\t\\twin.detachEvent(\\\"onunload\\\", this._onunload);\\r\\n\\t}\\r\\n\\tthis._onunload = null;\\r\\n\\tthis.element = null;\\r\\n\\tthis.tHead = null;\\r\\n\\tthis.tBody = null;\\r\\n\\tthis.document = null;\\r\\n\\tthis._headerOnclick = null;\\r\\n\\tthis.sortTypes = null;\\r\\n\\tthis._asyncsort = null;\\r\\n\\tthis.onsort = null;\\r\\n};\\r\\n\\r\\n// Adds a sort type to all instance of SortableTable\\r\\n// sType : String - the identifier of the sort type\\r\\n// fGetValueFromString : function ( s : string ) : T - A function that takes a\\r\\n// string and casts it to a desired format. If left out the string is just\\r\\n// returned\\r\\n// fCompareFunction : function ( n1 : T, n2 : T ) : Number - A normal JS sort\\r\\n// compare function. Takes two values and compares them. If left out less than,\\r\\n// <, compare is used\\r\\n// fGetRowValue : function( oRow : HTMLTRElement, nColumn : int ) : T - A function\\r\\n// that takes the row and the column index and returns the value used to compare.\\r\\n// If left out then the innerText is first taken for the cell and then the\\r\\n// fGetValueFromString is used to convert that string the desired value and type\\r\\n\\r\\nSortableTable.prototype.addSortType = function (sType, fGetValueFromString, fCompareFunction, fGetRowValue) {\\r\\n\\tthis._sortTypeInfo[sType] = {\\r\\n\\t\\ttype:\\t\\t\\t\\tsType,\\r\\n\\t\\tgetValueFromString:\\tfGetValueFromString || SortableTable.idFunction,\\r\\n\\t\\tcompare:\\t\\t\\tfCompareFunction || SortableTable.basicCompare,\\r\\n\\t\\tgetRowValue:\\t\\tfGetRowValue\\r\\n\\t};\\r\\n};\\r\\n\\r\\n// this removes the sort type from all instances of SortableTable\\r\\nSortableTable.prototype.removeSortType = function (sType) {\\r\\n\\tdelete this._sortTypeInfo[sType];\\r\\n};\\r\\n\\r\\nSortableTable.basicCompare = function compare(n1, n2) {\\r\\n\\tif (n1.value < n2.value)\\r\\n\\t\\treturn -1;\\r\\n\\tif (n2.value < n1.value)\\r\\n\\t\\treturn 1;\\r\\n\\treturn 0;\\r\\n};\\r\\n\\r\\nSortableTable.idFunction = function (x) {\\r\\n\\treturn x;\\r\\n};\\r\\n\\r\\nSortableTable.toUpperCase = function (s) {\\r\\n\\treturn s.toUpperCase();\\r\\n};\\r\\n\\r\\nSortableTable.toDate = function (s) {\\r\\n\\tvar parts = s.split(\\\"-\\\");\\r\\n\\tvar d = new Date(0);\\r\\n\\td.setFullYear(parts[0]);\\r\\n\\td.setDate(parts[2]);\\r\\n\\td.setMonth(parts[1] - 1);\\r\\n\\treturn d.valueOf();\\r\\n};\\r\\n\\r\\n\\r\\n// add sort types\\r\\nSortableTable.prototype.addSortType(\\\"Number\\\", Number);\\r\\nSortableTable.prototype.addSortType(\\\"CaseInsensitiveString\\\", SortableTable.toUpperCase);\\r\\nSortableTable.prototype.addSortType(\\\"Date\\\", SortableTable.toDate);\\r\\nSortableTable.prototype.addSortType(\\\"String\\\");\\r\\n// None is a special case\\r\\n\"","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nmodule.exports = function(src) {\n\tfunction log(error) {\n\t\t(typeof console !== \"undefined\")\n\t\t&& (console.error || console.log)(\"[Script Loader]\", error);\n\t}\n\n\t// Check for IE =< 8\n\tfunction isIE() {\n\t\treturn typeof attachEvent !== \"undefined\" && typeof addEventListener === \"undefined\";\n\t}\n\n\ttry {\n\t\tif (typeof execScript !== \"undefined\" && isIE()) {\n\t\t\texecScript(src);\n\t\t} else if (typeof eval !== \"undefined\") {\n\t\t\teval.call(null, src);\n\t\t} else {\n\t\t\tlog(\"EvalError: No eval function available\");\n\t\t}\n\t} catch (error) {\n\t\tlog(error);\n\t}\n}\n","require(\"!!C:\\\\Users\\\\max.guglielmi\\\\Documents\\\\dev\\\\perso\\\\javascript\\\\GitHub\\\\TableFilter\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Users\\\\max.guglielmi\\\\Documents\\\\dev\\\\perso\\\\javascript\\\\GitHub\\\\TableFilter\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Users\\\\max.guglielmi\\\\Documents\\\\dev\\\\perso\\\\javascript\\\\GitHub\\\\TableFilter\\\\libs\\\\sortabletable.js\"))","\nmodule.exports = formatter;\nmodule.exports.default = formatter;\n\nfunction formatter(options) {\n options = options || {};\n\n\n // *********************************************************************************************\n // Set defaults for negatives\n // options.negative, options.negativeOut, options.separator retained for backward compatibility\n // *********************************************************************************************\n\n // type of negative; default left\n options.negativeType = options.negativeType || (options.negative === 'R' ? 'right' : 'left')\n\n // negative symbols '-' or '()'\n if (typeof options.negativeLeftSymbol !== 'string') {\n switch (options.negativeType) {\n case 'left':\n options.negativeLeftSymbol = '-';\n break;\n case 'brackets':\n options.negativeLeftSymbol = '(';\n break;\n default:\n options.negativeLeftSymbol = '';\n }\n }\n if (typeof options.negativeRightSymbol !== 'string') {\n switch (options.negativeType) {\n case 'right':\n options.negativeRightSymbol = '-';\n break;\n case 'brackets':\n options.negativeRightSymbol = ')';\n break;\n default:\n options.negativeRightSymbol = '';\n }\n }\n\n // whether negative symbol should be inside/outside prefix and suffix\n\n if (typeof options.negativeLeftOut !== \"boolean\") {\n options.negativeLeftOut = (options.negativeOut === false ? false : true);\n }\n if (typeof options.negativeRightOut !== \"boolean\") {\n options.negativeRightOut = (options.negativeOut === false ? false : true);\n }\n\n //prefix and suffix\n options.prefix = options.prefix || '';\n options.suffix = options.suffix || '';\n\n //separators\n if (typeof options.integerSeparator !== 'string') {\n options.integerSeparator = (typeof options.separator === 'string' ? options.separator : ',');\n }\n options.decimalsSeparator = typeof options.decimalsSeparator === 'string' ? options.decimalsSeparator : '';\n options.decimal = options.decimal || '.';\n\n //padders\n options.padLeft = options.padLeft || -1 //default no padding\n options.padRight = options.padRight || -1 //default no padding\n\n function format(number, overrideOptions) {\n overrideOptions = overrideOptions || {};\n\n if (number || number === 0) {\n number = '' + number;//convert number to string if it isn't already\n } else {\n return '';\n }\n\n //identify a negative number and make it absolute\n var output = [];\n var negative = number.charAt(0) === '-';\n number = number.replace(/^\\-/g, '');\n\n //Prepare output with left hand negative and/or prefix\n if (!options.negativeLeftOut && !overrideOptions.noUnits) {\n output.push(options.prefix);\n }\n if (negative) {\n output.push(options.negativeLeftSymbol);\n }\n if (options.negativeLeftOut && !overrideOptions.noUnits) {\n output.push(options.prefix);\n }\n\n //Format core number\n number = number.split('.');\n if (options.round != null) round(number, options.round);\n if (options.truncate != null) number[1] = truncate(number[1], options.truncate);\n if (options.padLeft > 0) number[0] = padLeft(number[0], options.padLeft);\n if (options.padRight > 0) number[1] = padRight(number[1], options.padRight);\n if (!overrideOptions.noSeparator && number[1]) number[1] = addDecimalSeparators(number[1], options.decimalsSeparator);\n if (!overrideOptions.noSeparator && number[0]) number[0] = addIntegerSeparators(number[0], options.integerSeparator);\n output.push(number[0]);\n if (number[1]) {\n output.push(options.decimal);\n output.push(number[1]);\n }\n\n //Prepare output with right hand negative and/or prefix\n if (options.negativeRightOut && !overrideOptions.noUnits) {\n output.push(options.suffix);\n }\n if (negative) {\n output.push(options.negativeRightSymbol);\n }\n if (!options.negativeRightOut && !overrideOptions.noUnits) {\n output.push(options.suffix);\n }\n\n //join output and return\n return output.join('');\n }\n\n format.negative = options.negative;\n format.negativeOut = options.negativeOut;\n format.negativeType = options.negativeType;\n format.negativeLeftOut = options.negativeLeftOut;\n format.negativeLeftSymbol = options.negativeLeftSymbol;\n format.negativeRightOut = options.negativeRightOut;\n format.negativeRightSymbol = options.negativeRightSymbol;\n format.prefix = options.prefix;\n format.suffix = options.suffix;\n format.separate = options.separate;\n format.integerSeparator = options.integerSeparator;\n format.decimalsSeparator = options.decimalsSeparator;\n format.decimal = options.decimal;\n format.padLeft = options.padLeft;\n format.padRight = options.padRight;\n format.truncate = options.truncate;\n format.round = options.round;\n\n function unformat(number, allowedSeparators) {\n allowedSeparators = allowedSeparators || [];\n if (options.allowedSeparators) {\n options.allowedSeparators.forEach(function (s) { allowedSeparators.push (s); });\n }\n allowedSeparators.push(options.integerSeparator);\n allowedSeparators.push(options.decimalsSeparator);\n number = number.replace(options.prefix, '');\n number = number.replace(options.suffix, '');\n var newNumber = number;\n do {\n number = newNumber;\n for (var i = 0; i < allowedSeparators.length; i++) {\n newNumber = newNumber.replace(allowedSeparators[i], '');\n }\n } while (newNumber != number);\n return number;\n }\n format.unformat = unformat;\n\n function validate(number, allowedSeparators) {\n number = unformat(number, allowedSeparators);\n number = number.split(options.decimal);\n if (number.length > 2) {\n return false;\n } else if (options.truncate != null && number[1] && number[1].length > options.truncate) {\n return false;\n } else if (options.round != null && number[1] && number[1].length > options.round) {\n return false;\n } else {\n return /^-?\\d+\\.?\\d*$/.test(number);\n }\n }\n return format;\n}\n\n//where x is already the integer part of the number\nfunction addIntegerSeparators(x, separator) {\n x += '';\n if (!separator) return x;\n var rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x)) {\n x = x.replace(rgx, '$1' + separator + '$2');\n }\n return x;\n}\n\n//where x is already the decimal part of the number\nfunction addDecimalSeparators(x, separator) {\n x += '';\n if (!separator) return x;\n var rgx = /(\\d{3})(\\d+)/;\n while (rgx.test(x)) {\n x = x.replace(rgx, '$1' + separator + '$2');\n }\n return x;\n}\n\n//where x is the integer part of the number\nfunction padLeft(x, padding) {\n x = x + '';\n var buf = [];\n while (buf.length + x.length < padding) {\n buf.push('0');\n }\n return buf.join('') + x;\n}\n\n//where x is the decimals part of the number\nfunction padRight(x, padding) {\n if (x) {\n x += '';\n } else {\n x = '';\n }\n var buf = [];\n while (buf.length + x.length < padding) {\n buf.push('0');\n }\n return x + buf.join('');\n}\nfunction truncate(x, length) {\n if (x) {\n x += '';\n }\n if (x && x.length > length) {\n return x.substr(0, length);\n } else {\n return x;\n }\n}\n\n//where number is an array with 0th item as integer string and 1st item as decimal string (no negatives)\nfunction round(number, places) {\n if (number[1] && places >= 0 && number[1].length > places) {\n //truncate to correct number of decimal places\n var decim = number[1].slice(0, places);\n //if next digit was >= 5 we need to round up\n if (+(number[1].substr(places, 1)) >= 5) {\n //But first count leading zeros as converting to a number will loose them\n var leadingzeros = \"\";\n while (decim.charAt(0)===\"0\") {\n leadingzeros = leadingzeros + \"0\";\n decim = decim.substr(1);\n }\n //Then we can change decim to a number and add 1 before replacing leading zeros\n decim = (+decim + 1) + '';\n decim = leadingzeros + decim;\n if (decim.length > places) {\n //adding one has made it longer\n number[0] = (+number[0]+ +decim.charAt(0)) + ''; //add value of firstchar to the integer part\n decim = decim.substring(1); //ignore the 1st char at the beginning which is the carry to the integer part\n }\n }\n number[1] = decim;\n }\n return number;\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/tablefilter/tf-0-db54cfc612ffa547f4a3.js b/dist/tablefilter/tf-0-db54cfc612ffa547f4a3.js new file mode 100644 index 00000000..873b63fc --- /dev/null +++ b/dist/tablefilter/tf-0-db54cfc612ffa547f4a3.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{440:function(t,e,n){var r={"./array":20,"./array.js":20,"./const":4,"./const.js":4,"./cookie":59,"./cookie.js":59,"./dom":2,"./dom.js":2,"./emitter":93,"./emitter.js":93,"./event":5,"./event.js":5,"./extensions/advancedGrid/adapterEzEditTable":442,"./extensions/advancedGrid/adapterEzEditTable.js":442,"./extensions/advancedGrid/advancedGrid":447,"./extensions/advancedGrid/advancedGrid.js":447,"./extensions/colOps/colOps":446,"./extensions/colOps/colOps.js":446,"./extensions/colsVisibility/colsVisibility":445,"./extensions/colsVisibility/colsVisibility.js":445,"./extensions/filtersVisibility/filtersVisibility":444,"./extensions/filtersVisibility/filtersVisibility.js":444,"./extensions/sort/adapterSortabletable":441,"./extensions/sort/adapterSortabletable.js":441,"./extensions/sort/sort":443,"./extensions/sort/sort.js":443,"./feature":10,"./feature.js":10,"./modules/alternateRows":78,"./modules/alternateRows.js":78,"./modules/baseDropdown":58,"./modules/baseDropdown.js":58,"./modules/checkList":75,"./modules/checkList.js":75,"./modules/clearButton":79,"./modules/clearButton.js":79,"./modules/dateType":91,"./modules/dateType.js":91,"./modules/dropdown":92,"./modules/dropdown.js":92,"./modules/gridLayout":86,"./modules/gridLayout.js":86,"./modules/hash":88,"./modules/hash.js":88,"./modules/help":90,"./modules/help.js":90,"./modules/highlightKeywords":84,"./modules/highlightKeywords.js":84,"./modules/loader":85,"./modules/loader.js":85,"./modules/markActiveColumns":82,"./modules/markActiveColumns.js":82,"./modules/noResults":77,"./modules/noResults.js":77,"./modules/paging":76,"./modules/paging.js":76,"./modules/popupFilter":83,"./modules/popupFilter.js":83,"./modules/rowsCounter":81,"./modules/rowsCounter.js":81,"./modules/state":89,"./modules/state.js":89,"./modules/statusBar":80,"./modules/statusBar.js":80,"./modules/storage":87,"./modules/storage.js":87,"./modules/toolbar":19,"./modules/toolbar.js":19,"./number":22,"./number.js":22,"./root":8,"./root.js":8,"./settings":1,"./settings.js":1,"./sort":36,"./sort.js":36,"./string":9,"./string.js":9,"./tablefilter":129,"./tablefilter.js":129,"./types":3,"./types.js":3};function webpackContext(t){var e=webpackContextResolve(t);return n(e)}function webpackContextResolve(t){var e=r[t];if(!(e+1)){var n=new Error('Cannot find module "'+t+'".');throw n.code="MODULE_NOT_FOUND",n}return e}webpackContext.keys=function webpackContextKeys(){return Object.keys(r)},webpackContext.resolve=webpackContextResolve,t.exports=webpackContext,webpackContext.id=440},441:function(t,e,n){"use strict";n.r(e),n.d(e,"default",function(){return d});var r=n(10),o=n(3),i=n(2),s=n(5),a=n(22),l=n(4),c=n(1);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n0){var o=t.triggerIds;e=[],n=o.length;for(var s=0;s0&&function(){for(var e=t.triggerIds,n=0;nr.length;)r="0"+r;e[n]=r}return e.join(".")}function sortIP(t,e){var n=ipAddress(t.value.toLowerCase()),r=ipAddress(e.value.toLowerCase());return n===r?0:n0&&!n.startRow?void 0:n.startRow||e.refRow,n.base_path=n.base_path||e.basePath+"ezEditTable/";var r=n.editable,i=n.selection;i&&(n.default_selection=n.default_selection||"row"),n.active_cell_css=n.active_cell_css||"ezETSelectedCell";var s=0,a=0;if(i){var l=function onAfterSelection(t,n,r){var o=t.Selection,i=function doSelect(r){if("row"===t.defaultSelection)o.SelectRowByIndex(r);else{t.ClearSelections();var i=n.cellIndex,s=e.dom().rows[r];"both"===t.defaultSelection&&o.SelectRowByIndex(r),s&&o.SelectCell(s.cells[i])}if(e.validRowsIndex.length!==e.getRowsNb()){var a=e.dom().rows[r];a&&a.scrollIntoView(!1),f&&(f.cellIndex===e.getCellsNb()-1&&e.gridLayout?e.tblCont.scrollLeft=1e8:0===f.cellIndex&&e.gridLayout?e.tblCont.scrollLeft=0:f.scrollIntoView(!1))}};if(e.validRowsIndex){var l,c=e.validRowsIndex,d=c.length,u="row"!==t.defaultSelection?n.parentNode:n,f="TD"===n.nodeName?n:null,h=void 0!==r?t.Event.GetKey(r):0,p=-1!==c.indexOf(u.rowIndex),b=e.feature("paging"),y=34===h||33===h?b&&b.pageLength||t.nbRowsPerPage:1;if(p)34!==h&&33!==h?(s=c.indexOf(u.rowIndex),a=u.rowIndex):(l=34===h?s+y<=d-1?c[s+y]:[d-1]:s-y<=c[0]?c[0]:c[s-y],a=l,s=c.indexOf(l),i(l));else{if(u.rowIndex>a)if(u.rowIndex>=c[d-1])l=c[d-1];else{var m=s+y;l=m>d-1?c[d-1]:c[m]}else if(u.rowIndex<=c[0])l=c[0];else{var g=c[s-y];l=g||c[0]}a=u.rowIndex,i(l)}}},c=function onBeforeSelection(t,n){var r="row"!==t.defaultSelection?n.parentNode:n;if(e.paging&&e.feature("paging").nbPages>1){var o=e.feature("paging");t.nbRowsPerPage=o.pageLength;var i=e.validRowsIndex,s=i.length,a=parseInt(o.startPagingRow,10)+parseInt(o.pageLength,10),l=r.rowIndex;l===i[s-1]&&o.currentPageNb!==o.nbPages?o.setPage("last"):l===i[0]&&1!==o.currentPageNb?o.setPage("first"):l>i[a-1]&&li[0]&&o.setPage("previous")}};if(e.paging&&(e.feature("paging").onAfterChangePage=function(t){var e=t.tf.extension("advancedGrid")._ezEditTable.Selection,n=e.GetActiveRow();n&&n.scrollIntoView(!1);var r=e.GetActiveCell();r&&r.scrollIntoView(!1)}),"row"===n.default_selection){var d=n.on_before_selected_row;n.on_before_selected_row=function(){var t=arguments;c(t[0],t[1],t[2]),d&&d.call(null,t[0],t[1],t[2])};var u=n.on_after_selected_row;n.on_after_selected_row=function(){var t=arguments;l(t[0],t[1],t[2]),u&&u.call(null,t[0],t[1],t[2])}}else{var f=n.on_before_selected_cell;n.on_before_selected_cell=function(){var t=arguments;c(t[0],t[1],t[2]),f&&f.call(null,t[0],t[1],t[2])};var h=n.on_after_selected_cell;n.on_after_selected_cell=function(){var t=arguments;l(t[0],t[1],t[2]),h&&h.call(null,t[0],t[1],t[2])}}}if(r){var p=n.on_added_dom_row;if(n.on_added_dom_row=function(){var t=arguments;e.nbFilterableRows++,e.paging?(e.nbFilterableRows++,e.paging=!1,e.feature("paging").destroy(),e.feature("paging").reset()):e.emitter.emit("rows-changed",e,this),e.alternateRows&&e.feature("alternateRows").init(),p&&p.call(null,t[0],t[1],t[2])},n.actions&&n.actions.delete){var b=n.actions.delete.on_after_submit;n.actions.delete.on_after_submit=function(){var t=arguments;e.nbFilterableRows--,e.paging?(e.nbFilterableRows--,e.paging=!1,e.feature("paging").destroy(),e.feature("paging").reset(!1)):e.emitter.emit("rows-changed",e,this),e.alternateRows&&e.feature("alternateRows").init(),b&&b.call(null,t[0],t[1])}}}try{this._ezEditTable=new EditTable(e.id,n,t),this._ezEditTable.Init()}catch(t){throw new Error('Failed to instantiate EditTable object.\n \n"ezEditTable" dependency not found.')}this.initialized=!0}},{key:"reset",value:function reset(){var t=this._ezEditTable;t&&(this.cfg.selection&&t.Selection.Set(),this.cfg.editable&&t.Editable.Set())}},{key:"toggle",value:function toggle(){var t=this._ezEditTable;t.editable?t.Editable.Remove():t.Editable.Set(),t.selection?t.Selection.Remove():t.Selection.Set()}},{key:"_toggleForInputFilter",value:function _toggleForInputFilter(){var t=this.tf;if(t.getActiveFilterId()){var e=t.getColumnIndexFromFilterId(t.getActiveFilterId());t.getFilterType(e)===i.INPUT&&this.toggle()}}},{key:"destroy",value:function destroy(){var t=this;if(this.initialized){var e=this._ezEditTable;e&&(this.cfg.selection&&(e.Selection.ClearSelections(),e.Selection.Remove()),this.cfg.editable&&e.Editable.Remove()),this.emitter.off(["filter-focus","filter-blur"],function(){return t._toggleForInputFilter()}),this.initialized=!1}}}]),AdapterEzEditTable}()},443:function(t,e,n){"use strict";n.r(e);var r=n(441);n(8).root.SortableTable||n(450),e.default=r.default},444:function(t,e,n){"use strict";n.r(e),n.d(e,"default",function(){return c});var r=n(10),o=n(2),i=n(3),s=n(5),a=n(1),l=n(19);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n',n.icnCollapseHtml='Collapse filters',n.defaultText="Toggle filters",n.targetId=e.target_id||null,n.enableIcon=Object(a.defaultsBool)(e.enable_icon,!0),n.btnText=Object(a.defaultsStr)(e.btn_text,""),n.collapseBtnHtml=n.enableIcon?n.icnCollapseHtml+n.btnText:n.btnText||n.defaultText,n.expandBtnHtml=n.enableIcon?n.icnExpandHtml+n.btnText:n.btnText||n.defaultText,n.btnHtml=Object(a.defaultsStr)(e.btn_html,null),n.btnCssClass=Object(a.defaultsStr)(e.btn_css_class,"btnExpClpFlt"),n.contCssClass=Object(a.defaultsStr)(e.cont_css_class,"expClpFlt"),n.filtersRowIndex=Object(a.defaultsNb)(e.filters_row_index,t.getFiltersRowIndex()),n.visibleAtStart=Object(a.defaultsNb)(e.visible_at_start,!0),n.toolbarPosition=Object(a.defaultsStr)(e.toolbar_position,l.RIGHT),n.onBeforeShow=Object(a.defaultsFn)(e.on_before_show,i.EMPTY_FN),n.onAfterShow=Object(a.defaultsFn)(e.on_after_show,i.EMPTY_FN),n.onBeforeHide=Object(a.defaultsFn)(e.on_before_hide,i.EMPTY_FN),n.onAfterHide=Object(a.defaultsFn)(e.on_after_hide,i.EMPTY_FN),t.import(e.name+"Style",t.getStylePath()+n.stylesheet,null,"link"),n.enable(),n}return function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&_setPrototypeOf(t,e)}(FiltersVisibility,r["Feature"]),function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t}(FiltersVisibility,[{key:"init",value:function init(){var t=this;this.initialized||(this.emitter.emit("initializing-extension",this,!Object(i.isNull)(this.targetId)),this.buildUI(),this.initialized=!0,this.emitter.on(["show-filters"],function(e,n){return t.show(n)}),this.emitter.emit("filters-visibility-initialized",this.tf,this),this.emitter.emit("extension-initialized",this))}},{key:"buildUI",value:function buildUI(){var t=this,e=this.tf,n=Object(o.createElm)("span");n.className=this.contCssClass;var r,i=this.targetId?Object(o.elm)(this.targetId):e.feature("toolbar").container(this.toolbarPosition);if(this.targetId)i.appendChild(n);else{var a=i.firstChild;a.parentNode.insertBefore(n,a)}this.btnHtml?(n.innerHTML=this.btnHtml,r=n.firstChild):((r=Object(o.createElm)("a",["href","javascript:void(0);"])).className=this.btnCssClass,r.title=this.btnText||this.defaultText,r.innerHTML=this.collapseBtnHtml,n.appendChild(r)),Object(s.addEvt)(r,"click",function(){return t.toggle()}),this.contEl=n,this.btnEl=r,this.visibleAtStart||this.toggle()}},{key:"toggle",value:function toggle(){var t=this.tf,e=""===(t.gridLayout?t.feature("gridLayout").headTbl:t.dom()).rows[this.filtersRowIndex].style.display;this.show(!e)}},{key:"show",value:function show(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=this.tf,n=(e.gridLayout?e.feature("gridLayout").headTbl:e.dom()).rows[this.filtersRowIndex];t&&this.onBeforeShow(this),t||this.onBeforeHide(this),n.style.display=t?"":"none",this.enableIcon&&!this.btnHtml&&(this.btnEl.innerHTML=t?this.collapseBtnHtml:this.expandBtnHtml),t&&this.onAfterShow(this),t||this.onAfterHide(this),this.emitter.emit("filters-toggled",e,this,t)}},{key:"destroy",value:function destroy(){var t=this;this.initialized&&(this.emitter.off(["show-filters"],function(e,n){return t.show(n)}),this.btnEl.innerHTML="",Object(o.removeElm)(this.btnEl),this.btnEl=null,this.contEl.innerHTML="",Object(o.removeElm)(this.contEl),this.contEl=null,this.initialized=!1)}}]),FiltersVisibility}()},445:function(t,e,n){"use strict";n.r(e),n.d(e,"default",function(){return u});var r=n(10),o=n(2),i=n(3),s=n(5),a=n(8),l=n(4),c=n(1),d=n(19);function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function _typeof(t){return typeof t}:function _typeof(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperties(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"sum",n=arguments.length>2?arguments[2]:void 0,r=this.excludeRows||[],o=tf.getVisibleColumnData(t,!1,r);return Number(this.calc(o,e,n))}},{key:"calc",value:function calc(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"sum",n=arguments.length>2?arguments[2]:void 0,r=0;switch("q1"!==e&&"q3"!==e&&"median"!==e||(t=this.sortColumnValues(t,s.numSortAsc)),e){case"mean":r=this.calcMean(t);break;case"sum":r=this.calcSum(t);break;case"min":r=this.calcMin(t);break;case"max":r=this.calcMax(t);break;case"median":r=this.calcMedian(t);break;case"q1":r=this.calcQ1(t);break;case"q3":r=this.calcQ3(t)}return Object(i.isEmpty)(n)?r:r.toFixed(n)}},{key:"calcSum",value:function calcSum(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return Object(i.isEmpty)(t)?0:t.reduce(function(t,e){return Number(t)+Number(e)})}},{key:"calcMean",value:function calcMean(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.calcSum(t)/t.length;return Number(e)}},{key:"calcMax",value:function calcMax(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return Math.max.apply(null,t)}},{key:"calcMin",value:function calcMin(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return Math.min.apply(null,t)}},{key:"calcMedian",value:function calcMedian(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=t.length,n=0;return e%2==1?(n=Math.floor(e/2),Number(t[n])):(Number(t[e/2])+Number(t[e/2-1]))/2}},{key:"calcQ1",value:function calcQ1(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=e.length;return 4*(t=Math.floor(n/4))===n?(Number(e[t-1])+Number(e[t]))/2:Number(e[t])}},{key:"calcQ3",value:function calcQ3(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=e.length,r=0;return 4*(t=Math.floor(n/4))===n?(r=3*t,(Number(e[r])+Number(e[r-1]))/2):Number(e[n-t-1])}},{key:"sortColumnValues",value:function sortColumnValues(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1?arguments[1]:void 0;return t.sort(e)}},{key:"writeResult",value:function writeResult(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"innerhtml",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},s=Object(o.elm)(e);if(s)switch(t=t.toFixed(r),t=isNaN(t)||!isFinite(t)?"":c()(i)(t),n.toLowerCase()){case"innerhtml":s.innerHTML=t;break;case"setvalue":s.value=t;break;case"createtextnode":var a=s.firstChild,l=Object(o.createText)(t);s.replaceChild(l,a)}}},{key:"configureFormat",value:function configureFormat(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.tf;if(n.hasType(t,[a.FORMATTED_NUMBER])){var r=n.colTypes[t];r.decimal&&!e.decimal&&(e.decimal=r.decimal),r.thousands&&!e.integerSeparator&&(e.integerSeparator=r.thousands)}else e.decimal=e.decimal||"",e.integerSeparator=e.integerSeparator||"";return e}},{key:"destroy",value:function destroy(){this.initialized&&(this.emitter.off(f,Object(u.bound)(this.calcAll,this)),this.initialized=!1)}}]),ColOps}()},447:function(t,e,n){"use strict";n.r(e);var r=n(442);e.default=r.default},448:function(t,e){t.exports='/*----------------------------------------------------------------------------\\\r\n| Sortable Table 1.12 |\r\n|-----------------------------------------------------------------------------|\r\n| Created by Erik Arvidsson |\r\n| (http://webfx.eae.net/contact.html#erik) |\r\n| For WebFX (http://webfx.eae.net/) |\r\n|-----------------------------------------------------------------------------|\r\n| A DOM 1 based script that allows an ordinary HTML table to be sortable. |\r\n|-----------------------------------------------------------------------------|\r\n| Copyright (c) 1998 - 2006 Erik Arvidsson |\r\n|-----------------------------------------------------------------------------|\r\n| Licensed under the Apache License, Version 2.0 (the "License"); you may not |\r\n| use this file except in compliance with the License. You may obtain a copy |\r\n| of the License at http://www.apache.org/licenses/LICENSE-2.0 |\r\n| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |\r\n| Unless required by applicable law or agreed to in writing, software |\r\n| distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |\r\n| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |\r\n| License for the specific language governing permissions and limitations |\r\n| under the License. |\r\n|-----------------------------------------------------------------------------|\r\n| 2003-01-10 | First version |\r\n| 2003-01-19 | Minor changes to the date parsing |\r\n| 2003-01-28 | JScript 5.0 fixes (no support for \'in\' operator) |\r\n| 2003-02-01 | Sloppy typo like error fixed in getInnerText |\r\n| 2003-07-04 | Added workaround for IE cellIndex bug. |\r\n| 2003-11-09 | The bDescending argument to sort was not correctly working |\r\n| | Using onclick DOM0 event if no support for addEventListener |\r\n| | or attachEvent |\r\n| 2004-01-13 | Adding addSortType and removeSortType which makes it a lot |\r\n| | easier to add new, custom sort types. |\r\n| 2004-01-27 | Switch to use descending = false as the default sort order. |\r\n| | Change defaultDescending to suit your needs. |\r\n| 2004-03-14 | Improved sort type None look and feel a bit |\r\n| 2004-08-26 | Made the handling of tBody and tHead more flexible. Now you |\r\n| | can use another tHead or no tHead, and you can chose some |\r\n| | other tBody. |\r\n| 2006-04-25 | Changed license to Apache Software License 2.0 |\r\n|-----------------------------------------------------------------------------|\r\n| Created 2003-01-10 | All changes are in the log above. | Updated 2006-04-25 |\r\n\\----------------------------------------------------------------------------*/\r\n\r\n\r\nfunction SortableTable(oTable, oSortTypes) {\r\n\r\n\tthis.sortTypes = oSortTypes || [];\r\n\r\n\tthis.sortColumn = null;\r\n\tthis.descending = null;\r\n\r\n\tvar oThis = this;\r\n\tthis._headerOnclick = function (e) {\r\n\t\toThis.headerOnclick(e);\r\n\t};\r\n\r\n\tif (oTable) {\r\n\t\tthis.setTable( oTable );\r\n\t\tthis.document = oTable.ownerDocument || oTable.document;\r\n\t}\r\n\telse {\r\n\t\tthis.document = document;\r\n\t}\r\n\r\n\r\n\t// only IE needs this\r\n\tvar win = this.document.defaultView || this.document.parentWindow;\r\n\tthis._onunload = function () {\r\n\t\toThis.destroy();\r\n\t};\r\n\tif (win && typeof win.attachEvent != "undefined") {\r\n\t\twin.attachEvent("onunload", this._onunload);\r\n\t}\r\n}\r\n\r\nSortableTable.gecko = navigator.product == "Gecko";\r\nSortableTable.msie = /msie/i.test(navigator.userAgent);\r\n// Mozilla is faster when doing the DOM manipulations on\r\n// an orphaned element. MSIE is not\r\nSortableTable.removeBeforeSort = SortableTable.gecko;\r\n\r\nSortableTable.prototype.onsort = function () {};\r\n\r\n// default sort order. true -> descending, false -> ascending\r\nSortableTable.prototype.defaultDescending = false;\r\n\r\n// shared between all instances. This is intentional to allow external files\r\n// to modify the prototype\r\nSortableTable.prototype._sortTypeInfo = {};\r\n\r\nSortableTable.prototype.setTable = function (oTable) {\r\n\tif ( this.tHead )\r\n\t\tthis.uninitHeader();\r\n\tthis.element = oTable;\r\n\tthis.setTHead( oTable.tHead );\r\n\tthis.setTBody( oTable.tBodies[0] );\r\n};\r\n\r\nSortableTable.prototype.setTHead = function (oTHead) {\r\n\tif (this.tHead && this.tHead != oTHead )\r\n\t\tthis.uninitHeader();\r\n\tthis.tHead = oTHead;\r\n\tthis.initHeader( this.sortTypes );\r\n};\r\n\r\nSortableTable.prototype.setTBody = function (oTBody) {\r\n\tthis.tBody = oTBody;\r\n};\r\n\r\nSortableTable.prototype.setSortTypes = function ( oSortTypes ) {\r\n\tif ( this.tHead )\r\n\t\tthis.uninitHeader();\r\n\tthis.sortTypes = oSortTypes || [];\r\n\tif ( this.tHead )\r\n\t\tthis.initHeader( this.sortTypes );\r\n};\r\n\r\n// adds arrow containers and events\r\n// also binds sort type to the header cells so that reordering columns does\r\n// not break the sort types\r\nSortableTable.prototype.initHeader = function (oSortTypes) {\r\n\tif (!this.tHead) return;\r\n\tvar cells = this.tHead.rows[0].cells;\r\n\tvar doc = this.tHead.ownerDocument || this.tHead.document;\r\n\tthis.sortTypes = oSortTypes || [];\r\n\tvar l = cells.length;\r\n\tvar img, c;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tc = cells[i];\r\n\t\tif (this.sortTypes[i] != null && this.sortTypes[i] != "None") {\r\n\t\t\timg = doc.createElement("IMG");\r\n\t\t\timg.src = "images/blank.png";\r\n\t\t\tc.appendChild(img);\r\n\t\t\tif (this.sortTypes[i] != null)\r\n\t\t\t\tc._sortType = this.sortTypes[i];\r\n\t\t\tif (typeof c.addEventListener != "undefined")\r\n\t\t\t\tc.addEventListener("click", this._headerOnclick, false);\r\n\t\t\telse if (typeof c.attachEvent != "undefined")\r\n\t\t\t\tc.attachEvent("onclick", this._headerOnclick);\r\n\t\t\telse\r\n\t\t\t\tc.onclick = this._headerOnclick;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tc.setAttribute( "_sortType", oSortTypes[i] );\r\n\t\t\tc._sortType = "None";\r\n\t\t}\r\n\t}\r\n\tthis.updateHeaderArrows();\r\n};\r\n\r\n// remove arrows and events\r\nSortableTable.prototype.uninitHeader = function () {\r\n\tif (!this.tHead) return;\r\n\tvar cells = this.tHead.rows[0].cells;\r\n\tvar l = cells.length;\r\n\tvar c;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tc = cells[i];\r\n\t\tif (c._sortType != null && c._sortType != "None") {\r\n\t\t\tc.removeChild(c.lastChild);\r\n\t\t\tif (typeof c.removeEventListener != "undefined")\r\n\t\t\t\tc.removeEventListener("click", this._headerOnclick, false);\r\n\t\t\telse if (typeof c.detachEvent != "undefined")\r\n\t\t\t\tc.detachEvent("onclick", this._headerOnclick);\r\n\t\t\tc._sortType = null;\r\n\t\t\tc.removeAttribute( "_sortType" );\r\n\t\t}\r\n\t}\r\n};\r\n\r\nSortableTable.prototype.updateHeaderArrows = function () {\r\n\tif (!this.tHead) return;\r\n\tvar cells = this.tHead.rows[0].cells;\r\n\tvar l = cells.length;\r\n\tvar img;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tif (cells[i]._sortType != null && cells[i]._sortType != "None") {\r\n\t\t\timg = cells[i].lastChild;\r\n\t\t\tif (i == this.sortColumn)\r\n\t\t\t\timg.className = "sort-arrow " + (this.descending ? "descending" : "ascending");\r\n\t\t\telse\r\n\t\t\t\timg.className = "sort-arrow";\r\n\t\t}\r\n\t}\r\n};\r\n\r\nSortableTable.prototype.headerOnclick = function (e) {\r\n\t// find TD element\r\n\tvar el = e.target || e.srcElement;\r\n\twhile (el.tagName != "TD")\r\n\t\tel = el.parentNode;\r\n\r\n\tthis.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);\r\n};\r\n\r\n// IE returns wrong cellIndex when columns are hidden\r\nSortableTable.getCellIndex = function (oTd) {\r\n\tvar cells = oTd.parentNode.childNodes\r\n\tvar l = cells.length;\r\n\tvar i;\r\n\tfor (i = 0; cells[i] != oTd && i < l; i++)\r\n\t\t;\r\n\treturn i;\r\n};\r\n\r\nSortableTable.prototype.getSortType = function (nColumn) {\r\n\treturn this.sortTypes[nColumn] || "String";\r\n};\r\n\r\n// only nColumn is required\r\n// if bDescending is left out the old value is taken into account\r\n// if sSortType is left out the sort type is found from the sortTypes array\r\n\r\nSortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {\r\n\tif (!this.tBody) return;\r\n\tif (sSortType == null)\r\n\t\tsSortType = this.getSortType(nColumn);\r\n\r\n\t// exit if None\r\n\tif (sSortType == "None")\r\n\t\treturn;\r\n\r\n\tif (bDescending == null) {\r\n\t\tif (this.sortColumn != nColumn)\r\n\t\t\tthis.descending = this.defaultDescending;\r\n\t\telse\r\n\t\t\tthis.descending = !this.descending;\r\n\t}\r\n\telse\r\n\t\tthis.descending = bDescending;\r\n\r\n\tthis.sortColumn = nColumn;\r\n\r\n\tif (typeof this.onbeforesort == "function")\r\n\t\tthis.onbeforesort();\r\n\r\n\tvar f = this.getSortFunction(sSortType, nColumn);\r\n\tvar a = this.getCache(sSortType, nColumn);\r\n\tvar tBody = this.tBody;\r\n\r\n\ta.sort(f);\r\n\r\n\tif (this.descending)\r\n\t\ta.reverse();\r\n\r\n\tif (SortableTable.removeBeforeSort) {\r\n\t\t// remove from doc\r\n\t\tvar nextSibling = tBody.nextSibling;\r\n\t\tvar p = tBody.parentNode;\r\n\t\tp.removeChild(tBody);\r\n\t}\r\n\r\n\t// insert in the new order\r\n\tvar l = a.length;\r\n\tfor (var i = 0; i < l; i++)\r\n\t\ttBody.appendChild(a[i].element);\r\n\r\n\tif (SortableTable.removeBeforeSort) {\r\n\t\t// insert into doc\r\n\t\tp.insertBefore(tBody, nextSibling);\r\n\t}\r\n\r\n\tthis.updateHeaderArrows();\r\n\r\n\tthis.destroyCache(a);\r\n\r\n\tif (typeof this.onsort == "function")\r\n\t\tthis.onsort();\r\n};\r\n\r\nSortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {\r\n\tvar oThis = this;\r\n\tthis._asyncsort = function () {\r\n\t\toThis.sort(nColumn, bDescending, sSortType);\r\n\t};\r\n\twindow.setTimeout(this._asyncsort, 1);\r\n};\r\n\r\nSortableTable.prototype.getCache = function (sType, nColumn) {\r\n\tif (!this.tBody) return [];\r\n\tvar rows = this.tBody.rows;\r\n\tvar l = rows.length;\r\n\tvar a = new Array(l);\r\n\tvar r;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tr = rows[i];\r\n\t\ta[i] = {\r\n\t\t\tvalue:\t\tthis.getRowValue(r, sType, nColumn),\r\n\t\t\telement:\tr\r\n\t\t};\r\n\t};\r\n\treturn a;\r\n};\r\n\r\nSortableTable.prototype.destroyCache = function (oArray) {\r\n\tvar l = oArray.length;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\toArray[i].value = null;\r\n\t\toArray[i].element = null;\r\n\t\toArray[i] = null;\r\n\t}\r\n};\r\n\r\nSortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\r\n\t// if we have defined a custom getRowValue use that\r\n\tif (this._sortTypeInfo[sType] && this._sortTypeInfo[sType].getRowValue)\r\n\t\treturn this._sortTypeInfo[sType].getRowValue(oRow, nColumn);\r\n\r\n\tvar s;\r\n\tvar c = oRow.cells[nColumn];\r\n\tif (typeof c.innerText != "undefined")\r\n\t\ts = c.innerText;\r\n\telse\r\n\t\ts = SortableTable.getInnerText(c);\r\n\treturn this.getValueFromString(s, sType);\r\n};\r\n\r\nSortableTable.getInnerText = function (oNode) {\r\n\tvar s = "";\r\n\tvar cs = oNode.childNodes;\r\n\tvar l = cs.length;\r\n\tfor (var i = 0; i < l; i++) {\r\n\t\tswitch (cs[i].nodeType) {\r\n\t\t\tcase 1: //ELEMENT_NODE\r\n\t\t\t\ts += SortableTable.getInnerText(cs[i]);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 3:\t//TEXT_NODE\r\n\t\t\t\ts += cs[i].nodeValue;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\treturn s;\r\n};\r\n\r\nSortableTable.prototype.getValueFromString = function (sText, sType) {\r\n\tif (this._sortTypeInfo[sType])\r\n\t\treturn this._sortTypeInfo[sType].getValueFromString( sText );\r\n\treturn sText;\r\n\t/*\r\n\tswitch (sType) {\r\n\t\tcase "Number":\r\n\t\t\treturn Number(sText);\r\n\t\tcase "CaseInsensitiveString":\r\n\t\t\treturn sText.toUpperCase();\r\n\t\tcase "Date":\r\n\t\t\tvar parts = sText.split("-");\r\n\t\t\tvar d = new Date(0);\r\n\t\t\td.setFullYear(parts[0]);\r\n\t\t\td.setDate(parts[2]);\r\n\t\t\td.setMonth(parts[1] - 1);\r\n\t\t\treturn d.valueOf();\r\n\t}\r\n\treturn sText;\r\n\t*/\r\n\t};\r\n\r\nSortableTable.prototype.getSortFunction = function (sType, nColumn) {\r\n\tif (this._sortTypeInfo[sType])\r\n\t\treturn this._sortTypeInfo[sType].compare;\r\n\treturn SortableTable.basicCompare;\r\n};\r\n\r\nSortableTable.prototype.destroy = function () {\r\n\tthis.uninitHeader();\r\n\tvar win = this.document.parentWindow;\r\n\tif (win && typeof win.detachEvent != "undefined") {\t// only IE needs this\r\n\t\twin.detachEvent("onunload", this._onunload);\r\n\t}\r\n\tthis._onunload = null;\r\n\tthis.element = null;\r\n\tthis.tHead = null;\r\n\tthis.tBody = null;\r\n\tthis.document = null;\r\n\tthis._headerOnclick = null;\r\n\tthis.sortTypes = null;\r\n\tthis._asyncsort = null;\r\n\tthis.onsort = null;\r\n};\r\n\r\n// Adds a sort type to all instance of SortableTable\r\n// sType : String - the identifier of the sort type\r\n// fGetValueFromString : function ( s : string ) : T - A function that takes a\r\n// string and casts it to a desired format. If left out the string is just\r\n// returned\r\n// fCompareFunction : function ( n1 : T, n2 : T ) : Number - A normal JS sort\r\n// compare function. Takes two values and compares them. If left out less than,\r\n// <, compare is used\r\n// fGetRowValue : function( oRow : HTMLTRElement, nColumn : int ) : T - A function\r\n// that takes the row and the column index and returns the value used to compare.\r\n// If left out then the innerText is first taken for the cell and then the\r\n// fGetValueFromString is used to convert that string the desired value and type\r\n\r\nSortableTable.prototype.addSortType = function (sType, fGetValueFromString, fCompareFunction, fGetRowValue) {\r\n\tthis._sortTypeInfo[sType] = {\r\n\t\ttype:\t\t\t\tsType,\r\n\t\tgetValueFromString:\tfGetValueFromString || SortableTable.idFunction,\r\n\t\tcompare:\t\t\tfCompareFunction || SortableTable.basicCompare,\r\n\t\tgetRowValue:\t\tfGetRowValue\r\n\t};\r\n};\r\n\r\n// this removes the sort type from all instances of SortableTable\r\nSortableTable.prototype.removeSortType = function (sType) {\r\n\tdelete this._sortTypeInfo[sType];\r\n};\r\n\r\nSortableTable.basicCompare = function compare(n1, n2) {\r\n\tif (n1.value < n2.value)\r\n\t\treturn -1;\r\n\tif (n2.value < n1.value)\r\n\t\treturn 1;\r\n\treturn 0;\r\n};\r\n\r\nSortableTable.idFunction = function (x) {\r\n\treturn x;\r\n};\r\n\r\nSortableTable.toUpperCase = function (s) {\r\n\treturn s.toUpperCase();\r\n};\r\n\r\nSortableTable.toDate = function (s) {\r\n\tvar parts = s.split("-");\r\n\tvar d = new Date(0);\r\n\td.setFullYear(parts[0]);\r\n\td.setDate(parts[2]);\r\n\td.setMonth(parts[1] - 1);\r\n\treturn d.valueOf();\r\n};\r\n\r\n\r\n// add sort types\r\nSortableTable.prototype.addSortType("Number", Number);\r\nSortableTable.prototype.addSortType("CaseInsensitiveString", SortableTable.toUpperCase);\r\nSortableTable.prototype.addSortType("Date", SortableTable.toDate);\r\nSortableTable.prototype.addSortType("String");\r\n// None is a special case\r\n'},449:function(t,e){t.exports=function(t){function log(t){"undefined"!=typeof console&&(console.error||console.log)("[Script Loader]",t)}try{"undefined"!=typeof execScript&&function isIE(){return"undefined"!=typeof attachEvent&&"undefined"==typeof addEventListener}()?execScript(t):"undefined"!=typeof eval?eval.call(null,t):log("EvalError: No eval function available")}catch(t){log(t)}}},450:function(t,e,n){n(449)(n(448))},451:function(t,e){function formatter(t){if((t=t||{}).negativeType=t.negativeType||("R"===t.negative?"right":"left"),"string"!=typeof t.negativeLeftSymbol)switch(t.negativeType){case"left":t.negativeLeftSymbol="-";break;case"brackets":t.negativeLeftSymbol="(";break;default:t.negativeLeftSymbol=""}if("string"!=typeof t.negativeRightSymbol)switch(t.negativeType){case"right":t.negativeRightSymbol="-";break;case"brackets":t.negativeRightSymbol=")";break;default:t.negativeRightSymbol=""}function format(e,n){if(n=n||{},!e&&0!==e)return"";var r=[],o="-"===(e=""+e).charAt(0);return e=e.replace(/^\-/g,""),t.negativeLeftOut||n.noUnits||r.push(t.prefix),o&&r.push(t.negativeLeftSymbol),t.negativeLeftOut&&!n.noUnits&&r.push(t.prefix),e=e.split("."),null!=t.round&&function round(t,e){if(t[1]&&e>=0&&t[1].length>e){var n=t[1].slice(0,e);if(+t[1].substr(e,1)>=5){for(var r="";"0"===n.charAt(0);)r+="0",n=n.substr(1);(n=r+(n=+n+1+"")).length>e&&(t[0]=+t[0]+ +n.charAt(0)+"",n=n.substring(1))}t[1]=n}return t}(e,t.round),null!=t.truncate&&(e[1]=function truncate(t,e){t&&(t+="");return t&&t.length>e?t.substr(0,e):t}(e[1],t.truncate)),t.padLeft>0&&(e[0]=function padLeft(t,e){t+="";var n=[];for(;n.length+t.length0&&(e[1]=function padRight(t,e){t?t+="":t="";var n=[];for(;n.length+t.length 0) {\r\n let triggers = adpt.triggerIds;\r\n cells = [];\r\n l = triggers.length;\r\n for (let j = 0; j < l; j++) {\r\n cells.push(elm(triggers[j]));\r\n }\r\n } else {\r\n if (!this.tHead) {\r\n return;\r\n }\r\n cells = stt.tHead.rows[stt.headersRow].cells;\r\n l = cells.length;\r\n }\r\n for (let i = 0; i < l; i++) {\r\n let cell = cells[i];\r\n if (!cell) {\r\n continue;\r\n }\r\n let cellAttr = cell.getAttribute('_sortType');\r\n if (cellAttr !== null && cellAttr !== 'None') {\r\n img = cell.lastChild || cell;\r\n if (img.nodeName.toLowerCase() !== 'img') {\r\n img = createElm('img',\r\n ['src', adpt.imgPath + adpt.imgBlank]);\r\n cell.appendChild(img);\r\n }\r\n if (i === stt.sortColumn) {\r\n img.className = adpt.imgClassName + ' ' +\r\n (this.descending ?\r\n adpt.imgDescClassName :\r\n adpt.imgAscClassName);\r\n } else {\r\n img.className = adpt.imgClassName;\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Overrides getRowValue for custom key value feature\r\n * @param {Object} oRow Row element\r\n * @param {String} sType\r\n * @param {Number} nColumn\r\n * @return {String}\r\n */\r\n SortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\r\n let stt = this;\r\n // if we have defined a custom getRowValue use that\r\n let sortTypeInfo = stt._sortTypeInfo[sType];\r\n if (sortTypeInfo && sortTypeInfo.getRowValue) {\r\n return sortTypeInfo.getRowValue(oRow, nColumn);\r\n }\r\n let c = oRow.cells[nColumn];\r\n let s = SortableTable.getInnerText(c);\r\n return stt.getValueFromString(s, sType);\r\n };\r\n\r\n /**\r\n * Overrides getInnerText in order to avoid Firefox unexpected sorting\r\n * behaviour with untrimmed text elements\r\n * @param {Object} cell DOM element\r\n * @return {String} DOM element inner text\r\n */\r\n SortableTable.getInnerText = function (cell) {\r\n if (!cell) {\r\n return;\r\n }\r\n if (cell.getAttribute(adpt.customKey)) {\r\n return cell.getAttribute(adpt.customKey);\r\n } else {\r\n return tf.getCellValue(cell);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Adds a sort type\r\n */\r\n addSortType(...args) {\r\n // Extract the arguments\r\n let [id, caster, sorter, getRowValue] = args;\r\n SortableTable.prototype.addSortType(id, caster, sorter, getRowValue);\r\n }\r\n\r\n /**\r\n * Sets the sort types on a column basis\r\n * @private\r\n */\r\n setSortTypes() {\r\n let tf = this.tf,\r\n sortTypes = this.sortTypes,\r\n _sortTypes = [];\r\n\r\n tf.eachCol((i) => {\r\n let colType;\r\n if (sortTypes[i]) {\r\n colType = sortTypes[i];\r\n if (isObj(colType)) {\r\n if (colType.type === DATE) {\r\n colType = this._addDateType(i, sortTypes);\r\n }\r\n else if (colType.type === FORMATTED_NUMBER) {\r\n let decimal = colType.decimal || tf.decimalSeparator;\r\n colType = this._addNumberType(i, decimal);\r\n }\r\n } else {\r\n colType = colType.toLowerCase();\r\n if (colType === DATE) {\r\n colType = this._addDateType(i, sortTypes);\r\n }\r\n else if (colType === FORMATTED_NUMBER ||\r\n colType === NUMBER) {\r\n colType = this._addNumberType(i, tf.decimalSeparator);\r\n }\r\n else if (colType === NONE) {\r\n // TODO: normalise 'none' vs 'None'\r\n colType = 'None';\r\n }\r\n }\r\n } else {\r\n colType = STRING;\r\n }\r\n _sortTypes.push(colType);\r\n });\r\n\r\n //Public TF method to add sort type\r\n\r\n //Custom sort types\r\n this.addSortType('caseinsensitivestring', SortableTable.toUpperCase);\r\n this.addSortType(STRING);\r\n this.addSortType(IP_ADDRESS, ipAddress, sortIP);\r\n\r\n this.stt = new SortableTable(tf.dom(), _sortTypes);\r\n\r\n /*** external table headers adapter ***/\r\n if (this.asyncSort && this.triggerIds.length > 0) {\r\n let triggers = this.triggerIds;\r\n for (let j = 0; j < triggers.length; j++) {\r\n if (triggers[j] === null) {\r\n continue;\r\n }\r\n let trigger = elm(triggers[j]);\r\n if (trigger) {\r\n trigger.style.cursor = 'pointer';\r\n\r\n addEvt(trigger, 'click', (evt) => {\r\n let elm = evt.target;\r\n if (!this.tf.sort) {\r\n return;\r\n }\r\n this.stt.asyncSort(triggers.indexOf(elm.id));\r\n });\r\n trigger.setAttribute('_sortType', _sortTypes[j]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n _addDateType(colIndex, types) {\r\n let tf = this.tf;\r\n let dateType = tf.feature('dateType');\r\n let locale = dateType.getOptions(colIndex, types).locale || tf.locale;\r\n let colType = `${DATE}-${locale}`;\r\n\r\n this.addSortType(colType, (value) => {\r\n let parsedDate = dateType.parse(value, locale);\r\n // Invalid date defaults to Wed Feb 04 -768 11:00:00\r\n return isNaN(+parsedDate) ? new Date(-86400000000000) : parsedDate;\r\n });\r\n return colType;\r\n }\r\n\r\n _addNumberType(colIndex, decimal) {\r\n let colType = `${FORMATTED_NUMBER}${decimal === '.' ? '' : '-custom'}`;\r\n\r\n this.addSortType(colType, (value) => {\r\n return parseNb(value, decimal);\r\n });\r\n return colType;\r\n }\r\n\r\n /**\r\n * Remove extension\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n this.emitter.off(['sort'], bound(this.sortByColumnIndexHandler, this));\r\n this.sorted = false;\r\n this.stt.destroy();\r\n\r\n let ids = tf.getFiltersId();\r\n for (let idx = 0; idx < ids.length; idx++) {\r\n let header = tf.getHeaderElement(idx);\r\n let img = tag(header, 'img');\r\n\r\n if (img.length === 1) {\r\n header.removeChild(img[0]);\r\n }\r\n }\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\r\n//Converters\r\nfunction ipAddress(value) {\r\n let vals = value.split('.');\r\n for (let x in vals) {\r\n let val = vals[x];\r\n while (3 > val.length) {\r\n val = '0' + val;\r\n }\r\n vals[x] = val;\r\n }\r\n return vals.join('.');\r\n}\r\n\r\nfunction sortIP(a, b) {\r\n let aa = ipAddress(a.value.toLowerCase());\r\n let bb = ipAddress(b.value.toLowerCase());\r\n if (aa === bb) {\r\n return 0;\r\n } else if (aa < bb) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n}\r\n","import {Feature} from '../../feature';\r\nimport {tag} from '../../dom';\r\nimport {INPUT} from '../../const';\r\nimport {defaultsStr} from '../../settings';\r\nimport {root} from '../../root';\r\n\r\nconst INSTANTIATION_ERROR = `Failed to instantiate EditTable object.\r\n \\n\"ezEditTable\" dependency not found.`;\r\n\r\n/**\r\n * Adapter module for ezEditTable, an external library providing advanced\r\n * grid features (selection and edition):\r\n * http://codecanyon.net/item/ezedittable-enhance-html-tables/2425123?ref=koalyptus\r\n */\r\nexport default class AdapterEzEditTable extends Feature {\r\n\r\n /**\r\n * Creates an instance of AdapterEzEditTable\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} cfg Configuration options for ezEditTable library\r\n */\r\n constructor(tf, cfg) {\r\n super(tf, cfg.name);\r\n\r\n /**\r\n * Module description\r\n * @type {String}\r\n */\r\n this.desc = defaultsStr(cfg.description, 'ezEditTable adapter');\r\n\r\n /**\r\n * Filename of ezEditTable library\r\n * @type {String}\r\n */\r\n this.filename = defaultsStr(cfg.filename, 'ezEditTable.js');\r\n\r\n /**\r\n * Path to ezEditTable library\r\n * @type {String}\r\n */\r\n this.vendorPath = cfg.vendor_path;\r\n\r\n /**\r\n * Load ezEditTable stylesheet\r\n * @type {Boolean}\r\n */\r\n this.loadStylesheet = Boolean(cfg.load_stylesheet);\r\n\r\n /**\r\n * Path to ezEditTable stylesheet\r\n * @type {String}\r\n */\r\n this.stylesheet = defaultsStr(cfg.stylesheet,\r\n this.vendorPath + 'ezEditTable.css');\r\n\r\n /**\r\n * Name of ezEditTable stylesheet\r\n * @type {String}\r\n */\r\n this.stylesheetName = defaultsStr(cfg.stylesheet_name,\r\n 'ezEditTableCss');\r\n\r\n // Enable the ezEditTable's scroll into view behaviour if grid layout on\r\n cfg.scroll_into_view = cfg.scroll_into_view === false ?\r\n false : tf.gridLayout;\r\n\r\n /**\r\n * ezEditTable instance\r\n * @type {EditTable}\r\n * @private\r\n */\r\n this._ezEditTable = null;\r\n\r\n /**\r\n * ezEditTable configuration\r\n * @private\r\n */\r\n this.cfg = cfg;\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Conditionally load ezEditTable library and set advanced grid\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n if (root.EditTable) {\r\n this._setAdvancedGrid();\r\n } else {\r\n let path = this.vendorPath + this.filename;\r\n tf.import(this.filename, path, () => this._setAdvancedGrid());\r\n }\r\n if (this.loadStylesheet && !tf.isImported(this.stylesheet, 'link')) {\r\n tf.import(this.stylesheetName, this.stylesheet, null, 'link');\r\n }\r\n\r\n // TODO: hack to prevent ezEditTable enter key event hijaking.\r\n // Needs to be fixed in the vendor's library\r\n this.emitter.on(['filter-focus', 'filter-blur'],\r\n () => this._toggleForInputFilter());\r\n\r\n /**\r\n * @inherited\r\n */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Instantiate ezEditTable component for advanced grid features\r\n * @private\r\n */\r\n _setAdvancedGrid() {\r\n let tf = this.tf;\r\n\r\n //start row for EditTable constructor needs to be calculated\r\n let startRow,\r\n cfg = this.cfg,\r\n thead = tag(tf.dom(), 'thead');\r\n\r\n //if thead exists and startRow not specified, startRow is calculated\r\n //automatically by EditTable\r\n if (thead.length > 0 && !cfg.startRow) {\r\n startRow = undefined;\r\n }\r\n //otherwise startRow config property if any or TableFilter refRow\r\n else {\r\n startRow = cfg.startRow || tf.refRow;\r\n }\r\n\r\n cfg.base_path = cfg.base_path || tf.basePath + 'ezEditTable/';\r\n let editable = cfg.editable;\r\n let selectable = cfg.selection;\r\n\r\n if (selectable) {\r\n cfg.default_selection = cfg.default_selection || 'row';\r\n }\r\n //CSS Styles\r\n cfg.active_cell_css = cfg.active_cell_css || 'ezETSelectedCell';\r\n\r\n let _lastValidRowIndex = 0;\r\n let _lastRowIndex = 0;\r\n\r\n if (selectable) {\r\n //Row navigation needs to be calculated according to TableFilter's\r\n //validRowsIndex array\r\n let onAfterSelection = function (et, selectedElm, e) {\r\n let slc = et.Selection;\r\n //Next valid filtered row needs to be selected\r\n let doSelect = function (nextRowIndex) {\r\n if (et.defaultSelection === 'row') {\r\n /* eslint-disable */\r\n slc.SelectRowByIndex(nextRowIndex);\r\n /* eslint-enable */\r\n } else {\r\n /* eslint-disable */\r\n et.ClearSelections();\r\n /* eslint-enable */\r\n let cellIndex = selectedElm.cellIndex,\r\n row = tf.dom().rows[nextRowIndex];\r\n if (et.defaultSelection === 'both') {\r\n /* eslint-disable */\r\n slc.SelectRowByIndex(nextRowIndex);\r\n /* eslint-enable */\r\n }\r\n if (row) {\r\n /* eslint-disable */\r\n slc.SelectCell(row.cells[cellIndex]);\r\n /* eslint-enable */\r\n }\r\n }\r\n //Table is filtered\r\n if (tf.validRowsIndex.length !== tf.getRowsNb()) {\r\n let r = tf.dom().rows[nextRowIndex];\r\n if (r) {\r\n r.scrollIntoView(false);\r\n }\r\n if (cell) {\r\n if (cell.cellIndex === (tf.getCellsNb() - 1) &&\r\n tf.gridLayout) {\r\n tf.tblCont.scrollLeft = 100000000;\r\n }\r\n else if (cell.cellIndex === 0 && tf.gridLayout) {\r\n tf.tblCont.scrollLeft = 0;\r\n } else {\r\n cell.scrollIntoView(false);\r\n }\r\n }\r\n }\r\n };\r\n\r\n //table is not filtered\r\n if (!tf.validRowsIndex) {\r\n return;\r\n }\r\n let validIndexes = tf.validRowsIndex,\r\n validIdxLen = validIndexes.length,\r\n row = et.defaultSelection !== 'row' ?\r\n selectedElm.parentNode : selectedElm,\r\n //cell for default_selection = 'both' or 'cell'\r\n cell = selectedElm.nodeName === 'TD' ? selectedElm : null,\r\n /* eslint-disable */\r\n keyCode = e !== undefined ? et.Event.GetKey(e) : 0,\r\n /* eslint-enable */\r\n isRowValid = validIndexes.indexOf(row.rowIndex) !== -1,\r\n nextRowIndex,\r\n paging = tf.feature('paging'),\r\n //pgup/pgdown keys\r\n d = keyCode === 34 || keyCode === 33 ?\r\n (paging && paging.pageLength || et.nbRowsPerPage) :\r\n 1;\r\n\r\n //If next row is not valid, next valid filtered row needs to be\r\n //calculated\r\n if (!isRowValid) {\r\n //Selection direction up/down\r\n if (row.rowIndex > _lastRowIndex) {\r\n //last row\r\n if (row.rowIndex >= validIndexes[validIdxLen - 1]) {\r\n nextRowIndex = validIndexes[validIdxLen - 1];\r\n } else {\r\n let calcRowIndex = (_lastValidRowIndex + d);\r\n if (calcRowIndex > (validIdxLen - 1)) {\r\n nextRowIndex = validIndexes[validIdxLen - 1];\r\n } else {\r\n nextRowIndex = validIndexes[calcRowIndex];\r\n }\r\n }\r\n } else {\r\n //first row\r\n if (row.rowIndex <= validIndexes[0]) {\r\n nextRowIndex = validIndexes[0];\r\n } else {\r\n let v = validIndexes[_lastValidRowIndex - d];\r\n nextRowIndex = v ? v : validIndexes[0];\r\n }\r\n }\r\n _lastRowIndex = row.rowIndex;\r\n doSelect(nextRowIndex);\r\n } else {\r\n //If filtered row is valid, special calculation for\r\n //pgup/pgdown keys\r\n if (keyCode !== 34 && keyCode !== 33) {\r\n _lastValidRowIndex = validIndexes.indexOf(row.rowIndex);\r\n _lastRowIndex = row.rowIndex;\r\n } else {\r\n if (keyCode === 34) { //pgdown\r\n //last row\r\n if ((_lastValidRowIndex + d) <= (validIdxLen - 1)) {\r\n nextRowIndex = validIndexes[\r\n _lastValidRowIndex + d];\r\n } else {\r\n nextRowIndex = [validIdxLen - 1];\r\n }\r\n } else { //pgup\r\n //first row\r\n if ((_lastValidRowIndex - d) <= validIndexes[0]) {\r\n nextRowIndex = validIndexes[0];\r\n } else {\r\n nextRowIndex = validIndexes[\r\n _lastValidRowIndex - d];\r\n }\r\n }\r\n _lastRowIndex = nextRowIndex;\r\n _lastValidRowIndex = validIndexes.indexOf(nextRowIndex);\r\n doSelect(nextRowIndex);\r\n }\r\n }\r\n };\r\n\r\n //Page navigation has to be enforced whenever selected row is out of\r\n //the current page range\r\n let onBeforeSelection = function (et, selectedElm) {\r\n let row = et.defaultSelection !== 'row' ?\r\n selectedElm.parentNode : selectedElm;\r\n if (tf.paging) {\r\n if (tf.feature('paging').nbPages > 1) {\r\n let paging = tf.feature('paging');\r\n //page length is re-assigned in case it has changed\r\n et.nbRowsPerPage = paging.pageLength;\r\n let validIndexes = tf.validRowsIndex,\r\n validIdxLen = validIndexes.length,\r\n pagingEndRow = parseInt(paging.startPagingRow, 10) +\r\n parseInt(paging.pageLength, 10);\r\n let rowIndex = row.rowIndex;\r\n\r\n if ((rowIndex === validIndexes[validIdxLen - 1]) &&\r\n paging.currentPageNb !== paging.nbPages) {\r\n paging.setPage('last');\r\n }\r\n else if ((rowIndex === validIndexes[0]) &&\r\n paging.currentPageNb !== 1) {\r\n paging.setPage('first');\r\n }\r\n else if (rowIndex > validIndexes[pagingEndRow - 1] &&\r\n rowIndex < validIndexes[validIdxLen - 1]) {\r\n paging.setPage('next');\r\n }\r\n else if (\r\n rowIndex < validIndexes[paging.startPagingRow] &&\r\n rowIndex > validIndexes[0]) {\r\n paging.setPage('previous');\r\n }\r\n }\r\n }\r\n };\r\n\r\n //Selected row needs to be visible when paging is activated\r\n if (tf.paging) {\r\n tf.feature('paging').onAfterChangePage = function (paging) {\r\n let advGrid = paging.tf.extension('advancedGrid');\r\n let et = advGrid._ezEditTable;\r\n let slc = et.Selection;\r\n /* eslint-disable */\r\n let row = slc.GetActiveRow();\r\n /* eslint-enable */\r\n if (row) {\r\n row.scrollIntoView(false);\r\n }\r\n /* eslint-disable */\r\n let cell = slc.GetActiveCell();\r\n /* eslint-enable */\r\n if (cell) {\r\n cell.scrollIntoView(false);\r\n }\r\n };\r\n }\r\n\r\n //Rows navigation when rows are filtered is performed with the\r\n //EditTable row selection callback events\r\n if (cfg.default_selection === 'row') {\r\n let fnB = cfg.on_before_selected_row;\r\n cfg.on_before_selected_row = function () {\r\n var args = arguments;\r\n onBeforeSelection(args[0], args[1], args[2]);\r\n if (fnB) {\r\n fnB.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n let fnA = cfg.on_after_selected_row;\r\n cfg.on_after_selected_row = function () {\r\n var args = arguments;\r\n onAfterSelection(args[0], args[1], args[2]);\r\n if (fnA) {\r\n fnA.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n } else {\r\n let fnD = cfg.on_before_selected_cell;\r\n cfg.on_before_selected_cell = function () {\r\n var args = arguments;\r\n onBeforeSelection(args[0], args[1], args[2]);\r\n if (fnD) {\r\n fnD.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n let fnC = cfg.on_after_selected_cell;\r\n cfg.on_after_selected_cell = function () {\r\n var args = arguments;\r\n onAfterSelection(args[0], args[1], args[2]);\r\n if (fnC) {\r\n fnC.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n }\r\n }\r\n if (editable) {\r\n //Added or removed rows, TF rows number needs to be re-calculated\r\n let fnE = cfg.on_added_dom_row;\r\n cfg.on_added_dom_row = function () {\r\n var args = arguments;\r\n tf.nbFilterableRows++;\r\n if (!tf.paging) {\r\n tf.emitter.emit('rows-changed', tf, this);\r\n } else {\r\n tf.nbFilterableRows++;\r\n tf.paging = false;\r\n tf.feature('paging').destroy();\r\n tf.feature('paging').reset();\r\n }\r\n if (tf.alternateRows) {\r\n tf.feature('alternateRows').init();\r\n }\r\n if (fnE) {\r\n fnE.call(null, args[0], args[1], args[2]);\r\n }\r\n };\r\n if (cfg.actions && cfg.actions['delete']) {\r\n let fnF = cfg.actions['delete'].on_after_submit;\r\n cfg.actions['delete'].on_after_submit = function () {\r\n var args = arguments;\r\n tf.nbFilterableRows--;\r\n if (!tf.paging) {\r\n tf.emitter.emit('rows-changed', tf, this);\r\n } else {\r\n tf.nbFilterableRows--;\r\n tf.paging = false;\r\n tf.feature('paging').destroy();\r\n tf.feature('paging').reset(false);\r\n }\r\n if (tf.alternateRows) {\r\n tf.feature('alternateRows').init();\r\n }\r\n if (fnF) {\r\n fnF.call(null, args[0], args[1]);\r\n }\r\n };\r\n }\r\n }\r\n\r\n try {\r\n /* eslint-disable */\r\n this._ezEditTable = new EditTable(tf.id, cfg, startRow);\r\n this._ezEditTable.Init();\r\n /* eslint-enable */\r\n } catch (e) { throw new Error(INSTANTIATION_ERROR); }\r\n\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset advanced grid when previously removed\r\n */\r\n reset() {\r\n let ezEditTable = this._ezEditTable;\r\n if (ezEditTable) {\r\n if (this.cfg.selection) {\r\n /* eslint-disable */\r\n ezEditTable.Selection.Set();\r\n /* eslint-enable */\r\n }\r\n if (this.cfg.editable) {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Set();\r\n /* eslint-enable */\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Toggle behaviour\r\n */\r\n toggle() {\r\n let ezEditTable = this._ezEditTable;\r\n if (ezEditTable.editable) {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Remove();\r\n /* eslint-enable */\r\n } else {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Set();\r\n /* eslint-enable */\r\n }\r\n if (ezEditTable.selection) {\r\n /* eslint-disable */\r\n ezEditTable.Selection.Remove();\r\n /* eslint-enable */\r\n } else {\r\n /* eslint-disable */\r\n ezEditTable.Selection.Set();\r\n /* eslint-enable */\r\n }\r\n }\r\n\r\n _toggleForInputFilter() {\r\n let tf = this.tf;\r\n if (!tf.getActiveFilterId()) {\r\n return;\r\n }\r\n let colIndex = tf.getColumnIndexFromFilterId(tf.getActiveFilterId());\r\n let filterType = tf.getFilterType(colIndex);\r\n if (filterType === INPUT) {\r\n this.toggle();\r\n }\r\n }\r\n\r\n /**\r\n * Remove advanced grid\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n let ezEditTable = this._ezEditTable;\r\n if (ezEditTable) {\r\n if (this.cfg.selection) {\r\n /* eslint-disable */\r\n ezEditTable.Selection.ClearSelections();\r\n ezEditTable.Selection.Remove();\r\n /* eslint-enable */\r\n }\r\n if (this.cfg.editable) {\r\n /* eslint-disable */\r\n ezEditTable.Editable.Remove();\r\n /* eslint-enable */\r\n }\r\n }\r\n\r\n this.emitter.off(['filter-focus', 'filter-blur'],\r\n () => this._toggleForInputFilter());\r\n this.initialized = false;\r\n }\r\n}\r\n","import AdapterSortableTable from './adapterSortabletable';\r\nimport {root} from '../../root';\r\n\r\nif (!root.SortableTable) {\r\n require('script-loader!sortabletable');\r\n}\r\n\r\nexport default AdapterSortableTable;\r\n","import {Feature} from '../../feature';\r\nimport {createElm, removeElm, elm} from '../../dom';\r\nimport {EMPTY_FN, isNull} from '../../types';\r\nimport {addEvt} from '../../event';\r\nimport {\r\n defaultsBool, defaultsStr, defaultsFn, defaultsNb,\r\n} from '../../settings';\r\nimport {RIGHT} from '../../modules/toolbar';\r\n\r\n/**\r\n * Filters Visibility extension\r\n */\r\nexport default class FiltersVisibility extends Feature {\r\n\r\n /**\r\n * Creates an instance of FiltersVisibility\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} Configuration object\r\n */\r\n constructor(tf, f) {\r\n super(tf, f.name);\r\n\r\n /**\r\n * Module name\r\n * @type {String}\r\n */\r\n this.name = f.name;\r\n\r\n /**\r\n * Module description\r\n * @type {String}\r\n */\r\n this.desc = defaultsStr(f.description,\r\n 'Filters row visibility manager');\r\n\r\n /**\r\n * Extension's stylesheet filename\r\n * @type {String}\r\n */\r\n this.stylesheet = defaultsStr(f.stylesheet , 'filtersVisibility.css');\r\n\r\n /**\r\n * Expand icon filename\r\n * @type {String}\r\n */\r\n this.icnExpand = defaultsStr(f.expand_icon_name, 'icn_exp.png');\r\n\r\n /**\r\n * Collapse icon filename\r\n * @type {String}\r\n */\r\n this.icnCollapse = defaultsStr(f.collapse_icon_name, 'icn_clp.png');\r\n\r\n /**\r\n * Main container element\r\n * @private\r\n */\r\n this.contEl = null;\r\n\r\n /**\r\n * Button element\r\n * @private\r\n */\r\n this.btnEl = null;\r\n\r\n /**\r\n * Expand icon HTML\r\n * @private\r\n */\r\n this.icnExpandHtml = '\"Expand';\r\n\r\n /**\r\n * Collapse icon HTML\r\n * @private\r\n */\r\n this.icnCollapseHtml = '\"Collapse';\r\n\r\n /**\r\n * Default text\r\n * @private\r\n */\r\n this.defaultText = 'Toggle filters';\r\n\r\n /**\r\n * ID of main container element\r\n * @type {String}\r\n */\r\n this.targetId = f.target_id || null;\r\n\r\n /**\r\n * Enable expand/collapse icon, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.enableIcon = defaultsBool(f.enable_icon, true);\r\n\r\n /**\r\n * Custom text for button\r\n * @type {String}\r\n */\r\n this.btnText = defaultsStr(f.btn_text, '');\r\n\r\n /**\r\n * Collapse button HTML\r\n * @private\r\n */\r\n this.collapseBtnHtml = this.enableIcon ?\r\n this.icnCollapseHtml + this.btnText :\r\n this.btnText || this.defaultText;\r\n\r\n /**\r\n * Expand button HTML\r\n * @private\r\n */\r\n this.expandBtnHtml = this.enableIcon ?\r\n this.icnExpandHtml + this.btnText :\r\n this.btnText || this.defaultText;\r\n\r\n /**\r\n * Button's custom HTML\r\n * @type {String}\r\n */\r\n this.btnHtml = defaultsStr(f.btn_html, null);\r\n\r\n /**\r\n * Css class for expand/collapse filters button\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class, 'btnExpClpFlt');\r\n\r\n /**\r\n * Css class for main container\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.cont_css_class, 'expClpFlt');\r\n\r\n /**\r\n * Filters row index\r\n * @type {Number}\r\n */\r\n this.filtersRowIndex = defaultsNb(f.filters_row_index,\r\n tf.getFiltersRowIndex());\r\n\r\n /**\r\n * Make filters visible at initialization, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.visibleAtStart = defaultsNb(f.visible_at_start, true);\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\r\n\r\n /**\r\n * Callback fired before filters row is shown\r\n * @type {Function}\r\n */\r\n this.onBeforeShow = defaultsFn(f.on_before_show, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after filters row is shown\r\n * @type {Function}\r\n */\r\n this.onAfterShow = defaultsFn(f.on_after_show, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before filters row is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeHide = defaultsFn(f.on_before_hide, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after filters row is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterHide = defaultsFn(f.on_after_hide, EMPTY_FN);\r\n\r\n //Import extension's stylesheet\r\n tf.import(f.name + 'Style', tf.getStylePath() + this.stylesheet, null,\r\n 'link');\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initialise extension\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-extension', this,\r\n !isNull(this.targetId));\r\n\r\n this.buildUI();\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.on(['show-filters'], (tf, visible) => this.show(visible));\r\n this.emitter.emit('filters-visibility-initialized', this.tf, this);\r\n this.emitter.emit('extension-initialized', this);\r\n }\r\n\r\n /**\r\n * Build UI elements\r\n */\r\n buildUI() {\r\n let tf = this.tf;\r\n let span = createElm('span');\r\n span.className = this.contCssClass;\r\n\r\n // Container element (rdiv or custom element)\r\n let targetEl = !this.targetId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.targetId);\r\n\r\n if (!this.targetId) {\r\n let firstChild = targetEl.firstChild;\r\n firstChild.parentNode.insertBefore(span, firstChild);\r\n } else {\r\n targetEl.appendChild(span);\r\n }\r\n\r\n let btn;\r\n if (!this.btnHtml) {\r\n btn = createElm('a', ['href', 'javascript:void(0);']);\r\n btn.className = this.btnCssClass;\r\n btn.title = this.btnText || this.defaultText;\r\n btn.innerHTML = this.collapseBtnHtml;\r\n span.appendChild(btn);\r\n } else { // Custom html\r\n span.innerHTML = this.btnHtml;\r\n btn = span.firstChild;\r\n }\r\n\r\n addEvt(btn, 'click', () => this.toggle());\r\n\r\n this.contEl = span;\r\n this.btnEl = btn;\r\n\r\n if (!this.visibleAtStart) {\r\n this.toggle();\r\n }\r\n }\r\n\r\n /**\r\n * Toggle filters visibility\r\n */\r\n toggle() {\r\n let tf = this.tf;\r\n let tbl = tf.gridLayout ? tf.feature('gridLayout').headTbl : tf.dom();\r\n let fltRow = tbl.rows[this.filtersRowIndex];\r\n let isDisplayed = fltRow.style.display === '';\r\n\r\n this.show(!isDisplayed);\r\n }\r\n\r\n /**\r\n * Show or hide filters\r\n *\r\n * @param {boolean} [visible=true] Visibility flag\r\n */\r\n show(visible = true) {\r\n let tf = this.tf;\r\n let tbl = tf.gridLayout ? tf.feature('gridLayout').headTbl : tf.dom();\r\n let fltRow = tbl.rows[this.filtersRowIndex];\r\n\r\n if (visible) {\r\n this.onBeforeShow(this);\r\n }\r\n if (!visible) {\r\n this.onBeforeHide(this);\r\n }\r\n\r\n fltRow.style.display = visible ? '' : 'none';\r\n if (this.enableIcon && !this.btnHtml) {\r\n this.btnEl.innerHTML = visible ?\r\n this.collapseBtnHtml : this.expandBtnHtml;\r\n }\r\n\r\n if (visible) {\r\n this.onAfterShow(this);\r\n }\r\n if (!visible) {\r\n this.onAfterHide(this);\r\n }\r\n\r\n this.emitter.emit('filters-toggled', tf, this, visible);\r\n }\r\n\r\n /**\r\n * Destroy the UI\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.off(['show-filters'], (tf, visible) => this.show(visible));\r\n\r\n this.btnEl.innerHTML = '';\r\n removeElm(this.btnEl);\r\n this.btnEl = null;\r\n\r\n this.contEl.innerHTML = '';\r\n removeElm(this.contEl);\r\n this.contEl = null;\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n","import {Feature} from '../../feature';\r\nimport {\r\n addClass, removeClass, createCheckItem, createElm, elm, removeElm,\r\n getText, tag\r\n} from '../../dom';\r\nimport {isUndef, EMPTY_FN, isNull} from '../../types';\r\nimport {addEvt, targetEvt, removeEvt} from '../../event';\r\nimport {root} from '../../root';\r\nimport {NONE} from '../../const';\r\nimport {\r\n defaultsBool, defaultsStr, defaultsFn, defaultsNb, defaultsArr\r\n} from '../../settings';\r\nimport {RIGHT} from '../../modules/toolbar';\r\n\r\n/**\r\n * Columns Visibility extension\r\n */\r\nexport default class ColsVisibility extends Feature {\r\n\r\n /**\r\n * Creates an instance of ColsVisibility\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} Configuration object\r\n */\r\n constructor(tf, f) {\r\n super(tf, f.name);\r\n\r\n // Configuration object\r\n let cfg = this.config;\r\n\r\n /**\r\n * Module name\r\n * @type {String}\r\n */\r\n this.name = f.name;\r\n\r\n /**\r\n * Module description\r\n * @type {String}\r\n */\r\n this.desc = defaultsStr(f.description, 'Columns visibility manager');\r\n\r\n /**\r\n * show/hide columns container element\r\n * @private\r\n */\r\n this.spanEl = null;\r\n\r\n /**\r\n * show/hide columns button element\r\n * @private\r\n */\r\n this.btnEl = null;\r\n\r\n /**\r\n * show/hide columns main container element\r\n * @private\r\n */\r\n this.contEl = null;\r\n\r\n /**\r\n * Enable tick to hide a column, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.tickToHide = defaultsBool(f.tick_to_hide, true);\r\n\r\n /**\r\n * Enable columns manager UI, defaults to true\r\n * @type {Boolean}\r\n */\r\n this.manager = defaultsBool(f.manager, true);\r\n\r\n /**\r\n * Headers HTML table reference only if headers are external\r\n * @type {DOMElement}\r\n */\r\n this.headersTbl = f.headers_table || null;\r\n\r\n /**\r\n * Headers row index only if headers are external\r\n * @type {Number}\r\n */\r\n this.headersIndex = defaultsNb(f.headers_index, 1);\r\n\r\n /**\r\n * ID of main container element\r\n * @type {String}\r\n */\r\n this.contElTgtId = defaultsStr(f.container_target_id, null);\r\n\r\n /**\r\n * Alternative text for column headers in column manager UI\r\n * @type {Array}\r\n */\r\n this.headersText = defaultsArr(f.headers_text, []);\r\n\r\n /**\r\n * ID of button's container element\r\n * @type {String}\r\n */\r\n this.btnTgtId = defaultsStr(f.btn_target_id, null);\r\n\r\n /**\r\n * Button's text, defaults to Columns▼\r\n * @type {String}\r\n */\r\n this.btnText = defaultsStr(f.btn_text, 'Columns▼');\r\n\r\n /**\r\n * Button's inner HTML\r\n * @type {String}\r\n */\r\n this.btnHtml = defaultsStr(f.btn_html, null);\r\n\r\n /**\r\n * Css class for button\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class, 'colVis');\r\n\r\n /**\r\n * Columns manager UI close link text, defaults to 'Close'\r\n * @type {String}\r\n */\r\n this.btnCloseText = defaultsStr(f.btn_close_text, 'Close');\r\n\r\n /**\r\n * Columns manager UI close link HTML\r\n * @type {String}\r\n */\r\n this.btnCloseHtml = defaultsStr(f.btn_close_html, null);\r\n\r\n /**\r\n * Css for columns manager UI close link\r\n * @type {String}\r\n */\r\n this.btnCloseCssClass = defaultsStr(f.btn_close_css_class,\r\n this.btnCssClass);\r\n\r\n /**\r\n * Extension's stylesheet filename\r\n * @type {String}\r\n */\r\n this.stylesheet = defaultsStr(f.stylesheet, 'colsVisibility.css');\r\n\r\n /**\r\n * Css for columns manager UI span\r\n * @type {String}\r\n */\r\n this.spanCssClass = defaultsStr(f.span_css_class, 'colVisSpan');\r\n\r\n /**\r\n * Css for columns manager UI main container\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.cont_css_class, 'colVisCont');\r\n\r\n /**\r\n * Css for columns manager UI checklist (ul)\r\n * @type {String}\r\n */\r\n this.listCssClass = defaultsStr(cfg.list_css_class, 'cols_checklist');\r\n\r\n /**\r\n * Css for columns manager UI checklist item (li)\r\n * @type {String}\r\n */\r\n this.listItemCssClass = defaultsStr(cfg.checklist_item_css_class,\r\n 'cols_checklist_item');\r\n\r\n /**\r\n * Css for columns manager UI checklist item selected state (li)\r\n * @type {String}\r\n */\r\n this.listSlcItemCssClass = defaultsStr(\r\n cfg.checklist_selected_item_css_class,\r\n 'cols_checklist_slc_item'\r\n );\r\n\r\n /**\r\n * Text preceding the columns list, defaults to 'Hide' or 'Show'\r\n * depending on tick mode (tick_to_hide option)\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, this.tickToHide ? 'Hide: ' : 'Show: ');\r\n\r\n /**\r\n * List of columns indexes to be hidden at initialization\r\n * @type {Array}\r\n */\r\n this.atStart = defaultsArr(f.at_start, []);\r\n\r\n /**\r\n * Enable hover behaviour on columns manager button/link\r\n * @type {Boolean}\r\n */\r\n this.enableHover = Boolean(f.enable_hover);\r\n\r\n /**\r\n * Enable select all option, disabled by default\r\n * @type {Boolean}\r\n */\r\n this.enableTickAll = Boolean(f.enable_tick_all);\r\n\r\n /**\r\n * Text for select all option, defaults to 'Select all:'\r\n * @type {String}\r\n */\r\n this.tickAllText = defaultsStr(f.tick_all_text, 'Select all:');\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\r\n\r\n /**\r\n * List of indexes of hidden columns\r\n * @private\r\n */\r\n this.hiddenCols = [];\r\n\r\n /**\r\n * Bound mouseup wrapper\r\n * @private\r\n */\r\n this.boundMouseup = null;\r\n\r\n /**\r\n * Callback fired when the extension is initialized\r\n * @type {Function}\r\n */\r\n this.onLoaded = defaultsFn(f.on_loaded, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before the columns manager is opened\r\n * @type {Function}\r\n */\r\n this.onBeforeOpen = defaultsFn(f.on_before_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the columns manager is opened\r\n * @type {Function}\r\n */\r\n this.onAfterOpen = defaultsFn(f.on_after_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before the columns manager is closed\r\n * @type {Function}\r\n */\r\n this.onBeforeClose = defaultsFn(f.on_before_close, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the columns manager is closed\r\n * @type {Function}\r\n */\r\n this.onAfterClose = defaultsFn(f.on_after_close, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before a column is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeColHidden = defaultsFn(f.on_before_col_hidden, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a column is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterColHidden = defaultsFn(f.on_after_col_hidden, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before a column is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeColDisplayed = defaultsFn(f.on_before_col_displayed,\r\n EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a column is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterColDisplayed = defaultsFn(f.on_after_col_displayed,\r\n EMPTY_FN);\r\n\r\n //Grid layout support\r\n if (tf.gridLayout) {\r\n this.headersTbl = tf.feature('gridLayout').headTbl; //headers table\r\n this.headersIndex = 0; //headers index\r\n }\r\n\r\n //Loads extension stylesheet\r\n tf.import(f.name + 'Style', tf.getStylePath() + this.stylesheet, null,\r\n 'link');\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n let targetElm = targetEvt(evt);\r\n\r\n while (targetElm && targetElm !== this.contEl\r\n && targetElm !== this.btnEl) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== this.contEl && targetElm !== this.btnEl) {\r\n this.toggle();\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Toggle columns manager UI\r\n */\r\n toggle() {\r\n // ensure mouseup event handler is removed\r\n removeEvt(root, 'mouseup', this.boundMouseup);\r\n\r\n let contDisplay = this.contEl.style.display;\r\n\r\n if (contDisplay !== 'inline') {\r\n this.onBeforeOpen(this);\r\n }\r\n if (contDisplay === 'inline') {\r\n this.onBeforeClose(this);\r\n }\r\n\r\n this.contEl.style.display = contDisplay === 'inline' ?\r\n NONE : 'inline';\r\n\r\n if (contDisplay !== 'inline') {\r\n this.onAfterOpen(this);\r\n addEvt(root, 'mouseup', this.boundMouseup);\r\n }\r\n if (contDisplay === 'inline') {\r\n this.onAfterClose(this);\r\n }\r\n }\r\n\r\n /**\r\n * Check an item in columns manager UI\r\n * @private\r\n */\r\n checkItem(lbl) {\r\n let li = lbl.parentNode;\r\n if (!li || !lbl) {\r\n return;\r\n }\r\n let isChecked = lbl.firstChild.checked;\r\n let colIndex = lbl.firstChild.getAttribute('id').split('_')[1];\r\n colIndex = parseInt(colIndex, 10);\r\n if (isChecked) {\r\n addClass(li, this.listSlcItemCssClass);\r\n } else {\r\n removeClass(li, this.listSlcItemCssClass);\r\n }\r\n\r\n let hide = false;\r\n if ((this.tickToHide && isChecked) ||\r\n (!this.tickToHide && !isChecked)) {\r\n hide = true;\r\n }\r\n this.setHidden(colIndex, hide);\r\n }\r\n\r\n /**\r\n * Initializes ColsVisibility instance\r\n */\r\n init() {\r\n if (this.initialized || !this.manager) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-extension', this,\r\n !isNull(this.btnTgtId));\r\n\r\n this.emitter.on(['hide-column'],\r\n (tf, colIndex) => this.hideCol(colIndex));\r\n\r\n this.buildBtn();\r\n this.buildManager();\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.boundMouseup = this.onMouseup.bind(this);\r\n\r\n this.emitter.emit('columns-visibility-initialized', this.tf, this);\r\n this.emitter.emit('extension-initialized', this);\r\n\r\n // Hide columns at start at very end of initialization, do not move\r\n // as order is important\r\n this._hideAtStart();\r\n }\r\n\r\n /**\r\n * Build main button UI\r\n */\r\n buildBtn() {\r\n if (this.btnEl) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let span = createElm('span');\r\n span.className = this.spanCssClass;\r\n\r\n // Container element (rdiv or custom element)\r\n let targetEl = !this.btnTgtId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.btnTgtId);\r\n\r\n if (!this.btnTgtId) {\r\n let firstChild = targetEl.firstChild;\r\n firstChild.parentNode.insertBefore(span, firstChild);\r\n } else {\r\n targetEl.appendChild(span);\r\n }\r\n\r\n if (!this.btnHtml) {\r\n let btn = createElm('a', ['href', 'javascript:;']);\r\n btn.className = this.btnCssClass;\r\n btn.title = this.desc;\r\n\r\n btn.innerHTML = this.btnText;\r\n span.appendChild(btn);\r\n if (!this.enableHover) {\r\n addEvt(btn, 'click', (evt) => this.toggle(evt));\r\n } else {\r\n addEvt(btn, 'mouseover', (evt) => this.toggle(evt));\r\n }\r\n } else { // Custom html\r\n span.innerHTML = this.btnHtml;\r\n let colVisEl = span.firstChild;\r\n if (!this.enableHover) {\r\n addEvt(colVisEl, 'click', (evt) => this.toggle(evt));\r\n } else {\r\n addEvt(colVisEl, 'mouseover', (evt) => this.toggle(evt));\r\n }\r\n }\r\n\r\n this.spanEl = span;\r\n this.btnEl = this.spanEl.firstChild;\r\n\r\n this.onLoaded(this);\r\n }\r\n\r\n /**\r\n * Build columns manager UI\r\n */\r\n buildManager() {\r\n let tf = this.tf;\r\n\r\n let container = !this.contElTgtId ?\r\n createElm('div') :\r\n elm(this.contElTgtId);\r\n container.className = this.contCssClass;\r\n\r\n //Extension description\r\n let extNameLabel = createElm('p');\r\n extNameLabel.innerHTML = this.text;\r\n container.appendChild(extNameLabel);\r\n\r\n //Headers list\r\n let ul = createElm('ul');\r\n ul.className = this.listCssClass;\r\n\r\n let tbl = this.headersTbl || tf.dom();\r\n let headerIndex = this.headersTbl ?\r\n this.headersIndex : tf.getHeadersRowIndex();\r\n let headerRow = tbl.rows[headerIndex];\r\n\r\n //Tick all option\r\n if (this.enableTickAll) {\r\n let li = createCheckItem('col__' + tf.id, this.tickAllText,\r\n this.tickAllText);\r\n addClass(li, this.listItemCssClass);\r\n ul.appendChild(li);\r\n li.check.checked = !this.tickToHide;\r\n\r\n addEvt(li.check, 'click', () => {\r\n for (let h = 0; h < headerRow.cells.length; h++) {\r\n let itm = elm('col_' + h + '_' + tf.id);\r\n if (itm && li.check.checked !== itm.checked) {\r\n itm.click();\r\n itm.checked = li.check.checked;\r\n }\r\n }\r\n });\r\n }\r\n\r\n for (let i = 0; i < headerRow.cells.length; i++) {\r\n let cell = headerRow.cells[i];\r\n let cellText = this.headersText[i] || this._getHeaderText(cell);\r\n let liElm = createCheckItem('col_' + i + '_' + tf.id, cellText,\r\n cellText);\r\n addClass(liElm, this.listItemCssClass);\r\n if (!this.tickToHide) {\r\n addClass(liElm, this.listSlcItemCssClass);\r\n }\r\n ul.appendChild(liElm);\r\n if (!this.tickToHide) {\r\n liElm.check.checked = true;\r\n }\r\n\r\n addEvt(liElm.check, 'click', (evt) => {\r\n let elm = targetEvt(evt);\r\n let lbl = elm.parentNode;\r\n this.checkItem(lbl);\r\n });\r\n }\r\n\r\n //separator\r\n let p = createElm('p', ['align', 'center']);\r\n let btn;\r\n //Close link\r\n if (!this.btnCloseHtml) {\r\n btn = createElm('a', ['href', 'javascript:;']);\r\n btn.className = this.btnCloseCssClass;\r\n btn.innerHTML = this.btnCloseText;\r\n addEvt(btn, 'click', (evt) => this.toggle(evt));\r\n p.appendChild(btn);\r\n } else {\r\n p.innerHTML = this.btnCloseHtml;\r\n btn = p.firstChild;\r\n addEvt(btn, 'click', (evt) => this.toggle(evt));\r\n }\r\n\r\n container.appendChild(ul);\r\n container.appendChild(p);\r\n\r\n this.btnEl.parentNode.insertBefore(container, this.btnEl);\r\n this.contEl = container;\r\n }\r\n\r\n /**\r\n * Hide or show specified columns\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} hide Hide column if true or show if false\r\n */\r\n setHidden(colIndex, hide) {\r\n let tf = this.tf;\r\n let tbl = tf.dom();\r\n\r\n if (hide) {\r\n this.onBeforeColHidden(this, colIndex);\r\n } else {\r\n this.onBeforeColDisplayed(this, colIndex);\r\n }\r\n\r\n this._hideElements(tbl, colIndex, hide);\r\n if (this.headersTbl) {\r\n this._hideElements(this.headersTbl, colIndex, hide);\r\n }\r\n\r\n let hiddenCols = this.hiddenCols;\r\n let itemIndex = hiddenCols.indexOf(colIndex);\r\n if (hide) {\r\n if (itemIndex === -1) {\r\n this.hiddenCols.push(colIndex);\r\n }\r\n } else {\r\n if (itemIndex !== -1) {\r\n this.hiddenCols.splice(itemIndex, 1);\r\n }\r\n }\r\n\r\n if (hide) {\r\n this.onAfterColHidden(this, colIndex);\r\n this.emitter.emit('column-hidden', tf, this, colIndex,\r\n this.hiddenCols);\r\n } else {\r\n this.onAfterColDisplayed(this, colIndex);\r\n this.emitter.emit('column-shown', tf, this, colIndex,\r\n this.hiddenCols);\r\n }\r\n }\r\n\r\n /**\r\n * Show specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n showCol(colIndex) {\r\n if (isUndef(colIndex) || !this.isColHidden(colIndex)) {\r\n return;\r\n }\r\n if (this.manager && this.contEl) {\r\n let itm = elm('col_' + colIndex + '_' + this.tf.id);\r\n if (itm) {\r\n itm.click();\r\n }\r\n } else {\r\n this.setHidden(colIndex, false);\r\n }\r\n }\r\n\r\n /**\r\n * Hide specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n hideCol(colIndex) {\r\n if (isUndef(colIndex) || this.isColHidden(colIndex)) {\r\n return;\r\n }\r\n if (this.manager && this.contEl) {\r\n let itm = elm('col_' + colIndex + '_' + this.tf.id);\r\n if (itm) {\r\n itm.click();\r\n }\r\n } else {\r\n this.setHidden(colIndex, true);\r\n }\r\n }\r\n\r\n /**\r\n * Determine if specified column is hidden\r\n * @param {Number} colIndex Column index\r\n */\r\n isColHidden(colIndex) {\r\n if (this.hiddenCols.indexOf(colIndex) !== -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Toggle visibility of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n toggleCol(colIndex) {\r\n if (isUndef(colIndex) || this.isColHidden(colIndex)) {\r\n this.showCol(colIndex);\r\n } else {\r\n this.hideCol(colIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Return the indexes of the columns currently hidden\r\n * @return {Array} column indexes\r\n */\r\n getHiddenCols() {\r\n return this.hiddenCols;\r\n }\r\n\r\n /**\r\n * Remove the columns manager\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n if (elm(this.contElTgtId)) {\r\n elm(this.contElTgtId).innerHTML = '';\r\n } else {\r\n this.contEl.innerHTML = '';\r\n removeElm(this.contEl);\r\n this.contEl = null;\r\n }\r\n this.btnEl.innerHTML = '';\r\n removeElm(this.btnEl);\r\n this.btnEl = null;\r\n\r\n this.emitter.off(['hide-column'],\r\n (tf, colIndex) => this.hideCol(colIndex));\r\n\r\n this.boundMouseup = null;\r\n\r\n this.initialized = false;\r\n }\r\n\r\n _getHeaderText(cell) {\r\n if (!cell.hasChildNodes) {\r\n return '';\r\n }\r\n\r\n for (let i = 0; i < cell.childNodes.length; i++) {\r\n let n = cell.childNodes[i];\r\n if (n.nodeType === 3) {\r\n return n.nodeValue;\r\n } else if (n.nodeType === 1) {\r\n if (n.id && n.id.indexOf('popUp') !== -1) {\r\n continue;\r\n } else {\r\n return getText(n);\r\n }\r\n }\r\n continue;\r\n }\r\n return '';\r\n }\r\n\r\n _hideElements(tbl, colIdx, hide) {\r\n this._hideCells(tbl, colIdx, hide);\r\n this._hideCol(tbl, colIdx, hide);\r\n }\r\n\r\n _hideCells(tbl, colIdx, hide) {\r\n for (let i = 0; i < tbl.rows.length; i++) {\r\n let row = tbl.rows[i];\r\n let cell = row.cells[colIdx];\r\n if (cell) {\r\n cell.style.display = hide ? NONE : '';\r\n }\r\n }\r\n }\r\n\r\n _hideCol(tbl, colIdx, hide) {\r\n let colElms = tag(tbl, 'col');\r\n if (colElms.length === 0) {\r\n return;\r\n }\r\n colElms[colIdx].style.display = hide ? NONE : '';\r\n }\r\n\r\n _hideAtStart() {\r\n this.atStart.forEach((colIdx) => {\r\n this.hideCol(colIdx);\r\n });\r\n }\r\n}\r\n","import {Feature} from '../../feature';\r\nimport {createText, elm} from '../../dom';\r\nimport {isArray, isEmpty, EMPTY_FN} from '../../types';\r\nimport {numSortAsc} from '../../sort';\r\nimport {FORMATTED_NUMBER} from '../../const';\r\nimport formatNumber from 'format-number';\r\nimport {defaultsFn, defaultsArr} from '../../settings';\r\nimport {bound} from '../../event';\r\n\r\nconst EVENTS = [\r\n 'after-filtering',\r\n 'after-page-change',\r\n 'after-page-length-change'\r\n];\r\n\r\nconst SUM = 'sum';\r\nconst MEAN = 'mean';\r\nconst MIN = 'min';\r\nconst MAX = 'max';\r\nconst MEDIAN = 'median';\r\nconst Q1 = 'q1';\r\nconst Q3 = 'q3';\r\n\r\n/**\r\n * Column calculations extension\r\n */\r\nexport default class ColOps extends Feature {\r\n\r\n /**\r\n * Creates an instance of ColOps\r\n *\r\n * @param {TableFilter} tf TableFilter instance\r\n * @param {Object} opts Configuration object\r\n */\r\n constructor(tf, opts) {\r\n super(tf, opts.name);\r\n\r\n /**\r\n * Callback fired before columns operations start\r\n * @type {Function}\r\n */\r\n this.onBeforeOperation = defaultsFn(opts.on_before_operation, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after columns operations are completed\r\n * @type {Function}\r\n */\r\n this.onAfterOperation = defaultsFn(opts.on_after_operation, EMPTY_FN);\r\n\r\n /**\r\n * Configuration options\r\n * @type {Object}\r\n */\r\n this.opts = opts;\r\n\r\n /**\r\n * List of DOM element IDs containing column's calculation result\r\n * @type {Array}\r\n */\r\n this.labelIds = defaultsArr(opts.id, []);\r\n\r\n /**\r\n * List of columns' indexes for calculations\r\n * @type {Array}\r\n */\r\n this.colIndexes = defaultsArr(opts.col, []);\r\n\r\n /**\r\n * List of operations - possible values: 'sum', 'mean', 'min', 'max',\r\n * 'median', 'q1', 'q3'\r\n * @type {Array}\r\n */\r\n this.operations = defaultsArr(opts.operation, []);\r\n\r\n /**\r\n * List of write methods used to write the result - possible values:\r\n * 'innerHTML', 'setValue', 'createTextNode'\r\n * @type {Array}\r\n */\r\n this.outputTypes = defaultsArr(opts.write_method, []);\r\n\r\n /**\r\n * List of format objects used for formatting the result -\r\n * refer to https://github.com/componitable/format-number to check\r\n * configuration options\r\n * @type {Array}\r\n */\r\n this.formatResults = defaultsArr(opts.format_result, []);\r\n\r\n /**\r\n * List of row indexes displaying the results\r\n * @type {Array}\r\n */\r\n this.totRowIndexes = defaultsArr(opts.tot_row_index, []);\r\n\r\n /**\r\n * List of row indexes excluded from calculations\r\n * @type {Array}\r\n */\r\n this.excludeRows = defaultsArr(opts.exclude_row, []);\r\n\r\n /**\r\n * List of decimal precision for calculation results\r\n * @type {Array}\r\n */\r\n this.decimalPrecisions = defaultsArr(opts.decimal_precision, 2);\r\n\r\n this.enable();\r\n }\r\n\r\n /**\r\n * Initializes ColOps instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n // subscribe to events\r\n this.emitter.on(EVENTS, bound(this.calcAll, this));\r\n\r\n this.calcAll();\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Calculates columns' values\r\n * Configuration options are stored in 'opts' property\r\n * - 'id' contains ids of elements showing result (array)\r\n * - 'col' contains the columns' indexes (array)\r\n * - 'operation' contains operation type (array, values: 'sum', 'mean',\r\n * 'min', 'max', 'median', 'q1', 'q3')\r\n * - 'write_method' array defines which method to use for displaying the\r\n * result (innerHTML, setValue, createTextNode) - default: 'innerHTML'\r\n * - 'tot_row_index' defines in which row results are displayed\r\n * (integers array)\r\n *\r\n * - changes made by Nuovella:\r\n * (1) optimized the routine (now it will only process each column once),\r\n * (2) added calculations for the median, lower and upper quartile.\r\n */\r\n calcAll() {\r\n let tf = this.tf;\r\n if (!tf.isInitialized()) {\r\n return;\r\n }\r\n\r\n this.onBeforeOperation(tf, this);\r\n this.emitter.emit('before-column-operation', tf, this);\r\n\r\n let { colIndexes, operations: colOperations, outputTypes,\r\n totRowIndexes, excludeRows, formatResults,\r\n decimalPrecisions } = this;\r\n\r\n //nuovella: determine unique list of columns to operate on\r\n let uIndexes = [];\r\n colIndexes.forEach((val) => {\r\n if (uIndexes.indexOf(val) === -1) {\r\n uIndexes.push(val);\r\n }\r\n });\r\n\r\n let nbCols = uIndexes.length,\r\n rows = tf.dom().rows,\r\n colValues = [];\r\n\r\n for (let u = 0; u < nbCols; u++) {\r\n //this retrieves col values\r\n //use uIndexes because we only want to pass through this loop\r\n //once for each column get the values in this unique column\r\n colValues.push(\r\n tf.getVisibleColumnData(uIndexes[u], false, excludeRows)\r\n );\r\n\r\n let curValues = colValues[u];\r\n\r\n //next: calculate all operations for this column\r\n let result = 0,\r\n operations = [],\r\n precisions = [],\r\n labels = [],\r\n writeType,\r\n formatResult = [],\r\n idx = 0;\r\n\r\n for (let k = 0; k < colIndexes.length; k++) {\r\n if (colIndexes[k] !== uIndexes[u]) {\r\n continue;\r\n }\r\n operations[idx] = (colOperations[k] || 'sum').toLowerCase();\r\n precisions[idx] = decimalPrecisions[k];\r\n labels[idx] = this.labelIds[k];\r\n writeType = isArray(outputTypes) ? outputTypes[k] : null;\r\n formatResult[idx] =\r\n this.configureFormat(uIndexes[u], formatResults[k]);\r\n idx++;\r\n }\r\n\r\n for (let i = 0; i < idx; i++) {\r\n // emit values before column calculation\r\n this.emitter.emit(\r\n 'before-column-calc',\r\n tf,\r\n this,\r\n uIndexes[u],\r\n curValues,\r\n operations[i],\r\n precisions[i]\r\n );\r\n\r\n result = Number(this.calc(curValues, operations[i], null));\r\n\r\n // emit column calculation result\r\n this.emitter.emit(\r\n 'column-calc',\r\n tf,\r\n this,\r\n uIndexes[u],\r\n result,\r\n operations[i],\r\n precisions[i]\r\n );\r\n\r\n // write result in expected DOM element\r\n this.writeResult(\r\n result,\r\n labels[i],\r\n writeType,\r\n precisions[i],\r\n formatResult[i]\r\n );\r\n\r\n }//for i\r\n\r\n // row(s) with result are always visible\r\n let totRow = totRowIndexes && totRowIndexes[u] ?\r\n rows[totRowIndexes[u]] : null;\r\n if (totRow) {\r\n totRow.style.display = '';\r\n }\r\n }//for u\r\n\r\n this.onAfterOperation(tf, this);\r\n this.emitter.emit('after-column-operation', tf, this);\r\n }\r\n\r\n /**\r\n * Make desired calculation on specified column.\r\n * @param {Number} colIndex Column index\r\n * @param {String} [operation=SUM] Operation type\r\n * @param {Number} precision Decimal precision\r\n * @returns {Number}\r\n */\r\n columnCalc(colIndex, operation = SUM, precision) {\r\n let excludeRows = this.excludeRows || [];\r\n let colValues = tf.getVisibleColumnData(colIndex, false, excludeRows);\r\n\r\n return Number(this.calc(colValues, operation, precision));\r\n }\r\n\r\n /**\r\n * Make calculation on passed values.\r\n * @param {Array} values List of values\r\n * @param {String} [operation=SUM] Optional operation type\r\n * @param {Number} precision Optional result precision\r\n * @returns {Number}\r\n * @private\r\n */\r\n calc(colValues, operation = SUM, precision) {\r\n let result = 0;\r\n\r\n if (operation === Q1 || operation === Q3 || operation === MEDIAN) {\r\n colValues = this.sortColumnValues(colValues, numSortAsc);\r\n }\r\n\r\n switch (operation) {\r\n case MEAN:\r\n result = this.calcMean(colValues);\r\n break;\r\n case SUM:\r\n result = this.calcSum(colValues);\r\n break;\r\n case MIN:\r\n result = this.calcMin(colValues);\r\n break;\r\n case MAX:\r\n result = this.calcMax(colValues);\r\n break;\r\n case MEDIAN:\r\n result = this.calcMedian(colValues);\r\n break;\r\n case Q1:\r\n result = this.calcQ1(colValues);\r\n break;\r\n case Q3:\r\n result = this.calcQ3(colValues);\r\n break;\r\n }\r\n\r\n return isEmpty(precision) ? result : result.toFixed(precision);\r\n }\r\n\r\n /**\r\n * Calculate the sum of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcSum(values = []) {\r\n if (isEmpty(values)) {\r\n return 0;\r\n }\r\n let result = values.reduce((x, y) => Number(x) + Number(y));\r\n return result;\r\n }\r\n\r\n /**\r\n * Calculate the mean of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMean(values = []) {\r\n let result = this.calcSum(values) / values.length;\r\n return Number(result);\r\n }\r\n\r\n /**\r\n * Calculate the max value of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMax(values = []) {\r\n return Math.max.apply(null, values);\r\n }\r\n\r\n /**\r\n * Calculate the min value of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMin(values = []) {\r\n return Math.min.apply(null, values);\r\n }\r\n\r\n /**\r\n * Calculate the median of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcMedian(values = []) {\r\n let nbValues = values.length;\r\n let aux = 0;\r\n if (nbValues % 2 === 1) {\r\n aux = Math.floor(nbValues / 2);\r\n return Number(values[aux]);\r\n }\r\n return (Number(values[nbValues / 2]) +\r\n Number(values[((nbValues / 2) - 1)])) / 2;\r\n }\r\n\r\n /**\r\n * Calculate the lower quartile of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcQ1(values = []) {\r\n let nbValues = values.length;\r\n let posa = 0.0;\r\n posa = Math.floor(nbValues / 4);\r\n if (4 * posa === nbValues) {\r\n return (Number(values[posa - 1]) +\r\n Number(values[posa])) / 2;\r\n }\r\n return Number(values[posa]);\r\n }\r\n\r\n /**\r\n * Calculate the upper quartile of passed values.\r\n * @param {Array} [values=[]] List of values\r\n * @returns {Number}\r\n */\r\n calcQ3(values = []) {\r\n let nbValues = values.length;\r\n let posa = 0.0;\r\n let posb = 0.0;\r\n posa = Math.floor(nbValues / 4);\r\n if (4 * posa === nbValues) {\r\n posb = 3 * posa;\r\n return (Number(values[posb]) +\r\n Number(values[posb - 1])) / 2;\r\n }\r\n return Number(values[nbValues - posa - 1]);\r\n }\r\n\r\n /**\r\n * Sort passed values with supplied sorter function.\r\n * @param {Array} [values=[]] List of values to be sorted\r\n * @param {Function} sorter Sorter function\r\n * @returns {Array}\r\n */\r\n sortColumnValues(values = [], sorter) {\r\n return values.sort(sorter);\r\n }\r\n\r\n /**\r\n * Write calculation result in passed DOM element with supplied write method\r\n * and decimal precision.\r\n * @param {Number} [result=0] Calculation result\r\n * @param {DOMElement} label DOM element\r\n * @param {String} [writeType='innerhtml'] Write method\r\n * @param {Number} [precision=2] Applied decimal precision\r\n * @private\r\n */\r\n writeResult(result = 0, label, writeType = 'innerhtml',\r\n precision = 2, format = {}) {\r\n let labelElm = elm(label);\r\n\r\n if (!labelElm) {\r\n return;\r\n }\r\n\r\n result = result.toFixed(precision);\r\n if (isNaN(result) || !isFinite(result)) {\r\n result = '';\r\n } else {\r\n result = formatNumber(format)(result);\r\n }\r\n\r\n switch (writeType.toLowerCase()) {\r\n case 'innerhtml':\r\n labelElm.innerHTML = result;\r\n break;\r\n case 'setvalue':\r\n labelElm.value = result;\r\n break;\r\n case 'createtextnode':\r\n let oldNode = labelElm.firstChild;\r\n let txtNode = createText(result);\r\n labelElm.replaceChild(txtNode, oldNode);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Configure the format options used to format the operation result based\r\n * on column type.\r\n * @param {Number} colIndex Column index\r\n * @param {Object} [format={}] Format object\r\n * @returns {Object}\r\n * @private\r\n */\r\n configureFormat(colIndex, format = {}) {\r\n let tf = this.tf;\r\n if (tf.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n let colType = tf.colTypes[colIndex];\r\n if (colType.decimal && !format.decimal) {\r\n format.decimal = colType.decimal;\r\n }\r\n if (colType.thousands && !format.integerSeparator) {\r\n format.integerSeparator = colType.thousands;\r\n }\r\n } else {\r\n format.decimal = format.decimal || '';\r\n format.integerSeparator = format.integerSeparator || '';\r\n }\r\n return format;\r\n }\r\n\r\n /** Remove extension */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n // unsubscribe to events\r\n this.emitter.off(EVENTS, bound(this.calcAll, this));\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n","import AdapterEzEditTable from './adapterEzEditTable';\r\n\r\nexport default AdapterEzEditTable;","module.exports = \"/*----------------------------------------------------------------------------\\\\\\r\\n| Sortable Table 1.12 |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Created by Erik Arvidsson |\\r\\n| (http://webfx.eae.net/contact.html#erik) |\\r\\n| For WebFX (http://webfx.eae.net/) |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| A DOM 1 based script that allows an ordinary HTML table to be sortable. |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Copyright (c) 1998 - 2006 Erik Arvidsson |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Licensed under the Apache License, Version 2.0 (the \\\"License\\\"); you may not |\\r\\n| use this file except in compliance with the License. You may obtain a copy |\\r\\n| of the License at http://www.apache.org/licenses/LICENSE-2.0 |\\r\\n| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |\\r\\n| Unless required by applicable law or agreed to in writing, software |\\r\\n| distributed under the License is distributed on an \\\"AS IS\\\" BASIS, WITHOUT |\\r\\n| WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |\\r\\n| License for the specific language governing permissions and limitations |\\r\\n| under the License. |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| 2003-01-10 | First version |\\r\\n| 2003-01-19 | Minor changes to the date parsing |\\r\\n| 2003-01-28 | JScript 5.0 fixes (no support for 'in' operator) |\\r\\n| 2003-02-01 | Sloppy typo like error fixed in getInnerText |\\r\\n| 2003-07-04 | Added workaround for IE cellIndex bug. |\\r\\n| 2003-11-09 | The bDescending argument to sort was not correctly working |\\r\\n| | Using onclick DOM0 event if no support for addEventListener |\\r\\n| | or attachEvent |\\r\\n| 2004-01-13 | Adding addSortType and removeSortType which makes it a lot |\\r\\n| | easier to add new, custom sort types. |\\r\\n| 2004-01-27 | Switch to use descending = false as the default sort order. |\\r\\n| | Change defaultDescending to suit your needs. |\\r\\n| 2004-03-14 | Improved sort type None look and feel a bit |\\r\\n| 2004-08-26 | Made the handling of tBody and tHead more flexible. Now you |\\r\\n| | can use another tHead or no tHead, and you can chose some |\\r\\n| | other tBody. |\\r\\n| 2006-04-25 | Changed license to Apache Software License 2.0 |\\r\\n|-----------------------------------------------------------------------------|\\r\\n| Created 2003-01-10 | All changes are in the log above. | Updated 2006-04-25 |\\r\\n\\\\----------------------------------------------------------------------------*/\\r\\n\\r\\n\\r\\nfunction SortableTable(oTable, oSortTypes) {\\r\\n\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\r\\n\\tthis.sortColumn = null;\\r\\n\\tthis.descending = null;\\r\\n\\r\\n\\tvar oThis = this;\\r\\n\\tthis._headerOnclick = function (e) {\\r\\n\\t\\toThis.headerOnclick(e);\\r\\n\\t};\\r\\n\\r\\n\\tif (oTable) {\\r\\n\\t\\tthis.setTable( oTable );\\r\\n\\t\\tthis.document = oTable.ownerDocument || oTable.document;\\r\\n\\t}\\r\\n\\telse {\\r\\n\\t\\tthis.document = document;\\r\\n\\t}\\r\\n\\r\\n\\r\\n\\t// only IE needs this\\r\\n\\tvar win = this.document.defaultView || this.document.parentWindow;\\r\\n\\tthis._onunload = function () {\\r\\n\\t\\toThis.destroy();\\r\\n\\t};\\r\\n\\tif (win && typeof win.attachEvent != \\\"undefined\\\") {\\r\\n\\t\\twin.attachEvent(\\\"onunload\\\", this._onunload);\\r\\n\\t}\\r\\n}\\r\\n\\r\\nSortableTable.gecko = navigator.product == \\\"Gecko\\\";\\r\\nSortableTable.msie = /msie/i.test(navigator.userAgent);\\r\\n// Mozilla is faster when doing the DOM manipulations on\\r\\n// an orphaned element. MSIE is not\\r\\nSortableTable.removeBeforeSort = SortableTable.gecko;\\r\\n\\r\\nSortableTable.prototype.onsort = function () {};\\r\\n\\r\\n// default sort order. true -> descending, false -> ascending\\r\\nSortableTable.prototype.defaultDescending = false;\\r\\n\\r\\n// shared between all instances. This is intentional to allow external files\\r\\n// to modify the prototype\\r\\nSortableTable.prototype._sortTypeInfo = {};\\r\\n\\r\\nSortableTable.prototype.setTable = function (oTable) {\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.element = oTable;\\r\\n\\tthis.setTHead( oTable.tHead );\\r\\n\\tthis.setTBody( oTable.tBodies[0] );\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setTHead = function (oTHead) {\\r\\n\\tif (this.tHead && this.tHead != oTHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.tHead = oTHead;\\r\\n\\tthis.initHeader( this.sortTypes );\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setTBody = function (oTBody) {\\r\\n\\tthis.tBody = oTBody;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.setSortTypes = function ( oSortTypes ) {\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.uninitHeader();\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\tif ( this.tHead )\\r\\n\\t\\tthis.initHeader( this.sortTypes );\\r\\n};\\r\\n\\r\\n// adds arrow containers and events\\r\\n// also binds sort type to the header cells so that reordering columns does\\r\\n// not break the sort types\\r\\nSortableTable.prototype.initHeader = function (oSortTypes) {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar doc = this.tHead.ownerDocument || this.tHead.document;\\r\\n\\tthis.sortTypes = oSortTypes || [];\\r\\n\\tvar l = cells.length;\\r\\n\\tvar img, c;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tc = cells[i];\\r\\n\\t\\tif (this.sortTypes[i] != null && this.sortTypes[i] != \\\"None\\\") {\\r\\n\\t\\t\\timg = doc.createElement(\\\"IMG\\\");\\r\\n\\t\\t\\timg.src = \\\"images/blank.png\\\";\\r\\n\\t\\t\\tc.appendChild(img);\\r\\n\\t\\t\\tif (this.sortTypes[i] != null)\\r\\n\\t\\t\\t\\tc._sortType = this.sortTypes[i];\\r\\n\\t\\t\\tif (typeof c.addEventListener != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.addEventListener(\\\"click\\\", this._headerOnclick, false);\\r\\n\\t\\t\\telse if (typeof c.attachEvent != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.attachEvent(\\\"onclick\\\", this._headerOnclick);\\r\\n\\t\\t\\telse\\r\\n\\t\\t\\t\\tc.onclick = this._headerOnclick;\\r\\n\\t\\t}\\r\\n\\t\\telse\\r\\n\\t\\t{\\r\\n\\t\\t\\tc.setAttribute( \\\"_sortType\\\", oSortTypes[i] );\\r\\n\\t\\t\\tc._sortType = \\\"None\\\";\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\tthis.updateHeaderArrows();\\r\\n};\\r\\n\\r\\n// remove arrows and events\\r\\nSortableTable.prototype.uninitHeader = function () {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar l = cells.length;\\r\\n\\tvar c;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tc = cells[i];\\r\\n\\t\\tif (c._sortType != null && c._sortType != \\\"None\\\") {\\r\\n\\t\\t\\tc.removeChild(c.lastChild);\\r\\n\\t\\t\\tif (typeof c.removeEventListener != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.removeEventListener(\\\"click\\\", this._headerOnclick, false);\\r\\n\\t\\t\\telse if (typeof c.detachEvent != \\\"undefined\\\")\\r\\n\\t\\t\\t\\tc.detachEvent(\\\"onclick\\\", this._headerOnclick);\\r\\n\\t\\t\\tc._sortType = null;\\r\\n\\t\\t\\tc.removeAttribute( \\\"_sortType\\\" );\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.updateHeaderArrows = function () {\\r\\n\\tif (!this.tHead) return;\\r\\n\\tvar cells = this.tHead.rows[0].cells;\\r\\n\\tvar l = cells.length;\\r\\n\\tvar img;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tif (cells[i]._sortType != null && cells[i]._sortType != \\\"None\\\") {\\r\\n\\t\\t\\timg = cells[i].lastChild;\\r\\n\\t\\t\\tif (i == this.sortColumn)\\r\\n\\t\\t\\t\\timg.className = \\\"sort-arrow \\\" + (this.descending ? \\\"descending\\\" : \\\"ascending\\\");\\r\\n\\t\\t\\telse\\r\\n\\t\\t\\t\\timg.className = \\\"sort-arrow\\\";\\r\\n\\t\\t}\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.headerOnclick = function (e) {\\r\\n\\t// find TD element\\r\\n\\tvar el = e.target || e.srcElement;\\r\\n\\twhile (el.tagName != \\\"TD\\\")\\r\\n\\t\\tel = el.parentNode;\\r\\n\\r\\n\\tthis.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);\\r\\n};\\r\\n\\r\\n// IE returns wrong cellIndex when columns are hidden\\r\\nSortableTable.getCellIndex = function (oTd) {\\r\\n\\tvar cells = oTd.parentNode.childNodes\\r\\n\\tvar l = cells.length;\\r\\n\\tvar i;\\r\\n\\tfor (i = 0; cells[i] != oTd && i < l; i++)\\r\\n\\t\\t;\\r\\n\\treturn i;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getSortType = function (nColumn) {\\r\\n\\treturn this.sortTypes[nColumn] || \\\"String\\\";\\r\\n};\\r\\n\\r\\n// only nColumn is required\\r\\n// if bDescending is left out the old value is taken into account\\r\\n// if sSortType is left out the sort type is found from the sortTypes array\\r\\n\\r\\nSortableTable.prototype.sort = function (nColumn, bDescending, sSortType) {\\r\\n\\tif (!this.tBody) return;\\r\\n\\tif (sSortType == null)\\r\\n\\t\\tsSortType = this.getSortType(nColumn);\\r\\n\\r\\n\\t// exit if None\\r\\n\\tif (sSortType == \\\"None\\\")\\r\\n\\t\\treturn;\\r\\n\\r\\n\\tif (bDescending == null) {\\r\\n\\t\\tif (this.sortColumn != nColumn)\\r\\n\\t\\t\\tthis.descending = this.defaultDescending;\\r\\n\\t\\telse\\r\\n\\t\\t\\tthis.descending = !this.descending;\\r\\n\\t}\\r\\n\\telse\\r\\n\\t\\tthis.descending = bDescending;\\r\\n\\r\\n\\tthis.sortColumn = nColumn;\\r\\n\\r\\n\\tif (typeof this.onbeforesort == \\\"function\\\")\\r\\n\\t\\tthis.onbeforesort();\\r\\n\\r\\n\\tvar f = this.getSortFunction(sSortType, nColumn);\\r\\n\\tvar a = this.getCache(sSortType, nColumn);\\r\\n\\tvar tBody = this.tBody;\\r\\n\\r\\n\\ta.sort(f);\\r\\n\\r\\n\\tif (this.descending)\\r\\n\\t\\ta.reverse();\\r\\n\\r\\n\\tif (SortableTable.removeBeforeSort) {\\r\\n\\t\\t// remove from doc\\r\\n\\t\\tvar nextSibling = tBody.nextSibling;\\r\\n\\t\\tvar p = tBody.parentNode;\\r\\n\\t\\tp.removeChild(tBody);\\r\\n\\t}\\r\\n\\r\\n\\t// insert in the new order\\r\\n\\tvar l = a.length;\\r\\n\\tfor (var i = 0; i < l; i++)\\r\\n\\t\\ttBody.appendChild(a[i].element);\\r\\n\\r\\n\\tif (SortableTable.removeBeforeSort) {\\r\\n\\t\\t// insert into doc\\r\\n\\t\\tp.insertBefore(tBody, nextSibling);\\r\\n\\t}\\r\\n\\r\\n\\tthis.updateHeaderArrows();\\r\\n\\r\\n\\tthis.destroyCache(a);\\r\\n\\r\\n\\tif (typeof this.onsort == \\\"function\\\")\\r\\n\\t\\tthis.onsort();\\r\\n};\\r\\n\\r\\nSortableTable.prototype.asyncSort = function (nColumn, bDescending, sSortType) {\\r\\n\\tvar oThis = this;\\r\\n\\tthis._asyncsort = function () {\\r\\n\\t\\toThis.sort(nColumn, bDescending, sSortType);\\r\\n\\t};\\r\\n\\twindow.setTimeout(this._asyncsort, 1);\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getCache = function (sType, nColumn) {\\r\\n\\tif (!this.tBody) return [];\\r\\n\\tvar rows = this.tBody.rows;\\r\\n\\tvar l = rows.length;\\r\\n\\tvar a = new Array(l);\\r\\n\\tvar r;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tr = rows[i];\\r\\n\\t\\ta[i] = {\\r\\n\\t\\t\\tvalue:\\t\\tthis.getRowValue(r, sType, nColumn),\\r\\n\\t\\t\\telement:\\tr\\r\\n\\t\\t};\\r\\n\\t};\\r\\n\\treturn a;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.destroyCache = function (oArray) {\\r\\n\\tvar l = oArray.length;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\toArray[i].value = null;\\r\\n\\t\\toArray[i].element = null;\\r\\n\\t\\toArray[i] = null;\\r\\n\\t}\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getRowValue = function (oRow, sType, nColumn) {\\r\\n\\t// if we have defined a custom getRowValue use that\\r\\n\\tif (this._sortTypeInfo[sType] && this._sortTypeInfo[sType].getRowValue)\\r\\n\\t\\treturn this._sortTypeInfo[sType].getRowValue(oRow, nColumn);\\r\\n\\r\\n\\tvar s;\\r\\n\\tvar c = oRow.cells[nColumn];\\r\\n\\tif (typeof c.innerText != \\\"undefined\\\")\\r\\n\\t\\ts = c.innerText;\\r\\n\\telse\\r\\n\\t\\ts = SortableTable.getInnerText(c);\\r\\n\\treturn this.getValueFromString(s, sType);\\r\\n};\\r\\n\\r\\nSortableTable.getInnerText = function (oNode) {\\r\\n\\tvar s = \\\"\\\";\\r\\n\\tvar cs = oNode.childNodes;\\r\\n\\tvar l = cs.length;\\r\\n\\tfor (var i = 0; i < l; i++) {\\r\\n\\t\\tswitch (cs[i].nodeType) {\\r\\n\\t\\t\\tcase 1: //ELEMENT_NODE\\r\\n\\t\\t\\t\\ts += SortableTable.getInnerText(cs[i]);\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t\\tcase 3:\\t//TEXT_NODE\\r\\n\\t\\t\\t\\ts += cs[i].nodeValue;\\r\\n\\t\\t\\t\\tbreak;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\treturn s;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.getValueFromString = function (sText, sType) {\\r\\n\\tif (this._sortTypeInfo[sType])\\r\\n\\t\\treturn this._sortTypeInfo[sType].getValueFromString( sText );\\r\\n\\treturn sText;\\r\\n\\t/*\\r\\n\\tswitch (sType) {\\r\\n\\t\\tcase \\\"Number\\\":\\r\\n\\t\\t\\treturn Number(sText);\\r\\n\\t\\tcase \\\"CaseInsensitiveString\\\":\\r\\n\\t\\t\\treturn sText.toUpperCase();\\r\\n\\t\\tcase \\\"Date\\\":\\r\\n\\t\\t\\tvar parts = sText.split(\\\"-\\\");\\r\\n\\t\\t\\tvar d = new Date(0);\\r\\n\\t\\t\\td.setFullYear(parts[0]);\\r\\n\\t\\t\\td.setDate(parts[2]);\\r\\n\\t\\t\\td.setMonth(parts[1] - 1);\\r\\n\\t\\t\\treturn d.valueOf();\\r\\n\\t}\\r\\n\\treturn sText;\\r\\n\\t*/\\r\\n\\t};\\r\\n\\r\\nSortableTable.prototype.getSortFunction = function (sType, nColumn) {\\r\\n\\tif (this._sortTypeInfo[sType])\\r\\n\\t\\treturn this._sortTypeInfo[sType].compare;\\r\\n\\treturn SortableTable.basicCompare;\\r\\n};\\r\\n\\r\\nSortableTable.prototype.destroy = function () {\\r\\n\\tthis.uninitHeader();\\r\\n\\tvar win = this.document.parentWindow;\\r\\n\\tif (win && typeof win.detachEvent != \\\"undefined\\\") {\\t// only IE needs this\\r\\n\\t\\twin.detachEvent(\\\"onunload\\\", this._onunload);\\r\\n\\t}\\r\\n\\tthis._onunload = null;\\r\\n\\tthis.element = null;\\r\\n\\tthis.tHead = null;\\r\\n\\tthis.tBody = null;\\r\\n\\tthis.document = null;\\r\\n\\tthis._headerOnclick = null;\\r\\n\\tthis.sortTypes = null;\\r\\n\\tthis._asyncsort = null;\\r\\n\\tthis.onsort = null;\\r\\n};\\r\\n\\r\\n// Adds a sort type to all instance of SortableTable\\r\\n// sType : String - the identifier of the sort type\\r\\n// fGetValueFromString : function ( s : string ) : T - A function that takes a\\r\\n// string and casts it to a desired format. If left out the string is just\\r\\n// returned\\r\\n// fCompareFunction : function ( n1 : T, n2 : T ) : Number - A normal JS sort\\r\\n// compare function. Takes two values and compares them. If left out less than,\\r\\n// <, compare is used\\r\\n// fGetRowValue : function( oRow : HTMLTRElement, nColumn : int ) : T - A function\\r\\n// that takes the row and the column index and returns the value used to compare.\\r\\n// If left out then the innerText is first taken for the cell and then the\\r\\n// fGetValueFromString is used to convert that string the desired value and type\\r\\n\\r\\nSortableTable.prototype.addSortType = function (sType, fGetValueFromString, fCompareFunction, fGetRowValue) {\\r\\n\\tthis._sortTypeInfo[sType] = {\\r\\n\\t\\ttype:\\t\\t\\t\\tsType,\\r\\n\\t\\tgetValueFromString:\\tfGetValueFromString || SortableTable.idFunction,\\r\\n\\t\\tcompare:\\t\\t\\tfCompareFunction || SortableTable.basicCompare,\\r\\n\\t\\tgetRowValue:\\t\\tfGetRowValue\\r\\n\\t};\\r\\n};\\r\\n\\r\\n// this removes the sort type from all instances of SortableTable\\r\\nSortableTable.prototype.removeSortType = function (sType) {\\r\\n\\tdelete this._sortTypeInfo[sType];\\r\\n};\\r\\n\\r\\nSortableTable.basicCompare = function compare(n1, n2) {\\r\\n\\tif (n1.value < n2.value)\\r\\n\\t\\treturn -1;\\r\\n\\tif (n2.value < n1.value)\\r\\n\\t\\treturn 1;\\r\\n\\treturn 0;\\r\\n};\\r\\n\\r\\nSortableTable.idFunction = function (x) {\\r\\n\\treturn x;\\r\\n};\\r\\n\\r\\nSortableTable.toUpperCase = function (s) {\\r\\n\\treturn s.toUpperCase();\\r\\n};\\r\\n\\r\\nSortableTable.toDate = function (s) {\\r\\n\\tvar parts = s.split(\\\"-\\\");\\r\\n\\tvar d = new Date(0);\\r\\n\\td.setFullYear(parts[0]);\\r\\n\\td.setDate(parts[2]);\\r\\n\\td.setMonth(parts[1] - 1);\\r\\n\\treturn d.valueOf();\\r\\n};\\r\\n\\r\\n\\r\\n// add sort types\\r\\nSortableTable.prototype.addSortType(\\\"Number\\\", Number);\\r\\nSortableTable.prototype.addSortType(\\\"CaseInsensitiveString\\\", SortableTable.toUpperCase);\\r\\nSortableTable.prototype.addSortType(\\\"Date\\\", SortableTable.toDate);\\r\\nSortableTable.prototype.addSortType(\\\"String\\\");\\r\\n// None is a special case\\r\\n\"","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nmodule.exports = function(src) {\n\tfunction log(error) {\n\t\t(typeof console !== \"undefined\")\n\t\t&& (console.error || console.log)(\"[Script Loader]\", error);\n\t}\n\n\t// Check for IE =< 8\n\tfunction isIE() {\n\t\treturn typeof attachEvent !== \"undefined\" && typeof addEventListener === \"undefined\";\n\t}\n\n\ttry {\n\t\tif (typeof execScript !== \"undefined\" && isIE()) {\n\t\t\texecScript(src);\n\t\t} else if (typeof eval !== \"undefined\") {\n\t\t\teval.call(null, src);\n\t\t} else {\n\t\t\tlog(\"EvalError: No eval function available\");\n\t\t}\n\t} catch (error) {\n\t\tlog(error);\n\t}\n}\n","require(\"!!C:\\\\Users\\\\max.guglielmi\\\\Documents\\\\dev\\\\perso\\\\javascript\\\\GitHub\\\\TableFilter\\\\node_modules\\\\script-loader\\\\addScript.js\")(require(\"!!C:\\\\Users\\\\max.guglielmi\\\\Documents\\\\dev\\\\perso\\\\javascript\\\\GitHub\\\\TableFilter\\\\node_modules\\\\raw-loader\\\\index.js!C:\\\\Users\\\\max.guglielmi\\\\Documents\\\\dev\\\\perso\\\\javascript\\\\GitHub\\\\TableFilter\\\\libs\\\\sortabletable.js\"))","\nmodule.exports = formatter;\nmodule.exports.default = formatter;\n\nfunction formatter(options) {\n options = options || {};\n\n\n // *********************************************************************************************\n // Set defaults for negatives\n // options.negative, options.negativeOut, options.separator retained for backward compatibility\n // *********************************************************************************************\n\n // type of negative; default left\n options.negativeType = options.negativeType || (options.negative === 'R' ? 'right' : 'left')\n\n // negative symbols '-' or '()'\n if (typeof options.negativeLeftSymbol !== 'string') {\n switch (options.negativeType) {\n case 'left':\n options.negativeLeftSymbol = '-';\n break;\n case 'brackets':\n options.negativeLeftSymbol = '(';\n break;\n default:\n options.negativeLeftSymbol = '';\n }\n }\n if (typeof options.negativeRightSymbol !== 'string') {\n switch (options.negativeType) {\n case 'right':\n options.negativeRightSymbol = '-';\n break;\n case 'brackets':\n options.negativeRightSymbol = ')';\n break;\n default:\n options.negativeRightSymbol = '';\n }\n }\n\n // whether negative symbol should be inside/outside prefix and suffix\n\n if (typeof options.negativeLeftOut !== \"boolean\") {\n options.negativeLeftOut = (options.negativeOut === false ? false : true);\n }\n if (typeof options.negativeRightOut !== \"boolean\") {\n options.negativeRightOut = (options.negativeOut === false ? false : true);\n }\n\n //prefix and suffix\n options.prefix = options.prefix || '';\n options.suffix = options.suffix || '';\n\n //separators\n if (typeof options.integerSeparator !== 'string') {\n options.integerSeparator = (typeof options.separator === 'string' ? options.separator : ',');\n }\n options.decimalsSeparator = typeof options.decimalsSeparator === 'string' ? options.decimalsSeparator : '';\n options.decimal = options.decimal || '.';\n\n //padders\n options.padLeft = options.padLeft || -1 //default no padding\n options.padRight = options.padRight || -1 //default no padding\n\n function format(number, overrideOptions) {\n overrideOptions = overrideOptions || {};\n\n if (number || number === 0) {\n number = '' + number;//convert number to string if it isn't already\n } else {\n return '';\n }\n\n //identify a negative number and make it absolute\n var output = [];\n var negative = number.charAt(0) === '-';\n number = number.replace(/^\\-/g, '');\n\n //Prepare output with left hand negative and/or prefix\n if (!options.negativeLeftOut && !overrideOptions.noUnits) {\n output.push(options.prefix);\n }\n if (negative) {\n output.push(options.negativeLeftSymbol);\n }\n if (options.negativeLeftOut && !overrideOptions.noUnits) {\n output.push(options.prefix);\n }\n\n //Format core number\n number = number.split('.');\n if (options.round != null) round(number, options.round);\n if (options.truncate != null) number[1] = truncate(number[1], options.truncate);\n if (options.padLeft > 0) number[0] = padLeft(number[0], options.padLeft);\n if (options.padRight > 0) number[1] = padRight(number[1], options.padRight);\n if (!overrideOptions.noSeparator && number[1]) number[1] = addDecimalSeparators(number[1], options.decimalsSeparator);\n if (!overrideOptions.noSeparator && number[0]) number[0] = addIntegerSeparators(number[0], options.integerSeparator);\n output.push(number[0]);\n if (number[1]) {\n output.push(options.decimal);\n output.push(number[1]);\n }\n\n //Prepare output with right hand negative and/or prefix\n if (options.negativeRightOut && !overrideOptions.noUnits) {\n output.push(options.suffix);\n }\n if (negative) {\n output.push(options.negativeRightSymbol);\n }\n if (!options.negativeRightOut && !overrideOptions.noUnits) {\n output.push(options.suffix);\n }\n\n //join output and return\n return output.join('');\n }\n\n format.negative = options.negative;\n format.negativeOut = options.negativeOut;\n format.negativeType = options.negativeType;\n format.negativeLeftOut = options.negativeLeftOut;\n format.negativeLeftSymbol = options.negativeLeftSymbol;\n format.negativeRightOut = options.negativeRightOut;\n format.negativeRightSymbol = options.negativeRightSymbol;\n format.prefix = options.prefix;\n format.suffix = options.suffix;\n format.separate = options.separate;\n format.integerSeparator = options.integerSeparator;\n format.decimalsSeparator = options.decimalsSeparator;\n format.decimal = options.decimal;\n format.padLeft = options.padLeft;\n format.padRight = options.padRight;\n format.truncate = options.truncate;\n format.round = options.round;\n\n function unformat(number, allowedSeparators) {\n allowedSeparators = allowedSeparators || [];\n if (options.allowedSeparators) {\n options.allowedSeparators.forEach(function (s) { allowedSeparators.push (s); });\n }\n allowedSeparators.push(options.integerSeparator);\n allowedSeparators.push(options.decimalsSeparator);\n number = number.replace(options.prefix, '');\n number = number.replace(options.suffix, '');\n var newNumber = number;\n do {\n number = newNumber;\n for (var i = 0; i < allowedSeparators.length; i++) {\n newNumber = newNumber.replace(allowedSeparators[i], '');\n }\n } while (newNumber != number);\n return number;\n }\n format.unformat = unformat;\n\n function validate(number, allowedSeparators) {\n number = unformat(number, allowedSeparators);\n number = number.split(options.decimal);\n if (number.length > 2) {\n return false;\n } else if (options.truncate != null && number[1] && number[1].length > options.truncate) {\n return false;\n } else if (options.round != null && number[1] && number[1].length > options.round) {\n return false;\n } else {\n return /^-?\\d+\\.?\\d*$/.test(number);\n }\n }\n return format;\n}\n\n//where x is already the integer part of the number\nfunction addIntegerSeparators(x, separator) {\n x += '';\n if (!separator) return x;\n var rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x)) {\n x = x.replace(rgx, '$1' + separator + '$2');\n }\n return x;\n}\n\n//where x is already the decimal part of the number\nfunction addDecimalSeparators(x, separator) {\n x += '';\n if (!separator) return x;\n var rgx = /(\\d{3})(\\d+)/;\n while (rgx.test(x)) {\n x = x.replace(rgx, '$1' + separator + '$2');\n }\n return x;\n}\n\n//where x is the integer part of the number\nfunction padLeft(x, padding) {\n x = x + '';\n var buf = [];\n while (buf.length + x.length < padding) {\n buf.push('0');\n }\n return buf.join('') + x;\n}\n\n//where x is the decimals part of the number\nfunction padRight(x, padding) {\n if (x) {\n x += '';\n } else {\n x = '';\n }\n var buf = [];\n while (buf.length + x.length < padding) {\n buf.push('0');\n }\n return x + buf.join('');\n}\nfunction truncate(x, length) {\n if (x) {\n x += '';\n }\n if (x && x.length > length) {\n return x.substr(0, length);\n } else {\n return x;\n }\n}\n\n//where number is an array with 0th item as integer string and 1st item as decimal string (no negatives)\nfunction round(number, places) {\n if (number[1] && places >= 0 && number[1].length > places) {\n //truncate to correct number of decimal places\n var decim = number[1].slice(0, places);\n //if next digit was >= 5 we need to round up\n if (+(number[1].substr(places, 1)) >= 5) {\n //But first count leading zeros as converting to a number will loose them\n var leadingzeros = \"\";\n while (decim.charAt(0)===\"0\") {\n leadingzeros = leadingzeros + \"0\";\n decim = decim.substr(1);\n }\n //Then we can change decim to a number and add 1 before replacing leading zeros\n decim = (+decim + 1) + '';\n decim = leadingzeros + decim;\n if (decim.length > places) {\n //adding one has made it longer\n number[0] = (+number[0]+ +decim.charAt(0)) + ''; //add value of firstchar to the integer part\n decim = decim.substring(1); //ignore the 1st char at the beginning which is the carry to the integer part\n }\n }\n number[1] = decim;\n }\n return number;\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 019e4d86..ccebc13b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,27 +1,75 @@ { "name": "tablefilter", - "version": "0.6.51", + "version": "0.6.59", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.44" + "@babel/highlight": "7.0.0" + } + }, + "@babel/core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0.tgz", + "integrity": "sha512-nrvxS5u6QUN5gLl1GEakIcmOeoUHT1/gQtdMRq18WFURJ5osn4ppJLVSseMQo4zVWKJfBTF4muIYijXUnKlRLQ==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.0.0", + "@babel/helpers": "7.0.0", + "@babel/parser": "7.0.0", + "@babel/template": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0", + "convert-source-map": "1.6.0", + "debug": "3.1.0", + "json5": "0.5.1", + "lodash": "4.17.10", + "resolve": "1.8.1", + "semver": "5.5.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "1.0.6" + } + } } }, "@babel/generator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", - "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz", + "integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.44", + "@babel/types": "7.0.0", "jsesc": "2.5.1", - "lodash": "4.17.4", + "lodash": "4.17.10", "source-map": "0.5.7", "trim-right": "1.0.1" }, @@ -31,47 +79,251 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", "dev": true + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true } } }, - "@babel/helper-function-name": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", - "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" + "@babel/types": "7.0.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0.tgz", + "integrity": "sha512-9HdU8lrAc4FUZOy+y2w//kUhynSpkGIRYDzJW1oKJx7+v8m6UEAbAd2tSvxirsq2kJTXJZZS6Eo8FnUDUH0ZWw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "7.0.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0.tgz", + "integrity": "sha512-HdYG6vr4KgXHK0q1QRZ8guoYCF5rZjIdPlhcVY+j4EBK/FDR+cXRM5/6lQr3NIWDc7dO1KfgjG5rfH6lM89VBw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-define-map": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0.tgz", + "integrity": "sha512-acbCxYS9XufWxsBiclmXMK1CFz7en/XSYvHFcbb3Jb8BqjFEBrA46WlIsoSQTRG/eYN60HciUnzdyQxOZhrHfw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0", + "@babel/types": "7.0.0", + "lodash": "4.17.10" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0.tgz", + "integrity": "sha512-5gLPwdDnYf8GfPsjS+UmZUtYE1jaXTFm1P+ymGobqvXbA0q3ANgpH60+C6zDrRAWXYbQXYvzzQC/r0gJVNNltQ==", + "dev": true, + "requires": { + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz", + "integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.0.0", + "@babel/types": "7.0.0" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", - "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.44" + "@babel/types": "7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", + "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0.tgz", + "integrity": "sha512-QdwmTTlPmT7TZcf30dnqm8pem+o48tVt991xXogE5CQCwqSpWKuzH2E9v8VWeccQ66a6/CmrLZ+bwp66JYeM5A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-simple-access": "7.0.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/template": "7.0.0", + "@babel/types": "7.0.0", + "lodash": "4.17.10" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "dev": true, + "requires": { + "@babel/types": "7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", + "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "dev": true, + "requires": { + "lodash": "4.17.10" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + } + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0.tgz", + "integrity": "sha512-3o4sYLOsK6m0A7t1P0saTanBPmk5MAlxVnp9773Of4L8PMVLukU7loZix5KoJgflxSo2c2ETTzseptc0rQEp7A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-wrap-function": "7.0.0", + "@babel/template": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0.tgz", + "integrity": "sha512-fsSv7VogxzMSmGch6DwhKHGsciVXo7hbfhBgH9ZrgJMXKMjO7ASQTUfbVL7MU1uCfviyqjucazGK7TWPT9weuQ==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "7.0.0", + "@babel/helper-optimise-call-expression": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0.tgz", + "integrity": "sha512-CNeuX52jbQSq4j1n+R+21xrjbTjsnXa9n1aERbgHRD/p9h4Udkxr1n24yPMQmnTETHdnQDvkVSYWFw/ETAymYg==", + "dev": true, + "requires": { + "@babel/template": "7.0.0", + "@babel/types": "7.0.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", - "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.44" + "@babel/types": "7.0.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0.tgz", + "integrity": "sha512-kjprWPDNVPZ/9pyLRXcZBvfjnFwqokmXTPTaC4AV8Ns7WRl7ewSxrB19AWZzQsC/WSPQLOw1ciR8uPYkAM1znA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0", + "@babel/template": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" + } + }, + "@babel/helpers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0.tgz", + "integrity": "sha512-jbvgR8iLZPnyk6m/UqdXYsSxbVtRi7Pd3CzB4OPwPBnmhNG1DWjiiy777NTuoyIcniszK51R40L5pgfXAfHDtw==", + "dev": true, + "requires": { + "@babel/template": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0" } }, "@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "dev": true, "requires": { "chalk": "2.4.1", "esutils": "2.0.2", - "js-tokens": "3.0.2" + "js-tokens": "4.0.0" }, "dependencies": { "ansi-styles": { @@ -91,13 +343,19 @@ "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "supports-color": "5.5.0" } }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "3.0.0" @@ -105,50 +363,627 @@ } } }, - "@babel/template": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", - "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", + "@babel/parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0.tgz", + "integrity": "sha512-RgJhNdRinpO8zibnoHbzTTexNs4c8ROkXFBanNDZTLHjwbdLk8J5cJSKulx/bycWTLYmKVNCkxRtVCoJnqPk+g==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0.tgz", + "integrity": "sha512-QsXmmjLrFADCcDQAfdQn7tfBRLjpTzRWaDpKpW4ZXW1fahPG4SvjcF1xfvVnXGC662RSExYXL+6DAqbtgqMXeA==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "lodash": "4.17.4" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-remap-async-to-generator": "7.0.0", + "@babel/plugin-syntax-async-generators": "7.0.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz", + "integrity": "sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-json-strings": "7.0.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz", + "integrity": "sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-object-rest-spread": "7.0.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz", + "integrity": "sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz", + "integrity": "sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.2.0" }, "dependencies": { - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regexpu-core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", + "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", + "dev": true, + "requires": { + "regenerate": "1.4.0", + "regenerate-unicode-properties": "7.0.0", + "regjsgen": "0.4.0", + "regjsparser": "0.3.0", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.0.2" + } + }, + "regjsgen": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", + "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", + "dev": true + }, + "regjsparser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", + "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + } + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz", + "integrity": "sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz", + "integrity": "sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz", + "integrity": "sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz", + "integrity": "sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz", + "integrity": "sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0.tgz", + "integrity": "sha512-CiWNhSMZzj1n3uEKUUS/oL+a7Xi8hnPQB6GpC1WfL/ZYvxBLDBn14sHMo5EyOaeArccSonyk5jFIKMRRbrHOnQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-remap-async-to-generator": "7.0.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz", + "integrity": "sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz", + "integrity": "sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "lodash": "4.17.10" + }, + "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true } } }, - "@babel/traverse": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", - "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", + "@babel/plugin-transform-classes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0.tgz", + "integrity": "sha512-8LBm7XsHQiNISEmb+ejBiHi1pUihwUf+lrIwyVsXVbQ1vLqgkvhgayK5JnW3WXvQD2rmM0qxFAIyDE5vtMem2A==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/generator": "7.0.0-beta.44", - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/helper-split-export-declaration": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "debug": "3.1.0", - "globals": "11.7.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-define-map": "7.0.0", + "@babel/helper-function-name": "7.0.0", + "@babel/helper-optimise-call-expression": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-replace-supers": "7.0.0", + "@babel/helper-split-export-declaration": "7.0.0", + "globals": "11.7.0" }, "dependencies": { - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "dev": true + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz", + "integrity": "sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0.tgz", + "integrity": "sha512-Fr2GtF8YJSXGTyFPakPFB4ODaEKGU04bPsAllAIabwoXdFrPxL0LVXQX5dQWoxOjjgozarJcC9eWGsj0fD6Zsg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz", + "integrity": "sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.2.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regexpu-core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", + "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", + "dev": true, + "requires": { + "regenerate": "1.4.0", + "regenerate-unicode-properties": "7.0.0", + "regjsgen": "0.4.0", + "regjsparser": "0.3.0", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.0.2" + } + }, + "regjsgen": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", + "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", + "dev": true + }, + "regjsparser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", + "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + } + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz", + "integrity": "sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0.tgz", + "integrity": "sha512-Ig74elCuFQ0mvHkWUq5qDCNI3qHWlop5w4TcDxdtJiOk8Egqe2uxDRY9XnXGSlmWClClmnixcoYumyvbAuj4dA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz", + "integrity": "sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0.tgz", + "integrity": "sha512-mR7JN9vkwsAIot74pSwzn/2Gq4nn2wN0HKtQyJLc1ghAarsymdBMTfh+Q/aeR2N3heXs3URQscTLrKe3yUU7Yw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz", + "integrity": "sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0.tgz", + "integrity": "sha512-CtSVpT/0tty/4405qczoIHm41YfFbPChplsmfBwsi3RTq/M9cHgVb3ixI5bqqgdKkqWwSX2sXqejvMKLuTVU+Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0.tgz", + "integrity": "sha512-BIcQLgPFCxi7YygtNpz5xj+7HxhOprbCGZKeLW6Kxsn1eHS6sJZMw4MfmqFZagl/v6IVa0AJoMHdDXLVrpd3Aw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-simple-access": "7.0.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz", + "integrity": "sha512-8EDKMAsitLkiF/D4Zhe9CHEE2XLh4bfLbb9/Zf3FgXYQOZyZYyg7EAel/aT2A7bHv62jwHf09q2KU/oEexr83g==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0.tgz", + "integrity": "sha512-EMyKpzgugxef+R1diXDwqw/Hmt5ls8VxfI8Gq5Lo8Qp3oKIepkYG4L/mvE2dmZSRalgL9sguoPKbnQ1m96hVFw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", + "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0.tgz", + "integrity": "sha512-BfAiF1l18Xr1shy1NyyQgLiHDvh/S7APiEM5+0wxTsQ+e3fgXO+NA47u4PvppzH0meJS21y0gZHcjnvUAJj8tQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-replace-supers": "7.0.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0.tgz", + "integrity": "sha512-eWngvRBWx0gScot0xa340JzrkA+8HGAk1OaCHDfXAjkrTFkp73Lcf+78s7AStSdRML5nzx5aXpnjN1MfrjkBoA==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "7.0.0", + "@babel/helper-get-function-arity": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", + "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", + "dev": true, + "requires": { + "regenerator-transform": "0.13.3" + }, + "dependencies": { + "regenerator-transform": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", + "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", + "dev": true, + "requires": { + "private": "0.1.8" + } + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz", + "integrity": "sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz", + "integrity": "sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz", + "integrity": "sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz", + "integrity": "sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz", + "integrity": "sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz", + "integrity": "sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.2.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regexpu-core": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", + "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", + "dev": true, + "requires": { + "regenerate": "1.4.0", + "regenerate-unicode-properties": "7.0.0", + "regjsgen": "0.4.0", + "regjsparser": "0.3.0", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.0.2" + } + }, + "regjsgen": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.4.0.tgz", + "integrity": "sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==", + "dev": true + }, + "regjsparser": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.3.0.tgz", + "integrity": "sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==", + "dev": true, + "requires": { + "jsesc": "0.5.0" + } + } + } + }, + "@babel/preset-env": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0.tgz", + "integrity": "sha512-Fnx1wWaWv2w2rl+VHxA9si//Da40941IQ29fKiRejVR7oN1FxSEL8+SyAX/2oKIye2gPvY/GBbJVEKQ/oi43zQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-proposal-async-generator-functions": "7.0.0", + "@babel/plugin-proposal-json-strings": "7.0.0", + "@babel/plugin-proposal-object-rest-spread": "7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "7.0.0", + "@babel/plugin-syntax-async-generators": "7.0.0", + "@babel/plugin-syntax-object-rest-spread": "7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "7.0.0", + "@babel/plugin-transform-arrow-functions": "7.0.0", + "@babel/plugin-transform-async-to-generator": "7.0.0", + "@babel/plugin-transform-block-scoped-functions": "7.0.0", + "@babel/plugin-transform-block-scoping": "7.0.0", + "@babel/plugin-transform-classes": "7.0.0", + "@babel/plugin-transform-computed-properties": "7.0.0", + "@babel/plugin-transform-destructuring": "7.0.0", + "@babel/plugin-transform-dotall-regex": "7.0.0", + "@babel/plugin-transform-duplicate-keys": "7.0.0", + "@babel/plugin-transform-exponentiation-operator": "7.0.0", + "@babel/plugin-transform-for-of": "7.0.0", + "@babel/plugin-transform-function-name": "7.0.0", + "@babel/plugin-transform-literals": "7.0.0", + "@babel/plugin-transform-modules-amd": "7.0.0", + "@babel/plugin-transform-modules-commonjs": "7.0.0", + "@babel/plugin-transform-modules-systemjs": "7.0.0", + "@babel/plugin-transform-modules-umd": "7.0.0", + "@babel/plugin-transform-new-target": "7.0.0", + "@babel/plugin-transform-object-super": "7.0.0", + "@babel/plugin-transform-parameters": "7.0.0", + "@babel/plugin-transform-regenerator": "7.0.0", + "@babel/plugin-transform-shorthand-properties": "7.0.0", + "@babel/plugin-transform-spread": "7.0.0", + "@babel/plugin-transform-sticky-regex": "7.0.0", + "@babel/plugin-transform-template-literals": "7.0.0", + "@babel/plugin-transform-typeof-symbol": "7.0.0", + "@babel/plugin-transform-unicode-regex": "7.0.0", + "browserslist": "4.1.1", + "invariant": "2.2.2", + "js-levenshtein": "1.1.3", + "semver": "5.5.0" + }, + "dependencies": { + "browserslist": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.1.1.tgz", + "integrity": "sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000885", + "electron-to-chromium": "1.3.64", + "node-releases": "1.0.0-alpha.11" + } + }, + "caniuse-lite": { + "version": "1.0.30000885", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000885.tgz", + "integrity": "sha512-cXKbYwpxBLd7qHyej16JazPoUacqoVuDhvR61U7Fr5vSxMUiodzcYa1rQYRYfZ5GexV03vGZHd722vNPLjPJGQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.64.tgz", + "integrity": "sha512-CU5ta5MbzRre+WhzKfPBM3HlyZGM7bwNKmiByzFzCfxP3q7cNmGLKopq5Q+LGXza69aIHXk2sZZSh/Oh7TKPIQ==", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz", + "integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.0.0", + "@babel/types": "7.0.0" + } + }, + "@babel/traverse": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz", + "integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.0.0", + "@babel/helper-function-name": "7.0.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/parser": "7.0.0", + "@babel/types": "7.0.0", + "debug": "3.1.0", + "globals": "11.7.0", + "lodash": "4.17.10" + }, + "dependencies": { "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -163,20 +998,32 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", "dev": true + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true } } }, "@babel/types": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", - "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", "dev": true, "requires": { "esutils": "2.0.2", - "lodash": "4.17.4", + "lodash": "4.17.10", "to-fast-properties": "2.0.0" }, "dependencies": { + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -437,6 +1284,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -459,6 +1312,12 @@ "es-abstract": "1.10.0" } }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -572,13 +1431,13 @@ } }, "babel-core": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", - "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", + "babel-generator": "6.26.1", "babel-helpers": "6.24.1", "babel-messages": "6.23.0", "babel-register": "6.26.0", @@ -587,7 +1446,7 @@ "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", - "convert-source-map": "1.5.1", + "convert-source-map": "1.6.0", "debug": "2.6.9", "json5": "0.5.1", "lodash": "4.17.4", @@ -599,31 +1458,23 @@ } }, "babel-eslint": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz", - "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-9.0.0.tgz", + "integrity": "sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.0.0", + "@babel/traverse": "7.0.0", + "@babel/types": "7.0.0", "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0" - }, - "dependencies": { - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", - "dev": true - } } }, "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { "babel-messages": "6.23.0", @@ -774,14 +1625,15 @@ } }, "babel-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", - "integrity": "sha1-9svhInEPGqKvTYgcbVtUNYyiQSY=", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.2.tgz", + "integrity": "sha512-Law0PGtRV1JL8Y9Wpzc0d6EE0GD7LzXWCfaeWwboUMcBWNG6gvaWTK1/+BK7a4X5EmeJiGEuDDFxUsOa8RSWCw==", "dev": true, "requires": { "find-cache-dir": "1.0.0", "loader-utils": "1.1.0", - "mkdirp": "0.5.1" + "mkdirp": "0.5.1", + "util.promisify": "1.0.0" } }, "babel-messages": { @@ -804,13 +1656,13 @@ }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", "dev": true }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", "dev": true }, @@ -943,15 +1795,15 @@ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-runtime": "6.26.0", "babel-template": "6.26.0" } }, "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -1115,7 +1967,7 @@ "babel-plugin-transform-es2015-function-name": "6.24.1", "babel-plugin-transform-es2015-literals": "6.22.0", "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", + "babel-plugin-transform-es2015-modules-commonjs": "6.26.2", "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", "babel-plugin-transform-es2015-modules-umd": "6.24.1", "babel-plugin-transform-es2015-object-super": "6.24.1", @@ -1128,7 +1980,7 @@ "babel-plugin-transform-es2015-unicode-regex": "6.24.1", "babel-plugin-transform-exponentiation-operator": "6.24.1", "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "3.2.7", + "browserslist": "3.2.8", "invariant": "2.2.2", "semver": "5.5.0" } @@ -1139,7 +1991,7 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.0", + "babel-core": "6.26.3", "babel-runtime": "6.26.0", "core-js": "2.5.3", "home-or-tmp": "2.0.0", @@ -1512,13 +2364,13 @@ } }, "browserslist": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.7.tgz", - "integrity": "sha512-oYVLxFVqpX9uMhOIQBLtZL+CX4uY8ZpWcjNTaxyWl5rO8yA9SSNikFnAfvk8J3P/7z3BZwNmEqFKaJoYltj3MQ==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, "requires": { - "caniuse-lite": "1.0.30000843", - "electron-to-chromium": "1.3.47" + "caniuse-lite": "1.0.30000885", + "electron-to-chromium": "1.3.64" } }, "buffer": { @@ -1632,9 +2484,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000843", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000843.tgz", - "integrity": "sha512-1ntiW826MhRBmM0CeI7w1cQr16gxwOoM8doJWh3BFalPZoKWdZXs27Bc04xth/3NR1/wNXn9cpP4F92lVenCvg==", + "version": "1.0.30000885", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000885.tgz", + "integrity": "sha512-cXKbYwpxBLd7qHyej16JazPoUacqoVuDhvR61U7Fr5vSxMUiodzcYa1rQYRYfZ5GexV03vGZHd722vNPLjPJGQ==", "dev": true }, "caseless": { @@ -2185,10 +3037,13 @@ "dev": true }, "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } }, "cookie": { "version": "0.3.1", @@ -2501,6 +3356,12 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", @@ -2645,9 +3506,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.47", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.47.tgz", - "integrity": "sha1-dk6IfKkQTQGgrI6r7n38DizhQQQ=", + "version": "1.3.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.64.tgz", + "integrity": "sha512-CU5ta5MbzRre+WhzKfPBM3HlyZGM7bwNKmiByzFzCfxP3q7cNmGLKopq5Q+LGXza69aIHXk2sZZSh/Oh7TKPIQ==", "dev": true }, "elliptic": { @@ -3466,6 +4327,15 @@ } } }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, "express": { "version": "4.16.2", "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", @@ -3852,6 +4722,25 @@ } } }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "is-plain-object": "2.0.4", + "object.defaults": "1.1.0", + "object.pick": "1.3.0", + "parse-filepath": "1.0.2" + } + }, + "flagged-respawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", + "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", + "dev": true + }, "flat-cache": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", @@ -4608,12 +5497,36 @@ "is-glob": "2.0.1" } }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.2", + "resolve-dir": "1.0.1" + } + }, "global-modules-path": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", "dev": true }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.2", + "which": "1.3.0" + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -4703,6 +5616,18 @@ "path-is-absolute": "1.0.1" } }, + "grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "dev": true, + "requires": { + "findup-sync": "0.3.0", + "grunt-known-options": "1.1.0", + "nopt": "3.0.6", + "resolve": "1.1.7" + } + }, "js-yaml": { "version": "3.5.5", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", @@ -4722,15 +5647,28 @@ } }, "grunt-cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", - "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.1.tgz", + "integrity": "sha512-UwBRu/QpAjDc53DRLEkyilFdL0zenpxu+fddTIlsF/KJqdNcHaQmvyu1W3cDesZ9rqqZdKK5A8+QDIyLUEWoZQ==", "dev": true, "requires": { - "findup-sync": "0.3.0", "grunt-known-options": "1.1.0", - "nopt": "3.0.6", - "resolve": "1.1.7" + "interpret": "1.1.0", + "liftoff": "2.5.0", + "nopt": "4.0.1", + "v8flags": "3.0.2" + }, + "dependencies": { + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + } } }, "grunt-contrib-clean": { @@ -5121,6 +6059,15 @@ "os-tmpdir": "1.0.2" } }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, "hooker": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", @@ -5509,6 +6456,12 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "inquirer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", @@ -5618,6 +6571,16 @@ "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", "dev": true }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "1.0.0", + "is-windows": "1.0.2" + } + }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", @@ -5850,6 +6813,15 @@ "has": "1.0.1" } }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "1.0.0" + } + }, "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", @@ -5874,6 +6846,15 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "0.1.2" + } + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -5916,7 +6897,7 @@ "integrity": "sha1-HekZlvSAsi3LGsqFECVbrhV0RG4=", "dev": true, "requires": { - "babel-core": "6.26.0", + "babel-core": "6.26.3", "escodegen": "1.9.0", "esprima": "2.7.3", "istanbul": "0.4.5", @@ -6043,6 +7024,12 @@ } } }, + "js-levenshtein": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.3.tgz", + "integrity": "sha512-/812MXr9RBtMObviZ8gQBhHO8MOrGj8HlEE+4ccMTElNA/6I3u39u+bhny55Lk921yn44nSZFy9naNLElL5wgQ==", + "dev": true + }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -6240,6 +7227,51 @@ "type-check": "0.3.2" } }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "3.0.1", + "findup-sync": "2.0.0", + "fined": "1.1.0", + "flagged-respawn": "1.0.0", + "is-plain-object": "2.0.4", + "object.map": "1.0.1", + "rechoir": "0.6.2", + "resolve": "1.1.7" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "1.0.0", + "is-glob": "3.1.0", + "micromatch": "3.1.9", + "resolve-dir": "1.0.1" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, "livereload-js": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz", @@ -6468,6 +7500,23 @@ "pify": "3.0.0" } }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6892,6 +7941,15 @@ } } }, + "node-releases": { + "version": "1.0.0-alpha.11", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.0.0-alpha.11.tgz", + "integrity": "sha512-CaViu+2FqTNYOYNihXa5uPS/zry92I3vPU4nCB6JB3OeZ2UGtOpF5gRwuN4+m3hbEcL47bOXyun1jX2iC+3uEQ==", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, "nomnomnomnom": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz", @@ -7074,6 +8132,60 @@ "isobject": "3.0.1" } }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "1.0.1", + "array-slice": "1.1.0", + "for-own": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "1.0.0", + "make-iterator": "1.0.1" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + } + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -7224,6 +8336,16 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -7296,6 +8418,17 @@ "pbkdf2": "3.0.14" } }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "1.0.0", + "map-cache": "0.2.2", + "path-root": "0.1.1" + } + }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -7317,6 +8450,12 @@ "error-ex": "1.3.1" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, "parse5": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", @@ -7372,6 +8511,27 @@ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "0.1.2" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -7783,6 +8943,15 @@ "set-immediate-shim": "1.0.1" } }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.1.7" + } + }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -7794,11 +8963,28 @@ } }, "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha1-DDNtOYBVPXVcObWGrjsgqknIK38=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, + "regenerate-unicode-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", + "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", + "dev": true, + "requires": { + "regenerate": "1.4.0" + }, + "dependencies": { + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + } + } + }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", @@ -7808,7 +8994,7 @@ "regenerator-transform": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -7856,7 +9042,7 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.3", + "regenerate": "1.4.0", "regjsgen": "0.2.0", "regjsparser": "0.1.5" } @@ -8001,6 +9187,16 @@ } } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", @@ -8518,7 +9714,7 @@ "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { "source-map": "0.5.7" @@ -9319,9 +10515,9 @@ "optional": true }, "uglifyjs-webpack-plugin": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz", - "integrity": "sha512-1VicfKhCYHLS8m1DCApqBhoulnASsEoJ/BvpUpP4zoNAPpKzdH+ghk0olGJMmwX2/jprK2j3hAHdUbczBSy2FA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", "dev": true, "requires": { "cacache": "10.0.4", @@ -9352,6 +10548,12 @@ } } }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, "underscore": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", @@ -9364,6 +10566,34 @@ "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=", "dev": true }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "1.0.4", + "unicode-property-aliases-ecmascript": "1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", + "dev": true + }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", @@ -9639,6 +10869,16 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" + } + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -9657,6 +10897,15 @@ "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", "dev": true }, + "v8flags": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.2.tgz", + "integrity": "sha512-6sgSKoFw1UpUPd3cFdF7QGnrH6tDeBgW1F3v9gy8gLY0mlbiBXq8soy8aQpY6xeeCjH5K+JvC62Acp7gtl7wWA==", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", @@ -9761,7 +11010,7 @@ "node-libs-browser": "2.1.0", "schema-utils": "0.4.5", "tapable": "1.0.0", - "uglifyjs-webpack-plugin": "1.2.7", + "uglifyjs-webpack-plugin": "1.3.0", "watchpack": "1.4.0", "webpack-sources": "1.1.0" }, diff --git a/package.json b/package.json index 5cd54e3a..a3116081 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tablefilter", - "version": "0.6.58", + "version": "0.6.59", "description": "A Javascript library making HTML tables filterable and a bit more", "license": "MIT", "author": { @@ -40,7 +40,8 @@ "tag": "next" }, "devDependencies": { - "babel-core": "^6.24.1", + "@babel/core": "7.0.0", + "@babel/preset-env": "7.0.0", "babel-eslint": "9.0.0", "babel-loader": "^8.0.2", "babel-preset-env": "1.7.0", diff --git a/webpack.config.js b/webpack.config.js index 6db978ca..3e24814a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -31,7 +31,7 @@ module.exports = { exclude: /tablefilter\/node_modules/, options: { compact: false, - presets: ['env'] + presets: ['@babel/env'] }, loader: 'babel-loader' }, {