From a639c6371c17e525162db2e77f715adcfe3e51cb Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Tue, 20 May 2025 13:57:28 +0300 Subject: [PATCH] =?UTF-8?q?WEBAPP:=20=D0=A1=D0=B2=D0=B5=D0=B6=D0=B0=D1=8F?= =?UTF-8?q?=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/p8-panels.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dist/p8-panels.js b/dist/p8-panels.js index 17f5d75..cc4bc8b 100644 --- a/dist/p8-panels.js +++ b/dist/p8-panels.js @@ -49,7 +49,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ App: () => (/* binding */ App)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./context/navigation */ \"./app/context/navigation.js\");\n/* harmony import */ var _components_p8p_app_error_page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/p8p_app_error_page */ \"./app/components/p8p_app_error_page.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/p8p_panels_menu */ \"./app/components/p8p_panels_menu.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../app.text */ \"./app.text.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./config_wrapper */ \"./app/config_wrapper.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга\r\n Приложение\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Роутер\n //Контекст приложения\n //Контекст навигации\n //Страница с ошибкой\n //Рабочее пространство панели\n //Меню панелей\n //Текстовые ресурсы и константы\n //Подключение компонентов к настройкам приложения\n\n//--------------------------\n//Вспомогательные компоненты\n//--------------------------\n\n//Обработка ошибок роутинга\nconst RouterError = ({\n homePath\n}) => {\n //Подключение к контексту навигации\n const {\n navigateTo\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_2__.NavigationCtx);\n\n //Извлечем ошибку роутинга\n const routeError = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useRouteError)();\n\n //Отработка нажатия на кнопку навигации\n const handleNavigate = () => navigateTo({\n path: `${homePath.startsWith(\"/\") ? \"\" : \"/\"}${homePath}`\n });\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_app_error_page__WEBPACK_IMPORTED_MODULE_3__.P8PAppErrorPage, {\n errorMessage: _app_text__WEBPACK_IMPORTED_MODULE_6__.ERRORS_HTTP[routeError.status] ? _app_text__WEBPACK_IMPORTED_MODULE_6__.ERRORS_HTTP[routeError.status] : _app_text__WEBPACK_IMPORTED_MODULE_6__.ERRORS.DEFAULT,\n onNavigate: handleNavigate,\n navigateCaption: _app_text__WEBPACK_IMPORTED_MODULE_6__.BUTTONS.NAVIGATE_HOME\n });\n};\n\n//Контроль свойств - обработка ошибок роутинга\nRouterError.propTypes = {\n homePath: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string).isRequired\n};\n\n//Главное меню приложения\nconst MainMenu = ({\n panels = []\n} = {}) => {\n //Подключение к контексту навигации\n const {\n navigatePanel,\n isNavigationSearch,\n getNavigationSearch\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_2__.NavigationCtx);\n\n //Подключение к контексту приложения\n const {\n configUrlBase,\n pOnlineShowTab\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Получим параметры запроса из адресной строки\n const qS = isNavigationSearch() ? getNavigationSearch() : null;\n\n //Отработка действия навигации элемента меню\n const handleItemNavigate = (panel, newTab) => newTab ? pOnlineShowTab({\n id: panel.name,\n url: `${configUrlBase}${panel.url}`,\n caption: panel.caption\n }) : navigatePanel(panel);\n\n //Генерация содержимого\n return qS?.mode === \"DESKTOP\" ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__.P8PPanelsMenuDesktop, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_7__.P8P_PANELS_MENU_GRID_CONFIG_PROPS, {\n group: qS?.group,\n panels: panels,\n onItemNavigate: panel => handleItemNavigate(panel, true)\n })) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__.P8PPanelsMenuGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_7__.P8P_PANELS_MENU_GRID_CONFIG_PROPS, {\n panels: panels,\n onItemNavigate: panel => handleItemNavigate(panel, false)\n }));\n};\n\n//Контроль свойств - главное меню приложения\nMainMenu.propTypes = {\n panels: prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf(_components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__.P8P_PANELS_MENU_PANEL_SHAPE).isRequired\n};\n\n//Рабочее пространство панели\nconst Workspace = ({\n panels = [],\n selectedPanel,\n children\n} = {}) => {\n //Подключение к контексту навигации\n const {\n navigateRoot,\n navigatePanel\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_2__.NavigationCtx);\n\n //Отработка действия навигации домой\n const handleHomeNavigate = () => navigateRoot();\n\n //Отработка действия навигации элемента меню\n const handleItemNavigate = panel => navigatePanel(panel);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_4__.P8PAppWorkspace, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_7__.P8P_APP_WORKSPACE_CONFIG_PROPS, {\n panels: panels,\n selectedPanel: selectedPanel,\n onHomeNavigate: handleHomeNavigate,\n onItemNavigate: handleItemNavigate\n }), children);\n};\n\n//Контроль свойств - главное меню приложения\nWorkspace.propTypes = {\n panels: prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf(_components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__.P8P_PANELS_MENU_PANEL_SHAPE).isRequired,\n selectedPanel: _components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__.P8P_PANELS_MENU_PANEL_SHAPE,\n children: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().element)\n};\n\n//Обёртывание элемента в контекст навигации\nconst wrapNavigationContext = children => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_context_navigation__WEBPACK_IMPORTED_MODULE_2__.NavigationContext, null, children);\n\n//-----------\n//Тело модуля\n//-----------\n\n//Приложение\nconst App = () => {\n //Собственное состояние\n const [routes, setRoutes] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Подключение к контексту приложения\n const {\n appState\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Инициализация роутера\n const content = routes.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_10__.RouterProvider, {\n router: (0,react_router_dom__WEBPACK_IMPORTED_MODULE_10__.createHashRouter)(routes)\n }) : null;\n\n //При изменении состояния загрузки панелей\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (appState.panelsLoaded) {\n //Сборка \"веток\" для панелей\n let routes = [{\n path: (0,_context_navigation__WEBPACK_IMPORTED_MODULE_2__.getRootLocation)(),\n element: wrapNavigationContext( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(MainMenu, {\n panels: appState.panels\n })),\n errorElement: wrapNavigationContext( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RouterError, {\n homePath: (0,_context_navigation__WEBPACK_IMPORTED_MODULE_2__.getRootLocation)()\n }))\n }];\n for (const panel of appState.panels) {\n // eslint-disable-next-line no-undef\n const p = __webpack_require__(\"./app/panels sync recursive ^\\\\.\\\\/.*$\")(`./${panel.path}`);\n routes.push({\n path: `${panel.url}/*`,\n element: wrapNavigationContext( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Workspace, {\n panels: appState.panels,\n selectedPanel: panel\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(p.RootClass, null))),\n errorElement: wrapNavigationContext( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RouterError, {\n homePath: panel.url\n }))\n });\n }\n setRoutes(routes);\n }\n }, [appState.panels, appState.panelsLoaded]);\n\n //Генерация содержимого\n return content;\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/app.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ App: () => (/* binding */ App)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./context/navigation */ \"./app/context/navigation.js\");\n/* harmony import */ var _components_p8p_app_error_page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/p8p_app_error_page */ \"./app/components/p8p_app_error_page.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/p8p_panels_menu */ \"./app/components/p8p_panels_menu.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../app.text */ \"./app.text.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./config_wrapper */ \"./app/config_wrapper.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга\r\n Приложение\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Роутер\n //Контекст приложения\n //Контекст навигации\n //Страница с ошибкой\n //Рабочее пространство панели\n //Меню панелей\n //Текстовые ресурсы и константы\n //Подключение компонентов к настройкам приложения\n\n//--------------------------\n//Вспомогательные компоненты\n//--------------------------\n\n//Обработка ошибок роутинга\nconst RouterError = ({\n homePath\n}) => {\n //Подключение к контексту навигации\n const {\n navigateTo\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_2__.NavigationCtx);\n\n //Извлечем ошибку роутинга\n const routeError = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_8__.useRouteError)();\n\n //Отработка нажатия на кнопку навигации\n const handleNavigate = () => navigateTo({\n path: `${homePath.startsWith(\"/\") ? \"\" : \"/\"}${homePath}`\n });\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_app_error_page__WEBPACK_IMPORTED_MODULE_3__.P8PAppErrorPage, {\n errorMessage: _app_text__WEBPACK_IMPORTED_MODULE_6__.ERRORS_HTTP[routeError.status] ? _app_text__WEBPACK_IMPORTED_MODULE_6__.ERRORS_HTTP[routeError.status] : _app_text__WEBPACK_IMPORTED_MODULE_6__.ERRORS.DEFAULT,\n onNavigate: handleNavigate,\n navigateCaption: _app_text__WEBPACK_IMPORTED_MODULE_6__.BUTTONS.NAVIGATE_HOME\n });\n};\n\n//Контроль свойств - обработка ошибок роутинга\nRouterError.propTypes = {\n homePath: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string).isRequired\n};\n\n//Главное меню приложения\nconst MainMenu = ({\n panels = []\n} = {}) => {\n //Подключение к контексту навигации\n const {\n navigatePanel,\n isNavigationSearch,\n getNavigationSearch\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_2__.NavigationCtx);\n\n //Подключение к контексту приложения\n const {\n configUrlBase,\n pOnlineShowTab\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Получим параметры запроса из адресной строки\n const qS = isNavigationSearch() ? getNavigationSearch() : null;\n\n //Отработка действия навигации элемента меню\n const handleItemNavigate = (panel, newTab) => newTab ? pOnlineShowTab({\n id: panel.name,\n url: `${configUrlBase}${panel.url}`,\n caption: panel.caption\n }) : navigatePanel(panel);\n\n //Генерация содержимого\n return qS?.mode === \"DESKTOP\" ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__.P8PPanelsMenuDesktop, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_7__.P8P_PANELS_MENU_GRID_CONFIG_PROPS, {\n group: qS?.group,\n panels: panels,\n onItemNavigate: panel => handleItemNavigate(panel, true)\n })) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__.P8PPanelsMenuGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_7__.P8P_PANELS_MENU_GRID_CONFIG_PROPS, {\n panels: panels,\n onItemNavigate: panel => handleItemNavigate(panel, false)\n }));\n};\n\n//Контроль свойств - главное меню приложения\nMainMenu.propTypes = {\n panels: prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf(_components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__.P8P_PANELS_MENU_PANEL_SHAPE).isRequired\n};\n\n//Рабочее пространство панели\nconst Workspace = ({\n panels = [],\n selectedPanel,\n children\n} = {}) => {\n //Подключение к контексту навигации\n const {\n navigateRoot,\n navigatePanel\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_2__.NavigationCtx);\n\n //Подключение к контексту приложения\n const {\n appState\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Отработка действия навигации домой\n const handleHomeNavigate = () => navigateRoot();\n\n //Отработка действия навигации элемента меню\n const handleItemNavigate = panel => navigatePanel(panel);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_4__.P8PAppWorkspace, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_7__.P8P_APP_WORKSPACE_CONFIG_PROPS, {\n panels: panels,\n selectedPanel: selectedPanel,\n caption: appState.appBarTitle,\n onHomeNavigate: handleHomeNavigate,\n onItemNavigate: handleItemNavigate\n }), children);\n};\n\n//Контроль свойств - главное меню приложения\nWorkspace.propTypes = {\n panels: prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf(_components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__.P8P_PANELS_MENU_PANEL_SHAPE).isRequired,\n selectedPanel: _components_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_5__.P8P_PANELS_MENU_PANEL_SHAPE,\n children: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().element)\n};\n\n//Обёртывание элемента в контекст навигации\nconst wrapNavigationContext = children => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_context_navigation__WEBPACK_IMPORTED_MODULE_2__.NavigationContext, null, children);\n\n//-----------\n//Тело модуля\n//-----------\n\n//Приложение\nconst App = () => {\n //Собственное состояние\n const [routes, setRoutes] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Подключение к контексту приложения\n const {\n appState\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Инициализация роутера\n const content = routes.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_10__.RouterProvider, {\n router: (0,react_router_dom__WEBPACK_IMPORTED_MODULE_10__.createHashRouter)(routes)\n }) : null;\n\n //При изменении состояния загрузки панелей\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (appState.panelsLoaded) {\n //Сборка \"веток\" для панелей\n let routes = [{\n path: (0,_context_navigation__WEBPACK_IMPORTED_MODULE_2__.getRootLocation)(),\n element: wrapNavigationContext( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(MainMenu, {\n panels: appState.panels\n })),\n errorElement: wrapNavigationContext( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RouterError, {\n homePath: (0,_context_navigation__WEBPACK_IMPORTED_MODULE_2__.getRootLocation)()\n }))\n }];\n for (const panel of appState.panels) {\n // eslint-disable-next-line no-undef\n const p = __webpack_require__(\"./app/panels sync recursive ^\\\\.\\\\/.*$\")(`./${panel.path}`);\n routes.push({\n path: `${panel.url}/*`,\n element: wrapNavigationContext( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Workspace, {\n panels: appState.panels,\n selectedPanel: panel\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(p.RootClass, null))),\n errorElement: wrapNavigationContext( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RouterError, {\n homePath: panel.url\n }))\n });\n }\n setRoutes(routes);\n }\n }, [appState.panels, appState.panelsLoaded]);\n\n //Генерация содержимого\n return content;\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/app.js?"); /***/ }), @@ -93,7 +93,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ APP_BAR_HEIGHT: () => (/* binding */ APP_BAR_HEIGHT),\n/* harmony export */ P8PAppWorkspace: () => (/* binding */ P8PAppWorkspace)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CssBaseline/CssBaseline.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/AppBar/AppBar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Toolbar/Toolbar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemIcon/ListItemIcon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./p8p_panels_menu */ \"./app/components/p8p_panels_menu.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../app.styles */ \"./app.styles.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Компонент: Рабочее пространство\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Меню\n //Типовые стили\n\n//---------\n//Константы\n//---------\n\n//Высота главного меню\nconst APP_BAR_HEIGHT = \"64px\";\n\n//Стили\nconst STYLES = {\n DRAWER: {\n [`& .MuiDrawer-paper`]: {\n ..._app_styles__WEBPACK_IMPORTED_MODULE_2__.APP_STYLES.SCROLL\n }\n },\n ROOT_BOX: {\n display: \"flex\"\n },\n APP_BAR: {\n position: \"fixed\"\n },\n APP_BAR_BUTTON: {\n mr: 2\n },\n MAIN: {\n flexGrow: 1\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Рабочее пространство\nconst P8PAppWorkspace = ({\n children,\n panels = [],\n selectedPanel,\n closeCaption,\n homeCaption,\n onHomeNavigate,\n onItemNavigate\n} = {}) => {\n //Собственное состояния\n const [open, setOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Отработка открытия бокового меню\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n //Отработка закрытия бового меню\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n //Отработка нажатия на домашнюю страницу\n const handleHomeClick = () => onHomeNavigate ? onHomeNavigate() : null;\n\n //Отработка нажатия на элемент бокового меню\n const handleItemNavigate = panel => {\n handleDrawerClose();\n onItemNavigate ? onItemNavigate(panel) : null;\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n sx: STYLES.ROOT_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.APP_BAR\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n color: \"inherit\",\n \"aria-label\": \"open drawer\",\n onClick: open ? handleDrawerClose : handleDrawerOpen,\n edge: \"start\",\n sx: STYLES.APP_BAR_BUTTON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, open ? \"chevron_left\" : \"menu\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n variant: \"h6\",\n noWrap: true,\n component: \"div\"\n }, selectedPanel?.caption))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n anchor: \"left\",\n open: open,\n onClose: handleDrawerClose,\n sx: STYLES.DRAWER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: handleDrawerClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"close\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n primary: closeCaption\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: handleHomeClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"home\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n primary: homeCaption\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8PPanelsMenuDrawer, {\n panels: panels,\n selectedPanel: selectedPanel,\n onItemNavigate: handleItemNavigate\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"main\", {\n style: STYLES.MAIN\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null), children));\n};\n\n//Контроль свойств - Рабочее пространство\nP8PAppWorkspace.propTypes = {\n children: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().element),\n panels: prop_types__WEBPACK_IMPORTED_MODULE_15___default().arrayOf(_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8P_PANELS_MENU_PANEL_SHAPE).isRequired,\n selectedPanel: _p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8P_PANELS_MENU_PANEL_SHAPE,\n closeCaption: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string).isRequired,\n homeCaption: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string).isRequired,\n onHomeNavigate: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n onItemNavigate: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_app_workspace.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ APP_BAR_HEIGHT: () => (/* binding */ APP_BAR_HEIGHT),\n/* harmony export */ P8PAppWorkspace: () => (/* binding */ P8PAppWorkspace)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CssBaseline/CssBaseline.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/AppBar/AppBar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Toolbar/Toolbar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemIcon/ListItemIcon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./p8p_panels_menu */ \"./app/components/p8p_panels_menu.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../app.styles */ \"./app.styles.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Компонент: Рабочее пространство\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Меню\n //Типовые стили\n\n//---------\n//Константы\n//---------\n\n//Высота главного меню\nconst APP_BAR_HEIGHT = \"64px\";\n\n//Стили\nconst STYLES = {\n DRAWER: {\n [`& .MuiDrawer-paper`]: {\n ..._app_styles__WEBPACK_IMPORTED_MODULE_2__.APP_STYLES.SCROLL\n }\n },\n ROOT_BOX: {\n display: \"flex\"\n },\n APP_BAR: {\n position: \"fixed\"\n },\n APP_BAR_BUTTON: {\n mr: 2\n },\n MAIN: {\n flexGrow: 1\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Рабочее пространство\nconst P8PAppWorkspace = ({\n children,\n panels = [],\n selectedPanel,\n caption,\n closeCaption,\n homeCaption,\n onHomeNavigate,\n onItemNavigate\n} = {}) => {\n //Собственное состояния\n const [open, setOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Отработка открытия бокового меню\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n //Отработка закрытия бового меню\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n //Отработка нажатия на домашнюю страницу\n const handleHomeClick = () => onHomeNavigate ? onHomeNavigate() : null;\n\n //Отработка нажатия на элемент бокового меню\n const handleItemNavigate = panel => {\n handleDrawerClose();\n onItemNavigate ? onItemNavigate(panel) : null;\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n sx: STYLES.ROOT_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.APP_BAR\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n color: \"inherit\",\n \"aria-label\": \"open drawer\",\n onClick: open ? handleDrawerClose : handleDrawerOpen,\n edge: \"start\",\n sx: STYLES.APP_BAR_BUTTON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, open ? \"chevron_left\" : \"menu\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n variant: \"h6\",\n noWrap: true,\n component: \"div\"\n }, caption || selectedPanel?.caption))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n anchor: \"left\",\n open: open,\n onClose: handleDrawerClose,\n sx: STYLES.DRAWER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: handleDrawerClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"close\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n primary: closeCaption\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: handleHomeClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"home\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n primary: homeCaption\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8PPanelsMenuDrawer, {\n panels: panels,\n selectedPanel: selectedPanel,\n onItemNavigate: handleItemNavigate\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"main\", {\n style: STYLES.MAIN\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null), children));\n};\n\n//Контроль свойств - Рабочее пространство\nP8PAppWorkspace.propTypes = {\n children: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().element),\n panels: prop_types__WEBPACK_IMPORTED_MODULE_15___default().arrayOf(_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8P_PANELS_MENU_PANEL_SHAPE).isRequired,\n selectedPanel: _p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8P_PANELS_MENU_PANEL_SHAPE,\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string),\n closeCaption: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string).isRequired,\n homeCaption: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string).isRequired,\n onHomeNavigate: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n onItemNavigate: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_app_workspace.js?"); /***/ }), @@ -214,7 +214,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ApplicationContext: () => (/* binding */ ApplicationContext),\n/* harmony export */ \"ApplicationСtx\": () => (/* binding */ ApplicationСtx)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _application_reducer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./application_reducer */ \"./app/context/application_reducer.js\");\n/* harmony import */ var _messaging__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./backend */ \"./app/context/backend.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Приложение\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //ReactJS\n //Контроль свойств компонента\n //Редьюсер состояния\n //Контекст отображения сообщений\n //Контекст взаимодействия с сервером\n\n//---------\n//Константы\n//---------\n\n//Клиентский API \"ПАРУС 8 Онлайн\"\nconst P8O_API = window.top?.parus?.clientApi;\n\n//Структура объекта с описанием ошибок\nconst APPLICATION_CONTEXT_ERRORS_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({\n P8O_API_UNAVAILABLE: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n P8O_API_UNSUPPORTED: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired\n});\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Контекст приложения\nconst ApplicationСtx = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)();\n\n//Провайдер контекста приложения\nconst ApplicationContext = ({\n errors,\n displaySizeGetter,\n guidGenerator,\n config,\n children\n}) => {\n //Подключим редьюсер состояния\n const [state, dispatch] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(_application_reducer__WEBPACK_IMPORTED_MODULE_1__.applicationReducer, (0,_application_reducer__WEBPACK_IMPORTED_MODULE_1__.INITIAL_STATE)(displaySizeGetter));\n\n //Подключение к контексту взаимодействия с сервером\n const {\n getConfig,\n getRespPayload\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_backend__WEBPACK_IMPORTED_MODULE_3__[\"BackEndСtx\"]);\n\n //Подключение к контексту отображения сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_messaging__WEBPACK_IMPORTED_MODULE_2__[\"MessagingСtx\"]);\n\n //Установка флага инициализированности приложения\n const setInitialized = () => dispatch({\n type: _application_reducer__WEBPACK_IMPORTED_MODULE_1__.APP_AT.SET_INITIALIZED\n });\n\n //Установка текущего размера экрана\n const setDisplaySize = displaySize => dispatch({\n type: _application_reducer__WEBPACK_IMPORTED_MODULE_1__.APP_AT.SET_DISPLAY_SIZE,\n payload: displaySize\n });\n\n //Установка базового URL приложения\n const setUrlBase = urlBase => dispatch({\n type: _application_reducer__WEBPACK_IMPORTED_MODULE_1__.APP_AT.SET_URL_BASE,\n payload: urlBase\n });\n\n //Установка списка панелей\n const setPanels = panels => dispatch({\n type: _application_reducer__WEBPACK_IMPORTED_MODULE_1__.APP_AT.LOAD_PANELS,\n payload: panels\n });\n\n //Поиск раздела по имени\n const findPanelByName = name => state.panels.find(panel => panel.name == name);\n\n //Отображение закладки \"ПАРУС 8 Онлайн\" с указанным URL\n const pOnlineShowTab = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n id,\n url,\n caption,\n onClose\n }) => {\n if (P8O_API) {\n const _id = id || guidGenerator();\n P8O_API.ui.openTab({\n id: _id,\n url,\n caption,\n onClose: () => onClose ? onClose(_id) : null\n });\n return _id;\n } else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, guidGenerator, errors.P8O_API_UNAVAILABLE]);\n\n //Отображение раздела \"ПАРУС 8 Онлайн\"\n const pOnlineShowUnit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n unitCode,\n showMethod = \"main\",\n inputParameters,\n modal = true\n }) => {\n if (P8O_API) modal ? P8O_API.fn.openDocumentModal({\n unitcode: unitCode,\n method: showMethod,\n inputParameters\n }) : P8O_API.fn.openDocument ? P8O_API.fn.openDocument({\n unitcode: unitCode,\n method: showMethod,\n inputParameters\n }) : showMsgErr(errors.P8O_API_UNSUPPORTED);else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, errors.P8O_API_UNAVAILABLE, errors.P8O_API_UNSUPPORTED]);\n\n //Отображение документа \"ПАРУС 8 Онлайн\"\n const pOnlineShowDocument = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n unitCode,\n document,\n showMethod = \"main\",\n inRnParameter = \"in_RN\",\n modal = true\n }) => {\n if (P8O_API) modal ? P8O_API.fn.openDocumentModal({\n unitcode: unitCode,\n method: showMethod,\n inputParameters: [{\n name: inRnParameter,\n value: document\n }]\n }) : P8O_API.fn.openDocument ? P8O_API.fn.openDocument({\n unitcode: unitCode,\n method: showMethod,\n inputParameters: [{\n name: inRnParameter,\n value: document\n }]\n }) : showMsgErr(errors.P8O_API_UNSUPPORTED);else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, errors.P8O_API_UNAVAILABLE, errors.P8O_API_UNSUPPORTED]);\n\n //Отображение словаря \"ПАРУС 8 Онлайн\"\n const pOnlineShowDictionary = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n unitCode,\n showMethod = \"main\",\n inputParameters,\n callBack\n }) => {\n if (P8O_API) P8O_API.fn.openDictionary({\n unitcode: unitCode,\n method: showMethod,\n inputParameters\n }, res => callBack ? callBack(res) : null);else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, errors.P8O_API_UNAVAILABLE]);\n\n //Исполнение пользовательской процедуры \"ПАРУС 8 Онлайн\"\n const pOnlineUserProcedure = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n code,\n inputParameters,\n callBack\n }) => {\n if (P8O_API) P8O_API.fn.performUserProcedureSync({\n code,\n inputParameters\n }, res => callBack ? callBack(res) : null);else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, errors.P8O_API_UNAVAILABLE]);\n\n //Исполнение пользовательского отчёта \"ПАРУС 8 Онлайн\"\n const pOnlineUserReport = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n code,\n inputParameters\n }) => {\n if (P8O_API) P8O_API.fn.performUserReport({\n code,\n inputParameters\n });else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, errors.P8O_API_UNAVAILABLE]);\n\n //Получение количества записей на странице\n const configSystemPageSize = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => config.SYSTEM.PAGE_SIZE, [config.SYSTEM.PAGE_SIZE]);\n\n //Получение базового URL приложения\n const configUrlBase = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => state.urlBase, [state.urlBase]);\n\n //Инициализация приложения\n const initApp = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n //Читаем конфигурацию с сервера\n let res = await getConfig();\n //Сохраняем базовый URL приложения\n setUrlBase(getRespPayload(res)?.Panels?.urlBase);\n //Сохраняем список панелей\n setPanels(getRespPayload(res)?.Panels?.Panel);\n //Установим флаг завершения инициализации\n setInitialized();\n }, [getConfig, getRespPayload]);\n\n //Обработка подключения контекста к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!state.initialized) {\n //Слушаем изменение размеров окна\n window.addEventListener(\"resize\", () => {\n if (displaySizeGetter) setDisplaySize(displaySizeGetter());\n });\n //Инициализируем приложение\n initApp();\n }\n }, [state.initialized, initApp, displaySizeGetter]);\n\n //Вернём компонент провайдера\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ApplicationСtx.Provider, {\n value: {\n findPanelByName,\n pOnlineShowTab,\n pOnlineShowUnit,\n pOnlineShowDocument,\n pOnlineShowDictionary,\n pOnlineUserProcedure,\n pOnlineUserReport,\n configSystemPageSize,\n configUrlBase,\n appState: state\n }\n }, children);\n};\n\n//Контроль свойств - Провайдер контекста приложения\nApplicationContext.propTypes = {\n errors: APPLICATION_CONTEXT_ERRORS_SHAPE.isRequired,\n displaySizeGetter: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),\n guidGenerator: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func).isRequired,\n config: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().object).isRequired,\n children: prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)), (prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)])\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/application.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ApplicationContext: () => (/* binding */ ApplicationContext),\n/* harmony export */ \"ApplicationСtx\": () => (/* binding */ ApplicationСtx)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _application_reducer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./application_reducer */ \"./app/context/application_reducer.js\");\n/* harmony import */ var _messaging__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./backend */ \"./app/context/backend.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Приложение\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //ReactJS\n //Контроль свойств компонента\n //Редьюсер состояния\n //Контекст отображения сообщений\n //Контекст взаимодействия с сервером\n\n//---------\n//Константы\n//---------\n\n//Клиентский API \"ПАРУС 8 Онлайн\"\nconst P8O_API = window.top?.parus?.clientApi;\n\n//Структура объекта с описанием ошибок\nconst APPLICATION_CONTEXT_ERRORS_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({\n P8O_API_UNAVAILABLE: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n P8O_API_UNSUPPORTED: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired\n});\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Контекст приложения\nconst ApplicationСtx = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)();\n\n//Провайдер контекста приложения\nconst ApplicationContext = ({\n errors,\n displaySizeGetter,\n guidGenerator,\n config,\n children\n}) => {\n //Подключим редьюсер состояния\n const [state, dispatch] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(_application_reducer__WEBPACK_IMPORTED_MODULE_1__.applicationReducer, (0,_application_reducer__WEBPACK_IMPORTED_MODULE_1__.INITIAL_STATE)(displaySizeGetter));\n\n //Подключение к контексту взаимодействия с сервером\n const {\n getConfig,\n getRespPayload\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_backend__WEBPACK_IMPORTED_MODULE_3__[\"BackEndСtx\"]);\n\n //Подключение к контексту отображения сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_messaging__WEBPACK_IMPORTED_MODULE_2__[\"MessagingСtx\"]);\n\n //Установка флага инициализированности приложения\n const setInitialized = () => dispatch({\n type: _application_reducer__WEBPACK_IMPORTED_MODULE_1__.APP_AT.SET_INITIALIZED\n });\n\n //Установка текущего размера экрана\n const setDisplaySize = displaySize => dispatch({\n type: _application_reducer__WEBPACK_IMPORTED_MODULE_1__.APP_AT.SET_DISPLAY_SIZE,\n payload: displaySize\n });\n\n //Установка базового URL приложения\n const setUrlBase = urlBase => dispatch({\n type: _application_reducer__WEBPACK_IMPORTED_MODULE_1__.APP_AT.SET_URL_BASE,\n payload: urlBase\n });\n\n //Установка списка панелей\n const setPanels = panels => dispatch({\n type: _application_reducer__WEBPACK_IMPORTED_MODULE_1__.APP_AT.LOAD_PANELS,\n payload: panels\n });\n\n //Установка заголовка в шапке приложения\n const setAppBarTitle = appBarTitle => dispatch({\n type: _application_reducer__WEBPACK_IMPORTED_MODULE_1__.APP_AT.SET_APP_BAR_TITLE,\n payload: appBarTitle\n });\n\n //Поиск раздела по имени\n const findPanelByName = name => state.panels.find(panel => panel.name == name);\n\n //Отображение закладки \"ПАРУС 8 Онлайн\" с указанным URL\n const pOnlineShowTab = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n id,\n url,\n caption,\n onClose\n }) => {\n if (P8O_API) {\n const _id = id || guidGenerator();\n P8O_API.ui.openTab({\n id: _id,\n url,\n caption,\n onClose: () => onClose ? onClose(_id) : null\n });\n return _id;\n } else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, guidGenerator, errors.P8O_API_UNAVAILABLE]);\n\n //Отображение раздела \"ПАРУС 8 Онлайн\"\n const pOnlineShowUnit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n unitCode,\n showMethod = \"main\",\n inputParameters,\n modal = true\n }) => {\n if (P8O_API) modal ? P8O_API.fn.openDocumentModal({\n unitcode: unitCode,\n method: showMethod,\n inputParameters\n }) : P8O_API.fn.openDocument ? P8O_API.fn.openDocument({\n unitcode: unitCode,\n method: showMethod,\n inputParameters\n }) : showMsgErr(errors.P8O_API_UNSUPPORTED);else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, errors.P8O_API_UNAVAILABLE, errors.P8O_API_UNSUPPORTED]);\n\n //Отображение документа \"ПАРУС 8 Онлайн\"\n const pOnlineShowDocument = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n unitCode,\n document,\n showMethod = \"main\",\n inRnParameter = \"in_RN\",\n modal = true\n }) => {\n if (P8O_API) modal ? P8O_API.fn.openDocumentModal({\n unitcode: unitCode,\n method: showMethod,\n inputParameters: [{\n name: inRnParameter,\n value: document\n }]\n }) : P8O_API.fn.openDocument ? P8O_API.fn.openDocument({\n unitcode: unitCode,\n method: showMethod,\n inputParameters: [{\n name: inRnParameter,\n value: document\n }]\n }) : showMsgErr(errors.P8O_API_UNSUPPORTED);else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, errors.P8O_API_UNAVAILABLE, errors.P8O_API_UNSUPPORTED]);\n\n //Отображение словаря \"ПАРУС 8 Онлайн\"\n const pOnlineShowDictionary = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n unitCode,\n showMethod = \"main\",\n inputParameters,\n callBack\n }) => {\n if (P8O_API) P8O_API.fn.openDictionary({\n unitcode: unitCode,\n method: showMethod,\n inputParameters\n }, res => callBack ? callBack(res) : null);else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, errors.P8O_API_UNAVAILABLE]);\n\n //Исполнение пользовательской процедуры \"ПАРУС 8 Онлайн\"\n const pOnlineUserProcedure = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n code,\n inputParameters,\n callBack\n }) => {\n if (P8O_API) P8O_API.fn.performUserProcedureSync({\n code,\n inputParameters\n }, res => callBack ? callBack(res) : null);else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, errors.P8O_API_UNAVAILABLE]);\n\n //Исполнение пользовательского отчёта \"ПАРУС 8 Онлайн\"\n const pOnlineUserReport = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n code,\n inputParameters\n }) => {\n if (P8O_API) P8O_API.fn.performUserReport({\n code,\n inputParameters\n });else showMsgErr(errors.P8O_API_UNAVAILABLE);\n }, [showMsgErr, errors.P8O_API_UNAVAILABLE]);\n\n //Получение количества записей на странице\n const configSystemPageSize = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => config.SYSTEM.PAGE_SIZE, [config.SYSTEM.PAGE_SIZE]);\n\n //Получение базового URL приложения\n const configUrlBase = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => state.urlBase, [state.urlBase]);\n\n //Инициализация приложения\n const initApp = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n //Читаем конфигурацию с сервера\n let res = await getConfig();\n //Сохраняем базовый URL приложения\n setUrlBase(getRespPayload(res)?.Panels?.urlBase);\n //Сохраняем список панелей\n setPanels(getRespPayload(res)?.Panels?.Panel);\n //Установим флаг завершения инициализации\n setInitialized();\n }, [getConfig, getRespPayload]);\n\n //Обработка подключения контекста к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!state.initialized) {\n //Слушаем изменение размеров окна\n window.addEventListener(\"resize\", () => {\n if (displaySizeGetter) setDisplaySize(displaySizeGetter());\n });\n //Инициализируем приложение\n initApp();\n }\n }, [state.initialized, initApp, displaySizeGetter]);\n\n //Вернём компонент провайдера\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ApplicationСtx.Provider, {\n value: {\n setAppBarTitle,\n findPanelByName,\n pOnlineShowTab,\n pOnlineShowUnit,\n pOnlineShowDocument,\n pOnlineShowDictionary,\n pOnlineUserProcedure,\n pOnlineUserReport,\n configSystemPageSize,\n configUrlBase,\n appState: state\n }\n }, children);\n};\n\n//Контроль свойств - Провайдер контекста приложения\nApplicationContext.propTypes = {\n errors: APPLICATION_CONTEXT_ERRORS_SHAPE.isRequired,\n displaySizeGetter: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),\n guidGenerator: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func).isRequired,\n config: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().object).isRequired,\n children: prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)), (prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)])\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/application.js?"); /***/ }), @@ -225,7 +225,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ APP_AT: () => (/* binding */ APP_AT),\n/* harmony export */ INITIAL_STATE: () => (/* binding */ INITIAL_STATE),\n/* harmony export */ applicationReducer: () => (/* binding */ applicationReducer)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Приложение - редьюсер состояния\r\n*/\n\n//---------\n//Константы\n//---------\n\n//Типы действий\nconst APP_AT = {\n SET_URL_BASE: \"SET_URL_BASE\",\n //Установка базового URL приложения\n LOAD_PANELS: \"LOAD_PANELS\",\n //Загрузка списка панелей\n SET_INITIALIZED: \"SET_INITIALIZED\",\n //Установка флага инициализированности приложения\n SET_DISPLAY_SIZE: \"SET_DISPLAY_SIZE\" //Установка текущего типового размера экрана\n};\n\n//Состояние приложения по умолчанию\nconst INITIAL_STATE = displaySizeGetter => ({\n displaySize: displaySizeGetter(),\n urlBase: \"\",\n panels: [],\n panelsLoaded: false,\n initialized: false\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Обработчики действий\nconst handlers = {\n //Установка базового URL приложения\n [APP_AT.SET_URL_BASE]: (state, {\n payload\n }) => ({\n ...state,\n urlBase: payload\n }),\n //Загрузка списка панелей\n [APP_AT.LOAD_PANELS]: (state, {\n payload\n }) => {\n let panels = [];\n if (payload && Array.isArray(payload)) for (let p of payload) panels.push({\n ...p\n });\n return {\n ...state,\n panels,\n panelsLoaded: true\n };\n },\n //Установка текущего типового размера экрана\n [APP_AT.SET_INITIALIZED]: state => ({\n ...state,\n initialized: true\n }),\n //Установка текущего типового размера экрана\n [APP_AT.SET_DISPLAY_SIZE]: (state, {\n payload\n }) => ({\n ...state,\n displaySize: payload\n }),\n //Обработчик по умолчанию\n DEFAULT: state => state\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Константы\n\n\n//Редьюсер состояния\nconst applicationReducer = (state, action) => {\n //Подберём обработчик\n const handle = handlers[action.type] || handlers.DEFAULT;\n //Исполним его\n return handle(state, action);\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/application_reducer.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ APP_AT: () => (/* binding */ APP_AT),\n/* harmony export */ INITIAL_STATE: () => (/* binding */ INITIAL_STATE),\n/* harmony export */ applicationReducer: () => (/* binding */ applicationReducer)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Приложение - редьюсер состояния\r\n*/\n\n//---------\n//Константы\n//---------\n\n//Типы действий\nconst APP_AT = {\n SET_URL_BASE: \"SET_URL_BASE\",\n //Установка базового URL приложения\n LOAD_PANELS: \"LOAD_PANELS\",\n //Загрузка списка панелей\n SET_INITIALIZED: \"SET_INITIALIZED\",\n //Установка флага инициализированности приложения\n SET_DISPLAY_SIZE: \"SET_DISPLAY_SIZE\",\n //Установка текущего типового размера экрана\n SET_APP_BAR_TITLE: \"SET_APP_BAR_TITLE\" //Установка заголовка в шапке приложения\n};\n\n//Состояние приложения по умолчанию\nconst INITIAL_STATE = displaySizeGetter => ({\n displaySize: displaySizeGetter(),\n appBarTitle: \"\",\n urlBase: \"\",\n panels: [],\n panelsLoaded: false,\n initialized: false\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Обработчики действий\nconst handlers = {\n //Установка базового URL приложения\n [APP_AT.SET_URL_BASE]: (state, {\n payload\n }) => ({\n ...state,\n urlBase: payload\n }),\n //Загрузка списка панелей\n [APP_AT.LOAD_PANELS]: (state, {\n payload\n }) => {\n let panels = [];\n if (payload && Array.isArray(payload)) for (let p of payload) panels.push({\n ...p\n });\n return {\n ...state,\n panels,\n panelsLoaded: true\n };\n },\n //Установка текущего типового размера экрана\n [APP_AT.SET_INITIALIZED]: state => ({\n ...state,\n initialized: true\n }),\n //Установка текущего типового размера экрана\n [APP_AT.SET_DISPLAY_SIZE]: (state, {\n payload\n }) => ({\n ...state,\n displaySize: payload\n }),\n //Установка заголовка в шапке приложения\n [APP_AT.SET_APP_BAR_TITLE]: (state, {\n payload\n }) => ({\n ...state,\n appBarTitle: payload\n }),\n //Обработчик по умолчанию\n DEFAULT: state => state\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Константы\n\n\n//Редьюсер состояния\nconst applicationReducer = (state, action) => {\n //Подберём обработчик\n const handle = handlers[action.type] || handlers.DEFAULT;\n //Исполним его\n return handle(state, action);\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/application_reducer.js?"); /***/ }), @@ -269,7 +269,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NavigationContext: () => (/* binding */ NavigationContext),\n/* harmony export */ NavigationCtx: () => (/* binding */ NavigationCtx),\n/* harmony export */ getRootLocation: () => (/* binding */ getRootLocation)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! query-string */ \"./node_modules/query-string/index.js\");\n/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./application */ \"./app/context/application.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Навигация\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //ReactJS\n //Контроль свойств компонента\n //Роутер приложения\n //Работа со строкой запроса\n //Контекст приложения\n\n//---------\n//Константы\n//---------\n\n//Типовые пути\nconst PATHS = {\n ROOT: \"/\" //Корень приложения\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Получение корневого пути\nconst getRootLocation = () => PATHS.ROOT;\n\n//Контекст навигации\nconst NavigationCtx = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)();\n\n//Провайдер контекста навигации\nconst NavigationContext = ({\n children\n}) => {\n //Подключение к объекту роутера для управления навигацией\n const location = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useLocation)();\n\n //Подключение к объекту роутера для управления навигацией\n const navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useNavigate)();\n\n //Подключение к контексту приложения\n const {\n findPanelByName\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Проверка наличия параметров запроса\n const isNavigationSearch = () => location.search ? true : false;\n\n //Считываение параметров запроса\n const getNavigationSearch = () => query_string__WEBPACK_IMPORTED_MODULE_3__[\"default\"].parse(location.search);\n\n //Проверка наличия параметров запроса (передаваемых через состояние)\n const isNavigationState = () => location.state ? true : false;\n\n //Считываение параметров запроса (передаваемых через состояние)\n const getNavigationState = () => isNavigationState() ? JSON.parse(location.state) : null;\n\n //Обновление текущей страницы\n const refresh = () => window.location.reload();\n\n //Возврат на предыдущую страницу\n const navigateBack = () => navigate(-1);\n\n //Переход к адресу внутри приложения\n const navigateTo = ({\n path,\n search,\n state,\n replace = false\n }) => {\n //Если указано куда переходить\n if (path) {\n //Переходим к адресу\n if (state) navigate(path, {\n state: JSON.stringify(state),\n replace\n });else navigate({\n pathname: path,\n search: query_string__WEBPACK_IMPORTED_MODULE_3__[\"default\"].stringify(search),\n replace\n });\n //Флаг успешного перехода\n return true;\n }\n //Переход не состоялся\n else return false;\n };\n\n //Переход к домашней страничке\n const navigateRoot = state => navigateTo({\n path: getRootLocation(),\n state\n });\n\n //Переход к панели\n const navigatePanel = (panel, state) => {\n if (panel) {\n let path = getRootLocation();\n path = !path.endsWith(\"/\") && !panel.url.startsWith(\"/\") ? `${path}/${panel.url}` : `${path}${panel.url}`;\n navigateTo({\n path,\n state\n });\n } else return false;\n };\n\n //Переход к панели по наименованию\n const navigatePanelByName = (name, state) => navigatePanel(findPanelByName(name), state);\n\n //Переход к произвольному адресу\n const navigateURL = url => {\n window.open(url, \"_self\");\n };\n\n //Вернём компонент провайдера\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NavigationCtx.Provider, {\n value: {\n getNavigationSearch,\n isNavigationSearch,\n getNavigationState,\n isNavigationState,\n refresh,\n navigateTo,\n navigateBack,\n navigateRoot,\n navigatePanel,\n navigatePanelByName,\n navigateURL\n }\n }, children);\n};\n\n//Контроль свойств - Провайдер контекста навигации\nNavigationContext.propTypes = {\n children: prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)), (prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)])\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/navigation.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NavigationContext: () => (/* binding */ NavigationContext),\n/* harmony export */ NavigationCtx: () => (/* binding */ NavigationCtx),\n/* harmony export */ getRootLocation: () => (/* binding */ getRootLocation)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router/dist/index.js\");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! query-string */ \"./node_modules/query-string/index.js\");\n/* harmony import */ var _application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./application */ \"./app/context/application.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Навигация\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //ReactJS\n //Контроль свойств компонента\n //Роутер приложения\n //Работа со строкой запроса\n //Контекст приложения\n\n//---------\n//Константы\n//---------\n\n//Типовые пути\nconst PATHS = {\n ROOT: \"/\" //Корень приложения\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Получение корневого пути\nconst getRootLocation = () => PATHS.ROOT;\n\n//Контекст навигации\nconst NavigationCtx = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)();\n\n//Провайдер контекста навигации\nconst NavigationContext = ({\n children\n}) => {\n //Подключение к объекту роутера для управления навигацией\n const location = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useLocation)();\n\n //Подключение к объекту роутера для управления навигацией\n const navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useNavigate)();\n\n //Подключение к контексту приложения\n const {\n findPanelByName,\n setAppBarTitle\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Проверка наличия параметров запроса\n const isNavigationSearch = () => location.search ? true : false;\n\n //Считываение параметров запроса\n const getNavigationSearch = () => query_string__WEBPACK_IMPORTED_MODULE_3__[\"default\"].parse(location.search);\n\n //Проверка наличия параметров запроса (передаваемых через состояние)\n const isNavigationState = () => location.state ? true : false;\n\n //Считываение параметров запроса (передаваемых через состояние)\n const getNavigationState = () => isNavigationState() ? JSON.parse(location.state) : null;\n\n //Обновление текущей страницы\n const refresh = () => window.location.reload();\n\n //Возврат на предыдущую страницу\n const navigateBack = () => navigate(-1);\n\n //Переход к адресу внутри приложения\n const navigateTo = ({\n path,\n search,\n state,\n replace = false\n }) => {\n //Если указано куда переходить\n if (path) {\n //Сброс кастомного заголовка\n setAppBarTitle(\"\");\n //Переходим к адресу\n if (state) navigate(path, {\n state: JSON.stringify(state),\n replace\n });else navigate({\n pathname: path,\n search: query_string__WEBPACK_IMPORTED_MODULE_3__[\"default\"].stringify(search),\n replace\n });\n //Флаг успешного перехода\n return true;\n }\n //Переход не состоялся\n else return false;\n };\n\n //Переход к домашней страничке\n const navigateRoot = state => navigateTo({\n path: getRootLocation(),\n state\n });\n\n //Переход к панели\n const navigatePanel = (panel, state) => {\n if (panel) {\n let path = getRootLocation();\n path = !path.endsWith(\"/\") && !panel.url.startsWith(\"/\") ? `${path}/${panel.url}` : `${path}${panel.url}`;\n navigateTo({\n path,\n state\n });\n } else return false;\n };\n\n //Переход к панели по наименованию\n const navigatePanelByName = (name, state) => navigatePanel(findPanelByName(name), state);\n\n //Переход к произвольному адресу\n const navigateURL = url => {\n window.open(url, \"_self\");\n };\n\n //Вернём компонент провайдера\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(NavigationCtx.Provider, {\n value: {\n getNavigationSearch,\n isNavigationSearch,\n getNavigationState,\n isNavigationState,\n refresh,\n navigateTo,\n navigateBack,\n navigateRoot,\n navigatePanel,\n navigatePanelByName,\n navigateURL\n }\n }, children);\n};\n\n//Контроль свойств - Провайдер контекста навигации\nNavigationContext.propTypes = {\n children: prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)), (prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)])\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/navigation.js?"); /***/ }), @@ -2588,7 +2588,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PanelsEditor: () => (/* binding */ PanelsEditor)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_grid_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-grid-layout */ \"./node_modules/react-grid-layout/index.js\");\n/* harmony import */ var react_grid_layout__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_grid_layout__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Menu/Menu.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _layout_item__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layout_item */ \"./app/panels/panels_editor/layout_item.js\");\n/* harmony import */ var _component_view__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./component_view */ \"./app/panels/panels_editor/component_view.js\");\n/* harmony import */ var _component_editor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./component_editor */ \"./app/panels/panels_editor/component_editor.js\");\n/* harmony import */ var _components_components__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/components */ \"./app/panels/panels_editor/components/components.js\");\n/* harmony import */ var react_grid_layout_css_styles_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-grid-layout/css/styles.css */ \"./node_modules/react-grid-layout/css/styles.css\");\n/* harmony import */ var react_resizable_css_styles_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-resizable/css/styles.css */ \"./node_modules/react-resizable/css/styles.css\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор панелей\r\n Корневой компонент\r\n*/\n\n//TODO: Подчистка values после обновления имени элемента формы (и т.п.), удаления элемента формы\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Адаптивный макет\n //Интерфейсные элементы\n //Рабочая область приложения\n //Общие вспомогательные функции\n //Элемент макета\n //Представление компонента панели\n //Редактор свойств компонента панели\n //Описание доступных компонентов\n //Стили для адаптивного макета\n //Стили для адаптивного макета\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n display: \"flex\"\n },\n GRID_CONTAINER: {\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_2__.APP_BAR_HEIGHT})`\n },\n GRID_ITEM_INSPECTOR: {\n backgroundColor: \"#e9ecef\"\n },\n FAB_EDIT: {\n position: \"absolute\",\n top: 12,\n right: 12,\n zIndex: 2000\n }\n};\n\n//Начальное состояние размера макета\nconst INITIAL_BREAKPOINT = \"lg\";\n\n//Начальное состояние макета\nconst INITIAL_LAYOUTS = {\n [INITIAL_BREAKPOINT]: []\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Обёрдка для динамического макета\nconst ResponsiveGridLayout = (0,react_grid_layout__WEBPACK_IMPORTED_MODULE_1__.WidthProvider)(react_grid_layout__WEBPACK_IMPORTED_MODULE_1__.Responsive);\n\n//Корневой компонент редактора панелей\nconst PanelsEditor = () => {\n //Собственное состояние\n const [components, setComponents] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n const [valueProviders, setValueProviders] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n const [layouts, setLayouts] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(INITIAL_LAYOUTS);\n const [breakpoint, setBreakpoint] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(INITIAL_BREAKPOINT);\n const [editMode, setEditMode] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n const [editComponent, setEditComponent] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n const [addMenuAnchorEl, setAddMenuAnchorEl] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Добвление компонента в макет\n const addComponent = component => {\n const id = (0,_core_utils__WEBPACK_IMPORTED_MODULE_3__.genGUID)();\n setLayouts(pv => ({\n ...pv,\n [breakpoint]: [...pv[breakpoint], {\n i: id,\n x: 0,\n y: 0,\n w: 4,\n h: 10\n }]\n }));\n setComponents(pv => ({\n ...pv,\n [id]: {\n ...component\n }\n }));\n };\n\n //Удаление компонента из макета\n const deleteComponent = id => {\n setLayouts(pv => ({\n ...pv,\n [breakpoint]: layouts[breakpoint].filter(item => item.i !== id)\n }));\n setComponents(pv => ({\n ...pv,\n [id]: {\n ...pv[id],\n deleted: true\n }\n }));\n if (valueProviders[id]) {\n const vPTmp = {\n ...valueProviders\n };\n delete vPTmp[id];\n setValueProviders(vPTmp);\n }\n editComponent === id && closeComponentSettingsEditor();\n };\n\n //Включение/выключение режима редиктирования\n const toggleEditMode = () => setEditMode(!editMode);\n\n //Открытие редактора настроек компонента\n const openComponentSettingsEditor = id => setEditComponent(id);\n\n //Закрытие реактора настроек компонента\n const closeComponentSettingsEditor = () => setEditComponent(null);\n\n //Открытие/сокрытие меню добавления\n const toggleAddMenu = target => setAddMenuAnchorEl(target instanceof Element ? target : null);\n\n //При изменении размера холста\n const handleBreakpointChange = breakpoint => setBreakpoint(breakpoint);\n\n //При изменении состояния макета\n const handleLayoutChange = (currentLayout, layouts) => setLayouts(layouts);\n\n //При нажатии на кнопку добалвения\n const handleAddClick = e => toggleAddMenu(e.currentTarget);\n\n //При выборе элемента меню добавления\n const handleAddMenuItemClick = component => {\n toggleAddMenu();\n addComponent(component);\n };\n\n //При изменении значений в компоненте\n const handleComponentValuesChange = (id, values) => setValueProviders(pv => ({\n ...pv,\n [id]: {\n ...values\n }\n }));\n\n //При нажатии на настройки компонента\n const handleComponentSettingsClick = id => editComponent === id ? closeComponentSettingsEditor() : openComponentSettingsEditor(id);\n\n //При изменении настроек компонента\n const handleComponentSettingsChange = ({\n id = null,\n settings = {},\n providedValues = [],\n closeEditor = false\n } = {}) => {\n if (id && components[id]) {\n const providedValuesInit = providedValues.reduce((res, providedValue) => ({\n ...res,\n [providedValue]: undefined\n }), {});\n if (valueProviders[id]) {\n const vPTmp = {\n ...valueProviders[id]\n };\n Object.keys(valueProviders[id]).forEach(key => !providedValues.includes(key) && delete vPTmp[key]);\n setValueProviders(pv => ({\n ...pv,\n [id]: {\n ...providedValuesInit,\n ...vPTmp\n }\n }));\n } else setValueProviders(pv => ({\n ...pv,\n [id]: providedValuesInit\n }));\n setComponents(pv => ({\n ...pv,\n [editComponent]: {\n ...pv[editComponent],\n settings: {\n ...settings\n }\n }\n }));\n if (closeEditor === true) closeComponentSettingsEditor();\n }\n };\n\n //При удалении компоненета\n const handleComponentDeleteClick = id => deleteComponent(id);\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //addComponent(COMPONETNS[0]);\n //addComponent(COMPONETNS[3]);\n //addComponent(COMPONETNS[4]);\n //addComponent(COMPONETNS[1]);\n //addComponent(COMPONETNS[2]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //Текущие значения панели\n const values = Object.keys(valueProviders).reduce((res, key) => ({\n ...res,\n ...valueProviders[key]\n }), {});\n\n //Меню добавления\n const addMenu = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n anchorEl: addMenuAnchorEl,\n open: Boolean(addMenuAnchorEl),\n onClose: toggleAddMenu\n }, _components_components__WEBPACK_IMPORTED_MODULE_7__.COMPONETNS.map((comp, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n key: i,\n onClick: () => handleAddMenuItemClick(comp)\n }, comp.name)));\n\n //Кнопка редактирования\n const editButton = !editMode && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.FAB_EDIT,\n size: \"small\",\n color: \"grey.700\",\n title: \"Редактировать\",\n onClick: toggleEditMode\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"edit\"));\n\n //Панель инструмментов\n const toolBar = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n direction: \"row\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n onClick: toggleEditMode,\n title: \"Запустить\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"play_arrow\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n onClick: handleAddClick,\n title: \"Добавить элемент\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"add\")));\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n sx: STYLES.CONTAINER\n }, editButton, addMenu, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n container: true,\n sx: STYLES.GRID_CONTAINER,\n columns: 25\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n item: true,\n xs: editMode ? 20 : 25\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ResponsiveGridLayout, {\n rowHeight: 5,\n className: \"layout\",\n layouts: layouts,\n breakpoints: {\n lg: 1200\n },\n cols: {\n lg: 12\n },\n onBreakpointChange: handleBreakpointChange,\n onLayoutChange: handleLayoutChange,\n useCSSTransforms: true,\n compactType: \"vertical\",\n isDraggable: editMode,\n isResizable: editMode\n }, layouts[breakpoint].map(item => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_layout_item__WEBPACK_IMPORTED_MODULE_4__.LayoutItem, {\n key: item.i,\n onSettingsClick: handleComponentSettingsClick,\n onDeleteClick: handleComponentDeleteClick,\n item: item,\n editMode: editMode,\n selected: editMode && editComponent === item.i\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_view__WEBPACK_IMPORTED_MODULE_5__.ComponentView, {\n id: item.i,\n path: components[item.i]?.path,\n settings: components[item.i]?.settings,\n values: values,\n onValuesChange: handleComponentValuesChange\n }))))), editMode && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n item: true,\n xs: 5,\n sx: STYLES.GRID_ITEM_INSPECTOR\n }, toolBar, editComponent && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_editor__WEBPACK_IMPORTED_MODULE_6__.ComponentEditor, {\n id: editComponent,\n path: components[editComponent].path,\n settings: components[editComponent].settings,\n valueProviders: valueProviders,\n onSettingsChange: handleComponentSettingsChange\n })))));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/panels_editor/panels_editor.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PanelsEditor: () => (/* binding */ PanelsEditor)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_grid_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-grid-layout */ \"./node_modules/react-grid-layout/index.js\");\n/* harmony import */ var react_grid_layout__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_grid_layout__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Menu/Menu.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _layout_item__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./layout_item */ \"./app/panels/panels_editor/layout_item.js\");\n/* harmony import */ var _component_view__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./component_view */ \"./app/panels/panels_editor/component_view.js\");\n/* harmony import */ var _component_editor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./component_editor */ \"./app/panels/panels_editor/component_editor.js\");\n/* harmony import */ var _components_components__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/components */ \"./app/panels/panels_editor/components/components.js\");\n/* harmony import */ var react_grid_layout_css_styles_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-grid-layout/css/styles.css */ \"./node_modules/react-grid-layout/css/styles.css\");\n/* harmony import */ var react_resizable_css_styles_css__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-resizable/css/styles.css */ \"./node_modules/react-resizable/css/styles.css\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор панелей\r\n Корневой компонент\r\n*/\n\n//TODO: Подчистка values после обновления имени элемента формы (и т.п.), удаления элемента формы\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Адаптивный макет\n //Интерфейсные элементы\n //Контекст приложения\n //Рабочая область приложения\n //Общие вспомогательные функции\n //Элемент макета\n //Представление компонента панели\n //Редактор свойств компонента панели\n //Описание доступных компонентов\n //Стили для адаптивного макета\n //Стили для адаптивного макета\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n display: \"flex\"\n },\n GRID_CONTAINER: {\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_3__.APP_BAR_HEIGHT})`\n },\n GRID_ITEM_INSPECTOR: {\n backgroundColor: \"#e9ecef\"\n },\n FAB_EDIT: {\n position: \"absolute\",\n top: 12,\n right: 12,\n zIndex: 2000\n }\n};\n\n//Заголовоки по умолчанию\nconst PANEL_CAPTION_EDIT_MODE = \"Редактор панелей\";\nconst PANEL_CAPTION_EXECUTE_MODE = \"Исполнение панели\";\n\n//Начальное состояние размера макета\nconst INITIAL_BREAKPOINT = \"lg\";\n\n//Начальное состояние макета\nconst INITIAL_LAYOUTS = {\n [INITIAL_BREAKPOINT]: []\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Обёрдка для динамического макета\nconst ResponsiveGridLayout = (0,react_grid_layout__WEBPACK_IMPORTED_MODULE_1__.WidthProvider)(react_grid_layout__WEBPACK_IMPORTED_MODULE_1__.Responsive);\n\n//Корневой компонент редактора панелей\nconst PanelsEditor = () => {\n //Собственное состояние\n const [components, setComponents] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n const [valueProviders, setValueProviders] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n const [layouts, setLayouts] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(INITIAL_LAYOUTS);\n const [breakpoint, setBreakpoint] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(INITIAL_BREAKPOINT);\n const [editMode, setEditMode] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n const [editComponent, setEditComponent] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n const [addMenuAnchorEl, setAddMenuAnchorEl] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Подключение к контексту приложения\n const {\n setAppBarTitle\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_2__[\"ApplicationСtx\"]);\n\n //Добвление компонента в макет\n const addComponent = component => {\n const id = (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.genGUID)();\n setLayouts(pv => ({\n ...pv,\n [breakpoint]: [...pv[breakpoint], {\n i: id,\n x: 0,\n y: 0,\n w: 4,\n h: 10\n }]\n }));\n setComponents(pv => ({\n ...pv,\n [id]: {\n ...component\n }\n }));\n };\n\n //Удаление компонента из макета\n const deleteComponent = id => {\n setLayouts(pv => ({\n ...pv,\n [breakpoint]: layouts[breakpoint].filter(item => item.i !== id)\n }));\n setComponents(pv => ({\n ...pv,\n [id]: {\n ...pv[id],\n deleted: true\n }\n }));\n if (valueProviders[id]) {\n const vPTmp = {\n ...valueProviders\n };\n delete vPTmp[id];\n setValueProviders(vPTmp);\n }\n editComponent === id && closeComponentSettingsEditor();\n };\n\n //Включение/выключение режима редиктирования\n const toggleEditMode = () => {\n if (!editMode) setAppBarTitle(PANEL_CAPTION_EDIT_MODE);else setAppBarTitle(PANEL_CAPTION_EXECUTE_MODE);\n setEditMode(!editMode);\n };\n\n //Открытие редактора настроек компонента\n const openComponentSettingsEditor = id => setEditComponent(id);\n\n //Закрытие реактора настроек компонента\n const closeComponentSettingsEditor = () => setEditComponent(null);\n\n //Открытие/сокрытие меню добавления\n const toggleAddMenu = target => setAddMenuAnchorEl(target instanceof Element ? target : null);\n\n //При изменении размера холста\n const handleBreakpointChange = breakpoint => setBreakpoint(breakpoint);\n\n //При изменении состояния макета\n const handleLayoutChange = (currentLayout, layouts) => setLayouts(layouts);\n\n //При нажатии на кнопку добалвения\n const handleAddClick = e => toggleAddMenu(e.currentTarget);\n\n //При выборе элемента меню добавления\n const handleAddMenuItemClick = component => {\n toggleAddMenu();\n addComponent(component);\n };\n\n //При изменении значений в компоненте\n const handleComponentValuesChange = (id, values) => setValueProviders(pv => ({\n ...pv,\n [id]: {\n ...values\n }\n }));\n\n //При нажатии на настройки компонента\n const handleComponentSettingsClick = id => editComponent === id ? closeComponentSettingsEditor() : openComponentSettingsEditor(id);\n\n //При изменении настроек компонента\n const handleComponentSettingsChange = ({\n id = null,\n settings = {},\n providedValues = [],\n closeEditor = false\n } = {}) => {\n if (id && components[id]) {\n const providedValuesInit = providedValues.reduce((res, providedValue) => ({\n ...res,\n [providedValue]: undefined\n }), {});\n if (valueProviders[id]) {\n const vPTmp = {\n ...valueProviders[id]\n };\n Object.keys(valueProviders[id]).forEach(key => !providedValues.includes(key) && delete vPTmp[key]);\n setValueProviders(pv => ({\n ...pv,\n [id]: {\n ...providedValuesInit,\n ...vPTmp\n }\n }));\n } else setValueProviders(pv => ({\n ...pv,\n [id]: providedValuesInit\n }));\n setComponents(pv => ({\n ...pv,\n [editComponent]: {\n ...pv[editComponent],\n settings: {\n ...settings\n }\n }\n }));\n if (closeEditor === true) closeComponentSettingsEditor();\n }\n };\n\n //При удалении компоненета\n const handleComponentDeleteClick = id => deleteComponent(id);\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //addComponent(COMPONETNS[0]);\n //addComponent(COMPONETNS[3]);\n //addComponent(COMPONETNS[4]);\n //addComponent(COMPONETNS[1]);\n //addComponent(COMPONETNS[2]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //Текущие значения панели\n const values = Object.keys(valueProviders).reduce((res, key) => ({\n ...res,\n ...valueProviders[key]\n }), {});\n\n //Меню добавления\n const addMenu = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n anchorEl: addMenuAnchorEl,\n open: Boolean(addMenuAnchorEl),\n onClose: toggleAddMenu\n }, _components_components__WEBPACK_IMPORTED_MODULE_8__.COMPONETNS.map((comp, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n key: i,\n onClick: () => handleAddMenuItemClick(comp)\n }, comp.name)));\n\n //Кнопка редактирования\n const editButton = !editMode && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n sx: STYLES.FAB_EDIT,\n size: \"small\",\n color: \"grey.700\",\n title: \"Редактировать\",\n onClick: toggleEditMode\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], null, \"edit\"));\n\n //Панель инструмментов\n const toolBar = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n direction: \"row\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onClick: toggleEditMode,\n title: \"Запустить\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], null, \"play_arrow\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onClick: handleAddClick,\n title: \"Добавить элемент\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], null, \"add\")));\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n sx: STYLES.CONTAINER\n }, editButton, addMenu, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n container: true,\n sx: STYLES.GRID_CONTAINER,\n columns: 25\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n item: true,\n xs: editMode ? 20 : 25\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ResponsiveGridLayout, {\n rowHeight: 5,\n className: \"layout\",\n layouts: layouts,\n breakpoints: {\n lg: 1200\n },\n cols: {\n lg: 12\n },\n onBreakpointChange: handleBreakpointChange,\n onLayoutChange: handleLayoutChange,\n useCSSTransforms: true,\n compactType: \"vertical\",\n isDraggable: editMode,\n isResizable: editMode\n }, layouts[breakpoint].map(item => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_layout_item__WEBPACK_IMPORTED_MODULE_5__.LayoutItem, {\n key: item.i,\n onSettingsClick: handleComponentSettingsClick,\n onDeleteClick: handleComponentDeleteClick,\n item: item,\n editMode: editMode,\n selected: editMode && editComponent === item.i\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_view__WEBPACK_IMPORTED_MODULE_6__.ComponentView, {\n id: item.i,\n path: components[item.i]?.path,\n settings: components[item.i]?.settings,\n values: values,\n onValuesChange: handleComponentValuesChange\n }))))), editMode && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n item: true,\n xs: 5,\n sx: STYLES.GRID_ITEM_INSPECTOR\n }, toolBar, editComponent && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_editor__WEBPACK_IMPORTED_MODULE_7__.ComponentEditor, {\n id: editComponent,\n path: components[editComponent].path,\n settings: components[editComponent].settings,\n valueProviders: valueProviders,\n onSettingsChange: handleComponentSettingsChange\n })))));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/panels_editor/panels_editor.js?"); /***/ }),