UNPKG

@date-io/date-fns

Version:

Abstraction over common javascript date management libraries

399 lines (393 loc) 18.9 kB
'use strict'; var addDays = require('date-fns/addDays'); var addSeconds = require('date-fns/addSeconds'); var addMinutes = require('date-fns/addMinutes'); var addHours = require('date-fns/addHours'); var addWeeks = require('date-fns/addWeeks'); var addMonths = require('date-fns/addMonths'); var addYears = require('date-fns/addYears'); var differenceInYears = require('date-fns/differenceInYears'); var differenceInQuarters = require('date-fns/differenceInQuarters'); var differenceInMonths = require('date-fns/differenceInMonths'); var differenceInWeeks = require('date-fns/differenceInWeeks'); var differenceInDays = require('date-fns/differenceInDays'); var differenceInHours = require('date-fns/differenceInHours'); var differenceInMinutes = require('date-fns/differenceInMinutes'); var differenceInSeconds = require('date-fns/differenceInSeconds'); var differenceInMilliseconds = require('date-fns/differenceInMilliseconds'); var eachDayOfInterval = require('date-fns/eachDayOfInterval'); var endOfDay = require('date-fns/endOfDay'); var endOfWeek = require('date-fns/endOfWeek'); var endOfYear = require('date-fns/endOfYear'); var format = require('date-fns/format'); var getHours = require('date-fns/getHours'); var getSeconds = require('date-fns/getSeconds'); var getYear = require('date-fns/getYear'); var isAfter = require('date-fns/isAfter'); var isBefore = require('date-fns/isBefore'); var isEqual = require('date-fns/isEqual'); var isSameDay = require('date-fns/isSameDay'); var isSameYear = require('date-fns/isSameYear'); var isSameMonth = require('date-fns/isSameMonth'); var isSameHour = require('date-fns/isSameHour'); var isValid = require('date-fns/isValid'); var dateFnsParse = require('date-fns/parse'); var setHours = require('date-fns/setHours'); var setMinutes = require('date-fns/setMinutes'); var setMonth = require('date-fns/setMonth'); var getDay = require('date-fns/getDay'); var getDaysInMonth = require('date-fns/getDaysInMonth'); var setSeconds = require('date-fns/setSeconds'); var setYear = require('date-fns/setYear'); var startOfDay = require('date-fns/startOfDay'); var startOfMonth = require('date-fns/startOfMonth'); var endOfMonth = require('date-fns/endOfMonth'); var startOfWeek = require('date-fns/startOfWeek'); var startOfYear = require('date-fns/startOfYear'); var isWithinInterval = require('date-fns/isWithinInterval'); var longFormatters = require('date-fns/_lib/format/longFormatters'); var defaultLocale = require('date-fns/locale/en-US'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var addDays__default = /*#__PURE__*/_interopDefaultLegacy(addDays); var addSeconds__default = /*#__PURE__*/_interopDefaultLegacy(addSeconds); var addMinutes__default = /*#__PURE__*/_interopDefaultLegacy(addMinutes); var addHours__default = /*#__PURE__*/_interopDefaultLegacy(addHours); var addWeeks__default = /*#__PURE__*/_interopDefaultLegacy(addWeeks); var addMonths__default = /*#__PURE__*/_interopDefaultLegacy(addMonths); var addYears__default = /*#__PURE__*/_interopDefaultLegacy(addYears); var differenceInYears__default = /*#__PURE__*/_interopDefaultLegacy(differenceInYears); var differenceInQuarters__default = /*#__PURE__*/_interopDefaultLegacy(differenceInQuarters); var differenceInMonths__default = /*#__PURE__*/_interopDefaultLegacy(differenceInMonths); var differenceInWeeks__default = /*#__PURE__*/_interopDefaultLegacy(differenceInWeeks); var differenceInDays__default = /*#__PURE__*/_interopDefaultLegacy(differenceInDays); var differenceInHours__default = /*#__PURE__*/_interopDefaultLegacy(differenceInHours); var differenceInMinutes__default = /*#__PURE__*/_interopDefaultLegacy(differenceInMinutes); var differenceInSeconds__default = /*#__PURE__*/_interopDefaultLegacy(differenceInSeconds); var differenceInMilliseconds__default = /*#__PURE__*/_interopDefaultLegacy(differenceInMilliseconds); var eachDayOfInterval__default = /*#__PURE__*/_interopDefaultLegacy(eachDayOfInterval); var endOfDay__default = /*#__PURE__*/_interopDefaultLegacy(endOfDay); var endOfWeek__default = /*#__PURE__*/_interopDefaultLegacy(endOfWeek); var endOfYear__default = /*#__PURE__*/_interopDefaultLegacy(endOfYear); var format__default = /*#__PURE__*/_interopDefaultLegacy(format); var getHours__default = /*#__PURE__*/_interopDefaultLegacy(getHours); var getSeconds__default = /*#__PURE__*/_interopDefaultLegacy(getSeconds); var getYear__default = /*#__PURE__*/_interopDefaultLegacy(getYear); var isAfter__default = /*#__PURE__*/_interopDefaultLegacy(isAfter); var isBefore__default = /*#__PURE__*/_interopDefaultLegacy(isBefore); var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual); var isSameDay__default = /*#__PURE__*/_interopDefaultLegacy(isSameDay); var isSameYear__default = /*#__PURE__*/_interopDefaultLegacy(isSameYear); var isSameMonth__default = /*#__PURE__*/_interopDefaultLegacy(isSameMonth); var isSameHour__default = /*#__PURE__*/_interopDefaultLegacy(isSameHour); var isValid__default = /*#__PURE__*/_interopDefaultLegacy(isValid); var dateFnsParse__default = /*#__PURE__*/_interopDefaultLegacy(dateFnsParse); var setHours__default = /*#__PURE__*/_interopDefaultLegacy(setHours); var setMinutes__default = /*#__PURE__*/_interopDefaultLegacy(setMinutes); var setMonth__default = /*#__PURE__*/_interopDefaultLegacy(setMonth); var getDay__default = /*#__PURE__*/_interopDefaultLegacy(getDay); var getDaysInMonth__default = /*#__PURE__*/_interopDefaultLegacy(getDaysInMonth); var setSeconds__default = /*#__PURE__*/_interopDefaultLegacy(setSeconds); var setYear__default = /*#__PURE__*/_interopDefaultLegacy(setYear); var startOfDay__default = /*#__PURE__*/_interopDefaultLegacy(startOfDay); var startOfMonth__default = /*#__PURE__*/_interopDefaultLegacy(startOfMonth); var endOfMonth__default = /*#__PURE__*/_interopDefaultLegacy(endOfMonth); var startOfWeek__default = /*#__PURE__*/_interopDefaultLegacy(startOfWeek); var startOfYear__default = /*#__PURE__*/_interopDefaultLegacy(startOfYear); var isWithinInterval__default = /*#__PURE__*/_interopDefaultLegacy(isWithinInterval); var longFormatters__default = /*#__PURE__*/_interopDefaultLegacy(longFormatters); var defaultLocale__default = /*#__PURE__*/_interopDefaultLegacy(defaultLocale); var defaultFormats = { dayOfMonth: "d", fullDate: "PP", fullDateWithWeekday: "PPPP", fullDateTime: "PP p", fullDateTime12h: "PP hh:mm aaa", fullDateTime24h: "PP HH:mm", fullTime: "p", fullTime12h: "hh:mm aaa", fullTime24h: "HH:mm", hours12h: "hh", hours24h: "HH", keyboardDate: "P", keyboardDateTime: "P p", keyboardDateTime12h: "P hh:mm aaa", keyboardDateTime24h: "P HH:mm", minutes: "mm", month: "LLLL", monthAndDate: "MMMM d", monthAndYear: "LLLL yyyy", monthShort: "MMM", weekday: "EEEE", weekdayShort: "EEE", normalDate: "d MMMM", normalDateWithWeekday: "EEE, MMM d", seconds: "ss", shortDate: "MMM d", year: "yyyy", }; var DateFnsUtils = /** @class */ (function () { function DateFnsUtils(_a) { var _this = this; var _b = _a === void 0 ? {} : _a, locale = _b.locale, formats = _b.formats; this.lib = "date-fns"; // Note: date-fns input types are more lenient than this adapter, so we need to expose our more // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage. this.is12HourCycleInCurrentLocale = function () { if (_this.locale) { return /a/.test(_this.locale.formatLong.time()); } // By default date-fns is using en-US locale with am/pm enabled return true; }; this.getFormatHelperText = function (format) { // @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31 var longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; var locale = _this.locale || defaultLocale__default['default']; return format .match(longFormatRegexp) .map(function (token) { var firstCharacter = token[0]; if (firstCharacter === "p" || firstCharacter === "P") { var longFormatter = longFormatters__default['default'][firstCharacter]; return longFormatter(token, locale.formatLong, {}); } return token; }) .join("") .replace(/(aaa|aa|a)/g, "(a|p)m") .toLocaleLowerCase(); }; this.getCurrentLocaleCode = function () { var _a; return ((_a = _this.locale) === null || _a === void 0 ? void 0 : _a.code) || "en-US"; }; this.addSeconds = function (value, count) { return addSeconds__default['default'](value, count); }; this.addMinutes = function (value, count) { return addMinutes__default['default'](value, count); }; this.addHours = function (value, count) { return addHours__default['default'](value, count); }; this.addDays = function (value, count) { return addDays__default['default'](value, count); }; this.addWeeks = function (value, count) { return addWeeks__default['default'](value, count); }; this.addMonths = function (value, count) { return addMonths__default['default'](value, count); }; this.isValid = function (value) { return isValid__default['default'](_this.date(value)); }; this.getDiff = function (value, comparing, unit) { switch (unit) { case "years": return differenceInYears__default['default'](value, _this.date(comparing)); case "quarters": return differenceInQuarters__default['default'](value, _this.date(comparing)); case "months": return differenceInMonths__default['default'](value, _this.date(comparing)); case "weeks": return differenceInWeeks__default['default'](value, _this.date(comparing)); case "days": return differenceInDays__default['default'](value, _this.date(comparing)); case "hours": return differenceInHours__default['default'](value, _this.date(comparing)); case "minutes": return differenceInMinutes__default['default'](value, _this.date(comparing)); case "seconds": return differenceInSeconds__default['default'](value, _this.date(comparing)); default: { return differenceInMilliseconds__default['default'](value, _this.date(comparing)); } } }; this.isAfter = function (value, comparing) { return isAfter__default['default'](value, comparing); }; this.isBefore = function (value, comparing) { return isBefore__default['default'](value, comparing); }; this.startOfDay = function (value) { return startOfDay__default['default'](value); }; this.endOfDay = function (value) { return endOfDay__default['default'](value); }; this.getHours = function (value) { return getHours__default['default'](value); }; this.setHours = function (value, count) { return setHours__default['default'](value, count); }; this.setMinutes = function (value, count) { return setMinutes__default['default'](value, count); }; this.getSeconds = function (value) { return getSeconds__default['default'](value); }; this.setSeconds = function (value, count) { return setSeconds__default['default'](value, count); }; this.isSameDay = function (value, comparing) { return isSameDay__default['default'](value, comparing); }; this.isSameMonth = function (value, comparing) { return isSameMonth__default['default'](value, comparing); }; this.isSameYear = function (value, comparing) { return isSameYear__default['default'](value, comparing); }; this.isSameHour = function (value, comparing) { return isSameHour__default['default'](value, comparing); }; this.startOfMonth = function (value) { return startOfMonth__default['default'](value); }; this.endOfMonth = function (value) { return endOfMonth__default['default'](value); }; this.startOfWeek = function (value) { return startOfWeek__default['default'](value, { locale: _this.locale }); }; this.endOfWeek = function (value) { return endOfWeek__default['default'](value, { locale: _this.locale }); }; this.getYear = function (value) { return getYear__default['default'](value); }; this.setYear = function (value, count) { return setYear__default['default'](value, count); }; this.date = function (value) { if (typeof value === "undefined") { return new Date(); } if (value === null) { return null; } return new Date(value); }; this.toJsDate = function (value) { return value; }; this.parse = function (value, formatString) { if (value === "") { return null; } return dateFnsParse__default['default'](value, formatString, new Date(), { locale: _this.locale }); }; this.format = function (date, formatKey) { return _this.formatByString(date, _this.formats[formatKey]); }; this.formatByString = function (date, formatString) { return format__default['default'](date, formatString, { locale: _this.locale }); }; this.isEqual = function (date, comparing) { if (date === null && comparing === null) { return true; } return isEqual__default['default'](date, comparing); }; this.isNull = function (date) { return date === null; }; this.isAfterDay = function (date, value) { return isAfter__default['default'](date, endOfDay__default['default'](value)); }; this.isBeforeDay = function (date, value) { return isBefore__default['default'](date, startOfDay__default['default'](value)); }; this.isBeforeYear = function (date, value) { return isBefore__default['default'](date, startOfYear__default['default'](value)); }; this.isAfterYear = function (date, value) { return isAfter__default['default'](date, endOfYear__default['default'](value)); }; this.isWithinRange = function (date, _a) { var start = _a[0], end = _a[1]; return isWithinInterval__default['default'](date, { start: start, end: end }); }; this.formatNumber = function (numberToFormat) { return numberToFormat; }; this.getMinutes = function (date) { return date.getMinutes(); }; this.getMonth = function (date) { return date.getMonth(); }; this.getDaysInMonth = function (date) { return getDaysInMonth__default['default'](date); }; this.setMonth = function (date, count) { return setMonth__default['default'](date, count); }; this.getMeridiemText = function (ampm) { return ampm === "am" ? "AM" : "PM"; }; this.getNextMonth = function (date) { return addMonths__default['default'](date, 1); }; this.getPreviousMonth = function (date) { return addMonths__default['default'](date, -1); }; this.getMonthArray = function (date) { var firstMonth = startOfYear__default['default'](date); var monthArray = [firstMonth]; while (monthArray.length < 12) { var prevMonth = monthArray[monthArray.length - 1]; monthArray.push(_this.getNextMonth(prevMonth)); } return monthArray; }; this.mergeDateAndTime = function (date, time) { return _this.setSeconds(_this.setMinutes(_this.setHours(date, _this.getHours(time)), _this.getMinutes(time)), _this.getSeconds(time)); }; this.getWeekdays = function () { var now = new Date(); return eachDayOfInterval__default['default']({ start: startOfWeek__default['default'](now, { locale: _this.locale }), end: endOfWeek__default['default'](now, { locale: _this.locale }), }).map(function (day) { return _this.formatByString(day, "EEEEEE"); }); }; this.getWeekArray = function (date) { var start = startOfWeek__default['default'](startOfMonth__default['default'](date), { locale: _this.locale }); var end = endOfWeek__default['default'](endOfMonth__default['default'](date), { locale: _this.locale }); var count = 0; var current = start; var nestedWeeks = []; var lastDay = null; while (isBefore__default['default'](current, end)) { var weekNumber = Math.floor(count / 7); nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || []; var day = getDay__default['default'](current); if (lastDay !== day) { lastDay = day; nestedWeeks[weekNumber].push(current); count += 1; } current = addDays__default['default'](current, 1); } return nestedWeeks; }; this.getYearRange = function (start, end) { var startDate = startOfYear__default['default'](start); var endDate = endOfYear__default['default'](end); var years = []; var current = startDate; while (isBefore__default['default'](current, endDate)) { years.push(current); current = addYears__default['default'](current, 1); } return years; }; this.locale = locale; this.formats = Object.assign({}, defaultFormats, formats); } return DateFnsUtils; }()); module.exports = DateFnsUtils;