From 2d9671e10da4d7c9d6cafc3a043a1d30ea27dfe9 Mon Sep 17 00:00:00 2001 From: koalyptus Date: Sat, 16 Feb 2019 21:52:06 +1100 Subject: [PATCH] upgrade various packages --- .eslintrc | 2 +- dist/tablefilter/tablefilter.js.map | 2 +- package-lock.json | 1206 +++++++++++++-------------- 3 files changed, 603 insertions(+), 607 deletions(-) diff --git a/.eslintrc b/.eslintrc index 8077bee6..447ebf5f 100644 --- a/.eslintrc +++ b/.eslintrc @@ -13,7 +13,7 @@ "array-bracket-spacing": 2, "keyword-spacing": ["error", { "after": true, "before": true }], "max-depth": [2, 7], - "max-statements": [2, 135], + "max-statements": [2, 133], "complexity": [2, 41], "no-unused-vars": 2, "no-eval": 2, diff --git a/dist/tablefilter/tablefilter.js.map b/dist/tablefilter/tablefilter.js.map index c384419f..ba609c46 100644 --- a/dist/tablefilter/tablefilter.js.map +++ b/dist/tablefilter/tablefilter.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./node_modules/sugar-core/sugar-core.js","webpack:///./src/settings.js","webpack:///./src/dom.js","webpack:///./src/types.js","webpack:///./src/const.js","webpack:///./src/event.js","webpack:///./node_modules/sugar-date/date/build/buildNumberUnitMethodsCall.js","webpack:///./node_modules/sugar-date/date/build/buildDateUnitMethodsCall.js","webpack:///./src/string.js","webpack:///./src/root.js","webpack:///./src/feature.js","webpack:///./node_modules/sugar-date/date/var/DateUnitIndexes.js","webpack:///./node_modules/sugar-date/common/var/classChecks.js","webpack:///./node_modules/sugar-date/date/addLocale.js","webpack:///./node_modules/sugar-date/common/var/mathAliases.js","webpack:///./node_modules/sugar-date/date/var/LocaleHelpers.js","webpack:///./node_modules/sugar-date/date/build/buildRelativeAliasesCall.js","webpack:///./node_modules/sugar-date/common/var/coreUtilityAliases.js","webpack:///./src/modules/toolbar.js","webpack:///./node_modules/sugar-date/range/internal/Range.js","webpack:///./src/array.js","webpack:///./node_modules/sugar-date/common/internal/defineOnPrototype.js","webpack:///./src/number.js","webpack:///./node_modules/sugar-date/common/internal/callDateGet.js","webpack:///./node_modules/sugar-date/date/internal/getWeekday.js","webpack:///./node_modules/sugar-date/range/build/buildDateRangeUnitsCall.js","webpack:///./node_modules/sugar-date/date/internal/setWeekday.js","webpack:///./node_modules/sugar-date/common/var/namespaceAliases.js","webpack:///./node_modules/sugar-date/date/internal/createDate.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/getMonth.js","webpack:///./node_modules/sugar-date/date/internal/getYear.js","webpack:///./node_modules/sugar-date/date/var/DateUnits.js","webpack:///./node_modules/sugar-date/common/internal/isDefined.js","webpack:///./node_modules/sugar-date/common/internal/forEach.js","webpack:///./src/sort.js","webpack:///./node_modules/sugar-date/date/internal/cloneDate.js","webpack:///./node_modules/sugar-date/date/internal/getDate.js","webpack:///./node_modules/sugar-date/date/internal/setDate.js","webpack:///./node_modules/sugar-date/common/internal/callDateSet.js","webpack:///./node_modules/sugar-date/date/internal/setUnitAndLowerToEdge.js","webpack:///./node_modules/sugar-date/date/internal/dateIsValid.js","webpack:///./node_modules/sugar-date/date/internal/advanceDate.js","webpack:///./node_modules/sugar-date/date/internal/getNewDate.js","webpack:///./node_modules/sugar-date/date/internal/getLowerUnitIndex.js","webpack:///./node_modules/sugar-date/common/internal/isUndefined.js","webpack:///./node_modules/sugar-date/index.js","webpack:///./node_modules/sugar-date/range/internal/rangeIsValid.js","webpack:///./node_modules/sugar-date/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/common/internal/simpleMerge.js","webpack:///./src/modules/baseDropdown.js","webpack:///./src/cookie.js","webpack:///./src/modules/paging.js","webpack:///./src/modules/noResults.js","webpack:///./src/modules/alternateRows.js","webpack:///./src/modules/clearButton.js","webpack:///./src/modules/statusBar.js","webpack:///./src/modules/rowsCounter.js","webpack:///./src/modules/markActiveColumns.js","webpack:///./src/modules/popupFilter.js","webpack:///./src/modules/highlightKeywords.js","webpack:///./src/modules/loader.js","webpack:///./src/modules/gridLayout.js","webpack:///./src/modules/state.js","webpack:///./src/modules/help.js","webpack:///./src/modules/dateType.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/date/internal/getEnglishVariant.js","webpack:///./node_modules/diacritics/index.js","webpack:///./src/modules/storage.js","webpack:///./src/modules/hash.js","webpack:///./src/modules/checkList.js","webpack:///./src/modules/dropdown.js","webpack:///./src/emitter.js","webpack:///./node_modules/sugar-date/range/internal/getDateIncrementObject.js","webpack:///./node_modules/sugar-date/range/var/MULTIPLIERS.js","webpack:///./node_modules/sugar-date/range/internal/incrementDate.js","webpack:///./node_modules/sugar-date/range/internal/getDateForRange.js","webpack:///./node_modules/sugar-date/range/internal/getRangeMemberPrimitiveValue.js","webpack:///./node_modules/sugar-date/range/internal/cloneRangeMember.js","webpack:///./node_modules/sugar-date/date/internal/dateRelative.js","webpack:///./node_modules/sugar-date/date/internal/fullCompareDate.js","webpack:///./node_modules/sugar-date/date/internal/assertDateIsValid.js","webpack:///./node_modules/sugar-date/date/internal/getUTCOffset.js","webpack:///./node_modules/sugar-date/date/internal/getHours.js","webpack:///./node_modules/sugar-date/date/var/CoreOutputFormats.js","webpack:///./node_modules/sugar-date/date/internal/dateFormat.js","webpack:///./node_modules/sugar-date/date/internal/collectUpdateDateArguments.js","webpack:///./node_modules/sugar-date/date/internal/advanceDateWithArgs.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/AmericanEnglishDefinition.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/tablefilter.js","webpack:///./node_modules/sugar-date/locales/zh-TW.js","webpack:///./node_modules/sugar-date/locales/zh-CN.js","webpack:///./node_modules/sugar-date/locales/sv.js","webpack:///./node_modules/sugar-date/locales/ru.js","webpack:///./node_modules/sugar-date/locales/pt.js","webpack:///./node_modules/sugar-date/locales/pl.js","webpack:///./node_modules/sugar-date/locales/no.js","webpack:///./node_modules/sugar-date/locales/nl.js","webpack:///./node_modules/sugar-date/locales/ko.js","webpack:///./node_modules/sugar-date/locales/ja.js","webpack:///./node_modules/sugar-date/locales/it.js","webpack:///./node_modules/sugar-date/locales/fr.js","webpack:///./node_modules/sugar-date/locales/fi.js","webpack:///./node_modules/sugar-date/locales/es.js","webpack:///./node_modules/sugar-date/locales/de.js","webpack:///./node_modules/sugar-date/locales/da.js","webpack:///./node_modules/sugar-date/locales/ca.js","webpack:///./node_modules/sugar-date/locales/index.js","webpack:///./node_modules/sugar-date/range/years.js","webpack:///./node_modules/sugar-date/range/weeks.js","webpack:///./node_modules/sugar-date/range/union.js","webpack:///./node_modules/sugar-date/range/toString.js","webpack:///./node_modules/sugar-date/range/toArray.js","webpack:///./node_modules/sugar-date/range/internal/getRangeMemberNumericValue.js","webpack:///./node_modules/sugar-date/range/span.js","webpack:///./node_modules/sugar-date/range/seconds.js","webpack:///./node_modules/sugar-date/range/months.js","webpack:///./node_modules/sugar-date/range/minutes.js","webpack:///./node_modules/sugar-date/range/milliseconds.js","webpack:///./node_modules/sugar-date/range/isValid.js","webpack:///./node_modules/sugar-date/range/intersect.js","webpack:///./node_modules/sugar-date/range/hours.js","webpack:///./node_modules/sugar-date/range/every.js","webpack:///./node_modules/sugar-date/common/internal/periodSplit.js","webpack:///./node_modules/sugar-date/range/internal/getPrecision.js","webpack:///./node_modules/sugar-date/range/internal/getGreaterPrecision.js","webpack:///./node_modules/sugar-date/range/internal/incrementString.js","webpack:///./node_modules/sugar-date/range/internal/incrementNumber.js","webpack:///./node_modules/sugar-date/range/internal/valueIsNotInfinite.js","webpack:///./node_modules/sugar-date/range/internal/isValidRangeMember.js","webpack:///./node_modules/sugar-date/range/internal/buildDateRangeUnits.js","webpack:///./node_modules/sugar-date/range/days.js","webpack:///./node_modules/sugar-date/range/contains.js","webpack:///./node_modules/sugar-date/range/clone.js","webpack:///./node_modules/sugar-date/range/internal/rangeClamp.js","webpack:///./node_modules/sugar-date/range/clamp.js","webpack:///./node_modules/sugar-date/range/var/DURATION_REG.js","webpack:///./node_modules/sugar-date/range/var/FULL_CAPTURED_DURATION.js","webpack:///./node_modules/sugar-date/range/var/DurationTextFormats.js","webpack:///./node_modules/sugar-date/range/internal/createDateRangeFromString.js","webpack:///./node_modules/sugar-date/range/var/DateRangeConstructor.js","webpack:///./node_modules/sugar-date/date/range.js","webpack:///./node_modules/sugar-date/range/index.js","webpack:///./node_modules/sugar-date/date/setOption.js","webpack:///./node_modules/sugar-date/date/getOption.js","webpack:///./node_modules/sugar-date/date/yearsUntil.js","webpack:///./node_modules/sugar-date/date/yearsSince.js","webpack:///./node_modules/sugar-date/date/yearsFromNow.js","webpack:///./node_modules/sugar-date/date/yearsAgo.js","webpack:///./node_modules/sugar-date/date/weeksUntil.js","webpack:///./node_modules/sugar-date/date/weeksSince.js","webpack:///./node_modules/sugar-date/date/weeksFromNow.js","webpack:///./node_modules/sugar-date/date/weeksAgo.js","webpack:///./node_modules/sugar-date/date/setWeekday.js","webpack:///./node_modules/sugar-date/date/setUTC.js","webpack:///./node_modules/sugar-date/date/setISOWeek.js","webpack:///./node_modules/sugar-date/date/set.js","webpack:///./node_modules/sugar-date/date/secondsUntil.js","webpack:///./node_modules/sugar-date/date/secondsSince.js","webpack:///./node_modules/sugar-date/date/secondsFromNow.js","webpack:///./node_modules/sugar-date/date/secondsAgo.js","webpack:///./node_modules/sugar-date/date/rewind.js","webpack:///./node_modules/sugar-date/date/internal/getUnitIndexForParamName.js","webpack:///./node_modules/sugar-date/date/reset.js","webpack:///./node_modules/sugar-date/date/relativeTo.js","webpack:///./node_modules/sugar-date/date/internal/getAdjustedUnitForDate.js","webpack:///./node_modules/sugar-date/date/relative.js","webpack:///./node_modules/sugar-date/date/monthsUntil.js","webpack:///./node_modules/sugar-date/date/monthsSince.js","webpack:///./node_modules/sugar-date/date/monthsFromNow.js","webpack:///./node_modules/sugar-date/date/monthsAgo.js","webpack:///./node_modules/sugar-date/date/minutesUntil.js","webpack:///./node_modules/sugar-date/date/minutesSince.js","webpack:///./node_modules/sugar-date/date/minutesFromNow.js","webpack:///./node_modules/sugar-date/date/minutesAgo.js","webpack:///./node_modules/sugar-date/date/millisecondsUntil.js","webpack:///./node_modules/sugar-date/date/millisecondsSince.js","webpack:///./node_modules/sugar-date/date/millisecondsFromNow.js","webpack:///./node_modules/sugar-date/date/millisecondsAgo.js","webpack:///./node_modules/sugar-date/date/iso.js","webpack:///./node_modules/sugar-date/date/isYesterday.js","webpack:///./node_modules/sugar-date/date/isWeekend.js","webpack:///./node_modules/sugar-date/date/isWeekday.js","webpack:///./node_modules/sugar-date/date/isWednesday.js","webpack:///./node_modules/sugar-date/date/isValid.js","webpack:///./node_modules/sugar-date/date/internal/isUTC.js","webpack:///./node_modules/sugar-date/date/isUTC.js","webpack:///./node_modules/sugar-date/date/isTuesday.js","webpack:///./node_modules/sugar-date/date/isTomorrow.js","webpack:///./node_modules/sugar-date/date/isToday.js","webpack:///./node_modules/sugar-date/date/isThursday.js","webpack:///./node_modules/sugar-date/date/isThisYear.js","webpack:///./node_modules/sugar-date/date/isThisWeek.js","webpack:///./node_modules/sugar-date/date/isThisMonth.js","webpack:///./node_modules/sugar-date/date/isSunday.js","webpack:///./node_modules/sugar-date/date/isSaturday.js","webpack:///./node_modules/sugar-date/date/isPast.js","webpack:///./node_modules/sugar-date/date/isNextYear.js","webpack:///./node_modules/sugar-date/date/isNextWeek.js","webpack:///./node_modules/sugar-date/date/isNextMonth.js","webpack:///./node_modules/sugar-date/date/isMonday.js","webpack:///./node_modules/sugar-date/date/isLeapYear.js","webpack:///./node_modules/sugar-date/date/isLastYear.js","webpack:///./node_modules/sugar-date/date/isLastWeek.js","webpack:///./node_modules/sugar-date/date/isLastMonth.js","webpack:///./node_modules/sugar-date/date/isFuture.js","webpack:///./node_modules/sugar-date/date/internal/buildRelativeAliases.js","webpack:///./node_modules/sugar-date/date/isFriday.js","webpack:///./node_modules/sugar-date/date/isBetween.js","webpack:///./node_modules/sugar-date/date/isBefore.js","webpack:///./node_modules/sugar-date/date/isAfter.js","webpack:///./node_modules/sugar-date/date/internal/compareDay.js","webpack:///./node_modules/sugar-date/common/internal/trim.js","webpack:///./node_modules/sugar-date/date/is.js","webpack:///./node_modules/sugar-date/date/hoursUntil.js","webpack:///./node_modules/sugar-date/date/hoursSince.js","webpack:///./node_modules/sugar-date/date/hoursFromNow.js","webpack:///./node_modules/sugar-date/date/hoursAgo.js","webpack:///./node_modules/sugar-date/date/getWeekday.js","webpack:///./node_modules/sugar-date/date/getUTCWeekday.js","webpack:///./node_modules/sugar-date/date/getUTCOffset.js","webpack:///./node_modules/sugar-date/date/getISOWeek.js","webpack:///./node_modules/sugar-date/date/internal/createDateWithContext.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/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/var/ABBREVIATED_YEAR_REG.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/CoreParsingTokens.js","webpack:///./node_modules/sugar-date/date/var/LOCALE_ARRAY_FIELDS.js","webpack:///./node_modules/sugar-date/date/internal/getNewLocale.js","webpack:///./node_modules/sugar-date/date/var/CanadianEnglishDefinition.js","webpack:///./node_modules/sugar-date/date/var/EnglishLocaleBaseDefinition.js","webpack:///./node_modules/sugar-date/date/var/BritishEnglishDefinition.js","webpack:///./node_modules/sugar-date/date/var/LazyLoadedLocales.js","webpack:///./node_modules/sugar-date/date/index.js"],"names":["webpackUniversalModuleDefinition","root","factory","exports","module","define","amd","a","i","window","webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","installedModules","1","__webpack_require__","l","e","requireEnsure","promises","installedChunkData","promise","Promise","resolve","reject","head","document","getElementsByTagName","script","createElement","charset","timeout","nc","setAttribute","src","p","0","setTimeout","onScriptComplete","type","target","event","onerror","onload","clearTimeout","chunk","errorType","realSrc","error","Error","request","undefined","appendChild","all","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","r","value","n","__esModule","getDefault","getModuleExports","object","property","oe","err","console","jsonpArray","oldJsonpFunction","bind","slice","s","global","Sugar","SUGAR_GLOBAL","STATIC","INSTANCE","PROPERTY_DESCRIPTOR_SUPPORT","defineProperties","globalContext","getGlobal","testGlobal","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","this","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","mapObjectChainableToAllNamespaces","proto","methodNames","ownPropertyNames","nativeMethodProhibited","getOwnPropertyNames","internalToString","internalHasOwnProperty","key","writable","getOwn","setupGlobal","split","setGlobalProperties","isString","isFunction","isArray","NO_KEYS_IN_STRING_OBJECTS","TRIM_CHARS","HALF_WIDTH_PERIOD","HALF_WIDTH_COMMA","sugarObject","sugarArray","Array","sugarDate","Date","sugarString","String","sugarFunction","Number","Function","RegExp","isClass","className","str","wrapNamespace","defineStaticPolyfill","defineInstancePolyfill","assertCallable","TypeError","isDefined","isObjectType","isPrimitive","isPlainObject","hasValidPlainObjectPrototype","hasToString","hasConstructor","hasOwnEnumeratedProperties","objectProto","isArrayIndex","iterateOverSparseArray","fromIndex","loop","index","indexes","getSparseArrayIndexes","fromRight","sort","aLoop","spaceSplit","forEach","fullWidthNumberMap","trunc","isFinite","ceil","floor","padNumber","num","place","sign","base","replacement","abs","repeatString","result","replace","pow","min","chr","round","fromCharCode","privatePropertyAccessor","privateKey","buildClassChecks","knownTypes","addKnownType","buildClassCheck","globalObject","getConstructorClassCheck","ctorStr","getToStringClassCheck","buildPrimitiveClassCheck","toLowerCase","t","addCoreTypes","names","Set","Map","addArrayTypes","isKnownType","buildFullWidthNumber","hwp","hwc","fwn","digit","allCharsReg","DONT_ENUM_PROPS","arrayIndexOf","search","defaultFromIndex","increment","sparseIndexOf","arrayReduce","initialValue","count","defined","buildDontEnumFix","propertyIsEnumerable","forEachEnumerableProperty","buildChainableNativeMethodsFix","defineNativeMethodsOnChainable","dateTokens","addDateTokens","prefix","tokens","keys","assertNonNull","coercePrimitiveToObject","forceStringCoercion","charAt","every","context","some","map","filter","indexOf","lastIndexOf","eachFn","reduce","reduceFn","reduceRight","TRIM_REG","trim","boundArgs","$i","$len","bound","concat","now","getTime","toISOString","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","toJSON","hasISOSupport","UTC","defaultsBool","defaultVal","_types__WEBPACK_IMPORTED_MODULE_0__","defaultsStr","defaultsNb","isNaN","defaultsArr","defaultsFn","doc","_root__WEBPACK_IMPORTED_MODULE_0__","getText","node","_types__WEBPACK_IMPORTED_MODULE_1__","textContent","_string__WEBPACK_IMPORTED_MODULE_2__","innerText","getFirstTextNode","childNodes","nodeType","createElm","tag","removeElm","parentNode","removeChild","createText","txt","createTextNode","hasClass","ele","cls","supportsClassList","classList","contains","match","addClass","add","removeClass","remove","reg","createOpt","text","isSel","opt","createCheckItem","id","chkValue","labelText","extraAttr","li","label","check","elm","getElementById","tagname","documentElement","__webpack_exports__","isEmpty","EMPTY_FN","isObj","isFn","isNumber","isBoolean","isUndef","isNull","AUTO_FILTER_DELAY","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","addEvt","func","capture","addEventListener","attachEvent","removeEvt","removeEventListener","detachEvent","stopEvt","evt","stopPropagation","cancelBubble","cancelEvt","preventDefault","returnValue","targetEvt","srcElement","keyCode","charCode","which","isKeyPressed","scope","boundFnName","buildNumberUnitMethods","buildDateUnitMethods","rgxEsc","matchCase","term","exactMatch","modifier","diacritics__WEBPACK_IMPORTED_MODULE_0__","test","toCamelCase","p1","p2","toUpperCase","self","_typeof","NOT_IMPLEMENTED","Feature","tf","_this","_classCallCheck","meta","feature","altName","_string__WEBPACK_IMPORTED_MODULE_0__","enabled","config","emitter","initialized","on","destroy","_createClass","init","reset","enable","disable","isEnabled","HOURS_INDEX","DAY_INDEX","WEEK_INDEX","MONTH_INDEX","YEAR_INDEX","isSerializable","isDate","isRegExp","isSet","isMap","isError","NATIVE_TYPES","localeManager","defineStatic","addLocale","code","set","English","LazyLoadedLocales","AmericanEnglishDefinition","getNewLocale","buildLocales","LocaleManager","loc","locales","fallback","current","getAll","def","compiledFormats","buildRelativeAliases","util","EVENTS","LEFT","RIGHT","CENTER","Toolbar","_Feature","f","_possibleConstructorReturn","_getPrototypeOf","toolbar","contCssClass","_settings__WEBPACK_IMPORTED_MODULE_2__","container_css_class","lContCssClass","left_cont_css_class","rContCssClass","right_cont_css_class","cContCssClass","center_cont_css_class","tgtId","target_id","cont","lCont","rCont","cCont","innerCont","left","center","right","isExternal","_inherits","_feature__WEBPACK_IMPORTED_MODULE_0__","container","_dom__WEBPACK_IMPORTED_MODULE_1__","gridLayout","Mod","tblMainCont","infDivCssClass","dom","insertBefore","firstChild","createContainer","_types__WEBPACK_IMPORTED_MODULE_3__","help","emit","position","css","div","tbl","captions","alwaysInstantiate","cloneRangeMember","Range","start","end","has","caseSensitive","sCase","Boolean","defineOnPrototype","ctor","parse","decimal","regex","unformatted","parseFloat","_utc","callDateGet","getWeekday","buildDateRangeUnits","setDate","getDate","classChecks","mathAliases","setWeekday","dow","dir","currentWeekday","ndir","offset","sugarNumber","sugarRegExp","getExtendedDate","createDate","options","forceClone","date","getMonth","getYear","getDaysInMonth","DateUnits","multiplier","alias","ambiguous","ignoreCase","x","y","numSortAsc","numSortDesc","dateSortAsc","date1","date2","dateSortDesc","sortNumberStr","compareFn","numStr1","numStr2","num1","_number__WEBPACK_IMPORTED_MODULE_0__","num2","sortDateStr","locale","dateStr1","dateStr2","sugar_date__WEBPACK_IMPORTED_MODULE_1__","create","cloneDate","clone","callDateSet","safe","walkUnitDown","setUnitAndLowerToEdge","startIndex","stopIndex","unit","dateIsValid","updateDate","advanceDate","_dateOptions","getNewDate","DateUnitIndexes","getLowerUnitIndex","isUndefined","isValidRangeMember","rangeIsValid","range","methodDefineAliases","collectSimilarMethods","defineInstance","defineInstanceSimilar","LocaleHelpers","moveToBeginningOfWeek","moveToBeginningOfUnit","unitIndex","localeCode","getFirstDayOfWeek","moveToEndOfWeek","moveToEndOfUnit","getDateParam","iterateOverDateUnits","iterateOverDateParams","params","endIndex","run","resetLowerUnits","getHigherUnitIndex","callDateSetWithWeek","advance","prefer","weekdayDir","contextDate","upperUnitIndex","setUnit","unitName","checkMonth","fraction","setUpperUnit","setSpecificity","specificity","handleFraction","lowerUnit","monthHasShifted","targetMonth","setTime","millisecond","canDisambiguate","disambiguateHigherUnit","tzOffset","getTimezoneOffset","HALF_WIDTH_ZERO","FULL_WIDTH_ZERO","FULL_WIDTH_PERIOD","OPEN_BRACE","CLOSE_BRACE","simpleMerge","simpleClone","BaseDropdown","customSorter","_types__WEBPACK_IMPORTED_MODULE_2__","filter_options_sorter","col","comparer","isCustom","optsTxt","excludedOpts","sortOptions","colIndex","isCustomOptions","sortSlc","sortNumDesc","idx","hasType","_const__WEBPACK_IMPORTED_MODULE_3__","getDecimal","_sort__WEBPACK_IMPORTED_MODULE_1__","getLocale","refreshFilters","colIndexes","_this2","colIdx","values","getValues","build","linkedFilters","selectOptions","isValidLinkedValue","rowIdx","activeFilterIdx","disableExcludedOptions","paging","isRowValid","isRowDisplayed","linkFilters","activeFilterId","refreshAll","write","hours","expire","toGMTString","cookie","escape","read","cookieValue","unescape","substring","Paging","btnCssClass","_settings__WEBPACK_IMPORTED_MODULE_5__","btn_css_class","pageSlc","pageLengthSlc","pageLength","pageLengthTgtId","results_per_page_target_id","pgSlcCssClass","slc_css_class","pgInpCssClass","inp_css_class","resultsPerPage","results_per_page","hasResultsPerPage","resultsSlcCssClass","results_slc_css_class","resultsSpanCssClass","results_span_css_class","startPagingRow","nbPages","currentPageNb","btnNextPageText","btn_next_page_text","btnPrevPageText","btn_prev_page_text","btnLastPageText","btn_last_page_text","btnFirstPageText","btn_first_page_text","btnNextPageHtml","btn_next_page_html","enableIcons","btnPrevPageHtml","btn_prev_page_html","btnFirstPageHtml","btn_first_page_html","btnLastPageHtml","btn_last_page_html","pageText","page_text","ofText","of_text","nbPgSpanCssClass","nb_pages_css_class","hasBtns","btns","pageSelectorType","page_selector_type","_const__WEBPACK_IMPORTED_MODULE_4__","toolbarPosition","toolbar_position","_toolbar__WEBPACK_IMPORTED_MODULE_6__","onBeforeChangePage","on_before_change_page","onAfterChangePage","on_after_change_page","slcResultsTxt","btnNextCont","btnPrevCont","btnLastCont","btnFirstCont","pgCont","pgBefore","pgAfter","startRow","refRow","nrows","getRowsNb","_assertThisInitialized","slcIndex","selectedIndex","parseInt","nbOpts","next","nextIndex","changePage","prev","prevIndex","first","_detectKey","_event__WEBPACK_IMPORTED_MODULE_3__","sorted","blur","slcPagesChange","nextEvt","prevEvt","lastEvt","firstEvt","slcPages","setResultsPerPage","slc","btnNextSpan","btnPrevSpan","btnLastSpan","btnFirstSpan","innerHTML","btnNext","btnPrev","btnLast","btnFirst","targetEl","pgBeforeSpan","pgAfterSpan","pgSpan","setPagingInfo","fltGrid","validateAllRows","validRowsIndex","resetPagingInfo","changePageHandler","changePageResultsHandler","filterTable","validRows","getValidRows","style","visibility","z","groupByPage","rows","endPagingRow","h","getValidRowsNb","validRowIdx","getAttribute","rowDisplayed","display","getPage","setPage","cmd","isInitialized","btnEvt","cmdtype","_this3","slcResultsChange","ev","onChangeResultsPerPage","slcR","slcRText","slcROpts","slcRSpan","btn","currOpt","Option","removeResultsPerPage","selected","changeResultsPerPage","slcPagesSelIndex","nbFilterableRows","slcIdx","resetPage","pgNb","getPageNb","resetPageLength","pglenIndex","getPageLength","pageNumber","off","NoResults","no_results_message","content","_settings__WEBPACK_IMPORTED_MODULE_4__","customContainer","custom_container","customContainerId","custom_container_id","cssClass","css_class","onBeforeShow","on_before_show_msg","onAfterShow","on_after_show_msg","onBeforeHide","on_before_hide_msg","onAfterHide","on_after_hide_msg","nextSibling","toggle","hide","show","setWidth","width","headTbl","clientWidth","tHead","tBodies","AlternateRows","evenCss","even_row_css_class","oddCss","odd_row_css_class","processAll","processRowHandler","indexLen","j","setRowBg","processRow","arrIdx","isValid","removeRowBg","rowIndex","arrIndex","eachRow","row","ClearButton","btn_reset","targetId","_settings__WEBPACK_IMPORTED_MODULE_3__","tooltip","html","_toolbar__WEBPACK_IMPORTED_MODULE_5__","element","onClick","clearFilters","_types__WEBPACK_IMPORTED_MODULE_4__","resetEl","_event__WEBPACK_IMPORTED_MODULE_2__","fltReset","StatusBar","status_bar","msgContainer","labelContainer","delay","onBeforeShowMsg","onAfterShowMsg","msgFilter","msg_filter","msgPopulate","msg_populate","msgPopulateCheckList","msg_populate_checklist","msgChangePage","msg_change_page","msgClear","msg_clear","msgChangeResults","msg_change_results","msgResetPage","msg_reset_page","msgResetPageLength","msg_reset_page_length","msgSort","msg_sort","msgLoadExtensions","msg_load_extensions","msgLoadThemes","msg_load_themes","statusDiv","_dom__WEBPACK_IMPORTED_MODULE_2__","statusSpan","statusSpanText","message","_root__WEBPACK_IMPORTED_MODULE_1__","_this4","RowsCounter","rows_counter","fromToTextSeparator","separator","overText","over_text","_toolbar__WEBPACK_IMPORTED_MODULE_4__","onBeforeRefreshCounter","on_before_refresh_counter","onAfterRefreshCounter","on_after_refresh_counter","countDiv","countSpan","countText","refresh","totTxt","nbValidRows","pagingStartRow","pagingEndRow","getFilterableRowsNb","nbHiddenRows","MarkActiveColumns","mark_active_columns","headerCssClass","header_css_class","cellCssClass","cell_css_class","highlightColumn","highlight_column","onBeforeActiveColumn","on_before_active_column","onAfterActiveColumn","on_after_active_column","clearActiveColumns","markActiveColumn","eachCol","getHeaderElement","eachColumnCell","cell","header","querySelectorAll","_this5","PopupFilter","popup_filters","closeOnFiltering","_settings__WEBPACK_IMPORTED_MODULE_6__","close_on_filtering","iconPath","image","themesPath","activeIconPath","image_active","iconHtml","image_html","placeholderCssClass","placeholder_css_class","containerCssClass","div_css_class","adjustToContainer","adjust_to_container","onBeforeOpen","on_before_popup_filter_open","onAfterOpen","on_after_popup_filter_open","onBeforeClose","on_before_popup_filter_close","onAfterClose","on_after_popup_filter_close","fltSpans","fltIcons","filtersCache","fltElms","prfxDiv","closeAll","headerWidth","onMouseup","targetElm","activeFlt","close","externalFltIds","filtersRowIndex","headersRow","headers_row_index","buildIcons","setIconsState","cellIndex","changeState","buildAll","icon","getFilterType","contId","placeholder","isOpen","open","_root__WEBPACK_IMPORTED_MODULE_5__","flt","getFilterElement","focus","exceptIdx","fltType","_this6","iconImg","HighlightKeyword","highlightCssClass","highlight_css_class","unhighlightAll","_processTerm","highlight","hasChildNodes","children","termIdx","nodeValue","pn","nv","before","_dom__WEBPACK_IMPORTED_MODULE_0__","substr","after","unhighlight","highlightedNodes","nodeVal","replaceChild","normalize","highlightKeywords","reLk","lkOperator","reEq","eqOperator","reSt","stOperator","reEn","enOperator","reLe","leOperator","reGe","geOperator","reL","lwOperator","reG","grOperator","reD","dfOperator","BEFORE_ACTION_EVENTS","AFTER_ACTION_EVENTS","Loader","loader","closeDelay","onShow","on_show_loader","onHide","on_hide_loader","containerDiv","_root__WEBPACK_IMPORTED_MODULE_3__","displayLoader","GridLayout","grid_layout","height","mainContCssClass","cont_css_class","tbl_cont_css_class","headContCssClass","tbl_head_css_class","inf_grid_css_class","headRowIndex","headRows","headers_rows","filters","noHeaders","no_headers","defaultColWidth","default_col_width","colElms","prfxGridFltTd","prfxGridTh","sourceTblHtml","outerHTML","tblHasColTag","tblCont","headTblCont","setOverrides","setDefaultColWidths","setConfigWidth","tblW","initialTableWidth","_string__WEBPACK_IMPORTED_MODULE_3__","tH","hRow","sortTriggers","getSortTriggerIds","filtersRow","createFiltersRow","setHeadersRow","thead","tableLayout","setColWidths","scrollLeft","extension","asyncSort","triggerIds","setColumnElements","popupFilters","colWidths","k","colW","getHeadersRowIndex","cells","fltTdId","prfxFlt","cl","fltCellTag","cols","getCellsNb","tableHead","thId","State","cfg","state","enableHash","types","enableLocalStorage","enableCookie","persistFilters","persistPageNumber","page_number","persistPageLength","page_length","persistSort","persistColsVisibility","columns_visibility","persistFiltersVisibility","filters_visibility","cookieDuration","cookie_duration","enableStorage","storage","hash","pageNb","hiddenCols","filtersVisibility","prfxCol","pageNbKey","pageLengthKey","filtersVisKey","update","updatePage","updatePageLength","descending","updateSort","_syncSort","_syncColsVisibility","updateColsVisibility","_syncFiltersVisibility","visible","updateFiltersVisibility","_hash__WEBPACK_IMPORTED_MODULE_1__","_storage__WEBPACK_IMPORTED_MODULE_2__","getFiltersValue","column","hidden","sync","_syncFilters","overrideAndSync","setFilterValue","_this7","WEBSITE_URL","Help","help_instructions","contTgtId","container_target_id","instrText","_types__WEBPACK_IMPORTED_MODULE_5__","instrHtml","btnText","btn_text","btnHtml","btn_html","boundMouseup","defaultHtml","version","year","_toolbar__WEBPACK_IMPORTED_MODULE_7__","divContainer","helpEl","helplink","_root__WEBPACK_IMPORTED_MODULE_4__","divDisplay","DateType","datetime","sugar_date__WEBPACK_IMPORTED_MODULE_0__","_feature__WEBPACK_IMPORTED_MODULE_2__","setLocale","addConfigFormats","colTypes","dateStr","getOptions","colType","formats","format","addFormat","ex","incrementDate","incrementNumber","incrementString","getGreaterPrecision","getDateIncrementObject","rangeEvery","step","countOnly","precision","dio","inverse","NaN","ISODefaults","moveToFirstDayOfWeekYear","ISO_FIRST_DAY_OF_WEEK","ISO_FIRST_DAY_OF_WEEK_YEAR","getWeekNumber","allowPrevious","firstDayOfWeek","firstDayOfWeekYear","isoWeek","getTimeDistanceForUnit","d1","d2","tmp","fwd","simpleCapitalize","DATE_OPTIONS","namespaceAliases","defineOptionsAccessor","MINUTES","ABBREVIATED_YEAR_REG","resetTime","deleteDateParam","coreUtilityAliases","getYearFromAbbreviation","iterateOverHigherDateParams","afterCallbacks","relative","optPrefer","optLocale","optFromUTC","optSetUTC","optParams","optClone","parseFormatValues","dif","to","param","parseIrregular","parseValue","cloneDateByFlag","afterDateSet","handleTimezoneOffset","tzHour","tzMinute","minute","handleMidday","hour","handleRelativeUnit","edge","weekday","setOrdinalWeekday","half","day","separateAbsoluteUnits","handleEdge","units","weekdayOfMonth","edgeIndex","month","setupOptions","parseStringDate","cacheFormat","timestamp","ampm","utc","midday","fireCallbacks","EnglishLocaleBaseDefinition","getEnglishVariant","v","removeDiacritics","diacriticsMap","replacementList","chars","JSON","localStorage","location","hasStorage","Storage","duration","save","getKey","stringify","_cookie__WEBPACK_IMPORTED_MODULE_0__","retrieve","removeItem","prfxTf","path","pathname","decodeURIComponent","encodeURIComponent","hasHashChange","docMode","documentMode","Hash","lastHash","boundSync","_event__WEBPACK_IMPORTED_MODULE_0__","CheckList","_BaseDropdown","containers","_settings__WEBPACK_IMPORTED_MODULE_7__","div_checklist_css_class","filterCssClass","checklist_css_class","itemCssClass","checklist_item_css_class","selectedItemCssClass","checklist_selected_item_css_class","activateText","activate_checklist_text","disabledItemCssClass","checklist_item_disabled_css_class","enableResetOption","enable_checklist_reset_filter","prfx","_baseDropdown__WEBPACK_IMPORTED_MODULE_0__","optionClick","_event__WEBPACK_IMPORTED_MODULE_4__","setItemOption","onCheckListClick","loadFltOnDemand","ct","colIdxs","getFiltersByType","_const__WEBPACK_IMPORTED_MODULE_6__","externalFltTgtId","divCont","fltIds","buildFilterId","isLinked","ul","activeIdx","customValues","getCustomOptions","getActiveFilterId","getColumnIndexFromFilterId","filteredDataCol","cellValue","getCellValue","cellString","_array__WEBPACK_IMPORTED_MODULE_2__","filteredCol","getVisibleColumnValues","excludeRows","nbCells","addChecks","chkCt","addTChecks","lbl","fltId","lblIdx","disabled","li0","getClearFilterText","enableEmptyOption","li1","emOperator","emptyText","enableNonEmptyOption","li2","nmOperator","nonEmptyText","chkIndex","dataset","items","slcValues","slcIndexes","checked","chx","orOperator","chx0","replaceValue","replaceIndex","_this8","lis","chk","chkVal","fltAttr","_this9","Dropdown","enableSlcResetFilter","enable_slc_reset_filter","non_empty_text","multipleSlcTooltip","multiple_slc_tooltip","onSlcFocus","onSlcChange","selectFlts","_const__WEBPACK_IMPORTED_MODULE_5__","multipleFlts","multiple","title","fltCssClass","fltMultiCssClass","opt0","addOptions","slcValue","addFirstOption","isDisabled","opt1","opt2","option","selectedOptions","Emitter","events","evts","splice","DURATION_REG","amt","Hours","Minutes","Seconds","Milliseconds","MULTIPLIERS","amount","mult","getDateForRange","getRangeMemberPrimitiveValue","valueOf","dateFormat","assertDateIsValid","getAdjustedUnitForDate","dateRelative","dRelative","adu","getRelativeFormat","compareDay","compareDate","fullCompareDate","margin","weekdayMap","monthMap","getUTCOffset","iso","colon","getHours","ISO8601","RFC1123","RFC1036","CoreOutputFormats","formattingTokens","dateFormatMatcher","getDateParamsFromString","collectDateParamsFromArguments","collectUpdateDateArguments","allowDuration","advanceDateWithArgs","timezoneShift","compareEdges","loMargin","hiMargin","fromUTC","setUTC","addSpecificUnit","getTimezoneShift","getOwnKey","getDateParamKey","setYear","setMonth","setISOWeekNumber","getAdjustedUnit","ms","withPrecision","getRegNonCapturing","requiresSuffix","requiresSuffixOr","second","requiresNumerals","mdy","short","medium","long","full","stamp","time","g","eval","_root__WEBPACK_IMPORTED_MODULE_6__","FEATURES","_modules_dateType__WEBPACK_IMPORTED_MODULE_10__","_modules_help__WEBPACK_IMPORTED_MODULE_11__","_modules_state__WEBPACK_IMPORTED_MODULE_12__","_modules_markActiveColumns__WEBPACK_IMPORTED_MODULE_17__","_modules_gridLayout__WEBPACK_IMPORTED_MODULE_13__","_modules_loader__WEBPACK_IMPORTED_MODULE_14__","_modules_highlightKeywords__WEBPACK_IMPORTED_MODULE_15__","_modules_popupFilter__WEBPACK_IMPORTED_MODULE_16__","_modules_rowsCounter__WEBPACK_IMPORTED_MODULE_18__","_modules_statusBar__WEBPACK_IMPORTED_MODULE_19__","_modules_clearButton__WEBPACK_IMPORTED_MODULE_20__","_modules_alternateRows__WEBPACK_IMPORTED_MODULE_21__","_modules_noResults__WEBPACK_IMPORTED_MODULE_22__","_modules_paging__WEBPACK_IMPORTED_MODULE_23__","_modules_toolbar__WEBPACK_IMPORTED_MODULE_24__","TableFilter","getFullYear","hasConfig","_len","_key","nodeName","_emitter__WEBPACK_IMPORTED_MODULE_7__","filterTypes","_const__WEBPACK_IMPORTED_MODULE_25__","basePath","base_path","grid","filters_row_index","filters_cell_tag","stylePath","getStylePath","stylesheet","getStylesheetPath","stylesheetId","fltsRowCssClass","flts_row_css_class","enable_icons","alternateRows","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","ignoreDiacritics","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","markActiveColumns","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","rowsCounter","statusBar","displayBtn","btnReset","onBeforeReset","on_before_reset","onAfterReset","on_after_reset","autoFilter","auto_filter","autoFilterDelay","isUserTyping","autoFilterTimer","highlight_keywords","noResults","dateType","thousandsSeparator","thousands_separator","decimalSeparator","decimal_separator","col_types","prfxValButton","prfxResponsive","stickyCssClass","extensions","enableDefaultTheme","enable_default_theme","hasThemes","themes","getThemesPath","responsive","stickyHeaders","sticky_headers","ExtRegistry","instantiateFeatures","import","inpclass","loadThemes","initFeatures","fltrow","_insertFiltersRow","fltCell","colSpan","dropdown","_modules_dropdown__WEBPACK_IMPORTED_MODULE_8__","isExternalFlt","checkList","_modules_checkList__WEBPACK_IMPORTED_MODULE_9__","_buildInputFilter","_buildSubmitButton","setActiveFilterId","_initNoFilters","setExcludeRows","setFixedLayout","initExtensions","detectKey","clearInterval","onKeyUp","setInterval","onKeyDown","onInpFocus","onInpBlur","insertRow","inpType","inp","featureCls","Cls","_Cls$meta","_featureCls$meta","exts","ext","loadExtension","hasExtension","modulePath","then","__WEBPACK_AMD_REQUIRE_ARRAY__","mod","inst","default","catch","registerExtension","destroyExtensions","theme","styleId","isImported","getStylesheet","_this10","removeExternalFlts","deleteRow","externalFlt","optTxt","optArray","slcTexts","texts","slcSort","sorts","_this11","hiddenRows","searchArgs","occurence","isMatch","isSingleFltMatch","sA","sAOrSplit","hasMultiOrSA","sAAndSplit","hasMultiAndSA","cS","found","w","_match","validateRow","numData","reEm","reNm","reRe","hasLO","hasLE","hasGR","hasGE","hasDF","hasEQ","hasLK","hasST","hasEN","hasEM","hasNM","hasRE","dte1","dte2","isValidDate","parseDate","isLDate","isLEDate","isGDate","isGEDate","isDFDate","isEQDate","isExactMatch","_number__WEBPACK_IMPORTED_MODULE_4__","srchArg","searchArg","ignoresDiacritics","getColumnData","includeHeaders","exclude","getColValues","getColumnValues","_this12","typed","colValues","getContent","getCellData","getHeadersText","isExludedRow","getFilterValue","fltValue","fltColType","_this13","getFilterId","bool","tr","nbRows","getWorkingRows","getData","excludeHiddenCols","getTableData","_this14","tblData","headers","rowData","isColHidden","cellContent","getFilteredData","filteredData","getFilteredValues","rData","getFilteredColumnData","getFilteredDataCol","getVisibleColumnData","getFilteredColumnValues","_this15","validColValues","getRowDisplay","unshift","displayFlag","validFlag","query","tableWidth","defaultWidth","colTags","frag","createDocumentFragment","_this16","filterId","style_path","themes_path","activateFilter","ignoreDiac","clearText","continueFn","breakFn","_this17","startIdx","filePath","imported","attr","files","_import","fileId","callback","_this18","file","isLoaded","onreadystatechange","readyState","getFiltersId","reCalc","_this19","getFiltersRowIndex","getStartRowIndex","getLastRowIndex","table","_this20","headerText","ampmFront","numeralUnits","allowsFullWidth","timeMarkerOptional","weekdays","numerals","placeholders","past","future","timeSuffixes","modifiers","timeParse","plural","months","articles","timeFrontParse","timeMarkers","numberWithUnit","toFixed","last2","timeSeparator","ordinalSuffix","baseUnit","union","toArray","getRangeMemberNumericValue","charCodeAt","span","intersect","everyFn","periodSplit","getPrecision","n1","n2","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","relativeFn","monthsUntil","monthsSince","monthsFromNow","monthsAgo","minutesUntil","minutesSince","minutesFromNow","minutesAgo","millisecondsUntil","millisecondsSince","millisecondsFromNow","millisecondsAgo","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","createDateWithContext","INTERNAL_MEMOIZE_LIMIT","memoizeFunction","memo","counter","STRING_FORMAT_REG","CommonChars","createFormatMatcher","bracketMatcher","percentMatcher","precheck","compileMemoized","compile","lastIndex","exec","getSubstring","getToken","token","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","defineInstanceAndStatic","removeLocale","getAllLocales","getKeys","getAllLocaleCodes","setChainableConstructor","createFn","setDateChainableConstructor","delta","defineAccessor","namespace","defaults","defaultNewDate","newDateInternal","LocalizedParsingTokens","getParsingTokenWithSuffix","suffix","getAdjustedUnitForNumber","fullWidthNumberReg","fullWidthNumbers","fwp","escapeRegExp","arrayToRegAlternates","joined","join","PRIVATE_PROP_PREFIX","getArrayWithOffset","getOrdinalSuffix","commaSplit","localeCheck","yyyy","yy","ayy","MM","dd","hh","mm","ss","iyyyy","ihh","imm","GMT","Z","LOCALE_ARRAY_FIELDS","CoreParsingTokens","CoreParsingFormats","fullwidthNumberHelpers","Locale","monthSuffix","parseNumber","numeralMap","parseRegularNumerals","parseIrregularNumerals","lastWasPlace","isPlace","numeral","convertAdjustedToFormat","getTokenSrc","parsingAliases","formatToSrc","parsingTokens","parseInputFormat","addRawFormat","buildValueArray","setMap","forAllAlternates","forEachAlternate","alt","suffixes","addFormatSet","allowTime","timeFront","getFormatWithTime","baseFormat","timeBefore","getTimeBefore","getTimeAfter","localized","markers","initFormats","initDefinition","initArrayFields","buildNumerals","buildTimeFormats","getTimeFormat","standalone","sep","getTimeSeparatorSrc","buildParsingTokens","getCoreTokensForBase","getNumeralSrc","buildTimeSuffixes","buildModifiers","mapKey","addCoreFormats","df","addLocaleFormats","CanadianEnglishDefinition","BritishEnglishDefinition","en-US","en-GB","en-AU","en-CA"],"mappings":"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,CACHnnC,KAAA,IACAmnC,MAAA,YACG,CACHnnC,KAAA,IACAmnC,MAAA,oBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,8CACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,aACG,CACHnnC,KAAA,IACAmnC,MAAA,SACG,CACHnnC,KAAA,IACAmnC,MAAA,oBACG,CACHnnC,KAAA,IACAmnC,MAAA,oBACG,CACHnnC,KAAA,IACAmnC,MAAA,kBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,qCACG,CACHnnC,KAAA,IACAmnC,MAAA,WACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,aACG,CACHnnC,KAAA,IACAmnC,MAAA,QACG,CACHnnC,KAAA,IACAmnC,MAAA,kBACG,CACHnnC,KAAA,IACAmnC,MAAA,iBACG,CACHnnC,KAAA,IACAmnC,MAAA,uCACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,OACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,MACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,aACG,CACHnnC,KAAA,IACAmnC,MAAA,gBACG,CACHnnC,KAAA,IACAmnC,MAAA,oBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,MACG,CACHnnC,KAAA,IACAmnC,MAAA,iCACG,CACHnnC,KAAA,IACAmnC,MAAA,QACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,MACAmnC,MAAA,KACG,CACHnnC,KAAA,MACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,kBACG,CACHnnC,KAAA,IACAmnC,MAAA,kBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,uBACG,CACHnnC,KAAA,IACAmnC,MAAA,SACG,CACHnnC,KAAA,IACAmnC,MAAA,iBACG,CACHnnC,KAAA,IACAmnC,MAAA,uBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,WACG,CACHnnC,KAAA,IACAmnC,MAAA,sBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,+CACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,cACG,CACHnnC,KAAA,IACAmnC,MAAA,SACG,CACHnnC,KAAA,IACAmnC,MAAA,oBACG,CACHnnC,KAAA,IACAmnC,MAAA,qBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,mBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,qCACG,CACHnnC,KAAA,IACAmnC,MAAA,WACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,cACG,CACHnnC,KAAA,IACAmnC,MAAA,QACG,CACHnnC,KAAA,IACAmnC,MAAA,mBACG,CACHnnC,KAAA,IACAmnC,MAAA,kBAIAF,EAAA,GACA52C,EAAA,EAAeA,EAAA62C,EAAAp2C,OAA4BT,GAAA,EAE3C,IADA,IAAA82C,EAAAD,EAAA72C,GAAA82C,MACA7b,EAAA,EAAiB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A,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KAGAA,EAAA,KACAA,EAAA,KAEAzB,EAAAD,QAAA0B,EAAA","file":"tablefilter.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1]\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\t\tvar script = document.createElement('script');\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120000;\n\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = __webpack_require__.p + \"tf-\" + ({}[chunkId]||chunkId) + \"-\" + {\"0\":\"9d01916cb7bd885f9f23\"}[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 = 127);\n","/*\n * Sugar v2.0.6\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 var globalContext = getGlobal();\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 // istanbul ignore next\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 getGlobal() {\n // Get global context by keyword here to avoid issues with libraries\n // that can potentially alter this script's context object.\n return testGlobal(typeof global !== 'undefined' && global) ||\n testGlobal(typeof window !== 'undefined' && window);\n }\n\n function testGlobal(obj) {\n // Note that Rhino uses a different \"global\" keyword so perform an\n // extra check here to ensure that it's actually the global object.\n return obj && obj.Object === Object ? obj : null;\n }\n\n function setupGlobal() {\n Sugar = globalContext[SUGAR_GLOBAL];\n // istanbul ignore if\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 // istanbul ignore else\n if (typeof module !== 'undefined' && module.exports) {\n // Node or webpack environment\n module.exports = Sugar;\n } else {\n // Unwrapped browser environment\n try {\n globalContext[SUGAR_GLOBAL] = Sugar;\n } catch (e) {\n // Contexts such as QML have a read-only global context.\n }\n }\n forEachProperty(NATIVE_NAMES.split(' '), function(name) {\n createNamespace(name);\n });\n setGlobalProperties();\n }\n\n /***\n * @method createNamespace(name)\n * @returns SugarNamespace\n * @namespace Sugar\n * @short Creates a new Sugar namespace.\n * @extra This method is for plugin developers who want to define methods to be\n * used with natives that Sugar does not handle by default. The new\n * namespace will appear on the `Sugar` global with all the methods of\n * normal namespaces, including the ability to define new methods. When\n * extended, any defined methods will be mapped to `name` in the global\n * context.\n *\n * @example\n *\n * Sugar.createNamespace('Boolean');\n *\n * @param {string} name - The namespace name.\n *\n ***/\n function createNamespace(name) {\n\n // Is the current namespace Object?\n var isObject = name === 'Object';\n\n // A Sugar namespace is also a chainable class: Sugar.Array, etc.\n var sugarNamespace = getNewChainableClass(name, true);\n\n /***\n * @method extend([opts])\n * @returns Sugar\n * @namespace Sugar\n * @short Extends Sugar defined methods onto natives.\n * @extra This method can be called on individual namespaces like\n * `Sugar.Array` or on the `Sugar` global itself, in which case\n * [opts] will be forwarded to each `extend` call. For more,\n * see `extending`.\n *\n * @options\n *\n * methods An array of method names to explicitly extend.\n *\n * except An array of method names or global namespaces (`Array`,\n * `String`) to explicitly exclude. Namespaces should be the\n * actual global objects, not strings.\n *\n * namespaces An array of global namespaces (`Array`, `String`) to\n * explicitly extend. Namespaces should be the actual\n * global objects, not strings.\n *\n * enhance A shortcut to disallow all \"enhance\" flags at once\n * (flags listed below). For more, see `enhanced methods`.\n * Default is `true`.\n *\n * enhanceString A boolean allowing String enhancements. Default is `true`.\n *\n * enhanceArray A boolean allowing Array enhancements. Default is `true`.\n *\n * objectPrototype A boolean allowing Sugar to extend Object.prototype\n * with instance methods. This option is off by default\n * and should generally not be used except with caution.\n * For more, see `object methods`.\n *\n * @example\n *\n * Sugar.Array.extend();\n * Sugar.extend();\n *\n * @option {Array} [methods]\n * @option {Array} [except]\n * @option {Array} [namespaces]\n * @option {boolean} [enhance]\n * @option {boolean} [enhanceString]\n * @option {boolean} [enhanceArray]\n * @option {boolean} [objectPrototype]\n * @param {ExtendOptions} [opts]\n *\n ***\n * @method extend([opts])\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Extends Sugar defined methods for a specific namespace onto natives.\n * @param {ExtendOptions} [opts]\n *\n ***/\n var extend = function (opts) {\n\n var nativeClass = globalContext[name], nativeProto = nativeClass.prototype;\n var staticMethods = {}, instanceMethods = {}, methodsByName;\n\n function objectRestricted(name, target) {\n return isObject && target === nativeProto &&\n (!allowObjectPrototype || name === 'get' || name === 'set');\n }\n\n function arrayOptionExists(field, val) {\n var arr = opts[field];\n if (arr) {\n for (var i = 0, el; el = arr[i]; i++) {\n if (el === val) {\n return true;\n }\n }\n }\n return false;\n }\n\n function arrayOptionExcludes(field, val) {\n return opts[field] && !arrayOptionExists(field, val);\n }\n\n function disallowedByFlags(methodName, target, flags) {\n // Disallowing methods by flag currently only applies if methods already\n // exist to avoid enhancing native methods, as aliases should still be\n // extended (i.e. Array#all should still be extended even if Array#every\n // is being disallowed by a flag).\n if (!target[methodName] || !flags) {\n return false;\n }\n for (var i = 0; i < flags.length; i++) {\n if (opts[flags[i]] === false) {\n return true;\n }\n }\n }\n\n function namespaceIsExcepted() {\n return arrayOptionExists('except', nativeClass) ||\n arrayOptionExcludes('namespaces', nativeClass);\n }\n\n function methodIsExcepted(methodName) {\n return arrayOptionExists('except', methodName);\n }\n\n function canExtend(methodName, method, target) {\n return !objectRestricted(methodName, target) &&\n !disallowedByFlags(methodName, target, method.flags) &&\n !methodIsExcepted(methodName);\n }\n\n opts = opts || {};\n methodsByName = opts.methods;\n\n if (namespaceIsExcepted()) {\n return;\n } else if (isObject && typeof opts.objectPrototype === 'boolean') {\n // Store \"objectPrototype\" flag for future reference.\n allowObjectPrototype = opts.objectPrototype;\n }\n\n forEachProperty(methodsByName || sugarNamespace, function(method, methodName) {\n if (methodsByName) {\n // If we have method names passed in an array,\n // then we need to flip the key and value here\n // and find the method in the Sugar namespace.\n methodName = method;\n method = sugarNamespace[methodName];\n }\n if (hasOwn(method, 'instance') && canExtend(methodName, method, nativeProto)) {\n instanceMethods[methodName] = method.instance;\n }\n if(hasOwn(method, 'static') && canExtend(methodName, method, nativeClass)) {\n staticMethods[methodName] = method;\n }\n });\n\n // Accessing the extend target each time instead of holding a reference as\n // it may have been overwritten (for example Date by Sinon). Also need to\n // access through the global to allow extension of user-defined namespaces.\n extendNative(nativeClass, staticMethods);\n extendNative(nativeProto, instanceMethods);\n\n if (!methodsByName) {\n // If there are no method names passed, then\n // all methods in the namespace will be extended\n // to the native. This includes all future defined\n // methods, so add a flag here to check later.\n setProperty(sugarNamespace, 'active', true);\n }\n return sugarNamespace;\n };\n\n function defineWithOptionCollect(methodName, instance, args) {\n setProperty(sugarNamespace, methodName, function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n defineMethods(sugarNamespace, opts.methods, instance, args, opts.last);\n return sugarNamespace;\n });\n }\n\n /***\n * @method defineStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods on the namespace that can later be extended\n * onto the native globals.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. If `extend` was previously called\n * with no arguments, the method will be immediately mapped to its\n * native when defined.\n *\n * @example\n *\n * Sugar.Number.defineStatic({\n * isOdd: function (num) {\n * return num % 2 === 1;\n * }\n * });\n *\n * @signature defineStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStatic', STATIC);\n\n /***\n * @method defineInstance(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines methods on the namespace that can later be extended as\n * instance methods onto the native prototype.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. All functions should accept the\n * native for which they are mapped as their first argument, and should\n * never refer to `this`. If `extend` was previously called with no\n * arguments, the method will be immediately mapped to its native when\n * defined.\n *\n * Methods cannot accept more than 4 arguments in addition to the\n * native (5 arguments total). Any additional arguments will not be\n * mapped. If the method needs to accept unlimited arguments, use\n * `defineInstanceWithArguments`. Otherwise if more options are\n * required, use an options object instead.\n *\n * @example\n *\n * Sugar.Number.defineInstance({\n * square: function (num) {\n * return num * num;\n * }\n * });\n *\n * @signature defineInstance(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstance', INSTANCE);\n\n /***\n * @method defineInstanceAndStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short A shortcut to define both static and instance methods on the namespace.\n * @extra This method is intended for use with `Object` instance methods. Sugar\n * will not map any methods to `Object.prototype` by default, so defining\n * instance methods as static helps facilitate their proper use.\n *\n * @example\n *\n * Sugar.Object.defineInstanceAndStatic({\n * isAwesome: function (obj) {\n * // check if obj is awesome!\n * }\n * });\n *\n * @signature defineInstanceAndStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceAndStatic', INSTANCE | STATIC);\n\n\n /***\n * @method defineStaticWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that collect arguments.\n * @extra This method is identical to `defineStatic`, except that when defined\n * methods are called, they will collect any arguments past `n - 1`,\n * where `n` is the number of arguments that the method accepts.\n * Collected arguments will be passed to the method in an array\n * as the last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineStaticWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineStaticWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStaticWithArguments', STATIC, true);\n\n /***\n * @method defineInstanceWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that collect arguments.\n * @extra This method is identical to `defineInstance`, except that when\n * defined methods are called, they will collect any arguments past\n * `n - 1`, where `n` is the number of arguments that the method\n * accepts. Collected arguments will be passed to the method as the\n * last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineInstanceWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineInstanceWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceWithArguments', INSTANCE, true);\n\n /***\n * @method defineStaticPolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that are mapped onto the native if they do\n * not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments. Note that polyfill methods will\n * be immediately mapped onto their native prototype regardless of the\n * use of `extend`.\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. Note that polyfill methods will be immediately mapped onto\n * their native prototype regardless of the use of `extend`.\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, 'VERSION', '2.0.6');\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;\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 return new sugarNamespace(raw)[methodName].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 // istanbul ignore next\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 /***\n * @module Common\n * @description Internal utility and common methods.\n ***/\n\n // Flag allowing native methods to be enhanced.\n var ENHANCEMENTS_FLAG = 'enhance';\n\n // For type checking, etc. Excludes object as this is more nuanced.\n var NATIVE_TYPES = 'Boolean Number String Date RegExp Function Array Error Set Map';\n\n // Do strings have no keys?\n var NO_KEYS_IN_STRING_OBJECTS = !('0' in Object('a'));\n\n // Prefix for private properties.\n var PRIVATE_PROP_PREFIX = '_sugar_';\n\n // Matches 1..2 style ranges in properties.\n var PROPERTY_RANGE_REG = /^(.*?)\\[([-\\d]*)\\.\\.([-\\d]*)\\](.*)$/;\n\n // WhiteSpace/LineTerminator as defined in ES5.1 plus Unicode characters in the Space, Separator category.\n var TRIM_CHARS = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u2028\\u2029\\u3000\\uFEFF';\n\n // Regex for matching a formatted string.\n var STRING_FORMAT_REG = /([{}])\\1|{([^}]*)}|(%)%|(%(\\w*))/g;\n\n // Common chars\n var 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\n // Namespace aliases\n var 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\n // Class checks\n var isSerializable,\n isBoolean, isNumber, isString,\n isDate, isRegExp, isFunction,\n isArray, isSet, isMap, isError;\n\n function 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 // istanbul ignore next\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 // istanbul ignore if\n if (globalObject && isClass(new globalObject, 'Object')) {\n return getConstructorClassCheck(globalObject);\n } else {\n return getToStringClassCheck(className);\n }\n }\n\n // Map and Set may be [object Object] in certain IE environments.\n // In this case we need to perform a check using the constructor\n // instead of Object.prototype.toString.\n // istanbul ignore next\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 return isKnownType(className) || isPlainObject(obj, className);\n };\n\n }\n\n function isClass(obj, className, str) {\n if (!str) {\n str = classToString(obj);\n }\n return str === '[object '+ className +']';\n }\n\n // Wrapping the core's \"define\" methods to\n // save a few bytes in the minified script.\n function wrapNamespace(method) {\n return function(sugarNamespace, arg1, arg2) {\n sugarNamespace[method](arg1, arg2);\n };\n }\n\n // Method define aliases\n var 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\n function defineInstanceSimilar(sugarNamespace, set, fn, flags) {\n defineInstance(sugarNamespace, collectSimilarMethods(set, fn), flags);\n }\n\n function defineInstanceAndStaticSimilar(sugarNamespace, set, fn, flags) {\n defineInstanceAndStatic(sugarNamespace, collectSimilarMethods(set, fn), flags);\n }\n\n function 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\n // This song and dance is to fix methods to a different length\n // from what they actually accept in order to stay in line with\n // spec. Additionally passing argument length, as some methods\n // throw assertion errors based on this (undefined check is not\n // enough). Fortunately for now spec is such that passing 3\n // actual arguments covers all requirements. Note that passing\n // the argument length also forces the compiler to not rewrite\n // length of the compiled function.\n function fixArgumentLength(fn) {\n var staticFn = function(a) {\n var args = arguments;\n return fn(a, args[1], args[2], args.length - 1);\n };\n staticFn.instance = function(b) {\n var args = arguments;\n return fn(this, b, args[1], args.length);\n };\n return staticFn;\n }\n\n function defineAccessor(namespace, name, fn) {\n setProperty(namespace, name, fn);\n }\n\n function 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\n // For methods defined directly on the prototype like Range\n function defineOnPrototype(ctor, methods) {\n var proto = ctor.prototype;\n forEachProperty(methods, function(val, key) {\n proto[key] = val;\n });\n }\n\n // Argument helpers\n\n function assertArgument(exists) {\n if (!exists) {\n throw new TypeError('Argument required');\n }\n }\n\n function assertCallable(obj) {\n if (!isFunction(obj)) {\n throw new TypeError('Function is not callable');\n }\n }\n\n function assertArray(obj) {\n if (!isArray(obj)) {\n throw new TypeError('Array required');\n }\n }\n\n function assertWritable(obj) {\n if (isPrimitive(obj)) {\n // If strict mode is active then primitives will throw an\n // error when attempting to write properties. We can't be\n // sure if strict mode is available, so pre-emptively\n // throw an error here to ensure consistent behavior.\n throw new TypeError('Property cannot be written');\n }\n }\n\n // Coerces an object to a positive integer.\n // Does not allow Infinity.\n function coercePositiveInteger(n) {\n n = +n || 0;\n if (n < 0 || !isNumber(n) || !isFinite(n)) {\n throw new RangeError('Invalid number');\n }\n return trunc(n);\n }\n\n\n // General helpers\n\n function isDefined(o) {\n return o !== undefined;\n }\n\n function isUndefined(o) {\n return o === undefined;\n }\n\n function 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\n function setChainableConstructor(sugarNamespace, createFn) {\n sugarNamespace.prototype.constructor = function() {\n return createFn.apply(this, arguments);\n };\n }\n\n // Fuzzy matching helpers\n\n function getMatcher(f) {\n if (!isPrimitive(f)) {\n var className = classToString(f);\n if (isRegExp(f, className)) {\n return regexMatcher(f);\n } else if (isDate(f, className)) {\n return dateMatcher(f);\n } else if (isFunction(f, className)) {\n return functionMatcher(f);\n } else if (isPlainObject(f, className)) {\n return fuzzyMatcher(f);\n }\n }\n // Default is standard isEqual\n return defaultMatcher(f);\n }\n\n function fuzzyMatcher(obj) {\n var matchers = {};\n return function(el, i, arr) {\n var matched = true;\n if (!isObjectType(el)) {\n return false;\n }\n forEachProperty(obj, function(val, key) {\n matchers[key] = getOwn(matchers, key) || getMatcher(val);\n if (matchers[key].call(arr, el[key], i, arr) === false) {\n matched = false;\n }\n return matched;\n });\n return matched;\n };\n }\n\n function defaultMatcher(f) {\n return function(el) {\n return isEqual(el, f);\n };\n }\n\n function regexMatcher(reg) {\n reg = RegExp(reg);\n return function(el) {\n return reg.test(el);\n };\n }\n\n function dateMatcher(d) {\n var ms = d.getTime();\n return function(el) {\n return !!(el && el.getTime) && el.getTime() === ms;\n };\n }\n\n function functionMatcher(fn) {\n return function(el, i, arr) {\n // Return true up front if match by reference\n return el === fn || fn.call(arr, el, i, arr);\n };\n }\n\n // Object helpers\n\n function getKeys(obj) {\n return Object.keys(obj);\n }\n\n function deepHasProperty(obj, key, any) {\n return handleDeepProperty(obj, key, any, true);\n }\n\n function deepGetProperty(obj, key, any) {\n return handleDeepProperty(obj, key, any, false);\n }\n\n function deepSetProperty(obj, key, val) {\n handleDeepProperty(obj, key, false, false, true, false, val);\n return obj;\n }\n\n function handleDeepProperty(obj, key, any, has, fill, fillLast, val) {\n var ns, bs, ps, cbi, set, isLast, isPush, isIndex, nextIsIndex, exists;\n ns = obj;\n if (key == null) return;\n\n if (isObjectType(key)) {\n // Allow array and array-like accessors\n bs = [key];\n } else {\n key = String(key);\n if (key.indexOf('..') !== -1) {\n return handleArrayIndexRange(obj, key, any, val);\n }\n bs = key.split('[');\n }\n\n set = isDefined(val);\n\n for (var i = 0, blen = bs.length; i < blen; i++) {\n ps = bs[i];\n\n if (isString(ps)) {\n ps = periodSplit(ps);\n }\n\n for (var j = 0, plen = ps.length; j < plen; j++) {\n key = ps[j];\n\n // Is this the last key?\n isLast = i === blen - 1 && j === plen - 1;\n\n // Index of the closing ]\n cbi = key.indexOf(']');\n\n // Is the key an array index?\n isIndex = cbi !== -1;\n\n // Is this array push syntax \"[]\"?\n isPush = set && cbi === 0;\n\n // If the bracket split was successful and this is the last element\n // in the dot split, then we know the next key will be an array index.\n nextIsIndex = blen > 1 && j === plen - 1;\n\n if (isPush) {\n // Set the index to the end of the array\n key = ns.length;\n } else if (isIndex) {\n // Remove the closing ]\n key = key.slice(0, -1);\n }\n\n // If the array index is less than 0, then\n // add its length to allow negative indexes.\n if (isIndex && key < 0) {\n key = +key + ns.length;\n }\n\n // Bracket keys may look like users[5] or just [5], so the leading\n // characters are optional. We can enter the namespace if this is the\n // 2nd part, if there is only 1 part, or if there is an explicit key.\n if (i || key || blen === 1) {\n\n // TODO: need to be sure this check handles ''.length when\n // we refactor.\n exists = any ? key in Object(ns) : hasOwn(ns, key);\n\n // Non-existent namespaces are only filled if they are intermediate\n // (not at the end) or explicitly filling the last.\n if (fill && (!isLast || fillLast) && !exists) {\n // For our purposes, last only needs to be an array.\n ns = ns[key] = nextIsIndex || (fillLast && isLast) ? [] : {};\n continue;\n }\n\n if (has) {\n if (isLast || !exists) {\n return exists;\n }\n } else if (set && isLast) {\n assertWritable(ns);\n ns[key] = val;\n }\n\n ns = exists ? ns[key] : undefined;\n }\n\n }\n }\n return ns;\n }\n\n // Get object property with support for 0..1 style range notation.\n function handleArrayIndexRange(obj, key, any, val) {\n var match, start, end, leading, trailing, arr, set;\n match = key.match(PROPERTY_RANGE_REG);\n if (!match) {\n return;\n }\n\n set = isDefined(val);\n leading = match[1];\n\n if (leading) {\n arr = handleDeepProperty(obj, leading, any, false, set ? true : false, true);\n } else {\n arr = obj;\n }\n\n assertArray(arr);\n\n trailing = match[4];\n start = match[2] ? +match[2] : 0;\n end = match[3] ? +match[3] : arr.length;\n\n // A range of 0..1 is inclusive, so we need to add 1 to the end. If this\n // pushes the index from -1 to 0, then set it to the full length of the\n // array, otherwise it will return nothing.\n end = end === -1 ? arr.length : end + 1;\n\n if (set) {\n for (var i = start; i < end; i++) {\n handleDeepProperty(arr, i + trailing, any, false, true, false, val);\n }\n } else {\n arr = arr.slice(start, end);\n\n // If there are trailing properties, then they need to be mapped for each\n // element in the array.\n if (trailing) {\n if (trailing.charAt(0) === HALF_WIDTH_PERIOD) {\n // Need to chomp the period if one is trailing after the range. We\n // can't do this at the regex level because it will be required if\n // we're setting the value as it needs to be concatentated together\n // with the array index to be set.\n trailing = trailing.slice(1);\n }\n return map(arr, function(el) {\n return handleDeepProperty(el, trailing);\n });\n }\n }\n return arr;\n }\n\n function getOwnKey(obj, key) {\n if (hasOwn(obj, key)) {\n return key;\n }\n }\n\n function hasProperty(obj, prop) {\n return !isPrimitive(obj) && prop in obj;\n }\n\n function isObjectType(obj, type) {\n return !!obj && (type || typeof obj) === 'object';\n }\n\n function isPrimitive(obj, type) {\n type = type || typeof obj;\n return obj == null || type === 'string' || type === 'number' || type === 'boolean';\n }\n\n function isPlainObject(obj, className) {\n return isObjectType(obj) &&\n isClass(obj, 'Object', className) &&\n hasValidPlainObjectPrototype(obj) &&\n hasOwnEnumeratedProperties(obj);\n }\n\n function 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\n function 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\n function simpleRepeat(n, fn) {\n for (var i = 0; i < n; i++) {\n fn(i);\n }\n }\n\n function simpleClone(obj) {\n return simpleMerge({}, obj);\n }\n\n // TODO: Use Object.assign here going forward.\n function simpleMerge(target, source) {\n forEachProperty(source, function(val, key) {\n target[key] = val;\n });\n return target;\n }\n\n // Make primtives types like strings into objects.\n function coercePrimitiveToObject(obj) {\n if (isPrimitive(obj)) {\n obj = Object(obj);\n }\n // istanbul ignore next\n if (NO_KEYS_IN_STRING_OBJECTS && isString(obj)) {\n forceStringCoercion(obj);\n }\n return obj;\n }\n\n // Force strings to have their indexes set in\n // environments that don't do this automatically.\n // istanbul ignore next\n function forceStringCoercion(obj) {\n var i = 0, chr;\n while (chr = obj.charAt(i)) {\n obj[i++] = chr;\n }\n }\n\n // Equality helpers\n\n // Perf\n function isEqual(a, b, stack) {\n var aClass, bClass;\n if (a === b) {\n // Return quickly up front when matched by reference,\n // but be careful about 0 !== -0.\n return a !== 0 || 1 / a === 1 / b;\n }\n aClass = classToString(a);\n bClass = classToString(b);\n if (aClass !== bClass) {\n return false;\n }\n\n if (isSerializable(a, aClass) && isSerializable(b, bClass)) {\n return objectIsEqual(a, b, aClass, stack);\n } else if (isSet(a, aClass) && isSet(b, bClass)) {\n return a.size === b.size && isEqual(setToArray(a), setToArray(b), stack);\n } else if (isMap(a, aClass) && isMap(b, bClass)) {\n return a.size === b.size && isEqual(mapToArray(a), mapToArray(b), stack);\n } else if (isError(a, aClass) && isError(b, bClass)) {\n return a.toString() === b.toString();\n }\n\n return false;\n }\n\n // Perf\n function objectIsEqual(a, b, aClass, stack) {\n var aType = typeof a, bType = typeof b, propsEqual, count;\n if (aType !== bType) {\n return false;\n }\n if (isObjectType(a.valueOf())) {\n if (a.length !== b.length) {\n // perf: Quickly returning up front for arrays.\n return false;\n }\n count = 0;\n propsEqual = true;\n iterateWithCyclicCheck(a, false, stack, function(key, val, cyc, stack) {\n if (!cyc && (!(key in b) || !isEqual(val, b[key], stack))) {\n propsEqual = false;\n }\n count++;\n return propsEqual;\n });\n if (!propsEqual || count !== getKeys(b).length) {\n return false;\n }\n }\n // Stringifying the value handles NaN, wrapped primitives, dates, and errors in one go.\n return a.valueOf().toString() === b.valueOf().toString();\n }\n\n // Serializes an object in a way that will provide a token unique\n // to the type, class, and value of an object. Host objects, class\n // instances etc, are not serializable, and are held in an array\n // of references that will return the index as a unique identifier\n // for the object. This array is passed from outside so that the\n // calling function can decide when to dispose of this array.\n function serializeInternal(obj, refs, stack) {\n var type = typeof obj, sign = '', className, value, ref;\n\n // Return up front on\n if (1 / obj === -Infinity) {\n sign = '-';\n }\n\n // Return quickly for primitives to save cycles\n if (isPrimitive(obj, type) && !isRealNaN(obj)) {\n return type + sign + obj;\n }\n\n className = classToString(obj);\n\n if (!isSerializable(obj, className)) {\n ref = indexOf(refs, obj);\n if (ref === -1) {\n ref = refs.length;\n refs.push(obj);\n }\n return ref;\n } else if (isObjectType(obj)) {\n value = serializeDeep(obj, refs, stack) + obj.toString();\n } else if (obj.valueOf) {\n value = obj.valueOf();\n }\n return type + className + sign + value;\n }\n\n function serializeDeep(obj, refs, stack) {\n var result = '';\n iterateWithCyclicCheck(obj, true, stack, function(key, val, cyc, stack) {\n result += cyc ? 'CYC' : key + serializeInternal(val, refs, stack);\n });\n return result;\n }\n\n function iterateWithCyclicCheck(obj, sortedKeys, stack, fn) {\n\n function next(val, key) {\n var cyc = false;\n\n // Allowing a step into the structure before triggering this check to save\n // cycles on standard JSON structures and also to try as hard as possible to\n // catch basic properties that may have been modified.\n if (stack.length > 1) {\n var i = stack.length;\n while (i--) {\n if (stack[i] === val) {\n cyc = true;\n }\n }\n }\n\n stack.push(val);\n fn(key, val, cyc, stack);\n stack.pop();\n }\n\n function iterateWithSortedKeys() {\n // Sorted keys is required for serialization, where object order\n // does not matter but stringified order does.\n var arr = getKeys(obj).sort(), key;\n for (var i = 0; i < arr.length; i++) {\n key = arr[i];\n next(obj[key], arr[i]);\n }\n }\n\n // This method for checking for cyclic structures was egregiously stolen from\n // the ingenious method by @kitcambridge from the Underscore script:\n // https://github.com/documentcloud/underscore/issues/240\n if (!stack) {\n stack = [];\n }\n\n if (sortedKeys) {\n iterateWithSortedKeys();\n } else {\n forEachProperty(obj, next);\n }\n }\n\n\n // Array helpers\n\n function isArrayIndex(n) {\n return n >>> 0 == n && n != 0xFFFFFFFF;\n }\n\n function 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\n // It's unclear whether or not sparse arrays qualify as \"simple enumerables\".\n // If they are not, however, the wrapping function will be deoptimized, so\n // isolate here (also to share between es5 and array modules).\n function getSparseArrayIndexes(arr, fromIndex, loop, fromRight) {\n var indexes = [], i;\n for (i in arr) {\n // istanbul ignore next\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 // This block cannot be reached unless ES5 methods are being shimmed.\n // istanbul ignore if\n if (aLoop !== bLoop) {\n return aLoop ? -1 : 1;\n }\n return a - b;\n });\n return indexes;\n }\n\n function getEntriesForIndexes(obj, find, loop, isString) {\n var result, length = obj.length;\n if (!isArray(find)) {\n return entryAtIndex(obj, find, length, loop, isString);\n }\n result = new Array(find.length);\n forEach(find, function(index, i) {\n result[i] = entryAtIndex(obj, index, length, loop, isString);\n });\n return result;\n }\n\n function getNormalizedIndex(index, length, loop) {\n if (index && loop) {\n index = index % length;\n }\n if (index < 0) index = length + index;\n return index;\n }\n\n function entryAtIndex(obj, index, length, loop, isString) {\n index = getNormalizedIndex(index, length, loop);\n return isString ? obj.charAt(index) : obj[index];\n }\n\n function mapWithShortcuts(el, f, context, mapArgs) {\n if (!f) {\n return el;\n } else if (f.apply) {\n return f.apply(context, mapArgs);\n } else if (isArray(f)) {\n return map(f, function(m) {\n return mapWithShortcuts(el, m, context, mapArgs);\n });\n } else if (isFunction(el[f])) {\n return el[f].call(el);\n } else {\n return deepGetProperty(el, f, true);\n }\n }\n\n function spaceSplit(str) {\n return str.split(' ');\n }\n\n function commaSplit(str) {\n return str.split(HALF_WIDTH_COMMA);\n }\n\n function periodSplit(str) {\n return str.split(HALF_WIDTH_PERIOD);\n }\n\n function 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\n function 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\n function 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\n function indexOf(arr, el) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (i in arr && arr[i] === el) return i;\n }\n return -1;\n }\n\n // Number helpers\n\n // istanbul ignore next\n var trunc = Math.trunc || function(n) {\n if (n === 0 || !isFinite(n)) return n;\n return n < 0 ? ceil(n) : floor(n);\n };\n\n function isRealNaN(obj) {\n // This is only true of NaN\n return obj != null && obj !== obj;\n }\n\n function 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\n function 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\n function 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\n // Fullwidth number helpers\n var fullWidthNumberReg, fullWidthNumberMap, fullWidthNumbers;\n\n function 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\n // Takes into account full-width characters, commas, and decimals.\n function stringToNumber(str, base) {\n var sanitized, isDecimal;\n sanitized = str.replace(fullWidthNumberReg, function(chr) {\n var replacement = getOwn(fullWidthNumberMap, chr);\n if (replacement === HALF_WIDTH_PERIOD) {\n isDecimal = true;\n }\n return replacement;\n });\n return isDecimal ? parseFloat(sanitized) : parseInt(sanitized, base || 10);\n }\n\n // Math aliases\n var 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\n\n // String helpers\n\n var chr = String.fromCharCode;\n\n function trim(str) {\n return str.trim();\n }\n\n function 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\n function simpleCapitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n function 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\n // Inflection helper\n\n var Inflections = {};\n\n function getAcronym(str) {\n // istanbul ignore next\n return Inflections.acronyms && Inflections.acronyms.find(str);\n }\n\n function getHumanWord(str) {\n // istanbul ignore next\n return Inflections.human && Inflections.human.find(str);\n }\n\n function runHumanRules(str) {\n // istanbul ignore next\n return Inflections.human && Inflections.human.runRules(str) || str;\n }\n\n // RegExp helpers\n\n function allCharsReg(src) {\n return RegExp('[' + src + ']', 'g');\n }\n\n function getRegExpFlags(reg, add) {\n var flags = '';\n add = add || '';\n function checkFlag(prop, flag) {\n if (prop || add.indexOf(flag) > -1) {\n flags += flag;\n }\n }\n checkFlag(reg.global, 'g');\n checkFlag(reg.ignoreCase, 'i');\n checkFlag(reg.multiline, 'm');\n checkFlag(reg.sticky, 'y');\n return flags;\n }\n\n function escapeRegExp(str) {\n if (!isString(str)) str = String(str);\n return str.replace(/([\\\\/'*+?|()[\\]{}.^$-])/g,'\\\\$1');\n }\n\n // Date helpers\n\n var _utc = privatePropertyAccessor('utc');\n\n function callDateGet(d, method) {\n return d['get' + (_utc(d) ? 'UTC' : '') + method]();\n }\n\n function 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\n // Memoization helpers\n\n var INTERNAL_MEMOIZE_LIMIT = 1000;\n\n // Note that attemps to consolidate this with Function#memoize\n // ended up clunky as that is also serializing arguments. Separating\n // these implementations turned out to be simpler.\n function memoizeFunction(fn) {\n var memo = {}, counter = 0;\n\n return function(key) {\n if (hasOwn(memo, key)) {\n return memo[key];\n }\n // istanbul ignore if\n if (counter === INTERNAL_MEMOIZE_LIMIT) {\n memo = {};\n counter = 0;\n }\n counter++;\n return memo[key] = fn(key);\n };\n }\n\n // ES6 helpers\n\n function setToArray(set) {\n var arr = new Array(set.size), i = 0;\n set.forEach(function(val) {\n arr[i++] = val;\n });\n return arr;\n }\n\n function mapToArray(map) {\n var arr = new Array(map.size), i = 0;\n map.forEach(function(val, key) {\n arr[i++] = [key, val];\n });\n return arr;\n }\n\n buildClassChecks();\n buildFullWidthNumber();\n\n /***\n * @module ES5\n * @description Functions and polyfill methods that fix ES5 functionality. This\n * module is excluded from default builds, and can be included if\n * you need legacy browser support (IE8 and below).\n *\n ***/\n\n // Non-enumerable properties on Object.prototype. In early JScript implementations\n // (< IE9) these will shadow object properties and break for..in loops.\n var DONT_ENUM_PROPS = [\n 'valueOf',\n 'toString',\n 'constructor',\n 'isPrototypeOf',\n 'hasOwnProperty',\n 'toLocaleString',\n 'propertyIsEnumerable'\n ];\n\n /***\n * @fix\n * @short Fixes DontEnum bug for iteration methods in < IE9.\n ***/\n function buildDontEnumFix() {\n if (!({toString:1}).propertyIsEnumerable('toString')) {\n var forEachEnumerableProperty = forEachProperty;\n forEachProperty = function(obj, fn) {\n forEachEnumerableProperty(obj, fn);\n for (var i = 0, key; key = DONT_ENUM_PROPS[i]; i++) {\n if (hasOwn(obj, key)) {\n if(fn.call(obj, obj[key], key, obj) === false) break;\n }\n }\n };\n }\n }\n\n /***\n * @fix\n * @short Adds native methods to chainables in < IE9.\n ***/\n function buildChainableNativeMethodsFix() {\n if (!Object.getOwnPropertyNames) {\n defineNativeMethodsOnChainable();\n }\n }\n\n // Polyfilled methods will automatically be added to the chainable prototype.\n // However, Object.getOwnPropertyNames cannot be shimmed for non-enumerable\n // properties, so if it does not exist, then the only way to access native\n // methods previous to ES5 is to provide them as a list of tokens here.\n function defineNativeMethodsOnChainable() {\n\n var nativeTokens = {\n 'Function': 'apply,call',\n 'RegExp': 'compile,exec,test',\n 'Number': 'toExponential,toFixed,toLocaleString,toPrecision',\n 'Object': 'hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString',\n 'Array': 'concat,join,pop,push,reverse,shift,slice,sort,splice,toLocaleString,unshift',\n 'Date': 'getTime,getTimezoneOffset,setTime,toDateString,toGMTString,toLocaleDateString,toLocaleString,toLocaleTimeString,toTimeString,toUTCString',\n 'String': 'anchor,big,blink,bold,charAt,charCodeAt,concat,fixed,fontcolor,fontsize,indexOf,italics,lastIndexOf,link,localeCompare,match,replace,search,slice,small,split,strike,sub,substr,substring,sup,toLocaleLowerCase,toLocaleUpperCase,toLowerCase,toUpperCase'\n };\n\n var dateTokens = 'FullYear,Month,Date,Hours,Minutes,Seconds,Milliseconds'.split(',');\n\n function addDateTokens(prefix, arr) {\n for (var i = 0; i < dateTokens.length; i++) {\n arr.push(prefix + dateTokens[i]);\n }\n }\n\n forEachProperty(nativeTokens, function(str, name) {\n var tokens = str.split(',');\n if (name === 'Date') {\n addDateTokens('get', tokens);\n addDateTokens('set', tokens);\n addDateTokens('getUTC', tokens);\n addDateTokens('setUTC', tokens);\n }\n tokens.push('toString');\n mapNativeToChainable(name, tokens);\n });\n\n }\n\n\n buildDontEnumFix();\n buildChainableNativeMethodsFix();\n\n\n /*** @namespace Object ***/\n\n function assertNonNull(obj) {\n if (obj == null) {\n throw new TypeError('Object required');\n }\n }\n\n defineStaticPolyfill(sugarObject, {\n\n 'keys': function(obj) {\n var keys = [];\n assertNonNull(obj);\n forEachProperty(coercePrimitiveToObject(obj), function(val, key) {\n keys.push(key);\n });\n return keys;\n }\n\n });\n\n\n /*** @namespace Array ***/\n\n function arrayIndexOf(arr, search, fromIndex, fromRight) {\n var length = arr.length, defaultFromIndex, index, increment;\n\n increment = fromRight ? -1 : 1;\n defaultFromIndex = fromRight ? length - 1 : 0;\n fromIndex = trunc(fromIndex);\n if (!fromIndex && fromIndex !== 0) {\n fromIndex = defaultFromIndex;\n }\n if (fromIndex < 0) {\n fromIndex = length + fromIndex;\n }\n if ((!fromRight && fromIndex < 0) || (fromRight && fromIndex >= length)) {\n fromIndex = defaultFromIndex;\n }\n\n index = fromIndex;\n\n while((fromRight && index >= 0) || (!fromRight && index < length)) {\n if (!(index in arr)) {\n return sparseIndexOf(arr, search, fromIndex, fromRight);\n }\n if (isArrayIndex(index) && arr[index] === search) {\n return index;\n }\n index += increment;\n }\n return -1;\n }\n\n function sparseIndexOf(arr, search, fromIndex, fromRight) {\n var indexes = getSparseArrayIndexes(arr, fromIndex, false, fromRight), index;\n indexes.sort(function(a, b) {\n return fromRight ? b - a : a - b;\n });\n while ((index = indexes.shift()) !== undefined) {\n if (arr[index] === search) {\n return +index;\n }\n }\n return -1;\n }\n\n function arrayReduce(arr, fn, initialValue, fromRight) {\n var length = arr.length, count = 0, defined = isDefined(initialValue), result, index;\n assertCallable(fn);\n if (length == 0 && !defined) {\n throw new TypeError('Reduce called on empty array with no initial value');\n } else if (defined) {\n result = initialValue;\n } else {\n result = arr[fromRight ? length - 1 : count];\n count++;\n }\n while(count < length) {\n index = fromRight ? length - count - 1 : count;\n if (index in arr) {\n result = fn(result, arr[index], index, arr);\n }\n count++;\n }\n return result;\n }\n\n defineStaticPolyfill(sugarArray, {\n\n /***\n *\n * @method isArray(obj)\n * @returns Boolean\n * @polyfill ES5\n * @static\n * @short Returns true if `obj` is an Array.\n *\n * @example\n *\n * Array.isArray(3) -> false\n * Array.isArray(true) -> false\n * Array.isArray('wasabi') -> false\n * Array.isArray([1,2,3]) -> true\n *\n ***/\n 'isArray': function(obj) {\n return isArray(obj);\n }\n\n });\n\n defineInstancePolyfill(sugarArray, {\n\n 'every': function(fn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n var length = this.length, index = 0;\n assertCallable(fn);\n while(index < length) {\n if (index in this && !fn.call(context, this[index], index, this)) {\n return false;\n }\n index++;\n }\n return true;\n },\n\n 'some': function(fn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n var length = this.length, index = 0;\n assertCallable(fn);\n while(index < length) {\n if (index in this && fn.call(context, this[index], index, this)) {\n return true;\n }\n index++;\n }\n return false;\n },\n\n 'map': function(fn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n var length = this.length, index = 0, result = new Array(length);\n assertCallable(fn);\n while(index < length) {\n if (index in this) {\n result[index] = fn.call(context, this[index], index, this);\n }\n index++;\n }\n return result;\n },\n\n 'filter': function(fn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n var length = this.length, index = 0, result = [];\n assertCallable(fn);\n while(index < length) {\n if (index in this && fn.call(context, this[index], index, this)) {\n result.push(this[index]);\n }\n index++;\n }\n return result;\n },\n\n /***\n * @method indexOf(search, [fromIndex] = 0)\n * @returns Number\n * @polyfill ES5\n * @short Searches the array and returns the first index where `search` occurs,\n * or `-1` if the element is not found.\n * @extra [fromIndex] is the index from which to begin the search. This\n * method performs a simple strict equality comparison on `search`.\n * Sugar does not enhance this method to support `enhanced matching`.\n * For such functionality, use the `findIndex` method instead.\n *\n * @example\n *\n * [1,2,3].indexOf(3) -> 1\n * [1,2,3].indexOf(7) -> -1\n *\n ***/\n 'indexOf': function(search) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, fromIndex = arguments[1];\n if (isString(this)) return this.indexOf(search, fromIndex);\n return arrayIndexOf(this, search, fromIndex);\n },\n\n /***\n * @method lastIndexOf(search, [fromIndex] = array.length - 1)\n * @returns Number\n * @polyfill ES5\n * @short Searches the array from the end and returns the first index where\n * `search` occurs, or `-1` if the element is not found.\n * @extra [fromIndex] is the index from which to begin the search. This method\n * performs a simple strict equality comparison on `search`.\n * Sugar does not enhance this method to support `enhanced matching`.\n *\n * @example\n *\n * [1,2,1].lastIndexOf(1) -> 2\n * [1,2,1].lastIndexOf(7) -> -1\n *\n ***/\n 'lastIndexOf': function(search) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, fromIndex = arguments[1];\n if (isString(this)) return this.lastIndexOf(search, fromIndex);\n return arrayIndexOf(this, search, fromIndex, true);\n },\n\n /***\n * @method forEach([eachFn], [context])\n * @polyfill ES5\n * @short Iterates over the array, calling [eachFn] on each loop.\n * @extra [context] becomes the `this` object.\n *\n * @callback eachFn\n *\n * el The element of the current iteration.\n * i The index of the current iteration.\n * arr A reference to the array.\n *\n * @example\n *\n * ['a','b','c'].forEach(function(a) {\n * // Called 3 times: 'a','b','c'\n * });\n *\n ***/\n 'forEach': function(eachFn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n var length = this.length, index = 0;\n assertCallable(eachFn);\n while(index < length) {\n if (index in this) {\n eachFn.call(context, this[index], index, this);\n }\n index++;\n }\n },\n\n /***\n * @method reduce(reduceFn, [init])\n * @returns Mixed\n * @polyfill ES5\n * @short Reduces the array to a single result.\n * @extra This operation is sometimes called \"accumulation\", as it takes the\n * result of the last iteration of `reduceFn` and passes it as the first\n * argument to the next iteration, \"accumulating\" that value as it goes.\n * The return value of this method will be the return value of the final\n * iteration of `reduceFn`. If [init] is passed, it will be the initial\n * \"accumulator\" (the first argument). If [init] is not passed, then it\n * will take the first element in the array, and `reduceFn` will not be\n * called for that element.\n *\n * @callback reduceFn\n *\n * acc The \"accumulator\". Either [init], the result of the last iteration\n * of `reduceFn`, or the first element of the array.\n * el The current element for this iteration.\n * idx The current index for this iteration.\n * arr A reference to the array.\n *\n * @example\n *\n * [1,2,3].reduce(function(a, b) {\n * return a - b; // 1 - 2 - 3\n * });\n *\n * [1,2,3].reduce(function(a, b) {\n * return a - b; // 100 - 1 - 2 - 3\n * }, 100);\n *\n ***/\n 'reduce': function(reduceFn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n return arrayReduce(this, reduceFn, context);\n },\n\n /***\n * @method reduceRight([reduceFn], [init])\n * @returns Mixed\n * @polyfill ES5\n * @short Similar to `Array#reduce`, but operates on the elements in reverse.\n *\n * @callback reduceFn\n *\n * acc The \"accumulator\", either [init], the result of the last iteration\n * of `reduceFn`, or the last element of the array.\n * el The current element for this iteration.\n * idx The current index for this iteration.\n * arr A reference to the array.\n *\n * @example\n *\n * [1,2,3].reduceRight(function(a, b) {\n * return a - b; // 3 - 2 - 1\n * });\n *\n * [1,2,3].reduceRight(function(a, b) {\n * return a - b; // 100 - 3 - 2 - 1\n * }, 100);\n *\n *\n ***/\n 'reduceRight': function(reduceFn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n return arrayReduce(this, reduceFn, context, true);\n }\n\n });\n\n\n /*** @namespace String ***/\n\n var TRIM_REG = RegExp('^[' + TRIM_CHARS + ']+|['+ TRIM_CHARS +']+$', 'g');\n\n defineInstancePolyfill(sugarString, {\n /***\n * @method trim()\n * @returns String\n * @polyfill ES5\n * @short Removes leading and trailing whitespace from the string.\n * @extra Whitespace is defined as line breaks, tabs, and any character in the\n * \"Space, Separator\" Unicode category, conforming to the the ES5 spec.\n *\n * @example\n *\n * ' wasabi '.trim() -> 'wasabi'\n * ' wasabi '.trimLeft() -> 'wasabi '\n * ' wasabi '.trimRight() -> ' wasabi'\n *\n ***/\n 'trim': function() {\n return this.toString().replace(TRIM_REG, '');\n }\n });\n\n\n /*** @namespace Function ***/\n\n defineInstancePolyfill(sugarFunction, {\n\n /***\n * @method bind(context, [arg1], ...)\n * @returns Function\n * @polyfill ES5\n * @short Binds `context` as the `this` object for the function when it is\n * called. Also allows currying an unlimited number of parameters.\n * @extra \"currying\" means setting parameters ([arg1], [arg2], etc.) ahead of\n * time so that they are passed when the function is called later. If\n * you pass additional parameters when the function is actually called,\n * they will be added to the end of the curried parameters.\n *\n * @example\n *\n * logThis.bind('woof')() -> logs 'woof' as its this object\n * addArgs.bind(1, 2, 3)() -> returns 5 with 1 as the this object\n * addArgs.bind(1)(2, 3, 4) -> returns 9\n *\n ***/\n 'bind': function(context) {\n // Optimized: no leaking arguments\n var boundArgs = []; for(var $i = 1, $len = arguments.length; $i < $len; $i++) boundArgs.push(arguments[$i]);\n var fn = this, bound;\n assertCallable(this);\n bound = function() {\n // Optimized: no leaking arguments\n var args = []; for(var $i = 0, $len = arguments.length; $i < $len; $i++) args.push(arguments[$i]);\n return fn.apply(fn.prototype && this instanceof fn ? this : context, boundArgs.concat(args));\n };\n bound.prototype = this.prototype;\n return bound;\n }\n\n });\n\n\n /*** @namespace Date ***/\n\n defineStaticPolyfill(sugarDate, {\n\n /***\n * @method now()\n * @returns String\n * @polyfill ES5\n * @static\n * @short Returns the current time as a Unix timestamp.\n * @extra The number of milliseconds since January 1st, 1970 00:00:00 (UTC).\n *\n * @example\n *\n * Date.now() -> ex. 1311938296231\n *\n ***/\n 'now': function() {\n return new Date().getTime();\n }\n\n });\n\n function hasISOSupport() {\n var d = new Date(Date.UTC(2000, 0));\n return !!d.toISOString && d.toISOString() === '2000-01-01T00:00:00.000Z';\n }\n\n defineInstancePolyfill(sugarDate, {\n\n /***\n * @method toISOString()\n * @returns String\n * @polyfill ES5\n * @short Formats the string to ISO8601 format.\n * @extra This will always format as UTC time.\n *\n * @example\n *\n * Date.create().toISOString() -> ex. 2011-07-05 12:24:55.528Z\n *\n ***/\n 'toISOString': function() {\n return padNumber(this.getUTCFullYear(), 4) + '-' +\n padNumber(this.getUTCMonth() + 1, 2) + '-' +\n padNumber(this.getUTCDate(), 2) + 'T' +\n padNumber(this.getUTCHours(), 2) + ':' +\n padNumber(this.getUTCMinutes(), 2) + ':' +\n padNumber(this.getUTCSeconds(), 2) + '.' +\n padNumber(this.getUTCMilliseconds(), 3) + 'Z';\n },\n\n /***\n * @method toJSON([key])\n * @returns String\n * @polyfill ES5\n * @short Returns a JSON representation of the date.\n * @extra This is effectively an alias for `toISOString`. Will always return\n * the date in UTC time. [key] is ignored.\n *\n * @example\n *\n * Date.create().toJSON() -> ex. 2011-07-05 12:24:55.528Z\n *\n ***/\n 'toJSON': function(key) {\n // Force compiler to respect argument length.\n var argLen = arguments.length;\n return this.toISOString(key);\n }\n\n }, !hasISOSupport());\n\n}).call(this);","import {isBoolean, isString, isFn, isArray} from './types';\r\n\r\n/** Configuration settings helpers */\r\n\r\n/**\r\n * If passed value is not of boolean type return the default value\r\n * otherwise return the value itself\r\n * @param {Boolean|Any} value\r\n * @param {Boolean} default value\r\n * @return {Boolean|Any}\r\n */\r\nexport const defaultsBool =\r\n (val, defaultVal) => isBoolean(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of string type return the default value\r\n * otherwise return the value itself\r\n * @param {String|Any} value\r\n * @param {String} default value\r\n * @return {String|Any}\r\n */\r\nexport const defaultsStr =\r\n (val, defaultVal) => isString(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of number type return the default value\r\n * otherwise return the value itself\r\n * @param {Number|Any} value\r\n * @param {Number} default value\r\n * @return {Number|Any}\r\n */\r\nexport const defaultsNb =\r\n (val, defaultVal) => isNaN(val) ? defaultVal : val;\r\n\r\n/**\r\n * If passed value is not of array type return the default value\r\n * otherwise return the value itself\r\n * @param {Array|Any} value\r\n * @param {Array} default value\r\n * @return {Array|Any}\r\n */\r\nexport const defaultsArr =\r\n (val, defaultVal) => isArray(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of function type return the default value\r\n * otherwise return the value itself\r\n * @param {Function|Any} value\r\n * @param {Function} default value\r\n * @return {Function|Any}\r\n */\r\nexport const defaultsFn =\r\n (val, defaultVal) => isFn(val) ? val : defaultVal;\r\n","import {root} from './root';\r\nimport {isArray, isString, isUndef} from './types';\r\nimport {trim} from './string';\r\n\r\n/**\r\n * DOM utilities\r\n */\r\n\r\nconst doc = root.document;\r\n\r\n/**\r\n * Returns text + text of children of given node\r\n * @param {NodeElement} node\r\n * @return {String}\r\n */\r\nexport const getText = (node) => {\r\n if (isUndef(node.textContent)) {\r\n return trim(node.innerText);\r\n }\r\n return trim(node.textContent);\r\n};\r\n\r\n/**\r\n * Returns the first text node contained in the supplied node\r\n * @param {NodeElement} node node\r\n * @return {String}\r\n */\r\nexport const getFirstTextNode = (node) => {\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n let n = node.childNodes[i];\r\n if (n.nodeType === 3) {\r\n return n.data;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Creates an html element with given collection of attributes\r\n * @param {String} tag a string of the html tag to create\r\n * @param {Array} an undetermined number of arrays containing the with 2\r\n * items, the attribute name and its value ['id','myId']\r\n * @return {Object} created element\r\n */\r\nexport const createElm = (...args) => {\r\n let tag = args[0];\r\n if (!isString(tag)) {\r\n return null;\r\n }\r\n\r\n let el = doc.createElement(tag);\r\n for (let i = 0; i < args.length; i++) {\r\n let arg = args[i];\r\n\r\n if (isArray(arg) && arg.length === 2) {\r\n el.setAttribute(arg[0], arg[1]);\r\n }\r\n }\r\n return el;\r\n};\r\n\r\n/**\r\n * Removes passed node from DOM\r\n * @param {DOMElement} node\r\n * @return {DOMElement} old node reference\r\n */\r\nexport const removeElm = (node) => node.parentNode.removeChild(node);\r\n\r\n/**\r\n * Returns a text node with given text\r\n * @param {String} txt\r\n * @return {Object}\r\n */\r\nexport const createText = (txt) => doc.createTextNode(txt);\r\n\r\n/**\r\n * Determine whether the passed elements is assigned the given class\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n * @returns {Boolean}\r\n */\r\nexport const hasClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return false;\r\n }\r\n\r\n if (supportsClassList()) {\r\n return ele.classList.contains(cls);\r\n }\r\n return ele.className.match(new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)'));\r\n};\r\n\r\n/**\r\n * Adds the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const addClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.add(cls);\r\n return;\r\n }\r\n\r\n if (ele.className === '') {\r\n ele.className = cls;\r\n }\r\n else if (!hasClass(ele, cls)) {\r\n ele.className += ' ' + cls;\r\n }\r\n};\r\n\r\n/**\r\n * Removes the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const removeClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.remove(cls);\r\n return;\r\n }\r\n let reg = new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)', 'g');\r\n ele.className = ele.className.replace(reg, '');\r\n};\r\n\r\n/**\r\n * Creates and returns an option element\r\n * @param {String} text option text\r\n * @param {String} value option value\r\n * @param {Boolean} isSel whether option is selected\r\n * @return {Object} option element\r\n */\r\nexport const createOpt = (text, value, isSel) => {\r\n let isSelected = isSel ? true : false;\r\n let opt = isSelected ?\r\n createElm('option', ['value', value], ['selected', 'true']) :\r\n createElm('option', ['value', value]);\r\n opt.appendChild(createText(text));\r\n return opt;\r\n};\r\n\r\n/**\r\n * Creates and returns a checklist item\r\n * @param {String} id index of check item\r\n * @param {String} chkValue check item value\r\n * @param {String} labelText check item label text\r\n * @param {Array} extraAttr array containing attribute name and its value\r\n * @return {Object} li DOM element\r\n */\r\nexport const createCheckItem = (id, chkValue, labelText, extraAttr = []) => {\r\n let li = createElm('li');\r\n let label = createElm('label', ['for', id]);\r\n let check = createElm('input',\r\n ['id', id],\r\n ['name', id],\r\n ['type', 'checkbox'],\r\n ['value', chkValue],\r\n extraAttr\r\n );\r\n label.appendChild(check);\r\n label.appendChild(createText(labelText));\r\n li.appendChild(label);\r\n li.label = label;\r\n li.check = check;\r\n return li;\r\n};\r\n\r\n/**\r\n * Returns the element matching the supplied Id\r\n * @param {String} id Element identifier\r\n * @return {DOMElement}\r\n */\r\nexport const elm = (id) => doc.getElementById(id);\r\n\r\n/**\r\n * Returns list of element matching the supplied tag name\r\n * @param {String} tagname Tag name\r\n * @return {NodeList}\r\n */\r\nexport const tag = (o, tagname) => o.getElementsByTagName(tagname);\r\n\r\n// HTML5 classList API\r\nfunction supportsClassList() {\r\n return doc.documentElement.classList;\r\n}\r\n","\r\n/**\r\n * Types utilities\r\n */\r\n\r\nconst UNDEFINED = void 0;\r\n\r\n/**\r\n * Return an empty function\r\n * @return {Function}\r\n */\r\nexport const EMPTY_FN = function() {};\r\n\r\n/**\r\n * Check passed argument is an object\r\n * @param {Object} obj\r\n * @return {Boolean}\r\n */\r\nexport const isObj =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Object]';\r\n\r\n/**\r\n * Check passed argument is a function\r\n * @param {Function} obj\r\n * @return {Boolean}\r\n */\r\nexport const isFn =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Function]';\r\n\r\n/**\r\n * Check passed argument is an array\r\n * @param {Array} obj\r\n * @return {Boolean}\r\n */\r\nexport const isArray =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Array]';\r\n\r\n/**\r\n * Check passed argument is a string\r\n * @param {String} obj obj\r\n * @returns {Boolean}\r\n */\r\nexport const isString =\r\n (obj) => Object.prototype.toString.call(obj) === '[object String]';\r\n\r\n/**\r\n * Check passed argument is a number\r\n * @param {Number} obj\r\n * @returns {Boolean}\r\n */\r\nexport const isNumber =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Number]';\r\n\r\n/**\r\n * Check passed argument is a boolean\r\n * @param {Boolean} obj\r\n * @returns {Boolean}\r\n */\r\nexport const isBoolean =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Boolean]';\r\n\r\n/**\r\n * Check passed argument is undefined\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isUndef = (obj) => obj === UNDEFINED;\r\n\r\n/**\r\n * Check passed argument is null\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isNull = (obj) => obj === null;\r\n\r\n/**\r\n * Check passed argument is empty (undefined, null or empty string)\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (obj) => isUndef(obj) || isNull(obj) || obj.length === 0;\r\n","/**\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","import {root} from './root';\r\n\r\n/**\r\n * DOM event utilities\r\n */\r\n\r\n/**\r\n * Add event handler for specified event on passed element\r\n *\r\n * @param {DOMElement} obj Element\r\n * @param {String} type Event type\r\n * @param {Function} Handler\r\n * @param {Boolean} capture Specifiy whether the event should be executed in\r\n * the capturing or in the bubbling phase\r\n */\r\nexport const addEvt = (obj, type, func, capture) => {\r\n if (obj.addEventListener) {\r\n obj.addEventListener(type, func, capture);\r\n }\r\n else if (obj.attachEvent) {\r\n obj.attachEvent('on' + type, func);\r\n } else {\r\n obj['on' + type] = func;\r\n }\r\n};\r\n\r\n/**\r\n * Remove event handler for specified event on passed element\r\n *\r\n * @param {DOMElement} obj Element\r\n * @param {String} type Event type\r\n * @param {Function} Handler\r\n * @param {Boolean} capture Specifiy whether the event should be executed in\r\n * the capturing or in the bubbling phase\r\n */\r\nexport const removeEvt = (obj, type, func, capture) => {\r\n if (obj.removeEventListener) {\r\n obj.removeEventListener(type, func, capture);\r\n } else if (obj.detachEvent) {\r\n obj.detachEvent('on' + type, func);\r\n } else {\r\n obj['on' + type] = null;\r\n }\r\n};\r\n\r\n/**\r\n * Prevents further propagation of the current event in the bubbling phase\r\n *\r\n * @param {Event} evt Event on the DOM\r\n */\r\nexport const stopEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n if (evt.stopPropagation) {\r\n evt.stopPropagation();\r\n } else {\r\n evt.cancelBubble = true;\r\n }\r\n};\r\n\r\n/**\r\n * Cancels the event if it is cancelable, without stopping further\r\n * propagation of the event.\r\n *\r\n * @param {Event} evt Event on the DOM\r\n */\r\nexport const cancelEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n if (evt.preventDefault) {\r\n evt.preventDefault();\r\n } else {\r\n evt.returnValue = false;\r\n }\r\n};\r\n\r\n/**\r\n * Reference to the object that dispatched the event\r\n *\r\n * @param {Event} evt Event on the DOM\r\n * @returns {DOMElement}\r\n */\r\nexport const targetEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n return evt.target || evt.srcElement;\r\n};\r\n\r\n/**\r\n * Returns the Unicode value of pressed key\r\n *\r\n * @param {Event} evt Event on the DOM\r\n * @returns {Number}\r\n */\r\nexport const keyCode = (evt) => {\r\n return evt.charCode ? evt.charCode :\r\n (evt.keyCode ? evt.keyCode : (evt.which ? evt.which : 0));\r\n};\r\n\r\n/**\r\n * Check code of pressed key is one of the expected key codes\r\n *\r\n * @param {Event} evt key event\r\n * @param {Array} keyCodes list of keycodes to check\r\n */\r\nexport const isKeyPressed = (evt, keyCodes = []) => {\r\n return keyCodes.indexOf(keyCode(evt)) !== -1;\r\n};\r\n\r\n/**\r\n * Bind passed function to passed scope\r\n * @param {Function} fn function\r\n * @param {Object} scope object instance\r\n */\r\nexport function bound(fn, scope) {\r\n let boundFnName = `${fn.name}_bound`;\r\n if (!scope[boundFnName]) {\r\n scope[boundFnName] = fn.bind(scope);\r\n }\r\n return scope[boundFnName];\r\n}\r\n","'use strict';\n\nvar buildNumberUnitMethods = require('../internal/buildNumberUnitMethods');\n\nbuildNumberUnitMethods();","'use strict';\n\nvar buildDateUnitMethods = require('../internal/buildDateUnitMethods');\n\nbuildDateUnitMethods();","import {remove as removeDiacritics} from 'diacritics';\r\n\r\n/**\r\n * String utilities\r\n */\r\n\r\n/**\r\n * Removes whitespace from both sides of passed string\r\n * @param {String} text\r\n * @return {String}\r\n */\r\nexport const trim = (text) => {\r\n if (text.trim) {\r\n return text.trim();\r\n }\r\n return text.replace(/^\\s*|\\s*$/g, '');\r\n};\r\n\r\n/**\r\n * Checks if passed string is empty\r\n * @param {String} text\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (text) => trim(text) === '';\r\n\r\n/**\r\n * Makes regex safe string by escaping special characters from passed string\r\n * @param {String} text\r\n * @return {String} escaped string\r\n */\r\nexport const rgxEsc = (text) => {\r\n let chars = /[-\\/\\\\^$*+?.()|[\\]{}]/g;\r\n let escMatch = '\\\\$&';\r\n return String(text).replace(chars, escMatch);\r\n};\r\n\r\n/**\r\n * Returns passed string as lowercase if caseSensitive flag set false. By\r\n * default it returns the string with no casing changes.\r\n * @param {String} text\r\n * @return {String} string\r\n */\r\nexport const matchCase = (text, caseSensitive = false) => {\r\n if (!caseSensitive) {\r\n return text.toLowerCase();\r\n }\r\n return text;\r\n};\r\n\r\n/**\r\n * Checks if passed data contains the searched term\r\n * @param {String} term Searched term\r\n * @param {String} data Data string\r\n * @param {Boolean} exactMatch Exact match\r\n * @param {Boolean} caseSensitive Case sensitive\r\n * @param {Boolean} ignoreDiacritics Ignore diacritics\r\n * @return {Boolean}\r\n */\r\nexport const contains = (term, data, exactMatch = false, caseSensitive = false,\r\n ignoreDiacritics = false) => {\r\n // Improved by Cedric Wartel (cwl) automatic exact match for selects and\r\n // special characters are now filtered\r\n let regexp;\r\n let modifier = caseSensitive ? 'g' : 'gi';\r\n if (ignoreDiacritics) {\r\n term = removeDiacritics(term);\r\n data = removeDiacritics(data);\r\n }\r\n if (exactMatch) {\r\n regexp = new RegExp('(^\\\\s*)' + rgxEsc(term) + '(\\\\s*$)',\r\n modifier);\r\n } else {\r\n regexp = new RegExp(rgxEsc(term), modifier);\r\n }\r\n return regexp.test(data);\r\n};\r\n\r\n/**\r\n * Camelize a string, cutting the string by multiple separators like\r\n * hyphens, underscores and spaces.\r\n * @param {String} text text to camelize\r\n * @return {String} camelized text\r\n */\r\nexport const toCamelCase = (text = '') => {\r\n return text.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) => {\r\n if (p2) {\r\n return p2.toUpperCase();\r\n }\r\n return p1.toLowerCase();\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","import {toCamelCase} from './string';\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 {Class} feature Feature class for TableFilter registration\r\n */\r\n constructor(tf, cls) {\r\n cls.meta = cls.meta || {};\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 * Feature name is the camelised class name as per TableFilter's\r\n * convention\r\n * @type {String}\r\n */\r\n this.feature = cls.meta.altName || cls.meta.name\r\n || toCamelCase(cls.name);\r\n\r\n /**\r\n * TableFilter feature setting\r\n * @type {Boolean}\r\n */\r\n this.enabled = tf[this.feature];\r\n\r\n /**\r\n * TableFilter configuration\r\n * @type {Object}\r\n */\r\n this.config = tf.config();\r\n\r\n /**\r\n * TableFilter emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = tf.emitter;\r\n\r\n /**\r\n * Field indicating whether Feature is initialized\r\n * @type {Boolean}\r\n */\r\n this.initialized = false;\r\n\r\n /** Subscribe to destroy event */\r\n this.emitter.on(['destroy'], () => this.destroy());\r\n }\r\n\r\n /**\r\n * Initialize the feature\r\n */\r\n init() {\r\n throw new Error(NOT_IMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Reset the feature after being disabled\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n }\r\n\r\n /**\r\n * Destroy the feature\r\n */\r\n destroy() {\r\n throw new Error(NOT_IMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Enable the feature\r\n */\r\n enable() {\r\n this.enabled = true;\r\n }\r\n\r\n /**\r\n * Disable the feature\r\n */\r\n disable() {\r\n this.enabled = false;\r\n }\r\n\r\n /**\r\n * Indicate whether the feature is enabled or not\r\n * @returns {Boolean}\r\n */\r\n isEnabled() {\r\n return this.enabled === true;\r\n }\r\n}\r\n","'use strict';\n\nmodule.exports = {\n HOURS_INDEX: 3,\n DAY_INDEX: 4,\n WEEK_INDEX: 5,\n MONTH_INDEX: 6,\n YEAR_INDEX: 7\n};","'use strict';\n\nvar NATIVE_TYPES = require('./NATIVE_TYPES'),\n forEach = require('../internal/forEach'),\n isClass = require('../internal/isClass'),\n spaceSplit = require('../internal/spaceSplit'),\n isPlainObject = require('../internal/isPlainObject');\n\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 // istanbul ignore next\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 // istanbul ignore if\n if (globalObject && isClass(new globalObject, 'Object')) {\n return getConstructorClassCheck(globalObject);\n } else {\n return getToStringClassCheck(className);\n }\n }\n\n // Map and Set may be [object Object] in certain IE environments.\n // In this case we need to perform a check using the constructor\n // instead of Object.prototype.toString.\n // istanbul ignore next\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 return isKnownType(className) || isPlainObject(obj, className);\n };\n\n}\n\nbuildClassChecks();\n\nmodule.exports = {\n isSerializable: isSerializable,\n isBoolean: isBoolean,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isRegExp: isRegExp,\n isFunction: isFunction,\n isArray: isArray,\n isSet: isSet,\n isMap: isMap,\n isError: isError\n};","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'addLocale': function(code, set) {\n return localeManager.add(code, set);\n }\n\n});\n\nmodule.exports = Sugar.Date.addLocale;","'use strict';\n\nmodule.exports = {\n abs: Math.abs,\n pow: Math.pow,\n min: Math.min,\n max: Math.max,\n ceil: Math.ceil,\n floor: Math.floor,\n round: Math.round\n};","'use strict';\n\nvar LazyLoadedLocales = require('./LazyLoadedLocales'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n getNewLocale = require('../internal/getNewLocale');\n\nvar English, localeManager;\n\nfunction buildLocales() {\n\n function LocaleManager(loc) {\n this.locales = {};\n this.add(loc);\n }\n\n LocaleManager.prototype = {\n\n get: function(code, fallback) {\n var loc = this.locales[code];\n if (!loc && LazyLoadedLocales[code]) {\n loc = this.add(code, LazyLoadedLocales[code]);\n } else if (!loc && code) {\n loc = this.locales[code.slice(0, 2)];\n }\n return loc || fallback === false ? loc : this.current;\n },\n\n getAll: function() {\n return this.locales;\n },\n\n set: function(code) {\n var loc = this.get(code, false);\n if (!loc) {\n throw new TypeError('Invalid Locale: ' + code);\n }\n return this.current = loc;\n },\n\n add: function(code, def) {\n if (!def) {\n def = code;\n code = def.code;\n } else {\n def.code = code;\n }\n var loc = def.compiledFormats ? def : getNewLocale(def);\n this.locales[code] = loc;\n if (!this.current) {\n this.current = loc;\n }\n return loc;\n },\n\n remove: function(code) {\n if (this.current.code === code) {\n this.current = this.get('en');\n }\n return delete this.locales[code];\n }\n\n };\n\n // Sorry about this guys...\n English = getNewLocale(AmericanEnglishDefinition);\n localeManager = new LocaleManager(English);\n}\n\nbuildLocales();\n\nmodule.exports = {\n English: English,\n localeManager: localeManager\n};","'use strict';\n\nvar buildRelativeAliases = require('../internal/buildRelativeAliases');\n\nbuildRelativeAliases();","'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};","import {Feature} from '../feature';\r\nimport {createElm, removeElm, elm, tag} from '../dom';\r\nimport {defaultsStr} from '../settings';\r\nimport {isUndef} from '../types';\r\n\r\nconst EVENTS = [\r\n 'initializing-feature',\r\n 'initializing-extension'\r\n];\r\n\r\n/** Left position in toolbar */\r\nexport const LEFT = 'left';\r\n/** Right position in toolbar */\r\nexport const RIGHT = 'right';\r\n/** Center position in toolbar */\r\nexport const CENTER = 'center';\r\n\r\n/**\r\n * Toolbar UI component\r\n * @export\r\n * @class Toolbar\r\n * @extends {Feature}\r\n */\r\nexport class Toolbar extends Feature {\r\n\r\n /**\r\n * Create an instance of Toolbar\r\n * @param {TableFilter} tf TableFilter instance\r\n * @memberof Toolbar\r\n */\r\n constructor(tf) {\r\n super(tf, Toolbar);\r\n\r\n // Configuration object\r\n let f = this.config.toolbar || {};\r\n\r\n /**\r\n * Css class for toolbar's container DOM element\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.container_css_class, 'inf');\r\n\r\n /**\r\n * Css class for left-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.lContCssClass = defaultsStr(f.left_cont_css_class, 'ldiv');\r\n\r\n /**\r\n * Css class for right-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.rContCssClass = defaultsStr(f.right_cont_css_class, 'rdiv');\r\n\r\n /**\r\n * Css class for middle inner container DOM element\r\n * @type {String}\r\n */\r\n this.cContCssClass = defaultsStr(f.center_cont_css_class, 'mdiv');\r\n\r\n /**\r\n * Toolbar's custom container ID\r\n * @type {String}\r\n */\r\n this.tgtId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Toolbar's container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Left-side inner container DOM element (rows counter in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.lCont = null;\r\n\r\n /**\r\n * Right-side inner container DOM element (reset button,\r\n * page length selector in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.rCont = null;\r\n\r\n /**\r\n * Middle inner container DOM element (paging elements in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.cCont = null;\r\n\r\n /**\r\n * Container elements inside toolbar\r\n * @private\r\n */\r\n this.innerCont = {\r\n left: null,\r\n center: null,\r\n right: null\r\n };\r\n\r\n this.emitter.on(EVENTS,\r\n (feature, isExternal) => this.init(isExternal));\r\n\r\n /** @inherited */\r\n this.enabled = true;\r\n }\r\n\r\n /**\r\n * Initialize toolbar components\r\n * @param {Boolean} isExternal initialize only if component belongs\r\n * to toolbar\r\n */\r\n init(isExternal) {\r\n if (this.initialized || isExternal) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n // default container\r\n let container = createElm('div');\r\n container.className = this.contCssClass;\r\n\r\n // custom container\r\n if (this.tgtId) {\r\n elm(this.tgtId).appendChild(container);\r\n }\r\n // grid-layout\r\n else if (tf.gridLayout) {\r\n let gridLayout = tf.Mod.gridLayout;\r\n gridLayout.tblMainCont.appendChild(container);\r\n container.className = gridLayout.infDivCssClass;\r\n }\r\n // default location: just above the table\r\n else {\r\n let cont = createElm('caption');\r\n cont.appendChild(container);\r\n tf.dom().insertBefore(cont, tf.dom().firstChild);\r\n }\r\n this.cont = container;\r\n\r\n // left container\r\n this.lCont = this.createContainer(container, this.lContCssClass);\r\n\r\n // right container\r\n this.rCont = this.createContainer(container, this.rContCssClass);\r\n\r\n // middle container\r\n this.cCont = this.createContainer(container, this.cContCssClass);\r\n\r\n this.innerCont = {\r\n left: this.lCont,\r\n center: this.cCont,\r\n right: this.rCont\r\n };\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n // emit help initialisation only if undefined\r\n if (isUndef(tf.help)) {\r\n // explicitily enable help to initialise feature by\r\n // default, only if setting is undefined\r\n tf.Mod.help.enable();\r\n this.emitter.emit('init-help', tf);\r\n }\r\n }\r\n\r\n /**\r\n * Return the container based on requested position inside the toolbar\r\n * @param {String} [position=RIGHT] 3 possible positions: 'left', 'center',\r\n * 'right'\r\n * @param {DOMElement} el optional DOM element to be inserter in container\r\n * @returns {DOMElement}\r\n */\r\n container(position = RIGHT, el) {\r\n let cont = this.innerCont[position];\r\n if (el) {\r\n cont.appendChild(el);\r\n }\r\n return cont;\r\n }\r\n\r\n /**\r\n * Create DOM element inside passed container\r\n * @param {DOMElement} container\r\n * @param {String} css\r\n * @private\r\n */\r\n createContainer(container, css) {\r\n let div = createElm('div', ['class', css]);\r\n container.appendChild(div);\r\n return div;\r\n }\r\n\r\n /**\r\n * Destroy Toolbar instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n let tbl = tf.dom();\r\n let captions = tag(tbl, 'caption');\r\n [].forEach.call(captions, (el) => removeElm(el));\r\n\r\n /** @inherited */\r\n this.initialized = false;\r\n }\r\n}\r\n\r\n// TODO: remove as soon as feature name is fixed\r\nToolbar.meta = {alwaysInstantiate: true};\r\n","'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;","/**\r\n * Array utilities\r\n */\r\n\r\nimport {matchCase} from './string';\r\n\r\n/**\r\n * Checks if given item can be found in the passed collection\r\n * @param {Array} arr collection\r\n * @param {Any} val item to search\r\n * @param {Boolean} caseSensitive respects case if true\r\n * @return {Boolean}\r\n */\r\nexport const has = (arr, val, caseSensitive) => {\r\n let sCase = Boolean(caseSensitive);\r\n for (var i = 0, l = arr.length; i < l; i++) {\r\n if (matchCase(arr[i].toString(), sCase) === val) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOnPrototype(ctor, methods) {\n var proto = ctor.prototype;\n forEachProperty(methods, function(val, key) {\n proto[key] = val;\n });\n}\n\nmodule.exports = defineOnPrototype;","import {isNumber} from './types';\r\n\r\n/**\r\n * Takes a string, removes all formatting/cruft and returns the raw float value\r\n * @param {String} Formatted number\r\n * @param {String} Decimal type '.' or ','\r\n * @return {Number} Unformatted number\r\n *\r\n * https://github.com/openexchangerates/accounting.js/blob/master/accounting.js\r\n */\r\nexport const parse = (value, decimal = '.') => {\r\n // Return the value as-is if it's already a number\r\n if (isNumber(value)) {\r\n return value;\r\n }\r\n\r\n // Build regex to strip out everything except digits, decimal point and\r\n // minus sign\r\n let regex = new RegExp('[^0-9-' + decimal + ']', ['g']);\r\n let unformatted = parseFloat(\r\n ('' + value)\r\n // replace bracketed values with negatives\r\n .replace(/\\((.*)\\)/, '-$1')\r\n // strip out any cruft\r\n .replace(regex, '')\r\n // make sure decimal point is standard\r\n .replace(decimal, '.')\r\n );\r\n\r\n // This will fail silently\r\n return !isNaN(unformatted) ? unformatted : 0;\r\n};\r\n","'use strict';\n\nvar _utc = require('../var/_utc');\n\nfunction callDateGet(d, method) {\n return d['get' + (_utc(d) ? 'UTC' : '') + method]();\n}\n\nmodule.exports = callDateGet;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getWeekday(d) {\n return callDateGet(d, 'Day');\n}\n\nmodule.exports = getWeekday;","'use strict';\n\nvar buildDateRangeUnits = require('../internal/buildDateRangeUnits');\n\nbuildDateRangeUnits();","'use strict';\n\nvar 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 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 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 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 callDateGet = require('../../common/internal/callDateGet');\n\nfunction getMonth(d) {\n return callDateGet(d, 'Month');\n}\n\nmodule.exports = getMonth;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getYear(d) {\n return callDateGet(d, 'FullYear');\n}\n\nmodule.exports = getYear;","'use strict';\n\nvar getDaysInMonth = require('../internal/getDaysInMonth');\n\nvar DateUnits = [\n {\n name: 'millisecond',\n method: 'Milliseconds',\n multiplier: 1,\n start: 0,\n end: 999\n },\n {\n name: 'second',\n method: 'Seconds',\n multiplier: 1000,\n start: 0,\n end: 59\n },\n {\n name: 'minute',\n method: 'Minutes',\n multiplier: 60 * 1000,\n start: 0,\n end: 59\n },\n {\n name: 'hour',\n method: 'Hours',\n multiplier: 60 * 60 * 1000,\n start: 0,\n end: 23\n },\n {\n name: 'day',\n alias: 'date',\n method: 'Date',\n ambiguous: true,\n multiplier: 24 * 60 * 60 * 1000,\n start: 1,\n end: function(d) {\n return getDaysInMonth(d);\n }\n },\n {\n name: 'week',\n method: 'ISOWeek',\n ambiguous: true,\n multiplier: 7 * 24 * 60 * 60 * 1000\n },\n {\n name: 'month',\n method: 'Month',\n ambiguous: true,\n multiplier: 30.4375 * 24 * 60 * 60 * 1000,\n start: 0,\n end: 11\n },\n {\n name: 'year',\n method: 'FullYear',\n ambiguous: true,\n multiplier: 365.25 * 24 * 60 * 60 * 1000,\n start: 0\n }\n];\n\nmodule.exports = DateUnits;","'use strict';\n\nfunction isDefined(o) {\n return o !== undefined;\n}\n\nmodule.exports = isDefined;","'use strict';\n\nvar iterateOverSparseArray = require('./iterateOverSparseArray');\n\nfunction forEach(arr, fn) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (!(i in arr)) {\n return iterateOverSparseArray(arr, fn, i);\n }\n fn(arr[i], i);\n }\n}\n\nmodule.exports = forEach;","import {parse as parseNb} from './number';\r\nimport {Date as SugarDate} from 'sugar-date';\r\n\r\n/** Sorting utilities */\r\n\r\n/**\r\n * Case insensitive compare function for passed strings\r\n * @param {String} First string\r\n * @param {String} Second string\r\n * @return {Number} -1 if first string lower than second one\r\n * 0 if first string same order as second one\r\n * 1 if first string greater than second one\r\n */\r\nexport const ignoreCase = (a, b) => {\r\n let x = a.toLowerCase();\r\n let y = b.toLowerCase();\r\n return x < y ? -1 : (x > y ? 1 : 0);\r\n};\r\n\r\n/**\r\n * Compare function for sorting passed numbers in ascending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortAsc = (a, b) => (a - b);\r\n\r\n/**\r\n * Compare function for sorting passed numbers in descending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortDesc = (a, b) => (b - a);\r\n\r\n/**\r\n * Compare function for sorting passed dates in ascending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortAsc = (date1, date2) => date1.getTime() - date2.getTime();\r\n\r\n/**\r\n * Compare function for sorting passed dates in descending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortDesc = (date1, date2) => date2.getTime() - date1.getTime();\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted numbers in desired\r\n * fashion according to supplied compare function and decimal separator\r\n * @param {Function} Compare function\r\n * @param {String} [decimal=','] Decimal separator\r\n * @return {Function} Compare function receiving parsed numeric arguments\r\n */\r\nexport const sortNumberStr = (compareFn, decimal = ',') => {\r\n return (numStr1, numStr2) => {\r\n let num1 = parseNb(numStr1, decimal);\r\n let num2 = parseNb(numStr2, decimal);\r\n return compareFn(num1, num2);\r\n };\r\n};\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted dates in desired\r\n * fashion according to supplied compare function and locale\r\n * @param {Function} Compare function\r\n * @param {String} [locale='en-us'] Locale code\r\n * @return {Function} Compare function receiving parsed date arguments\r\n */\r\nexport const sortDateStr = (compareFn, locale = 'en-us') => {\r\n return (dateStr1, dateStr2) => {\r\n let date1 = SugarDate.create(dateStr1, locale);\r\n let date2 = SugarDate.create(dateStr2, locale);\r\n return compareFn(date1, date2);\r\n };\r\n};\r\n","'use strict';\n\nvar _utc = require('../../common/var/_utc');\n\nfunction cloneDate(d) {\n // Rhino environments have a bug where new Date(d) truncates\n // milliseconds so need to call getTime() here.\n var clone = new Date(d.getTime());\n _utc(clone, !!_utc(d));\n return clone;\n}\n\nmodule.exports = cloneDate;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getDate(d) {\n return callDateGet(d, 'Date');\n}\n\nmodule.exports = getDate;","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setDate(d, val) {\n callDateSet(d, 'Date', val);\n}\n\nmodule.exports = setDate;","'use strict';\n\nvar _utc = require('../var/_utc'),\n callDateGet = require('./callDateGet');\n\nfunction callDateSet(d, method, value, safe) {\n // \"Safe\" denotes not setting the date if the value is the same as what is\n // currently set. In theory this should be a noop, however it will cause\n // timezone shifts when in the middle of a DST fallback. This is unavoidable\n // as the notation itself is ambiguous (i.e. there are two \"1:00ams\" on\n // November 1st, 2015 in northern hemisphere timezones that follow DST),\n // however when advancing or rewinding dates this can throw off calculations\n // so avoiding this unintentional shifting on an opt-in basis.\n if (safe && value === callDateGet(d, method, value)) {\n return;\n }\n d['set' + (_utc(d) ? 'UTC' : '') + method](value);\n}\n\nmodule.exports = callDateSet;","'use strict';\n\nvar isDefined = require('../../common/internal/isDefined'),\n classChecks = require('../../common/var/classChecks'),\n callDateSet = require('../../common/internal/callDateSet'),\n walkUnitDown = require('./walkUnitDown');\n\nvar isFunction = classChecks.isFunction;\n\nfunction setUnitAndLowerToEdge(d, startIndex, stopIndex, end) {\n walkUnitDown(startIndex, function(unit, i) {\n var val = end ? unit.end : unit.start;\n if (isFunction(val)) {\n val = val(d);\n }\n callDateSet(d, unit.method, val);\n return !isDefined(stopIndex) || i > stopIndex;\n });\n return d;\n}\n\nmodule.exports = setUnitAndLowerToEdge;","'use strict';\n\nfunction dateIsValid(d) {\n return !isNaN(d.getTime());\n}\n\nmodule.exports = dateIsValid;","'use strict';\n\nvar updateDate = require('./updateDate');\n\nfunction advanceDate(d, unit, num, reset) {\n var set = {};\n set[unit] = num;\n return updateDate(d, set, reset, 1);\n}\n\nmodule.exports = advanceDate;","'use strict';\n\nvar _dateOptions = require('../var/_dateOptions');\n\nfunction getNewDate() {\n return _dateOptions('newDateInternal')();\n}\n\nmodule.exports = getNewDate;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes');\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getLowerUnitIndex(index) {\n if (index === MONTH_INDEX) {\n return DAY_INDEX;\n } else if (index === WEEK_INDEX) {\n return HOURS_INDEX;\n }\n return index - 1;\n}\n\nmodule.exports = getLowerUnitIndex;","'use strict';\n\nfunction isUndefined(o) {\n return o === undefined;\n}\n\nmodule.exports = isUndefined;","'use strict';\n\nrequire('./date');\nrequire('./range');\n\nmodule.exports = require('sugar-core');","'use strict';\n\nvar isValidRangeMember = require('./isValidRangeMember');\n\nfunction rangeIsValid(range) {\n return isValidRangeMember(range.start) &&\n isValidRangeMember(range.end) &&\n typeof range.start === typeof range.end;\n}\n\nmodule.exports = rangeIsValid;","'use strict';\n\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, contextDate) {\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\n switch(prefer) {\n case -1: return d >= (contextDate || getNewDate());\n case 1: return d <= (contextDate || 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 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;","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, cls) {\r\n super(tf, cls);\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 and 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 /**\r\n * Refresh linked filters to offer only selected options\r\n */\r\n linkFilters() {\r\n let tf = this.tf;\r\n if (!tf.linkedFilters || !tf.activeFilterId) {\r\n return;\r\n }\r\n\r\n this.refreshAll();\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 {Feature} from '../feature';\r\nimport {createElm, createOpt, createText, elm, removeElm} from '../dom';\r\nimport {isArray, isNull, EMPTY_FN} from '../types';\r\nimport {addEvt, removeEvt, isKeyPressed, bound} from '../event';\r\nimport {INPUT, SELECT, NONE, ENTER_KEY} from '../const';\r\nimport {\r\n defaultsStr, defaultsNb, defaultsBool, defaultsArr, defaultsFn\r\n} from '../settings';\r\nimport {CENTER, RIGHT} from './toolbar';\r\n\r\n/**\r\n * Paging UI component\r\n * @export\r\n * @class Paging\r\n * @extends {Feature}\r\n */\r\nexport class Paging extends Feature {\r\n\r\n /**\r\n * Creates an instance of Paging\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, Paging);\r\n\r\n // Configuration object\r\n let f = this.config.paging || {};\r\n\r\n /**\r\n * Css class for the paging buttons (previous, next, etc.)\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class, 'pgInp');\r\n\r\n /**\r\n * Main select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageSlc = null;\r\n\r\n /**\r\n * Results per page select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageLengthSlc = null;\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.tgtId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Number of rows contained in a page\r\n * @type {Number}\r\n */\r\n this.pageLength = defaultsNb(f.length, 10);\r\n\r\n /**\r\n * ID of custom container element for the results per page selector\r\n * @type {String}\r\n */\r\n this.pageLengthTgtId = defaultsStr(f.results_per_page_target_id, null);\r\n\r\n /**\r\n * Css class for the paging select element\r\n * @type {String}\r\n */\r\n this.pgSlcCssClass = defaultsStr(f.slc_css_class, 'pgSlc');\r\n\r\n /**\r\n * Css class for the paging input element\r\n * @type {String}\r\n */\r\n this.pgInpCssClass = defaultsStr(f.inp_css_class, 'pgNbInp');\r\n\r\n /**\r\n * Label and values for the results per page select, example of usage:\r\n * ['Records: ', [10,25,50,100]]\r\n * @type {Array}\r\n */\r\n this.resultsPerPage = defaultsArr(f.results_per_page, null);\r\n\r\n /**\r\n * Determines if results per page is configured\r\n * @type {Boolean}\r\n */\r\n this.hasResultsPerPage = isArray(this.resultsPerPage);\r\n\r\n /**\r\n * Css class for the results per page select\r\n * @type {String}\r\n */\r\n this.resultsSlcCssClass = defaultsStr(f.results_slc_css_class, 'rspg');\r\n\r\n /**\r\n * Css class for the label preceding results per page select\r\n * @type {String}\r\n */\r\n this.resultsSpanCssClass = defaultsStr(f.results_span_css_class,\r\n 'rspgSpan');\r\n\r\n /**\r\n * Index of the first row of current page\r\n * @type {Number}\r\n * @private\r\n */\r\n this.startPagingRow = 0;\r\n\r\n /**\r\n * Total number of pages\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbPages = 0;\r\n\r\n /**\r\n * Current page number\r\n * @type {Number}\r\n * @private\r\n */\r\n this.currentPageNb = 1;\r\n\r\n /**\r\n * Next page button text\r\n * @type {String}\r\n */\r\n this.btnNextPageText = defaultsStr(f.btn_next_page_text, '>');\r\n\r\n /**\r\n * Previous page button text\r\n * @type {String}\r\n */\r\n this.btnPrevPageText = defaultsStr(f.btn_prev_page_text, '<');\r\n\r\n /**\r\n * Last page button text\r\n * @type {String}\r\n */\r\n this.btnLastPageText = defaultsStr(f.btn_last_page_text, '>|');\r\n\r\n /**\r\n * First page button text\r\n * @type {String}\r\n */\r\n this.btnFirstPageText = defaultsStr(f.btn_first_page_text, '|<');\r\n\r\n /**\r\n * Next page button HTML\r\n * @type {String}\r\n */\r\n this.btnNextPageHtml = defaultsStr(f.btn_next_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Previous page button HTML\r\n * @type {String}\r\n */\r\n this.btnPrevPageHtml = defaultsStr(f.btn_prev_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * First page button HTML\r\n * @type {String}\r\n */\r\n this.btnFirstPageHtml = defaultsStr(f.btn_first_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Last page button HTML\r\n * @type {String}\r\n */\r\n this.btnLastPageHtml = defaultsStr(f.btn_last_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Text preceeding page selector drop-down\r\n * @type {String}\r\n */\r\n this.pageText = defaultsStr(f.page_text, ' Page ');\r\n\r\n /**\r\n * Text after page selector drop-down\r\n * @type {String}\r\n */\r\n this.ofText = defaultsStr(f.of_text, ' of ');\r\n\r\n /**\r\n * Css class for the span containing total number of pages\r\n * @type {String}\r\n */\r\n this.nbPgSpanCssClass = defaultsStr(f.nb_pages_css_class, 'nbpg');\r\n\r\n /**\r\n * Determines if paging buttons are enabled (default: true)\r\n * @type {Boolean}\r\n */\r\n this.hasBtns = defaultsBool(f.btns, true);\r\n\r\n /**\r\n * Defines page selector type, two possible values: 'select', 'input'\r\n * @type {String}\r\n */\r\n this.pageSelectorType = defaultsStr(f.page_selector_type, SELECT);\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, CENTER);\r\n\r\n /**\r\n * Callback fired before the page is changed\r\n * @type {Function}\r\n */\r\n this.onBeforeChangePage = defaultsFn(f.on_before_change_page, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the page is changed\r\n * @type {Function}\r\n */\r\n this.onAfterChangePage = defaultsFn(f.on_after_change_page, EMPTY_FN);\r\n\r\n /**\r\n * Label preciding results per page select\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.slcResultsTxt = null;\r\n /**\r\n * Span containing next page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnNextCont = null;\r\n /**\r\n * Span containing previous page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnPrevCont = null;\r\n /**\r\n * Span containing last page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnLastCont = null;\r\n /**\r\n * Span containing first page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnFirstCont = null;\r\n /**\r\n * Span for tot nb pages\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgCont = null;\r\n /**\r\n * Span preceding pages select (contains 'Page')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgBefore = null;\r\n /**\r\n * Span following pages select (contains ' of ')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgAfter = null;\r\n\r\n let startRow = tf.refRow;\r\n let nrows = tf.getRowsNb(true);\r\n //calculates page nb\r\n this.nbPages = Math.ceil((nrows - startRow) / this.pageLength);\r\n\r\n let o = this;\r\n /**\r\n * Paging DOM events handlers\r\n * @type {String}\r\n * @private\r\n */\r\n this.evt = {\r\n slcIndex() {\r\n return (o.pageSelectorType === SELECT) ?\r\n o.pageSlc.options.selectedIndex :\r\n parseInt(o.pageSlc.value, 10) - 1;\r\n },\r\n nbOpts() {\r\n return (o.pageSelectorType === SELECT) ?\r\n parseInt(o.pageSlc.options.length, 10) - 1 :\r\n (o.nbPages - 1);\r\n },\r\n next() {\r\n let nextIndex = o.evt.slcIndex() < o.evt.nbOpts() ?\r\n o.evt.slcIndex() + 1 : 0;\r\n o.changePage(nextIndex);\r\n },\r\n prev() {\r\n let prevIndex = o.evt.slcIndex() > 0 ?\r\n o.evt.slcIndex() - 1 : o.evt.nbOpts();\r\n o.changePage(prevIndex);\r\n },\r\n last() {\r\n o.changePage(o.evt.nbOpts());\r\n },\r\n first() {\r\n o.changePage(0);\r\n },\r\n _detectKey(e) {\r\n if (isKeyPressed(e, [ENTER_KEY])) {\r\n if (tf.sorted) {\r\n tf.filter();\r\n o.changePage(o.evt.slcIndex());\r\n } else {\r\n o.changePage();\r\n }\r\n this.blur();\r\n }\r\n },\r\n slcPagesChange: null,\r\n nextEvt: null,\r\n prevEvt: null,\r\n lastEvt: null,\r\n firstEvt: null\r\n };\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n let slcPages;\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-feature', this, !isNull(this.tgtId));\r\n\r\n // Check resultsPerPage is in expected format and initialise the\r\n // results per page component\r\n if (this.hasResultsPerPage) {\r\n if (this.resultsPerPage.length < 2) {\r\n this.hasResultsPerPage = false;\r\n } else {\r\n this.pageLength = this.resultsPerPage[1][0];\r\n this.setResultsPerPage();\r\n }\r\n }\r\n\r\n evt.slcPagesChange = (event) => {\r\n let slc = event.target;\r\n this.changePage(slc.selectedIndex);\r\n };\r\n\r\n // Paging drop-down list selector\r\n if (this.pageSelectorType === SELECT) {\r\n slcPages = createElm(SELECT);\r\n slcPages.className = this.pgSlcCssClass;\r\n addEvt(slcPages, 'change', evt.slcPagesChange);\r\n }\r\n\r\n // Paging input selector\r\n if (this.pageSelectorType === INPUT) {\r\n slcPages = createElm(INPUT, ['value', this.currentPageNb]);\r\n slcPages.className = this.pgInpCssClass;\r\n addEvt(slcPages, 'keypress', evt._detectKey);\r\n }\r\n\r\n // btns containers\r\n let btnNextSpan = createElm('span');\r\n let btnPrevSpan = createElm('span');\r\n let btnLastSpan = createElm('span');\r\n let btnFirstSpan = createElm('span');\r\n\r\n if (this.hasBtns) {\r\n // Next button\r\n if (!this.btnNextPageHtml) {\r\n let btnNext = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnNextPageText],\r\n ['title', 'Next']\r\n );\r\n btnNext.className = this.btnCssClass;\r\n addEvt(btnNext, 'click', evt.next);\r\n btnNextSpan.appendChild(btnNext);\r\n } else {\r\n btnNextSpan.innerHTML = this.btnNextPageHtml;\r\n addEvt(btnNextSpan, 'click', evt.next);\r\n }\r\n // Previous button\r\n if (!this.btnPrevPageHtml) {\r\n let btnPrev = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnPrevPageText],\r\n ['title', 'Previous']\r\n );\r\n btnPrev.className = this.btnCssClass;\r\n addEvt(btnPrev, 'click', evt.prev);\r\n btnPrevSpan.appendChild(btnPrev);\r\n } else {\r\n btnPrevSpan.innerHTML = this.btnPrevPageHtml;\r\n addEvt(btnPrevSpan, 'click', evt.prev);\r\n }\r\n // Last button\r\n if (!this.btnLastPageHtml) {\r\n let btnLast = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnLastPageText],\r\n ['title', 'Last']\r\n );\r\n btnLast.className = this.btnCssClass;\r\n addEvt(btnLast, 'click', evt.last);\r\n btnLastSpan.appendChild(btnLast);\r\n } else {\r\n btnLastSpan.innerHTML = this.btnLastPageHtml;\r\n addEvt(btnLastSpan, 'click', evt.last);\r\n }\r\n // First button\r\n if (!this.btnFirstPageHtml) {\r\n let btnFirst = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnFirstPageText],\r\n ['title', 'First']\r\n );\r\n btnFirst.className = this.btnCssClass;\r\n addEvt(btnFirst, 'click', evt.first);\r\n btnFirstSpan.appendChild(btnFirst);\r\n } else {\r\n btnFirstSpan.innerHTML = this.btnFirstPageHtml;\r\n addEvt(btnFirstSpan, 'click', evt.first);\r\n }\r\n }\r\n\r\n // paging elements (buttons+drop-down list) are added to defined element\r\n let targetEl = !this.tgtId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.tgtId);\r\n targetEl.appendChild(btnFirstSpan);\r\n targetEl.appendChild(btnPrevSpan);\r\n\r\n let pgBeforeSpan = createElm('span');\r\n pgBeforeSpan.appendChild(createText(this.pageText));\r\n pgBeforeSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgBeforeSpan);\r\n targetEl.appendChild(slcPages);\r\n let pgAfterSpan = createElm('span');\r\n pgAfterSpan.appendChild(createText(this.ofText));\r\n pgAfterSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgAfterSpan);\r\n let pgSpan = createElm('span');\r\n pgSpan.className = this.nbPgSpanCssClass;\r\n pgSpan.appendChild(createText(' ' + this.nbPages + ' '));\r\n targetEl.appendChild(pgSpan);\r\n targetEl.appendChild(btnNextSpan);\r\n targetEl.appendChild(btnLastSpan);\r\n\r\n this.btnNextCont = btnNextSpan;\r\n this.btnPrevCont = btnPrevSpan;\r\n this.btnLastCont = btnLastSpan;\r\n this.btnFirstCont = btnFirstSpan;\r\n this.pgCont = pgSpan;\r\n this.pgBefore = pgBeforeSpan;\r\n this.pgAfter = pgAfterSpan;\r\n this.pageSlc = slcPages;\r\n\r\n this.setPagingInfo();\r\n\r\n if (!tf.fltGrid) {\r\n tf.validateAllRows();\r\n this.setPagingInfo(tf.validRowsIndex);\r\n }\r\n\r\n this.emitter.on(['after-filtering'], bound(this.resetPagingInfo, this));\r\n this.emitter.on(['change-page'], bound(this.changePageHandler, this));\r\n this.emitter.on(['change-page-results'],\r\n bound(this.changePageResultsHandler, this));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Reset paging when filters are already instantiated\r\n * @param {Boolean} filterTable Execute filtering once paging instanciated\r\n */\r\n reset(filterTable = false) {\r\n this.enable();\r\n this.init();\r\n\r\n if (filterTable) {\r\n this.tf.filter();\r\n }\r\n }\r\n\r\n /**\r\n * Reset paging info from scratch after a filtering process\r\n */\r\n resetPagingInfo() {\r\n this.startPagingRow = 0;\r\n this.currentPageNb = 1;\r\n this.setPagingInfo(this.tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Calculate number of pages based on valid rows\r\n * Refresh paging select according to number of pages\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n setPagingInfo(validRows) {\r\n let tf = this.tf;\r\n let cont = !this.tgtId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.tgtId);\r\n\r\n //store valid rows indexes\r\n tf.validRowsIndex = validRows || tf.getValidRows(true);\r\n\r\n //calculate nb of pages\r\n this.nbPages = Math.ceil(tf.validRowsIndex.length / this.pageLength);\r\n //refresh page nb span\r\n this.pgCont.innerHTML = this.nbPages;\r\n //select clearing shortcut\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.innerHTML = '';\r\n }\r\n\r\n if (this.nbPages > 0) {\r\n cont.style.visibility = 'visible';\r\n if (this.pageSelectorType === SELECT) {\r\n for (let z = 0; z < this.nbPages; z++) {\r\n let opt = createOpt(z + 1, z * this.pageLength, false);\r\n this.pageSlc.options[z] = opt;\r\n }\r\n } else {\r\n //input type\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n } else {\r\n /*** if no results paging select and buttons are hidden ***/\r\n cont.style.visibility = 'hidden';\r\n }\r\n this.groupByPage(tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Group table rows by page and display valid rows\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n groupByPage(validRows) {\r\n let tf = this.tf;\r\n let rows = tf.dom().rows;\r\n let startPagingRow = parseInt(this.startPagingRow, 10);\r\n let endPagingRow = startPagingRow + parseInt(this.pageLength, 10);\r\n\r\n //store valid rows indexes\r\n if (validRows) {\r\n tf.validRowsIndex = validRows;\r\n }\r\n\r\n //this loop shows valid rows of current page\r\n for (let h = 0, len = tf.getValidRowsNb(true); h < len; h++) {\r\n let validRowIdx = tf.validRowsIndex[h];\r\n let r = rows[validRowIdx];\r\n let isRowValid = r.getAttribute('validRow');\r\n let rowDisplayed = false;\r\n\r\n if (h >= startPagingRow && h < endPagingRow) {\r\n if (isNull(isRowValid) || Boolean(isRowValid === 'true')) {\r\n r.style.display = '';\r\n rowDisplayed = true;\r\n }\r\n } else {\r\n r.style.display = NONE;\r\n }\r\n this.emitter.emit('row-paged', tf, validRowIdx, h, rowDisplayed);\r\n }\r\n\r\n // broadcast grouping by page\r\n this.emitter.emit('grouped-by-page', tf, this);\r\n }\r\n\r\n /**\r\n * Return the current page number\r\n * @return {Number} Page number\r\n */\r\n getPage() {\r\n return this.currentPageNb;\r\n }\r\n\r\n /**\r\n * Show page defined by passed argument (string or number):\r\n * @param {String}/{Number} cmd possible string values: 'next',\r\n * 'previous', 'last', 'first' or page number as per param\r\n */\r\n setPage(cmd) {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.isEnabled()) {\r\n return;\r\n }\r\n let btnEvt = this.evt,\r\n cmdtype = typeof cmd;\r\n if (cmdtype === 'string') {\r\n switch (cmd.toLowerCase()) {\r\n case 'next':\r\n btnEvt.next();\r\n break;\r\n case 'previous':\r\n btnEvt.prev();\r\n break;\r\n case 'last':\r\n btnEvt.last();\r\n break;\r\n case 'first':\r\n btnEvt.first();\r\n break;\r\n default:\r\n btnEvt.next();\r\n break;\r\n }\r\n }\r\n else if (cmdtype === 'number') {\r\n this.changePage(cmd - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Generates UI elements for the number of results per page drop-down\r\n */\r\n setResultsPerPage() {\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.pageLengthSlc || !this.resultsPerPage) {\r\n return;\r\n }\r\n\r\n evt.slcResultsChange = (ev) => {\r\n this.onChangeResultsPerPage();\r\n ev.target.blur();\r\n };\r\n\r\n let slcR = createElm(SELECT);\r\n slcR.className = this.resultsSlcCssClass;\r\n let slcRText = this.resultsPerPage[0],\r\n slcROpts = this.resultsPerPage[1];\r\n let slcRSpan = createElm('span');\r\n slcRSpan.className = this.resultsSpanCssClass;\r\n\r\n // results per page select is added to external element\r\n let targetEl = !this.pageLengthTgtId ?\r\n tf.feature('toolbar').container(RIGHT) :\r\n elm(this.pageLengthTgtId);\r\n slcRSpan.appendChild(createText(slcRText));\r\n\r\n let help = tf.feature('help');\r\n if (help && help.btn) {\r\n help.btn.parentNode.insertBefore(slcRSpan, help.btn);\r\n help.btn.parentNode.insertBefore(slcR, help.btn);\r\n } else {\r\n targetEl.appendChild(slcRSpan);\r\n targetEl.appendChild(slcR);\r\n }\r\n\r\n for (let r = 0; r < slcROpts.length; r++) {\r\n let currOpt = new Option(slcROpts[r], slcROpts[r], false, false);\r\n slcR.options[r] = currOpt;\r\n }\r\n addEvt(slcR, 'change', evt.slcResultsChange);\r\n this.slcResultsTxt = slcRSpan;\r\n this.pageLengthSlc = slcR;\r\n }\r\n\r\n /**\r\n * Remove number of results per page UI elements\r\n */\r\n removeResultsPerPage() {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.pageLengthSlc ||\r\n !this.resultsPerPage) {\r\n return;\r\n }\r\n if (this.pageLengthSlc) {\r\n removeElm(this.pageLengthSlc);\r\n }\r\n if (this.slcResultsTxt) {\r\n removeElm(this.slcResultsTxt);\r\n }\r\n this.pageLengthSlc = null;\r\n this.slcResultsTxt = null;\r\n }\r\n\r\n /**\r\n * Change the page based on passed index\r\n * @param {Number} index Index of the page (0-n)\r\n */\r\n changePage(index) {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-page-change', tf, (index + 1));\r\n\r\n if (index === null) {\r\n index = this.pageSelectorType === SELECT ?\r\n this.pageSlc.options.selectedIndex : this.pageSlc.value - 1;\r\n }\r\n if (index >= 0 && index <= (this.nbPages - 1)) {\r\n this.onBeforeChangePage(this, (index + 1));\r\n\r\n this.currentPageNb = parseInt(index, 10) + 1;\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.options[index].selected = true;\r\n } else {\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n this.startPagingRow = (this.pageSelectorType === SELECT) ?\r\n this.pageSlc.value : (index * this.pageLength);\r\n\r\n this.groupByPage();\r\n\r\n this.onAfterChangePage(this, (index + 1));\r\n }\r\n\r\n this.emitter.emit('after-page-change', tf, (index + 1));\r\n }\r\n\r\n /**\r\n * Change the number of results per page based on passed value\r\n * @param {String} val The number of results per page\r\n */\r\n changeResultsPerPage(val) {\r\n if (!this.isEnabled() || isNaN(val)) {\r\n return;\r\n }\r\n\r\n this.pageLengthSlc.value = val;\r\n this.onChangeResultsPerPage();\r\n }\r\n\r\n /**\r\n * Change rows according to page results drop-down\r\n */\r\n onChangeResultsPerPage() {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled() || tf.getValidRowsNb() === 0) {\r\n return;\r\n }\r\n\r\n let {\r\n pageLengthSlc: slcR, pageSelectorType, pageSlc, emitter\r\n } = this;\r\n\r\n emitter.emit('before-page-length-change', tf);\r\n\r\n let slcIndex = slcR.selectedIndex;\r\n let slcPagesSelIndex = (pageSelectorType === SELECT) ?\r\n pageSlc.selectedIndex : parseInt(pageSlc.value - 1, 10);\r\n this.pageLength = parseInt(slcR.options[slcIndex].value, 10);\r\n this.startPagingRow = this.pageLength * slcPagesSelIndex;\r\n\r\n if (!isNaN(this.pageLength)) {\r\n if (this.startPagingRow >= tf.nbFilterableRows) {\r\n this.startPagingRow = (tf.nbFilterableRows - this.pageLength);\r\n }\r\n this.setPagingInfo();\r\n\r\n if (pageSelectorType === SELECT) {\r\n let slcIdx = (pageSlc.options.length - 1 <= slcPagesSelIndex) ?\r\n (pageSlc.options.length - 1) :\r\n slcPagesSelIndex;\r\n pageSlc.options[slcIdx].selected = true;\r\n }\r\n }\r\n\r\n emitter.emit('after-page-length-change', tf, this.pageLength);\r\n }\r\n\r\n /**\r\n * Re-set page nb at page re-load\r\n */\r\n resetPage() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page', tf);\r\n let pgNb = tf.feature('store').getPageNb();\r\n if (pgNb !== '') {\r\n this.changePage((pgNb - 1));\r\n }\r\n this.emitter.emit('after-reset-page', tf, pgNb);\r\n }\r\n\r\n /**\r\n * Re-set page length value at page re-load\r\n */\r\n resetPageLength() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page-length', tf);\r\n let pglenIndex = tf.feature('store').getPageLength();\r\n\r\n if (pglenIndex !== '') {\r\n this.pageLengthSlc.options[pglenIndex].selected = true;\r\n this.changeResultsPerPage();\r\n }\r\n this.emitter.emit('after-reset-page-length', tf, pglenIndex);\r\n }\r\n\r\n /** @private */\r\n changePageHandler(tf, pageNumber) {\r\n this.setPage(pageNumber);\r\n }\r\n\r\n /** @private */\r\n changePageResultsHandler(tf, pageLength) {\r\n this.changeResultsPerPage(pageLength);\r\n }\r\n\r\n /**\r\n * Remove paging feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let evt = this.evt;\r\n\r\n if (this.pageSlc) {\r\n if (this.pageSelectorType === SELECT) {\r\n removeEvt(this.pageSlc, 'change', evt.slcPagesChange);\r\n }\r\n else if (this.pageSelectorType === INPUT) {\r\n removeEvt(this.pageSlc, 'keypress', evt._detectKey);\r\n }\r\n removeElm(this.pageSlc);\r\n }\r\n\r\n if (this.btnNextCont) {\r\n removeEvt(this.btnNextCont, 'click', evt.next);\r\n removeElm(this.btnNextCont);\r\n this.btnNextCont = null;\r\n }\r\n\r\n if (this.btnPrevCont) {\r\n removeEvt(this.btnPrevCont, 'click', evt.prev);\r\n removeElm(this.btnPrevCont);\r\n this.btnPrevCont = null;\r\n }\r\n\r\n if (this.btnLastCont) {\r\n removeEvt(this.btnLastCont, 'click', evt.last);\r\n removeElm(this.btnLastCont);\r\n this.btnLastCont = null;\r\n }\r\n\r\n if (this.btnFirstCont) {\r\n removeEvt(this.btnFirstCont, 'click', evt.first);\r\n removeElm(this.btnFirstCont);\r\n this.btnFirstCont = null;\r\n }\r\n\r\n if (this.pgBefore) {\r\n removeElm(this.pgBefore);\r\n this.pgBefore = null;\r\n }\r\n\r\n if (this.pgAfter) {\r\n removeElm(this.pgAfter);\r\n this.pgAfter = null;\r\n }\r\n\r\n if (this.pgCont) {\r\n removeElm(this.pgCont);\r\n this.pgCont = null;\r\n }\r\n\r\n if (this.hasResultsPerPage) {\r\n this.removeResultsPerPage();\r\n }\r\n\r\n this.emitter.off(['after-filtering'],\r\n bound(this.resetPagingInfo, this));\r\n this.emitter.off(['change-page'], bound(this.changePageHandler, this));\r\n this.emitter.off(['change-page-results'],\r\n bound(this.changePageResultsHandler, this));\r\n\r\n this.pageSlc = null;\r\n this.nbPages = 0;\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, elm, removeElm} from '../dom';\r\nimport {isEmpty, EMPTY_FN} from '../types';\r\nimport {NONE} from '../const';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\n\r\n/**\r\n * UI when filtering yields no matches\r\n * @export\r\n * @class NoResults\r\n * @extends {Feature}\r\n */\r\nexport class NoResults extends Feature {\r\n\r\n /**\r\n * Creates an instance of NoResults\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, NoResults);\r\n\r\n //configuration object\r\n let f = this.config.no_results_message || {};\r\n\r\n /**\r\n * Text (accepts HTML)\r\n * @type {String}\r\n */\r\n this.content = defaultsStr(f.content, 'No results');\r\n\r\n /**\r\n * Custom container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.customContainer = defaultsStr(f.custom_container, null);\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.customContainerId = defaultsStr(f.custom_container_id, null);\r\n\r\n /**\r\n * Indicates if UI is contained in a external element\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isExternal = !isEmpty(this.customContainer) ||\r\n !isEmpty(this.customContainerId);\r\n\r\n /**\r\n * Css class assigned to container element\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'no-results');\r\n\r\n /**\r\n * Stores container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeShow = defaultsFn(f.on_before_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterShow = defaultsFn(f.on_after_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before the message is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeHide = defaultsFn(f.on_before_hide_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the message is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterHide = defaultsFn(f.on_after_hide_msg, EMPTY_FN);\r\n }\r\n\r\n /**\r\n * Initializes NoResults instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let target = this.customContainer || elm(this.customContainerId) ||\r\n tf.dom();\r\n\r\n //container\r\n let cont = createElm('div');\r\n cont.className = this.cssClass;\r\n cont.innerHTML = this.content;\r\n\r\n if (this.isExternal) {\r\n target.appendChild(cont);\r\n } else {\r\n target.parentNode.insertBefore(cont, target.nextSibling);\r\n }\r\n\r\n this.cont = cont;\r\n\r\n // subscribe to after-filtering event\r\n this.emitter.on(\r\n ['initialized', 'after-filtering'],\r\n () => this.toggle()\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Toggle no results message\r\n */\r\n toggle() {\r\n if (this.tf.getValidRowsNb() > 0) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n /**\r\n * Show no results message\r\n */\r\n show() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeShow(this.tf, this);\r\n\r\n this.setWidth();\r\n this.cont.style.display = 'block';\r\n\r\n this.onAfterShow(this.tf, this);\r\n }\r\n\r\n /**\r\n * Hide no results message\r\n */\r\n hide() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeHide(this.tf, this);\r\n\r\n this.cont.style.display = NONE;\r\n\r\n this.onAfterHide(this.tf, this);\r\n }\r\n\r\n /**\r\n * Sets no results container width\r\n * @private\r\n */\r\n setWidth() {\r\n if (!this.initialized || this.isExternal || !this.isEnabled()) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n if (tf.gridLayout) {\r\n let gridLayout = tf.feature('gridLayout');\r\n this.cont.style.width = gridLayout.headTbl.clientWidth + 'px';\r\n } else {\r\n this.cont.style.width = (tf.dom().tHead ?\r\n tf.dom().tHead.clientWidth :\r\n tf.dom().tBodies[0].clientWidth) + 'px';\r\n }\r\n }\r\n\r\n /** Remove feature */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.cont);\r\n this.cont = null;\r\n // unsubscribe to after-filtering event\r\n this.emitter.off(['after-filtering'], () => this.toggle());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {addClass, removeClass} from '../dom';\r\nimport {defaultsStr} from '../settings';\r\nimport {bound} from '../event';\r\n\r\n/**\r\n * Rows with alternating background color for improved readability\r\n */\r\nexport class AlternateRows extends Feature {\r\n\r\n /**\r\n * Creates an instance of AlternateRows.\r\n *\r\n * @param {Object} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, AlternateRows);\r\n\r\n let config = this.config;\r\n\r\n /**\r\n * Css class for even rows (default: 'even')\r\n * @type {String}\r\n */\r\n this.evenCss = defaultsStr(config.even_row_css_class, 'even');\r\n\r\n /**\r\n * Css class for odd rows (default: 'odd')\r\n * @type {String}\r\n */\r\n this.oddCss = defaultsStr(config.odd_row_css_class, 'odd');\r\n }\r\n\r\n /**\r\n * Sets alternating rows color\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.processAll();\r\n\r\n // Subscribe to events\r\n this.emitter.on(['row-processed', 'row-paged'],\r\n bound(this.processRowHandler, this));\r\n this.emitter.on(['column-sorted', 'rows-changed'],\r\n bound(this.processAll, this));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Apply background to all valid rows\r\n */\r\n processAll() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let validRowsIndex = tf.getValidRows(true);\r\n let indexLen = validRowsIndex.length;\r\n let idx = 0;\r\n\r\n //alternates bg color\r\n for (let j = 0; j < indexLen; j++) {\r\n let rowIdx = validRowsIndex[j];\r\n this.setRowBg(rowIdx, idx);\r\n idx++;\r\n }\r\n }\r\n\r\n /**\r\n * Set/remove row background based on row validation\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} arrIdx Array index\r\n * @param {Boolean} isValid Valid row flag\r\n */\r\n processRow(rowIdx, arrIdx, isValid) {\r\n if (isValid) {\r\n this.setRowBg(rowIdx, arrIdx);\r\n } else {\r\n this.removeRowBg(rowIdx);\r\n }\r\n }\r\n\r\n /**\r\n * Sets row background color\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} idx Valid rows collection index needed to calculate bg\r\n * color\r\n * @private\r\n */\r\n setRowBg(rowIdx, idx) {\r\n if (!this.isEnabled() || isNaN(rowIdx)) {\r\n return;\r\n }\r\n let rows = this.tf.dom().rows;\r\n let i = isNaN(idx) ? rowIdx : idx;\r\n this.removeRowBg(rowIdx);\r\n\r\n addClass(rows[rowIdx], (i % 2) ? this.evenCss : this.oddCss);\r\n }\r\n\r\n /**\r\n * Removes row background color\r\n * @param {Number} idx Row index\r\n * @private\r\n */\r\n removeRowBg(idx) {\r\n if (isNaN(idx)) {\r\n return;\r\n }\r\n let rows = this.tf.dom().rows;\r\n removeClass(rows[idx], this.oddCss);\r\n removeClass(rows[idx], this.evenCss);\r\n }\r\n\r\n /** @private */\r\n processRowHandler(tf, rowIndex, arrIndex, isValid) {\r\n this.processRow(rowIndex, arrIndex, isValid);\r\n }\r\n\r\n /**\r\n * Removes all alternating backgrounds\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let eachRow = this.tf.eachRow(0);\r\n eachRow((row, i) => this.removeRowBg(i));\r\n\r\n // Unsubscribe to events\r\n this.emitter.off(['row-processed', 'row-paged'],\r\n bound(this.processRowHandler, this));\r\n this.emitter.off(['column-sorted', 'rows-changed'],\r\n bound(this.processAll, this));\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\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, ClearButton);\r\n\r\n let f = this.config.btn_reset || {};\r\n\r\n /**\r\n * Container element ID\r\n * @type {String}\r\n */\r\n this.targetId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Text for the clear button\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, null);\r\n\r\n /**\r\n * Css class for reset button\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'reset');\r\n\r\n /**\r\n * Tooltip text for the clear button\r\n * @type {String}\r\n */\r\n this.tooltip = f.tooltip || 'Clear filters';\r\n\r\n /**\r\n * Custom Html string for the clear button\r\n * @type {String}\r\n */\r\n this.html = defaultsStr(f.html,\r\n (!tf.enableIcons || this.text ? null :\r\n ''));\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\r\n\r\n /**\r\n * Clear button container element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Clear button element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.element = null;\r\n }\r\n\r\n /**\r\n * Click event handler for clear button\r\n * @private\r\n */\r\n onClick() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.tf.clearFilters();\r\n }\r\n\r\n /**\r\n * Initialize clear button component\r\n */\r\n init() {\r\n let tf = this.tf;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-feature', this, !isNull(this.targetId));\r\n\r\n let cont = createElm('span');\r\n\r\n let targetEl = !this.targetId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.targetId);\r\n targetEl.appendChild(cont);\r\n\r\n if (!this.html) {\r\n let fltReset = createElm('a', ['href', 'javascript:void(0);']);\r\n fltReset.className = this.cssClass;\r\n fltReset.appendChild(createText(this.text));\r\n cont.appendChild(fltReset);\r\n addEvt(fltReset, 'click', () => this.onClick());\r\n } else {\r\n cont.innerHTML = this.html;\r\n let resetEl = cont.firstChild;\r\n addEvt(resetEl, 'click', () => this.onClick());\r\n }\r\n this.element = cont.firstChild;\r\n this.container = cont;\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Destroy ClearButton instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.element);\r\n removeElm(this.container);\r\n this.element = null;\r\n this.container = null;\r\n this.initialized = false;\r\n }\r\n}\r\n\r\n// TODO: remove as soon as feature name is fixed\r\nClearButton.meta = {altName: 'btnReset'};\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, PopupFilter);\r\n\r\n // Configuration object\r\n let f = this.config.popup_filters || {};\r\n\r\n /**\r\n * Close active popup filter upon filtering, enabled by default\r\n * @type {Boolean}\r\n */\r\n this.closeOnFiltering = defaultsBool(f.close_on_filtering, true);\r\n\r\n /**\r\n * Filter icon path\r\n * @type {String}\r\n */\r\n this.iconPath = defaultsStr(f.image, tf.themesPath + 'icn_filter.gif');\r\n\r\n /**\r\n * Active filter icon path\r\n * @type {string}\r\n */\r\n this.activeIconPath = defaultsStr(f.image_active,\r\n tf.themesPath + 'icn_filterActive.gif');\r\n\r\n /**\r\n * HTML for the filter icon\r\n * @type {string}\r\n */\r\n this.iconHtml = defaultsStr(f.image_html,\r\n '\"Column');\r\n\r\n /**\r\n * Css class assigned to the popup container element\r\n * @type {String}\r\n */\r\n this.placeholderCssClass = defaultsStr(f.placeholder_css_class,\r\n 'popUpPlaceholder');\r\n\r\n /**\r\n * Css class assigned to filter container element\r\n * @type {String}\r\n */\r\n this.containerCssClass = defaultsStr(f.div_css_class, 'popUpFilter');\r\n\r\n /**\r\n * Ensure filter's container element width matches column width, enabled\r\n * by default\r\n * @type {Boolean}\r\n */\r\n this.adjustToContainer = defaultsBool(f.adjust_to_container, true);\r\n\r\n /**\r\n * Callback fired before a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onBeforeOpen = defaultsFn(f.on_before_popup_filter_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onAfterOpen = defaultsFn(f.on_after_popup_filter_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onBeforeClose = defaultsFn(f.on_before_popup_filter_close,\r\n EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onAfterClose = defaultsFn(f.on_after_popup_filter_close, EMPTY_FN);\r\n\r\n /**\r\n * Collection of filters spans\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltSpans = [];\r\n\r\n /**\r\n * Collection of filters icons\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIcons = [];\r\n\r\n /**\r\n * Collection of filters icons cached after pop-up filters are removed\r\n * @type {Array}\r\n * @private\r\n */\r\n this.filtersCache = null;\r\n\r\n /**\r\n * Collection of filters containers\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltElms = defaultsArr(this.filtersCache, []);\r\n\r\n /**\r\n * Prefix for pop-up filter container ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxDiv = 'popup_';\r\n\r\n /**\r\n * Column index of popup filter currently active\r\n * @type {Number}\r\n * @private\r\n */\r\n this.activeFilterIdx = -1;\r\n }\r\n\r\n /**\r\n * Click event handler for pop-up filter icon\r\n * @private\r\n */\r\n onClick(evt) {\r\n let elm = targetEvt(evt).parentNode;\r\n let colIndex = parseInt(elm.getAttribute('ci'), 10);\r\n\r\n this.closeAll(colIndex);\r\n this.toggle(colIndex);\r\n\r\n if (this.adjustToContainer) {\r\n let cont = this.fltElms[colIndex],\r\n header = this.tf.getHeaderElement(colIndex),\r\n headerWidth = header.clientWidth * 0.95;\r\n cont.style.width = parseInt(headerWidth, 10) + 'px';\r\n }\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup filter auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n if (this.activeFilterIdx === -1) {\r\n return;\r\n }\r\n let targetElm = targetEvt(evt);\r\n let activeFlt = this.fltElms[this.activeFilterIdx];\r\n let icon = this.fltIcons[this.activeFilterIdx];\r\n\r\n if (icon === targetElm) {\r\n return;\r\n }\r\n\r\n while (targetElm && targetElm !== activeFlt) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== activeFlt) {\r\n this.close(this.activeFilterIdx);\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n // Enable external filters\r\n tf.externalFltIds = [''];\r\n\r\n // Override filters row index supplied by configuration\r\n tf.filtersRowIndex = 0;\r\n\r\n // Override headers row index if no grouped headers\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.headersRow <= 1 && isNaN(tf.config().headers_row_index)) {\r\n tf.headersRow = 0;\r\n }\r\n\r\n // Adjust headers row index for grid-layout mode\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.gridLayout) {\r\n tf.headersRow--;\r\n this.buildIcons();\r\n }\r\n\r\n // subscribe to events\r\n this.emitter.on(['before-filtering'], () => this.setIconsState());\r\n this.emitter.on(['after-filtering'], () => this.closeAll());\r\n this.emitter.on(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.on(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.on(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset previously destroyed feature\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n this.buildIcons();\r\n this.buildAll();\r\n }\r\n\r\n /**\r\n * Build all filters icons\r\n */\r\n buildIcons() {\r\n let tf = this.tf;\r\n\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n tf.headersRow++;\r\n\r\n tf.eachCol(\r\n (i) => {\r\n let icon = createElm('span', ['ci', i]);\r\n icon.innerHTML = this.iconHtml;\r\n let header = tf.getHeaderElement(i);\r\n header.appendChild(icon);\r\n addEvt(icon, 'click', (evt) => this.onClick(evt));\r\n this.fltSpans[i] = icon;\r\n this.fltIcons[i] = icon.firstChild;\r\n },\r\n // continue condition function\r\n (i) => tf.getFilterType(i) === NONE\r\n );\r\n }\r\n\r\n /**\r\n * Build all pop-up filters elements\r\n */\r\n buildAll() {\r\n for (let i = 0; i < this.filtersCache.length; i++) {\r\n this.build(i, this.filtersCache[i]);\r\n }\r\n }\r\n\r\n /**\r\n * Build a specified pop-up filter elements\r\n * @param {Number} colIndex Column index\r\n * @param {Object} div Optional container DOM element\r\n */\r\n build(colIndex, div) {\r\n let tf = this.tf;\r\n let contId = `${this.prfxDiv}${tf.id}_${colIndex}`;\r\n let placeholder = createElm('div', ['class', this.placeholderCssClass]);\r\n let cont = div ||\r\n createElm('div', ['id', contId], ['class', this.containerCssClass]);\r\n tf.externalFltIds[colIndex] = cont.id;\r\n placeholder.appendChild(cont);\r\n\r\n let header = tf.getHeaderElement(colIndex);\r\n header.insertBefore(placeholder, header.firstChild);\r\n addEvt(cont, 'click', (evt) => stopEvt(evt));\r\n this.fltElms[colIndex] = cont;\r\n }\r\n\r\n /**\r\n * Toggle visibility of specified filter\r\n * @param {Number} colIndex Column index\r\n */\r\n toggle(colIndex) {\r\n if (!this.isOpen(colIndex)) {\r\n this.open(colIndex);\r\n } else {\r\n this.close(colIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Open popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n open(colIndex) {\r\n let tf = this.tf,\r\n container = this.fltElms[colIndex];\r\n\r\n this.onBeforeOpen(this, container, colIndex);\r\n\r\n container.style.display = 'block';\r\n this.activeFilterIdx = colIndex;\r\n addEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n if (tf.getFilterType(colIndex) === INPUT) {\r\n let flt = tf.getFilterElement(colIndex);\r\n if (flt) {\r\n flt.focus();\r\n }\r\n }\r\n\r\n this.onAfterOpen(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Close popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n close(colIndex) {\r\n let container = this.fltElms[colIndex];\r\n\r\n this.onBeforeClose(this, container, colIndex);\r\n\r\n container.style.display = NONE;\r\n if (this.activeFilterIdx === colIndex) {\r\n this.activeFilterIdx = -1;\r\n }\r\n removeEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n this.onAfterClose(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Check if popup filter for specified column is open\r\n * @param {Number} colIndex Column index\r\n * @returns {Boolean}\r\n */\r\n isOpen(colIndex) {\r\n return this.fltElms[colIndex].style.display === 'block';\r\n }\r\n\r\n /**\r\n * Close all filters excepted for the specified one if any\r\n * @param {Number} exceptIdx Column index of the filter to not close\r\n */\r\n closeAll(exceptIdx) {\r\n // Do not close filters only if argument is undefined and close on\r\n // filtering option is disabled\r\n if (isUndef(exceptIdx) && !this.closeOnFiltering) {\r\n return;\r\n }\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n if (i === exceptIdx) {\r\n continue;\r\n }\r\n let fltType = this.tf.getFilterType(i);\r\n let isMultipleFilter =\r\n (fltType === CHECKLIST || fltType === MULTIPLE);\r\n\r\n // Always hide all single selection filter types but hide multiple\r\n // selection filter types only if index set\r\n if (!isMultipleFilter || !isUndef(exceptIdx)) {\r\n this.close(i);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Build all the icons representing the pop-up filters\r\n */\r\n setIconsState() {\r\n for (let i = 0; i < this.fltIcons.length; i++) {\r\n this.changeState(i, false);\r\n }\r\n }\r\n\r\n /**\r\n * Apply specified icon state\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} active Apply active state\r\n */\r\n changeState(colIndex, active) {\r\n let icon = this.fltIcons[colIndex];\r\n if (icon) {\r\n icon.src = active ? this.activeIconPath : this.iconPath;\r\n }\r\n }\r\n\r\n /**\r\n * Remove pop-up filters\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.filtersCache = [];\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n let container = this.fltElms[i],\r\n placeholder = container.parentNode,\r\n icon = this.fltSpans[i],\r\n iconImg = this.fltIcons[i];\r\n if (container) {\r\n removeElm(container);\r\n this.filtersCache[i] = container;\r\n }\r\n container = null;\r\n if (placeholder) {\r\n removeElm(placeholder);\r\n }\r\n placeholder = null;\r\n if (icon) {\r\n removeElm(icon);\r\n }\r\n icon = null;\r\n if (iconImg) {\r\n removeElm(iconImg);\r\n }\r\n iconImg = null;\r\n }\r\n this.fltElms = [];\r\n this.fltSpans = [];\r\n this.fltIcons = [];\r\n\r\n // TODO: expose an API to handle external filter IDs\r\n this.tf.externalFltIds = [];\r\n\r\n // unsubscribe to events\r\n this.emitter.off(['before-filtering'], () => this.setIconsState());\r\n this.emitter.off(['after-filtering'], () => this.closeAll());\r\n this.emitter.off(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.off(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.off(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\r\n// TODO: remove as soon as feature name is fixed\r\nPopupFilter.meta = {altName: 'popupFilters'};\r\n","import {createText, createElm, getText} from '../dom';\r\nimport {isNull} 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 (isNull(term) ||\r\n 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\r\n this.unhighlight(null, this.highlightCssClass);\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\r\n// TODO: remove as soon as feature name is fixed\r\nHighlightKeyword.meta = {\r\n name: 'highlightKeyword',\r\n altName: 'highlightKeywords'\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 BEFORE_ACTION_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\nconst AFTER_ACTION_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 * 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(BEFORE_ACTION_EVENTS, () => this.show(''));\r\n emitter.on(AFTER_ACTION_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 function 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.bind(this), 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(BEFORE_ACTION_EVENTS, () => this.show(''));\r\n emitter.off(AFTER_ACTION_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 {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';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {addEvt, targetEvt, removeEvt} from '../event';\r\nimport {NONE} from '../const';\r\nimport {root} from '../root';\r\nimport {isEmpty, isNull} from '../types';\r\nimport {defaultsStr} from '../settings';\r\nimport {RIGHT} from './toolbar';\r\n\r\nconst WIKI_URL = 'https://github.com/koalyptus/TableFilter/wiki/' +\r\n '4.-Filter-operators';\r\nconst WEBSITE_URL = 'https://www.tablefilter.com/';\r\n\r\n/**\r\n * Help UI component\r\n */\r\nexport class Help extends Feature {\r\n\r\n /**\r\n * Creates an instance of Help\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, Help);\r\n\r\n let f = this.config.help_instructions || {};\r\n\r\n /**\r\n * ID of main custom container element\r\n * @type {String}\r\n */\r\n this.tgtId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * ID of custom container element for instructions\r\n * @type {String}\r\n */\r\n this.contTgtId = defaultsStr(f.container_target_id, null);\r\n\r\n /**\r\n * Instructions text (accepts HTML)\r\n * @type {String}\r\n */\r\n this.instrText = !isEmpty(f.text) ? f.text :\r\n 'Use the filters above each column to filter and limit table ' +\r\n 'data. Advanced searches can be performed by using the following ' +\r\n 'operators:
<, <=, >, ' +\r\n '>=, =, *, !, {, }, ' +\r\n '||,&&, [empty], [nonempty], ' +\r\n 'rgx:
' +\r\n 'Learn more
';\r\n\r\n /**\r\n * Instructions HTML\r\n * @type {String}\r\n */\r\n this.instrHtml = defaultsStr(f.html, null);\r\n\r\n /**\r\n * Help button text ('?')\r\n * @type {String}\r\n */\r\n this.btnText = defaultsStr(f.btn_text, '?');\r\n\r\n /**\r\n * Custom help button HTML\r\n * @type {String}\r\n */\r\n this.btnHtml = defaultsStr(f.btn_html, null);\r\n\r\n /**\r\n * Css class for help button\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class, 'helpBtn');\r\n\r\n /**\r\n * Css class for help container element\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.container_css_class, 'helpCont');\r\n\r\n /**\r\n * Button DOM element\r\n * @type {DOMElement}\r\n */\r\n this.btn = null;\r\n\r\n /**\r\n * Help container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Bound mouseup wrapper\r\n * @private\r\n */\r\n this.boundMouseup = null;\r\n\r\n /**\r\n * Default HTML appended to instructions text\r\n * @type {String}\r\n */\r\n this.defaultHtml = '

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

' + '' + WEBSITE_URL + '' +\r\n '
©2015-' + tf.year + ' Max Guglielmi' +\r\n '
' +\r\n 'Close
';\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 this.emitter.on(['init-help'], () => this.init());\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n let targetElm = targetEvt(evt);\r\n\r\n while (targetElm && targetElm !== this.cont && targetElm !== this.btn) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== this.cont && targetElm !== this.btn) {\r\n this.toggle();\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Initialise Help 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.tgtId));\r\n\r\n let tf = this.tf;\r\n\r\n let btn = createElm('span');\r\n let cont = createElm('div');\r\n\r\n this.boundMouseup = this.onMouseup.bind(this);\r\n\r\n //help button is 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(btn);\r\n\r\n let divContainer = !this.contTgtId ? btn : elm(this.contTgtId);\r\n\r\n if (!this.btnHtml) {\r\n divContainer.appendChild(cont);\r\n let helplink = createElm('a', ['href', 'javascript:void(0);']);\r\n helplink.className = this.btnCssClass;\r\n helplink.appendChild(createText(this.btnText));\r\n btn.appendChild(helplink);\r\n addEvt(helplink, 'click', () => this.toggle());\r\n } else {\r\n btn.innerHTML = this.btnHtml;\r\n let helpEl = btn.firstChild;\r\n addEvt(helpEl, 'click', () => this.toggle());\r\n divContainer.appendChild(cont);\r\n }\r\n\r\n if (!this.instrHtml) {\r\n cont.innerHTML = this.instrText;\r\n cont.className = this.contCssClass;\r\n } else {\r\n if (this.contTgtId) {\r\n divContainer.appendChild(cont);\r\n }\r\n cont.innerHTML = this.instrHtml;\r\n if (!this.contTgtId) {\r\n cont.className = this.contCssClass;\r\n }\r\n }\r\n cont.innerHTML += this.defaultHtml;\r\n addEvt(cont, 'click', () => this.toggle());\r\n\r\n this.cont = cont;\r\n this.btn = btn;\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 * Toggle help pop-up\r\n */\r\n toggle() {\r\n // check only if explicitily disabled as in this case undefined\r\n // signifies the help feature is enabled by default\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n // ensure mouseup event handler is removed\r\n removeEvt(root, 'mouseup', this.boundMouseup);\r\n\r\n let divDisplay = this.cont.style.display;\r\n if (divDisplay === '' || divDisplay === NONE) {\r\n this.cont.style.display = 'inline';\r\n addEvt(root, 'mouseup', this.boundMouseup);\r\n } else {\r\n this.cont.style.display = NONE;\r\n }\r\n }\r\n\r\n /**\r\n * Remove help UI\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.btn);\r\n this.btn = null;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n this.boundMouseup = null;\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\r\n// TODO: remove as soon as feature name is fixed\r\nHelp.meta = {alwaysInstantiate: true};\r\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","'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. Decrement\n // starting point by 1 to prevent overshooting the date due to inconsistencies\n // in ambiguous units numerically. For example, calculating the number of days\n // from the beginning of the year to August 5th at 11:59:59 by doing a simple\n // d2 - d1 will produce different results depending on whether or not a\n // timezone shift was encountered due to DST, however that should not have an\n // effect on our calculation here, so subtract by 1 to ensure that the\n // starting point has not already overshot our target date.\n if (unit.ambiguous) {\n d1 = cloneDate(d1);\n if (num) {\n num -= 1;\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 ABBREVIATED_YEAR_REG = require('../var/ABBREVIATED_YEAR_REG'),\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 isDefined = require('../../common/internal/isDefined'),\n resetTime = require('./resetTime'),\n getNewDate = require('./getNewDate'),\n updateDate = require('./updateDate'),\n setWeekday = require('./setWeekday'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n advanceDate = require('./advanceDate'),\n isUndefined = require('../../common/internal/isUndefined'),\n classChecks = require('../../common/var/classChecks'),\n dateIsValid = require('./dateIsValid'),\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 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 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 // Locals\n var date, set, loc, afterCallbacks, relative, weekdayDir;\n\n // Options\n var optPrefer, optLocale, optFromUTC, optSetUTC, optParams, optClone;\n\n afterCallbacks = [];\n\n setupOptions(opt);\n\n function setupOptions(opt) {\n opt = isString(opt) ? { locale: opt } : opt || {};\n optPrefer = +!!getOwn(opt, 'future') - +!!getOwn(opt, 'past');\n optLocale = getOwn(opt, 'locale');\n optFromUTC = getOwn(opt, 'fromUTC');\n optSetUTC = getOwn(opt, 'setUTC');\n optParams = getOwn(opt, 'params');\n optClone = getOwn(opt, 'clone');\n }\n\n function parseFormatValues(match, dif) {\n var set = optParams || {};\n forEach(dif.to, function(param, i) {\n var str = match[i + 1], val;\n if (!str) return;\n\n val = parseIrregular(str, param);\n\n if (isUndefined(val)) {\n val = loc.parseValue(str, param);\n }\n\n set[param] = val;\n });\n return set;\n }\n\n function parseIrregular(str, param) {\n if (param === 'utc') {\n return 1;\n } else if (param === 'year') {\n var match = str.match(ABBREVIATED_YEAR_REG);\n if (match) {\n return getYearFromAbbreviation(match[1], date, optPrefer);\n }\n }\n }\n\n // Force the UTC flags to be true if the source date\n // date is UTC, as they will be overwritten later.\n function cloneDateByFlag(d, clone) {\n if (_utc(d) && !isDefined(optFromUTC)) {\n optFromUTC = true;\n }\n if (_utc(d) && !isDefined(optSetUTC)) {\n optSetUTC = 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(optLocale);\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 = parseFormatValues(match, dif);\n\n if (isDefined(set.timestamp)) {\n date.setTime(set.timestamp);\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);\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 break;\n }\n }\n\n if (!set) {\n // TODO: remove in next major version\n // Fall back to native parsing\n date = new Date(str);\n if (optFromUTC && dateIsValid(date)) {\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 updateDate(date, set, true, 0, optPrefer, weekdayDir, contextDate);\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) {\n // Adjust for timezone offset\n _utc(date, true);\n\n // Sign is parsed as part of the hour, so flip\n // the minutes if it's negative.\n\n if (tzHour < 0) {\n tzMinute *= -1;\n }\n\n var offset = tzHour * 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;\n\n if (isDefined(set.num)) {\n num = set.num;\n } else if (isDefined(set.edge) && isUndefined(set.shift)) {\n num = 0;\n } else {\n num = 1;\n }\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, optLocale);\n } else if (edge > 0) {\n if (edge === 1) {\n stopIndex = DAY_INDEX;\n moveToBeginningOfUnit(date, DAY_INDEX);\n }\n moveToEndOfUnit(date, edgeIndex, optLocale, 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, 0, false, weekdayDir);\n if (optParams) {\n simpleMerge(optParams, params);\n }\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, optFromUTC);\n\n if (isString(d)) {\n date = parseStringDate(d);\n } else if (isDate(d)) {\n date = cloneDateByFlag(d, optClone || 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, !!optSetUTC);\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 EnglishLocaleBaseDefinition = require('../var/EnglishLocaleBaseDefinition'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n simpleClone = require('../../common/internal/simpleClone');\n\nfunction getEnglishVariant(v) {\n return simpleMerge(simpleClone(EnglishLocaleBaseDefinition), v);\n}\n\nmodule.exports = getEnglishVariant;","exports.remove = removeDiacritics;\n\nvar replacementList = [\n {\n base: ' ',\n chars: \"\\u00A0\",\n }, {\n base: '0',\n chars: \"\\u07C0\",\n }, {\n base: 'A',\n chars: \"\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\",\n }, {\n base: 'AA',\n chars: \"\\uA732\",\n }, {\n base: 'AE',\n chars: \"\\u00C6\\u01FC\\u01E2\",\n }, {\n base: 'AO',\n chars: \"\\uA734\",\n }, {\n base: 'AU',\n chars: \"\\uA736\",\n }, {\n base: 'AV',\n chars: \"\\uA738\\uA73A\",\n }, {\n base: 'AY',\n chars: \"\\uA73C\",\n }, {\n base: 'B',\n chars: \"\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0181\",\n }, {\n base: 'C',\n chars: \"\\u24b8\\uff23\\uA73E\\u1E08\\u0106\\u0043\\u0108\\u010A\\u010C\\u00C7\\u0187\\u023B\",\n }, {\n base: 'D',\n chars: \"\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018A\\u0189\\u1D05\\uA779\",\n }, {\n base: 'Dh',\n chars: \"\\u00D0\",\n }, {\n base: 'DZ',\n chars: \"\\u01F1\\u01C4\",\n }, {\n base: 'Dz',\n chars: \"\\u01F2\\u01C5\",\n }, {\n base: 'E',\n chars: \"\\u025B\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\\u1D07\",\n }, {\n base: 'F',\n chars: \"\\uA77C\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\",\n }, {\n base: 'G',\n chars: \"\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\\u0262\",\n }, {\n base: 'H',\n chars: \"\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\",\n }, {\n base: 'I',\n chars: \"\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\",\n }, {\n base: 'J',\n chars: \"\\u24BF\\uFF2A\\u0134\\u0248\\u0237\",\n }, {\n base: 'K',\n chars: \"\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\",\n }, {\n base: 'L',\n chars: \"\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\",\n }, {\n base: 'LJ',\n chars: \"\\u01C7\",\n }, {\n base: 'Lj',\n chars: \"\\u01C8\",\n }, {\n base: 'M',\n chars: \"\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\\u03FB\",\n }, {\n base: 'N',\n chars: \"\\uA7A4\\u0220\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u019D\\uA790\\u1D0E\",\n }, {\n base: 'NJ',\n chars: \"\\u01CA\",\n }, {\n base: 'Nj',\n chars: \"\\u01CB\",\n }, {\n base: 'O',\n chars: \"\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\",\n }, {\n base: 'OE',\n chars: \"\\u0152\",\n }, {\n base: 'OI',\n chars: \"\\u01A2\",\n }, {\n base: 'OO',\n chars: \"\\uA74E\",\n }, {\n base: 'OU',\n chars: \"\\u0222\",\n }, {\n base: 'P',\n chars: \"\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\",\n }, {\n base: 'Q',\n chars: \"\\u24C6\\uFF31\\uA756\\uA758\\u024A\",\n }, {\n base: 'R',\n chars: \"\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\",\n }, {\n base: 'S',\n chars: \"\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\",\n }, {\n base: 'T',\n chars: \"\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\",\n }, {\n base: 'Th',\n chars: \"\\u00DE\",\n }, {\n base: 'TZ',\n chars: \"\\uA728\",\n }, {\n base: 'U',\n chars: \"\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\",\n }, {\n base: 'V',\n chars: \"\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\",\n }, {\n base: 'VY',\n chars: \"\\uA760\",\n }, {\n base: 'W',\n chars: \"\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\",\n }, {\n base: 'X',\n chars: \"\\u24CD\\uFF38\\u1E8A\\u1E8C\",\n }, {\n base: 'Y',\n chars: \"\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\",\n }, {\n base: 'Z',\n chars: \"\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\",\n }, {\n base: 'a',\n chars: \"\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\\u0251\",\n }, {\n base: 'aa',\n chars: \"\\uA733\",\n }, {\n base: 'ae',\n chars: \"\\u00E6\\u01FD\\u01E3\",\n }, {\n base: 'ao',\n chars: \"\\uA735\",\n }, {\n base: 'au',\n chars: \"\\uA737\",\n }, {\n base: 'av',\n chars: \"\\uA739\\uA73B\",\n }, {\n base: 'ay',\n chars: \"\\uA73D\",\n }, {\n base: 'b',\n chars: \"\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\\u0182\",\n }, {\n base: 'c',\n chars: \"\\uFF43\\u24D2\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184\",\n }, {\n base: 'd',\n chars: \"\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\u018B\\u13E7\\u0501\\uA7AA\",\n }, {\n base: 'dh',\n chars: \"\\u00F0\",\n }, {\n base: 'dz',\n chars: \"\\u01F3\\u01C6\",\n }, {\n base: 'e',\n chars: \"\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u01DD\",\n }, {\n base: 'f',\n chars: \"\\u24D5\\uFF46\\u1E1F\\u0192\",\n }, {\n base: 'ff',\n chars: \"\\uFB00\",\n }, {\n base: 'fi',\n chars: \"\\uFB01\",\n }, {\n base: 'fl',\n chars: \"\\uFB02\",\n }, {\n base: 'ffi',\n chars: \"\\uFB03\",\n }, {\n base: 'ffl',\n chars: \"\\uFB04\",\n }, {\n base: 'g',\n chars: \"\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\uA77F\\u1D79\",\n }, {\n base: 'h',\n chars: \"\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\",\n }, {\n base: 'hv',\n chars: \"\\u0195\",\n }, {\n base: 'i',\n chars: \"\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\",\n }, {\n base: 'j',\n chars: \"\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\",\n }, {\n base: 'k',\n chars: \"\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\",\n }, {\n base: 'l',\n chars: \"\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\\u026D\",\n }, {\n base: 'lj',\n chars: \"\\u01C9\",\n }, {\n base: 'm',\n chars: \"\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\",\n }, {\n base: 'n',\n chars: \"\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u043B\\u0509\",\n }, {\n base: 'nj',\n chars: \"\\u01CC\",\n }, {\n base: 'o',\n chars: \"\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\uA74B\\uA74D\\u0275\\u0254\\u1D11\",\n }, {\n base: 'oe',\n chars: \"\\u0153\",\n }, {\n base: 'oi',\n chars: \"\\u01A3\",\n }, {\n base: 'oo',\n chars: \"\\uA74F\",\n }, {\n base: 'ou',\n chars: \"\\u0223\",\n }, {\n base: 'p',\n chars: \"\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\\u03C1\",\n }, {\n base: 'q',\n chars: \"\\u24E0\\uFF51\\u024B\\uA757\\uA759\",\n }, {\n base: 'r',\n chars: \"\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\",\n }, {\n base: 's',\n chars: \"\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u0282\",\n }, {\n base: 'ss',\n chars: \"\\xDF\",\n }, {\n base: 't',\n chars: \"\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\",\n }, {\n base: 'th',\n chars: \"\\u00FE\",\n }, {\n base: 'tz',\n chars: \"\\uA729\",\n }, {\n base: 'u',\n chars: \"\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\",\n }, {\n base: 'v',\n chars: \"\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\",\n }, {\n base: 'vy',\n chars: \"\\uA761\",\n }, {\n base: 'w',\n chars: \"\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\",\n }, {\n base: 'x',\n chars: \"\\u24E7\\uFF58\\u1E8B\\u1E8D\",\n }, {\n base: 'y',\n chars: \"\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\",\n }, {\n base: 'z',\n chars: \"\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\",\n }\n];\n\nvar diacriticsMap = {};\nfor (var i = 0; i < replacementList.length; i += 1) {\n var chars = replacementList[i].chars;\n for (var j = 0; j < chars.length; j += 1) {\n diacriticsMap[chars[j]] = replacementList[i].base;\n }\n}\n\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007e]/g, function(c) {\n return diacriticsMap[c] || c;\n });\n}\n\nexports.replacementList = replacementList;\nexports.diacriticsMap = diacriticsMap;\n","import 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 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 {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 this.emitter.on(['after-filtering'], () => this.linkFilters());\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 if (!flt) {\r\n return [];\r\n }\r\n\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 this.emitter.off(['after-filtering'], () => this.linkFilters());\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 this.emitter.on(['after-filtering'], () => this.linkFilters());\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.emitter.off(['after-filtering'], () => this.linkFilters());\r\n this.initialized = false;\r\n }\r\n}\r\n","/**\r\n * Event emitter class\r\n */\r\nexport class Emitter {\r\n /**\r\n * Creates an instance of Emitter.\r\n */\r\n constructor() {\r\n /**\r\n * Events object\r\n * @type {Object}\r\n */\r\n this.events = {};\r\n }\r\n\r\n /**\r\n * Subscribe to an event\r\n * @param {Array} evts Collection of event names\r\n * @param {Function} fn Function invoked when event is emitted\r\n */\r\n on(evts, fn) {\r\n evts.forEach((evt) => {\r\n this.events[evt] = this.events[evt] || [];\r\n this.events[evt].push(fn);\r\n });\r\n }\r\n\r\n /**\r\n * Unsubscribe to an event\r\n * @param {Array} evts Collection of event names\r\n * @param {Function} fn Function invoked when event is emitted\r\n */\r\n off(evts, fn) {\r\n evts.forEach((evt) => {\r\n if (evt in this.events) {\r\n this.events[evt].splice(this.events[evt].indexOf(fn), 1);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Emit an event\r\n * @param {String} evt Event name followed by any other argument passed to\r\n * the invoked function\r\n */\r\n emit(evt /*, args...*/) {\r\n if (evt in this.events) {\r\n for (let i = 0; i < this.events[evt].length; i++) {\r\n this.events[evt][i].apply(this, [].slice.call(arguments, 1));\r\n }\r\n }\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 collectUpdateDateArguments(args, allowDuration) {\n var arg1 = args[0], arg2 = args[1], params, reset;\n if (allowDuration && isString(arg1)) {\n params = getDateParamsFromString(arg1);\n reset = arg2;\n } else if (isNumber(arg1) && isNumber(arg2)) {\n params = collectDateParamsFromArguments(args);\n } else {\n params = isObjectType(arg1) ? simpleClone(arg1) : arg1;\n reset = arg2;\n }\n return [params, reset];\n}\n\nmodule.exports = collectUpdateDateArguments;","'use strict';\n\nvar updateDate = require('./updateDate'),\n collectUpdateDateArguments = require('./collectUpdateDateArguments');\n\nfunction advanceDateWithArgs(d, args, dir) {\n args = collectUpdateDateArguments(args, true);\n return updateDate(d, args[0], args[1], dir);\n}\n\nmodule.exports = advanceDateWithArgs;","'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 // istanbul ignore if\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|ayy',\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 getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar AmericanEnglishDefinition = getEnglishVariant({\n 'mdy': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'short': '{MM}/{dd}/{yyyy}',\n 'medium': '{Month} {d}, {yyyy}',\n 'long': '{Month} {d}, {yyyy} {time}',\n 'full': '{Weekday}, {Month} {d}, {yyyy} {time}',\n 'stamp': '{Dow} {Mon} {d} {yyyy} {time}',\n 'time': '{h}:{mm} {TT}'\n});\n\nmodule.exports = AmericanEnglishDefinition;","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","import {addEvt, cancelEvt, stopEvt, targetEvt, isKeyPressed} from './event';\r\nimport {\r\n addClass, createElm, elm, getText, getFirstTextNode, removeClass, tag\r\n} from './dom';\r\nimport {contains, matchCase, rgxEsc, trim, toCamelCase} from './string';\r\nimport {\r\n isArray, isEmpty, isFn, isNumber, isObj, isString, isUndef, EMPTY_FN,\r\n isBoolean\r\n} from './types';\r\nimport {parse as parseNb} from './number';\r\nimport {\r\n defaultsBool, defaultsStr, defaultsFn,\r\n defaultsNb, defaultsArr\r\n} from './settings';\r\n\r\nimport {root} from './root';\r\nimport {Emitter} from './emitter';\r\nimport {Dropdown} from './modules/dropdown';\r\nimport {CheckList} from './modules/checkList';\r\nimport {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\nimport {\r\n INPUT, SELECT, MULTIPLE, CHECKLIST, NONE,\r\n ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY,\r\n CELL_TAG, AUTO_FILTER_DELAY, NUMBER, DATE, FORMATTED_NUMBER\r\n} from './const';\r\n\r\nlet doc = root.document;\r\n\r\nconst FEATURES = [\r\n DateType, Help, State, MarkActiveColumns, GridLayout, Loader,\r\n HighlightKeyword, PopupFilter, RowsCounter, StatusBar, ClearButton,\r\n AlternateRows, NoResults, Paging, Toolbar\r\n];\r\n\r\n/**\r\n * Makes HTML tables filterable and a bit more :)\r\n *\r\n * @export\r\n * @class TableFilter\r\n */\r\nexport class TableFilter {\r\n\r\n /**\r\n * Creates an instance of TableFilter\r\n * requires `table` or `id` arguments, `row` and `configuration` optional\r\n * @param {HTMLTableElement} table Table DOM element\r\n * @param {String} id Table id\r\n * @param {Number} row index indicating the 1st row\r\n * @param {Object} configuration object\r\n */\r\n constructor(...args) {\r\n /**\r\n * ID of current instance\r\n * @type {String}\r\n * @private\r\n */\r\n this.id = null;\r\n\r\n /**\r\n * Current version\r\n * @type {String}\r\n */\r\n this.version = '0.6.78';\r\n\r\n /**\r\n * Current year\r\n * @type {Number}\r\n * @private\r\n */\r\n this.year = new Date().getFullYear();\r\n\r\n /**\r\n * HTML Table DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.tbl = null;\r\n\r\n /**\r\n * Calculated row's index from which starts filtering once filters\r\n * are generated\r\n * @type {Number}\r\n */\r\n this.refRow = null;\r\n\r\n /**\r\n * Index of the headers row\r\n * @type {Number}\r\n * @private\r\n */\r\n this.headersRow = null;\r\n\r\n /**\r\n * Configuration object\r\n * @type {Object}\r\n * @private\r\n */\r\n this.cfg = {};\r\n\r\n /**\r\n * Number of rows that can be filtered\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbFilterableRows = 0;\r\n\r\n /**\r\n * Number of cells in the reference row\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbCells = null;\r\n\r\n /**\r\n * Has a configuration object\r\n * @type {Object}\r\n * @private\r\n */\r\n this.hasConfig = false;\r\n\r\n /** @private */\r\n this.initialized = false;\r\n\r\n let startRow;\r\n\r\n // TODO: use for-of\r\n args.forEach((arg) => {\r\n if (typeof arg === 'object' && arg.nodeName === 'TABLE') {\r\n this.tbl = arg;\r\n this.id = arg.id || `tf_${new Date().getTime()}_`;\r\n this.tbl.id = this.id;\r\n } else if (isString(arg)) {\r\n this.id = arg;\r\n this.tbl = elm(arg);\r\n } else if (isNumber(arg)) {\r\n startRow = arg;\r\n } else if (isObj(arg)) {\r\n this.cfg = arg;\r\n this.hasConfig = true;\r\n }\r\n });\r\n\r\n if (!this.tbl || this.tbl.nodeName !== 'TABLE') {\r\n throw new Error(`Could not instantiate TableFilter: HTML table\r\n DOM element not found.`);\r\n }\r\n\r\n if (this.getRowsNb(true) === 0) {\r\n throw new Error(`Could not instantiate TableFilter: HTML table\r\n requires at least 1 row.`);\r\n }\r\n\r\n // configuration object\r\n let f = this.cfg;\r\n\r\n /**\r\n * Event emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = new Emitter();\r\n\r\n // start row\r\n this.refRow = isUndef(startRow) ? 2 : (startRow + 1);\r\n\r\n /**\r\n * Collection of filter type by column\r\n * @type {Array}\r\n * @private\r\n */\r\n this.filterTypes = [].map.call(\r\n (this.dom().rows[this.refRow] || this.dom().rows[0]).cells,\r\n (cell, idx) => {\r\n let colType = this.cfg[`col_${idx}`];\r\n return !colType ? INPUT : colType.toLowerCase();\r\n });\r\n\r\n /**\r\n * Base path for static assets\r\n * @type {String}\r\n */\r\n this.basePath = defaultsStr(f.base_path, 'tablefilter/');\r\n\r\n /*** filters' grid properties ***/\r\n\r\n /**\r\n * Enable/disable filters\r\n * @type {Boolean}\r\n */\r\n this.fltGrid = defaultsBool(f.grid, true);\r\n\r\n /**\r\n * Enable/disable grid layout (fixed headers)\r\n * @type {Object|Boolean}\r\n */\r\n this.gridLayout = isObj(f.grid_layout) || Boolean(f.grid_layout);\r\n\r\n /**\r\n * Filters row index\r\n * @type {Number}\r\n */\r\n this.filtersRowIndex = defaultsNb(f.filters_row_index, 0);\r\n\r\n /**\r\n * Headers row index\r\n * @type {Number}\r\n */\r\n this.headersRow = defaultsNb(f.headers_row_index,\r\n (this.filtersRowIndex === 0 ? 1 : 0));\r\n\r\n /**\r\n * Define the type of cell containing a filter (td/th)\r\n * @type {String}\r\n */\r\n this.fltCellTag = defaultsStr(f.filters_cell_tag, CELL_TAG);\r\n\r\n /**\r\n * List of filters IDs\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIds = [];\r\n\r\n /**\r\n * List of valid rows indexes (rows visible upon filtering)\r\n * @type {Array}\r\n * @private\r\n */\r\n this.validRowsIndex = [];\r\n\r\n /*** filters' grid appearance ***/\r\n /**\r\n * Path for stylesheets\r\n * @type {String}\r\n */\r\n this.stylePath = this.getStylePath();\r\n\r\n /**\r\n * Main stylesheet path\r\n * @type {String}\r\n */\r\n this.stylesheet = this.getStylesheetPath();\r\n\r\n /**\r\n * Main stylesheet ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.stylesheetId = this.id + '_style';\r\n\r\n /**\r\n * Css class for the filters row\r\n * @type {String}\r\n */\r\n this.fltsRowCssClass = defaultsStr(f.flts_row_css_class, 'fltrow');\r\n\r\n /**\r\n * Enable/disable icons (paging, reset button)\r\n * @type {Boolean}\r\n */\r\n this.enableIcons = defaultsBool(f.enable_icons, true);\r\n\r\n /**\r\n * Enable/disable alternating rows\r\n * @type {Boolean}\r\n */\r\n this.alternateRows = Boolean(f.alternate_rows);\r\n\r\n /**\r\n * Columns widths array\r\n * @type {Array}\r\n */\r\n this.colWidths = defaultsArr(f.col_widths, []);\r\n\r\n /**\r\n * Default column width when column widths are defined\r\n */\r\n this.defaultColWidth = defaultsNb(f.default_col_width, 100);\r\n\r\n /**\r\n * Css class for a filter element\r\n * @type {String}\r\n */\r\n this.fltCssClass = defaultsStr(f.flt_css_class, 'flt');\r\n\r\n /**\r\n * Css class for multiple select filters\r\n * @type {String}\r\n */\r\n this.fltMultiCssClass = defaultsStr(f.flt_multi_css_class, 'flt_multi');\r\n\r\n /**\r\n * Css class for small filter (when submit button is active)\r\n * @type {String}\r\n */\r\n this.fltSmallCssClass = defaultsStr(f.flt_small_css_class, 'flt_s');\r\n\r\n /**\r\n * Css class for single filter type\r\n * @type {String}\r\n */\r\n this.singleFltCssClass = defaultsStr((f.single_filter || {}).css_class,\r\n 'single_flt');\r\n\r\n /*** filters' grid behaviours ***/\r\n\r\n /**\r\n * Enable/disable enter key for input type filters\r\n * @type {Boolean}\r\n */\r\n this.enterKey = defaultsBool(f.enter_key, true);\r\n\r\n /**\r\n * Callback fired before filtering process starts\r\n * @type {Function}\r\n */\r\n this.onBeforeFilter = defaultsFn(f.on_before_filter, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after filtering process is completed\r\n * @type {Function}\r\n */\r\n this.onAfterFilter = defaultsFn(f.on_after_filter, EMPTY_FN);\r\n\r\n /**\r\n * Enable/disable case sensitivity filtering\r\n * @type {Boolean}\r\n */\r\n this.caseSensitive = Boolean(f.case_sensitive);\r\n\r\n /**\r\n * Indicate whether exact match filtering is enabled on a per column\r\n * basis\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasExactMatchByCol = isArray(f.columns_exact_match);\r\n\r\n /**\r\n * Exact match filtering per column array\r\n * @type {Array}\r\n */\r\n this.exactMatchByCol = this.hasExactMatchByCol ?\r\n f.columns_exact_match : [];\r\n\r\n /**\r\n * Globally enable/disable exact match filtering\r\n * @type {Boolean}\r\n */\r\n this.exactMatch = Boolean(f.exact_match);\r\n\r\n /**\r\n * Ignore diacritics globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\r\n this.ignoreDiacritics = f.ignore_diacritics;\r\n\r\n /**\r\n * Enable/disable linked filters filtering mode\r\n * @type {Boolean}\r\n */\r\n this.linkedFilters = Boolean(f.linked_filters);\r\n\r\n /**\r\n * Enable/disable readonly state for excluded options when\r\n * linked filters filtering mode is on\r\n * @type {Boolean}\r\n */\r\n this.disableExcludedOptions = Boolean(f.disable_excluded_options);\r\n\r\n /**\r\n * Active filter ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.activeFilterId = null;\r\n\r\n /**\r\n * Determine if there are excluded rows from filtering\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasExcludedRows = Boolean(isArray(f.exclude_rows) &&\r\n f.exclude_rows.length > 0);\r\n\r\n /**\r\n * List of row indexes to be excluded from filtering\r\n * @type {Array}\r\n */\r\n this.excludeRows = defaultsArr(f.exclude_rows, []);\r\n\r\n /**\r\n * List of containers IDs where external filters will be generated\r\n * @type {Array}\r\n */\r\n this.externalFltIds = defaultsArr(f.external_flt_ids, []);\r\n\r\n /**\r\n * Callback fired after filters are generated\r\n * @type {Function}\r\n */\r\n this.onFiltersLoaded = defaultsFn(f.on_filters_loaded, EMPTY_FN);\r\n\r\n /**\r\n * Enable/disable single filter mode\r\n * @type {Boolean|Object}\r\n */\r\n this.singleFlt = isObj(f.single_filter) || Boolean(f.single_filter);\r\n\r\n /**\r\n * Specify columns to be excluded from single filter search, by default\r\n * searching in all columns:\r\n * single_filter: {\r\n * exclude_cols: [2, 7]\r\n * }\r\n */\r\n this.singleFltExcludeCols = isObj(f.single_filter) &&\r\n isArray(f.single_filter.exclude_cols) ?\r\n f.single_filter.exclude_cols : [];\r\n\r\n /**\r\n * Callback fired after a row is validated during filtering\r\n * @type {Function}\r\n */\r\n this.onRowValidated = defaultsFn(f.on_row_validated, EMPTY_FN);\r\n\r\n /**\r\n * Specify which column implements a custom cell parser to retrieve the\r\n * cell value:\r\n * cell_parser: {\r\n * cols: [0, 2],\r\n * parse: function(tf, cell, colIndex) {\r\n * // custom cell parser logic here\r\n * return cellValue;\r\n * }\r\n * }\r\n * @type {Object}\r\n */\r\n this.cellParser = isObj(f.cell_parser) && isFn(f.cell_parser.parse) &&\r\n isArray(f.cell_parser.cols) ?\r\n f.cell_parser : { cols: [], parse: EMPTY_FN };\r\n\r\n /**\r\n * Global watermark text for input filter type or watermark for each\r\n * filter if an array is supplied\r\n * @type {String|Array}\r\n */\r\n this.watermark = f.watermark || '';\r\n\r\n /**\r\n * Indicate whether watermark is on a per column basis\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isWatermarkArray = isArray(this.watermark);\r\n\r\n /**\r\n * Indicate whether help UI component is disabled\r\n * @type {Boolean}\r\n */\r\n this.help = isUndef(f.help_instructions) ? undefined :\r\n (isObj(f.help_instructions) || Boolean(f.help_instructions));\r\n\r\n /**\r\n * Indicate whether pop-up filters UI is enabled\r\n * @type {Boolean|Object}\r\n */\r\n this.popupFilters = isObj(f.popup_filters) || Boolean(f.popup_filters);\r\n\r\n /**\r\n * Indicate whether filtered (active) columns indicator is enabled\r\n * @type {Boolean}\r\n */\r\n this.markActiveColumns = isObj(f.mark_active_columns) ||\r\n Boolean(f.mark_active_columns);\r\n\r\n /*** select filter's customisation and behaviours ***/\r\n /**\r\n * Text for clear option in drop-down filter types (1st option)\r\n * @type {String|Array}\r\n */\r\n this.clearFilterText = defaultsStr(f.clear_filter_text, 'Clear');\r\n\r\n /**\r\n * Indicate whether empty option is enabled in drop-down filter types\r\n * @type {Boolean}\r\n */\r\n this.enableEmptyOption = Boolean(f.enable_empty_option);\r\n\r\n /**\r\n * Text for empty option in drop-down filter types\r\n * @type {String}\r\n */\r\n this.emptyText = defaultsStr(f.empty_text, '(Empty)');\r\n\r\n /**\r\n * Indicate whether non-empty option is enabled in drop-down filter\r\n * types\r\n * @type {Boolean}\r\n */\r\n this.enableNonEmptyOption = Boolean(f.enable_non_empty_option);\r\n\r\n /**\r\n * Text for non-empty option in drop-down filter types\r\n * @type {String}\r\n */\r\n this.nonEmptyText = defaultsStr(f.non_empty_text, '(Non empty)');\r\n\r\n /**\r\n * Indicate whether drop-down filter types filter the table by default\r\n * on change event\r\n * @type {Boolean}\r\n */\r\n this.onSlcChange = defaultsBool(f.on_change, true);\r\n\r\n /**\r\n * Make drop-down filter types options sorted in alpha-numeric manner\r\n * by default globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\r\n this.sortSlc = isUndef(f.sort_select) ? true :\r\n isArray(f.sort_select) ? f.sort_select : Boolean(f.sort_select);\r\n\r\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * ascending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isSortNumAsc = Boolean(f.sort_num_asc);\r\n\r\n /**\r\n * List of columns implementing options sorting in a ascending numeric\r\n * manner\r\n * @type {Array}\r\n */\r\n this.sortNumAsc = this.isSortNumAsc ? f.sort_num_asc : [];\r\n\r\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * descending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isSortNumDesc = Boolean(f.sort_num_desc);\r\n\r\n /**\r\n * List of columns implementing options sorting in a descending numeric\r\n * manner\r\n * @type {Array}\r\n */\r\n this.sortNumDesc = this.isSortNumDesc ? f.sort_num_desc : [];\r\n\r\n /**\r\n * Indicate whether drop-down filter types are populated on demand at\r\n * first usage\r\n * @type {Boolean}\r\n */\r\n this.loadFltOnDemand = Boolean(f.load_filters_on_demand);\r\n\r\n /**\r\n * Indicate whether custom drop-down filter options are implemented\r\n * @type {Boolean}\r\n */\r\n this.hasCustomOptions = isObj(f.custom_options);\r\n\r\n /**\r\n * Custom options definition of a per column basis, ie:\r\n *\tcustom_options: {\r\n * cols:[0, 1],\r\n * texts: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * values: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * sorts: [false, true]\r\n * }\r\n *\r\n * @type {Object}\r\n */\r\n this.customOptions = f.custom_options;\r\n\r\n /*** Filter operators ***/\r\n /**\r\n * Regular expression operator for input filter. Defaults to 'rgx:'\r\n * @type {String}\r\n */\r\n this.rgxOperator = defaultsStr(f.regexp_operator, 'rgx:');\r\n\r\n /**\r\n * Empty cells operator for input filter. Defaults to '[empty]'\r\n * @type {String}\r\n */\r\n this.emOperator = defaultsStr(f.empty_operator, '[empty]');\r\n\r\n /**\r\n * Non-empty cells operator for input filter. Defaults to '[nonempty]'\r\n * @type {String}\r\n */\r\n this.nmOperator = defaultsStr(f.nonempty_operator, '[nonempty]');\r\n\r\n /**\r\n * Logical OR operator for input filter. Defaults to '||'\r\n * @type {String}\r\n */\r\n this.orOperator = defaultsStr(f.or_operator, '||');\r\n\r\n /**\r\n * Logical AND operator for input filter. Defaults to '&&'\r\n * @type {String}\r\n */\r\n this.anOperator = defaultsStr(f.and_operator, '&&');\r\n\r\n /**\r\n * Greater than operator for input filter. Defaults to '>'\r\n * @type {String}\r\n */\r\n this.grOperator = defaultsStr(f.greater_operator, '>');\r\n\r\n /**\r\n * Lower than operator for input filter. Defaults to '<'\r\n * @type {String}\r\n */\r\n this.lwOperator = defaultsStr(f.lower_operator, '<');\r\n\r\n /**\r\n * Lower than or equal operator for input filter. Defaults to '<='\r\n * @type {String}\r\n */\r\n this.leOperator = defaultsStr(f.lower_equal_operator, '<=');\r\n\r\n /**\r\n * Greater than or equal operator for input filter. Defaults to '>='\r\n * @type {String}\r\n */\r\n this.geOperator = defaultsStr(f.greater_equal_operator, '>=');\r\n\r\n /**\r\n * Inequality operator for input filter. Defaults to '!'\r\n * @type {String}\r\n */\r\n this.dfOperator = defaultsStr(f.different_operator, '!');\r\n\r\n /**\r\n * Like operator for input filter. Defaults to '*'\r\n * @type {String}\r\n */\r\n this.lkOperator = defaultsStr(f.like_operator, '*');\r\n\r\n /**\r\n * Strict equality operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.eqOperator = defaultsStr(f.equal_operator, '=');\r\n\r\n /**\r\n * Starts with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.stOperator = defaultsStr(f.start_with_operator, '{');\r\n\r\n /**\r\n * Ends with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.enOperator = defaultsStr(f.end_with_operator, '}');\r\n\r\n // this.curExp = f.cur_exp || '^[¥£€$]';\r\n\r\n /**\r\n * Stored values separator\r\n * @type {String}\r\n */\r\n this.separator = defaultsStr(f.separator, ',');\r\n\r\n /**\r\n * Enable rows counter UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.rowsCounter = isObj(f.rows_counter) || Boolean(f.rows_counter);\r\n\r\n /**\r\n * Enable status bar UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.statusBar = isObj(f.status_bar) || Boolean(f.status_bar);\r\n\r\n /**\r\n * Enable activity/spinner indicator UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.loader = isObj(f.loader) || Boolean(f.loader);\r\n\r\n /*** validation - reset buttons/links ***/\r\n /**\r\n * Enable filters submission button\r\n * @type {Boolean}\r\n */\r\n this.displayBtn = Boolean(f.btn);\r\n\r\n /**\r\n * Define filters submission button text\r\n * @type {String}\r\n */\r\n this.btnText = defaultsStr(f.btn_text, (!this.enableIcons ? 'Go' : ''));\r\n\r\n /**\r\n * Css class for filters submission button\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class,\r\n (!this.enableIcons ? 'btnflt' : 'btnflt_icon'));\r\n\r\n /**\r\n * Enable clear button\r\n * @type {Object|Boolean}\r\n */\r\n this.btnReset = isObj(f.btn_reset) || Boolean(f.btn_reset);\r\n\r\n /**\r\n * Callback fired before filters are cleared\r\n * @type {Function}\r\n */\r\n this.onBeforeReset = defaultsFn(f.on_before_reset, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after filters are cleared\r\n * @type {Function}\r\n */\r\n this.onAfterReset = defaultsFn(f.on_after_reset, EMPTY_FN);\r\n\r\n /**\r\n * Enable paging component\r\n * @type {Object|Boolean}\r\n */\r\n this.paging = isObj(f.paging) || Boolean(f.paging);\r\n\r\n /**\r\n * Number of hidden rows\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbHiddenRows = 0;\r\n\r\n /**\r\n * Enable auto-filter behaviour, table is filtered when a user\r\n * stops typing\r\n * @type {Object|Boolean}\r\n */\r\n this.autoFilter = isObj(f.auto_filter) || Boolean(f.auto_filter);\r\n\r\n /**\r\n * Auto-filter delay in milliseconds\r\n * @type {Number}\r\n */\r\n this.autoFilterDelay = isObj(f.auto_filter) &&\r\n isNumber(f.auto_filter.delay) ?\r\n f.auto_filter.delay : AUTO_FILTER_DELAY;\r\n\r\n /**\r\n * Indicate whether user is typing\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isUserTyping = null;\r\n\r\n /**\r\n * Auto-filter interval ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.autoFilterTimer = null;\r\n\r\n /**\r\n * Enable keyword highlighting behaviour\r\n * @type {Boolean}\r\n */\r\n this.highlightKeywords = Boolean(f.highlight_keywords);\r\n\r\n /**\r\n * Enable no results message UI component\r\n * @type {Object|Boolean}\r\n */\r\n this.noResults = isObj(f.no_results_message) ||\r\n Boolean(f.no_results_message);\r\n\r\n /**\r\n * Enable state persistence\r\n * @type {Object|Boolean}\r\n */\r\n this.state = isObj(f.state) || Boolean(f.state);\r\n\r\n /*** data types ***/\r\n\r\n /**\r\n * Enable date type module\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.dateType = true;\r\n\r\n /**\r\n * Define default locale, default to 'en' as per Sugar Date module:\r\n * https://sugarjs.com/docs/#/DateLocales\r\n * @type {String}\r\n */\r\n this.locale = defaultsStr(f.locale, 'en');\r\n\r\n /**\r\n * Define thousands separator ',' or '.', defaults to ','\r\n * @type {String}\r\n */\r\n this.thousandsSeparator = defaultsStr(f.thousands_separator, ',');\r\n\r\n /**\r\n * Define decimal separator ',' or '.', defaults to '.'\r\n * @type {String}\r\n */\r\n this.decimalSeparator = defaultsStr(f.decimal_separator, '.');\r\n\r\n /**\r\n * Define data types on a column basis, possible values 'string',\r\n * 'number', 'formatted-number', 'date', 'ipaddress' ie:\r\n * col_types : [\r\n * 'string', 'date', 'number',\r\n * { type: 'formatted-number', decimal: ',', thousands: '.' },\r\n * { type: 'date', locale: 'en-gb' },\r\n * { type: 'date', format: ['{dd}-{months}-{yyyy|yy}'] }\r\n * ]\r\n *\r\n * Refer to https://sugarjs.com/docs/#/DateParsing for exhaustive\r\n * information on date parsing formats supported by Sugar Date\r\n * @type {Array}\r\n */\r\n this.colTypes = isArray(f.col_types) ? f.col_types : [];\r\n\r\n /*** ids prefixes ***/\r\n /**\r\n * Main prefix\r\n * @private\r\n */\r\n this.prfxTf = 'TF';\r\n\r\n /**\r\n * Filter's ID prefix (inputs - selects)\r\n * @private\r\n */\r\n this.prfxFlt = 'flt';\r\n\r\n /**\r\n * Button's ID prefix\r\n * @private\r\n */\r\n this.prfxValButton = 'btn';\r\n\r\n /**\r\n * Responsive Css class\r\n * @private\r\n */\r\n this.prfxResponsive = 'resp';\r\n\r\n /** @private */\r\n this.stickyCssClass = 'sticky';\r\n\r\n /*** extensions ***/\r\n /**\r\n * List of loaded extensions\r\n * @type {Array}\r\n */\r\n this.extensions = defaultsArr(f.extensions, []);\r\n\r\n /*** themes ***/\r\n /**\r\n * Enable default theme\r\n * @type {Boolean}\r\n */\r\n this.enableDefaultTheme = Boolean(f.enable_default_theme);\r\n\r\n /**\r\n * Determine whether themes are enables\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasThemes = (this.enableDefaultTheme || isArray(f.themes));\r\n\r\n /**\r\n * List of themes, ie:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\r\n this.themes = defaultsArr(f.themes, []);\r\n\r\n /**\r\n * Define path to themes assets, defaults to\r\n * 'tablefilter/style/themes/'. Usage:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\r\n this.themesPath = this.getThemesPath();\r\n\r\n /**\r\n * Enable responsive layout\r\n * @type {Boolean}\r\n */\r\n this.responsive = Boolean(f.responsive);\r\n\r\n /**\r\n * Enable toolbar component\r\n * @type {Object|Boolean}\r\n */\r\n this.toolbar = isObj(f.toolbar) || Boolean(f.toolbar);\r\n\r\n /**\r\n * Enable sticky headers\r\n * @type {Boolean}\r\n */\r\n this.stickyHeaders = Boolean(f.sticky_headers);\r\n\r\n /**\r\n * Features registry\r\n * @private\r\n */\r\n this.Mod = {};\r\n\r\n /**\r\n * Extensions registry\r\n * @private\r\n */\r\n this.ExtRegistry = {};\r\n\r\n // instantiate toolbar ui component as other components depend on it\r\n this.instantiateFeatures(FEATURES);\r\n }\r\n\r\n /**\r\n * Initialise features and layout\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // import main stylesheet\r\n this.import(this.stylesheetId, this.getStylesheetPath(), null, 'link');\r\n\r\n let Mod = this.Mod;\r\n let inpclass;\r\n\r\n //loads theme\r\n this.loadThemes();\r\n\r\n //explicitly initialise features in given order\r\n this.initFeatures([\r\n DateType,\r\n Help,\r\n State,\r\n MarkActiveColumns,\r\n GridLayout,\r\n Loader,\r\n HighlightKeyword,\r\n PopupFilter\r\n ]);\r\n\r\n //filters grid is not generated\r\n if (!this.fltGrid) {\r\n this._initNoFilters();\r\n } else {\r\n let fltrow = this._insertFiltersRow();\r\n\r\n this.nbCells = this.getCellsNb(this.refRow);\r\n this.nbFilterableRows = this.getRowsNb();\r\n\r\n let n = this.singleFlt ? 1 : this.nbCells;\r\n\r\n //build filters\r\n for (let i = 0; i < n; i++) {\r\n this.emitter.emit('before-filter-init', this, i);\r\n\r\n let fltCell = createElm(this.fltCellTag),\r\n col = this.getFilterType(i);\r\n\r\n if (this.singleFlt) {\r\n fltCell.colSpan = this.nbCells;\r\n }\r\n if (!this.gridLayout) {\r\n fltrow.appendChild(fltCell);\r\n }\r\n inpclass = (i === n - 1 && this.displayBtn) ?\r\n this.fltSmallCssClass : this.fltCssClass;\r\n\r\n //only 1 input for single search\r\n if (this.singleFlt) {\r\n col = INPUT;\r\n inpclass = this.singleFltCssClass;\r\n }\r\n\r\n //drop-down filters\r\n if (col === SELECT || col === MULTIPLE) {\r\n Mod.dropdown = Mod.dropdown || new Dropdown(this);\r\n Mod.dropdown.init(i, this.isExternalFlt(), fltCell);\r\n }\r\n // checklist\r\n else if (col === CHECKLIST) {\r\n Mod.checkList = Mod.checkList || new CheckList(this);\r\n Mod.checkList.init(i, this.isExternalFlt(), fltCell);\r\n } else {\r\n this._buildInputFilter(i, inpclass, fltCell);\r\n }\r\n\r\n // this adds submit button\r\n if (i === n - 1 && this.displayBtn) {\r\n this._buildSubmitButton(\r\n this.isExternalFlt() ?\r\n elm(this.externalFltIds[i]) :\r\n fltCell\r\n );\r\n }\r\n\r\n this.emitter.emit('after-filter-init', this, i);\r\n }\r\n\r\n this.emitter.on(['filter-focus'],\r\n (tf, filter) => this.setActiveFilterId(filter.id));\r\n\r\n }//if this.fltGrid\r\n\r\n /* Features */\r\n if (this.hasExcludedRows) {\r\n this.emitter.on(['after-filtering'], () => this.setExcludeRows());\r\n this.setExcludeRows();\r\n }\r\n\r\n this.initFeatures([\r\n RowsCounter,\r\n StatusBar,\r\n ClearButton,\r\n AlternateRows,\r\n NoResults,\r\n Paging,\r\n Toolbar\r\n ]);\r\n\r\n this.setColWidths();\r\n\r\n //TF css class is added to table\r\n if (!this.gridLayout) {\r\n addClass(this.dom(), this.prfxTf);\r\n if (this.responsive) {\r\n addClass(this.dom(), this.prfxResponsive);\r\n }\r\n if (this.colWidths.length > 0) {\r\n this.setFixedLayout();\r\n }\r\n if (this.stickyHeaders && this.dom().tHead) {\r\n addClass(this.dom(), this.stickyCssClass);\r\n }\r\n }\r\n\r\n /* Load extensions */\r\n this.initExtensions();\r\n\r\n this.initialized = true;\r\n\r\n this.onFiltersLoaded(this);\r\n\r\n this.emitter.emit('initialized', this);\r\n }\r\n\r\n /**\r\n * Detect key\r\n * @param {Event} evt\r\n */\r\n detectKey(evt) {\r\n if (!this.enterKey) {\r\n return;\r\n }\r\n\r\n if (isKeyPressed(evt, [ENTER_KEY])) {\r\n this.filter();\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n } else {\r\n this.isUserTyping = true;\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n }\r\n }\r\n\r\n /**\r\n * Filter's keyup event: if auto-filter on, detect user is typing and filter\r\n * columns\r\n * @param {Event} evt\r\n */\r\n onKeyUp(evt) {\r\n if (!this.autoFilter) {\r\n return;\r\n }\r\n this.isUserTyping = false;\r\n\r\n function filter() {\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n if (!this.isUserTyping) {\r\n this.filter();\r\n this.isUserTyping = null;\r\n }\r\n }\r\n\r\n if (isKeyPressed(evt,\r\n [ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY])) {\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n } else {\r\n if (this.autoFilterTimer !== null) {\r\n return;\r\n }\r\n this.autoFilterTimer = root.setInterval(\r\n filter.bind(this),\r\n this.autoFilterDelay);\r\n }\r\n }\r\n\r\n /**\r\n * Filter's keydown event: if auto-filter on, detect user is typing\r\n */\r\n onKeyDown() {\r\n if (this.autoFilter) {\r\n this.isUserTyping = true;\r\n }\r\n }\r\n\r\n /**\r\n * Filter's focus event\r\n * @param {Event} evt\r\n */\r\n onInpFocus(evt) {\r\n let elm = targetEvt(evt);\r\n this.emitter.emit('filter-focus', this, elm);\r\n }\r\n\r\n /**\r\n * Filter's blur event: if auto-filter on, clear interval on filter blur\r\n */\r\n onInpBlur() {\r\n if (this.autoFilter) {\r\n this.isUserTyping = false;\r\n root.clearInterval(this.autoFilterTimer);\r\n }\r\n this.emitter.emit('filter-blur', this);\r\n }\r\n\r\n /**\r\n * Insert filters row at initialization\r\n */\r\n _insertFiltersRow() {\r\n // TODO: prevent filters row generation for popup filters too,\r\n // to reduce and simplify headers row index adjusting across lib modules\r\n // (GridLayout, PopupFilter etc)\r\n if (this.gridLayout) {\r\n return;\r\n }\r\n let fltrow;\r\n\r\n let thead = tag(this.dom(), 'thead');\r\n if (thead.length > 0) {\r\n fltrow = thead[0].insertRow(this.filtersRowIndex);\r\n } else {\r\n fltrow = this.dom().insertRow(this.filtersRowIndex);\r\n }\r\n\r\n fltrow.className = this.fltsRowCssClass;\r\n\r\n if (this.isExternalFlt()) {\r\n fltrow.style.display = NONE;\r\n }\r\n\r\n this.emitter.emit('filters-row-inserted', this, fltrow);\r\n return fltrow;\r\n }\r\n\r\n /**\r\n * Initialize filtersless table\r\n */\r\n _initNoFilters() {\r\n if (this.fltGrid) {\r\n return;\r\n }\r\n this.refRow = this.refRow > 0 ? this.refRow - 1 : 0;\r\n this.nbFilterableRows = this.getRowsNb();\r\n }\r\n\r\n /**\r\n * Build input filter type\r\n * @param {Number} colIndex Column index\r\n * @param {String} cssClass Css class applied to filter\r\n * @param {DOMElement} container Container DOM element\r\n */\r\n _buildInputFilter(colIndex, cssClass, container) {\r\n let col = this.getFilterType(colIndex);\r\n let externalFltTgtId = this.isExternalFlt() ?\r\n this.externalFltIds[colIndex] : null;\r\n let inpType = col === INPUT ? 'text' : 'hidden';\r\n let inp = createElm(INPUT,\r\n ['id', this.buildFilterId(colIndex)],\r\n ['type', inpType], ['ct', colIndex]);\r\n\r\n if (inpType !== 'hidden' && this.watermark) {\r\n inp.setAttribute('placeholder',\r\n this.isWatermarkArray ? (this.watermark[colIndex] || '') :\r\n this.watermark\r\n );\r\n }\r\n inp.className = cssClass || this.fltCssClass;\r\n addEvt(inp, 'focus', (evt) => this.onInpFocus(evt));\r\n\r\n //filter is appended in custom element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(inp);\r\n } else {\r\n container.appendChild(inp);\r\n }\r\n\r\n this.fltIds.push(inp.id);\r\n\r\n addEvt(inp, 'keypress', (evt) => this.detectKey(evt));\r\n addEvt(inp, 'keydown', () => this.onKeyDown());\r\n addEvt(inp, 'keyup', (evt) => this.onKeyUp(evt));\r\n addEvt(inp, 'blur', () => this.onInpBlur());\r\n }\r\n\r\n /**\r\n * Build submit button\r\n * @param {DOMElement} container Container DOM element\r\n */\r\n _buildSubmitButton(container) {\r\n let btn = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnText]\r\n );\r\n btn.className = this.btnCssClass;\r\n\r\n //filter is appended in container element\r\n container.appendChild(btn);\r\n\r\n addEvt(btn, 'click', () => this.filter());\r\n }\r\n\r\n /**\r\n * Conditionally istantiate each feature class in passed collection if\r\n * required by configuration and add it to the features registry. A feature\r\n * class meta information contains a `name` field and optional `altName` and\r\n * `alwaysInstantiate` fields\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\r\n instantiateFeatures(features = []) {\r\n features.forEach(featureCls => {\r\n let Cls = featureCls;\r\n\r\n // assign meta info if not present\r\n Cls.meta = Cls.meta || {name: null, altName: null};\r\n Cls.meta.name = toCamelCase(Cls.name);\r\n let {name, altName, alwaysInstantiate} = Cls.meta;\r\n let prop = altName || name;\r\n\r\n if (!this.hasConfig || this[prop] === true\r\n || Boolean(alwaysInstantiate)) {\r\n this.Mod[name] = this.Mod[name] || new Cls(this);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Initialise each feature class in passed collection.\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\r\n initFeatures(features = []) {\r\n features.forEach(featureCls => {\r\n let {name, altName} = featureCls.meta;\r\n let prop = altName || name;\r\n\r\n if (this[prop] === true && this.Mod[name]) {\r\n this.Mod[name].init();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Return a feature instance for a given name\r\n * @param {String} name Name of the feature\r\n * @return {Object}\r\n */\r\n feature(name) {\r\n return this.Mod[name];\r\n }\r\n\r\n /**\r\n * Initialise all the extensions defined in the configuration object\r\n */\r\n initExtensions() {\r\n let exts = this.extensions;\r\n if (exts.length === 0) {\r\n return;\r\n }\r\n\r\n // Set config's publicPath dynamically for Webpack...\r\n __webpack_public_path__ = this.basePath;\r\n\r\n this.emitter.emit('before-loading-extensions', this);\r\n\r\n exts.forEach((ext) => {\r\n this.loadExtension(ext);\r\n });\r\n this.emitter.emit('after-loading-extensions', this);\r\n }\r\n\r\n /**\r\n * Load an extension module\r\n * @param {Object} ext Extension config object\r\n */\r\n loadExtension(ext) {\r\n if (!ext || !ext.name || this.hasExtension(ext.name)) {\r\n return;\r\n }\r\n\r\n let {name, path} = ext;\r\n let modulePath;\r\n\r\n if (name && path) {\r\n modulePath = ext.path + name;\r\n } else {\r\n name = name.replace('.js', '');\r\n modulePath = 'extensions/{}/{}'.replace(/{}/g, name);\r\n }\r\n\r\n // Require pattern for Webpack\r\n require(['./' + modulePath], (mod) => {\r\n /* eslint-disable */\r\n let inst = new mod.default(this, ext);\r\n /* eslint-enable */\r\n inst.init();\r\n this.ExtRegistry[name] = inst;\r\n });\r\n }\r\n\r\n /**\r\n * Get an extension instance\r\n * @param {String} name Name of the extension\r\n * @return {Object} Extension instance\r\n */\r\n extension(name) {\r\n return this.ExtRegistry[name];\r\n }\r\n\r\n /**\r\n * Check passed extension name exists\r\n * @param {String} name Name of the extension\r\n * @return {Boolean}\r\n */\r\n hasExtension(name) {\r\n return !isEmpty(this.ExtRegistry[name]);\r\n }\r\n\r\n /**\r\n * Register the passed extension instance with associated name\r\n * @param {Object} inst Extension instance\r\n * @param {String} name Name of the extension\r\n */\r\n registerExtension(inst, name) {\r\n this.ExtRegistry[name] = inst;\r\n }\r\n\r\n /**\r\n * Destroy all the extensions store in extensions registry\r\n */\r\n destroyExtensions() {\r\n let reg = this.ExtRegistry;\r\n\r\n Object.keys(reg).forEach((key) => {\r\n reg[key].destroy();\r\n reg[key] = undefined;\r\n });\r\n }\r\n\r\n /**\r\n * Load themes defined in the configuration object\r\n */\r\n loadThemes() {\r\n if (!this.hasThemes) {\r\n return;\r\n }\r\n\r\n let themes = this.themes;\r\n this.emitter.emit('before-loading-themes', this);\r\n\r\n //Default theme config\r\n if (this.enableDefaultTheme) {\r\n let defaultTheme = { name: 'default' };\r\n this.themes.push(defaultTheme);\r\n }\r\n\r\n themes.forEach((theme, i) => {\r\n let {name, path} = theme;\r\n let styleId = this.prfxTf + name;\r\n if (name && !path) {\r\n path = this.themesPath + name + '/' + name + '.css';\r\n }\r\n else if (!name && theme.path) {\r\n name = 'theme{0}'.replace('{0}', i);\r\n }\r\n\r\n if (!this.isImported(path, 'link')) {\r\n this.import(styleId, path, null, 'link');\r\n }\r\n });\r\n\r\n // Enable loader indicator\r\n this.loader = true;\r\n\r\n this.emitter.emit('after-loading-themes', this);\r\n }\r\n\r\n /**\r\n * Return stylesheet DOM element for a given theme name\r\n * @return {DOMElement} stylesheet element\r\n */\r\n getStylesheet(name = 'default') {\r\n return elm(this.prfxTf + name);\r\n }\r\n\r\n /**\r\n * Destroy filter grid\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n if (this.isExternalFlt() && !this.popupFilters) {\r\n this.removeExternalFlts();\r\n }\r\n\r\n this.destroyExtensions();\r\n\r\n this.validateAllRows();\r\n\r\n // broadcast destroy event modules and extensions are subscribed to\r\n emitter.emit('destroy', this);\r\n\r\n if (this.fltGrid && !this.gridLayout) {\r\n this.dom().deleteRow(this.filtersRowIndex);\r\n }\r\n\r\n // unsubscribe to events\r\n if (this.hasExcludedRows) {\r\n emitter.off(['after-filtering'], () => this.setExcludeRows());\r\n }\r\n\r\n this.emitter.off(['filter-focus'],\r\n (tf, filter) => this.setActiveFilterId(filter.id));\r\n\r\n removeClass(this.dom(), this.prfxTf);\r\n removeClass(this.dom(), this.prfxResponsive);\r\n if (this.dom().tHead) {\r\n removeClass(this.dom().tHead, this.stickyCssClass);\r\n }\r\n\r\n this.nbHiddenRows = 0;\r\n this.validRowsIndex = [];\r\n this.fltIds = [];\r\n this.initialized = false;\r\n }\r\n\r\n /**\r\n * Remove all the external column filters\r\n */\r\n removeExternalFlts() {\r\n if (!this.isExternalFlt()) {\r\n return;\r\n }\r\n let ids = this.externalFltIds;\r\n ids.forEach((id) => {\r\n let externalFlt = elm(id);\r\n if (externalFlt) {\r\n externalFlt.innerHTML = '';\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Check if given column implements a filter with custom options\r\n * @param {Number} colIndex Column's index\r\n * @return {Boolean}\r\n */\r\n isCustomOptions(colIndex) {\r\n return this.hasCustomOptions &&\r\n this.customOptions.cols.indexOf(colIndex) !== -1;\r\n }\r\n\r\n /**\r\n * Returns an array [[value0, value1 ...],[text0, text1 ...]] with the\r\n * custom options values and texts\r\n * @param {Number} colIndex Column's index\r\n * @return {Array}\r\n */\r\n getCustomOptions(colIndex) {\r\n if (isEmpty(colIndex) || !this.isCustomOptions(colIndex)) {\r\n return;\r\n }\r\n\r\n let customOptions = this.customOptions;\r\n let cols = customOptions.cols;\r\n let optTxt = [], optArray = [];\r\n let index = cols.indexOf(colIndex);\r\n let slcValues = customOptions.values[index];\r\n let slcTexts = customOptions.texts[index];\r\n let slcSort = customOptions.sorts[index];\r\n\r\n for (let r = 0, len = slcValues.length; r < len; r++) {\r\n optArray.push(slcValues[r]);\r\n if (slcTexts[r]) {\r\n optTxt.push(slcTexts[r]);\r\n } else {\r\n optTxt.push(slcValues[r]);\r\n }\r\n }\r\n if (slcSort) {\r\n optArray.sort();\r\n optTxt.sort();\r\n }\r\n return [optArray, optTxt];\r\n }\r\n\r\n /**\r\n * Filter the table by retrieving the data from each cell in every single\r\n * row and comparing it to the search term for current column. A row is\r\n * hidden when all the search terms are not found in inspected row.\r\n */\r\n filter() {\r\n if (!this.fltGrid || !this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n //fire onbefore callback\r\n this.onBeforeFilter(this);\r\n emitter.emit('before-filtering', this);\r\n\r\n let hiddenRows = 0;\r\n\r\n this.validRowsIndex = [];\r\n // search args\r\n let searchArgs = this.getFiltersValue();\r\n\r\n let eachRow = this.eachRow();\r\n eachRow(\r\n (row, k) => {\r\n // already filtered rows display re-init\r\n row.style.display = '';\r\n\r\n let cells = row.cells;\r\n let nbCells = cells.length;\r\n\r\n let occurence = [],\r\n isMatch = true,\r\n //only for single filter search\r\n isSingleFltMatch = false;\r\n\r\n // this loop retrieves cell data\r\n for (let j = 0; j < nbCells; j++) {\r\n //searched keyword\r\n let sA = searchArgs[this.singleFlt ? 0 : j];\r\n\r\n if (sA === '') {\r\n continue;\r\n }\r\n\r\n let cellValue = matchCase(this.getCellValue(cells[j]),\r\n this.caseSensitive);\r\n\r\n //multiple search parameter operator ||\r\n let sAOrSplit = sA.toString().split(this.orOperator),\r\n //multiple search || parameter boolean\r\n hasMultiOrSA = sAOrSplit.length > 1,\r\n //multiple search parameter operator &&\r\n sAAndSplit = sA.toString().split(this.anOperator),\r\n //multiple search && parameter boolean\r\n hasMultiAndSA = sAAndSplit.length > 1;\r\n\r\n //detect operators or array query\r\n if (isArray(sA) || hasMultiOrSA || hasMultiAndSA) {\r\n let cS, s;\r\n let found = false;\r\n\r\n if (isArray(sA)) {\r\n s = sA;\r\n } else {\r\n s = hasMultiOrSA ? sAOrSplit : sAAndSplit;\r\n }\r\n // isolate search term and check occurence in cell data\r\n for (let w = 0, len = s.length; w < len; w++) {\r\n cS = trim(s[w]);\r\n found = this._match(cS, cellValue, cells[j]);\r\n\r\n if (found) {\r\n emitter.emit('highlight-keyword', this,\r\n cells[j], cS);\r\n }\r\n if ((hasMultiOrSA && found) ||\r\n (hasMultiAndSA && !found)) {\r\n break;\r\n }\r\n if (isArray(sA) && found) {\r\n break;\r\n }\r\n }\r\n occurence[j] = found;\r\n\r\n }\r\n //single search parameter\r\n else {\r\n occurence[j] =\r\n this._match(trim(sA), cellValue, cells[j]);\r\n if (occurence[j]) {\r\n emitter.emit('highlight-keyword', this, cells[j],\r\n sA);\r\n }\r\n }\r\n\r\n if (!occurence[j]) {\r\n isMatch = false;\r\n }\r\n\r\n if (this.singleFlt &&\r\n this.singleFltExcludeCols.indexOf(j) === -1 &&\r\n occurence[j]) {\r\n isSingleFltMatch = true;\r\n }\r\n\r\n emitter.emit('cell-processed', this, j, cells[j]);\r\n }//for j\r\n\r\n if (isSingleFltMatch) {\r\n isMatch = true;\r\n }\r\n\r\n this.validateRow(k, isMatch);\r\n if (!isMatch) {\r\n hiddenRows++;\r\n }\r\n\r\n emitter.emit('row-processed', this, k,\r\n this.validRowsIndex.length - 1, isMatch);\r\n },\r\n // continue condition\r\n (row) => row.cells.length !== this.nbCells\r\n );\r\n\r\n this.nbHiddenRows = hiddenRows;\r\n\r\n //fire onafterfilter callback\r\n this.onAfterFilter(this);\r\n\r\n emitter.emit('after-filtering', this, searchArgs);\r\n }\r\n\r\n /**\r\n * Match search term in cell data\r\n * @param {String} term Search term\r\n * @param {String} cellValue Cell data\r\n * @param {DOMElement} cell Current cell\r\n * @return {Boolean}\r\n * @private\r\n */\r\n _match(term, cellValue, cell) {\r\n let numData;\r\n let colIdx = cell.cellIndex;\r\n let decimal = this.getDecimal(colIdx);\r\n let reLe = new RegExp(this.leOperator),\r\n reGe = new RegExp(this.geOperator),\r\n reL = new RegExp(this.lwOperator),\r\n reG = new RegExp(this.grOperator),\r\n reD = new RegExp(this.dfOperator),\r\n reLk = new RegExp(rgxEsc(this.lkOperator)),\r\n reEq = new RegExp(this.eqOperator),\r\n reSt = new RegExp(this.stOperator),\r\n reEn = new RegExp(this.enOperator),\r\n // re_an = new RegExp(this.anOperator),\r\n // re_cr = new RegExp(this.curExp),\r\n reEm = this.emOperator,\r\n reNm = this.nmOperator,\r\n reRe = new RegExp(rgxEsc(this.rgxOperator));\r\n\r\n term = matchCase(term, this.caseSensitive);\r\n\r\n let occurence = false;\r\n\r\n //Search arg operator tests\r\n let hasLO = reL.test(term),\r\n hasLE = reLe.test(term),\r\n hasGR = reG.test(term),\r\n hasGE = reGe.test(term),\r\n hasDF = reD.test(term),\r\n hasEQ = reEq.test(term),\r\n hasLK = reLk.test(term),\r\n // hatermN = re_an.test(term),\r\n hasST = reSt.test(term),\r\n hasEN = reEn.test(term),\r\n hasEM = (reEm === term),\r\n hasNM = (reNm === term),\r\n hasRE = reRe.test(term);\r\n\r\n // Check for dates or resolve date type\r\n if (this.hasType(colIdx, [DATE])) {\r\n let dte1, dte2;\r\n\r\n let dateType = this.Mod.dateType;\r\n let isValidDate = dateType.isValid.bind(dateType);\r\n let parseDate = dateType.parse.bind(dateType);\r\n let locale = dateType.getLocale(colIdx);\r\n\r\n // Search arg dates tests\r\n let isLDate = hasLO &&\r\n isValidDate(term.replace(reL, ''), locale);\r\n let isLEDate = hasLE &&\r\n isValidDate(term.replace(reLe, ''), locale);\r\n let isGDate = hasGR &&\r\n isValidDate(term.replace(reG, ''), locale);\r\n let isGEDate = hasGE &&\r\n isValidDate(term.replace(reGe, ''), locale);\r\n let isDFDate = hasDF &&\r\n isValidDate(term.replace(reD, ''), locale);\r\n let isEQDate = hasEQ &&\r\n isValidDate(term.replace(reEq, ''), locale);\r\n\r\n dte1 = parseDate(cellValue, locale);\r\n\r\n // lower equal date\r\n if (isLEDate) {\r\n dte2 = parseDate(term.replace(reLe, ''), locale);\r\n occurence = dte1 <= dte2;\r\n }\r\n // lower date\r\n else if (isLDate) {\r\n dte2 = parseDate(term.replace(reL, ''), locale);\r\n occurence = dte1 < dte2;\r\n }\r\n // greater equal date\r\n else if (isGEDate) {\r\n dte2 = parseDate(term.replace(reGe, ''), locale);\r\n occurence = dte1 >= dte2;\r\n }\r\n // greater date\r\n else if (isGDate) {\r\n dte2 = parseDate(term.replace(reG, ''), locale);\r\n occurence = dte1 > dte2;\r\n }\r\n // different date\r\n else if (isDFDate) {\r\n dte2 = parseDate(term.replace(reD, ''), locale);\r\n occurence = dte1.toString() !== dte2.toString();\r\n }\r\n // equal date\r\n else if (isEQDate) {\r\n dte2 = parseDate(term.replace(reEq, ''), locale);\r\n occurence = dte1.toString() === dte2.toString();\r\n }\r\n // searched keyword with * operator doesn't have to be a date\r\n else if (reLk.test(term)) {// like date\r\n occurence = contains(term.replace(reLk, ''), cellValue,\r\n false, this.caseSensitive);\r\n }\r\n else if (isValidDate(term)) {\r\n dte2 = parseDate(term, locale);\r\n occurence = dte1.toString() === dte2.toString();\r\n }\r\n //empty\r\n else if (hasEM) {\r\n occurence = !cell.hasChildNodes();\r\n }\r\n //non-empty\r\n else if (hasNM) {\r\n occurence = cell.hasChildNodes();\r\n } else {\r\n occurence = contains(term, cellValue,\r\n this.isExactMatch(colIdx), this.caseSensitive);\r\n }\r\n } else {\r\n // Convert to number anyways to auto-resolve type in case not\r\n // defined by configuration. Order is important first try to\r\n // parse formatted number then fallback to Number coercion\r\n // to avoid false positives with Number\r\n numData = parseNb(cellValue, decimal) || Number(cellValue);\r\n\r\n // first checks if there is any operator (<,>,<=,>=,!,*,=,{,},\r\n // rgx:)\r\n\r\n //regexp\r\n if (hasRE) {\r\n //in case regexp throws\r\n try {\r\n //operator is removed\r\n let srchArg = term.replace(reRe, '');\r\n let rgx = new RegExp(srchArg);\r\n occurence = rgx.test(cellValue);\r\n } catch (ex) {\r\n occurence = false;\r\n }\r\n }\r\n // lower equal\r\n else if (hasLE) {\r\n occurence = numData <= parseNb(\r\n term.replace(reLe, ''),\r\n decimal\r\n );\r\n }\r\n //greater equal\r\n else if (hasGE) {\r\n occurence = numData >= parseNb(\r\n term.replace(reGe, ''),\r\n decimal\r\n );\r\n }\r\n //lower\r\n else if (hasLO) {\r\n occurence = numData < parseNb(\r\n term.replace(reL, ''),\r\n decimal\r\n );\r\n }\r\n //greater\r\n else if (hasGR) {\r\n occurence = numData > parseNb(\r\n term.replace(reG, ''),\r\n decimal\r\n );\r\n }\r\n //different\r\n else if (hasDF) {\r\n occurence = contains(term.replace(reD, ''), cellValue,\r\n false, this.caseSensitive) ? false : true;\r\n }\r\n //like\r\n else if (hasLK) {\r\n occurence = contains(term.replace(reLk, ''), cellValue,\r\n false, this.caseSensitive);\r\n }\r\n //equal\r\n else if (hasEQ) {\r\n occurence = contains(term.replace(reEq, ''), cellValue,\r\n true, this.caseSensitive);\r\n }\r\n //starts with\r\n else if (hasST) {\r\n occurence = cellValue.indexOf(term.replace(reSt, '')) === 0 ?\r\n true : false;\r\n }\r\n //ends with\r\n else if (hasEN) {\r\n let searchArg = term.replace(reEn, '');\r\n occurence =\r\n cellValue.lastIndexOf(searchArg, cellValue.length - 1) ===\r\n (cellValue.length - 1) - (searchArg.length - 1) &&\r\n cellValue.lastIndexOf(searchArg, cellValue.length - 1)\r\n > -1 ? true : false;\r\n }\r\n //empty\r\n else if (hasEM) {\r\n occurence = !cell.hasChildNodes();\r\n }\r\n //non-empty\r\n else if (hasNM) {\r\n occurence = cell.hasChildNodes();\r\n } else {\r\n // If numeric type data, perform a strict equality test and\r\n // fallback to unformatted number string comparison\r\n if (numData &&\r\n this.hasType(colIdx, [NUMBER, FORMATTED_NUMBER]) &&\r\n !this.singleFlt) {\r\n // parseNb can return 0 for strings which are not\r\n // formatted numbers, in that case return the original\r\n // string. TODO: handle this in parseNb\r\n term = parseNb(term, decimal) || term;\r\n occurence = numData === term ||\r\n contains(term.toString(), numData.toString(),\r\n this.isExactMatch(colIdx), this.caseSensitive);\r\n } else {\r\n // Finally test search term is contained in cell data\r\n occurence = contains(\r\n term,\r\n cellValue,\r\n this.isExactMatch(colIdx),\r\n this.caseSensitive,\r\n this.ignoresDiacritics(colIdx)\r\n );\r\n }\r\n }\r\n\r\n }//else\r\n\r\n return occurence;\r\n }\r\n\r\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of data for a column\r\n */\r\n getColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getColValues(colIndex, includeHeaders, true, exclude);\r\n }\r\n\r\n /**\r\n * Return the values of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of values for a column\r\n */\r\n getColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getColValues(colIndex, includeHeaders, false, exclude);\r\n }\r\n\r\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return a typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return {Array} Flat list of data for a column\r\n * @private\r\n */\r\n getColValues(\r\n colIndex,\r\n includeHeaders = false,\r\n typed = false,\r\n exclude = []\r\n ) {\r\n let colValues = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n colValues.push(this.getHeadersText()[colIndex]);\r\n }\r\n\r\n let eachRow = this.eachRow();\r\n eachRow((row, i) => {\r\n // checks if current row index appears in exclude array\r\n let isExludedRow = exclude.indexOf(i) !== -1;\r\n let cells = row.cells;\r\n\r\n // checks if row has exact cell # and is not excluded\r\n if (cells.length === this.nbCells && !isExludedRow) {\r\n let data = getContent(cells[colIndex]);\r\n colValues.push(data);\r\n }\r\n });\r\n return colValues;\r\n }\r\n\r\n /**\r\n * Return the filter's value of a specified column\r\n * @param {Number} index Column index\r\n * @return {String} Filter value\r\n */\r\n getFilterValue(index) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let fltValue = '';\r\n let flt = this.getFilterElement(index);\r\n if (!flt) {\r\n return fltValue;\r\n }\r\n\r\n let fltColType = this.getFilterType(index);\r\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\r\n fltValue = flt.value;\r\n }\r\n //mutiple select\r\n else if (fltColType === MULTIPLE) {\r\n fltValue = this.feature('dropdown').getValues(index);\r\n }\r\n //checklist\r\n else if (fltColType === CHECKLIST) {\r\n fltValue = this.feature('checkList').getValues(index);\r\n }\r\n //return an empty string if collection is empty or contains a single\r\n //empty string\r\n if (isArray(fltValue) && fltValue.length === 0 ||\r\n (fltValue.length === 1 && fltValue[0] === '')) {\r\n fltValue = '';\r\n }\r\n\r\n return fltValue;\r\n }\r\n\r\n /**\r\n * Return the filters' values\r\n * @return {Array} List of filters' values\r\n */\r\n getFiltersValue() {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let searchArgs = [];\r\n\r\n this.fltIds.forEach((id, i) => {\r\n let fltValue = this.getFilterValue(i);\r\n if (isArray(fltValue)) {\r\n searchArgs.push(fltValue);\r\n } else {\r\n searchArgs.push(trim(fltValue));\r\n }\r\n });\r\n return searchArgs;\r\n }\r\n\r\n /**\r\n * Return the ID of a specified column's filter\r\n * @param {Number} index Column's index\r\n * @return {String} ID of the filter element\r\n */\r\n getFilterId(index) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n return this.fltIds[index];\r\n }\r\n\r\n /**\r\n * Return the list of ids of filters matching a specified type.\r\n * Note: hidden filters are also returned\r\n *\r\n * @param {String} type Filter type string ('input', 'select', 'multiple',\r\n * 'checklist')\r\n * @param {Boolean} bool If true returns columns indexes instead of IDs\r\n * @return {[type]} List of element IDs or column indexes\r\n */\r\n getFiltersByType(type, bool) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let arr = [];\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n let fltType = this.getFilterType(i);\r\n if (fltType === type.toLowerCase()) {\r\n let a = bool ? i : this.fltIds[i];\r\n arr.push(a);\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n /**\r\n * Return the filter's DOM element for a given column\r\n * @param {Number} index Column's index\r\n * @return {DOMElement}\r\n */\r\n getFilterElement(index) {\r\n return elm(this.fltIds[index]);\r\n }\r\n\r\n /**\r\n * Return the number of cells for a given row index\r\n * @param {Number} rowIndex Index of the row\r\n * @return {Number} Number of cells\r\n */\r\n getCellsNb(rowIndex = 0) {\r\n let tr = this.dom().rows[rowIndex >= 0 ? rowIndex : 0];\r\n return tr ? tr.cells.length : 0;\r\n }\r\n\r\n /**\r\n * Return the number of working rows starting from reference row if\r\n * defined\r\n * @param {Boolean} includeHeaders Include the headers row(s)\r\n * @return {Number} Number of working rows\r\n */\r\n getRowsNb(includeHeaders) {\r\n let nbRows = this.getWorkingRows().length;\r\n if (this.dom().tHead) {\r\n return includeHeaders ?\r\n nbRows + this.dom().querySelectorAll('thead > tr').length :\r\n nbRows;\r\n }\r\n return includeHeaders ? nbRows : nbRows - this.refRow;\r\n }\r\n\r\n /**\r\n * Return the collection of the working rows, that is, the rows belonging\r\n * to the tbody section(s)\r\n * @returns {Array}\r\n */\r\n getWorkingRows() {\r\n return doc.querySelectorAll(`table#${this.id} > tbody > tr`);\r\n }\r\n\r\n /**\r\n * Return the text content of a given cell\r\n * @param {DOMElement} Cell's DOM element\r\n * @return {String}\r\n */\r\n getCellValue(cell) {\r\n let idx = cell.cellIndex;\r\n let cellParser = this.cellParser;\r\n // Invoke cellParser for this column if any\r\n if (cellParser.cols.indexOf(idx) !== -1) {\r\n return cellParser.parse(this, cell, idx);\r\n } else {\r\n return getText(cell);\r\n }\r\n }\r\n\r\n /**\r\n * Return the typed data of a given cell based on the column type definition\r\n * @param {DOMElement} cell Cell's DOM element\r\n * @return {String|Number|Date}\r\n */\r\n getCellData(cell) {\r\n let colIndex = cell.cellIndex;\r\n let value = this.getCellValue(cell);\r\n\r\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n return parseNb(value, this.getDecimal(colIndex));\r\n }\r\n else if (this.hasType(colIndex, [NUMBER])) {\r\n return Number(value);\r\n }\r\n else if (this.hasType(colIndex, [DATE])){\r\n let dateType = this.Mod.dateType;\r\n return dateType.parse(value, dateType.getLocale(colIndex));\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Return the table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\r\n getData(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.getTableData(includeHeaders, excludeHiddenCols, true);\r\n }\r\n\r\n /**\r\n * Return the table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\r\n getValues(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.getTableData(includeHeaders, excludeHiddenCols, false);\r\n }\r\n\r\n /**\r\n * Return the table data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getTableData(\r\n includeHeaders = false,\r\n excludeHiddenCols = false,\r\n typed = false\r\n ) {\r\n let tblData = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n let headers = this.getHeadersText(excludeHiddenCols);\r\n tblData.push([this.getHeadersRowIndex(), headers]);\r\n }\r\n\r\n let eachRow = this.eachRow();\r\n eachRow((row, k) => {\r\n let rowData = [k, []];\r\n let cells = row.cells;\r\n for (let j = 0, len = cells.length; j < len; j++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(j)) {\r\n continue;\r\n }\r\n }\r\n let cellContent = getContent(cells[j]);\r\n rowData[1].push(cellContent);\r\n }\r\n tblData.push(rowData);\r\n });\r\n return tblData;\r\n }\r\n\r\n /**\r\n * Return the filtered table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredData(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.filteredData(includeHeaders, excludeHiddenCols, true);\r\n }\r\n\r\n /**\r\n * Return the filtered table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredValues(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.filteredData(includeHeaders, excludeHiddenCols, false);\r\n }\r\n\r\n /**\r\n * Return the filtered data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n filteredData(\r\n includeHeaders = false,\r\n excludeHiddenCols = false,\r\n typed = false\r\n ) {\r\n if (this.validRowsIndex.length === 0) {\r\n return [];\r\n }\r\n let rows = this.dom().rows,\r\n filteredData = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n let headers = this.getHeadersText(excludeHiddenCols);\r\n filteredData.push([this.getHeadersRowIndex(), headers]);\r\n }\r\n\r\n let validRows = this.getValidRows(true);\r\n for (let i = 0; i < validRows.length; i++) {\r\n let rData = [this.validRowsIndex[i], []],\r\n cells = rows[this.validRowsIndex[i]].cells;\r\n for (let k = 0; k < cells.length; k++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(k)) {\r\n continue;\r\n }\r\n }\r\n let cellValue = getContent(cells[k]);\r\n rData[1].push(cellValue);\r\n }\r\n filteredData.push(rData);\r\n }\r\n return filteredData;\r\n }\r\n\r\n /**\r\n * Return the filtered data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, true, exclude, false);\r\n }\r\n\r\n /**\r\n * Return the filtered and visible data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getVisibleColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, true, exclude, true);\r\n }\r\n\r\n /**\r\n * Return the filtered values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, false, exclude, false);\r\n }\r\n\r\n /**\r\n * Return the filtered and visible values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getVisibleColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, false, exclude, true);\r\n }\r\n\r\n /**\r\n * Return the filtered data for a given column index\r\n * @param {Number} colIndex Colmun's index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @param {Boolean} [visible=true] Return only filtered and visible data\r\n * (relevant for paging)\r\n * @return {Array} Flat list of values ['val0','val1','val2'...]\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredDataCol(\r\n colIndex,\r\n includeHeaders = false,\r\n typed = false,\r\n exclude = [],\r\n visible = true\r\n ) {\r\n if (isUndef(colIndex)) {\r\n return [];\r\n }\r\n\r\n let rows = this.dom().rows;\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n // ensure valid rows index do not contain excluded rows and row is\r\n // displayed\r\n let validRows = this.getValidRows(true).filter((rowIdx) => {\r\n return exclude.indexOf(rowIdx) === -1 &&\r\n (visible ?\r\n this.getRowDisplay(rows[rowIdx]) !== 'none' :\r\n true);\r\n });\r\n\r\n // convert column value to expected type if necessary\r\n let validColValues = validRows.map((rowIdx) => {\r\n return getContent(rows[rowIdx].cells[colIndex]);\r\n });\r\n\r\n if (includeHeaders) {\r\n validColValues.unshift(this.getHeadersText()[colIndex]);\r\n }\r\n\r\n return validColValues;\r\n }\r\n\r\n /**\r\n * Get the display value of a row\r\n * @param {HTMLTableRowElement} row DOM element of the row\r\n * @return {String} Usually 'none' or ''\r\n */\r\n getRowDisplay(row) {\r\n return row.style.display;\r\n }\r\n\r\n /**\r\n * Validate/invalidate row by setting the 'validRow' attribute on the row\r\n * @param {Number} rowIndex Index of the row\r\n * @param {Boolean} isValid\r\n */\r\n validateRow(rowIndex, isValid) {\r\n let row = this.dom().rows[rowIndex];\r\n if (!row || !isBoolean(isValid)) {\r\n return;\r\n }\r\n\r\n // always visible rows are valid\r\n if (this.excludeRows.indexOf(rowIndex) !== -1) {\r\n isValid = true;\r\n }\r\n\r\n let displayFlag = isValid ? '' : NONE,\r\n validFlag = isValid ? 'true' : 'false';\r\n row.style.display = displayFlag;\r\n\r\n if (this.paging) {\r\n row.setAttribute('validRow', validFlag);\r\n }\r\n\r\n if (isValid) {\r\n if (this.validRowsIndex.indexOf(rowIndex) === -1) {\r\n this.validRowsIndex.push(rowIndex);\r\n }\r\n\r\n this.onRowValidated(this, rowIndex);\r\n this.emitter.emit('row-validated', this, rowIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Validate all filterable rows\r\n */\r\n validateAllRows() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.validRowsIndex = [];\r\n for (let k = this.refRow; k < this.nbFilterableRows; k++) {\r\n this.validateRow(k, true);\r\n }\r\n }\r\n\r\n /**\r\n * Set search value to a given filter\r\n * @param {Number} index Column's index\r\n * @param {String or Array} query searcharg Search term\r\n */\r\n setFilterValue(index, query = '') {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let slc = this.getFilterElement(index),\r\n fltColType = this.getFilterType(index);\r\n\r\n if (!slc) {\r\n return;\r\n }\r\n\r\n //multiple selects\r\n if (fltColType === MULTIPLE) {\r\n let values = isArray(query) ? query :\r\n query.split(' ' + this.orOperator + ' ');\r\n\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-select-filter', this, index,\r\n this.linkedFilters, this.isExternalFlt());\r\n }\r\n\r\n this.emitter.emit('select-options', this, index, values);\r\n }\r\n //checklist\r\n else if (fltColType === CHECKLIST) {\r\n let values = [];\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-checklist-filter', this, index,\r\n this.linkedFilters);\r\n }\r\n if (isArray(query)) {\r\n values = query;\r\n } else {\r\n query = matchCase(query, this.caseSensitive);\r\n values = query.split(' ' + this.orOperator + ' ');\r\n }\r\n\r\n this.emitter.emit('select-checklist-options', this, index, values);\r\n }\r\n else {\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-select-filter', this, index,\r\n this.linkedFilters, this.isExternalFlt());\r\n }\r\n slc.value = query;\r\n }\r\n }\r\n\r\n /**\r\n * Make passed or default working table element width fixed\r\n * @param {TableElement} tbl optional table DOM element\r\n */\r\n setFixedLayout(tbl = this.dom()) {\r\n let colWidths = this.colWidths;\r\n let tableWidth = tbl.clientWidth;\r\n\r\n if (colWidths.length > 0) {\r\n let defaultWidth = this.defaultColWidth;\r\n tableWidth = colWidths\r\n .reduce((x, y) =>\r\n parseInt((x || defaultWidth), 10) +\r\n parseInt((y || defaultWidth), 10)\r\n );\r\n }\r\n\r\n tbl.style.width = `${tableWidth}px`;\r\n tbl.style.tableLayout = 'fixed';\r\n }\r\n\r\n /**\r\n * Set passed or default working table columns' widths with configuration\r\n * values\r\n * @param {TableElement} tbl optional table DOM element\r\n */\r\n setColWidths(tbl = this.dom()) {\r\n let colWidths = this.colWidths;\r\n if (colWidths.length === 0) {\r\n return;\r\n }\r\n\r\n let colTags = tag(tbl, 'col');\r\n let tblHasColTag = colTags.length > 0;\r\n let frag = !tblHasColTag ? doc.createDocumentFragment() : null;\r\n\r\n this.eachCol((k) => {\r\n let col;\r\n if (tblHasColTag) {\r\n col = colTags[k];\r\n } else {\r\n col = createElm('col');\r\n frag.appendChild(col);\r\n }\r\n col.style.width = colWidths[k];\r\n });\r\n\r\n if (!tblHasColTag) {\r\n tbl.insertBefore(frag, tbl.firstChild);\r\n }\r\n }\r\n\r\n /**\r\n * Exclude rows from actions\r\n */\r\n setExcludeRows() {\r\n if (!this.hasExcludedRows) {\r\n return;\r\n }\r\n this.excludeRows.forEach((rowIdx) => this.validateRow(rowIdx, true));\r\n }\r\n\r\n /**\r\n * Clear all the filters' values\r\n */\r\n clearFilters() {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-clearing-filters', this);\r\n this.onBeforeReset(this, this.getFiltersValue());\r\n\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n this.setFilterValue(i, '');\r\n }\r\n\r\n this.filter();\r\n\r\n this.onAfterReset(this);\r\n this.emitter.emit('after-clearing-filters', this);\r\n }\r\n\r\n /**\r\n * Return the ID of the current active filter\r\n * @return {String}\r\n */\r\n getActiveFilterId() {\r\n return this.activeFilterId;\r\n }\r\n\r\n /**\r\n * Set the ID of the current active filter\r\n * @param {String} filterId Element ID\r\n */\r\n setActiveFilterId(filterId) {\r\n this.activeFilterId = filterId;\r\n }\r\n\r\n /**\r\n * Return the column index for a given filter ID\r\n * @param {string} [filterId=''] Filter ID\r\n * @return {Number} Column index\r\n */\r\n getColumnIndexFromFilterId(filterId = '') {\r\n let idx = filterId.split('_')[0];\r\n idx = idx.split(this.prfxFlt)[1];\r\n return parseInt(idx, 10);\r\n }\r\n\r\n /**\r\n * Build filter element ID for a given column index\r\n * @param {any} colIndex\r\n * @return {String} Filter element ID string\r\n * @private\r\n */\r\n buildFilterId(colIndex) {\r\n return `${this.prfxFlt}${colIndex}_${this.id}`;\r\n }\r\n\r\n /**\r\n * Check if has external filters\r\n * @returns {Boolean}\r\n * @private\r\n */\r\n isExternalFlt() {\r\n return this.externalFltIds.length > 0;\r\n }\r\n\r\n /**\r\n * Returns styles path\r\n * @returns {String}\r\n * @private\r\n */\r\n getStylePath() {\r\n return defaultsStr(this.config.style_path, this.basePath + 'style/');\r\n }\r\n\r\n /**\r\n * Returns main stylesheet path\r\n * @returns {String}\r\n * @private\r\n */\r\n getStylesheetPath() {\r\n return defaultsStr(this.config.stylesheet,\r\n this.getStylePath() + 'tablefilter.css');\r\n }\r\n\r\n /**\r\n * Returns themes path\r\n * @returns {String}\r\n * @private\r\n */\r\n getThemesPath() {\r\n return defaultsStr(this.config.themes_path,\r\n this.getStylePath() + 'themes/');\r\n }\r\n\r\n /**\r\n * Make specified column's filter active\r\n * @param colIndex Index of a column\r\n */\r\n activateFilter(colIndex) {\r\n if (isUndef(colIndex)) {\r\n return;\r\n }\r\n this.setActiveFilterId(this.getFilterId(colIndex));\r\n }\r\n\r\n /**\r\n * Determine if passed filter column implements exact query match\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\r\n isExactMatch(colIndex) {\r\n let fltType = this.getFilterType(colIndex);\r\n return this.exactMatchByCol[colIndex] || this.exactMatch ||\r\n fltType !== INPUT;\r\n }\r\n\r\n /**\r\n * Check if passed row is valid\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\r\n isRowValid(rowIndex) {\r\n return this.getValidRows().indexOf(rowIndex) !== -1;\r\n }\r\n\r\n /**\r\n * Check if passed row is visible\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\r\n isRowDisplayed(rowIndex) {\r\n let row = this.dom().rows[rowIndex];\r\n return this.getRowDisplay(row) === '';\r\n }\r\n\r\n /**\r\n * Check if specified column filter ignores diacritics.\r\n * Note this is only applicable to input filter types.\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\r\n ignoresDiacritics(colIndex) {\r\n let ignoreDiac = this.ignoreDiacritics;\r\n if (isArray(ignoreDiac)) {\r\n return ignoreDiac[colIndex];\r\n }\r\n return Boolean(ignoreDiac);\r\n }\r\n\r\n /**\r\n * Return clear all text for specified filter column\r\n * @param {Number} colIndex Column index\r\n * @return {String}\r\n */\r\n getClearFilterText(colIndex) {\r\n let clearText = this.clearFilterText;\r\n if (isArray(clearText)) {\r\n return clearText[colIndex];\r\n }\r\n return clearText;\r\n }\r\n\r\n /**\r\n * Column iterator invoking continue and break condition callbacks if any\r\n * then calling supplied callback for each item\r\n * @param {Function} [fn=EMPTY_FN] callback\r\n * @param {Function} [continueFn=EMPTY_FN] continue condition callback\r\n * @param {Function} [breakFn=EMPTY_FN] break condition callback\r\n */\r\n eachCol(fn = EMPTY_FN, continueFn = EMPTY_FN, breakFn = EMPTY_FN) {\r\n let len = this.getCellsNb(this.refRow);\r\n for (let i = 0; i < len; i++) {\r\n if (continueFn(i) === true) {\r\n continue;\r\n }\r\n if (breakFn(i) === true) {\r\n break;\r\n }\r\n fn(i);\r\n }\r\n }\r\n\r\n /**\r\n * Rows iterator starting from supplied row index or defaulting to reference\r\n * row index. Closure function accepts a callback function and optional\r\n * continue and break callbacks.\r\n * @param {Number} startIdx Row index from which filtering starts\r\n */\r\n eachRow(startIdx = this.refRow) {\r\n return (fn = EMPTY_FN, continueFn = EMPTY_FN, breakFn = EMPTY_FN) => {\r\n let rows = this.dom().rows;\r\n let len = this.getRowsNb(true);\r\n for (let i = startIdx; i < len; i++) {\r\n if (continueFn(rows[i], i) === true) {\r\n continue;\r\n }\r\n if (breakFn(rows[i], i) === true) {\r\n break;\r\n }\r\n fn(rows[i], i);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Check if passed script or stylesheet is already imported\r\n * @param {String} filePath Ressource path\r\n * @param {String} type Possible values: 'script' or 'link'\r\n * @return {Boolean}\r\n */\r\n isImported(filePath, type = 'script') {\r\n let imported = false,\r\n attr = type === 'script' ? 'src' : 'href',\r\n files = tag(doc, type);\r\n for (let i = 0, len = files.length; i < len; i++) {\r\n if (isUndef(files[i][attr])) {\r\n continue;\r\n }\r\n if (files[i][attr].match(filePath)) {\r\n imported = true;\r\n break;\r\n }\r\n }\r\n return imported;\r\n }\r\n\r\n /**\r\n * Import script or stylesheet\r\n * @param {String} fileId Ressource ID\r\n * @param {String} filePath Ressource path\r\n * @param {Function} callback Callback\r\n * @param {String} type Possible values: 'script' or 'link'\r\n */\r\n import(fileId, filePath, callback, type = 'script') {\r\n if (this.isImported(filePath, type)) {\r\n return;\r\n }\r\n let o = this,\r\n isLoaded = false,\r\n file,\r\n head = tag(doc, 'head')[0];\r\n\r\n if (type.toLowerCase() === 'link') {\r\n file = createElm('link',\r\n ['id', fileId], ['type', 'text/css'],\r\n ['rel', 'stylesheet'], ['href', filePath]\r\n );\r\n } else {\r\n file = createElm('script',\r\n ['id', fileId],\r\n ['type', 'text/javascript'], ['src', filePath]\r\n );\r\n }\r\n\r\n //Browser <> IE onload event works only for scripts, not for stylesheets\r\n file.onload = file.onreadystatechange = () => {\r\n if (!isLoaded &&\r\n (!this.readyState || this.readyState === 'loaded' ||\r\n this.readyState === 'complete')) {\r\n isLoaded = true;\r\n if (typeof callback === 'function') {\r\n callback.call(null, o);\r\n }\r\n }\r\n };\r\n file.onerror = () => {\r\n throw new Error(`TableFilter could not load: ${filePath}`);\r\n };\r\n head.appendChild(file);\r\n }\r\n\r\n /**\r\n * Check if table has filters grid\r\n * @return {Boolean}\r\n */\r\n isInitialized() {\r\n return this.initialized;\r\n }\r\n\r\n /**\r\n * Get list of filter IDs\r\n * @return {Array} List of filters ids\r\n */\r\n getFiltersId() {\r\n return this.fltIds || [];\r\n }\r\n\r\n /**\r\n * Get filtered (valid) rows indexes\r\n * @param {Boolean} reCalc Force calculation of filtered rows list\r\n * @return {Array} List of row indexes\r\n */\r\n getValidRows(reCalc) {\r\n if (!reCalc) {\r\n return this.validRowsIndex;\r\n }\r\n\r\n this.validRowsIndex = [];\r\n\r\n let eachRow = this.eachRow();\r\n eachRow((row) => {\r\n if (!this.paging) {\r\n if (this.getRowDisplay(row) !== NONE) {\r\n this.validRowsIndex.push(row.rowIndex);\r\n }\r\n } else {\r\n if (row.getAttribute('validRow') === 'true' ||\r\n row.getAttribute('validRow') === null) {\r\n this.validRowsIndex.push(row.rowIndex);\r\n }\r\n }\r\n });\r\n return this.validRowsIndex;\r\n }\r\n\r\n /**\r\n * Get the index of the row containing the filters\r\n * @return {Number}\r\n */\r\n getFiltersRowIndex() {\r\n return this.filtersRowIndex;\r\n }\r\n\r\n /**\r\n * Get the index of the headers row\r\n * @return {Number}\r\n */\r\n getHeadersRowIndex() {\r\n return this.headersRow;\r\n }\r\n\r\n /**\r\n * Get the row index from where the filtering process start (1st filterable\r\n * row)\r\n * @return {Number}\r\n */\r\n getStartRowIndex() {\r\n return this.refRow;\r\n }\r\n\r\n /**\r\n * Get the index of the last row\r\n * @return {Number}\r\n */\r\n getLastRowIndex() {\r\n let nbRows = this.getRowsNb(true);\r\n return (nbRows - 1);\r\n }\r\n\r\n /**\r\n * Determine whether the specified column has one of the passed types\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [types=[]] List of column types\r\n * @return {Boolean}\r\n */\r\n hasType(colIndex, types = []) {\r\n if (this.colTypes.length === 0) {\r\n return false;\r\n }\r\n let colType = this.colTypes[colIndex];\r\n if (isObj(colType)) {\r\n colType = colType.type;\r\n }\r\n return types.indexOf(colType) !== -1;\r\n }\r\n\r\n /**\r\n * Get the header DOM element for a given column index\r\n * @param {Number} colIndex Column index\r\n * @return {Element}\r\n */\r\n getHeaderElement(colIndex) {\r\n let table = this.gridLayout ? this.Mod.gridLayout.headTbl : this.dom();\r\n let tHead = tag(table, 'thead');\r\n let rowIdx = this.getHeadersRowIndex();\r\n let header;\r\n if (tHead.length === 0) {\r\n header = table.rows[rowIdx].cells[colIndex];\r\n }\r\n if (tHead.length === 1) {\r\n header = tHead[0].rows[rowIdx].cells[colIndex];\r\n }\r\n return header;\r\n }\r\n\r\n /**\r\n * Return the list of headers' text\r\n * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns\r\n * @return {Array} list of headers' text\r\n */\r\n getHeadersText(excludeHiddenCols = false) {\r\n let headers = [];\r\n this.eachCol(\r\n (j) => {\r\n let header = this.getHeaderElement(j);\r\n let headerText = getFirstTextNode(header);\r\n headers.push(headerText);\r\n },\r\n // continue condition function\r\n (j) => {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n return this.extension('colsVisibility').isColHidden(j);\r\n }\r\n return false;\r\n }\r\n );\r\n return headers;\r\n }\r\n\r\n /**\r\n * Return the filter type for a specified column\r\n * @param {Number} colIndex Column's index\r\n * @return {String}\r\n */\r\n getFilterType(colIndex) {\r\n return this.filterTypes[colIndex];\r\n }\r\n\r\n /**\r\n * Get the total number of filterable rows\r\n * @return {Number}\r\n */\r\n getFilterableRowsNb() {\r\n return this.getRowsNb(false);\r\n }\r\n\r\n /**\r\n * Return the total number of valid rows\r\n * @param {Boolean} [reCalc=false] Forces calculation of filtered rows\r\n * @return {Number}\r\n */\r\n getValidRowsNb(reCalc = false) {\r\n return this.getValidRows(reCalc).length;\r\n }\r\n\r\n /**\r\n * Return the working DOM element\r\n * @return {HTMLTableElement}\r\n */\r\n dom() {\r\n return this.tbl;\r\n }\r\n\r\n /**\r\n * Return the decimal separator for supplied column as per column type\r\n * configuration or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} '.' or ','\r\n */\r\n getDecimal(colIndex) {\r\n let decimal = this.decimalSeparator;\r\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n let colType = this.colTypes[colIndex];\r\n if (colType.hasOwnProperty('decimal')) {\r\n decimal = colType.decimal;\r\n }\r\n }\r\n return decimal;\r\n }\r\n\r\n /**\r\n * Get the configuration object (literal object)\r\n * @return {Object}\r\n */\r\n config() {\r\n return this.cfg;\r\n }\r\n}\r\n","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Traditional Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-TW')\n *\n */\naddLocale('zh-TW', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年',\n 'weekdays': '星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}點{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分鐘?,點|時,日|號,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '後天', 'value': 2 },\n { 'name': 'day', 'src': '大後天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '這', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-TW\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Simplified Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-CN')\n *\n */\naddLocale('zh-CN', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒钟,分钟,小时,天,个星期|周,个月,年',\n 'weekdays': '星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}点{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分钟?,点|时,日|号,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '后天', 'value': 2 },\n { 'name': 'day', 'src': '大后天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '后', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '这', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-CN\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Swedish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('sv')\n *\n */\naddLocale('sv', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et',\n 'months': 'jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag',\n 'numerals': 'noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio',\n 'tokens': 'den,för|for',\n 'articles': 'den',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar', 'value': -2 },\n { 'name': 'day', 'src': 'går|i går|igår|gar|i gar|igar', 'value': -1 },\n { 'name': 'day', 'src': 'dag|i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'morgon|i morgon|imorgon', 'value': 1 },\n { 'name': 'day', 'src': 'över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon', 'value': 2 },\n { 'name': 'sign', 'src': 'sedan|sen', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i förra|förra|i forra|forra', 'value': -1 },\n { 'name': 'shift', 'src': 'denna', 'value': 0 },\n { 'name': 'shift', 'src': 'nästa|nasta', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"sv\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Russian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ru')\n *\n */\naddLocale('ru', {\n 'firstDayOfWeekYear': 1,\n 'units': 'миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году',\n 'months': 'янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь',\n 'weekdays': 'воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб',\n 'numerals': 'ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять',\n 'tokens': 'в|на,г\\\\.?(?:ода)?',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy} г.',\n 'long': '{d} {month} {yyyy} г., {time}',\n 'full': '{weekday}, {d} {month} {yyyy} г., {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'в',\n 'ampm': ' утра, вечера',\n 'modifiers': [\n { 'name': 'day', 'src': 'позавчера', 'value': -2 },\n { 'name': 'day', 'src': 'вчера', 'value': -1 },\n { 'name': 'day', 'src': 'сегодня', 'value': 0 },\n { 'name': 'day', 'src': 'завтра', 'value': 1 },\n { 'name': 'day', 'src': 'послезавтра', 'value': 2 },\n { 'name': 'sign', 'src': 'назад', 'value': -1 },\n { 'name': 'sign', 'src': 'через', 'value': 1 },\n { 'name': 'shift', 'src': 'прошл:ый|ой|ом', 'value': -1 },\n { 'name': 'shift', 'src': 'следующ:ий|ей|ем', 'value': 1 }\n ],\n 'relative': function(num, unit, ms, format) {\n var numberWithUnit, last = num.toString().slice(-1), mult;\n switch(true) {\n case num >= 11 && num <= 15: mult = 3; break;\n case last == 1: mult = 1; break;\n case last >= 2 && last <= 4: mult = 2; break;\n default: mult = 3;\n }\n numberWithUnit = num + ' ' + this['units'][(mult * 8) + unit];\n switch(format) {\n case 'duration': return numberWithUnit;\n case 'past': return numberWithUnit + ' назад';\n case 'future': return 'через ' + numberWithUnit;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ],\n 'timeFrontParse': [\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ru\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Portuguese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pt')\n *\n */\naddLocale('pt', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s',\n 'months': 'jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|',\n 'weekdays': 'dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado',\n 'numerals': 'zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez',\n 'tokens': 'a,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{Weekday}, {d} de {Month} de {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'às',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteontem', 'value': -2 },\n { 'name': 'day', 'src': 'ontem', 'value': -1 },\n { 'name': 'day', 'src': 'hoje', 'value': 0 },\n { 'name': 'day', 'src': 'amanh:ã|a', 'value': 1 },\n { 'name': 'sign', 'src': 'atrás|atras|há|ha', 'value': -1 },\n { 'name': 'sign', 'src': 'daqui a', 'value': 1 },\n { 'name': 'shift', 'src': 'passad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {1?} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pt\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Polish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pl')\n *\n */\naddLocale('pl', {\n 'plural': true,\n 'units': 'milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat',\n 'months': 'sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień',\n 'weekdays': 'nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę',\n 'numerals': 'zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć',\n 'tokens': 'w|we,roku',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full' : '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'o',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'przedwczoraj', 'value': -2 },\n { 'name': 'day', 'src': 'wczoraj', 'value': -1 },\n { 'name': 'day', 'src': 'dzisiaj|dziś', 'value': 0 },\n { 'name': 'day', 'src': 'jutro', 'value': 1 },\n { 'name': 'day', 'src': 'pojutrze', 'value': 2 },\n { 'name': 'sign', 'src': 'temu|przed', 'value': -1 },\n { 'name': 'sign', 'src': 'za', 'value': 1 },\n { 'name': 'shift', 'src': 'zeszły|zeszła|ostatni|ostatnia', 'value': -1 },\n { 'name': 'shift', 'src': 'następny|następna|następnego|przyszły|przyszła|przyszłego', 'value': 1 }\n ],\n 'relative': function (num, unit, ms, format) {\n // special cases for relative days\n var DAY = 4;\n if (unit === DAY) {\n if (num === 1 && format === 'past') return 'wczoraj';\n if (num === 1 && format === 'future') return 'jutro';\n if (num === 2 && format === 'past') return 'przedwczoraj';\n if (num === 2 && format === 'future') return 'pojutrze';\n }\n\n var mult;\n var last = +num.toFixed(0).slice(-1);\n var last2 = +num.toFixed(0).slice(-2);\n switch (true) {\n case num === 1: mult = 0; break;\n case last2 >= 12 && last2 <= 14: mult = 2; break;\n case last >= 2 && last <= 4: mult = 1; break;\n default: mult = 2;\n }\n var text = this['units'][(mult * 8) + unit];\n var prefix = num + ' ';\n\n // changing to accusative case for 'past' and 'future' formats\n // (only singular feminine unit words are different in accusative, each of which ends with 'a')\n if ((format === 'past' || format === 'future') && num === 1) {\n text = text.replace(/a$/, 'ę');\n }\n\n text = prefix + text;\n switch (format) {\n case 'duration': return text;\n case 'past': return text + ' temu';\n case 'future': return 'za ' + text;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{shift} {unit:5-7}',\n '{0} {shift?} {weekday}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{date} {months} {year?} {1?}',\n '{0?} {shift?} {weekday}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pl\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Norwegian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('no')\n *\n */\naddLocale('no', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember',\n 'weekdays': 'søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag',\n 'numerals': 'en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short':'d. {d}. {month} {yyyy}',\n 'long': 'den {d}. {month} {yyyy} {H}:{mm}',\n 'full': '{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'overimorgen|overmorgen|over i morgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i siste|siste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'neste', 'value': 1 }\n ],\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{date} {month}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date?} {month}\\\\.? {year}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"no\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Dutch locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('nl')\n *\n */\naddLocale('nl', {\n 'plural': true,\n 'units': 'milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar',\n 'months': 'jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za',\n 'numerals': 'nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {time}',\n 'full': '{weekday} {d} {Month} {yyyy} {time}',\n 'stamp': '{dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': \"'s,om\",\n 'modifiers': [\n { 'name': 'day', 'src': 'gisteren', 'value': -1 },\n { 'name': 'day', 'src': 'vandaag', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'overmorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'geleden', 'value': -1 },\n { 'name': 'sign', 'src': 'vanaf nu', 'value': 1 },\n { 'name': 'shift', 'src': 'laatste|vorige|afgelopen', 'value': -1 },\n { 'name': 'shift', 'src': 'volgend:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"nl\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Korean locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ko')\n *\n */\naddLocale('ko', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'units': '밀리초,초,분,시간,일,주,개월|달,년|해',\n 'weekdays': '일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|',\n 'numerals': '영|제로,일|한,이,삼,사,오,육,칠,팔,구,십',\n 'short': '{yyyy}.{MM}.{dd}',\n 'medium': '{yyyy}년 {M}월 {d}일',\n 'long': '{yyyy}년 {M}월 {d}일 {time}',\n 'full': '{yyyy}년 {M}월 {d}일 {weekday} {time}',\n 'stamp': '{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}',\n 'time': '{tt} {h}시 {mm}분',\n 'past': '{num}{unit} {sign}',\n 'future': '{num}{unit} {sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',초,분,시,일,,월,년',\n 'ampm': '오전,오후',\n 'modifiers': [\n { 'name': 'day', 'src': '그저께', 'value': -2 },\n { 'name': 'day', 'src': '어제', 'value': -1 },\n { 'name': 'day', 'src': '오늘', 'value': 0 },\n { 'name': 'day', 'src': '내일', 'value': 1 },\n { 'name': 'day', 'src': '모레', 'value': 2 },\n { 'name': 'sign', 'src': '전', 'value': -1 },\n { 'name': 'sign', 'src': '후', 'value': 1 },\n { 'name': 'shift', 'src': '지난|작', 'value': -1 },\n { 'name': 'shift', 'src': '이번|올', 'value': 0 },\n { 'name': 'shift', 'src': '다음|내', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit} {sign}',\n '{shift?} {unit:5-7}',\n '{year?} {month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{year?} {month?} {date} {weekday?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ko\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Japanese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ja')\n *\n */\naddLocale('ja', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'units': 'ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度',\n 'weekdays': '日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'timeSuffixes': ',秒,分,時,日,,月,年度?',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{time} {weekday}',\n 'stamp': '{yyyy}年{M}月{d}日 {H}:{mm} {dow}',\n 'time': '{tt}{h}時{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'ampm': '午前,午後',\n 'modifiers': [\n { 'name': 'day', 'src': '一昨々日|前々々日', 'value': -3 },\n { 'name': 'day', 'src': '一昨日|おととい|前々日', 'value': -2 },\n { 'name': 'day', 'src': '昨日|前日', 'value': -1 },\n { 'name': 'day', 'src': '今日|当日|本日', 'value': 0 },\n { 'name': 'day', 'src': '明日|翌日|次日', 'value': 1 },\n { 'name': 'day', 'src': '明後日|翌々日', 'value': 2 },\n { 'name': 'day', 'src': '明々後日|翌々々日', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'edge', 'src': '始|初日|頭', 'value': -2 },\n { 'name': 'edge', 'src': '末|尻', 'value': 2 },\n { 'name': 'edge', 'src': '末日', 'value': 1 },\n { 'name': 'shift', 'src': '一昨々|前々々', 'value': -3 },\n { 'name': 'shift', 'src': '一昨|前々|先々', 'value': -2 },\n { 'name': 'shift', 'src': '先|昨|去|前', 'value': -1 },\n { 'name': 'shift', 'src': '今|本|当', 'value': 0 },\n { 'name': 'shift', 'src': '来|明|翌|次', 'value': 1 },\n { 'name': 'shift', 'src': '明後|翌々|次々|再来|さ来', 'value': 2 },\n { 'name': 'shift', 'src': '明々後|翌々々', 'value': 3 }\n ],\n 'parse': [\n '{month}{edge}',\n '{num}{unit}{sign}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{unit:5}{weekday?}',\n '{shift}{unit:7}{month}{edge}',\n '{shift}{unit:7}{month?}{date?}',\n '{shift}{unit:6}{edge?}{date?}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ja\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Italian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('it')\n *\n */\naddLocale('it', {\n 'plural': true,\n 'units': 'millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i',\n 'months': 'gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|',\n 'weekdays': 'dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|',\n 'numerals': \"zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci\",\n 'tokens': \"l'|la|il\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'alle',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'ieri', 'value': -1 },\n { 'name': 'day', 'src': 'oggi', 'value': 0 },\n { 'name': 'day', 'src': 'domani', 'value': 1 },\n { 'name': 'day', 'src': 'dopodomani', 'value': 2 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'da adesso', 'value': 1 },\n { 'name': 'shift', 'src': 'scors:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'prossim:o|a', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday} {shift?}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{day|weekday} {shift?}',\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 'timeSeparator': '.',\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, everyFn) {\n return rangeEvery(this, amount, false, everyFn);\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 collectUpdateDateArguments = require('./internal/collectUpdateDateArguments');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'set': function(d, args) {\n args = collectUpdateDateArguments(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, relativeFn) {\n return dateRelative(date, null, localeCode, relativeFn);\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 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 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 // istanbul ignore if\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 = /\\(([-+]\\d{2,4}|\\w{3,5})\\)$/;","'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 // istanbul ignore next\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] ? +match[1] : 1;\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 createDate = require('./createDate'),\n compareDate = require('./compareDate'),\n advanceDate = require('./advanceDate'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar'),\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, createDate(d, options, true), unit);\n };\n var until = function(date, d, options) {\n return getTimeDistanceForUnit(createDate(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\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\nmodule.exports = /^'?(\\d{1,2})$/;","'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 // istanbul ignore next\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 // This block cannot be reached unless ES5 methods are being shimmed.\n // istanbul ignore if\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 // 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 localeCheck: function(loc) {\n // Do not allow this format if the locale\n // uses a period as a time separator.\n return loc.timeSeparator !== '.';\n }\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: '{iyyyy}(?:-?{MM}(?:-?{dd}(?:T{ihh}(?::?{imm}(?::?{ss})?)?)?)?)?{tzOffset?}'\n }\n];\n\nmodule.exports = CoreParsingFormats;","'use strict';\n\nvar CoreParsingTokens = {\n 'yyyy': {\n param: 'year',\n src: '[-−+]?\\\\d{4,6}'\n },\n 'yy': {\n param: 'year',\n src: '\\\\d{2}'\n },\n 'y': {\n param: 'year',\n src: '\\\\d'\n },\n 'ayy': {\n param: 'year',\n src: '\\'\\\\d{2}'\n },\n 'MM': {\n param: 'month',\n src: '(?:1[012]|0?[1-9])'\n },\n 'dd': {\n param: 'date',\n src: '(?:3[01]|[12][0-9]|0?[1-9])'\n },\n 'hh': {\n param: 'hour',\n src: '(?:2[0-4]|[01]?[0-9])'\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 'tzHour': {\n src: '[-−+](?:2[0-4]|[01]?[0-9])'\n },\n 'tzMinute': {\n src: '[0-5]\\\\d'\n },\n 'iyyyy': {\n param: 'year',\n src: '(?:[-−+]?\\\\d{4}|[-−+]\\\\d{5,6})'\n },\n 'ihh': {\n param: 'hour',\n src: '(?:2[0-4]|[01][0-9])(?:[,.]\\\\d+)?'\n },\n 'imm': {\n param: 'minute',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'GMT': {\n param: 'utc',\n src: 'GMT'\n },\n 'Z': {\n param: 'utc',\n src: 'Z'\n },\n 'timestamp': {\n src: '\\\\d+'\n }\n};\n\nmodule.exports = CoreParsingTokens;","'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 CoreParsingTokens = require('../var/CoreParsingTokens'),\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 mathAliases = require('../../common/var/mathAliases'),\n isUndefined = require('../../common/internal/isUndefined'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n getOrdinalSuffix = require('../../common/internal/getOrdinalSuffix'),\n getArrayWithOffset = require('./getArrayWithOffset'),\n getRegNonCapturing = require('./getRegNonCapturing'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n iterateOverDateUnits = require('./iterateOverDateUnits'),\n arrayToRegAlternates = require('./arrayToRegAlternates'),\n fullwidthNumberHelpers = require('../../common/var/fullwidthNumberHelpers'),\n getAdjustedUnitForNumber = require('./getAdjustedUnitForNumber'),\n getParsingTokenWithSuffix = require('./getParsingTokenWithSuffix');\n\nvar hasOwn = coreUtilityAliases.hasOwn,\n 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 // TODO: rename to parse in next major version\n parseValue: function(str, param) {\n var map = this[param + 'Map'];\n if (hasOwn(map, str)) {\n return map[str];\n }\n return this.parseNumber(str, param);\n },\n\n // TODO: analyze performance of parsing first vs checking\n // numeralMap first.\n parseNumber: function(str, param) {\n var val;\n\n // Simple numerals such as \"one\" are mapped directly in\n // the numeral map so catch up front if there is a match.\n if (hasOwn(this.numeralMap, str)) {\n val = this.numeralMap[str];\n }\n\n // TODO: perf test isNaN vs other methods\n if (isNaN(val)) {\n val = this.parseRegularNumerals(str);\n }\n\n if (isNaN(val)) {\n val = this.parseIrregularNumerals(str);\n }\n\n if (param === '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 // TODO: perf test returning up front if no regular decimals exist\n parseRegularNumerals: function(str) {\n // Allow decimals as commas and the minus-sign as per ISO-8601.\n str = str.replace(/^−/, '-').replace(/,/, '.');\n\n // The unary plus operator here shows 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 return +str;\n },\n\n parseIrregularNumerals: function(str) {\n var place = 1, num = 0, lastWasPlace, isPlace, numeral, digit, arr;\n\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(format) {\n var loc = this, src, to;\n\n function getTokenSrc(token) {\n var suffix, src, tmp,\n opt = token.match(/\\?$/),\n nc = token.match(/^(\\d+)\\??$/),\n slice = token.match(/(\\d)(?:-(\\d))?/),\n param = token.replace(/[^a-z]+$/i, '');\n\n // Allowing alias tokens such as {time}\n if (tmp = getOwn(loc.parsingAliases, param)) {\n src = formatToSrc(tmp);\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 (tmp = getOwn(CoreParsingTokens, param)) {\n src = tmp.src;\n param = tmp.param || param;\n } else {\n tmp = getOwn(loc.parsingTokens, param) || getOwn(loc, param);\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 param = param.replace(/s$/, '');\n\n if (!tmp) {\n tmp = getOwn(loc.parsingTokens, param) || getOwn(loc, param + 's');\n }\n\n if (isString(tmp)) {\n src = tmp;\n suffix = loc[param + 'Suffix'];\n } else {\n\n // This is a hack to temporarily disallow parsing of single character\n // weekdays until the format can be changed to allow for this.\n if (param === 'weekday' && loc.code === 'ko') {\n tmp = filter(tmp, function(str) {\n return str.length > 1;\n });\n }\n\n if (slice) {\n tmp = filter(tmp, function(m, i) {\n var mod = i % (loc.units ? 8 : tmp.length);\n return mod >= slice[1] && mod <= (slice[2] || slice[1]);\n });\n }\n src = arrayToRegAlternates(tmp);\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(param);\n src = '(' + src + ')';\n }\n if (suffix) {\n // Date/time suffixes such as those in CJK\n src = getParsingTokenWithSuffix(param, src, suffix);\n }\n if (opt) {\n src += '?';\n }\n return src;\n }\n\n function formatToSrc(str) {\n\n // Make spaces optional\n str = str.replace(/ /g, ' ?');\n\n str = str.replace(/\\{([^,]+?)\\}/g, function(match, token) {\n var tokens = token.split('|');\n if (tokens.length > 1) {\n return getRegNonCapturing(map(tokens, getTokenSrc).join('|'));\n } else {\n return getTokenSrc(token);\n }\n });\n\n return str;\n }\n\n function parseInputFormat() {\n to = [];\n src = formatToSrc(format);\n }\n\n parseInputFormat();\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(standalone) {\n var src, sep;\n sep = getTimeSeparatorSrc(standalone);\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}(?:'+sep+'{minute?}(?:'+sep+'{second?})? {ampm?}| {ampm})';\n } else {\n src = '{hour}(?:'+sep+'{minute?}(?:'+sep+'{second?})?)';\n }\n return src;\n }\n\n function getTimeSeparatorSrc() {\n if (loc.timeSeparator) {\n return '[:' + loc.timeSeparator + ']';\n } else {\n return ':';\n }\n }\n\n function getTZOffsetFormat() {\n return '(?:{Z}|{GMT?}(?:{tzHour}(?::?{tzMinute}(?: \\\\([\\\\w\\\\s]+\\\\))?)?)?)?';\n }\n\n function buildParsingTokens() {\n forEachProperty(LocalizedParsingTokens, function(token, name) {\n var src = token.base ? getCoreTokensForBase(token.base) : token.src, arr;\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 getCoreTokensForBase(base) {\n return map(base.split('|'), function(key) {\n return CoreParsingTokens[key].src;\n }).join('|');\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.localeCheck && !df.localeCheck(loc)) {\n return;\n }\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}{tzOffset}', 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}',\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?} (?:at)? {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 '{0|months} {date?}{1?} of {shift} {unit:6-7}',\n '{0?} {num}{1?} {weekday} of {shift} {unit:6}',\n '{year?}[-.\\\\/\\\\s]?{months}[-.\\\\/\\\\s]{date}',\n '{date}[-.\\\\/\\\\s]{months}(?:[-.\\\\/\\\\s]{year|yy})?',\n '{weekday?}\\\\.?,? {months}\\\\.?,? {date}{1?},? {year?}',\n '{weekday?}\\\\.?,? {date} {months} {year}'\n ],\n 'timeFrontParse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{4?} {day|weekday}'\n ]\n};\n\nmodule.exports = EnglishLocaleBaseDefinition;","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar BritishEnglishDefinition = getEnglishVariant({\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {Month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = BritishEnglishDefinition;","'use strict';\n\nvar BritishEnglishDefinition = require('./BritishEnglishDefinition'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n CanadianEnglishDefinition = require('./CanadianEnglishDefinition');\n\nvar LazyLoadedLocales = {\n 'en-US': AmericanEnglishDefinition,\n 'en-GB': BritishEnglishDefinition,\n 'en-AU': BritishEnglishDefinition,\n 'en-CA': CanadianEnglishDefinition\n};\n\nmodule.exports = LazyLoadedLocales;","'use strict';\n\n// Static Methods\nrequire('./addLocale');\nrequire('./create');\nrequire('./getAllLocaleCodes');\nrequire('./getAllLocales');\nrequire('./getLocale');\nrequire('./removeLocale');\nrequire('./setLocale');\n\n// Instance Methods\nrequire('../number/day');\nrequire('../number/dayAfter');\nrequire('../number/dayAgo');\nrequire('../number/dayBefore');\nrequire('../number/dayFromNow');\nrequire('../number/days');\nrequire('../number/daysAfter');\nrequire('../number/daysAgo');\nrequire('../number/daysBefore');\nrequire('../number/daysFromNow');\nrequire('../number/duration');\nrequire('../number/hour');\nrequire('../number/hourAfter');\nrequire('../number/hourAgo');\nrequire('../number/hourBefore');\nrequire('../number/hourFromNow');\nrequire('../number/hours');\nrequire('../number/hoursAfter');\nrequire('../number/hoursAgo');\nrequire('../number/hoursBefore');\nrequire('../number/hoursFromNow');\nrequire('../number/millisecond');\nrequire('../number/millisecondAfter');\nrequire('../number/millisecondAgo');\nrequire('../number/millisecondBefore');\nrequire('../number/millisecondFromNow');\nrequire('../number/milliseconds');\nrequire('../number/millisecondsAfter');\nrequire('../number/millisecondsAgo');\nrequire('../number/millisecondsBefore');\nrequire('../number/millisecondsFromNow');\nrequire('../number/minute');\nrequire('../number/minuteAfter');\nrequire('../number/minuteAgo');\nrequire('../number/minuteBefore');\nrequire('../number/minuteFromNow');\nrequire('../number/minutes');\nrequire('../number/minutesAfter');\nrequire('../number/minutesAgo');\nrequire('../number/minutesBefore');\nrequire('../number/minutesFromNow');\nrequire('../number/month');\nrequire('../number/monthAfter');\nrequire('../number/monthAgo');\nrequire('../number/monthBefore');\nrequire('../number/monthFromNow');\nrequire('../number/months');\nrequire('../number/monthsAfter');\nrequire('../number/monthsAgo');\nrequire('../number/monthsBefore');\nrequire('../number/monthsFromNow');\nrequire('../number/second');\nrequire('../number/secondAfter');\nrequire('../number/secondAgo');\nrequire('../number/secondBefore');\nrequire('../number/secondFromNow');\nrequire('../number/seconds');\nrequire('../number/secondsAfter');\nrequire('../number/secondsAgo');\nrequire('../number/secondsBefore');\nrequire('../number/secondsFromNow');\nrequire('../number/week');\nrequire('../number/weekAfter');\nrequire('../number/weekAgo');\nrequire('../number/weekBefore');\nrequire('../number/weekFromNow');\nrequire('../number/weeks');\nrequire('../number/weeksAfter');\nrequire('../number/weeksAgo');\nrequire('../number/weeksBefore');\nrequire('../number/weeksFromNow');\nrequire('../number/year');\nrequire('../number/yearAfter');\nrequire('../number/yearAgo');\nrequire('../number/yearBefore');\nrequire('../number/yearFromNow');\nrequire('../number/years');\nrequire('../number/yearsAfter');\nrequire('../number/yearsAgo');\nrequire('../number/yearsBefore');\nrequire('../number/yearsFromNow');\nrequire('./addDays');\nrequire('./addHours');\nrequire('./addMilliseconds');\nrequire('./addMinutes');\nrequire('./addMonths');\nrequire('./addSeconds');\nrequire('./addWeeks');\nrequire('./addYears');\nrequire('./advance');\nrequire('./beginningOfDay');\nrequire('./beginningOfISOWeek');\nrequire('./beginningOfMonth');\nrequire('./beginningOfWeek');\nrequire('./beginningOfYear');\nrequire('./clone');\nrequire('./daysAgo');\nrequire('./daysFromNow');\nrequire('./daysInMonth');\nrequire('./daysSince');\nrequire('./daysUntil');\nrequire('./endOfDay');\nrequire('./endOfISOWeek');\nrequire('./endOfMonth');\nrequire('./endOfWeek');\nrequire('./endOfYear');\nrequire('./format');\nrequire('./get');\nrequire('./getISOWeek');\nrequire('./getUTCOffset');\nrequire('./getUTCWeekday');\nrequire('./getWeekday');\nrequire('./hoursAgo');\nrequire('./hoursFromNow');\nrequire('./hoursSince');\nrequire('./hoursUntil');\nrequire('./is');\nrequire('./isAfter');\nrequire('./isBefore');\nrequire('./isBetween');\nrequire('./isFriday');\nrequire('./isFuture');\nrequire('./isLastMonth');\nrequire('./isLastWeek');\nrequire('./isLastYear');\nrequire('./isLeapYear');\nrequire('./isMonday');\nrequire('./isNextMonth');\nrequire('./isNextWeek');\nrequire('./isNextYear');\nrequire('./isPast');\nrequire('./isSaturday');\nrequire('./isSunday');\nrequire('./isThisMonth');\nrequire('./isThisWeek');\nrequire('./isThisYear');\nrequire('./isThursday');\nrequire('./isToday');\nrequire('./isTomorrow');\nrequire('./isTuesday');\nrequire('./isUTC');\nrequire('./isValid');\nrequire('./isWednesday');\nrequire('./isWeekday');\nrequire('./isWeekend');\nrequire('./isYesterday');\nrequire('./iso');\nrequire('./millisecondsAgo');\nrequire('./millisecondsFromNow');\nrequire('./millisecondsSince');\nrequire('./millisecondsUntil');\nrequire('./minutesAgo');\nrequire('./minutesFromNow');\nrequire('./minutesSince');\nrequire('./minutesUntil');\nrequire('./monthsAgo');\nrequire('./monthsFromNow');\nrequire('./monthsSince');\nrequire('./monthsUntil');\nrequire('./relative');\nrequire('./relativeTo');\nrequire('./reset');\nrequire('./rewind');\nrequire('./secondsAgo');\nrequire('./secondsFromNow');\nrequire('./secondsSince');\nrequire('./secondsUntil');\nrequire('./set');\nrequire('./setISOWeek');\nrequire('./setUTC');\nrequire('./setWeekday');\nrequire('./weeksAgo');\nrequire('./weeksFromNow');\nrequire('./weeksSince');\nrequire('./weeksUntil');\nrequire('./yearsAgo');\nrequire('./yearsFromNow');\nrequire('./yearsSince');\nrequire('./yearsUntil');\n\n// Accessors\nrequire('./getOption');\nrequire('./setOption');\n\nmodule.exports = require('sugar-core');"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./node_modules/sugar-core/sugar-core.js","webpack:///./src/settings.js","webpack:///./src/dom.js","webpack:///./src/types.js","webpack:///./src/const.js","webpack:///./src/event.js","webpack:///./node_modules/sugar-date/date/build/buildNumberUnitMethodsCall.js","webpack:///./node_modules/sugar-date/date/build/buildDateUnitMethodsCall.js","webpack:///./src/string.js","webpack:///./src/root.js","webpack:///./src/feature.js","webpack:///./node_modules/sugar-date/date/var/DateUnitIndexes.js","webpack:///./node_modules/sugar-date/common/var/classChecks.js","webpack:///./node_modules/sugar-date/date/addLocale.js","webpack:///./node_modules/sugar-date/common/var/mathAliases.js","webpack:///./node_modules/sugar-date/date/var/LocaleHelpers.js","webpack:///./node_modules/sugar-date/date/build/buildRelativeAliasesCall.js","webpack:///./node_modules/sugar-date/common/var/coreUtilityAliases.js","webpack:///./src/modules/toolbar.js","webpack:///./node_modules/sugar-date/range/internal/Range.js","webpack:///./src/array.js","webpack:///./node_modules/sugar-date/common/internal/defineOnPrototype.js","webpack:///./src/number.js","webpack:///./node_modules/sugar-date/common/internal/callDateGet.js","webpack:///./node_modules/sugar-date/date/internal/getWeekday.js","webpack:///./node_modules/sugar-date/range/build/buildDateRangeUnitsCall.js","webpack:///./node_modules/sugar-date/date/internal/setWeekday.js","webpack:///./node_modules/sugar-date/common/var/namespaceAliases.js","webpack:///./node_modules/sugar-date/date/internal/createDate.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/getMonth.js","webpack:///./node_modules/sugar-date/date/internal/getYear.js","webpack:///./node_modules/sugar-date/date/var/DateUnits.js","webpack:///./node_modules/sugar-date/common/internal/isDefined.js","webpack:///./node_modules/sugar-date/common/internal/forEach.js","webpack:///./src/sort.js","webpack:///./node_modules/sugar-date/date/internal/cloneDate.js","webpack:///./node_modules/sugar-date/date/internal/getDate.js","webpack:///./node_modules/sugar-date/date/internal/setDate.js","webpack:///./node_modules/sugar-date/common/internal/callDateSet.js","webpack:///./node_modules/sugar-date/date/internal/setUnitAndLowerToEdge.js","webpack:///./node_modules/sugar-date/date/internal/dateIsValid.js","webpack:///./node_modules/sugar-date/date/internal/advanceDate.js","webpack:///./node_modules/sugar-date/date/internal/getNewDate.js","webpack:///./node_modules/sugar-date/date/internal/getLowerUnitIndex.js","webpack:///./node_modules/sugar-date/common/internal/isUndefined.js","webpack:///./node_modules/sugar-date/index.js","webpack:///./node_modules/sugar-date/range/internal/rangeIsValid.js","webpack:///./node_modules/sugar-date/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/common/internal/simpleMerge.js","webpack:///./src/modules/baseDropdown.js","webpack:///./src/cookie.js","webpack:///./src/modules/paging.js","webpack:///./src/modules/noResults.js","webpack:///./src/modules/alternateRows.js","webpack:///./src/modules/clearButton.js","webpack:///./src/modules/statusBar.js","webpack:///./src/modules/rowsCounter.js","webpack:///./src/modules/markActiveColumns.js","webpack:///./src/modules/popupFilter.js","webpack:///./src/modules/highlightKeywords.js","webpack:///./src/modules/loader.js","webpack:///./src/modules/gridLayout.js","webpack:///./src/modules/state.js","webpack:///./src/modules/help.js","webpack:///./src/modules/dateType.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/date/internal/getEnglishVariant.js","webpack:///./node_modules/diacritics/index.js","webpack:///./src/modules/storage.js","webpack:///./src/modules/hash.js","webpack:///./src/modules/checkList.js","webpack:///./src/modules/dropdown.js","webpack:///./src/emitter.js","webpack:///./node_modules/sugar-date/range/internal/getDateIncrementObject.js","webpack:///./node_modules/sugar-date/range/var/MULTIPLIERS.js","webpack:///./node_modules/sugar-date/range/internal/incrementDate.js","webpack:///./node_modules/sugar-date/range/internal/getDateForRange.js","webpack:///./node_modules/sugar-date/range/internal/getRangeMemberPrimitiveValue.js","webpack:///./node_modules/sugar-date/range/internal/cloneRangeMember.js","webpack:///./node_modules/sugar-date/date/internal/dateRelative.js","webpack:///./node_modules/sugar-date/date/internal/fullCompareDate.js","webpack:///./node_modules/sugar-date/date/internal/assertDateIsValid.js","webpack:///./node_modules/sugar-date/date/internal/getUTCOffset.js","webpack:///./node_modules/sugar-date/date/internal/getHours.js","webpack:///./node_modules/sugar-date/date/var/CoreOutputFormats.js","webpack:///./node_modules/sugar-date/date/internal/dateFormat.js","webpack:///./node_modules/sugar-date/date/internal/collectUpdateDateArguments.js","webpack:///./node_modules/sugar-date/date/internal/advanceDateWithArgs.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/AmericanEnglishDefinition.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/tablefilter.js","webpack:///./node_modules/sugar-date/locales/zh-TW.js","webpack:///./node_modules/sugar-date/locales/zh-CN.js","webpack:///./node_modules/sugar-date/locales/sv.js","webpack:///./node_modules/sugar-date/locales/ru.js","webpack:///./node_modules/sugar-date/locales/pt.js","webpack:///./node_modules/sugar-date/locales/pl.js","webpack:///./node_modules/sugar-date/locales/no.js","webpack:///./node_modules/sugar-date/locales/nl.js","webpack:///./node_modules/sugar-date/locales/ko.js","webpack:///./node_modules/sugar-date/locales/ja.js","webpack:///./node_modules/sugar-date/locales/it.js","webpack:///./node_modules/sugar-date/locales/fr.js","webpack:///./node_modules/sugar-date/locales/fi.js","webpack:///./node_modules/sugar-date/locales/es.js","webpack:///./node_modules/sugar-date/locales/de.js","webpack:///./node_modules/sugar-date/locales/da.js","webpack:///./node_modules/sugar-date/locales/ca.js","webpack:///./node_modules/sugar-date/locales/index.js","webpack:///./node_modules/sugar-date/range/years.js","webpack:///./node_modules/sugar-date/range/weeks.js","webpack:///./node_modules/sugar-date/range/union.js","webpack:///./node_modules/sugar-date/range/toString.js","webpack:///./node_modules/sugar-date/range/toArray.js","webpack:///./node_modules/sugar-date/range/internal/getRangeMemberNumericValue.js","webpack:///./node_modules/sugar-date/range/span.js","webpack:///./node_modules/sugar-date/range/seconds.js","webpack:///./node_modules/sugar-date/range/months.js","webpack:///./node_modules/sugar-date/range/minutes.js","webpack:///./node_modules/sugar-date/range/milliseconds.js","webpack:///./node_modules/sugar-date/range/isValid.js","webpack:///./node_modules/sugar-date/range/intersect.js","webpack:///./node_modules/sugar-date/range/hours.js","webpack:///./node_modules/sugar-date/range/every.js","webpack:///./node_modules/sugar-date/common/internal/periodSplit.js","webpack:///./node_modules/sugar-date/range/internal/getPrecision.js","webpack:///./node_modules/sugar-date/range/internal/getGreaterPrecision.js","webpack:///./node_modules/sugar-date/range/internal/incrementString.js","webpack:///./node_modules/sugar-date/range/internal/incrementNumber.js","webpack:///./node_modules/sugar-date/range/internal/valueIsNotInfinite.js","webpack:///./node_modules/sugar-date/range/internal/isValidRangeMember.js","webpack:///./node_modules/sugar-date/range/internal/buildDateRangeUnits.js","webpack:///./node_modules/sugar-date/range/days.js","webpack:///./node_modules/sugar-date/range/contains.js","webpack:///./node_modules/sugar-date/range/clone.js","webpack:///./node_modules/sugar-date/range/internal/rangeClamp.js","webpack:///./node_modules/sugar-date/range/clamp.js","webpack:///./node_modules/sugar-date/range/var/DURATION_REG.js","webpack:///./node_modules/sugar-date/range/var/FULL_CAPTURED_DURATION.js","webpack:///./node_modules/sugar-date/range/var/DurationTextFormats.js","webpack:///./node_modules/sugar-date/range/internal/createDateRangeFromString.js","webpack:///./node_modules/sugar-date/range/var/DateRangeConstructor.js","webpack:///./node_modules/sugar-date/date/range.js","webpack:///./node_modules/sugar-date/range/index.js","webpack:///./node_modules/sugar-date/date/setOption.js","webpack:///./node_modules/sugar-date/date/getOption.js","webpack:///./node_modules/sugar-date/date/yearsUntil.js","webpack:///./node_modules/sugar-date/date/yearsSince.js","webpack:///./node_modules/sugar-date/date/yearsFromNow.js","webpack:///./node_modules/sugar-date/date/yearsAgo.js","webpack:///./node_modules/sugar-date/date/weeksUntil.js","webpack:///./node_modules/sugar-date/date/weeksSince.js","webpack:///./node_modules/sugar-date/date/weeksFromNow.js","webpack:///./node_modules/sugar-date/date/weeksAgo.js","webpack:///./node_modules/sugar-date/date/setWeekday.js","webpack:///./node_modules/sugar-date/date/setUTC.js","webpack:///./node_modules/sugar-date/date/setISOWeek.js","webpack:///./node_modules/sugar-date/date/set.js","webpack:///./node_modules/sugar-date/date/secondsUntil.js","webpack:///./node_modules/sugar-date/date/secondsSince.js","webpack:///./node_modules/sugar-date/date/secondsFromNow.js","webpack:///./node_modules/sugar-date/date/secondsAgo.js","webpack:///./node_modules/sugar-date/date/rewind.js","webpack:///./node_modules/sugar-date/date/internal/getUnitIndexForParamName.js","webpack:///./node_modules/sugar-date/date/reset.js","webpack:///./node_modules/sugar-date/date/relativeTo.js","webpack:///./node_modules/sugar-date/date/internal/getAdjustedUnitForDate.js","webpack:///./node_modules/sugar-date/date/relative.js","webpack:///./node_modules/sugar-date/date/monthsUntil.js","webpack:///./node_modules/sugar-date/date/monthsSince.js","webpack:///./node_modules/sugar-date/date/monthsFromNow.js","webpack:///./node_modules/sugar-date/date/monthsAgo.js","webpack:///./node_modules/sugar-date/date/minutesUntil.js","webpack:///./node_modules/sugar-date/date/minutesSince.js","webpack:///./node_modules/sugar-date/date/minutesFromNow.js","webpack:///./node_modules/sugar-date/date/minutesAgo.js","webpack:///./node_modules/sugar-date/date/millisecondsUntil.js","webpack:///./node_modules/sugar-date/date/millisecondsSince.js","webpack:///./node_modules/sugar-date/date/millisecondsFromNow.js","webpack:///./node_modules/sugar-date/date/millisecondsAgo.js","webpack:///./node_modules/sugar-date/date/iso.js","webpack:///./node_modules/sugar-date/date/isYesterday.js","webpack:///./node_modules/sugar-date/date/isWeekend.js","webpack:///./node_modules/sugar-date/date/isWeekday.js","webpack:///./node_modules/sugar-date/date/isWednesday.js","webpack:///./node_modules/sugar-date/date/isValid.js","webpack:///./node_modules/sugar-date/date/internal/isUTC.js","webpack:///./node_modules/sugar-date/date/isUTC.js","webpack:///./node_modules/sugar-date/date/isTuesday.js","webpack:///./node_modules/sugar-date/date/isTomorrow.js","webpack:///./node_modules/sugar-date/date/isToday.js","webpack:///./node_modules/sugar-date/date/isThursday.js","webpack:///./node_modules/sugar-date/date/isThisYear.js","webpack:///./node_modules/sugar-date/date/isThisWeek.js","webpack:///./node_modules/sugar-date/date/isThisMonth.js","webpack:///./node_modules/sugar-date/date/isSunday.js","webpack:///./node_modules/sugar-date/date/isSaturday.js","webpack:///./node_modules/sugar-date/date/isPast.js","webpack:///./node_modules/sugar-date/date/isNextYear.js","webpack:///./node_modules/sugar-date/date/isNextWeek.js","webpack:///./node_modules/sugar-date/date/isNextMonth.js","webpack:///./node_modules/sugar-date/date/isMonday.js","webpack:///./node_modules/sugar-date/date/isLeapYear.js","webpack:///./node_modules/sugar-date/date/isLastYear.js","webpack:///./node_modules/sugar-date/date/isLastWeek.js","webpack:///./node_modules/sugar-date/date/isLastMonth.js","webpack:///./node_modules/sugar-date/date/isFuture.js","webpack:///./node_modules/sugar-date/date/internal/buildRelativeAliases.js","webpack:///./node_modules/sugar-date/date/isFriday.js","webpack:///./node_modules/sugar-date/date/isBetween.js","webpack:///./node_modules/sugar-date/date/isBefore.js","webpack:///./node_modules/sugar-date/date/isAfter.js","webpack:///./node_modules/sugar-date/date/internal/compareDay.js","webpack:///./node_modules/sugar-date/common/internal/trim.js","webpack:///./node_modules/sugar-date/date/is.js","webpack:///./node_modules/sugar-date/date/hoursUntil.js","webpack:///./node_modules/sugar-date/date/hoursSince.js","webpack:///./node_modules/sugar-date/date/hoursFromNow.js","webpack:///./node_modules/sugar-date/date/hoursAgo.js","webpack:///./node_modules/sugar-date/date/getWeekday.js","webpack:///./node_modules/sugar-date/date/getUTCWeekday.js","webpack:///./node_modules/sugar-date/date/getUTCOffset.js","webpack:///./node_modules/sugar-date/date/getISOWeek.js","webpack:///./node_modules/sugar-date/date/internal/createDateWithContext.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/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/var/ABBREVIATED_YEAR_REG.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/CoreParsingTokens.js","webpack:///./node_modules/sugar-date/date/var/LOCALE_ARRAY_FIELDS.js","webpack:///./node_modules/sugar-date/date/internal/getNewLocale.js","webpack:///./node_modules/sugar-date/date/var/CanadianEnglishDefinition.js","webpack:///./node_modules/sugar-date/date/var/EnglishLocaleBaseDefinition.js","webpack:///./node_modules/sugar-date/date/var/BritishEnglishDefinition.js","webpack:///./node_modules/sugar-date/date/var/LazyLoadedLocales.js","webpack:///./node_modules/sugar-date/date/index.js"],"names":["webpackUniversalModuleDefinition","root","factory","exports","module","define","amd","a","i","window","webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","installedModules","1","__webpack_require__","l","e","requireEnsure","promises","installedChunkData","promise","Promise","resolve","reject","head","document","getElementsByTagName","script","createElement","charset","timeout","nc","setAttribute","src","p","0","setTimeout","onScriptComplete","type","target","event","onerror","onload","clearTimeout","chunk","errorType","realSrc","error","Error","request","undefined","appendChild","all","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","r","value","n","__esModule","getDefault","getModuleExports","object","property","oe","err","console","jsonpArray","oldJsonpFunction","bind","slice","s","global","Sugar","SUGAR_GLOBAL","STATIC","INSTANCE","PROPERTY_DESCRIPTOR_SUPPORT","defineProperties","globalContext","getGlobal","testGlobal","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","this","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","mapObjectChainableToAllNamespaces","proto","methodNames","ownPropertyNames","nativeMethodProhibited","getOwnPropertyNames","internalToString","internalHasOwnProperty","key","writable","getOwn","setupGlobal","split","setGlobalProperties","isString","isFunction","isArray","NO_KEYS_IN_STRING_OBJECTS","TRIM_CHARS","HALF_WIDTH_PERIOD","HALF_WIDTH_COMMA","sugarObject","sugarArray","Array","sugarDate","Date","sugarString","String","sugarFunction","Number","Function","RegExp","isClass","className","str","wrapNamespace","defineStaticPolyfill","defineInstancePolyfill","assertCallable","TypeError","isDefined","isObjectType","isPrimitive","isPlainObject","hasValidPlainObjectPrototype","hasToString","hasConstructor","hasOwnEnumeratedProperties","objectProto","isArrayIndex","iterateOverSparseArray","fromIndex","loop","index","indexes","getSparseArrayIndexes","fromRight","sort","aLoop","spaceSplit","forEach","fullWidthNumberMap","trunc","isFinite","ceil","floor","padNumber","num","place","sign","base","replacement","abs","repeatString","result","replace","pow","min","chr","round","fromCharCode","privatePropertyAccessor","privateKey","buildClassChecks","knownTypes","addKnownType","buildClassCheck","globalObject","getConstructorClassCheck","ctorStr","getToStringClassCheck","buildPrimitiveClassCheck","toLowerCase","t","addCoreTypes","names","Set","Map","addArrayTypes","isKnownType","buildFullWidthNumber","hwp","hwc","fwn","digit","allCharsReg","DONT_ENUM_PROPS","arrayIndexOf","search","defaultFromIndex","increment","sparseIndexOf","arrayReduce","initialValue","count","defined","buildDontEnumFix","propertyIsEnumerable","forEachEnumerableProperty","buildChainableNativeMethodsFix","defineNativeMethodsOnChainable","dateTokens","addDateTokens","prefix","tokens","keys","assertNonNull","coercePrimitiveToObject","forceStringCoercion","charAt","every","context","some","map","filter","indexOf","lastIndexOf","eachFn","reduce","reduceFn","reduceRight","TRIM_REG","trim","boundArgs","$i","$len","bound","concat","now","getTime","toISOString","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","toJSON","hasISOSupport","UTC","defaultsBool","defaultVal","_types__WEBPACK_IMPORTED_MODULE_0__","defaultsStr","defaultsNb","isNaN","defaultsArr","defaultsFn","doc","_root__WEBPACK_IMPORTED_MODULE_0__","getText","node","_types__WEBPACK_IMPORTED_MODULE_1__","textContent","_string__WEBPACK_IMPORTED_MODULE_2__","innerText","getFirstTextNode","childNodes","nodeType","createElm","tag","removeElm","parentNode","removeChild","createText","txt","createTextNode","hasClass","ele","cls","supportsClassList","classList","contains","match","addClass","add","removeClass","remove","reg","createOpt","text","isSel","opt","createCheckItem","id","chkValue","labelText","extraAttr","li","label","check","elm","getElementById","tagname","documentElement","__webpack_exports__","isEmpty","EMPTY_FN","isObj","isFn","isNumber","isBoolean","isUndef","isNull","AUTO_FILTER_DELAY","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","addEvt","func","capture","addEventListener","attachEvent","removeEvt","removeEventListener","detachEvent","stopEvt","evt","stopPropagation","cancelBubble","cancelEvt","preventDefault","returnValue","targetEvt","srcElement","keyCode","charCode","which","isKeyPressed","scope","boundFnName","buildNumberUnitMethods","buildDateUnitMethods","rgxEsc","matchCase","term","exactMatch","modifier","diacritics__WEBPACK_IMPORTED_MODULE_0__","test","toCamelCase","p1","p2","toUpperCase","self","_typeof","NOT_IMPLEMENTED","Feature","tf","_this","_classCallCheck","meta","feature","altName","_string__WEBPACK_IMPORTED_MODULE_0__","enabled","config","emitter","initialized","on","destroy","_createClass","init","reset","enable","disable","isEnabled","HOURS_INDEX","DAY_INDEX","WEEK_INDEX","MONTH_INDEX","YEAR_INDEX","isSerializable","isDate","isRegExp","isSet","isMap","isError","NATIVE_TYPES","localeManager","defineStatic","addLocale","code","set","English","LazyLoadedLocales","AmericanEnglishDefinition","getNewLocale","buildLocales","LocaleManager","loc","locales","fallback","current","getAll","def","compiledFormats","buildRelativeAliases","util","EVENTS","LEFT","RIGHT","CENTER","Toolbar","_Feature","f","_possibleConstructorReturn","_getPrototypeOf","toolbar","contCssClass","_settings__WEBPACK_IMPORTED_MODULE_2__","container_css_class","lContCssClass","left_cont_css_class","rContCssClass","right_cont_css_class","cContCssClass","center_cont_css_class","tgtId","target_id","cont","lCont","rCont","cCont","innerCont","left","center","right","isExternal","_inherits","_feature__WEBPACK_IMPORTED_MODULE_0__","container","_dom__WEBPACK_IMPORTED_MODULE_1__","gridLayout","Mod","tblMainCont","infDivCssClass","dom","insertBefore","firstChild","createContainer","_types__WEBPACK_IMPORTED_MODULE_3__","help","emit","position","css","div","tbl","captions","alwaysInstantiate","cloneRangeMember","Range","start","end","has","caseSensitive","sCase","Boolean","defineOnPrototype","ctor","parse","decimal","regex","unformatted","parseFloat","_utc","callDateGet","getWeekday","buildDateRangeUnits","setDate","getDate","classChecks","mathAliases","setWeekday","dow","dir","currentWeekday","ndir","offset","sugarNumber","sugarRegExp","getExtendedDate","createDate","options","forceClone","date","getMonth","getYear","getDaysInMonth","DateUnits","multiplier","alias","ambiguous","ignoreCase","x","y","numSortAsc","numSortDesc","dateSortAsc","date1","date2","dateSortDesc","sortNumberStr","compareFn","numStr1","numStr2","num1","_number__WEBPACK_IMPORTED_MODULE_0__","num2","sortDateStr","locale","dateStr1","dateStr2","sugar_date__WEBPACK_IMPORTED_MODULE_1__","create","cloneDate","clone","callDateSet","safe","walkUnitDown","setUnitAndLowerToEdge","startIndex","stopIndex","unit","dateIsValid","updateDate","advanceDate","_dateOptions","getNewDate","DateUnitIndexes","getLowerUnitIndex","isUndefined","isValidRangeMember","rangeIsValid","range","methodDefineAliases","collectSimilarMethods","defineInstance","defineInstanceSimilar","LocaleHelpers","moveToBeginningOfWeek","moveToBeginningOfUnit","unitIndex","localeCode","getFirstDayOfWeek","moveToEndOfWeek","moveToEndOfUnit","getDateParam","iterateOverDateUnits","iterateOverDateParams","params","endIndex","run","resetLowerUnits","getHigherUnitIndex","callDateSetWithWeek","advance","prefer","weekdayDir","contextDate","upperUnitIndex","setUnit","unitName","checkMonth","fraction","setUpperUnit","setSpecificity","specificity","handleFraction","lowerUnit","monthHasShifted","targetMonth","setTime","millisecond","canDisambiguate","disambiguateHigherUnit","tzOffset","getTimezoneOffset","HALF_WIDTH_ZERO","FULL_WIDTH_ZERO","FULL_WIDTH_PERIOD","OPEN_BRACE","CLOSE_BRACE","simpleMerge","simpleClone","BaseDropdown","customSorter","_types__WEBPACK_IMPORTED_MODULE_2__","filter_options_sorter","col","comparer","isCustom","optsTxt","excludedOpts","sortOptions","colIndex","isCustomOptions","sortSlc","sortNumDesc","idx","hasType","_const__WEBPACK_IMPORTED_MODULE_3__","getDecimal","_sort__WEBPACK_IMPORTED_MODULE_1__","getLocale","refreshFilters","colIndexes","_this2","colIdx","values","getValues","build","linkedFilters","selectOptions","isValidLinkedValue","rowIdx","activeFilterIdx","disableExcludedOptions","paging","isRowValid","isRowDisplayed","linkFilters","activeFilterId","refreshAll","write","hours","expire","toGMTString","cookie","escape","read","cookieValue","unescape","substring","Paging","btnCssClass","_settings__WEBPACK_IMPORTED_MODULE_5__","btn_css_class","pageSlc","pageLengthSlc","pageLength","pageLengthTgtId","results_per_page_target_id","pgSlcCssClass","slc_css_class","pgInpCssClass","inp_css_class","resultsPerPage","results_per_page","hasResultsPerPage","resultsSlcCssClass","results_slc_css_class","resultsSpanCssClass","results_span_css_class","startPagingRow","nbPages","currentPageNb","btnNextPageText","btn_next_page_text","btnPrevPageText","btn_prev_page_text","btnLastPageText","btn_last_page_text","btnFirstPageText","btn_first_page_text","btnNextPageHtml","btn_next_page_html","enableIcons","btnPrevPageHtml","btn_prev_page_html","btnFirstPageHtml","btn_first_page_html","btnLastPageHtml","btn_last_page_html","pageText","page_text","ofText","of_text","nbPgSpanCssClass","nb_pages_css_class","hasBtns","btns","pageSelectorType","page_selector_type","_const__WEBPACK_IMPORTED_MODULE_4__","toolbarPosition","toolbar_position","_toolbar__WEBPACK_IMPORTED_MODULE_6__","onBeforeChangePage","on_before_change_page","onAfterChangePage","on_after_change_page","slcResultsTxt","btnNextCont","btnPrevCont","btnLastCont","btnFirstCont","pgCont","pgBefore","pgAfter","startRow","refRow","nrows","getRowsNb","_assertThisInitialized","slcIndex","selectedIndex","parseInt","nbOpts","next","nextIndex","changePage","prev","prevIndex","first","_detectKey","_event__WEBPACK_IMPORTED_MODULE_3__","sorted","blur","slcPagesChange","nextEvt","prevEvt","lastEvt","firstEvt","slcPages","setResultsPerPage","slc","btnNextSpan","btnPrevSpan","btnLastSpan","btnFirstSpan","innerHTML","btnNext","btnPrev","btnLast","btnFirst","targetEl","pgBeforeSpan","pgAfterSpan","pgSpan","setPagingInfo","fltGrid","validateAllRows","validRowsIndex","resetPagingInfo","changePageHandler","changePageResultsHandler","filterTable","validRows","getValidRows","style","visibility","z","groupByPage","rows","endPagingRow","h","getValidRowsNb","validRowIdx","getAttribute","rowDisplayed","display","getPage","setPage","cmd","isInitialized","btnEvt","cmdtype","_this3","slcResultsChange","ev","onChangeResultsPerPage","slcR","slcRText","slcROpts","slcRSpan","btn","currOpt","Option","removeResultsPerPage","selected","changeResultsPerPage","slcPagesSelIndex","nbFilterableRows","slcIdx","resetPage","pgNb","getPageNb","resetPageLength","pglenIndex","getPageLength","pageNumber","off","NoResults","no_results_message","content","_settings__WEBPACK_IMPORTED_MODULE_4__","customContainer","custom_container","customContainerId","custom_container_id","cssClass","css_class","onBeforeShow","on_before_show_msg","onAfterShow","on_after_show_msg","onBeforeHide","on_before_hide_msg","onAfterHide","on_after_hide_msg","nextSibling","toggle","hide","show","setWidth","width","headTbl","clientWidth","tHead","tBodies","AlternateRows","evenCss","even_row_css_class","oddCss","odd_row_css_class","processAll","processRowHandler","indexLen","j","setRowBg","processRow","arrIdx","isValid","removeRowBg","rowIndex","arrIndex","eachRow","row","ClearButton","btn_reset","targetId","_settings__WEBPACK_IMPORTED_MODULE_3__","tooltip","html","_toolbar__WEBPACK_IMPORTED_MODULE_5__","element","onClick","clearFilters","_types__WEBPACK_IMPORTED_MODULE_4__","resetEl","_event__WEBPACK_IMPORTED_MODULE_2__","fltReset","StatusBar","status_bar","msgContainer","labelContainer","delay","onBeforeShowMsg","onAfterShowMsg","msgFilter","msg_filter","msgPopulate","msg_populate","msgPopulateCheckList","msg_populate_checklist","msgChangePage","msg_change_page","msgClear","msg_clear","msgChangeResults","msg_change_results","msgResetPage","msg_reset_page","msgResetPageLength","msg_reset_page_length","msgSort","msg_sort","msgLoadExtensions","msg_load_extensions","msgLoadThemes","msg_load_themes","statusDiv","_dom__WEBPACK_IMPORTED_MODULE_2__","statusSpan","statusSpanText","message","_root__WEBPACK_IMPORTED_MODULE_1__","_this4","RowsCounter","rows_counter","fromToTextSeparator","separator","overText","over_text","_toolbar__WEBPACK_IMPORTED_MODULE_4__","onBeforeRefreshCounter","on_before_refresh_counter","onAfterRefreshCounter","on_after_refresh_counter","countDiv","countSpan","countText","refresh","totTxt","nbValidRows","pagingStartRow","pagingEndRow","getFilterableRowsNb","nbHiddenRows","MarkActiveColumns","mark_active_columns","headerCssClass","header_css_class","cellCssClass","cell_css_class","highlightColumn","highlight_column","onBeforeActiveColumn","on_before_active_column","onAfterActiveColumn","on_after_active_column","clearActiveColumns","markActiveColumn","eachCol","getHeaderElement","eachColumnCell","cell","header","querySelectorAll","_this5","PopupFilter","popup_filters","closeOnFiltering","_settings__WEBPACK_IMPORTED_MODULE_6__","close_on_filtering","iconPath","image","themesPath","activeIconPath","image_active","iconHtml","image_html","placeholderCssClass","placeholder_css_class","containerCssClass","div_css_class","adjustToContainer","adjust_to_container","onBeforeOpen","on_before_popup_filter_open","onAfterOpen","on_after_popup_filter_open","onBeforeClose","on_before_popup_filter_close","onAfterClose","on_after_popup_filter_close","fltSpans","fltIcons","filtersCache","fltElms","prfxDiv","closeAll","headerWidth","onMouseup","targetElm","activeFlt","close","externalFltIds","filtersRowIndex","headersRow","headers_row_index","buildIcons","setIconsState","cellIndex","changeState","buildAll","icon","getFilterType","contId","placeholder","isOpen","open","_root__WEBPACK_IMPORTED_MODULE_5__","flt","getFilterElement","focus","exceptIdx","fltType","_this6","iconImg","HighlightKeyword","highlightCssClass","highlight_css_class","unhighlightAll","_processTerm","highlight","hasChildNodes","children","termIdx","nodeValue","pn","nv","before","_dom__WEBPACK_IMPORTED_MODULE_0__","substr","after","unhighlight","highlightedNodes","nodeVal","replaceChild","normalize","highlightKeywords","reLk","lkOperator","reEq","eqOperator","reSt","stOperator","reEn","enOperator","reLe","leOperator","reGe","geOperator","reL","lwOperator","reG","grOperator","reD","dfOperator","BEFORE_ACTION_EVENTS","AFTER_ACTION_EVENTS","Loader","loader","closeDelay","onShow","on_show_loader","onHide","on_hide_loader","containerDiv","_root__WEBPACK_IMPORTED_MODULE_3__","displayLoader","GridLayout","grid_layout","height","mainContCssClass","cont_css_class","tbl_cont_css_class","headContCssClass","tbl_head_css_class","inf_grid_css_class","headRowIndex","headRows","headers_rows","filters","noHeaders","no_headers","defaultColWidth","default_col_width","colElms","prfxGridFltTd","prfxGridTh","sourceTblHtml","outerHTML","tblHasColTag","tblCont","headTblCont","setOverrides","setDefaultColWidths","setConfigWidth","tblW","initialTableWidth","_string__WEBPACK_IMPORTED_MODULE_3__","tH","hRow","sortTriggers","getSortTriggerIds","filtersRow","createFiltersRow","setHeadersRow","thead","tableLayout","setColWidths","scrollLeft","extension","asyncSort","triggerIds","setColumnElements","popupFilters","colWidths","k","colW","getHeadersRowIndex","cells","fltTdId","prfxFlt","cl","fltCellTag","cols","getCellsNb","tableHead","thId","State","cfg","state","enableHash","types","enableLocalStorage","enableCookie","persistFilters","persistPageNumber","page_number","persistPageLength","page_length","persistSort","persistColsVisibility","columns_visibility","persistFiltersVisibility","filters_visibility","cookieDuration","cookie_duration","enableStorage","storage","hash","pageNb","hiddenCols","filtersVisibility","prfxCol","pageNbKey","pageLengthKey","filtersVisKey","update","updatePage","updatePageLength","descending","updateSort","_syncSort","_syncColsVisibility","updateColsVisibility","_syncFiltersVisibility","visible","updateFiltersVisibility","_hash__WEBPACK_IMPORTED_MODULE_1__","_storage__WEBPACK_IMPORTED_MODULE_2__","getFiltersValue","column","hidden","sync","_syncFilters","overrideAndSync","setFilterValue","_this7","WEBSITE_URL","Help","help_instructions","contTgtId","container_target_id","instrText","_types__WEBPACK_IMPORTED_MODULE_5__","instrHtml","btnText","btn_text","btnHtml","btn_html","boundMouseup","defaultHtml","version","year","_toolbar__WEBPACK_IMPORTED_MODULE_7__","divContainer","helpEl","helplink","_root__WEBPACK_IMPORTED_MODULE_4__","divDisplay","DateType","datetime","sugar_date__WEBPACK_IMPORTED_MODULE_0__","_feature__WEBPACK_IMPORTED_MODULE_2__","setLocale","addConfigFormats","colTypes","dateStr","getOptions","colType","formats","format","addFormat","ex","incrementDate","incrementNumber","incrementString","getGreaterPrecision","getDateIncrementObject","rangeEvery","step","countOnly","precision","dio","inverse","NaN","ISODefaults","moveToFirstDayOfWeekYear","ISO_FIRST_DAY_OF_WEEK","ISO_FIRST_DAY_OF_WEEK_YEAR","getWeekNumber","allowPrevious","firstDayOfWeek","firstDayOfWeekYear","isoWeek","getTimeDistanceForUnit","d1","d2","tmp","fwd","simpleCapitalize","DATE_OPTIONS","namespaceAliases","defineOptionsAccessor","MINUTES","ABBREVIATED_YEAR_REG","resetTime","deleteDateParam","coreUtilityAliases","getYearFromAbbreviation","iterateOverHigherDateParams","afterCallbacks","relative","optPrefer","optLocale","optFromUTC","optSetUTC","optParams","optClone","parseFormatValues","dif","to","param","parseIrregular","parseValue","cloneDateByFlag","afterDateSet","handleTimezoneOffset","tzHour","tzMinute","minute","handleMidday","hour","handleRelativeUnit","edge","weekday","setOrdinalWeekday","half","day","separateAbsoluteUnits","handleEdge","units","weekdayOfMonth","edgeIndex","month","setupOptions","parseStringDate","cacheFormat","timestamp","ampm","utc","midday","fireCallbacks","EnglishLocaleBaseDefinition","getEnglishVariant","v","removeDiacritics","diacriticsMap","replacementList","chars","JSON","localStorage","location","hasStorage","Storage","duration","save","getKey","stringify","_cookie__WEBPACK_IMPORTED_MODULE_0__","retrieve","removeItem","prfxTf","path","pathname","decodeURIComponent","encodeURIComponent","hasHashChange","docMode","documentMode","Hash","lastHash","boundSync","_event__WEBPACK_IMPORTED_MODULE_0__","CheckList","_BaseDropdown","containers","_settings__WEBPACK_IMPORTED_MODULE_7__","div_checklist_css_class","filterCssClass","checklist_css_class","itemCssClass","checklist_item_css_class","selectedItemCssClass","checklist_selected_item_css_class","activateText","activate_checklist_text","disabledItemCssClass","checklist_item_disabled_css_class","enableResetOption","enable_checklist_reset_filter","prfx","_baseDropdown__WEBPACK_IMPORTED_MODULE_0__","optionClick","_event__WEBPACK_IMPORTED_MODULE_4__","setItemOption","onCheckListClick","loadFltOnDemand","ct","colIdxs","getFiltersByType","_const__WEBPACK_IMPORTED_MODULE_6__","externalFltTgtId","divCont","fltIds","buildFilterId","isLinked","ul","activeIdx","customValues","getCustomOptions","getActiveFilterId","getColumnIndexFromFilterId","filteredDataCol","cellValue","getCellValue","cellString","_array__WEBPACK_IMPORTED_MODULE_2__","filteredCol","getVisibleColumnValues","excludeRows","nbCells","addChecks","chkCt","addTChecks","lbl","fltId","lblIdx","disabled","li0","getClearFilterText","enableEmptyOption","li1","emOperator","emptyText","enableNonEmptyOption","li2","nmOperator","nonEmptyText","chkIndex","dataset","items","slcValues","slcIndexes","checked","chx","orOperator","chx0","replaceValue","replaceIndex","_this8","lis","chk","chkVal","fltAttr","_this9","Dropdown","enableSlcResetFilter","enable_slc_reset_filter","non_empty_text","multipleSlcTooltip","multiple_slc_tooltip","onSlcFocus","onSlcChange","selectFlts","_const__WEBPACK_IMPORTED_MODULE_5__","multipleFlts","multiple","title","fltCssClass","fltMultiCssClass","opt0","addOptions","slcValue","addFirstOption","isDisabled","opt1","opt2","option","selectedOptions","Emitter","events","evts","splice","DURATION_REG","amt","Hours","Minutes","Seconds","Milliseconds","MULTIPLIERS","amount","mult","getDateForRange","getRangeMemberPrimitiveValue","valueOf","dateFormat","assertDateIsValid","getAdjustedUnitForDate","dateRelative","dRelative","adu","getRelativeFormat","compareDay","compareDate","fullCompareDate","margin","weekdayMap","monthMap","getUTCOffset","iso","colon","getHours","ISO8601","RFC1123","RFC1036","CoreOutputFormats","formattingTokens","dateFormatMatcher","getDateParamsFromString","collectDateParamsFromArguments","collectUpdateDateArguments","allowDuration","advanceDateWithArgs","timezoneShift","compareEdges","loMargin","hiMargin","fromUTC","setUTC","addSpecificUnit","getTimezoneShift","getOwnKey","getDateParamKey","setYear","setMonth","setISOWeekNumber","getAdjustedUnit","ms","withPrecision","getRegNonCapturing","requiresSuffix","requiresSuffixOr","second","requiresNumerals","mdy","short","medium","long","full","stamp","time","g","eval","_root__WEBPACK_IMPORTED_MODULE_6__","FEATURES","_modules_dateType__WEBPACK_IMPORTED_MODULE_10__","_modules_help__WEBPACK_IMPORTED_MODULE_11__","_modules_state__WEBPACK_IMPORTED_MODULE_12__","_modules_markActiveColumns__WEBPACK_IMPORTED_MODULE_17__","_modules_gridLayout__WEBPACK_IMPORTED_MODULE_13__","_modules_loader__WEBPACK_IMPORTED_MODULE_14__","_modules_highlightKeywords__WEBPACK_IMPORTED_MODULE_15__","_modules_popupFilter__WEBPACK_IMPORTED_MODULE_16__","_modules_rowsCounter__WEBPACK_IMPORTED_MODULE_18__","_modules_statusBar__WEBPACK_IMPORTED_MODULE_19__","_modules_clearButton__WEBPACK_IMPORTED_MODULE_20__","_modules_alternateRows__WEBPACK_IMPORTED_MODULE_21__","_modules_noResults__WEBPACK_IMPORTED_MODULE_22__","_modules_paging__WEBPACK_IMPORTED_MODULE_23__","_modules_toolbar__WEBPACK_IMPORTED_MODULE_24__","TableFilter","getFullYear","hasConfig","_len","_key","nodeName","_emitter__WEBPACK_IMPORTED_MODULE_7__","filterTypes","_const__WEBPACK_IMPORTED_MODULE_25__","basePath","base_path","grid","filters_row_index","filters_cell_tag","stylePath","getStylePath","stylesheet","getStylesheetPath","stylesheetId","fltsRowCssClass","flts_row_css_class","enable_icons","alternateRows","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","ignoreDiacritics","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","markActiveColumns","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","rowsCounter","statusBar","displayBtn","btnReset","onBeforeReset","on_before_reset","onAfterReset","on_after_reset","autoFilter","auto_filter","autoFilterDelay","isUserTyping","autoFilterTimer","highlight_keywords","noResults","dateType","thousandsSeparator","thousands_separator","decimalSeparator","decimal_separator","col_types","prfxValButton","prfxResponsive","stickyCssClass","extensions","enableDefaultTheme","enable_default_theme","hasThemes","themes","getThemesPath","responsive","stickyHeaders","sticky_headers","ExtRegistry","instantiateFeatures","import","inpclass","loadThemes","initFeatures","fltrow","_insertFiltersRow","fltCell","colSpan","dropdown","_modules_dropdown__WEBPACK_IMPORTED_MODULE_8__","isExternalFlt","checkList","_modules_checkList__WEBPACK_IMPORTED_MODULE_9__","_buildInputFilter","_buildSubmitButton","setActiveFilterId","_initNoFilters","setExcludeRows","setFixedLayout","initExtensions","detectKey","clearInterval","onKeyUp","setInterval","onKeyDown","onInpFocus","onInpBlur","insertRow","inpType","inp","featureCls","Cls","_Cls$meta","_featureCls$meta","exts","ext","loadExtension","hasExtension","modulePath","then","__WEBPACK_AMD_REQUIRE_ARRAY__","mod","inst","default","catch","registerExtension","destroyExtensions","theme","styleId","isImported","getStylesheet","_this10","removeExternalFlts","deleteRow","externalFlt","optTxt","optArray","slcTexts","texts","slcSort","sorts","_this11","hiddenRows","searchArgs","occurence","isMatch","isSingleFltMatch","sA","sAOrSplit","hasMultiOrSA","sAAndSplit","hasMultiAndSA","cS","found","w","_match","validateRow","numData","reEm","reNm","reRe","hasLO","hasLE","hasGR","hasGE","hasDF","hasEQ","hasLK","hasST","hasEN","hasEM","hasNM","hasRE","dte1","dte2","isValidDate","parseDate","isLDate","isLEDate","isGDate","isGEDate","isDFDate","isEQDate","isExactMatch","_number__WEBPACK_IMPORTED_MODULE_4__","srchArg","searchArg","ignoresDiacritics","getColumnData","includeHeaders","exclude","getColValues","getColumnValues","_this12","typed","colValues","getContent","getCellData","getHeadersText","isExludedRow","getFilterValue","fltValue","fltColType","_this13","getFilterId","bool","tr","nbRows","getWorkingRows","getData","excludeHiddenCols","getTableData","_this14","tblData","headers","rowData","isColHidden","cellContent","getFilteredData","filteredData","getFilteredValues","rData","getFilteredColumnData","getFilteredDataCol","getVisibleColumnData","getFilteredColumnValues","_this15","validColValues","getRowDisplay","unshift","displayFlag","validFlag","query","tableWidth","defaultWidth","colTags","frag","createDocumentFragment","_this16","filterId","style_path","themes_path","activateFilter","ignoreDiac","clearText","continueFn","breakFn","_this17","startIdx","filePath","imported","attr","files","_import","fileId","callback","_this18","file","isLoaded","onreadystatechange","readyState","getFiltersId","reCalc","_this19","getFiltersRowIndex","getStartRowIndex","getLastRowIndex","table","_this20","headerText","ampmFront","numeralUnits","allowsFullWidth","timeMarkerOptional","weekdays","numerals","placeholders","past","future","timeSuffixes","modifiers","timeParse","plural","months","articles","timeFrontParse","timeMarkers","numberWithUnit","toFixed","last2","timeSeparator","ordinalSuffix","baseUnit","union","toArray","getRangeMemberNumericValue","charCodeAt","span","intersect","everyFn","periodSplit","getPrecision","n1","n2","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","relativeFn","monthsUntil","monthsSince","monthsFromNow","monthsAgo","minutesUntil","minutesSince","minutesFromNow","minutesAgo","millisecondsUntil","millisecondsSince","millisecondsFromNow","millisecondsAgo","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","createDateWithContext","INTERNAL_MEMOIZE_LIMIT","memoizeFunction","memo","counter","STRING_FORMAT_REG","CommonChars","createFormatMatcher","bracketMatcher","percentMatcher","precheck","compileMemoized","compile","lastIndex","exec","getSubstring","getToken","token","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","defineInstanceAndStatic","removeLocale","getAllLocales","getKeys","getAllLocaleCodes","setChainableConstructor","createFn","setDateChainableConstructor","delta","defineAccessor","namespace","defaults","defaultNewDate","newDateInternal","LocalizedParsingTokens","getParsingTokenWithSuffix","suffix","getAdjustedUnitForNumber","fullWidthNumberReg","fullWidthNumbers","fwp","escapeRegExp","arrayToRegAlternates","joined","join","PRIVATE_PROP_PREFIX","getArrayWithOffset","getOrdinalSuffix","commaSplit","localeCheck","yyyy","yy","ayy","MM","dd","hh","mm","ss","iyyyy","ihh","imm","GMT","Z","LOCALE_ARRAY_FIELDS","CoreParsingTokens","CoreParsingFormats","fullwidthNumberHelpers","Locale","monthSuffix","parseNumber","numeralMap","parseRegularNumerals","parseIrregularNumerals","lastWasPlace","isPlace","numeral","convertAdjustedToFormat","getTokenSrc","parsingAliases","formatToSrc","parsingTokens","parseInputFormat","addRawFormat","buildValueArray","setMap","forAllAlternates","forEachAlternate","alt","suffixes","addFormatSet","allowTime","timeFront","getFormatWithTime","baseFormat","timeBefore","getTimeBefore","getTimeAfter","localized","markers","initFormats","initDefinition","initArrayFields","buildNumerals","buildTimeFormats","getTimeFormat","standalone","sep","getTimeSeparatorSrc","buildParsingTokens","getCoreTokensForBase","getNumeralSrc","buildTimeSuffixes","buildModifiers","mapKey","addCoreFormats","df","addLocaleFormats","CanadianEnglishDefinition","BritishEnglishDefinition","en-US","en-GB","en-AU","en-CA"],"mappings":"CAAA,SAAAA,iCAAAC,EAAAC,GACA,oBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,SACA,sBAAAG,eAAAC,IACAD,OAAA,GAAAH,OACA,CACA,IAAAK,EAAAL,IACA,QAAAM,KAAAD,GAAA,iBAAAJ,gBAAAF,GAAAO,GAAAD,EAAAC,IAPA,CASCC,OAAA,WACD,mBCTA,SAAAC,qBAAAC,GAOA,IANA,IAKAC,EAAAC,EALAC,EAAAH,EAAA,GACAI,EAAAJ,EAAA,GAIAH,EAAA,EAAAQ,EAAA,GACQR,EAAAM,EAAAG,OAAoBT,IAC5BK,EAAAC,EAAAN,GACAU,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAG,EACAK,OAAAC,UAAAC,eAAAC,KAAAR,EAAAH,KACAY,EAAAZ,GAAAG,EAAAH,IAIA,IADAa,KAAAd,GACAK,EAAAC,QACAD,EAAAU,OAAAV,GAOA,IAAAW,EAAA,GAGAT,EAAA,CACAU,EAAA,GAMA,SAAAC,oBAAAjB,GAGA,GAAAe,EAAAf,GACA,OAAAe,EAAAf,GAAAT,QAGA,IAAAC,EAAAuB,EAAAf,GAAA,CACAJ,EAAAI,EACAkB,GAAA,EACA3B,QAAA,IAUA,OANAqB,EAAAZ,GAAAW,KAAAnB,EAAAD,QAAAC,IAAAD,QAAA0B,qBAGAzB,EAAA0B,GAAA,EAGA1B,EAAAD,QAKA0B,oBAAAE,EAAA,SAAAC,cAAAnB,GACA,IAAAoB,EAAA,GAKAC,EAAAhB,EAAAL,GACA,OAAAqB,EAGA,GAAAA,EACAD,EAAAd,KAAAe,EAAA,QACK,CAEL,IAAAC,EAAA,IAAAC,QAAA,SAAAC,EAAAC,GACAJ,EAAAhB,EAAAL,GAAA,CAAAwB,EAAAC,KAEAL,EAAAd,KAAAe,EAAA,GAAAC,GAGA,IAAAI,EAAAC,SAAAC,qBAAA,WACAC,EAAAF,SAAAG,cAAA,UAEAD,EAAAE,QAAA,QACAF,EAAAG,QAAA,KAEAhB,oBAAAiB,IACAJ,EAAAK,aAAA,QAAAlB,oBAAAiB,IAEAJ,EAAAM,IAAAnB,oBAAAoB,EAAA,UAAqDpC,OAAA,KAA6BqC,EAAA,wBAA2BrC,GAAA,MAC7G,IAAAgC,EAAAM,WAAA,WACAC,iBAAA,CAAwBC,KAAA,UAAAC,OAAAZ,KAClB,MAEN,SAAAU,iBAAAG,GAEAb,EAAAc,QAAAd,EAAAe,OAAA,KACAC,aAAAb,GACA,IAAAc,EAAAzC,EAAAL,GACA,OAAA8C,EAAA,CACA,GAAAA,EAAA,CACA,IAAAC,EAAAL,IAAA,SAAAA,EAAAF,KAAA,UAAAE,EAAAF,MACAQ,EAAAN,KAAAD,QAAAC,EAAAD,OAAAN,IACAc,EAAA,IAAAC,MAAA,iBAAAlD,EAAA,cAAA+C,EAAA,KAAAC,EAAA,KACAC,EAAAT,KAAAO,EACAE,EAAAE,QAAAH,EACAF,EAAA,GAAAG,GAEA5C,EAAAL,QAAAoD,GAfAvB,EAAAc,QAAAd,EAAAe,OAAAL,iBAkBAb,EAAA2B,YAAAxB,GAGA,OAAAN,QAAA+B,IAAAlC,IAIAJ,oBAAAuC,EAAA5C,EAGAK,oBAAAwC,EAAA1C,EAGAE,oBAAAyC,EAAA,SAAAnE,EAAAoE,EAAAC,GACA3C,oBAAA4C,EAAAtE,EAAAoE,IACAnD,OAAAsD,eAAAvE,EAAAoE,EAAA,CACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMA3C,oBAAAiD,EAAA,SAAA3E,GACAiB,OAAAsD,eAAAvE,EAAA,cAAiD4E,OAAA,KAIjDlD,oBAAAmD,EAAA,SAAA5E,GACA,IAAAoE,EAAApE,KAAA6E,WACA,SAAAC,aAA2B,OAAA9E,EAAA,SAC3B,SAAA+E,mBAAiC,OAAA/E,GAEjC,OADAyB,oBAAAyC,EAAAE,EAAA,IAAAA,GACAA,GAIA3C,oBAAA4C,EAAA,SAAAW,EAAAC,GAAsD,OAAAjE,OAAAC,UAAAC,eAAAC,KAAA6D,EAAAC,IAGtDxD,oBAAAoB,EAAA,GAGApB,oBAAAyD,GAAA,SAAAC,GAA8D,MAApBC,QAAA1B,MAAAyB,GAAoBA,GAE9D,IAAAE,EAAAhF,OAAA,aAAAA,OAAA,iBACAiF,EAAAD,EAAAtE,KAAAwE,KAAAF,GACAA,EAAAtE,KAAAT,qBACA+E,IAAAG,QACA,QAAApF,EAAA,EAAgBA,EAAAiF,EAAAxE,OAAuBT,IAAAE,qBAAA+E,EAAAjF,IACvC,IAAAiB,EAAAiE,EAIA,OAAA7D,wCAAAgE,EAAA,wBC1KA,SAAAC,IAQA,WACA,aAUA,IAAAC,EAGAC,EAAA,QAOAC,EAAA,EAGAC,EAAA,EAGAC,KAAA/E,OAAAsD,iBAAAtD,OAAAgF,kBAEAC,EAqBA,SAAAC,YAGA,OAAAC,gBAAA,IAAAT,OACAS,WAAA,oBAAA9F,gBAzBA6F,GAGAE,GAAA,EAGAC,EAAA,GAGAC,EAAA,GAIAhC,EAAAyB,EAAA/E,OAAAsD,eAiyBA,SAAAiC,mBAAAC,EAAAC,EAAAC,GACAF,EAAAC,GAAAC,EAAA/B,OA/xBAgC,EAAAC,qBAAA,aAYA,SAAAT,WAAAK,GAGA,OAAAA,KAAAxF,gBAAAwF,EAAA,KA2DA,SAAAK,gBAAA1C,GAGA,IAAA2C,EAAA,WAAA3C,EAGA4C,EAAAH,qBAAAzC,GA6JA,SAAA6C,wBAAAC,EAAAC,EAAAC,GACAC,YAAAL,EAAAE,EAAA,SAAAI,EAAAC,EAAAC,GACA,IAAAC,EAAAC,qBAAAJ,EAAAC,EAAAC,GAEA,OAkRA,SAAAG,cAAAX,EAAAY,EAAA1E,EAAAkE,EAAAS,GACAC,EAAAF,EAAA,SAAAG,EAAAb,GACA,IAAAc,EAAAC,EAAAF,EACAX,IACAa,EAAAC,wBAAAH,IAEAF,IACAI,EAAAJ,SAKA3E,EAAA6C,IAAAgC,EAAAZ,WACAa,EAkCA,SAAAG,mBAAAC,EAAAhB,GACA,OAAAA,EAAAc,wBAAAE,GAAA,GA6BA,SAAAC,wBAAAD,GACA,OAAAA,EAAAtH,QAIA,OACA,OACA,kBACA,OAAAsH,EAAAE,OAEA,OACA,gBAAAlI,GACA,OAAAgI,EAAAE,KAAAlI,IAEA,OACA,gBAAAA,EAAAmI,GACA,OAAAH,EAAAE,KAAAlI,EAAAmI,IAEA,OACA,gBAAAnI,EAAAmI,EAAArE,GACA,OAAAkE,EAAAE,KAAAlI,EAAAmI,EAAArE,IAEA,OACA,gBAAA9D,EAAAmI,EAAArE,EAAAC,GACA,OAAAiE,EAAAE,KAAAlI,EAAAmI,EAAArE,EAAAC,KArDAkE,CAAAD,GAnCAD,CAAAJ,EAAAX,GACAC,YAAAY,EAAA,WAAAD,IAGA9E,EAAA4C,GACAuB,YAAAY,EAAA,aAGAO,UAAAxB,EAAAE,EAAAe,GAEAjB,EAAAyB,QAGAzB,EAAA0B,OAAAxB,KA7SAS,CAAAX,EAAAS,EAAAG,QAAAT,EAAAC,EAAAK,EAAAkB,MACA3B,IAuPA,OA3NAC,wBAAA,eAAAnB,GAkCAmB,wBAAA,iBAAAlB,GAwBAkB,wBAAA,0BAAAlB,EAAAD,GA8BAmB,wBAAA,4BAAAnB,GAAA,GA6BAmB,wBAAA,8BAAAlB,GAAA,GA2BAsB,YAAAL,EAAA,gCAAAM,EAAAC,EAAAC,GACA,IAAAC,EAAAC,qBAAAJ,EAAAC,EAAAC,GAEA,OADAoB,aAAA1C,EAAA9B,GAAAqD,EAAAG,SAAA,EAAAH,EAAAkB,MACA3B,IA8BAK,YAAAL,EAAA,kCAAAM,EAAAC,EAAAC,GACA,IAAAC,EAAAC,qBAAAJ,EAAAC,EAAAC,GAMA,OALAoB,aAAA1C,EAAA9B,GAAAlD,UAAAuG,EAAAG,SAAA,EAAAH,EAAAkB,MAEAb,EAAAL,EAAAG,QAAA,SAAAQ,EAAAlB,GACA2B,sBAAA7B,EAAAE,EAAAkB,KAEApB,IAiBAK,YAAAL,EAAA,iBAAA5C,EAAA0E,GACA,IAAAf,EAAA,iBAAAe,EAAA9B,EAAA8B,KAEA,OADAN,UAAAxB,EAAA5C,EAAA2D,GACAf,IAIAK,YAAAL,EAAA,SAlVA,SAAAS,GAEA,IACkDsB,EADlDC,EAAA9C,EAAA9B,GAAA6E,EAAAD,EAAA9H,UACAgI,EAAA,GAA4BC,EAAA,GAO5B,SAAAC,kBAAAC,EAAAC,GACA,IAAAC,EAAA9B,EAAA4B,GACA,GAAAE,EACA,QAAAC,EAAAnJ,EAAA,EAA6BmJ,EAAAD,EAAAlJ,GAAaA,IAC1C,GAAAmJ,IAAAF,EACA,SAIA,SA+BA,SAAAG,UAAAvC,EAAAa,EAAA5E,GACA,OA9CA,SAAAuG,iBAAAtF,EAAAjB,GACA,OAAA4D,GAAA5D,IAAA8F,KACA5C,GAAA,QAAAjC,GAAA,QAAAA,GA4CAsF,CAAAxC,EAAA/D,KAzBA,SAAAwG,kBAAAzC,EAAA/D,EAAA0E,GAKA,IAAA1E,EAAA+D,KAAAW,EACA,SAEA,QAAAxH,EAAA,EAAuBA,EAAAwH,EAAA/G,OAAkBT,IACzC,QAAAoH,EAAAI,EAAAxH,IACA,SAgBAsJ,CAAAzC,EAAA/D,EAAA4E,EAAAF,SANA,SAAA+B,iBAAA1C,GACA,OAAAkC,kBAAA,SAAAlC,GAMA0C,CAAA1C,GAMA,GAFA6B,GADAtB,KAAA,IACAG,SAhBA,SAAAiC,sBACA,OAAAT,kBAAA,SAAAJ,IApBA,SAAAc,oBAAAT,EAAAC,GACA,OAAA7B,EAAA4B,KAAAD,kBAAAC,EAAAC,GAoBAQ,CAAA,aAAAd,GAgBAa,GAoCA,OAlCO9C,GAAA,kBAAAU,EAAAsC,kBAEP1D,EAAAoB,EAAAsC,iBAGAjC,EAAAiB,GAAA/B,EAAA,SAAAe,EAAAb,GACA6B,IAKAhB,EAAAf,EADAE,EAAAa,IAGAiC,OAAAjC,EAAA,aAAA0B,UAAAvC,EAAAa,EAAAkB,KACAE,EAAAjC,GAAAa,EAAAZ,UAEA6C,OAAAjC,EAAA,WAAA0B,UAAAvC,EAAAa,EAAAiB,KACAE,EAAAhC,GAAAa,KAOAa,aAAAI,EAAAE,GACAN,aAAAK,EAAAE,GAEAJ,GAKA1B,YAAAL,EAAA,aAEAA,IAsPAV,EAAAlC,GAAA4C,EACAT,EAAA,WAAAnC,EAAA,KAAA4C,EAEAiD,qBAAA7F,GAoNA,SAAA8F,+BAAAlD,GACAc,EAAAlC,EAAA3E,QAAA2E,EAAA3E,OAAAC,UAAA,SAAAoI,EAAApC,GACA,mBAAAoC,GACAa,8BAAAnD,EAAAE,EAAAoC,KAtNAY,CAAAlD,GAIApB,EAAAxB,GAAA4C,EAoBA,SAAAoD,WACA,OAAAvE,EAqCA,SAAA6B,qBAAAJ,EAAAC,EAAAC,GACA,IAAAI,EASA,OACAe,KATA,iBAAArB,IACAM,EAAA,IACAN,GAAAC,EACAC,IAEAI,EAAAN,EACAC,GAIAK,WAQA,SAAAM,wBAAAE,EAAAjB,GAMA,IAAAkD,EAAAjC,EAAAtH,OAAA,GAAAqG,EAAA,KACA,kBACA,IAAAmD,EAAAlD,EAAA,GAAAmD,EAAA,GACApD,GACAC,EAAApG,KAAAsH,MAEAgC,EAAAE,KAAAC,IAAAC,UAAA5J,OAAAuJ,GAEA,QAAAhK,EAAA,EAAqBA,EAAAiK,EAASjK,IAC9BA,EAAAgK,EACAjD,EAAApG,KAAA0J,UAAArK,IAEAkK,EAAAvJ,KAAA0J,UAAArK,IAIA,OADA+G,EAAApG,KAAAuJ,GACAnC,EAAAuC,MAAArC,KAAAlB,IAmCA,SAAAwB,aAAAzF,EAAA2F,EAAA8B,EAAAC,GACA/C,EAAAgB,EAAA,SAAAf,EAAA3D,GACAwG,IAAAC,GAAA1H,EAAAiB,IAIAiD,YAAAlE,EAAAiB,EAAA2D,KAIA,SAAAS,UAAAxB,EAAAE,EAAAa,IACAf,EAAAE,GAAAa,GACAZ,UACA0B,sBAAA7B,EAAAE,EAAAa,EAAAZ,UAOA,SAAAN,qBAAAzC,GACA,IAAAgE,EAAA,SAAA0C,eAAArE,EAAAsE,GACA,KAAAzC,gBAAAF,GACA,WAAAA,EAAA3B,EAAAsE,GAEAzC,KAAA0C,cAAA5C,IAEA3B,EAAA6B,KAAA0C,YAAAL,MAAAlE,EAAAiE,YAEApC,KAAA2C,IAAAxE,GAQA,OANAY,YAAAe,EAAA,sBACA,OAAAvC,EAAAzB,IAEAiD,YAAAe,EAAAlH,UAAA,qBACA,OAAAoH,KAAA2C,MAEA7C,EAGA,SAAAS,sBAAA7B,EAAAE,EAAAkB,GACA,IAAA8C,EAAAC,EAAAC,EAAAC,EAoDA,SAAAC,wBAAAlD,GACA,kBACA,WAAAxB,EAAAwB,EAAAuC,MAAArC,KAAA2C,IAAAP,aAtDAY,CAAAlD,GAQA+C,GANAD,GADAE,EAAAxE,EAAA1F,WACAgG,KAMAgE,IAAAjK,OAAAC,UAAAgG,GAGAgE,KAAAK,eACAH,EAAAlE,GAAAiE,EA8CA,SAAAK,mBAAAtE,GACA,IAAAkB,EAAA,WACA,IAAApB,EAAAiE,EAAA3C,KAAA2C,IAaA,OAZA,MAAAA,IAEAjE,EAAAT,EAAAkF,cAAAR,KAEAjE,IAKAA,EAAApB,EAAA3E,QAGA,IAAA+F,EAAAiE,GAAA/D,GAAAyD,MAAArC,KAAAoC,YAGA,OADAtC,EAAAmD,cAAA,EACAnD,EAhEAoD,CAAAtE,GAAAmE,GAaArE,EAAA9F,UAAAgG,GAAAmE,EACArE,IAAApB,EAAA3E,QAaA,SAAAyK,kCAAAxE,EAAAkB,GACAN,EAAAxB,EAAA,SAAAU,GACAmD,8BAAAnD,EAAAE,EAAAkB,KAdAsD,CAAAxE,EAAAmE,GAkBA,SAAAlB,8BAAAnD,EAAAE,EAAAkB,GACA,IAAAuD,EAAA3E,EAAA9F,UACA8I,OAAA2B,EAAAzE,KACAyE,EAAAzE,GAAAkB,GA+BA,SAAA6B,qBAAA7F,EAAAwH,GACA,IAAA5E,EAAAV,EAAAlC,GACA6E,EAAA/C,EAAA9B,GAAAlD,WAEA0K,GAAAC,IACAD,EAAAC,EAAA5C,IAGAnB,EAAA8D,EAAA,SAAA1E,GACA,IAsBA,SAAA4E,uBAAA5E,GACA,sBAAAA,GACA,YAAAA,GACA,cAAAA,EAzBA4E,CAAA5E,GAAA,CAOA,IACA,IAAAkB,EAAAa,EAAA/B,GACA,sBAAAkB,EAEA,OAEO,MAAAxG,GAGP,OAEAiH,sBAAA7B,EAAAE,EAAAkB,MAcA,IAAAyD,EAAA5K,OAAA8K,oBACAC,EAAA/K,OAAAC,UAAAkJ,SACA6B,EAAAhL,OAAAC,UAAAC,eAIA2G,EAAA,SAAArB,EAAA2B,GACA,QAAA8D,KAAAzF,EACA,GAAAuD,OAAAvD,EAAAyF,KACA,IAAA9D,EAAAhH,KAAAqF,IAAAyF,KAAAzF,GAAA,OASA,SAAAY,YAAAlE,EAAAiB,EAAAQ,EAAAH,GACAF,EAAApB,EAAAiB,EAAA,CACAQ,QACAH,eACAD,cAAA,EACA2H,UAAA,IAQA,SAAAV,cAAAhF,GACA,OAAAuF,EAAA5K,KAAAqF,GAGA,SAAAuD,OAAAvD,EAAAC,GACA,QAAAD,GAAAwF,EAAA7K,KAAAqF,EAAAC,GAGA,SAAA0F,OAAA3F,EAAAC,GACA,GAAAsD,OAAAvD,EAAAC,GACA,OAAAD,EAAAC,IAvyBA,SAAA2F,cAGA,KAFAzG,EAAAM,EAAAL,IAEA,CAiBA,GAbAD,EAAA,SAAAmF,GAUA,OATAjD,EAAAlC,EAAA,SAAAoB,EAAA5C,GAKA4F,OAAA1D,EAAAlC,IACA4C,EAAA0B,OAAAqC,KAGAnF,QAGA,IAAA3F,KAAAD,QAEAC,EAAAD,QAAA4F,OAGA,IACAM,EAAAL,GAAAD,EACO,MAAAhE,IAIPkG,EA5EA,kDA4EAwE,MAAA,cAAAlI,GACA0C,gBAAA1C,KAybA,SAAAmI,sBACAlF,YAAAzB,EAAA,mBACAyB,YAAAzB,EAAA,SAAAA,GACAyB,YAAAzB,EAAA,WAAAwE,UACA/C,YAAAzB,EAAA,kBAAAkB,iBAEAO,YAAAzB,EAAA,QACAoE,cACAoC,cACA/E,wBACAoE,4BACAlH,iBACAuD,kBACAmC,4CApcAsC,IAywBAF,GAQA,IAwCAG,EACAC,EACAC,EApCAC,IAAA,MAAA1L,OAAA,MASA2L,EAAA,iDAQAC,EAAA,IAEAC,EAAA,IAKAC,EAAAnH,EAAA3E,OACA+L,EAAApH,EAAAqH,MACAC,EAAAtH,EAAAuH,KACAC,EAAAxH,EAAAyH,OAEAC,GADA1H,EAAA2H,OACA3H,EAAA4H,UACA5H,EAAA6H,OAsHA,SAAAC,QAAAjH,EAAAkH,EAAAC,GAIA,OAHAA,IACAA,EAAAnC,cAAAhF,IAEAmH,IAAA,WAAAD,EAAA,IAKA,SAAAE,cAAA9F,GACA,gBAAAf,EAAAM,EAAAC,GACAP,EAAAe,GAAAT,EAAAC,IAKAsG,cAAA,SACAA,cAAA,gBACAA,cAAA,kBAFA,IAGAC,EAAAD,cAAA,wBACAE,EAAAF,cAAA,0BACAA,cAAA,2BACAA,cAAA,+BAyFA,SAAAG,eAAAvH,GACA,IAAAgG,EAAAhG,GACA,UAAAwH,UAAA,4BAiCA,SAAAC,UAAA5J,GACA,YAAAR,IAAAQ,EAsQA,SAAA6J,aAAA1H,EAAAvD,GACA,QAAAuD,GAAA,YAAAvD,UAAAuD,GAGA,SAAA2H,YAAA3H,EAAAvD,GAEA,OADAA,YAAAuD,EACA,MAAAA,GAAA,WAAAvD,GAAA,WAAAA,GAAA,YAAAA,EAGA,SAAAmL,cAAA5H,EAAAkH,GACA,OAAAQ,aAAA1H,IACAiH,QAAAjH,EAAA,SAAAkH,IAKA,SAAAW,6BAAA7H,GACA,IAAA8H,EAAA,aAAA9H,EACA+H,EAAA,gBAAA/H,EASA,OAAA+H,IAAAD,GACAC,IAAAxE,OAAAvD,EAAA,gBACAuD,OAAAvD,EAAAuE,YAAA9J,UAAA,iBAjBAoN,CAAA7H,IAoBA,SAAAgI,2BAAAhI,GAKA,IAAAiI,EAAAzN,OAAAC,UACA,QAAAgL,KAAAzF,EAAA,CACA,IAAA6C,EAAA7C,EAAAyF,GACA,IAAAlC,OAAAvD,EAAAyF,IAAA5C,IAAAoF,EAAAxC,GACA,SAGA,SA/BAuC,CAAAhI,GAgOA,SAAAkI,aAAA9J,GACA,OAAAA,IAAA,GAAAA,GAAA,YAAAA,EAGA,SAAA+J,uBAAArF,EAAAnB,EAAAyG,EAAAC,GAEA,IADA,IAAAC,EAAAC,EAAAC,sBAAA1F,EAAAsF,EAAAC,GACAzO,EAAA,EAAAiK,EAAA0E,EAAAlO,OAAyCT,EAAAiK,EAASjK,IAClD0O,EAAAC,EAAA3O,GACA+H,EAAAhH,KAAAmI,IAAAwF,KAAAxF,GAEA,OAAAA,EAMA,SAAA0F,sBAAA1F,EAAAsF,EAAAC,EAAAI,GACA,IAAA7O,EAAA2O,EAAA,GACA,IAAA3O,KAAAkJ,EAEAoF,aAAAtO,KAAAyO,IAAAI,EAAA7O,GAAAwO,KAAAxO,KACA2O,EAAAhO,MAAAX,GAaA,OAVA2O,EAAAG,KAAA,SAAA/O,EAAAmI,GACA,IAAA6G,EAAAP,EAAAzO,EAIA,OAAAgP,IAHAP,EAAAtG,EAIA6G,GAAA,IAEAhP,EAAAmI,IAEAyG,EA4CA,SAAAK,WAAAzB,GACA,OAAAA,EAAAtB,MAAA,KAWA,SAAAgD,QAAA/F,EAAAnB,GACA,QAAA/H,EAAA,EAAAiK,EAAAf,EAAAzI,OAAqCT,EAAAiK,EAASjK,IAAA,CAC9C,KAAAA,KAAAkJ,GACA,OAAAqF,uBAAArF,EAAAnB,EAAA/H,GAEA+H,EAAAmB,EAAAlJ,OAoCA,IAwCAkP,EAxCAC,EAAAhF,KAAAgF,OAAA,SAAA3K,GACA,WAAAA,GAAA4K,SAAA5K,GACAA,EAAA,EAAA6K,EAAA7K,GAAA8K,EAAA9K,GADAA,GAgBA,SAAA+K,UAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA,IAAArC,EAAAsC,EAAAL,GAAAzF,SAAA4F,GAAA,IAKA,OAJApC,EAuEA,SAAAuC,aAAAvC,EAAAiC,GACA,IAAAO,EAAA,GACAxC,IAAAxD,WACA,OAAAyF,GACA,EAAAA,IACAO,GAAAxC,IAEAiC,IAAA,KACAjC,MAGA,OAAAwC,EAlFAD,CAAAF,GAAA,IAAAH,EAAAlC,EAAAyC,QAAA,YAAAvP,QAAA8M,GACAmC,GAAAF,EAAA,KACAjC,GAAAiC,EAAA,WAAAjC,GAEAA,EAkDA,IAAAsC,EAAA1F,KAAA0F,IAIAR,GAHAlF,KAAA8F,IACA9F,KAAA+F,IACA/F,KAAAC,IACAD,KAAAkF,MACAC,EAAAnF,KAAAmF,MAMAa,GALAhG,KAAAiG,MAKApD,OAAAqD,eAnsBA,SAAAC,wBAAAzE,GACA,IAAA0E,EA5SA,UA4SA1E,EACA,gBAAAzF,EAAA6C,GACA,SAAAoB,UAAA5J,QACAuG,YAAAZ,EAAAmK,EAAAtH,GACA7C,GAEAA,EAAAmK,KAm1BAD,CAAA,QAlmCA,SAAAE,mBAEA,IAAAC,EAAA,GAkDA,SAAAC,aAAApD,GAEAmD,EADA,WAAAnD,EAAA,MACA,EAOA,SAAAqD,gBAAArD,EAAAsD,GAEA,OAAAA,GAAAvD,QAAA,IAAAuD,EAAA,UAWA,SAAAC,yBAAAzK,GACA,IAAA0K,EAAA9D,OAAA5G,GACA,gBAAAA,GACA,OAAA4G,OAAA5G,EAAAuE,eAAAmG,GAbAD,CAAAD,GAiBA,SAAAG,sBAAAzD,GACA,gBAAAlH,EAAAmH,GAEA,OAAAF,QAAAjH,EAAAkH,EAAAC,IAlBAwD,CAAAzD,GAsBA,SAAA0D,yBAAA1D,GACA,IAAAzK,EAAAyK,EAAA2D,cACA,gBAAA7K,GACA,IAAA8K,SAAA9K,EACA,OAAA8K,IAAArO,GAAA,WAAAqO,GAAA7D,QAAAjH,EAAAkH,KAxFA,SAAA6D,eAEA,IAAAC,EAAApC,WA/CA,kEAiDAgC,yBAAAI,EAAA,IACAJ,yBAAAI,EAAA,IACAjF,EAAA6E,yBAAAI,EAAA,IAEAT,gBAAAS,EAAA,IACAT,gBAAAS,EAAA,IAWAhF,EAAAuE,gBAAAS,EAAA,IAGA/E,EAAAO,MAAAP,SAAAsE,gBAAAS,EAAA,IACAT,gBAAAS,EAAA,IAEAT,gBAAAS,EAAA,uBAAAC,UACAV,gBAAAS,EAAA,uBAAAE,UAIAZ,aAAA,aACAA,aAAAU,EAAA,IACAV,aAAAU,EAAA,IACAV,aAAAU,EAAA,IACAV,aAAAU,EAAA,IACAV,aAAAU,EAAA,IACAV,aAAAU,EAAA,IAuDAD,GAnDA,SAAAI,gBAEAtC,QAAAD,WADA,qEACA,SAAAzB,GACAmD,aAAAnD,EAAA,WAiDAgE,GAEA,SAAAnL,EAAAkH,GAMA,OAhDA,SAAAkE,YAAAlE,GACA,OAAAmD,EAAAnD,GA+CAkE,CAAAlE,IAAAU,cAAA5H,EAAAkH,IAujCAkD,GA/PA,SAAAiB,uBACA,IAAAC,EAAAlF,EAAAmF,EAAAlF,EAAAmF,EAAA,GACA1C,EAAA,GACA,QAAA2C,EAAA7R,EAAA,EAA0BA,GAAA,EAAQA,IAElC4R,GADAC,EAAA1B,EAAAnQ,EA37BA,OA67BAkP,EAAA2C,GAAA1B,EAAAnQ,EA97BA,IAg8BAkP,EAAAyC,GAAA,GACAzC,EA97BA,KA87BAwC,EAGAxC,EAAAwC,KA2JA,SAAAI,YAAAtP,GACA,OAAA4K,OAAA,IAAA5K,EAAA,SA3JAsP,CAAAF,EAl8BA,IAk8BAD,EAAAD,GACAE,EAkPAH,GAYA,IAAAM,EAAA,CACA,UACA,WACA,cACA,gBACA,iBACA,iBACA,wBAkGA,SAAAC,aAAA9I,EAAA+I,EAAAzD,EAAAK,GACA,IAAAqD,EAAAxD,EAAAyD,EAAA1R,EAAAyI,EAAAzI,OAiBA,IAfA0R,EAAAtD,GAAA,IACAqD,EAAArD,EAAApO,EAAA,KACA+N,EAAAW,EAAAX,KACA,IAAAA,IACAA,EAAA0D,GAEA1D,EAAA,IACAA,EAAA/N,EAAA+N,KAEAK,GAAAL,EAAA,GAAAK,GAAApO,GAAA+N,KACAA,EAAA0D,GAGAxD,EAAAF,EAEAK,GAAA,GAAAH,IAAAG,GAAAH,EAAAjO,GAAA,CACA,KAAAiO,KAAAxF,GACA,OAAAkJ,cAAAlJ,EAAA+I,EAAAzD,EAAAK,GAEA,GAAAP,aAAAI,IAAAxF,EAAAwF,KAAAuD,EACA,OAAAvD,EAEAA,GAAAyD,EAEA,SAGA,SAAAC,cAAAlJ,EAAA+I,EAAAzD,EAAAK,GACA,IAAAH,EAAAC,EAAAC,sBAAA1F,EAAAsF,GAAA,EAAAK,GAIA,IAHAF,EAAAG,KAAA,SAAA/O,EAAAmI,GACA,OAAA2G,EAAA3G,EAAAnI,IAAAmI,SAEAzE,KAAAiL,EAAAC,EAAAzN,UACA,GAAAgI,EAAAwF,KAAAuD,EACA,OAAAvD,EAGA,SAGA,SAAA2D,YAAAnJ,EAAAnB,EAAAuK,EAAAzD,GACA,IAAAkB,EAAArB,EAAAjO,EAAAyI,EAAAzI,OAAA8R,EAAA,EAAAC,EAAA3E,UAAAyE,GAEA,GADA3E,eAAA5F,GACA,GAAAtH,IAAA+R,EACA,UAAA5E,UAAA,sDAOA,IANK4E,EACLzC,EAAAuC,GAEAvC,EAAA7G,EAAA2F,EAAApO,EAAA,EAAA8R,GACAA,KAEAA,EAAA9R,IACAiO,EAAAG,EAAApO,EAAA8R,EAAA,EAAAA,KACArJ,IACA6G,EAAAhI,EAAAgI,EAAA7G,EAAAwF,KAAAxF,IAEAqJ,IAEA,OAAAxC,GAxJA,SAAA0C,mBACA,KAAW1I,SAAA,GAAW2I,qBAAA,aACtB,IAAAC,EAAAlL,EACAA,EAAA,SAAArB,EAAA2B,GACA4K,EAAAvM,EAAA2B,GACA,QAAA8D,EAAA7L,EAAA,GAA4B6L,EAAAkG,EAAA/R,OAC5B2J,OAAAvD,EAAAyF,KACA,IAAA9D,EAAAhH,KAAAqF,IAAAyF,KAAAzF,IAFsDpG,QA0DtDyS,GA7CA,SAAAG,iCACAhS,OAAA8K,qBASA,SAAAmH,iCAEA,IAUAC,EAAA,yDAAA7G,MAAA,KAEA,SAAA8G,cAAAC,EAAA9J,GACA,QAAAlJ,EAAA,EAAqBA,EAAA8S,EAAArS,OAAuBT,IAC5CkJ,EAAAvI,KAAAqS,EAAAF,EAAA9S,IAIAyH,EAlBA,CACA0F,SAAA,aACAC,OAAA,oBACAF,OAAA,mDACAtM,OAAA,mEACAgM,MAAA,8EACAE,KAAA,2IACAE,OAAA,6PAWA,SAAAO,EAAAxJ,GACA,IAAAkP,EAAA1F,EAAAtB,MAAA,KACA,SAAAlI,IACAgP,cAAA,MAAAE,GACAF,cAAA,MAAAE,GACAF,cAAA,SAAAE,GACAF,cAAA,SAAAE,IAEAA,EAAAtS,KAAA,YACAiJ,qBAAA7F,EAAAkP,KArCAJ,GA4CAD,GAWAnF,EAAAf,EAAA,CAEAwG,KAAA,SAAA9M,GACA,IAAA8M,EAAA,GAKA,OAdA,SAAAC,cAAA/M,GACA,SAAAA,EACA,UAAAwH,UAAA,mBAQAuF,CAAA/M,GACAqB,EAlsBA,SAAA2L,wBAAAhN,GAQA,OAPA2H,YAAA3H,KACAA,EAAAxF,OAAAwF,IAGAkG,GAAAH,EAAA/F,IASA,SAAAiN,oBAAAjN,GAEA,IADA,IAAA+J,EAAAnQ,EAAA,EACAmQ,EAAA/J,EAAAkN,OAAAtT,IACAoG,EAAApG,KAAAmQ,EAXAkD,CAAAjN,GAEAA,EA0rBAgN,CAAAhN,GAAA,SAAA6C,EAAA4C,GACAqH,EAAAvS,KAAAkL,KAEAqH,KAwEAzF,EAAAd,EAAA,CAkBAN,QAAA,SAAAjG,GACA,OAAAiG,EAAAjG,MAKAsH,EAAAf,EAAA,CAEA4G,MAAA,SAAAxL,GAEAsC,UAAA5J,OAAA,IAAA+S,EAAAnJ,UAAA,GACA5J,EAAAwH,KAAAxH,OAAAiO,EAAA,EAEA,IADAf,eAAA5F,GACA2G,EAAAjO,GAAA,CACA,GAAAiO,KAAAzG,OAAAF,EAAAhH,KAAAyS,EAAAvL,KAAAyG,KAAAzG,MACA,SAEAyG,IAEA,UAGA+E,KAAA,SAAA1L,GAEAsC,UAAA5J,OAAA,IAAA+S,EAAAnJ,UAAA,GACA5J,EAAAwH,KAAAxH,OAAAiO,EAAA,EAEA,IADAf,eAAA5F,GACA2G,EAAAjO,GAAA,CACA,GAAAiO,KAAAzG,MAAAF,EAAAhH,KAAAyS,EAAAvL,KAAAyG,KAAAzG,MACA,SAEAyG,IAEA,UAGAgF,IAAA,SAAA3L,GAEAsC,UAAA5J,OAAA,IAAA+S,EAAAnJ,UAAA,GACA5J,EAAAwH,KAAAxH,OAAAiO,EAAA,EAAAqB,EAAA,IAAAnD,MAAAnM,GAEA,IADAkN,eAAA5F,GACA2G,EAAAjO,GACAiO,KAAAzG,OACA8H,EAAArB,GAAA3G,EAAAhH,KAAAyS,EAAAvL,KAAAyG,KAAAzG,OAEAyG,IAEA,OAAAqB,GAGA4D,OAAA,SAAA5L,GAEAsC,UAAA5J,OAAA,IAAA+S,EAAAnJ,UAAA,GACA5J,EAAAwH,KAAAxH,OAAAiO,EAAA,EAAAqB,EAAA,GAEA,IADApC,eAAA5F,GACA2G,EAAAjO,GACAiO,KAAAzG,MAAAF,EAAAhH,KAAAyS,EAAAvL,KAAAyG,KAAAzG,OACA8H,EAAApP,KAAAsH,KAAAyG,IAEAA,IAEA,OAAAqB,GAoBA6D,QAAA,SAAA3B,GAEA5H,UAAA5J,OAAA,IAAA+N,EAAAnE,UAAA,GACA,OAAA8B,EAAAlE,WAAA2L,QAAA3B,EAAAzD,GACAwD,aAAA/J,KAAAgK,EAAAzD,IAmBAqF,YAAA,SAAA5B,GAEA5H,UAAA5J,OAAA,IAAA+N,EAAAnE,UAAA,GACA,OAAA8B,EAAAlE,WAAA4L,YAAA5B,EAAAzD,GACAwD,aAAA/J,KAAAgK,EAAAzD,GAAA,IAsBAS,QAAA,SAAA6E,GAEAzJ,UAAA5J,OAAA,IAAA+S,EAAAnJ,UAAA,GACA5J,EAAAwH,KAAAxH,OAAAiO,EAAA,EAEA,IADAf,eAAAmG,GACApF,EAAAjO,GACAiO,KAAAzG,MACA6L,EAAA/S,KAAAyS,EAAAvL,KAAAyG,KAAAzG,MAEAyG,KAqCAqF,OAAA,SAAAC,GAEA3J,UAAA5J,OACA,OAAA4R,YAAApK,KAAA+L,EADA3J,UAAA,KA8BA4J,YAAA,SAAAD,GAEA3J,UAAA5J,OACA,OAAA4R,YAAApK,KAAA+L,EADA3J,UAAA,IACA,MAQA,IAAA6J,EAAA9G,OAAA,KAAAb,EAAA,OAAAA,EAAA,WAEAmB,EAAAX,EAAA,CAgBAoH,KAAA,WACA,OAAAlM,KAAA8B,WAAAiG,QAAAkE,EAAA,OAOAxG,EAAAT,EAAA,CAoBA9H,KAAA,SAAAqO,GAEyB,IAAzB,IAAAY,EAAA,GAAyBC,EAAA,EAAAC,EAAAjK,UAAA5J,OAAyC4T,EAAAC,EAAWD,IAAAD,EAAAzT,KAAA0J,UAAAgK,IAC7E,IAAAE,EAAAxM,EAAAE,KAQA,OAPA0F,eAAA1F,OACAsM,EAAA,WAEsB,IAAtB,IAAAxN,EAAA,GAAsBsN,EAAA,EAAAC,EAAAjK,UAAA5J,OAAyC4T,EAAAC,EAAWD,IAAAtN,EAAApG,KAAA0J,UAAAgK,IAC1E,OAAAtM,EAAAuC,MAAAvC,EAAAlH,WAAAoH,gBAAAF,EAAAE,KAAAuL,EAAAY,EAAAI,OAAAzN,MAEAlG,UAAAoH,KAAApH,UACA0T,KAQA9G,EAAAZ,EAAA,CAeA4H,IAAA,WACA,WAAA3H,MAAA4H,aAUAhH,EAAAb,EAAA,CAcA8H,YAAA,WACA,OAAApF,UAAAtH,KAAA2M,iBAAA,OACArF,UAAAtH,KAAA4M,cAAA,SACAtF,UAAAtH,KAAA6M,aAAA,OACAvF,UAAAtH,KAAA8M,cAAA,OACAxF,UAAAtH,KAAA+M,gBAAA,OACAzF,UAAAtH,KAAAgN,gBAAA,OACA1F,UAAAtH,KAAAiN,qBAAA,QAgBAC,OAAA,SAAAtJ,GAEAxB,UAAA5J,OACA,OAAAwH,KAAA0M,YAAA9I,MA7CA,SAAAuJ,gBACA,IAAAtR,EAAA,IAAAgJ,UAAAuI,IAAA,QACA,QAAAvR,EAAA6Q,aAAA,6BAAA7Q,EAAA6Q,cA8CGS,MAEFrU,KAAAkH,2RCtmFYqN,EACT,SADSA,aACRrM,EAAKsM,GAAN,OAAqB3U,OAAA4U,EAAA,UAAA5U,CAAUqI,GAAOA,EAAMsM,GASnCE,EACT,SADSA,YACRxM,EAAKsM,GAAN,OAAqB3U,OAAA4U,EAAA,SAAA5U,CAASqI,GAAOA,EAAMsM,GASlCG,EACT,SADSA,WACRzM,EAAKsM,GAAN,OAAqBI,MAAM1M,GAAOsM,EAAatM,GAStC2M,EACT,SADSA,YACR3M,EAAKsM,GAAN,OAAqB3U,OAAA4U,EAAA,QAAA5U,CAAQqI,GAAOA,EAAMsM,GASjCM,EACT,SADSA,WACR5M,EAAKsM,GAAN,OAAqB3U,OAAA4U,EAAA,KAAA5U,CAAKqI,GAAOA,EAAMsM,iiBC5CrCO,EAAMC,EAAA,KAAK/T,SAOJgU,EAAU,SAAVA,QAAWC,GACpB,OAAIrV,OAAAsV,EAAA,QAAAtV,CAAQqV,EAAKE,aACNvV,OAAAwV,EAAA,KAAAxV,CAAKqV,EAAKI,WAEdzV,OAAAwV,EAAA,KAAAxV,CAAKqV,EAAKE,cAQRG,EAAmB,SAAnBA,iBAAoBL,GAC7B,IAAK,IAAIjW,EAAI,EAAGA,EAAIiW,EAAKM,WAAW9V,OAAQT,IAAK,CAC7C,IAAIwE,EAAIyR,EAAKM,WAAWvW,GACxB,GAAmB,IAAfwE,EAAEgS,SACF,OAAOhS,EAAErE,OAYRsW,EAAY,SAAZA,YACT,IAAIC,EAAGrM,UAAA5J,QAAA,OAAAgD,EAAA4G,UAAA,GACP,IAAKzJ,OAAAsV,EAAA,SAAAtV,CAAS8V,GACV,OAAO,KAIX,IADA,IAAIvN,EAAK2M,EAAI3T,cAAcuU,GAClB1W,EAAI,EAAGA,EAAIqK,UAAK5J,OAAQT,IAAK,CAClC,IAAI0K,EAAW1K,EAAR,GAAAqK,UAAA5J,QAAQT,OAARyD,EAAA4G,UAAQrK,GAEXY,OAAAsV,EAAA,QAAAtV,CAAQ8J,IAAuB,IAAfA,EAAIjK,QACpB0I,EAAG5G,aAAamI,EAAI,GAAIA,EAAI,IAGpC,OAAOvB,GAQEwN,EAAY,SAAZA,UAAaV,GAAD,OAAUA,EAAKW,WAAWC,YAAYZ,IAOlDa,EAAa,SAAbA,WAAcC,GAAD,OAASjB,EAAIkB,eAAeD,IAQzCE,EAAW,SAAXA,SAAYC,EAAKC,GAC1B,OAAIvW,OAAAsV,EAAA,QAAAtV,CAAQsW,KAIRE,oBACOF,EAAIG,UAAUC,SAASH,GAE3BD,EAAI5J,UAAUiK,MAAM,IAAInK,OAAO,UAAY+J,EAAM,cAQ/CK,EAAW,SAAXA,SAAYN,EAAKC,GACtBvW,OAAAsV,EAAA,QAAAtV,CAAQsW,KAIRE,oBACAF,EAAIG,UAAUI,IAAIN,GAIA,KAAlBD,EAAI5J,UACJ4J,EAAI5J,UAAY6J,EAEVF,EAASC,EAAKC,KACpBD,EAAI5J,WAAa,IAAM6J,KASlBO,EAAc,SAAdA,YAAeR,EAAKC,GAC7B,IAAIvW,OAAAsV,EAAA,QAAAtV,CAAQsW,GAIZ,GAAIE,oBACAF,EAAIG,UAAUM,OAAOR,OADzB,CAIA,IAAIS,EAAM,IAAIxK,OAAO,UAAY+J,EAAM,UAAW,KAClDD,EAAI5J,UAAY4J,EAAI5J,UAAU0C,QAAQ4H,EAAK,MAUlCC,EAAY,SAAZA,UAAaC,EAAMvT,EAAOwT,GACnC,IACIC,IADaD,EAEbtB,EAAU,SAAU,CAAC,QAASlS,GAAQ,CAAC,WAAY,SACnDkS,EAAU,SAAU,CAAC,QAASlS,IAElC,OADAyT,EAAItU,YAAYoT,EAAWgB,IACpBE,GAWEC,EAAkB,SAAlBA,gBAAmBC,EAAIC,EAAUC,GAA8B,IAAnBC,EAAmB,EAAAhO,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAP,GAC7DiO,EAAK7B,EAAU,MACf8B,EAAQ9B,EAAU,QAAS,CAAC,MAAOyB,IACnCM,EAAQ/B,EAAU,QAClB,CAAC,KAAMyB,GACP,CAAC,OAAQA,GACT,CAAC,OAAQ,YACT,CAAC,QAASC,GACVE,GAOJ,OALAE,EAAM7U,YAAY8U,GAClBD,EAAM7U,YAAYoT,EAAWsB,IAC7BE,EAAG5U,YAAY6U,GACfD,EAAGC,MAAQA,EACXD,EAAGE,MAAQA,EACJF,GAQEG,EAAM,SAANA,IAAOP,GAAD,OAAQpC,EAAI4C,eAAeR,IAOjCxB,EAAM,SAANA,IAAOzS,EAAG0U,GAAJ,OAAgB1U,EAAEhC,qBAAqB0W,IAG1D,SAASvB,oBACL,OAAOtB,EAAI8C,gBAAgBvB,qYC7L/BhW,EAAAyC,EAAA+U,EAAA,4BAAAC,IAIA,IAMaC,EAAW,SAAXA,aAOAC,EACT,SADSA,MACR5S,GAAD,MAAiD,oBAAxCxF,OAAOC,UAAUkJ,SAAShJ,KAAKqF,IAO/B6S,EACT,SADSA,KACR7S,GAAD,MAAiD,sBAAxCxF,OAAOC,UAAUkJ,SAAShJ,KAAKqF,IAO/BiG,EACT,SADSA,QACRjG,GAAD,MAAiD,mBAAxCxF,OAAOC,UAAUkJ,SAAShJ,KAAKqF,IAO/B+F,EACT,SADSA,SACR/F,GAAD,MAAiD,oBAAxCxF,OAAOC,UAAUkJ,SAAShJ,KAAKqF,IAO/B8S,EACT,SADSA,SACR9S,GAAD,MAAiD,oBAAxCxF,OAAOC,UAAUkJ,SAAShJ,KAAKqF,IAO/B+S,EACT,SADSA,UACR/S,GAAD,MAAiD,qBAAxCxF,OAAOC,UAAUkJ,SAAShJ,KAAKqF,IAO/BgT,EAAU,SAAVA,QAAWhT,GAAD,YA7DL,IA6DcA,GAOnBiT,EAAS,SAATA,OAAUjT,GAAD,OAAiB,OAARA,GAOlB0S,EAAU,SAAVA,QAAW1S,GAAD,OAASgT,EAAQhT,IAAQiT,EAAOjT,IAAuB,IAAfA,EAAI3F,ysBChFnEY,EAAAyC,EAAA+U,EAAA,sCAAAS,IAQO,IAAMC,EAAQ,QAKRC,EAAS,SAKTC,EAAW,WAKXC,EAAY,YAKZC,EAAO,OAUPC,EAAY,GAKZC,EAAU,EAKVC,EAAU,GAKVC,EAAe,GAKfC,EAAiB,GAUjBC,EAAa,KAKbC,EAAW,KAUXC,EAAS,SAMTC,EAAS,SAMTC,EAAmB,mBAMnBC,EAAO,OAMPC,EAAa,YAUbjB,EAAoB,gXCtGpBkB,EAAS,SAATA,OAAUpU,EAAKvD,EAAM4X,EAAMC,GAChCtU,EAAIuU,iBACJvU,EAAIuU,iBAAiB9X,EAAM4X,EAAMC,GAE5BtU,EAAIwU,YACTxU,EAAIwU,YAAY,KAAO/X,EAAM4X,GAE7BrU,EAAI,KAAOvD,GAAQ4X,GAadI,EAAY,SAAZA,UAAazU,EAAKvD,EAAM4X,EAAMC,GACnCtU,EAAI0U,oBACJ1U,EAAI0U,oBAAoBjY,EAAM4X,EAAMC,GAC7BtU,EAAI2U,YACX3U,EAAI2U,YAAY,KAAOlY,EAAM4X,GAE7BrU,EAAI,KAAOvD,GAAQ,MASdmY,EAAU,SAAVA,QAAWC,GACfA,IACDA,EAAMlF,EAAA,KAAKhT,OAEXkY,EAAIC,gBACJD,EAAIC,kBAEJD,EAAIE,cAAe,GAUdC,EAAY,SAAZA,UAAaH,GACjBA,IACDA,EAAMlF,EAAA,KAAKhT,OAEXkY,EAAII,eACJJ,EAAII,iBAEJJ,EAAIK,aAAc,GAUbC,EAAY,SAAZA,UAAaN,GAItB,OAHKA,IACDA,EAAMlF,EAAA,KAAKhT,OAERkY,EAAInY,QAAUmY,EAAIO,YAShBC,EAAU,SAAVA,QAAWR,GACpB,OAAOA,EAAIS,SAAWT,EAAIS,SACrBT,EAAIQ,QAAUR,EAAIQ,QAAWR,EAAIU,MAAQV,EAAIU,MAAQ,GASjDC,EAAe,SAAfA,aAAgBX,GACzB,OAA2C,KADK,EAAA5Q,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAP,IACzBuJ,QAAQ6H,EAAQR,KAQ7B,SAAS1G,MAAMxM,EAAI8T,GACtB,IAAIC,EAAW,GAAAtH,OAAMzM,EAAGhE,KAAT,UAIf,OAHK8X,EAAMC,KACPD,EAAMC,GAAe/T,EAAG5C,KAAK0W,IAE1BA,EAAMC,kCCxHjBza,EAAA,IAEA0a,iCCFA1a,EAAA,IAEA2a,2RCOa7H,EAAO,SAAPA,KAAQ2D,GACjB,OAAIA,EAAK3D,KACE2D,EAAK3D,OAET2D,EAAK9H,QAAQ,aAAc,KAQzB8I,EAAU,SAAVA,QAAWhB,GAAD,MAAyB,KAAf3D,EAAK2D,IAOzBmE,EAAS,SAATA,OAAUnE,GAGnB,OAAO9K,OAAO8K,GAAM9H,QAFR,yBACG,SAUNkM,EAAY,SAAZA,UAAapE,GACtB,OADsD,EAAAzN,UAAA5J,aAAAgD,IAAA4G,UAAA,IAAAA,UAAA,GAI/CyN,EAFIA,EAAK7G,eAcPqG,EAAW,SAAXA,SAAY6E,EAAMhc,GACE,IADIic,EACJ,EAAA/R,UAAA5J,aAAAgD,IAAA4G,UAAA,IAAAA,UAAA,GAIzBgS,EAJyB,EAAAhS,UAAA5J,aAAAgD,IAAA4G,UAAA,IAAAA,UAAA,GAIE,IAAM,KAWrC,OAf6B,EAAAA,UAAA5J,aAAAgD,IAAA4G,UAAA,IAAAA,UAAA,KAMzB8R,EAAOvb,OAAA0b,EAAA,OAAA1b,CAAiBub,GACxBhc,EAAOS,OAAA0b,EAAA,OAAA1b,CAAiBT,KAExBic,EACS,IAAIhP,OAAO,UAAY6O,EAAOE,GAAQ,UAC3CE,GAEK,IAAIjP,OAAO6O,EAAOE,GAAOE,IAExBE,KAAKpc,IASVqc,EAAc,SAAdA,cACT,OADsC,EAAAnS,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAP,IACnB2F,QAAQ,wBAAyB,SAACuH,EAAOkF,EAAIC,GACrD,OAAIA,EACOA,EAAGC,cAEPF,EAAGxL,sWCrFX,IAAMxR,EAAwB,YAAhB,oBAAOmd,KAAP,YAAAC,QAAOD,QAAqBA,KAAKA,OAASA,MAAQA,MAChD,iBAAlB,IAAOtX,EAAP,YAAAuX,QAAOvX,KAAuBA,EAAOA,SAAWA,GAAUA,QAC3D7B,iSCHJ,IAAMqZ,EAAkB,mBAKXC,EAAb,WAMI,SAAAA,QAAYC,EAAI7F,GAAK,IAAA8F,EAAAhV,kHAAAiV,CAAAjV,KAAA8U,SACjB5F,EAAIgG,KAAOhG,EAAIgG,MAAQ,GAMvBlV,KAAK+U,GAAKA,EAOV/U,KAAKmV,QAAUjG,EAAIgG,KAAKE,SAAWlG,EAAIgG,KAAKpZ,MACrCnD,OAAA0c,EAAA,YAAA1c,CAAYuW,EAAIpT,MAMvBkE,KAAKsV,QAAUP,EAAG/U,KAAKmV,SAMvBnV,KAAKuV,OAASR,EAAGQ,SAMjBvV,KAAKwV,QAAUT,EAAGS,QAMlBxV,KAAKyV,aAAc,EAGnBzV,KAAKwV,QAAQE,GAAG,CAAC,WAAY,kBAAMV,EAAKW,YAhDhD,2GAAAC,CAAAd,QAAA,EAAAlR,IAAA,OAAAtH,MAAA,SAAAuZ,OAuDQ,MAAM,IAAIva,MAAMuZ,KAvDxB,CAAAjR,IAAA,QAAAtH,MAAA,SAAAwZ,QA8DQ9V,KAAK+V,SACL/V,KAAK6V,SA/Db,CAAAjS,IAAA,UAAAtH,MAAA,SAAAqZ,UAsEQ,MAAM,IAAIra,MAAMuZ,KAtExB,CAAAjR,IAAA,SAAAtH,MAAA,SAAAyZ,SA6EQ/V,KAAKsV,SAAU,IA7EvB,CAAA1R,IAAA,UAAAtH,MAAA,SAAA0Z,UAoFQhW,KAAKsV,SAAU,IApFvB,CAAA1R,IAAA,YAAAtH,MAAA,SAAA2Z,YA4FQ,OAAwB,IAAjBjW,KAAKsV,YA5FpBR,QAAA,iCCLAnd,EAAAD,QAAA,CACAwe,YAAA,EACAC,UAAA,EACAC,WAAA,EACAC,YAAA,EACAC,WAAA,iCCLA,IAMAC,EACArF,EAAAD,EAAA/M,EACAsS,EAAAC,EAAAtS,EACAC,EAAAsS,EAAAC,EAAAC,EATAC,EAAAzd,EAAA,KACA4N,EAAA5N,EAAA,IACAgM,EAAAhM,EAAA,KACA2N,EAAA3N,EAAA,IACA2M,EAAA3M,EAAA,MAOA,SAAAmP,mBAEA,IAAAC,EAAA,GAkDA,SAAAC,aAAApD,GAEAmD,EADA,WAAAnD,EAAA,MACA,EAOA,SAAAqD,gBAAArD,EAAAsD,GAEA,OAAAA,GAAAvD,EAAA,IAAAuD,EAAA,UAWA,SAAAC,yBAAAzK,GACA,IAAA0K,EAAA9D,OAAA5G,GACA,gBAAAA,GACA,OAAA4G,OAAA5G,EAAAuE,eAAAmG,GAbAD,CAAAD,GAiBA,SAAAG,sBAAAzD,GACA,gBAAAlH,EAAAmH,GAEA,OAAAF,EAAAjH,EAAAkH,EAAAC,IAlBAwD,CAAAzD,GAsBA,SAAA0D,yBAAA1D,GACA,IAAAzK,EAAAyK,EAAA2D,cACA,gBAAA7K,GACA,IAAA8K,SAAA9K,EACA,OAAA8K,IAAArO,GAAA,WAAAqO,GAAA7D,EAAAjH,EAAAkH,KAxFA,SAAA6D,eAEA,IAAAC,EAAApC,EAAA8P,GAEA3F,EAAAnI,yBAAAI,EAAA,IACA8H,EAAAlI,yBAAAI,EAAA,IACAjF,EAAA6E,yBAAAI,EAAA,IAEAqN,EAAA9N,gBAAAS,EAAA,IACAsN,EAAA/N,gBAAAS,EAAA,IAWAhF,EAAAuE,gBAAAS,EAAA,IAGA/E,EAAAO,MAAAP,SAAAsE,gBAAAS,EAAA,IACAyN,EAAAlO,gBAAAS,EAAA,IAEAuN,EAAAhO,gBAAAS,EAAA,uBAAAC,UACAuN,EAAAjO,gBAAAS,EAAA,uBAAAE,UAIAZ,aAAA,aACAA,aAAAU,EAAA,IACAV,aAAAU,EAAA,IACAV,aAAAU,EAAA,IACAV,aAAAU,EAAA,IACAV,aAAAU,EAAA,IACAV,aAAAU,EAAA,IAuDAD,GAnDA,SAAAI,gBAEAtC,EAAAD,EADA,qEACA,SAAAzB,GACAmD,aAAAnD,EAAA,WAiDAgE,GAEAiN,EAAA,SAAApY,EAAAkH,GAMA,OAhDA,SAAAkE,YAAAlE,GACA,OAAAmD,EAAAnD,GA+CAkE,CAAAlE,IAAAU,EAAA5H,EAAAkH,IAKAkD,GAEA5Q,EAAAD,QAAA,CACA6e,iBACArF,YACAD,WACA/M,WACAsS,SACAC,WACAtS,aACAC,UACAsS,QACAC,QACAC,yCCtIA,IAAAtZ,EAAAlE,EAAA,GAGA0d,EAFA1d,EAAA,IAEA0d,cAEAxZ,EAAAuH,KAAAkS,aAAA,CAEAC,UAAA,SAAAC,EAAAC,GACA,OAAAJ,EAAAtH,IAAAyH,EAAAC,MAKAvf,EAAAD,QAAA4F,EAAAuH,KAAAmS,wCCbArf,EAAAD,QAAA,CACAkQ,IAAA1F,KAAA0F,IACAI,IAAA9F,KAAA8F,IACAC,IAAA/F,KAAA+F,IACA9F,IAAAD,KAAAC,IACAiF,KAAAlF,KAAAkF,KACAC,MAAAnF,KAAAmF,MACAc,MAAAjG,KAAAiG,qCCPA,IAIAgP,EAAAL,EAJAM,EAAAhe,EAAA,KACAie,EAAAje,EAAA,KACAke,EAAAle,EAAA,MAIA,SAAAme,eAEA,SAAAC,cAAAC,GACAzX,KAAA0X,QAAA,GACA1X,KAAAwP,IAAAiI,GAGAD,cAAA5e,UAAA,CAEAwD,IAAA,SAAA6a,EAAAU,GACA,IAAAF,EAAAzX,KAAA0X,QAAAT,GAMA,OALAQ,GAAAL,EAAAH,GACAQ,EAAAzX,KAAAwP,IAAAyH,EAAAG,EAAAH,KACOQ,GAAAR,IACPQ,EAAAzX,KAAA0X,QAAAT,EAAA9Z,MAAA,OAEAsa,IAAA,IAAAE,EAAAF,EAAAzX,KAAA4X,SAGAC,OAAA,WACA,OAAA7X,KAAA0X,SAGAR,IAAA,SAAAD,GACA,IAAAQ,EAAAzX,KAAA5D,IAAA6a,GAAA,GACA,IAAAQ,EACA,UAAA9R,UAAA,mBAAAsR,GAEA,OAAAjX,KAAA4X,QAAAH,GAGAjI,IAAA,SAAAyH,EAAAa,GACAA,EAIAA,EAAAb,OAFAA,GADAa,EAAAb,GACAA,KAIA,IAAAQ,EAAAK,EAAAC,gBAAAD,EAAAR,EAAAQ,GAKA,OAJA9X,KAAA0X,QAAAT,GAAAQ,EACAzX,KAAA4X,UACA5X,KAAA4X,QAAAH,GAEAA,GAGA/H,OAAA,SAAAuH,GAIA,OAHAjX,KAAA4X,QAAAX,WACAjX,KAAA4X,QAAA5X,KAAA5D,IAAA,cAEA4D,KAAA0X,QAAAT,KAMAE,EAAAG,EAAAD,GACAP,EAAA,IAAAU,cAAAL,GAGAI,GAEA5f,EAAAD,QAAA,CACAyf,UACAL,+CCtEA1d,EAAA,IAEA4e,iCCFA,IAAA1a,EAAAlE,EAAA,GAEAzB,EAAAD,QAAA,CACAgK,OAAApE,EAAA2a,KAAAvW,OACAoC,OAAAxG,EAAA2a,KAAAnU,OACA/E,YAAAzB,EAAA2a,KAAAlZ,YACAoE,cAAA7F,EAAA2a,KAAA9U,cACAlH,eAAAqB,EAAA2a,KAAAhc,eACAuD,gBAAAlC,EAAA2a,KAAAzY,gBACAmC,qBAAArE,EAAA2a,KAAAtW,+sCCNA,IAAMuW,EAAS,CACX,uBACA,0BAISC,EAAO,OAEPC,EAAQ,QAERC,EAAS,SAQTC,EAAb,SAAAC,GAOI,SAAAD,QAAYvD,GAAI,IAAAC,+GAAAC,CAAAjV,KAAAsY,SAIZ,IAAIE,GAHJxD,EAAAyD,2BAAAzY,KAAA0Y,gBAAAJ,SAAAxf,KAAAkH,KAAM+U,EAAIuD,WAGG/C,OAAOoD,SAAW,GAJnB,OAUZ3D,EAAK4D,aAAejgB,OAAAkgB,EAAA,YAAAlgB,CAAY6f,EAAEM,oBAAqB,OAMvD9D,EAAK+D,cAAgBpgB,OAAAkgB,EAAA,YAAAlgB,CAAY6f,EAAEQ,oBAAqB,QAMxDhE,EAAKiE,cAAgBtgB,OAAAkgB,EAAA,YAAAlgB,CAAY6f,EAAEU,qBAAsB,QAMzDlE,EAAKmE,cAAgBxgB,OAAAkgB,EAAA,YAAAlgB,CAAY6f,EAAEY,sBAAuB,QAM1DpE,EAAKqE,MAAQ1gB,OAAAkgB,EAAA,YAAAlgB,CAAY6f,EAAEc,UAAW,MAOtCtE,EAAKuE,KAAO,KAOZvE,EAAKwE,MAAQ,KAQbxE,EAAKyE,MAAQ,KAObzE,EAAK0E,MAAQ,KAMb1E,EAAK2E,UAAY,CACbC,KAAM,KACNC,OAAQ,KACRC,MAAO,MAGX9E,EAAKQ,QAAQE,GAAGwC,EACZ,SAAC/C,EAAS4E,GAAV,OAAyB/E,EAAKa,KAAKkE,KAGvC/E,EAAKM,SAAU,EA/EHN,EAPpB,iQAAAgF,CAAA1B,QAA6B2B,EAAA,gHAA7BrE,CAAA0C,QAAA,EAAA1U,IAAA,OAAAtH,MAAA,SAAAuZ,KA8FSkE,GACD,IAAI/Z,KAAKyV,cAAesE,EAAxB,CAIA,IAAIhF,EAAK/U,KAAK+U,GAGVmF,EAAYvhB,OAAAwhB,EAAA,UAAAxhB,CAAU,OAI1B,GAHAuhB,EAAU7U,UAAYrF,KAAK4Y,aAGvB5Y,KAAKqZ,MACL1gB,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAKqZ,OAAO5d,YAAYye,QAG3B,GAAInF,EAAGqF,WAAY,CACpB,IAAIA,EAAarF,EAAGsF,IAAID,WACxBA,EAAWE,YAAY7e,YAAYye,GACnCA,EAAU7U,UAAY+U,EAAWG,mBAGhC,CACD,IAAIhB,EAAO5gB,OAAAwhB,EAAA,UAAAxhB,CAAU,WACrB4gB,EAAK9d,YAAYye,GACjBnF,EAAGyF,MAAMC,aAAalB,EAAMxE,EAAGyF,MAAME,YAEzC1a,KAAKuZ,KAAOW,EAGZla,KAAKwZ,MAAQxZ,KAAK2a,gBAAgBT,EAAWla,KAAK+Y,eAGlD/Y,KAAKyZ,MAAQzZ,KAAK2a,gBAAgBT,EAAWla,KAAKiZ,eAGlDjZ,KAAK0Z,MAAQ1Z,KAAK2a,gBAAgBT,EAAWla,KAAKmZ,eAElDnZ,KAAK2Z,UAAY,CACbC,KAAM5Z,KAAKwZ,MACXK,OAAQ7Z,KAAK0Z,MACbI,MAAO9Z,KAAKyZ,OAIhBzZ,KAAKyV,aAAc,EAGf9c,OAAAiiB,EAAA,QAAAjiB,CAAQoc,EAAG8F,QAGX9F,EAAGsF,IAAIQ,KAAK9E,SACZ/V,KAAKwV,QAAQsF,KAAK,YAAa/F,OAlJ3C,CAAAnR,IAAA,YAAAtH,MAAA,SAAA4d,YA6JoC,IAAtBa,EAAsB,EAAA3Y,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAXgW,EAAOlX,EAAI,EAAAkB,UAAA5J,OAAA4J,UAAA,QAAA5G,EACxB+d,EAAOvZ,KAAK2Z,UAAUoB,GAI1B,OAHI7Z,GACAqY,EAAK9d,YAAYyF,GAEdqY,IAlKf,CAAA3V,IAAA,kBAAAtH,MAAA,SAAAqe,gBA2KoBT,EAAWc,GACvB,IAAIC,EAAMtiB,OAAAwhB,EAAA,UAAAxhB,CAAU,MAAO,CAAC,QAASqiB,IAErC,OADAd,EAAUze,YAAYwf,GACfA,IA9Kf,CAAArX,IAAA,UAAAtH,MAAA,SAAAqZ,UAqLQ,GAAK3V,KAAKyV,YAAV,CAIA,IAAIV,EAAK/U,KAAK+U,GAEdpc,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKuZ,MACfvZ,KAAKuZ,KAAO,KAEZ,IAAI2B,EAAMnG,EAAGyF,MACTW,EAAWxiB,OAAAwhB,EAAA,IAAAxhB,CAAIuiB,EAAK,WACxB,GAAGlU,QAAQlO,KAAKqiB,EAAU,SAACja,GAAD,OAAQvI,OAAAwhB,EAAA,UAAAxhB,CAAUuI,KAG5ClB,KAAKyV,aAAc,OAnM3B6C,QAAA,GAwMAA,EAAQpD,KAAO,CAACkG,mBAAmB,iCC7NnC,IAAAC,EAAAjiB,EAAA,IAOAzB,EAAAD,QALA,SAAA4jB,MAAAC,EAAAC,GACAxb,KAAAub,MAAAF,EAAAE,GACAvb,KAAAwb,IAAAH,EAAAG,2ECNA,IAAAnG,EAAAjc,EAAA,GAaaqiB,EAAM,SAANA,IAAOxa,EAAKD,EAAK0a,GAE1B,IADA,IAAIC,EAAQC,QAAQF,GACX3jB,EAAI,EAAGsB,EAAI4H,EAAIzI,OAAQT,EAAIsB,EAAGtB,IACnC,GAAIY,OAAA0c,EAAA,UAAA1c,CAAUsI,EAAIlJ,GAAG+J,WAAY6Z,KAAW3a,EACxC,OAAO,EAGf,OAAO,iCClBX,IAEAxB,EAFApG,EAAA,IAEAoG,gBASA7H,EAAAD,QAPA,SAAAmkB,kBAAAC,EAAAxc,GACA,IAAA+D,EAAAyY,EAAAljB,UACA4G,EAAAF,EAAA,SAAA0B,EAAA4C,GACAP,EAAAO,GAAA5C,yFCCa+a,EAAQ,SAARA,MAASzf,GAAyB,IAAlB0f,EAAkB,EAAA5Z,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAR,IAEnC,GAAIzJ,OAAA4U,EAAA,SAAA5U,CAAS2D,GACT,OAAOA,EAKX,IAAI2f,EAAQ,IAAI9W,OAAO,SAAW6W,EAAU,IAAK,CAAC,MAC9CE,EAAcC,YACb,GAAK7f,GAEDyL,QAAQ,WAAY,OAEpBA,QAAQkU,EAAO,IAEflU,QAAQiU,EAAS,MAI1B,OAAQtO,MAAMwO,GAA6B,EAAdA,iCC5BjC,IAAAE,EAAAhjB,EAAA,IAMAzB,EAAAD,QAJA,SAAA2kB,YAAAxgB,EAAA4D,GACA,OAAA5D,EAAA,OAAAugB,EAAAvgB,GAAA,UAAA4D,oCCHA,IAAA4c,EAAAjjB,EAAA,IAMAzB,EAAAD,QAJA,SAAA4kB,WAAAzgB,GACA,OAAAwgB,EAAAxgB,EAAA,sCCHAzC,EAAA,IAEAmjB,iCCFA,IAAAC,EAAApjB,EAAA,IACAqjB,EAAArjB,EAAA,IACAkjB,EAAAljB,EAAA,IACAsjB,EAAAtjB,EAAA,IACAujB,EAAAvjB,EAAA,IAEA6X,EAAAyL,EAAAzL,SACArJ,EAAA+U,EAAA/U,IAkBAjQ,EAAAD,QAhBA,SAAAklB,WAAA/gB,EAAAghB,EAAAC,GACA,GAAA7L,EAAA4L,GAAA,CACA,IAAAE,EAAAT,EAAAzgB,GACA,GAAAihB,EAAA,CAGA,IAAAE,EAAA,EAAAF,EAAA,KACAG,EAAAJ,EAAA,EAAAE,EACAE,KAAArV,EAAAqV,KAAAD,IACAH,GAAA,EAAAG,GAIA,OADAR,EAAA3gB,EAAA4gB,EAAA5gB,GAAAghB,EAAAE,GACAlhB,EAAA4Q,0CCtBA,IAAAnP,EAAAlE,EAAA,GAEAzB,EAAAD,QAAA,CACA+M,YAAAnH,EAAA3E,OACA+L,WAAApH,EAAAqH,MACAC,UAAAtH,EAAAuH,KACAC,YAAAxH,EAAAyH,OACAmY,YAAA5f,EAAA2H,OACAD,cAAA1H,EAAA4H,SACAiY,YAAA7f,EAAA6H,sCCTA,IAAAiY,EAAAhkB,EAAA,IAMAzB,EAAAD,QAJA,SAAA2lB,WAAAxhB,EAAAyhB,EAAAC,GACA,OAAAH,EAAA,KAAAvhB,EAAAyhB,EAAAC,GAAAC,oCCHA,IAAAb,EAAAvjB,EAAA,IAEAgO,EAAAuV,EAAAvV,KACAC,EAAAsV,EAAAtV,MAEAH,EAAAhF,KAAAgF,OAAA,SAAA3K,GACA,WAAAA,GAAA4K,SAAA5K,GACAA,EAAA,EAAA6K,EAAA7K,GAAA8K,EAAA9K,GADAA,GAIA5E,EAAAD,QAAAwP,gCCVA,IAAAmB,EAAAjP,EAAA,KAEAzB,EAAAD,QAAA2Q,EAAA,qCCFA,IAAAgU,EAAAjjB,EAAA,IAMAzB,EAAAD,QAJA,SAAA+lB,SAAA5hB,GACA,OAAAwgB,EAAAxgB,EAAA,wCCHA,IAAAwgB,EAAAjjB,EAAA,IAMAzB,EAAAD,QAJA,SAAAgmB,QAAA7hB,GACA,OAAAwgB,EAAAxgB,EAAA,2CCHA,IAAA8hB,EAAAvkB,EAAA,KAEAwkB,EAAA,CACA,CACA9hB,KAAA,cACA2D,OAAA,eACAoe,WAAA,EACAtC,MAAA,EACAC,IAAA,KAEA,CACA1f,KAAA,SACA2D,OAAA,UACAoe,WAAA,IACAtC,MAAA,EACAC,IAAA,IAEA,CACA1f,KAAA,SACA2D,OAAA,UACAoe,WAAA,IACAtC,MAAA,EACAC,IAAA,IAEA,CACA1f,KAAA,OACA2D,OAAA,QACAoe,WAAA,KACAtC,MAAA,EACAC,IAAA,IAEA,CACA1f,KAAA,MACAgiB,MAAA,OACAre,OAAA,OACAse,WAAA,EACAF,WAAA,MACAtC,MAAA,EACAC,IAAA,SAAA3f,GACA,OAAA8hB,EAAA9hB,KAGA,CACAC,KAAA,OACA2D,OAAA,UACAse,WAAA,EACAF,WAAA,QAEA,CACA/hB,KAAA,QACA2D,OAAA,QACAse,WAAA,EACAF,WAAA,QACAtC,MAAA,EACAC,IAAA,IAEA,CACA1f,KAAA,OACA2D,OAAA,WACAse,WAAA,EACAF,WAAA,SACAtC,MAAA,IAIA5jB,EAAAD,QAAAkmB,gCC7DAjmB,EAAAD,QAJA,SAAAkO,UAAA5J,GACA,YAAAR,IAAAQ,iCCDA,IAAAsK,EAAAlN,EAAA,KAWAzB,EAAAD,QATA,SAAAsP,QAAA/F,EAAAnB,GACA,QAAA/H,EAAA,EAAAiK,EAAAf,EAAAzI,OAAmCT,EAAAiK,EAASjK,IAAA,CAC5C,KAAAA,KAAAkJ,GACA,OAAAqF,EAAArF,EAAAnB,EAAA/H,GAEA+H,EAAAmB,EAAAlJ,wWCIaimB,EAAa,SAAbA,WAAclmB,EAAGmI,GAC1B,IAAIge,EAAInmB,EAAEkR,cACNkV,EAAIje,EAAE+I,cACV,OAAOiV,EAAIC,GAAK,EAASA,EAAJD,EAAQ,EAAI,GASxBE,EAAa,SAAbA,WAAcrmB,EAAGmI,GAAJ,OAAWnI,EAAImI,GAQ5Bme,EAAc,SAAdA,YAAetmB,EAAGmI,GAAJ,OAAWA,EAAInI,GAS7BumB,EAAc,SAAdA,YAAeC,EAAOC,GAAR,OAAkBD,EAAM7R,UAAY8R,EAAM9R,WASxD+R,EAAe,SAAfA,aAAgBF,EAAOC,GAAR,OAAkBA,EAAM9R,UAAY6R,EAAM7R,WASzDgS,EAAgB,SAAhBA,cAAiBC,GAA6B,IAAlB1C,EAAkB,EAAA5Z,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAR,IAC/C,OAAO,SAACuc,EAASC,GACb,IAAIC,EAAOlmB,OAAAmmB,EAAA,MAAAnmB,CAAQgmB,EAAS3C,GACxB+C,EAAOpmB,OAAAmmB,EAAA,MAAAnmB,CAAQimB,EAAS5C,GAC5B,OAAO0C,EAAUG,EAAME,KAWlBC,EAAc,SAAdA,YAAeN,GAAgC,IAArBO,EAAqB,EAAA7c,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAZ,QAC5C,OAAO,SAAC8c,EAAUC,GACd,IAAIb,EAAQc,EAAA,KAAUC,OAAOH,EAAUD,GACnCV,EAAQa,EAAA,KAAUC,OAAOF,EAAUF,GACvC,OAAOP,EAAUJ,EAAOC,mCC7EhC,IAAAnC,EAAAhjB,EAAA,IAUAzB,EAAAD,QARA,SAAA4nB,UAAAzjB,GAGA,IAAA0jB,EAAA,IAAA1a,KAAAhJ,EAAA4Q,WAEA,OADA2P,EAAAmD,IAAAnD,EAAAvgB,IACA0jB,iCCPA,IAAAlD,EAAAjjB,EAAA,IAMAzB,EAAAD,QAJA,SAAA+kB,QAAA5gB,GACA,OAAAwgB,EAAAxgB,EAAA,uCCHA,IAAA2jB,EAAApmB,EAAA,IAMAzB,EAAAD,QAJA,SAAA8kB,QAAA3gB,EAAAmF,GACAwe,EAAA3jB,EAAA,OAAAmF,kCCHA,IAAAob,EAAAhjB,EAAA,IACAijB,EAAAjjB,EAAA,IAgBAzB,EAAAD,QAdA,SAAA8nB,YAAA3jB,EAAA4D,EAAAnD,EAAAmjB,GAQAA,GAAAnjB,IAAA+f,EAAAxgB,EAAA4D,EAAAnD,IAGAT,EAAA,OAAAugB,EAAAvgB,GAAA,UAAA4D,GAAAnD,kCCdA,IAAAsJ,EAAAxM,EAAA,IACAsjB,EAAAtjB,EAAA,IACAomB,EAAApmB,EAAA,IACAsmB,EAAAtmB,EAAA,KAEA+K,EAAAuY,EAAAvY,WAcAxM,EAAAD,QAZA,SAAAioB,sBAAA9jB,EAAA+jB,EAAAC,EAAArE,GASA,OARAkE,EAAAE,EAAA,SAAAE,EAAA/nB,GACA,IAAAiJ,EAAAwa,EAAAsE,EAAAtE,IAAAsE,EAAAvE,MAKA,OAJApX,EAAAnD,KACAA,IAAAnF,IAEA2jB,EAAA3jB,EAAAikB,EAAArgB,OAAAuB,IACA4E,EAAAia,MAAA9nB,IAEA8D,iCCZAlE,EAAAD,QAJA,SAAAqoB,YAAAlkB,GACA,OAAA6R,MAAA7R,EAAA4Q,0CCDA,IAAAuT,EAAA5mB,EAAA,IAQAzB,EAAAD,QANA,SAAAuoB,YAAApkB,EAAAikB,EAAAvY,EAAAuO,GACA,IAAAoB,EAAA,GAEA,OADAA,EAAA4I,GAAAvY,EACAyY,EAAAnkB,EAAAqb,EAAApB,EAAA,kCCLA,IAAAoK,EAAA9mB,EAAA,IAMAzB,EAAAD,QAJA,SAAAyoB,aACA,OAAAD,EAAA,kBAAAA,kCCHA,IAAAE,EAAAhnB,EAAA,IAEA8c,EAAAkK,EAAAlK,YACAC,EAAAiK,EAAAjK,UACAC,EAAAgK,EAAAhK,WACAC,EAAA+J,EAAA/J,YAWA1e,EAAAD,QATA,SAAA2oB,kBAAA5Z,GACA,OAAAA,IAAA4P,EACAF,EACG1P,IAAA2P,EACHF,EAEAzP,EAAA,iCCTA9O,EAAAD,QAJA,SAAA4oB,YAAAtkB,GACA,YAAAR,IAAAQ,iCCDA5C,EAAA,KACAA,EAAA,KAEAzB,EAAAD,QAAA0B,EAAA,iCCHA,IAAAmnB,EAAAnnB,EAAA,KAQAzB,EAAAD,QANA,SAAA8oB,aAAAC,GACA,OAAAF,EAAAE,EAAAlF,QACAgF,EAAAE,EAAAjF,aACAiF,EAAAlF,cAAAkF,EAAAjF,mCCLA,IAAAkF,EAAAtnB,EAAA,KACAunB,EAAAvnB,EAAA,KAEAwnB,EAAAF,EAAAE,eAMAjpB,EAAAD,QAJA,SAAAmpB,sBAAAniB,EAAAwY,EAAApX,EAAAP,GACAqhB,EAAAliB,EAAAiiB,EAAAzJ,EAAApX,GAAAP,kCCNA,IAAAuhB,EAAA1nB,EAAA,IACAgnB,EAAAhnB,EAAA,IACAinB,EAAAjnB,EAAA,IACA2nB,EAAA3nB,EAAA,IACAumB,EAAAvmB,EAAA,IAEAgd,EAAAgK,EAAAhK,WACAU,EAAAgK,EAAAhK,cASAnf,EAAAD,QAPA,SAAAspB,sBAAAnlB,EAAAolB,EAAAC,GAIA,OAHAD,IAAA7K,GACA2K,EAAAllB,EAAAib,EAAA1a,IAAA8kB,GAAAC,qBAEAxB,EAAA9jB,EAAAwkB,EAAAY,mCCbA,IAAAH,EAAA1nB,EAAA,IACAgnB,EAAAhnB,EAAA,IACAgoB,EAAAhoB,EAAA,KACAinB,EAAAjnB,EAAA,IACAumB,EAAAvmB,EAAA,IAEAgd,EAAAgK,EAAAhK,WACAU,EAAAgK,EAAAhK,cASAnf,EAAAD,QAPA,SAAA2pB,gBAAAxlB,EAAAolB,EAAAC,EAAArB,GAIA,OAHAoB,IAAA7K,GACAgL,EAAAvlB,EAAAib,EAAA1a,IAAA8kB,GAAAC,qBAEAxB,EAAA9jB,EAAAwkB,EAAAY,GAAApB,GAAA,kCCbA,IAAAO,EAAAhnB,EAAA,IACAwM,EAAAxM,EAAA,IACAkoB,EAAAloB,EAAA,KACAmoB,EAAAnoB,EAAA,IAEA+c,EAAAiK,EAAAjK,UAwBAxe,EAAAD,QAtBA,SAAA8pB,sBAAAC,EAAA3hB,EAAA8f,EAAA8B,GAEA,SAAAC,IAAA7lB,EAAAgkB,EAAA/nB,GACA,IAAAiJ,EAAAsgB,EAAAG,EAAA3lB,GACA8J,EAAA5E,IACAlB,EAAAhE,EAAAkF,EAAA8e,EAAA/nB,GAIAwpB,EAAA,SAAAzB,EAAA/nB,GACA,IAAA+P,EAAA6Z,IAAA7B,EAAAhkB,KAAAgkB,EAAA/nB,GAOA,OANA,IAAA+P,GAAA/P,IAAAoe,IAIArO,EAAA6Z,IAAA,UAAA7B,EAAA/nB,IAEA+P,GACG8X,EAAA8B,kCCzBH,IAAA9D,EAAAxkB,EAAA,IACAgnB,EAAAhnB,EAAA,IACA8N,EAAA9N,EAAA,IACAojB,EAAApjB,EAAA,IACAqjB,EAAArjB,EAAA,IACAqkB,EAAArkB,EAAA,IACA+mB,EAAA/mB,EAAA,IACAwjB,EAAAxjB,EAAA,IACAujB,EAAAvjB,EAAA,IACAijB,EAAAjjB,EAAA,IACAsjB,EAAAtjB,EAAA,IACAwoB,EAAAxoB,EAAA,KACAinB,EAAAjnB,EAAA,IACAyoB,EAAAzoB,EAAA,KACA0oB,EAAA1oB,EAAA,KACAooB,EAAApoB,EAAA,IAEA+c,EAAAiK,EAAAjK,UACAC,EAAAgK,EAAAhK,WACAC,EAAA+J,EAAA/J,YACAC,EAAA8J,EAAA9J,WACAnO,EAAAwU,EAAAxU,MACA8I,EAAAyL,EAAAzL,SAoJAtZ,EAAAD,QAlJA,SAAAsoB,WAAAnkB,EAAA4lB,EAAA3L,EAAAiM,EAAAC,EAAAC,EAAAC,GACA,IAAAC,EAqDA,SAAAC,QAAAC,EAAA/lB,EAAAwjB,EAAAmB,GACA,IAAAqB,EAAAC,EAAA9iB,EAAAqgB,EAAArgB,QApDA,SAAA+iB,aAAAH,EAAApB,GACAe,IAAAG,IAEAA,EADA,YAAAE,EACAjM,EAEAyL,EAAAZ,IAiDAuB,CAAAH,EAAApB,GA5CA,SAAAwB,eAAAxB,GAGAA,EAAAQ,EAAAiB,cAGAjB,EAAAiB,YAAAzB,GAuCAwB,CAAAxB,IAEAsB,EAAAjmB,EAAA,KArBA,SAAAqmB,eAAA7C,EAAAmB,EAAAsB,GACA,GAAAtB,EAAA,CACA,IAAA2B,EAAAhF,EAAAyC,EAAAY,IACAjgB,EAAAmH,EAAA2X,EAAAjC,WAAA+E,EAAA/E,WAAA0E,GACAd,EAAAmB,EAAA9mB,MAAAkF,GAmBA2hB,CAAA7C,EAAAmB,EAAAsB,GACAjmB,EAAA4K,EAAA5K,IAGA,YAAA+lB,GAUAC,EAAArB,IAAA5K,GAAA,GAAAoG,EAAA5gB,IAwBAkmB,GAAAjC,EAAA/B,WAGKgE,IACLd,IAAA7K,IACA9Z,GAAA,EACAmD,EAAAme,EAAAzH,GAAA1W,QAEAnD,IAAAylB,EAAA1F,EAAAxgB,EAAA4D,IAEAqiB,EAAAjmB,EAAA4D,EAAAnD,EAAAylB,GACAO,GAhEA,SAAAO,gBAAAhnB,EAAAinB,GAIA,OAHAA,EAAA,IACAA,IAAA,OAEAA,EAAA,KAAArF,EAAA5hB,GA4DAgnB,CAAAhnB,EAAAS,IAKAkgB,EAAA3gB,EAAA,IAfAA,EAAAknB,QAAAlnB,EAAA4Q,UAAAnQ,EAAAylB,EAAAjC,EAAAjC,aAlCAkE,GAKAnF,EAAA/gB,EAAAS,EAAA2lB,GAgDA,GAAAhR,EAAAwQ,IAAAM,EAEAN,EAAA,CAAcuB,YAAAvB,QACX,GAAAxQ,EAAAwQ,GAGH,OADA5lB,EAAAknB,QAAAtB,GACA5lB,EAiBA,OAdA2lB,EAAAC,EAAAW,SAEAtM,GAAA2L,EAAAiB,aACAd,EAAA/lB,EAAA4lB,EAAAiB,aA9GA,SAAAO,kBACA,GAAAd,KAAA7L,EAAA6L,GAIA,OAAAH,GACA,cAAAnmB,IAAAqmB,GAAA/B,KACA,cAAAtkB,IAAAqmB,GAAA/B,MA+GA8C,IA3GA,SAAAC,yBACA,IAAApD,EAAAlC,EAAAuE,GACAJ,EAAAC,EACAI,QAAAtC,EAAAhkB,KAAA,EAAAgkB,EAAAqC,GAyGAe,GAEArnB,iCCnKAlE,EAAAD,QAJA,SAAAyrB,SAAAtnB,GACA,OAAAA,EAAAunB,mDCGAzrB,EAAAD,QAJA,SAAAqP,WAAAzB,GACA,OAAAA,EAAAtB,MAAA,oCCDArM,EAAAD,QAAA,CACA2rB,gBAAA,GACAC,gBAAA,MACA/e,kBAAA,IACAgf,kBAAA,IACA/e,iBAAA,IACAgf,WAAA,IACAC,YAAA,mCCPA,IAAAC,EAAAtqB,EAAA,IAMAzB,EAAAD,QAJA,SAAAisB,YAAAxlB,GACA,OAAAulB,EAAA,GAAuBvlB,kCCHvB,IAEAqB,EAFApG,EAAA,IAEAoG,gBASA7H,EAAAD,QAPA,SAAAgsB,YAAA7oB,EAAA2F,GAIA,OAHAhB,EAAAgB,EAAA,SAAAQ,EAAA4C,GACA/I,EAAA+I,GAAA5C,IAEAnG,slCCIA,IAAa+oB,EAAb,SAAArL,GAMI,SAAAqL,aAAY7O,EAAI7F,GAAK,IAAA8F,+GAAAC,CAAAjV,KAAA4jB,cAGjB,IAAIpL,GAFJxD,EAAAyD,2BAAAzY,KAAA0Y,gBAAAkL,cAAA9qB,KAAAkH,KAAM+U,EAAI7F,KAEGqG,OAHI,OASjBP,EAAK6O,aAAelrB,OAAAmrB,EAAA,MAAAnrB,CAAM6f,EAAEuL,wBACxBprB,OAAAmrB,EAAA,QAAAnrB,CAAQ6f,EAAEuL,sBAAsBC,MAChCrrB,OAAAmrB,EAAA,QAAAnrB,CAAQ6f,EAAEuL,sBAAsBE,UAChCzL,EAAEuL,sBACF,KASJ/O,EAAKkP,UAAW,EAOhBlP,EAAK7V,KAAO,GAOZ6V,EAAKmP,QAAU,GAOfnP,EAAKoP,aAAe,GA3CHpP,EANzB,iQAAAgF,CAAA4J,aAAkC3J,EAAA,gHAAlCrE,CAAAgO,aAAA,EAAAhgB,IAAA,cAAAtH,MAAA,SAAA+nB,YA2DgBC,GAAwB,IAAdhH,EAAc,EAAAlb,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAJ,GACxB2S,EAAK/U,KAAK+U,GAEd,GAAIA,EAAGwP,gBAAgBD,KAAcvP,EAAGyP,SACnC7rB,OAAAmrB,EAAA,QAAAnrB,CAAQoc,EAAGyP,WAA8C,IAAlCzP,EAAGyP,QAAQ7Y,QAAQ2Y,GAC3C,OAAOhH,EALqB,IAS5BoB,EADEhD,EAA+B3G,EAA/B2G,cAAe+I,EAAgB1P,EAAhB0P,YAGrB,GAAIzkB,KAAK6jB,eACwC,IAA7C7jB,KAAK6jB,aAAaG,IAAIrY,QAAQ2Y,GAAkB,CAChD,IAAII,EAAM1kB,KAAK6jB,aAAaG,IAAIrY,QAAQ2Y,GACxC5F,EAAY1e,KAAK6jB,aAAaI,SAASS,QAEtC,GAAI3P,EAAG4P,QAAQL,EAAU,CAACM,EAAA,OAAQA,EAAA,mBAAoB,CACvD,IAAI5I,EAAUjH,EAAG8P,WAAWP,GACxBL,EAAWa,EAAA,YACK,IAAhBL,IAA2D,IAAnCA,EAAY9Y,QAAQ2Y,KAC5CL,EAAWa,EAAA,aAEfpG,EAAY/lB,OAAAmsB,EAAA,cAAAnsB,CAAcsrB,EAAUjI,QAEnC,GAAIjH,EAAG4P,QAAQL,EAAU,CAACM,EAAA,OAAQ,CACnC,IAAI3F,EAASlK,EAAGI,QAAQ,YAAY4P,UAAUT,GAC1CL,EAAWa,EAAA,YACfpG,EAAY/lB,OAAAmsB,EAAA,YAAAnsB,CAAYsrB,EAAUhF,QAElCP,EAAYhD,OAAgBlgB,EAAYspB,EAAA,WAG5C,OAAOxH,EAAQzW,KAAK6X,KA3F5B,CAAA9a,IAAA,iBAAAtH,MAAA,SAAA0oB,eAmGmBC,GAAY,IAAAC,EAAAllB,KACvBilB,EAAWje,QAAQ,SAACme,GAChB,IAAIC,EAASF,EAAKG,UAAUF,GAC5BD,EAAKI,MAAMH,EAAQD,EAAKnQ,GAAGwQ,eAC3BL,EAAKM,cAAcL,EAAQC,OAvGvC,CAAAxhB,IAAA,qBAAAtH,MAAA,SAAAmpB,mBAiHuBC,EAAQC,GACvB,IAAI5Q,EAAK/U,KAAK+U,GAEd,GAAIA,EAAG6Q,uBACH,OAAO,EAGX,GAAI7Q,EAAG8Q,QACH,IAAKltB,OAAAmrB,EAAA,QAAAnrB,CAAQgtB,IAAoB5Q,EAAG+Q,WAAWJ,GAC3C,OAAO,OAGX,GAAI3Q,EAAGgR,eAAeL,GAClB,OAAO,EAIf,OAAO,IAlIf,CAAA9hB,IAAA,cAAAtH,MAAA,SAAA0pB,cAyIQ,IAAIjR,EAAK/U,KAAK+U,GACTA,EAAGwQ,eAAkBxQ,EAAGkR,gBAI7BjmB,KAAKkmB,iBA9IbtC,aAAA,4CCRM/V,OAAM,KAAK9T,SAEjB6W,EAAA,SAQIuV,MARW,SAAAA,MAQLrqB,EAAMQ,EAAO8pB,GACf,IAAIC,EAAS,GACTD,IAEAC,EAAS,cADTA,EAAS,IAAIxhB,MAAM,IAAIA,MAAQ4H,UAAoB,KAAR2Z,IACZE,eAEnCzY,EAAI0Y,OAASzqB,EAAO,IAAM0qB,OAAOlqB,GAAS+pB,GAQ9CI,KAtBW,SAAAA,KAsBN3qB,GACD,IAAI4qB,EAAc,GACd1c,EAASlO,EAAO,IACpB,GAAwB,EAApB+R,EAAI0Y,OAAO/tB,OAAY,CACvB,IAAI+tB,EAAS1Y,EAAI0Y,OACbtJ,EAASsJ,EAAO5a,QAAQ3B,GAC5B,IAAgB,IAAZiT,EAAe,CACfA,GAAUjT,EAAOxR,OACjB,IAAIgjB,EAAM+K,EAAO5a,QAAQ,IAAKsR,IACjB,IAATzB,IACAA,EAAM+K,EAAO/tB,QAEjBkuB,EAAcC,SAASJ,EAAOK,UAAU3J,EAAQzB,KAGxD,OAAOkL,GAOXhX,OA5CW,SAAAA,OA4CJ5T,GACHkE,KAAKmmB,MAAMrqB,EAAM,IAAK,kgCCrC9B,IAAa+qB,EAAb,SAAAtO,GAMI,SAAAsO,OAAY9R,GAAI,IAAAC,+GAAAC,CAAAjV,KAAA6mB,QAIZ,IAAIrO,GAHJxD,6HAAAyD,CAAAzY,KAAA0Y,gBAAAmO,QAAA/tB,KAAAkH,KAAM+U,EAAI8R,UAGGtR,OAAOsQ,QAAU,GAM9B7Q,EAAK8R,YAAcnuB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEwO,cAAe,SAMhDhS,EAAKiS,QAAU,KAMfjS,EAAKkS,cAAgB,KAMrBlS,EAAKqE,MAAQ1gB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEc,UAAW,MAMtCtE,EAAKmS,WAAaxuB,OAAAouB,EAAA,WAAApuB,CAAW6f,EAAEhgB,OAAQ,IAMvCwc,EAAKoS,gBAAkBzuB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE6O,2BAA4B,MAMjErS,EAAKsS,cAAgB3uB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE+O,cAAe,SAMlDvS,EAAKwS,cAAgB7uB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEiP,cAAe,WAOlDzS,EAAK0S,eAAiB/uB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEmP,iBAAkB,MAMtD3S,EAAK4S,kBAAoBjvB,OAAAmrB,EAAA,QAAAnrB,CAAQqc,EAAK0S,gBAMtC1S,EAAK6S,mBAAqBlvB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEsP,sBAAuB,QAM/D9S,EAAK+S,oBAAsBpvB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEwP,uBACrC,YAOJhT,EAAKiT,eAAiB,EAOtBjT,EAAKkT,QAAU,EAOflT,EAAKmT,cAAgB,EAMrBnT,EAAKoT,gBAAkBzvB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE6P,mBAAoB,KAMzDrT,EAAKsT,gBAAkB3vB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE+P,mBAAoB,KAMzDvT,EAAKwT,gBAAkB7vB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEiQ,mBAAoB,MAMzDzT,EAAK0T,iBAAmB/vB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEmQ,oBAAqB,MAM3D3T,EAAK4T,gBAAkBjwB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEqQ,mBAC/B9T,EAAG+T,YACD,wCAA0C9T,EAAK8R,YAC/C,kCAFe,MAQvB9R,EAAK+T,gBAAkBpwB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEwQ,mBAC/BjU,EAAG+T,YACD,wCAA0C9T,EAAK8R,YAC/C,0CAFe,MAQvB9R,EAAKiU,iBAAmBtwB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE0Q,oBAChCnU,EAAG+T,YACD,wCAA0C9T,EAAK8R,YAC/C,oCAFe,MAQvB9R,EAAKmU,gBAAkBxwB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE4Q,mBAC/BrU,EAAG+T,YACD,wCAA0C9T,EAAK8R,YAC/C,kCAFe,MAQvB9R,EAAKqU,SAAW1wB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE8Q,UAAW,UAMzCtU,EAAKuU,OAAS5wB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEgR,QAAS,QAMrCxU,EAAKyU,iBAAmB9wB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEkR,mBAAoB,QAM1D1U,EAAK2U,QAAUhxB,OAAAouB,EAAA,aAAApuB,CAAa6f,EAAEoR,MAAM,GAMpC5U,EAAK6U,iBAAmBlxB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEsR,mBAAoBC,EAAA,QAM1D/U,EAAKgV,gBAAkBrxB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEyR,iBAAkBC,EAAA,QAMvDlV,EAAKmV,mBAAqBxxB,OAAAouB,EAAA,WAAApuB,CAAW6f,EAAE4R,sBAAuBtG,EAAA,UAM9D9O,EAAKqV,kBAAoB1xB,OAAAouB,EAAA,WAAApuB,CAAW6f,EAAE8R,qBAAsBxG,EAAA,UAO5D9O,EAAKuV,cAAgB,KAMrBvV,EAAKwV,YAAc,KAMnBxV,EAAKyV,YAAc,KAMnBzV,EAAK0V,YAAc,KAMnB1V,EAAK2V,aAAe,KAMpB3V,EAAK4V,OAAS,KAMd5V,EAAK6V,SAAW,KAMhB7V,EAAK8V,QAAU,KAEf,IAAIC,EAAWhW,EAAGiW,OACdC,EAAQlW,EAAGmW,WAAU,GAEzBlW,EAAKkT,QAAUhmB,KAAKkF,MAAM6jB,EAAQF,GAAY/V,EAAKmS,YAEnD,IAAInrB,EAACmvB,8CAAAnW,IAvQO,OA6QZA,EAAKhC,IAAM,CACPoY,SADO,SAAAA,WAEH,OAAQpvB,EAAE6tB,mBAAqBE,EAAA,OAC3B/tB,EAAEirB,QAAQ3J,QAAQ+N,cAClBC,SAAStvB,EAAEirB,QAAQ3qB,MAAO,IAAM,GAExCivB,OANO,SAAAA,SAOH,OAAQvvB,EAAE6tB,mBAAqBE,EAAA,OAC3BuB,SAAStvB,EAAEirB,QAAQ3J,QAAQ9kB,OAAQ,IAAM,EACxCwD,EAAEksB,QAAU,GAErBsD,KAXO,SAAAA,OAYH,IAAIC,EAAYzvB,EAAEgX,IAAIoY,WAAapvB,EAAEgX,IAAIuY,SACrCvvB,EAAEgX,IAAIoY,WAAa,EAAI,EAC3BpvB,EAAE0vB,WAAWD,IAEjBE,KAhBO,SAAAA,OAiBH,IAAIC,EAA+B,EAAnB5vB,EAAEgX,IAAIoY,WAClBpvB,EAAEgX,IAAIoY,WAAa,EAAIpvB,EAAEgX,IAAIuY,SACjCvvB,EAAE0vB,WAAWE,IAEjBvrB,KArBO,SAAAA,OAsBHrE,EAAE0vB,WAAW1vB,EAAEgX,IAAIuY,WAEvBM,MAxBO,SAAAA,QAyBH7vB,EAAE0vB,WAAW,IAEjBI,WA3BO,SAAAA,WA2BIxyB,GACHX,OAAAozB,EAAA,aAAApzB,CAAaW,EAAG,CAACywB,EAAA,cACbhV,EAAGiX,QACHjX,EAAGrJ,SACH1P,EAAE0vB,WAAW1vB,EAAEgX,IAAIoY,aAEnBpvB,EAAE0vB,aAEN1rB,KAAKisB,SAGbC,eAAgB,KAChBC,QAAS,KACTC,QAAS,KACTC,QAAS,KACTC,SAAU,MAvTFtX,EANpB,iQAAAgF,CAAA6M,OAA4B5M,EAAA,gHAA5BrE,CAAAiR,OAAA,EAAAjjB,IAAA,OAAAtH,MAAA,SAAAuZ,OAoUW,IACC0W,EADDrH,EAAAllB,KAEC+U,EAAK/U,KAAK+U,GACV/B,EAAMhT,KAAKgT,IAEf,IAAIhT,KAAKyV,YAAT,CAIAzV,KAAKwV,QAAQsF,KAAK,uBAAwB9a,MAAOrH,OAAAmrB,EAAA,OAAAnrB,CAAOqH,KAAKqZ,QAIzDrZ,KAAK4nB,oBACD5nB,KAAK0nB,eAAelvB,OAAS,EAC7BwH,KAAK4nB,mBAAoB,GAEzB5nB,KAAKmnB,WAAannB,KAAK0nB,eAAe,GAAG,GACzC1nB,KAAKwsB,sBAIbxZ,EAAIkZ,eAAiB,SAACpxB,GAClB,IAAI2xB,EAAM3xB,EAAMD,OAChBqqB,EAAKwG,WAAWe,EAAIpB,gBAIpBrrB,KAAK6pB,mBAAqBE,EAAA,UAC1BwC,EAAW5zB,OAAAwhB,EAAA,UAAAxhB,CAAUoxB,EAAA,SACZ1kB,UAAYrF,KAAKsnB,cAC1B3uB,OAAAozB,EAAA,OAAApzB,CAAO4zB,EAAU,SAAUvZ,EAAIkZ,iBAI/BlsB,KAAK6pB,mBAAqBE,EAAA,SAC1BwC,EAAW5zB,OAAAwhB,EAAA,UAAAxhB,CAAUoxB,EAAA,MAAO,CAAC,QAAS/pB,KAAKmoB,iBAClC9iB,UAAYrF,KAAKwnB,cAC1B7uB,OAAAozB,EAAA,OAAApzB,CAAO4zB,EAAU,WAAYvZ,EAAI8Y,aAIrC,IAAIY,EAAc/zB,OAAAwhB,EAAA,UAAAxhB,CAAU,QACxBg0B,EAAch0B,OAAAwhB,EAAA,UAAAxhB,CAAU,QACxBi0B,EAAcj0B,OAAAwhB,EAAA,UAAAxhB,CAAU,QACxBk0B,EAAel0B,OAAAwhB,EAAA,UAAAxhB,CAAU,QAE7B,GAAIqH,KAAK2pB,QAAS,CAEd,GAAK3pB,KAAK4oB,gBAUN8D,EAAYI,UAAY9sB,KAAK4oB,gBAC7BjwB,OAAAozB,EAAA,OAAApzB,CAAO+zB,EAAa,QAAS1Z,EAAIwY,UAXV,CACvB,IAAIuB,EAAUp0B,OAAAwhB,EAAA,UAAAxhB,CAAUoxB,EAAA,MACpB,CAAC,OAAQ,UACT,CAAC,QAAS/pB,KAAKooB,iBACf,CAAC,QAAS,SAEd2E,EAAQ1nB,UAAYrF,KAAK8mB,YACzBnuB,OAAAozB,EAAA,OAAApzB,CAAOo0B,EAAS,QAAS/Z,EAAIwY,MAC7BkB,EAAYjxB,YAAYsxB,GAM5B,GAAK/sB,KAAK+oB,gBAUN4D,EAAYG,UAAY9sB,KAAK+oB,gBAC7BpwB,OAAAozB,EAAA,OAAApzB,CAAOg0B,EAAa,QAAS3Z,EAAI2Y,UAXV,CACvB,IAAIqB,EAAUr0B,OAAAwhB,EAAA,UAAAxhB,CAAUoxB,EAAA,MACpB,CAAC,OAAQ,UACT,CAAC,QAAS/pB,KAAKsoB,iBACf,CAAC,QAAS,aAEd0E,EAAQ3nB,UAAYrF,KAAK8mB,YACzBnuB,OAAAozB,EAAA,OAAApzB,CAAOq0B,EAAS,QAASha,EAAI2Y,MAC7BgB,EAAYlxB,YAAYuxB,GAM5B,GAAKhtB,KAAKmpB,gBAUNyD,EAAYE,UAAY9sB,KAAKmpB,gBAC7BxwB,OAAAozB,EAAA,OAAApzB,CAAOi0B,EAAa,QAAS5Z,EAAI3S,UAXV,CACvB,IAAI4sB,EAAUt0B,OAAAwhB,EAAA,UAAAxhB,CAAUoxB,EAAA,MACpB,CAAC,OAAQ,UACT,CAAC,QAAS/pB,KAAKwoB,iBACf,CAAC,QAAS,SAEdyE,EAAQ5nB,UAAYrF,KAAK8mB,YACzBnuB,OAAAozB,EAAA,OAAApzB,CAAOs0B,EAAS,QAASja,EAAI3S,MAC7BusB,EAAYnxB,YAAYwxB,GAM5B,GAAKjtB,KAAKipB,iBAUN4D,EAAaC,UAAY9sB,KAAKipB,iBAC9BtwB,OAAAozB,EAAA,OAAApzB,CAAOk0B,EAAc,QAAS7Z,EAAI6Y,WAXV,CACxB,IAAIqB,EAAWv0B,OAAAwhB,EAAA,UAAAxhB,CAAUoxB,EAAA,MACrB,CAAC,OAAQ,UACT,CAAC,QAAS/pB,KAAK0oB,kBACf,CAAC,QAAS,UAEdwE,EAAS7nB,UAAYrF,KAAK8mB,YAC1BnuB,OAAAozB,EAAA,OAAApzB,CAAOu0B,EAAU,QAASla,EAAI6Y,OAC9BgB,EAAapxB,YAAYyxB,IAQjC,IAAIC,EAAYntB,KAAKqZ,MAEjB1gB,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAKqZ,OADTtE,EAAGI,QAAQ,WAAW+E,UAAUla,KAAKgqB,iBAEzCmD,EAAS1xB,YAAYoxB,GACrBM,EAAS1xB,YAAYkxB,GAErB,IAAIS,EAAez0B,OAAAwhB,EAAA,UAAAxhB,CAAU,QAC7By0B,EAAa3xB,YAAY9C,OAAAwhB,EAAA,WAAAxhB,CAAWqH,KAAKqpB,WACzC+D,EAAa/nB,UAAYrF,KAAKypB,iBAC9B0D,EAAS1xB,YAAY2xB,GACrBD,EAAS1xB,YAAY8wB,GACrB,IAAIc,EAAc10B,OAAAwhB,EAAA,UAAAxhB,CAAU,QAC5B00B,EAAY5xB,YAAY9C,OAAAwhB,EAAA,WAAAxhB,CAAWqH,KAAKupB,SACxC8D,EAAYhoB,UAAYrF,KAAKypB,iBAC7B0D,EAAS1xB,YAAY4xB,GACrB,IAAIC,EAAS30B,OAAAwhB,EAAA,UAAAxhB,CAAU,QACvB20B,EAAOjoB,UAAYrF,KAAKypB,iBACxB6D,EAAO7xB,YAAY9C,OAAAwhB,EAAA,WAAAxhB,CAAW,IAAMqH,KAAKkoB,QAAU,MACnDiF,EAAS1xB,YAAY6xB,GACrBH,EAAS1xB,YAAYixB,GACrBS,EAAS1xB,YAAYmxB,GAErB5sB,KAAKwqB,YAAckC,EACnB1sB,KAAKyqB,YAAckC,EACnB3sB,KAAK0qB,YAAckC,EACnB5sB,KAAK2qB,aAAekC,EACpB7sB,KAAK4qB,OAAS0C,EACdttB,KAAK6qB,SAAWuC,EAChBptB,KAAK8qB,QAAUuC,EACfrtB,KAAKinB,QAAUsF,EAEfvsB,KAAKutB,gBAEAxY,EAAGyY,UACJzY,EAAG0Y,kBACHztB,KAAKutB,cAAcxY,EAAG2Y,iBAG1B1tB,KAAKwV,QAAQE,GAAG,CAAC,mBAAoB/c,OAAAozB,EAAA,MAAApzB,CAAMqH,KAAK2tB,gBAAiB3tB,OACjEA,KAAKwV,QAAQE,GAAG,CAAC,eAAgB/c,OAAAozB,EAAA,MAAApzB,CAAMqH,KAAK4tB,kBAAmB5tB,OAC/DA,KAAKwV,QAAQE,GAAG,CAAC,uBACb/c,OAAAozB,EAAA,MAAApzB,CAAMqH,KAAK6tB,yBAA0B7tB,OAGzCA,KAAKyV,aAAc,EAEnBzV,KAAKwV,QAAQsF,KAAK,sBAAuB9a,SA7djD,CAAA4D,IAAA,QAAAtH,MAAA,SAAAwZ,QAoe+B,IAArBgY,EAAqB,EAAA1rB,UAAA5J,aAAAgD,IAAA4G,UAAA,IAAAA,UAAA,GACvBpC,KAAK+V,SACL/V,KAAK6V,OAEDiY,GACA9tB,KAAK+U,GAAGrJ,WAzepB,CAAA9H,IAAA,kBAAAtH,MAAA,SAAAqxB,kBAifQ3tB,KAAKioB,eAAiB,EACtBjoB,KAAKmoB,cAAgB,EACrBnoB,KAAKutB,cAAcvtB,KAAK+U,GAAG2Y,kBAnfnC,CAAA9pB,IAAA,gBAAAtH,MAAA,SAAAixB,cA2fkBQ,GACV,IAAIhZ,EAAK/U,KAAK+U,GACVwE,EAAQvZ,KAAKqZ,MAEb1gB,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAKqZ,OADTtE,EAAGI,QAAQ,WAAW+E,UAAUla,KAAKgqB,iBAezC,GAXAjV,EAAG2Y,eAAiBK,GAAahZ,EAAGiZ,cAAa,GAGjDhuB,KAAKkoB,QAAUhmB,KAAKkF,KAAK2N,EAAG2Y,eAAel1B,OAASwH,KAAKmnB,YAEzDnnB,KAAK4qB,OAAOkC,UAAY9sB,KAAKkoB,QAEzBloB,KAAK6pB,mBAAqBE,EAAA,SAC1B/pB,KAAKinB,QAAQ6F,UAAY,IAGV,EAAf9sB,KAAKkoB,QAEL,GADA3O,EAAK0U,MAAMC,WAAa,UACpBluB,KAAK6pB,mBAAqBE,EAAA,OAC1B,IAAK,IAAIoE,EAAI,EAAGA,EAAInuB,KAAKkoB,QAASiG,IAAK,CACnC,IAAIpe,EAAMpX,OAAAwhB,EAAA,UAAAxhB,CAAUw1B,EAAI,EAAGA,EAAInuB,KAAKmnB,YAAY,GAChDnnB,KAAKinB,QAAQ3J,QAAQ6Q,GAAKpe,OAI9B/P,KAAKinB,QAAQ3qB,MAAQ0D,KAAKmoB,mBAK9B5O,EAAK0U,MAAMC,WAAa,SAE5BluB,KAAKouB,YAAYrZ,EAAG2Y,kBA7hB5B,CAAA9pB,IAAA,cAAAtH,MAAA,SAAA8xB,YAoiBgBL,GACR,IAAIhZ,EAAK/U,KAAK+U,GACVsZ,EAAOtZ,EAAGyF,MAAM6T,KAChBpG,EAAiBqD,SAAStrB,KAAKioB,eAAgB,IAC/CqG,EAAerG,EAAiBqD,SAAStrB,KAAKmnB,WAAY,IAG1D4G,IACAhZ,EAAG2Y,eAAiBK,GAIxB,IAAK,IAAIQ,EAAI,EAAGvsB,EAAM+S,EAAGyZ,gBAAe,GAAOD,EAAIvsB,EAAKusB,IAAK,CACzD,IAAIE,EAAc1Z,EAAG2Y,eAAea,GAChClyB,EAAIgyB,EAAKI,GACT3I,EAAazpB,EAAEqyB,aAAa,YAC5BC,GAAe,EAEV1G,GAALsG,GAAuBA,EAAID,GACvB31B,OAAAmrB,EAAA,OAAAnrB,CAAOmtB,IAAelK,QAAuB,SAAfkK,MAE9B6I,IADAtyB,EAAE4xB,MAAMW,QAAU,KAItBvyB,EAAE4xB,MAAMW,QAAU7E,EAAA,KAEtB/pB,KAAKwV,QAAQsF,KAAK,YAAa/F,EAAI0Z,EAAaF,EAAGI,GAIvD3uB,KAAKwV,QAAQsF,KAAK,kBAAmB/F,EAAI/U,QAlkBjD,CAAA4D,IAAA,UAAAtH,MAAA,SAAAuyB,UA0kBQ,OAAO7uB,KAAKmoB,gBA1kBpB,CAAAvkB,IAAA,UAAAtH,MAAA,SAAAwyB,QAklBYC,GAEJ,GADS/uB,KAAK+U,GACNia,iBAAoBhvB,KAAKiW,YAAjC,CAGA,IAAIgZ,EAASjvB,KAAKgT,IACdkc,EAAOta,QAAUma,GACrB,GAAgB,WAAZG,EACA,OAAQH,EAAI/lB,eACR,IAAK,OACDimB,EAAOzD,OACP,MACJ,IAAK,WACDyD,EAAOtD,OACP,MACJ,IAAK,OACDsD,EAAO5uB,OACP,MACJ,IAAK,QACD4uB,EAAOpD,QACP,MACJ,QACIoD,EAAOzD,WAIE,WAAZ0D,GACLlvB,KAAK0rB,WAAWqD,EAAM,MA7mBlC,CAAAnrB,IAAA,oBAAAtH,MAAA,SAAAkwB,oBAonBwB,IAAA2C,EAAAnvB,KACZ+U,EAAK/U,KAAK+U,GACV/B,EAAMhT,KAAKgT,IAEf,IAAIhT,KAAKknB,eAAkBlnB,KAAK0nB,eAAhC,CAIA1U,EAAIoc,iBAAmB,SAACC,GACpBF,EAAKG,yBACLD,EAAGx0B,OAAOoxB,QAGd,IAAIsD,EAAO52B,OAAAwhB,EAAA,UAAAxhB,CAAUoxB,EAAA,QACrBwF,EAAKlqB,UAAYrF,KAAK6nB,mBACtB,IAAI2H,EAAWxvB,KAAK0nB,eAAe,GAC/B+H,EAAWzvB,KAAK0nB,eAAe,GAC/BgI,EAAW/2B,OAAAwhB,EAAA,UAAAxhB,CAAU,QACzB+2B,EAASrqB,UAAYrF,KAAK+nB,oBAG1B,IAAIoF,EAAYntB,KAAKonB,gBAEjBzuB,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAKonB,iBADTrS,EAAGI,QAAQ,WAAW+E,UAAUgQ,EAAA,OAEpCwF,EAASj0B,YAAY9C,OAAAwhB,EAAA,WAAAxhB,CAAW62B,IAEhC,IAAI3U,EAAO9F,EAAGI,QAAQ,QAClB0F,GAAQA,EAAK8U,KACb9U,EAAK8U,IAAIhhB,WAAW8L,aAAaiV,EAAU7U,EAAK8U,KAChD9U,EAAK8U,IAAIhhB,WAAW8L,aAAa8U,EAAM1U,EAAK8U,OAE5CxC,EAAS1xB,YAAYi0B,GACrBvC,EAAS1xB,YAAY8zB,IAGzB,IAAK,IAAIlzB,EAAI,EAAGA,EAAIozB,EAASj3B,OAAQ6D,IAAK,CACtC,IAAIuzB,EAAU,IAAIC,OAAOJ,EAASpzB,GAAIozB,EAASpzB,IAAI,GAAO,GAC1DkzB,EAAKjS,QAAQjhB,GAAKuzB,EAEtBj3B,OAAAozB,EAAA,OAAApzB,CAAO42B,EAAM,SAAUvc,EAAIoc,kBAC3BpvB,KAAKuqB,cAAgBmF,EACrB1vB,KAAKknB,cAAgBqI,KA7pB7B,CAAA3rB,IAAA,uBAAAtH,MAAA,SAAAwzB,uBAoqBiB9vB,KAAK+U,GACNia,iBAAoBhvB,KAAKknB,eAC5BlnB,KAAK0nB,iBAGN1nB,KAAKknB,eACLvuB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKknB,eAEflnB,KAAKuqB,eACL5xB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKuqB,eAEnBvqB,KAAKknB,cAAgB,KACrBlnB,KAAKuqB,cAAgB,QAhrB7B,CAAA3mB,IAAA,aAAAtH,MAAA,SAAAovB,WAurBejlB,GACP,IAAIsO,EAAK/U,KAAK+U,GAET/U,KAAKiW,cAIVjW,KAAKwV,QAAQsF,KAAK,qBAAsB/F,EAAKtO,EAAQ,GAEvC,OAAVA,IACAA,EAAQzG,KAAK6pB,mBAAqBE,EAAA,OAC9B/pB,KAAKinB,QAAQ3J,QAAQ+N,cAAgBrrB,KAAKinB,QAAQ3qB,MAAQ,GAErD,GAATmK,GAAcA,GAAUzG,KAAKkoB,QAAU,IACvCloB,KAAKmqB,mBAAmBnqB,KAAOyG,EAAQ,GAEvCzG,KAAKmoB,cAAgBmD,SAAS7kB,EAAO,IAAM,EACvCzG,KAAK6pB,mBAAqBE,EAAA,OAC1B/pB,KAAKinB,QAAQ3J,QAAQ7W,GAAOspB,UAAW,EAEvC/vB,KAAKinB,QAAQ3qB,MAAQ0D,KAAKmoB,cAG9BnoB,KAAKioB,eAAkBjoB,KAAK6pB,mBAAqBE,EAAA,OAC7C/pB,KAAKinB,QAAQ3qB,MAASmK,EAAQzG,KAAKmnB,WAEvCnnB,KAAKouB,cAELpuB,KAAKqqB,kBAAkBrqB,KAAOyG,EAAQ,IAG1CzG,KAAKwV,QAAQsF,KAAK,oBAAqB/F,EAAKtO,EAAQ,MAttB5D,CAAA7C,IAAA,uBAAAtH,MAAA,SAAA0zB,qBA6tByBhvB,GACZhB,KAAKiW,cAAevI,MAAM1M,KAI/BhB,KAAKknB,cAAc5qB,MAAQ0E,EAC3BhB,KAAKsvB,4BAnuBb,CAAA1rB,IAAA,yBAAAtH,MAAA,SAAAgzB,yBA0uBQ,IAAIva,EAAK/U,KAAK+U,GAEd,GAAK/U,KAAKiW,aAAuC,IAAxBlB,EAAGyZ,iBAA5B,CAHqB,IAQFe,EACfvvB,KADAknB,cAAqB2C,EACrB7pB,KADqB6pB,iBAAkB5C,EACvCjnB,KADuCinB,QAASzR,EAChDxV,KADgDwV,QAGpDA,EAAQsF,KAAK,4BAA6B/F,GAE1C,IAAIqW,EAAWmE,EAAKlE,cAChB4E,EAAoBpG,IAAqBE,EAAA,OACzC9C,EAAQoE,cAAgBC,SAASrE,EAAQ3qB,MAAQ,EAAG,IAIxD,GAHA0D,KAAKmnB,WAAamE,SAASiE,EAAKjS,QAAQ8N,GAAU9uB,MAAO,IACzD0D,KAAKioB,eAAiBjoB,KAAKmnB,WAAa8I,GAEnCviB,MAAM1N,KAAKmnB,cACRnnB,KAAKioB,gBAAkBlT,EAAGmb,mBAC1BlwB,KAAKioB,eAAkBlT,EAAGmb,iBAAmBlwB,KAAKmnB,YAEtDnnB,KAAKutB,gBAED1D,IAAqBE,EAAA,QAAQ,CAC7B,IAAIoG,EAAUlJ,EAAQ3J,QAAQ9kB,OAAS,GAAKy3B,EACvChJ,EAAQ3J,QAAQ9kB,OAAS,EAC1By3B,EACJhJ,EAAQ3J,QAAQ6S,GAAQJ,UAAW,EAI3Cva,EAAQsF,KAAK,2BAA4B/F,EAAI/U,KAAKmnB,eA1wB1D,CAAAvjB,IAAA,YAAAtH,MAAA,SAAA8zB,YAixBQ,IAAIrb,EAAK/U,KAAK+U,GACd,GAAK/U,KAAKiW,YAAV,CAGAjW,KAAKwV,QAAQsF,KAAK,oBAAqB/F,GACvC,IAAIsb,EAAOtb,EAAGI,QAAQ,SAASmb,YAClB,KAATD,GACArwB,KAAK0rB,WAAY2E,EAAO,GAE5BrwB,KAAKwV,QAAQsF,KAAK,mBAAoB/F,EAAIsb,MA1xBlD,CAAAzsB,IAAA,kBAAAtH,MAAA,SAAAi0B,kBAiyBQ,IAAIxb,EAAK/U,KAAK+U,GACd,GAAK/U,KAAKiW,YAAV,CAGAjW,KAAKwV,QAAQsF,KAAK,2BAA4B/F,GAC9C,IAAIyb,EAAazb,EAAGI,QAAQ,SAASsb,gBAElB,KAAfD,IACAxwB,KAAKknB,cAAc5J,QAAQkT,GAAYT,UAAW,EAClD/vB,KAAKgwB,wBAEThwB,KAAKwV,QAAQsF,KAAK,0BAA2B/F,EAAIyb,MA5yBzD,CAAA5sB,IAAA,oBAAAtH,MAAA,SAAAsxB,kBAgzBsB7Y,EAAI2b,GAClB1wB,KAAK8uB,QAAQ4B,KAjzBrB,CAAA9sB,IAAA,2BAAAtH,MAAA,SAAAuxB,yBAqzB6B9Y,EAAIoS,GACzBnnB,KAAKgwB,qBAAqB7I,KAtzBlC,CAAAvjB,IAAA,UAAAtH,MAAA,SAAAqZ,UA6zBQ,GAAK3V,KAAKyV,YAAV,CAIA,IAAIzC,EAAMhT,KAAKgT,IAEXhT,KAAKinB,UACDjnB,KAAK6pB,mBAAqBE,EAAA,OAC1BpxB,OAAAozB,EAAA,UAAApzB,CAAUqH,KAAKinB,QAAS,SAAUjU,EAAIkZ,gBAEjClsB,KAAK6pB,mBAAqBE,EAAA,OAC/BpxB,OAAAozB,EAAA,UAAApzB,CAAUqH,KAAKinB,QAAS,WAAYjU,EAAI8Y,YAE5CnzB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKinB,UAGfjnB,KAAKwqB,cACL7xB,OAAAozB,EAAA,UAAApzB,CAAUqH,KAAKwqB,YAAa,QAASxX,EAAIwY,MACzC7yB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKwqB,aACfxqB,KAAKwqB,YAAc,MAGnBxqB,KAAKyqB,cACL9xB,OAAAozB,EAAA,UAAApzB,CAAUqH,KAAKyqB,YAAa,QAASzX,EAAI2Y,MACzChzB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKyqB,aACfzqB,KAAKyqB,YAAc,MAGnBzqB,KAAK0qB,cACL/xB,OAAAozB,EAAA,UAAApzB,CAAUqH,KAAK0qB,YAAa,QAAS1X,EAAI3S,MACzC1H,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAK0qB,aACf1qB,KAAK0qB,YAAc,MAGnB1qB,KAAK2qB,eACLhyB,OAAAozB,EAAA,UAAApzB,CAAUqH,KAAK2qB,aAAc,QAAS3X,EAAI6Y,OAC1ClzB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAK2qB,cACf3qB,KAAK2qB,aAAe,MAGpB3qB,KAAK6qB,WACLlyB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAK6qB,UACf7qB,KAAK6qB,SAAW,MAGhB7qB,KAAK8qB,UACLnyB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAK8qB,SACf9qB,KAAK8qB,QAAU,MAGf9qB,KAAK4qB,SACLjyB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAK4qB,QACf5qB,KAAK4qB,OAAS,MAGd5qB,KAAK4nB,mBACL5nB,KAAK8vB,uBAGT9vB,KAAKwV,QAAQmb,IAAI,CAAC,mBACdh4B,OAAAozB,EAAA,MAAApzB,CAAMqH,KAAK2tB,gBAAiB3tB,OAChCA,KAAKwV,QAAQmb,IAAI,CAAC,eAAgBh4B,OAAAozB,EAAA,MAAApzB,CAAMqH,KAAK4tB,kBAAmB5tB,OAChEA,KAAKwV,QAAQmb,IAAI,CAAC,uBACdh4B,OAAAozB,EAAA,MAAApzB,CAAMqH,KAAK6tB,yBAA0B7tB,OAEzCA,KAAKinB,QAAU,KACfjnB,KAAKkoB,QAAU,EAEfloB,KAAKyV,aAAc,OAj4B3BoR,OAAA,ylCCJA,IAAa+J,EAAb,SAAArY,GAMI,SAAAqY,UAAY7b,GAAI,IAAAC,+GAAAC,CAAAjV,KAAA4wB,WAIZ,IAAIpY,GAHJxD,EAAAyD,2BAAAzY,KAAA0Y,gBAAAkY,WAAA93B,KAAAkH,KAAM+U,EAAI6b,aAGGrb,OAAOsb,oBAAsB,GAJ9B,OAUZ7b,EAAK8b,QAAUn4B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAEsY,QAAS,cAMtC9b,EAAKgc,gBAAkBr4B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAEyY,iBAAkB,MAMvDjc,EAAKkc,kBAAoBv4B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAE2Y,oBAAqB,MAO5Dnc,EAAK+E,YAAcphB,OAAAmrB,EAAA,QAAAnrB,CAAQqc,EAAKgc,mBAC3Br4B,OAAAmrB,EAAA,QAAAnrB,CAAQqc,EAAKkc,mBAMlBlc,EAAKoc,SAAWz4B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAE6Y,UAAW,cAMzCrc,EAAKuE,KAAO,KAMZvE,EAAKsc,aAAe34B,OAAAo4B,EAAA,WAAAp4B,CAAW6f,EAAE+Y,mBAAoBzN,EAAA,UAMrD9O,EAAKwc,YAAc74B,OAAAo4B,EAAA,WAAAp4B,CAAW6f,EAAEiZ,kBAAmB3N,EAAA,UAMnD9O,EAAK0c,aAAe/4B,OAAAo4B,EAAA,WAAAp4B,CAAW6f,EAAEmZ,mBAAoB7N,EAAA,UAMrD9O,EAAK4c,YAAcj5B,OAAAo4B,EAAA,WAAAp4B,CAAW6f,EAAEqZ,kBAAmB/N,EAAA,UAlEvC9O,EANpB,iQAAAgF,CAAA4W,UAA+B3W,EAAA,gHAA/BrE,CAAAgb,UAAA,EAAAhtB,IAAA,OAAAtH,MAAA,SAAAuZ,OA8EW,IAAAqP,EAAAllB,KACH,IAAIA,KAAKyV,YAAT,CAGA,IAAIV,EAAK/U,KAAK+U,GACVla,EAASmF,KAAKgxB,iBAAmBr4B,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAKkxB,oBAC1Cnc,EAAGyF,MAGHjB,EAAO5gB,OAAAwhB,EAAA,UAAAxhB,CAAU,OACrB4gB,EAAKlU,UAAYrF,KAAKoxB,SACtB7X,EAAKuT,UAAY9sB,KAAK8wB,QAElB9wB,KAAK+Z,WACLlf,EAAOY,YAAY8d,GAEnB1e,EAAO8T,WAAW8L,aAAalB,EAAM1e,EAAOi3B,aAGhD9xB,KAAKuZ,KAAOA,EAGZvZ,KAAKwV,QAAQE,GACT,CAAC,cAAe,mBAChB,kBAAMwP,EAAK6M,WAIf/xB,KAAKyV,aAAc,KA1G3B,CAAA7R,IAAA,SAAAtH,MAAA,SAAAy1B,SAiHuC,EAA3B/xB,KAAK+U,GAAGyZ,iBACRxuB,KAAKgyB,OAELhyB,KAAKiyB,SApHjB,CAAAruB,IAAA,OAAAtH,MAAA,SAAA21B,OA4HajyB,KAAKyV,aAAgBzV,KAAKiW,cAG/BjW,KAAKsxB,aAAatxB,KAAK+U,GAAI/U,MAE3BA,KAAKkyB,WACLlyB,KAAKuZ,KAAK0U,MAAMW,QAAU,QAE1B5uB,KAAKwxB,YAAYxxB,KAAK+U,GAAI/U,SApIlC,CAAA4D,IAAA,OAAAtH,MAAA,SAAA01B,OA2IahyB,KAAKyV,aAAgBzV,KAAKiW,cAG/BjW,KAAK0xB,aAAa1xB,KAAK+U,GAAI/U,MAE3BA,KAAKuZ,KAAK0U,MAAMW,QAAUhK,EAAA,KAE1B5kB,KAAK4xB,YAAY5xB,KAAK+U,GAAI/U,SAlJlC,CAAA4D,IAAA,WAAAtH,MAAA,SAAA41B,WA0JQ,GAAKlyB,KAAKyV,cAAezV,KAAK+Z,YAAe/Z,KAAKiW,YAAlD,CAGA,IAAIlB,EAAK/U,KAAK+U,GACd,GAAIA,EAAGqF,WAAY,CACf,IAAIA,EAAarF,EAAGI,QAAQ,cAC5BnV,KAAKuZ,KAAK0U,MAAMkE,MAAQ/X,EAAWgY,QAAQC,YAAc,UAEzDryB,KAAKuZ,KAAK0U,MAAMkE,OAASpd,EAAGyF,MAAM8X,MAC9Bvd,EAAGyF,MAAM8X,MAAMD,YACftd,EAAGyF,MAAM+X,QAAQ,GAAGF,aAAe,QApKnD,CAAAzuB,IAAA,UAAAtH,MAAA,SAAAqZ,UAyKc,IAAAwZ,EAAAnvB,KACDA,KAAKyV,cAGV9c,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKuZ,MACfvZ,KAAKuZ,KAAO,KAEZvZ,KAAKwV,QAAQmb,IAAI,CAAC,mBAAoB,kBAAMxB,EAAK4C,WAEjD/xB,KAAKyV,aAAc,OAlL3Bmb,UAAA,slCCJA,IAAa4B,EAAb,SAAAja,GAOI,SAAAia,cAAYzd,GAAI,IAAAC,+GAAAC,CAAAjV,KAAAwyB,eAGZ,IAAIjd,GAFJP,EAAAyD,2BAAAzY,KAAA0Y,gBAAA8Z,eAAA15B,KAAAkH,KAAM+U,EAAIyd,iBAEQjd,OAHN,OASZP,EAAKyd,QAAU95B,OAAAkgB,EAAA,YAAAlgB,CAAY4c,EAAOmd,mBAAoB,QAMtD1d,EAAK2d,OAASh6B,OAAAkgB,EAAA,YAAAlgB,CAAY4c,EAAOqd,kBAAmB,OAfxC5d,EAPpB,iQAAAgF,CAAAwY,cAAmCvY,EAAA,gHAAnCrE,CAAA4c,cAAA,EAAA5uB,IAAA,OAAAtH,MAAA,SAAAuZ,OA6BY7V,KAAKyV,cAITzV,KAAK6yB,aAGL7yB,KAAKwV,QAAQE,GAAG,CAAC,gBAAiB,aAC9B/c,OAAAozB,EAAA,MAAApzB,CAAMqH,KAAK8yB,kBAAmB9yB,OAClCA,KAAKwV,QAAQE,GAAG,CAAC,gBAAiB,gBAC9B/c,OAAAozB,EAAA,MAAApzB,CAAMqH,KAAK6yB,WAAY7yB,OAG3BA,KAAKyV,aAAc,KA1C3B,CAAA7R,IAAA,aAAAtH,MAAA,SAAAu2B,aAiDQ,GAAK7yB,KAAKiW,YASV,IANA,IACIyX,EADK1tB,KAAK+U,GACUiZ,cAAa,GACjC+E,EAAWrF,EAAel1B,OAC1BksB,EAAM,EAGDsO,EAAI,EAAGA,EAAID,EAAUC,IAAK,CAC/B,IAAItN,EAASgI,EAAesF,GAC5BhzB,KAAKizB,SAASvN,EAAQhB,GACtBA,OA7DZ,CAAA9gB,IAAA,aAAAtH,MAAA,SAAA42B,WAuEexN,EAAQyN,EAAQC,GACnBA,EACApzB,KAAKizB,SAASvN,EAAQyN,GAEtBnzB,KAAKqzB,YAAY3N,KA3E7B,CAAA9hB,IAAA,WAAAtH,MAAA,SAAA22B,SAsFavN,EAAQhB,GACb,GAAK1kB,KAAKiW,cAAevI,MAAMgY,GAA/B,CAGA,IAAI2I,EAAOruB,KAAK+U,GAAGyF,MAAM6T,KACrBt2B,EAAI2V,MAAMgX,GAAOgB,EAAShB,EAC9B1kB,KAAKqzB,YAAY3N,GAEjB/sB,OAAAwhB,EAAA,SAAAxhB,CAAS01B,EAAK3I,GAAU3tB,EAAI,EAAKiI,KAAKyyB,QAAUzyB,KAAK2yB,WA9F7D,CAAA/uB,IAAA,cAAAtH,MAAA,SAAA+2B,YAsGgB3O,GACR,IAAIhX,MAAMgX,GAAV,CAGA,IAAI2J,EAAOruB,KAAK+U,GAAGyF,MAAM6T,KACzB11B,OAAAwhB,EAAA,YAAAxhB,CAAY01B,EAAK3J,GAAM1kB,KAAK2yB,QAC5Bh6B,OAAAwhB,EAAA,YAAAxhB,CAAY01B,EAAK3J,GAAM1kB,KAAKyyB,YA5GpC,CAAA7uB,IAAA,oBAAAtH,MAAA,SAAAw2B,kBAgHsB/d,EAAIue,EAAUC,EAAUH,GACtCpzB,KAAKkzB,WAAWI,EAAUC,EAAUH,KAjH5C,CAAAxvB,IAAA,UAAAtH,MAAA,SAAAqZ,UAuHc,IAAAuP,EAAAllB,KACDA,KAAKyV,cAIIzV,KAAK+U,GAAGye,QAAQ,EAC9BA,CAAQ,SAACC,EAAK17B,GAAN,OAAYmtB,EAAKmO,YAAYt7B,KAGrCiI,KAAKwV,QAAQmb,IAAI,CAAC,gBAAiB,aAC/Bh4B,OAAAozB,EAAA,MAAApzB,CAAMqH,KAAK8yB,kBAAmB9yB,OAClCA,KAAKwV,QAAQmb,IAAI,CAAC,gBAAiB,gBAC/Bh4B,OAAAozB,EAAA,MAAApzB,CAAMqH,KAAK6yB,WAAY7yB,OAE3BA,KAAKyV,aAAc,OArI3B+c,cAAA,mmCCEA,IAAakB,EAAb,SAAAnb,GAMI,SAAAmb,YAAY3e,GAAI,IAAAC,+GAAAC,CAAAjV,KAAA0zB,aAGZ,IAAIlb,GAFJxD,EAAAyD,2BAAAzY,KAAA0Y,gBAAAgb,aAAA56B,KAAAkH,KAAM+U,EAAI2e,eAEGne,OAAOoe,WAAa,GAHrB,OASZ3e,EAAK4e,SAAWj7B,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAEc,UAAW,MAMzCtE,EAAKnF,KAAOlX,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAE3I,KAAM,MAMhCmF,EAAKoc,SAAWz4B,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAE6Y,UAAW,SAMzCrc,EAAK8e,QAAUtb,EAAEsb,SAAW,gBAM5B9e,EAAK+e,KAAOp7B,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAEub,MACpBhf,EAAG+T,aAAe9T,EAAKnF,KAAO,KAC5B,wCAA0CmF,EAAKoc,SAC/C,YAAmBpc,EAAK8e,QAAU,QAM1C9e,EAAKgV,gBAAkBrxB,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAEyR,iBAAkB+J,EAAA,OAOvDhf,EAAKkF,UAAY,KAOjBlF,EAAKif,QAAU,KAxDHjf,EANpB,iQAAAgF,CAAA0Z,YAAiCzZ,EAAA,gHAAjCrE,CAAA8d,YAAA,EAAA9vB,IAAA,UAAAtH,MAAA,SAAA43B,UAsEal0B,KAAKiW,aAGVjW,KAAK+U,GAAGof,iBAzEhB,CAAAvwB,IAAA,OAAAtH,MAAA,SAAAuZ,OA+EW,IAAAqP,EAAAllB,KACC+U,EAAK/U,KAAK+U,GAEd,IAAI/U,KAAKyV,YAAT,CAIAzV,KAAKwV,QAAQsF,KAAK,uBAAwB9a,MAAOrH,OAAAy7B,EAAA,OAAAz7B,CAAOqH,KAAK4zB,WAE7D,IAAIra,EAAO5gB,OAAAwhB,EAAA,UAAAxhB,CAAU,QAOrB,IALgBqH,KAAK4zB,SAEjBj7B,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAK4zB,UADT7e,EAAGI,QAAQ,WAAW+E,UAAUla,KAAKgqB,kBAEhCvuB,YAAY8d,GAEhBvZ,KAAK+zB,KAMH,CACHxa,EAAKuT,UAAY9sB,KAAK+zB,KACtB,IAAIM,EAAU9a,EAAKmB,WACnB/hB,OAAA27B,EAAA,OAAA37B,CAAO07B,EAAS,QAAS,kBAAMnP,EAAKgP,gBATxB,CACZ,IAAIK,EAAW57B,OAAAwhB,EAAA,UAAAxhB,CAAU,IAAK,CAAC,OAAQ,wBACvC47B,EAASlvB,UAAYrF,KAAKoxB,SAC1BmD,EAAS94B,YAAY9C,OAAAwhB,EAAA,WAAAxhB,CAAWqH,KAAK6P,OACrC0J,EAAK9d,YAAY84B,GACjB57B,OAAA27B,EAAA,OAAA37B,CAAO47B,EAAU,QAAS,kBAAMrP,EAAKgP,YAMzCl0B,KAAKi0B,QAAU1a,EAAKmB,WACpB1a,KAAKka,UAAYX,EAGjBvZ,KAAKyV,aAAc,EAEnBzV,KAAKwV,QAAQsF,KAAK,sBAAuB9a,SAhHjD,CAAA4D,IAAA,UAAAtH,MAAA,SAAAqZ,UAuHa3V,KAAKyV,cAGV9c,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKi0B,SACft7B,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKka,WACfla,KAAKi0B,QAAU,KACfj0B,KAAKka,UAAY,KACjBla,KAAKyV,aAAc,OA9H3Bie,YAAA,GAmIAA,EAAYxe,KAAO,CAACE,QAAS,0mCCtI7B,IAAM8C,EAAS,CACX,kBACA,0BACA,oBACA,yBACA,2BACA,mBACA,0BACA,2BACA,wBASSsc,EAAb,SAAAjc,GAMI,SAAAic,UAAYzf,GAAI,IAAAC,+GAAAC,CAAAjV,KAAAw0B,WAIZ,IAAIhc,GAHJxD,EAAAyD,2BAAAzY,KAAA0Y,gBAAA8b,WAAA17B,KAAAkH,KAAM+U,EAAIyf,aAGGjf,OAAOkf,YAAc,GAJtB,OAUZzf,EAAK4e,SAAWj7B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAEc,UAAW,MAOzCtE,EAAKkF,UAAY,KAOjBlF,EAAK0f,aAAe,KAOpB1f,EAAK2f,eAAiB,KAMtB3f,EAAKnF,KAAOlX,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAE3I,KAAM,IAMhCmF,EAAKoc,SAAWz4B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAE6Y,UAAW,UAOzCrc,EAAK4f,MAAQ,IAMb5f,EAAK6f,gBAAkBl8B,OAAAo4B,EAAA,WAAAp4B,CAAW6f,EAAE+Y,mBAAoB3W,EAAA,UAMxD5F,EAAK8f,eAAiBn8B,OAAAo4B,EAAA,WAAAp4B,CAAW6f,EAAEiZ,kBAAmB7W,EAAA,UAMtD5F,EAAK+f,UAAYp8B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAEwc,WAAY,qBAM3ChgB,EAAKigB,YAAct8B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAE0c,aAAc,wBAM/ClgB,EAAKmgB,qBAAuBx8B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAE4c,uBACtC,sBAMJpgB,EAAKqgB,cAAgB18B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAE8c,gBAC/B,6BAMJtgB,EAAKugB,SAAW58B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAEgd,UAAW,uBAMzCxgB,EAAKygB,iBAAmB98B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAEkd,mBAClC,gCAMJ1gB,EAAK2gB,aAAeh9B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAEod,eAAgB,sBAMlD5gB,EAAK6gB,mBAAqBl9B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAEsd,sBACpC,6BAMJ9gB,EAAK+gB,QAAUp9B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAEwd,SAAU,mBAMvChhB,EAAKihB,kBAAoBt9B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAE0d,oBACnC,yBAMJlhB,EAAKmhB,cAAgBx9B,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAE4d,gBAC/B,uBAMJphB,EAAKgV,gBAAkBrxB,OAAAo4B,EAAA,YAAAp4B,CAAY6f,EAAEyR,iBAAkB+J,EAAA,MA5I3Chf,EANpB,iQAAAgF,CAAAwa,UAA+Bva,EAAA,gHAA/BrE,CAAA4e,UAAA,EAAA5wB,IAAA,OAAAtH,MAAA,SAAAuZ,OAwJW,IAAAqP,EAAAllB,KACH,IAAIA,KAAKyV,YAAT,CAIA,IAAIV,EAAK/U,KAAK+U,GACVS,EAAUxV,KAAKwV,QAEnBA,EAAQsF,KAAK,uBAAwB9a,MAAOrH,OAAAiiB,EAAA,OAAAjiB,CAAOqH,KAAK4zB,WAGxD,IAAIyC,EAAY19B,OAAA29B,EAAA,UAAA39B,CAAU,OAC1B09B,EAAUhxB,UAAYrF,KAAKoxB,SAG3B,IAAImF,EAAa59B,OAAA29B,EAAA,UAAA39B,CAAU,QAEvB69B,EAAiB79B,OAAA29B,EAAA,UAAA39B,CAAU,QAC/B69B,EAAe/6B,YAAY9C,OAAA29B,EAAA,WAAA39B,CAAWqH,KAAK6P,OAG3C,IAAIsd,EAAantB,KAAK4zB,SAElBj7B,OAAA29B,EAAA,IAAA39B,CAAIqH,KAAK4zB,UADT7e,EAAGI,QAAQ,WAAW+E,UAAUla,KAAKgqB,iBAIpChqB,KAAK4zB,UAMNzG,EAAS1xB,YAAY+6B,GACrBrJ,EAAS1xB,YAAY86B,KANrBF,EAAU56B,YAAY+6B,GACtBH,EAAU56B,YAAY86B,GACtBpJ,EAAS1xB,YAAY46B,IAOzBr2B,KAAKka,UAAYmc,EACjBr2B,KAAK00B,aAAe6B,EACpBv2B,KAAK20B,eAAiB6B,EAGtBhhB,EAAQE,GAAG,CAAC,oBAAqB,kBAAMwP,EAAKuR,QAAQvR,EAAK6P,aACzDvf,EAAQE,GAAG,CAAC,4BACR,kBAAMwP,EAAKuR,QAAQvR,EAAK+P,eAC5Bzf,EAAQE,GAAG,CAAC,sBACR,kBAAMwP,EAAKuR,QAAQvR,EAAKmQ,iBAC5B7f,EAAQE,GAAG,CAAC,2BAA4B,kBACpCwP,EAAKuR,QAAQvR,EAAKqQ,YACtB/f,EAAQE,GAAG,CAAC,6BACR,kBAAMwP,EAAKuR,QAAQvR,EAAKuQ,oBAC5BjgB,EAAQE,GAAG,CAAC,qBACR,kBAAMwP,EAAKuR,QAAQvR,EAAKyQ,gBAC5BngB,EAAQE,GAAG,CAAC,4BACR,kBAAMwP,EAAKuR,QAAQvR,EAAK2Q,sBAC5BrgB,EAAQE,GAAG,CAAC,6BACR,kBAAMwP,EAAKuR,QAAQvR,EAAK+Q,qBAC5BzgB,EAAQE,GAAG,CAAC,yBACR,kBAAMwP,EAAKuR,QAAQvR,EAAKiR,iBAE5B3gB,EAAQE,GAAGwC,EAAQ,kBAAMgN,EAAKuR,QAAQ,MAGtCz2B,KAAKyV,aAAc,EAEnBD,EAAQsF,KAAK,sBAAuB9a,SAxN5C,CAAA4D,IAAA,UAAAtH,MAAA,SAAAm6B,UA+NoB,IAAAtH,EAAAnvB,KAARiJ,EAAQ,EAAA7G,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAJ,GACR,GAAKpC,KAAKiW,YAAV,CAIAjW,KAAK60B,gBAAgB70B,KAAK+U,GAAI9L,GAE9B,IAAIpN,EAAU,KAANoN,EAAWjJ,KAAK40B,MAAQ,EAChC8B,EAAA,KAAKh8B,WAAW,WACPy0B,EAAK1Z,cAGV0Z,EAAKuF,aAAa5H,UAAY7jB,EAE9BkmB,EAAK2F,eAAe3F,EAAKpa,GAAI9L,KAC9BpN,MA9OX,CAAA+H,IAAA,UAAAtH,MAAA,SAAAqZ,UAoPc,IAAAghB,EAAA32B,KACN,GAAKA,KAAKyV,YAAV,CAIA,IAAID,EAAUxV,KAAKwV,QAEnBxV,KAAKka,UAAU4S,UAAY,GACtB9sB,KAAK4zB,UACNj7B,OAAA29B,EAAA,UAAA39B,CAAUqH,KAAKka,WAEnBla,KAAK20B,eAAiB,KACtB30B,KAAK00B,aAAe,KACpB10B,KAAKka,UAAY,KAGjB1E,EAAQmb,IAAI,CAAC,oBAAqB,kBAAMgG,EAAKF,QAAQE,EAAK5B,aAC1Dvf,EAAQmb,IAAI,CAAC,4BACT,kBAAMgG,EAAKF,QAAQE,EAAK1B,eAC5Bzf,EAAQmb,IAAI,CAAC,sBACT,kBAAMgG,EAAKF,QAAQE,EAAKtB,iBAC5B7f,EAAQmb,IAAI,CAAC,2BACT,kBAAMgG,EAAKF,QAAQE,EAAKpB,YAC5B/f,EAAQmb,IAAI,CAAC,6BACT,kBAAMgG,EAAKF,QAAQE,EAAKlB,oBAC5BjgB,EAAQmb,IAAI,CAAC,qBAAsB,kBAC/BgG,EAAKF,QAAQE,EAAKhB,gBACtBngB,EAAQmb,IAAI,CAAC,4BACT,kBAAMgG,EAAKF,QAAQE,EAAKd,sBAC5BrgB,EAAQmb,IAAI,CAAC,6BACT,kBAAMgG,EAAKF,QAAQE,EAAKV,qBAC5BzgB,EAAQmb,IAAI,CAAC,yBACT,kBAAMgG,EAAKF,QAAQE,EAAKR,iBAE5B3gB,EAAQmb,IAAIzY,EAAQ,kBAAMye,EAAKF,QAAQ,MAEvCz2B,KAAKyV,aAAc,OAxR3B+e,UAAA,4lCCbA,IAAaoC,EAAb,SAAAre,GAMI,SAAAqe,YAAY7hB,GAAI,IAAAC,+GAAAC,CAAAjV,KAAA42B,aAIZ,IAAIpe,GAHJxD,EAAAyD,2BAAAzY,KAAA0Y,gBAAAke,aAAA99B,KAAAkH,KAAM+U,EAAI6hB,eAGGrhB,OAAOshB,cAAgB,GAJxB,OAUZ7hB,EAAK4e,SAAWj7B,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAEc,UAAW,MAOzCtE,EAAKkF,UAAY,KAOjBlF,EAAK1E,MAAQ,KAMb0E,EAAKnF,KAAOlX,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAE3I,KAAM,UAOhCmF,EAAK8hB,oBAAsBn+B,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAEue,UAAW,KAQpD/hB,EAAKgiB,SAAWr+B,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAEye,UAAW,OAMzCjiB,EAAKoc,SAAWz4B,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAE6Y,UAAW,OAMzCrc,EAAKgV,gBAAkBrxB,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAEyR,iBAAkBiN,EAAA,MAMvDliB,EAAKmiB,uBAAyBx+B,OAAAk7B,EAAA,WAAAl7B,CAAW6f,EAAE4e,0BACvCtT,EAAA,UAMJ9O,EAAKqiB,sBAAwB1+B,OAAAk7B,EAAA,WAAAl7B,CAAW6f,EAAE8e,yBACtCxT,EAAA,UAvEQ9O,EANpB,iQAAAgF,CAAA4c,YAAiC3c,EAAA,gHAAjCrE,CAAAghB,YAAA,EAAAhzB,IAAA,OAAAtH,MAAA,SAAAuZ,OAmFW,IAAAqP,EAAAllB,KACH,IAAIA,KAAKyV,YAAT,CAIAzV,KAAKwV,QAAQsF,KAAK,uBAAwB9a,MAAOrH,OAAAmrB,EAAA,OAAAnrB,CAAOqH,KAAK4zB,WAE7D,IAAI7e,EAAK/U,KAAK+U,GAGVwiB,EAAW5+B,OAAAwhB,EAAA,UAAAxhB,CAAU,OACzB4+B,EAASlyB,UAAYrF,KAAKoxB,SAE1B,IAAIoG,EAAY7+B,OAAAwhB,EAAA,UAAAxhB,CAAU,QACtB8+B,EAAY9+B,OAAAwhB,EAAA,UAAAxhB,CAAU,QAC1B8+B,EAAUh8B,YAAY9C,OAAAwhB,EAAA,WAAAxhB,CAAWqH,KAAK6P,OAGtC,IAAIsd,EAAYntB,KAAK4zB,SAEjBj7B,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAK4zB,UADT7e,EAAGI,QAAQ,WAAW+E,UAAUla,KAAKgqB,iBAIpChqB,KAAK4zB,UAMNzG,EAAS1xB,YAAYg8B,GACrBtK,EAAS1xB,YAAY+7B,KANrBD,EAAS97B,YAAYg8B,GACrBF,EAAS97B,YAAY+7B,GACrBrK,EAAS1xB,YAAY87B,IAMzBv3B,KAAKka,UAAYqd,EACjBv3B,KAAKsQ,MAAQknB,EAGbx3B,KAAKwV,QAAQE,GAAG,CAAC,kBAAmB,mBAChC,kBAAMwP,EAAKwS,QAAQ3iB,EAAGyZ,oBAC1BxuB,KAAKwV,QAAQE,GAAG,CAAC,gBAAiB,kBAAMwP,EAAKwS,YAG7C13B,KAAKyV,aAAc,EACnBzV,KAAK03B,UAEL13B,KAAKwV,QAAQsF,KAAK,sBAAuB9a,SA/HjD,CAAA4D,IAAA,UAAAtH,MAAA,SAAAo7B,QAsIYl9B,GACJ,GAAKwF,KAAKyV,aAAgBzV,KAAKiW,YAA/B,CAIA,IAII0hB,EAJA5iB,EAAK/U,KAAK+U,GAKd,GAHA/U,KAAKm3B,uBAAuBpiB,EAAI/U,KAAKsQ,OAGhCyE,EAAG8Q,OAMD,CACH,IAAIA,EAAS9Q,EAAGI,QAAQ,UACxB,GAAI0Q,EAAQ,CACR,IAAI+R,EAAc7iB,EAAGyZ,iBAEjBqJ,EAAiBvM,SAASzF,EAAOoC,eAAgB,KACjC,EAAd2P,EAAmB,EAAI,GACzBE,EACCD,EAAiBhS,EAAOsB,WAAc,GACvCyQ,EACIC,EAAiBhS,EAAOsB,WAAa,EACrCyQ,EACRD,EAASE,EAAiB73B,KAAK82B,oBAC3BgB,EAAe93B,KAAKg3B,SAAWY,QAjBnCD,EADAn9B,GAAW,KAANA,EACIA,EAEAua,EAAGgjB,sBAAwBhjB,EAAGijB,aAmB/Ch4B,KAAKsQ,MAAMwc,UAAY6K,EACvB33B,KAAKq3B,sBAAsBtiB,EAAI/U,KAAKsQ,MAAOqnB,MAxKnD,CAAA/zB,IAAA,UAAAtH,MAAA,SAAAqZ,UA8Kc,IAAAwZ,EAAAnvB,KACDA,KAAKyV,eAILzV,KAAK4zB,UAAY5zB,KAAKka,UACvBvhB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKka,WAEfvhB,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAK4zB,UAAU9G,UAAY,GAEnC9sB,KAAKsQ,MAAQ,KACbtQ,KAAKka,UAAY,KAGjBla,KAAKwV,QAAQmb,IAAI,CAAC,kBAAmB,mBACjC,kBAAMxB,EAAKuI,QAAQ3iB,GAAGyZ,oBAC1BxuB,KAAKwV,QAAQmb,IAAI,CAAC,gBAAiB,kBAAMxB,EAAKuI,YAE9C13B,KAAKyV,aAAc,OAhM3BmhB,YAAA,0lCCDA,IAAaqB,EAAb,SAAA1f,GAMI,SAAA0f,kBAAYljB,GAAI,IAAAC,+GAAAC,CAAAjV,KAAAi4B,mBAGZ,IAAI1iB,GAFJP,EAAAyD,2BAAAzY,KAAA0Y,gBAAAuf,mBAAAn/B,KAAAkH,KAAM+U,EAAIkjB,qBAEQ1iB,OAAO2iB,qBAAuB,GAHpC,OASZljB,EAAKmjB,eAAiBx/B,OAAAk7B,EAAA,YAAAl7B,CAAY4c,EAAO6iB,iBACrC,gBAMJpjB,EAAKqjB,aAAe1/B,OAAAk7B,EAAA,YAAAl7B,CAAY4c,EAAO+iB,eACnC,cAMJtjB,EAAKujB,gBAAkB3c,QAAQrG,EAAOijB,kBAMtCxjB,EAAKyjB,qBAAuB9/B,OAAAk7B,EAAA,WAAAl7B,CAAW4c,EAAOmjB,wBAC1C5U,EAAA,UAMJ9O,EAAK2jB,oBAAsBhgC,OAAAk7B,EAAA,WAAAl7B,CAAW4c,EAAOqjB,uBACzC9U,EAAA,UArCQ9O,EANpB,iQAAAgF,CAAAie,kBAAuChe,EAAA,gHAAvCrE,CAAAqiB,kBAAA,EAAAr0B,IAAA,OAAAtH,MAAA,SAAAuZ,OAiDW,IAAAqP,EAAAllB,KACCA,KAAKyV,cAITzV,KAAKwV,QAAQE,GAAG,CAAC,oBAAqB,kBAAMwP,EAAK2T,uBACjD74B,KAAKwV,QAAQE,GACT,CAAC,kBACD,SAACX,EAAIuP,GAAL,OAAkBY,EAAK4T,iBAAiBxU,KAI5CtkB,KAAKyV,aAAc,KA7D3B,CAAA7R,IAAA,qBAAAtH,MAAA,SAAAu8B,qBAmEyB,IAAA1J,EAAAnvB,KACb+U,EAAK/U,KAAK+U,GACdA,EAAGgkB,QAAQ,SAACrU,GACR/rB,OAAAwhB,EAAA,YAAAxhB,CAAYoc,EAAGikB,iBAAiBtU,GAAMyK,EAAKgJ,gBAEvChJ,EAAKoJ,iBACLpJ,EAAK8J,eAAevU,EAChB,SAACwU,GAAD,OAAUvgC,OAAAwhB,EAAA,YAAAxhB,CAAYugC,EAAM/J,EAAKkJ,oBA1ErD,CAAAz0B,IAAA,mBAAAtH,MAAA,SAAAw8B,iBAmFqBxU,GAAU,IAAAqS,EAAA32B,KAEnBm5B,EADKn5B,KAAK+U,GACEikB,iBAAiB1U,GAC7B3rB,OAAAwhB,EAAA,SAAAxhB,CAASwgC,EAAQn5B,KAAKm4B,kBAI1Bn4B,KAAKy4B,qBAAqBz4B,KAAMskB,GAEhC3rB,OAAAwhB,EAAA,SAAAxhB,CAASwgC,EAAQn5B,KAAKm4B,gBAElBn4B,KAAKu4B,iBACLv4B,KAAKi5B,eAAe3U,EAChB,SAAC4U,GAAD,OAAUvgC,OAAAwhB,EAAA,SAAAxhB,CAASugC,EAAMvC,EAAK0B,gBAGtCr4B,KAAK24B,oBAAoB34B,KAAMskB,MAnGvC,CAAA1gB,IAAA,iBAAAtH,MAAA,SAAA28B,eA8GmB3U,GAA8C,IAApCxkB,EAAoC,EAAAsC,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAA/B0hB,EAAA,SAAU5I,EAAqB,EAAA9Y,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAfpC,KAAK+U,GAAGyF,MAElD,GAAGxT,QAAQlO,KACPoiB,EAAIke,iBAAJ,sBAAA7sB,OAA2C+X,EAAW,EAAtD,MAA6DxkB,KAjHzE,CAAA8D,IAAA,UAAAtH,MAAA,SAAAqZ,UAuHc,IAAA0jB,EAAAr5B,KACDA,KAAKyV,cAIVzV,KAAK64B,qBACL74B,KAAKwV,QAAQmb,IAAI,CAAC,oBAAqB,kBAAM0I,EAAKR,uBAClD74B,KAAKwV,QAAQmb,IACT,CAAC,kBACD,SAAC5b,EAAIuP,GAAL,OAAkB+U,EAAKP,iBAAiBxU,KAI5CtkB,KAAKyV,aAAc,OApI3BwiB,kBAAA,ymCCGA,IAAaqB,EAAb,SAAA/gB,GAMI,SAAA+gB,YAAYvkB,GAAI,IAAAC,+GAAAC,CAAAjV,KAAAs5B,aAIZ,IAAI9gB,GAHJxD,EAAAyD,2BAAAzY,KAAA0Y,gBAAA4gB,aAAAxgC,KAAAkH,KAAM+U,EAAIukB,eAGG/jB,OAAOgkB,eAAiB,GAJzB,OAUZvkB,EAAKwkB,iBAAmB7gC,OAAA8gC,EAAA,aAAA9gC,CAAa6f,EAAEkhB,oBAAoB,GAM3D1kB,EAAK2kB,SAAWhhC,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEohB,MAAO7kB,EAAG8kB,WAAa,kBAMrD7kB,EAAK8kB,eAAiBnhC,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEuhB,aAChChlB,EAAG8kB,WAAa,wBAMpB7kB,EAAKglB,SAAWrhC,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEyhB,WAC1B,aAAejlB,EAAK2kB,SAAW,4BAMnC3kB,EAAKklB,oBAAsBvhC,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAE2hB,sBACrC,oBAMJnlB,EAAKolB,kBAAoBzhC,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAE6hB,cAAe,eAOtDrlB,EAAKslB,kBAAoB3hC,OAAA8gC,EAAA,aAAA9gC,CAAa6f,EAAE+hB,qBAAqB,GAM7DvlB,EAAKwlB,aAAe7hC,OAAA8gC,EAAA,WAAA9gC,CAAW6f,EAAEiiB,4BAA6BxsB,EAAA,UAM9D+G,EAAK0lB,YAAc/hC,OAAA8gC,EAAA,WAAA9gC,CAAW6f,EAAEmiB,2BAA4B1sB,EAAA,UAM5D+G,EAAK4lB,cAAgBjiC,OAAA8gC,EAAA,WAAA9gC,CAAW6f,EAAEqiB,6BAC9B5sB,EAAA,UAMJ+G,EAAK8lB,aAAeniC,OAAA8gC,EAAA,WAAA9gC,CAAW6f,EAAEuiB,4BAA6B9sB,EAAA,UAO9D+G,EAAKgmB,SAAW,GAOhBhmB,EAAKimB,SAAW,GAOhBjmB,EAAKkmB,aAAe,KAOpBlmB,EAAKmmB,QAAUxiC,OAAA8gC,EAAA,YAAA9gC,CAAYqc,EAAKkmB,aAAc,IAO9ClmB,EAAKomB,QAAU,SAOfpmB,EAAK2Q,iBAAmB,EArHZ3Q,EANpB,iQAAAgF,CAAAsf,YAAiCrf,EAAA,gHAAjCrE,CAAA0jB,YAAA,EAAA11B,IAAA,UAAAtH,MAAA,SAAA43B,QAkIYlhB,GACJ,IAAIxC,EAAM7X,OAAAozB,EAAA,UAAApzB,CAAUqa,GAAKrE,WACrB2V,EAAWgH,SAAS9a,EAAIke,aAAa,MAAO,IAKhD,GAHA1uB,KAAKq7B,SAAS/W,GACdtkB,KAAK+xB,OAAOzN,GAERtkB,KAAKs6B,kBAAmB,CACxB,IAAI/gB,EAAOvZ,KAAKm7B,QAAQ7W,GAEpBgX,EAAmC,IAD1Bt7B,KAAK+U,GAAGikB,iBAAiB1U,GACb+N,YACzB9Y,EAAK0U,MAAMkE,MAAQ7G,SAASgQ,EAAa,IAAM,KAEnD3iC,OAAAozB,EAAA,UAAApzB,CAAUqa,GACVra,OAAAozB,EAAA,QAAApzB,CAAQqa,KAhJhB,CAAApP,IAAA,YAAAtH,MAAA,SAAAi/B,UAuJcvoB,GACN,IAA8B,IAA1BhT,KAAK2lB,gBAAT,CAGA,IAAI6V,EAAY7iC,OAAAozB,EAAA,UAAApzB,CAAUqa,GACtByoB,EAAYz7B,KAAKm7B,QAAQn7B,KAAK2lB,iBAGlC,GAFW3lB,KAAKi7B,SAASj7B,KAAK2lB,mBAEjB6V,EAAb,CAIA,KAAOA,GAAaA,IAAcC,GAC9BD,EAAYA,EAAU7sB,WAGtB6sB,IAAcC,GACdz7B,KAAK07B,MAAM17B,KAAK2lB,qBAxK5B,CAAA/hB,IAAA,OAAAtH,MAAA,SAAAuZ,OAiLW,IAAAqP,EAAAllB,KACH,IAAIA,KAAKyV,YAAT,CAIA,IAAIV,EAAK/U,KAAK+U,GAGdA,EAAG4mB,eAAiB,CAAC,IAGrB5mB,EAAG6mB,gBAAkB,EAKjB7mB,EAAG8mB,YAAc,GAAKnuB,MAAMqH,EAAGQ,SAASumB,qBACxC/mB,EAAG8mB,WAAa,GAMhB9mB,EAAGqF,aACHrF,EAAG8mB,aACH77B,KAAK+7B,cAIT/7B,KAAKwV,QAAQE,GAAG,CAAC,oBAAqB,kBAAMwP,EAAK8W,kBACjDh8B,KAAKwV,QAAQE,GAAG,CAAC,mBAAoB,kBAAMwP,EAAKmW,aAChDr7B,KAAKwV,QAAQE,GAAG,CAAC,kBACb,SAACX,EAAIknB,GAAL,OAAmB/W,EAAKgX,YAAYD,GAAW,KACnDj8B,KAAKwV,QAAQE,GAAG,CAAC,wBAAyB,kBAAMwP,EAAK6W,eACrD/7B,KAAKwV,QAAQE,GAAG,CAAC,sBACb,SAACX,EAAIuP,GAAL,OAAkBY,EAAKI,MAAMhB,KAGjCtkB,KAAKyV,aAAc,KAvN3B,CAAA7R,IAAA,QAAAtH,MAAA,SAAAwZ,QA8NQ9V,KAAK+V,SACL/V,KAAK6V,OACL7V,KAAK+7B,aACL/7B,KAAKm8B,aAjOb,CAAAv4B,IAAA,aAAAtH,MAAA,SAAAy/B,aAuOiB,IAAA5M,EAAAnvB,KACL+U,EAAK/U,KAAK+U,GAIdA,EAAG8mB,aAEH9mB,EAAGgkB,QACC,SAAChhC,GACG,IAAIqkC,EAAOzjC,OAAA29B,EAAA,UAAA39B,CAAU,OAAQ,CAAC,KAAMZ,IACpCqkC,EAAKtP,UAAYqC,EAAK6K,SACTjlB,EAAGikB,iBAAiBjhC,GAC1B0D,YAAY2gC,GACnBzjC,OAAAozB,EAAA,OAAApzB,CAAOyjC,EAAM,QAAS,SAACppB,GAAD,OAASmc,EAAK+E,QAAQlhB,KAC5Cmc,EAAK6L,SAASjjC,GAAKqkC,EACnBjN,EAAK8L,SAASljC,GAAKqkC,EAAK1hB,YAG5B,SAAC3iB,GAAD,OAAOgd,EAAGsnB,cAActkC,KAAOgyB,EAAA,SAzP3C,CAAAnmB,IAAA,WAAAtH,MAAA,SAAA6/B,WAiQQ,IAAK,IAAIpkC,EAAI,EAAGA,EAAIiI,KAAKk7B,aAAa1iC,OAAQT,IAC1CiI,KAAKslB,MAAMvtB,EAAGiI,KAAKk7B,aAAanjC,MAlQ5C,CAAA6L,IAAA,QAAAtH,MAAA,SAAAgpB,MA2QUhB,EAAUrJ,GACZ,IAAIlG,EAAK/U,KAAK+U,GACVunB,EAAM,GAAA/vB,OAAMvM,KAAKo7B,SAAX7uB,OAAqBwI,EAAG9E,GAAxB,KAAA1D,OAA8B+X,GACpCiY,EAAc5jC,OAAA29B,EAAA,UAAA39B,CAAU,MAAO,CAAC,QAASqH,KAAKk6B,sBAC9C3gB,EAAO0B,GACPtiB,OAAA29B,EAAA,UAAA39B,CAAU,MAAO,CAAC,KAAM2jC,GAAS,CAAC,QAASt8B,KAAKo6B,oBACpDrlB,EAAG4mB,eAAerX,GAAY/K,EAAKtJ,GACnCssB,EAAY9gC,YAAY8d,GAExB,IAAI4f,EAASpkB,EAAGikB,iBAAiB1U,GACjC6U,EAAO1e,aAAa8hB,EAAapD,EAAOze,YACxC/hB,OAAAozB,EAAA,OAAApzB,CAAO4gB,EAAM,QAAS,SAACvG,GAAD,OAASra,OAAAozB,EAAA,QAAApzB,CAAQqa,KACvChT,KAAKm7B,QAAQ7W,GAAY/K,IAvRjC,CAAA3V,IAAA,SAAAtH,MAAA,SAAAy1B,OA8RWzN,GACEtkB,KAAKw8B,OAAOlY,GAGbtkB,KAAK07B,MAAMpX,GAFXtkB,KAAKy8B,KAAKnY,KAhStB,CAAA1gB,IAAA,OAAAtH,MAAA,SAAAmgC,KA0SSnY,GAAU,IAAAqS,EAAA32B,KACP+U,EAAK/U,KAAK+U,GACVmF,EAAYla,KAAKm7B,QAAQ7W,GAQ7B,GANAtkB,KAAKw6B,aAAax6B,KAAMka,EAAWoK,GAEnCpK,EAAU+T,MAAMW,QAAU,QAC1B5uB,KAAK2lB,gBAAkBrB,EACvB3rB,OAAAozB,EAAA,OAAApzB,CAAO+jC,EAAA,KAAM,UAAW,SAAC1pB,GAAD,OAAS2jB,EAAK4E,UAAUvoB,KAE5C+B,EAAGsnB,cAAc/X,KAAcyF,EAAA,MAAO,CACtC,IAAI4S,EAAM5nB,EAAG6nB,iBAAiBtY,GAC1BqY,GACAA,EAAIE,QAIZ78B,KAAK06B,YAAY16B,KAAMka,EAAWoK,KA3T1C,CAAA1gB,IAAA,QAAAtH,MAAA,SAAAo/B,MAkUUpX,GAAU,IAAA+U,EAAAr5B,KACRka,EAAYla,KAAKm7B,QAAQ7W,GAE7BtkB,KAAK46B,cAAc56B,KAAMka,EAAWoK,GAEpCpK,EAAU+T,MAAMW,QAAU7E,EAAA,KACtB/pB,KAAK2lB,kBAAoBrB,IACzBtkB,KAAK2lB,iBAAmB,GAE5BhtB,OAAAozB,EAAA,UAAApzB,CAAU+jC,EAAA,KAAM,UAAW,SAAC1pB,GAAD,OAASqmB,EAAKkC,UAAUvoB,KAEnDhT,KAAK86B,aAAa96B,KAAMka,EAAWoK,KA7U3C,CAAA1gB,IAAA,SAAAtH,MAAA,SAAAkgC,OAqVWlY,GACH,MAAgD,UAAzCtkB,KAAKm7B,QAAQ7W,GAAU2J,MAAMW,UAtV5C,CAAAhrB,IAAA,WAAAtH,MAAA,SAAA++B,SA6VayB,GAGL,IAAInkC,OAAAsV,EAAA,QAAAtV,CAAQmkC,IAAe98B,KAAKw5B,iBAGhC,IAAK,IAAIzhC,EAAI,EAAGA,EAAIiI,KAAKm7B,QAAQ3iC,OAAQT,IACrC,GAAIA,IAAM+kC,EAAV,CAGA,IAAIC,EAAU/8B,KAAK+U,GAAGsnB,cAActkC,IAE/BglC,IAAYhT,EAAA,WAAagT,IAAYhT,EAAA,WAIhBpxB,OAAAsV,EAAA,QAAAtV,CAAQmkC,IAC9B98B,KAAK07B,MAAM3jC,MA9W3B,CAAA6L,IAAA,gBAAAtH,MAAA,SAAA0/B,gBAuXQ,IAAK,IAAIjkC,EAAI,EAAGA,EAAIiI,KAAKi7B,SAASziC,OAAQT,IACtCiI,KAAKk8B,YAAYnkC,GAAG,KAxXhC,CAAA6L,IAAA,cAAAtH,MAAA,SAAA4/B,YAiYgB5X,EAAUnkB,GAClB,IAAIi8B,EAAOp8B,KAAKi7B,SAAS3W,GACrB8X,IACAA,EAAK7hC,IAAM4F,EAASH,KAAK85B,eAAiB95B,KAAK25B,YApY3D,CAAA/1B,IAAA,UAAAtH,MAAA,SAAAqZ,UA2Yc,IAAAqnB,EAAAh9B,KACN,GAAKA,KAAKyV,YAAV,CAIAzV,KAAKk7B,aAAe,GACpB,IAAK,IAAInjC,EAAI,EAAGA,EAAIiI,KAAKm7B,QAAQ3iC,OAAQT,IAAK,CAC1C,IAAImiB,EAAYla,KAAKm7B,QAAQpjC,GACzBwkC,EAAcriB,EAAUvL,WACxBytB,EAAOp8B,KAAKg7B,SAASjjC,GACrBklC,EAAUj9B,KAAKi7B,SAASljC,GACxBmiB,IACAvhB,OAAA29B,EAAA,UAAA39B,CAAUuhB,GACVla,KAAKk7B,aAAanjC,GAAKmiB,GAE3BA,EAAY,KACRqiB,GACA5jC,OAAA29B,EAAA,UAAA39B,CAAU4jC,GAEdA,EAAc,KACVH,GACAzjC,OAAA29B,EAAA,UAAA39B,CAAUyjC,GAEdA,EAAO,KACHa,GACAtkC,OAAA29B,EAAA,UAAA39B,CAAUskC,GAEdA,EAAU,KAEdj9B,KAAKm7B,QAAU,GACfn7B,KAAKg7B,SAAW,GAChBh7B,KAAKi7B,SAAW,GAGhBj7B,KAAK+U,GAAG4mB,eAAiB,GAGzB37B,KAAKwV,QAAQmb,IAAI,CAAC,oBAAqB,kBAAMqM,EAAKhB,kBAClDh8B,KAAKwV,QAAQmb,IAAI,CAAC,mBAAoB,kBAAMqM,EAAK3B,aACjDr7B,KAAKwV,QAAQmb,IAAI,CAAC,kBACd,SAAC5b,EAAIknB,GAAL,OAAmBe,EAAKd,YAAYD,GAAW,KACnDj8B,KAAKwV,QAAQmb,IAAI,CAAC,wBAAyB,kBAAMqM,EAAKjB,eACtD/7B,KAAKwV,QAAQmb,IAAI,CAAC,sBACd,SAAC5b,EAAIuP,GAAL,OAAkB0Y,EAAK1X,MAAMhB,KAEjCtkB,KAAKyV,aAAc,OAxb3B6jB,YAAA,GA8bAA,EAAYpkB,KAAO,CAACE,QAAS,0TCjc7B,IAAa8nB,EAAb,WAMI,SAAAA,iBAAYnoB,gHAAIE,CAAAjV,KAAAk9B,kBACZ,IAAI1kB,EAAIzD,EAAGQ,SAMXvV,KAAKm9B,kBAAoBxkC,OAAAk7B,EAAA,YAAAl7B,CAAY6f,EAAE4kB,oBAAqB,WAM5Dp9B,KAAK+U,GAAKA,EAMV/U,KAAKwV,QAAUT,EAAGS,QAzB1B,2GAAAI,CAAAsnB,iBAAA,EAAAt5B,IAAA,OAAAtH,MAAA,SAAAuZ,OA+BW,IAAAb,EAAAhV,KACHA,KAAKwV,QAAQE,GACT,CAAC,mBAAoB,WACrB,kBAAMV,EAAKqoB,mBAEfr9B,KAAKwV,QAAQE,GACT,CAAC,qBACD,SAACX,EAAImkB,EAAMhlB,GAAX,OAAoBc,EAAKsoB,aAAapE,EAAMhlB,OAtCxD,CAAAtQ,IAAA,YAAAtH,MAAA,SAAAihC,UAkDcvvB,EAAMkG,EAAMkd,GAElB,GAAIpjB,EAAKwvB,cAEL,IADA,IAAIC,EAAWzvB,EAAKM,WACXvW,EAAI,EAAGA,EAAI0lC,EAASjlC,OAAQT,IACjCiI,KAAKu9B,UAAUE,EAAS1lC,GAAImc,EAAMkd,GAI1C,GAAsB,IAAlBpjB,EAAKO,SAAgB,CACrB,IACImvB,EADU1vB,EAAK2vB,UAAU30B,cACP2C,QAAQuI,EAAKlL,eAEnC,IAAiB,IAAb00B,EAAgB,CAChB,IAAIE,EAAK5vB,EAAKW,WACd,GAAIivB,GAAMA,EAAGv4B,YAAc+rB,EAAU,CAEjC,IAAIyM,EAAK7vB,EAAK2vB,UAEVG,EAASnlC,OAAAolC,EAAA,WAAAplC,CAAWklC,EAAGG,OAAO,EAAGN,IACjCphC,EAAQuhC,EAAGG,OAAON,EAASxpB,EAAK1b,QAChCylC,EAAQtlC,OAAAolC,EAAA,WAAAplC,CAAWklC,EAAGG,OAAON,EAAUxpB,EAAK1b,SAC5CqX,EAAOlX,OAAAolC,EAAA,WAAAplC,CAAW2D,GAClB4d,EAAYvhB,OAAAolC,EAAA,UAAAplC,CAAU,QAC1BuhB,EAAU7U,UAAY+rB,EACtBlX,EAAUze,YAAYoU,GACtB+tB,EAAGnjB,aAAaqjB,EAAQ9vB,GACxB4vB,EAAGnjB,aAAaP,EAAWlM,GAC3B4vB,EAAGnjB,aAAawjB,EAAOjwB,GACvB4vB,EAAGhvB,YAAYZ,QA/EnC,CAAApK,IAAA,cAAAtH,MAAA,SAAA4hC,YA0FgBhqB,EAAMkd,GAEd,IADA,IAAI+M,EAAmBn+B,KAAK+U,GAAGyF,MAAM4e,iBAAd,IAAA7sB,OAAmC6kB,IACjDr5B,EAAI,EAAGA,EAAIomC,EAAiB3lC,OAAQT,IAAK,CAC9C,IAAIwE,EAAI4hC,EAAiBpmC,GACrBqmC,EAAUzlC,OAAAolC,EAAA,QAAAplC,CAAQ4D,GAEtB,GAAI5D,OAAAsV,EAAA,OAAAtV,CAAOub,KACgD,IAAvDkqB,EAAQp1B,cAAc2C,QAAQuI,EAAKlL,eAAuB,CAC1D,IAAI2F,EAAapS,EAAEoS,WACnBA,EAAW0vB,aAAa1lC,OAAAolC,EAAA,WAAAplC,CAAWylC,GAAU7hC,GAC7CoS,EAAW2vB,gBApG3B,CAAA16B,IAAA,iBAAAtH,MAAA,SAAA+gC,iBA6Gar9B,KAAK+U,GAAGwpB,mBAIbv+B,KAAKk+B,YAAY,KAAMl+B,KAAKm9B,qBAjHpC,CAAAv5B,IAAA,UAAAtH,MAAA,SAAAqZ,UAqHc,IAAAuP,EAAAllB,KACNA,KAAKwV,QAAQmb,IACT,CAAC,mBAAoB,WACrB,kBAAMzL,EAAKmY,mBAEfr9B,KAAKwV,QAAQmb,IACT,CAAC,qBACD,SAAC5b,EAAImkB,EAAMhlB,GAAX,OAAoBgR,EAAKoY,aAAapE,EAAMhlB,OA5HxD,CAAAtQ,IAAA,eAAAtH,MAAA,SAAAghC,aAqIiBpE,EAAMhlB,GACf,IAAIa,EAAK/U,KAAK+U,GACVypB,EAAO,IAAIr5B,OAAOxM,OAAAwV,EAAA,OAAAxV,CAAOoc,EAAG0pB,aAC5BC,EAAO,IAAIv5B,OAAO4P,EAAG4pB,YACrBC,EAAO,IAAIz5B,OAAO4P,EAAG8pB,YACrBC,EAAO,IAAI35B,OAAO4P,EAAGgqB,YACrBC,EAAO,IAAI75B,OAAO4P,EAAGkqB,YACrBC,EAAO,IAAI/5B,OAAO4P,EAAGoqB,YACrBC,EAAM,IAAIj6B,OAAO4P,EAAGsqB,YACpBC,EAAM,IAAIn6B,OAAO4P,EAAGwqB,YACpBC,EAAM,IAAIr6B,OAAO4P,EAAG0qB,YAExBvrB,EAAOA,EACFnM,QAAQy2B,EAAM,IACdz2B,QAAQ22B,EAAM,IACd32B,QAAQ62B,EAAM,IACd72B,QAAQ+2B,EAAM,KAEfE,EAAK1qB,KAAKJ,IAASgrB,EAAK5qB,KAAKJ,IAASkrB,EAAI9qB,KAAKJ,IAC/CorB,EAAIhrB,KAAKJ,IAASsrB,EAAIlrB,KAAKJ,MAC3BA,EAAOvb,OAAAolC,EAAA,QAAAplC,CAAQugC,IAGN,KAAThlB,GAIJlU,KAAKu9B,UAAUrE,EAAMhlB,EAAMlU,KAAKm9B,uBAhKxCD,iBAAA,GAqKAA,EAAiBhoB,KAAO,CACpBpZ,KAAM,mBACNsZ,QAAS,+mCC3Kb,IAAMsqB,EAAuB,CACzB,mBACA,2BACA,qBACA,0BACA,4BACA,oBACA,2BACA,4BACA,yBAGEC,EAAsB,CACxB,kBACA,0BACA,oBACA,yBACA,2BACA,mBACA,0BACA,2BACA,wBAUSC,EAAb,SAAArnB,GAOI,SAAAqnB,OAAY7qB,GAAI,IAAAC,+GAAAC,CAAAjV,KAAA4/B,QAGZ,IAAIpnB,GAFJxD,EAAAyD,2BAAAzY,KAAA0Y,gBAAAknB,QAAA9mC,KAAAkH,KAAM+U,EAAI6qB,UAEGrqB,OAAOsqB,QAAU,GAHlB,OASZ7qB,EAAK4e,SAAWj7B,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEc,UAAW,MAMzCtE,EAAKuE,KAAO,KAMZvE,EAAKnF,KAAOlX,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE3I,KAAM,cAMhCmF,EAAK+e,KAAOp7B,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEub,KAAM,MAMhC/e,EAAKoc,SAAWz4B,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE6Y,UAAW,UAMzCrc,EAAK8qB,WAAa,IAMlB9qB,EAAK+qB,OAASpnC,OAAAouB,EAAA,WAAApuB,CAAW6f,EAAEwnB,eAAgBlc,EAAA,UAM3C9O,EAAKirB,OAAStnC,OAAAouB,EAAA,WAAApuB,CAAW6f,EAAE0nB,eAAgBpc,EAAA,UAnD/B9O,EAPpB,iQAAAgF,CAAA4lB,OAA4B3lB,EAAA,gHAA5BrE,CAAAgqB,OAAA,EAAAh8B,IAAA,OAAAtH,MAAA,SAAAuZ,OAgEW,IAAAqP,EAAAllB,KACH,IAAIA,KAAKyV,YAAT,CAIA,IAAIV,EAAK/U,KAAK+U,GACVS,EAAUxV,KAAKwV,QAEf2qB,EAAexnC,OAAAwhB,EAAA,UAAAxhB,CAAU,OAC7BwnC,EAAa96B,UAAYrF,KAAKoxB,SAE9B,IAAIjE,EAAYntB,KAAK4zB,SACKj7B,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAK4zB,UAA/B7e,EAAGyF,MAAM7L,WACR3O,KAAK4zB,SAGNzG,EAAS1xB,YAAY0kC,GAFrBhT,EAAS1S,aAAa0lB,EAAcprB,EAAGyF,OAI3Cxa,KAAKuZ,KAAO4mB,EACPngC,KAAK+zB,KAGN/zB,KAAKuZ,KAAKuT,UAAY9sB,KAAK+zB,KAF3B/zB,KAAKuZ,KAAK9d,YAAY9C,OAAAwhB,EAAA,WAAAxhB,CAAWqH,KAAK6P,OAK1C7P,KAAKiyB,KAAKlI,EAAA,MAGVvU,EAAQE,GAAGgqB,EAAsB,kBAAMxa,EAAK+M,KAAK,MACjDzc,EAAQE,GAAGiqB,EAAqB,kBAAMza,EAAK+M,KAAKlI,EAAA,QAGhD/pB,KAAKyV,aAAc,KAhG3B,CAAA7R,IAAA,OAAAtH,MAAA,SAAA21B,KAuGSz3B,GACD,GAAKwF,KAAKiW,YAAV,CAiBA,IAAIhN,EAAIzO,IAAMuvB,EAAA,KAAO/pB,KAAK8/B,WAAa,EACvCM,EAAA,KAAK1lC,WAdL,SAAS2lC,gBACArgC,KAAKuZ,OAGN/e,IAAMuvB,EAAA,MACN/pB,KAAK+/B,OAAO//B,OAEhBA,KAAKuZ,KAAK0U,MAAMW,QAAUp0B,KAChBuvB,EAAA,MACN/pB,KAAKigC,OAAOjgC,QAKU9C,KAAK8C,MAAOiJ,MA1HlD,CAAArF,IAAA,UAAAtH,MAAA,SAAAqZ,UAgIc,IAAAwZ,EAAAnvB,KACN,GAAKA,KAAKyV,YAAV,CAIA,IAAID,EAAUxV,KAAKwV,QAEnB7c,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKuZ,MACfvZ,KAAKuZ,KAAO,KAGZ/D,EAAQmb,IAAI+O,EAAsB,kBAAMvQ,EAAK8C,KAAK,MAClDzc,EAAQmb,IAAIgP,EAAqB,kBAAMxQ,EAAK8C,KAAKlI,EAAA,QAEjD/pB,KAAKyV,aAAc,OA9I3BmqB,OAAA,imCC1BA,IAAaU,EAAb,SAAA/nB,GAMI,SAAA+nB,WAAYvrB,GAAI,IAAAC,+GAAAC,CAAAjV,KAAAsgC,YAGZ,IAAI9nB,GAFJxD,EAAAyD,2BAAAzY,KAAA0Y,gBAAA4nB,YAAAxnC,KAAAkH,KAAM+U,EAAIurB,cAEG/qB,OAAOgrB,aAAe,GAHvB,OASZvrB,EAAKmd,MAAQx5B,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE2Z,MAAO,MAMlCnd,EAAKwrB,OAAS7nC,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEgoB,OAAQ,MAMpCxrB,EAAKyrB,iBAAmB9nC,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEkoB,eAAgB,YAMtD1rB,EAAK4D,aAAejgB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEmoB,mBAAoB,eAMtD3rB,EAAK4rB,iBAAmBjoC,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEqoB,mBAClC,mBAMJ7rB,EAAKuF,eAAiB5hB,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEsoB,mBAAoB,WAMxD9rB,EAAK+rB,aAAepoC,OAAAouB,EAAA,WAAApuB,CAAW6f,EAAEsjB,kBAAmB,GAMpD9mB,EAAKgsB,SAAWroC,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAEyoB,aAAc,CAAC,IAM7CjsB,EAAKksB,QAAUvoC,OAAAouB,EAAA,aAAApuB,CAAa6f,EAAE0oB,SAAS,GAMvClsB,EAAKmsB,UAAYvlB,QAAQpD,EAAE4oB,YAM3BpsB,EAAKqsB,gBAAkB1oC,OAAAouB,EAAA,YAAApuB,CAAY6f,EAAE8oB,kBAAmB,SAOxDtsB,EAAKusB,QAAU,GAOfvsB,EAAKwsB,cAAgB,OAOrBxsB,EAAKysB,WAAa,aAOlBzsB,EAAK0sB,cAAgB3sB,EAAGyF,MAAMmnB,UAO9B3sB,EAAK4sB,aAA6C,EAA9BjpC,OAAAwhB,EAAA,IAAAxhB,CAAIoc,EAAGyF,MAAO,OAAOhiB,OAMzCwc,EAAKsF,YAAc,KAMnBtF,EAAK6sB,QAAU,KAMf7sB,EAAK8sB,YAAc,KAMnB9sB,EAAKod,QAAU,KAGfrd,EAAGyY,QAAUxY,EAAKksB,QApINlsB,EANpB,iQAAAgF,CAAAsmB,WAAgCrmB,EAAA,gHAAhCrE,CAAA0qB,WAAA,EAAA18B,IAAA,OAAAtH,MAAA,SAAAuZ,OAiJW,IAAAqP,EAAAllB,KACC+U,EAAK/U,KAAK+U,GACVmG,EAAMnG,EAAGyF,MAEb,IAAIxa,KAAKyV,YAAT,CAKAzV,KAAK+hC,eAGL/hC,KAAKgiC,sBAGLhiC,KAAKsa,YAActa,KAAK2a,gBACpB,MAAO3a,KAAKygC,kBACZzgC,KAAKmyB,QACLnyB,KAAKsa,YAAY2T,MAAMkE,MAAQnyB,KAAKmyB,OAExCjX,EAAIvM,WAAW8L,aAAaza,KAAKsa,YAAaY,GAG9Clb,KAAK6hC,QAAU7hC,KAAK2a,gBAAgB,MAAO3a,KAAK4Y,cAChD5Y,KAAKiiC,eAAejiC,KAAK6hC,SACrB7hC,KAAKwgC,SACLxgC,KAAK6hC,QAAQ5T,MAAMuS,OAASxgC,KAAKwgC,QAErCtlB,EAAIvM,WAAW8L,aAAaza,KAAK6hC,QAAS3mB,GAC1C,IAAIjS,EAAItQ,OAAAwhB,EAAA,UAAAxhB,CAAUuiB,GAIlB,GAHAlb,KAAK6hC,QAAQpmC,YAAYwN,GAGD,KAApBiS,EAAI+S,MAAMkE,MAAc,CACxB,IAAI+P,EAAOliC,KAAKmiC,oBAChBjnB,EAAI+S,MAAMkE,OAASx5B,OAAAypC,EAAA,SAAAzpC,CAAS,IAAKupC,GAC7BhnB,EAAImX,YAAc6P,GAAQ,KAGlC,IAAIrmC,EAAIlD,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAK6hC,SACvB7hC,KAAKsa,YAAY7e,YAAYI,GAG7BmE,KAAK8hC,YAAc9hC,KAAK2a,gBACpB,MAAO3a,KAAK4gC,kBAGhB5gC,KAAKoyB,QAAUz5B,OAAAwhB,EAAA,UAAAxhB,CAAU,SACzB,IAAI0pC,EAAK1pC,OAAAwhB,EAAA,UAAAxhB,CAAU,SAIf2pC,EAAOpnB,EAAImT,KAAKruB,KAAK+gC,cACrBwB,EAAeviC,KAAKwiC,kBAAkBF,GAGtCG,EAAaziC,KAAK0iC,mBAGtB1iC,KAAK2iC,cAAcN,GAEnBriC,KAAKoyB,QAAQ32B,YAAY4mC,GACE,IAAvBttB,EAAG6mB,gBACHyG,EAAG5nB,aAAagoB,EAAYH,GAE5BD,EAAG5mC,YAAYgnC,GAGnBziC,KAAK8hC,YAAYrmC,YAAYuE,KAAKoyB,SAClCpyB,KAAK6hC,QAAQlzB,WAAW8L,aAAaza,KAAK8hC,YAAa9hC,KAAK6hC,SAG5D,IAAIe,EAAQjqC,OAAAwhB,EAAA,IAAAxhB,CAAIuiB,EAAK,SACF,EAAf0nB,EAAMpqC,QACN0iB,EAAItM,YAAYg0B,EAAM,IAK1B5iC,KAAKoyB,QAAQnE,MAAM4U,YAAc,QACjC3nB,EAAI+S,MAAM4U,YAAc,QAGxB9tB,EAAG+tB,aAAa9iC,KAAKoyB,SAGrBpyB,KAAKoyB,QAAQnE,MAAMkE,MAAQjX,EAAI+S,MAAMkE,MAIrCx5B,OAAA27B,EAAA,OAAA37B,CAAOqH,KAAK6hC,QAAS,SAAU,SAAC7uB,GAC5B,IACI+vB,EADMpqC,OAAA27B,EAAA,UAAA37B,CAAUqa,GACC+vB,WACrB7d,EAAK4c,YAAYiB,WAAaA,IAmBlC,IAAIl8B,EAAOkO,EAAGiuB,UAAU,QACpBn8B,IACAA,EAAKo8B,WAAY,EACjBp8B,EAAKq8B,WAAaX,GAKtBviC,KAAKmjC,oBAEDpuB,EAAGquB,eACHX,EAAWxU,MAAMW,QAAU7E,EAAA,MAI/B/pB,KAAKyV,aAAc,KAhR3B,CAAA7R,IAAA,eAAAtH,MAAA,SAAAylC,eAwRQ,IAAIhtB,EAAK/U,KAAK+U,GACdA,EAAGiW,OAAS,EACZjW,EAAG8mB,WAAa,EAChB9mB,EAAG6mB,gBAAkB,IA3R7B,CAAAh4B,IAAA,sBAAAtH,MAAA,SAAA0lC,sBAkS0B,IAAA7S,EAAAnvB,KACd+U,EAAK/U,KAAK+U,GACY,EAAtBA,EAAGsuB,UAAU7qC,SAIjBuc,EAAGgkB,QAAQ,SAACuK,GACR,IAAIC,EACArK,EAAOnkB,EAAGyF,MAAM6T,KAAKtZ,EAAGyuB,sBAAsBC,MAAMH,GAEpDC,EADe,KAAfrK,EAAK/G,MACE+G,EAAK/G,MACgB,KAArB+G,EAAKjL,MAAMkE,MACX7G,SAAS4N,EAAKjL,MAAMkE,MAAO,IAE3BhD,EAAKkS,gBAEhBtsB,EAAGsuB,UAAUC,GAAKC,IAGtBxuB,EAAG+tB,kBArTX,CAAAl/B,IAAA,oBAAAtH,MAAA,SAAA6lC,oBA8TQ,IACIhQ,EADAjX,EAAMlb,KAAK+U,GAAGyF,MAWlB,OAPI2X,EADc,KAAdjX,EAAIiX,MACIjX,EAAIiX,MAEa,KAApBjX,EAAI+S,MAAMkE,MACPjX,EAAI+S,MAAMkE,MAEVjX,EAAImX,YAET/G,SAAS6G,EAAO,MAzU/B,CAAAvuB,IAAA,kBAAAtH,MAAA,SAAAqe,gBAmVoBlM,EAAKpJ,GACjB,IAAI4uB,EAAUt7B,OAAAwhB,EAAA,UAAAxhB,CAAU8V,GAExB,OADAwlB,EAAQ5uB,UAAYA,EACb4uB,IAtVf,CAAArwB,IAAA,mBAAAtH,MAAA,SAAAomC,mBA8VuB,IAAA/L,EAAA32B,KACX+U,EAAK/U,KAAK+U,GACV0tB,EAAa9pC,OAAAwhB,EAAA,UAAAxhB,CAAU,MAU3B,OATIqH,KAAKkhC,SAAWnsB,EAAGyY,UACnBzY,EAAG4mB,eAAiB,GACpB5mB,EAAGgkB,QAAQ,SAAC/F,GACR,IAAI0Q,EAAO,GAAAn3B,OAAMwI,EAAG4uB,QAAU3Q,EAAI2D,EAAK6K,cAAgBzsB,EAAG9E,IACtD2zB,EAAKjrC,OAAAwhB,EAAA,UAAAxhB,CAAUoc,EAAG8uB,WAAY,CAAC,KAAMH,IACzCjB,EAAWhnC,YAAYmoC,GACvB7uB,EAAG4mB,eAAe3I,GAAK0Q,KAGxBjB,IA1Wf,CAAA7+B,IAAA,oBAAAtH,MAAA,SAAA6mC,oBAkXQ,IAAIpuB,EAAK/U,KAAK+U,GACV+uB,EAAOnrC,OAAAwhB,EAAA,IAAAxhB,CAAIoc,EAAGyF,MAAO,OACzBxa,KAAK4hC,aAA6B,EAAdkC,EAAKtrC,OAEzB,IAAK,IAAI8qC,EAAKvuB,EAAGgvB,aAAe,EAAS,GAALT,EAAQA,IAAK,CAC7C,IAAItf,OAAG,EAEFhkB,KAAK4hC,aAIN5d,EAAM8f,EAAKR,IAHXtf,EAAMrrB,OAAAwhB,EAAA,UAAAxhB,CAAU,OAChBoc,EAAGyF,MAAMC,aAAauJ,EAAKjP,EAAGyF,MAAME,aAIxCsJ,EAAIiK,MAAMkE,MAAQpd,EAAGsuB,UAAUC,GAC/BtjC,KAAKuhC,QAAQ+B,GAAKtf,EAEtBhkB,KAAK4hC,cAAe,IAlY5B,CAAAh+B,IAAA,gBAAAtH,MAAA,SAAAqmC,cA0YkBqB,GACV,GAAIhkC,KAAKmhC,UAGL6C,EAAUvoC,YAAY9C,OAAAwhB,EAAA,UAAAxhB,CAAU,YAGhC,IAAK,IAAIZ,EAAI,EAAGA,EAAIiI,KAAKghC,SAASxoC,OAAQT,IAAK,CAC3C,IAAI07B,EAAMzzB,KAAK+U,GAAGyF,MAAM6T,KAAKruB,KAAKghC,SAASjpC,IAC3CisC,EAAUvoC,YAAYg4B,MAnZtC,CAAA7vB,IAAA,iBAAAtH,MAAA,SAAA2lC,eA6ZmBhO,GACNj0B,KAAKmyB,SAGuB,IAA7BnyB,KAAKmyB,MAAMxmB,QAAQ,KACnBsoB,EAAQhG,MAAMkE,MAAQ,OAEtB8B,EAAQhG,MAAMkE,MAAQnyB,KAAKmyB,SApavC,CAAAvuB,IAAA,oBAAAtH,MAAA,SAAAkmC,kBA8asB/O,GAAK,IAAA4F,EAAAr5B,KACf+U,EAAK/U,KAAK+U,GACVwtB,EAAe,GAUnB,OATAxtB,EAAGgkB,QAAQ,SAACx8B,GACR,IAAIX,EAAI63B,EAAIgQ,MAAMlnC,GACd0nC,EAAOroC,EAAE8yB,aAAa,MACrBuV,GAAiB,KAATA,IACTA,EAAI,GAAA13B,OAAM8sB,EAAKoI,WAAallC,EAAxB,KAAAgQ,OAA6BwI,EAAG9E,IACpCrU,EAAEtB,aAAa,KAAM2pC,IAEzB1B,EAAa7pC,KAAKurC,KAEf1B,IA1bf,CAAA3+B,IAAA,UAAAtH,MAAA,SAAAqZ,UAicQ,IAAIZ,EAAK/U,KAAK+U,GACVmG,EAAMnG,EAAGyF,MAEb,GAAKxa,KAAKyV,YAAV,CAGA,IAAIxM,EAAItQ,OAAAwhB,EAAA,UAAAxhB,CAAUuiB,GAClBlb,KAAKsa,YAAY3L,WAAW8L,aAAaxR,EAAGjJ,KAAKsa,aACjD3hB,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKsa,aAEfta,KAAKsa,YAAc,KACnBta,KAAK8hC,YAAc,KACnB9hC,KAAKoyB,QAAU,KACfpyB,KAAK6hC,QAAU,KAEf3mB,EAAIymB,UAAY3hC,KAAK0hC,cAErB1hC,KAAK+U,GAAGmG,IAAMviB,OAAAwhB,EAAA,IAAAxhB,CAAIoc,EAAG9E,IAErBjQ,KAAKyV,aAAc,OApd3B6qB,WAAA,8lCCEA,IAAa4D,EAAb,SAAA3rB,GAMI,SAAA2rB,MAAYnvB,GAAI,IAAAC,+GAAAC,CAAAjV,KAAAkkC,OAGZ,IAAIC,GAFJnvB,EAAAyD,2BAAAzY,KAAA0Y,gBAAAwrB,OAAAprC,KAAAkH,KAAM+U,EAAImvB,SAEK3uB,OAAO6uB,OAAS,GAHnB,OASZpvB,EAAKqvB,YAAqB,IAARF,GACbxrC,OAAAy7B,EAAA,QAAAz7B,CAAQwrC,EAAIG,SAAyC,IAA/BH,EAAIG,MAAM34B,QAAQ,QAM7CqJ,EAAKuvB,mBAAqB5rC,OAAAy7B,EAAA,QAAAz7B,CAAQwrC,EAAIG,SACM,IAAxCH,EAAIG,MAAM34B,QAAQ,iBAMtBqJ,EAAKwvB,aAAe7rC,OAAAy7B,EAAA,QAAAz7B,CAAQwrC,EAAIG,SACK,IAAjCH,EAAIG,MAAM34B,QAAQ,UAMtBqJ,EAAKyvB,eAAiB9rC,OAAAouB,EAAA,aAAApuB,CAAawrC,EAAIjD,SAAS,GAMhDlsB,EAAK0vB,kBAAoB9oB,QAAQuoB,EAAIQ,aAMrC3vB,EAAK4vB,kBAAoBhpB,QAAQuoB,EAAIU,aAMrC7vB,EAAK8vB,YAAclpB,QAAQuoB,EAAIt9B,MAM/BmO,EAAK+vB,sBAAwBnpB,QAAQuoB,EAAIa,oBAMzChwB,EAAKiwB,yBAA2BrpB,QAAQuoB,EAAIe,oBAM5ClwB,EAAKmwB,eAAiBxsC,OAAAouB,EAAA,WAAApuB,CAAW2yB,SAAS6Y,EAAIiB,gBAAiB,IAC3D,OAOJpwB,EAAKqwB,cAAgBrwB,EAAKuvB,oBAAsBvvB,EAAKwvB,aAOrDxvB,EAAKswB,QAAU,KAOftwB,EAAKuwB,KAAO,KAOZvwB,EAAKwwB,OAAS,KAOdxwB,EAAKmS,WAAa,KAOlBnS,EAAKnO,KAAO,KAOZmO,EAAKywB,WAAa,KAOlBzwB,EAAK0wB,kBAAoB,KAOzB1wB,EAAKovB,MAAQ,GAObpvB,EAAK2wB,QAAU,OAOf3wB,EAAK4wB,UAAY,OAOjB5wB,EAAK6wB,cAAgB,cAOrB7wB,EAAK8wB,cAAgB,qBA9JT9wB,EANpB,iQAAAgF,CAAAkqB,MAA2BjqB,EAAA,gHAA3BrE,CAAAsuB,MAAA,EAAAtgC,IAAA,OAAAtH,MAAA,SAAAuZ,OA0KW,IAAAqP,EAAAllB,KACCA,KAAKyV,cAITzV,KAAKwV,QAAQE,GAAG,CAAC,mBAAoB,kBAAMwP,EAAK6gB,WAChD/lC,KAAKwV,QAAQE,GAAG,CAAC,oBAAqB,0BAClC,SAACX,EAAIywB,GAAL,OAAgBtgB,EAAK8gB,WAAWR,KACpCxlC,KAAKwV,QAAQE,GAAG,CAAC,4BACb,SAACX,EAAIoS,GAAL,OAAoBjC,EAAK+gB,iBAAiB9e,KAC9CnnB,KAAKwV,QAAQE,GAAG,CAAC,iBACb,SAACX,EAAItO,EAAOy/B,GAAZ,OAA2BhhB,EAAKihB,WAAW1/B,EAAOy/B,KACtDlmC,KAAKwV,QAAQE,GAAG,CAAC,oBAAqB,kBAAMwP,EAAKkhB,cACjDpmC,KAAKwV,QAAQE,GAAG,CAAC,kCACb,kBAAMwP,EAAKmhB,wBACfrmC,KAAKwV,QAAQE,GAAG,CAAC,eAAgB,iBAAkB,SAACX,EAAII,EACpDmP,EAAUmhB,GADqC,OACtBvgB,EAAKohB,qBAAqBb,KACvDzlC,KAAKwV,QAAQE,GAAG,CAAC,kCACb,kBAAMwP,EAAKqhB,2BACfvmC,KAAKwV,QAAQE,GAAG,CAAC,mBACb,SAACX,EAAIiuB,EAAWwD,GAAhB,OAA4BthB,EAAKuhB,wBAAwBD,KAEzDxmC,KAAKqkC,aACLrkC,KAAKulC,KAAO,IAAImB,EAAA,KAAK1mC,MACrBA,KAAKulC,KAAK1vB,QAEV7V,KAAKqlC,gBACLrlC,KAAKslC,QAAU,IAAIqB,EAAA,QAAQ3mC,MAC3BA,KAAKslC,QAAQzvB,QAIjB7V,KAAKyV,aAAc,KA1M3B,CAAA7R,IAAA,SAAAtH,MAAA,SAAAypC,SAiNa,IAAA5W,EAAAnvB,KACL,GAAKA,KAAKiW,YAAV,CAGA,IAAImuB,EAAQpkC,KAAKokC,MACbrvB,EAAK/U,KAAK+U,GAEd,GAAI/U,KAAKykC,eACc1vB,EAAG6xB,kBAET5/B,QAAQ,SAAChG,EAAK0jB,GACvB,IAAI9gB,EAAG,GAAA2I,OAAM4iB,EAAKwW,SAAXp5B,OAAqBmY,GAExB/rB,OAAAy7B,EAAA,SAAAz7B,CAASqI,IAAQrI,OAAAypC,EAAA,QAAAzpC,CAAQqI,GACrBojC,EAAMvrC,eAAe+K,KACrBwgC,EAAMxgC,GAAK+4B,SAAMnhC,IAGrB4oC,EAAMxgC,GAAOwgC,EAAMxgC,IAAQ,GAC3BwgC,EAAMxgC,GAAK+4B,IAAM37B,KAqB7B,GAhBIhB,KAAK0kC,oBACD/rC,OAAAy7B,EAAA,OAAAz7B,CAAOqH,KAAKwlC,QACZpB,EAAMpkC,KAAK4lC,gBAAapqC,EAExB4oC,EAAMpkC,KAAK4lC,WAAa5lC,KAAKwlC,QAIjCxlC,KAAK4kC,oBACDjsC,OAAAy7B,EAAA,OAAAz7B,CAAOqH,KAAKmnB,YACZid,EAAMpkC,KAAK6lC,oBAAiBrqC,EAE5B4oC,EAAMpkC,KAAK6lC,eAAiB7lC,KAAKmnB,YAIrCnnB,KAAK8kC,cACAnsC,OAAAy7B,EAAA,OAAAz7B,CAAOqH,KAAK6G,MAAO,CAEpBlO,OAAOsS,KAAKm5B,GAAOp9B,QAAQ,SAACpD,IACW,IAA/BA,EAAI+H,QAAQwjB,EAAKwW,UAAmBvB,EAAMxgC,KAC1CwgC,EAAMxgC,GAAKiD,UAAOrL,KAI1B,IAAIoI,EAAG,GAAA2I,OAAMvM,KAAK2lC,SAAXp5B,OAAqBvM,KAAK6G,KAAKggC,QACtCzC,EAAMxgC,GAAOwgC,EAAMxgC,IAAQ,GAC3BwgC,EAAMxgC,GAAKiD,KAAO,CAAEq/B,WAAYlmC,KAAK6G,KAAKq/B,YAI9ClmC,KAAK+kC,wBACApsC,OAAAy7B,EAAA,OAAAz7B,CAAOqH,KAAKylC,cAEb9sC,OAAOsS,KAAKm5B,GAAOp9B,QAAQ,SAACpD,IACW,IAA/BA,EAAI+H,QAAQwjB,EAAKwW,UAAmBvB,EAAMxgC,KAC1CwgC,EAAMxgC,GAAKkjC,YAAStrC,KAI5BwE,KAAKylC,WAAWz+B,QAAQ,SAACme,GACrB,IAAIvhB,EAAG,GAAA2I,OAAM4iB,EAAKwW,SAAXp5B,OAAqB4Y,GAC5Bif,EAAMxgC,GAAOwgC,EAAMxgC,IAAQ,GAC3BwgC,EAAMxgC,GAAKkjC,QAAS,MAK5B9mC,KAAKilC,2BACDtsC,OAAAy7B,EAAA,OAAAz7B,CAAOqH,KAAK0lC,mBACZtB,EAAMpkC,KAAK8lC,oBAAiBtqC,EAE5B4oC,EAAMpkC,KAAK8lC,eAAiB9lC,KAAK0lC,mBAIzC1lC,KAAKwV,QAAQsF,KAAK,gBAAiB/F,EAAIqvB,MAjS/C,CAAAxgC,IAAA,aAAAtH,MAAA,SAAA0pC,WAySeR,GACPxlC,KAAKwlC,OAASA,EACdxlC,KAAK+lC,WA3Sb,CAAAniC,IAAA,mBAAAtH,MAAA,SAAA2pC,iBAmTqB9e,GACbnnB,KAAKmnB,WAAaA,EAClBnnB,KAAK+lC,WArTb,CAAAniC,IAAA,aAAAtH,MAAA,SAAA6pC,WA8Te1/B,EAAOy/B,GACdlmC,KAAK6G,KAAO,CACRggC,OAAQpgC,EACRy/B,WAAYA,GAEhBlmC,KAAK+lC,WAnUb,CAAAniC,IAAA,uBAAAtH,MAAA,SAAAgqC,qBA2UyBb,GACjBzlC,KAAKylC,WAAaA,EAClBzlC,KAAK+lC,WA7Ub,CAAAniC,IAAA,0BAAAtH,MAAA,SAAAmqC,wBAqV4BD,GACpBxmC,KAAK0lC,kBAAoBc,EACzBxmC,KAAK+lC,WAvVb,CAAAniC,IAAA,WAAAtH,MAAA,SAAAiG,SA+Va6hC,GACLpkC,KAAKokC,MAAQA,EACbpkC,KAAKwV,QAAQsF,KAAK,gBAAiB9a,KAAK+U,GAAIqvB,KAjWpD,CAAAxgC,IAAA,OAAAtH,MAAA,SAAAyqC,OAwWQ,IAAI3C,EAAQpkC,KAAKokC,MACbrvB,EAAK/U,KAAK+U,GAId,GAFA/U,KAAKgnC,eAEDhnC,KAAK0kC,kBAAmB,CACxB,IAAIhU,EAAa0T,EAAMpkC,KAAK4lC,WAC5B5lC,KAAKwV,QAAQsF,KAAK,cAAe/F,EAAI2b,GAGzC,GAAI1wB,KAAK4kC,kBAAmB,CACxB,IAAIzd,EAAaid,EAAMpkC,KAAK6lC,eAC5B7lC,KAAKwV,QAAQsF,KAAK,sBAAuB/F,EAAIoS,GAGjDnnB,KAAKomC,YACLpmC,KAAKqmC,sBACLrmC,KAAKumC,2BAzXb,CAAA3iC,IAAA,kBAAAtH,MAAA,SAAA2qC,gBAiYoB7C,GAGZpkC,KAAKgW,UAELhW,KAAKuC,SAAS6hC,GAEdpkC,KAAK+mC,OAEL/mC,KAAK+V,WA1Yb,CAAAnS,IAAA,eAAAtH,MAAA,SAAA0qC,eAkZmB,IAAArQ,EAAA32B,KACX,GAAKA,KAAKykC,eAAV,CAGA,IAAIL,EAAQpkC,KAAKokC,MACbrvB,EAAK/U,KAAK+U,GAIdA,EAAGgkB,QAAQ,SAAC5T,GAAD,OAAYpQ,EAAGmyB,eAAe/hB,EAAQ,MAEjDxsB,OAAOsS,KAAKm5B,GAAOp9B,QAAQ,SAACpD,GACxB,IAAmC,IAA/BA,EAAI+H,QAAQgrB,EAAKgP,SAAiB,CAClC,IAAIxgB,EAASmG,SAAS1nB,EAAImE,QAAQ4uB,EAAKgP,QAAS,IAAK,IACjD3kC,EAAMojC,EAAMxgC,GAAK+4B,IACrB5nB,EAAGmyB,eAAe/hB,EAAQnkB,MAIlC+T,EAAGrJ,YAraX,CAAA9H,IAAA,YAAAtH,MAAA,SAAA8pC,YA6agB,IAAA/M,EAAAr5B,KACR,GAAKA,KAAK8kC,YAAV,CAGA,IAAIV,EAAQpkC,KAAKokC,MACbrvB,EAAK/U,KAAK+U,GAEdpc,OAAOsS,KAAKm5B,GAAOp9B,QAAQ,SAACpD,GACxB,IAAmC,IAA/BA,EAAI+H,QAAQ0tB,EAAKsM,SAAiB,CAClC,IAAIxgB,EAASmG,SAAS1nB,EAAImE,QAAQsxB,EAAKsM,QAAS,IAAK,IACrD,IAAKhtC,OAAAy7B,EAAA,QAAAz7B,CAAQyrC,EAAMxgC,GAAKiD,MAAO,CAC3B,IAAIA,EAAOu9B,EAAMxgC,GAAKiD,KACtBwyB,EAAK7jB,QAAQsF,KAAK,OAAQ/F,EAAIoQ,EAAQte,EAAKq/B,mBAzb/D,CAAAtiC,IAAA,sBAAAtH,MAAA,SAAA+pC,sBAoc0B,IAAArJ,EAAAh9B,KAClB,GAAKA,KAAK+kC,sBAAV,CAGA,IAAIX,EAAQpkC,KAAKokC,MACbrvB,EAAK/U,KAAK+U,GACV0wB,EAAa,GAEjB9sC,OAAOsS,KAAKm5B,GAAOp9B,QAAQ,SAACpD,GACxB,IAAmC,IAA/BA,EAAI+H,QAAQqxB,EAAK2I,SAAiB,CAClC,IAAIxgB,EAASmG,SAAS1nB,EAAImE,QAAQi1B,EAAK2I,QAAS,IAAK,IAChDhtC,OAAAy7B,EAAA,QAAAz7B,CAAQyrC,EAAMxgC,GAAKkjC,SACpBrB,EAAW/sC,KAAKysB,MAK5BsgB,EAAWz+B,QAAQ,SAACme,GAChB6X,EAAKxnB,QAAQsF,KAAK,cAAe/F,EAAIoQ,QAtdjD,CAAAvhB,IAAA,yBAAAtH,MAAA,SAAAiqC,yBAgeQ,GAAKvmC,KAAKilC,yBAAV,CAGA,IAAIb,EAAQpkC,KAAKokC,MACbrvB,EAAK/U,KAAK+U,GACV2wB,EAAoBtB,EAAMpkC,KAAK8lC,eAEnC9lC,KAAK0lC,kBAAoBA,EACzB1lC,KAAKwV,QAAQsF,KAAK,eAAgB/F,EAAI2wB,MAxe9C,CAAA9hC,IAAA,UAAAtH,MAAA,SAAAqZ,UA8ec,IAAAwxB,EAAAnnC,KACDA,KAAKyV,cAIVzV,KAAKokC,MAAQ,GAEbpkC,KAAKwV,QAAQmb,IAAI,CAAC,mBAAoB,kBAAMwW,EAAKpB,WACjD/lC,KAAKwV,QAAQmb,IAAI,CAAC,oBAAqB,0BACnC,SAAC5b,EAAIywB,GAAL,OAAgB2B,EAAKnB,WAAWR,KACpCxlC,KAAKwV,QAAQmb,IAAI,CAAC,4BACd,SAAC5b,EAAItO,GAAL,OAAe0gC,EAAKlB,iBAAiBx/B,KACzCzG,KAAKwV,QAAQmb,IAAI,CAAC,iBACd,SAAC5b,EAAItO,EAAOy/B,GAAZ,OAA2BiB,EAAKhB,WAAW1/B,EAAOy/B,KACtDlmC,KAAKwV,QAAQmb,IAAI,CAAC,oBAAqB,kBAAMwW,EAAKf,cAClDpmC,KAAKwV,QAAQmb,IAAI,CAAC,kCACd,kBAAMwW,EAAKd,wBACfrmC,KAAKwV,QAAQmb,IAAI,CAAC,eAAgB,iBAAkB,SAAC5b,EAAII,EACrDmP,EAAUmhB,GADsC,OACvB0B,EAAKb,qBAAqBb,KACvDzlC,KAAKwV,QAAQmb,IAAI,CAAC,kCACd,kBAAMwW,EAAKZ,2BACfvmC,KAAKwV,QAAQmb,IAAI,CAAC,mBACd,SAAC5b,EAAIiuB,EAAWwD,GAAhB,OAA4BW,EAAKV,wBAAwBD,KAEzDxmC,KAAKqkC,aACLrkC,KAAKulC,KAAK5vB,UACV3V,KAAKulC,KAAO,MAGZvlC,KAAKqlC,gBACLrlC,KAAKslC,QAAQ3vB,UACb3V,KAAKslC,QAAU,MAGnBtlC,KAAKyV,aAAc,OAhhB3ByuB,MAAA,0mCCLA,IAEMkD,EAAc,+BAKPC,EAAb,SAAA9uB,GAMI,SAAA8uB,KAAYtyB,GAAI,IAAAC,+GAAAC,CAAAjV,KAAAqnC,MAGZ,IAAI7uB,GAFJxD,EAAAyD,2BAAAzY,KAAA0Y,gBAAA2uB,MAAAvuC,KAAAkH,KAAM+U,EAAIsyB,QAEG9xB,OAAO+xB,mBAAqB,GAH7B,OASZtyB,EAAKqE,MAAQ1gB,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEc,UAAW,MAMtCtE,EAAKuyB,UAAY5uC,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEgvB,oBAAqB,MAMpDxyB,EAAKyyB,UAAa9uC,OAAA+uC,EAAA,QAAA/uC,CAAQ6f,EAAE3I,MACxB,ubADgC2I,EAAE3I,KAatCmF,EAAK2yB,UAAYhvC,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEub,KAAM,MAMrC/e,EAAK4yB,QAAUjvC,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEqvB,SAAU,KAMvC7yB,EAAK8yB,QAAUnvC,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEuvB,SAAU,MAMvC/yB,EAAK8R,YAAcnuB,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEwO,cAAe,WAMhDhS,EAAK4D,aAAejgB,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEM,oBAAqB,YAMvD9D,EAAK2a,IAAM,KAMX3a,EAAKuE,KAAO,KAMZvE,EAAKgzB,aAAe,KAMpBhzB,EAAKizB,YAAc,4CACTlzB,EAAGmzB,QAAU,iBAAwBd,EAC3C,qBAAuBA,EAAc,6BACVryB,EAAGozB,KAAO,qIAQzCnzB,EAAKgV,gBAAkBrxB,OAAA8gC,EAAA,YAAA9gC,CAAY6f,EAAEyR,iBAAkBme,EAAA,OAEvDpzB,EAAKQ,QAAQE,GAAG,CAAC,aAAc,kBAAMV,EAAKa,SA/F9Bb,EANpB,iQAAAgF,CAAAqtB,KAA0BptB,EAAA,gHAA1BrE,CAAAyxB,KAAA,EAAAzjC,IAAA,YAAAtH,MAAA,SAAAi/B,UA4GcvoB,GAGN,IAFA,IAAIwoB,EAAY7iC,OAAA27B,EAAA,UAAA37B,CAAUqa,GAEnBwoB,GAAaA,IAAcx7B,KAAKuZ,MAAQiiB,IAAcx7B,KAAK2vB,KAC9D6L,EAAYA,EAAU7sB,WAGtB6sB,IAAcx7B,KAAKuZ,MAAQiiB,IAAcx7B,KAAK2vB,KAC9C3vB,KAAK+xB,WApHjB,CAAAnuB,IAAA,OAAAtH,MAAA,SAAAuZ,OA6HW,IAAAqP,EAAAllB,KACH,IAAIA,KAAKyV,YAAT,CAIAzV,KAAKwV,QAAQsF,KAAK,uBAAwB9a,MAAOrH,OAAA+uC,EAAA,OAAA/uC,CAAOqH,KAAKqZ,QAE7D,IAAItE,EAAK/U,KAAK+U,GAEV4a,EAAMh3B,OAAAwhB,EAAA,UAAAxhB,CAAU,QAChB4gB,EAAO5gB,OAAAwhB,EAAA,UAAAxhB,CAAU,OAErBqH,KAAKgoC,aAAehoC,KAAKu7B,UAAUr+B,KAAK8C,OAGxBA,KAAKqZ,MAEjB1gB,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAKqZ,OADTtE,EAAGI,QAAQ,WAAW+E,UAAUla,KAAKgqB,kBAEhCvuB,YAAYk0B,GAErB,IAAI0Y,EAAgBroC,KAAKunC,UAAkB5uC,OAAAwhB,EAAA,IAAAxhB,CAAIqH,KAAKunC,WAAf5X,EAErC,GAAK3vB,KAAK8nC,QAOH,CACHnY,EAAI7C,UAAY9sB,KAAK8nC,QACrB,IAAIQ,EAAS3Y,EAAIjV,WACjB/hB,OAAA27B,EAAA,OAAA37B,CAAO2vC,EAAQ,QAAS,kBAAMpjB,EAAK6M,WACnCsW,EAAa5sC,YAAY8d,OAXV,CACf8uB,EAAa5sC,YAAY8d,GACzB,IAAIgvB,EAAW5vC,OAAAwhB,EAAA,UAAAxhB,CAAU,IAAK,CAAC,OAAQ,wBACvC4vC,EAASljC,UAAYrF,KAAK8mB,YAC1ByhB,EAAS9sC,YAAY9C,OAAAwhB,EAAA,WAAAxhB,CAAWqH,KAAK4nC,UACrCjY,EAAIl0B,YAAY8sC,GAChB5vC,OAAA27B,EAAA,OAAA37B,CAAO4vC,EAAU,QAAS,kBAAMrjB,EAAK6M,WAQpC/xB,KAAK2nC,WAIF3nC,KAAKunC,WACLc,EAAa5sC,YAAY8d,GAE7BA,EAAKuT,UAAY9sB,KAAK2nC,UACjB3nC,KAAKunC,YACNhuB,EAAKlU,UAAYrF,KAAK4Y,gBAR1BW,EAAKuT,UAAY9sB,KAAKynC,UACtBluB,EAAKlU,UAAYrF,KAAK4Y,cAU1BW,EAAKuT,WAAa9sB,KAAKioC,YACvBtvC,OAAA27B,EAAA,OAAA37B,CAAO4gB,EAAM,QAAS,kBAAM2L,EAAK6M,WAEjC/xB,KAAKuZ,KAAOA,EACZvZ,KAAK2vB,IAAMA,EAEX3vB,KAAKyV,aAAc,EAEnBzV,KAAKwV,QAAQsF,KAAK,sBAAuB9a,SArLjD,CAAA4D,IAAA,SAAAtH,MAAA,SAAAy1B,SA8LQ,GAAK/xB,KAAKiW,YAAV,CAKAtd,OAAA27B,EAAA,UAAA37B,CAAU6vC,EAAA,KAAM,UAAWxoC,KAAKgoC,cAEhC,IAAIS,EAAazoC,KAAKuZ,KAAK0U,MAAMW,QACd,KAAf6Z,GAAqBA,IAAe7jB,EAAA,MACpC5kB,KAAKuZ,KAAK0U,MAAMW,QAAU,SAC1Bj2B,OAAA27B,EAAA,OAAA37B,CAAO6vC,EAAA,KAAM,UAAWxoC,KAAKgoC,eAE7BhoC,KAAKuZ,KAAK0U,MAAMW,QAAUhK,EAAA,QA1MtC,CAAAhhB,IAAA,UAAAtH,MAAA,SAAAqZ,UAkNa3V,KAAKyV,cAGV9c,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAK2vB,KACf3vB,KAAK2vB,IAAM,KAEXh3B,OAAAwhB,EAAA,UAAAxhB,CAAUqH,KAAKuZ,MACfvZ,KAAKuZ,KAAO,KAEZvZ,KAAKgoC,aAAe,KACpBhoC,KAAKyV,aAAc,OA5N3B4xB,KAAA,GAkOAA,EAAKnyB,KAAO,CAACkG,mBAAmB,kmCCtOhC,IAAastB,EAAb,SAAAnwB,GAMI,SAAAmwB,SAAY3zB,GAAI,IAAAC,EAAA,mHAAAC,CAAAjV,KAAA0oC,WACZ1zB,EAAAyD,2BAAAzY,KAAA0Y,gBAAAgwB,UAAA5vC,KAAAkH,KAAM+U,EAAI2zB,YAMLzpB,OAASlK,EAAGkK,OAMjBjK,EAAK2zB,SAAWC,EAAA,KAEhB5zB,EAAKe,SAfOf,EANpB,iQAAAgF,CAAA0uB,SAA8BG,EAAA,gHAA9BjzB,CAAA8yB,SAAA,EAAA9kC,IAAA,OAAAtH,MAAA,SAAAuZ,OA2BW,IAAAqP,EAAAllB,KACCA,KAAKyV,cAKTzV,KAAK2oC,SAASG,UAAU9oC,KAAKif,QAG7Bjf,KAAK+oC,iBAAiB/oC,KAAK+U,GAAGi0B,UAE9BhpC,KAAKwV,QAAQE,GACT,CAAC,yBACD,SAACX,EAAIuvB,GAAL,OAAepf,EAAK6jB,iBAAiBzE,KAIzCtkC,KAAKwV,QAAQsF,KAAK,wBAAyB9a,KAAK+U,GAAI/U,MAGpDA,KAAKyV,aAAc,KA/C3B,CAAA7R,IAAA,QAAAtH,MAAA,SAAAyf,MAyDUktB,EAAS/nB,GACX,OAAOlhB,KAAK2oC,SAAStpB,OAAO4pB,EAAS/nB,KA1D7C,CAAAtd,IAAA,UAAAtH,MAAA,SAAA82B,QAmEY6V,EAAS/nB,GACb,OAAOlhB,KAAK2oC,SAASvV,QAAQpzB,KAAK+b,MAAMktB,EAAS/nB,MApEzD,CAAAtd,IAAA,aAAAtH,MAAA,SAAA4sC,WA8Ee5kB,EAAUggB,GAEjB,IAAI6E,GADJ7E,EAAQA,GAAStkC,KAAK+U,GAAGi0B,UACL1kB,GACpB,OAAO3rB,OAAAiiB,EAAA,MAAAjiB,CAAMwwC,GAAWA,EAAU,KAjF1C,CAAAvlC,IAAA,YAAAtH,MAAA,SAAAyoB,UA0FcT,GACN,OAAOtkB,KAAKkpC,WAAW5kB,GAAUrF,QAAUjf,KAAKif,SA3FxD,CAAArb,IAAA,mBAAAtH,MAAA,SAAAysC,mBAyG+B,IAAA5Z,EAAAnvB,KAAVskC,EAAU,EAAAliC,UAAA5J,aAAAgD,IAAA4G,UAAA,GAAAA,UAAA,GAAJ,GACnBkiC,EAAMt9B,QAAQ,SAACpM,EAAM8pB,GACjB,IAAIpH,EAAU6R,EAAK+Z,WAAWxkB,EAAK4f,GACnC,GAAIhnB,EAAQ1iB,OAASmvB,EAAA,MAAQzM,EAAQzkB,eAAe,UAAW,CAC3D,IAAIomB,EAASkQ,EAAKwZ,SAAS5jB,UACvBzH,EAAQ2B,QAAUkQ,EAAKlQ,QAEvBmqB,EAAUzwC,OAAAiiB,EAAA,QAAAjiB,CAAQ2kB,EAAQ+rB,QAC1B/rB,EAAQ+rB,OAAS,CAAC/rB,EAAQ+rB,QAG9B,IACID,EAAQpiC,QAAQ,SAACqiC,GACbpqB,EAAOqqB,UAAUD,KAEvB,MAAOE,GACL7M,EAAA,KAAK3/B,QAAQ1B,MAAMkuC,SAzHvC,CAAA3lC,IAAA,UAAAtH,MAAA,SAAAqZ,UAkIc,IAAAghB,EAAA32B,KACDA,KAAKyV,cAMVzV,KAAKwV,QAAQmb,IACT,CAAC,yBACD,SAAC5b,EAAIuvB,GAAL,OAAe3N,EAAKoS,iBAAiBzE,KAGzCtkC,KAAKyV,aAAc,OA9I3BizB,SAAA,iCCVA,IAAAhsB,EAAAtjB,EAAA,IACAonB,EAAApnB,EAAA,IACAowC,EAAApwC,EAAA,IACAqwC,EAAArwC,EAAA,KACAswC,EAAAtwC,EAAA,KACAuwC,EAAAvwC,EAAA,KACAwwC,EAAAxwC,EAAA,IAEA6X,EAAAyL,EAAAzL,SACA/M,EAAAwY,EAAAxY,SACAsS,EAAAkG,EAAAlG,OACArS,EAAAuY,EAAAvY,WAwDAxM,EAAAD,QAtDA,SAAAmyC,WAAAppB,EAAAqpB,EAAAC,EAAAjqC,GACA,IAAAoK,EACA8/B,EACAC,EACAnqB,EACAvE,EAAAkF,EAAAlF,MACAC,EAAAiF,EAAAjF,IACA0uB,EAAA1uB,EAAAD,EACA3D,EAAA2D,EACA9U,EAAA,EACAqB,EAAA,GAEA,IAAA0Y,EAAAC,GACA,OAAAspB,EAAAI,IAAA,GA4BA,IA1BAhmC,EAAA2lC,KACAhqC,EAAAgqC,EACAA,EAAA,MAEAA,KAAA,EACA74B,EAAAsK,IACAyuB,EAAAL,EAAApuB,EAAAuuB,GACA5/B,EAAA,WACA,OAAAu/B,EAAA7xB,EAAAkyB,EAAAE,KAEG9lC,EAAAqX,GACHrR,EAAA,WACA,OAAAw/B,EAAA9xB,EAAAkyB,IAEGtzB,EAAA+E,KACH0uB,EAAAL,EAAAE,GACAA,EAAAG,EAAA,GACAnqB,EAAAmqB,EAAA,GACA//B,EAAA,WACA,OAAAs/B,EAAA5xB,EAAAkyB,EAAAhqB,KAIAoqB,GAAA,EAAAJ,IACAA,IAAA,GAEAI,EAAA1uB,GAAA5D,KAAA4D,GACAuuB,GACAjiC,EAAApP,KAAAkf,GAEA9X,GACAA,EAAA8X,EAAAnR,EAAAga,GAEA7I,EAAA1N,IACAzD,IAEA,OAAAsjC,EAAAtjC,EAAA,EAAAqB,iCChEAnQ,EAAAD,QAAA,mFCAA,IAAA0yC,EAAAhxC,EAAA,IACAojB,EAAApjB,EAAA,IACAqjB,EAAArjB,EAAA,IACAkmB,EAAAlmB,EAAA,IACAknB,EAAAlnB,EAAA,IACAgoB,EAAAhoB,EAAA,KACA2nB,EAAA3nB,EAAA,IACAixC,EAAAjxC,EAAA,KAEAkxC,EAAAF,EAAAE,sBACAC,EAAAH,EAAAG,2BA6BA5yC,EAAAD,QA3BA,SAAA8yC,cAAA3uC,EAAA4uC,EAAAC,EAAAC,GACA,IAAAC,EAAAruC,EAAA,EAkBA,IAjBA+jB,EAAAoqB,KACAA,EAAAJ,GAEAhqB,EAAAqqB,KACAA,EAAAJ,GAIAK,EAAAxpB,EAAA9B,EAAAzjB,GAAA6uC,GACAL,EAAAO,EAAAF,EAAAC,GACAF,GAAA5uC,EAAA+uC,IAIAA,EAAA7pB,EAAAzB,EAAAzjB,GAAA6uC,GACAL,EAAAO,EAAAF,EAAAC,IAEAC,GAAA/uC,GAEA2gB,EAAAouB,EAAAnuB,EAAAmuB,GAAA,GACAruC,IAEA,OAAAA,iCCpCA,IAAAogB,EAAAvjB,EAAA,IACAyO,EAAAzO,EAAA,KAEAwO,EAAA+U,EAAA/U,IAWAjQ,EAAAD,QATA,SAAA4P,UAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA,IAAArC,EAAAsC,EAAAL,GAAAzF,SAAA4F,GAAA,IAKA,OAJApC,EAAAuC,EAAAF,GAAA,IAAAH,EAAAlC,EAAAyC,QAAA,YAAAvP,QAAA8M,GACAmC,GAAAF,EAAA,KACAjC,GAAAiC,EAAA,WAAAjC,GAEAA,iCCXA,IAAA4B,EAAA9N,EAAA,IACAkmB,EAAAlmB,EAAA,IACA6mB,EAAA7mB,EAAA,IAuCAzB,EAAAD,QArCA,SAAAmzC,uBAAAC,EAAAC,EAAAjrB,GACA,IAAAvY,EAAAyjC,EAAAC,EAAAH,EAAAC,EAmBA,GAlBAE,IACAD,EAAAD,EACAA,EAAAD,EACAA,EAAAE,GAEAzjC,EAAAwjC,EAAAD,EACA,EAAAhrB,EAAAjC,aACAtW,EAAAL,EAAAK,EAAAuY,EAAAjC,aAWAiC,EAAA/B,UAMA,IALA+sB,EAAAxrB,EAAAwrB,GACAvjC,IACAA,GAAA,EACA0Y,EAAA6qB,EAAAhrB,EAAAhkB,KAAAyL,IAEAujC,EAAAC,IACA9qB,EAAA6qB,EAAAhrB,EAAAhkB,KAAA,KACAivC,EAAAD,KAGAvjC,GAAA,EAGA,OAAA0jC,GAAA1jC,mCClCA5P,EAAAD,QAJA,SAAAwzC,iBAAA5lC,GACA,OAAAA,EAAA+F,OAAA,GAAAqJ,cAAApP,EAAAnI,MAAA,kCCDA,IAAAyf,EAAAxjB,EAAA,IACAkjB,EAAAljB,EAAA,IAGAiO,EAFAjO,EAAA,IAEAiO,MAOA1P,EAAAD,QALA,SAAAqpB,sBAAAllB,EAAA6uC,GAEA,OADA9tB,EAAA/gB,EAAA,EAAAwL,GAAAiV,EAAAzgB,GAAA6uC,GAAA,GAAAA,GACA7uC,iCCRA,IAAAsvC,EAAA/xC,EAAA,KACAgyC,EAAAhyC,EAAA,IACAiyC,EAAAjyC,EAAA,KAEAwL,EAAAwmC,EAAAxmC,UAEAjN,EAAAD,QAAA2zC,EAAAzmC,EAAAumC,iCCNA,IAAAG,EAAAlyC,EAAA,KACAmyC,EAAAnyC,EAAA,KACA0nB,EAAA1nB,EAAA,IACAgnB,EAAAhnB,EAAA,IACAgjB,EAAAhjB,EAAA,IACA8N,EAAA9N,EAAA,IACA4N,EAAA5N,EAAA,IACA+pB,EAAA/pB,EAAA,IACAwM,EAAAxM,EAAA,IACAoyC,EAAApyC,EAAA,KACA+mB,EAAA/mB,EAAA,IACA4mB,EAAA5mB,EAAA,IACAwjB,EAAAxjB,EAAA,IACAsqB,EAAAtqB,EAAA,IACA6mB,EAAA7mB,EAAA,IACAknB,EAAAlnB,EAAA,IACAsjB,EAAAtjB,EAAA,IACA2mB,EAAA3mB,EAAA,IACAuqB,EAAAvqB,EAAA,IACAyM,EAAAzM,EAAA,IACAioB,EAAAjoB,EAAA,IACAqyC,EAAAryC,EAAA,KACAsyC,EAAAtyC,EAAA,IACA4nB,EAAA5nB,EAAA,IACAooB,EAAApoB,EAAA,IACAuyC,EAAAvyC,EAAA,KACAwyC,EAAAxyC,EAAA,KAEA6X,EAAAyL,EAAAzL,SACA/M,EAAAwY,EAAAxY,SACAsS,EAAAkG,EAAAlG,OACA1S,EAAA4nC,EAAA5nC,OACAqT,EAAA2J,EAAA3J,QACAL,EAAAgK,EAAAhK,cACAX,EAAAiK,EAAAjK,UACAC,EAAAgK,EAAAhK,WACAC,EAAA+J,EAAA/J,YACAC,EAAA8J,EAAA9J,WAoaA3e,EAAAD,QAlaA,SAAA0lB,gBAAA8E,EAAArmB,EAAAkU,EAAAwN,GAGA,IAAAC,EAAAtG,EAAAO,EAAAo0B,EAAAC,EAAA7pB,EAGA8pB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAgBA,SAAAC,kBAAA/8B,EAAAg9B,GACA,IAAAp1B,EAAAi1B,GAAA,GAaA,OAZAnlC,EAAAslC,EAAAC,GAAA,SAAAC,EAAAz0C,GACA,IAAAiJ,EAAAsE,EAAAgK,EAAAvX,EAAA,GACAuN,IAEAtE,EAWA,SAAAyrC,eAAAnnC,EAAAknC,GACA,WAAAA,EACA,SACK,YAAAA,EAAA,CACL,IAAAl9B,EAAAhK,EAAAgK,MAAAi8B,GACA,GAAAj8B,EACA,OAAAq8B,EAAAr8B,EAAA,GAAAkO,EAAAuuB,IAjBAU,CAAAnnC,EAAAknC,GAEAlsB,EAAAtf,KACAA,EAAAyW,EAAAi1B,WAAApnC,EAAAknC,IAGAt1B,EAAAs1B,GAAAxrC,KAEAkW,EAgBA,SAAAy1B,gBAAA9wC,EAAA0jB,GAUA,OATAnD,EAAAvgB,KAAA+J,EAAAqmC,KACAA,GAAA,GAEA7vB,EAAAvgB,KAAA+J,EAAAsmC,KACAA,GAAA,GAEA3sB,IACA1jB,EAAA,IAAAgJ,KAAAhJ,EAAA4Q,YAEA5Q,EAGA,SAAA+wC,aAAA9sC,GACA+rC,EAAAnzC,KAAAoH,GAwGA,SAAA+sC,qBAAAC,EAAAC,GAEA3wB,EAAAoB,GAAA,GAKAsvB,EAAA,IACAC,IAAA,GAGA,IAAA9vB,EAAA,GAAA6vB,GAAAC,GAAA,GACA9vB,IACA/F,EAAA81B,QAAA91B,EAAA81B,QAAA,GAAA/vB,GAwBA,SAAAgwB,aAAAC,GACAh2B,EAAAg2B,OAAA,GACA,GAAAA,GAIAN,aAAA,WACA3sB,EAAAzC,EAAA,OAAAtW,EAAAgmC,EAAA,OAcA,SAAAC,mBAAAlsB,GACA,IAAA1Z,EAGAA,EADA3B,EAAAsR,EAAA3P,KACA2P,EAAA3P,IACK3B,EAAAsR,EAAAk2B,OAAA9sB,EAAApJ,EAAAje,OACL,EAEA,EAeA2M,EAAAsR,EAAAm2B,WACApsB,IAAA5K,GACAi3B,kBAAA/lC,GACAA,EAAA,IAEAyY,EAAAxC,EAAA,CAA0B6vB,QAAAn2B,EAAAm2B,UAAuB,UACjDn2B,EAAAm2B,UAIAn2B,EAAAq2B,OAKAhmC,GAAA2P,EAAAq2B,MAGA3nC,EAAAsR,EAAAje,OAEAsO,GAAA2P,EAAAje,MACKie,EAAAzP,OAELF,GAAA2P,EAAAzP,MAGA7B,EAAAsR,EAAAs2B,OAEAjmC,GAAA2P,EAAAs2B,WACAt2B,EAAAs2B,KAwEA,SAAAC,sBAAAxsB,GACA,IAAAQ,EAEAD,EAAAtK,EAAA,SAAApb,EAAAkF,EAAA8e,EAAA/nB,GAIA,GAAAkpB,GAAAlpB,EAEA,OADAylB,EAAAuF,QAAAonB,MACA,EACOpyC,EAAAkpB,KAGPQ,KAAA,IACA3lB,GAAAkF,EACAyqC,EAAAv0B,EAAApb,MAGA2lB,IACAmrB,aAAA,WACA5sB,EAAAxC,EAAAiE,GAAA,OAAAQ,GACAkqB,GACAzoB,EAAAyoB,EAAA1qB,KAGAvK,EAAAk2B,OAEAM,WAAAx2B,EAAAk2B,KAAA3rB,UACAvK,EAAAk2B,OA7FAK,CAAAxsB,GAGA/J,EAAAC,EAAAw2B,MAAA1sB,IAAA1Z,EACAukC,GAAA,EAGA,SAAA4B,WAAAN,EAAA3rB,GACA,IAAAmsB,EAAAC,EAAApsB,EAAA3B,KACA+tB,GAEAjC,EAAAnqB,EAAA,SAAAY,EAAArhB,EAAA8e,EAAA/nB,GACA,YAAAsqB,GAAAzc,EAAA6b,EAAAqsB,SAOAD,EAAA91C,KAGA81C,IAAAx3B,GAAAzQ,EAAA6b,EAAA4rB,WAGAO,EAAAnsB,EAAA4rB,eACA5rB,EAAA4rB,SAEAT,aAAA,WACA,IAAA/sB,EAIAutB,EAAA,EACApsB,EAAAxD,EAAAqwB,EAAA7B,GACO,EAAAoB,IACP,IAAAA,GAEApsB,EAAAxD,EADAqC,EAAA1J,GAGAkL,EAAA7D,EAAAqwB,EAAA7B,EAAAnsB,IAEAja,EAAAgoC,KACAhxB,EAAAY,EAAAowB,GAAAR,GACA5B,EAAAhuB,MAIAiE,EAAAiB,YADAmrB,IAAAx3B,EACAF,EAEA03B,EAAA,EAIA,SAAAP,kBAAA/lC,GAMA2P,EAAAm2B,QAAA,GAAA9lC,EAAA,GAAA2P,EAAAm2B,QACAn2B,EAAAsG,KAAA,EACAyE,EAAA,EA+DA,OApZA4pB,EAAA,GAIA,SAAAkC,aAAAh+B,GACAA,EAAA7L,EAAA6L,GAAA,CAA2BkP,OAAAlP,GAAcA,GAAA,GACzCg8B,KAAAjoC,EAAAiM,EAAA,aAAAjM,EAAAiM,EAAA,QACAi8B,EAAAloC,EAAAiM,EAAA,UACAk8B,EAAAnoC,EAAAiM,EAAA,WACAm8B,EAAApoC,EAAAiM,EAAA,UACAo8B,EAAAroC,EAAAiM,EAAA,UACAq8B,EAAAtoC,EAAAiM,EAAA,SATAg+B,CAAAh+B,GA0XAyN,EAHA0E,GAAArmB,EAGA8wC,gBAAAzqB,GAAA,GAEA/B,IAGA/D,EAAAoB,EAAAyuB,GAEA/nC,EAAArI,GACA2hB,EAjUA,SAAAwwB,gBAAA1oC,GAEAA,IAAA0D,cAIAyO,EAAAX,EAAA1a,IAAA4vC,GAEA,QAAAM,EAAAh9B,EAAAvX,EAAA,EAA+Bu0C,EAAA70B,EAAAM,gBAAAhgB,GAA8BA,IAE7D,GADAuX,EAAAhK,EAAAgK,MAAAg9B,EAAA38B,KACA,CAUA,GAJA8H,EAAAw2B,YAAA3B,EAAAv0C,GAEAmf,EAAAm1B,kBAAA/8B,EAAAg9B,GAEA1mC,EAAAsR,EAAAg3B,WAAA,CACA1wB,EAAAuF,QAAA7L,EAAAg3B,WACA,MAGAtoC,EAAAsR,EAAAi3B,QA6DA,KADAA,EA3DAj3B,EAAAi3B,OA4DAj3B,EAAAg2B,KAAA,GAEAh2B,EAAAg2B,MAAA,GACK,IAAAiB,GAAA,KAAAj3B,EAAAg2B,OAELh2B,EAAAg2B,KAAA,KA9DAh2B,EAAAk3B,KAAAxoC,EAAAsR,EAAA41B,UACAD,qBAAA31B,EAAA41B,OAAA51B,EAAA61B,UAGAnnC,EAAAsR,EAAAje,QAAAqnB,EAAApJ,EAAA4I,QAgFAla,EAAAsR,EAAA42B,OAEA52B,EAAA4I,KAAAxJ,EACK1Q,EAAAsR,EAAAm2B,WAELn2B,EAAA4I,KAAA1J,IAhFAxQ,EAAAsR,EAAA3P,MAAA+Y,EAAApJ,EAAA4I,QAoFAvY,EAlFA2P,EAAA3P,IAmFA3B,EAAAsR,EAAAm2B,SAEAC,kBAAA/lC,GACK3B,EAAAsR,EAAA42B,SAEL52B,EAAAsG,KAAAtG,EAAA3P,MArFA2P,EAAAm3B,QAEApB,aAAA/1B,EAAAm3B,QAGAzoC,EAAAsR,EAAAs2B,OAEAt2B,EAAAs2B,IA+FAhC,EAAAhuB,GACA8C,EAAApJ,EAAA4I,QACA5I,EAAA4I,KAAA3J,EACAe,EAAA3P,IAAA2P,EAAAs2B,WACAt2B,EAAAs2B,MAhGA5nC,EAAAsR,EAAA4I,OAEAqtB,mBAAAj2B,EAAA4I,MAGA5I,EAAAk2B,MAEAM,WAAAx2B,EAAAk2B,KAAAl2B,GAGA,MA2DA,IAAA3P,EArCA4mC,EAHA,OAfAj3B,EASK40B,EACL9rB,EAAAxC,EAAAtG,GAAA,KAEA8I,EAAAxC,EAAAtG,GAAA,IAAA60B,EAAA9pB,EAAAC,IATA1E,EAAA,IAAA3Y,KAAAS,GACA2mC,GAAAlsB,EAAAvC,IAGAA,EAAAuF,QAAAvF,EAAA/Q,UAAA0W,EAAA3F,GAAA8tB,IAhFA,SAAAgD,gBACAtnC,EAAA6kC,EAAA,SAAA/rC,GACAA,EAAAhH,SAqFAw1C,GACA9wB,EA+OAwwB,CAAAnyC,GACG2a,EAAA3a,GACH2hB,EAAAmvB,gBAAA9wC,EAAAuwC,GAAA7uB,GACG1X,EAAAhK,IACHqb,EAAAyM,EAAA9nB,GACAmkB,EAAAxC,EAAAtG,GAAA,KACGjG,EAAApV,IAAA,OAAAA,IACH2hB,EAAAuF,QAAAlnB,GAQAugB,EAAAoB,IAAA0uB,GACA,CACAh1B,MACAsG,uCCrcA,IAAAI,EAAAxkB,EAAA,IACAgnB,EAAAhnB,EAAA,IACAknB,EAAAlnB,EAAA,IAEAkd,EAAA8J,EAAA9J,WAcA3e,EAAAD,QAZA,SAAA6pB,qBAAAzhB,EAAA8f,EAAA8B,GACAA,KAAA,EACApB,EAAAV,KACAA,EAAAtJ,GAEA,QAAA7P,EAAAmZ,EAA8B8B,GAAAjb,IAC9B,IAAA3G,EAAA8d,EAAAnX,MADiDA,qCCPjD9O,EAAAD,QAJA,SAAAmO,aAAA1H,EAAAvD,GACA,QAAAuD,GAAA,YAAAvD,UAAAuD,kCCDAxG,EAAAD,QAAA,CACA4yC,sBAAA,EACAC,2BAAA,iCCFA,IAAAgE,EAAAn1C,EAAA,KACAsqB,EAAAtqB,EAAA,IACAuqB,EAAAvqB,EAAA,IAMAzB,EAAAD,QAJA,SAAA82C,kBAAAC,GACA,OAAA/qB,EAAAC,EAAA4qB,GAAAE,mBCPA/2C,EAAAgY,OAoTA,SAAAg/B,iBAAAppC,GACA,OAAAA,EAAAyC,QAAA,6BAAAnM,GACA,OAAA+yC,EAAA/yC,SATA,IA3SA,IAAAgzC,EAAA,CACA,CACAlnC,KAAA,IACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,qCACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,OACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,MACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,WACG,CACHnnC,KAAA,IACAmnC,MAAA,gBACG,CACHnnC,KAAA,IACAmnC,MAAA,iBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,MACG,CACHnnC,KAAA,KACAmnC,MAAA,MACG,CACHnnC,KAAA,IACAmnC,MAAA,mCACG,CACHnnC,KAAA,IACAmnC,MAAA,UACG,CACHnnC,KAAA,IACAmnC,MAAA,mBACG,CACHnnC,KAAA,IACAmnC,MAAA,iBACG,CACHnnC,KAAA,IACAmnC,MAAA,uBACG,CACHnnC,KAAA,IACAmnC,MAAA,SACG,CACHnnC,KAAA,IACAmnC,MAAA,iBACG,CACHnnC,KAAA,IACAmnC,MAAA,qBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,YACG,CACHnnC,KAAA,IACAmnC,MAAA,oBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,8CACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,aACG,CACHnnC,KAAA,IACAmnC,MAAA,SACG,CACHnnC,KAAA,IACAmnC,MAAA,oBACG,CACHnnC,KAAA,IACAmnC,MAAA,oBACG,CACHnnC,KAAA,IACAmnC,MAAA,kBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,qCACG,CACHnnC,KAAA,IACAmnC,MAAA,WACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,aACG,CACHnnC,KAAA,IACAmnC,MAAA,QACG,CACHnnC,KAAA,IACAmnC,MAAA,kBACG,CACHnnC,KAAA,IACAmnC,MAAA,iBACG,CACHnnC,KAAA,IACAmnC,MAAA,uCACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,OACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,MACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,aACG,CACHnnC,KAAA,IACAmnC,MAAA,gBACG,CACHnnC,KAAA,IACAmnC,MAAA,oBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,MACG,CACHnnC,KAAA,IACAmnC,MAAA,iCACG,CACHnnC,KAAA,IACAmnC,MAAA,QACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,MACAmnC,MAAA,KACG,CACHnnC,KAAA,MACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,kBACG,CACHnnC,KAAA,IACAmnC,MAAA,kBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,uBACG,CACHnnC,KAAA,IACAmnC,MAAA,SACG,CACHnnC,KAAA,IACAmnC,MAAA,iBACG,CACHnnC,KAAA,IACAmnC,MAAA,uBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,WACG,CACHnnC,KAAA,IACAmnC,MAAA,sBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,+CACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,cACG,CACHnnC,KAAA,IACAmnC,MAAA,SACG,CACHnnC,KAAA,IACAmnC,MAAA,oBACG,CACHnnC,KAAA,IACAmnC,MAAA,qBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,mBACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,qCACG,CACHnnC,KAAA,IACAmnC,MAAA,WACG,CACHnnC,KAAA,KACAmnC,MAAA,KACG,CACHnnC,KAAA,IACAmnC,MAAA,cACG,CACHnnC,KAAA,IACAmnC,MAAA,QACG,CACHnnC,KAAA,IACAmnC,MAAA,mBACG,CACHnnC,KAAA,IACAmnC,MAAA,kBAIAF,EAAA,GACA52C,EAAA,EAAeA,EAAA62C,EAAAp2C,OAA4BT,GAAA,EAE3C,IADA,IAAA82C,EAAAD,EAAA72C,GAAA82C,MACA7b,EAAA,EAAiB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A,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KACAA,EAAA,KAGAA,EAAA,KACAA,EAAA,KAEAzB,EAAAD,QAAA0B,EAAA","file":"tablefilter.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1]\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\t\tvar script = document.createElement('script');\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120000;\n\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = __webpack_require__.p + \"tf-\" + ({}[chunkId]||chunkId) + \"-\" + {\"0\":\"9d01916cb7bd885f9f23\"}[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 = 127);\n","/*\n * Sugar v2.0.6\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 var globalContext = getGlobal();\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 // istanbul ignore next\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 getGlobal() {\n // Get global context by keyword here to avoid issues with libraries\n // that can potentially alter this script's context object.\n return testGlobal(typeof global !== 'undefined' && global) ||\n testGlobal(typeof window !== 'undefined' && window);\n }\n\n function testGlobal(obj) {\n // Note that Rhino uses a different \"global\" keyword so perform an\n // extra check here to ensure that it's actually the global object.\n return obj && obj.Object === Object ? obj : null;\n }\n\n function setupGlobal() {\n Sugar = globalContext[SUGAR_GLOBAL];\n // istanbul ignore if\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 // istanbul ignore else\n if (typeof module !== 'undefined' && module.exports) {\n // Node or webpack environment\n module.exports = Sugar;\n } else {\n // Unwrapped browser environment\n try {\n globalContext[SUGAR_GLOBAL] = Sugar;\n } catch (e) {\n // Contexts such as QML have a read-only global context.\n }\n }\n forEachProperty(NATIVE_NAMES.split(' '), function(name) {\n createNamespace(name);\n });\n setGlobalProperties();\n }\n\n /***\n * @method createNamespace(name)\n * @returns SugarNamespace\n * @namespace Sugar\n * @short Creates a new Sugar namespace.\n * @extra This method is for plugin developers who want to define methods to be\n * used with natives that Sugar does not handle by default. The new\n * namespace will appear on the `Sugar` global with all the methods of\n * normal namespaces, including the ability to define new methods. When\n * extended, any defined methods will be mapped to `name` in the global\n * context.\n *\n * @example\n *\n * Sugar.createNamespace('Boolean');\n *\n * @param {string} name - The namespace name.\n *\n ***/\n function createNamespace(name) {\n\n // Is the current namespace Object?\n var isObject = name === 'Object';\n\n // A Sugar namespace is also a chainable class: Sugar.Array, etc.\n var sugarNamespace = getNewChainableClass(name, true);\n\n /***\n * @method extend([opts])\n * @returns Sugar\n * @namespace Sugar\n * @short Extends Sugar defined methods onto natives.\n * @extra This method can be called on individual namespaces like\n * `Sugar.Array` or on the `Sugar` global itself, in which case\n * [opts] will be forwarded to each `extend` call. For more,\n * see `extending`.\n *\n * @options\n *\n * methods An array of method names to explicitly extend.\n *\n * except An array of method names or global namespaces (`Array`,\n * `String`) to explicitly exclude. Namespaces should be the\n * actual global objects, not strings.\n *\n * namespaces An array of global namespaces (`Array`, `String`) to\n * explicitly extend. Namespaces should be the actual\n * global objects, not strings.\n *\n * enhance A shortcut to disallow all \"enhance\" flags at once\n * (flags listed below). For more, see `enhanced methods`.\n * Default is `true`.\n *\n * enhanceString A boolean allowing String enhancements. Default is `true`.\n *\n * enhanceArray A boolean allowing Array enhancements. Default is `true`.\n *\n * objectPrototype A boolean allowing Sugar to extend Object.prototype\n * with instance methods. This option is off by default\n * and should generally not be used except with caution.\n * For more, see `object methods`.\n *\n * @example\n *\n * Sugar.Array.extend();\n * Sugar.extend();\n *\n * @option {Array} [methods]\n * @option {Array} [except]\n * @option {Array} [namespaces]\n * @option {boolean} [enhance]\n * @option {boolean} [enhanceString]\n * @option {boolean} [enhanceArray]\n * @option {boolean} [objectPrototype]\n * @param {ExtendOptions} [opts]\n *\n ***\n * @method extend([opts])\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Extends Sugar defined methods for a specific namespace onto natives.\n * @param {ExtendOptions} [opts]\n *\n ***/\n var extend = function (opts) {\n\n var nativeClass = globalContext[name], nativeProto = nativeClass.prototype;\n var staticMethods = {}, instanceMethods = {}, methodsByName;\n\n function objectRestricted(name, target) {\n return isObject && target === nativeProto &&\n (!allowObjectPrototype || name === 'get' || name === 'set');\n }\n\n function arrayOptionExists(field, val) {\n var arr = opts[field];\n if (arr) {\n for (var i = 0, el; el = arr[i]; i++) {\n if (el === val) {\n return true;\n }\n }\n }\n return false;\n }\n\n function arrayOptionExcludes(field, val) {\n return opts[field] && !arrayOptionExists(field, val);\n }\n\n function disallowedByFlags(methodName, target, flags) {\n // Disallowing methods by flag currently only applies if methods already\n // exist to avoid enhancing native methods, as aliases should still be\n // extended (i.e. Array#all should still be extended even if Array#every\n // is being disallowed by a flag).\n if (!target[methodName] || !flags) {\n return false;\n }\n for (var i = 0; i < flags.length; i++) {\n if (opts[flags[i]] === false) {\n return true;\n }\n }\n }\n\n function namespaceIsExcepted() {\n return arrayOptionExists('except', nativeClass) ||\n arrayOptionExcludes('namespaces', nativeClass);\n }\n\n function methodIsExcepted(methodName) {\n return arrayOptionExists('except', methodName);\n }\n\n function canExtend(methodName, method, target) {\n return !objectRestricted(methodName, target) &&\n !disallowedByFlags(methodName, target, method.flags) &&\n !methodIsExcepted(methodName);\n }\n\n opts = opts || {};\n methodsByName = opts.methods;\n\n if (namespaceIsExcepted()) {\n return;\n } else if (isObject && typeof opts.objectPrototype === 'boolean') {\n // Store \"objectPrototype\" flag for future reference.\n allowObjectPrototype = opts.objectPrototype;\n }\n\n forEachProperty(methodsByName || sugarNamespace, function(method, methodName) {\n if (methodsByName) {\n // If we have method names passed in an array,\n // then we need to flip the key and value here\n // and find the method in the Sugar namespace.\n methodName = method;\n method = sugarNamespace[methodName];\n }\n if (hasOwn(method, 'instance') && canExtend(methodName, method, nativeProto)) {\n instanceMethods[methodName] = method.instance;\n }\n if(hasOwn(method, 'static') && canExtend(methodName, method, nativeClass)) {\n staticMethods[methodName] = method;\n }\n });\n\n // Accessing the extend target each time instead of holding a reference as\n // it may have been overwritten (for example Date by Sinon). Also need to\n // access through the global to allow extension of user-defined namespaces.\n extendNative(nativeClass, staticMethods);\n extendNative(nativeProto, instanceMethods);\n\n if (!methodsByName) {\n // If there are no method names passed, then\n // all methods in the namespace will be extended\n // to the native. This includes all future defined\n // methods, so add a flag here to check later.\n setProperty(sugarNamespace, 'active', true);\n }\n return sugarNamespace;\n };\n\n function defineWithOptionCollect(methodName, instance, args) {\n setProperty(sugarNamespace, methodName, function(arg1, arg2, arg3) {\n var opts = collectDefineOptions(arg1, arg2, arg3);\n defineMethods(sugarNamespace, opts.methods, instance, args, opts.last);\n return sugarNamespace;\n });\n }\n\n /***\n * @method defineStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods on the namespace that can later be extended\n * onto the native globals.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. If `extend` was previously called\n * with no arguments, the method will be immediately mapped to its\n * native when defined.\n *\n * @example\n *\n * Sugar.Number.defineStatic({\n * isOdd: function (num) {\n * return num % 2 === 1;\n * }\n * });\n *\n * @signature defineStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStatic', STATIC);\n\n /***\n * @method defineInstance(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines methods on the namespace that can later be extended as\n * instance methods onto the native prototype.\n * @extra Accepts either a single object mapping names to functions, or name\n * and function as two arguments. All functions should accept the\n * native for which they are mapped as their first argument, and should\n * never refer to `this`. If `extend` was previously called with no\n * arguments, the method will be immediately mapped to its native when\n * defined.\n *\n * Methods cannot accept more than 4 arguments in addition to the\n * native (5 arguments total). Any additional arguments will not be\n * mapped. If the method needs to accept unlimited arguments, use\n * `defineInstanceWithArguments`. Otherwise if more options are\n * required, use an options object instead.\n *\n * @example\n *\n * Sugar.Number.defineInstance({\n * square: function (num) {\n * return num * num;\n * }\n * });\n *\n * @signature defineInstance(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstance', INSTANCE);\n\n /***\n * @method defineInstanceAndStatic(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short A shortcut to define both static and instance methods on the namespace.\n * @extra This method is intended for use with `Object` instance methods. Sugar\n * will not map any methods to `Object.prototype` by default, so defining\n * instance methods as static helps facilitate their proper use.\n *\n * @example\n *\n * Sugar.Object.defineInstanceAndStatic({\n * isAwesome: function (obj) {\n * // check if obj is awesome!\n * }\n * });\n *\n * @signature defineInstanceAndStatic(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceAndStatic', INSTANCE | STATIC);\n\n\n /***\n * @method defineStaticWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that collect arguments.\n * @extra This method is identical to `defineStatic`, except that when defined\n * methods are called, they will collect any arguments past `n - 1`,\n * where `n` is the number of arguments that the method accepts.\n * Collected arguments will be passed to the method in an array\n * as the last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineStaticWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineStaticWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineStaticWithArguments', STATIC, true);\n\n /***\n * @method defineInstanceWithArguments(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines instance methods that collect arguments.\n * @extra This method is identical to `defineInstance`, except that when\n * defined methods are called, they will collect any arguments past\n * `n - 1`, where `n` is the number of arguments that the method\n * accepts. Collected arguments will be passed to the method as the\n * last argument defined on the function.\n *\n * @example\n *\n * Sugar.Number.defineInstanceWithArguments({\n * addAll: function (num, args) {\n * for (var i = 0; i < args.length; i++) {\n * num += args[i];\n * }\n * return num;\n * }\n * });\n *\n * @signature defineInstanceWithArguments(methodName, methodFn)\n * @param {Object} methods - Methods to be defined.\n * @param {string} methodName - Name of a single method to be defined.\n * @param {Function} methodFn - Function body of a single method to be defined.\n ***/\n defineWithOptionCollect('defineInstanceWithArguments', INSTANCE, true);\n\n /***\n * @method defineStaticPolyfill(methods)\n * @returns SugarNamespace\n * @namespace SugarNamespace\n * @short Defines static methods that are mapped onto the native if they do\n * not already exist.\n * @extra Intended only for use creating polyfills that follow the ECMAScript\n * spec. Accepts either a single object mapping names to functions, or\n * name and function as two arguments. Note that polyfill methods will\n * be immediately mapped onto their native prototype regardless of the\n * use of `extend`.\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. Note that polyfill methods will be immediately mapped onto\n * their native prototype regardless of the use of `extend`.\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, 'VERSION', '2.0.6');\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;\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 return new sugarNamespace(raw)[methodName].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 // istanbul ignore next\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 /***\n * @module Common\n * @description Internal utility and common methods.\n ***/\n\n // Flag allowing native methods to be enhanced.\n var ENHANCEMENTS_FLAG = 'enhance';\n\n // For type checking, etc. Excludes object as this is more nuanced.\n var NATIVE_TYPES = 'Boolean Number String Date RegExp Function Array Error Set Map';\n\n // Do strings have no keys?\n var NO_KEYS_IN_STRING_OBJECTS = !('0' in Object('a'));\n\n // Prefix for private properties.\n var PRIVATE_PROP_PREFIX = '_sugar_';\n\n // Matches 1..2 style ranges in properties.\n var PROPERTY_RANGE_REG = /^(.*?)\\[([-\\d]*)\\.\\.([-\\d]*)\\](.*)$/;\n\n // WhiteSpace/LineTerminator as defined in ES5.1 plus Unicode characters in the Space, Separator category.\n var TRIM_CHARS = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u2028\\u2029\\u3000\\uFEFF';\n\n // Regex for matching a formatted string.\n var STRING_FORMAT_REG = /([{}])\\1|{([^}]*)}|(%)%|(%(\\w*))/g;\n\n // Common chars\n var 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\n // Namespace aliases\n var 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\n // Class checks\n var isSerializable,\n isBoolean, isNumber, isString,\n isDate, isRegExp, isFunction,\n isArray, isSet, isMap, isError;\n\n function 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 // istanbul ignore next\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 // istanbul ignore if\n if (globalObject && isClass(new globalObject, 'Object')) {\n return getConstructorClassCheck(globalObject);\n } else {\n return getToStringClassCheck(className);\n }\n }\n\n // Map and Set may be [object Object] in certain IE environments.\n // In this case we need to perform a check using the constructor\n // instead of Object.prototype.toString.\n // istanbul ignore next\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 return isKnownType(className) || isPlainObject(obj, className);\n };\n\n }\n\n function isClass(obj, className, str) {\n if (!str) {\n str = classToString(obj);\n }\n return str === '[object '+ className +']';\n }\n\n // Wrapping the core's \"define\" methods to\n // save a few bytes in the minified script.\n function wrapNamespace(method) {\n return function(sugarNamespace, arg1, arg2) {\n sugarNamespace[method](arg1, arg2);\n };\n }\n\n // Method define aliases\n var 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\n function defineInstanceSimilar(sugarNamespace, set, fn, flags) {\n defineInstance(sugarNamespace, collectSimilarMethods(set, fn), flags);\n }\n\n function defineInstanceAndStaticSimilar(sugarNamespace, set, fn, flags) {\n defineInstanceAndStatic(sugarNamespace, collectSimilarMethods(set, fn), flags);\n }\n\n function 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\n // This song and dance is to fix methods to a different length\n // from what they actually accept in order to stay in line with\n // spec. Additionally passing argument length, as some methods\n // throw assertion errors based on this (undefined check is not\n // enough). Fortunately for now spec is such that passing 3\n // actual arguments covers all requirements. Note that passing\n // the argument length also forces the compiler to not rewrite\n // length of the compiled function.\n function fixArgumentLength(fn) {\n var staticFn = function(a) {\n var args = arguments;\n return fn(a, args[1], args[2], args.length - 1);\n };\n staticFn.instance = function(b) {\n var args = arguments;\n return fn(this, b, args[1], args.length);\n };\n return staticFn;\n }\n\n function defineAccessor(namespace, name, fn) {\n setProperty(namespace, name, fn);\n }\n\n function 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\n // For methods defined directly on the prototype like Range\n function defineOnPrototype(ctor, methods) {\n var proto = ctor.prototype;\n forEachProperty(methods, function(val, key) {\n proto[key] = val;\n });\n }\n\n // Argument helpers\n\n function assertArgument(exists) {\n if (!exists) {\n throw new TypeError('Argument required');\n }\n }\n\n function assertCallable(obj) {\n if (!isFunction(obj)) {\n throw new TypeError('Function is not callable');\n }\n }\n\n function assertArray(obj) {\n if (!isArray(obj)) {\n throw new TypeError('Array required');\n }\n }\n\n function assertWritable(obj) {\n if (isPrimitive(obj)) {\n // If strict mode is active then primitives will throw an\n // error when attempting to write properties. We can't be\n // sure if strict mode is available, so pre-emptively\n // throw an error here to ensure consistent behavior.\n throw new TypeError('Property cannot be written');\n }\n }\n\n // Coerces an object to a positive integer.\n // Does not allow Infinity.\n function coercePositiveInteger(n) {\n n = +n || 0;\n if (n < 0 || !isNumber(n) || !isFinite(n)) {\n throw new RangeError('Invalid number');\n }\n return trunc(n);\n }\n\n\n // General helpers\n\n function isDefined(o) {\n return o !== undefined;\n }\n\n function isUndefined(o) {\n return o === undefined;\n }\n\n function 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\n function setChainableConstructor(sugarNamespace, createFn) {\n sugarNamespace.prototype.constructor = function() {\n return createFn.apply(this, arguments);\n };\n }\n\n // Fuzzy matching helpers\n\n function getMatcher(f) {\n if (!isPrimitive(f)) {\n var className = classToString(f);\n if (isRegExp(f, className)) {\n return regexMatcher(f);\n } else if (isDate(f, className)) {\n return dateMatcher(f);\n } else if (isFunction(f, className)) {\n return functionMatcher(f);\n } else if (isPlainObject(f, className)) {\n return fuzzyMatcher(f);\n }\n }\n // Default is standard isEqual\n return defaultMatcher(f);\n }\n\n function fuzzyMatcher(obj) {\n var matchers = {};\n return function(el, i, arr) {\n var matched = true;\n if (!isObjectType(el)) {\n return false;\n }\n forEachProperty(obj, function(val, key) {\n matchers[key] = getOwn(matchers, key) || getMatcher(val);\n if (matchers[key].call(arr, el[key], i, arr) === false) {\n matched = false;\n }\n return matched;\n });\n return matched;\n };\n }\n\n function defaultMatcher(f) {\n return function(el) {\n return isEqual(el, f);\n };\n }\n\n function regexMatcher(reg) {\n reg = RegExp(reg);\n return function(el) {\n return reg.test(el);\n };\n }\n\n function dateMatcher(d) {\n var ms = d.getTime();\n return function(el) {\n return !!(el && el.getTime) && el.getTime() === ms;\n };\n }\n\n function functionMatcher(fn) {\n return function(el, i, arr) {\n // Return true up front if match by reference\n return el === fn || fn.call(arr, el, i, arr);\n };\n }\n\n // Object helpers\n\n function getKeys(obj) {\n return Object.keys(obj);\n }\n\n function deepHasProperty(obj, key, any) {\n return handleDeepProperty(obj, key, any, true);\n }\n\n function deepGetProperty(obj, key, any) {\n return handleDeepProperty(obj, key, any, false);\n }\n\n function deepSetProperty(obj, key, val) {\n handleDeepProperty(obj, key, false, false, true, false, val);\n return obj;\n }\n\n function handleDeepProperty(obj, key, any, has, fill, fillLast, val) {\n var ns, bs, ps, cbi, set, isLast, isPush, isIndex, nextIsIndex, exists;\n ns = obj;\n if (key == null) return;\n\n if (isObjectType(key)) {\n // Allow array and array-like accessors\n bs = [key];\n } else {\n key = String(key);\n if (key.indexOf('..') !== -1) {\n return handleArrayIndexRange(obj, key, any, val);\n }\n bs = key.split('[');\n }\n\n set = isDefined(val);\n\n for (var i = 0, blen = bs.length; i < blen; i++) {\n ps = bs[i];\n\n if (isString(ps)) {\n ps = periodSplit(ps);\n }\n\n for (var j = 0, plen = ps.length; j < plen; j++) {\n key = ps[j];\n\n // Is this the last key?\n isLast = i === blen - 1 && j === plen - 1;\n\n // Index of the closing ]\n cbi = key.indexOf(']');\n\n // Is the key an array index?\n isIndex = cbi !== -1;\n\n // Is this array push syntax \"[]\"?\n isPush = set && cbi === 0;\n\n // If the bracket split was successful and this is the last element\n // in the dot split, then we know the next key will be an array index.\n nextIsIndex = blen > 1 && j === plen - 1;\n\n if (isPush) {\n // Set the index to the end of the array\n key = ns.length;\n } else if (isIndex) {\n // Remove the closing ]\n key = key.slice(0, -1);\n }\n\n // If the array index is less than 0, then\n // add its length to allow negative indexes.\n if (isIndex && key < 0) {\n key = +key + ns.length;\n }\n\n // Bracket keys may look like users[5] or just [5], so the leading\n // characters are optional. We can enter the namespace if this is the\n // 2nd part, if there is only 1 part, or if there is an explicit key.\n if (i || key || blen === 1) {\n\n // TODO: need to be sure this check handles ''.length when\n // we refactor.\n exists = any ? key in Object(ns) : hasOwn(ns, key);\n\n // Non-existent namespaces are only filled if they are intermediate\n // (not at the end) or explicitly filling the last.\n if (fill && (!isLast || fillLast) && !exists) {\n // For our purposes, last only needs to be an array.\n ns = ns[key] = nextIsIndex || (fillLast && isLast) ? [] : {};\n continue;\n }\n\n if (has) {\n if (isLast || !exists) {\n return exists;\n }\n } else if (set && isLast) {\n assertWritable(ns);\n ns[key] = val;\n }\n\n ns = exists ? ns[key] : undefined;\n }\n\n }\n }\n return ns;\n }\n\n // Get object property with support for 0..1 style range notation.\n function handleArrayIndexRange(obj, key, any, val) {\n var match, start, end, leading, trailing, arr, set;\n match = key.match(PROPERTY_RANGE_REG);\n if (!match) {\n return;\n }\n\n set = isDefined(val);\n leading = match[1];\n\n if (leading) {\n arr = handleDeepProperty(obj, leading, any, false, set ? true : false, true);\n } else {\n arr = obj;\n }\n\n assertArray(arr);\n\n trailing = match[4];\n start = match[2] ? +match[2] : 0;\n end = match[3] ? +match[3] : arr.length;\n\n // A range of 0..1 is inclusive, so we need to add 1 to the end. If this\n // pushes the index from -1 to 0, then set it to the full length of the\n // array, otherwise it will return nothing.\n end = end === -1 ? arr.length : end + 1;\n\n if (set) {\n for (var i = start; i < end; i++) {\n handleDeepProperty(arr, i + trailing, any, false, true, false, val);\n }\n } else {\n arr = arr.slice(start, end);\n\n // If there are trailing properties, then they need to be mapped for each\n // element in the array.\n if (trailing) {\n if (trailing.charAt(0) === HALF_WIDTH_PERIOD) {\n // Need to chomp the period if one is trailing after the range. We\n // can't do this at the regex level because it will be required if\n // we're setting the value as it needs to be concatentated together\n // with the array index to be set.\n trailing = trailing.slice(1);\n }\n return map(arr, function(el) {\n return handleDeepProperty(el, trailing);\n });\n }\n }\n return arr;\n }\n\n function getOwnKey(obj, key) {\n if (hasOwn(obj, key)) {\n return key;\n }\n }\n\n function hasProperty(obj, prop) {\n return !isPrimitive(obj) && prop in obj;\n }\n\n function isObjectType(obj, type) {\n return !!obj && (type || typeof obj) === 'object';\n }\n\n function isPrimitive(obj, type) {\n type = type || typeof obj;\n return obj == null || type === 'string' || type === 'number' || type === 'boolean';\n }\n\n function isPlainObject(obj, className) {\n return isObjectType(obj) &&\n isClass(obj, 'Object', className) &&\n hasValidPlainObjectPrototype(obj) &&\n hasOwnEnumeratedProperties(obj);\n }\n\n function 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\n function 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\n function simpleRepeat(n, fn) {\n for (var i = 0; i < n; i++) {\n fn(i);\n }\n }\n\n function simpleClone(obj) {\n return simpleMerge({}, obj);\n }\n\n // TODO: Use Object.assign here going forward.\n function simpleMerge(target, source) {\n forEachProperty(source, function(val, key) {\n target[key] = val;\n });\n return target;\n }\n\n // Make primtives types like strings into objects.\n function coercePrimitiveToObject(obj) {\n if (isPrimitive(obj)) {\n obj = Object(obj);\n }\n // istanbul ignore next\n if (NO_KEYS_IN_STRING_OBJECTS && isString(obj)) {\n forceStringCoercion(obj);\n }\n return obj;\n }\n\n // Force strings to have their indexes set in\n // environments that don't do this automatically.\n // istanbul ignore next\n function forceStringCoercion(obj) {\n var i = 0, chr;\n while (chr = obj.charAt(i)) {\n obj[i++] = chr;\n }\n }\n\n // Equality helpers\n\n // Perf\n function isEqual(a, b, stack) {\n var aClass, bClass;\n if (a === b) {\n // Return quickly up front when matched by reference,\n // but be careful about 0 !== -0.\n return a !== 0 || 1 / a === 1 / b;\n }\n aClass = classToString(a);\n bClass = classToString(b);\n if (aClass !== bClass) {\n return false;\n }\n\n if (isSerializable(a, aClass) && isSerializable(b, bClass)) {\n return objectIsEqual(a, b, aClass, stack);\n } else if (isSet(a, aClass) && isSet(b, bClass)) {\n return a.size === b.size && isEqual(setToArray(a), setToArray(b), stack);\n } else if (isMap(a, aClass) && isMap(b, bClass)) {\n return a.size === b.size && isEqual(mapToArray(a), mapToArray(b), stack);\n } else if (isError(a, aClass) && isError(b, bClass)) {\n return a.toString() === b.toString();\n }\n\n return false;\n }\n\n // Perf\n function objectIsEqual(a, b, aClass, stack) {\n var aType = typeof a, bType = typeof b, propsEqual, count;\n if (aType !== bType) {\n return false;\n }\n if (isObjectType(a.valueOf())) {\n if (a.length !== b.length) {\n // perf: Quickly returning up front for arrays.\n return false;\n }\n count = 0;\n propsEqual = true;\n iterateWithCyclicCheck(a, false, stack, function(key, val, cyc, stack) {\n if (!cyc && (!(key in b) || !isEqual(val, b[key], stack))) {\n propsEqual = false;\n }\n count++;\n return propsEqual;\n });\n if (!propsEqual || count !== getKeys(b).length) {\n return false;\n }\n }\n // Stringifying the value handles NaN, wrapped primitives, dates, and errors in one go.\n return a.valueOf().toString() === b.valueOf().toString();\n }\n\n // Serializes an object in a way that will provide a token unique\n // to the type, class, and value of an object. Host objects, class\n // instances etc, are not serializable, and are held in an array\n // of references that will return the index as a unique identifier\n // for the object. This array is passed from outside so that the\n // calling function can decide when to dispose of this array.\n function serializeInternal(obj, refs, stack) {\n var type = typeof obj, sign = '', className, value, ref;\n\n // Return up front on\n if (1 / obj === -Infinity) {\n sign = '-';\n }\n\n // Return quickly for primitives to save cycles\n if (isPrimitive(obj, type) && !isRealNaN(obj)) {\n return type + sign + obj;\n }\n\n className = classToString(obj);\n\n if (!isSerializable(obj, className)) {\n ref = indexOf(refs, obj);\n if (ref === -1) {\n ref = refs.length;\n refs.push(obj);\n }\n return ref;\n } else if (isObjectType(obj)) {\n value = serializeDeep(obj, refs, stack) + obj.toString();\n } else if (obj.valueOf) {\n value = obj.valueOf();\n }\n return type + className + sign + value;\n }\n\n function serializeDeep(obj, refs, stack) {\n var result = '';\n iterateWithCyclicCheck(obj, true, stack, function(key, val, cyc, stack) {\n result += cyc ? 'CYC' : key + serializeInternal(val, refs, stack);\n });\n return result;\n }\n\n function iterateWithCyclicCheck(obj, sortedKeys, stack, fn) {\n\n function next(val, key) {\n var cyc = false;\n\n // Allowing a step into the structure before triggering this check to save\n // cycles on standard JSON structures and also to try as hard as possible to\n // catch basic properties that may have been modified.\n if (stack.length > 1) {\n var i = stack.length;\n while (i--) {\n if (stack[i] === val) {\n cyc = true;\n }\n }\n }\n\n stack.push(val);\n fn(key, val, cyc, stack);\n stack.pop();\n }\n\n function iterateWithSortedKeys() {\n // Sorted keys is required for serialization, where object order\n // does not matter but stringified order does.\n var arr = getKeys(obj).sort(), key;\n for (var i = 0; i < arr.length; i++) {\n key = arr[i];\n next(obj[key], arr[i]);\n }\n }\n\n // This method for checking for cyclic structures was egregiously stolen from\n // the ingenious method by @kitcambridge from the Underscore script:\n // https://github.com/documentcloud/underscore/issues/240\n if (!stack) {\n stack = [];\n }\n\n if (sortedKeys) {\n iterateWithSortedKeys();\n } else {\n forEachProperty(obj, next);\n }\n }\n\n\n // Array helpers\n\n function isArrayIndex(n) {\n return n >>> 0 == n && n != 0xFFFFFFFF;\n }\n\n function 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\n // It's unclear whether or not sparse arrays qualify as \"simple enumerables\".\n // If they are not, however, the wrapping function will be deoptimized, so\n // isolate here (also to share between es5 and array modules).\n function getSparseArrayIndexes(arr, fromIndex, loop, fromRight) {\n var indexes = [], i;\n for (i in arr) {\n // istanbul ignore next\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 // This block cannot be reached unless ES5 methods are being shimmed.\n // istanbul ignore if\n if (aLoop !== bLoop) {\n return aLoop ? -1 : 1;\n }\n return a - b;\n });\n return indexes;\n }\n\n function getEntriesForIndexes(obj, find, loop, isString) {\n var result, length = obj.length;\n if (!isArray(find)) {\n return entryAtIndex(obj, find, length, loop, isString);\n }\n result = new Array(find.length);\n forEach(find, function(index, i) {\n result[i] = entryAtIndex(obj, index, length, loop, isString);\n });\n return result;\n }\n\n function getNormalizedIndex(index, length, loop) {\n if (index && loop) {\n index = index % length;\n }\n if (index < 0) index = length + index;\n return index;\n }\n\n function entryAtIndex(obj, index, length, loop, isString) {\n index = getNormalizedIndex(index, length, loop);\n return isString ? obj.charAt(index) : obj[index];\n }\n\n function mapWithShortcuts(el, f, context, mapArgs) {\n if (!f) {\n return el;\n } else if (f.apply) {\n return f.apply(context, mapArgs);\n } else if (isArray(f)) {\n return map(f, function(m) {\n return mapWithShortcuts(el, m, context, mapArgs);\n });\n } else if (isFunction(el[f])) {\n return el[f].call(el);\n } else {\n return deepGetProperty(el, f, true);\n }\n }\n\n function spaceSplit(str) {\n return str.split(' ');\n }\n\n function commaSplit(str) {\n return str.split(HALF_WIDTH_COMMA);\n }\n\n function periodSplit(str) {\n return str.split(HALF_WIDTH_PERIOD);\n }\n\n function 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\n function 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\n function 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\n function indexOf(arr, el) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (i in arr && arr[i] === el) return i;\n }\n return -1;\n }\n\n // Number helpers\n\n // istanbul ignore next\n var trunc = Math.trunc || function(n) {\n if (n === 0 || !isFinite(n)) return n;\n return n < 0 ? ceil(n) : floor(n);\n };\n\n function isRealNaN(obj) {\n // This is only true of NaN\n return obj != null && obj !== obj;\n }\n\n function 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\n function 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\n function 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\n // Fullwidth number helpers\n var fullWidthNumberReg, fullWidthNumberMap, fullWidthNumbers;\n\n function 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\n // Takes into account full-width characters, commas, and decimals.\n function stringToNumber(str, base) {\n var sanitized, isDecimal;\n sanitized = str.replace(fullWidthNumberReg, function(chr) {\n var replacement = getOwn(fullWidthNumberMap, chr);\n if (replacement === HALF_WIDTH_PERIOD) {\n isDecimal = true;\n }\n return replacement;\n });\n return isDecimal ? parseFloat(sanitized) : parseInt(sanitized, base || 10);\n }\n\n // Math aliases\n var 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\n\n // String helpers\n\n var chr = String.fromCharCode;\n\n function trim(str) {\n return str.trim();\n }\n\n function 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\n function simpleCapitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n function 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\n // Inflection helper\n\n var Inflections = {};\n\n function getAcronym(str) {\n // istanbul ignore next\n return Inflections.acronyms && Inflections.acronyms.find(str);\n }\n\n function getHumanWord(str) {\n // istanbul ignore next\n return Inflections.human && Inflections.human.find(str);\n }\n\n function runHumanRules(str) {\n // istanbul ignore next\n return Inflections.human && Inflections.human.runRules(str) || str;\n }\n\n // RegExp helpers\n\n function allCharsReg(src) {\n return RegExp('[' + src + ']', 'g');\n }\n\n function getRegExpFlags(reg, add) {\n var flags = '';\n add = add || '';\n function checkFlag(prop, flag) {\n if (prop || add.indexOf(flag) > -1) {\n flags += flag;\n }\n }\n checkFlag(reg.global, 'g');\n checkFlag(reg.ignoreCase, 'i');\n checkFlag(reg.multiline, 'm');\n checkFlag(reg.sticky, 'y');\n return flags;\n }\n\n function escapeRegExp(str) {\n if (!isString(str)) str = String(str);\n return str.replace(/([\\\\/'*+?|()[\\]{}.^$-])/g,'\\\\$1');\n }\n\n // Date helpers\n\n var _utc = privatePropertyAccessor('utc');\n\n function callDateGet(d, method) {\n return d['get' + (_utc(d) ? 'UTC' : '') + method]();\n }\n\n function 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\n // Memoization helpers\n\n var INTERNAL_MEMOIZE_LIMIT = 1000;\n\n // Note that attemps to consolidate this with Function#memoize\n // ended up clunky as that is also serializing arguments. Separating\n // these implementations turned out to be simpler.\n function memoizeFunction(fn) {\n var memo = {}, counter = 0;\n\n return function(key) {\n if (hasOwn(memo, key)) {\n return memo[key];\n }\n // istanbul ignore if\n if (counter === INTERNAL_MEMOIZE_LIMIT) {\n memo = {};\n counter = 0;\n }\n counter++;\n return memo[key] = fn(key);\n };\n }\n\n // ES6 helpers\n\n function setToArray(set) {\n var arr = new Array(set.size), i = 0;\n set.forEach(function(val) {\n arr[i++] = val;\n });\n return arr;\n }\n\n function mapToArray(map) {\n var arr = new Array(map.size), i = 0;\n map.forEach(function(val, key) {\n arr[i++] = [key, val];\n });\n return arr;\n }\n\n buildClassChecks();\n buildFullWidthNumber();\n\n /***\n * @module ES5\n * @description Functions and polyfill methods that fix ES5 functionality. This\n * module is excluded from default builds, and can be included if\n * you need legacy browser support (IE8 and below).\n *\n ***/\n\n // Non-enumerable properties on Object.prototype. In early JScript implementations\n // (< IE9) these will shadow object properties and break for..in loops.\n var DONT_ENUM_PROPS = [\n 'valueOf',\n 'toString',\n 'constructor',\n 'isPrototypeOf',\n 'hasOwnProperty',\n 'toLocaleString',\n 'propertyIsEnumerable'\n ];\n\n /***\n * @fix\n * @short Fixes DontEnum bug for iteration methods in < IE9.\n ***/\n function buildDontEnumFix() {\n if (!({toString:1}).propertyIsEnumerable('toString')) {\n var forEachEnumerableProperty = forEachProperty;\n forEachProperty = function(obj, fn) {\n forEachEnumerableProperty(obj, fn);\n for (var i = 0, key; key = DONT_ENUM_PROPS[i]; i++) {\n if (hasOwn(obj, key)) {\n if(fn.call(obj, obj[key], key, obj) === false) break;\n }\n }\n };\n }\n }\n\n /***\n * @fix\n * @short Adds native methods to chainables in < IE9.\n ***/\n function buildChainableNativeMethodsFix() {\n if (!Object.getOwnPropertyNames) {\n defineNativeMethodsOnChainable();\n }\n }\n\n // Polyfilled methods will automatically be added to the chainable prototype.\n // However, Object.getOwnPropertyNames cannot be shimmed for non-enumerable\n // properties, so if it does not exist, then the only way to access native\n // methods previous to ES5 is to provide them as a list of tokens here.\n function defineNativeMethodsOnChainable() {\n\n var nativeTokens = {\n 'Function': 'apply,call',\n 'RegExp': 'compile,exec,test',\n 'Number': 'toExponential,toFixed,toLocaleString,toPrecision',\n 'Object': 'hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString',\n 'Array': 'concat,join,pop,push,reverse,shift,slice,sort,splice,toLocaleString,unshift',\n 'Date': 'getTime,getTimezoneOffset,setTime,toDateString,toGMTString,toLocaleDateString,toLocaleString,toLocaleTimeString,toTimeString,toUTCString',\n 'String': 'anchor,big,blink,bold,charAt,charCodeAt,concat,fixed,fontcolor,fontsize,indexOf,italics,lastIndexOf,link,localeCompare,match,replace,search,slice,small,split,strike,sub,substr,substring,sup,toLocaleLowerCase,toLocaleUpperCase,toLowerCase,toUpperCase'\n };\n\n var dateTokens = 'FullYear,Month,Date,Hours,Minutes,Seconds,Milliseconds'.split(',');\n\n function addDateTokens(prefix, arr) {\n for (var i = 0; i < dateTokens.length; i++) {\n arr.push(prefix + dateTokens[i]);\n }\n }\n\n forEachProperty(nativeTokens, function(str, name) {\n var tokens = str.split(',');\n if (name === 'Date') {\n addDateTokens('get', tokens);\n addDateTokens('set', tokens);\n addDateTokens('getUTC', tokens);\n addDateTokens('setUTC', tokens);\n }\n tokens.push('toString');\n mapNativeToChainable(name, tokens);\n });\n\n }\n\n\n buildDontEnumFix();\n buildChainableNativeMethodsFix();\n\n\n /*** @namespace Object ***/\n\n function assertNonNull(obj) {\n if (obj == null) {\n throw new TypeError('Object required');\n }\n }\n\n defineStaticPolyfill(sugarObject, {\n\n 'keys': function(obj) {\n var keys = [];\n assertNonNull(obj);\n forEachProperty(coercePrimitiveToObject(obj), function(val, key) {\n keys.push(key);\n });\n return keys;\n }\n\n });\n\n\n /*** @namespace Array ***/\n\n function arrayIndexOf(arr, search, fromIndex, fromRight) {\n var length = arr.length, defaultFromIndex, index, increment;\n\n increment = fromRight ? -1 : 1;\n defaultFromIndex = fromRight ? length - 1 : 0;\n fromIndex = trunc(fromIndex);\n if (!fromIndex && fromIndex !== 0) {\n fromIndex = defaultFromIndex;\n }\n if (fromIndex < 0) {\n fromIndex = length + fromIndex;\n }\n if ((!fromRight && fromIndex < 0) || (fromRight && fromIndex >= length)) {\n fromIndex = defaultFromIndex;\n }\n\n index = fromIndex;\n\n while((fromRight && index >= 0) || (!fromRight && index < length)) {\n if (!(index in arr)) {\n return sparseIndexOf(arr, search, fromIndex, fromRight);\n }\n if (isArrayIndex(index) && arr[index] === search) {\n return index;\n }\n index += increment;\n }\n return -1;\n }\n\n function sparseIndexOf(arr, search, fromIndex, fromRight) {\n var indexes = getSparseArrayIndexes(arr, fromIndex, false, fromRight), index;\n indexes.sort(function(a, b) {\n return fromRight ? b - a : a - b;\n });\n while ((index = indexes.shift()) !== undefined) {\n if (arr[index] === search) {\n return +index;\n }\n }\n return -1;\n }\n\n function arrayReduce(arr, fn, initialValue, fromRight) {\n var length = arr.length, count = 0, defined = isDefined(initialValue), result, index;\n assertCallable(fn);\n if (length == 0 && !defined) {\n throw new TypeError('Reduce called on empty array with no initial value');\n } else if (defined) {\n result = initialValue;\n } else {\n result = arr[fromRight ? length - 1 : count];\n count++;\n }\n while(count < length) {\n index = fromRight ? length - count - 1 : count;\n if (index in arr) {\n result = fn(result, arr[index], index, arr);\n }\n count++;\n }\n return result;\n }\n\n defineStaticPolyfill(sugarArray, {\n\n /***\n *\n * @method isArray(obj)\n * @returns Boolean\n * @polyfill ES5\n * @static\n * @short Returns true if `obj` is an Array.\n *\n * @example\n *\n * Array.isArray(3) -> false\n * Array.isArray(true) -> false\n * Array.isArray('wasabi') -> false\n * Array.isArray([1,2,3]) -> true\n *\n ***/\n 'isArray': function(obj) {\n return isArray(obj);\n }\n\n });\n\n defineInstancePolyfill(sugarArray, {\n\n 'every': function(fn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n var length = this.length, index = 0;\n assertCallable(fn);\n while(index < length) {\n if (index in this && !fn.call(context, this[index], index, this)) {\n return false;\n }\n index++;\n }\n return true;\n },\n\n 'some': function(fn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n var length = this.length, index = 0;\n assertCallable(fn);\n while(index < length) {\n if (index in this && fn.call(context, this[index], index, this)) {\n return true;\n }\n index++;\n }\n return false;\n },\n\n 'map': function(fn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n var length = this.length, index = 0, result = new Array(length);\n assertCallable(fn);\n while(index < length) {\n if (index in this) {\n result[index] = fn.call(context, this[index], index, this);\n }\n index++;\n }\n return result;\n },\n\n 'filter': function(fn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n var length = this.length, index = 0, result = [];\n assertCallable(fn);\n while(index < length) {\n if (index in this && fn.call(context, this[index], index, this)) {\n result.push(this[index]);\n }\n index++;\n }\n return result;\n },\n\n /***\n * @method indexOf(search, [fromIndex] = 0)\n * @returns Number\n * @polyfill ES5\n * @short Searches the array and returns the first index where `search` occurs,\n * or `-1` if the element is not found.\n * @extra [fromIndex] is the index from which to begin the search. This\n * method performs a simple strict equality comparison on `search`.\n * Sugar does not enhance this method to support `enhanced matching`.\n * For such functionality, use the `findIndex` method instead.\n *\n * @example\n *\n * [1,2,3].indexOf(3) -> 1\n * [1,2,3].indexOf(7) -> -1\n *\n ***/\n 'indexOf': function(search) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, fromIndex = arguments[1];\n if (isString(this)) return this.indexOf(search, fromIndex);\n return arrayIndexOf(this, search, fromIndex);\n },\n\n /***\n * @method lastIndexOf(search, [fromIndex] = array.length - 1)\n * @returns Number\n * @polyfill ES5\n * @short Searches the array from the end and returns the first index where\n * `search` occurs, or `-1` if the element is not found.\n * @extra [fromIndex] is the index from which to begin the search. This method\n * performs a simple strict equality comparison on `search`.\n * Sugar does not enhance this method to support `enhanced matching`.\n *\n * @example\n *\n * [1,2,1].lastIndexOf(1) -> 2\n * [1,2,1].lastIndexOf(7) -> -1\n *\n ***/\n 'lastIndexOf': function(search) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, fromIndex = arguments[1];\n if (isString(this)) return this.lastIndexOf(search, fromIndex);\n return arrayIndexOf(this, search, fromIndex, true);\n },\n\n /***\n * @method forEach([eachFn], [context])\n * @polyfill ES5\n * @short Iterates over the array, calling [eachFn] on each loop.\n * @extra [context] becomes the `this` object.\n *\n * @callback eachFn\n *\n * el The element of the current iteration.\n * i The index of the current iteration.\n * arr A reference to the array.\n *\n * @example\n *\n * ['a','b','c'].forEach(function(a) {\n * // Called 3 times: 'a','b','c'\n * });\n *\n ***/\n 'forEach': function(eachFn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n var length = this.length, index = 0;\n assertCallable(eachFn);\n while(index < length) {\n if (index in this) {\n eachFn.call(context, this[index], index, this);\n }\n index++;\n }\n },\n\n /***\n * @method reduce(reduceFn, [init])\n * @returns Mixed\n * @polyfill ES5\n * @short Reduces the array to a single result.\n * @extra This operation is sometimes called \"accumulation\", as it takes the\n * result of the last iteration of `reduceFn` and passes it as the first\n * argument to the next iteration, \"accumulating\" that value as it goes.\n * The return value of this method will be the return value of the final\n * iteration of `reduceFn`. If [init] is passed, it will be the initial\n * \"accumulator\" (the first argument). If [init] is not passed, then it\n * will take the first element in the array, and `reduceFn` will not be\n * called for that element.\n *\n * @callback reduceFn\n *\n * acc The \"accumulator\". Either [init], the result of the last iteration\n * of `reduceFn`, or the first element of the array.\n * el The current element for this iteration.\n * idx The current index for this iteration.\n * arr A reference to the array.\n *\n * @example\n *\n * [1,2,3].reduce(function(a, b) {\n * return a - b; // 1 - 2 - 3\n * });\n *\n * [1,2,3].reduce(function(a, b) {\n * return a - b; // 100 - 1 - 2 - 3\n * }, 100);\n *\n ***/\n 'reduce': function(reduceFn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n return arrayReduce(this, reduceFn, context);\n },\n\n /***\n * @method reduceRight([reduceFn], [init])\n * @returns Mixed\n * @polyfill ES5\n * @short Similar to `Array#reduce`, but operates on the elements in reverse.\n *\n * @callback reduceFn\n *\n * acc The \"accumulator\", either [init], the result of the last iteration\n * of `reduceFn`, or the last element of the array.\n * el The current element for this iteration.\n * idx The current index for this iteration.\n * arr A reference to the array.\n *\n * @example\n *\n * [1,2,3].reduceRight(function(a, b) {\n * return a - b; // 3 - 2 - 1\n * });\n *\n * [1,2,3].reduceRight(function(a, b) {\n * return a - b; // 100 - 3 - 2 - 1\n * }, 100);\n *\n *\n ***/\n 'reduceRight': function(reduceFn) {\n // Force compiler to respect argument length.\n var argLen = arguments.length, context = arguments[1];\n return arrayReduce(this, reduceFn, context, true);\n }\n\n });\n\n\n /*** @namespace String ***/\n\n var TRIM_REG = RegExp('^[' + TRIM_CHARS + ']+|['+ TRIM_CHARS +']+$', 'g');\n\n defineInstancePolyfill(sugarString, {\n /***\n * @method trim()\n * @returns String\n * @polyfill ES5\n * @short Removes leading and trailing whitespace from the string.\n * @extra Whitespace is defined as line breaks, tabs, and any character in the\n * \"Space, Separator\" Unicode category, conforming to the the ES5 spec.\n *\n * @example\n *\n * ' wasabi '.trim() -> 'wasabi'\n * ' wasabi '.trimLeft() -> 'wasabi '\n * ' wasabi '.trimRight() -> ' wasabi'\n *\n ***/\n 'trim': function() {\n return this.toString().replace(TRIM_REG, '');\n }\n });\n\n\n /*** @namespace Function ***/\n\n defineInstancePolyfill(sugarFunction, {\n\n /***\n * @method bind(context, [arg1], ...)\n * @returns Function\n * @polyfill ES5\n * @short Binds `context` as the `this` object for the function when it is\n * called. Also allows currying an unlimited number of parameters.\n * @extra \"currying\" means setting parameters ([arg1], [arg2], etc.) ahead of\n * time so that they are passed when the function is called later. If\n * you pass additional parameters when the function is actually called,\n * they will be added to the end of the curried parameters.\n *\n * @example\n *\n * logThis.bind('woof')() -> logs 'woof' as its this object\n * addArgs.bind(1, 2, 3)() -> returns 5 with 1 as the this object\n * addArgs.bind(1)(2, 3, 4) -> returns 9\n *\n ***/\n 'bind': function(context) {\n // Optimized: no leaking arguments\n var boundArgs = []; for(var $i = 1, $len = arguments.length; $i < $len; $i++) boundArgs.push(arguments[$i]);\n var fn = this, bound;\n assertCallable(this);\n bound = function() {\n // Optimized: no leaking arguments\n var args = []; for(var $i = 0, $len = arguments.length; $i < $len; $i++) args.push(arguments[$i]);\n return fn.apply(fn.prototype && this instanceof fn ? this : context, boundArgs.concat(args));\n };\n bound.prototype = this.prototype;\n return bound;\n }\n\n });\n\n\n /*** @namespace Date ***/\n\n defineStaticPolyfill(sugarDate, {\n\n /***\n * @method now()\n * @returns String\n * @polyfill ES5\n * @static\n * @short Returns the current time as a Unix timestamp.\n * @extra The number of milliseconds since January 1st, 1970 00:00:00 (UTC).\n *\n * @example\n *\n * Date.now() -> ex. 1311938296231\n *\n ***/\n 'now': function() {\n return new Date().getTime();\n }\n\n });\n\n function hasISOSupport() {\n var d = new Date(Date.UTC(2000, 0));\n return !!d.toISOString && d.toISOString() === '2000-01-01T00:00:00.000Z';\n }\n\n defineInstancePolyfill(sugarDate, {\n\n /***\n * @method toISOString()\n * @returns String\n * @polyfill ES5\n * @short Formats the string to ISO8601 format.\n * @extra This will always format as UTC time.\n *\n * @example\n *\n * Date.create().toISOString() -> ex. 2011-07-05 12:24:55.528Z\n *\n ***/\n 'toISOString': function() {\n return padNumber(this.getUTCFullYear(), 4) + '-' +\n padNumber(this.getUTCMonth() + 1, 2) + '-' +\n padNumber(this.getUTCDate(), 2) + 'T' +\n padNumber(this.getUTCHours(), 2) + ':' +\n padNumber(this.getUTCMinutes(), 2) + ':' +\n padNumber(this.getUTCSeconds(), 2) + '.' +\n padNumber(this.getUTCMilliseconds(), 3) + 'Z';\n },\n\n /***\n * @method toJSON([key])\n * @returns String\n * @polyfill ES5\n * @short Returns a JSON representation of the date.\n * @extra This is effectively an alias for `toISOString`. Will always return\n * the date in UTC time. [key] is ignored.\n *\n * @example\n *\n * Date.create().toJSON() -> ex. 2011-07-05 12:24:55.528Z\n *\n ***/\n 'toJSON': function(key) {\n // Force compiler to respect argument length.\n var argLen = arguments.length;\n return this.toISOString(key);\n }\n\n }, !hasISOSupport());\n\n}).call(this);","import {isBoolean, isString, isFn, isArray} from './types';\r\n\r\n/** Configuration settings helpers */\r\n\r\n/**\r\n * If passed value is not of boolean type return the default value\r\n * otherwise return the value itself\r\n * @param {Boolean|Any} value\r\n * @param {Boolean} default value\r\n * @return {Boolean|Any}\r\n */\r\nexport const defaultsBool =\r\n (val, defaultVal) => isBoolean(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of string type return the default value\r\n * otherwise return the value itself\r\n * @param {String|Any} value\r\n * @param {String} default value\r\n * @return {String|Any}\r\n */\r\nexport const defaultsStr =\r\n (val, defaultVal) => isString(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of number type return the default value\r\n * otherwise return the value itself\r\n * @param {Number|Any} value\r\n * @param {Number} default value\r\n * @return {Number|Any}\r\n */\r\nexport const defaultsNb =\r\n (val, defaultVal) => isNaN(val) ? defaultVal : val;\r\n\r\n/**\r\n * If passed value is not of array type return the default value\r\n * otherwise return the value itself\r\n * @param {Array|Any} value\r\n * @param {Array} default value\r\n * @return {Array|Any}\r\n */\r\nexport const defaultsArr =\r\n (val, defaultVal) => isArray(val) ? val : defaultVal;\r\n\r\n/**\r\n * If passed value is not of function type return the default value\r\n * otherwise return the value itself\r\n * @param {Function|Any} value\r\n * @param {Function} default value\r\n * @return {Function|Any}\r\n */\r\nexport const defaultsFn =\r\n (val, defaultVal) => isFn(val) ? val : defaultVal;\r\n","import {root} from './root';\r\nimport {isArray, isString, isUndef} from './types';\r\nimport {trim} from './string';\r\n\r\n/**\r\n * DOM utilities\r\n */\r\n\r\nconst doc = root.document;\r\n\r\n/**\r\n * Returns text + text of children of given node\r\n * @param {NodeElement} node\r\n * @return {String}\r\n */\r\nexport const getText = (node) => {\r\n if (isUndef(node.textContent)) {\r\n return trim(node.innerText);\r\n }\r\n return trim(node.textContent);\r\n};\r\n\r\n/**\r\n * Returns the first text node contained in the supplied node\r\n * @param {NodeElement} node node\r\n * @return {String}\r\n */\r\nexport const getFirstTextNode = (node) => {\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n let n = node.childNodes[i];\r\n if (n.nodeType === 3) {\r\n return n.data;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Creates an html element with given collection of attributes\r\n * @param {String} tag a string of the html tag to create\r\n * @param {Array} an undetermined number of arrays containing the with 2\r\n * items, the attribute name and its value ['id','myId']\r\n * @return {Object} created element\r\n */\r\nexport const createElm = (...args) => {\r\n let tag = args[0];\r\n if (!isString(tag)) {\r\n return null;\r\n }\r\n\r\n let el = doc.createElement(tag);\r\n for (let i = 0; i < args.length; i++) {\r\n let arg = args[i];\r\n\r\n if (isArray(arg) && arg.length === 2) {\r\n el.setAttribute(arg[0], arg[1]);\r\n }\r\n }\r\n return el;\r\n};\r\n\r\n/**\r\n * Removes passed node from DOM\r\n * @param {DOMElement} node\r\n * @return {DOMElement} old node reference\r\n */\r\nexport const removeElm = (node) => node.parentNode.removeChild(node);\r\n\r\n/**\r\n * Returns a text node with given text\r\n * @param {String} txt\r\n * @return {Object}\r\n */\r\nexport const createText = (txt) => doc.createTextNode(txt);\r\n\r\n/**\r\n * Determine whether the passed elements is assigned the given class\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n * @returns {Boolean}\r\n */\r\nexport const hasClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return false;\r\n }\r\n\r\n if (supportsClassList()) {\r\n return ele.classList.contains(cls);\r\n }\r\n return ele.className.match(new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)'));\r\n};\r\n\r\n/**\r\n * Adds the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const addClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.add(cls);\r\n return;\r\n }\r\n\r\n if (ele.className === '') {\r\n ele.className = cls;\r\n }\r\n else if (!hasClass(ele, cls)) {\r\n ele.className += ' ' + cls;\r\n }\r\n};\r\n\r\n/**\r\n * Removes the specified class to the passed element\r\n * @param {DOMElement} ele DOM element\r\n * @param {String} cls CSS class name\r\n */\r\nexport const removeClass = (ele, cls) => {\r\n if (isUndef(ele)) {\r\n return;\r\n }\r\n\r\n if (supportsClassList()) {\r\n ele.classList.remove(cls);\r\n return;\r\n }\r\n let reg = new RegExp('(\\\\s|^)' + cls + '(\\\\s|$)', 'g');\r\n ele.className = ele.className.replace(reg, '');\r\n};\r\n\r\n/**\r\n * Creates and returns an option element\r\n * @param {String} text option text\r\n * @param {String} value option value\r\n * @param {Boolean} isSel whether option is selected\r\n * @return {Object} option element\r\n */\r\nexport const createOpt = (text, value, isSel) => {\r\n let isSelected = isSel ? true : false;\r\n let opt = isSelected ?\r\n createElm('option', ['value', value], ['selected', 'true']) :\r\n createElm('option', ['value', value]);\r\n opt.appendChild(createText(text));\r\n return opt;\r\n};\r\n\r\n/**\r\n * Creates and returns a checklist item\r\n * @param {String} id index of check item\r\n * @param {String} chkValue check item value\r\n * @param {String} labelText check item label text\r\n * @param {Array} extraAttr array containing attribute name and its value\r\n * @return {Object} li DOM element\r\n */\r\nexport const createCheckItem = (id, chkValue, labelText, extraAttr = []) => {\r\n let li = createElm('li');\r\n let label = createElm('label', ['for', id]);\r\n let check = createElm('input',\r\n ['id', id],\r\n ['name', id],\r\n ['type', 'checkbox'],\r\n ['value', chkValue],\r\n extraAttr\r\n );\r\n label.appendChild(check);\r\n label.appendChild(createText(labelText));\r\n li.appendChild(label);\r\n li.label = label;\r\n li.check = check;\r\n return li;\r\n};\r\n\r\n/**\r\n * Returns the element matching the supplied Id\r\n * @param {String} id Element identifier\r\n * @return {DOMElement}\r\n */\r\nexport const elm = (id) => doc.getElementById(id);\r\n\r\n/**\r\n * Returns list of element matching the supplied tag name\r\n * @param {String} tagname Tag name\r\n * @return {NodeList}\r\n */\r\nexport const tag = (o, tagname) => o.getElementsByTagName(tagname);\r\n\r\n// HTML5 classList API\r\nfunction supportsClassList() {\r\n return doc.documentElement.classList;\r\n}\r\n","\r\n/**\r\n * Types utilities\r\n */\r\n\r\nconst UNDEFINED = void 0;\r\n\r\n/**\r\n * Return an empty function\r\n * @return {Function}\r\n */\r\nexport const EMPTY_FN = function() {};\r\n\r\n/**\r\n * Check passed argument is an object\r\n * @param {Object} obj\r\n * @return {Boolean}\r\n */\r\nexport const isObj =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Object]';\r\n\r\n/**\r\n * Check passed argument is a function\r\n * @param {Function} obj\r\n * @return {Boolean}\r\n */\r\nexport const isFn =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Function]';\r\n\r\n/**\r\n * Check passed argument is an array\r\n * @param {Array} obj\r\n * @return {Boolean}\r\n */\r\nexport const isArray =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Array]';\r\n\r\n/**\r\n * Check passed argument is a string\r\n * @param {String} obj obj\r\n * @returns {Boolean}\r\n */\r\nexport const isString =\r\n (obj) => Object.prototype.toString.call(obj) === '[object String]';\r\n\r\n/**\r\n * Check passed argument is a number\r\n * @param {Number} obj\r\n * @returns {Boolean}\r\n */\r\nexport const isNumber =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Number]';\r\n\r\n/**\r\n * Check passed argument is a boolean\r\n * @param {Boolean} obj\r\n * @returns {Boolean}\r\n */\r\nexport const isBoolean =\r\n (obj) => Object.prototype.toString.call(obj) === '[object Boolean]';\r\n\r\n/**\r\n * Check passed argument is undefined\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isUndef = (obj) => obj === UNDEFINED;\r\n\r\n/**\r\n * Check passed argument is null\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isNull = (obj) => obj === null;\r\n\r\n/**\r\n * Check passed argument is empty (undefined, null or empty string)\r\n * @param {Any} obj\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (obj) => isUndef(obj) || isNull(obj) || obj.length === 0;\r\n","/**\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","import {root} from './root';\r\n\r\n/**\r\n * DOM event utilities\r\n */\r\n\r\n/**\r\n * Add event handler for specified event on passed element\r\n *\r\n * @param {DOMElement} obj Element\r\n * @param {String} type Event type\r\n * @param {Function} Handler\r\n * @param {Boolean} capture Specifiy whether the event should be executed in\r\n * the capturing or in the bubbling phase\r\n */\r\nexport const addEvt = (obj, type, func, capture) => {\r\n if (obj.addEventListener) {\r\n obj.addEventListener(type, func, capture);\r\n }\r\n else if (obj.attachEvent) {\r\n obj.attachEvent('on' + type, func);\r\n } else {\r\n obj['on' + type] = func;\r\n }\r\n};\r\n\r\n/**\r\n * Remove event handler for specified event on passed element\r\n *\r\n * @param {DOMElement} obj Element\r\n * @param {String} type Event type\r\n * @param {Function} Handler\r\n * @param {Boolean} capture Specifiy whether the event should be executed in\r\n * the capturing or in the bubbling phase\r\n */\r\nexport const removeEvt = (obj, type, func, capture) => {\r\n if (obj.removeEventListener) {\r\n obj.removeEventListener(type, func, capture);\r\n } else if (obj.detachEvent) {\r\n obj.detachEvent('on' + type, func);\r\n } else {\r\n obj['on' + type] = null;\r\n }\r\n};\r\n\r\n/**\r\n * Prevents further propagation of the current event in the bubbling phase\r\n *\r\n * @param {Event} evt Event on the DOM\r\n */\r\nexport const stopEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n if (evt.stopPropagation) {\r\n evt.stopPropagation();\r\n } else {\r\n evt.cancelBubble = true;\r\n }\r\n};\r\n\r\n/**\r\n * Cancels the event if it is cancelable, without stopping further\r\n * propagation of the event.\r\n *\r\n * @param {Event} evt Event on the DOM\r\n */\r\nexport const cancelEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n if (evt.preventDefault) {\r\n evt.preventDefault();\r\n } else {\r\n evt.returnValue = false;\r\n }\r\n};\r\n\r\n/**\r\n * Reference to the object that dispatched the event\r\n *\r\n * @param {Event} evt Event on the DOM\r\n * @returns {DOMElement}\r\n */\r\nexport const targetEvt = (evt) => {\r\n if (!evt) {\r\n evt = root.event;\r\n }\r\n return evt.target || evt.srcElement;\r\n};\r\n\r\n/**\r\n * Returns the Unicode value of pressed key\r\n *\r\n * @param {Event} evt Event on the DOM\r\n * @returns {Number}\r\n */\r\nexport const keyCode = (evt) => {\r\n return evt.charCode ? evt.charCode :\r\n (evt.keyCode ? evt.keyCode : (evt.which ? evt.which : 0));\r\n};\r\n\r\n/**\r\n * Check code of pressed key is one of the expected key codes\r\n *\r\n * @param {Event} evt key event\r\n * @param {Array} keyCodes list of keycodes to check\r\n */\r\nexport const isKeyPressed = (evt, keyCodes = []) => {\r\n return keyCodes.indexOf(keyCode(evt)) !== -1;\r\n};\r\n\r\n/**\r\n * Bind passed function to passed scope\r\n * @param {Function} fn function\r\n * @param {Object} scope object instance\r\n */\r\nexport function bound(fn, scope) {\r\n let boundFnName = `${fn.name}_bound`;\r\n if (!scope[boundFnName]) {\r\n scope[boundFnName] = fn.bind(scope);\r\n }\r\n return scope[boundFnName];\r\n}\r\n","'use strict';\n\nvar buildNumberUnitMethods = require('../internal/buildNumberUnitMethods');\n\nbuildNumberUnitMethods();","'use strict';\n\nvar buildDateUnitMethods = require('../internal/buildDateUnitMethods');\n\nbuildDateUnitMethods();","import {remove as removeDiacritics} from 'diacritics';\r\n\r\n/**\r\n * String utilities\r\n */\r\n\r\n/**\r\n * Removes whitespace from both sides of passed string\r\n * @param {String} text\r\n * @return {String}\r\n */\r\nexport const trim = (text) => {\r\n if (text.trim) {\r\n return text.trim();\r\n }\r\n return text.replace(/^\\s*|\\s*$/g, '');\r\n};\r\n\r\n/**\r\n * Checks if passed string is empty\r\n * @param {String} text\r\n * @return {Boolean}\r\n */\r\nexport const isEmpty = (text) => trim(text) === '';\r\n\r\n/**\r\n * Makes regex safe string by escaping special characters from passed string\r\n * @param {String} text\r\n * @return {String} escaped string\r\n */\r\nexport const rgxEsc = (text) => {\r\n let chars = /[-\\/\\\\^$*+?.()|[\\]{}]/g;\r\n let escMatch = '\\\\$&';\r\n return String(text).replace(chars, escMatch);\r\n};\r\n\r\n/**\r\n * Returns passed string as lowercase if caseSensitive flag set false. By\r\n * default it returns the string with no casing changes.\r\n * @param {String} text\r\n * @return {String} string\r\n */\r\nexport const matchCase = (text, caseSensitive = false) => {\r\n if (!caseSensitive) {\r\n return text.toLowerCase();\r\n }\r\n return text;\r\n};\r\n\r\n/**\r\n * Checks if passed data contains the searched term\r\n * @param {String} term Searched term\r\n * @param {String} data Data string\r\n * @param {Boolean} exactMatch Exact match\r\n * @param {Boolean} caseSensitive Case sensitive\r\n * @param {Boolean} ignoreDiacritics Ignore diacritics\r\n * @return {Boolean}\r\n */\r\nexport const contains = (term, data, exactMatch = false, caseSensitive = false,\r\n ignoreDiacritics = false) => {\r\n // Improved by Cedric Wartel (cwl) automatic exact match for selects and\r\n // special characters are now filtered\r\n let regexp;\r\n let modifier = caseSensitive ? 'g' : 'gi';\r\n if (ignoreDiacritics) {\r\n term = removeDiacritics(term);\r\n data = removeDiacritics(data);\r\n }\r\n if (exactMatch) {\r\n regexp = new RegExp('(^\\\\s*)' + rgxEsc(term) + '(\\\\s*$)',\r\n modifier);\r\n } else {\r\n regexp = new RegExp(rgxEsc(term), modifier);\r\n }\r\n return regexp.test(data);\r\n};\r\n\r\n/**\r\n * Camelize a string, cutting the string by multiple separators like\r\n * hyphens, underscores and spaces.\r\n * @param {String} text text to camelize\r\n * @return {String} camelized text\r\n */\r\nexport const toCamelCase = (text = '') => {\r\n return text.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) => {\r\n if (p2) {\r\n return p2.toUpperCase();\r\n }\r\n return p1.toLowerCase();\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","import {toCamelCase} from './string';\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 {Class} feature Feature class for TableFilter registration\r\n */\r\n constructor(tf, cls) {\r\n cls.meta = cls.meta || {};\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 * Feature name is the camelised class name as per TableFilter's\r\n * convention\r\n * @type {String}\r\n */\r\n this.feature = cls.meta.altName || cls.meta.name\r\n || toCamelCase(cls.name);\r\n\r\n /**\r\n * TableFilter feature setting\r\n * @type {Boolean}\r\n */\r\n this.enabled = tf[this.feature];\r\n\r\n /**\r\n * TableFilter configuration\r\n * @type {Object}\r\n */\r\n this.config = tf.config();\r\n\r\n /**\r\n * TableFilter emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = tf.emitter;\r\n\r\n /**\r\n * Field indicating whether Feature is initialized\r\n * @type {Boolean}\r\n */\r\n this.initialized = false;\r\n\r\n /** Subscribe to destroy event */\r\n this.emitter.on(['destroy'], () => this.destroy());\r\n }\r\n\r\n /**\r\n * Initialize the feature\r\n */\r\n init() {\r\n throw new Error(NOT_IMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Reset the feature after being disabled\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n }\r\n\r\n /**\r\n * Destroy the feature\r\n */\r\n destroy() {\r\n throw new Error(NOT_IMPLEMENTED);\r\n }\r\n\r\n /**\r\n * Enable the feature\r\n */\r\n enable() {\r\n this.enabled = true;\r\n }\r\n\r\n /**\r\n * Disable the feature\r\n */\r\n disable() {\r\n this.enabled = false;\r\n }\r\n\r\n /**\r\n * Indicate whether the feature is enabled or not\r\n * @returns {Boolean}\r\n */\r\n isEnabled() {\r\n return this.enabled === true;\r\n }\r\n}\r\n","'use strict';\n\nmodule.exports = {\n HOURS_INDEX: 3,\n DAY_INDEX: 4,\n WEEK_INDEX: 5,\n MONTH_INDEX: 6,\n YEAR_INDEX: 7\n};","'use strict';\n\nvar NATIVE_TYPES = require('./NATIVE_TYPES'),\n forEach = require('../internal/forEach'),\n isClass = require('../internal/isClass'),\n spaceSplit = require('../internal/spaceSplit'),\n isPlainObject = require('../internal/isPlainObject');\n\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 // istanbul ignore next\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 // istanbul ignore if\n if (globalObject && isClass(new globalObject, 'Object')) {\n return getConstructorClassCheck(globalObject);\n } else {\n return getToStringClassCheck(className);\n }\n }\n\n // Map and Set may be [object Object] in certain IE environments.\n // In this case we need to perform a check using the constructor\n // instead of Object.prototype.toString.\n // istanbul ignore next\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 return isKnownType(className) || isPlainObject(obj, className);\n };\n\n}\n\nbuildClassChecks();\n\nmodule.exports = {\n isSerializable: isSerializable,\n isBoolean: isBoolean,\n isNumber: isNumber,\n isString: isString,\n isDate: isDate,\n isRegExp: isRegExp,\n isFunction: isFunction,\n isArray: isArray,\n isSet: isSet,\n isMap: isMap,\n isError: isError\n};","'use strict';\n\nvar Sugar = require('sugar-core'),\n LocaleHelpers = require('./var/LocaleHelpers');\n\nvar localeManager = LocaleHelpers.localeManager;\n\nSugar.Date.defineStatic({\n\n 'addLocale': function(code, set) {\n return localeManager.add(code, set);\n }\n\n});\n\nmodule.exports = Sugar.Date.addLocale;","'use strict';\n\nmodule.exports = {\n abs: Math.abs,\n pow: Math.pow,\n min: Math.min,\n max: Math.max,\n ceil: Math.ceil,\n floor: Math.floor,\n round: Math.round\n};","'use strict';\n\nvar LazyLoadedLocales = require('./LazyLoadedLocales'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n getNewLocale = require('../internal/getNewLocale');\n\nvar English, localeManager;\n\nfunction buildLocales() {\n\n function LocaleManager(loc) {\n this.locales = {};\n this.add(loc);\n }\n\n LocaleManager.prototype = {\n\n get: function(code, fallback) {\n var loc = this.locales[code];\n if (!loc && LazyLoadedLocales[code]) {\n loc = this.add(code, LazyLoadedLocales[code]);\n } else if (!loc && code) {\n loc = this.locales[code.slice(0, 2)];\n }\n return loc || fallback === false ? loc : this.current;\n },\n\n getAll: function() {\n return this.locales;\n },\n\n set: function(code) {\n var loc = this.get(code, false);\n if (!loc) {\n throw new TypeError('Invalid Locale: ' + code);\n }\n return this.current = loc;\n },\n\n add: function(code, def) {\n if (!def) {\n def = code;\n code = def.code;\n } else {\n def.code = code;\n }\n var loc = def.compiledFormats ? def : getNewLocale(def);\n this.locales[code] = loc;\n if (!this.current) {\n this.current = loc;\n }\n return loc;\n },\n\n remove: function(code) {\n if (this.current.code === code) {\n this.current = this.get('en');\n }\n return delete this.locales[code];\n }\n\n };\n\n // Sorry about this guys...\n English = getNewLocale(AmericanEnglishDefinition);\n localeManager = new LocaleManager(English);\n}\n\nbuildLocales();\n\nmodule.exports = {\n English: English,\n localeManager: localeManager\n};","'use strict';\n\nvar buildRelativeAliases = require('../internal/buildRelativeAliases');\n\nbuildRelativeAliases();","'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};","import {Feature} from '../feature';\r\nimport {createElm, removeElm, elm, tag} from '../dom';\r\nimport {defaultsStr} from '../settings';\r\nimport {isUndef} from '../types';\r\n\r\nconst EVENTS = [\r\n 'initializing-feature',\r\n 'initializing-extension'\r\n];\r\n\r\n/** Left position in toolbar */\r\nexport const LEFT = 'left';\r\n/** Right position in toolbar */\r\nexport const RIGHT = 'right';\r\n/** Center position in toolbar */\r\nexport const CENTER = 'center';\r\n\r\n/**\r\n * Toolbar UI component\r\n * @export\r\n * @class Toolbar\r\n * @extends {Feature}\r\n */\r\nexport class Toolbar extends Feature {\r\n\r\n /**\r\n * Create an instance of Toolbar\r\n * @param {TableFilter} tf TableFilter instance\r\n * @memberof Toolbar\r\n */\r\n constructor(tf) {\r\n super(tf, Toolbar);\r\n\r\n // Configuration object\r\n let f = this.config.toolbar || {};\r\n\r\n /**\r\n * Css class for toolbar's container DOM element\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.container_css_class, 'inf');\r\n\r\n /**\r\n * Css class for left-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.lContCssClass = defaultsStr(f.left_cont_css_class, 'ldiv');\r\n\r\n /**\r\n * Css class for right-side inner container DOM element\r\n * @type {String}\r\n */\r\n this.rContCssClass = defaultsStr(f.right_cont_css_class, 'rdiv');\r\n\r\n /**\r\n * Css class for middle inner container DOM element\r\n * @type {String}\r\n */\r\n this.cContCssClass = defaultsStr(f.center_cont_css_class, 'mdiv');\r\n\r\n /**\r\n * Toolbar's custom container ID\r\n * @type {String}\r\n */\r\n this.tgtId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Toolbar's container DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Left-side inner container DOM element (rows counter in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.lCont = null;\r\n\r\n /**\r\n * Right-side inner container DOM element (reset button,\r\n * page length selector in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.rCont = null;\r\n\r\n /**\r\n * Middle inner container DOM element (paging elements in toolbar)\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.cCont = null;\r\n\r\n /**\r\n * Container elements inside toolbar\r\n * @private\r\n */\r\n this.innerCont = {\r\n left: null,\r\n center: null,\r\n right: null\r\n };\r\n\r\n this.emitter.on(EVENTS,\r\n (feature, isExternal) => this.init(isExternal));\r\n\r\n /** @inherited */\r\n this.enabled = true;\r\n }\r\n\r\n /**\r\n * Initialize toolbar components\r\n * @param {Boolean} isExternal initialize only if component belongs\r\n * to toolbar\r\n */\r\n init(isExternal) {\r\n if (this.initialized || isExternal) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n // default container\r\n let container = createElm('div');\r\n container.className = this.contCssClass;\r\n\r\n // custom container\r\n if (this.tgtId) {\r\n elm(this.tgtId).appendChild(container);\r\n }\r\n // grid-layout\r\n else if (tf.gridLayout) {\r\n let gridLayout = tf.Mod.gridLayout;\r\n gridLayout.tblMainCont.appendChild(container);\r\n container.className = gridLayout.infDivCssClass;\r\n }\r\n // default location: just above the table\r\n else {\r\n let cont = createElm('caption');\r\n cont.appendChild(container);\r\n tf.dom().insertBefore(cont, tf.dom().firstChild);\r\n }\r\n this.cont = container;\r\n\r\n // left container\r\n this.lCont = this.createContainer(container, this.lContCssClass);\r\n\r\n // right container\r\n this.rCont = this.createContainer(container, this.rContCssClass);\r\n\r\n // middle container\r\n this.cCont = this.createContainer(container, this.cContCssClass);\r\n\r\n this.innerCont = {\r\n left: this.lCont,\r\n center: this.cCont,\r\n right: this.rCont\r\n };\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n // emit help initialisation only if undefined\r\n if (isUndef(tf.help)) {\r\n // explicitily enable help to initialise feature by\r\n // default, only if setting is undefined\r\n tf.Mod.help.enable();\r\n this.emitter.emit('init-help', tf);\r\n }\r\n }\r\n\r\n /**\r\n * Return the container based on requested position inside the toolbar\r\n * @param {String} [position=RIGHT] 3 possible positions: 'left', 'center',\r\n * 'right'\r\n * @param {DOMElement} el optional DOM element to be inserter in container\r\n * @returns {DOMElement}\r\n */\r\n container(position = RIGHT, el) {\r\n let cont = this.innerCont[position];\r\n if (el) {\r\n cont.appendChild(el);\r\n }\r\n return cont;\r\n }\r\n\r\n /**\r\n * Create DOM element inside passed container\r\n * @param {DOMElement} container\r\n * @param {String} css\r\n * @private\r\n */\r\n createContainer(container, css) {\r\n let div = createElm('div', ['class', css]);\r\n container.appendChild(div);\r\n return div;\r\n }\r\n\r\n /**\r\n * Destroy Toolbar instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n let tbl = tf.dom();\r\n let captions = tag(tbl, 'caption');\r\n [].forEach.call(captions, (el) => removeElm(el));\r\n\r\n /** @inherited */\r\n this.initialized = false;\r\n }\r\n}\r\n\r\n// TODO: remove as soon as feature name is fixed\r\nToolbar.meta = {alwaysInstantiate: true};\r\n","'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;","/**\r\n * Array utilities\r\n */\r\n\r\nimport {matchCase} from './string';\r\n\r\n/**\r\n * Checks if given item can be found in the passed collection\r\n * @param {Array} arr collection\r\n * @param {Any} val item to search\r\n * @param {Boolean} caseSensitive respects case if true\r\n * @return {Boolean}\r\n */\r\nexport const has = (arr, val, caseSensitive) => {\r\n let sCase = Boolean(caseSensitive);\r\n for (var i = 0, l = arr.length; i < l; i++) {\r\n if (matchCase(arr[i].toString(), sCase) === val) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n","'use strict';\n\nvar coreUtilityAliases = require('../var/coreUtilityAliases');\n\nvar forEachProperty = coreUtilityAliases.forEachProperty;\n\nfunction defineOnPrototype(ctor, methods) {\n var proto = ctor.prototype;\n forEachProperty(methods, function(val, key) {\n proto[key] = val;\n });\n}\n\nmodule.exports = defineOnPrototype;","import {isNumber} from './types';\r\n\r\n/**\r\n * Takes a string, removes all formatting/cruft and returns the raw float value\r\n * @param {String} Formatted number\r\n * @param {String} Decimal type '.' or ','\r\n * @return {Number} Unformatted number\r\n *\r\n * https://github.com/openexchangerates/accounting.js/blob/master/accounting.js\r\n */\r\nexport const parse = (value, decimal = '.') => {\r\n // Return the value as-is if it's already a number\r\n if (isNumber(value)) {\r\n return value;\r\n }\r\n\r\n // Build regex to strip out everything except digits, decimal point and\r\n // minus sign\r\n let regex = new RegExp('[^0-9-' + decimal + ']', ['g']);\r\n let unformatted = parseFloat(\r\n ('' + value)\r\n // replace bracketed values with negatives\r\n .replace(/\\((.*)\\)/, '-$1')\r\n // strip out any cruft\r\n .replace(regex, '')\r\n // make sure decimal point is standard\r\n .replace(decimal, '.')\r\n );\r\n\r\n // This will fail silently\r\n return !isNaN(unformatted) ? unformatted : 0;\r\n};\r\n","'use strict';\n\nvar _utc = require('../var/_utc');\n\nfunction callDateGet(d, method) {\n return d['get' + (_utc(d) ? 'UTC' : '') + method]();\n}\n\nmodule.exports = callDateGet;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getWeekday(d) {\n return callDateGet(d, 'Day');\n}\n\nmodule.exports = getWeekday;","'use strict';\n\nvar buildDateRangeUnits = require('../internal/buildDateRangeUnits');\n\nbuildDateRangeUnits();","'use strict';\n\nvar 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 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 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 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 callDateGet = require('../../common/internal/callDateGet');\n\nfunction getMonth(d) {\n return callDateGet(d, 'Month');\n}\n\nmodule.exports = getMonth;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getYear(d) {\n return callDateGet(d, 'FullYear');\n}\n\nmodule.exports = getYear;","'use strict';\n\nvar getDaysInMonth = require('../internal/getDaysInMonth');\n\nvar DateUnits = [\n {\n name: 'millisecond',\n method: 'Milliseconds',\n multiplier: 1,\n start: 0,\n end: 999\n },\n {\n name: 'second',\n method: 'Seconds',\n multiplier: 1000,\n start: 0,\n end: 59\n },\n {\n name: 'minute',\n method: 'Minutes',\n multiplier: 60 * 1000,\n start: 0,\n end: 59\n },\n {\n name: 'hour',\n method: 'Hours',\n multiplier: 60 * 60 * 1000,\n start: 0,\n end: 23\n },\n {\n name: 'day',\n alias: 'date',\n method: 'Date',\n ambiguous: true,\n multiplier: 24 * 60 * 60 * 1000,\n start: 1,\n end: function(d) {\n return getDaysInMonth(d);\n }\n },\n {\n name: 'week',\n method: 'ISOWeek',\n ambiguous: true,\n multiplier: 7 * 24 * 60 * 60 * 1000\n },\n {\n name: 'month',\n method: 'Month',\n ambiguous: true,\n multiplier: 30.4375 * 24 * 60 * 60 * 1000,\n start: 0,\n end: 11\n },\n {\n name: 'year',\n method: 'FullYear',\n ambiguous: true,\n multiplier: 365.25 * 24 * 60 * 60 * 1000,\n start: 0\n }\n];\n\nmodule.exports = DateUnits;","'use strict';\n\nfunction isDefined(o) {\n return o !== undefined;\n}\n\nmodule.exports = isDefined;","'use strict';\n\nvar iterateOverSparseArray = require('./iterateOverSparseArray');\n\nfunction forEach(arr, fn) {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (!(i in arr)) {\n return iterateOverSparseArray(arr, fn, i);\n }\n fn(arr[i], i);\n }\n}\n\nmodule.exports = forEach;","import {parse as parseNb} from './number';\r\nimport {Date as SugarDate} from 'sugar-date';\r\n\r\n/** Sorting utilities */\r\n\r\n/**\r\n * Case insensitive compare function for passed strings\r\n * @param {String} First string\r\n * @param {String} Second string\r\n * @return {Number} -1 if first string lower than second one\r\n * 0 if first string same order as second one\r\n * 1 if first string greater than second one\r\n */\r\nexport const ignoreCase = (a, b) => {\r\n let x = a.toLowerCase();\r\n let y = b.toLowerCase();\r\n return x < y ? -1 : (x > y ? 1 : 0);\r\n};\r\n\r\n/**\r\n * Compare function for sorting passed numbers in ascending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortAsc = (a, b) => (a - b);\r\n\r\n/**\r\n * Compare function for sorting passed numbers in descending manner\r\n * @param {Number} First number\r\n * @param {Number} Second number\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const numSortDesc = (a, b) => (b - a);\r\n\r\n/**\r\n * Compare function for sorting passed dates in ascending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortAsc = (date1, date2) => date1.getTime() - date2.getTime();\r\n\r\n/**\r\n * Compare function for sorting passed dates in descending manner according to\r\n * the corresponding UTC numeric value (returned by getTime)\r\n * @param {Date} First date object\r\n * @param {Date} Second date object\r\n * @return {Number} Negative, zero or positive number\r\n */\r\nexport const dateSortDesc = (date1, date2) => date2.getTime() - date1.getTime();\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted numbers in desired\r\n * fashion according to supplied compare function and decimal separator\r\n * @param {Function} Compare function\r\n * @param {String} [decimal=','] Decimal separator\r\n * @return {Function} Compare function receiving parsed numeric arguments\r\n */\r\nexport const sortNumberStr = (compareFn, decimal = ',') => {\r\n return (numStr1, numStr2) => {\r\n let num1 = parseNb(numStr1, decimal);\r\n let num2 = parseNb(numStr2, decimal);\r\n return compareFn(num1, num2);\r\n };\r\n};\r\n\r\n/**\r\n * Curried compare function for sorting passed formatted dates in desired\r\n * fashion according to supplied compare function and locale\r\n * @param {Function} Compare function\r\n * @param {String} [locale='en-us'] Locale code\r\n * @return {Function} Compare function receiving parsed date arguments\r\n */\r\nexport const sortDateStr = (compareFn, locale = 'en-us') => {\r\n return (dateStr1, dateStr2) => {\r\n let date1 = SugarDate.create(dateStr1, locale);\r\n let date2 = SugarDate.create(dateStr2, locale);\r\n return compareFn(date1, date2);\r\n };\r\n};\r\n","'use strict';\n\nvar _utc = require('../../common/var/_utc');\n\nfunction cloneDate(d) {\n // Rhino environments have a bug where new Date(d) truncates\n // milliseconds so need to call getTime() here.\n var clone = new Date(d.getTime());\n _utc(clone, !!_utc(d));\n return clone;\n}\n\nmodule.exports = cloneDate;","'use strict';\n\nvar callDateGet = require('../../common/internal/callDateGet');\n\nfunction getDate(d) {\n return callDateGet(d, 'Date');\n}\n\nmodule.exports = getDate;","'use strict';\n\nvar callDateSet = require('../../common/internal/callDateSet');\n\nfunction setDate(d, val) {\n callDateSet(d, 'Date', val);\n}\n\nmodule.exports = setDate;","'use strict';\n\nvar _utc = require('../var/_utc'),\n callDateGet = require('./callDateGet');\n\nfunction callDateSet(d, method, value, safe) {\n // \"Safe\" denotes not setting the date if the value is the same as what is\n // currently set. In theory this should be a noop, however it will cause\n // timezone shifts when in the middle of a DST fallback. This is unavoidable\n // as the notation itself is ambiguous (i.e. there are two \"1:00ams\" on\n // November 1st, 2015 in northern hemisphere timezones that follow DST),\n // however when advancing or rewinding dates this can throw off calculations\n // so avoiding this unintentional shifting on an opt-in basis.\n if (safe && value === callDateGet(d, method, value)) {\n return;\n }\n d['set' + (_utc(d) ? 'UTC' : '') + method](value);\n}\n\nmodule.exports = callDateSet;","'use strict';\n\nvar isDefined = require('../../common/internal/isDefined'),\n classChecks = require('../../common/var/classChecks'),\n callDateSet = require('../../common/internal/callDateSet'),\n walkUnitDown = require('./walkUnitDown');\n\nvar isFunction = classChecks.isFunction;\n\nfunction setUnitAndLowerToEdge(d, startIndex, stopIndex, end) {\n walkUnitDown(startIndex, function(unit, i) {\n var val = end ? unit.end : unit.start;\n if (isFunction(val)) {\n val = val(d);\n }\n callDateSet(d, unit.method, val);\n return !isDefined(stopIndex) || i > stopIndex;\n });\n return d;\n}\n\nmodule.exports = setUnitAndLowerToEdge;","'use strict';\n\nfunction dateIsValid(d) {\n return !isNaN(d.getTime());\n}\n\nmodule.exports = dateIsValid;","'use strict';\n\nvar updateDate = require('./updateDate');\n\nfunction advanceDate(d, unit, num, reset) {\n var set = {};\n set[unit] = num;\n return updateDate(d, set, reset, 1);\n}\n\nmodule.exports = advanceDate;","'use strict';\n\nvar _dateOptions = require('../var/_dateOptions');\n\nfunction getNewDate() {\n return _dateOptions('newDateInternal')();\n}\n\nmodule.exports = getNewDate;","'use strict';\n\nvar DateUnitIndexes = require('../var/DateUnitIndexes');\n\nvar HOURS_INDEX = DateUnitIndexes.HOURS_INDEX,\n DAY_INDEX = DateUnitIndexes.DAY_INDEX,\n WEEK_INDEX = DateUnitIndexes.WEEK_INDEX,\n MONTH_INDEX = DateUnitIndexes.MONTH_INDEX;\n\nfunction getLowerUnitIndex(index) {\n if (index === MONTH_INDEX) {\n return DAY_INDEX;\n } else if (index === WEEK_INDEX) {\n return HOURS_INDEX;\n }\n return index - 1;\n}\n\nmodule.exports = getLowerUnitIndex;","'use strict';\n\nfunction isUndefined(o) {\n return o === undefined;\n}\n\nmodule.exports = isUndefined;","'use strict';\n\nrequire('./date');\nrequire('./range');\n\nmodule.exports = require('sugar-core');","'use strict';\n\nvar isValidRangeMember = require('./isValidRangeMember');\n\nfunction rangeIsValid(range) {\n return isValidRangeMember(range.start) &&\n isValidRangeMember(range.end) &&\n typeof range.start === typeof range.end;\n}\n\nmodule.exports = rangeIsValid;","'use strict';\n\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, contextDate) {\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\n switch(prefer) {\n case -1: return d >= (contextDate || getNewDate());\n case 1: return d <= (contextDate || 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 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;","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, cls) {\r\n super(tf, cls);\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 and 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 /**\r\n * Refresh linked filters to offer only selected options\r\n */\r\n linkFilters() {\r\n let tf = this.tf;\r\n if (!tf.linkedFilters || !tf.activeFilterId) {\r\n return;\r\n }\r\n\r\n this.refreshAll();\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 {Feature} from '../feature';\r\nimport {createElm, createOpt, createText, elm, removeElm} from '../dom';\r\nimport {isArray, isNull, EMPTY_FN} from '../types';\r\nimport {addEvt, removeEvt, isKeyPressed, bound} from '../event';\r\nimport {INPUT, SELECT, NONE, ENTER_KEY} from '../const';\r\nimport {\r\n defaultsStr, defaultsNb, defaultsBool, defaultsArr, defaultsFn\r\n} from '../settings';\r\nimport {CENTER, RIGHT} from './toolbar';\r\n\r\n/**\r\n * Paging UI component\r\n * @export\r\n * @class Paging\r\n * @extends {Feature}\r\n */\r\nexport class Paging extends Feature {\r\n\r\n /**\r\n * Creates an instance of Paging\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, Paging);\r\n\r\n // Configuration object\r\n let f = this.config.paging || {};\r\n\r\n /**\r\n * Css class for the paging buttons (previous, next, etc.)\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class, 'pgInp');\r\n\r\n /**\r\n * Main select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageSlc = null;\r\n\r\n /**\r\n * Results per page select DOM element\r\n * @type {DOMElement}\r\n */\r\n this.pageLengthSlc = null;\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.tgtId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Number of rows contained in a page\r\n * @type {Number}\r\n */\r\n this.pageLength = defaultsNb(f.length, 10);\r\n\r\n /**\r\n * ID of custom container element for the results per page selector\r\n * @type {String}\r\n */\r\n this.pageLengthTgtId = defaultsStr(f.results_per_page_target_id, null);\r\n\r\n /**\r\n * Css class for the paging select element\r\n * @type {String}\r\n */\r\n this.pgSlcCssClass = defaultsStr(f.slc_css_class, 'pgSlc');\r\n\r\n /**\r\n * Css class for the paging input element\r\n * @type {String}\r\n */\r\n this.pgInpCssClass = defaultsStr(f.inp_css_class, 'pgNbInp');\r\n\r\n /**\r\n * Label and values for the results per page select, example of usage:\r\n * ['Records: ', [10,25,50,100]]\r\n * @type {Array}\r\n */\r\n this.resultsPerPage = defaultsArr(f.results_per_page, null);\r\n\r\n /**\r\n * Determines if results per page is configured\r\n * @type {Boolean}\r\n */\r\n this.hasResultsPerPage = isArray(this.resultsPerPage);\r\n\r\n /**\r\n * Css class for the results per page select\r\n * @type {String}\r\n */\r\n this.resultsSlcCssClass = defaultsStr(f.results_slc_css_class, 'rspg');\r\n\r\n /**\r\n * Css class for the label preceding results per page select\r\n * @type {String}\r\n */\r\n this.resultsSpanCssClass = defaultsStr(f.results_span_css_class,\r\n 'rspgSpan');\r\n\r\n /**\r\n * Index of the first row of current page\r\n * @type {Number}\r\n * @private\r\n */\r\n this.startPagingRow = 0;\r\n\r\n /**\r\n * Total number of pages\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbPages = 0;\r\n\r\n /**\r\n * Current page number\r\n * @type {Number}\r\n * @private\r\n */\r\n this.currentPageNb = 1;\r\n\r\n /**\r\n * Next page button text\r\n * @type {String}\r\n */\r\n this.btnNextPageText = defaultsStr(f.btn_next_page_text, '>');\r\n\r\n /**\r\n * Previous page button text\r\n * @type {String}\r\n */\r\n this.btnPrevPageText = defaultsStr(f.btn_prev_page_text, '<');\r\n\r\n /**\r\n * Last page button text\r\n * @type {String}\r\n */\r\n this.btnLastPageText = defaultsStr(f.btn_last_page_text, '>|');\r\n\r\n /**\r\n * First page button text\r\n * @type {String}\r\n */\r\n this.btnFirstPageText = defaultsStr(f.btn_first_page_text, '|<');\r\n\r\n /**\r\n * Next page button HTML\r\n * @type {String}\r\n */\r\n this.btnNextPageHtml = defaultsStr(f.btn_next_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Previous page button HTML\r\n * @type {String}\r\n */\r\n this.btnPrevPageHtml = defaultsStr(f.btn_prev_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * First page button HTML\r\n * @type {String}\r\n */\r\n this.btnFirstPageHtml = defaultsStr(f.btn_first_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Last page button HTML\r\n * @type {String}\r\n */\r\n this.btnLastPageHtml = defaultsStr(f.btn_last_page_html,\r\n (!tf.enableIcons ? null :\r\n ''));\r\n\r\n /**\r\n * Text preceeding page selector drop-down\r\n * @type {String}\r\n */\r\n this.pageText = defaultsStr(f.page_text, ' Page ');\r\n\r\n /**\r\n * Text after page selector drop-down\r\n * @type {String}\r\n */\r\n this.ofText = defaultsStr(f.of_text, ' of ');\r\n\r\n /**\r\n * Css class for the span containing total number of pages\r\n * @type {String}\r\n */\r\n this.nbPgSpanCssClass = defaultsStr(f.nb_pages_css_class, 'nbpg');\r\n\r\n /**\r\n * Determines if paging buttons are enabled (default: true)\r\n * @type {Boolean}\r\n */\r\n this.hasBtns = defaultsBool(f.btns, true);\r\n\r\n /**\r\n * Defines page selector type, two possible values: 'select', 'input'\r\n * @type {String}\r\n */\r\n this.pageSelectorType = defaultsStr(f.page_selector_type, SELECT);\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, CENTER);\r\n\r\n /**\r\n * Callback fired before the page is changed\r\n * @type {Function}\r\n */\r\n this.onBeforeChangePage = defaultsFn(f.on_before_change_page, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the page is changed\r\n * @type {Function}\r\n */\r\n this.onAfterChangePage = defaultsFn(f.on_after_change_page, EMPTY_FN);\r\n\r\n /**\r\n * Label preciding results per page select\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.slcResultsTxt = null;\r\n /**\r\n * Span containing next page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnNextCont = null;\r\n /**\r\n * Span containing previous page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnPrevCont = null;\r\n /**\r\n * Span containing last page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnLastCont = null;\r\n /**\r\n * Span containing first page button\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.btnFirstCont = null;\r\n /**\r\n * Span for tot nb pages\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgCont = null;\r\n /**\r\n * Span preceding pages select (contains 'Page')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgBefore = null;\r\n /**\r\n * Span following pages select (contains ' of ')\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.pgAfter = null;\r\n\r\n let startRow = tf.refRow;\r\n let nrows = tf.getRowsNb(true);\r\n //calculates page nb\r\n this.nbPages = Math.ceil((nrows - startRow) / this.pageLength);\r\n\r\n let o = this;\r\n /**\r\n * Paging DOM events handlers\r\n * @type {String}\r\n * @private\r\n */\r\n this.evt = {\r\n slcIndex() {\r\n return (o.pageSelectorType === SELECT) ?\r\n o.pageSlc.options.selectedIndex :\r\n parseInt(o.pageSlc.value, 10) - 1;\r\n },\r\n nbOpts() {\r\n return (o.pageSelectorType === SELECT) ?\r\n parseInt(o.pageSlc.options.length, 10) - 1 :\r\n (o.nbPages - 1);\r\n },\r\n next() {\r\n let nextIndex = o.evt.slcIndex() < o.evt.nbOpts() ?\r\n o.evt.slcIndex() + 1 : 0;\r\n o.changePage(nextIndex);\r\n },\r\n prev() {\r\n let prevIndex = o.evt.slcIndex() > 0 ?\r\n o.evt.slcIndex() - 1 : o.evt.nbOpts();\r\n o.changePage(prevIndex);\r\n },\r\n last() {\r\n o.changePage(o.evt.nbOpts());\r\n },\r\n first() {\r\n o.changePage(0);\r\n },\r\n _detectKey(e) {\r\n if (isKeyPressed(e, [ENTER_KEY])) {\r\n if (tf.sorted) {\r\n tf.filter();\r\n o.changePage(o.evt.slcIndex());\r\n } else {\r\n o.changePage();\r\n }\r\n this.blur();\r\n }\r\n },\r\n slcPagesChange: null,\r\n nextEvt: null,\r\n prevEvt: null,\r\n lastEvt: null,\r\n firstEvt: null\r\n };\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n let slcPages;\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-feature', this, !isNull(this.tgtId));\r\n\r\n // Check resultsPerPage is in expected format and initialise the\r\n // results per page component\r\n if (this.hasResultsPerPage) {\r\n if (this.resultsPerPage.length < 2) {\r\n this.hasResultsPerPage = false;\r\n } else {\r\n this.pageLength = this.resultsPerPage[1][0];\r\n this.setResultsPerPage();\r\n }\r\n }\r\n\r\n evt.slcPagesChange = (event) => {\r\n let slc = event.target;\r\n this.changePage(slc.selectedIndex);\r\n };\r\n\r\n // Paging drop-down list selector\r\n if (this.pageSelectorType === SELECT) {\r\n slcPages = createElm(SELECT);\r\n slcPages.className = this.pgSlcCssClass;\r\n addEvt(slcPages, 'change', evt.slcPagesChange);\r\n }\r\n\r\n // Paging input selector\r\n if (this.pageSelectorType === INPUT) {\r\n slcPages = createElm(INPUT, ['value', this.currentPageNb]);\r\n slcPages.className = this.pgInpCssClass;\r\n addEvt(slcPages, 'keypress', evt._detectKey);\r\n }\r\n\r\n // btns containers\r\n let btnNextSpan = createElm('span');\r\n let btnPrevSpan = createElm('span');\r\n let btnLastSpan = createElm('span');\r\n let btnFirstSpan = createElm('span');\r\n\r\n if (this.hasBtns) {\r\n // Next button\r\n if (!this.btnNextPageHtml) {\r\n let btnNext = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnNextPageText],\r\n ['title', 'Next']\r\n );\r\n btnNext.className = this.btnCssClass;\r\n addEvt(btnNext, 'click', evt.next);\r\n btnNextSpan.appendChild(btnNext);\r\n } else {\r\n btnNextSpan.innerHTML = this.btnNextPageHtml;\r\n addEvt(btnNextSpan, 'click', evt.next);\r\n }\r\n // Previous button\r\n if (!this.btnPrevPageHtml) {\r\n let btnPrev = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnPrevPageText],\r\n ['title', 'Previous']\r\n );\r\n btnPrev.className = this.btnCssClass;\r\n addEvt(btnPrev, 'click', evt.prev);\r\n btnPrevSpan.appendChild(btnPrev);\r\n } else {\r\n btnPrevSpan.innerHTML = this.btnPrevPageHtml;\r\n addEvt(btnPrevSpan, 'click', evt.prev);\r\n }\r\n // Last button\r\n if (!this.btnLastPageHtml) {\r\n let btnLast = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnLastPageText],\r\n ['title', 'Last']\r\n );\r\n btnLast.className = this.btnCssClass;\r\n addEvt(btnLast, 'click', evt.last);\r\n btnLastSpan.appendChild(btnLast);\r\n } else {\r\n btnLastSpan.innerHTML = this.btnLastPageHtml;\r\n addEvt(btnLastSpan, 'click', evt.last);\r\n }\r\n // First button\r\n if (!this.btnFirstPageHtml) {\r\n let btnFirst = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnFirstPageText],\r\n ['title', 'First']\r\n );\r\n btnFirst.className = this.btnCssClass;\r\n addEvt(btnFirst, 'click', evt.first);\r\n btnFirstSpan.appendChild(btnFirst);\r\n } else {\r\n btnFirstSpan.innerHTML = this.btnFirstPageHtml;\r\n addEvt(btnFirstSpan, 'click', evt.first);\r\n }\r\n }\r\n\r\n // paging elements (buttons+drop-down list) are added to defined element\r\n let targetEl = !this.tgtId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.tgtId);\r\n targetEl.appendChild(btnFirstSpan);\r\n targetEl.appendChild(btnPrevSpan);\r\n\r\n let pgBeforeSpan = createElm('span');\r\n pgBeforeSpan.appendChild(createText(this.pageText));\r\n pgBeforeSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgBeforeSpan);\r\n targetEl.appendChild(slcPages);\r\n let pgAfterSpan = createElm('span');\r\n pgAfterSpan.appendChild(createText(this.ofText));\r\n pgAfterSpan.className = this.nbPgSpanCssClass;\r\n targetEl.appendChild(pgAfterSpan);\r\n let pgSpan = createElm('span');\r\n pgSpan.className = this.nbPgSpanCssClass;\r\n pgSpan.appendChild(createText(' ' + this.nbPages + ' '));\r\n targetEl.appendChild(pgSpan);\r\n targetEl.appendChild(btnNextSpan);\r\n targetEl.appendChild(btnLastSpan);\r\n\r\n this.btnNextCont = btnNextSpan;\r\n this.btnPrevCont = btnPrevSpan;\r\n this.btnLastCont = btnLastSpan;\r\n this.btnFirstCont = btnFirstSpan;\r\n this.pgCont = pgSpan;\r\n this.pgBefore = pgBeforeSpan;\r\n this.pgAfter = pgAfterSpan;\r\n this.pageSlc = slcPages;\r\n\r\n this.setPagingInfo();\r\n\r\n if (!tf.fltGrid) {\r\n tf.validateAllRows();\r\n this.setPagingInfo(tf.validRowsIndex);\r\n }\r\n\r\n this.emitter.on(['after-filtering'], bound(this.resetPagingInfo, this));\r\n this.emitter.on(['change-page'], bound(this.changePageHandler, this));\r\n this.emitter.on(['change-page-results'],\r\n bound(this.changePageResultsHandler, this));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Reset paging when filters are already instantiated\r\n * @param {Boolean} filterTable Execute filtering once paging instanciated\r\n */\r\n reset(filterTable = false) {\r\n this.enable();\r\n this.init();\r\n\r\n if (filterTable) {\r\n this.tf.filter();\r\n }\r\n }\r\n\r\n /**\r\n * Reset paging info from scratch after a filtering process\r\n */\r\n resetPagingInfo() {\r\n this.startPagingRow = 0;\r\n this.currentPageNb = 1;\r\n this.setPagingInfo(this.tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Calculate number of pages based on valid rows\r\n * Refresh paging select according to number of pages\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n setPagingInfo(validRows) {\r\n let tf = this.tf;\r\n let cont = !this.tgtId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.tgtId);\r\n\r\n //store valid rows indexes\r\n tf.validRowsIndex = validRows || tf.getValidRows(true);\r\n\r\n //calculate nb of pages\r\n this.nbPages = Math.ceil(tf.validRowsIndex.length / this.pageLength);\r\n //refresh page nb span\r\n this.pgCont.innerHTML = this.nbPages;\r\n //select clearing shortcut\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.innerHTML = '';\r\n }\r\n\r\n if (this.nbPages > 0) {\r\n cont.style.visibility = 'visible';\r\n if (this.pageSelectorType === SELECT) {\r\n for (let z = 0; z < this.nbPages; z++) {\r\n let opt = createOpt(z + 1, z * this.pageLength, false);\r\n this.pageSlc.options[z] = opt;\r\n }\r\n } else {\r\n //input type\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n } else {\r\n /*** if no results paging select and buttons are hidden ***/\r\n cont.style.visibility = 'hidden';\r\n }\r\n this.groupByPage(tf.validRowsIndex);\r\n }\r\n\r\n /**\r\n * Group table rows by page and display valid rows\r\n * @param {Array} validRows Collection of valid rows\r\n */\r\n groupByPage(validRows) {\r\n let tf = this.tf;\r\n let rows = tf.dom().rows;\r\n let startPagingRow = parseInt(this.startPagingRow, 10);\r\n let endPagingRow = startPagingRow + parseInt(this.pageLength, 10);\r\n\r\n //store valid rows indexes\r\n if (validRows) {\r\n tf.validRowsIndex = validRows;\r\n }\r\n\r\n //this loop shows valid rows of current page\r\n for (let h = 0, len = tf.getValidRowsNb(true); h < len; h++) {\r\n let validRowIdx = tf.validRowsIndex[h];\r\n let r = rows[validRowIdx];\r\n let isRowValid = r.getAttribute('validRow');\r\n let rowDisplayed = false;\r\n\r\n if (h >= startPagingRow && h < endPagingRow) {\r\n if (isNull(isRowValid) || Boolean(isRowValid === 'true')) {\r\n r.style.display = '';\r\n rowDisplayed = true;\r\n }\r\n } else {\r\n r.style.display = NONE;\r\n }\r\n this.emitter.emit('row-paged', tf, validRowIdx, h, rowDisplayed);\r\n }\r\n\r\n // broadcast grouping by page\r\n this.emitter.emit('grouped-by-page', tf, this);\r\n }\r\n\r\n /**\r\n * Return the current page number\r\n * @return {Number} Page number\r\n */\r\n getPage() {\r\n return this.currentPageNb;\r\n }\r\n\r\n /**\r\n * Show page defined by passed argument (string or number):\r\n * @param {String}/{Number} cmd possible string values: 'next',\r\n * 'previous', 'last', 'first' or page number as per param\r\n */\r\n setPage(cmd) {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.isEnabled()) {\r\n return;\r\n }\r\n let btnEvt = this.evt,\r\n cmdtype = typeof cmd;\r\n if (cmdtype === 'string') {\r\n switch (cmd.toLowerCase()) {\r\n case 'next':\r\n btnEvt.next();\r\n break;\r\n case 'previous':\r\n btnEvt.prev();\r\n break;\r\n case 'last':\r\n btnEvt.last();\r\n break;\r\n case 'first':\r\n btnEvt.first();\r\n break;\r\n default:\r\n btnEvt.next();\r\n break;\r\n }\r\n }\r\n else if (cmdtype === 'number') {\r\n this.changePage(cmd - 1);\r\n }\r\n }\r\n\r\n /**\r\n * Generates UI elements for the number of results per page drop-down\r\n */\r\n setResultsPerPage() {\r\n let tf = this.tf;\r\n let evt = this.evt;\r\n\r\n if (this.pageLengthSlc || !this.resultsPerPage) {\r\n return;\r\n }\r\n\r\n evt.slcResultsChange = (ev) => {\r\n this.onChangeResultsPerPage();\r\n ev.target.blur();\r\n };\r\n\r\n let slcR = createElm(SELECT);\r\n slcR.className = this.resultsSlcCssClass;\r\n let slcRText = this.resultsPerPage[0],\r\n slcROpts = this.resultsPerPage[1];\r\n let slcRSpan = createElm('span');\r\n slcRSpan.className = this.resultsSpanCssClass;\r\n\r\n // results per page select is added to external element\r\n let targetEl = !this.pageLengthTgtId ?\r\n tf.feature('toolbar').container(RIGHT) :\r\n elm(this.pageLengthTgtId);\r\n slcRSpan.appendChild(createText(slcRText));\r\n\r\n let help = tf.feature('help');\r\n if (help && help.btn) {\r\n help.btn.parentNode.insertBefore(slcRSpan, help.btn);\r\n help.btn.parentNode.insertBefore(slcR, help.btn);\r\n } else {\r\n targetEl.appendChild(slcRSpan);\r\n targetEl.appendChild(slcR);\r\n }\r\n\r\n for (let r = 0; r < slcROpts.length; r++) {\r\n let currOpt = new Option(slcROpts[r], slcROpts[r], false, false);\r\n slcR.options[r] = currOpt;\r\n }\r\n addEvt(slcR, 'change', evt.slcResultsChange);\r\n this.slcResultsTxt = slcRSpan;\r\n this.pageLengthSlc = slcR;\r\n }\r\n\r\n /**\r\n * Remove number of results per page UI elements\r\n */\r\n removeResultsPerPage() {\r\n let tf = this.tf;\r\n if (!tf.isInitialized() || !this.pageLengthSlc ||\r\n !this.resultsPerPage) {\r\n return;\r\n }\r\n if (this.pageLengthSlc) {\r\n removeElm(this.pageLengthSlc);\r\n }\r\n if (this.slcResultsTxt) {\r\n removeElm(this.slcResultsTxt);\r\n }\r\n this.pageLengthSlc = null;\r\n this.slcResultsTxt = null;\r\n }\r\n\r\n /**\r\n * Change the page based on passed index\r\n * @param {Number} index Index of the page (0-n)\r\n */\r\n changePage(index) {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-page-change', tf, (index + 1));\r\n\r\n if (index === null) {\r\n index = this.pageSelectorType === SELECT ?\r\n this.pageSlc.options.selectedIndex : this.pageSlc.value - 1;\r\n }\r\n if (index >= 0 && index <= (this.nbPages - 1)) {\r\n this.onBeforeChangePage(this, (index + 1));\r\n\r\n this.currentPageNb = parseInt(index, 10) + 1;\r\n if (this.pageSelectorType === SELECT) {\r\n this.pageSlc.options[index].selected = true;\r\n } else {\r\n this.pageSlc.value = this.currentPageNb;\r\n }\r\n\r\n this.startPagingRow = (this.pageSelectorType === SELECT) ?\r\n this.pageSlc.value : (index * this.pageLength);\r\n\r\n this.groupByPage();\r\n\r\n this.onAfterChangePage(this, (index + 1));\r\n }\r\n\r\n this.emitter.emit('after-page-change', tf, (index + 1));\r\n }\r\n\r\n /**\r\n * Change the number of results per page based on passed value\r\n * @param {String} val The number of results per page\r\n */\r\n changeResultsPerPage(val) {\r\n if (!this.isEnabled() || isNaN(val)) {\r\n return;\r\n }\r\n\r\n this.pageLengthSlc.value = val;\r\n this.onChangeResultsPerPage();\r\n }\r\n\r\n /**\r\n * Change rows according to page results drop-down\r\n */\r\n onChangeResultsPerPage() {\r\n let tf = this.tf;\r\n\r\n if (!this.isEnabled() || tf.getValidRowsNb() === 0) {\r\n return;\r\n }\r\n\r\n let {\r\n pageLengthSlc: slcR, pageSelectorType, pageSlc, emitter\r\n } = this;\r\n\r\n emitter.emit('before-page-length-change', tf);\r\n\r\n let slcIndex = slcR.selectedIndex;\r\n let slcPagesSelIndex = (pageSelectorType === SELECT) ?\r\n pageSlc.selectedIndex : parseInt(pageSlc.value - 1, 10);\r\n this.pageLength = parseInt(slcR.options[slcIndex].value, 10);\r\n this.startPagingRow = this.pageLength * slcPagesSelIndex;\r\n\r\n if (!isNaN(this.pageLength)) {\r\n if (this.startPagingRow >= tf.nbFilterableRows) {\r\n this.startPagingRow = (tf.nbFilterableRows - this.pageLength);\r\n }\r\n this.setPagingInfo();\r\n\r\n if (pageSelectorType === SELECT) {\r\n let slcIdx = (pageSlc.options.length - 1 <= slcPagesSelIndex) ?\r\n (pageSlc.options.length - 1) :\r\n slcPagesSelIndex;\r\n pageSlc.options[slcIdx].selected = true;\r\n }\r\n }\r\n\r\n emitter.emit('after-page-length-change', tf, this.pageLength);\r\n }\r\n\r\n /**\r\n * Re-set page nb at page re-load\r\n */\r\n resetPage() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page', tf);\r\n let pgNb = tf.feature('store').getPageNb();\r\n if (pgNb !== '') {\r\n this.changePage((pgNb - 1));\r\n }\r\n this.emitter.emit('after-reset-page', tf, pgNb);\r\n }\r\n\r\n /**\r\n * Re-set page length value at page re-load\r\n */\r\n resetPageLength() {\r\n let tf = this.tf;\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.emitter.emit('before-reset-page-length', tf);\r\n let pglenIndex = tf.feature('store').getPageLength();\r\n\r\n if (pglenIndex !== '') {\r\n this.pageLengthSlc.options[pglenIndex].selected = true;\r\n this.changeResultsPerPage();\r\n }\r\n this.emitter.emit('after-reset-page-length', tf, pglenIndex);\r\n }\r\n\r\n /** @private */\r\n changePageHandler(tf, pageNumber) {\r\n this.setPage(pageNumber);\r\n }\r\n\r\n /** @private */\r\n changePageResultsHandler(tf, pageLength) {\r\n this.changeResultsPerPage(pageLength);\r\n }\r\n\r\n /**\r\n * Remove paging feature\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let evt = this.evt;\r\n\r\n if (this.pageSlc) {\r\n if (this.pageSelectorType === SELECT) {\r\n removeEvt(this.pageSlc, 'change', evt.slcPagesChange);\r\n }\r\n else if (this.pageSelectorType === INPUT) {\r\n removeEvt(this.pageSlc, 'keypress', evt._detectKey);\r\n }\r\n removeElm(this.pageSlc);\r\n }\r\n\r\n if (this.btnNextCont) {\r\n removeEvt(this.btnNextCont, 'click', evt.next);\r\n removeElm(this.btnNextCont);\r\n this.btnNextCont = null;\r\n }\r\n\r\n if (this.btnPrevCont) {\r\n removeEvt(this.btnPrevCont, 'click', evt.prev);\r\n removeElm(this.btnPrevCont);\r\n this.btnPrevCont = null;\r\n }\r\n\r\n if (this.btnLastCont) {\r\n removeEvt(this.btnLastCont, 'click', evt.last);\r\n removeElm(this.btnLastCont);\r\n this.btnLastCont = null;\r\n }\r\n\r\n if (this.btnFirstCont) {\r\n removeEvt(this.btnFirstCont, 'click', evt.first);\r\n removeElm(this.btnFirstCont);\r\n this.btnFirstCont = null;\r\n }\r\n\r\n if (this.pgBefore) {\r\n removeElm(this.pgBefore);\r\n this.pgBefore = null;\r\n }\r\n\r\n if (this.pgAfter) {\r\n removeElm(this.pgAfter);\r\n this.pgAfter = null;\r\n }\r\n\r\n if (this.pgCont) {\r\n removeElm(this.pgCont);\r\n this.pgCont = null;\r\n }\r\n\r\n if (this.hasResultsPerPage) {\r\n this.removeResultsPerPage();\r\n }\r\n\r\n this.emitter.off(['after-filtering'],\r\n bound(this.resetPagingInfo, this));\r\n this.emitter.off(['change-page'], bound(this.changePageHandler, this));\r\n this.emitter.off(['change-page-results'],\r\n bound(this.changePageResultsHandler, this));\r\n\r\n this.pageSlc = null;\r\n this.nbPages = 0;\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {createElm, elm, removeElm} from '../dom';\r\nimport {isEmpty, EMPTY_FN} from '../types';\r\nimport {NONE} from '../const';\r\nimport {defaultsStr, defaultsFn} from '../settings';\r\n\r\n/**\r\n * UI when filtering yields no matches\r\n * @export\r\n * @class NoResults\r\n * @extends {Feature}\r\n */\r\nexport class NoResults extends Feature {\r\n\r\n /**\r\n * Creates an instance of NoResults\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, NoResults);\r\n\r\n //configuration object\r\n let f = this.config.no_results_message || {};\r\n\r\n /**\r\n * Text (accepts HTML)\r\n * @type {String}\r\n */\r\n this.content = defaultsStr(f.content, 'No results');\r\n\r\n /**\r\n * Custom container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.customContainer = defaultsStr(f.custom_container, null);\r\n\r\n /**\r\n * ID of custom container element\r\n * @type {String}\r\n */\r\n this.customContainerId = defaultsStr(f.custom_container_id, null);\r\n\r\n /**\r\n * Indicates if UI is contained in a external element\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isExternal = !isEmpty(this.customContainer) ||\r\n !isEmpty(this.customContainerId);\r\n\r\n /**\r\n * Css class assigned to container element\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'no-results');\r\n\r\n /**\r\n * Stores container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Callback fired before the message is displayed\r\n * @type {Function}\r\n */\r\n this.onBeforeShow = defaultsFn(f.on_before_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the message is displayed\r\n * @type {Function}\r\n */\r\n this.onAfterShow = defaultsFn(f.on_after_show_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before the message is hidden\r\n * @type {Function}\r\n */\r\n this.onBeforeHide = defaultsFn(f.on_before_hide_msg, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after the message is hidden\r\n * @type {Function}\r\n */\r\n this.onAfterHide = defaultsFn(f.on_after_hide_msg, EMPTY_FN);\r\n }\r\n\r\n /**\r\n * Initializes NoResults instance\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let target = this.customContainer || elm(this.customContainerId) ||\r\n tf.dom();\r\n\r\n //container\r\n let cont = createElm('div');\r\n cont.className = this.cssClass;\r\n cont.innerHTML = this.content;\r\n\r\n if (this.isExternal) {\r\n target.appendChild(cont);\r\n } else {\r\n target.parentNode.insertBefore(cont, target.nextSibling);\r\n }\r\n\r\n this.cont = cont;\r\n\r\n // subscribe to after-filtering event\r\n this.emitter.on(\r\n ['initialized', 'after-filtering'],\r\n () => this.toggle()\r\n );\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Toggle no results message\r\n */\r\n toggle() {\r\n if (this.tf.getValidRowsNb() > 0) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n /**\r\n * Show no results message\r\n */\r\n show() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeShow(this.tf, this);\r\n\r\n this.setWidth();\r\n this.cont.style.display = 'block';\r\n\r\n this.onAfterShow(this.tf, this);\r\n }\r\n\r\n /**\r\n * Hide no results message\r\n */\r\n hide() {\r\n if (!this.initialized || !this.isEnabled()) {\r\n return;\r\n }\r\n this.onBeforeHide(this.tf, this);\r\n\r\n this.cont.style.display = NONE;\r\n\r\n this.onAfterHide(this.tf, this);\r\n }\r\n\r\n /**\r\n * Sets no results container width\r\n * @private\r\n */\r\n setWidth() {\r\n if (!this.initialized || this.isExternal || !this.isEnabled()) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n if (tf.gridLayout) {\r\n let gridLayout = tf.feature('gridLayout');\r\n this.cont.style.width = gridLayout.headTbl.clientWidth + 'px';\r\n } else {\r\n this.cont.style.width = (tf.dom().tHead ?\r\n tf.dom().tHead.clientWidth :\r\n tf.dom().tBodies[0].clientWidth) + 'px';\r\n }\r\n }\r\n\r\n /** Remove feature */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.cont);\r\n this.cont = null;\r\n // unsubscribe to after-filtering event\r\n this.emitter.off(['after-filtering'], () => this.toggle());\r\n\r\n this.initialized = false;\r\n }\r\n}\r\n","import {Feature} from '../feature';\r\nimport {addClass, removeClass} from '../dom';\r\nimport {defaultsStr} from '../settings';\r\nimport {bound} from '../event';\r\n\r\n/**\r\n * Rows with alternating background color for improved readability\r\n */\r\nexport class AlternateRows extends Feature {\r\n\r\n /**\r\n * Creates an instance of AlternateRows.\r\n *\r\n * @param {Object} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, AlternateRows);\r\n\r\n let config = this.config;\r\n\r\n /**\r\n * Css class for even rows (default: 'even')\r\n * @type {String}\r\n */\r\n this.evenCss = defaultsStr(config.even_row_css_class, 'even');\r\n\r\n /**\r\n * Css class for odd rows (default: 'odd')\r\n * @type {String}\r\n */\r\n this.oddCss = defaultsStr(config.odd_row_css_class, 'odd');\r\n }\r\n\r\n /**\r\n * Sets alternating rows color\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.processAll();\r\n\r\n // Subscribe to events\r\n this.emitter.on(['row-processed', 'row-paged'],\r\n bound(this.processRowHandler, this));\r\n this.emitter.on(['column-sorted', 'rows-changed'],\r\n bound(this.processAll, this));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Apply background to all valid rows\r\n */\r\n processAll() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n let tf = this.tf;\r\n let validRowsIndex = tf.getValidRows(true);\r\n let indexLen = validRowsIndex.length;\r\n let idx = 0;\r\n\r\n //alternates bg color\r\n for (let j = 0; j < indexLen; j++) {\r\n let rowIdx = validRowsIndex[j];\r\n this.setRowBg(rowIdx, idx);\r\n idx++;\r\n }\r\n }\r\n\r\n /**\r\n * Set/remove row background based on row validation\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} arrIdx Array index\r\n * @param {Boolean} isValid Valid row flag\r\n */\r\n processRow(rowIdx, arrIdx, isValid) {\r\n if (isValid) {\r\n this.setRowBg(rowIdx, arrIdx);\r\n } else {\r\n this.removeRowBg(rowIdx);\r\n }\r\n }\r\n\r\n /**\r\n * Sets row background color\r\n * @param {Number} rowIdx Row index\r\n * @param {Number} idx Valid rows collection index needed to calculate bg\r\n * color\r\n * @private\r\n */\r\n setRowBg(rowIdx, idx) {\r\n if (!this.isEnabled() || isNaN(rowIdx)) {\r\n return;\r\n }\r\n let rows = this.tf.dom().rows;\r\n let i = isNaN(idx) ? rowIdx : idx;\r\n this.removeRowBg(rowIdx);\r\n\r\n addClass(rows[rowIdx], (i % 2) ? this.evenCss : this.oddCss);\r\n }\r\n\r\n /**\r\n * Removes row background color\r\n * @param {Number} idx Row index\r\n * @private\r\n */\r\n removeRowBg(idx) {\r\n if (isNaN(idx)) {\r\n return;\r\n }\r\n let rows = this.tf.dom().rows;\r\n removeClass(rows[idx], this.oddCss);\r\n removeClass(rows[idx], this.evenCss);\r\n }\r\n\r\n /** @private */\r\n processRowHandler(tf, rowIndex, arrIndex, isValid) {\r\n this.processRow(rowIndex, arrIndex, isValid);\r\n }\r\n\r\n /**\r\n * Removes all alternating backgrounds\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let eachRow = this.tf.eachRow(0);\r\n eachRow((row, i) => this.removeRowBg(i));\r\n\r\n // Unsubscribe to events\r\n this.emitter.off(['row-processed', 'row-paged'],\r\n bound(this.processRowHandler, this));\r\n this.emitter.off(['column-sorted', 'rows-changed'],\r\n bound(this.processAll, this));\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\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, ClearButton);\r\n\r\n let f = this.config.btn_reset || {};\r\n\r\n /**\r\n * Container element ID\r\n * @type {String}\r\n */\r\n this.targetId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * Text for the clear button\r\n * @type {String}\r\n */\r\n this.text = defaultsStr(f.text, null);\r\n\r\n /**\r\n * Css class for reset button\r\n * @type {String}\r\n */\r\n this.cssClass = defaultsStr(f.css_class, 'reset');\r\n\r\n /**\r\n * Tooltip text for the clear button\r\n * @type {String}\r\n */\r\n this.tooltip = f.tooltip || 'Clear filters';\r\n\r\n /**\r\n * Custom Html string for the clear button\r\n * @type {String}\r\n */\r\n this.html = defaultsStr(f.html,\r\n (!tf.enableIcons || this.text ? null :\r\n ''));\r\n\r\n /**\r\n * Default position in toolbar ('left'|'center'|'right')\r\n * @type {String}\r\n */\r\n this.toolbarPosition = defaultsStr(f.toolbar_position, RIGHT);\r\n\r\n /**\r\n * Clear button container element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.container = null;\r\n\r\n /**\r\n * Clear button element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.element = null;\r\n }\r\n\r\n /**\r\n * Click event handler for clear button\r\n * @private\r\n */\r\n onClick() {\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n this.tf.clearFilters();\r\n }\r\n\r\n /**\r\n * Initialize clear button component\r\n */\r\n init() {\r\n let tf = this.tf;\r\n\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('initializing-feature', this, !isNull(this.targetId));\r\n\r\n let cont = createElm('span');\r\n\r\n let targetEl = !this.targetId ?\r\n tf.feature('toolbar').container(this.toolbarPosition) :\r\n elm(this.targetId);\r\n targetEl.appendChild(cont);\r\n\r\n if (!this.html) {\r\n let fltReset = createElm('a', ['href', 'javascript:void(0);']);\r\n fltReset.className = this.cssClass;\r\n fltReset.appendChild(createText(this.text));\r\n cont.appendChild(fltReset);\r\n addEvt(fltReset, 'click', () => this.onClick());\r\n } else {\r\n cont.innerHTML = this.html;\r\n let resetEl = cont.firstChild;\r\n addEvt(resetEl, 'click', () => this.onClick());\r\n }\r\n this.element = cont.firstChild;\r\n this.container = cont;\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n\r\n this.emitter.emit('feature-initialized', this);\r\n }\r\n\r\n /**\r\n * Destroy ClearButton instance\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.element);\r\n removeElm(this.container);\r\n this.element = null;\r\n this.container = null;\r\n this.initialized = false;\r\n }\r\n}\r\n\r\n// TODO: remove as soon as feature name is fixed\r\nClearButton.meta = {altName: 'btnReset'};\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, PopupFilter);\r\n\r\n // Configuration object\r\n let f = this.config.popup_filters || {};\r\n\r\n /**\r\n * Close active popup filter upon filtering, enabled by default\r\n * @type {Boolean}\r\n */\r\n this.closeOnFiltering = defaultsBool(f.close_on_filtering, true);\r\n\r\n /**\r\n * Filter icon path\r\n * @type {String}\r\n */\r\n this.iconPath = defaultsStr(f.image, tf.themesPath + 'icn_filter.gif');\r\n\r\n /**\r\n * Active filter icon path\r\n * @type {string}\r\n */\r\n this.activeIconPath = defaultsStr(f.image_active,\r\n tf.themesPath + 'icn_filterActive.gif');\r\n\r\n /**\r\n * HTML for the filter icon\r\n * @type {string}\r\n */\r\n this.iconHtml = defaultsStr(f.image_html,\r\n '\"Column');\r\n\r\n /**\r\n * Css class assigned to the popup container element\r\n * @type {String}\r\n */\r\n this.placeholderCssClass = defaultsStr(f.placeholder_css_class,\r\n 'popUpPlaceholder');\r\n\r\n /**\r\n * Css class assigned to filter container element\r\n * @type {String}\r\n */\r\n this.containerCssClass = defaultsStr(f.div_css_class, 'popUpFilter');\r\n\r\n /**\r\n * Ensure filter's container element width matches column width, enabled\r\n * by default\r\n * @type {Boolean}\r\n */\r\n this.adjustToContainer = defaultsBool(f.adjust_to_container, true);\r\n\r\n /**\r\n * Callback fired before a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onBeforeOpen = defaultsFn(f.on_before_popup_filter_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a popup filter is opened\r\n * @type {Function}\r\n */\r\n this.onAfterOpen = defaultsFn(f.on_after_popup_filter_open, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired before a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onBeforeClose = defaultsFn(f.on_before_popup_filter_close,\r\n EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after a popup filter is closed\r\n * @type {Function}\r\n */\r\n this.onAfterClose = defaultsFn(f.on_after_popup_filter_close, EMPTY_FN);\r\n\r\n /**\r\n * Collection of filters spans\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltSpans = [];\r\n\r\n /**\r\n * Collection of filters icons\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIcons = [];\r\n\r\n /**\r\n * Collection of filters icons cached after pop-up filters are removed\r\n * @type {Array}\r\n * @private\r\n */\r\n this.filtersCache = null;\r\n\r\n /**\r\n * Collection of filters containers\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltElms = defaultsArr(this.filtersCache, []);\r\n\r\n /**\r\n * Prefix for pop-up filter container ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.prfxDiv = 'popup_';\r\n\r\n /**\r\n * Column index of popup filter currently active\r\n * @type {Number}\r\n * @private\r\n */\r\n this.activeFilterIdx = -1;\r\n }\r\n\r\n /**\r\n * Click event handler for pop-up filter icon\r\n * @private\r\n */\r\n onClick(evt) {\r\n let elm = targetEvt(evt).parentNode;\r\n let colIndex = parseInt(elm.getAttribute('ci'), 10);\r\n\r\n this.closeAll(colIndex);\r\n this.toggle(colIndex);\r\n\r\n if (this.adjustToContainer) {\r\n let cont = this.fltElms[colIndex],\r\n header = this.tf.getHeaderElement(colIndex),\r\n headerWidth = header.clientWidth * 0.95;\r\n cont.style.width = parseInt(headerWidth, 10) + 'px';\r\n }\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup filter auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n if (this.activeFilterIdx === -1) {\r\n return;\r\n }\r\n let targetElm = targetEvt(evt);\r\n let activeFlt = this.fltElms[this.activeFilterIdx];\r\n let icon = this.fltIcons[this.activeFilterIdx];\r\n\r\n if (icon === targetElm) {\r\n return;\r\n }\r\n\r\n while (targetElm && targetElm !== activeFlt) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== activeFlt) {\r\n this.close(this.activeFilterIdx);\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Initialize DOM elements\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n let tf = this.tf;\r\n\r\n // Enable external filters\r\n tf.externalFltIds = [''];\r\n\r\n // Override filters row index supplied by configuration\r\n tf.filtersRowIndex = 0;\r\n\r\n // Override headers row index if no grouped headers\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.headersRow <= 1 && isNaN(tf.config().headers_row_index)) {\r\n tf.headersRow = 0;\r\n }\r\n\r\n // Adjust headers row index for grid-layout mode\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n if (tf.gridLayout) {\r\n tf.headersRow--;\r\n this.buildIcons();\r\n }\r\n\r\n // subscribe to events\r\n this.emitter.on(['before-filtering'], () => this.setIconsState());\r\n this.emitter.on(['after-filtering'], () => this.closeAll());\r\n this.emitter.on(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.on(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.on(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n /** @inherited */\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * Reset previously destroyed feature\r\n */\r\n reset() {\r\n this.enable();\r\n this.init();\r\n this.buildIcons();\r\n this.buildAll();\r\n }\r\n\r\n /**\r\n * Build all filters icons\r\n */\r\n buildIcons() {\r\n let tf = this.tf;\r\n\r\n // TODO: Because of the filters row generation, headers row index needs\r\n // adjusting: prevent useless row generation\r\n tf.headersRow++;\r\n\r\n tf.eachCol(\r\n (i) => {\r\n let icon = createElm('span', ['ci', i]);\r\n icon.innerHTML = this.iconHtml;\r\n let header = tf.getHeaderElement(i);\r\n header.appendChild(icon);\r\n addEvt(icon, 'click', (evt) => this.onClick(evt));\r\n this.fltSpans[i] = icon;\r\n this.fltIcons[i] = icon.firstChild;\r\n },\r\n // continue condition function\r\n (i) => tf.getFilterType(i) === NONE\r\n );\r\n }\r\n\r\n /**\r\n * Build all pop-up filters elements\r\n */\r\n buildAll() {\r\n for (let i = 0; i < this.filtersCache.length; i++) {\r\n this.build(i, this.filtersCache[i]);\r\n }\r\n }\r\n\r\n /**\r\n * Build a specified pop-up filter elements\r\n * @param {Number} colIndex Column index\r\n * @param {Object} div Optional container DOM element\r\n */\r\n build(colIndex, div) {\r\n let tf = this.tf;\r\n let contId = `${this.prfxDiv}${tf.id}_${colIndex}`;\r\n let placeholder = createElm('div', ['class', this.placeholderCssClass]);\r\n let cont = div ||\r\n createElm('div', ['id', contId], ['class', this.containerCssClass]);\r\n tf.externalFltIds[colIndex] = cont.id;\r\n placeholder.appendChild(cont);\r\n\r\n let header = tf.getHeaderElement(colIndex);\r\n header.insertBefore(placeholder, header.firstChild);\r\n addEvt(cont, 'click', (evt) => stopEvt(evt));\r\n this.fltElms[colIndex] = cont;\r\n }\r\n\r\n /**\r\n * Toggle visibility of specified filter\r\n * @param {Number} colIndex Column index\r\n */\r\n toggle(colIndex) {\r\n if (!this.isOpen(colIndex)) {\r\n this.open(colIndex);\r\n } else {\r\n this.close(colIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Open popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n open(colIndex) {\r\n let tf = this.tf,\r\n container = this.fltElms[colIndex];\r\n\r\n this.onBeforeOpen(this, container, colIndex);\r\n\r\n container.style.display = 'block';\r\n this.activeFilterIdx = colIndex;\r\n addEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n if (tf.getFilterType(colIndex) === INPUT) {\r\n let flt = tf.getFilterElement(colIndex);\r\n if (flt) {\r\n flt.focus();\r\n }\r\n }\r\n\r\n this.onAfterOpen(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Close popup filter of specified column\r\n * @param {Number} colIndex Column index\r\n */\r\n close(colIndex) {\r\n let container = this.fltElms[colIndex];\r\n\r\n this.onBeforeClose(this, container, colIndex);\r\n\r\n container.style.display = NONE;\r\n if (this.activeFilterIdx === colIndex) {\r\n this.activeFilterIdx = -1;\r\n }\r\n removeEvt(root, 'mouseup', (evt) => this.onMouseup(evt));\r\n\r\n this.onAfterClose(this, container, colIndex);\r\n }\r\n\r\n /**\r\n * Check if popup filter for specified column is open\r\n * @param {Number} colIndex Column index\r\n * @returns {Boolean}\r\n */\r\n isOpen(colIndex) {\r\n return this.fltElms[colIndex].style.display === 'block';\r\n }\r\n\r\n /**\r\n * Close all filters excepted for the specified one if any\r\n * @param {Number} exceptIdx Column index of the filter to not close\r\n */\r\n closeAll(exceptIdx) {\r\n // Do not close filters only if argument is undefined and close on\r\n // filtering option is disabled\r\n if (isUndef(exceptIdx) && !this.closeOnFiltering) {\r\n return;\r\n }\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n if (i === exceptIdx) {\r\n continue;\r\n }\r\n let fltType = this.tf.getFilterType(i);\r\n let isMultipleFilter =\r\n (fltType === CHECKLIST || fltType === MULTIPLE);\r\n\r\n // Always hide all single selection filter types but hide multiple\r\n // selection filter types only if index set\r\n if (!isMultipleFilter || !isUndef(exceptIdx)) {\r\n this.close(i);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Build all the icons representing the pop-up filters\r\n */\r\n setIconsState() {\r\n for (let i = 0; i < this.fltIcons.length; i++) {\r\n this.changeState(i, false);\r\n }\r\n }\r\n\r\n /**\r\n * Apply specified icon state\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} active Apply active state\r\n */\r\n changeState(colIndex, active) {\r\n let icon = this.fltIcons[colIndex];\r\n if (icon) {\r\n icon.src = active ? this.activeIconPath : this.iconPath;\r\n }\r\n }\r\n\r\n /**\r\n * Remove pop-up filters\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n this.filtersCache = [];\r\n for (let i = 0; i < this.fltElms.length; i++) {\r\n let container = this.fltElms[i],\r\n placeholder = container.parentNode,\r\n icon = this.fltSpans[i],\r\n iconImg = this.fltIcons[i];\r\n if (container) {\r\n removeElm(container);\r\n this.filtersCache[i] = container;\r\n }\r\n container = null;\r\n if (placeholder) {\r\n removeElm(placeholder);\r\n }\r\n placeholder = null;\r\n if (icon) {\r\n removeElm(icon);\r\n }\r\n icon = null;\r\n if (iconImg) {\r\n removeElm(iconImg);\r\n }\r\n iconImg = null;\r\n }\r\n this.fltElms = [];\r\n this.fltSpans = [];\r\n this.fltIcons = [];\r\n\r\n // TODO: expose an API to handle external filter IDs\r\n this.tf.externalFltIds = [];\r\n\r\n // unsubscribe to events\r\n this.emitter.off(['before-filtering'], () => this.setIconsState());\r\n this.emitter.off(['after-filtering'], () => this.closeAll());\r\n this.emitter.off(['cell-processed'],\r\n (tf, cellIndex) => this.changeState(cellIndex, true));\r\n this.emitter.off(['filters-row-inserted'], () => this.buildIcons());\r\n this.emitter.off(['before-filter-init'],\r\n (tf, colIndex) => this.build(colIndex));\r\n\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\r\n// TODO: remove as soon as feature name is fixed\r\nPopupFilter.meta = {altName: 'popupFilters'};\r\n","import {createText, createElm, getText} from '../dom';\r\nimport {isNull} 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 (isNull(term) ||\r\n 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\r\n this.unhighlight(null, this.highlightCssClass);\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\r\n// TODO: remove as soon as feature name is fixed\r\nHighlightKeyword.meta = {\r\n name: 'highlightKeyword',\r\n altName: 'highlightKeywords'\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 BEFORE_ACTION_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\nconst AFTER_ACTION_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 * 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(BEFORE_ACTION_EVENTS, () => this.show(''));\r\n emitter.on(AFTER_ACTION_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 function 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.bind(this), 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(BEFORE_ACTION_EVENTS, () => this.show(''));\r\n emitter.off(AFTER_ACTION_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 {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';\r\nimport {createElm, createText, elm, removeElm} from '../dom';\r\nimport {addEvt, targetEvt, removeEvt} from '../event';\r\nimport {NONE} from '../const';\r\nimport {root} from '../root';\r\nimport {isEmpty, isNull} from '../types';\r\nimport {defaultsStr} from '../settings';\r\nimport {RIGHT} from './toolbar';\r\n\r\nconst WIKI_URL = 'https://github.com/koalyptus/TableFilter/wiki/' +\r\n '4.-Filter-operators';\r\nconst WEBSITE_URL = 'https://www.tablefilter.com/';\r\n\r\n/**\r\n * Help UI component\r\n */\r\nexport class Help extends Feature {\r\n\r\n /**\r\n * Creates an instance of Help\r\n * @param {TableFilter} tf TableFilter instance\r\n */\r\n constructor(tf) {\r\n super(tf, Help);\r\n\r\n let f = this.config.help_instructions || {};\r\n\r\n /**\r\n * ID of main custom container element\r\n * @type {String}\r\n */\r\n this.tgtId = defaultsStr(f.target_id, null);\r\n\r\n /**\r\n * ID of custom container element for instructions\r\n * @type {String}\r\n */\r\n this.contTgtId = defaultsStr(f.container_target_id, null);\r\n\r\n /**\r\n * Instructions text (accepts HTML)\r\n * @type {String}\r\n */\r\n this.instrText = !isEmpty(f.text) ? f.text :\r\n 'Use the filters above each column to filter and limit table ' +\r\n 'data. Advanced searches can be performed by using the following ' +\r\n 'operators:
<, <=, >, ' +\r\n '>=, =, *, !, {, }, ' +\r\n '||,&&, [empty], [nonempty], ' +\r\n 'rgx:
' +\r\n 'Learn more
';\r\n\r\n /**\r\n * Instructions HTML\r\n * @type {String}\r\n */\r\n this.instrHtml = defaultsStr(f.html, null);\r\n\r\n /**\r\n * Help button text ('?')\r\n * @type {String}\r\n */\r\n this.btnText = defaultsStr(f.btn_text, '?');\r\n\r\n /**\r\n * Custom help button HTML\r\n * @type {String}\r\n */\r\n this.btnHtml = defaultsStr(f.btn_html, null);\r\n\r\n /**\r\n * Css class for help button\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class, 'helpBtn');\r\n\r\n /**\r\n * Css class for help container element\r\n * @type {String}\r\n */\r\n this.contCssClass = defaultsStr(f.container_css_class, 'helpCont');\r\n\r\n /**\r\n * Button DOM element\r\n * @type {DOMElement}\r\n */\r\n this.btn = null;\r\n\r\n /**\r\n * Help container DOM element\r\n * @type {DOMElement}\r\n */\r\n this.cont = null;\r\n\r\n /**\r\n * Bound mouseup wrapper\r\n * @private\r\n */\r\n this.boundMouseup = null;\r\n\r\n /**\r\n * Default HTML appended to instructions text\r\n * @type {String}\r\n */\r\n this.defaultHtml = '

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

' + '' + WEBSITE_URL + '' +\r\n '
©2015-' + tf.year + ' Max Guglielmi' +\r\n '
' +\r\n 'Close
';\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 this.emitter.on(['init-help'], () => this.init());\r\n }\r\n\r\n /**\r\n * Mouse-up event handler handling popup auto-close behaviour\r\n * @private\r\n */\r\n onMouseup(evt) {\r\n let targetElm = targetEvt(evt);\r\n\r\n while (targetElm && targetElm !== this.cont && targetElm !== this.btn) {\r\n targetElm = targetElm.parentNode;\r\n }\r\n\r\n if (targetElm !== this.cont && targetElm !== this.btn) {\r\n this.toggle();\r\n }\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Initialise Help 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.tgtId));\r\n\r\n let tf = this.tf;\r\n\r\n let btn = createElm('span');\r\n let cont = createElm('div');\r\n\r\n this.boundMouseup = this.onMouseup.bind(this);\r\n\r\n //help button is 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(btn);\r\n\r\n let divContainer = !this.contTgtId ? btn : elm(this.contTgtId);\r\n\r\n if (!this.btnHtml) {\r\n divContainer.appendChild(cont);\r\n let helplink = createElm('a', ['href', 'javascript:void(0);']);\r\n helplink.className = this.btnCssClass;\r\n helplink.appendChild(createText(this.btnText));\r\n btn.appendChild(helplink);\r\n addEvt(helplink, 'click', () => this.toggle());\r\n } else {\r\n btn.innerHTML = this.btnHtml;\r\n let helpEl = btn.firstChild;\r\n addEvt(helpEl, 'click', () => this.toggle());\r\n divContainer.appendChild(cont);\r\n }\r\n\r\n if (!this.instrHtml) {\r\n cont.innerHTML = this.instrText;\r\n cont.className = this.contCssClass;\r\n } else {\r\n if (this.contTgtId) {\r\n divContainer.appendChild(cont);\r\n }\r\n cont.innerHTML = this.instrHtml;\r\n if (!this.contTgtId) {\r\n cont.className = this.contCssClass;\r\n }\r\n }\r\n cont.innerHTML += this.defaultHtml;\r\n addEvt(cont, 'click', () => this.toggle());\r\n\r\n this.cont = cont;\r\n this.btn = btn;\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 * Toggle help pop-up\r\n */\r\n toggle() {\r\n // check only if explicitily disabled as in this case undefined\r\n // signifies the help feature is enabled by default\r\n if (!this.isEnabled()) {\r\n return;\r\n }\r\n\r\n // ensure mouseup event handler is removed\r\n removeEvt(root, 'mouseup', this.boundMouseup);\r\n\r\n let divDisplay = this.cont.style.display;\r\n if (divDisplay === '' || divDisplay === NONE) {\r\n this.cont.style.display = 'inline';\r\n addEvt(root, 'mouseup', this.boundMouseup);\r\n } else {\r\n this.cont.style.display = NONE;\r\n }\r\n }\r\n\r\n /**\r\n * Remove help UI\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n removeElm(this.btn);\r\n this.btn = null;\r\n\r\n removeElm(this.cont);\r\n this.cont = null;\r\n\r\n this.boundMouseup = null;\r\n this.initialized = false;\r\n }\r\n\r\n}\r\n\r\n// TODO: remove as soon as feature name is fixed\r\nHelp.meta = {alwaysInstantiate: true};\r\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","'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. Decrement\n // starting point by 1 to prevent overshooting the date due to inconsistencies\n // in ambiguous units numerically. For example, calculating the number of days\n // from the beginning of the year to August 5th at 11:59:59 by doing a simple\n // d2 - d1 will produce different results depending on whether or not a\n // timezone shift was encountered due to DST, however that should not have an\n // effect on our calculation here, so subtract by 1 to ensure that the\n // starting point has not already overshot our target date.\n if (unit.ambiguous) {\n d1 = cloneDate(d1);\n if (num) {\n num -= 1;\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 ABBREVIATED_YEAR_REG = require('../var/ABBREVIATED_YEAR_REG'),\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 isDefined = require('../../common/internal/isDefined'),\n resetTime = require('./resetTime'),\n getNewDate = require('./getNewDate'),\n updateDate = require('./updateDate'),\n setWeekday = require('./setWeekday'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n advanceDate = require('./advanceDate'),\n isUndefined = require('../../common/internal/isUndefined'),\n classChecks = require('../../common/var/classChecks'),\n dateIsValid = require('./dateIsValid'),\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 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 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 // Locals\n var date, set, loc, afterCallbacks, relative, weekdayDir;\n\n // Options\n var optPrefer, optLocale, optFromUTC, optSetUTC, optParams, optClone;\n\n afterCallbacks = [];\n\n setupOptions(opt);\n\n function setupOptions(opt) {\n opt = isString(opt) ? { locale: opt } : opt || {};\n optPrefer = +!!getOwn(opt, 'future') - +!!getOwn(opt, 'past');\n optLocale = getOwn(opt, 'locale');\n optFromUTC = getOwn(opt, 'fromUTC');\n optSetUTC = getOwn(opt, 'setUTC');\n optParams = getOwn(opt, 'params');\n optClone = getOwn(opt, 'clone');\n }\n\n function parseFormatValues(match, dif) {\n var set = optParams || {};\n forEach(dif.to, function(param, i) {\n var str = match[i + 1], val;\n if (!str) return;\n\n val = parseIrregular(str, param);\n\n if (isUndefined(val)) {\n val = loc.parseValue(str, param);\n }\n\n set[param] = val;\n });\n return set;\n }\n\n function parseIrregular(str, param) {\n if (param === 'utc') {\n return 1;\n } else if (param === 'year') {\n var match = str.match(ABBREVIATED_YEAR_REG);\n if (match) {\n return getYearFromAbbreviation(match[1], date, optPrefer);\n }\n }\n }\n\n // Force the UTC flags to be true if the source date\n // date is UTC, as they will be overwritten later.\n function cloneDateByFlag(d, clone) {\n if (_utc(d) && !isDefined(optFromUTC)) {\n optFromUTC = true;\n }\n if (_utc(d) && !isDefined(optSetUTC)) {\n optSetUTC = 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(optLocale);\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 = parseFormatValues(match, dif);\n\n if (isDefined(set.timestamp)) {\n date.setTime(set.timestamp);\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);\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 break;\n }\n }\n\n if (!set) {\n // TODO: remove in next major version\n // Fall back to native parsing\n date = new Date(str);\n if (optFromUTC && dateIsValid(date)) {\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 updateDate(date, set, true, 0, optPrefer, weekdayDir, contextDate);\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) {\n // Adjust for timezone offset\n _utc(date, true);\n\n // Sign is parsed as part of the hour, so flip\n // the minutes if it's negative.\n\n if (tzHour < 0) {\n tzMinute *= -1;\n }\n\n var offset = tzHour * 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;\n\n if (isDefined(set.num)) {\n num = set.num;\n } else if (isDefined(set.edge) && isUndefined(set.shift)) {\n num = 0;\n } else {\n num = 1;\n }\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, optLocale);\n } else if (edge > 0) {\n if (edge === 1) {\n stopIndex = DAY_INDEX;\n moveToBeginningOfUnit(date, DAY_INDEX);\n }\n moveToEndOfUnit(date, edgeIndex, optLocale, 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, 0, false, weekdayDir);\n if (optParams) {\n simpleMerge(optParams, params);\n }\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, optFromUTC);\n\n if (isString(d)) {\n date = parseStringDate(d);\n } else if (isDate(d)) {\n date = cloneDateByFlag(d, optClone || 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, !!optSetUTC);\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 EnglishLocaleBaseDefinition = require('../var/EnglishLocaleBaseDefinition'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n simpleClone = require('../../common/internal/simpleClone');\n\nfunction getEnglishVariant(v) {\n return simpleMerge(simpleClone(EnglishLocaleBaseDefinition), v);\n}\n\nmodule.exports = getEnglishVariant;","exports.remove = removeDiacritics;\n\nvar replacementList = [\n {\n base: ' ',\n chars: \"\\u00A0\",\n }, {\n base: '0',\n chars: \"\\u07C0\",\n }, {\n base: 'A',\n chars: \"\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\",\n }, {\n base: 'AA',\n chars: \"\\uA732\",\n }, {\n base: 'AE',\n chars: \"\\u00C6\\u01FC\\u01E2\",\n }, {\n base: 'AO',\n chars: \"\\uA734\",\n }, {\n base: 'AU',\n chars: \"\\uA736\",\n }, {\n base: 'AV',\n chars: \"\\uA738\\uA73A\",\n }, {\n base: 'AY',\n chars: \"\\uA73C\",\n }, {\n base: 'B',\n chars: \"\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0181\",\n }, {\n base: 'C',\n chars: \"\\u24b8\\uff23\\uA73E\\u1E08\\u0106\\u0043\\u0108\\u010A\\u010C\\u00C7\\u0187\\u023B\",\n }, {\n base: 'D',\n chars: \"\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018A\\u0189\\u1D05\\uA779\",\n }, {\n base: 'Dh',\n chars: \"\\u00D0\",\n }, {\n base: 'DZ',\n chars: \"\\u01F1\\u01C4\",\n }, {\n base: 'Dz',\n chars: \"\\u01F2\\u01C5\",\n }, {\n base: 'E',\n chars: \"\\u025B\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\\u1D07\",\n }, {\n base: 'F',\n chars: \"\\uA77C\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\",\n }, {\n base: 'G',\n chars: \"\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\\u0262\",\n }, {\n base: 'H',\n chars: \"\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\",\n }, {\n base: 'I',\n chars: \"\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\",\n }, {\n base: 'J',\n chars: \"\\u24BF\\uFF2A\\u0134\\u0248\\u0237\",\n }, {\n base: 'K',\n chars: \"\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\",\n }, {\n base: 'L',\n chars: \"\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\",\n }, {\n base: 'LJ',\n chars: \"\\u01C7\",\n }, {\n base: 'Lj',\n chars: \"\\u01C8\",\n }, {\n base: 'M',\n chars: \"\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\\u03FB\",\n }, {\n base: 'N',\n chars: \"\\uA7A4\\u0220\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u019D\\uA790\\u1D0E\",\n }, {\n base: 'NJ',\n chars: \"\\u01CA\",\n }, {\n base: 'Nj',\n chars: \"\\u01CB\",\n }, {\n base: 'O',\n chars: \"\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\",\n }, {\n base: 'OE',\n chars: \"\\u0152\",\n }, {\n base: 'OI',\n chars: \"\\u01A2\",\n }, {\n base: 'OO',\n chars: \"\\uA74E\",\n }, {\n base: 'OU',\n chars: \"\\u0222\",\n }, {\n base: 'P',\n chars: \"\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\",\n }, {\n base: 'Q',\n chars: \"\\u24C6\\uFF31\\uA756\\uA758\\u024A\",\n }, {\n base: 'R',\n chars: \"\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\",\n }, {\n base: 'S',\n chars: \"\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\",\n }, {\n base: 'T',\n chars: \"\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\",\n }, {\n base: 'Th',\n chars: \"\\u00DE\",\n }, {\n base: 'TZ',\n chars: \"\\uA728\",\n }, {\n base: 'U',\n chars: \"\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\",\n }, {\n base: 'V',\n chars: \"\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\",\n }, {\n base: 'VY',\n chars: \"\\uA760\",\n }, {\n base: 'W',\n chars: \"\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\",\n }, {\n base: 'X',\n chars: \"\\u24CD\\uFF38\\u1E8A\\u1E8C\",\n }, {\n base: 'Y',\n chars: \"\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\",\n }, {\n base: 'Z',\n chars: \"\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\",\n }, {\n base: 'a',\n chars: \"\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\\u0251\",\n }, {\n base: 'aa',\n chars: \"\\uA733\",\n }, {\n base: 'ae',\n chars: \"\\u00E6\\u01FD\\u01E3\",\n }, {\n base: 'ao',\n chars: \"\\uA735\",\n }, {\n base: 'au',\n chars: \"\\uA737\",\n }, {\n base: 'av',\n chars: \"\\uA739\\uA73B\",\n }, {\n base: 'ay',\n chars: \"\\uA73D\",\n }, {\n base: 'b',\n chars: \"\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\\u0182\",\n }, {\n base: 'c',\n chars: \"\\uFF43\\u24D2\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184\",\n }, {\n base: 'd',\n chars: \"\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\u018B\\u13E7\\u0501\\uA7AA\",\n }, {\n base: 'dh',\n chars: \"\\u00F0\",\n }, {\n base: 'dz',\n chars: \"\\u01F3\\u01C6\",\n }, {\n base: 'e',\n chars: \"\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u01DD\",\n }, {\n base: 'f',\n chars: \"\\u24D5\\uFF46\\u1E1F\\u0192\",\n }, {\n base: 'ff',\n chars: \"\\uFB00\",\n }, {\n base: 'fi',\n chars: \"\\uFB01\",\n }, {\n base: 'fl',\n chars: \"\\uFB02\",\n }, {\n base: 'ffi',\n chars: \"\\uFB03\",\n }, {\n base: 'ffl',\n chars: \"\\uFB04\",\n }, {\n base: 'g',\n chars: \"\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\uA77F\\u1D79\",\n }, {\n base: 'h',\n chars: \"\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\",\n }, {\n base: 'hv',\n chars: \"\\u0195\",\n }, {\n base: 'i',\n chars: \"\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\",\n }, {\n base: 'j',\n chars: \"\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\",\n }, {\n base: 'k',\n chars: \"\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\",\n }, {\n base: 'l',\n chars: \"\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\\u026D\",\n }, {\n base: 'lj',\n chars: \"\\u01C9\",\n }, {\n base: 'm',\n chars: \"\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\",\n }, {\n base: 'n',\n chars: \"\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u043B\\u0509\",\n }, {\n base: 'nj',\n chars: \"\\u01CC\",\n }, {\n base: 'o',\n chars: \"\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\uA74B\\uA74D\\u0275\\u0254\\u1D11\",\n }, {\n base: 'oe',\n chars: \"\\u0153\",\n }, {\n base: 'oi',\n chars: \"\\u01A3\",\n }, {\n base: 'oo',\n chars: \"\\uA74F\",\n }, {\n base: 'ou',\n chars: \"\\u0223\",\n }, {\n base: 'p',\n chars: \"\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\\u03C1\",\n }, {\n base: 'q',\n chars: \"\\u24E0\\uFF51\\u024B\\uA757\\uA759\",\n }, {\n base: 'r',\n chars: \"\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\",\n }, {\n base: 's',\n chars: \"\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u0282\",\n }, {\n base: 'ss',\n chars: \"\\xDF\",\n }, {\n base: 't',\n chars: \"\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\",\n }, {\n base: 'th',\n chars: \"\\u00FE\",\n }, {\n base: 'tz',\n chars: \"\\uA729\",\n }, {\n base: 'u',\n chars: \"\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\",\n }, {\n base: 'v',\n chars: \"\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\",\n }, {\n base: 'vy',\n chars: \"\\uA761\",\n }, {\n base: 'w',\n chars: \"\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\",\n }, {\n base: 'x',\n chars: \"\\u24E7\\uFF58\\u1E8B\\u1E8D\",\n }, {\n base: 'y',\n chars: \"\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\",\n }, {\n base: 'z',\n chars: \"\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\",\n }\n];\n\nvar diacriticsMap = {};\nfor (var i = 0; i < replacementList.length; i += 1) {\n var chars = replacementList[i].chars;\n for (var j = 0; j < chars.length; j += 1) {\n diacriticsMap[chars[j]] = replacementList[i].base;\n }\n}\n\nfunction removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007e]/g, function(c) {\n return diacriticsMap[c] || c;\n });\n}\n\nexports.replacementList = replacementList;\nexports.diacriticsMap = diacriticsMap;\n","import 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 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 {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 this.emitter.on(['after-filtering'], () => this.linkFilters());\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 if (!flt) {\r\n return [];\r\n }\r\n\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 this.emitter.off(['after-filtering'], () => this.linkFilters());\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 this.emitter.on(['after-filtering'], () => this.linkFilters());\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.emitter.off(['after-filtering'], () => this.linkFilters());\r\n this.initialized = false;\r\n }\r\n}\r\n","/**\r\n * Event emitter class\r\n */\r\nexport class Emitter {\r\n /**\r\n * Creates an instance of Emitter.\r\n */\r\n constructor() {\r\n /**\r\n * Events object\r\n * @type {Object}\r\n */\r\n this.events = {};\r\n }\r\n\r\n /**\r\n * Subscribe to an event\r\n * @param {Array} evts Collection of event names\r\n * @param {Function} fn Function invoked when event is emitted\r\n */\r\n on(evts, fn) {\r\n evts.forEach((evt) => {\r\n this.events[evt] = this.events[evt] || [];\r\n this.events[evt].push(fn);\r\n });\r\n }\r\n\r\n /**\r\n * Unsubscribe to an event\r\n * @param {Array} evts Collection of event names\r\n * @param {Function} fn Function invoked when event is emitted\r\n */\r\n off(evts, fn) {\r\n evts.forEach((evt) => {\r\n if (evt in this.events) {\r\n this.events[evt].splice(this.events[evt].indexOf(fn), 1);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Emit an event\r\n * @param {String} evt Event name followed by any other argument passed to\r\n * the invoked function\r\n */\r\n emit(evt /*, args...*/) {\r\n if (evt in this.events) {\r\n for (let i = 0; i < this.events[evt].length; i++) {\r\n this.events[evt][i].apply(this, [].slice.call(arguments, 1));\r\n }\r\n }\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 collectUpdateDateArguments(args, allowDuration) {\n var arg1 = args[0], arg2 = args[1], params, reset;\n if (allowDuration && isString(arg1)) {\n params = getDateParamsFromString(arg1);\n reset = arg2;\n } else if (isNumber(arg1) && isNumber(arg2)) {\n params = collectDateParamsFromArguments(args);\n } else {\n params = isObjectType(arg1) ? simpleClone(arg1) : arg1;\n reset = arg2;\n }\n return [params, reset];\n}\n\nmodule.exports = collectUpdateDateArguments;","'use strict';\n\nvar updateDate = require('./updateDate'),\n collectUpdateDateArguments = require('./collectUpdateDateArguments');\n\nfunction advanceDateWithArgs(d, args, dir) {\n args = collectUpdateDateArguments(args, true);\n return updateDate(d, args[0], args[1], dir);\n}\n\nmodule.exports = advanceDateWithArgs;","'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 // istanbul ignore if\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|ayy',\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 getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar AmericanEnglishDefinition = getEnglishVariant({\n 'mdy': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'short': '{MM}/{dd}/{yyyy}',\n 'medium': '{Month} {d}, {yyyy}',\n 'long': '{Month} {d}, {yyyy} {time}',\n 'full': '{Weekday}, {Month} {d}, {yyyy} {time}',\n 'stamp': '{Dow} {Mon} {d} {yyyy} {time}',\n 'time': '{h}:{mm} {TT}'\n});\n\nmodule.exports = AmericanEnglishDefinition;","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","import {addEvt, cancelEvt, stopEvt, targetEvt, isKeyPressed} from './event';\r\nimport {\r\n addClass, createElm, elm, getText, getFirstTextNode, removeClass, tag\r\n} from './dom';\r\nimport {contains, matchCase, rgxEsc, trim, toCamelCase} from './string';\r\nimport {\r\n isArray, isEmpty, isFn, isNumber, isObj, isString, isUndef, EMPTY_FN,\r\n isBoolean\r\n} from './types';\r\nimport {parse as parseNb} from './number';\r\nimport {\r\n defaultsBool, defaultsStr, defaultsFn,\r\n defaultsNb, defaultsArr\r\n} from './settings';\r\n\r\nimport {root} from './root';\r\nimport {Emitter} from './emitter';\r\nimport {Dropdown} from './modules/dropdown';\r\nimport {CheckList} from './modules/checkList';\r\nimport {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\nimport {\r\n INPUT, SELECT, MULTIPLE, CHECKLIST, NONE,\r\n ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY,\r\n CELL_TAG, AUTO_FILTER_DELAY, NUMBER, DATE, FORMATTED_NUMBER\r\n} from './const';\r\n\r\nlet doc = root.document;\r\n\r\nconst FEATURES = [\r\n DateType, Help, State, MarkActiveColumns, GridLayout, Loader,\r\n HighlightKeyword, PopupFilter, RowsCounter, StatusBar, ClearButton,\r\n AlternateRows, NoResults, Paging, Toolbar\r\n];\r\n\r\n/**\r\n * Makes HTML tables filterable and a bit more :)\r\n *\r\n * @export\r\n * @class TableFilter\r\n */\r\nexport class TableFilter {\r\n\r\n /**\r\n * Creates an instance of TableFilter\r\n * requires `table` or `id` arguments, `row` and `configuration` optional\r\n * @param {HTMLTableElement} table Table DOM element\r\n * @param {String} id Table id\r\n * @param {Number} row index indicating the 1st row\r\n * @param {Object} configuration object\r\n */\r\n constructor(...args) {\r\n /**\r\n * ID of current instance\r\n * @type {String}\r\n * @private\r\n */\r\n this.id = null;\r\n\r\n /**\r\n * Current version\r\n * @type {String}\r\n */\r\n this.version = '0.6.78';\r\n\r\n /**\r\n * Current year\r\n * @type {Number}\r\n * @private\r\n */\r\n this.year = new Date().getFullYear();\r\n\r\n /**\r\n * HTML Table DOM element\r\n * @type {DOMElement}\r\n * @private\r\n */\r\n this.tbl = null;\r\n\r\n /**\r\n * Calculated row's index from which starts filtering once filters\r\n * are generated\r\n * @type {Number}\r\n */\r\n this.refRow = null;\r\n\r\n /**\r\n * Index of the headers row\r\n * @type {Number}\r\n * @private\r\n */\r\n this.headersRow = null;\r\n\r\n /**\r\n * Configuration object\r\n * @type {Object}\r\n * @private\r\n */\r\n this.cfg = {};\r\n\r\n /**\r\n * Number of rows that can be filtered\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbFilterableRows = 0;\r\n\r\n /**\r\n * Number of cells in the reference row\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbCells = null;\r\n\r\n /**\r\n * Has a configuration object\r\n * @type {Object}\r\n * @private\r\n */\r\n this.hasConfig = false;\r\n\r\n /** @private */\r\n this.initialized = false;\r\n\r\n let startRow;\r\n\r\n // TODO: use for-of\r\n args.forEach((arg) => {\r\n if (typeof arg === 'object' && arg.nodeName === 'TABLE') {\r\n this.tbl = arg;\r\n this.id = arg.id || `tf_${new Date().getTime()}_`;\r\n this.tbl.id = this.id;\r\n } else if (isString(arg)) {\r\n this.id = arg;\r\n this.tbl = elm(arg);\r\n } else if (isNumber(arg)) {\r\n startRow = arg;\r\n } else if (isObj(arg)) {\r\n this.cfg = arg;\r\n this.hasConfig = true;\r\n }\r\n });\r\n\r\n if (!this.tbl || this.tbl.nodeName !== 'TABLE') {\r\n throw new Error(`Could not instantiate TableFilter: HTML table\r\n DOM element not found.`);\r\n }\r\n\r\n if (this.getRowsNb(true) === 0) {\r\n throw new Error(`Could not instantiate TableFilter: HTML table\r\n requires at least 1 row.`);\r\n }\r\n\r\n // configuration object\r\n let f = this.cfg;\r\n\r\n /**\r\n * Event emitter instance\r\n * @type {Emitter}\r\n */\r\n this.emitter = new Emitter();\r\n\r\n // start row\r\n this.refRow = isUndef(startRow) ? 2 : (startRow + 1);\r\n\r\n /**\r\n * Collection of filter type by column\r\n * @type {Array}\r\n * @private\r\n */\r\n this.filterTypes = [].map.call(\r\n (this.dom().rows[this.refRow] || this.dom().rows[0]).cells,\r\n (cell, idx) => {\r\n let colType = this.cfg[`col_${idx}`];\r\n return !colType ? INPUT : colType.toLowerCase();\r\n });\r\n\r\n /**\r\n * Base path for static assets\r\n * @type {String}\r\n */\r\n this.basePath = defaultsStr(f.base_path, 'tablefilter/');\r\n\r\n /*** filters' grid properties ***/\r\n\r\n /**\r\n * Enable/disable filters\r\n * @type {Boolean}\r\n */\r\n this.fltGrid = defaultsBool(f.grid, true);\r\n\r\n /**\r\n * Enable/disable grid layout (fixed headers)\r\n * @type {Object|Boolean}\r\n */\r\n this.gridLayout = isObj(f.grid_layout) || Boolean(f.grid_layout);\r\n\r\n /**\r\n * Filters row index\r\n * @type {Number}\r\n */\r\n this.filtersRowIndex = defaultsNb(f.filters_row_index, 0);\r\n\r\n /**\r\n * Headers row index\r\n * @type {Number}\r\n */\r\n this.headersRow = defaultsNb(f.headers_row_index,\r\n (this.filtersRowIndex === 0 ? 1 : 0));\r\n\r\n /**\r\n * Define the type of cell containing a filter (td/th)\r\n * @type {String}\r\n */\r\n this.fltCellTag = defaultsStr(f.filters_cell_tag, CELL_TAG);\r\n\r\n /**\r\n * List of filters IDs\r\n * @type {Array}\r\n * @private\r\n */\r\n this.fltIds = [];\r\n\r\n /**\r\n * List of valid rows indexes (rows visible upon filtering)\r\n * @type {Array}\r\n * @private\r\n */\r\n this.validRowsIndex = [];\r\n\r\n /*** filters' grid appearance ***/\r\n /**\r\n * Path for stylesheets\r\n * @type {String}\r\n */\r\n this.stylePath = this.getStylePath();\r\n\r\n /**\r\n * Main stylesheet path\r\n * @type {String}\r\n */\r\n this.stylesheet = this.getStylesheetPath();\r\n\r\n /**\r\n * Main stylesheet ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.stylesheetId = this.id + '_style';\r\n\r\n /**\r\n * Css class for the filters row\r\n * @type {String}\r\n */\r\n this.fltsRowCssClass = defaultsStr(f.flts_row_css_class, 'fltrow');\r\n\r\n /**\r\n * Enable/disable icons (paging, reset button)\r\n * @type {Boolean}\r\n */\r\n this.enableIcons = defaultsBool(f.enable_icons, true);\r\n\r\n /**\r\n * Enable/disable alternating rows\r\n * @type {Boolean}\r\n */\r\n this.alternateRows = Boolean(f.alternate_rows);\r\n\r\n /**\r\n * Columns widths array\r\n * @type {Array}\r\n */\r\n this.colWidths = defaultsArr(f.col_widths, []);\r\n\r\n /**\r\n * Default column width when column widths are defined\r\n */\r\n this.defaultColWidth = defaultsNb(f.default_col_width, 100);\r\n\r\n /**\r\n * Css class for a filter element\r\n * @type {String}\r\n */\r\n this.fltCssClass = defaultsStr(f.flt_css_class, 'flt');\r\n\r\n /**\r\n * Css class for multiple select filters\r\n * @type {String}\r\n */\r\n this.fltMultiCssClass = defaultsStr(f.flt_multi_css_class, 'flt_multi');\r\n\r\n /**\r\n * Css class for small filter (when submit button is active)\r\n * @type {String}\r\n */\r\n this.fltSmallCssClass = defaultsStr(f.flt_small_css_class, 'flt_s');\r\n\r\n /**\r\n * Css class for single filter type\r\n * @type {String}\r\n */\r\n this.singleFltCssClass = defaultsStr((f.single_filter || {}).css_class,\r\n 'single_flt');\r\n\r\n /*** filters' grid behaviours ***/\r\n\r\n /**\r\n * Enable/disable enter key for input type filters\r\n * @type {Boolean}\r\n */\r\n this.enterKey = defaultsBool(f.enter_key, true);\r\n\r\n /**\r\n * Callback fired before filtering process starts\r\n * @type {Function}\r\n */\r\n this.onBeforeFilter = defaultsFn(f.on_before_filter, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after filtering process is completed\r\n * @type {Function}\r\n */\r\n this.onAfterFilter = defaultsFn(f.on_after_filter, EMPTY_FN);\r\n\r\n /**\r\n * Enable/disable case sensitivity filtering\r\n * @type {Boolean}\r\n */\r\n this.caseSensitive = Boolean(f.case_sensitive);\r\n\r\n /**\r\n * Indicate whether exact match filtering is enabled on a per column\r\n * basis\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasExactMatchByCol = isArray(f.columns_exact_match);\r\n\r\n /**\r\n * Exact match filtering per column array\r\n * @type {Array}\r\n */\r\n this.exactMatchByCol = this.hasExactMatchByCol ?\r\n f.columns_exact_match : [];\r\n\r\n /**\r\n * Globally enable/disable exact match filtering\r\n * @type {Boolean}\r\n */\r\n this.exactMatch = Boolean(f.exact_match);\r\n\r\n /**\r\n * Ignore diacritics globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\r\n this.ignoreDiacritics = f.ignore_diacritics;\r\n\r\n /**\r\n * Enable/disable linked filters filtering mode\r\n * @type {Boolean}\r\n */\r\n this.linkedFilters = Boolean(f.linked_filters);\r\n\r\n /**\r\n * Enable/disable readonly state for excluded options when\r\n * linked filters filtering mode is on\r\n * @type {Boolean}\r\n */\r\n this.disableExcludedOptions = Boolean(f.disable_excluded_options);\r\n\r\n /**\r\n * Active filter ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.activeFilterId = null;\r\n\r\n /**\r\n * Determine if there are excluded rows from filtering\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasExcludedRows = Boolean(isArray(f.exclude_rows) &&\r\n f.exclude_rows.length > 0);\r\n\r\n /**\r\n * List of row indexes to be excluded from filtering\r\n * @type {Array}\r\n */\r\n this.excludeRows = defaultsArr(f.exclude_rows, []);\r\n\r\n /**\r\n * List of containers IDs where external filters will be generated\r\n * @type {Array}\r\n */\r\n this.externalFltIds = defaultsArr(f.external_flt_ids, []);\r\n\r\n /**\r\n * Callback fired after filters are generated\r\n * @type {Function}\r\n */\r\n this.onFiltersLoaded = defaultsFn(f.on_filters_loaded, EMPTY_FN);\r\n\r\n /**\r\n * Enable/disable single filter mode\r\n * @type {Boolean|Object}\r\n */\r\n this.singleFlt = isObj(f.single_filter) || Boolean(f.single_filter);\r\n\r\n /**\r\n * Specify columns to be excluded from single filter search, by default\r\n * searching in all columns:\r\n * single_filter: {\r\n * exclude_cols: [2, 7]\r\n * }\r\n */\r\n this.singleFltExcludeCols = isObj(f.single_filter) &&\r\n isArray(f.single_filter.exclude_cols) ?\r\n f.single_filter.exclude_cols : [];\r\n\r\n /**\r\n * Callback fired after a row is validated during filtering\r\n * @type {Function}\r\n */\r\n this.onRowValidated = defaultsFn(f.on_row_validated, EMPTY_FN);\r\n\r\n /**\r\n * Specify which column implements a custom cell parser to retrieve the\r\n * cell value:\r\n * cell_parser: {\r\n * cols: [0, 2],\r\n * parse: function(tf, cell, colIndex) {\r\n * // custom cell parser logic here\r\n * return cellValue;\r\n * }\r\n * }\r\n * @type {Object}\r\n */\r\n this.cellParser = isObj(f.cell_parser) && isFn(f.cell_parser.parse) &&\r\n isArray(f.cell_parser.cols) ?\r\n f.cell_parser : { cols: [], parse: EMPTY_FN };\r\n\r\n /**\r\n * Global watermark text for input filter type or watermark for each\r\n * filter if an array is supplied\r\n * @type {String|Array}\r\n */\r\n this.watermark = f.watermark || '';\r\n\r\n /**\r\n * Indicate whether watermark is on a per column basis\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isWatermarkArray = isArray(this.watermark);\r\n\r\n /**\r\n * Indicate whether help UI component is disabled\r\n * @type {Boolean}\r\n */\r\n this.help = isUndef(f.help_instructions) ? undefined :\r\n (isObj(f.help_instructions) || Boolean(f.help_instructions));\r\n\r\n /**\r\n * Indicate whether pop-up filters UI is enabled\r\n * @type {Boolean|Object}\r\n */\r\n this.popupFilters = isObj(f.popup_filters) || Boolean(f.popup_filters);\r\n\r\n /**\r\n * Indicate whether filtered (active) columns indicator is enabled\r\n * @type {Boolean}\r\n */\r\n this.markActiveColumns = isObj(f.mark_active_columns) ||\r\n Boolean(f.mark_active_columns);\r\n\r\n /*** select filter's customisation and behaviours ***/\r\n /**\r\n * Text for clear option in drop-down filter types (1st option)\r\n * @type {String|Array}\r\n */\r\n this.clearFilterText = defaultsStr(f.clear_filter_text, 'Clear');\r\n\r\n /**\r\n * Indicate whether empty option is enabled in drop-down filter types\r\n * @type {Boolean}\r\n */\r\n this.enableEmptyOption = Boolean(f.enable_empty_option);\r\n\r\n /**\r\n * Text for empty option in drop-down filter types\r\n * @type {String}\r\n */\r\n this.emptyText = defaultsStr(f.empty_text, '(Empty)');\r\n\r\n /**\r\n * Indicate whether non-empty option is enabled in drop-down filter\r\n * types\r\n * @type {Boolean}\r\n */\r\n this.enableNonEmptyOption = Boolean(f.enable_non_empty_option);\r\n\r\n /**\r\n * Text for non-empty option in drop-down filter types\r\n * @type {String}\r\n */\r\n this.nonEmptyText = defaultsStr(f.non_empty_text, '(Non empty)');\r\n\r\n /**\r\n * Indicate whether drop-down filter types filter the table by default\r\n * on change event\r\n * @type {Boolean}\r\n */\r\n this.onSlcChange = defaultsBool(f.on_change, true);\r\n\r\n /**\r\n * Make drop-down filter types options sorted in alpha-numeric manner\r\n * by default globally or on a column basis\r\n * @type {Boolean|Array}\r\n */\r\n this.sortSlc = isUndef(f.sort_select) ? true :\r\n isArray(f.sort_select) ? f.sort_select : Boolean(f.sort_select);\r\n\r\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * ascending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isSortNumAsc = Boolean(f.sort_num_asc);\r\n\r\n /**\r\n * List of columns implementing options sorting in a ascending numeric\r\n * manner\r\n * @type {Array}\r\n */\r\n this.sortNumAsc = this.isSortNumAsc ? f.sort_num_asc : [];\r\n\r\n /**\r\n * Indicate whether options in drop-down filter types are sorted in a\r\n * descending numeric manner\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isSortNumDesc = Boolean(f.sort_num_desc);\r\n\r\n /**\r\n * List of columns implementing options sorting in a descending numeric\r\n * manner\r\n * @type {Array}\r\n */\r\n this.sortNumDesc = this.isSortNumDesc ? f.sort_num_desc : [];\r\n\r\n /**\r\n * Indicate whether drop-down filter types are populated on demand at\r\n * first usage\r\n * @type {Boolean}\r\n */\r\n this.loadFltOnDemand = Boolean(f.load_filters_on_demand);\r\n\r\n /**\r\n * Indicate whether custom drop-down filter options are implemented\r\n * @type {Boolean}\r\n */\r\n this.hasCustomOptions = isObj(f.custom_options);\r\n\r\n /**\r\n * Custom options definition of a per column basis, ie:\r\n *\tcustom_options: {\r\n * cols:[0, 1],\r\n * texts: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * values: [\r\n * ['a0', 'b0', 'c0'],\r\n * ['a1', 'b1', 'c1']\r\n * ],\r\n * sorts: [false, true]\r\n * }\r\n *\r\n * @type {Object}\r\n */\r\n this.customOptions = f.custom_options;\r\n\r\n /*** Filter operators ***/\r\n /**\r\n * Regular expression operator for input filter. Defaults to 'rgx:'\r\n * @type {String}\r\n */\r\n this.rgxOperator = defaultsStr(f.regexp_operator, 'rgx:');\r\n\r\n /**\r\n * Empty cells operator for input filter. Defaults to '[empty]'\r\n * @type {String}\r\n */\r\n this.emOperator = defaultsStr(f.empty_operator, '[empty]');\r\n\r\n /**\r\n * Non-empty cells operator for input filter. Defaults to '[nonempty]'\r\n * @type {String}\r\n */\r\n this.nmOperator = defaultsStr(f.nonempty_operator, '[nonempty]');\r\n\r\n /**\r\n * Logical OR operator for input filter. Defaults to '||'\r\n * @type {String}\r\n */\r\n this.orOperator = defaultsStr(f.or_operator, '||');\r\n\r\n /**\r\n * Logical AND operator for input filter. Defaults to '&&'\r\n * @type {String}\r\n */\r\n this.anOperator = defaultsStr(f.and_operator, '&&');\r\n\r\n /**\r\n * Greater than operator for input filter. Defaults to '>'\r\n * @type {String}\r\n */\r\n this.grOperator = defaultsStr(f.greater_operator, '>');\r\n\r\n /**\r\n * Lower than operator for input filter. Defaults to '<'\r\n * @type {String}\r\n */\r\n this.lwOperator = defaultsStr(f.lower_operator, '<');\r\n\r\n /**\r\n * Lower than or equal operator for input filter. Defaults to '<='\r\n * @type {String}\r\n */\r\n this.leOperator = defaultsStr(f.lower_equal_operator, '<=');\r\n\r\n /**\r\n * Greater than or equal operator for input filter. Defaults to '>='\r\n * @type {String}\r\n */\r\n this.geOperator = defaultsStr(f.greater_equal_operator, '>=');\r\n\r\n /**\r\n * Inequality operator for input filter. Defaults to '!'\r\n * @type {String}\r\n */\r\n this.dfOperator = defaultsStr(f.different_operator, '!');\r\n\r\n /**\r\n * Like operator for input filter. Defaults to '*'\r\n * @type {String}\r\n */\r\n this.lkOperator = defaultsStr(f.like_operator, '*');\r\n\r\n /**\r\n * Strict equality operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.eqOperator = defaultsStr(f.equal_operator, '=');\r\n\r\n /**\r\n * Starts with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.stOperator = defaultsStr(f.start_with_operator, '{');\r\n\r\n /**\r\n * Ends with operator for input filter. Defaults to '='\r\n * @type {String}\r\n */\r\n this.enOperator = defaultsStr(f.end_with_operator, '}');\r\n\r\n // this.curExp = f.cur_exp || '^[¥£€$]';\r\n\r\n /**\r\n * Stored values separator\r\n * @type {String}\r\n */\r\n this.separator = defaultsStr(f.separator, ',');\r\n\r\n /**\r\n * Enable rows counter UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.rowsCounter = isObj(f.rows_counter) || Boolean(f.rows_counter);\r\n\r\n /**\r\n * Enable status bar UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.statusBar = isObj(f.status_bar) || Boolean(f.status_bar);\r\n\r\n /**\r\n * Enable activity/spinner indicator UI component\r\n * @type {Boolean|Object}\r\n */\r\n this.loader = isObj(f.loader) || Boolean(f.loader);\r\n\r\n /*** validation - reset buttons/links ***/\r\n /**\r\n * Enable filters submission button\r\n * @type {Boolean}\r\n */\r\n this.displayBtn = Boolean(f.btn);\r\n\r\n /**\r\n * Define filters submission button text\r\n * @type {String}\r\n */\r\n this.btnText = defaultsStr(f.btn_text, (!this.enableIcons ? 'Go' : ''));\r\n\r\n /**\r\n * Css class for filters submission button\r\n * @type {String}\r\n */\r\n this.btnCssClass = defaultsStr(f.btn_css_class,\r\n (!this.enableIcons ? 'btnflt' : 'btnflt_icon'));\r\n\r\n /**\r\n * Enable clear button\r\n * @type {Object|Boolean}\r\n */\r\n this.btnReset = isObj(f.btn_reset) || Boolean(f.btn_reset);\r\n\r\n /**\r\n * Callback fired before filters are cleared\r\n * @type {Function}\r\n */\r\n this.onBeforeReset = defaultsFn(f.on_before_reset, EMPTY_FN);\r\n\r\n /**\r\n * Callback fired after filters are cleared\r\n * @type {Function}\r\n */\r\n this.onAfterReset = defaultsFn(f.on_after_reset, EMPTY_FN);\r\n\r\n /**\r\n * Enable paging component\r\n * @type {Object|Boolean}\r\n */\r\n this.paging = isObj(f.paging) || Boolean(f.paging);\r\n\r\n /**\r\n * Number of hidden rows\r\n * @type {Number}\r\n * @private\r\n */\r\n this.nbHiddenRows = 0;\r\n\r\n /**\r\n * Enable auto-filter behaviour, table is filtered when a user\r\n * stops typing\r\n * @type {Object|Boolean}\r\n */\r\n this.autoFilter = isObj(f.auto_filter) || Boolean(f.auto_filter);\r\n\r\n /**\r\n * Auto-filter delay in milliseconds\r\n * @type {Number}\r\n */\r\n this.autoFilterDelay = isObj(f.auto_filter) &&\r\n isNumber(f.auto_filter.delay) ?\r\n f.auto_filter.delay : AUTO_FILTER_DELAY;\r\n\r\n /**\r\n * Indicate whether user is typing\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.isUserTyping = null;\r\n\r\n /**\r\n * Auto-filter interval ID\r\n * @type {String}\r\n * @private\r\n */\r\n this.autoFilterTimer = null;\r\n\r\n /**\r\n * Enable keyword highlighting behaviour\r\n * @type {Boolean}\r\n */\r\n this.highlightKeywords = Boolean(f.highlight_keywords);\r\n\r\n /**\r\n * Enable no results message UI component\r\n * @type {Object|Boolean}\r\n */\r\n this.noResults = isObj(f.no_results_message) ||\r\n Boolean(f.no_results_message);\r\n\r\n /**\r\n * Enable state persistence\r\n * @type {Object|Boolean}\r\n */\r\n this.state = isObj(f.state) || Boolean(f.state);\r\n\r\n /*** data types ***/\r\n\r\n /**\r\n * Enable date type module\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.dateType = true;\r\n\r\n /**\r\n * Define default locale, default to 'en' as per Sugar Date module:\r\n * https://sugarjs.com/docs/#/DateLocales\r\n * @type {String}\r\n */\r\n this.locale = defaultsStr(f.locale, 'en');\r\n\r\n /**\r\n * Define thousands separator ',' or '.', defaults to ','\r\n * @type {String}\r\n */\r\n this.thousandsSeparator = defaultsStr(f.thousands_separator, ',');\r\n\r\n /**\r\n * Define decimal separator ',' or '.', defaults to '.'\r\n * @type {String}\r\n */\r\n this.decimalSeparator = defaultsStr(f.decimal_separator, '.');\r\n\r\n /**\r\n * Define data types on a column basis, possible values 'string',\r\n * 'number', 'formatted-number', 'date', 'ipaddress' ie:\r\n * col_types : [\r\n * 'string', 'date', 'number',\r\n * { type: 'formatted-number', decimal: ',', thousands: '.' },\r\n * { type: 'date', locale: 'en-gb' },\r\n * { type: 'date', format: ['{dd}-{months}-{yyyy|yy}'] }\r\n * ]\r\n *\r\n * Refer to https://sugarjs.com/docs/#/DateParsing for exhaustive\r\n * information on date parsing formats supported by Sugar Date\r\n * @type {Array}\r\n */\r\n this.colTypes = isArray(f.col_types) ? f.col_types : [];\r\n\r\n /*** ids prefixes ***/\r\n /**\r\n * Main prefix\r\n * @private\r\n */\r\n this.prfxTf = 'TF';\r\n\r\n /**\r\n * Filter's ID prefix (inputs - selects)\r\n * @private\r\n */\r\n this.prfxFlt = 'flt';\r\n\r\n /**\r\n * Button's ID prefix\r\n * @private\r\n */\r\n this.prfxValButton = 'btn';\r\n\r\n /**\r\n * Responsive Css class\r\n * @private\r\n */\r\n this.prfxResponsive = 'resp';\r\n\r\n /** @private */\r\n this.stickyCssClass = 'sticky';\r\n\r\n /*** extensions ***/\r\n /**\r\n * List of loaded extensions\r\n * @type {Array}\r\n */\r\n this.extensions = defaultsArr(f.extensions, []);\r\n\r\n /*** themes ***/\r\n /**\r\n * Enable default theme\r\n * @type {Boolean}\r\n */\r\n this.enableDefaultTheme = Boolean(f.enable_default_theme);\r\n\r\n /**\r\n * Determine whether themes are enables\r\n * @type {Boolean}\r\n * @private\r\n */\r\n this.hasThemes = (this.enableDefaultTheme || isArray(f.themes));\r\n\r\n /**\r\n * List of themes, ie:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\r\n this.themes = defaultsArr(f.themes, []);\r\n\r\n /**\r\n * Define path to themes assets, defaults to\r\n * 'tablefilter/style/themes/'. Usage:\r\n * themes: [{ name: 'skyblue' }]\r\n * @type {Array}\r\n */\r\n this.themesPath = this.getThemesPath();\r\n\r\n /**\r\n * Enable responsive layout\r\n * @type {Boolean}\r\n */\r\n this.responsive = Boolean(f.responsive);\r\n\r\n /**\r\n * Enable toolbar component\r\n * @type {Object|Boolean}\r\n */\r\n this.toolbar = isObj(f.toolbar) || Boolean(f.toolbar);\r\n\r\n /**\r\n * Enable sticky headers\r\n * @type {Boolean}\r\n */\r\n this.stickyHeaders = Boolean(f.sticky_headers);\r\n\r\n /**\r\n * Features registry\r\n * @private\r\n */\r\n this.Mod = {};\r\n\r\n /**\r\n * Extensions registry\r\n * @private\r\n */\r\n this.ExtRegistry = {};\r\n\r\n // instantiate features if needed\r\n this.instantiateFeatures(FEATURES);\r\n }\r\n\r\n /**\r\n * Initialise features and layout\r\n */\r\n init() {\r\n if (this.initialized) {\r\n return;\r\n }\r\n\r\n // import main stylesheet\r\n this.import(this.stylesheetId, this.getStylesheetPath(), null, 'link');\r\n\r\n let Mod = this.Mod;\r\n let inpclass;\r\n\r\n //loads theme\r\n this.loadThemes();\r\n\r\n //explicitly initialise features in given order\r\n this.initFeatures([\r\n DateType,\r\n Help,\r\n State,\r\n MarkActiveColumns,\r\n GridLayout,\r\n Loader,\r\n HighlightKeyword,\r\n PopupFilter\r\n ]);\r\n\r\n //filters grid is not generated\r\n if (!this.fltGrid) {\r\n this._initNoFilters();\r\n } else {\r\n let fltrow = this._insertFiltersRow();\r\n\r\n this.nbCells = this.getCellsNb(this.refRow);\r\n this.nbFilterableRows = this.getRowsNb();\r\n\r\n let n = this.singleFlt ? 1 : this.nbCells;\r\n\r\n //build filters\r\n for (let i = 0; i < n; i++) {\r\n this.emitter.emit('before-filter-init', this, i);\r\n\r\n let fltCell = createElm(this.fltCellTag),\r\n col = this.getFilterType(i);\r\n\r\n if (this.singleFlt) {\r\n fltCell.colSpan = this.nbCells;\r\n }\r\n if (!this.gridLayout) {\r\n fltrow.appendChild(fltCell);\r\n }\r\n inpclass = (i === n - 1 && this.displayBtn) ?\r\n this.fltSmallCssClass : this.fltCssClass;\r\n\r\n //only 1 input for single search\r\n if (this.singleFlt) {\r\n col = INPUT;\r\n inpclass = this.singleFltCssClass;\r\n }\r\n\r\n //drop-down filters\r\n if (col === SELECT || col === MULTIPLE) {\r\n Mod.dropdown = Mod.dropdown || new Dropdown(this);\r\n Mod.dropdown.init(i, this.isExternalFlt(), fltCell);\r\n }\r\n // checklist\r\n else if (col === CHECKLIST) {\r\n Mod.checkList = Mod.checkList || new CheckList(this);\r\n Mod.checkList.init(i, this.isExternalFlt(), fltCell);\r\n } else {\r\n this._buildInputFilter(i, inpclass, fltCell);\r\n }\r\n\r\n // this adds submit button\r\n if (i === n - 1 && this.displayBtn) {\r\n this._buildSubmitButton(\r\n this.isExternalFlt() ?\r\n elm(this.externalFltIds[i]) :\r\n fltCell\r\n );\r\n }\r\n\r\n this.emitter.emit('after-filter-init', this, i);\r\n }\r\n\r\n this.emitter.on(['filter-focus'],\r\n (tf, filter) => this.setActiveFilterId(filter.id));\r\n\r\n }//if this.fltGrid\r\n\r\n /* Features */\r\n if (this.hasExcludedRows) {\r\n this.emitter.on(['after-filtering'], () => this.setExcludeRows());\r\n this.setExcludeRows();\r\n }\r\n\r\n this.initFeatures([\r\n RowsCounter,\r\n StatusBar,\r\n ClearButton,\r\n AlternateRows,\r\n NoResults,\r\n Paging,\r\n Toolbar\r\n ]);\r\n\r\n this.setColWidths();\r\n\r\n //TF css class is added to table\r\n if (!this.gridLayout) {\r\n addClass(this.dom(), this.prfxTf);\r\n if (this.responsive) {\r\n addClass(this.dom(), this.prfxResponsive);\r\n }\r\n if (this.colWidths.length > 0) {\r\n this.setFixedLayout();\r\n }\r\n if (this.stickyHeaders && this.dom().tHead) {\r\n addClass(this.dom(), this.stickyCssClass);\r\n }\r\n }\r\n\r\n /* Load extensions */\r\n this.initExtensions();\r\n\r\n this.initialized = true;\r\n\r\n this.onFiltersLoaded(this);\r\n\r\n this.emitter.emit('initialized', this);\r\n }\r\n\r\n /**\r\n * Detect key\r\n * @param {Event} evt\r\n */\r\n detectKey(evt) {\r\n if (!this.enterKey) {\r\n return;\r\n }\r\n\r\n if (isKeyPressed(evt, [ENTER_KEY])) {\r\n this.filter();\r\n cancelEvt(evt);\r\n stopEvt(evt);\r\n } else {\r\n this.isUserTyping = true;\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n }\r\n }\r\n\r\n /**\r\n * Filter's keyup event: if auto-filter on, detect user is typing and filter\r\n * columns\r\n * @param {Event} evt\r\n */\r\n onKeyUp(evt) {\r\n if (!this.autoFilter) {\r\n return;\r\n }\r\n this.isUserTyping = false;\r\n\r\n function filter() {\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n if (!this.isUserTyping) {\r\n this.filter();\r\n this.isUserTyping = null;\r\n }\r\n }\r\n\r\n if (isKeyPressed(evt,\r\n [ENTER_KEY, TAB_KEY, ESC_KEY, UP_ARROW_KEY, DOWN_ARROW_KEY])) {\r\n root.clearInterval(this.autoFilterTimer);\r\n this.autoFilterTimer = null;\r\n } else {\r\n if (this.autoFilterTimer !== null) {\r\n return;\r\n }\r\n this.autoFilterTimer = root.setInterval(\r\n filter.bind(this),\r\n this.autoFilterDelay);\r\n }\r\n }\r\n\r\n /**\r\n * Filter's keydown event: if auto-filter on, detect user is typing\r\n */\r\n onKeyDown() {\r\n if (this.autoFilter) {\r\n this.isUserTyping = true;\r\n }\r\n }\r\n\r\n /**\r\n * Filter's focus event\r\n * @param {Event} evt\r\n */\r\n onInpFocus(evt) {\r\n let elm = targetEvt(evt);\r\n this.emitter.emit('filter-focus', this, elm);\r\n }\r\n\r\n /**\r\n * Filter's blur event: if auto-filter on, clear interval on filter blur\r\n */\r\n onInpBlur() {\r\n if (this.autoFilter) {\r\n this.isUserTyping = false;\r\n root.clearInterval(this.autoFilterTimer);\r\n }\r\n this.emitter.emit('filter-blur', this);\r\n }\r\n\r\n /**\r\n * Insert filters row at initialization\r\n */\r\n _insertFiltersRow() {\r\n // TODO: prevent filters row generation for popup filters too,\r\n // to reduce and simplify headers row index adjusting across lib modules\r\n // (GridLayout, PopupFilter etc)\r\n if (this.gridLayout) {\r\n return;\r\n }\r\n let fltrow;\r\n\r\n let thead = tag(this.dom(), 'thead');\r\n if (thead.length > 0) {\r\n fltrow = thead[0].insertRow(this.filtersRowIndex);\r\n } else {\r\n fltrow = this.dom().insertRow(this.filtersRowIndex);\r\n }\r\n\r\n fltrow.className = this.fltsRowCssClass;\r\n\r\n if (this.isExternalFlt()) {\r\n fltrow.style.display = NONE;\r\n }\r\n\r\n this.emitter.emit('filters-row-inserted', this, fltrow);\r\n return fltrow;\r\n }\r\n\r\n /**\r\n * Initialize filtersless table\r\n */\r\n _initNoFilters() {\r\n if (this.fltGrid) {\r\n return;\r\n }\r\n this.refRow = this.refRow > 0 ? this.refRow - 1 : 0;\r\n this.nbFilterableRows = this.getRowsNb();\r\n }\r\n\r\n /**\r\n * Build input filter type\r\n * @param {Number} colIndex Column index\r\n * @param {String} cssClass Css class applied to filter\r\n * @param {DOMElement} container Container DOM element\r\n */\r\n _buildInputFilter(colIndex, cssClass, container) {\r\n let col = this.getFilterType(colIndex);\r\n let externalFltTgtId = this.isExternalFlt() ?\r\n this.externalFltIds[colIndex] : null;\r\n let inpType = col === INPUT ? 'text' : 'hidden';\r\n let inp = createElm(INPUT,\r\n ['id', this.buildFilterId(colIndex)],\r\n ['type', inpType], ['ct', colIndex]);\r\n\r\n if (inpType !== 'hidden' && this.watermark) {\r\n inp.setAttribute('placeholder',\r\n this.isWatermarkArray ? (this.watermark[colIndex] || '') :\r\n this.watermark\r\n );\r\n }\r\n inp.className = cssClass || this.fltCssClass;\r\n addEvt(inp, 'focus', (evt) => this.onInpFocus(evt));\r\n\r\n //filter is appended in custom element\r\n if (externalFltTgtId) {\r\n elm(externalFltTgtId).appendChild(inp);\r\n } else {\r\n container.appendChild(inp);\r\n }\r\n\r\n this.fltIds.push(inp.id);\r\n\r\n addEvt(inp, 'keypress', (evt) => this.detectKey(evt));\r\n addEvt(inp, 'keydown', () => this.onKeyDown());\r\n addEvt(inp, 'keyup', (evt) => this.onKeyUp(evt));\r\n addEvt(inp, 'blur', () => this.onInpBlur());\r\n }\r\n\r\n /**\r\n * Build submit button\r\n * @param {DOMElement} container Container DOM element\r\n */\r\n _buildSubmitButton(container) {\r\n let btn = createElm(INPUT,\r\n ['type', 'button'],\r\n ['value', this.btnText]\r\n );\r\n btn.className = this.btnCssClass;\r\n\r\n //filter is appended in container element\r\n container.appendChild(btn);\r\n\r\n addEvt(btn, 'click', () => this.filter());\r\n }\r\n\r\n /**\r\n * Conditionally istantiate each feature class in passed collection if\r\n * required by configuration and add it to the features registry. A feature\r\n * class meta information contains a `name` field and optional `altName` and\r\n * `alwaysInstantiate` fields\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\r\n instantiateFeatures(features = []) {\r\n features.forEach(featureCls => {\r\n let Cls = featureCls;\r\n\r\n // assign meta info if not present\r\n Cls.meta = Cls.meta || {name: null, altName: null};\r\n Cls.meta.name = toCamelCase(Cls.name);\r\n let {name, altName, alwaysInstantiate} = Cls.meta;\r\n let prop = altName || name;\r\n\r\n if (!this.hasConfig || this[prop] === true\r\n || Boolean(alwaysInstantiate)) {\r\n this.Mod[name] = this.Mod[name] || new Cls(this);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Initialise each feature class in passed collection.\r\n * @param {Array} [features=[]]\r\n * @private\r\n */\r\n initFeatures(features = []) {\r\n features.forEach(featureCls => {\r\n let {name, altName} = featureCls.meta;\r\n let prop = altName || name;\r\n\r\n if (this[prop] === true && this.Mod[name]) {\r\n this.Mod[name].init();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Return a feature instance for a given name\r\n * @param {String} name Name of the feature\r\n * @return {Object}\r\n */\r\n feature(name) {\r\n return this.Mod[name];\r\n }\r\n\r\n /**\r\n * Initialise all the extensions defined in the configuration object\r\n */\r\n initExtensions() {\r\n let exts = this.extensions;\r\n if (exts.length === 0) {\r\n return;\r\n }\r\n\r\n // Set config's publicPath dynamically for Webpack...\r\n __webpack_public_path__ = this.basePath;\r\n\r\n this.emitter.emit('before-loading-extensions', this);\r\n\r\n exts.forEach((ext) => {\r\n this.loadExtension(ext);\r\n });\r\n this.emitter.emit('after-loading-extensions', this);\r\n }\r\n\r\n /**\r\n * Load an extension module\r\n * @param {Object} ext Extension config object\r\n */\r\n loadExtension(ext) {\r\n if (!ext || !ext.name || this.hasExtension(ext.name)) {\r\n return;\r\n }\r\n\r\n let {name, path} = ext;\r\n let modulePath;\r\n\r\n if (name && path) {\r\n modulePath = ext.path + name;\r\n } else {\r\n name = name.replace('.js', '');\r\n modulePath = 'extensions/{}/{}'.replace(/{}/g, name);\r\n }\r\n\r\n // Require pattern for Webpack\r\n require(['./' + modulePath], (mod) => {\r\n /* eslint-disable */\r\n let inst = new mod.default(this, ext);\r\n /* eslint-enable */\r\n inst.init();\r\n this.ExtRegistry[name] = inst;\r\n });\r\n }\r\n\r\n /**\r\n * Get an extension instance\r\n * @param {String} name Name of the extension\r\n * @return {Object} Extension instance\r\n */\r\n extension(name) {\r\n return this.ExtRegistry[name];\r\n }\r\n\r\n /**\r\n * Check passed extension name exists\r\n * @param {String} name Name of the extension\r\n * @return {Boolean}\r\n */\r\n hasExtension(name) {\r\n return !isEmpty(this.ExtRegistry[name]);\r\n }\r\n\r\n /**\r\n * Register the passed extension instance with associated name\r\n * @param {Object} inst Extension instance\r\n * @param {String} name Name of the extension\r\n */\r\n registerExtension(inst, name) {\r\n this.ExtRegistry[name] = inst;\r\n }\r\n\r\n /**\r\n * Destroy all the extensions store in extensions registry\r\n */\r\n destroyExtensions() {\r\n let reg = this.ExtRegistry;\r\n\r\n Object.keys(reg).forEach((key) => {\r\n reg[key].destroy();\r\n reg[key] = undefined;\r\n });\r\n }\r\n\r\n /**\r\n * Load themes defined in the configuration object\r\n */\r\n loadThemes() {\r\n if (!this.hasThemes) {\r\n return;\r\n }\r\n\r\n let themes = this.themes;\r\n this.emitter.emit('before-loading-themes', this);\r\n\r\n //Default theme config\r\n if (this.enableDefaultTheme) {\r\n let defaultTheme = { name: 'default' };\r\n this.themes.push(defaultTheme);\r\n }\r\n\r\n themes.forEach((theme, i) => {\r\n let {name, path} = theme;\r\n let styleId = this.prfxTf + name;\r\n if (name && !path) {\r\n path = this.themesPath + name + '/' + name + '.css';\r\n }\r\n else if (!name && theme.path) {\r\n name = 'theme{0}'.replace('{0}', i);\r\n }\r\n\r\n if (!this.isImported(path, 'link')) {\r\n this.import(styleId, path, null, 'link');\r\n }\r\n });\r\n\r\n // Enable loader indicator\r\n this.loader = true;\r\n\r\n this.emitter.emit('after-loading-themes', this);\r\n }\r\n\r\n /**\r\n * Return stylesheet DOM element for a given theme name\r\n * @return {DOMElement} stylesheet element\r\n */\r\n getStylesheet(name = 'default') {\r\n return elm(this.prfxTf + name);\r\n }\r\n\r\n /**\r\n * Destroy filter grid\r\n */\r\n destroy() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n if (this.isExternalFlt() && !this.popupFilters) {\r\n this.removeExternalFlts();\r\n }\r\n\r\n this.destroyExtensions();\r\n\r\n this.validateAllRows();\r\n\r\n // broadcast destroy event modules and extensions are subscribed to\r\n emitter.emit('destroy', this);\r\n\r\n if (this.fltGrid && !this.gridLayout) {\r\n this.dom().deleteRow(this.filtersRowIndex);\r\n }\r\n\r\n // unsubscribe to events\r\n if (this.hasExcludedRows) {\r\n emitter.off(['after-filtering'], () => this.setExcludeRows());\r\n }\r\n\r\n this.emitter.off(['filter-focus'],\r\n (tf, filter) => this.setActiveFilterId(filter.id));\r\n\r\n removeClass(this.dom(), this.prfxTf);\r\n removeClass(this.dom(), this.prfxResponsive);\r\n if (this.dom().tHead) {\r\n removeClass(this.dom().tHead, this.stickyCssClass);\r\n }\r\n\r\n this.nbHiddenRows = 0;\r\n this.validRowsIndex = [];\r\n this.fltIds = [];\r\n this.initialized = false;\r\n }\r\n\r\n /**\r\n * Remove all the external column filters\r\n */\r\n removeExternalFlts() {\r\n if (!this.isExternalFlt()) {\r\n return;\r\n }\r\n let ids = this.externalFltIds;\r\n ids.forEach((id) => {\r\n let externalFlt = elm(id);\r\n if (externalFlt) {\r\n externalFlt.innerHTML = '';\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Check if given column implements a filter with custom options\r\n * @param {Number} colIndex Column's index\r\n * @return {Boolean}\r\n */\r\n isCustomOptions(colIndex) {\r\n return this.hasCustomOptions &&\r\n this.customOptions.cols.indexOf(colIndex) !== -1;\r\n }\r\n\r\n /**\r\n * Returns an array [[value0, value1 ...],[text0, text1 ...]] with the\r\n * custom options values and texts\r\n * @param {Number} colIndex Column's index\r\n * @return {Array}\r\n */\r\n getCustomOptions(colIndex) {\r\n if (isEmpty(colIndex) || !this.isCustomOptions(colIndex)) {\r\n return;\r\n }\r\n\r\n let customOptions = this.customOptions;\r\n let cols = customOptions.cols;\r\n let optTxt = [], optArray = [];\r\n let index = cols.indexOf(colIndex);\r\n let slcValues = customOptions.values[index];\r\n let slcTexts = customOptions.texts[index];\r\n let slcSort = customOptions.sorts[index];\r\n\r\n for (let r = 0, len = slcValues.length; r < len; r++) {\r\n optArray.push(slcValues[r]);\r\n if (slcTexts[r]) {\r\n optTxt.push(slcTexts[r]);\r\n } else {\r\n optTxt.push(slcValues[r]);\r\n }\r\n }\r\n if (slcSort) {\r\n optArray.sort();\r\n optTxt.sort();\r\n }\r\n return [optArray, optTxt];\r\n }\r\n\r\n /**\r\n * Filter the table by retrieving the data from each cell in every single\r\n * row and comparing it to the search term for current column. A row is\r\n * hidden when all the search terms are not found in inspected row.\r\n */\r\n filter() {\r\n if (!this.fltGrid || !this.initialized) {\r\n return;\r\n }\r\n\r\n let emitter = this.emitter;\r\n\r\n //fire onbefore callback\r\n this.onBeforeFilter(this);\r\n emitter.emit('before-filtering', this);\r\n\r\n let hiddenRows = 0;\r\n\r\n this.validRowsIndex = [];\r\n // search args\r\n let searchArgs = this.getFiltersValue();\r\n\r\n let eachRow = this.eachRow();\r\n eachRow(\r\n (row, k) => {\r\n // already filtered rows display re-init\r\n row.style.display = '';\r\n\r\n let cells = row.cells;\r\n let nbCells = cells.length;\r\n\r\n let occurence = [],\r\n isMatch = true,\r\n //only for single filter search\r\n isSingleFltMatch = false;\r\n\r\n // this loop retrieves cell data\r\n for (let j = 0; j < nbCells; j++) {\r\n //searched keyword\r\n let sA = searchArgs[this.singleFlt ? 0 : j];\r\n\r\n if (sA === '') {\r\n continue;\r\n }\r\n\r\n let cellValue = matchCase(this.getCellValue(cells[j]),\r\n this.caseSensitive);\r\n\r\n //multiple search parameter operator ||\r\n let sAOrSplit = sA.toString().split(this.orOperator),\r\n //multiple search || parameter boolean\r\n hasMultiOrSA = sAOrSplit.length > 1,\r\n //multiple search parameter operator &&\r\n sAAndSplit = sA.toString().split(this.anOperator),\r\n //multiple search && parameter boolean\r\n hasMultiAndSA = sAAndSplit.length > 1;\r\n\r\n //detect operators or array query\r\n if (isArray(sA) || hasMultiOrSA || hasMultiAndSA) {\r\n let cS, s;\r\n let found = false;\r\n\r\n if (isArray(sA)) {\r\n s = sA;\r\n } else {\r\n s = hasMultiOrSA ? sAOrSplit : sAAndSplit;\r\n }\r\n // isolate search term and check occurence in cell data\r\n for (let w = 0, len = s.length; w < len; w++) {\r\n cS = trim(s[w]);\r\n found = this._match(cS, cellValue, cells[j]);\r\n\r\n if (found) {\r\n emitter.emit('highlight-keyword', this,\r\n cells[j], cS);\r\n }\r\n if ((hasMultiOrSA && found) ||\r\n (hasMultiAndSA && !found)) {\r\n break;\r\n }\r\n if (isArray(sA) && found) {\r\n break;\r\n }\r\n }\r\n occurence[j] = found;\r\n\r\n }\r\n //single search parameter\r\n else {\r\n occurence[j] =\r\n this._match(trim(sA), cellValue, cells[j]);\r\n if (occurence[j]) {\r\n emitter.emit('highlight-keyword', this, cells[j],\r\n sA);\r\n }\r\n }\r\n\r\n if (!occurence[j]) {\r\n isMatch = false;\r\n }\r\n\r\n if (this.singleFlt &&\r\n this.singleFltExcludeCols.indexOf(j) === -1 &&\r\n occurence[j]) {\r\n isSingleFltMatch = true;\r\n }\r\n\r\n emitter.emit('cell-processed', this, j, cells[j]);\r\n }//for j\r\n\r\n if (isSingleFltMatch) {\r\n isMatch = true;\r\n }\r\n\r\n this.validateRow(k, isMatch);\r\n if (!isMatch) {\r\n hiddenRows++;\r\n }\r\n\r\n emitter.emit('row-processed', this, k,\r\n this.validRowsIndex.length - 1, isMatch);\r\n },\r\n // continue condition\r\n (row) => row.cells.length !== this.nbCells\r\n );\r\n\r\n this.nbHiddenRows = hiddenRows;\r\n\r\n //fire onafterfilter callback\r\n this.onAfterFilter(this);\r\n\r\n emitter.emit('after-filtering', this, searchArgs);\r\n }\r\n\r\n /**\r\n * Match search term in cell data\r\n * @param {String} term Search term\r\n * @param {String} cellValue Cell data\r\n * @param {DOMElement} cell Current cell\r\n * @return {Boolean}\r\n * @private\r\n */\r\n _match(term, cellValue, cell) {\r\n let numData;\r\n let colIdx = cell.cellIndex;\r\n let decimal = this.getDecimal(colIdx);\r\n let reLe = new RegExp(this.leOperator),\r\n reGe = new RegExp(this.geOperator),\r\n reL = new RegExp(this.lwOperator),\r\n reG = new RegExp(this.grOperator),\r\n reD = new RegExp(this.dfOperator),\r\n reLk = new RegExp(rgxEsc(this.lkOperator)),\r\n reEq = new RegExp(this.eqOperator),\r\n reSt = new RegExp(this.stOperator),\r\n reEn = new RegExp(this.enOperator),\r\n // re_an = new RegExp(this.anOperator),\r\n // re_cr = new RegExp(this.curExp),\r\n reEm = this.emOperator,\r\n reNm = this.nmOperator,\r\n reRe = new RegExp(rgxEsc(this.rgxOperator));\r\n\r\n term = matchCase(term, this.caseSensitive);\r\n\r\n let occurence = false;\r\n\r\n //Search arg operator tests\r\n let hasLO = reL.test(term),\r\n hasLE = reLe.test(term),\r\n hasGR = reG.test(term),\r\n hasGE = reGe.test(term),\r\n hasDF = reD.test(term),\r\n hasEQ = reEq.test(term),\r\n hasLK = reLk.test(term),\r\n // hatermN = re_an.test(term),\r\n hasST = reSt.test(term),\r\n hasEN = reEn.test(term),\r\n hasEM = (reEm === term),\r\n hasNM = (reNm === term),\r\n hasRE = reRe.test(term);\r\n\r\n // Check for dates or resolve date type\r\n if (this.hasType(colIdx, [DATE])) {\r\n let dte1, dte2;\r\n\r\n let dateType = this.Mod.dateType;\r\n let isValidDate = dateType.isValid.bind(dateType);\r\n let parseDate = dateType.parse.bind(dateType);\r\n let locale = dateType.getLocale(colIdx);\r\n\r\n // Search arg dates tests\r\n let isLDate = hasLO &&\r\n isValidDate(term.replace(reL, ''), locale);\r\n let isLEDate = hasLE &&\r\n isValidDate(term.replace(reLe, ''), locale);\r\n let isGDate = hasGR &&\r\n isValidDate(term.replace(reG, ''), locale);\r\n let isGEDate = hasGE &&\r\n isValidDate(term.replace(reGe, ''), locale);\r\n let isDFDate = hasDF &&\r\n isValidDate(term.replace(reD, ''), locale);\r\n let isEQDate = hasEQ &&\r\n isValidDate(term.replace(reEq, ''), locale);\r\n\r\n dte1 = parseDate(cellValue, locale);\r\n\r\n // lower equal date\r\n if (isLEDate) {\r\n dte2 = parseDate(term.replace(reLe, ''), locale);\r\n occurence = dte1 <= dte2;\r\n }\r\n // lower date\r\n else if (isLDate) {\r\n dte2 = parseDate(term.replace(reL, ''), locale);\r\n occurence = dte1 < dte2;\r\n }\r\n // greater equal date\r\n else if (isGEDate) {\r\n dte2 = parseDate(term.replace(reGe, ''), locale);\r\n occurence = dte1 >= dte2;\r\n }\r\n // greater date\r\n else if (isGDate) {\r\n dte2 = parseDate(term.replace(reG, ''), locale);\r\n occurence = dte1 > dte2;\r\n }\r\n // different date\r\n else if (isDFDate) {\r\n dte2 = parseDate(term.replace(reD, ''), locale);\r\n occurence = dte1.toString() !== dte2.toString();\r\n }\r\n // equal date\r\n else if (isEQDate) {\r\n dte2 = parseDate(term.replace(reEq, ''), locale);\r\n occurence = dte1.toString() === dte2.toString();\r\n }\r\n // searched keyword with * operator doesn't have to be a date\r\n else if (reLk.test(term)) {// like date\r\n occurence = contains(term.replace(reLk, ''), cellValue,\r\n false, this.caseSensitive);\r\n }\r\n else if (isValidDate(term)) {\r\n dte2 = parseDate(term, locale);\r\n occurence = dte1.toString() === dte2.toString();\r\n }\r\n //empty\r\n else if (hasEM) {\r\n occurence = !cell.hasChildNodes();\r\n }\r\n //non-empty\r\n else if (hasNM) {\r\n occurence = cell.hasChildNodes();\r\n } else {\r\n occurence = contains(term, cellValue,\r\n this.isExactMatch(colIdx), this.caseSensitive);\r\n }\r\n } else {\r\n // Convert to number anyways to auto-resolve type in case not\r\n // defined by configuration. Order is important first try to\r\n // parse formatted number then fallback to Number coercion\r\n // to avoid false positives with Number\r\n numData = parseNb(cellValue, decimal) || Number(cellValue);\r\n\r\n // first checks if there is any operator (<,>,<=,>=,!,*,=,{,},\r\n // rgx:)\r\n\r\n //regexp\r\n if (hasRE) {\r\n //in case regexp throws\r\n try {\r\n //operator is removed\r\n let srchArg = term.replace(reRe, '');\r\n let rgx = new RegExp(srchArg);\r\n occurence = rgx.test(cellValue);\r\n } catch (ex) {\r\n occurence = false;\r\n }\r\n }\r\n // lower equal\r\n else if (hasLE) {\r\n occurence = numData <= parseNb(\r\n term.replace(reLe, ''),\r\n decimal\r\n );\r\n }\r\n //greater equal\r\n else if (hasGE) {\r\n occurence = numData >= parseNb(\r\n term.replace(reGe, ''),\r\n decimal\r\n );\r\n }\r\n //lower\r\n else if (hasLO) {\r\n occurence = numData < parseNb(\r\n term.replace(reL, ''),\r\n decimal\r\n );\r\n }\r\n //greater\r\n else if (hasGR) {\r\n occurence = numData > parseNb(\r\n term.replace(reG, ''),\r\n decimal\r\n );\r\n }\r\n //different\r\n else if (hasDF) {\r\n occurence = contains(term.replace(reD, ''), cellValue,\r\n false, this.caseSensitive) ? false : true;\r\n }\r\n //like\r\n else if (hasLK) {\r\n occurence = contains(term.replace(reLk, ''), cellValue,\r\n false, this.caseSensitive);\r\n }\r\n //equal\r\n else if (hasEQ) {\r\n occurence = contains(term.replace(reEq, ''), cellValue,\r\n true, this.caseSensitive);\r\n }\r\n //starts with\r\n else if (hasST) {\r\n occurence = cellValue.indexOf(term.replace(reSt, '')) === 0 ?\r\n true : false;\r\n }\r\n //ends with\r\n else if (hasEN) {\r\n let searchArg = term.replace(reEn, '');\r\n occurence =\r\n cellValue.lastIndexOf(searchArg, cellValue.length - 1) ===\r\n (cellValue.length - 1) - (searchArg.length - 1) &&\r\n cellValue.lastIndexOf(searchArg, cellValue.length - 1)\r\n > -1 ? true : false;\r\n }\r\n //empty\r\n else if (hasEM) {\r\n occurence = !cell.hasChildNodes();\r\n }\r\n //non-empty\r\n else if (hasNM) {\r\n occurence = cell.hasChildNodes();\r\n } else {\r\n // If numeric type data, perform a strict equality test and\r\n // fallback to unformatted number string comparison\r\n if (numData &&\r\n this.hasType(colIdx, [NUMBER, FORMATTED_NUMBER]) &&\r\n !this.singleFlt) {\r\n // parseNb can return 0 for strings which are not\r\n // formatted numbers, in that case return the original\r\n // string. TODO: handle this in parseNb\r\n term = parseNb(term, decimal) || term;\r\n occurence = numData === term ||\r\n contains(term.toString(), numData.toString(),\r\n this.isExactMatch(colIdx), this.caseSensitive);\r\n } else {\r\n // Finally test search term is contained in cell data\r\n occurence = contains(\r\n term,\r\n cellValue,\r\n this.isExactMatch(colIdx),\r\n this.caseSensitive,\r\n this.ignoresDiacritics(colIdx)\r\n );\r\n }\r\n }\r\n\r\n }//else\r\n\r\n return occurence;\r\n }\r\n\r\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of data for a column\r\n */\r\n getColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getColValues(colIndex, includeHeaders, true, exclude);\r\n }\r\n\r\n /**\r\n * Return the values of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return Flat list of values for a column\r\n */\r\n getColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getColValues(colIndex, includeHeaders, false, exclude);\r\n }\r\n\r\n /**\r\n * Return the data of a specified column\r\n * @param {Number} colIndex Column index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return a typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @return {Array} Flat list of data for a column\r\n * @private\r\n */\r\n getColValues(\r\n colIndex,\r\n includeHeaders = false,\r\n typed = false,\r\n exclude = []\r\n ) {\r\n let colValues = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n colValues.push(this.getHeadersText()[colIndex]);\r\n }\r\n\r\n let eachRow = this.eachRow();\r\n eachRow((row, i) => {\r\n // checks if current row index appears in exclude array\r\n let isExludedRow = exclude.indexOf(i) !== -1;\r\n let cells = row.cells;\r\n\r\n // checks if row has exact cell # and is not excluded\r\n if (cells.length === this.nbCells && !isExludedRow) {\r\n let data = getContent(cells[colIndex]);\r\n colValues.push(data);\r\n }\r\n });\r\n return colValues;\r\n }\r\n\r\n /**\r\n * Return the filter's value of a specified column\r\n * @param {Number} index Column index\r\n * @return {String} Filter value\r\n */\r\n getFilterValue(index) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let fltValue = '';\r\n let flt = this.getFilterElement(index);\r\n if (!flt) {\r\n return fltValue;\r\n }\r\n\r\n let fltColType = this.getFilterType(index);\r\n if (fltColType !== MULTIPLE && fltColType !== CHECKLIST) {\r\n fltValue = flt.value;\r\n }\r\n //mutiple select\r\n else if (fltColType === MULTIPLE) {\r\n fltValue = this.feature('dropdown').getValues(index);\r\n }\r\n //checklist\r\n else if (fltColType === CHECKLIST) {\r\n fltValue = this.feature('checkList').getValues(index);\r\n }\r\n //return an empty string if collection is empty or contains a single\r\n //empty string\r\n if (isArray(fltValue) && fltValue.length === 0 ||\r\n (fltValue.length === 1 && fltValue[0] === '')) {\r\n fltValue = '';\r\n }\r\n\r\n return fltValue;\r\n }\r\n\r\n /**\r\n * Return the filters' values\r\n * @return {Array} List of filters' values\r\n */\r\n getFiltersValue() {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let searchArgs = [];\r\n\r\n this.fltIds.forEach((id, i) => {\r\n let fltValue = this.getFilterValue(i);\r\n if (isArray(fltValue)) {\r\n searchArgs.push(fltValue);\r\n } else {\r\n searchArgs.push(trim(fltValue));\r\n }\r\n });\r\n return searchArgs;\r\n }\r\n\r\n /**\r\n * Return the ID of a specified column's filter\r\n * @param {Number} index Column's index\r\n * @return {String} ID of the filter element\r\n */\r\n getFilterId(index) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n return this.fltIds[index];\r\n }\r\n\r\n /**\r\n * Return the list of ids of filters matching a specified type.\r\n * Note: hidden filters are also returned\r\n *\r\n * @param {String} type Filter type string ('input', 'select', 'multiple',\r\n * 'checklist')\r\n * @param {Boolean} bool If true returns columns indexes instead of IDs\r\n * @return {[type]} List of element IDs or column indexes\r\n */\r\n getFiltersByType(type, bool) {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let arr = [];\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n let fltType = this.getFilterType(i);\r\n if (fltType === type.toLowerCase()) {\r\n let a = bool ? i : this.fltIds[i];\r\n arr.push(a);\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n /**\r\n * Return the filter's DOM element for a given column\r\n * @param {Number} index Column's index\r\n * @return {DOMElement}\r\n */\r\n getFilterElement(index) {\r\n return elm(this.fltIds[index]);\r\n }\r\n\r\n /**\r\n * Return the number of cells for a given row index\r\n * @param {Number} rowIndex Index of the row\r\n * @return {Number} Number of cells\r\n */\r\n getCellsNb(rowIndex = 0) {\r\n let tr = this.dom().rows[rowIndex >= 0 ? rowIndex : 0];\r\n return tr ? tr.cells.length : 0;\r\n }\r\n\r\n /**\r\n * Return the number of working rows starting from reference row if\r\n * defined\r\n * @param {Boolean} includeHeaders Include the headers row(s)\r\n * @return {Number} Number of working rows\r\n */\r\n getRowsNb(includeHeaders) {\r\n let nbRows = this.getWorkingRows().length;\r\n if (this.dom().tHead) {\r\n return includeHeaders ?\r\n nbRows + this.dom().querySelectorAll('thead > tr').length :\r\n nbRows;\r\n }\r\n return includeHeaders ? nbRows : nbRows - this.refRow;\r\n }\r\n\r\n /**\r\n * Return the collection of the working rows, that is, the rows belonging\r\n * to the tbody section(s)\r\n * @returns {Array}\r\n */\r\n getWorkingRows() {\r\n return doc.querySelectorAll(`table#${this.id} > tbody > tr`);\r\n }\r\n\r\n /**\r\n * Return the text content of a given cell\r\n * @param {DOMElement} Cell's DOM element\r\n * @return {String}\r\n */\r\n getCellValue(cell) {\r\n let idx = cell.cellIndex;\r\n let cellParser = this.cellParser;\r\n // Invoke cellParser for this column if any\r\n if (cellParser.cols.indexOf(idx) !== -1) {\r\n return cellParser.parse(this, cell, idx);\r\n } else {\r\n return getText(cell);\r\n }\r\n }\r\n\r\n /**\r\n * Return the typed data of a given cell based on the column type definition\r\n * @param {DOMElement} cell Cell's DOM element\r\n * @return {String|Number|Date}\r\n */\r\n getCellData(cell) {\r\n let colIndex = cell.cellIndex;\r\n let value = this.getCellValue(cell);\r\n\r\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n return parseNb(value, this.getDecimal(colIndex));\r\n }\r\n else if (this.hasType(colIndex, [NUMBER])) {\r\n return Number(value);\r\n }\r\n else if (this.hasType(colIndex, [DATE])){\r\n let dateType = this.Mod.dateType;\r\n return dateType.parse(value, dateType.getLocale(colIndex));\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /**\r\n * Return the table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\r\n getData(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.getTableData(includeHeaders, excludeHiddenCols, true);\r\n }\r\n\r\n /**\r\n * Return the table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n */\r\n getValues(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.getTableData(includeHeaders, excludeHiddenCols, false);\r\n }\r\n\r\n /**\r\n * Return the table data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getTableData(\r\n includeHeaders = false,\r\n excludeHiddenCols = false,\r\n typed = false\r\n ) {\r\n let tblData = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n let headers = this.getHeadersText(excludeHiddenCols);\r\n tblData.push([this.getHeadersRowIndex(), headers]);\r\n }\r\n\r\n let eachRow = this.eachRow();\r\n eachRow((row, k) => {\r\n let rowData = [k, []];\r\n let cells = row.cells;\r\n for (let j = 0, len = cells.length; j < len; j++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(j)) {\r\n continue;\r\n }\r\n }\r\n let cellContent = getContent(cells[j]);\r\n rowData[1].push(cellContent);\r\n }\r\n tblData.push(rowData);\r\n });\r\n return tblData;\r\n }\r\n\r\n /**\r\n * Return the filtered table data based on its columns data type definitions\r\n * with following structure:\r\n * [\r\n * [rowIndex, [data0, data1...]],\r\n * [rowIndex, [data0, data1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredData(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.filteredData(includeHeaders, excludeHiddenCols, true);\r\n }\r\n\r\n /**\r\n * Return the filtered table values with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @return {Array}\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredValues(includeHeaders = false, excludeHiddenCols = false) {\r\n return this.filteredData(includeHeaders, excludeHiddenCols, false);\r\n }\r\n\r\n /**\r\n * Return the filtered data with following structure:\r\n * [\r\n * [rowIndex, [value0, value1...]],\r\n * [rowIndex, [value0, value1...]]\r\n * ]\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [excludeHiddenCols=false] Exclude hidden columns\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @return {Array}\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n filteredData(\r\n includeHeaders = false,\r\n excludeHiddenCols = false,\r\n typed = false\r\n ) {\r\n if (this.validRowsIndex.length === 0) {\r\n return [];\r\n }\r\n let rows = this.dom().rows,\r\n filteredData = [];\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n if (includeHeaders) {\r\n let headers = this.getHeadersText(excludeHiddenCols);\r\n filteredData.push([this.getHeadersRowIndex(), headers]);\r\n }\r\n\r\n let validRows = this.getValidRows(true);\r\n for (let i = 0; i < validRows.length; i++) {\r\n let rData = [this.validRowsIndex[i], []],\r\n cells = rows[this.validRowsIndex[i]].cells;\r\n for (let k = 0; k < cells.length; k++) {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n if (this.extension('colsVisibility').isColHidden(k)) {\r\n continue;\r\n }\r\n }\r\n let cellValue = getContent(cells[k]);\r\n rData[1].push(cellValue);\r\n }\r\n filteredData.push(rData);\r\n }\r\n return filteredData;\r\n }\r\n\r\n /**\r\n * Return the filtered data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, true, exclude, false);\r\n }\r\n\r\n /**\r\n * Return the filtered and visible data for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of typed values [data0, data1, data2...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getVisibleColumnData(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, true, exclude, true);\r\n }\r\n\r\n /**\r\n * Return the filtered values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, false, exclude, false);\r\n }\r\n\r\n /**\r\n * Return the filtered and visible values for a given column index\r\n * @param {any} colIndex Colmun's index\r\n * @param {boolean} [includeHeaders=false] Optional Include headers row\r\n * @param {any} [exclude=[]] Optional List of row indexes to be excluded\r\n * @return {Array} Flat list of values ['value0', 'value1', 'value2'...]\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getVisibleColumnValues(colIndex, includeHeaders = false, exclude = []) {\r\n return this.getFilteredDataCol(\r\n colIndex, includeHeaders, false, exclude, true);\r\n }\r\n\r\n /**\r\n * Return the filtered data for a given column index\r\n * @param {Number} colIndex Colmun's index\r\n * @param {Boolean} [includeHeaders=false] Include headers row\r\n * @param {Boolean} [typed=false] Return typed value\r\n * @param {Array} [exclude=[]] List of row indexes to be excluded\r\n * @param {Boolean} [visible=true] Return only filtered and visible data\r\n * (relevant for paging)\r\n * @return {Array} Flat list of values ['val0','val1','val2'...]\r\n * @private\r\n *\r\n * TODO: provide an API returning data in JSON format\r\n */\r\n getFilteredDataCol(\r\n colIndex,\r\n includeHeaders = false,\r\n typed = false,\r\n exclude = [],\r\n visible = true\r\n ) {\r\n if (isUndef(colIndex)) {\r\n return [];\r\n }\r\n\r\n let rows = this.dom().rows;\r\n let getContent = typed ? this.getCellData.bind(this) :\r\n this.getCellValue.bind(this);\r\n\r\n // ensure valid rows index do not contain excluded rows and row is\r\n // displayed\r\n let validRows = this.getValidRows(true).filter((rowIdx) => {\r\n return exclude.indexOf(rowIdx) === -1 &&\r\n (visible ?\r\n this.getRowDisplay(rows[rowIdx]) !== 'none' :\r\n true);\r\n });\r\n\r\n // convert column value to expected type if necessary\r\n let validColValues = validRows.map((rowIdx) => {\r\n return getContent(rows[rowIdx].cells[colIndex]);\r\n });\r\n\r\n if (includeHeaders) {\r\n validColValues.unshift(this.getHeadersText()[colIndex]);\r\n }\r\n\r\n return validColValues;\r\n }\r\n\r\n /**\r\n * Get the display value of a row\r\n * @param {HTMLTableRowElement} row DOM element of the row\r\n * @return {String} Usually 'none' or ''\r\n */\r\n getRowDisplay(row) {\r\n return row.style.display;\r\n }\r\n\r\n /**\r\n * Validate/invalidate row by setting the 'validRow' attribute on the row\r\n * @param {Number} rowIndex Index of the row\r\n * @param {Boolean} isValid\r\n */\r\n validateRow(rowIndex, isValid) {\r\n let row = this.dom().rows[rowIndex];\r\n if (!row || !isBoolean(isValid)) {\r\n return;\r\n }\r\n\r\n // always visible rows are valid\r\n if (this.excludeRows.indexOf(rowIndex) !== -1) {\r\n isValid = true;\r\n }\r\n\r\n let displayFlag = isValid ? '' : NONE,\r\n validFlag = isValid ? 'true' : 'false';\r\n row.style.display = displayFlag;\r\n\r\n if (this.paging) {\r\n row.setAttribute('validRow', validFlag);\r\n }\r\n\r\n if (isValid) {\r\n if (this.validRowsIndex.indexOf(rowIndex) === -1) {\r\n this.validRowsIndex.push(rowIndex);\r\n }\r\n\r\n this.onRowValidated(this, rowIndex);\r\n this.emitter.emit('row-validated', this, rowIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Validate all filterable rows\r\n */\r\n validateAllRows() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.validRowsIndex = [];\r\n for (let k = this.refRow; k < this.nbFilterableRows; k++) {\r\n this.validateRow(k, true);\r\n }\r\n }\r\n\r\n /**\r\n * Set search value to a given filter\r\n * @param {Number} index Column's index\r\n * @param {String or Array} query searcharg Search term\r\n */\r\n setFilterValue(index, query = '') {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n let slc = this.getFilterElement(index),\r\n fltColType = this.getFilterType(index);\r\n\r\n if (!slc) {\r\n return;\r\n }\r\n\r\n //multiple selects\r\n if (fltColType === MULTIPLE) {\r\n let values = isArray(query) ? query :\r\n query.split(' ' + this.orOperator + ' ');\r\n\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-select-filter', this, index,\r\n this.linkedFilters, this.isExternalFlt());\r\n }\r\n\r\n this.emitter.emit('select-options', this, index, values);\r\n }\r\n //checklist\r\n else if (fltColType === CHECKLIST) {\r\n let values = [];\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-checklist-filter', this, index,\r\n this.linkedFilters);\r\n }\r\n if (isArray(query)) {\r\n values = query;\r\n } else {\r\n query = matchCase(query, this.caseSensitive);\r\n values = query.split(' ' + this.orOperator + ' ');\r\n }\r\n\r\n this.emitter.emit('select-checklist-options', this, index, values);\r\n }\r\n else {\r\n if (this.loadFltOnDemand && !this.initialized) {\r\n this.emitter.emit('build-select-filter', this, index,\r\n this.linkedFilters, this.isExternalFlt());\r\n }\r\n slc.value = query;\r\n }\r\n }\r\n\r\n /**\r\n * Make passed or default working table element width fixed\r\n * @param {TableElement} tbl optional table DOM element\r\n */\r\n setFixedLayout(tbl = this.dom()) {\r\n let colWidths = this.colWidths;\r\n let tableWidth = tbl.clientWidth;\r\n\r\n if (colWidths.length > 0) {\r\n let defaultWidth = this.defaultColWidth;\r\n tableWidth = colWidths\r\n .reduce((x, y) =>\r\n parseInt((x || defaultWidth), 10) +\r\n parseInt((y || defaultWidth), 10)\r\n );\r\n }\r\n\r\n tbl.style.width = `${tableWidth}px`;\r\n tbl.style.tableLayout = 'fixed';\r\n }\r\n\r\n /**\r\n * Set passed or default working table columns' widths with configuration\r\n * values\r\n * @param {TableElement} tbl optional table DOM element\r\n */\r\n setColWidths(tbl = this.dom()) {\r\n let colWidths = this.colWidths;\r\n if (colWidths.length === 0) {\r\n return;\r\n }\r\n\r\n let colTags = tag(tbl, 'col');\r\n let tblHasColTag = colTags.length > 0;\r\n let frag = !tblHasColTag ? doc.createDocumentFragment() : null;\r\n\r\n this.eachCol((k) => {\r\n let col;\r\n if (tblHasColTag) {\r\n col = colTags[k];\r\n } else {\r\n col = createElm('col');\r\n frag.appendChild(col);\r\n }\r\n col.style.width = colWidths[k];\r\n });\r\n\r\n if (!tblHasColTag) {\r\n tbl.insertBefore(frag, tbl.firstChild);\r\n }\r\n }\r\n\r\n /**\r\n * Exclude rows from actions\r\n */\r\n setExcludeRows() {\r\n if (!this.hasExcludedRows) {\r\n return;\r\n }\r\n this.excludeRows.forEach((rowIdx) => this.validateRow(rowIdx, true));\r\n }\r\n\r\n /**\r\n * Clear all the filters' values\r\n */\r\n clearFilters() {\r\n if (!this.fltGrid) {\r\n return;\r\n }\r\n\r\n this.emitter.emit('before-clearing-filters', this);\r\n this.onBeforeReset(this, this.getFiltersValue());\r\n\r\n for (let i = 0, len = this.fltIds.length; i < len; i++) {\r\n this.setFilterValue(i, '');\r\n }\r\n\r\n this.filter();\r\n\r\n this.onAfterReset(this);\r\n this.emitter.emit('after-clearing-filters', this);\r\n }\r\n\r\n /**\r\n * Return the ID of the current active filter\r\n * @return {String}\r\n */\r\n getActiveFilterId() {\r\n return this.activeFilterId;\r\n }\r\n\r\n /**\r\n * Set the ID of the current active filter\r\n * @param {String} filterId Element ID\r\n */\r\n setActiveFilterId(filterId) {\r\n this.activeFilterId = filterId;\r\n }\r\n\r\n /**\r\n * Return the column index for a given filter ID\r\n * @param {string} [filterId=''] Filter ID\r\n * @return {Number} Column index\r\n */\r\n getColumnIndexFromFilterId(filterId = '') {\r\n let idx = filterId.split('_')[0];\r\n idx = idx.split(this.prfxFlt)[1];\r\n return parseInt(idx, 10);\r\n }\r\n\r\n /**\r\n * Build filter element ID for a given column index\r\n * @param {any} colIndex\r\n * @return {String} Filter element ID string\r\n * @private\r\n */\r\n buildFilterId(colIndex) {\r\n return `${this.prfxFlt}${colIndex}_${this.id}`;\r\n }\r\n\r\n /**\r\n * Check if has external filters\r\n * @returns {Boolean}\r\n * @private\r\n */\r\n isExternalFlt() {\r\n return this.externalFltIds.length > 0;\r\n }\r\n\r\n /**\r\n * Returns styles path\r\n * @returns {String}\r\n * @private\r\n */\r\n getStylePath() {\r\n return defaultsStr(this.config.style_path, this.basePath + 'style/');\r\n }\r\n\r\n /**\r\n * Returns main stylesheet path\r\n * @returns {String}\r\n * @private\r\n */\r\n getStylesheetPath() {\r\n return defaultsStr(this.config.stylesheet,\r\n this.getStylePath() + 'tablefilter.css');\r\n }\r\n\r\n /**\r\n * Returns themes path\r\n * @returns {String}\r\n * @private\r\n */\r\n getThemesPath() {\r\n return defaultsStr(this.config.themes_path,\r\n this.getStylePath() + 'themes/');\r\n }\r\n\r\n /**\r\n * Make specified column's filter active\r\n * @param colIndex Index of a column\r\n */\r\n activateFilter(colIndex) {\r\n if (isUndef(colIndex)) {\r\n return;\r\n }\r\n this.setActiveFilterId(this.getFilterId(colIndex));\r\n }\r\n\r\n /**\r\n * Determine if passed filter column implements exact query match\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\r\n isExactMatch(colIndex) {\r\n let fltType = this.getFilterType(colIndex);\r\n return this.exactMatchByCol[colIndex] || this.exactMatch ||\r\n fltType !== INPUT;\r\n }\r\n\r\n /**\r\n * Check if passed row is valid\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\r\n isRowValid(rowIndex) {\r\n return this.getValidRows().indexOf(rowIndex) !== -1;\r\n }\r\n\r\n /**\r\n * Check if passed row is visible\r\n * @param {Number} rowIndex Row index\r\n * @return {Boolean}\r\n */\r\n isRowDisplayed(rowIndex) {\r\n let row = this.dom().rows[rowIndex];\r\n return this.getRowDisplay(row) === '';\r\n }\r\n\r\n /**\r\n * Check if specified column filter ignores diacritics.\r\n * Note this is only applicable to input filter types.\r\n * @param {Number} colIndex Column index\r\n * @return {Boolean}\r\n */\r\n ignoresDiacritics(colIndex) {\r\n let ignoreDiac = this.ignoreDiacritics;\r\n if (isArray(ignoreDiac)) {\r\n return ignoreDiac[colIndex];\r\n }\r\n return Boolean(ignoreDiac);\r\n }\r\n\r\n /**\r\n * Return clear all text for specified filter column\r\n * @param {Number} colIndex Column index\r\n * @return {String}\r\n */\r\n getClearFilterText(colIndex) {\r\n let clearText = this.clearFilterText;\r\n if (isArray(clearText)) {\r\n return clearText[colIndex];\r\n }\r\n return clearText;\r\n }\r\n\r\n /**\r\n * Column iterator invoking continue and break condition callbacks if any\r\n * then calling supplied callback for each item\r\n * @param {Function} [fn=EMPTY_FN] callback\r\n * @param {Function} [continueFn=EMPTY_FN] continue condition callback\r\n * @param {Function} [breakFn=EMPTY_FN] break condition callback\r\n */\r\n eachCol(fn = EMPTY_FN, continueFn = EMPTY_FN, breakFn = EMPTY_FN) {\r\n let len = this.getCellsNb(this.refRow);\r\n for (let i = 0; i < len; i++) {\r\n if (continueFn(i) === true) {\r\n continue;\r\n }\r\n if (breakFn(i) === true) {\r\n break;\r\n }\r\n fn(i);\r\n }\r\n }\r\n\r\n /**\r\n * Rows iterator starting from supplied row index or defaulting to reference\r\n * row index. Closure function accepts a callback function and optional\r\n * continue and break callbacks.\r\n * @param {Number} startIdx Row index from which filtering starts\r\n */\r\n eachRow(startIdx = this.refRow) {\r\n return (fn = EMPTY_FN, continueFn = EMPTY_FN, breakFn = EMPTY_FN) => {\r\n let rows = this.dom().rows;\r\n let len = this.getRowsNb(true);\r\n for (let i = startIdx; i < len; i++) {\r\n if (continueFn(rows[i], i) === true) {\r\n continue;\r\n }\r\n if (breakFn(rows[i], i) === true) {\r\n break;\r\n }\r\n fn(rows[i], i);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Check if passed script or stylesheet is already imported\r\n * @param {String} filePath Ressource path\r\n * @param {String} type Possible values: 'script' or 'link'\r\n * @return {Boolean}\r\n */\r\n isImported(filePath, type = 'script') {\r\n let imported = false,\r\n attr = type === 'script' ? 'src' : 'href',\r\n files = tag(doc, type);\r\n for (let i = 0, len = files.length; i < len; i++) {\r\n if (isUndef(files[i][attr])) {\r\n continue;\r\n }\r\n if (files[i][attr].match(filePath)) {\r\n imported = true;\r\n break;\r\n }\r\n }\r\n return imported;\r\n }\r\n\r\n /**\r\n * Import script or stylesheet\r\n * @param {String} fileId Ressource ID\r\n * @param {String} filePath Ressource path\r\n * @param {Function} callback Callback\r\n * @param {String} type Possible values: 'script' or 'link'\r\n */\r\n import(fileId, filePath, callback, type = 'script') {\r\n if (this.isImported(filePath, type)) {\r\n return;\r\n }\r\n let o = this,\r\n isLoaded = false,\r\n file,\r\n head = tag(doc, 'head')[0];\r\n\r\n if (type.toLowerCase() === 'link') {\r\n file = createElm('link',\r\n ['id', fileId], ['type', 'text/css'],\r\n ['rel', 'stylesheet'], ['href', filePath]\r\n );\r\n } else {\r\n file = createElm('script',\r\n ['id', fileId],\r\n ['type', 'text/javascript'], ['src', filePath]\r\n );\r\n }\r\n\r\n //Browser <> IE onload event works only for scripts, not for stylesheets\r\n file.onload = file.onreadystatechange = () => {\r\n if (!isLoaded &&\r\n (!this.readyState || this.readyState === 'loaded' ||\r\n this.readyState === 'complete')) {\r\n isLoaded = true;\r\n if (typeof callback === 'function') {\r\n callback.call(null, o);\r\n }\r\n }\r\n };\r\n file.onerror = () => {\r\n throw new Error(`TableFilter could not load: ${filePath}`);\r\n };\r\n head.appendChild(file);\r\n }\r\n\r\n /**\r\n * Check if table has filters grid\r\n * @return {Boolean}\r\n */\r\n isInitialized() {\r\n return this.initialized;\r\n }\r\n\r\n /**\r\n * Get list of filter IDs\r\n * @return {Array} List of filters ids\r\n */\r\n getFiltersId() {\r\n return this.fltIds || [];\r\n }\r\n\r\n /**\r\n * Get filtered (valid) rows indexes\r\n * @param {Boolean} reCalc Force calculation of filtered rows list\r\n * @return {Array} List of row indexes\r\n */\r\n getValidRows(reCalc) {\r\n if (!reCalc) {\r\n return this.validRowsIndex;\r\n }\r\n\r\n this.validRowsIndex = [];\r\n\r\n let eachRow = this.eachRow();\r\n eachRow((row) => {\r\n if (!this.paging) {\r\n if (this.getRowDisplay(row) !== NONE) {\r\n this.validRowsIndex.push(row.rowIndex);\r\n }\r\n } else {\r\n if (row.getAttribute('validRow') === 'true' ||\r\n row.getAttribute('validRow') === null) {\r\n this.validRowsIndex.push(row.rowIndex);\r\n }\r\n }\r\n });\r\n return this.validRowsIndex;\r\n }\r\n\r\n /**\r\n * Get the index of the row containing the filters\r\n * @return {Number}\r\n */\r\n getFiltersRowIndex() {\r\n return this.filtersRowIndex;\r\n }\r\n\r\n /**\r\n * Get the index of the headers row\r\n * @return {Number}\r\n */\r\n getHeadersRowIndex() {\r\n return this.headersRow;\r\n }\r\n\r\n /**\r\n * Get the row index from where the filtering process start (1st filterable\r\n * row)\r\n * @return {Number}\r\n */\r\n getStartRowIndex() {\r\n return this.refRow;\r\n }\r\n\r\n /**\r\n * Get the index of the last row\r\n * @return {Number}\r\n */\r\n getLastRowIndex() {\r\n let nbRows = this.getRowsNb(true);\r\n return (nbRows - 1);\r\n }\r\n\r\n /**\r\n * Determine whether the specified column has one of the passed types\r\n * @param {Number} colIndex Column index\r\n * @param {Array} [types=[]] List of column types\r\n * @return {Boolean}\r\n */\r\n hasType(colIndex, types = []) {\r\n if (this.colTypes.length === 0) {\r\n return false;\r\n }\r\n let colType = this.colTypes[colIndex];\r\n if (isObj(colType)) {\r\n colType = colType.type;\r\n }\r\n return types.indexOf(colType) !== -1;\r\n }\r\n\r\n /**\r\n * Get the header DOM element for a given column index\r\n * @param {Number} colIndex Column index\r\n * @return {Element}\r\n */\r\n getHeaderElement(colIndex) {\r\n let table = this.gridLayout ? this.Mod.gridLayout.headTbl : this.dom();\r\n let tHead = tag(table, 'thead');\r\n let rowIdx = this.getHeadersRowIndex();\r\n let header;\r\n if (tHead.length === 0) {\r\n header = table.rows[rowIdx].cells[colIndex];\r\n }\r\n if (tHead.length === 1) {\r\n header = tHead[0].rows[rowIdx].cells[colIndex];\r\n }\r\n return header;\r\n }\r\n\r\n /**\r\n * Return the list of headers' text\r\n * @param {Boolean} excludeHiddenCols Optional: exclude hidden columns\r\n * @return {Array} list of headers' text\r\n */\r\n getHeadersText(excludeHiddenCols = false) {\r\n let headers = [];\r\n this.eachCol(\r\n (j) => {\r\n let header = this.getHeaderElement(j);\r\n let headerText = getFirstTextNode(header);\r\n headers.push(headerText);\r\n },\r\n // continue condition function\r\n (j) => {\r\n if (excludeHiddenCols && this.hasExtension('colsVisibility')) {\r\n return this.extension('colsVisibility').isColHidden(j);\r\n }\r\n return false;\r\n }\r\n );\r\n return headers;\r\n }\r\n\r\n /**\r\n * Return the filter type for a specified column\r\n * @param {Number} colIndex Column's index\r\n * @return {String}\r\n */\r\n getFilterType(colIndex) {\r\n return this.filterTypes[colIndex];\r\n }\r\n\r\n /**\r\n * Get the total number of filterable rows\r\n * @return {Number}\r\n */\r\n getFilterableRowsNb() {\r\n return this.getRowsNb(false);\r\n }\r\n\r\n /**\r\n * Return the total number of valid rows\r\n * @param {Boolean} [reCalc=false] Forces calculation of filtered rows\r\n * @return {Number}\r\n */\r\n getValidRowsNb(reCalc = false) {\r\n return this.getValidRows(reCalc).length;\r\n }\r\n\r\n /**\r\n * Return the working DOM element\r\n * @return {HTMLTableElement}\r\n */\r\n dom() {\r\n return this.tbl;\r\n }\r\n\r\n /**\r\n * Return the decimal separator for supplied column as per column type\r\n * configuration or global setting\r\n * @param {Number} colIndex Column index\r\n * @returns {String} '.' or ','\r\n */\r\n getDecimal(colIndex) {\r\n let decimal = this.decimalSeparator;\r\n if (this.hasType(colIndex, [FORMATTED_NUMBER])) {\r\n let colType = this.colTypes[colIndex];\r\n if (colType.hasOwnProperty('decimal')) {\r\n decimal = colType.decimal;\r\n }\r\n }\r\n return decimal;\r\n }\r\n\r\n /**\r\n * Get the configuration object (literal object)\r\n * @return {Object}\r\n */\r\n config() {\r\n return this.cfg;\r\n }\r\n}\r\n","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Traditional Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-TW')\n *\n */\naddLocale('zh-TW', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒鐘,分鐘,小時,天,個星期|週,個月,年',\n 'weekdays': '星期日|日|週日|星期天,星期一|一|週一,星期二|二|週二,星期三|三|週三,星期四|四|週四,星期五|五|週五,星期六|六|週六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}點{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分鐘?,點|時,日|號,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '後天', 'value': 2 },\n { 'name': 'day', 'src': '大後天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '這', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-TW\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Simplified Chinese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('zh-CN')\n *\n */\naddLocale('zh-CN', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'units': '毫秒,秒钟,分钟,小时,天,个星期|周,个月,年',\n 'weekdays': '星期日|日|周日|星期天,星期一|一|周一,星期二|二|周二,星期三|三|周三,星期四|四|周四,星期五|五|周五,星期六|六|周六',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{weekday}{time}',\n 'stamp': '{yyyy}年{M}月{d}日{H}:{mm}{dow}',\n 'time': '{tt}{h}点{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',秒,分钟?,点|时,日|号,,月,年',\n 'ampm': '上午,下午',\n 'modifiers': [\n { 'name': 'day', 'src': '大前天', 'value': -3 },\n { 'name': 'day', 'src': '前天', 'value': -2 },\n { 'name': 'day', 'src': '昨天', 'value': -1 },\n { 'name': 'day', 'src': '今天', 'value': 0 },\n { 'name': 'day', 'src': '明天', 'value': 1 },\n { 'name': 'day', 'src': '后天', 'value': 2 },\n { 'name': 'day', 'src': '大后天', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '后', 'value': 1 },\n { 'name': 'shift', 'src': '上|去', 'value': -1 },\n { 'name': 'shift', 'src': '这', 'value': 0 },\n { 'name': 'shift', 'src': '下|明', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit}{sign}',\n '{shift}{unit:5-7}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{weekday}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"zh-CN\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Swedish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('sv')\n *\n */\naddLocale('sv', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minut:|er,timm:e|ar,dag:|ar,veck:a|or|an,månad:|er|en+manad:|er|en,år:||et+ar:||et',\n 'months': 'jan:uari|,feb:ruari|,mar:s|,apr:il|,maj,jun:i|,jul:i|,aug:usti|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'sön:dag|+son:dag|,mån:dag||dagen+man:dag||dagen,tis:dag|,ons:dag|,tor:sdag|,fre:dag|,lör:dag||dag',\n 'numerals': 'noll,en|ett,två|tva,tre,fyra,fem,sex,sju,åtta|atta,nio,tio',\n 'tokens': 'den,för|for',\n 'articles': 'den',\n 'short': '{yyyy}-{MM}-{dd}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday} {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'förrgår|i förrgår|iförrgår|forrgar|i forrgar|iforrgar', 'value': -2 },\n { 'name': 'day', 'src': 'går|i går|igår|gar|i gar|igar', 'value': -1 },\n { 'name': 'day', 'src': 'dag|i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'morgon|i morgon|imorgon', 'value': 1 },\n { 'name': 'day', 'src': 'över morgon|övermorgon|i över morgon|i övermorgon|iövermorgon|over morgon|overmorgon|i over morgon|i overmorgon|iovermorgon', 'value': 2 },\n { 'name': 'sign', 'src': 'sedan|sen', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i förra|förra|i forra|forra', 'value': -1 },\n { 'name': 'shift', 'src': 'denna', 'value': 0 },\n { 'name': 'shift', 'src': 'nästa|nasta', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"sv\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Russian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ru')\n *\n */\naddLocale('ru', {\n 'firstDayOfWeekYear': 1,\n 'units': 'миллисекунд:а|у|ы|,секунд:а|у|ы|,минут:а|у|ы|,час:||а|ов,день|день|дня|дней,недел:я|ю|и|ь|е,месяц:||а|ев|е,год|год|года|лет|году',\n 'months': 'янв:аря||.|арь,фев:раля||р.|раль,мар:та||т,апр:еля||.|ель,мая|май,июн:я||ь,июл:я||ь,авг:уста||.|уст,сен:тября||т.|тябрь,окт:ября||.|ябрь,ноя:бря||брь,дек:абря||.|абрь',\n 'weekdays': 'воскресенье|вс,понедельник|пн,вторник|вт,среда|ср,четверг|чт,пятница|пт,суббота|сб',\n 'numerals': 'ноль,од:ин|ну,дв:а|е,три,четыре,пять,шесть,семь,восемь,девять,десять',\n 'tokens': 'в|на,г\\\\.?(?:ода)?',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy} г.',\n 'long': '{d} {month} {yyyy} г., {time}',\n 'full': '{weekday}, {d} {month} {yyyy} г., {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'в',\n 'ampm': ' утра, вечера',\n 'modifiers': [\n { 'name': 'day', 'src': 'позавчера', 'value': -2 },\n { 'name': 'day', 'src': 'вчера', 'value': -1 },\n { 'name': 'day', 'src': 'сегодня', 'value': 0 },\n { 'name': 'day', 'src': 'завтра', 'value': 1 },\n { 'name': 'day', 'src': 'послезавтра', 'value': 2 },\n { 'name': 'sign', 'src': 'назад', 'value': -1 },\n { 'name': 'sign', 'src': 'через', 'value': 1 },\n { 'name': 'shift', 'src': 'прошл:ый|ой|ом', 'value': -1 },\n { 'name': 'shift', 'src': 'следующ:ий|ей|ем', 'value': 1 }\n ],\n 'relative': function(num, unit, ms, format) {\n var numberWithUnit, last = num.toString().slice(-1), mult;\n switch(true) {\n case num >= 11 && num <= 15: mult = 3; break;\n case last == 1: mult = 1; break;\n case last >= 2 && last <= 4: mult = 2; break;\n default: mult = 3;\n }\n numberWithUnit = num + ' ' + this['units'][(mult * 8) + unit];\n switch(format) {\n case 'duration': return numberWithUnit;\n case 'past': return numberWithUnit + ' назад';\n case 'future': return 'через ' + numberWithUnit;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ],\n 'timeFrontParse': [\n '{0?} {shift} {weekday}',\n '{date} {months?} {year?} {1?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ru\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Portuguese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pt')\n *\n */\naddLocale('pt', {\n 'plural': true,\n 'units': 'milisegundo:|s,segundo:|s,minuto:|s,hora:|s,dia:|s,semana:|s,mês|mêses|mes|meses,ano:|s',\n 'months': 'jan:eiro|,fev:ereiro|,mar:ço|,abr:il|,mai:o|,jun:ho|,jul:ho|,ago:sto|,set:embro|,out:ubro|,nov:embro|,dez:embro|',\n 'weekdays': 'dom:ingo|,seg:unda-feira|,ter:ça-feira|,qua:rta-feira|,qui:nta-feira|,sex:ta-feira|,sáb:ado||ado',\n 'numerals': 'zero,um:|a,dois|duas,três|tres,quatro,cinco,seis,sete,oito,nove,dez',\n 'tokens': 'a,de',\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} de {Month} de {yyyy}',\n 'long': '{d} de {Month} de {yyyy} {time}',\n 'full': '{Weekday}, {d} de {Month} de {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'às',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'anteontem', 'value': -2 },\n { 'name': 'day', 'src': 'ontem', 'value': -1 },\n { 'name': 'day', 'src': 'hoje', 'value': 0 },\n { 'name': 'day', 'src': 'amanh:ã|a', 'value': 1 },\n { 'name': 'sign', 'src': 'atrás|atras|há|ha', 'value': -1 },\n { 'name': 'sign', 'src': 'daqui a', 'value': 1 },\n { 'name': 'shift', 'src': 'passad:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'próximo|próxima|proximo|proxima', 'value': 1 }\n ],\n 'parse': [\n '{months} {1?} {year?}',\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{0?} {shift} {weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{date} {1?} {months?} {1?} {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pt\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Polish locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('pl')\n *\n */\naddLocale('pl', {\n 'plural': true,\n 'units': 'milisekund:a|y|,sekund:a|y|,minut:a|y|,godzin:a|y|,dzień|dni|dni,tydzień|tygodnie|tygodni,miesiąc|miesiące|miesięcy,rok|lata|lat',\n 'months': 'sty:cznia||czeń,lut:ego||y,mar:ca||zec,kwi:etnia||ecień,maj:a|,cze:rwca||rwiec,lip:ca||iec,sie:rpnia||rpień,wrz:eśnia||esień,paź:dziernika||dziernik,lis:topada||topad,gru:dnia||dzień',\n 'weekdays': 'nie:dziela||dzielę,pon:iedziałek|,wt:orek|,śr:oda||odę,czw:artek|,piątek|pt,sobota|sb|sobotę',\n 'numerals': 'zero,jeden|jedną,dwa|dwie,trzy,cztery,pięć,sześć,siedem,osiem,dziewięć,dziesięć',\n 'tokens': 'w|we,roku',\n 'short': '{dd}.{MM}.{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full' : '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'timeMarkers': 'o',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'przedwczoraj', 'value': -2 },\n { 'name': 'day', 'src': 'wczoraj', 'value': -1 },\n { 'name': 'day', 'src': 'dzisiaj|dziś', 'value': 0 },\n { 'name': 'day', 'src': 'jutro', 'value': 1 },\n { 'name': 'day', 'src': 'pojutrze', 'value': 2 },\n { 'name': 'sign', 'src': 'temu|przed', 'value': -1 },\n { 'name': 'sign', 'src': 'za', 'value': 1 },\n { 'name': 'shift', 'src': 'zeszły|zeszła|ostatni|ostatnia', 'value': -1 },\n { 'name': 'shift', 'src': 'następny|następna|następnego|przyszły|przyszła|przyszłego', 'value': 1 }\n ],\n 'relative': function (num, unit, ms, format) {\n // special cases for relative days\n var DAY = 4;\n if (unit === DAY) {\n if (num === 1 && format === 'past') return 'wczoraj';\n if (num === 1 && format === 'future') return 'jutro';\n if (num === 2 && format === 'past') return 'przedwczoraj';\n if (num === 2 && format === 'future') return 'pojutrze';\n }\n\n var mult;\n var last = +num.toFixed(0).slice(-1);\n var last2 = +num.toFixed(0).slice(-2);\n switch (true) {\n case num === 1: mult = 0; break;\n case last2 >= 12 && last2 <= 14: mult = 2; break;\n case last >= 2 && last <= 4: mult = 1; break;\n default: mult = 2;\n }\n var text = this['units'][(mult * 8) + unit];\n var prefix = num + ' ';\n\n // changing to accusative case for 'past' and 'future' formats\n // (only singular feminine unit words are different in accusative, each of which ends with 'a')\n if ((format === 'past' || format === 'future') && num === 1) {\n text = text.replace(/a$/, 'ę');\n }\n\n text = prefix + text;\n switch (format) {\n case 'duration': return text;\n case 'past': return text + ' temu';\n case 'future': return 'za ' + text;\n }\n },\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{months} {year?}',\n '{shift} {unit:5-7}',\n '{0} {shift?} {weekday}'\n ],\n 'timeFrontParse': [\n '{day|weekday}',\n '{date} {months} {year?} {1?}',\n '{0?} {shift?} {weekday}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"pl\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Norwegian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('no')\n *\n */\naddLocale('no', {\n 'plural': true,\n 'units': 'millisekund:|er,sekund:|er,minutt:|er,tim:e|er,dag:|er,uk:e|er|en,måned:|er|en+maaned:|er|en,år:||et+aar:||et',\n 'months': 'januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember',\n 'weekdays': 'søndag|sondag,mandag,tirsdag,onsdag,torsdag,fredag,lørdag|lordag',\n 'numerals': 'en|et,to,tre,fire,fem,seks,sju|syv,åtte,ni,ti',\n 'tokens': 'den,for',\n 'articles': 'den',\n 'short':'d. {d}. {month} {yyyy}',\n 'long': 'den {d}. {month} {yyyy} {H}:{mm}',\n 'full': '{Weekday} den {d}. {month} {yyyy} {H}:{mm}:{ss}',\n 'past': '{num} {unit} {sign}',\n 'future': '{sign} {num} {unit}',\n 'duration': '{num} {unit}',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'forgårs|i forgårs|forgaars|i forgaars', 'value': -2 },\n { 'name': 'day', 'src': 'i går|igår|i gaar|igaar', 'value': -1 },\n { 'name': 'day', 'src': 'i dag|idag', 'value': 0 },\n { 'name': 'day', 'src': 'i morgen|imorgen', 'value': 1 },\n { 'name': 'day', 'src': 'overimorgen|overmorgen|over i morgen', 'value': 2 },\n { 'name': 'sign', 'src': 'siden', 'value': -1 },\n { 'name': 'sign', 'src': 'om', 'value': 1 },\n { 'name': 'shift', 'src': 'i siste|siste', 'value': -1 },\n { 'name': 'shift', 'src': 'denne', 'value': 0 },\n { 'name': 'shift', 'src': 'neste', 'value': 1 }\n ],\n 'parse': [\n '{num} {unit} {sign}',\n '{sign} {num} {unit}',\n '{1?} {num} {unit} {sign}',\n '{shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{date} {month}',\n '{shift} {weekday}',\n '{0?} {weekday?},? {date?} {month}\\\\.? {year}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"no\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Dutch locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('nl')\n *\n */\naddLocale('nl', {\n 'plural': true,\n 'units': 'milliseconde:|n,seconde:|n,minu:ut|ten,uur,dag:|en,we:ek|ken,maand:|en,jaar',\n 'months': 'jan:uari|,feb:ruari|,maart|mrt,apr:il|,mei,jun:i|,jul:i|,aug:ustus|,sep:tember|,okt:ober|,nov:ember|,dec:ember|',\n 'weekdays': 'zondag|zo,maandag|ma,dinsdag|di,woensdag|wo|woe,donderdag|do,vrijdag|vr|vrij,zaterdag|za',\n 'numerals': 'nul,een,twee,drie,vier,vijf,zes,zeven,acht,negen,tien',\n 'short': '{dd}-{MM}-{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {time}',\n 'full': '{weekday} {d} {Month} {yyyy} {time}',\n 'stamp': '{dow} {d} {Mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': \"'s,om\",\n 'modifiers': [\n { 'name': 'day', 'src': 'gisteren', 'value': -1 },\n { 'name': 'day', 'src': 'vandaag', 'value': 0 },\n { 'name': 'day', 'src': 'morgen', 'value': 1 },\n { 'name': 'day', 'src': 'overmorgen', 'value': 2 },\n { 'name': 'sign', 'src': 'geleden', 'value': -1 },\n { 'name': 'sign', 'src': 'vanaf nu', 'value': 1 },\n { 'name': 'shift', 'src': 'laatste|vorige|afgelopen', 'value': -1 },\n { 'name': 'shift', 'src': 'volgend:|e', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{shift?} {day|weekday}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"nl\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Korean locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ko')\n *\n */\naddLocale('ko', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'units': '밀리초,초,분,시간,일,주,개월|달,년|해',\n 'weekdays': '일:요일|,월:요일|,화:요일|,수:요일|,목:요일|,금:요일|,토:요일|',\n 'numerals': '영|제로,일|한,이,삼,사,오,육,칠,팔,구,십',\n 'short': '{yyyy}.{MM}.{dd}',\n 'medium': '{yyyy}년 {M}월 {d}일',\n 'long': '{yyyy}년 {M}월 {d}일 {time}',\n 'full': '{yyyy}년 {M}월 {d}일 {weekday} {time}',\n 'stamp': '{yyyy}년 {M}월 {d}일 {H}:{mm} {dow}',\n 'time': '{tt} {h}시 {mm}분',\n 'past': '{num}{unit} {sign}',\n 'future': '{num}{unit} {sign}',\n 'duration': '{num}{unit}',\n 'timeSuffixes': ',초,분,시,일,,월,년',\n 'ampm': '오전,오후',\n 'modifiers': [\n { 'name': 'day', 'src': '그저께', 'value': -2 },\n { 'name': 'day', 'src': '어제', 'value': -1 },\n { 'name': 'day', 'src': '오늘', 'value': 0 },\n { 'name': 'day', 'src': '내일', 'value': 1 },\n { 'name': 'day', 'src': '모레', 'value': 2 },\n { 'name': 'sign', 'src': '전', 'value': -1 },\n { 'name': 'sign', 'src': '후', 'value': 1 },\n { 'name': 'shift', 'src': '지난|작', 'value': -1 },\n { 'name': 'shift', 'src': '이번|올', 'value': 0 },\n { 'name': 'shift', 'src': '다음|내', 'value': 1 }\n ],\n 'parse': [\n '{num}{unit} {sign}',\n '{shift?} {unit:5-7}',\n '{year?} {month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift} {unit:5?} {weekday}',\n '{year?} {month?} {date} {weekday?}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ko\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Japanese locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('ja')\n *\n */\naddLocale('ja', {\n 'ampmFront': true,\n 'numeralUnits': true,\n 'allowsFullWidth': true,\n 'timeMarkerOptional': true,\n 'firstDayOfWeek': 0,\n 'firstDayOfWeekYear': 1,\n 'units': 'ミリ秒,秒,分,時間,日,週間|週,ヶ月|ヵ月|月,年|年度',\n 'weekdays': '日:曜日||曜,月:曜日||曜,火:曜日||曜,水:曜日||曜,木:曜日||曜,金:曜日||曜,土:曜日||曜',\n 'numerals': '〇,一,二,三,四,五,六,七,八,九',\n 'placeholders': '十,百,千,万',\n 'timeSuffixes': ',秒,分,時,日,,月,年度?',\n 'short': '{yyyy}/{MM}/{dd}',\n 'medium': '{yyyy}年{M}月{d}日',\n 'long': '{yyyy}年{M}月{d}日{time}',\n 'full': '{yyyy}年{M}月{d}日{time} {weekday}',\n 'stamp': '{yyyy}年{M}月{d}日 {H}:{mm} {dow}',\n 'time': '{tt}{h}時{mm}分',\n 'past': '{num}{unit}{sign}',\n 'future': '{num}{unit}{sign}',\n 'duration': '{num}{unit}',\n 'ampm': '午前,午後',\n 'modifiers': [\n { 'name': 'day', 'src': '一昨々日|前々々日', 'value': -3 },\n { 'name': 'day', 'src': '一昨日|おととい|前々日', 'value': -2 },\n { 'name': 'day', 'src': '昨日|前日', 'value': -1 },\n { 'name': 'day', 'src': '今日|当日|本日', 'value': 0 },\n { 'name': 'day', 'src': '明日|翌日|次日', 'value': 1 },\n { 'name': 'day', 'src': '明後日|翌々日', 'value': 2 },\n { 'name': 'day', 'src': '明々後日|翌々々日', 'value': 3 },\n { 'name': 'sign', 'src': '前', 'value': -1 },\n { 'name': 'sign', 'src': '後', 'value': 1 },\n { 'name': 'edge', 'src': '始|初日|頭', 'value': -2 },\n { 'name': 'edge', 'src': '末|尻', 'value': 2 },\n { 'name': 'edge', 'src': '末日', 'value': 1 },\n { 'name': 'shift', 'src': '一昨々|前々々', 'value': -3 },\n { 'name': 'shift', 'src': '一昨|前々|先々', 'value': -2 },\n { 'name': 'shift', 'src': '先|昨|去|前', 'value': -1 },\n { 'name': 'shift', 'src': '今|本|当', 'value': 0 },\n { 'name': 'shift', 'src': '来|明|翌|次', 'value': 1 },\n { 'name': 'shift', 'src': '明後|翌々|次々|再来|さ来', 'value': 2 },\n { 'name': 'shift', 'src': '明々後|翌々々', 'value': 3 }\n ],\n 'parse': [\n '{month}{edge}',\n '{num}{unit}{sign}',\n '{year?}{month}',\n '{year}'\n ],\n 'timeParse': [\n '{day|weekday}',\n '{shift}{unit:5}{weekday?}',\n '{shift}{unit:7}{month}{edge}',\n '{shift}{unit:7}{month?}{date?}',\n '{shift}{unit:6}{edge?}{date?}',\n '{year?}{month?}{date}'\n ]\n});\n\n\n// This package does not export anything as it is\n// simply registering the \"ja\" locale.","'use strict';\n\nvar addLocale = require('../date/addLocale');\n\n/*\n * Italian locale definition.\n * See the readme for customization and more information.\n * To set this locale globally:\n *\n * Sugar.Date.setLocale('it')\n *\n */\naddLocale('it', {\n 'plural': true,\n 'units': 'millisecond:o|i,second:o|i,minut:o|i,or:a|e,giorn:o|i,settiman:a|e,mes:e|i,ann:o|i',\n 'months': 'gen:naio|,feb:braio|,mar:zo|,apr:ile|,mag:gio|,giu:gno|,lug:lio|,ago:sto|,set:tembre|,ott:obre|,nov:embre|,dic:embre|',\n 'weekdays': 'dom:enica|,lun:edì||edi,mar:tedì||tedi,mer:coledì||coledi,gio:vedì||vedi,ven:erdì||erdi,sab:ato|',\n 'numerals': \"zero,un:|a|o|',due,tre,quattro,cinque,sei,sette,otto,nove,dieci\",\n 'tokens': \"l'|la|il\",\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {month} {yyyy}',\n 'long': '{d} {month} {yyyy} {time}',\n 'full': '{weekday}, {d} {month} {yyyy} {time}',\n 'stamp': '{dow} {d} {mon} {yyyy} {time}',\n 'time': '{H}:{mm}',\n 'past': '{num} {unit} {sign}',\n 'future': '{num} {unit} {sign}',\n 'duration': '{num} {unit}',\n 'timeMarkers': 'alle',\n 'ampm': 'am,pm',\n 'modifiers': [\n { 'name': 'day', 'src': 'ieri', 'value': -1 },\n { 'name': 'day', 'src': 'oggi', 'value': 0 },\n { 'name': 'day', 'src': 'domani', 'value': 1 },\n { 'name': 'day', 'src': 'dopodomani', 'value': 2 },\n { 'name': 'sign', 'src': 'fa', 'value': -1 },\n { 'name': 'sign', 'src': 'da adesso', 'value': 1 },\n { 'name': 'shift', 'src': 'scors:o|a', 'value': -1 },\n { 'name': 'shift', 'src': 'prossim:o|a', 'value': 1 }\n ],\n 'parse': [\n '{months} {year?}',\n '{num} {unit} {sign}',\n '{0?} {unit:5-7} {shift}',\n '{0?} {shift} {unit:5-7}'\n ],\n 'timeParse': [\n '{day|weekday} {shift?}',\n '{weekday?},? {date} {months?}\\\\.? {year?}'\n ],\n 'timeFrontParse': [\n '{day|weekday} {shift?}',\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 'timeSeparator': '.',\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, everyFn) {\n return rangeEvery(this, amount, false, everyFn);\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 collectUpdateDateArguments = require('./internal/collectUpdateDateArguments');\n\nSugar.Date.defineInstanceWithArguments({\n\n 'set': function(d, args) {\n args = collectUpdateDateArguments(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, relativeFn) {\n return dateRelative(date, null, localeCode, relativeFn);\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 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 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 // istanbul ignore if\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 = /\\(([-+]\\d{2,4}|\\w{3,5})\\)$/;","'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 // istanbul ignore next\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] ? +match[1] : 1;\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 createDate = require('./createDate'),\n compareDate = require('./compareDate'),\n advanceDate = require('./advanceDate'),\n moveToEndOfUnit = require('./moveToEndOfUnit'),\n namespaceAliases = require('../../common/var/namespaceAliases'),\n simpleCapitalize = require('../../common/internal/simpleCapitalize'),\n moveToBeginningOfUnit = require('./moveToBeginningOfUnit'),\n defineInstanceSimilar = require('../../common/internal/defineInstanceSimilar'),\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, createDate(d, options, true), unit);\n };\n var until = function(date, d, options) {\n return getTimeDistanceForUnit(createDate(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\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\nmodule.exports = /^'?(\\d{1,2})$/;","'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 // istanbul ignore next\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 // This block cannot be reached unless ES5 methods are being shimmed.\n // istanbul ignore if\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 // 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 localeCheck: function(loc) {\n // Do not allow this format if the locale\n // uses a period as a time separator.\n return loc.timeSeparator !== '.';\n }\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: '{iyyyy}(?:-?{MM}(?:-?{dd}(?:T{ihh}(?::?{imm}(?::?{ss})?)?)?)?)?{tzOffset?}'\n }\n];\n\nmodule.exports = CoreParsingFormats;","'use strict';\n\nvar CoreParsingTokens = {\n 'yyyy': {\n param: 'year',\n src: '[-−+]?\\\\d{4,6}'\n },\n 'yy': {\n param: 'year',\n src: '\\\\d{2}'\n },\n 'y': {\n param: 'year',\n src: '\\\\d'\n },\n 'ayy': {\n param: 'year',\n src: '\\'\\\\d{2}'\n },\n 'MM': {\n param: 'month',\n src: '(?:1[012]|0?[1-9])'\n },\n 'dd': {\n param: 'date',\n src: '(?:3[01]|[12][0-9]|0?[1-9])'\n },\n 'hh': {\n param: 'hour',\n src: '(?:2[0-4]|[01]?[0-9])'\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 'tzHour': {\n src: '[-−+](?:2[0-4]|[01]?[0-9])'\n },\n 'tzMinute': {\n src: '[0-5]\\\\d'\n },\n 'iyyyy': {\n param: 'year',\n src: '(?:[-−+]?\\\\d{4}|[-−+]\\\\d{5,6})'\n },\n 'ihh': {\n param: 'hour',\n src: '(?:2[0-4]|[01][0-9])(?:[,.]\\\\d+)?'\n },\n 'imm': {\n param: 'minute',\n src: '[0-5]\\\\d(?:[,.]\\\\d+)?'\n },\n 'GMT': {\n param: 'utc',\n src: 'GMT'\n },\n 'Z': {\n param: 'utc',\n src: 'Z'\n },\n 'timestamp': {\n src: '\\\\d+'\n }\n};\n\nmodule.exports = CoreParsingTokens;","'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 CoreParsingTokens = require('../var/CoreParsingTokens'),\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 mathAliases = require('../../common/var/mathAliases'),\n isUndefined = require('../../common/internal/isUndefined'),\n simpleMerge = require('../../common/internal/simpleMerge'),\n getOrdinalSuffix = require('../../common/internal/getOrdinalSuffix'),\n getArrayWithOffset = require('./getArrayWithOffset'),\n getRegNonCapturing = require('./getRegNonCapturing'),\n coreUtilityAliases = require('../../common/var/coreUtilityAliases'),\n iterateOverDateUnits = require('./iterateOverDateUnits'),\n arrayToRegAlternates = require('./arrayToRegAlternates'),\n fullwidthNumberHelpers = require('../../common/var/fullwidthNumberHelpers'),\n getAdjustedUnitForNumber = require('./getAdjustedUnitForNumber'),\n getParsingTokenWithSuffix = require('./getParsingTokenWithSuffix');\n\nvar hasOwn = coreUtilityAliases.hasOwn,\n 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 // TODO: rename to parse in next major version\n parseValue: function(str, param) {\n var map = this[param + 'Map'];\n if (hasOwn(map, str)) {\n return map[str];\n }\n return this.parseNumber(str, param);\n },\n\n // TODO: analyze performance of parsing first vs checking\n // numeralMap first.\n parseNumber: function(str, param) {\n var val;\n\n // Simple numerals such as \"one\" are mapped directly in\n // the numeral map so catch up front if there is a match.\n if (hasOwn(this.numeralMap, str)) {\n val = this.numeralMap[str];\n }\n\n // TODO: perf test isNaN vs other methods\n if (isNaN(val)) {\n val = this.parseRegularNumerals(str);\n }\n\n if (isNaN(val)) {\n val = this.parseIrregularNumerals(str);\n }\n\n if (param === '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 // TODO: perf test returning up front if no regular decimals exist\n parseRegularNumerals: function(str) {\n // Allow decimals as commas and the minus-sign as per ISO-8601.\n str = str.replace(/^−/, '-').replace(/,/, '.');\n\n // The unary plus operator here shows 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 return +str;\n },\n\n parseIrregularNumerals: function(str) {\n var place = 1, num = 0, lastWasPlace, isPlace, numeral, digit, arr;\n\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(format) {\n var loc = this, src, to;\n\n function getTokenSrc(token) {\n var suffix, src, tmp,\n opt = token.match(/\\?$/),\n nc = token.match(/^(\\d+)\\??$/),\n slice = token.match(/(\\d)(?:-(\\d))?/),\n param = token.replace(/[^a-z]+$/i, '');\n\n // Allowing alias tokens such as {time}\n if (tmp = getOwn(loc.parsingAliases, param)) {\n src = formatToSrc(tmp);\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 (tmp = getOwn(CoreParsingTokens, param)) {\n src = tmp.src;\n param = tmp.param || param;\n } else {\n tmp = getOwn(loc.parsingTokens, param) || getOwn(loc, param);\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 param = param.replace(/s$/, '');\n\n if (!tmp) {\n tmp = getOwn(loc.parsingTokens, param) || getOwn(loc, param + 's');\n }\n\n if (isString(tmp)) {\n src = tmp;\n suffix = loc[param + 'Suffix'];\n } else {\n\n // This is a hack to temporarily disallow parsing of single character\n // weekdays until the format can be changed to allow for this.\n if (param === 'weekday' && loc.code === 'ko') {\n tmp = filter(tmp, function(str) {\n return str.length > 1;\n });\n }\n\n if (slice) {\n tmp = filter(tmp, function(m, i) {\n var mod = i % (loc.units ? 8 : tmp.length);\n return mod >= slice[1] && mod <= (slice[2] || slice[1]);\n });\n }\n src = arrayToRegAlternates(tmp);\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(param);\n src = '(' + src + ')';\n }\n if (suffix) {\n // Date/time suffixes such as those in CJK\n src = getParsingTokenWithSuffix(param, src, suffix);\n }\n if (opt) {\n src += '?';\n }\n return src;\n }\n\n function formatToSrc(str) {\n\n // Make spaces optional\n str = str.replace(/ /g, ' ?');\n\n str = str.replace(/\\{([^,]+?)\\}/g, function(match, token) {\n var tokens = token.split('|');\n if (tokens.length > 1) {\n return getRegNonCapturing(map(tokens, getTokenSrc).join('|'));\n } else {\n return getTokenSrc(token);\n }\n });\n\n return str;\n }\n\n function parseInputFormat() {\n to = [];\n src = formatToSrc(format);\n }\n\n parseInputFormat();\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(standalone) {\n var src, sep;\n sep = getTimeSeparatorSrc(standalone);\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}(?:'+sep+'{minute?}(?:'+sep+'{second?})? {ampm?}| {ampm})';\n } else {\n src = '{hour}(?:'+sep+'{minute?}(?:'+sep+'{second?})?)';\n }\n return src;\n }\n\n function getTimeSeparatorSrc() {\n if (loc.timeSeparator) {\n return '[:' + loc.timeSeparator + ']';\n } else {\n return ':';\n }\n }\n\n function getTZOffsetFormat() {\n return '(?:{Z}|{GMT?}(?:{tzHour}(?::?{tzMinute}(?: \\\\([\\\\w\\\\s]+\\\\))?)?)?)?';\n }\n\n function buildParsingTokens() {\n forEachProperty(LocalizedParsingTokens, function(token, name) {\n var src = token.base ? getCoreTokensForBase(token.base) : token.src, arr;\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 getCoreTokensForBase(base) {\n return map(base.split('|'), function(key) {\n return CoreParsingTokens[key].src;\n }).join('|');\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.localeCheck && !df.localeCheck(loc)) {\n return;\n }\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}{tzOffset}', 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}',\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?} (?:at)? {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 '{0|months} {date?}{1?} of {shift} {unit:6-7}',\n '{0?} {num}{1?} {weekday} of {shift} {unit:6}',\n '{year?}[-.\\\\/\\\\s]?{months}[-.\\\\/\\\\s]{date}',\n '{date}[-.\\\\/\\\\s]{months}(?:[-.\\\\/\\\\s]{year|yy})?',\n '{weekday?}\\\\.?,? {months}\\\\.?,? {date}{1?},? {year?}',\n '{weekday?}\\\\.?,? {date} {months} {year}'\n ],\n 'timeFrontParse': [\n '{sign} {num} {unit}',\n '{num} {unit} {sign}',\n '{4?} {day|weekday}'\n ]\n};\n\nmodule.exports = EnglishLocaleBaseDefinition;","'use strict';\n\nvar getEnglishVariant = require('../internal/getEnglishVariant');\n\nvar BritishEnglishDefinition = getEnglishVariant({\n 'short': '{dd}/{MM}/{yyyy}',\n 'medium': '{d} {Month} {yyyy}',\n 'long': '{d} {Month} {yyyy} {H}:{mm}',\n 'full': '{Weekday}, {d} {Month}, {yyyy} {time}',\n 'stamp': '{Dow} {d} {Mon} {yyyy} {time}'\n});\n\nmodule.exports = BritishEnglishDefinition;","'use strict';\n\nvar BritishEnglishDefinition = require('./BritishEnglishDefinition'),\n AmericanEnglishDefinition = require('./AmericanEnglishDefinition'),\n CanadianEnglishDefinition = require('./CanadianEnglishDefinition');\n\nvar LazyLoadedLocales = {\n 'en-US': AmericanEnglishDefinition,\n 'en-GB': BritishEnglishDefinition,\n 'en-AU': BritishEnglishDefinition,\n 'en-CA': CanadianEnglishDefinition\n};\n\nmodule.exports = LazyLoadedLocales;","'use strict';\n\n// Static Methods\nrequire('./addLocale');\nrequire('./create');\nrequire('./getAllLocaleCodes');\nrequire('./getAllLocales');\nrequire('./getLocale');\nrequire('./removeLocale');\nrequire('./setLocale');\n\n// Instance Methods\nrequire('../number/day');\nrequire('../number/dayAfter');\nrequire('../number/dayAgo');\nrequire('../number/dayBefore');\nrequire('../number/dayFromNow');\nrequire('../number/days');\nrequire('../number/daysAfter');\nrequire('../number/daysAgo');\nrequire('../number/daysBefore');\nrequire('../number/daysFromNow');\nrequire('../number/duration');\nrequire('../number/hour');\nrequire('../number/hourAfter');\nrequire('../number/hourAgo');\nrequire('../number/hourBefore');\nrequire('../number/hourFromNow');\nrequire('../number/hours');\nrequire('../number/hoursAfter');\nrequire('../number/hoursAgo');\nrequire('../number/hoursBefore');\nrequire('../number/hoursFromNow');\nrequire('../number/millisecond');\nrequire('../number/millisecondAfter');\nrequire('../number/millisecondAgo');\nrequire('../number/millisecondBefore');\nrequire('../number/millisecondFromNow');\nrequire('../number/milliseconds');\nrequire('../number/millisecondsAfter');\nrequire('../number/millisecondsAgo');\nrequire('../number/millisecondsBefore');\nrequire('../number/millisecondsFromNow');\nrequire('../number/minute');\nrequire('../number/minuteAfter');\nrequire('../number/minuteAgo');\nrequire('../number/minuteBefore');\nrequire('../number/minuteFromNow');\nrequire('../number/minutes');\nrequire('../number/minutesAfter');\nrequire('../number/minutesAgo');\nrequire('../number/minutesBefore');\nrequire('../number/minutesFromNow');\nrequire('../number/month');\nrequire('../number/monthAfter');\nrequire('../number/monthAgo');\nrequire('../number/monthBefore');\nrequire('../number/monthFromNow');\nrequire('../number/months');\nrequire('../number/monthsAfter');\nrequire('../number/monthsAgo');\nrequire('../number/monthsBefore');\nrequire('../number/monthsFromNow');\nrequire('../number/second');\nrequire('../number/secondAfter');\nrequire('../number/secondAgo');\nrequire('../number/secondBefore');\nrequire('../number/secondFromNow');\nrequire('../number/seconds');\nrequire('../number/secondsAfter');\nrequire('../number/secondsAgo');\nrequire('../number/secondsBefore');\nrequire('../number/secondsFromNow');\nrequire('../number/week');\nrequire('../number/weekAfter');\nrequire('../number/weekAgo');\nrequire('../number/weekBefore');\nrequire('../number/weekFromNow');\nrequire('../number/weeks');\nrequire('../number/weeksAfter');\nrequire('../number/weeksAgo');\nrequire('../number/weeksBefore');\nrequire('../number/weeksFromNow');\nrequire('../number/year');\nrequire('../number/yearAfter');\nrequire('../number/yearAgo');\nrequire('../number/yearBefore');\nrequire('../number/yearFromNow');\nrequire('../number/years');\nrequire('../number/yearsAfter');\nrequire('../number/yearsAgo');\nrequire('../number/yearsBefore');\nrequire('../number/yearsFromNow');\nrequire('./addDays');\nrequire('./addHours');\nrequire('./addMilliseconds');\nrequire('./addMinutes');\nrequire('./addMonths');\nrequire('./addSeconds');\nrequire('./addWeeks');\nrequire('./addYears');\nrequire('./advance');\nrequire('./beginningOfDay');\nrequire('./beginningOfISOWeek');\nrequire('./beginningOfMonth');\nrequire('./beginningOfWeek');\nrequire('./beginningOfYear');\nrequire('./clone');\nrequire('./daysAgo');\nrequire('./daysFromNow');\nrequire('./daysInMonth');\nrequire('./daysSince');\nrequire('./daysUntil');\nrequire('./endOfDay');\nrequire('./endOfISOWeek');\nrequire('./endOfMonth');\nrequire('./endOfWeek');\nrequire('./endOfYear');\nrequire('./format');\nrequire('./get');\nrequire('./getISOWeek');\nrequire('./getUTCOffset');\nrequire('./getUTCWeekday');\nrequire('./getWeekday');\nrequire('./hoursAgo');\nrequire('./hoursFromNow');\nrequire('./hoursSince');\nrequire('./hoursUntil');\nrequire('./is');\nrequire('./isAfter');\nrequire('./isBefore');\nrequire('./isBetween');\nrequire('./isFriday');\nrequire('./isFuture');\nrequire('./isLastMonth');\nrequire('./isLastWeek');\nrequire('./isLastYear');\nrequire('./isLeapYear');\nrequire('./isMonday');\nrequire('./isNextMonth');\nrequire('./isNextWeek');\nrequire('./isNextYear');\nrequire('./isPast');\nrequire('./isSaturday');\nrequire('./isSunday');\nrequire('./isThisMonth');\nrequire('./isThisWeek');\nrequire('./isThisYear');\nrequire('./isThursday');\nrequire('./isToday');\nrequire('./isTomorrow');\nrequire('./isTuesday');\nrequire('./isUTC');\nrequire('./isValid');\nrequire('./isWednesday');\nrequire('./isWeekday');\nrequire('./isWeekend');\nrequire('./isYesterday');\nrequire('./iso');\nrequire('./millisecondsAgo');\nrequire('./millisecondsFromNow');\nrequire('./millisecondsSince');\nrequire('./millisecondsUntil');\nrequire('./minutesAgo');\nrequire('./minutesFromNow');\nrequire('./minutesSince');\nrequire('./minutesUntil');\nrequire('./monthsAgo');\nrequire('./monthsFromNow');\nrequire('./monthsSince');\nrequire('./monthsUntil');\nrequire('./relative');\nrequire('./relativeTo');\nrequire('./reset');\nrequire('./rewind');\nrequire('./secondsAgo');\nrequire('./secondsFromNow');\nrequire('./secondsSince');\nrequire('./secondsUntil');\nrequire('./set');\nrequire('./setISOWeek');\nrequire('./setUTC');\nrequire('./setWeekday');\nrequire('./weeksAgo');\nrequire('./weeksFromNow');\nrequire('./weeksSince');\nrequire('./weeksUntil');\nrequire('./yearsAgo');\nrequire('./yearsFromNow');\nrequire('./yearsSince');\nrequire('./yearsUntil');\n\n// Accessors\nrequire('./getOption');\nrequire('./setOption');\n\nmodule.exports = require('sugar-core');"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e34b1bc2..955387bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "tablefilter", - "version": "0.6.77", + "version": "0.6.78", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -19,20 +19,20 @@ "integrity": "sha512-w445QGI2qd0E0GlSnq6huRZWPMmQGCp5gd5ZWS4hagn0EiwzxD5QMFkpchyusAyVC1n27OKXzQ0/88aVU9n4xQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.3.3", - "@babel/helpers": "^7.2.0", - "@babel/parser": "^7.3.3", - "@babel/template": "^7.2.2", - "@babel/traverse": "^7.2.2", - "@babel/types": "^7.3.3", - "convert-source-map": "^1.1.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.11", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.3.3", + "@babel/helpers": "7.3.1", + "@babel/parser": "7.3.3", + "@babel/template": "7.2.2", + "@babel/traverse": "7.2.3", + "@babel/types": "7.3.3", + "convert-source-map": "1.6.0", + "debug": "4.1.1", + "json5": "2.1.0", + "lodash": "4.17.11", + "resolve": "1.10.0", + "semver": "5.5.0", + "source-map": "0.5.7" }, "dependencies": { "@babel/generator": { @@ -41,11 +41,11 @@ "integrity": "sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A==", "dev": true, "requires": { - "@babel/types": "^7.3.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "@babel/types": "7.3.3", + "jsesc": "2.5.2", + "lodash": "4.17.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "@babel/helper-function-name": { @@ -82,15 +82,15 @@ "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.3.3", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/parser": "7.3.3", + "@babel/types": "7.3.3", + "debug": "4.1.1", + "globals": "11.11.0", + "lodash": "4.17.11" } }, "@babel/types": { @@ -99,9 +99,9 @@ "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } }, "debug": { @@ -110,7 +110,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "globals": { @@ -158,7 +158,7 @@ "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "path-parse": "1.0.6" } }, "to-fast-properties": { @@ -202,7 +202,7 @@ "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "7.0.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -211,8 +211,8 @@ "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-explode-assignable-expression": "7.1.0", + "@babel/types": "7.0.0" } }, "@babel/helper-call-delegate": { @@ -221,9 +221,9 @@ "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-hoist-variables": "7.0.0", + "@babel/traverse": "7.2.3", + "@babel/types": "7.0.0" }, "dependencies": { "@babel/generator": { @@ -232,11 +232,11 @@ "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==", "dev": true, "requires": { - "@babel/types": "^7.3.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "@babel/types": "7.3.2", + "jsesc": "2.5.2", + "lodash": "4.17.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" }, "dependencies": { "@babel/types": { @@ -245,9 +245,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -258,9 +258,9 @@ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.2.2", + "@babel/types": "7.0.0" } }, "@babel/parser": { @@ -275,9 +275,9 @@ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2" }, "dependencies": { "@babel/types": { @@ -286,9 +286,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -299,15 +299,15 @@ "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.3.2", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2", + "debug": "4.1.1", + "globals": "11.10.0", + "lodash": "4.17.11" }, "dependencies": { "@babel/types": { @@ -316,9 +316,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -329,7 +329,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "globals": { @@ -370,9 +370,9 @@ "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.0.0", - "lodash": "^4.17.10" + "@babel/helper-function-name": "7.1.0", + "@babel/types": "7.0.0", + "lodash": "4.17.11" }, "dependencies": { "@babel/helper-function-name": { @@ -381,9 +381,9 @@ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.2.2", + "@babel/types": "7.0.0" } }, "@babel/parser": { @@ -398,9 +398,9 @@ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2" }, "dependencies": { "@babel/types": { @@ -409,9 +409,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -436,8 +436,8 @@ "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "7.2.3", + "@babel/types": "7.0.0" }, "dependencies": { "@babel/generator": { @@ -446,11 +446,11 @@ "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==", "dev": true, "requires": { - "@babel/types": "^7.3.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "@babel/types": "7.3.2", + "jsesc": "2.5.2", + "lodash": "4.17.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" }, "dependencies": { "@babel/types": { @@ -459,9 +459,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -472,9 +472,9 @@ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.2.2", + "@babel/types": "7.0.0" } }, "@babel/parser": { @@ -489,9 +489,9 @@ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2" }, "dependencies": { "@babel/types": { @@ -500,9 +500,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -513,15 +513,15 @@ "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.3.2", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2", + "debug": "4.1.1", + "globals": "11.10.0", + "lodash": "4.17.11" }, "dependencies": { "@babel/types": { @@ -530,9 +530,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -543,7 +543,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "globals": { @@ -604,7 +604,7 @@ "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "7.0.0" } }, "@babel/helper-member-expression-to-functions": { @@ -613,7 +613,7 @@ "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "7.0.0" } }, "@babel/helper-module-imports": { @@ -622,7 +622,7 @@ "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "7.0.0" } }, "@babel/helper-module-transforms": { @@ -631,12 +631,12 @@ "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/types": "^7.2.2", - "lodash": "^4.17.10" + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-simple-access": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/template": "7.2.2", + "@babel/types": "7.3.2", + "lodash": "4.17.11" }, "dependencies": { "@babel/parser": { @@ -651,9 +651,9 @@ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2" } }, "@babel/types": { @@ -662,9 +662,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } }, "lodash": { @@ -687,7 +687,7 @@ "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "7.0.0" } }, "@babel/helper-plugin-utils": { @@ -702,7 +702,7 @@ "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "4.17.11" }, "dependencies": { "lodash": { @@ -719,11 +719,11 @@ "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-wrap-function": "7.2.0", + "@babel/template": "7.2.2", + "@babel/traverse": "7.2.3", + "@babel/types": "7.0.0" }, "dependencies": { "@babel/generator": { @@ -732,11 +732,11 @@ "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==", "dev": true, "requires": { - "@babel/types": "^7.3.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "@babel/types": "7.3.2", + "jsesc": "2.5.2", + "lodash": "4.17.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" }, "dependencies": { "@babel/types": { @@ -745,9 +745,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -758,9 +758,9 @@ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.2.2", + "@babel/types": "7.0.0" } }, "@babel/parser": { @@ -775,9 +775,9 @@ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2" }, "dependencies": { "@babel/types": { @@ -786,9 +786,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -799,15 +799,15 @@ "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.3.2", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2", + "debug": "4.1.1", + "globals": "11.10.0", + "lodash": "4.17.11" }, "dependencies": { "@babel/types": { @@ -816,9 +816,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -829,7 +829,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "globals": { @@ -870,10 +870,10 @@ "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.2.3", - "@babel/types": "^7.0.0" + "@babel/helper-member-expression-to-functions": "7.0.0", + "@babel/helper-optimise-call-expression": "7.0.0", + "@babel/traverse": "7.2.3", + "@babel/types": "7.0.0" }, "dependencies": { "@babel/generator": { @@ -882,11 +882,11 @@ "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==", "dev": true, "requires": { - "@babel/types": "^7.3.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "@babel/types": "7.3.2", + "jsesc": "2.5.2", + "lodash": "4.17.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" }, "dependencies": { "@babel/types": { @@ -895,9 +895,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -908,9 +908,9 @@ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.2.2", + "@babel/types": "7.0.0" } }, "@babel/parser": { @@ -925,9 +925,9 @@ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2" }, "dependencies": { "@babel/types": { @@ -936,9 +936,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -949,15 +949,15 @@ "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.3.2", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2", + "debug": "4.1.1", + "globals": "11.10.0", + "lodash": "4.17.11" }, "dependencies": { "@babel/types": { @@ -966,9 +966,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -979,7 +979,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "globals": { @@ -1020,8 +1020,8 @@ "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "7.2.2", + "@babel/types": "7.0.0" }, "dependencies": { "@babel/parser": { @@ -1036,9 +1036,9 @@ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2" }, "dependencies": { "@babel/types": { @@ -1047,9 +1047,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -1083,10 +1083,10 @@ "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "7.1.0", + "@babel/template": "7.2.2", + "@babel/traverse": "7.2.3", + "@babel/types": "7.3.2" }, "dependencies": { "@babel/generator": { @@ -1095,11 +1095,11 @@ "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==", "dev": true, "requires": { - "@babel/types": "^7.3.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.10", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "@babel/types": "7.3.2", + "jsesc": "2.5.2", + "lodash": "4.17.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "@babel/helper-function-name": { @@ -1108,9 +1108,9 @@ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.2.2", + "@babel/types": "7.3.2" } }, "@babel/parser": { @@ -1125,9 +1125,9 @@ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2" } }, "@babel/traverse": { @@ -1136,15 +1136,15 @@ "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.3.2", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2", + "debug": "4.1.1", + "globals": "11.10.0", + "lodash": "4.17.11" } }, "@babel/types": { @@ -1153,9 +1153,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } }, "debug": { @@ -1164,7 +1164,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "globals": { @@ -1205,9 +1205,9 @@ "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", "dev": true, "requires": { - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.5", - "@babel/types": "^7.3.0" + "@babel/template": "7.2.2", + "@babel/traverse": "7.2.3", + "@babel/types": "7.3.3" }, "dependencies": { "@babel/generator": { @@ -1216,11 +1216,11 @@ "integrity": "sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A==", "dev": true, "requires": { - "@babel/types": "^7.3.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "@babel/types": "7.3.3", + "jsesc": "2.5.2", + "lodash": "4.17.11", + "source-map": "0.5.7", + "trim-right": "1.0.1" } }, "@babel/helper-function-name": { @@ -1257,15 +1257,15 @@ "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" + "@babel/code-frame": "7.0.0", + "@babel/generator": "7.3.3", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-split-export-declaration": "7.0.0", + "@babel/parser": "7.3.3", + "@babel/types": "7.3.3", + "debug": "4.1.1", + "globals": "11.11.0", + "lodash": "4.17.11" } }, "@babel/types": { @@ -1274,9 +1274,9 @@ "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } }, "debug": { @@ -1285,7 +1285,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "globals": { @@ -1380,9 +1380,9 @@ "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-remap-async-to-generator": "7.1.0", + "@babel/plugin-syntax-async-generators": "7.2.0" } }, "@babel/plugin-proposal-json-strings": { @@ -1391,8 +1391,8 @@ "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-json-strings": "7.2.0" } }, "@babel/plugin-proposal-object-rest-spread": { @@ -1401,8 +1401,8 @@ "integrity": "sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-object-rest-spread": "7.2.0" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -1411,8 +1411,8 @@ "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "7.2.0" } }, "@babel/plugin-proposal-unicode-property-regex": { @@ -1421,9 +1421,9 @@ "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.2.0" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.4.0" }, "dependencies": { "jsesc": { @@ -1438,12 +1438,12 @@ "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" + "regenerate": "1.4.0", + "regenerate-unicode-properties": "7.0.0", + "regjsgen": "0.5.0", + "regjsparser": "0.6.0", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.0.2" } }, "regjsgen": { @@ -1458,7 +1458,7 @@ "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "jsesc": "0.5.0" } } } @@ -1469,7 +1469,7 @@ "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-syntax-json-strings": { @@ -1478,7 +1478,7 @@ "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -1487,7 +1487,7 @@ "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-syntax-optional-catch-binding": { @@ -1496,7 +1496,7 @@ "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-arrow-functions": { @@ -1505,7 +1505,7 @@ "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-async-to-generator": { @@ -1514,9 +1514,9 @@ "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-remap-async-to-generator": "7.1.0" } }, "@babel/plugin-transform-block-scoped-functions": { @@ -1525,7 +1525,7 @@ "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-block-scoping": { @@ -1534,8 +1534,8 @@ "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.10" + "@babel/helper-plugin-utils": "7.0.0", + "lodash": "4.17.11" }, "dependencies": { "lodash": { @@ -1552,14 +1552,14 @@ "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.1.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "globals": "^11.1.0" + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-define-map": "7.1.0", + "@babel/helper-function-name": "7.1.0", + "@babel/helper-optimise-call-expression": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-replace-supers": "7.2.3", + "@babel/helper-split-export-declaration": "7.0.0", + "globals": "11.10.0" }, "dependencies": { "@babel/helper-function-name": { @@ -1568,9 +1568,9 @@ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.2.2", + "@babel/types": "7.0.0" } }, "@babel/parser": { @@ -1585,9 +1585,9 @@ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2" }, "dependencies": { "@babel/types": { @@ -1596,9 +1596,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -1629,7 +1629,7 @@ "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-destructuring": { @@ -1638,7 +1638,7 @@ "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-dotall-regex": { @@ -1647,9 +1647,9 @@ "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.4.0" }, "dependencies": { "jsesc": { @@ -1664,12 +1664,12 @@ "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" + "regenerate": "1.4.0", + "regenerate-unicode-properties": "7.0.0", + "regjsgen": "0.5.0", + "regjsparser": "0.6.0", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.0.2" } }, "regjsgen": { @@ -1684,7 +1684,7 @@ "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "jsesc": "0.5.0" } } } @@ -1695,7 +1695,7 @@ "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-exponentiation-operator": { @@ -1704,8 +1704,8 @@ "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "7.1.0", + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-for-of": { @@ -1714,7 +1714,7 @@ "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-function-name": { @@ -1723,8 +1723,8 @@ "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-function-name": "7.1.0", + "@babel/helper-plugin-utils": "7.0.0" }, "dependencies": { "@babel/helper-function-name": { @@ -1733,9 +1733,9 @@ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "7.0.0", + "@babel/template": "7.2.2", + "@babel/types": "7.0.0" } }, "@babel/parser": { @@ -1750,9 +1750,9 @@ "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/code-frame": "7.0.0", + "@babel/parser": "7.3.2", + "@babel/types": "7.3.2" }, "dependencies": { "@babel/types": { @@ -1761,9 +1761,9 @@ "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.10", - "to-fast-properties": "^2.0.0" + "esutils": "2.0.2", + "lodash": "4.17.11", + "to-fast-properties": "2.0.0" } } } @@ -1788,7 +1788,7 @@ "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-modules-amd": { @@ -1797,8 +1797,8 @@ "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "7.2.2", + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-modules-commonjs": { @@ -1807,9 +1807,9 @@ "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" + "@babel/helper-module-transforms": "7.2.2", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-simple-access": "7.1.0" } }, "@babel/plugin-transform-modules-systemjs": { @@ -1818,8 +1818,8 @@ "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-hoist-variables": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-modules-umd": { @@ -1828,8 +1828,8 @@ "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "7.2.2", + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-named-capturing-groups-regex": { @@ -1838,7 +1838,7 @@ "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==", "dev": true, "requires": { - "regexp-tree": "^0.1.0" + "regexp-tree": "0.1.1" } }, "@babel/plugin-transform-new-target": { @@ -1847,7 +1847,7 @@ "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-object-super": { @@ -1856,8 +1856,8 @@ "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-replace-supers": "7.2.3" } }, "@babel/plugin-transform-parameters": { @@ -1866,9 +1866,9 @@ "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.1.0", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-call-delegate": "7.1.0", + "@babel/helper-get-function-arity": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-regenerator": { @@ -1877,7 +1877,7 @@ "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", "dev": true, "requires": { - "regenerator-transform": "^0.13.3" + "regenerator-transform": "0.13.3" }, "dependencies": { "regenerator-transform": { @@ -1886,7 +1886,7 @@ "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", "dev": true, "requires": { - "private": "^0.1.6" + "private": "0.1.8" } } } @@ -1897,7 +1897,7 @@ "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-spread": { @@ -1906,7 +1906,7 @@ "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-sticky-regex": { @@ -1915,8 +1915,8 @@ "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0" } }, "@babel/plugin-transform-template-literals": { @@ -1925,8 +1925,8 @@ "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-annotate-as-pure": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-typeof-symbol": { @@ -1935,7 +1935,7 @@ "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.0.0" } }, "@babel/plugin-transform-unicode-regex": { @@ -1944,9 +1944,9 @@ "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" + "@babel/helper-plugin-utils": "7.0.0", + "@babel/helper-regex": "7.0.0", + "regexpu-core": "4.4.0" }, "dependencies": { "jsesc": { @@ -1961,12 +1961,12 @@ "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" + "regenerate": "1.4.0", + "regenerate-unicode-properties": "7.0.0", + "regjsgen": "0.5.0", + "regjsparser": "0.6.0", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.0.2" } }, "regjsgen": { @@ -1981,7 +1981,7 @@ "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "jsesc": "0.5.0" } } } @@ -1992,49 +1992,49 @@ "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.3.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.2.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.2.0", - "@babel/plugin-transform-classes": "^7.2.0", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.2.0", - "@babel/plugin-transform-dotall-regex": "^7.2.0", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.2.0", - "@babel/plugin-transform-function-name": "^7.2.0", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "@babel/plugin-transform-modules-systemjs": "^7.2.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", - "@babel/plugin-transform-new-target": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.2.0", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.2.0", - "browserslist": "^4.3.4", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.3.0" + "@babel/helper-module-imports": "7.0.0", + "@babel/helper-plugin-utils": "7.0.0", + "@babel/plugin-proposal-async-generator-functions": "7.2.0", + "@babel/plugin-proposal-json-strings": "7.2.0", + "@babel/plugin-proposal-object-rest-spread": "7.3.2", + "@babel/plugin-proposal-optional-catch-binding": "7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "7.2.0", + "@babel/plugin-syntax-async-generators": "7.2.0", + "@babel/plugin-syntax-json-strings": "7.2.0", + "@babel/plugin-syntax-object-rest-spread": "7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "7.2.0", + "@babel/plugin-transform-arrow-functions": "7.2.0", + "@babel/plugin-transform-async-to-generator": "7.2.0", + "@babel/plugin-transform-block-scoped-functions": "7.2.0", + "@babel/plugin-transform-block-scoping": "7.2.0", + "@babel/plugin-transform-classes": "7.2.2", + "@babel/plugin-transform-computed-properties": "7.2.0", + "@babel/plugin-transform-destructuring": "7.3.2", + "@babel/plugin-transform-dotall-regex": "7.2.0", + "@babel/plugin-transform-duplicate-keys": "7.2.0", + "@babel/plugin-transform-exponentiation-operator": "7.2.0", + "@babel/plugin-transform-for-of": "7.2.0", + "@babel/plugin-transform-function-name": "7.2.0", + "@babel/plugin-transform-literals": "7.2.0", + "@babel/plugin-transform-modules-amd": "7.2.0", + "@babel/plugin-transform-modules-commonjs": "7.2.0", + "@babel/plugin-transform-modules-systemjs": "7.2.0", + "@babel/plugin-transform-modules-umd": "7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "7.3.0", + "@babel/plugin-transform-new-target": "7.0.0", + "@babel/plugin-transform-object-super": "7.2.0", + "@babel/plugin-transform-parameters": "7.2.0", + "@babel/plugin-transform-regenerator": "7.0.0", + "@babel/plugin-transform-shorthand-properties": "7.2.0", + "@babel/plugin-transform-spread": "7.2.2", + "@babel/plugin-transform-sticky-regex": "7.2.0", + "@babel/plugin-transform-template-literals": "7.2.0", + "@babel/plugin-transform-typeof-symbol": "7.2.0", + "@babel/plugin-transform-unicode-regex": "7.2.0", + "browserslist": "4.4.1", + "invariant": "2.2.2", + "js-levenshtein": "1.1.6", + "semver": "5.5.0" }, "dependencies": { "browserslist": { @@ -2043,9 +2043,9 @@ "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000929", - "electron-to-chromium": "^1.3.103", - "node-releases": "^1.1.3" + "caniuse-lite": "1.0.30000934", + "electron-to-chromium": "1.3.113", + "node-releases": "1.1.7" } }, "caniuse-lite": { @@ -2171,8 +2171,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", - "dev": true, - "optional": true + "dev": true }, "acorn-dynamic-import": { "version": "3.0.0", @@ -2213,7 +2212,7 @@ "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "es6-promisify": "5.0.0" } }, "ajv": { @@ -2243,7 +2242,6 @@ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, - "optional": true, "requires": { "kind-of": "3.2.2", "longest": "1.0.1", @@ -3856,9 +3854,9 @@ "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "dev": true, "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" + "colors": "1.1.2", + "object-assign": "4.1.1", + "string-width": "2.1.1" } }, "cli-width": { @@ -3906,11 +3904,11 @@ "integrity": "sha512-3NJvNARXxilqnqVfgzDHyVrF4oeVgaYW1c1O6Oi5mn93exE7HTSSFNiYdwojWW6IwrCZABJ8crpNbKoo9aUHQw==", "dev": true, "requires": { - "argv": "^0.0.2", - "ignore-walk": "^3.0.1", - "js-yaml": "^3.12.0", - "teeny-request": "^3.7.0", - "urlgrey": "^0.4.4" + "argv": "0.0.2", + "ignore-walk": "3.0.1", + "js-yaml": "3.12.1", + "teeny-request": "3.11.3", + "urlgrey": "0.4.4" }, "dependencies": { "esprima": { @@ -3925,8 +3923,8 @@ "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.9", + "esprima": "4.0.1" } } } @@ -4296,8 +4294,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", - "dev": true, - "optional": true + "dev": true }, "cssstyle": { "version": "0.2.37", @@ -4547,7 +4544,7 @@ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { - "esutils": "^2.0.2" + "esutils": "2.0.2" } }, "dom-serializer": { @@ -4746,7 +4743,7 @@ "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { - "es6-promise": "^4.0.3" + "es6-promise": "4.2.4" } }, "escape-html": { @@ -5026,42 +5023,42 @@ "integrity": "sha512-jrOhiYyENRrRnWlMYANlGZTqb89r2FuRT+615AabBoajhNjeh9ywDNlh2LU9vTqf0WYN+L3xdXuIi7xuj/tK9w==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.12.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" + "@babel/code-frame": "7.0.0", + "ajv": "6.9.1", + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "debug": "4.1.1", + "doctrine": "3.0.0", + "eslint-scope": "4.0.0", + "eslint-utils": "1.3.1", + "eslint-visitor-keys": "1.0.0", + "espree": "5.0.1", + "esquery": "1.0.1", + "esutils": "2.0.2", + "file-entry-cache": "5.0.1", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.11.0", + "ignore": "4.0.6", + "import-fresh": "3.0.0", + "imurmurhash": "0.1.4", + "inquirer": "6.2.2", + "js-yaml": "3.12.1", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "progress": "2.0.3", + "regexpp": "2.0.1", + "semver": "5.6.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "5.2.3", + "text-table": "0.2.0" }, "dependencies": { "ajv": { @@ -5070,10 +5067,10 @@ "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "ansi-regex": { @@ -5097,9 +5094,9 @@ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "cross-spawn": { @@ -5121,7 +5118,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "eslint-scope": { @@ -5158,8 +5155,8 @@ "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.9", + "esprima": "4.0.1" } }, "json-schema-traverse": { @@ -5201,7 +5198,7 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -5234,9 +5231,9 @@ "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "6.1.0", + "acorn-jsx": "5.0.1", + "eslint-visitor-keys": "1.0.0" }, "dependencies": { "acorn": { @@ -5259,7 +5256,7 @@ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "4.2.0" } }, "esrecurse": { @@ -5700,9 +5697,9 @@ "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "dev": true, "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "chardet": "0.7.0", + "iconv-lite": "0.4.24", + "tmp": "0.0.33" }, "dependencies": { "iconv-lite": { @@ -5711,7 +5708,7 @@ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } } } @@ -5838,7 +5835,7 @@ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "2.0.1" } }, "file-loader": { @@ -5985,7 +5982,7 @@ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { - "flatted": "^2.0.0", + "flatted": "2.0.0", "rimraf": "2.6.3", "write": "1.0.3" }, @@ -5996,12 +5993,12 @@ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "rimraf": { @@ -6010,7 +6007,7 @@ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { - "glob": "^7.1.3" + "glob": "7.1.3" } } } @@ -7596,8 +7593,8 @@ "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "dev": true, "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" + "agent-base": "4.2.1", + "debug": "3.2.6" }, "dependencies": { "debug": { @@ -7606,7 +7603,7 @@ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.1" } }, "ms": { @@ -7727,7 +7724,7 @@ "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "import-fresh": { @@ -7736,8 +7733,8 @@ "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "parent-module": "1.0.0", + "resolve-from": "4.0.0" } }, "import-local": { @@ -7799,19 +7796,19 @@ "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", "dev": true, "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", + "ansi-escapes": "3.2.0", + "chalk": "2.4.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "3.0.3", + "figures": "2.0.0", + "lodash": "4.17.11", "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", - "through": "^2.3.6" + "run-async": "2.3.0", + "rxjs": "6.4.0", + "string-width": "2.1.1", + "strip-ansi": "5.0.0", + "through": "2.3.8" }, "dependencies": { "ansi-escapes": { @@ -7841,9 +7838,9 @@ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" } }, "lodash": { @@ -7858,7 +7855,7 @@ "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", "dev": true, "requires": { - "ansi-regex": "^4.0.0" + "ansi-regex": "4.0.0" } }, "supports-color": { @@ -7867,7 +7864,7 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -8779,8 +8776,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true, - "optional": true + "dev": true }, "loose-envify": { "version": "1.3.1", @@ -9315,7 +9311,7 @@ "integrity": "sha512-bKdrwaqJUPHqlCzDD7so/R+Nk0jGv9a11ZhLrD9f6i947qGLrGAhU3OxRENa19QQmwzGy/g6zCDEuLGDO8HPvA==", "dev": true, "requires": { - "semver": "^5.3.0" + "semver": "5.5.0" } }, "nomnomnomnom": { @@ -9778,7 +9774,7 @@ "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", "dev": true, "requires": { - "callsites": "^3.0.0" + "callsites": "3.0.0" } }, "parse-asn1": { @@ -10374,7 +10370,7 @@ "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "1.4.0" } }, "regenerator-runtime": { @@ -10419,9 +10415,9 @@ "integrity": "sha512-HwRjOquc9QOwKTgbxvZTcddS5mlNlwePMQ3NFL8broajMLD5CXDAqas8Y5yxJH5QtZp5iRor3YCILd5pz71Cgw==", "dev": true, "requires": { - "cli-table3": "^0.5.0", - "colors": "^1.1.2", - "yargs": "^12.0.5" + "cli-table3": "0.5.1", + "colors": "1.1.2", + "yargs": "12.0.5" }, "dependencies": { "ansi-regex": { @@ -10442,9 +10438,9 @@ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" } }, "cross-spawn": { @@ -10453,11 +10449,11 @@ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "nice-try": "1.0.4", + "path-key": "2.0.1", + "semver": "5.5.0", + "shebang-command": "1.2.0", + "which": "1.3.0" } }, "execa": { @@ -10466,13 +10462,13 @@ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "6.0.5", + "get-stream": "4.1.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, "find-up": { @@ -10481,7 +10477,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "get-stream": { @@ -10490,7 +10486,7 @@ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "pump": "^3.0.0" + "pump": "3.0.0" } }, "invert-kv": { @@ -10505,7 +10501,7 @@ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "invert-kv": "^2.0.0" + "invert-kv": "2.0.0" } }, "locate-path": { @@ -10514,8 +10510,8 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "mem": { @@ -10524,9 +10520,9 @@ "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", "dev": true, "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" + "map-age-cleaner": "0.1.3", + "mimic-fn": "1.2.0", + "p-is-promise": "2.0.0" } }, "os-locale": { @@ -10535,9 +10531,9 @@ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "execa": "1.0.0", + "lcid": "2.0.0", + "mem": "4.1.0" } }, "p-is-promise": { @@ -10552,7 +10548,7 @@ "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "2.0.0" } }, "p-locate": { @@ -10561,7 +10557,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.1.0" } }, "p-try": { @@ -10576,7 +10572,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } }, "yargs": { @@ -10585,18 +10581,18 @@ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "3.0.0", + "get-caller-file": "1.0.2", + "os-locale": "3.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "11.1.1" } }, "yargs-parser": { @@ -10605,8 +10601,8 @@ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "5.0.0", + "decamelize": "1.2.0" } } } @@ -10849,7 +10845,7 @@ "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "dev": true, "requires": { - "tslib": "^1.9.0" + "tslib": "1.9.3" } }, "safe-buffer": { @@ -11094,9 +11090,9 @@ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "3.2.1", + "astral-regex": "1.0.0", + "is-fullwidth-code-point": "2.0.0" }, "dependencies": { "ansi-styles": { @@ -11105,7 +11101,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.1" } } } @@ -11838,10 +11834,10 @@ "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", "dev": true, "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "6.9.1", + "lodash": "4.17.11", + "slice-ansi": "2.1.0", + "string-width": "3.0.0" }, "dependencies": { "ajv": { @@ -11850,10 +11846,10 @@ "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "ansi-regex": { @@ -11886,9 +11882,9 @@ "integrity": "sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.0.0" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.0.0" } }, "strip-ansi": { @@ -11897,7 +11893,7 @@ "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", "dev": true, "requires": { - "ansi-regex": "^4.0.0" + "ansi-regex": "4.0.0" } } } @@ -11920,9 +11916,9 @@ "integrity": "sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==", "dev": true, "requires": { - "https-proxy-agent": "^2.2.1", - "node-fetch": "^2.2.0", - "uuid": "^3.3.2" + "https-proxy-agent": "2.2.1", + "node-fetch": "2.3.0", + "uuid": "3.3.2" }, "dependencies": { "uuid": { @@ -12238,9 +12234,9 @@ "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" + "commondir": "1.0.1", + "make-dir": "1.1.0", + "pkg-dir": "3.0.0" } }, "find-up": { @@ -12249,7 +12245,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "json-schema-traverse": { @@ -12264,8 +12260,8 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "p-limit": { @@ -12283,7 +12279,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.1.0" } }, "p-try": { @@ -12298,7 +12294,7 @@ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "3.0.0" } }, "schema-utils": { @@ -12307,9 +12303,9 @@ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "ajv": "6.6.2", + "ajv-errors": "1.0.1", + "ajv-keywords": "3.1.0" } }, "source-map": { @@ -12324,8 +12320,8 @@ "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", "dev": true, "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" + "commander": "2.17.1", + "source-map": "0.6.1" } } } @@ -12366,8 +12362,8 @@ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "1.0.4", + "unicode-property-aliases-ecmascript": "1.0.4" } }, "unicode-match-property-value-ecmascript": { @@ -13715,7 +13711,7 @@ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { - "mkdirp": "^0.5.1" + "mkdirp": "0.5.1" } }, "ws": {