@churchapps/helpers
Version:
Library of helper functions not specific to any one ChurchApps project or framework.
43 lines • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventHelper = void 0;
const rrule_1 = require("rrule");
class EventHelper {
static getRange = (event, startDate, endDate) => {
const start = new Date(event.start);
const rrule = EventHelper.getFullRRule(event);
const dates = rrule.between(startDate, endDate);
dates.forEach(d => {
d.setHours(start.getHours());
d.setMinutes(start.getMinutes());
d.setSeconds(start.getSeconds());
});
return dates;
};
static getFullRRule = (event) => {
let rrule = rrule_1.RRule.fromString(event.recurrenceRule);
rrule.options.dtstart = new Date(event.start);
return rrule;
};
static removeExcludeDates = (events) => {
for (let i = events.length - 1; i >= 0; i--) {
if (events[i].exceptionDates?.length > 0) {
const parsedDates = events[i].exceptionDates.map(d => new Date(d).toISOString());
if (parsedDates.indexOf(events[i].start.toISOString()) > -1)
events.splice(i, 1);
}
}
};
static getPartialRRuleString = (options) => {
const parts = new rrule_1.RRule(options).toString().split("RRULE:");
const result = parts.length === 2 ? parts[1] : "";
return result;
};
static cleanRule = (options) => {
options.byhour = undefined;
options.byminute = undefined;
options.bysecond = undefined;
};
}
exports.EventHelper = EventHelper;
//# sourceMappingURL=EventHelper.js.map