import { useState } from "react";
import { hasOuterValue } from "../utils";
const getInitialValue = ({ defaultValue, multiselect })=>{
    if (multiselect) {
        return defaultValue || [];
    }
    return defaultValue || '';
};
export const useValue = ({ outerValue, outerOnChange, defaultValue, multiselect, nativeMode })=>{
    // Внутреннее состояние для корректной работы в uncontrolled-режиме.
    const [internalValue, setInternalValue] = useState(getInitialValue({
        defaultValue,
        multiselect
    }));
    // Актуальное состояние компонента.
    const value = hasOuterValue(outerValue) ? outerValue : internalValue;
    const handleChange = (newValue, item)=>{
        setInternalValue(newValue);
        if (outerOnChange && !nativeMode) {
            outerOnChange(newValue, item);
        }
    };
    return {
        value,
        handleChange
    };
};
