UNPKG

react-day-picker

Version:

Customizable Date Picker for React

79 lines 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isMatch = void 0; exports.dateMatchModifiers = dateMatchModifiers; const DateLib_js_1 = require("../classes/DateLib.js"); const rangeIncludesDate_js_1 = require("./rangeIncludesDate.js"); const typeguards_js_1 = require("./typeguards.js"); /** * Returns whether a day matches against at least one of the given * {@link Matcher}. * * ```tsx * const date = new Date(2022, 5, 19); * const matcher1: DateRange = { * from: new Date(2021, 12, 21), * to: new Date(2021, 12, 30) * }; * const matcher2: DateRange = { * from: new Date(2022, 5, 1), * to: new Date(2022, 5, 23) * }; * dateMatchModifiers(date, [matcher1, matcher2]); // true, since day is in the matcher1 range. * ``` * * @group Utilities */ function dateMatchModifiers(date, matchers, dateLib = DateLib_js_1.defaultDateLib) { const matchersArr = !Array.isArray(matchers) ? [matchers] : matchers; const { isSameDay, differenceInCalendarDays, isAfter } = dateLib; return matchersArr.some((matcher) => { if (typeof matcher === "boolean") { return matcher; } if (dateLib.isDate(matcher)) { return isSameDay(date, matcher); } if ((0, typeguards_js_1.isDatesArray)(matcher, dateLib)) { return matcher.includes(date); } if ((0, typeguards_js_1.isDateRange)(matcher)) { return (0, rangeIncludesDate_js_1.rangeIncludesDate)(matcher, date, false, dateLib); } if ((0, typeguards_js_1.isDayOfWeekType)(matcher)) { if (!Array.isArray(matcher.dayOfWeek)) { return matcher.dayOfWeek === date.getDay(); } return matcher.dayOfWeek.includes(date.getDay()); } if ((0, typeguards_js_1.isDateInterval)(matcher)) { const diffBefore = differenceInCalendarDays(matcher.before, date); const diffAfter = differenceInCalendarDays(matcher.after, date); const isDayBefore = diffBefore > 0; const isDayAfter = diffAfter < 0; const isClosedInterval = isAfter(matcher.before, matcher.after); if (isClosedInterval) { return isDayAfter && isDayBefore; } else { return isDayBefore || isDayAfter; } } if ((0, typeguards_js_1.isDateAfterType)(matcher)) { return differenceInCalendarDays(date, matcher.after) > 0; } if ((0, typeguards_js_1.isDateBeforeType)(matcher)) { return differenceInCalendarDays(matcher.before, date) > 0; } if (typeof matcher === "function") { return matcher(date); } return false; }); } /** * @private * @deprecated Use {@link dateMatchModifiers} instead. */ exports.isMatch = dateMatchModifiers; //# sourceMappingURL=dateMatchModifiers.js.map