calendar-utils
Version:
Utility functions to generate views for calendars
125 lines • 4.59 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.adapterFactory = void 0;
function adapterFactory(luxon) {
/* istanbul ignore next */
function coerceDateTime(date) {
return typeof date === 'number'
? luxon.DateTime.fromMillis(date)
: luxon.DateTime.fromJSDate(date);
}
function addDays(date, amount) {
return coerceDateTime(date).plus({ days: amount }).toJSDate();
}
function addHours(date, amount) {
return coerceDateTime(date).plus({ hours: amount }).toJSDate();
}
function addMinutes(date, amount) {
return coerceDateTime(date).plus({ minutes: amount }).toJSDate();
}
function addSeconds(date, amount) {
return coerceDateTime(date).plus({ seconds: amount }).toJSDate();
}
function differenceInDays(dateLeft, dateRight) {
return Math.trunc(coerceDateTime(dateLeft).diff(coerceDateTime(dateRight)).as('days'));
}
function differenceInMinutes(dateLeft, dateRight) {
return Math.trunc(coerceDateTime(dateLeft).diff(coerceDateTime(dateRight)).as('minutes'));
}
function differenceInSeconds(dateLeft, dateRight) {
return Math.trunc(coerceDateTime(dateLeft).diff(coerceDateTime(dateRight)).as('seconds'));
}
function endOfDay(date) {
return coerceDateTime(date).endOf('day').toJSDate();
}
function endOfMonth(date) {
return coerceDateTime(date).endOf('month').toJSDate();
}
function endOfWeek(date) {
return coerceDateTime(date)
.endOf('week', { useLocaleWeeks: true })
.toJSDate();
}
function getDay(date) {
// Luxon uses ISO 8601 weekday numbers, with 1 as Monday and 7 as Sunday
// https://moment.github.io/luxon/api-docs/index.html#datetimeweekday
return coerceDateTime(date).weekday % 7;
}
/* istanbul ignore next */
function getMonth(date) {
// Luxon uses 1-based indexing for months
// https://moment.github.io/luxon/api-docs/index.html#datetimemonth
return coerceDateTime(date).month - 1;
}
function isSameDay(dateLeft, dateRight) {
return coerceDateTime(dateLeft).hasSame(coerceDateTime(dateRight), 'day');
}
function isSameMonth(dateLeft, dateRight) {
return coerceDateTime(dateLeft).hasSame(coerceDateTime(dateRight), 'month');
}
function isSameSecond(dateLeft, dateRight) {
return coerceDateTime(dateLeft).hasSame(coerceDateTime(dateRight), 'second');
}
function max(dates) {
var _a;
return (_a = luxon.DateTime).max.apply(_a, dates.map(function (date) { return coerceDateTime(date); })).toJSDate();
}
function setHours(date, hours) {
return coerceDateTime(date).set({ hour: hours }).toJSDate();
}
function setMinutes(date, minutes) {
return coerceDateTime(date).set({ minute: minutes }).toJSDate();
}
function startOfDay(date) {
return coerceDateTime(date).startOf('day').toJSDate();
}
function startOfMinute(date) {
return coerceDateTime(date).startOf('minute').toJSDate();
}
function startOfMonth(date) {
return coerceDateTime(date).startOf('month').toJSDate();
}
function startOfWeek(date) {
return coerceDateTime(date)
.startOf('week', { useLocaleWeeks: true })
.toJSDate();
}
function getHours(date) {
return coerceDateTime(date).hour;
}
function getMinutes(date) {
return coerceDateTime(date).minute;
}
function getTimezoneOffset(date) {
return coerceDateTime(date).offset * -1;
}
return {
addDays: addDays,
addHours: addHours,
addMinutes: addMinutes,
addSeconds: addSeconds,
differenceInDays: differenceInDays,
differenceInMinutes: differenceInMinutes,
differenceInSeconds: differenceInSeconds,
endOfDay: endOfDay,
endOfMonth: endOfMonth,
endOfWeek: endOfWeek,
getDay: getDay,
getMonth: getMonth,
isSameDay: isSameDay,
isSameMonth: isSameMonth,
isSameSecond: isSameSecond,
max: max,
setHours: setHours,
setMinutes: setMinutes,
startOfDay: startOfDay,
startOfMinute: startOfMinute,
startOfMonth: startOfMonth,
startOfWeek: startOfWeek,
getHours: getHours,
getMinutes: getMinutes,
getTimezoneOffset: getTimezoneOffset,
};
}
exports.adapterFactory = adapterFactory;
//# sourceMappingURL=index.js.map
;