import { isDate } from '@astral/utils/date/isDate';
import { useEffect, useState } from 'react';
import { areDatesSame, DateCompareDeep, isDateOutOfRange, } from '../../../utils/date';
/**
 * хук предоставляющий дату для отображения в пикере,
 * на основе полученной даты от родительского компонента,
 * защищает пикер от выбора даты вне диапазона minDate и maxDate
 */
export const useSelectedBaseDate = ({ currentValue, minDate, maxDate, }) => {
    const [baseDate, setBaseDate] = useState(currentValue);
    useEffect(() => {
        if (!isDate(currentValue)) {
            setBaseDate(null);
            return;
        }
        if (areDatesSame(baseDate, currentValue)) {
            return;
        }
        if (!currentValue ||
            isDateOutOfRange({
                date: currentValue,
                dateA: minDate,
                dateB: maxDate,
                deep: DateCompareDeep.Day,
            })) {
            setBaseDate(null);
        }
        else {
            setBaseDate(currentValue);
        }
    }, [currentValue]);
    return baseDate;
};
