UNPKG

date-fns

Version:

Modern JavaScript date utility library

1,143 lines 557 kB
(() => { function _createForOfIteratorHelper(r, e) {var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];if (!t) {if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {t && (r = t);var _n = 0,F = function F() {};return { s: F, n: function n() {return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] };}, e: function e(r) {throw r;}, f: F };}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var o,a = !0,u = !1;return { s: function s() {t = t.call(r);}, n: function n() {var r = t.next();return a = r.done, r;}, e: function e(r) {u = !0, o = r;}, f: function f() {try {a || null == t.return || t.return();} finally {if (u) throw o;}} };}function _callSuper(t, o, e) {return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));}function _possibleConstructorReturn(t, e) {if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t);}function _assertThisInitialized(e) {if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e;}function _isNativeReflectConstruct() {try {var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));} catch (t) {}return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {return !!t;})();}function _getPrototypeOf(t) {return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {return t.__proto__ || Object.getPrototypeOf(t);}, _getPrototypeOf(t);}function _inherits(t, e) {if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e);}function _setPrototypeOf(t, e) {return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {return t.__proto__ = e, t;}, _setPrototypeOf(t, e);}function _classCallCheck(a, n) {if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");}function _defineProperties(e, r) {for (var t = 0; t < r.length; t++) {var o = r[t];o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);}}function _createClass(e, r, t) {return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e;}function _toArray(r) {return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest();}function _slicedToArray(r, e) {return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();}function _nonIterableRest() {throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _iterableToArrayLimit(r, l) {var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];if (null != t) {var e,n,i,u,a = [],f = !0,o = !1;try {if (i = (t = t.call(r)).next, 0 === l) {if (Object(t) !== t) return;f = !1;} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);} catch (r) {o = !0, n = r;} finally {try {if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;} finally {if (o) throw n;}}return a;}}function _arrayWithHoles(r) {if (Array.isArray(r)) return r;}function ownKeys(e, r) {var t = Object.keys(e);if (Object.getOwnPropertySymbols) {var o = Object.getOwnPropertySymbols(e);r && (o = o.filter(function (r) {return Object.getOwnPropertyDescriptor(e, r).enumerable;})), t.push.apply(t, o);}return t;}function _objectSpread(e) {for (var r = 1; r < arguments.length; r++) {var t = null != arguments[r] ? arguments[r] : {};r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {_defineProperty(e, r, t[r]);}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));});}return e;}function _defineProperty(e, r, t) {return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e;}function _toPropertyKey(t) {var i = _toPrimitive(t, "string");return "symbol" == _typeof(i) ? i : i + "";}function _toPrimitive(t, r) {if ("object" != _typeof(t) || !t) return t;var e = t[Symbol.toPrimitive];if (void 0 !== e) {var i = e.call(t, r || "default");if ("object" != _typeof(i)) return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return ("string" === r ? String : Number)(t);}function _toConsumableArray(r) {return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();}function _nonIterableSpread() {throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(r, a) {if (r) {if ("string" == typeof r) return _arrayLikeToArray(r, a);var t = {}.toString.call(r).slice(8, -1);return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;}}function _iterableToArray(r) {if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);}function _arrayWithoutHoles(r) {if (Array.isArray(r)) return _arrayLikeToArray(r);}function _arrayLikeToArray(r, a) {(null == a || a > r.length) && (a = r.length);for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];return n;}function _typeof(o) {"@babel/helpers - typeof";return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {return typeof o;} : function (o) {return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;}, _typeof(o);} //#region \0rolldown/runtime.js var __defProp = Object.defineProperty; var __exportAll = function __exportAll(all, no_symbols) { var target = {}; for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" }); return target; }; //#endregion //#region dist/date-fns/constants.js /** * @constant * @name daysInYear * @summary Days in 1 year. * * @description * How many days in a year. * * One years equals 365.2425 days according to the formula: * * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400. * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days */ var daysInYear = 365.2425; -(Math.pow(10, 8) * 24 * 60 * 60 * 1e3); /** * @constant * @name millisecondsInWeek * @summary Milliseconds in 1 week. */ var millisecondsInWeek = 6048e5; /** * @constant * @name millisecondsInDay * @summary Milliseconds in 1 day. */ var millisecondsInDay = 864e5; /** * @constant * @name millisecondsInMinute * @summary Milliseconds in 1 minute */ var millisecondsInMinute = 6e4; /** * @constant * @name millisecondsInHour * @summary Milliseconds in 1 hour */ var millisecondsInHour = 36e5; /** * @constant * @name millisecondsInSecond * @summary Milliseconds in 1 second */ var millisecondsInSecond = 1e3; /** * @constant * @name minutesInYear * @summary Minutes in 1 year. */ var minutesInYear = 525600; /** * @constant * @name minutesInMonth * @summary Minutes in 1 month. */ var minutesInMonth = 43200; /** * @constant * @name minutesInDay * @summary Minutes in 1 day. */ var minutesInDay = 1440; /** * @constant * @name secondsInHour * @summary Seconds in 1 hour. */ var secondsInHour = 3600; /** * @constant * @name constructFromSymbol * @summary Symbol enabling Date extensions to inherit properties from the reference date. * * The symbol is used to enable the `constructFrom` function to construct a date * using a reference date and a value. It allows to transfer extra properties * from the reference date to the new date. It's useful for extensions like * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as * a constructor argument. */ var constructFromSymbol = Symbol.for("constructDateFrom"); //#endregion //#region dist/date-fns/constructFrom.js /** * @name constructFrom * @category Generic Helpers * @summary Constructs a date using the reference date and the value * * @description * The function constructs a new date using the constructor from the reference * date and the given value. It helps to build generic functions that accept * date extensions. * * It defaults to `Date` if the passed reference date is a number or a string. * * Starting from v3.7.0, it allows to construct a date using `[Symbol.for("constructDateFrom")]` * enabling to transfer extra properties from the reference date to the new date. * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz) * that accept a time zone as a constructor argument. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * * @param date - The reference date to take constructor from * @param value - The value to create the date * * @returns Date initialized using the given date and value * * @example * import { constructFrom } from "./constructFrom/date-fns"; * * // A function that clones a date preserving the original type * function cloneDate<DateType extends Date>(date: DateType): DateType { * return constructFrom( * date, // Use constructor from the given date * date.getTime() // Use the date value to create a new date * ); * } */ function constructFrom$1(date, value) { if (typeof date === "function") return date(value); if (date && _typeof(date) === "object" && constructFromSymbol in date) return date[constructFromSymbol](value); if (date instanceof Date) return new date.constructor(value); return new Date(value); } //#endregion //#region dist/date-fns/toDate.js /** * @name toDate * @category Common Helpers * @summary Convert the given argument to an instance of Date. * * @description * Convert the given argument to an instance of Date. * * If the argument is an instance of Date, the function returns its clone. * * If the argument is a number, it is treated as a timestamp. * * If the argument is none of the above, the function returns Invalid Date. * * Starting from v3.7.0, it clones a date using `[Symbol.for("constructDateFrom")]` * enabling to transfer extra properties from the reference date to the new date. * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz) * that accept a time zone as a constructor argument. * * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param argument - The value to convert * * @returns The parsed date in the local time zone * * @example * // Clone the date: * const result = toDate(new Date(2014, 1, 11, 11, 30, 30)) * //=> Tue Feb 11 2014 11:30:30 * * @example * // Convert the timestamp to date: * const result = toDate(1392098430000) * //=> Tue Feb 11 2014 11:30:30 */ function toDate$1(argument, context) { return constructFrom$1(context || argument, argument); } //#endregion //#region dist/date-fns/addDays.js /** * The {@link addDays} function options. */ /** * @name addDays * @category Day Helpers * @summary Add the specified number of days to the given date. * * @description * Add the specified number of days to the given date. * * **You don't need date-fns\***: * * Temporal has a built-in `add` method on all its classes: * * - [`Temporal.Instant.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/Instant/add) * - [`Temporal.PlainDate.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainDate/add) * - [`Temporal.PlainDateTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainDateTime/add) * - [`Temporal.PlainTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime/add) * - [`Temporal.PlainYearMonth.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainYearMonth/add) * - [`Temporal.ZonedDateTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/ZonedDateTime/add) * * \* **Not really**, see: https://date-fns.org/you-dont-need-date-fns * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param amount - The amount of days to be added. * @param options - An object with options * * @returns The new date with the days added * * @example * // Add 10 days to 1 September 2014: * const result = addDays(new Date(2014, 8, 1), 10) * //=> Thu Sep 11 2014 00:00:00 * * @example * // Using Temporal: * // Add 10 days to 1 September 2014: * Temporal.PlainDate.from("2014-09-01").add({ days: 10 }).toString(); * //=> "2014-09-11" */ function addDays$1(date, amount, options) { var _date = toDate$1(date, options === null || options === void 0 ? void 0 : options.in); if (isNaN(amount)) return constructFrom$1((options === null || options === void 0 ? void 0 : options.in) || date, NaN); if (!amount) return _date; _date.setDate(_date.getDate() + amount); return _date; } //#endregion //#region dist/date-fns/addMonths.js /** * The {@link addMonths} function options. */ /** * @name addMonths * @category Month Helpers * @summary Add the specified number of months to the given date. * * @description * Add the specified number of months to the given date. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param amount - The amount of months to be added. * @param options - The options object * * @returns The new date with the months added * * @example * // Add 5 months to 1 September 2014: * const result = addMonths(new Date(2014, 8, 1), 5) * //=> Sun Feb 01 2015 00:00:00 * * // Add one month to 30 January 2023: * const result = addMonths(new Date(2023, 0, 30), 1) * //=> Tue Feb 28 2023 00:00:00 */ function addMonths$1(date, amount, options) { var _date = toDate$1(date, options === null || options === void 0 ? void 0 : options.in); if (isNaN(amount)) return constructFrom$1((options === null || options === void 0 ? void 0 : options.in) || date, NaN); if (!amount) return _date; var dayOfMonth = _date.getDate(); var endOfDesiredMonth = constructFrom$1((options === null || options === void 0 ? void 0 : options.in) || date, _date.getTime()); endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0); if (dayOfMonth >= endOfDesiredMonth.getDate()) return endOfDesiredMonth;else { _date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth); return _date; } } //#endregion //#region dist/date-fns/add.js /** * The {@link add} function options. */ /** * @name add * @category Common Helpers * @summary Add the specified years, months, weeks, days, hours, minutes, and seconds to the given date. * * @description * Add the specified years, months, weeks, days, hours, minutes, and seconds to the given date. * * **You don't need date-fns\***: * * Temporal has a built-in `add` method on all its classes: * * - [`Temporal.Instant.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/Instant/add) * - [`Temporal.PlainDate.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainDate/add) * - [`Temporal.PlainDateTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainDateTime/add) * - [`Temporal.PlainTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime/add) * - [`Temporal.PlainYearMonth.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainYearMonth/add) * - [`Temporal.ZonedDateTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/ZonedDateTime/add) * * \* **Not really**, see: https://date-fns.org/you-dont-need-date-fns * * @typeParam DateType - The `Date` type the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param duration - The object with years, months, weeks, days, hours, minutes, and seconds to be added. * @param options - An object with options * * @returns The new date with the seconds added * * @example * // Add the following duration to 1 September 2014, 10:19:50 * const result = add(new Date(2014, 8, 1, 10, 19, 50), { * years: 2, * months: 9, * weeks: 1, * days: 7, * hours: 5, * minutes: 9, * seconds: 30, * }) * //=> Thu Jun 15 2017 15:29:20 * * @example * // Using Temporal: * // Add the following duration to 1 September 2014, 10:19:50 * Temporal.PlainDateTime.from("2014-09-01T10:19:50") * .add({ * years: 2, * months: 9, * weeks: 1, * days: 7, * hours: 5, * minutes: 9, * seconds: 30, * }) * .toString(); * //=> "2017-06-15T15:29:20" */ function add$1(date, duration, options) { var _duration$years = duration.years,years = _duration$years === void 0 ? 0 : _duration$years,_duration$months = duration.months,months = _duration$months === void 0 ? 0 : _duration$months,_duration$weeks = duration.weeks,weeks = _duration$weeks === void 0 ? 0 : _duration$weeks,_duration$days = duration.days,days = _duration$days === void 0 ? 0 : _duration$days,_duration$hours = duration.hours,hours = _duration$hours === void 0 ? 0 : _duration$hours,_duration$minutes = duration.minutes,minutes = _duration$minutes === void 0 ? 0 : _duration$minutes,_duration$seconds = duration.seconds,seconds = _duration$seconds === void 0 ? 0 : _duration$seconds; var _date = toDate$1(date, options === null || options === void 0 ? void 0 : options.in); var dateWithMonths = months || years ? addMonths$1(_date, months + years * 12) : _date; var dateWithDays = days || weeks ? addDays$1(dateWithMonths, days + weeks * 7) : dateWithMonths; var msToAdd = (seconds + (minutes + hours * 60) * 60) * 1e3; return constructFrom$1((options === null || options === void 0 ? void 0 : options.in) || date, +dateWithDays + msToAdd); } //#endregion //#region dist/date-fns/fp/_lib/convertToFP.js /** * Converts a function to a curried function that accepts arguments in reverse * order. * * @param fn - The function to convert to FP * @param arity - The arity of the function * @param curriedArgs - The curried arguments * * @returns FP version of the function * * @private */ function convertToFP(fn, arity) {var curriedArgs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; return curriedArgs.length >= arity ? fn.apply(void 0, _toConsumableArray(curriedArgs.slice(0, arity).reverse())) : function () {for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}return convertToFP(fn, arity, curriedArgs.concat(args));}; } //#endregion //#region dist/date-fns/fp/add.js var _add = convertToFP(add$1, 2); //#endregion //#region dist/date-fns/isSaturday.js /** * The {@link isSaturday} function options. */ /** * @name isSaturday * @category Weekday Helpers * @summary Is the given date Saturday? * * @description * Is the given date Saturday? * * @param date - The date to check * @param options - An object with options * * @returns The date is Saturday * * @example * // Is 27 September 2014 Saturday? * const result = isSaturday(new Date(2014, 8, 27)) * //=> true */ function isSaturday$1(date, options) { return toDate$1(date, options === null || options === void 0 ? void 0 : options.in).getDay() === 6; } //#endregion //#region dist/date-fns/isSunday.js /** * The {@link isSunday} function options. */ /** * @name isSunday * @category Weekday Helpers * @summary Is the given date Sunday? * * @description * Is the given date Sunday? * * @param date - The date to check * @param options - The options object * * @returns The date is Sunday * * @example * // Is 21 September 2014 Sunday? * const result = isSunday(new Date(2014, 8, 21)) * //=> true */ function isSunday$1(date, options) { return toDate$1(date, options === null || options === void 0 ? void 0 : options.in).getDay() === 0; } //#endregion //#region dist/date-fns/isWeekend.js /** * The {@link isWeekend} function options. */ /** * @name isWeekend * @category Weekday Helpers * @summary Does the given date fall on a weekend? * * @description * Does the given date fall on a weekend? A weekend is either Saturday (`6`) or Sunday (`0`). * * @param date - The date to check * @param options - An object with options * * @returns The date falls on a weekend * * @example * // Does 5 October 2014 fall on a weekend? * const result = isWeekend(new Date(2014, 9, 5)) * //=> true */ function isWeekend$1(date, options) { var day = toDate$1(date, options === null || options === void 0 ? void 0 : options.in).getDay(); return day === 0 || day === 6; } //#endregion //#region dist/date-fns/addBusinessDays.js /** * The {@link addBusinessDays} function options. */ /** * @name addBusinessDays * @category Day Helpers * @summary Add the specified number of business days (mon - fri) to the given date. * * @description * Add the specified number of business days (mon - fri) to the given date, ignoring weekends. * * **You don't need date-fns\***: * * Temporal doesn't have built-in business day arithmetic, so you still need date-fns for this. * * \* **Not really**, see: https://date-fns.org/you-dont-need-date-fns * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param amount - The amount of business days to be added. * @param options - An object with options * * @returns The new date with the business days added * * @example * // Add 10 business days to 1 September 2014: * const result = addBusinessDays(new Date(2014, 8, 1), 10) * //=> Mon Sep 15 2014 00:00:00 (skipped weekend days) */ function addBusinessDays$1(date, amount, options) { var _date = toDate$1(date, options === null || options === void 0 ? void 0 : options.in); var startedOnWeekend = isWeekend$1(_date, options); if (isNaN(amount)) return constructFrom$1(options === null || options === void 0 ? void 0 : options.in, NaN); var hours = _date.getHours(); var sign = amount < 0 ? -1 : 1; var fullWeeks = Math.trunc(amount / 5); _date.setDate(_date.getDate() + fullWeeks * 7); var restDays = Math.abs(amount % 5); while (restDays > 0) { _date.setDate(_date.getDate() + sign); if (!isWeekend$1(_date, options)) restDays -= 1; } if (startedOnWeekend && isWeekend$1(_date, options) && amount !== 0) { if (isSaturday$1(_date, options)) _date.setDate(_date.getDate() + (sign < 0 ? 2 : -1)); if (isSunday$1(_date, options)) _date.setDate(_date.getDate() + (sign < 0 ? 1 : -2)); } _date.setHours(hours); return _date; } //#endregion //#region dist/date-fns/fp/addBusinessDays.js var _addBusinessDays = convertToFP(addBusinessDays$1, 2); //#endregion //#region dist/date-fns/fp/addBusinessDaysWithOptions.js var _addBusinessDaysWithOptions = convertToFP(addBusinessDays$1, 3); //#endregion //#region dist/date-fns/fp/addDays.js var _addDays = convertToFP(addDays$1, 2); //#endregion //#region dist/date-fns/fp/addDaysWithOptions.js var _addDaysWithOptions = convertToFP(addDays$1, 3); //#endregion //#region dist/date-fns/addMilliseconds.js /** * The {@link addMilliseconds} function options. */ /** * @name addMilliseconds * @category Millisecond Helpers * @summary Add the specified number of milliseconds to the given date. * * @description * Add the specified number of milliseconds to the given date. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param amount - The amount of milliseconds to be added. * @param options - The options object * * @returns The new date with the milliseconds added * * @example * // Add 750 milliseconds to 10 July 2014 12:45:30.000: * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750) * //=> Thu Jul 10 2014 12:45:30.750 */ function addMilliseconds$1(date, amount, options) { return constructFrom$1((options === null || options === void 0 ? void 0 : options.in) || date, +toDate$1(date) + amount); } //#endregion //#region dist/date-fns/addHours.js /** * The {@link addHours} function options. */ /** * @name addHours * @category Hour Helpers * @summary Add the specified number of hours to the given date. * * @description * Add the specified number of hours to the given date. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param amount - The amount of hours to be added * @param options - An object with options * * @returns The new date with the hours added * * @example * // Add 2 hours to 10 July 2014 23:00:00: * const result = addHours(new Date(2014, 6, 10, 23, 0), 2) * //=> Fri Jul 11 2014 01:00:00 */ function addHours$1(date, amount, options) { return addMilliseconds$1(date, amount * millisecondsInHour, options); } //#endregion //#region dist/date-fns/fp/addHours.js var _addHours = convertToFP(addHours$1, 2); //#endregion //#region dist/date-fns/fp/addHoursWithOptions.js var _addHoursWithOptions = convertToFP(addHours$1, 3); //#endregion //#region dist/date-fns/_lib/defaultOptions.js var defaultOptions = {}; function getDefaultOptions$1() { return defaultOptions; } //#endregion //#region dist/date-fns/startOfWeek.js /** * The {@link startOfWeek} function options. */ /** * @name startOfWeek * @category Week Helpers * @summary Return the start of a week for the given date. * * @description * Return the start of a week for the given date. * The result will be in the local timezone. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The original date * @param options - An object with options * * @returns The start of a week * * @example * // The start of a week for 2 September 2014 11:55:00: * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0)) * //=> Sun Aug 31 2014 00:00:00 * * @example * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00: * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 }) * //=> Mon Sep 01 2014 00:00:00 */ function startOfWeek$1(date, options) {var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _defaultOptions$local; var defaultOptions = getDefaultOptions$1(); var weekStartsOn = (_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 || (_options$locale = options.locale) === null || _options$locale === void 0 || (_options$locale = _options$locale.options) === null || _options$locale === void 0 ? void 0 : _options$locale.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 || (_defaultOptions$local = _defaultOptions$local.options) === null || _defaultOptions$local === void 0 ? void 0 : _defaultOptions$local.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0; var _date = toDate$1(date, options === null || options === void 0 ? void 0 : options.in); var day = _date.getDay(); var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; _date.setDate(_date.getDate() - diff); _date.setHours(0, 0, 0, 0); return _date; } //#endregion //#region dist/date-fns/startOfISOWeek.js /** * The {@link startOfISOWeek} function options. */ /** * @name startOfISOWeek * @category ISO Week Helpers * @summary Return the start of an ISO week for the given date. * * @description * Return the start of an ISO week for the given date. * The result will be in the local timezone. * * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The original date * @param options - An object with options * * @returns The start of an ISO week * * @example * // The start of an ISO week for 2 September 2014 11:55:00: * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0)) * //=> Mon Sep 01 2014 00:00:00 */ function startOfISOWeek$1(date, options) { return startOfWeek$1(date, _objectSpread(_objectSpread({}, options), {}, { weekStartsOn: 1 }) ); } //#endregion //#region dist/date-fns/getISOWeekYear.js /** * The {@link getISOWeekYear} function options. */ /** * @name getISOWeekYear * @category ISO Week-Numbering Year Helpers * @summary Get the ISO week-numbering year of the given date. * * @description * Get the ISO week-numbering year of the given date, * which always starts 3 days before the year's first Thursday. * * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date * * @param date - The given date * * @returns The ISO week-numbering year * * @example * // Which ISO-week numbering year is 2 January 2005? * const result = getISOWeekYear(new Date(2005, 0, 2)) * //=> 2004 */ function getISOWeekYear$1(date, options) { var _date = toDate$1(date, options === null || options === void 0 ? void 0 : options.in); var year = _date.getFullYear(); var fourthOfJanuaryOfNextYear = constructFrom$1(_date, 0); fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); var startOfNextYear = startOfISOWeek$1(fourthOfJanuaryOfNextYear); var fourthOfJanuaryOfThisYear = constructFrom$1(_date, 0); fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); var startOfThisYear = startOfISOWeek$1(fourthOfJanuaryOfThisYear); if (_date.getTime() >= startOfNextYear.getTime()) return year + 1;else if (_date.getTime() >= startOfThisYear.getTime()) return year;else return year - 1; } //#endregion //#region dist/date-fns/_lib/getTimezoneOffsetInMilliseconds.js /** * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds. * They usually appear for dates that denote time before the timezones were introduced * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891 * and GMT+01:00:00 after that date) * * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above, * which would lead to incorrect calculations. * * This function returns the timezone offset in milliseconds that takes seconds in account. */ function getTimezoneOffsetInMilliseconds(date) { var _date = toDate$1(date); var utcDate = new Date(Date.UTC(_date.getFullYear(), _date.getMonth(), _date.getDate(), _date.getHours(), _date.getMinutes(), _date.getSeconds(), _date.getMilliseconds())); utcDate.setUTCFullYear(_date.getFullYear()); return +date - +utcDate; } //#endregion //#region dist/date-fns/_lib/normalizeDates.js function normalizeDates(context) {for (var _len2 = arguments.length, dates = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {dates[_key2 - 1] = arguments[_key2];} var normalize = constructFrom$1.bind(null, context || dates.find(function (date) {return _typeof(date) === "object";})); return dates.map(normalize); } //#endregion //#region dist/date-fns/startOfDay.js /** * The {@link startOfDay} function options. */ /** * @name startOfDay * @category Day Helpers * @summary Return the start of a day for the given date. * * @description * Return the start of a day for the given date. * The result will be in the local timezone. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The original date * @param options - The options * * @returns The start of a day * * @example * // The start of a day for 2 September 2014 11:55:00: * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0)) * //=> Tue Sep 02 2014 00:00:00 */ function startOfDay$1(date, options) { var _date = toDate$1(date, options === null || options === void 0 ? void 0 : options.in); _date.setHours(0, 0, 0, 0); return _date; } //#endregion //#region dist/date-fns/differenceInCalendarDays.js /** * The {@link differenceInCalendarDays} function options. */ /** * @name differenceInCalendarDays * @category Day Helpers * @summary Get the number of calendar days between the given dates. * * @description * Get the number of calendar days between the given dates. This means that the times are removed * from the dates and then the difference in days is calculated. * * @param laterDate - The later date * @param earlierDate - The earlier date * @param options - The options object * * @returns The number of calendar days * * @example * // How many calendar days are between * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00? * const result = differenceInCalendarDays( * new Date(2012, 6, 2, 0, 0), * new Date(2011, 6, 2, 23, 0) * ) * //=> 366 * // How many calendar days are between * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00? * const result = differenceInCalendarDays( * new Date(2011, 6, 3, 0, 1), * new Date(2011, 6, 2, 23, 59) * ) * //=> 1 */ function differenceInCalendarDays$1(laterDate, earlierDate, options) { var _normalizeDates = normalizeDates(options === null || options === void 0 ? void 0 : options.in, laterDate, earlierDate),_normalizeDates2 = _slicedToArray(_normalizeDates, 2),laterDate_ = _normalizeDates2[0],earlierDate_ = _normalizeDates2[1]; var laterStartOfDay = startOfDay$1(laterDate_); var earlierStartOfDay = startOfDay$1(earlierDate_); var laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay); var earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay); return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay); } //#endregion //#region dist/date-fns/startOfISOWeekYear.js /** * The {@link startOfISOWeekYear} function options. */ /** * @name startOfISOWeekYear * @category ISO Week-Numbering Year Helpers * @summary Return the start of an ISO week-numbering year for the given date. * * @description * Return the start of an ISO week-numbering year, * which always starts 3 days before the year's first Thursday. * The result will be in the local timezone. * * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The original date * @param options - An object with options * * @returns The start of an ISO week-numbering year * * @example * // The start of an ISO week-numbering year for 2 July 2005: * const result = startOfISOWeekYear(new Date(2005, 6, 2)) * //=> Mon Jan 03 2005 00:00:00 */ function startOfISOWeekYear$1(date, options) { var year = getISOWeekYear$1(date, options); var fourthOfJanuary = constructFrom$1((options === null || options === void 0 ? void 0 : options.in) || date, 0); fourthOfJanuary.setFullYear(year, 0, 4); fourthOfJanuary.setHours(0, 0, 0, 0); return startOfISOWeek$1(fourthOfJanuary); } //#endregion //#region dist/date-fns/setISOWeekYear.js /** * The {@link setISOWeekYear} function options. */ /** * @name setISOWeekYear * @category ISO Week-Numbering Year Helpers * @summary Set the ISO week-numbering year to the given date. * * @description * Set the ISO week-numbering year to the given date, * saving the week number and the weekday number. * * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param weekYear - The ISO week-numbering year of the new date * @param options - An object with options * * @returns The new date with the ISO week-numbering year set * * @example * // Set ISO week-numbering year 2007 to 29 December 2008: * const result = setISOWeekYear(new Date(2008, 11, 29), 2007) * //=> Mon Jan 01 2007 00:00:00 */ function setISOWeekYear$1(date, weekYear, options) { var _date = toDate$1(date, options === null || options === void 0 ? void 0 : options.in); var diff = differenceInCalendarDays$1(_date, startOfISOWeekYear$1(_date, options)); var fourthOfJanuary = constructFrom$1((options === null || options === void 0 ? void 0 : options.in) || date, 0); fourthOfJanuary.setFullYear(weekYear, 0, 4); fourthOfJanuary.setHours(0, 0, 0, 0); _date = startOfISOWeekYear$1(fourthOfJanuary); _date.setDate(_date.getDate() + diff); return _date; } //#endregion //#region dist/date-fns/addISOWeekYears.js /** * The {@link addISOWeekYears} function options. */ /** * @name addISOWeekYears * @category ISO Week-Numbering Year Helpers * @summary Add the specified number of ISO week-numbering years to the given date. * * @description * Add the specified number of ISO week-numbering years to the given date. * * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * * @param date - The date to be changed * @param amount - The amount of ISO week-numbering years to be added. * @param options - An object with options * * @returns The new date with the ISO week-numbering years added * * @example * // Add 5 ISO week-numbering years to 2 July 2010: * const result = addISOWeekYears(new Date(2010, 6, 2), 5) * //=> Fri Jun 26 2015 00:00:00 */ function addISOWeekYears$1(date, amount, options) { return setISOWeekYear$1(date, getISOWeekYear$1(date, options) + amount, options); } //#endregion //#region dist/date-fns/fp/addISOWeekYears.js var _addISOWeekYears = convertToFP(addISOWeekYears$1, 2); //#endregion //#region dist/date-fns/fp/addISOWeekYearsWithOptions.js var _addISOWeekYearsWithOptions = convertToFP(addISOWeekYears$1, 3); //#endregion //#region dist/date-fns/fp/addMilliseconds.js var _addMilliseconds = convertToFP(addMilliseconds$1, 2); //#endregion //#region dist/date-fns/fp/addMillisecondsWithOptions.js var _addMillisecondsWithOptions = convertToFP(addMilliseconds$1, 3); //#endregion //#region dist/date-fns/addMinutes.js /** * The {@link addMinutes} function options. */ /** * @name addMinutes * @category Minute Helpers * @summary Add the specified number of minutes to the given date. * * @description * Add the specified number of minutes to the given date. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param amount - The amount of minutes to be added. * @param options - An object with options * * @returns The new date with the minutes added * * @example * // Add 30 minutes to 10 July 2014 12:00:00: * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30) * //=> Thu Jul 10 2014 12:30:00 */ function addMinutes$1(date, amount, options) { var _date = toDate$1(date, options === null || options === void 0 ? void 0 : options.in); _date.setTime(_date.getTime() + amount * millisecondsInMinute); return _date; } //#endregion //#region dist/date-fns/fp/addMinutes.js var _addMinutes = convertToFP(addMinutes$1, 2); //#endregion //#region dist/date-fns/fp/addMinutesWithOptions.js var _addMinutesWithOptions = convertToFP(addMinutes$1, 3); //#endregion //#region dist/date-fns/fp/addMonths.js var _addMonths = convertToFP(addMonths$1, 2); //#endregion //#region dist/date-fns/fp/addMonthsWithOptions.js var _addMonthsWithOptions = convertToFP(addMonths$1, 3); //#endregion //#region dist/date-fns/addQuarters.js /** * The {@link addQuarters} function options. */ /** * @name addQuarters * @category Quarter Helpers * @summary Add the specified number of year quarters to the given date. * * @description * Add the specified number of year quarters to the given date. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param amount - The amount of quarters to be added. * @param options - An object with options * * @returns The new date with the quarters added * * @example * // Add 1 quarter to 1 September 2014: * const result = addQuarters(new Date(2014, 8, 1), 1) * //=; Mon Dec 01 2014 00:00:00 */ function addQuarters$1(date, amount, options) { return addMonths$1(date, amount * 3, options); } //#endregion //#region dist/date-fns/fp/addQuarters.js var _addQuarters = convertToFP(addQuarters$1, 2); //#endregion //#region dist/date-fns/fp/addQuartersWithOptions.js var _addQuartersWithOptions = convertToFP(addQuarters$1, 3); //#endregion //#region dist/date-fns/addSeconds.js /** * The {@link addSeconds} function options. */ /** * @name addSeconds * @category Second Helpers * @summary Add the specified number of seconds to the given date. * * @description * Add the specified number of seconds to the given date. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param amount - The amount of seconds to be added. * @param options - An object with options * * @returns The new date with the seconds added * * @example * // Add 30 seconds to 10 July 2014 12:45:00: * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30) * //=> Thu Jul 10 2014 12:45:30 */ function addSeconds$1(date, amount, options) { return addMilliseconds$1(date, amount * 1e3, options); } //#endregion //#region dist/date-fns/fp/addSeconds.js var _addSeconds = convertToFP(addSeconds$1, 2); //#endregion //#region dist/date-fns/fp/addSecondsWithOptions.js var _addSecondsWithOptions = convertToFP(addSeconds$1, 3); //#endregion //#region dist/date-fns/addWeeks.js /** * The {@link addWeeks} function options. */ /** * @name addWeeks * @category Week Helpers * @summary Add the specified number of weeks to the given date. * * @description * Add the specified number of weeks to the given date. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments. * * @param date - The date to be changed * @param amount - The amount of weeks to be added. * @param options - An object with options * * @returns The new date with the weeks added * * @example * // Add 4 weeks to 1 September 2014: * const result = addWeeks(new Date(2014, 8, 1), 4) * //=> Mon Sep 29 2014 00:00:00 */ function addWeeks$1(date, amount, options) { return addDays$1(date, amount * 7, options); } //#endregion //#region dist/date-fns/fp/addWeeks.js var _addWeeks = convertToFP(addWeeks$1, 2); //#endregion //#region dist/date-fns/fp/addWeeksWithOptions.js var _addWeeksWithOptions = convertToFP(addWeeks$1, 3); //#endregion //#region dist/date-fns/fp/addWithOptions.js var _addWithOptions = convertToFP(add$1, 3); //#endregion //#region dist/date-fns/addYears.js /** * The {@link addYears} function options. */ /** * @name addYears * @category Year Helpers * @summary Add the specified number of years to the given date. * * @description * Add the specified number of years to the given date. * * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc). * @typeParam ResultDate - The result `Date` type. * * @param date - The date to be changed * @param amount - The amount of years to be added. * @param options - The options * * @returns The new date with the years added * * @example * // Add 5 years to 1 September 2014: * const result = addYears(new Date(2014, 8, 1), 5) * //=> Sun Sep 01 2019 00:00:00 */ function addYears$1(date, amount, options) { return addMonths$1(date, amount * 12, options); } //#endregion //#region dist/date-fns/fp/addYears.js var _addYears = convertToFP(addYears$1, 2); //#endregion //#region dist/date-fns/fp/addYearsWithOptions.js var _addYearsWithOptions = convertToFP(addYears$1, 3); //#endregion //#region dist/date-fns/areIntervalsOverlapping.js /** * The {@link areIntervalsOverlapping} function options. */ /** * @name areIntervalsOverlapping * @category Interval Helpers * @summary Is the given time interval overlapping with another time interval? * * @description * Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping unless `inclusive` is set to `true`. * * @param intervalLeft - The first interval to compare. * @param intervalRight - The second interval to compare. * @param options - The object with options * * @returns Whether the time intervals are overlapping * * @example * // For overlapping time intervals: * areIntervalsOverlapping( * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }, * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) } * ) * //=> true * * @example