TableFilter/dist/tablefilter/tablefilter.js.map

1 line
836 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"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","extensions","enableDefaultTheme","enable_default_theme","hasThemes","themes","getThemesPath","responsive","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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AAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,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,SAAA02D,iBAAAv5D,GACA,OAAAA,EAAA8E,QAAA,6BAAA5P,GACA,OAAAskE,EAAAtkE,SATA,IA3SA,IAAAukE,IAEAnhD,KAAA,IACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,sCAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,QAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,OAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,YAEAphD,KAAA,IACAohD,MAAA,iBAEAphD,KAAA,IACAohD,MAAA,kBAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,OAEAphD,KAAA,KACAohD,MAAA,OAEAphD,KAAA,IACAohD,MAAA,oCAEAphD,KAAA,IACAohD,MAAA,WAEAphD,KAAA,IACAohD,MAAA,oBAEAphD,KAAA,IACAohD,MAAA,kBAEAphD,KAAA,IACAohD,MAAA,wBAEAphD,KAAA,IACAohD,MAAA,UAEAphD,KAAA,IACAohD,MAAA,kBAEAphD,KAAA,IACAohD,MAAA,sBAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,aAEAphD,KAAA,IACAohD,MAAA,qBAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,+CAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,cAEAphD,KAAA,IACAohD,MAAA,UAEAphD,KAAA,IACAohD,MAAA,qBAEAphD,KAAA,IACAohD,MAAA,qBAEAphD,KAAA,IACAohD,MAAA,mBAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,sCAEAphD,KAAA,IACAohD,MAAA,YAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,cAEAphD,KAAA,IACAohD,MAAA,SAEAphD,KAAA,IACAohD,MAAA,mBAEAphD,KAAA,IACAohD,MAAA,kBAEAphD,KAAA,IACAohD,MAAA,wCAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,QAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,OAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,cAEAphD,KAAA,IACAohD,MAAA,iBAEAphD,KAAA,IACAohD,MAAA,qBAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,OAEAphD,KAAA,IACAohD,MAAA,kCAEAphD,KAAA,IACAohD,MAAA,SAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,MACAohD,MAAA,MAEAphD,KAAA,MACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,mBAEAphD,KAAA,IACAohD,MAAA,mBAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,wBAEAphD,KAAA,IACAohD,MAAA,UAEAphD,KAAA,IACAohD,MAAA,kBAEAphD,KAAA,IACAohD,MAAA,wBAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,YAEAphD,KAAA,IACAohD,MAAA,uBAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,gDAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,eAEAphD,KAAA,IACAohD,MAAA,UAEAphD,KAAA,IACAohD,MAAA,qBAEAphD,KAAA,IACAohD,MAAA,sBAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,oBAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,sCAEAphD,KAAA,IACAohD,MAAA,YAEAphD,KAAA,KACAohD,MAAA,MAEAphD,KAAA,IACAohD,MAAA,eAEAphD,KAAA,IACAohD,MAAA,SAEAphD,KAAA,IACAohD,MAAA,oBAEAphD,KAAA,IACAohD,MAAA,kBAIAF,KACAnoE,EAAA,EAAeA,EAAAooE,EAAA3nE,OAA4BT,GAAA,EAE3C,IADA,IAAAqoE,EAAAD,EAAApoE,GAAAqoE,MACAhiC,EAAA,EAAiBA,EAAAgiC,EAAA5nE,OAAkB4lC,GAAA,EACnC8hC,EAAAE,EAAAhiC,IAAA+hC,EAAApoE,GAAAinB,KAUAtnB,EAAAyoE,kBACAzoE,EAAAwoE","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<string>} [methods]\n * @option {Array<string|NativeConstructor>} [except]\n * @option {Array<NativeConstructor>} [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 '<input type=\"button\" value=\"\" class=\"' + this.btnCssClass +\r\n ' nextPage\" title=\"Next page\" />'));\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 '<input type=\"button\" value=\"\" class=\"' + this.btnCssClass +\r\n ' previousPage\" title=\"Previous page\" />'));\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 '<input type=\"button\" value=\"\" class=\"' + this.btnCssClass +\r\n ' firstPage\" title=\"First page\" />'));\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 '<input type=\"button\" value=\"\" class=\"' + this.btnCssClass +\r\n ' lastPage\" title=\"Last page\" />'));\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 '<input type=\"button\" value=\"\" class=\"' + this.cssClass +\r\n '\" ' + 'title=\"' + this.tooltip + '\" />'));\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 '<img src=\"' + this.iconPath + '\" alt=\"Column filter\" />');\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: <br /><b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, ' +\n '<b>&gt;=</b>, <b>=</b>, <b>*</b>, <b>!</b>, <b>{</b>, <b>}</b>, ' +\n '<b>||</b>,<b>&amp;&amp;</b>, <b>[empty]</b>, <b>[nonempty]</b>, ' +\n '<b>rgx:</b><br/><a href=\"' + WIKI_URL + '\" target=\"_blank\">' +\n 'Learn more</a><hr/>';\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 = '<div class=\"helpFooter\"><h4>TableFilter ' +\n 'v' + tf.version + '</h4>' + '<a href=\"' + WEBSITE_URL +\n '\" target=\"_blank\">' + WEBSITE_URL + '</a>' +\n '<br/><span>&copy;2015-' + tf.year + ' Max Guglielmi</span>' +\n '<div align=\"center\" style=\"margin-top:8px;\">' +\n '<a href=\"javascript:void(0);\" class=\"close\">Close</a></div></div>';\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 {isEmpty as isEmptyString} 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.42';\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 /*** 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 * 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 }\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 <enter> 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\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, 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] = this._match(trim(sA), cellValue, 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 {Number} colIdx Column index\n * @return {Boolean}\n * @private\n */\n _match(term, cellValue, colIdx) {\n let numData;\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 = isEmptyString(cellValue);\n }\n //non-empty\n else if (hasNM) {\n occurence = !isEmptyString(cellValue);\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 = isEmptyString(cellValue);\n }\n //non-empty\n else if (hasNM) {\n occurence = !isEmptyString(cellValue);\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":""}