import { getValueByKeys } from "../../utils/index.js";
import { isUndefined } from "@pisell/utils";
import dayjs from "dayjs";
//#region src/components/table/Table/fields/rangePicker/filterUtil/index.ts
/**
* 判断给定的日期是否在指定的日期范围内
* @param date 给定的日期
* @param range 指定的日期范围，格式为 [开始日期, 结束日期]
* @returns 如果给定的日期在指定的日期范围内，则返回 true，否则返回 false
*/
function isDateInRange(date, [startDate, endDate]) {
	return date.isSame(startDate) || date.isSame(endDate) || date.isAfter(startDate) && date.isBefore(endDate);
}
/**
* 判断dataSource日期是否在filters范围内
* @param value 日期数组
* @param key 对应日期在对象中的键
* @param item 包含日期的对象
* @returns 如果日期在给定范围内返回true，否则返回false
*/
function filterUtil_default({ value, key, item }) {
	if (!value) return true;
	if ((value === null || value === void 0 ? void 0 : value.length) !== 2) return true;
	const valueDayjsObj = value.map((item) => dayjs(item || ""));
	if (valueDayjsObj.some((item) => !item.isValid())) return true;
	const dataValue = getValueByKeys(item, key);
	if (isUndefined(dataValue)) return false;
	const dataDayjsObj = dayjs(dataValue);
	if (!dataDayjsObj.isValid()) return false;
	return isDateInRange(dataDayjsObj, valueDayjsObj);
}
//#endregion
export { filterUtil_default as default };
