UNPKG

calendar-utils

Version:

Utility functions to generate views for calendars

123 lines 4.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.adapterFactory = adapterFactory; 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) { return luxon.DateTime.max(...dates.map((date) => 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, addHours, addMinutes, addSeconds, differenceInDays, differenceInMinutes, differenceInSeconds, endOfDay, endOfMonth, endOfWeek, getDay, getMonth, isSameDay, isSameMonth, isSameSecond, max, setHours, setMinutes, startOfDay, startOfMinute, startOfMonth, startOfWeek, getHours, getMinutes, getTimezoneOffset, }; } //# sourceMappingURL=index.js.map