UNPKG

calendar-utils

Version:

Utility functions to generate views for calendars

125 lines 4.59 kB
"use strict"; 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