UNPKG

react-native-full-calendars

Version:

React Native Full Calendar (RNFC) is an intuitive and powerful calendar component library designed for React Native.

65 lines (63 loc) 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.computedCalendarData = void 0; var _dateFns = require("date-fns"); var _computedArrayMerge = require("./computed-array-merge"); var _date = require("./date"); const computedCalendarData = dataList => { const dataListWithMetadata = dataList.map(data => { return computedRangeDates(data); }); const dataMap = {}; for (const event of dataListWithMetadata) { for (const date of event.metadata.datesInRange) { const eventCopy = { ...event, isStart: false, isEnd: false }; dataMap[date] = dataMap[date] ? [...dataMap[date], eventCopy] : [eventCopy]; } } Object.keys(dataMap).sort((a, b) => (0, _dateFns.differenceInDays)(a, b)).forEach(eventDate => { const prevDate = (0, _dateFns.format)((0, _dateFns.subDays)(eventDate, 1), 'yyyy-MM-dd'); const prevEventList = updateStartEndFlags(dataMap[prevDate] || [], prevDate); const currentEventList = updateStartEndFlags(dataMap[eventDate] || [], eventDate); // data merge dataMap[eventDate] = (0, _computedArrayMerge.alignDataList)(prevEventList, currentEventList); }); return dataMap; }; exports.computedCalendarData = computedCalendarData; const updateStartEndFlags = (dataListWithMetadata, referenceDate) => { return dataListWithMetadata.map(dataWithMetadata => { if (!dataWithMetadata) { return null; } const dateIndex = dataWithMetadata.metadata.datesInRange?.findIndex(date => date === referenceDate); return { ...dataWithMetadata, metadata: { ...dataWithMetadata.metadata, isStart: dateIndex === 0, isEnd: dateIndex + 1 === dataWithMetadata.metadata.datesInRange?.length } }; }); }; const computedRangeDates = data => { const startDate = data.startAt; const endDate = data.endAt; const datesInRange = (0, _date.getIterableDateBetweenDates)(startDate, endDate); return { ...data, metadata: { datesInRange, isEnd: false, isStart: false } }; }; //# sourceMappingURL=computed-calendar-data.js.map