volleyball-dev-frontend/node_modules/react-big-calendar/lib/localizers/luxon.js
2025-06-02 16:42:16 +00:00

424 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
exports.formats = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _localizer = require("../localizer");
function pluralizeUnit(unit) {
return /s$/.test(unit) ? unit : unit + 's';
}
var weekRangeFormat = function weekRangeFormat(_ref, culture, local) {
var start = _ref.start,
end = _ref.end;
return local.format(start, 'MMMM dd', culture) + ' ' +
// updated to use this localizer 'eq()' method
local.format(end, local.eq(start, end, 'month') ? 'dd' : 'MMMM dd', culture);
};
var dateRangeFormat = function dateRangeFormat(_ref2, culture, local) {
var start = _ref2.start,
end = _ref2.end;
return local.format(start, 'D', culture) + ' ' + local.format(end, 'D', culture);
};
var timeRangeFormat = function timeRangeFormat(_ref3, culture, local) {
var start = _ref3.start,
end = _ref3.end;
return local.format(start, 't', culture) + ' ' + local.format(end, 't', culture);
};
var timeRangeStartFormat = function timeRangeStartFormat(_ref4, culture, local) {
var start = _ref4.start;
return local.format(start, 't', culture) + ' ';
};
var timeRangeEndFormat = function timeRangeEndFormat(_ref5, culture, local) {
var end = _ref5.end;
return ' ' + local.format(end, 't', culture);
};
var formats = exports.formats = {
dateFormat: 'dd',
dayFormat: 'dd EEE',
weekdayFormat: 'EEE',
selectRangeFormat: timeRangeFormat,
eventTimeRangeFormat: timeRangeFormat,
eventTimeRangeStartFormat: timeRangeStartFormat,
eventTimeRangeEndFormat: timeRangeEndFormat,
timeGutterFormat: 't',
monthHeaderFormat: 'MMMM yyyy',
dayHeaderFormat: 'EEEE MMM dd',
dayRangeHeaderFormat: weekRangeFormat,
agendaHeaderFormat: dateRangeFormat,
agendaDateFormat: 'EEE MMM dd',
agendaTimeFormat: 't',
agendaTimeRangeFormat: timeRangeFormat
};
function fixUnit(unit) {
var datePart = unit ? pluralizeUnit(unit.toLowerCase()) : unit;
if (datePart === 'FullYear') {
datePart = 'year';
} else if (!datePart) {
datePart = undefined;
}
return datePart;
}
// Luxon does not currently have weekInfo by culture
// Luxon uses 1 based values for month and weekday
// So we default to Sunday (7)
function _default(DateTime) {
var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref6$firstDayOfWeek = _ref6.firstDayOfWeek,
firstDayOfWeek = _ref6$firstDayOfWeek === void 0 ? 7 : _ref6$firstDayOfWeek;
function formatDate(value, format) {
return DateTime.fromJSDate(value).toFormat(format);
}
function formatDateWithCulture(value, culture, format) {
return DateTime.fromJSDate(value).setLocale(culture).toFormat(format);
}
/*** BEGIN localized date arithmetic methods with Luxon ***/
function defineComparators(a, b, unit) {
var datePart = fixUnit(unit);
var dtA = datePart ? DateTime.fromJSDate(a).startOf(datePart) : DateTime.fromJSDate(a);
var dtB = datePart ? DateTime.fromJSDate(b).startOf(datePart) : DateTime.fromJSDate(b);
return [dtA, dtB, datePart];
}
// Since Luxon (and current Intl API) has no support
// for culture based weekInfo, we need to handle
// the start of the week differently
// depending on locale, the firstDayOfWeek could also be Saturday, Sunday or Monday
function startOfDTWeek(dtObj) {
var weekday = dtObj.weekday;
if (weekday === firstDayOfWeek) {
return dtObj.startOf('day'); // already beginning of week
} else if (firstDayOfWeek === 1) {
return dtObj.startOf('week'); // fow is Monday, which is Luxon default
}
var diff = firstDayOfWeek === 7 ? weekday : weekday + (7 - firstDayOfWeek);
return dtObj.minus({
day: diff
}).startOf('day');
}
function endOfDTWeek(dtObj) {
var weekday = dtObj.weekday;
var eow = firstDayOfWeek === 1 ? 7 : firstDayOfWeek - 1;
if (weekday === eow) {
return dtObj.endOf('day'); // already last day of the week
} else if (firstDayOfWeek === 1) {
return dtObj.endOf('week'); // use Luxon default (Sunday)
}
var fromDate = firstDayOfWeek > eow ? dtObj.plus({
day: firstDayOfWeek - eow
}) : dtObj;
return fromDate.set({
weekday: eow
}).endOf('day');
}
// This returns a DateTime instance
function startOfDT() {
var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();
var unit = arguments.length > 1 ? arguments[1] : undefined;
var datePart = fixUnit(unit);
if (datePart) {
var dt = DateTime.fromJSDate(date);
return datePart.includes('week') ? startOfDTWeek(dt) : dt.startOf(datePart);
}
return DateTime.fromJSDate(date);
}
function firstOfWeek() {
return firstDayOfWeek;
}
// This returns a JS Date from a DateTime instance
function startOf() {
var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();
var unit = arguments.length > 1 ? arguments[1] : undefined;
return startOfDT(date, unit).toJSDate();
}
// This returns a DateTime instance
function endOfDT() {
var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();
var unit = arguments.length > 1 ? arguments[1] : undefined;
var datePart = fixUnit(unit);
if (datePart) {
var dt = DateTime.fromJSDate(date);
return datePart.includes('week') ? endOfDTWeek(dt) : dt.endOf(datePart);
}
return DateTime.fromJSDate(date);
}
function endOf() {
var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();
var unit = arguments.length > 1 ? arguments[1] : undefined;
return endOfDT(date, unit).toJSDate();
}
function eq(a, b, unit) {
var _defineComparators = defineComparators(a, b, unit),
_defineComparators2 = (0, _slicedToArray2.default)(_defineComparators, 2),
dtA = _defineComparators2[0],
dtB = _defineComparators2[1];
return +dtA == +dtB;
}
function neq(a, b, unit) {
return !eq(a, b, unit);
}
function gt(a, b, unit) {
var _defineComparators3 = defineComparators(a, b, unit),
_defineComparators4 = (0, _slicedToArray2.default)(_defineComparators3, 2),
dtA = _defineComparators4[0],
dtB = _defineComparators4[1];
return +dtA > +dtB;
}
function lt(a, b, unit) {
var _defineComparators5 = defineComparators(a, b, unit),
_defineComparators6 = (0, _slicedToArray2.default)(_defineComparators5, 2),
dtA = _defineComparators6[0],
dtB = _defineComparators6[1];
return +dtA < +dtB;
}
function gte(a, b, unit) {
var _defineComparators7 = defineComparators(a, b, unit),
_defineComparators8 = (0, _slicedToArray2.default)(_defineComparators7, 2),
dtA = _defineComparators8[0],
dtB = _defineComparators8[1];
return +dtA >= +dtB;
}
function lte(a, b, unit) {
var _defineComparators9 = defineComparators(a, b, unit),
_defineComparators10 = (0, _slicedToArray2.default)(_defineComparators9, 2),
dtA = _defineComparators10[0],
dtB = _defineComparators10[1];
return +dtA <= +dtB;
}
function inRange(day, min, max) {
var unit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'day';
var datePart = fixUnit(unit);
var mDay = startOfDT(day, datePart);
var mMin = startOfDT(min, datePart);
var mMax = startOfDT(max, datePart);
return +mDay >= +mMin && +mDay <= +mMax;
}
function min(dateA, dateB) {
var dtA = DateTime.fromJSDate(dateA);
var dtB = DateTime.fromJSDate(dateB);
var minDt = DateTime.min(dtA, dtB);
return minDt.toJSDate();
}
function max(dateA, dateB) {
var dtA = DateTime.fromJSDate(dateA);
var dtB = DateTime.fromJSDate(dateB);
var maxDt = DateTime.max(dtA, dtB);
return maxDt.toJSDate();
}
function merge(date, time) {
if (!date && !time) return null;
var tm = DateTime.fromJSDate(time);
var dt = startOfDT(date, 'day');
return dt.set({
hour: tm.hour,
minute: tm.minute,
second: tm.second,
millisecond: tm.millisecond
}).toJSDate();
}
function add(date, adder, unit) {
var datePart = fixUnit(unit);
return DateTime.fromJSDate(date).plus((0, _defineProperty2.default)({}, datePart, adder)).toJSDate();
}
function range(start, end) {
var unit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'day';
var datePart = fixUnit(unit);
var current = DateTime.fromJSDate(start).toJSDate(); // this is to get it to tz
var days = [];
while (lte(current, end)) {
days.push(current);
current = add(current, 1, datePart);
}
return days;
}
function ceil(date, unit) {
var datePart = fixUnit(unit);
var floor = startOf(date, datePart);
return eq(floor, date) ? floor : add(floor, 1, datePart);
}
function diff(a, b) {
var unit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'day';
var datePart = fixUnit(unit);
// don't use 'defineComparators' here, as we don't want to mutate the values
var dtA = DateTime.fromJSDate(a);
var dtB = DateTime.fromJSDate(b);
return Math.floor(dtB.diff(dtA, datePart, {
conversionAccuracy: 'longterm'
}).toObject()[datePart]);
}
function firstVisibleDay(date) {
var startOfMonth = startOfDT(date, 'month');
return startOfDTWeek(startOfMonth).toJSDate();
}
function lastVisibleDay(date) {
var endOfMonth = endOfDT(date, 'month');
return endOfDTWeek(endOfMonth).toJSDate();
}
function visibleDays(date) {
var current = firstVisibleDay(date);
var last = lastVisibleDay(date);
var days = [];
while (lte(current, last)) {
days.push(current);
current = add(current, 1, 'day');
}
return days;
}
/*** END localized date arithmetic methods with moment ***/
/**
* Moved from TimeSlots.js, this method overrides the method of the same name
* in the localizer.js, using moment to construct the js Date
* @param {Date} dt - date to start with
* @param {Number} minutesFromMidnight
* @param {Number} offset
* @returns {Date}
*/
function getSlotDate(dt, minutesFromMidnight, offset) {
return startOfDT(dt, 'day').set({
minutes: minutesFromMidnight + offset
}).toJSDate();
}
// Luxon will automatically handle DST differences in it's calculations
function getTotalMin(start, end) {
return diff(start, end, 'minutes');
}
function getMinutesFromMidnight(start) {
var dayStart = startOfDT(start, 'day');
var day = DateTime.fromJSDate(start);
return Math.round(day.diff(dayStart, 'minutes', {
conversionAccuracy: 'longterm'
}).toObject().minutes);
}
// These two are used by DateSlotMetrics
function continuesPrior(start, first) {
return lt(start, first);
}
function continuesAfter(start, end, last) {
return gte(end, last);
}
function daySpan(start, end) {
var dtStart = DateTime.fromJSDate(start);
var dtEnd = DateTime.fromJSDate(end);
return dtEnd.diff(dtStart).as('days');
}
// These two are used by eventLevels
function sortEvents(_ref7) {
var _ref7$evtA = _ref7.evtA,
aStart = _ref7$evtA.start,
aEnd = _ref7$evtA.end,
aAllDay = _ref7$evtA.allDay,
_ref7$evtB = _ref7.evtB,
bStart = _ref7$evtB.start,
bEnd = _ref7$evtB.end,
bAllDay = _ref7$evtB.allDay;
var startSort = +startOf(aStart, 'day') - +startOf(bStart, 'day');
var durA = daySpan(aStart, aEnd);
var durB = daySpan(bStart, bEnd);
return startSort ||
// sort by start Day first
durB - durA ||
// events spanning multiple days go first
!!bAllDay - !!aAllDay ||
// then allDay single day events
+aStart - +bStart ||
// then sort by start time *don't need moment conversion here
+aEnd - +bEnd // then sort by end time *don't need moment conversion here either
;
}
function inEventRange(_ref8) {
var _ref8$event = _ref8.event,
start = _ref8$event.start,
end = _ref8$event.end,
_ref8$range = _ref8.range,
rangeStart = _ref8$range.start,
rangeEnd = _ref8$range.end;
var eStart = startOf(start, 'day');
var startsBeforeEnd = lte(eStart, rangeEnd, 'day');
// when the event is zero duration we need to handle a bit differently
var sameMin = neq(eStart, end, 'minutes');
var endsAfterStart = sameMin ? gt(end, rangeStart, 'minutes') : gte(end, rangeStart, 'minutes');
return startsBeforeEnd && endsAfterStart;
}
// moment treats 'day' and 'date' equality very different
// moment(date1).isSame(date2, 'day') would test that they were both the same day of the week
// moment(date1).isSame(date2, 'date') would test that they were both the same date of the month of the year
function isSameDate(date1, date2) {
var dt = DateTime.fromJSDate(date1);
var dt2 = DateTime.fromJSDate(date2);
return dt.hasSame(dt2, 'day');
}
/**
* This method, called once in the localizer constructor, is used by eventLevels
* 'eventSegments()' to assist in determining the 'span' of the event in the display,
* specifically when using a timezone that is greater than the browser native timezone.
* @returns number
*/
function browserTZOffset() {
/**
* Date.prototype.getTimezoneOffset horrifically flips the positive/negative from
* what you see in it's string, so we have to jump through some hoops to get a value
* we can actually compare.
*/
var dt = new Date();
var neg = /-/.test(dt.toString()) ? '-' : '';
var dtOffset = dt.getTimezoneOffset();
var comparator = Number("".concat(neg).concat(Math.abs(dtOffset)));
// moment correctly provides positive/negative offset, as expected
var mtOffset = DateTime.local().offset;
return mtOffset > comparator ? 1 : 0;
}
return new _localizer.DateLocalizer({
format: function format(value, _format, culture) {
if (culture) {
return formatDateWithCulture(value, culture, _format);
}
return formatDate(value, _format);
},
formats: formats,
firstOfWeek: firstOfWeek,
firstVisibleDay: firstVisibleDay,
lastVisibleDay: lastVisibleDay,
visibleDays: visibleDays,
lt: lt,
lte: lte,
gt: gt,
gte: gte,
eq: eq,
neq: neq,
merge: merge,
inRange: inRange,
startOf: startOf,
endOf: endOf,
range: range,
add: add,
diff: diff,
ceil: ceil,
min: min,
max: max,
getSlotDate: getSlotDate,
getTotalMin: getTotalMin,
getMinutesFromMidnight: getMinutesFromMidnight,
continuesPrior: continuesPrior,
continuesAfter: continuesAfter,
sortEvents: sortEvents,
inEventRange: inEventRange,
isSameDate: isSameDate,
daySpan: daySpan,
browserTZOffset: browserTZOffset
});
}