import { useState, } from 'react';
import { deepMultipleFind } from './utils';
export const useLogic = ({ value, options, onBlur }) => {
    const [isOpen, setOpen] = useState(false);
    const handleInputBlur = (event) => {
        // Если произошла потеря фокуса, но открылась окно поиска элемента, то не вызываем onBlur, так как произойдет преждевременная валидация
        if (!isOpen) {
            onBlur?.(event);
        }
    };
    const handleOpen = () => {
        setOpen(true);
    };
    const handleKeyDow = (event) => {
        if (event.code === 'Enter') {
            setOpen(true);
        }
    };
    const handleClose = (event) => {
        onBlur?.(event);
        setOpen(false);
    };
    const valueToRender = value
        ? deepMultipleFind(options, ({ id }) => value.includes(id))
        : undefined;
    return {
        inputProps: {
            valueToRender,
            onBlur: handleInputBlur,
            onClick: handleOpen,
            onKeyDown: handleKeyDow,
        },
        optionsModalProps: {
            isOpen,
            onClose: handleClose,
        },
    };
};
