"use strict";
Object.defineProperty(exports, "__esModule", {
    value: true
});
Object.defineProperty(exports, "useValue", {
    enumerable: true,
    get: function() {
        return useValue;
    }
});
const _react = require("react");
const _utils = require("../utils");
const getInitialValue = ({ defaultValue, multiselect })=>{
    if (multiselect) {
        return defaultValue || [];
    }
    return defaultValue || '';
};
const useValue = ({ outerValue, outerOnChange, defaultValue, multiselect, nativeMode })=>{
    // Внутреннее состояние для корректной работы в uncontrolled-режиме.
    const [internalValue, setInternalValue] = (0, _react.useState)(getInitialValue({
        defaultValue,
        multiselect
    }));
    // Актуальное состояние компонента.
    const value = (0, _utils.hasOuterValue)(outerValue) ? outerValue : internalValue;
    const handleChange = (newValue, item)=>{
        setInternalValue(newValue);
        if (outerOnChange && !nativeMode) {
            outerOnChange(newValue, item);
        }
    };
    return {
        value,
        handleChange
    };
};
