UNPKG

ngx-bootstrap

Version:
1,212 lines (1,211 loc) 113 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { add, subtract } from '../index'; import { getDate, getFullYear, getHours, getMilliseconds, getMinutes, getMonth, getSeconds } from '../utils/date-getters'; import { setDate, setFullYear, setHours, setMilliseconds, setMinutes, setMonth, setSeconds } from '../utils/date-setters'; import { cloneDate } from '../create/clone'; import { isArray, isBoolean, isDate, isDateValid, isFunction, isNumber, isObject, isString, isUndefined } from '../utils/type-checks'; import { formatDate } from '../format'; import { ISO_8601, RFC_2822 } from '../create/from-string-and-format'; import { getDateOffset, getUTCOffset, hasAlignedHourOffset, isDaylightSavingTime, setOffsetToParsedOffset, setUTCOffset } from '../units/offset'; import { isLeapYear, parseTwoDigitYear } from '../units/year'; import { isAfter, isBefore, isBetween, isSame, isSameOrAfter, isSameOrBefore } from '../utils/date-compare'; import { daysInMonth } from '../units/month'; import { getDayOfWeek, getISODayOfWeek, getLocaleDayOfWeek, parseWeekday, setDayOfWeek, setISODayOfWeek, setLocaleDayOfWeek } from '../units/day-of-week'; import { getISOWeek, getWeek, setISOWeek, setWeek } from '../units/week'; import { getISOWeeksInYear, getISOWeekYear, getSetISOWeekYear, getSetWeekYear, getWeeksInYear, getWeekYear } from '../units/week-year'; import { endOf, startOf } from '../utils/start-end-of'; import { getQuarter, setQuarter } from '../units/quarter'; import { getDayOfYear, setDayOfYear } from '../units/day-of-year'; import { getZoneAbbr, getZoneName } from '../units/timezone'; import { diff } from '../moment/diff'; import { calendar } from '../moment/calendar'; import { defineLocale, getLocale, getSetGlobalLocale, listLocales } from '../locale/locales'; import { max, min } from '../moment/min-max'; import { isDuration } from '../duration/constructor'; import { createLocalOrUTC } from '../create/from-anything'; import { createDuration } from '../duration/create'; export const /** @type {?} */ moment = (/** @type {?} */ (_moment)); /** * @record */ export function MomentFn() { } function MomentFn_tsickle_Closure_declarations() { /* TODO: handle strange member: (input?: DateInput | Khronos, format?: string | string[], localeKey?: string | boolean, strict?: boolean, isUTC?: boolean): Khronos; */ /** @type {?} */ MomentFn.prototype.ISO_8601; /** @type {?} */ MomentFn.prototype.RFC_2822; /** @type {?} */ MomentFn.prototype.utc; /** @type {?} */ MomentFn.prototype.parseZone; /** @type {?} */ MomentFn.prototype.unix; /** @type {?} */ MomentFn.prototype.locale; /** @type {?} */ MomentFn.prototype.duration; /** @type {?} */ MomentFn.prototype.defineLocale; /** @type {?} */ MomentFn.prototype.parseTwoDigitYear; /** @type {?} */ MomentFn.prototype.isDate; /** @type {?} */ MomentFn.prototype.months; /** @type {?} */ MomentFn.prototype.months; /** @type {?} */ MomentFn.prototype.months; /** @type {?} */ MomentFn.prototype.months; /** @type {?} */ MomentFn.prototype.monthsShort; /** @type {?} */ MomentFn.prototype.monthsShort; /** @type {?} */ MomentFn.prototype.monthsShort; /** @type {?} */ MomentFn.prototype.monthsShort; /** @type {?} */ MomentFn.prototype.weekdays; /** @type {?} */ MomentFn.prototype.weekdays; /** @type {?} */ MomentFn.prototype.weekdays; /** @type {?} */ MomentFn.prototype.weekdays; /** @type {?} */ MomentFn.prototype.weekdays; /** @type {?} */ MomentFn.prototype.weekdays; /** @type {?} */ MomentFn.prototype.weekdays; /** @type {?} */ MomentFn.prototype.weekdays; /** @type {?} */ MomentFn.prototype.weekdaysShort; /** @type {?} */ MomentFn.prototype.weekdaysShort; /** @type {?} */ MomentFn.prototype.weekdaysShort; /** @type {?} */ MomentFn.prototype.weekdaysShort; /** @type {?} */ MomentFn.prototype.weekdaysShort; /** @type {?} */ MomentFn.prototype.weekdaysShort; /** @type {?} */ MomentFn.prototype.weekdaysShort; /** @type {?} */ MomentFn.prototype.weekdaysShort; /** @type {?} */ MomentFn.prototype.weekdaysMin; /** @type {?} */ MomentFn.prototype.weekdaysMin; /** @type {?} */ MomentFn.prototype.weekdaysMin; /** @type {?} */ MomentFn.prototype.weekdaysMin; /** @type {?} */ MomentFn.prototype.weekdaysMin; /** @type {?} */ MomentFn.prototype.weekdaysMin; /** @type {?} */ MomentFn.prototype.weekdaysMin; /** @type {?} */ MomentFn.prototype.weekdaysMin; /** @type {?} */ MomentFn.prototype.relativeTimeThreshold; /** @type {?} */ MomentFn.prototype.relativeTimeThreshold; /** @type {?} */ MomentFn.prototype.min; /** @type {?} */ MomentFn.prototype.max; /** @type {?} */ MomentFn.prototype.localeData; /** @type {?} */ MomentFn.prototype.updateLocale; /** @type {?} */ MomentFn.prototype.calendarFormat; /** @type {?} */ MomentFn.prototype.calendarFormat; /** @type {?} */ MomentFn.prototype.invalid; /** @type {?} */ MomentFn.prototype.locales; /** @type {?} */ MomentFn.prototype.updateOffset; } /** * @param {?=} input * @param {?=} format * @param {?=} localeKey * @param {?=} strict * @param {?=} isUTC * @return {?} */ function _moment(input, format, localeKey, strict, isUTC) { if (input instanceof Khronos) { const /** @type {?} */ _date = input.clone(); return isUTC ? _date.utc() : _date; } if (isBoolean(localeKey)) { return new Khronos(input, format, null, localeKey, isUTC); } return new Khronos(input, format, localeKey, strict, isUTC); } moment.utc = (input, format, localeKey, strict) => { return _moment(input, format, localeKey, strict, true); }; moment.parseZone = (input, format, localeKey, strict) => { return _moment(input, format, localeKey, strict, true).parseZone(); }; moment.locale = getSetGlobalLocale; moment.localeData = (key) => { if (key instanceof Khronos) { return key.localeData(); } return getLocale(key); }; // moment.utc = createUTC; moment.unix = (inp) => new Khronos(inp * 1000); moment.ISO_8601 = ISO_8601; moment.RFC_2822 = RFC_2822; moment.defineLocale = defineLocale; moment.parseTwoDigitYear = parseTwoDigitYear; moment.isDate = isDate; moment.invalid = function _invalid() { return new Khronos(new Date(NaN)); }; // duration(inp?: Duration | DateInput | Khronos, unit?: MomentUnitOfTime): Duration; moment.duration = (input, unit) => { const /** @type {?} */ _unit = mapUnitOfTime(unit); if (isDate(input)) { throw new Error('todo implement'); } if (input == null) { return createDuration(); } if (isDuration(input)) { return createDuration(input, _unit, { _locale: input._locale }); } if (isString(input) || isNumber(input) || isDuration(input) || isObject(input)) { return createDuration(input, _unit); } throw new Error('todo implement'); }; moment.min = function _min(...dates) { const /** @type {?} */ _firstArg = dates[0]; const /** @type {?} */ _dates = (isArray(_firstArg) ? _firstArg : dates) .map((date) => _moment(date)) .map(date => date.toDate()); const /** @type {?} */ _date = min(..._dates); return new Khronos(_date); }; moment.max = function _max(...dates) { const /** @type {?} */ _firstArg = dates[0]; const /** @type {?} */ _dates = (isArray(_firstArg) ? _firstArg : dates) .map((date) => _moment(date)) .map(date => date.toDate()); const /** @type {?} */ _date = max(..._dates); return new Khronos(_date); }; moment.locales = () => { return listLocales(); }; /** * @record */ export function MomentInputObject() { } function MomentInputObject_tsickle_Closure_declarations() { /** @type {?|undefined} */ MomentInputObject.prototype.years; /** @type {?|undefined} */ MomentInputObject.prototype.year; /** @type {?|undefined} */ MomentInputObject.prototype.y; /** @type {?|undefined} */ MomentInputObject.prototype.months; /** @type {?|undefined} */ MomentInputObject.prototype.month; /** @type {?|undefined} */ MomentInputObject.prototype.M; /** @type {?|undefined} */ MomentInputObject.prototype.days; /** @type {?|undefined} */ MomentInputObject.prototype.day; /** @type {?|undefined} */ MomentInputObject.prototype.d; /** @type {?|undefined} */ MomentInputObject.prototype.dates; /** @type {?|undefined} */ MomentInputObject.prototype.date; /** @type {?|undefined} */ MomentInputObject.prototype.D; /** @type {?|undefined} */ MomentInputObject.prototype.hours; /** @type {?|undefined} */ MomentInputObject.prototype.hour; /** @type {?|undefined} */ MomentInputObject.prototype.h; /** @type {?|undefined} */ MomentInputObject.prototype.minutes; /** @type {?|undefined} */ MomentInputObject.prototype.minute; /** @type {?|undefined} */ MomentInputObject.prototype.m; /** @type {?|undefined} */ MomentInputObject.prototype.seconds; /** @type {?|undefined} */ MomentInputObject.prototype.second; /** @type {?|undefined} */ MomentInputObject.prototype.s; /** @type {?|undefined} */ MomentInputObject.prototype.milliseconds; /** @type {?|undefined} */ MomentInputObject.prototype.millisecond; /** @type {?|undefined} */ MomentInputObject.prototype.ms; /** @type {?|undefined} */ MomentInputObject.prototype.w; /** @type {?|undefined} */ MomentInputObject.prototype.week; /** @type {?|undefined} */ MomentInputObject.prototype.weeks; /** @type {?|undefined} */ MomentInputObject.prototype.Q; /** @type {?|undefined} */ MomentInputObject.prototype.quarter; /** @type {?|undefined} */ MomentInputObject.prototype.quarters; /** @type {?|undefined} */ MomentInputObject.prototype.weekYear; } const /** @type {?} */ _unitsPriority = { year: 1, month: 8, week: 5, isoWeek: 5, day: 11, weekday: 11, isoWeekday: 11, hours: 13, weekYear: 1, isoWeekYear: 1, quarter: 7, date: 9, dayOfYear: 4, minutes: 14, seconds: 15, milliseconds: 16 }; // todo: do I need 2 mappers? const /** @type {?} */ _timeHashMap = { y: 'year', years: 'year', year: 'year', M: 'month', months: 'month', month: 'month', w: 'week', weeks: 'week', week: 'week', d: 'day', days: 'day', day: 'day', date: 'date', dates: 'date', D: 'date', h: 'hours', hour: 'hours', hours: 'hours', m: 'minutes', minute: 'minutes', minutes: 'minutes', s: 'seconds', second: 'seconds', seconds: 'seconds', ms: 'milliseconds', millisecond: 'milliseconds', milliseconds: 'milliseconds', quarter: 'quarter', quarters: 'quarter', q: 'quarter', Q: 'quarter', isoWeek: 'isoWeek', isoWeeks: 'isoWeek', W: 'isoWeek', weekYear: 'weekYear', weekYears: 'weekYear', gg: 'weekYears', isoWeekYear: 'isoWeekYear', isoWeekYears: 'isoWeekYear', GG: 'isoWeekYear', dayOfYear: 'dayOfYear', dayOfYears: 'dayOfYear', DDD: 'dayOfYear', weekday: 'weekday', weekdays: 'weekday', e: 'weekday', isoWeekday: 'isoWeekday', isoWeekdays: 'isoWeekday', E: 'isoWeekday' }; /** * @param {?} period * @return {?} */ function mapUnitOfTime(period) { return /** @type {?} */ (_timeHashMap[period]); } /** * @param {?} obj * @return {?} */ function mapMomentInputObject(obj) { const /** @type {?} */ _res = {}; return Object.keys(obj) .reduce((res, key) => { res[mapUnitOfTime(key)] = obj[key]; return res; }, _res); } export class Khronos { /** * @param {?=} input * @param {?=} format * @param {?=} localeKey * @param {?=} strict * @param {?=} isUTC * @param {?=} offset */ constructor(input, format, localeKey, strict = false, isUTC = false, offset) { this._date = new Date(); this._isUTC = false; // locale will be needed to format invalid date message this._locale = getLocale(localeKey); // parse invalid input if (input === '' || input === null || (isNumber(input) && isNaN(input))) { this._date = new Date(NaN); return this; } this._isUTC = isUTC; if (this._isUTC) { this._offset = 0; } if (offset || offset === 0) { this._offset = offset; } this._isStrict = strict; this._format = format; if (!input && input !== 0 && !format) { this._date = new Date(); return this; } if (isDate(input)) { this._date = cloneDate(input); return this; } // this._date = parseDate(input, format, localeKey, strict, isUTC); const /** @type {?} */ config = createLocalOrUTC(input, format, localeKey, strict, isUTC); this._date = config._d; this._offset = isNumber(config._offset) ? config._offset : this._offset; this._isUTC = config._isUTC; this._isStrict = config._strict; this._format = config._f; this._tzm = config._tzm; } /** * @return {?} */ _toConfig() { return { _isUTC: this._isUTC, _locale: this._locale, _offset: this._offset, _tzm: this._tzm }; } /** * @param {?=} localeKey * @return {?} */ locale(localeKey) { if (isUndefined(localeKey)) { return this._locale._abbr; } if (localeKey instanceof Khronos) { this._locale = localeKey._locale; return this; } const /** @type {?} */ newLocaleData = getLocale(localeKey); if (newLocaleData != null) { this._locale = newLocaleData; } return this; } /** * @return {?} */ localeData() { return this._locale; } /** * @param {?} val * @param {?=} period * @return {?} */ add(val, period) { if (isString(val)) { this._date = add(this._date, parseInt(val, 10), mapUnitOfTime(period)); } if (isNumber(val)) { this._date = add(this._date, val, mapUnitOfTime(period)); } if (isObject(val)) { const /** @type {?} */ _mapped = mapMomentInputObject(val); Object.keys(_mapped) .forEach((key) => add(this._date, _mapped[key], key)); } return this; } /** * @param {?=} time * @param {?=} formats * @return {?} */ calendar(time, formats) { const /** @type {?} */ _time = time instanceof Khronos ? time : new Khronos(time || new Date()); const /** @type {?} */ _offset = (this._offset || 0) - (_time._offset || 0); const /** @type {?} */ _config = Object.assign(this._toConfig(), { _offset }); return calendar(this._date, _time._date, formats, this._locale, _config); } /** * @return {?} */ clone() { const /** @type {?} */ localeKey = this._locale && this._locale._abbr || 'en'; // return new Khronos(cloneDate(this._date), this._format, localeKey, this._isStrict, this._isUTC); // fails if isUTC and offset // return new Khronos(new Date(this.valueOf()), return new Khronos(this._date, this._format, localeKey, this._isStrict, this._isUTC, this._offset); } /** * @param {?} b * @param {?=} unitOfTime * @param {?=} precise * @return {?} */ diff(b, unitOfTime, precise) { const /** @type {?} */ unit = mapUnitOfTime(unitOfTime); const /** @type {?} */ _b = b instanceof Khronos ? b : new Khronos(b); // const zoneDelta = (_b.utcOffset() - this.utcOffset()); // const config = Object.assign(this._toConfig(), { // _offset: 0, // _isUTC: true, // _zoneDelta: zoneDelta // }); // return diff(new Date(this.valueOf()), new Date(_b.valueOf()), unit, precise, config); return diff(this._date, _b.toDate(), unit, precise, this._toConfig()); } /** * @param {?=} period * @return {?} */ endOf(period) { const /** @type {?} */ _per = mapUnitOfTime(period); this._date = endOf(this._date, _per, this._isUTC); return this; } /** * @param {?=} format * @return {?} */ format(format) { return formatDate(this._date, format, this._locale && this._locale._abbr, this._isUTC, this._offset); } /** * @param {?=} time * @param {?=} withoutSuffix * @return {?} */ from(time, withoutSuffix) { const /** @type {?} */ _time = _moment(time); if (this.isValid() && _time.isValid()) { return createDuration({ to: this.toDate(), from: _time.toDate() }) .locale(this.locale()) .humanize(!withoutSuffix); } return this.localeData().invalidDate; } /** * @param {?=} withoutSuffix * @return {?} */ fromNow(withoutSuffix) { return this.from(new Date(), withoutSuffix); } /** * @param {?} inp * @param {?=} suffix * @return {?} */ to(inp, suffix) { throw new Error(`TODO: Implement`); } /** * @param {?=} withoutPrefix * @return {?} */ toNow(withoutPrefix) { throw new Error(`TODO: Implement`); } /** * @param {?} val * @param {?=} period * @return {?} */ subtract(val, period) { if (isString(val)) { this._date = subtract(this._date, parseInt(val, 10), mapUnitOfTime(period)); return this; } if (isNumber(val)) { this._date = subtract(this._date, val, mapUnitOfTime(period)); } if (isObject(val)) { const /** @type {?} */ _mapped = mapMomentInputObject(val); Object.keys(_mapped) .forEach((key) => subtract(this._date, _mapped[key], key)); } return this; } /** * @param {?} period * @return {?} */ get(period) { if (period === 'dayOfYear') { return this.dayOfYear(); } const /** @type {?} */ unit = mapUnitOfTime(period); switch (unit) { case 'year': return this.year(); case 'month': return this.month(); // | 'week' case 'date': return this.date(); case 'day': return this.day(); case 'hours': return this.hours(); case 'minutes': return this.minutes(); case 'seconds': return this.seconds(); case 'milliseconds': return this.milliseconds(); case 'week': return this.week(); case 'isoWeek': return this.isoWeek(); case 'weekYear': return this.weekYear(); case 'isoWeekYear': return this.isoWeekYear(); case 'weekday': return this.weekday(); case 'isoWeekday': return this.isoWeekday(); case 'quarter': return this.quarter(); default: throw new Error(`Unknown moment.get('${period}')`); } } /** * @param {?} period * @param {?=} input * @return {?} */ set(period, input) { if (isString(period)) { const /** @type {?} */ unit = mapUnitOfTime(period); switch (unit) { case 'year': return this.year(input); case 'month': return this.month(input); // | 'week' case 'day': return this.day(input); case 'date': return this.date(input); case 'hours': return this.hours(input); case 'minutes': return this.minutes(input); case 'seconds': return this.seconds(input); case 'milliseconds': return this.milliseconds(input); case 'week': return this.week(input); case 'isoWeek': return this.isoWeek(input); case 'weekYear': return this.weekYear(input); case 'isoWeekYear': return this.isoWeekYear(input); case 'weekday': return this.weekday(input); case 'isoWeekday': return this.isoWeekday(input); case 'quarter': return this.quarter(input); default: throw new Error(`Unknown moment.get('${period}')`); } } if (isObject(period)) { const /** @type {?} */ _mapped = mapMomentInputObject(period); Object.keys(_mapped) .sort(function (a, b) { return _unitsPriority[a] - _unitsPriority[b]; }) .forEach((key) => this.set(key, _mapped[key])); } return this; } /** * @return {?} */ toString() { return this.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); } /** * @return {?} */ toISOString() { if (!this.isValid()) { return null; } if (getFullYear(this._date, true) < 0 || getFullYear(this._date, true) > 9999) { return this.format('YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); } if (isFunction(Date.prototype.toISOString)) { // native implementation is ~50x faster, use it when we can return this.toDate().toISOString(); } return this.format('YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); } /** * @return {?} */ inspect() { throw new Error('TODO: implement'); } /** * @return {?} */ toJSON() { return this.toISOString(); } /** * @return {?} */ toDate() { return new Date(this.valueOf()); } /** * @return {?} */ toObject() { return { // years: getFullYear(this._date, this._isUTC), // months: getMonth(this._date, this._isUTC), year: getFullYear(this._date, this._isUTC), month: getMonth(this._date, this._isUTC), date: getDate(this._date, this._isUTC), hours: getHours(this._date, this._isUTC), minutes: getMinutes(this._date, this._isUTC), seconds: getSeconds(this._date, this._isUTC), milliseconds: getMilliseconds(this._date, this._isUTC) }; } /** * @return {?} */ toArray() { return [this.year(), this.month(), this.date(), this.hour(), this.minute(), this.second(), this.millisecond()]; } /** * @param {?} date * @param {?=} unit * @return {?} */ isAfter(date, unit) { const /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0; return isAfter(this._date, date.toDate(), _unit); } /** * @param {?} date * @param {?=} unit * @return {?} */ isBefore(date, unit) { const /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0; return isBefore(this.toDate(), date.toDate(), _unit); } /** * @param {?} from * @param {?} to * @param {?=} unit * @param {?=} inclusivity * @return {?} */ isBetween(from, to, unit, inclusivity) { const /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0; return isBetween(this.toDate(), from.toDate(), to.toDate(), _unit, inclusivity); } /** * @param {?} date * @param {?=} unit * @return {?} */ isSame(date, unit) { const /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0; return isSame(this._date, date.toDate(), _unit); } /** * @param {?} date * @param {?=} unit * @return {?} */ isSameOrAfter(date, unit) { const /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0; return isSameOrAfter(this._date, date.toDate(), _unit); } /** * @param {?} date * @param {?=} unit * @return {?} */ isSameOrBefore(date, unit) { const /** @type {?} */ _unit = unit ? mapUnitOfTime(unit) : void 0; return isSameOrBefore(this._date, date.toDate(), _unit); } /** * @return {?} */ isValid() { return isDateValid(this._date); } /** * @return {?} */ valueOf() { return this._date.valueOf() - ((this._offset || 0) * 60000); } /** * @return {?} */ unix() { // return getUnixTime(this._date); return Math.floor(this.valueOf() / 1000); } /** * @param {?=} b * @param {?=} keepLocalTime * @return {?} */ utcOffset(b, keepLocalTime) { const /** @type {?} */ _config = this._toConfig(); if (!b && b !== 0) { return getUTCOffset(this._date, _config); } this._date = setUTCOffset(this._date, b, keepLocalTime, false, _config); this._offset = _config._offset; this._isUTC = _config._isUTC; return this; } /** * @param {?=} keepLocalTime * @return {?} */ utc(keepLocalTime) { return this.utcOffset(0, keepLocalTime); } /** * @param {?=} keepLocalTime * @return {?} */ local(keepLocalTime) { if (this._isUTC) { this.utcOffset(0, keepLocalTime); this._isUTC = false; if (keepLocalTime) { this.subtract(getDateOffset(this._date), 'm'); } } return this; } /** * @param {?=} input * @return {?} */ parseZone(input) { const /** @type {?} */ _config = this._toConfig(); this._date = setOffsetToParsedOffset(this._date, input, _config); this._offset = _config._offset; this._isUTC = _config._isUTC; return this; } /** * @param {?=} input * @return {?} */ hasAlignedHourOffset(input) { return hasAlignedHourOffset(this._date, input ? input._date : void 0); } /** * @return {?} */ isDST() { return isDaylightSavingTime(this._date); } /** * @return {?} */ isLocal() { return !this._isUTC; } /** * @return {?} */ isUtcOffset() { return this._isUTC; } /** * @return {?} */ isUTC() { return this.isUtc(); } /** * @return {?} */ isUtc() { return this._isUTC && this._offset === 0; } /** * @return {?} */ zoneAbbr() { return getZoneAbbr(this._isUTC); } /** * @return {?} */ zoneName() { return getZoneName(this._isUTC); } /** * @param {?=} year * @return {?} */ year(year) { if (!year && year !== 0) { return getFullYear(this._date, this._isUTC); } this._date = cloneDate(setFullYear(this._date, year)); return this; } /** * @param {?=} val * @return {?} */ weekYear(val) { if (!val && val !== 0) { return getWeekYear(this._date, this._locale, this.isUTC()); } const /** @type {?} */ date = getSetWeekYear(this._date, val, this._locale, this.isUTC()); if (isDate(date)) { this._date = date; } return this; } /** * @param {?=} val * @return {?} */ isoWeekYear(val) { if (!val && val !== 0) { return getISOWeekYear(this._date, this.isUTC()); } const /** @type {?} */ date = getSetISOWeekYear(this._date, val, this.isUtc()); if (isDate(date)) { this._date = date; } return this; } /** * @return {?} */ isLeapYear() { return isLeapYear(getFullYear(this.toDate(), this.isUTC())); } /** * @param {?=} month * @return {?} */ month(month) { if (!month && month !== 0) { return getMonth(this._date, this._isUTC); } let /** @type {?} */ _month = month; if (isString(month)) { const /** @type {?} */ locale = this._locale || getLocale(); _month = locale.monthsParse(month); } if (isNumber(_month)) { this._date = cloneDate(setMonth(this._date, _month, this._isUTC)); } return this; } /** * @param {?=} hours * @return {?} */ hour(hours) { return this.hours(hours); } /** * @param {?=} hours * @return {?} */ hours(hours) { if (!hours && hours !== 0) { return getHours(this._date, this._isUTC); } this._date = cloneDate(setHours(this._date, hours, this._isUTC)); return this; } /** * @param {?=} minutes * @return {?} */ minute(minutes) { return this.minutes(minutes); } /** * @param {?=} minutes * @return {?} */ minutes(minutes) { if (!minutes && minutes !== 0) { return getMinutes(this._date, this._isUTC); } this._date = cloneDate(setMinutes(this._date, minutes, this._isUTC)); return this; } /** * @param {?=} seconds * @return {?} */ second(seconds) { return this.seconds(seconds); } /** * @param {?=} seconds * @return {?} */ seconds(seconds) { if (!seconds && seconds !== 0) { return getSeconds(this._date, this._isUTC); } this._date = cloneDate(setSeconds(this._date, seconds, this._isUTC)); return this; } /** * @param {?=} ms * @return {?} */ millisecond(ms) { return this.milliseconds(ms); } /** * @param {?=} seconds * @return {?} */ milliseconds(seconds) { if (!seconds && seconds !== 0) { return getMilliseconds(this._date, this._isUTC); } this._date = cloneDate(setMilliseconds(this._date, seconds, this._isUTC)); return this; } /** * @param {?=} date * @return {?} */ date(date) { if (!date && date !== 0) { return getDate(this._date, this._isUTC); } this._date = cloneDate(setDate(this._date, date, this._isUTC)); return this; } /** * @param {?=} input * @return {?} */ day(input) { if (!input && input !== 0) { return getDayOfWeek(this._date, this._isUTC); } let /** @type {?} */ _input = input; if (isString(input)) { _input = parseWeekday(input, this._locale); } if (isNumber(_input)) { this._date = setDayOfWeek(this._date, _input, this._locale, this._isUTC); } return this; } /** * @param {?=} val * @return {?} */ weekday(val) { if (!val && val !== 0) { return getLocaleDayOfWeek(this._date, this._locale, this._isUTC); } this._date = setLocaleDayOfWeek(this._date, val, { locale: this._locale, isUTC: this._isUTC }); return this; } /** * @param {?=} val * @return {?} */ isoWeekday(val) { if (!val && val !== 0) { return getISODayOfWeek(this._date); } this._date = setISODayOfWeek(this._date, val); return this; } /** * @param {?=} val * @return {?} */ dayOfYear(val) { if (!val && val !== 0) { return getDayOfYear(this._date); } this._date = setDayOfYear(this._date, val); return this; } /** * @param {?=} input * @return {?} */ week(input) { if (!input && input !== 0) { return getWeek(this._date, this._locale); } this._date = setWeek(this._date, input, this._locale); return this; } /** * @param {?=} input * @return {?} */ weeks(input) { return this.week(input); } /** * @param {?=} val * @return {?} */ isoWeek(val) { if (!val && val !== 0) { return getISOWeek(this._date); } this._date = setISOWeek(this._date, val); return this; } /** * @param {?=} val * @return {?} */ isoWeeks(val) { return this.isoWeek(val); } /** * @return {?} */ weeksInYear() { return getWeeksInYear(this._date, this._isUTC, this._locale); } /** * @return {?} */ isoWeeksInYear() { return getISOWeeksInYear(this._date, this._isUTC); } /** * @return {?} */ daysInMonth() { return daysInMonth(getFullYear(this._date, this._isUTC), getMonth(this._date, this._isUTC)); } /** * @param {?=} val * @return {?} */ quarter(val) { if (!val && val !== 0) { return getQuarter(this._date, this._isUTC); } this._date = setQuarter(this._date, val, this._isUTC); return this; } /** * @param {?=} val * @return {?} */ quarters(val) { return this.quarter(val); } /** * @param {?=} period * @return {?} */ startOf(period) { const /** @type {?} */ _per = mapUnitOfTime(period); this._date = startOf(this._date, _per, this._isUTC); return this; } } function Khronos_tsickle_Closure_declarations() { /** @type {?} */ Khronos.prototype._date; /** @type {?} */ Khronos.prototype._isUTC; /** @type {?} */ Khronos.prototype._isStrict; /** @type {?} */ Khronos.prototype._locale; /** @type {?} */ Khronos.prototype._format; /** @type {?} */ Khronos.prototype._offset; /** @type {?} */ Khronos.prototype._tzm; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL2Nocm9ub3MvIiwic291cmNlcyI6WyJ0ZXN0L2NoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsR0FBRyxFQUFhLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwRCxPQUFPLEVBQ0wsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUVsRixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDckUsVUFBVSxFQUNYLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxPQUFPLEVBQ1AsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUN4RSxXQUFXLEVBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdEUsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQ2pGLFlBQVksRUFDYixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUcs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