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

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

import React from "react"; //Классы React
import PropTypes from "prop-types"; //Контроль свойств компонента
import { Box, Typography } from "@mui/material"; //Интерфейсные элементы
import { useComponentModule } from "./components/components_hooks"; //Хуки компонентов

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

//Редактор свойств компонента панели
const ComponentEditor = ({ id, path, settings = {}, valueProviders = {}, onSettingsChange = null } = {}) => {
    //Подгрузка модуля редактора компонента (lazy здесь постоянно обновлялся при смене props, поэтому на хуке, от props независимого)
    const [ComponentEditor, init] = useComponentModule({ path, module: "editor" });

    //Расчёт флага наличия компонента
    const haveComponent = path ? true : false;

    //Формирование представления
    return (
        <Box>
            {haveComponent && init && (
                <ComponentEditor.default id={id} {...settings} valueProviders={valueProviders} onSettingsChange={onSettingsChange} />
            )}
            {!haveComponent && <Typography align={"center"}>Компонент не определён</Typography>}
        </Box>
    );
};

//Контроль свойств компонента - редактор свойств компонента панели
ComponentEditor.propTypes = {
    id: PropTypes.string.isRequired,
    path: PropTypes.string.isRequired,
    settings: PropTypes.object,
    valueProviders: PropTypes.object,
    onSettingsChange: PropTypes.func
};

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

export { ComponentEditor };
