123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
-
-
- import { rrulestr, RRule } from 'rrule';
- import { createPlugin, refineProps, createDuration } from '@fullcalendar/core';
-
-
-
- var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
-
- var EVENT_DEF_PROPS = {
- rrule: null,
- duration: createDuration
- };
- var recurring = {
- parse: function (rawEvent, leftoverProps, dateEnv) {
- if (rawEvent.rrule != null) {
- var props = refineProps(rawEvent, EVENT_DEF_PROPS, {}, leftoverProps);
- var parsed = parseRRule(props.rrule, dateEnv);
- if (parsed) {
- return {
- typeData: parsed.rrule,
- allDayGuess: parsed.allDayGuess,
- duration: props.duration
- };
- }
- }
- return null;
- },
- expand: function (rrule, framingRange) {
-
-
-
- return rrule.between(framingRange.start, framingRange.end, true)
- .filter(function (date) {
- return date.valueOf() < framingRange.end.valueOf();
- });
- }
- };
- var main = createPlugin({
- recurringTypes: [recurring]
- });
- function parseRRule(input, dateEnv) {
- var allDayGuess = null;
- var rrule;
- if (typeof input === 'string') {
- rrule = rrulestr(input);
- }
- else if (typeof input === 'object' && input) {
- var refined = __assign({}, input);
- if (typeof refined.dtstart === 'string') {
- var dtstartMeta = dateEnv.createMarkerMeta(refined.dtstart);
- if (dtstartMeta) {
- refined.dtstart = dtstartMeta.marker;
- allDayGuess = dtstartMeta.isTimeUnspecified;
- }
- else {
- delete refined.dtstart;
- }
- }
- if (typeof refined.until === 'string') {
- refined.until = dateEnv.createMarker(refined.until);
- }
- if (refined.freq != null) {
- refined.freq = convertConstant(refined.freq);
- }
- if (refined.wkst != null) {
- refined.wkst = convertConstant(refined.wkst);
- }
- else {
- refined.wkst = (dateEnv.weekDow - 1 + 7) % 7;
- }
- if (refined.byweekday != null) {
- refined.byweekday = convertConstants(refined.byweekday);
- }
- rrule = new RRule(refined);
- }
- if (rrule) {
- return { rrule: rrule, allDayGuess: allDayGuess };
- }
- return null;
- }
- function convertConstants(input) {
- if (Array.isArray(input)) {
- return input.map(convertConstant);
- }
- return convertConstant(input);
- }
- function convertConstant(input) {
- if (typeof input === 'string') {
- return RRule[input.toUpperCase()];
- }
- return input;
- }
-
- export default main;
|