"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.filterSelectedRanges = void 0;
const date_1 = require("../../../../../utils/date");
const makeEdgeDates_1 = require("../makeEdgeDates");
const checkDayInRange = (date, dateA, dateB) => (0, date_1.checkIsDateInRange)({
    date,
    dateA,
    dateB,
    deep: date_1.DateCompareDeep.Day,
});
/**
 * Утилита для фильтрации списка, от выбранных диапазонов, которые не имеют отношения к основному диапазону
 */
const filterSelectedRanges = (baseDate, isMondayFirst, ranges) => {
    if (!ranges || ranges.length === 0) {
        return null;
    }
    const { startDate, endDate } = (0, makeEdgeDates_1.makeEdgeDates)(baseDate, isMondayFirst);
    const filtered = ranges.filter((range) => 
    // входит ли начальная дата в выбранный диапазон
    checkDayInRange(startDate, range.dateA, range.dateB) ||
        // входит ли конечная дата в выбранный диапазон
        checkDayInRange(endDate, range.dateA, range.dateB) ||
        // входит ли начало выбранного диапазона в основной диапазон
        checkDayInRange(range.dateA, startDate, endDate) ||
        // входит ли конец выбранного диапазона в основной диапазон
        checkDayInRange(range.dateB, startDate, endDate));
    if (filtered.length === 0) {
        return null;
    }
    return filtered;
};
exports.filterSelectedRanges = filterSelectedRanges;
