UNPKG

ngx-bootstrap

Version:
996 lines (995 loc) 94.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ // tslint:disable:max-file-line-count max-line-length cyclomatic-complexity import { weekOfYear } from '../units/week-calendar-utils'; import { hasOwnProp, isArray, isFunction } from '../utils/type-checks'; import { getDay, getMonth } from '../utils/date-getters'; import { matchWord, regexEscape } from '../parse/regex'; import { setDayOfWeek } from '../units/day-of-week'; /** * @record */ export function LocaleOptionsFormat() { } function LocaleOptionsFormat_tsickle_Closure_declarations() { /** @type {?} */ LocaleOptionsFormat.prototype.format; /** @type {?} */ LocaleOptionsFormat.prototype.standalone; /** @type {?|undefined} */ LocaleOptionsFormat.prototype.isFormat; } var /** @type {?} */ MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; export var /** @type {?} */ defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); export var /** @type {?} */ defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); export var /** @type {?} */ defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); export var /** @type {?} */ defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); export var /** @type {?} */ defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); export var /** @type {?} */ defaultLongDateFormat = { LTS: 'h:mm:ss A', LT: 'h:mm A', L: 'MM/DD/YYYY', LL: 'MMMM D, YYYY', LLL: 'MMMM D, YYYY h:mm A', LLLL: 'dddd, MMMM D, YYYY h:mm A' }; export var /** @type {?} */ defaultOrdinal = '%d'; export var /** @type {?} */ defaultDayOfMonthOrdinalParse = /\d{1,2}/; var /** @type {?} */ defaultMonthsShortRegex = matchWord; var /** @type {?} */ defaultMonthsRegex = matchWord; /** * @record */ export function LocaleData() { } function LocaleData_tsickle_Closure_declarations() { /** @type {?|undefined} */ LocaleData.prototype.abbr; /** @type {?|undefined} */ LocaleData.prototype.parentLocale; /** @type {?|undefined} */ LocaleData.prototype.months; /** @type {?|undefined} */ LocaleData.prototype.monthsShort; /** @type {?|undefined} */ LocaleData.prototype.monthsParseExact; /** @type {?|undefined} */ LocaleData.prototype.weekdays; /** @type {?|undefined} */ LocaleData.prototype.weekdaysShort; /** @type {?|undefined} */ LocaleData.prototype.weekdaysMin; /** @type {?|undefined} */ LocaleData.prototype.weekdaysParseExact; /** @type {?|undefined} */ LocaleData.prototype.longDateFormat; /** @type {?|undefined} */ LocaleData.prototype.calendar; /** @type {?|undefined} */ LocaleData.prototype.relativeTime; /** @type {?|undefined} */ LocaleData.prototype.dayOfMonthOrdinalParse; /** @type {?|undefined} */ LocaleData.prototype.ordinal; /** @type {?|undefined} */ LocaleData.prototype.week; /** @type {?|undefined} */ LocaleData.prototype.invalidDate; /** @type {?|undefined} */ LocaleData.prototype.monthsRegex; /** @type {?|undefined} */ LocaleData.prototype.monthsParse; /** @type {?|undefined} */ LocaleData.prototype.monthsShortRegex; /** @type {?|undefined} */ LocaleData.prototype.monthsStrictRegex; /** @type {?|undefined} */ LocaleData.prototype.monthsShortStrictRegex; /** @type {?|undefined} */ LocaleData.prototype.longMonthsParse; /** @type {?|undefined} */ LocaleData.prototype.shortMonthsParse; /** @type {?|undefined} */ LocaleData.prototype.meridiemParse; /** @type {?|undefined} */ LocaleData.prototype.meridiemHour; /** @type {?|undefined} */ LocaleData.prototype.preparse; /** @type {?|undefined} */ LocaleData.prototype.postformat; /** @type {?|undefined} */ LocaleData.prototype.meridiem; /** @type {?|undefined} */ LocaleData.prototype.isPM; } var Locale = /** @class */ (function () { function Locale(config) { if (!!config) { this.set(config); } } /** * @param {?} config * @return {?} */ Locale.prototype.set = /** * @param {?} config * @return {?} */ function (config) { var /** @type {?} */ confKey; for (confKey in config) { if (!config.hasOwnProperty(confKey)) { continue; } var /** @type {?} */ prop = config[/** @type {?} */ (confKey)]; var /** @type {?} */ key = /** @type {?} */ ((isFunction(prop) ? confKey : "_" + confKey)); this[key] = /** @type {?} */ (prop); } this._config = config; }; /** * @param {?} key * @param {?} date * @param {?} now * @return {?} */ Locale.prototype.calendar = /** * @param {?} key * @param {?} date * @param {?} now * @return {?} */ function (key, date, now) { var /** @type {?} */ output = this._calendar[key] || this._calendar["sameElse"]; return isFunction(output) ? output.call(null, date, now) : output; }; /** * @param {?} key * @return {?} */ Locale.prototype.longDateFormat = /** * @param {?} key * @return {?} */ function (key) { var /** @type {?} */ format = this._longDateFormat[key]; var /** @type {?} */ formatUpper = this._longDateFormat[key.toUpperCase()]; if (format || !formatUpper) { return format; } this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { return val.slice(1); }); return this._longDateFormat[key]; }; Object.defineProperty(Locale.prototype, "invalidDate", { get: /** * @return {?} */ function () { return this._invalidDate; }, set: /** * @param {?} val * @return {?} */ function (val) { this._invalidDate = val; }, enumerable: true, configurable: true }); /** * @param {?} num * @param {?=} token * @return {?} */ Locale.prototype.ordinal = /** * @param {?} num * @param {?=} token * @return {?} */ function (num, token) { return this._ordinal.replace('%d', num.toString(10)); }; /** * @param {?} str * @return {?} */ Locale.prototype.preparse = /** * @param {?} str * @return {?} */ function (str) { return str; }; /** * @param {?} str * @return {?} */ Locale.prototype.postformat = /** * @param {?} str * @return {?} */ function (str) { return str; }; /** * @param {?} num * @param {?} withoutSuffix * @param {?} str * @param {?} isFuture * @return {?} */ Locale.prototype.relativeTime = /** * @param {?} num * @param {?} withoutSuffix * @param {?} str * @param {?} isFuture * @return {?} */ function (num, withoutSuffix, str, isFuture) { var /** @type {?} */ output = this._relativeTime[str]; return (isFunction(output)) ? output(num, withoutSuffix, str, isFuture) : output.replace(/%d/i, num.toString(10)); }; /** * @param {?} diff * @param {?} output * @return {?} */ Locale.prototype.pastFuture = /** * @param {?} diff * @param {?} output * @return {?} */ function (diff, output) { var /** @type {?} */ format = this._relativeTime[diff > 0 ? 'future' : 'past']; return isFunction(format) ? format(output) : format.replace(/%s/i, output); }; /** * @param {?=} date * @param {?=} format * @param {?=} isUTC * @return {?} */ Locale.prototype.months = /** * @param {?=} date * @param {?=} format * @param {?=} isUTC * @return {?} */ function (date, format, isUTC) { if (isUTC === void 0) { isUTC = false; } if (!date) { return isArray(this._months) ? this._months : this._months.standalone; } if (isArray(this._months)) { return this._months[getMonth(date, isUTC)]; } var /** @type {?} */ key = (this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'; return this._months[key][getMonth(date, isUTC)]; }; /** * @param {?=} date * @param {?=} format * @param {?=} isUTC * @return {?} */ Locale.prototype.monthsShort = /** * @param {?=} date * @param {?=} format * @param {?=} isUTC * @return {?} */ function (date, format, isUTC) { if (isUTC === void 0) { isUTC = false; } if (!date) { return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone; } if (isArray(this._monthsShort)) { return this._monthsShort[getMonth(date, isUTC)]; } var /** @type {?} */ key = MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'; return this._monthsShort[key][getMonth(date, isUTC)]; }; /** * @param {?} monthName * @param {?=} format * @param {?=} strict * @return {?} */ Locale.prototype.monthsParse = /** * @param {?} monthName * @param {?=} format * @param {?=} strict * @return {?} */ function (monthName, format, strict) { var /** @type {?} */ date; var /** @type {?} */ regex; if (this._monthsParseExact) { return this.handleMonthStrictParse(monthName, format, strict); } if (!this._monthsParse) { this._monthsParse = []; this._longMonthsParse = []; this._shortMonthsParse = []; } // TODO: add sorting // Sorting makes sure if one month (or abbr) is a prefix of another // see sorting in computeMonthsParse var /** @type {?} */ i; for (i = 0; i < 12; i++) { // make the regex if we don't have it already date = new Date(Date.UTC(2000, i)); if (strict && !this._longMonthsParse[i]) { var /** @type {?} */ _months = this.months(date, '', true).replace('.', ''); var /** @type {?} */ _shortMonths = this.monthsShort(date, '', true).replace('.', ''); this._longMonthsParse[i] = new RegExp("^" + _months + "$", 'i'); this._shortMonthsParse[i] = new RegExp("^" + _shortMonths + "$", 'i'); } if (!strict && !this._monthsParse[i]) { regex = "^" + this.months(date, '', true) + "|^" + this.monthsShort(date, '', true); this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); } // test the regex if (strict && format === 'MMMM' && (/** @type {?} */ (this._longMonthsParse[i])).test(monthName)) { return i; } if (strict && format === 'MMM' && (/** @type {?} */ (this._shortMonthsParse[i])).test(monthName)) { return i; } if (!strict && this._monthsParse[i].test(monthName)) { return i; } } }; /** * @param {?} isStrict * @return {?} */ Locale.prototype.monthsRegex = /** * @param {?} isStrict * @return {?} */ function (isStrict) { if (this._monthsParseExact) { if (!hasOwnProp(this, '_monthsRegex')) { this.computeMonthsParse(); } if (isStrict) { return this._monthsStrictRegex; } return this._monthsRegex; } if (!hasOwnProp(this, '_monthsRegex')) { this._monthsRegex = defaultMonthsRegex; } return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex; }; /** * @param {?} isStrict * @return {?} */ Locale.prototype.monthsShortRegex = /** * @param {?} isStrict * @return {?} */ function (isStrict) { if (this._monthsParseExact) { if (!hasOwnProp(this, '_monthsRegex')) { this.computeMonthsParse(); } if (isStrict) { return this._monthsShortStrictRegex; } return this._monthsShortRegex; } if (!hasOwnProp(this, '_monthsShortRegex')) { this._monthsShortRegex = defaultMonthsShortRegex; } return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex; }; /** Week */ /** * Week * @param {?} date * @param {?=} isUTC * @return {?} */ Locale.prototype.week = /** * Week * @param {?} date * @param {?=} isUTC * @return {?} */ function (date, isUTC) { return weekOfYear(date, this._week.dow, this._week.doy, isUTC).week; }; /** * @return {?} */ Locale.prototype.firstDayOfWeek = /** * @return {?} */ function () { return this._week.dow; }; /** * @return {?} */ Locale.prototype.firstDayOfYear = /** * @return {?} */ function () { return this._week.doy; }; /** * @param {?=} date * @param {?=} format * @param {?=} isUTC * @return {?} */ Locale.prototype.weekdays = /** * @param {?=} date * @param {?=} format * @param {?=} isUTC * @return {?} */ function (date, format, isUTC) { if (!date) { return isArray(this._weekdays) ? this._weekdays : this._weekdays.standalone; } if (isArray(this._weekdays)) { return this._weekdays[getDay(date, isUTC)]; } var /** @type {?} */ _key = this._weekdays.isFormat.test(format) ? 'format' : 'standalone'; return this._weekdays[_key][getDay(date, isUTC)]; }; /** * @param {?=} date * @param {?=} format * @param {?=} isUTC * @return {?} */ Locale.prototype.weekdaysMin = /** * @param {?=} date * @param {?=} format * @param {?=} isUTC * @return {?} */ function (date, format, isUTC) { return date ? this._weekdaysMin[getDay(date, isUTC)] : this._weekdaysMin; }; /** * @param {?=} date * @param {?=} format * @param {?=} isUTC * @return {?} */ Locale.prototype.weekdaysShort = /** * @param {?=} date * @param {?=} format * @param {?=} isUTC * @return {?} */ function (date, format, isUTC) { return date ? this._weekdaysShort[getDay(date, isUTC)] : this._weekdaysShort; }; // proto.weekdaysParse = localeWeekdaysParse; /** * @param {?=} weekdayName * @param {?=} format * @param {?=} strict * @return {?} */ Locale.prototype.weekdaysParse = /** * @param {?=} weekdayName * @param {?=} format * @param {?=} strict * @return {?} */ function (weekdayName, format, strict) { var /** @type {?} */ i; var /** @type {?} */ regex; if (this._weekdaysParseExact) { return this.handleWeekStrictParse(weekdayName, format, strict); } if (!this._weekdaysParse) { this._weekdaysParse = []; this._minWeekdaysParse = []; this._shortWeekdaysParse = []; this._fullWeekdaysParse = []; } for (i = 0; i < 7; i++) { // make the regex if we don't have it already // fix: here is the issue var /** @type {?} */ date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true); if (strict && !this._fullWeekdaysParse[i]) { this._fullWeekdaysParse[i] = new RegExp("^" + this.weekdays(date, '', true).replace('.', '\.?') + "$", 'i'); this._shortWeekdaysParse[i] = new RegExp("^" + this.weekdaysShort(date, '', true).replace('.', '\.?') + "$", 'i'); this._minWeekdaysParse[i] = new RegExp("^" + this.weekdaysMin(date, '', true).replace('.', '\.?') + "$", 'i'); } if (!this._weekdaysParse[i]) { regex = "^" + this.weekdays(date, '', true) + "|^" + this.weekdaysShort(date, '', true) + "|^" + this.weekdaysMin(date, '', true); this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); } if (!isArray(this._fullWeekdaysParse) || !isArray(this._shortWeekdaysParse) || !isArray(this._minWeekdaysParse) || !isArray(this._weekdaysParse)) { return; } // test the regex if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { return i; } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { return i; } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { return i; } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { return i; } } }; // proto.weekdaysRegex = weekdaysRegex; /** * @param {?} isStrict * @return {?} */ Locale.prototype.weekdaysRegex = /** * @param {?} isStrict * @return {?} */ function (isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { this.computeWeekdaysParse(); } if (isStrict) { return this._weekdaysStrictRegex; } else { return this._weekdaysRegex; } } else { if (!hasOwnProp(this, '_weekdaysRegex')) { this._weekdaysRegex = matchWord; } return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex; } }; // proto.weekdaysShortRegex = weekdaysShortRegex; // proto.weekdaysMinRegex = weekdaysMinRegex; /** * @param {?=} isStrict * @return {?} */ Locale.prototype.weekdaysShortRegex = /** * @param {?=} isStrict * @return {?} */ function (isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { this.computeWeekdaysParse(); } if (isStrict) { return this._weekdaysShortStrictRegex; } else { return this._weekdaysShortRegex; } } else { if (!hasOwnProp(this, '_weekdaysShortRegex')) { this._weekdaysShortRegex = matchWord; } return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex; } }; /** * @param {?=} isStrict * @return {?} */ Locale.prototype.weekdaysMinRegex = /** * @param {?=} isStrict * @return {?} */ function (isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { this.computeWeekdaysParse(); } if (isStrict) { return this._weekdaysMinStrictRegex; } else { return this._weekdaysMinRegex; } } else { if (!hasOwnProp(this, '_weekdaysMinRegex')) { this._weekdaysMinRegex = matchWord; } return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex; } }; /** * @param {?} input * @return {?} */ Locale.prototype.isPM = /** * @param {?} input * @return {?} */ function (input) { // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays // Using charAt should be more compatible. return input.toLowerCase().charAt(0) === 'p'; }; /** * @param {?} hours * @param {?} minutes * @param {?} isLower * @return {?} */ Locale.prototype.meridiem = /** * @param {?} hours * @param {?} minutes * @param {?} isLower * @return {?} */ function (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'pm' : 'PM'; } return isLower ? 'am' : 'AM'; }; /** * @param {?} key * @return {?} */ Locale.prototype.formatLongDate = /** * @param {?} key * @return {?} */ function (key) { this._longDateFormat = this._longDateFormat ? this._longDateFormat : defaultLongDateFormat; var /** @type {?} */ format = this._longDateFormat[key]; var /** @type {?} */ formatUpper = this._longDateFormat[key.toUpperCase()]; if (format || !formatUpper) { return format; } this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { return val.slice(1); }); return this._longDateFormat[key]; }; /** * @param {?} monthName * @param {?} format * @param {?=} strict * @return {?} */ Locale.prototype.handleMonthStrictParse = /** * @param {?} monthName * @param {?} format * @param {?=} strict * @return {?} */ function (monthName, format, strict) { var /** @type {?} */ llc = monthName.toLocaleLowerCase(); var /** @type {?} */ i; var /** @type {?} */ ii; var /** @type {?} */ mom; if (!this._monthsParse) { // this is not used this._monthsParse = []; this._longMonthsParse = []; this._shortMonthsParse = []; for (i = 0; i < 12; ++i) { mom = new Date(2000, i); this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); } } if (strict) { if (format === 'MMM') { ii = (/** @type {?} */ (this._shortMonthsParse)).indexOf(llc); return ii !== -1 ? ii : null; } ii = (/** @type {?} */ (this._longMonthsParse)).indexOf(llc); return ii !== -1 ? ii : null; } if (format === 'MMM') { ii = (/** @type {?} */ (this._shortMonthsParse)).indexOf(llc); if (ii !== -1) { return ii; } ii = (/** @type {?} */ (this._longMonthsParse)).indexOf(llc); return ii !== -1 ? ii : null; } ii = (/** @type {?} */ (this._longMonthsParse)).indexOf(llc); if (ii !== -1) { return ii; } ii = (/** @type {?} */ (this._shortMonthsParse)).indexOf(llc); return ii !== -1 ? ii : null; }; /** * @param {?} weekdayName * @param {?} format * @param {?} strict * @return {?} */ Locale.prototype.handleWeekStrictParse = /** * @param {?} weekdayName * @param {?} format * @param {?} strict * @return {?} */ function (weekdayName, format, strict) { var /** @type {?} */ ii; var /** @type {?} */ llc = weekdayName.toLocaleLowerCase(); if (!this._weekdaysParse) { this._weekdaysParse = []; this._shortWeekdaysParse = []; this._minWeekdaysParse = []; var /** @type {?} */ i = void 0; for (i = 0; i < 7; ++i) { var /** @type {?} */ date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true); this._minWeekdaysParse[i] = this.weekdaysMin(date).toLocaleLowerCase(); this._shortWeekdaysParse[i] = this.weekdaysShort(date).toLocaleLowerCase(); this._weekdaysParse[i] = this.weekdays(date, '').toLocaleLowerCase(); } } if (!isArray(this._weekdaysParse) || !isArray(this._shortWeekdaysParse) || !isArray(this._minWeekdaysParse)) { return; } if (strict) { if (format === 'dddd') { ii = this._weekdaysParse.indexOf(llc); return ii !== -1 ? ii : null; } else if (format === 'ddd') { ii = this._shortWeekdaysParse.indexOf(llc); return ii !== -1 ? ii : null; } else { ii = this._minWeekdaysParse.indexOf(llc); return ii !== -1 ? ii : null; } } else { if (format === 'dddd') { ii = this._weekdaysParse.indexOf(llc); if (ii !== -1) { return ii; } ii = this._shortWeekdaysParse.indexOf(llc); if (ii !== -1) { return ii; } ii = this._minWeekdaysParse.indexOf(llc); return ii !== -1 ? ii : null; } else if (format === 'ddd') { ii = this._shortWeekdaysParse.indexOf(llc); if (ii !== -1) { return ii; } ii = this._weekdaysParse.indexOf(llc); if (ii !== -1) { return ii; } ii = this._minWeekdaysParse.indexOf(llc); return ii !== -1 ? ii : null; } else { ii = this._minWeekdaysParse.indexOf(llc); if (ii !== -1) { return ii; } ii = this._weekdaysParse.indexOf(llc); if (ii !== -1) { return ii; } ii = this._shortWeekdaysParse.indexOf(llc); return ii !== -1 ? ii : null; } } }; /** * @return {?} */ Locale.prototype.computeMonthsParse = /** * @return {?} */ function () { var /** @type {?} */ shortPieces = []; var /** @type {?} */ longPieces = []; var /** @type {?} */ mixedPieces = []; var /** @type {?} */ date; var /** @type {?} */ i; for (i = 0; i < 12; i++) { // make the regex if we don't have it already date = new Date(2000, i); shortPieces.push(this.monthsShort(date, '')); longPieces.push(this.months(date, '')); mixedPieces.push(this.months(date, '')); mixedPieces.push(this.monthsShort(date, '')); } // Sorting makes sure if one month (or abbr) is a prefix of another it // will match the longer piece. shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); for (i = 0; i < 12; i++) { shortPieces[i] = regexEscape(shortPieces[i]); longPieces[i] = regexEscape(longPieces[i]); } for (i = 0; i < 24; i++) { mixedPieces[i] = regexEscape(mixedPieces[i]); } this._monthsRegex = new RegExp("^(" + mixedPieces.join('|') + ")", 'i'); this._monthsShortRegex = this._monthsRegex; this._monthsStrictRegex = new RegExp("^(" + longPieces.join('|') + ")", 'i'); this._monthsShortStrictRegex = new RegExp("^(" + shortPieces.join('|') + ")", 'i'); }; /** * @return {?} */ Locale.prototype.computeWeekdaysParse = /** * @return {?} */ function () { var /** @type {?} */ minPieces = []; var /** @type {?} */ shortPieces = []; var /** @type {?} */ longPieces = []; var /** @type {?} */ mixedPieces = []; var /** @type {?} */ i; for (i = 0; i < 7; i++) { // make the regex if we don't have it already // let mom = createUTC([2000, 1]).day(i); var /** @type {?} */ date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true); var /** @type {?} */ minp = this.weekdaysMin(date); var /** @type {?} */ shortp = this.weekdaysShort(date); var /** @type {?} */ longp = this.weekdays(date); minPieces.push(minp); shortPieces.push(shortp); longPieces.push(longp); mixedPieces.push(minp); mixedPieces.push(shortp); mixedPieces.push(longp); } // Sorting makes sure if one weekday (or abbr) is a prefix of another it // will match the longer piece. minPieces.sort(cmpLenRev); shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); for (i = 0; i < 7; i++) { shortPieces[i] = regexEscape(shortPieces[i]); longPieces[i] = regexEscape(longPieces[i]); mixedPieces[i] = regexEscape(mixedPieces[i]); } this._weekdaysRegex = new RegExp("^(" + mixedPieces.join('|') + ")", 'i'); this._weekdaysShortRegex = this._weekdaysRegex; this._weekdaysMinRegex = this._weekdaysRegex; this._weekdaysStrictRegex = new RegExp("^(" + longPieces.join('|') + ")", 'i'); this._weekdaysShortStrictRegex = new RegExp("^(" + shortPieces.join('|') + ")", 'i'); this._weekdaysMinStrictRegex = new RegExp("^(" + minPieces.join('|') + ")", 'i'); }; return Locale; }()); export { Locale }; function Locale_tsickle_Closure_declarations() { /** @type {?} */ Locale.prototype.parentLocale; /** @type {?} */ Locale.prototype._abbr; /** @type {?} */ Locale.prototype._config; /** @type {?} */ Locale.prototype.meridiemHour; /** @type {?} */ Locale.prototype._invalidDate; /** @type {?} */ Locale.prototype._week; /** @type {?} */ Locale.prototype._dayOfMonthOrdinalParse; /** @type {?} */ Locale.prototype._ordinalParse; /** @type {?} */ Locale.prototype._meridiemParse; /** @type {?} */ Locale.prototype._calendar; /** @type {?} */ Locale.prototype._relativeTime; /** @type {?} */ Locale.prototype._months; /** @type {?} */ Locale.prototype._monthsShort; /** @type {?} */ Locale.prototype._monthsRegex; /** @type {?} */ Locale.prototype._monthsShortRegex; /** @type {?} */ Locale.prototype._monthsStrictRegex; /** @type {?} */ Locale.prototype._monthsShortStrictRegex; /** @type {?} */ Locale.prototype._monthsParse; /** @type {?} */ Locale.prototype._longMonthsParse; /** @type {?} */ Locale.prototype._shortMonthsParse; /** @type {?} */ Locale.prototype._monthsParseExact; /** @type {?} */ Locale.prototype._weekdaysParseExact; /** @type {?} */ Locale.prototype._weekdaysRegex; /** @type {?} */ Locale.prototype._weekdaysShortRegex; /** @type {?} */ Locale.prototype._weekdaysMinRegex; /** @type {?} */ Locale.prototype._weekdaysStrictRegex; /** @type {?} */ Locale.prototype._weekdaysShortStrictRegex; /** @type {?} */ Locale.prototype._weekdaysMinStrictRegex; /** @type {?} */ Locale.prototype._weekdays; /** @type {?} */ Locale.prototype._weekdaysShort; /** @type {?} */ Locale.prototype._weekdaysMin; /** @type {?} */ Locale.prototype._weekdaysParse; /** @type {?} */ Locale.prototype._minWeekdaysParse; /** @type {?} */ Locale.prototype._shortWeekdaysParse; /** @type {?} */ Locale.prototype._fullWeekdaysParse; /** @type {?} */ Locale.prototype._longDateFormat; /** @type {?} */ Locale.prototype._ordinal; } /** * @param {?} a * @param {?} b * @return {?} */ function cmpLenRev(a, b) { return b.length - a.length; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWJvb3RzdHJhcC9jaHJvbm9zLyIsInNvdXJjZXMiOlsibG9jYWxlL2xvY2FsZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBVXBELHFCQUFNLGdCQUFnQixHQUFHLCtCQUErQixDQUFDO0FBQ3pELE1BQU0sQ0FBQyxxQkFBTSxtQkFBbUIsR0FBRyx1RkFBdUYsQ0FBQyxLQUFLLENBQzlILEdBQUcsQ0FDSixDQUFDO0FBQ0YsTUFBTSxDQUFDLHFCQUFNLHdCQUF3QixHQUFHLGlEQUFpRCxDQUFDLEtBQUssQ0FDN0YsR0FBRyxDQUNKLENBQUM7QUFDRixNQUFNLENBQUMscUJBQU0scUJBQXFCLEdBQUcsMERBQTBELENBQUMsS0FBSyxDQUNuRyxHQUFHLENBQ0osQ0FBQztBQUNGLE1BQU0sQ0FBQyxxQkFBTSwwQkFBMEIsR0FBRyw2QkFBNkIsQ0FBQyxLQUFLLENBQzNFLEdBQUcsQ0FDSixDQUFDO0FBQ0YsTUFBTSxDQUFDLHFCQUFNLHdCQUF3QixHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxRSxNQUFNLENBQUMscUJBQU0scUJBQXFCLEdBQWdDO0lBQ2hFLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLEVBQUUsRUFBRSxRQUFRO0lBQ1osQ0FBQyxFQUFFLFlBQVk7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