/*
    Парус 8 - Панели мониторинга - Редактор панелей
    Компоненты: Хуки компонентов
*/

//---------------------
//Подключение библиотек
//---------------------

import { useState, useEffect } from "react"; //Классы React

//-----------
//Тело модуля
//-----------

//Отложенная загрузка модуля компонента (как альтернативу можно применять React.lazy)
const useComponentModule = ({ path = null, module = "view" } = {}) => {
    //Собственное состояние - импортированный модуль компонента
    const [componentModule, setComponentModule] = useState(null);

    //Собственное состояние - флаг готовности
    const [init, setInit] = useState(false);

    //При подмонтировании к странице
    useEffect(() => {
        //Динамическая загрузка модуля компонента из библиотеки
        const importComponentModule = async () => {
            setInit(false);
            const moduleContent = await import(`./${path}/${module}`);
            setComponentModule(moduleContent);
            setInit(true);
        };
        if (path) importComponentModule();
    }, [path, module]);

    //Возвращаем интерфейс хука
    return [componentModule, init];
};

//----------------
//Интерфейс модуля
//----------------

export { useComponentModule };
