"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.useSelectedBaseDate = void 0;
const isDate_1 = require("@astral/utils/date/isDate");
const react_1 = require("react");
const date_1 = require("../../../utils/date");
/**
 * хук предоставляющий дату для отображения в пикере,
 * на основе полученной даты от родительского компонента,
 * защищает пикер от выбора даты вне диапазона minDate и maxDate
 */
const useSelectedBaseDate = ({ currentValue, minDate, maxDate, }) => {
    const [baseDate, setBaseDate] = (0, react_1.useState)(currentValue);
    (0, react_1.useEffect)(() => {
        if (!(0, isDate_1.isDate)(currentValue)) {
            setBaseDate(null);
            return;
        }
        if ((0, date_1.areDatesSame)(baseDate, currentValue)) {
            return;
        }
        if (!currentValue ||
            (0, date_1.isDateOutOfRange)({
                date: currentValue,
                dateA: minDate,
                dateB: maxDate,
                deep: date_1.DateCompareDeep.Day,
            })) {
            setBaseDate(null);
        }
        else {
            setBaseDate(currentValue);
        }
    }, [currentValue]);
    return baseDate;
};
exports.useSelectedBaseDate = useSelectedBaseDate;
