import { useBaseDateInRange } from '../useBaseDateInRange';
import { useMaskedValue } from '../useMaskedValue';
import { useSelectedBaseDate } from '../useSelectedBaseDate';
/**
 * хук объединяющий повторяющуюся логику в работе DatePicker и RangeDatePicker:
 * опорная дата;
 * значение для маски;
 * обработчик изменения значения маски;
 * выбранную даты;
 * обработчик выбора даты;
 * выбранное значение даты;
 */
export const useDatePickerOptions = ({ onChange, mask, currentValue, minDate, maxDate, monthOffset, onDatePick, }) => {
    const baseDate = useBaseDateInRange({ minDate, maxDate, monthOffset });
    const { maskedValue, onMaskedValueChange, onMaskedValueBlur, onMaskedDateChange, } = useMaskedValue({
        currentValue,
        mask,
        onChangeValue: onChange,
    });
    const selectedBaseDate = useSelectedBaseDate({
        currentValue,
        minDate,
        maxDate,
    });
    const handleDatePick = (date) => {
        onMaskedDateChange(date);
        onDatePick(date);
    };
    const handleMaskedInputChange = (_, maskRef) => {
        onMaskedValueChange(maskRef.value);
    };
    return {
        onAccept: handleMaskedInputChange,
        inputProps: {
            value: maskedValue,
        },
        pickerProps: {
            selectedDate: selectedBaseDate,
            onChange: handleDatePick,
            date: selectedBaseDate || baseDate,
        },
        onMaskedValueBlur,
    };
};
