"use strict";
Object.defineProperty(exports, "__esModule", {
    value: true
});
Object.defineProperty(exports, "useModal", {
    enumerable: true,
    get: function() {
        return useModal;
    }
});
const _react = require("react");
const _ModalContext = require("../ModalContext");
const _Popup = require("../../Popup");
const ESCAPE_KEYCODE = 27;
const useModal = ({ id, popupInfo, onEscKeyDown, onClose, closeOnEsc = true })=>{
    const popupController = (0, _Popup.usePopupContext)();
    // При ESC закрывает текущее окно, если это возможно
    const onKeyDown = (0, _react.useCallback)((event)=>{
        if (!closeOnEsc) {
            return;
        }
        if (event.keyCode === ESCAPE_KEYCODE && (0, _ModalContext.getIdLastModal)(Array.from(popupController.items.values())) === id) {
            if (onEscKeyDown) {
                onEscKeyDown(event);
                return;
            }
            if (onClose) {
                onClose();
            }
        }
    }, [
        onClose,
        onEscKeyDown,
        popupController.items,
        closeOnEsc
    ]);
    (0, _react.useEffect)(()=>{
        window.addEventListener('keydown', onKeyDown);
        return ()=>{
            window.removeEventListener('keydown', onKeyDown);
        };
    }, [
        onClose,
        onEscKeyDown,
        popupController.items,
        closeOnEsc
    ]);
    const modalInfo = {
        id,
        info: {
            isModal: true
        },
        ...popupInfo
    };
    return {
        modalInfo
    };
};
