diff --git a/dist/p8-panels.js b/dist/p8-panels.js index 9ad10d9..b71b329 100644 --- a/dist/p8-panels.js +++ b/dist/p8-panels.js @@ -38,7 +38,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 */ BUTTONS: () => (/* binding */ BUTTONS),\n/* harmony export */ CAPTIONS: () => (/* binding */ CAPTIONS),\n/* harmony export */ ERRORS: () => (/* binding */ ERRORS),\n/* harmony export */ ERRORS_HTTP: () => (/* binding */ ERRORS_HTTP),\n/* harmony export */ STATE: () => (/* binding */ STATE),\n/* harmony export */ TEXTS: () => (/* binding */ TEXTS),\n/* harmony export */ TITLES: () => (/* binding */ TITLES)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга\r\n Текстовые ресурсы и константы\r\n*/\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Заголовки\nconst TITLES = {\n INFO: \"Информация\",\n //Информационный блок\n WARN: \"Предупреждение\",\n //Блок предупреждения\n ERR: \"Ошибка\",\n //Информация об ошибке\n DEFAULT_PANELS_GROUP: \"Без привязки к группе\",\n //Заголовок группы панелей по умолчанию\n DATA_SOURCE_CONFIG: \"Настройка источника данных\",\n //Заголовок для настройки источника данных\n INSERT: \"Добавление\",\n //Заголовок для диалогов/форм добавления\n UPDATE: \"Исправление\" //Заголовок для диалогов/форм исправления\n};\n\n//Текст\nconst TEXTS = {\n LOADING: \"Ожидайте...\",\n //Ожидание завершения процесса\n NO_DATA_FOUND: \"Данных не найдено\",\n //Отсутствие данных\n NO_DATA_FOUND_SHORT: \"Н.Д.\",\n //Отсутствие данных (кратко)\n NO_SETTINGS: \"Настройки не определены\",\n //Отстутсвие настроек\n UNKNOWN_SOURCE_TYPE: \"Неизвестный тип источника\",\n //Отсуствие типа источника\n UNNAMED_SOURCE: \"Источник без наименования\" //Отсутствие наименования источника\n};\n\n//Текст кнопок\nconst BUTTONS = {\n NAVIGATE_HOME: \"Домой\",\n //Переход к домашней странице\n NAVIGATE_BACK: \"Назад\",\n //Возврат назад по навигации\n NAVIGATE: \"Перейти\",\n //Переход к разделу/панели/адресу\n OK: \"ОК\",\n //Ок\n CANCEL: \"Отмена\",\n //Отмена\n CLOSE: \"Закрыть\",\n //Сокрытие\n DETAIL: \"Подробнее\",\n //Отображение подробностей/детализации\n HIDE: \"Скрыть\",\n //Скрытие информации\n CLEAR: \"Очистить\",\n //Очистка\n ORDER_ASC: \"По возрастанию\",\n //Сортировка по возрастанию\n ORDER_DESC: \"По убыванию\",\n //Сортировка по убыванию\n FILTER: \"Фильтр\",\n //Фильтрация\n MORE: \"Ещё\",\n //Догрузка данных\n APPLY: \"Применить\",\n //Сохранение без закрытия интерфейса ввода\n SAVE: \"Сохранить\",\n //Сохранение\n CONFIG: \"Настроить\",\n //Настройка\n INSERT: \"Добавить\",\n //Добавление\n UPDATE: \"Исправить\",\n //Исправление\n DELETE: \"Удалить\" //Удаление\n};\n\n//Метки атрибутов, сопроводительные надписи\nconst CAPTIONS = {\n VALUE: \"Значение\",\n VALUE_FROM: \"С\",\n VALUE_TO: \"По\",\n NUMB: \"Номер\",\n NAME: \"Наименование\",\n START: \"Начало\",\n END: \"Окончание\",\n PROGRESS: \"Прогресс\",\n LEGEND: \"Легенда\",\n USER_PROC: \"Пользовательская процедура\",\n QUERY: \"Запрос\"\n};\n\n//Типовые сообщения об ошибках\nconst ERRORS = {\n UNDER_CONSTRUCTION: \"Панель в разработке\",\n P8O_API_UNAVAILABLE: '\"ПАРУС 8 Онлайн\" недоступен',\n P8O_API_UNSUPPORTED: 'Функция \"ПАРУС 8 Онлайн\" не поддерживается',\n DEFAULT: \"Неожиданная ошибка\",\n DATA_SOURCE_NO_REQ_ARGS: \"Не заданы обязательные параметры источника данных\"\n};\n\n//Типовые сообщения для ошибок HTTP\nconst ERRORS_HTTP = {\n 404: \"Адрес не найден\"\n};\n\n//Типовые статусы\nconst STATE = {\n UNDEFINED: \"UNDEFINED\",\n INFO: \"INFORMATION\",\n OK: \"OK\",\n ERR: \"ERR\",\n WARN: \"WARN\"\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app.text.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BUTTONS: () => (/* binding */ BUTTONS),\n/* harmony export */ CAPTIONS: () => (/* binding */ CAPTIONS),\n/* harmony export */ ERRORS: () => (/* binding */ ERRORS),\n/* harmony export */ ERRORS_HTTP: () => (/* binding */ ERRORS_HTTP),\n/* harmony export */ STATE: () => (/* binding */ STATE),\n/* harmony export */ TEXTS: () => (/* binding */ TEXTS),\n/* harmony export */ TITLES: () => (/* binding */ TITLES)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга\r\n Текстовые ресурсы и константы\r\n*/\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Заголовки\nconst TITLES = {\n INFO: \"Информация\",\n //Информационный блок\n WARN: \"Предупреждение\",\n //Блок предупреждения\n ERR: \"Ошибка\",\n //Информация об ошибке\n DEFAULT_PANELS_GROUP: \"Без привязки к группе\",\n //Заголовок группы панелей по умолчанию\n DATA_SOURCE_CONFIG: \"Настройка источника данных\",\n //Заголовок для настройки источника данных\n INSERT: \"Добавление\",\n //Заголовок для диалогов/форм добавления\n UPDATE: \"Исправление\",\n //Заголовок для диалогов/форм исправления\n CONFIG: \"Настройка\" //Заголовок для диалога настройки\n};\n\n//Текст\nconst TEXTS = {\n LOADING: \"Ожидайте...\",\n //Ожидание завершения процесса\n NO_DATA_FOUND: \"Данных не найдено\",\n //Отсутствие данных\n NO_DATA_FOUND_SHORT: \"Н.Д.\",\n //Отсутствие данных (кратко)\n NO_SETTINGS: \"Настройки не определены\",\n //Отстутсвие настроек\n UNKNOWN_SOURCE_TYPE: \"Неизвестный тип источника\",\n //Отсуствие типа источника\n UNNAMED_SOURCE: \"Источник без наименования\" //Отсутствие наименования источника\n};\n\n//Текст кнопок\nconst BUTTONS = {\n NAVIGATE_HOME: \"Домой\",\n //Переход к домашней странице\n NAVIGATE_BACK: \"Назад\",\n //Возврат назад по навигации\n NAVIGATE: \"Перейти\",\n //Переход к разделу/панели/адресу\n OK: \"ОК\",\n //Ок\n CANCEL: \"Отмена\",\n //Отмена\n CLOSE: \"Закрыть\",\n //Сокрытие\n DETAIL: \"Подробнее\",\n //Отображение подробностей/детализации\n HIDE: \"Скрыть\",\n //Скрытие информации\n CLEAR: \"Очистить\",\n //Очистка\n ORDER_ASC: \"По возрастанию\",\n //Сортировка по возрастанию\n ORDER_DESC: \"По убыванию\",\n //Сортировка по убыванию\n FILTER: \"Фильтр\",\n //Фильтрация\n MORE: \"Ещё\",\n //Догрузка данных\n APPLY: \"Применить\",\n //Сохранение без закрытия интерфейса ввода\n SAVE: \"Сохранить\",\n //Сохранение\n CONFIG: \"Настроить\",\n //Настройка\n INSERT: \"Добавить\",\n //Добавление\n UPDATE: \"Исправить\",\n //Исправление\n DELETE: \"Удалить\" //Удаление\n};\n\n//Метки атрибутов, сопроводительные надписи\nconst CAPTIONS = {\n VALUE: \"Значение\",\n VALUE_FROM: \"С\",\n VALUE_TO: \"По\",\n NUMB: \"Номер\",\n NAME: \"Наименование\",\n START: \"Начало\",\n END: \"Окончание\",\n PROGRESS: \"Прогресс\",\n LEGEND: \"Легенда\",\n USER_PROC: \"Пользовательская процедура\",\n QUERY: \"Запрос\"\n};\n\n//Типовые сообщения об ошибках\nconst ERRORS = {\n UNDER_CONSTRUCTION: \"Панель в разработке\",\n P8O_API_UNAVAILABLE: '\"ПАРУС 8 Онлайн\" недоступен',\n P8O_API_UNSUPPORTED: 'Функция \"ПАРУС 8 Онлайн\" не поддерживается',\n DEFAULT: \"Неожиданная ошибка\",\n DATA_SOURCE_NO_REQ_ARGS: \"Не заданы обязательные параметры источника данных\"\n};\n\n//Типовые сообщения для ошибок HTTP\nconst ERRORS_HTTP = {\n 404: \"Адрес не найден\"\n};\n\n//Типовые статусы\nconst STATE = {\n UNDEFINED: \"UNDEFINED\",\n INFO: \"INFORMATION\",\n OK: \"OK\",\n ERR: \"ERR\",\n WARN: \"WARN\"\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app.text.js?"); /***/ }), @@ -137,7 +137,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 */ P8PEditorSubHeader: () => (/* binding */ P8PEditorSubHeader)\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_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Divider/Divider.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Chip/Chip.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редакторы панелей\r\n Компонент: Заголовок раздела редактора\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n DIVIDER: {\n paddingTop: \"20px\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Заголовок раздела редактора\nconst P8PEditorSubHeader = ({\n title\n}) => {\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n sx: STYLES.DIVIDER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n label: title,\n size: \"small\"\n }));\n};\n\n//Контроль свойств компонента - Заголовок раздела редактора\nP8PEditorSubHeader.propTypes = {\n title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/editors/p8p_editor_sub_header.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PEditorSubHeader: () => (/* binding */ P8PEditorSubHeader)\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_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Divider/Divider.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Chip/Chip.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редакторы панелей\r\n Компонент: Заголовок раздела редактора\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n DIVIDER: pt => ({\n paddingTop: pt || pt === 0 ? `${pt}px` : \"20px\"\n }),\n CHIP: maxWidth => ({\n cursor: \"default\",\n ...(maxWidth ? {\n maxWidth\n } : {})\n })\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Заголовок раздела редактора\nconst P8PEditorSubHeader = ({\n title,\n paddingTop,\n maxWidth\n}) => {\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n sx: STYLES.DIVIDER(paddingTop)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n label: title,\n size: \"small\",\n title: title,\n sx: STYLES.CHIP(maxWidth)\n }));\n};\n\n//Контроль свойств компонента - Заголовок раздела редактора\nP8PEditorSubHeader.propTypes = {\n title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n paddingTop: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n maxWidth: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/editors/p8p_editor_sub_header.js?"); /***/ }), @@ -247,7 +247,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 */ P8PDialog: () => (/* binding */ P8PDialog)\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_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../app.text */ \"./app.text.js\");\n/* harmony import */ var _p8p_input__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./p8p_input */ \"./app/components/p8p_input.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//Диалог\nconst P8PDialog = ({\n title,\n inputs = [],\n children,\n onOk,\n onCancel,\n onClose\n}) => {\n //Состояние диалога\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n\n //При изменении элемента ввода\n const handleInputChange = (name, value) => setState(pv => ({\n ...pv,\n [name]: value\n }));\n\n //При нажатии на \"ОК\" диалога\n const handleOk = () => onOk && onOk(state);\n\n //При нажатии на \"Отмена\" диалога\n const handleCancel = () => onCancel && onCancel();\n\n //При нажатии на \"Закрыть\" диалога\n const handleClose = () => onClose ? onClose() : onCancel ? onCancel() : null;\n\n //При подключении к старнице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setState(inputs.reduce((res, input) => ({\n ...res,\n [input.name]: input.value == undefined ? null : input.value\n }), {}));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onClose: handleClose,\n open: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, inputs.map((input, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_input__WEBPACK_IMPORTED_MODULE_2__.P8PInput, _extends({\n key: i\n }, input, {\n value: state[input.name],\n formValues: state,\n onChange: handleInputChange\n }))), children), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, onOk && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: handleOk\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.OK), onCancel && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: handleCancel\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CANCEL), onClose && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: handleClose\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CLOSE)));\n};\n\n//Контроль свойств - Диалог\nP8PDialog.propTypes = {\n title: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n inputs: prop_types__WEBPACK_IMPORTED_MODULE_8___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape(_p8p_input__WEBPACK_IMPORTED_MODULE_2__.P8P_INPUT)),\n children: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_8___default().node), prop_types__WEBPACK_IMPORTED_MODULE_8___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_8___default().node))]),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_dialog.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PDialog: () => (/* binding */ P8PDialog),\n/* harmony export */ P8P_DIALOG_WIDTH: () => (/* binding */ P8P_DIALOG_WIDTH)\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_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../app.text */ \"./app.text.js\");\n/* harmony import */ var _p8p_input__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./p8p_input */ \"./app/components/p8p_input.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//Типовая ширина диалога\nconst P8P_DIALOG_WIDTH = {\n XS: \"xs\",\n SM: \"sm\",\n MD: \"md\",\n LG: \"lg\",\n XL: \"xl\"\n};\n\n//-----------------------\n//Вспомогательные функции\n//-----------------------\n\n//Формирование объекта вида {ключ: значение} из текущего состояния элементов ввода формы\nconst buildFormValues = inputsState => inputsState.reduce((res, input) => ({\n ...res,\n [input.name]: input.value == undefined ? null : input.value\n}), {});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог\nconst P8PDialog = ({\n title,\n width,\n fullWidth,\n inputs,\n children,\n onOk,\n onCancel,\n onClose,\n onInputChange\n}) => {\n //Состояние элементов ввода диалога\n const [inputsState, setInputsState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //При изменении элемента ввода\n const handleInputChange = (name, value) => {\n //Если есть функция пересчета формы - вызовем её\n const doNotChangeInputsState = onInputChange ? onInputChange(name, value, inputsState) : false;\n //И ориентируясь на то, пересчитала ли она элементы ввода обновим собственное состояние.\n //Если функция пересчета вернула \"true\", значит она пересчитала что-то, тогда новые настройки элементов придут через свойство inputs и будут обработаны в useEffect ниже.\n //Следовательно, и нам здесь не надо состояние выставлять, т.к. всё будет перезаписано useEffectом.\n if (!doNotChangeInputsState) setInputsState(pv => pv.reduce((accum, cur) => [...accum, {\n ...cur,\n value: cur.name === name ? value : cur.value\n }], []));\n };\n\n //При нажатии на \"ОК\" диалога\n const handleOk = () => onOk && onOk(buildFormValues(inputsState));\n\n //При нажатии на \"Отмена\" диалога\n const handleCancel = () => onCancel && onCancel();\n\n //При нажатии на \"Закрыть\" диалога\n const handleClose = () => onClose ? onClose() : onCancel ? onCancel() : null;\n\n //При изменении полей для ввода\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (inputs && Array.isArray(inputs) && inputs.length > 0) setInputsState(inputs.map(input => ({\n ...input\n })));\n }, [inputs]);\n\n //Расчет объектного представления текущих значений формы\n const formValues = buildFormValues(inputsState);\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _extends({\n onClose: handleClose,\n open: true\n }, width ? {\n maxWidth: width\n } : {}, fullWidth === true ? {\n fullWidth: true\n } : {}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, inputsState.map((input, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_input__WEBPACK_IMPORTED_MODULE_2__.P8PInput, _extends({\n key: i\n }, input, {\n formValues: formValues,\n onChange: handleInputChange\n }))), children), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, onOk && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: handleOk\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.OK), onCancel && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: handleCancel\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CANCEL), onClose && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: handleClose\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CLOSE)));\n};\n\n//Контроль свойств - Диалог\nP8PDialog.propTypes = {\n title: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n width: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOf(Object.values(P8P_DIALOG_WIDTH)),\n fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n inputs: prop_types__WEBPACK_IMPORTED_MODULE_8___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape(_p8p_input__WEBPACK_IMPORTED_MODULE_2__.P8P_INPUT)),\n children: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_8___default().node), prop_types__WEBPACK_IMPORTED_MODULE_8___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_8___default().node))]),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n onInputChange: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_dialog.js?"); /***/ }), @@ -291,7 +291,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 */ P8PInput: () => (/* binding */ P8PInput),\n/* harmony export */ P8P_INPUT: () => (/* binding */ P8P_INPUT)\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_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Autocomplete/Autocomplete.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Select/Select.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Input/Input.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.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//Формат свойств поля ввода\nconst P8P_INPUT = {\n name: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string).isRequired,\n value: prop_types__WEBPACK_IMPORTED_MODULE_1___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_1___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string), prop_types__WEBPACK_IMPORTED_MODULE_1___default().instanceOf(Date)]),\n label: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string).isRequired,\n onChange: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n dictionary: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n list: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().array),\n type: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),\n freeSolo: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),\n disabled: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),\n formValues: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Поле ввода\nconst P8PInput = ({\n name,\n value,\n label,\n onChange,\n dictionary,\n list,\n type,\n freeSolo = false,\n disabled = false,\n formValues,\n ...other\n}) => {\n //Значение элемента\n const [currentValue, setCurrentValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(value);\n\n //При получении нового значения из вне\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setCurrentValue(value);\n }, [value]);\n\n //Выбор значения из словаря\n const handleDictionaryClick = () => dictionary && dictionary(formValues, res => res ? res.map(i => handleChangeByName(i.name, i.value)) : null);\n\n //Изменение значения элемента (по событию)\n const handleChange = e => {\n setCurrentValue(e.target.value);\n if (onChange) onChange(e.target.name, e.target.value);\n };\n\n //Изменение значения элемента (по имени и значению)\n const handleChangeByName = (targetName, value) => {\n if (targetName === name) setCurrentValue(value);\n if (onChange) onChange(targetName, value);\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _extends({\n variant: \"standard\",\n fullWidth: true\n }, other), list ? freeSolo ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n id: name,\n name: name,\n freeSolo: true,\n disabled: disabled,\n inputValue: currentValue ? currentValue : \"\",\n onChange: (event, newValue) => handleChangeByName(name, newValue),\n onInputChange: (event, newInputValue) => handleChangeByName(name, newInputValue),\n options: list,\n renderInput: params => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _extends({}, params, {\n label: label,\n name: name,\n variant: \"standard\"\n }))\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n id: `${name}Lable`,\n shrink: true\n }, label), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n labelId: `${name}Lable`,\n id: name,\n name: name,\n label: label,\n value: [undefined, null].includes(currentValue) ? \"\" : currentValue,\n onChange: handleChange,\n disabled: disabled,\n displayEmpty: true\n }, list.map((item, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n key: i,\n value: [undefined, null].includes(item.value) ? \"\" : item.value\n }, item.name)))) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _extends({}, type == \"date\" ? {\n shrink: true\n } : {}, {\n htmlFor: name\n }), label), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _extends({\n id: name,\n name: name,\n value: currentValue ? currentValue : \"\",\n endAdornment: dictionary ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n \"aria-label\": `${name} select`,\n onClick: handleDictionaryClick,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, \"list\"))) : null\n }, type ? {\n type\n } : {}, {\n onChange: handleChange,\n disabled: disabled\n })))));\n};\n\n//Контроль свойств - Поле ввода\nP8PInput.propTypes = P8P_INPUT;\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_input.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PInput: () => (/* binding */ P8PInput),\n/* harmony export */ P8P_INPUT: () => (/* binding */ P8P_INPUT)\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_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Autocomplete/Autocomplete.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Select/Select.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Input/Input.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.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//Формат свойств поля ввода\nconst P8P_INPUT = {\n name: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string).isRequired,\n value: prop_types__WEBPACK_IMPORTED_MODULE_1___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_1___default().number), (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string), prop_types__WEBPACK_IMPORTED_MODULE_1___default().instanceOf(Date)]),\n label: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string).isRequired,\n onChange: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n dictionary: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),\n list: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().array),\n type: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),\n freeSolo: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),\n disabled: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),\n formValues: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Поле ввода\nconst P8PInput = ({\n name,\n value,\n label,\n onChange,\n dictionary,\n list,\n type,\n freeSolo = false,\n disabled = false,\n formValues,\n ...other\n}) => {\n //Значение и тип элемента\n const [current, setCurrent] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n type: undefined,\n value: \"\"\n });\n\n //При получении нового значения или типа из вне\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setCurrent({\n value,\n type\n }), [type, value]);\n\n //Выбор значения из словаря\n const handleDictionaryClick = () => dictionary && dictionary(formValues, res => res ? res.map(i => handleChangeByName(i.name, i.value)) : null);\n\n //Изменение значения элемента (по событию)\n const handleChange = e => {\n setCurrent(pv => ({\n ...pv,\n value: e.target.value\n }));\n if (onChange) onChange(e.target.name, e.target.value);\n };\n\n //Изменение значения элемента (по имени и значению)\n const handleChangeByName = (targetName, value) => {\n if (targetName === name) setCurrent(pv => ({\n ...pv,\n value\n }));\n if (onChange) onChange(targetName, value);\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _extends({\n variant: \"standard\",\n fullWidth: true\n }, other), list ? freeSolo ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n id: name,\n name: name,\n freeSolo: true,\n disabled: disabled,\n inputValue: current.value ? current.value : \"\",\n onChange: (event, newValue) => handleChangeByName(name, newValue),\n onInputChange: (event, newInputValue) => handleChangeByName(name, newInputValue),\n options: list,\n renderInput: params => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _extends({}, params, {\n label: label,\n name: name,\n variant: \"standard\"\n }))\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n id: `${name}Lable`,\n shrink: true\n }, label), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n labelId: `${name}Lable`,\n id: name,\n name: name,\n label: label,\n value: [undefined, null].includes(current.value) ? \"\" : current.value,\n onChange: handleChange,\n disabled: disabled,\n displayEmpty: true\n }, list.map((item, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n key: i,\n value: [undefined, null].includes(item.value) ? \"\" : item.value\n }, item.name)))) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _extends({}, current.type == \"date\" ? {\n shrink: true\n } : {}, {\n htmlFor: name\n }), label), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], _extends({\n id: name,\n name: name,\n value: current.value ? current.value : \"\",\n endAdornment: dictionary ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n \"aria-label\": `${name} select`,\n onClick: handleDictionaryClick,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, \"list\"))) : null\n }, current.type ? {\n type: current.type\n } : {}, {\n onChange: handleChange,\n disabled: disabled\n })))));\n};\n\n//Контроль свойств - Поле ввода\nP8PInput.propTypes = P8P_INPUT;\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_input.js?"); /***/ }), @@ -434,7 +434,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 */ deepCopyObject: () => (/* binding */ deepCopyObject),\n/* harmony export */ formatDateJSONDateOnly: () => (/* binding */ formatDateJSONDateOnly),\n/* harmony export */ formatDateRF: () => (/* binding */ formatDateRF),\n/* harmony export */ formatDateTimeRF: () => (/* binding */ formatDateTimeRF),\n/* harmony export */ formatErrorMessage: () => (/* binding */ formatErrorMessage),\n/* harmony export */ formatNumberRFCurrency: () => (/* binding */ formatNumberRFCurrency),\n/* harmony export */ genGUID: () => (/* binding */ genGUID),\n/* harmony export */ getDisplaySize: () => (/* binding */ getDisplaySize),\n/* harmony export */ hasValue: () => (/* binding */ hasValue),\n/* harmony export */ object2Base64XML: () => (/* binding */ object2Base64XML),\n/* harmony export */ xml2JSON: () => (/* binding */ xml2JSON)\n/* harmony export */ });\n/* harmony import */ var fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-xml-parser */ \"./node_modules/fast-xml-parser/src/fxp.js\");\n/* harmony import */ var fast_xml_parser__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_1__);\n/*\r\n Парус 8 - Панели мониторинга\r\n Ядро: Вспомогательные функции\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Конвертация XML в JSON и JSON в XML\n //Работа с датами\n\n//---------\n//Константы\n//---------\n\n//Коды типовых размеров экранов\nconst DISPLAY_SIZE_CODE = {\n XS: \"XS\",\n //eXtra Small - супер маленький экран\n SM: \"SM\",\n //Small - маленький экран\n MD: \"MD\",\n //Middle - средний экран\n LG: \"LG\" //Large - большой экран\n};\n\n//Типовые размеры экранов\nconst DISPLAY_SIZE = {\n [DISPLAY_SIZE_CODE.XS]: {\n WIDTH_FROM: 0,\n WIDTH_TO: 767\n },\n //eXtra Small - супер маленький экран < 768px\n [DISPLAY_SIZE_CODE.SM]: {\n WIDTH_FROM: 768,\n WIDTH_TO: 991\n },\n //Small - маленький экран >= 768px\n [DISPLAY_SIZE_CODE.MD]: {\n WIDTH_FROM: 992,\n WIDTH_TO: 1199\n },\n //Middle - средний экран >= 992px\n [DISPLAY_SIZE_CODE.LG]: {\n WIDTH_FROM: 1200,\n WIDTH_TO: 1000000\n } //Large - большой экран >= 1200px\n};\n\n//Типовые пути конвертации в массив (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_PATHS = [\"XRESPOND.XPAYLOAD.XOUT_ARGUMENTS\", \"XRESPOND.XPAYLOAD.XDATA_GRID.rows\", \"XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef\", \"XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef.values\", \"XRESPOND.XPAYLOAD.XDATA_GRID.groups\", \"XRESPOND.XPAYLOAD.XGANTT.taskAttributes\", \"XRESPOND.XPAYLOAD.XGANTT.taskColors\", \"XRESPOND.XPAYLOAD.XGANTT.tasks\", \"XRESPOND.XPAYLOAD.XGANTT.tasks.dependencies\", \"XRESPOND.XPAYLOAD.XCHART.labels\", \"XRESPOND.XPAYLOAD.XCHART.datasets\", \"XRESPOND.XPAYLOAD.XCHART.datasets.data\", \"XRESPOND.XPAYLOAD.XCHART.datasets.items\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.taskAttributes\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.columns\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.groups\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.tasks\"];\n\n//Типовые шаблоны конвертации в массив (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_PATH_PATTERNS = [/(.*)XDATA_GRID.rows$/, /(.*)XDATA_GRID.columnsDef$/, /(.*)XDATA_GRID.columnsDef.values$/, /(.*)XDATA_GRID.groups$/, /(.*)XGANTT.taskAttributes$/, /(.*)XGANTT.taskColors$/, /(.*)XGANTT.tasks$/, /(.*)XGANTT.tasks.dependencies$/, /(.*)XCHART.labels$/, /(.*)XCHART.datasets$/, /(.*)XCHART.datasets.data$/, /(.*)XCHART.datasets.items$/, /(.*)XCYCLOGRAM.taskAttributes$/, /(.*)XCYCLOGRAM.columns$/, /(.*)XCYCLOGRAM.groups$/, /(.*)XCYCLOGRAM.tasks$/];\n\n//Типовой постфикс тега для массива (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_POSTFIX = \"__SYSTEM__ARRAY__\";\n\n//Типовые шаблоны конвертации значения атрибута в строку (при переводе XML -> JSON)\nconst XML_ATTR_ALWAYS_STR_PATH_PATTERNS = [/(.*)XDATA_GRID.columnsDef.name$/, /(.*)XDATA_GRID.columnsDef.caption$/, /(.*)XDATA_GRID.columnsDef.parent$/, /(.*)XDATA_GRID.groups.name$/, /(.*)XDATA_GRID.groups.caption$/, /(.*)XCYCLOGRAM.columns.name$/, /(.*)XCYCLOGRAM.groups.name$/];\n\n//-----------\n//Тело модуля\n//-----------\n\n//Проверка существования значения\nconst hasValue = value => typeof value !== \"undefined\" && value !== null && value !== \"\";\n\n//Проверка типа устройства\nconst getDisplaySize = () => {\n let res = DISPLAY_SIZE_CODE.MD;\n Object.keys(DISPLAY_SIZE).map(dspl => {\n if (window.innerWidth >= DISPLAY_SIZE[dspl].WIDTH_FROM && window.innerWidth <= DISPLAY_SIZE[dspl].WIDTH_TO) res = dspl;\n });\n return res;\n};\n\n//Глубокое копирование объекта\nconst deepCopyObject = obj => structuredClone ? structuredClone(obj) : JSON.parse(JSON.stringify(obj));\n\n//Конвертация объекта в Base64 XML\nconst object2Base64XML = (obj, builderOptions) => {\n const builder = new fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__.XMLBuilder(builderOptions);\n return btoa(unescape(encodeURIComponent(builder.build(obj))));\n};\n\n//Конвертация XML в JSON\nconst xml2JSON = ({\n xmlDoc,\n isArray,\n transformTagName,\n tagValueProcessor,\n attributeValueProcessor,\n useDefaultPatterns = true\n}) => {\n return new Promise((resolve, reject) => {\n try {\n let opts = {\n ignoreDeclaration: true,\n ignoreAttributes: false,\n parseAttributeValue: true,\n attributeNamePrefix: \"\"\n };\n if (useDefaultPatterns) {\n opts.isArray = (name, jPath, isLeafNode, isAttribute) => XML_ALWAYS_ARRAY_PATHS.indexOf(jPath) !== -1 || XML_ALWAYS_ARRAY_PATH_PATTERNS.some(pattern => pattern.test(jPath)) || jPath.endsWith(XML_ALWAYS_ARRAY_POSTFIX) || (isArray ? isArray(name, jPath, isLeafNode, isAttribute) : undefined);\n opts.attributeValueProcessor = (name, val, jPath) => XML_ATTR_ALWAYS_STR_PATH_PATTERNS.some(pattern => pattern.test(`${jPath}.${name}`)) ? undefined : attributeValueProcessor ? attributeValueProcessor(name, val, jPath) : val;\n } else {\n if (isArray) opts.isArray = isArray;\n if (attributeValueProcessor) opts.attributeValueProcessor = attributeValueProcessor;\n }\n if (transformTagName) opts.transformTagName = transformTagName;\n if (tagValueProcessor) opts.tagValueProcessor = tagValueProcessor;\n const parser = new fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__.XMLParser(opts);\n resolve(parser.parse(xmlDoc));\n } catch (e) {\n reject(e);\n }\n });\n};\n\n//Форматирование даты в формат РФ\nconst formatDateRF = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"DD.MM.YYYY\") : null;\n\n//Форматирование даты и времени в формат РФ\nconst formatDateTimeRF = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"DD.MM.YYYY HH:mm:ss\") : null;\n\n//Форматирование даты в формат JSON (только дата, без времени)\nconst formatDateJSONDateOnly = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"YYYY-MM-DD\") : null;\n\n//Форматирование числа в \"Денежном\" формате РФ\nconst formatNumberRFCurrency = value => hasValue(value) ? new Intl.NumberFormat(\"ru-RU\", {\n minimumFractionDigits: 2\n}).format(value) : null;\n\n//Форматирование текста ошибки\nconst formatErrorMessage = errorMsg => {\n //Инициализируем текст заголовка ошибки\n let text = \"\";\n //Пробуем извлечь заголовок текста ошибки\n try {\n //Если это ошибка Oracle\n if (errorMsg.match(/^ORA-/)) {\n //Считываем первую строку с заголовочным текстом ошибки\n text = errorMsg.match(/^.*(?=(\\nORA-))/)[0];\n //Убираем лишнюю информацию и пробелы\n text = text.replace(/ORA-\\d*:/g, \"\").trim();\n }\n //Если это ошибка PG\n if (errorMsg.match(/^SQL Error/)) {\n //Считываем первую строку с заголовочным текстом ошибки\n text = errorMsg.match(/.*(?=(\\n.*Where)|(.*Where))/)[0];\n //Убираем лишнюю информацию и пробелы\n text = text.replace(/SQL Error \\[\\d*\\]: ERROR:/g, \"\").trim();\n }\n } catch {\n //Если произошла ошибка - оставляем полный текст ошибки\n text = errorMsg;\n }\n //Возвращаем результат\n return {\n text: text || errorMsg,\n fullErrorText: text ? errorMsg : null\n };\n};\n\n//Формирование уникального идентификатора\nconst genGUID = () => \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/core/utils.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ deepCopyObject: () => (/* binding */ deepCopyObject),\n/* harmony export */ formatDateJSONDateOnly: () => (/* binding */ formatDateJSONDateOnly),\n/* harmony export */ formatDateRF: () => (/* binding */ formatDateRF),\n/* harmony export */ formatDateTimeRF: () => (/* binding */ formatDateTimeRF),\n/* harmony export */ formatErrorMessage: () => (/* binding */ formatErrorMessage),\n/* harmony export */ formatNumberRFCurrency: () => (/* binding */ formatNumberRFCurrency),\n/* harmony export */ genGUID: () => (/* binding */ genGUID),\n/* harmony export */ getDisplaySize: () => (/* binding */ getDisplaySize),\n/* harmony export */ hasValue: () => (/* binding */ hasValue),\n/* harmony export */ object2Base64XML: () => (/* binding */ object2Base64XML),\n/* harmony export */ object2XML: () => (/* binding */ object2XML),\n/* harmony export */ xml2JSON: () => (/* binding */ xml2JSON)\n/* harmony export */ });\n/* harmony import */ var fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-xml-parser */ \"./node_modules/fast-xml-parser/src/fxp.js\");\n/* harmony import */ var fast_xml_parser__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_1__);\n/*\r\n Парус 8 - Панели мониторинга\r\n Ядро: Вспомогательные функции\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Конвертация XML в JSON и JSON в XML\n //Работа с датами\n\n//---------\n//Константы\n//---------\n\n//Коды типовых размеров экранов\nconst DISPLAY_SIZE_CODE = {\n XS: \"XS\",\n //eXtra Small - супер маленький экран\n SM: \"SM\",\n //Small - маленький экран\n MD: \"MD\",\n //Middle - средний экран\n LG: \"LG\" //Large - большой экран\n};\n\n//Типовые размеры экранов\nconst DISPLAY_SIZE = {\n [DISPLAY_SIZE_CODE.XS]: {\n WIDTH_FROM: 0,\n WIDTH_TO: 767\n },\n //eXtra Small - супер маленький экран < 768px\n [DISPLAY_SIZE_CODE.SM]: {\n WIDTH_FROM: 768,\n WIDTH_TO: 991\n },\n //Small - маленький экран >= 768px\n [DISPLAY_SIZE_CODE.MD]: {\n WIDTH_FROM: 992,\n WIDTH_TO: 1199\n },\n //Middle - средний экран >= 992px\n [DISPLAY_SIZE_CODE.LG]: {\n WIDTH_FROM: 1200,\n WIDTH_TO: 1000000\n } //Large - большой экран >= 1200px\n};\n\n//Типовые пути конвертации в массив (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_PATHS = [\"XRESPOND.XPAYLOAD.XOUT_ARGUMENTS\", \"XRESPOND.XPAYLOAD.XDATA_GRID.rows\", \"XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef\", \"XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef.values\", \"XRESPOND.XPAYLOAD.XDATA_GRID.groups\", \"XRESPOND.XPAYLOAD.XGANTT.taskAttributes\", \"XRESPOND.XPAYLOAD.XGANTT.taskColors\", \"XRESPOND.XPAYLOAD.XGANTT.tasks\", \"XRESPOND.XPAYLOAD.XGANTT.tasks.dependencies\", \"XRESPOND.XPAYLOAD.XCHART.labels\", \"XRESPOND.XPAYLOAD.XCHART.datasets\", \"XRESPOND.XPAYLOAD.XCHART.datasets.data\", \"XRESPOND.XPAYLOAD.XCHART.datasets.items\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.taskAttributes\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.columns\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.groups\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.tasks\"];\n\n//Типовые шаблоны конвертации в массив (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_PATH_PATTERNS = [/(.*)XDATA_GRID.rows$/, /(.*)XDATA_GRID.columnsDef$/, /(.*)XDATA_GRID.columnsDef.values$/, /(.*)XDATA_GRID.groups$/, /(.*)XGANTT.taskAttributes$/, /(.*)XGANTT.taskColors$/, /(.*)XGANTT.tasks$/, /(.*)XGANTT.tasks.dependencies$/, /(.*)XCHART.labels$/, /(.*)XCHART.datasets$/, /(.*)XCHART.datasets.data$/, /(.*)XCHART.datasets.items$/, /(.*)XCYCLOGRAM.taskAttributes$/, /(.*)XCYCLOGRAM.columns$/, /(.*)XCYCLOGRAM.groups$/, /(.*)XCYCLOGRAM.tasks$/];\n\n//Типовой постфикс тега для массива (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_POSTFIX = \"__SYSTEM__ARRAY__\";\n\n//Типовые шаблоны конвертации значения атрибута в строку (при переводе XML -> JSON)\nconst XML_ATTR_ALWAYS_STR_PATH_PATTERNS = [/(.*)XDATA_GRID.columnsDef.name$/, /(.*)XDATA_GRID.columnsDef.caption$/, /(.*)XDATA_GRID.columnsDef.parent$/, /(.*)XDATA_GRID.groups.name$/, /(.*)XDATA_GRID.groups.caption$/, /(.*)XCYCLOGRAM.columns.name$/, /(.*)XCYCLOGRAM.groups.name$/];\n\n//-----------\n//Тело модуля\n//-----------\n\n//Проверка существования значения\nconst hasValue = value => typeof value !== \"undefined\" && value !== null && value !== \"\";\n\n//Проверка типа устройства\nconst getDisplaySize = () => {\n let res = DISPLAY_SIZE_CODE.MD;\n Object.keys(DISPLAY_SIZE).map(dspl => {\n if (window.innerWidth >= DISPLAY_SIZE[dspl].WIDTH_FROM && window.innerWidth <= DISPLAY_SIZE[dspl].WIDTH_TO) res = dspl;\n });\n return res;\n};\n\n//Глубокое копирование объекта\nconst deepCopyObject = obj => structuredClone ? structuredClone(obj) : JSON.parse(JSON.stringify(obj));\n\n//Конвертация объекта в Base64 XML\nconst object2XML = (obj, builderOptions) => {\n const builder = new fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__.XMLBuilder(builderOptions);\n return builder.build(obj);\n};\n\n//Конвертация объекта в Base64 XML\nconst object2Base64XML = (obj, builderOptions) => btoa(unescape(encodeURIComponent(object2XML(obj, builderOptions))));\n\n//Конвертация XML в JSON\nconst xml2JSON = ({\n xmlDoc,\n isArray,\n transformTagName,\n tagValueProcessor,\n attributeValueProcessor,\n useDefaultPatterns = true\n}) => {\n return new Promise((resolve, reject) => {\n try {\n let opts = {\n ignoreDeclaration: true,\n ignoreAttributes: false,\n parseAttributeValue: true,\n attributeNamePrefix: \"\"\n };\n if (useDefaultPatterns) {\n opts.isArray = (name, jPath, isLeafNode, isAttribute) => XML_ALWAYS_ARRAY_PATHS.indexOf(jPath) !== -1 || XML_ALWAYS_ARRAY_PATH_PATTERNS.some(pattern => pattern.test(jPath)) || jPath.endsWith(XML_ALWAYS_ARRAY_POSTFIX) || (isArray ? isArray(name, jPath, isLeafNode, isAttribute) : undefined);\n opts.attributeValueProcessor = (name, val, jPath) => XML_ATTR_ALWAYS_STR_PATH_PATTERNS.some(pattern => pattern.test(`${jPath}.${name}`)) ? undefined : attributeValueProcessor ? attributeValueProcessor(name, val, jPath) : val;\n } else {\n if (isArray) opts.isArray = isArray;\n if (attributeValueProcessor) opts.attributeValueProcessor = attributeValueProcessor;\n }\n if (transformTagName) opts.transformTagName = transformTagName;\n if (tagValueProcessor) opts.tagValueProcessor = tagValueProcessor;\n const parser = new fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__.XMLParser(opts);\n resolve(parser.parse(xmlDoc));\n } catch (e) {\n reject(e);\n }\n });\n};\n\n//Форматирование даты в формат РФ\nconst formatDateRF = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"DD.MM.YYYY\") : null;\n\n//Форматирование даты и времени в формат РФ\nconst formatDateTimeRF = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"DD.MM.YYYY HH:mm:ss\") : null;\n\n//Форматирование даты в формат JSON (только дата, без времени)\nconst formatDateJSONDateOnly = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"YYYY-MM-DD\") : null;\n\n//Форматирование числа в \"Денежном\" формате РФ\nconst formatNumberRFCurrency = value => hasValue(value) ? new Intl.NumberFormat(\"ru-RU\", {\n minimumFractionDigits: 2\n}).format(value) : null;\n\n//Форматирование текста ошибки\nconst formatErrorMessage = errorMsg => {\n //Инициализируем текст заголовка ошибки\n let text = \"\";\n //Пробуем извлечь заголовок текста ошибки\n try {\n //Если это ошибка Oracle\n if (errorMsg.match(/^ORA-/)) {\n //Считываем первую строку с заголовочным текстом ошибки\n text = errorMsg.match(/^.*(?=(\\nORA-))/)[0];\n //Убираем лишнюю информацию и пробелы\n text = text.replace(/ORA-\\d*:/g, \"\").trim();\n }\n //Если это ошибка PG\n if (errorMsg.match(/^SQL Error/)) {\n //Считываем первую строку с заголовочным текстом ошибки\n text = errorMsg.match(/.*(?=(\\n.*Where)|(.*Where))/)[0];\n //Убираем лишнюю информацию и пробелы\n text = text.replace(/SQL Error \\[\\d*\\]: ERROR:/g, \"\").trim();\n }\n } catch {\n //Если произошла ошибка - оставляем полный текст ошибки\n text = errorMsg;\n }\n //Возвращаем результат\n return {\n text: text || errorMsg,\n fullErrorText: text ? errorMsg : null\n };\n};\n\n//Формирование уникального идентификатора\nconst genGUID = () => \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/core/utils.js?"); /***/ }), @@ -455,7 +455,249 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac \***********************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -eval("var map = {\n\t\"./dummy\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/dummy\": \"./app/panels/dummy/dummy.js\",\n\t\"./dummy/dummy.js\": \"./app/panels/dummy/dummy.js\",\n\t\"./dummy/index\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/index.js\": \"./app/panels/dummy/index.js\",\n\t\"./eqs_prfrm\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/eqs_prfrm\": \"./app/panels/eqs_prfrm/eqs_prfrm.js\",\n\t\"./eqs_prfrm/eqs_prfrm.js\": \"./app/panels/eqs_prfrm/eqs_prfrm.js\",\n\t\"./eqs_prfrm/filter\": \"./app/panels/eqs_prfrm/filter.js\",\n\t\"./eqs_prfrm/filter.js\": \"./app/panels/eqs_prfrm/filter.js\",\n\t\"./eqs_prfrm/filter_dialog\": \"./app/panels/eqs_prfrm/filter_dialog.js\",\n\t\"./eqs_prfrm/filter_dialog.js\": \"./app/panels/eqs_prfrm/filter_dialog.js\",\n\t\"./eqs_prfrm/filter_input_field\": \"./app/panels/eqs_prfrm/filter_input_field.js\",\n\t\"./eqs_prfrm/filter_input_field.js\": \"./app/panels/eqs_prfrm/filter_input_field.js\",\n\t\"./eqs_prfrm/hooks\": \"./app/panels/eqs_prfrm/hooks.js\",\n\t\"./eqs_prfrm/hooks.js\": \"./app/panels/eqs_prfrm/hooks.js\",\n\t\"./eqs_prfrm/index\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/index.js\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/layouts\": \"./app/panels/eqs_prfrm/layouts.js\",\n\t\"./eqs_prfrm/layouts.js\": \"./app/panels/eqs_prfrm/layouts.js\",\n\t\"./mech_rec_assembly_mon\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/components/plan_detail\": \"./app/panels/mech_rec_assembly_mon/components/plan_detail.js\",\n\t\"./mech_rec_assembly_mon/components/plan_detail.js\": \"./app/panels/mech_rec_assembly_mon/components/plan_detail.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list\": \"./app/panels/mech_rec_assembly_mon/components/plans_list.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list.js\": \"./app/panels/mech_rec_assembly_mon/components/plans_list.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list_item\": \"./app/panels/mech_rec_assembly_mon/components/plans_list_item.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list_item.js\": \"./app/panels/mech_rec_assembly_mon/components/plans_list_item.js\",\n\t\"./mech_rec_assembly_mon/components/progress_box\": \"./app/panels/mech_rec_assembly_mon/components/progress_box.js\",\n\t\"./mech_rec_assembly_mon/components/progress_box.js\": \"./app/panels/mech_rec_assembly_mon/components/progress_box.js\",\n\t\"./mech_rec_assembly_mon/hooks\": \"./app/panels/mech_rec_assembly_mon/hooks.js\",\n\t\"./mech_rec_assembly_mon/hooks.js\": \"./app/panels/mech_rec_assembly_mon/hooks.js\",\n\t\"./mech_rec_assembly_mon/index\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/index.js\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/mech_rec_assembly_mon\": \"./app/panels/mech_rec_assembly_mon/mech_rec_assembly_mon.js\",\n\t\"./mech_rec_assembly_mon/mech_rec_assembly_mon.js\": \"./app/panels/mech_rec_assembly_mon/mech_rec_assembly_mon.js\",\n\t\"./mech_rec_assembly_mon/styles/themes\": \"./app/panels/mech_rec_assembly_mon/styles/themes.js\",\n\t\"./mech_rec_assembly_mon/styles/themes.js\": \"./app/panels/mech_rec_assembly_mon/styles/themes.js\",\n\t\"./mech_rec_cost_jobs_manage\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/fcjobssp\": \"./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js\",\n\t\"./mech_rec_cost_jobs_manage/fcjobssp.js\": \"./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js\",\n\t\"./mech_rec_cost_jobs_manage/hooks\": \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage/hooks.js\": \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage/index\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/index.js\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage\": \"./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\",\n\t\"./mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\": \"./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\",\n\t\"./mech_rec_cost_jobs_manage_mp\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/hooks\": \"./app/panels/mech_rec_cost_jobs_manage_mp/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/hooks.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/index\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/index.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp\": \"./app/panels/mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/worker_include_dialog\": \"./app/panels/mech_rec_cost_jobs_manage_mp/worker_include_dialog.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/worker_include_dialog.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/worker_include_dialog.js\",\n\t\"./mech_rec_cost_prod_plans\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/backend_dg\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/backend_dg.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcroutlst\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcroutlst.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcroutlst.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcroutlst.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/goodparties\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/goodparties.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/goodparties.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/goodparties.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/incomefromdeps\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\",\n\t\"./mech_rec_cost_prod_plans/hooks\": \"./app/panels/mech_rec_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_cost_prod_plans/hooks.js\": \"./app/panels/mech_rec_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_cost_prod_plans/index\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/index.js\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/mech_rec_cost_prod_plans\": \"./app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\",\n\t\"./mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\": \"./app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\",\n\t\"./mech_rec_dept_cost_jobs\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/components/filter\": \"./app/panels/mech_rec_dept_cost_jobs/components/filter.js\",\n\t\"./mech_rec_dept_cost_jobs/components/filter.js\": \"./app/panels/mech_rec_dept_cost_jobs/components/filter.js\",\n\t\"./mech_rec_dept_cost_jobs/components/ins_department_dg\": \"./app/panels/mech_rec_dept_cost_jobs/components/ins_department_dg.js\",\n\t\"./mech_rec_dept_cost_jobs/components/ins_department_dg.js\": \"./app/panels/mech_rec_dept_cost_jobs/components/ins_department_dg.js\",\n\t\"./mech_rec_dept_cost_jobs/hooks\": \"./app/panels/mech_rec_dept_cost_jobs/hooks.js\",\n\t\"./mech_rec_dept_cost_jobs/hooks.js\": \"./app/panels/mech_rec_dept_cost_jobs/hooks.js\",\n\t\"./mech_rec_dept_cost_jobs/index\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/index.js\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs\": \"./app/panels/mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\",\n\t\"./mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\": \"./app/panels/mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\",\n\t\"./mech_rec_dept_cost_prod_plans\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlst\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlst.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlst.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlst.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlstsp\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlstsp.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlstsp.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlstsp.js\",\n\t\"./mech_rec_dept_cost_prod_plans/hooks\": \"./app/panels/mech_rec_dept_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_dept_cost_prod_plans/hooks.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_dept_cost_prod_plans/incomefromdeps\": \"./app/panels/mech_rec_dept_cost_prod_plans/incomefromdeps.js\",\n\t\"./mech_rec_dept_cost_prod_plans/incomefromdeps.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/incomefromdeps.js\",\n\t\"./mech_rec_dept_cost_prod_plans/index\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/index.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans\": \"./app/panels/mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\",\n\t\"./mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\",\n\t\"./mech_rec_help\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/img/1_1.png\": \"./app/panels/mech_rec_help/img/1_1.png\",\n\t\"./mech_rec_help/img/1_2.png\": \"./app/panels/mech_rec_help/img/1_2.png\",\n\t\"./mech_rec_help/img/1_3.png\": \"./app/panels/mech_rec_help/img/1_3.png\",\n\t\"./mech_rec_help/img/1_4.png\": \"./app/panels/mech_rec_help/img/1_4.png\",\n\t\"./mech_rec_help/img/1_5.png\": \"./app/panels/mech_rec_help/img/1_5.png\",\n\t\"./mech_rec_help/img/21_1.png\": \"./app/panels/mech_rec_help/img/21_1.png\",\n\t\"./mech_rec_help/img/21_2.png\": \"./app/panels/mech_rec_help/img/21_2.png\",\n\t\"./mech_rec_help/img/21_3.png\": \"./app/panels/mech_rec_help/img/21_3.png\",\n\t\"./mech_rec_help/img/2_1.png\": \"./app/panels/mech_rec_help/img/2_1.png\",\n\t\"./mech_rec_help/img/2_2.png\": \"./app/panels/mech_rec_help/img/2_2.png\",\n\t\"./mech_rec_help/img/2_3.png\": \"./app/panels/mech_rec_help/img/2_3.png\",\n\t\"./mech_rec_help/img/2_4.png\": \"./app/panels/mech_rec_help/img/2_4.png\",\n\t\"./mech_rec_help/img/2_5.png\": \"./app/panels/mech_rec_help/img/2_5.png\",\n\t\"./mech_rec_help/img/31_1.png\": \"./app/panels/mech_rec_help/img/31_1.png\",\n\t\"./mech_rec_help/img/31_10.png\": \"./app/panels/mech_rec_help/img/31_10.png\",\n\t\"./mech_rec_help/img/31_2.png\": \"./app/panels/mech_rec_help/img/31_2.png\",\n\t\"./mech_rec_help/img/31_3.png\": \"./app/panels/mech_rec_help/img/31_3.png\",\n\t\"./mech_rec_help/img/31_4.png\": \"./app/panels/mech_rec_help/img/31_4.png\",\n\t\"./mech_rec_help/img/31_5.png\": \"./app/panels/mech_rec_help/img/31_5.png\",\n\t\"./mech_rec_help/img/31_6.png\": \"./app/panels/mech_rec_help/img/31_6.png\",\n\t\"./mech_rec_help/img/31_7.png\": \"./app/panels/mech_rec_help/img/31_7.png\",\n\t\"./mech_rec_help/img/31_8.png\": \"./app/panels/mech_rec_help/img/31_8.png\",\n\t\"./mech_rec_help/img/31_9.png\": \"./app/panels/mech_rec_help/img/31_9.png\",\n\t\"./mech_rec_help/img/32_1.png\": \"./app/panels/mech_rec_help/img/32_1.png\",\n\t\"./mech_rec_help/img/32_2.png\": \"./app/panels/mech_rec_help/img/32_2.png\",\n\t\"./mech_rec_help/img/32_3.png\": \"./app/panels/mech_rec_help/img/32_3.png\",\n\t\"./mech_rec_help/img/33_1.png\": \"./app/panels/mech_rec_help/img/33_1.png\",\n\t\"./mech_rec_help/img/33_2.png\": \"./app/panels/mech_rec_help/img/33_2.png\",\n\t\"./mech_rec_help/img/33_3.png\": \"./app/panels/mech_rec_help/img/33_3.png\",\n\t\"./mech_rec_help/img/33_4.png\": \"./app/panels/mech_rec_help/img/33_4.png\",\n\t\"./mech_rec_help/img/34_1.png\": \"./app/panels/mech_rec_help/img/34_1.png\",\n\t\"./mech_rec_help/img/34_2.png\": \"./app/panels/mech_rec_help/img/34_2.png\",\n\t\"./mech_rec_help/img/34_3.png\": \"./app/panels/mech_rec_help/img/34_3.png\",\n\t\"./mech_rec_help/img/34_4.png\": \"./app/panels/mech_rec_help/img/34_4.png\",\n\t\"./mech_rec_help/img/34_5.png\": \"./app/panels/mech_rec_help/img/34_5.png\",\n\t\"./mech_rec_help/img/34_6.png\": \"./app/panels/mech_rec_help/img/34_6.png\",\n\t\"./mech_rec_help/img/34_7.png\": \"./app/panels/mech_rec_help/img/34_7.png\",\n\t\"./mech_rec_help/img/34_8.png\": \"./app/panels/mech_rec_help/img/34_8.png\",\n\t\"./mech_rec_help/img/35_1.png\": \"./app/panels/mech_rec_help/img/35_1.png\",\n\t\"./mech_rec_help/img/3_1.png\": \"./app/panels/mech_rec_help/img/3_1.png\",\n\t\"./mech_rec_help/img/410_1.png\": \"./app/panels/mech_rec_help/img/410_1.png\",\n\t\"./mech_rec_help/img/410_2.png\": \"./app/panels/mech_rec_help/img/410_2.png\",\n\t\"./mech_rec_help/img/410_3.png\": \"./app/panels/mech_rec_help/img/410_3.png\",\n\t\"./mech_rec_help/img/410_4.png\": \"./app/panels/mech_rec_help/img/410_4.png\",\n\t\"./mech_rec_help/img/410_5.png\": \"./app/panels/mech_rec_help/img/410_5.png\",\n\t\"./mech_rec_help/img/410_6.png\": \"./app/panels/mech_rec_help/img/410_6.png\",\n\t\"./mech_rec_help/img/410_7.png\": \"./app/panels/mech_rec_help/img/410_7.png\",\n\t\"./mech_rec_help/img/411_1.png\": \"./app/panels/mech_rec_help/img/411_1.png\",\n\t\"./mech_rec_help/img/411_2.png\": \"./app/panels/mech_rec_help/img/411_2.png\",\n\t\"./mech_rec_help/img/411_3.png\": \"./app/panels/mech_rec_help/img/411_3.png\",\n\t\"./mech_rec_help/img/411_4.png\": \"./app/panels/mech_rec_help/img/411_4.png\",\n\t\"./mech_rec_help/img/412_1.png\": \"./app/panels/mech_rec_help/img/412_1.png\",\n\t\"./mech_rec_help/img/412_2.png\": \"./app/panels/mech_rec_help/img/412_2.png\",\n\t\"./mech_rec_help/img/412_3.png\": \"./app/panels/mech_rec_help/img/412_3.png\",\n\t\"./mech_rec_help/img/412_4.png\": \"./app/panels/mech_rec_help/img/412_4.png\",\n\t\"./mech_rec_help/img/413_1.png\": \"./app/panels/mech_rec_help/img/413_1.png\",\n\t\"./mech_rec_help/img/413_2.png\": \"./app/panels/mech_rec_help/img/413_2.png\",\n\t\"./mech_rec_help/img/413_3.png\": \"./app/panels/mech_rec_help/img/413_3.png\",\n\t\"./mech_rec_help/img/413_4.png\": \"./app/panels/mech_rec_help/img/413_4.png\",\n\t\"./mech_rec_help/img/413_5.png\": \"./app/panels/mech_rec_help/img/413_5.png\",\n\t\"./mech_rec_help/img/414_1.png\": \"./app/panels/mech_rec_help/img/414_1.png\",\n\t\"./mech_rec_help/img/414_2.png\": \"./app/panels/mech_rec_help/img/414_2.png\",\n\t\"./mech_rec_help/img/414_3.png\": \"./app/panels/mech_rec_help/img/414_3.png\",\n\t\"./mech_rec_help/img/41_1.png\": \"./app/panels/mech_rec_help/img/41_1.png\",\n\t\"./mech_rec_help/img/41_10.png\": \"./app/panels/mech_rec_help/img/41_10.png\",\n\t\"./mech_rec_help/img/41_11.png\": \"./app/panels/mech_rec_help/img/41_11.png\",\n\t\"./mech_rec_help/img/41_12.png\": \"./app/panels/mech_rec_help/img/41_12.png\",\n\t\"./mech_rec_help/img/41_2.png\": \"./app/panels/mech_rec_help/img/41_2.png\",\n\t\"./mech_rec_help/img/41_3.png\": \"./app/panels/mech_rec_help/img/41_3.png\",\n\t\"./mech_rec_help/img/41_4.png\": \"./app/panels/mech_rec_help/img/41_4.png\",\n\t\"./mech_rec_help/img/41_5.png\": \"./app/panels/mech_rec_help/img/41_5.png\",\n\t\"./mech_rec_help/img/41_6.png\": \"./app/panels/mech_rec_help/img/41_6.png\",\n\t\"./mech_rec_help/img/41_7.png\": \"./app/panels/mech_rec_help/img/41_7.png\",\n\t\"./mech_rec_help/img/41_8.png\": \"./app/panels/mech_rec_help/img/41_8.png\",\n\t\"./mech_rec_help/img/41_9.png\": \"./app/panels/mech_rec_help/img/41_9.png\",\n\t\"./mech_rec_help/img/42_1.png\": \"./app/panels/mech_rec_help/img/42_1.png\",\n\t\"./mech_rec_help/img/42_2.png\": \"./app/panels/mech_rec_help/img/42_2.png\",\n\t\"./mech_rec_help/img/42_3.png\": \"./app/panels/mech_rec_help/img/42_3.png\",\n\t\"./mech_rec_help/img/42_4.png\": \"./app/panels/mech_rec_help/img/42_4.png\",\n\t\"./mech_rec_help/img/43_1.png\": \"./app/panels/mech_rec_help/img/43_1.png\",\n\t\"./mech_rec_help/img/43_2.png\": \"./app/panels/mech_rec_help/img/43_2.png\",\n\t\"./mech_rec_help/img/43_3.png\": \"./app/panels/mech_rec_help/img/43_3.png\",\n\t\"./mech_rec_help/img/43_4.png\": \"./app/panels/mech_rec_help/img/43_4.png\",\n\t\"./mech_rec_help/img/43_5.png\": \"./app/panels/mech_rec_help/img/43_5.png\",\n\t\"./mech_rec_help/img/43_6.png\": \"./app/panels/mech_rec_help/img/43_6.png\",\n\t\"./mech_rec_help/img/43_7.png\": \"./app/panels/mech_rec_help/img/43_7.png\",\n\t\"./mech_rec_help/img/43_8.png\": \"./app/panels/mech_rec_help/img/43_8.png\",\n\t\"./mech_rec_help/img/44_1.png\": \"./app/panels/mech_rec_help/img/44_1.png\",\n\t\"./mech_rec_help/img/44_10.png\": \"./app/panels/mech_rec_help/img/44_10.png\",\n\t\"./mech_rec_help/img/44_2.png\": \"./app/panels/mech_rec_help/img/44_2.png\",\n\t\"./mech_rec_help/img/44_3.png\": \"./app/panels/mech_rec_help/img/44_3.png\",\n\t\"./mech_rec_help/img/44_4.png\": \"./app/panels/mech_rec_help/img/44_4.png\",\n\t\"./mech_rec_help/img/44_5.png\": \"./app/panels/mech_rec_help/img/44_5.png\",\n\t\"./mech_rec_help/img/44_6.png\": \"./app/panels/mech_rec_help/img/44_6.png\",\n\t\"./mech_rec_help/img/44_7.png\": \"./app/panels/mech_rec_help/img/44_7.png\",\n\t\"./mech_rec_help/img/44_8.png\": \"./app/panels/mech_rec_help/img/44_8.png\",\n\t\"./mech_rec_help/img/44_9.png\": \"./app/panels/mech_rec_help/img/44_9.png\",\n\t\"./mech_rec_help/img/45_1.png\": \"./app/panels/mech_rec_help/img/45_1.png\",\n\t\"./mech_rec_help/img/45_10.png\": \"./app/panels/mech_rec_help/img/45_10.png\",\n\t\"./mech_rec_help/img/45_2.png\": \"./app/panels/mech_rec_help/img/45_2.png\",\n\t\"./mech_rec_help/img/45_3.png\": \"./app/panels/mech_rec_help/img/45_3.png\",\n\t\"./mech_rec_help/img/45_4.png\": \"./app/panels/mech_rec_help/img/45_4.png\",\n\t\"./mech_rec_help/img/45_5.png\": \"./app/panels/mech_rec_help/img/45_5.png\",\n\t\"./mech_rec_help/img/45_6.png\": \"./app/panels/mech_rec_help/img/45_6.png\",\n\t\"./mech_rec_help/img/45_7.png\": \"./app/panels/mech_rec_help/img/45_7.png\",\n\t\"./mech_rec_help/img/45_8.png\": \"./app/panels/mech_rec_help/img/45_8.png\",\n\t\"./mech_rec_help/img/45_9.png\": \"./app/panels/mech_rec_help/img/45_9.png\",\n\t\"./mech_rec_help/img/46_1.png\": \"./app/panels/mech_rec_help/img/46_1.png\",\n\t\"./mech_rec_help/img/46_2.png\": \"./app/panels/mech_rec_help/img/46_2.png\",\n\t\"./mech_rec_help/img/46_3.png\": \"./app/panels/mech_rec_help/img/46_3.png\",\n\t\"./mech_rec_help/img/46_4.png\": \"./app/panels/mech_rec_help/img/46_4.png\",\n\t\"./mech_rec_help/img/46_5.png\": \"./app/panels/mech_rec_help/img/46_5.png\",\n\t\"./mech_rec_help/img/46_6.png\": \"./app/panels/mech_rec_help/img/46_6.png\",\n\t\"./mech_rec_help/img/47_1.png\": \"./app/panels/mech_rec_help/img/47_1.png\",\n\t\"./mech_rec_help/img/47_10.png\": \"./app/panels/mech_rec_help/img/47_10.png\",\n\t\"./mech_rec_help/img/47_11.png\": \"./app/panels/mech_rec_help/img/47_11.png\",\n\t\"./mech_rec_help/img/47_12.png\": \"./app/panels/mech_rec_help/img/47_12.png\",\n\t\"./mech_rec_help/img/47_2.png\": \"./app/panels/mech_rec_help/img/47_2.png\",\n\t\"./mech_rec_help/img/47_3.png\": \"./app/panels/mech_rec_help/img/47_3.png\",\n\t\"./mech_rec_help/img/47_4.png\": \"./app/panels/mech_rec_help/img/47_4.png\",\n\t\"./mech_rec_help/img/47_5.png\": \"./app/panels/mech_rec_help/img/47_5.png\",\n\t\"./mech_rec_help/img/47_6.png\": \"./app/panels/mech_rec_help/img/47_6.png\",\n\t\"./mech_rec_help/img/47_7.png\": \"./app/panels/mech_rec_help/img/47_7.png\",\n\t\"./mech_rec_help/img/47_8.png\": \"./app/panels/mech_rec_help/img/47_8.png\",\n\t\"./mech_rec_help/img/47_9.png\": \"./app/panels/mech_rec_help/img/47_9.png\",\n\t\"./mech_rec_help/img/48_1.png\": \"./app/panels/mech_rec_help/img/48_1.png\",\n\t\"./mech_rec_help/img/48_2.png\": \"./app/panels/mech_rec_help/img/48_2.png\",\n\t\"./mech_rec_help/img/48_3.png\": \"./app/panels/mech_rec_help/img/48_3.png\",\n\t\"./mech_rec_help/img/48_4.png\": \"./app/panels/mech_rec_help/img/48_4.png\",\n\t\"./mech_rec_help/img/49_1.png\": \"./app/panels/mech_rec_help/img/49_1.png\",\n\t\"./mech_rec_help/img/49_2.png\": \"./app/panels/mech_rec_help/img/49_2.png\",\n\t\"./mech_rec_help/img/49_3.png\": \"./app/panels/mech_rec_help/img/49_3.png\",\n\t\"./mech_rec_help/img/add1_1.png\": \"./app/panels/mech_rec_help/img/add1_1.png\",\n\t\"./mech_rec_help/img/add1_2.png\": \"./app/panels/mech_rec_help/img/add1_2.png\",\n\t\"./mech_rec_help/img/add1_3.png\": \"./app/panels/mech_rec_help/img/add1_3.png\",\n\t\"./mech_rec_help/img/add1_4.png\": \"./app/panels/mech_rec_help/img/add1_4.png\",\n\t\"./mech_rec_help/img/add1_5.png\": \"./app/panels/mech_rec_help/img/add1_5.png\",\n\t\"./mech_rec_help/img/add1_6.png\": \"./app/panels/mech_rec_help/img/add1_6.png\",\n\t\"./mech_rec_help/img/add1_7.png\": \"./app/panels/mech_rec_help/img/add1_7.png\",\n\t\"./mech_rec_help/img/add1_8.png\": \"./app/panels/mech_rec_help/img/add1_8.png\",\n\t\"./mech_rec_help/img/add1_9.png\": \"./app/panels/mech_rec_help/img/add1_9.png\",\n\t\"./mech_rec_help/index\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/index.js\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/mech_rec_help\": \"./app/panels/mech_rec_help/mech_rec_help.js\",\n\t\"./mech_rec_help/mech_rec_help.js\": \"./app/panels/mech_rec_help/mech_rec_help.js\",\n\t\"./panels_editor\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/component_editor\": \"./app/panels/panels_editor/component_editor.js\",\n\t\"./panels_editor/component_editor.js\": \"./app/panels/panels_editor/component_editor.js\",\n\t\"./panels_editor/component_view\": \"./app/panels/panels_editor/component_view.js\",\n\t\"./panels_editor/component_view.js\": \"./app/panels/panels_editor/component_view.js\",\n\t\"./panels_editor/components/chart/editor\": \"./app/panels/panels_editor/components/chart/editor.js\",\n\t\"./panels_editor/components/chart/editor.js\": \"./app/panels/panels_editor/components/chart/editor.js\",\n\t\"./panels_editor/components/chart/view\": \"./app/panels/panels_editor/components/chart/view.js\",\n\t\"./panels_editor/components/chart/view.js\": \"./app/panels/panels_editor/components/chart/view.js\",\n\t\"./panels_editor/components/components\": \"./app/panels/panels_editor/components/components.js\",\n\t\"./panels_editor/components/components.js\": \"./app/panels/panels_editor/components/components.js\",\n\t\"./panels_editor/components/components_hooks\": \"./app/panels/panels_editor/components/components_hooks.js\",\n\t\"./panels_editor/components/components_hooks.js\": \"./app/panels/panels_editor/components/components_hooks.js\",\n\t\"./panels_editor/components/form/common\": \"./app/panels/panels_editor/components/form/common.js\",\n\t\"./panels_editor/components/form/common.js\": \"./app/panels/panels_editor/components/form/common.js\",\n\t\"./panels_editor/components/form/editor\": \"./app/panels/panels_editor/components/form/editor.js\",\n\t\"./panels_editor/components/form/editor.js\": \"./app/panels/panels_editor/components/form/editor.js\",\n\t\"./panels_editor/components/form/view\": \"./app/panels/panels_editor/components/form/view.js\",\n\t\"./panels_editor/components/form/view.js\": \"./app/panels/panels_editor/components/form/view.js\",\n\t\"./panels_editor/components/indicator/editor\": \"./app/panels/panels_editor/components/indicator/editor.js\",\n\t\"./panels_editor/components/indicator/editor.js\": \"./app/panels/panels_editor/components/indicator/editor.js\",\n\t\"./panels_editor/components/indicator/view\": \"./app/panels/panels_editor/components/indicator/view.js\",\n\t\"./panels_editor/components/indicator/view.js\": \"./app/panels/panels_editor/components/indicator/view.js\",\n\t\"./panels_editor/components/table/editor\": \"./app/panels/panels_editor/components/table/editor.js\",\n\t\"./panels_editor/components/table/editor.js\": \"./app/panels/panels_editor/components/table/editor.js\",\n\t\"./panels_editor/components/table/view\": \"./app/panels/panels_editor/components/table/view.js\",\n\t\"./panels_editor/components/table/view.js\": \"./app/panels/panels_editor/components/table/view.js\",\n\t\"./panels_editor/index\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/index.js\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/layout_item\": \"./app/panels/panels_editor/layout_item.js\",\n\t\"./panels_editor/layout_item.js\": \"./app/panels/panels_editor/layout_item.js\",\n\t\"./panels_editor/panels_editor\": \"./app/panels/panels_editor/panels_editor.js\",\n\t\"./panels_editor/panels_editor.css\": \"./app/panels/panels_editor/panels_editor.css\",\n\t\"./panels_editor/panels_editor.js\": \"./app/panels/panels_editor/panels_editor.js\",\n\t\"./prj_fin\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/index\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/index.js\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/layouts\": \"./app/panels/prj_fin/layouts.js\",\n\t\"./prj_fin/layouts.js\": \"./app/panels/prj_fin/layouts.js\",\n\t\"./prj_fin/prj_fin\": \"./app/panels/prj_fin/prj_fin.js\",\n\t\"./prj_fin/prj_fin.js\": \"./app/panels/prj_fin/prj_fin.js\",\n\t\"./prj_fin/projects\": \"./app/panels/prj_fin/projects.js\",\n\t\"./prj_fin/projects.js\": \"./app/panels/prj_fin/projects.js\",\n\t\"./prj_fin/stage_arts\": \"./app/panels/prj_fin/stage_arts.js\",\n\t\"./prj_fin/stage_arts.js\": \"./app/panels/prj_fin/stage_arts.js\",\n\t\"./prj_fin/stage_contracts\": \"./app/panels/prj_fin/stage_contracts.js\",\n\t\"./prj_fin/stage_contracts.js\": \"./app/panels/prj_fin/stage_contracts.js\",\n\t\"./prj_fin/stages\": \"./app/panels/prj_fin/stages.js\",\n\t\"./prj_fin/stages.js\": \"./app/panels/prj_fin/stages.js\",\n\t\"./prj_graph\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/index\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/index.js\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/layouts\": \"./app/panels/prj_graph/layouts.js\",\n\t\"./prj_graph/layouts.js\": \"./app/panels/prj_graph/layouts.js\",\n\t\"./prj_graph/prj_graph\": \"./app/panels/prj_graph/prj_graph.js\",\n\t\"./prj_graph/prj_graph.js\": \"./app/panels/prj_graph/prj_graph.js\",\n\t\"./prj_help\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/img/21_1.png\": \"./app/panels/prj_help/img/21_1.png\",\n\t\"./prj_help/img/21_2.png\": \"./app/panels/prj_help/img/21_2.png\",\n\t\"./prj_help/img/21_3.png\": \"./app/panels/prj_help/img/21_3.png\",\n\t\"./prj_help/img/21_4.png\": \"./app/panels/prj_help/img/21_4.png\",\n\t\"./prj_help/img/21_5.png\": \"./app/panels/prj_help/img/21_5.png\",\n\t\"./prj_help/img/22_1.png\": \"./app/panels/prj_help/img/22_1.png\",\n\t\"./prj_help/img/22_2.png\": \"./app/panels/prj_help/img/22_2.png\",\n\t\"./prj_help/img/22_3.png\": \"./app/panels/prj_help/img/22_3.png\",\n\t\"./prj_help/img/23_1.png\": \"./app/panels/prj_help/img/23_1.png\",\n\t\"./prj_help/img/23_2.png\": \"./app/panels/prj_help/img/23_2.png\",\n\t\"./prj_help/img/24_1.png\": \"./app/panels/prj_help/img/24_1.png\",\n\t\"./prj_help/img/24_2.png\": \"./app/panels/prj_help/img/24_2.png\",\n\t\"./prj_help/img/24_3.png\": \"./app/panels/prj_help/img/24_3.png\",\n\t\"./prj_help/img/24_4.png\": \"./app/panels/prj_help/img/24_4.png\",\n\t\"./prj_help/img/24_5.png\": \"./app/panels/prj_help/img/24_5.png\",\n\t\"./prj_help/img/3_1.png\": \"./app/panels/prj_help/img/3_1.png\",\n\t\"./prj_help/img/3_2.png\": \"./app/panels/prj_help/img/3_2.png\",\n\t\"./prj_help/img/3_3.png\": \"./app/panels/prj_help/img/3_3.png\",\n\t\"./prj_help/img/3_4.png\": \"./app/panels/prj_help/img/3_4.png\",\n\t\"./prj_help/img/3_5.png\": \"./app/panels/prj_help/img/3_5.png\",\n\t\"./prj_help/img/3_6.png\": \"./app/panels/prj_help/img/3_6.png\",\n\t\"./prj_help/img/41_1.png\": \"./app/panels/prj_help/img/41_1.png\",\n\t\"./prj_help/img/41_2.png\": \"./app/panels/prj_help/img/41_2.png\",\n\t\"./prj_help/img/42_1.png\": \"./app/panels/prj_help/img/42_1.png\",\n\t\"./prj_help/img/42_2.png\": \"./app/panels/prj_help/img/42_2.png\",\n\t\"./prj_help/img/43_1.png\": \"./app/panels/prj_help/img/43_1.png\",\n\t\"./prj_help/img/43_2.png\": \"./app/panels/prj_help/img/43_2.png\",\n\t\"./prj_help/img/43_3.png\": \"./app/panels/prj_help/img/43_3.png\",\n\t\"./prj_help/img/43_4.png\": \"./app/panels/prj_help/img/43_4.png\",\n\t\"./prj_help/img/44_1.png\": \"./app/panels/prj_help/img/44_1.png\",\n\t\"./prj_help/img/44_2.png\": \"./app/panels/prj_help/img/44_2.png\",\n\t\"./prj_help/img/44_3.png\": \"./app/panels/prj_help/img/44_3.png\",\n\t\"./prj_help/img/44_4.png\": \"./app/panels/prj_help/img/44_4.png\",\n\t\"./prj_help/img/45_1.png\": \"./app/panels/prj_help/img/45_1.png\",\n\t\"./prj_help/img/46_1.png\": \"./app/panels/prj_help/img/46_1.png\",\n\t\"./prj_help/img/47_1.png\": \"./app/panels/prj_help/img/47_1.png\",\n\t\"./prj_help/img/71_1.png\": \"./app/panels/prj_help/img/71_1.png\",\n\t\"./prj_help/img/72_1.png\": \"./app/panels/prj_help/img/72_1.png\",\n\t\"./prj_help/img/72_2.png\": \"./app/panels/prj_help/img/72_2.png\",\n\t\"./prj_help/img/72_3.png\": \"./app/panels/prj_help/img/72_3.png\",\n\t\"./prj_help/img/74_1.png\": \"./app/panels/prj_help/img/74_1.png\",\n\t\"./prj_help/index\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/index.js\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/prj_help\": \"./app/panels/prj_help/prj_help.js\",\n\t\"./prj_help/prj_help.js\": \"./app/panels/prj_help/prj_help.js\",\n\t\"./prj_info\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/filter\": \"./app/panels/prj_info/filter.js\",\n\t\"./prj_info/filter.js\": \"./app/panels/prj_info/filter.js\",\n\t\"./prj_info/filter_dialog\": \"./app/panels/prj_info/filter_dialog.js\",\n\t\"./prj_info/filter_dialog.js\": \"./app/panels/prj_info/filter_dialog.js\",\n\t\"./prj_info/index\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/index.js\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/layouts\": \"./app/panels/prj_info/layouts.js\",\n\t\"./prj_info/layouts.js\": \"./app/panels/prj_info/layouts.js\",\n\t\"./prj_info/prj_info\": \"./app/panels/prj_info/prj_info.js\",\n\t\"./prj_info/prj_info.js\": \"./app/panels/prj_info/prj_info.js\",\n\t\"./prj_info/projects\": \"./app/panels/prj_info/projects.js\",\n\t\"./prj_info/projects.js\": \"./app/panels/prj_info/projects.js\",\n\t\"./prj_info/projects_hooks\": \"./app/panels/prj_info/projects_hooks.js\",\n\t\"./prj_info/projects_hooks.js\": \"./app/panels/prj_info/projects_hooks.js\",\n\t\"./prj_info/projects_layouts\": \"./app/panels/prj_info/projects_layouts.js\",\n\t\"./prj_info/projects_layouts.js\": \"./app/panels/prj_info/projects_layouts.js\",\n\t\"./prj_info/stage_detail\": \"./app/panels/prj_info/stage_detail.js\",\n\t\"./prj_info/stage_detail.js\": \"./app/panels/prj_info/stage_detail.js\",\n\t\"./prj_info/stage_detail_hooks\": \"./app/panels/prj_info/stage_detail_hooks.js\",\n\t\"./prj_info/stage_detail_hooks.js\": \"./app/panels/prj_info/stage_detail_hooks.js\",\n\t\"./prj_info/stage_detail_layouts\": \"./app/panels/prj_info/stage_detail_layouts.js\",\n\t\"./prj_info/stage_detail_layouts.js\": \"./app/panels/prj_info/stage_detail_layouts.js\",\n\t\"./prj_info/stages\": \"./app/panels/prj_info/stages.js\",\n\t\"./prj_info/stages.js\": \"./app/panels/prj_info/stages.js\",\n\t\"./prj_info/stages_hooks\": \"./app/panels/prj_info/stages_hooks.js\",\n\t\"./prj_info/stages_hooks.js\": \"./app/panels/prj_info/stages_hooks.js\",\n\t\"./prj_info/stages_layouts\": \"./app/panels/prj_info/stages_layouts.js\",\n\t\"./prj_info/stages_layouts.js\": \"./app/panels/prj_info/stages_layouts.js\",\n\t\"./prj_jobs\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/index\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/index.js\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/lab_fact_rpt_dtl\": \"./app/panels/prj_jobs/lab_fact_rpt_dtl.js\",\n\t\"./prj_jobs/lab_fact_rpt_dtl.js\": \"./app/panels/prj_jobs/lab_fact_rpt_dtl.js\",\n\t\"./prj_jobs/lab_plan_fot_dtl\": \"./app/panels/prj_jobs/lab_plan_fot_dtl.js\",\n\t\"./prj_jobs/lab_plan_fot_dtl.js\": \"./app/panels/prj_jobs/lab_plan_fot_dtl.js\",\n\t\"./prj_jobs/lab_plan_jobs_dtl\": \"./app/panels/prj_jobs/lab_plan_jobs_dtl.js\",\n\t\"./prj_jobs/lab_plan_jobs_dtl.js\": \"./app/panels/prj_jobs/lab_plan_jobs_dtl.js\",\n\t\"./prj_jobs/layouts\": \"./app/panels/prj_jobs/layouts.js\",\n\t\"./prj_jobs/layouts.js\": \"./app/panels/prj_jobs/layouts.js\",\n\t\"./prj_jobs/prj_jobs\": \"./app/panels/prj_jobs/prj_jobs.js\",\n\t\"./prj_jobs/prj_jobs.js\": \"./app/panels/prj_jobs/prj_jobs.js\",\n\t\"./prj_jobs/res_mon\": \"./app/panels/prj_jobs/res_mon.js\",\n\t\"./prj_jobs/res_mon.js\": \"./app/panels/prj_jobs/res_mon.js\",\n\t\"./query_editor\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/common\": \"./app/panels/query_editor/common.js\",\n\t\"./query_editor/common.js\": \"./app/panels/query_editor/common.js\",\n\t\"./query_editor/components/attribute/attribute\": \"./app/panels/query_editor/components/attribute/attribute.js\",\n\t\"./query_editor/components/attribute/attribute.js\": \"./app/panels/query_editor/components/attribute/attribute.js\",\n\t\"./query_editor/components/entity/entity\": \"./app/panels/query_editor/components/entity/entity.js\",\n\t\"./query_editor/components/entity/entity.css\": \"./app/panels/query_editor/components/entity/entity.css\",\n\t\"./query_editor/components/entity/entity.js\": \"./app/panels/query_editor/components/entity/entity.js\",\n\t\"./query_editor/components/entity_add_dialog/entity_add_dialog\": \"./app/panels/query_editor/components/entity_add_dialog/entity_add_dialog.js\",\n\t\"./query_editor/components/entity_add_dialog/entity_add_dialog.js\": \"./app/panels/query_editor/components/entity_add_dialog/entity_add_dialog.js\",\n\t\"./query_editor/components/queries_manager/queries_list\": \"./app/panels/query_editor/components/queries_manager/queries_list.js\",\n\t\"./query_editor/components/queries_manager/queries_list.js\": \"./app/panels/query_editor/components/queries_manager/queries_list.js\",\n\t\"./query_editor/components/queries_manager/queries_manager\": \"./app/panels/query_editor/components/queries_manager/queries_manager.js\",\n\t\"./query_editor/components/queries_manager/queries_manager.js\": \"./app/panels/query_editor/components/queries_manager/queries_manager.js\",\n\t\"./query_editor/components/queries_manager/query_iu_dialog\": \"./app/panels/query_editor/components/queries_manager/query_iu_dialog.js\",\n\t\"./query_editor/components/queries_manager/query_iu_dialog.js\": \"./app/panels/query_editor/components/queries_manager/query_iu_dialog.js\",\n\t\"./query_editor/components/query_diagram/query_diagram\": \"./app/panels/query_editor/components/query_diagram/query_diagram.js\",\n\t\"./query_editor/components/query_diagram/query_diagram.css\": \"./app/panels/query_editor/components/query_diagram/query_diagram.css\",\n\t\"./query_editor/components/query_diagram/query_diagram.js\": \"./app/panels/query_editor/components/query_diagram/query_diagram.js\",\n\t\"./query_editor/hooks\": \"./app/panels/query_editor/hooks.js\",\n\t\"./query_editor/hooks.js\": \"./app/panels/query_editor/hooks.js\",\n\t\"./query_editor/index\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/index.js\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/query_editor\": \"./app/panels/query_editor/query_editor.js\",\n\t\"./query_editor/query_editor.js\": \"./app/panels/query_editor/query_editor.js\",\n\t\"./rrp_conf_editor\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/common\": \"./app/panels/rrp_conf_editor/common.js\",\n\t\"./rrp_conf_editor/common.js\": \"./app/panels/rrp_conf_editor/common.js\",\n\t\"./rrp_conf_editor/components/action_message\": \"./app/panels/rrp_conf_editor/components/action_message.js\",\n\t\"./rrp_conf_editor/components/action_message.js\": \"./app/panels/rrp_conf_editor/components/action_message.js\",\n\t\"./rrp_conf_editor/components/dialog_help\": \"./app/panels/rrp_conf_editor/components/dialog_help.js\",\n\t\"./rrp_conf_editor/components/dialog_help.js\": \"./app/panels/rrp_conf_editor/components/dialog_help.js\",\n\t\"./rrp_conf_editor/components/dialog_mark_iu\": \"./app/panels/rrp_conf_editor/components/dialog_mark_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_mark_iu.js\": \"./app/panels/rrp_conf_editor/components/dialog_mark_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_order\": \"./app/panels/rrp_conf_editor/components/dialog_order.js\",\n\t\"./rrp_conf_editor/components/dialog_order.js\": \"./app/panels/rrp_conf_editor/components/dialog_order.js\",\n\t\"./rrp_conf_editor/components/dialog_section_iu\": \"./app/panels/rrp_conf_editor/components/dialog_section_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_section_iu.js\": \"./app/panels/rrp_conf_editor/components/dialog_section_iu.js\",\n\t\"./rrp_conf_editor/components/mark_card\": \"./app/panels/rrp_conf_editor/components/mark_card.js\",\n\t\"./rrp_conf_editor/components/mark_card.js\": \"./app/panels/rrp_conf_editor/components/mark_card.js\",\n\t\"./rrp_conf_editor/components/mark_card_toolbar\": \"./app/panels/rrp_conf_editor/components/mark_card_toolbar.js\",\n\t\"./rrp_conf_editor/components/mark_card_toolbar.js\": \"./app/panels/rrp_conf_editor/components/mark_card_toolbar.js\",\n\t\"./rrp_conf_editor/components/mark_cn_list\": \"./app/panels/rrp_conf_editor/components/mark_cn_list.js\",\n\t\"./rrp_conf_editor/components/mark_cn_list.js\": \"./app/panels/rrp_conf_editor/components/mark_cn_list.js\",\n\t\"./rrp_conf_editor/components/marks\": \"./app/panels/rrp_conf_editor/components/marks.js\",\n\t\"./rrp_conf_editor/components/marks.js\": \"./app/panels/rrp_conf_editor/components/marks.js\",\n\t\"./rrp_conf_editor/components/marks_toolbar\": \"./app/panels/rrp_conf_editor/components/marks_toolbar.js\",\n\t\"./rrp_conf_editor/components/marks_toolbar.js\": \"./app/panels/rrp_conf_editor/components/marks_toolbar.js\",\n\t\"./rrp_conf_editor/components/section\": \"./app/panels/rrp_conf_editor/components/section.js\",\n\t\"./rrp_conf_editor/components/section.js\": \"./app/panels/rrp_conf_editor/components/section.js\",\n\t\"./rrp_conf_editor/components/section_tab\": \"./app/panels/rrp_conf_editor/components/section_tab.js\",\n\t\"./rrp_conf_editor/components/section_tab.js\": \"./app/panels/rrp_conf_editor/components/section_tab.js\",\n\t\"./rrp_conf_editor/components/sections\": \"./app/panels/rrp_conf_editor/components/sections.js\",\n\t\"./rrp_conf_editor/components/sections.js\": \"./app/panels/rrp_conf_editor/components/sections.js\",\n\t\"./rrp_conf_editor/hooks\": \"./app/panels/rrp_conf_editor/hooks.js\",\n\t\"./rrp_conf_editor/hooks.js\": \"./app/panels/rrp_conf_editor/hooks.js\",\n\t\"./rrp_conf_editor/index\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/index.js\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/layouts\": \"./app/panels/rrp_conf_editor/layouts.js\",\n\t\"./rrp_conf_editor/layouts.js\": \"./app/panels/rrp_conf_editor/layouts.js\",\n\t\"./rrp_conf_editor/rrp_conf_editor\": \"./app/panels/rrp_conf_editor/rrp_conf_editor.js\",\n\t\"./rrp_conf_editor/rrp_conf_editor.js\": \"./app/panels/rrp_conf_editor/rrp_conf_editor.js\",\n\t\"./samples\": \"./app/panels/samples/index.js\",\n\t\"./samples/\": \"./app/panels/samples/index.js\",\n\t\"./samples/chart\": \"./app/panels/samples/chart.js\",\n\t\"./samples/chart.js\": \"./app/panels/samples/chart.js\",\n\t\"./samples/cyclogram\": \"./app/panels/samples/cyclogram.js\",\n\t\"./samples/cyclogram.js\": \"./app/panels/samples/cyclogram.js\",\n\t\"./samples/data_grid\": \"./app/panels/samples/data_grid.js\",\n\t\"./samples/data_grid.js\": \"./app/panels/samples/data_grid.js\",\n\t\"./samples/gantt\": \"./app/panels/samples/gantt.js\",\n\t\"./samples/gantt.js\": \"./app/panels/samples/gantt.js\",\n\t\"./samples/index\": \"./app/panels/samples/index.js\",\n\t\"./samples/index.js\": \"./app/panels/samples/index.js\",\n\t\"./samples/indicator\": \"./app/panels/samples/indicator.js\",\n\t\"./samples/indicator.js\": \"./app/panels/samples/indicator.js\",\n\t\"./samples/loader\": \"./app/panels/samples/loader.js\",\n\t\"./samples/loader.js\": \"./app/panels/samples/loader.js\",\n\t\"./samples/messages\": \"./app/panels/samples/messages.js\",\n\t\"./samples/messages.js\": \"./app/panels/samples/messages.js\",\n\t\"./samples/mui\": \"./app/panels/samples/mui.js\",\n\t\"./samples/mui.js\": \"./app/panels/samples/mui.js\",\n\t\"./samples/p8online\": \"./app/panels/samples/p8online.js\",\n\t\"./samples/p8online.js\": \"./app/panels/samples/p8online.js\",\n\t\"./samples/samples\": \"./app/panels/samples/samples.js\",\n\t\"./samples/samples.js\": \"./app/panels/samples/samples.js\",\n\t\"./samples/svg\": \"./app/panels/samples/svg.js\",\n\t\"./samples/svg.js\": \"./app/panels/samples/svg.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./app/panels sync recursive ^\\\\.\\\\/.*$\";\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/_sync_^\\.\\/.*$?"); +eval("var map = {\n\t\"./clnt_task_board\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/clnt_task_board\": \"./app/panels/clnt_task_board/clnt_task_board.js\",\n\t\"./clnt_task_board/clnt_task_board.js\": \"./app/panels/clnt_task_board/clnt_task_board.js\",\n\t\"./clnt_task_board/components/custom_input_field\": \"./app/panels/clnt_task_board/components/custom_input_field.js\",\n\t\"./clnt_task_board/components/custom_input_field.js\": \"./app/panels/clnt_task_board/components/custom_input_field.js\",\n\t\"./clnt_task_board/components/filter_dialog\": \"./app/panels/clnt_task_board/components/filter_dialog.js\",\n\t\"./clnt_task_board/components/filter_dialog.js\": \"./app/panels/clnt_task_board/components/filter_dialog.js\",\n\t\"./clnt_task_board/components/note_dialog\": \"./app/panels/clnt_task_board/components/note_dialog.js\",\n\t\"./clnt_task_board/components/note_dialog.js\": \"./app/panels/clnt_task_board/components/note_dialog.js\",\n\t\"./clnt_task_board/components/settings_dialog\": \"./app/panels/clnt_task_board/components/settings_dialog.js\",\n\t\"./clnt_task_board/components/settings_dialog.js\": \"./app/panels/clnt_task_board/components/settings_dialog.js\",\n\t\"./clnt_task_board/components/status_card\": \"./app/panels/clnt_task_board/components/status_card.js\",\n\t\"./clnt_task_board/components/status_card.js\": \"./app/panels/clnt_task_board/components/status_card.js\",\n\t\"./clnt_task_board/components/status_card_settings\": \"./app/panels/clnt_task_board/components/status_card_settings.js\",\n\t\"./clnt_task_board/components/status_card_settings.js\": \"./app/panels/clnt_task_board/components/status_card_settings.js\",\n\t\"./clnt_task_board/components/task_card\": \"./app/panels/clnt_task_board/components/task_card.js\",\n\t\"./clnt_task_board/components/task_card.js\": \"./app/panels/clnt_task_board/components/task_card.js\",\n\t\"./clnt_task_board/components/task_form\": \"./app/panels/clnt_task_board/components/task_form.js\",\n\t\"./clnt_task_board/components/task_form.js\": \"./app/panels/clnt_task_board/components/task_form.js\",\n\t\"./clnt_task_board/components/task_form_tab_executor\": \"./app/panels/clnt_task_board/components/task_form_tab_executor.js\",\n\t\"./clnt_task_board/components/task_form_tab_executor.js\": \"./app/panels/clnt_task_board/components/task_form_tab_executor.js\",\n\t\"./clnt_task_board/components/task_form_tab_info\": \"./app/panels/clnt_task_board/components/task_form_tab_info.js\",\n\t\"./clnt_task_board/components/task_form_tab_info.js\": \"./app/panels/clnt_task_board/components/task_form_tab_info.js\",\n\t\"./clnt_task_board/components/task_form_tab_props\": \"./app/panels/clnt_task_board/components/task_form_tab_props.js\",\n\t\"./clnt_task_board/components/task_form_tab_props.js\": \"./app/panels/clnt_task_board/components/task_form_tab_props.js\",\n\t\"./clnt_task_board/filter\": \"./app/panels/clnt_task_board/filter.js\",\n\t\"./clnt_task_board/filter.js\": \"./app/panels/clnt_task_board/filter.js\",\n\t\"./clnt_task_board/hooks/dict_hooks\": \"./app/panels/clnt_task_board/hooks/dict_hooks.js\",\n\t\"./clnt_task_board/hooks/dict_hooks.js\": \"./app/panels/clnt_task_board/hooks/dict_hooks.js\",\n\t\"./clnt_task_board/hooks/filter_hooks\": \"./app/panels/clnt_task_board/hooks/filter_hooks.js\",\n\t\"./clnt_task_board/hooks/filter_hooks.js\": \"./app/panels/clnt_task_board/hooks/filter_hooks.js\",\n\t\"./clnt_task_board/hooks/hooks\": \"./app/panels/clnt_task_board/hooks/hooks.js\",\n\t\"./clnt_task_board/hooks/hooks.js\": \"./app/panels/clnt_task_board/hooks/hooks.js\",\n\t\"./clnt_task_board/hooks/task_dialog_hooks\": \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\",\n\t\"./clnt_task_board/hooks/task_dialog_hooks.js\": \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\",\n\t\"./clnt_task_board/hooks/tasks_hooks\": \"./app/panels/clnt_task_board/hooks/tasks_hooks.js\",\n\t\"./clnt_task_board/hooks/tasks_hooks.js\": \"./app/panels/clnt_task_board/hooks/tasks_hooks.js\",\n\t\"./clnt_task_board/index\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/index.js\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/layouts\": \"./app/panels/clnt_task_board/layouts.js\",\n\t\"./clnt_task_board/layouts.js\": \"./app/panels/clnt_task_board/layouts.js\",\n\t\"./clnt_task_board/styles\": \"./app/panels/clnt_task_board/styles.js\",\n\t\"./clnt_task_board/styles.js\": \"./app/panels/clnt_task_board/styles.js\",\n\t\"./clnt_task_board/task_dialog\": \"./app/panels/clnt_task_board/task_dialog.js\",\n\t\"./clnt_task_board/task_dialog.js\": \"./app/panels/clnt_task_board/task_dialog.js\",\n\t\"./dummy\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/dummy\": \"./app/panels/dummy/dummy.js\",\n\t\"./dummy/dummy.js\": \"./app/panels/dummy/dummy.js\",\n\t\"./dummy/index\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/index.js\": \"./app/panels/dummy/index.js\",\n\t\"./eqs_prfrm\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/eqs_prfrm\": \"./app/panels/eqs_prfrm/eqs_prfrm.js\",\n\t\"./eqs_prfrm/eqs_prfrm.js\": \"./app/panels/eqs_prfrm/eqs_prfrm.js\",\n\t\"./eqs_prfrm/filter\": \"./app/panels/eqs_prfrm/filter.js\",\n\t\"./eqs_prfrm/filter.js\": \"./app/panels/eqs_prfrm/filter.js\",\n\t\"./eqs_prfrm/filter_dialog\": \"./app/panels/eqs_prfrm/filter_dialog.js\",\n\t\"./eqs_prfrm/filter_dialog.js\": \"./app/panels/eqs_prfrm/filter_dialog.js\",\n\t\"./eqs_prfrm/filter_input_field\": \"./app/panels/eqs_prfrm/filter_input_field.js\",\n\t\"./eqs_prfrm/filter_input_field.js\": \"./app/panels/eqs_prfrm/filter_input_field.js\",\n\t\"./eqs_prfrm/hooks\": \"./app/panels/eqs_prfrm/hooks.js\",\n\t\"./eqs_prfrm/hooks.js\": \"./app/panels/eqs_prfrm/hooks.js\",\n\t\"./eqs_prfrm/index\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/index.js\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/layouts\": \"./app/panels/eqs_prfrm/layouts.js\",\n\t\"./eqs_prfrm/layouts.js\": \"./app/panels/eqs_prfrm/layouts.js\",\n\t\"./mech_rec_assembly_mon\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/components/plan_detail\": \"./app/panels/mech_rec_assembly_mon/components/plan_detail.js\",\n\t\"./mech_rec_assembly_mon/components/plan_detail.js\": \"./app/panels/mech_rec_assembly_mon/components/plan_detail.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list\": \"./app/panels/mech_rec_assembly_mon/components/plans_list.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list.js\": \"./app/panels/mech_rec_assembly_mon/components/plans_list.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list_item\": \"./app/panels/mech_rec_assembly_mon/components/plans_list_item.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list_item.js\": \"./app/panels/mech_rec_assembly_mon/components/plans_list_item.js\",\n\t\"./mech_rec_assembly_mon/components/progress_box\": \"./app/panels/mech_rec_assembly_mon/components/progress_box.js\",\n\t\"./mech_rec_assembly_mon/components/progress_box.js\": \"./app/panels/mech_rec_assembly_mon/components/progress_box.js\",\n\t\"./mech_rec_assembly_mon/hooks\": \"./app/panels/mech_rec_assembly_mon/hooks.js\",\n\t\"./mech_rec_assembly_mon/hooks.js\": \"./app/panels/mech_rec_assembly_mon/hooks.js\",\n\t\"./mech_rec_assembly_mon/index\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/index.js\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/mech_rec_assembly_mon\": \"./app/panels/mech_rec_assembly_mon/mech_rec_assembly_mon.js\",\n\t\"./mech_rec_assembly_mon/mech_rec_assembly_mon.js\": \"./app/panels/mech_rec_assembly_mon/mech_rec_assembly_mon.js\",\n\t\"./mech_rec_assembly_mon/styles/themes\": \"./app/panels/mech_rec_assembly_mon/styles/themes.js\",\n\t\"./mech_rec_assembly_mon/styles/themes.js\": \"./app/panels/mech_rec_assembly_mon/styles/themes.js\",\n\t\"./mech_rec_cost_jobs_manage\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/fcjobssp\": \"./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js\",\n\t\"./mech_rec_cost_jobs_manage/fcjobssp.js\": \"./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js\",\n\t\"./mech_rec_cost_jobs_manage/hooks\": \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage/hooks.js\": \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage/index\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/index.js\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage\": \"./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\",\n\t\"./mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\": \"./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\",\n\t\"./mech_rec_cost_jobs_manage_mp\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/hooks\": \"./app/panels/mech_rec_cost_jobs_manage_mp/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/hooks.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/index\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/index.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp\": \"./app/panels/mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/worker_include_dialog\": \"./app/panels/mech_rec_cost_jobs_manage_mp/worker_include_dialog.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/worker_include_dialog.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/worker_include_dialog.js\",\n\t\"./mech_rec_cost_prod_plans\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/backend_dg\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/backend_dg.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcroutlst\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcroutlst.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcroutlst.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcroutlst.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/goodparties\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/goodparties.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/goodparties.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/goodparties.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/incomefromdeps\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\",\n\t\"./mech_rec_cost_prod_plans/hooks\": \"./app/panels/mech_rec_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_cost_prod_plans/hooks.js\": \"./app/panels/mech_rec_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_cost_prod_plans/index\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/index.js\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/mech_rec_cost_prod_plans\": \"./app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\",\n\t\"./mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\": \"./app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\",\n\t\"./mech_rec_dept_cost_jobs\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/components/filter\": \"./app/panels/mech_rec_dept_cost_jobs/components/filter.js\",\n\t\"./mech_rec_dept_cost_jobs/components/filter.js\": \"./app/panels/mech_rec_dept_cost_jobs/components/filter.js\",\n\t\"./mech_rec_dept_cost_jobs/components/ins_department_dg\": \"./app/panels/mech_rec_dept_cost_jobs/components/ins_department_dg.js\",\n\t\"./mech_rec_dept_cost_jobs/components/ins_department_dg.js\": \"./app/panels/mech_rec_dept_cost_jobs/components/ins_department_dg.js\",\n\t\"./mech_rec_dept_cost_jobs/hooks\": \"./app/panels/mech_rec_dept_cost_jobs/hooks.js\",\n\t\"./mech_rec_dept_cost_jobs/hooks.js\": \"./app/panels/mech_rec_dept_cost_jobs/hooks.js\",\n\t\"./mech_rec_dept_cost_jobs/index\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/index.js\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs\": \"./app/panels/mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\",\n\t\"./mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\": \"./app/panels/mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\",\n\t\"./mech_rec_dept_cost_prod_plans\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlst\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlst.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlst.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlst.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlstsp\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlstsp.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlstsp.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlstsp.js\",\n\t\"./mech_rec_dept_cost_prod_plans/hooks\": \"./app/panels/mech_rec_dept_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_dept_cost_prod_plans/hooks.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_dept_cost_prod_plans/incomefromdeps\": \"./app/panels/mech_rec_dept_cost_prod_plans/incomefromdeps.js\",\n\t\"./mech_rec_dept_cost_prod_plans/incomefromdeps.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/incomefromdeps.js\",\n\t\"./mech_rec_dept_cost_prod_plans/index\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/index.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans\": \"./app/panels/mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\",\n\t\"./mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\",\n\t\"./mech_rec_help\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/img/1_1.png\": \"./app/panels/mech_rec_help/img/1_1.png\",\n\t\"./mech_rec_help/img/1_2.png\": \"./app/panels/mech_rec_help/img/1_2.png\",\n\t\"./mech_rec_help/img/1_3.png\": \"./app/panels/mech_rec_help/img/1_3.png\",\n\t\"./mech_rec_help/img/1_4.png\": \"./app/panels/mech_rec_help/img/1_4.png\",\n\t\"./mech_rec_help/img/1_5.png\": \"./app/panels/mech_rec_help/img/1_5.png\",\n\t\"./mech_rec_help/img/21_1.png\": \"./app/panels/mech_rec_help/img/21_1.png\",\n\t\"./mech_rec_help/img/21_2.png\": \"./app/panels/mech_rec_help/img/21_2.png\",\n\t\"./mech_rec_help/img/21_3.png\": \"./app/panels/mech_rec_help/img/21_3.png\",\n\t\"./mech_rec_help/img/2_1.png\": \"./app/panels/mech_rec_help/img/2_1.png\",\n\t\"./mech_rec_help/img/2_2.png\": \"./app/panels/mech_rec_help/img/2_2.png\",\n\t\"./mech_rec_help/img/2_3.png\": \"./app/panels/mech_rec_help/img/2_3.png\",\n\t\"./mech_rec_help/img/2_4.png\": \"./app/panels/mech_rec_help/img/2_4.png\",\n\t\"./mech_rec_help/img/2_5.png\": \"./app/panels/mech_rec_help/img/2_5.png\",\n\t\"./mech_rec_help/img/31_1.png\": \"./app/panels/mech_rec_help/img/31_1.png\",\n\t\"./mech_rec_help/img/31_10.png\": \"./app/panels/mech_rec_help/img/31_10.png\",\n\t\"./mech_rec_help/img/31_2.png\": \"./app/panels/mech_rec_help/img/31_2.png\",\n\t\"./mech_rec_help/img/31_3.png\": \"./app/panels/mech_rec_help/img/31_3.png\",\n\t\"./mech_rec_help/img/31_4.png\": \"./app/panels/mech_rec_help/img/31_4.png\",\n\t\"./mech_rec_help/img/31_5.png\": \"./app/panels/mech_rec_help/img/31_5.png\",\n\t\"./mech_rec_help/img/31_6.png\": \"./app/panels/mech_rec_help/img/31_6.png\",\n\t\"./mech_rec_help/img/31_7.png\": \"./app/panels/mech_rec_help/img/31_7.png\",\n\t\"./mech_rec_help/img/31_8.png\": \"./app/panels/mech_rec_help/img/31_8.png\",\n\t\"./mech_rec_help/img/31_9.png\": \"./app/panels/mech_rec_help/img/31_9.png\",\n\t\"./mech_rec_help/img/32_1.png\": \"./app/panels/mech_rec_help/img/32_1.png\",\n\t\"./mech_rec_help/img/32_2.png\": \"./app/panels/mech_rec_help/img/32_2.png\",\n\t\"./mech_rec_help/img/32_3.png\": \"./app/panels/mech_rec_help/img/32_3.png\",\n\t\"./mech_rec_help/img/33_1.png\": \"./app/panels/mech_rec_help/img/33_1.png\",\n\t\"./mech_rec_help/img/33_2.png\": \"./app/panels/mech_rec_help/img/33_2.png\",\n\t\"./mech_rec_help/img/33_3.png\": \"./app/panels/mech_rec_help/img/33_3.png\",\n\t\"./mech_rec_help/img/33_4.png\": \"./app/panels/mech_rec_help/img/33_4.png\",\n\t\"./mech_rec_help/img/34_1.png\": \"./app/panels/mech_rec_help/img/34_1.png\",\n\t\"./mech_rec_help/img/34_2.png\": \"./app/panels/mech_rec_help/img/34_2.png\",\n\t\"./mech_rec_help/img/34_3.png\": \"./app/panels/mech_rec_help/img/34_3.png\",\n\t\"./mech_rec_help/img/34_4.png\": \"./app/panels/mech_rec_help/img/34_4.png\",\n\t\"./mech_rec_help/img/34_5.png\": \"./app/panels/mech_rec_help/img/34_5.png\",\n\t\"./mech_rec_help/img/34_6.png\": \"./app/panels/mech_rec_help/img/34_6.png\",\n\t\"./mech_rec_help/img/34_7.png\": \"./app/panels/mech_rec_help/img/34_7.png\",\n\t\"./mech_rec_help/img/34_8.png\": \"./app/panels/mech_rec_help/img/34_8.png\",\n\t\"./mech_rec_help/img/35_1.png\": \"./app/panels/mech_rec_help/img/35_1.png\",\n\t\"./mech_rec_help/img/3_1.png\": \"./app/panels/mech_rec_help/img/3_1.png\",\n\t\"./mech_rec_help/img/410_1.png\": \"./app/panels/mech_rec_help/img/410_1.png\",\n\t\"./mech_rec_help/img/410_2.png\": \"./app/panels/mech_rec_help/img/410_2.png\",\n\t\"./mech_rec_help/img/410_3.png\": \"./app/panels/mech_rec_help/img/410_3.png\",\n\t\"./mech_rec_help/img/410_4.png\": \"./app/panels/mech_rec_help/img/410_4.png\",\n\t\"./mech_rec_help/img/410_5.png\": \"./app/panels/mech_rec_help/img/410_5.png\",\n\t\"./mech_rec_help/img/410_6.png\": \"./app/panels/mech_rec_help/img/410_6.png\",\n\t\"./mech_rec_help/img/410_7.png\": \"./app/panels/mech_rec_help/img/410_7.png\",\n\t\"./mech_rec_help/img/411_1.png\": \"./app/panels/mech_rec_help/img/411_1.png\",\n\t\"./mech_rec_help/img/411_2.png\": \"./app/panels/mech_rec_help/img/411_2.png\",\n\t\"./mech_rec_help/img/411_3.png\": \"./app/panels/mech_rec_help/img/411_3.png\",\n\t\"./mech_rec_help/img/411_4.png\": \"./app/panels/mech_rec_help/img/411_4.png\",\n\t\"./mech_rec_help/img/412_1.png\": \"./app/panels/mech_rec_help/img/412_1.png\",\n\t\"./mech_rec_help/img/412_2.png\": \"./app/panels/mech_rec_help/img/412_2.png\",\n\t\"./mech_rec_help/img/412_3.png\": \"./app/panels/mech_rec_help/img/412_3.png\",\n\t\"./mech_rec_help/img/412_4.png\": \"./app/panels/mech_rec_help/img/412_4.png\",\n\t\"./mech_rec_help/img/413_1.png\": \"./app/panels/mech_rec_help/img/413_1.png\",\n\t\"./mech_rec_help/img/413_2.png\": \"./app/panels/mech_rec_help/img/413_2.png\",\n\t\"./mech_rec_help/img/413_3.png\": \"./app/panels/mech_rec_help/img/413_3.png\",\n\t\"./mech_rec_help/img/413_4.png\": \"./app/panels/mech_rec_help/img/413_4.png\",\n\t\"./mech_rec_help/img/413_5.png\": \"./app/panels/mech_rec_help/img/413_5.png\",\n\t\"./mech_rec_help/img/414_1.png\": \"./app/panels/mech_rec_help/img/414_1.png\",\n\t\"./mech_rec_help/img/414_2.png\": \"./app/panels/mech_rec_help/img/414_2.png\",\n\t\"./mech_rec_help/img/414_3.png\": \"./app/panels/mech_rec_help/img/414_3.png\",\n\t\"./mech_rec_help/img/41_1.png\": \"./app/panels/mech_rec_help/img/41_1.png\",\n\t\"./mech_rec_help/img/41_10.png\": \"./app/panels/mech_rec_help/img/41_10.png\",\n\t\"./mech_rec_help/img/41_11.png\": \"./app/panels/mech_rec_help/img/41_11.png\",\n\t\"./mech_rec_help/img/41_12.png\": \"./app/panels/mech_rec_help/img/41_12.png\",\n\t\"./mech_rec_help/img/41_2.png\": \"./app/panels/mech_rec_help/img/41_2.png\",\n\t\"./mech_rec_help/img/41_3.png\": \"./app/panels/mech_rec_help/img/41_3.png\",\n\t\"./mech_rec_help/img/41_4.png\": \"./app/panels/mech_rec_help/img/41_4.png\",\n\t\"./mech_rec_help/img/41_5.png\": \"./app/panels/mech_rec_help/img/41_5.png\",\n\t\"./mech_rec_help/img/41_6.png\": \"./app/panels/mech_rec_help/img/41_6.png\",\n\t\"./mech_rec_help/img/41_7.png\": \"./app/panels/mech_rec_help/img/41_7.png\",\n\t\"./mech_rec_help/img/41_8.png\": \"./app/panels/mech_rec_help/img/41_8.png\",\n\t\"./mech_rec_help/img/41_9.png\": \"./app/panels/mech_rec_help/img/41_9.png\",\n\t\"./mech_rec_help/img/42_1.png\": \"./app/panels/mech_rec_help/img/42_1.png\",\n\t\"./mech_rec_help/img/42_2.png\": \"./app/panels/mech_rec_help/img/42_2.png\",\n\t\"./mech_rec_help/img/42_3.png\": \"./app/panels/mech_rec_help/img/42_3.png\",\n\t\"./mech_rec_help/img/42_4.png\": \"./app/panels/mech_rec_help/img/42_4.png\",\n\t\"./mech_rec_help/img/43_1.png\": \"./app/panels/mech_rec_help/img/43_1.png\",\n\t\"./mech_rec_help/img/43_2.png\": \"./app/panels/mech_rec_help/img/43_2.png\",\n\t\"./mech_rec_help/img/43_3.png\": \"./app/panels/mech_rec_help/img/43_3.png\",\n\t\"./mech_rec_help/img/43_4.png\": \"./app/panels/mech_rec_help/img/43_4.png\",\n\t\"./mech_rec_help/img/43_5.png\": \"./app/panels/mech_rec_help/img/43_5.png\",\n\t\"./mech_rec_help/img/43_6.png\": \"./app/panels/mech_rec_help/img/43_6.png\",\n\t\"./mech_rec_help/img/43_7.png\": \"./app/panels/mech_rec_help/img/43_7.png\",\n\t\"./mech_rec_help/img/43_8.png\": \"./app/panels/mech_rec_help/img/43_8.png\",\n\t\"./mech_rec_help/img/44_1.png\": \"./app/panels/mech_rec_help/img/44_1.png\",\n\t\"./mech_rec_help/img/44_10.png\": \"./app/panels/mech_rec_help/img/44_10.png\",\n\t\"./mech_rec_help/img/44_2.png\": \"./app/panels/mech_rec_help/img/44_2.png\",\n\t\"./mech_rec_help/img/44_3.png\": \"./app/panels/mech_rec_help/img/44_3.png\",\n\t\"./mech_rec_help/img/44_4.png\": \"./app/panels/mech_rec_help/img/44_4.png\",\n\t\"./mech_rec_help/img/44_5.png\": \"./app/panels/mech_rec_help/img/44_5.png\",\n\t\"./mech_rec_help/img/44_6.png\": \"./app/panels/mech_rec_help/img/44_6.png\",\n\t\"./mech_rec_help/img/44_7.png\": \"./app/panels/mech_rec_help/img/44_7.png\",\n\t\"./mech_rec_help/img/44_8.png\": \"./app/panels/mech_rec_help/img/44_8.png\",\n\t\"./mech_rec_help/img/44_9.png\": \"./app/panels/mech_rec_help/img/44_9.png\",\n\t\"./mech_rec_help/img/45_1.png\": \"./app/panels/mech_rec_help/img/45_1.png\",\n\t\"./mech_rec_help/img/45_10.png\": \"./app/panels/mech_rec_help/img/45_10.png\",\n\t\"./mech_rec_help/img/45_2.png\": \"./app/panels/mech_rec_help/img/45_2.png\",\n\t\"./mech_rec_help/img/45_3.png\": \"./app/panels/mech_rec_help/img/45_3.png\",\n\t\"./mech_rec_help/img/45_4.png\": \"./app/panels/mech_rec_help/img/45_4.png\",\n\t\"./mech_rec_help/img/45_5.png\": \"./app/panels/mech_rec_help/img/45_5.png\",\n\t\"./mech_rec_help/img/45_6.png\": \"./app/panels/mech_rec_help/img/45_6.png\",\n\t\"./mech_rec_help/img/45_7.png\": \"./app/panels/mech_rec_help/img/45_7.png\",\n\t\"./mech_rec_help/img/45_8.png\": \"./app/panels/mech_rec_help/img/45_8.png\",\n\t\"./mech_rec_help/img/45_9.png\": \"./app/panels/mech_rec_help/img/45_9.png\",\n\t\"./mech_rec_help/img/46_1.png\": \"./app/panels/mech_rec_help/img/46_1.png\",\n\t\"./mech_rec_help/img/46_2.png\": \"./app/panels/mech_rec_help/img/46_2.png\",\n\t\"./mech_rec_help/img/46_3.png\": \"./app/panels/mech_rec_help/img/46_3.png\",\n\t\"./mech_rec_help/img/46_4.png\": \"./app/panels/mech_rec_help/img/46_4.png\",\n\t\"./mech_rec_help/img/46_5.png\": \"./app/panels/mech_rec_help/img/46_5.png\",\n\t\"./mech_rec_help/img/46_6.png\": \"./app/panels/mech_rec_help/img/46_6.png\",\n\t\"./mech_rec_help/img/47_1.png\": \"./app/panels/mech_rec_help/img/47_1.png\",\n\t\"./mech_rec_help/img/47_10.png\": \"./app/panels/mech_rec_help/img/47_10.png\",\n\t\"./mech_rec_help/img/47_11.png\": \"./app/panels/mech_rec_help/img/47_11.png\",\n\t\"./mech_rec_help/img/47_12.png\": \"./app/panels/mech_rec_help/img/47_12.png\",\n\t\"./mech_rec_help/img/47_2.png\": \"./app/panels/mech_rec_help/img/47_2.png\",\n\t\"./mech_rec_help/img/47_3.png\": \"./app/panels/mech_rec_help/img/47_3.png\",\n\t\"./mech_rec_help/img/47_4.png\": \"./app/panels/mech_rec_help/img/47_4.png\",\n\t\"./mech_rec_help/img/47_5.png\": \"./app/panels/mech_rec_help/img/47_5.png\",\n\t\"./mech_rec_help/img/47_6.png\": \"./app/panels/mech_rec_help/img/47_6.png\",\n\t\"./mech_rec_help/img/47_7.png\": \"./app/panels/mech_rec_help/img/47_7.png\",\n\t\"./mech_rec_help/img/47_8.png\": \"./app/panels/mech_rec_help/img/47_8.png\",\n\t\"./mech_rec_help/img/47_9.png\": \"./app/panels/mech_rec_help/img/47_9.png\",\n\t\"./mech_rec_help/img/48_1.png\": \"./app/panels/mech_rec_help/img/48_1.png\",\n\t\"./mech_rec_help/img/48_2.png\": \"./app/panels/mech_rec_help/img/48_2.png\",\n\t\"./mech_rec_help/img/48_3.png\": \"./app/panels/mech_rec_help/img/48_3.png\",\n\t\"./mech_rec_help/img/48_4.png\": \"./app/panels/mech_rec_help/img/48_4.png\",\n\t\"./mech_rec_help/img/49_1.png\": \"./app/panels/mech_rec_help/img/49_1.png\",\n\t\"./mech_rec_help/img/49_2.png\": \"./app/panels/mech_rec_help/img/49_2.png\",\n\t\"./mech_rec_help/img/49_3.png\": \"./app/panels/mech_rec_help/img/49_3.png\",\n\t\"./mech_rec_help/img/add1_1.png\": \"./app/panels/mech_rec_help/img/add1_1.png\",\n\t\"./mech_rec_help/img/add1_2.png\": \"./app/panels/mech_rec_help/img/add1_2.png\",\n\t\"./mech_rec_help/img/add1_3.png\": \"./app/panels/mech_rec_help/img/add1_3.png\",\n\t\"./mech_rec_help/img/add1_4.png\": \"./app/panels/mech_rec_help/img/add1_4.png\",\n\t\"./mech_rec_help/img/add1_5.png\": \"./app/panels/mech_rec_help/img/add1_5.png\",\n\t\"./mech_rec_help/img/add1_6.png\": \"./app/panels/mech_rec_help/img/add1_6.png\",\n\t\"./mech_rec_help/img/add1_7.png\": \"./app/panels/mech_rec_help/img/add1_7.png\",\n\t\"./mech_rec_help/img/add1_8.png\": \"./app/panels/mech_rec_help/img/add1_8.png\",\n\t\"./mech_rec_help/img/add1_9.png\": \"./app/panels/mech_rec_help/img/add1_9.png\",\n\t\"./mech_rec_help/index\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/index.js\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/mech_rec_help\": \"./app/panels/mech_rec_help/mech_rec_help.js\",\n\t\"./mech_rec_help/mech_rec_help.js\": \"./app/panels/mech_rec_help/mech_rec_help.js\",\n\t\"./panels_editor\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/component_editor\": \"./app/panels/panels_editor/component_editor.js\",\n\t\"./panels_editor/component_editor.js\": \"./app/panels/panels_editor/component_editor.js\",\n\t\"./panels_editor/component_view\": \"./app/panels/panels_editor/component_view.js\",\n\t\"./panels_editor/component_view.js\": \"./app/panels/panels_editor/component_view.js\",\n\t\"./panels_editor/components/chart/editor\": \"./app/panels/panels_editor/components/chart/editor.js\",\n\t\"./panels_editor/components/chart/editor.js\": \"./app/panels/panels_editor/components/chart/editor.js\",\n\t\"./panels_editor/components/chart/view\": \"./app/panels/panels_editor/components/chart/view.js\",\n\t\"./panels_editor/components/chart/view.js\": \"./app/panels/panels_editor/components/chart/view.js\",\n\t\"./panels_editor/components/components\": \"./app/panels/panels_editor/components/components.js\",\n\t\"./panels_editor/components/components.js\": \"./app/panels/panels_editor/components/components.js\",\n\t\"./panels_editor/components/components_hooks\": \"./app/panels/panels_editor/components/components_hooks.js\",\n\t\"./panels_editor/components/components_hooks.js\": \"./app/panels/panels_editor/components/components_hooks.js\",\n\t\"./panels_editor/components/form/common\": \"./app/panels/panels_editor/components/form/common.js\",\n\t\"./panels_editor/components/form/common.js\": \"./app/panels/panels_editor/components/form/common.js\",\n\t\"./panels_editor/components/form/editor\": \"./app/panels/panels_editor/components/form/editor.js\",\n\t\"./panels_editor/components/form/editor.js\": \"./app/panels/panels_editor/components/form/editor.js\",\n\t\"./panels_editor/components/form/view\": \"./app/panels/panels_editor/components/form/view.js\",\n\t\"./panels_editor/components/form/view.js\": \"./app/panels/panels_editor/components/form/view.js\",\n\t\"./panels_editor/components/indicator/editor\": \"./app/panels/panels_editor/components/indicator/editor.js\",\n\t\"./panels_editor/components/indicator/editor.js\": \"./app/panels/panels_editor/components/indicator/editor.js\",\n\t\"./panels_editor/components/indicator/view\": \"./app/panels/panels_editor/components/indicator/view.js\",\n\t\"./panels_editor/components/indicator/view.js\": \"./app/panels/panels_editor/components/indicator/view.js\",\n\t\"./panels_editor/components/table/editor\": \"./app/panels/panels_editor/components/table/editor.js\",\n\t\"./panels_editor/components/table/editor.js\": \"./app/panels/panels_editor/components/table/editor.js\",\n\t\"./panels_editor/components/table/view\": \"./app/panels/panels_editor/components/table/view.js\",\n\t\"./panels_editor/components/table/view.js\": \"./app/panels/panels_editor/components/table/view.js\",\n\t\"./panels_editor/index\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/index.js\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/layout_item\": \"./app/panels/panels_editor/layout_item.js\",\n\t\"./panels_editor/layout_item.js\": \"./app/panels/panels_editor/layout_item.js\",\n\t\"./panels_editor/panels_editor\": \"./app/panels/panels_editor/panels_editor.js\",\n\t\"./panels_editor/panels_editor.css\": \"./app/panels/panels_editor/panels_editor.css\",\n\t\"./panels_editor/panels_editor.js\": \"./app/panels/panels_editor/panels_editor.js\",\n\t\"./prj_fin\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/index\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/index.js\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/layouts\": \"./app/panels/prj_fin/layouts.js\",\n\t\"./prj_fin/layouts.js\": \"./app/panels/prj_fin/layouts.js\",\n\t\"./prj_fin/prj_fin\": \"./app/panels/prj_fin/prj_fin.js\",\n\t\"./prj_fin/prj_fin.js\": \"./app/panels/prj_fin/prj_fin.js\",\n\t\"./prj_fin/projects\": \"./app/panels/prj_fin/projects.js\",\n\t\"./prj_fin/projects.js\": \"./app/panels/prj_fin/projects.js\",\n\t\"./prj_fin/stage_arts\": \"./app/panels/prj_fin/stage_arts.js\",\n\t\"./prj_fin/stage_arts.js\": \"./app/panels/prj_fin/stage_arts.js\",\n\t\"./prj_fin/stage_contracts\": \"./app/panels/prj_fin/stage_contracts.js\",\n\t\"./prj_fin/stage_contracts.js\": \"./app/panels/prj_fin/stage_contracts.js\",\n\t\"./prj_fin/stages\": \"./app/panels/prj_fin/stages.js\",\n\t\"./prj_fin/stages.js\": \"./app/panels/prj_fin/stages.js\",\n\t\"./prj_graph\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/index\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/index.js\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/layouts\": \"./app/panels/prj_graph/layouts.js\",\n\t\"./prj_graph/layouts.js\": \"./app/panels/prj_graph/layouts.js\",\n\t\"./prj_graph/prj_graph\": \"./app/panels/prj_graph/prj_graph.js\",\n\t\"./prj_graph/prj_graph.js\": \"./app/panels/prj_graph/prj_graph.js\",\n\t\"./prj_help\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/img/21_1.png\": \"./app/panels/prj_help/img/21_1.png\",\n\t\"./prj_help/img/21_2.png\": \"./app/panels/prj_help/img/21_2.png\",\n\t\"./prj_help/img/21_3.png\": \"./app/panels/prj_help/img/21_3.png\",\n\t\"./prj_help/img/21_4.png\": \"./app/panels/prj_help/img/21_4.png\",\n\t\"./prj_help/img/21_5.png\": \"./app/panels/prj_help/img/21_5.png\",\n\t\"./prj_help/img/22_1.png\": \"./app/panels/prj_help/img/22_1.png\",\n\t\"./prj_help/img/22_2.png\": \"./app/panels/prj_help/img/22_2.png\",\n\t\"./prj_help/img/22_3.png\": \"./app/panels/prj_help/img/22_3.png\",\n\t\"./prj_help/img/23_1.png\": \"./app/panels/prj_help/img/23_1.png\",\n\t\"./prj_help/img/23_2.png\": \"./app/panels/prj_help/img/23_2.png\",\n\t\"./prj_help/img/24_1.png\": \"./app/panels/prj_help/img/24_1.png\",\n\t\"./prj_help/img/24_2.png\": \"./app/panels/prj_help/img/24_2.png\",\n\t\"./prj_help/img/24_3.png\": \"./app/panels/prj_help/img/24_3.png\",\n\t\"./prj_help/img/24_4.png\": \"./app/panels/prj_help/img/24_4.png\",\n\t\"./prj_help/img/24_5.png\": \"./app/panels/prj_help/img/24_5.png\",\n\t\"./prj_help/img/3_1.png\": \"./app/panels/prj_help/img/3_1.png\",\n\t\"./prj_help/img/3_2.png\": \"./app/panels/prj_help/img/3_2.png\",\n\t\"./prj_help/img/3_3.png\": \"./app/panels/prj_help/img/3_3.png\",\n\t\"./prj_help/img/3_4.png\": \"./app/panels/prj_help/img/3_4.png\",\n\t\"./prj_help/img/3_5.png\": \"./app/panels/prj_help/img/3_5.png\",\n\t\"./prj_help/img/3_6.png\": \"./app/panels/prj_help/img/3_6.png\",\n\t\"./prj_help/img/41_1.png\": \"./app/panels/prj_help/img/41_1.png\",\n\t\"./prj_help/img/41_2.png\": \"./app/panels/prj_help/img/41_2.png\",\n\t\"./prj_help/img/42_1.png\": \"./app/panels/prj_help/img/42_1.png\",\n\t\"./prj_help/img/42_2.png\": \"./app/panels/prj_help/img/42_2.png\",\n\t\"./prj_help/img/43_1.png\": \"./app/panels/prj_help/img/43_1.png\",\n\t\"./prj_help/img/43_2.png\": \"./app/panels/prj_help/img/43_2.png\",\n\t\"./prj_help/img/43_3.png\": \"./app/panels/prj_help/img/43_3.png\",\n\t\"./prj_help/img/43_4.png\": \"./app/panels/prj_help/img/43_4.png\",\n\t\"./prj_help/img/44_1.png\": \"./app/panels/prj_help/img/44_1.png\",\n\t\"./prj_help/img/44_2.png\": \"./app/panels/prj_help/img/44_2.png\",\n\t\"./prj_help/img/44_3.png\": \"./app/panels/prj_help/img/44_3.png\",\n\t\"./prj_help/img/44_4.png\": \"./app/panels/prj_help/img/44_4.png\",\n\t\"./prj_help/img/45_1.png\": \"./app/panels/prj_help/img/45_1.png\",\n\t\"./prj_help/img/46_1.png\": \"./app/panels/prj_help/img/46_1.png\",\n\t\"./prj_help/img/47_1.png\": \"./app/panels/prj_help/img/47_1.png\",\n\t\"./prj_help/img/71_1.png\": \"./app/panels/prj_help/img/71_1.png\",\n\t\"./prj_help/img/72_1.png\": \"./app/panels/prj_help/img/72_1.png\",\n\t\"./prj_help/img/72_2.png\": \"./app/panels/prj_help/img/72_2.png\",\n\t\"./prj_help/img/72_3.png\": \"./app/panels/prj_help/img/72_3.png\",\n\t\"./prj_help/img/74_1.png\": \"./app/panels/prj_help/img/74_1.png\",\n\t\"./prj_help/index\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/index.js\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/prj_help\": \"./app/panels/prj_help/prj_help.js\",\n\t\"./prj_help/prj_help.js\": \"./app/panels/prj_help/prj_help.js\",\n\t\"./prj_info\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/filter\": \"./app/panels/prj_info/filter.js\",\n\t\"./prj_info/filter.js\": \"./app/panels/prj_info/filter.js\",\n\t\"./prj_info/filter_dialog\": \"./app/panels/prj_info/filter_dialog.js\",\n\t\"./prj_info/filter_dialog.js\": \"./app/panels/prj_info/filter_dialog.js\",\n\t\"./prj_info/index\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/index.js\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/layouts\": \"./app/panels/prj_info/layouts.js\",\n\t\"./prj_info/layouts.js\": \"./app/panels/prj_info/layouts.js\",\n\t\"./prj_info/prj_info\": \"./app/panels/prj_info/prj_info.js\",\n\t\"./prj_info/prj_info.js\": \"./app/panels/prj_info/prj_info.js\",\n\t\"./prj_info/projects\": \"./app/panels/prj_info/projects.js\",\n\t\"./prj_info/projects.js\": \"./app/panels/prj_info/projects.js\",\n\t\"./prj_info/projects_hooks\": \"./app/panels/prj_info/projects_hooks.js\",\n\t\"./prj_info/projects_hooks.js\": \"./app/panels/prj_info/projects_hooks.js\",\n\t\"./prj_info/projects_layouts\": \"./app/panels/prj_info/projects_layouts.js\",\n\t\"./prj_info/projects_layouts.js\": \"./app/panels/prj_info/projects_layouts.js\",\n\t\"./prj_info/stage_detail\": \"./app/panels/prj_info/stage_detail.js\",\n\t\"./prj_info/stage_detail.js\": \"./app/panels/prj_info/stage_detail.js\",\n\t\"./prj_info/stage_detail_hooks\": \"./app/panels/prj_info/stage_detail_hooks.js\",\n\t\"./prj_info/stage_detail_hooks.js\": \"./app/panels/prj_info/stage_detail_hooks.js\",\n\t\"./prj_info/stage_detail_layouts\": \"./app/panels/prj_info/stage_detail_layouts.js\",\n\t\"./prj_info/stage_detail_layouts.js\": \"./app/panels/prj_info/stage_detail_layouts.js\",\n\t\"./prj_info/stages\": \"./app/panels/prj_info/stages.js\",\n\t\"./prj_info/stages.js\": \"./app/panels/prj_info/stages.js\",\n\t\"./prj_info/stages_hooks\": \"./app/panels/prj_info/stages_hooks.js\",\n\t\"./prj_info/stages_hooks.js\": \"./app/panels/prj_info/stages_hooks.js\",\n\t\"./prj_info/stages_layouts\": \"./app/panels/prj_info/stages_layouts.js\",\n\t\"./prj_info/stages_layouts.js\": \"./app/panels/prj_info/stages_layouts.js\",\n\t\"./prj_jobs\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/index\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/index.js\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/lab_fact_rpt_dtl\": \"./app/panels/prj_jobs/lab_fact_rpt_dtl.js\",\n\t\"./prj_jobs/lab_fact_rpt_dtl.js\": \"./app/panels/prj_jobs/lab_fact_rpt_dtl.js\",\n\t\"./prj_jobs/lab_plan_fot_dtl\": \"./app/panels/prj_jobs/lab_plan_fot_dtl.js\",\n\t\"./prj_jobs/lab_plan_fot_dtl.js\": \"./app/panels/prj_jobs/lab_plan_fot_dtl.js\",\n\t\"./prj_jobs/lab_plan_jobs_dtl\": \"./app/panels/prj_jobs/lab_plan_jobs_dtl.js\",\n\t\"./prj_jobs/lab_plan_jobs_dtl.js\": \"./app/panels/prj_jobs/lab_plan_jobs_dtl.js\",\n\t\"./prj_jobs/layouts\": \"./app/panels/prj_jobs/layouts.js\",\n\t\"./prj_jobs/layouts.js\": \"./app/panels/prj_jobs/layouts.js\",\n\t\"./prj_jobs/prj_jobs\": \"./app/panels/prj_jobs/prj_jobs.js\",\n\t\"./prj_jobs/prj_jobs.js\": \"./app/panels/prj_jobs/prj_jobs.js\",\n\t\"./prj_jobs/res_mon\": \"./app/panels/prj_jobs/res_mon.js\",\n\t\"./prj_jobs/res_mon.js\": \"./app/panels/prj_jobs/res_mon.js\",\n\t\"./query_editor\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/common\": \"./app/panels/query_editor/common.js\",\n\t\"./query_editor/common.js\": \"./app/panels/query_editor/common.js\",\n\t\"./query_editor/components/argument/argument\": \"./app/panels/query_editor/components/argument/argument.js\",\n\t\"./query_editor/components/argument/argument.js\": \"./app/panels/query_editor/components/argument/argument.js\",\n\t\"./query_editor/components/attribute/attribute\": \"./app/panels/query_editor/components/attribute/attribute.js\",\n\t\"./query_editor/components/attribute/attribute.js\": \"./app/panels/query_editor/components/attribute/attribute.js\",\n\t\"./query_editor/components/entity/entity\": \"./app/panels/query_editor/components/entity/entity.js\",\n\t\"./query_editor/components/entity/entity.js\": \"./app/panels/query_editor/components/entity/entity.js\",\n\t\"./query_editor/components/inspector/inspector\": \"./app/panels/query_editor/components/inspector/inspector.js\",\n\t\"./query_editor/components/inspector/inspector.js\": \"./app/panels/query_editor/components/inspector/inspector.js\",\n\t\"./query_editor/components/inspector/query_area\": \"./app/panels/query_editor/components/inspector/query_area.js\",\n\t\"./query_editor/components/inspector/query_area.js\": \"./app/panels/query_editor/components/inspector/query_area.js\",\n\t\"./query_editor/components/inspector_query_args/arg_iu_dialog\": \"./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js\",\n\t\"./query_editor/components/inspector_query_args/arg_iu_dialog.js\": \"./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js\",\n\t\"./query_editor/components/inspector_query_args/args_list\": \"./app/panels/query_editor/components/inspector_query_args/args_list.js\",\n\t\"./query_editor/components/inspector_query_args/args_list.js\": \"./app/panels/query_editor/components/inspector_query_args/args_list.js\",\n\t\"./query_editor/components/inspector_query_args/hooks\": \"./app/panels/query_editor/components/inspector_query_args/hooks.js\",\n\t\"./query_editor/components/inspector_query_args/hooks.js\": \"./app/panels/query_editor/components/inspector_query_args/hooks.js\",\n\t\"./query_editor/components/inspector_query_args/inspector_query_args\": \"./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js\",\n\t\"./query_editor/components/inspector_query_args/inspector_query_args.js\": \"./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js\",\n\t\"./query_editor/components/inspector_query_args/query_args_dialog\": \"./app/panels/query_editor/components/inspector_query_args/query_args_dialog.js\",\n\t\"./query_editor/components/inspector_query_args/query_args_dialog.js\": \"./app/panels/query_editor/components/inspector_query_args/query_args_dialog.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_component_select_button\": \"./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_component_select_button.js\": \"./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_operation_buttons\": \"./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_operation_buttons.js\": \"./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js\",\n\t\"./query_editor/components/inspector_query_cond/hooks\": \"./app/panels/query_editor/components/inspector_query_cond/hooks.js\",\n\t\"./query_editor/components/inspector_query_cond/hooks.js\": \"./app/panels/query_editor/components/inspector_query_cond/hooks.js\",\n\t\"./query_editor/components/inspector_query_cond/inspector_query_cond\": \"./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js\",\n\t\"./query_editor/components/inspector_query_cond/inspector_query_cond.js\": \"./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js\",\n\t\"./query_editor/components/inspector_query_cond/query_cond_dialog\": \"./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js\",\n\t\"./query_editor/components/inspector_query_cond/query_cond_dialog.js\": \"./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/attr_setup_dialog\": \"./app/panels/query_editor/components/inspector_query_ents/attr_setup_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/attr_setup_dialog.js\": \"./app/panels/query_editor/components/inspector_query_ents/attr_setup_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/attrs_list\": \"./app/panels/query_editor/components/inspector_query_ents/attrs_list.js\",\n\t\"./query_editor/components/inspector_query_ents/attrs_list.js\": \"./app/panels/query_editor/components/inspector_query_ents/attrs_list.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_add_dialog\": \"./app/panels/query_editor/components/inspector_query_ents/entity_add_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_add_dialog.js\": \"./app/panels/query_editor/components/inspector_query_ents/entity_add_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_attrs_dialog\": \"./app/panels/query_editor/components/inspector_query_ents/entity_attrs_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_attrs_dialog.js\": \"./app/panels/query_editor/components/inspector_query_ents/entity_attrs_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/ents_list\": \"./app/panels/query_editor/components/inspector_query_ents/ents_list.js\",\n\t\"./query_editor/components/inspector_query_ents/ents_list.js\": \"./app/panels/query_editor/components/inspector_query_ents/ents_list.js\",\n\t\"./query_editor/components/inspector_query_ents/hooks\": \"./app/panels/query_editor/components/inspector_query_ents/hooks.js\",\n\t\"./query_editor/components/inspector_query_ents/hooks.js\": \"./app/panels/query_editor/components/inspector_query_ents/hooks.js\",\n\t\"./query_editor/components/inspector_query_ents/inspector_query_ents\": \"./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js\",\n\t\"./query_editor/components/inspector_query_ents/inspector_query_ents.js\": \"./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js\",\n\t\"./query_editor/components/inspector_query_rls/hooks\": \"./app/panels/query_editor/components/inspector_query_rls/hooks.js\",\n\t\"./query_editor/components/inspector_query_rls/hooks.js\": \"./app/panels/query_editor/components/inspector_query_rls/hooks.js\",\n\t\"./query_editor/components/inspector_query_rls/inspector_query_rls\": \"./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js\",\n\t\"./query_editor/components/inspector_query_rls/inspector_query_rls.js\": \"./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js\",\n\t\"./query_editor/components/queries_manager/hooks\": \"./app/panels/query_editor/components/queries_manager/hooks.js\",\n\t\"./query_editor/components/queries_manager/hooks.js\": \"./app/panels/query_editor/components/queries_manager/hooks.js\",\n\t\"./query_editor/components/queries_manager/queries_list\": \"./app/panels/query_editor/components/queries_manager/queries_list.js\",\n\t\"./query_editor/components/queries_manager/queries_list.js\": \"./app/panels/query_editor/components/queries_manager/queries_list.js\",\n\t\"./query_editor/components/queries_manager/queries_manager\": \"./app/panels/query_editor/components/queries_manager/queries_manager.js\",\n\t\"./query_editor/components/queries_manager/queries_manager.js\": \"./app/panels/query_editor/components/queries_manager/queries_manager.js\",\n\t\"./query_editor/components/queries_manager/query_iu_dialog\": \"./app/panels/query_editor/components/queries_manager/query_iu_dialog.js\",\n\t\"./query_editor/components/queries_manager/query_iu_dialog.js\": \"./app/panels/query_editor/components/queries_manager/query_iu_dialog.js\",\n\t\"./query_editor/components/query_diagram/query_diagram\": \"./app/panels/query_editor/components/query_diagram/query_diagram.js\",\n\t\"./query_editor/components/query_diagram/query_diagram.css\": \"./app/panels/query_editor/components/query_diagram/query_diagram.css\",\n\t\"./query_editor/components/query_diagram/query_diagram.js\": \"./app/panels/query_editor/components/query_diagram/query_diagram.js\",\n\t\"./query_editor/components/relation/relation\": \"./app/panels/query_editor/components/relation/relation.js\",\n\t\"./query_editor/components/relation/relation.js\": \"./app/panels/query_editor/components/relation/relation.js\",\n\t\"./query_editor/hooks\": \"./app/panels/query_editor/hooks.js\",\n\t\"./query_editor/hooks.js\": \"./app/panels/query_editor/hooks.js\",\n\t\"./query_editor/index\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/index.js\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/query_editor\": \"./app/panels/query_editor/query_editor.js\",\n\t\"./query_editor/query_editor.js\": \"./app/panels/query_editor/query_editor.js\",\n\t\"./rrp_conf_editor\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/common\": \"./app/panels/rrp_conf_editor/common.js\",\n\t\"./rrp_conf_editor/common.js\": \"./app/panels/rrp_conf_editor/common.js\",\n\t\"./rrp_conf_editor/components/action_message\": \"./app/panels/rrp_conf_editor/components/action_message.js\",\n\t\"./rrp_conf_editor/components/action_message.js\": \"./app/panels/rrp_conf_editor/components/action_message.js\",\n\t\"./rrp_conf_editor/components/dialog_help\": \"./app/panels/rrp_conf_editor/components/dialog_help.js\",\n\t\"./rrp_conf_editor/components/dialog_help.js\": \"./app/panels/rrp_conf_editor/components/dialog_help.js\",\n\t\"./rrp_conf_editor/components/dialog_mark_iu\": \"./app/panels/rrp_conf_editor/components/dialog_mark_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_mark_iu.js\": \"./app/panels/rrp_conf_editor/components/dialog_mark_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_order\": \"./app/panels/rrp_conf_editor/components/dialog_order.js\",\n\t\"./rrp_conf_editor/components/dialog_order.js\": \"./app/panels/rrp_conf_editor/components/dialog_order.js\",\n\t\"./rrp_conf_editor/components/dialog_section_iu\": \"./app/panels/rrp_conf_editor/components/dialog_section_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_section_iu.js\": \"./app/panels/rrp_conf_editor/components/dialog_section_iu.js\",\n\t\"./rrp_conf_editor/components/mark_card\": \"./app/panels/rrp_conf_editor/components/mark_card.js\",\n\t\"./rrp_conf_editor/components/mark_card.js\": \"./app/panels/rrp_conf_editor/components/mark_card.js\",\n\t\"./rrp_conf_editor/components/mark_card_toolbar\": \"./app/panels/rrp_conf_editor/components/mark_card_toolbar.js\",\n\t\"./rrp_conf_editor/components/mark_card_toolbar.js\": \"./app/panels/rrp_conf_editor/components/mark_card_toolbar.js\",\n\t\"./rrp_conf_editor/components/mark_cn_list\": \"./app/panels/rrp_conf_editor/components/mark_cn_list.js\",\n\t\"./rrp_conf_editor/components/mark_cn_list.js\": \"./app/panels/rrp_conf_editor/components/mark_cn_list.js\",\n\t\"./rrp_conf_editor/components/marks\": \"./app/panels/rrp_conf_editor/components/marks.js\",\n\t\"./rrp_conf_editor/components/marks.js\": \"./app/panels/rrp_conf_editor/components/marks.js\",\n\t\"./rrp_conf_editor/components/marks_toolbar\": \"./app/panels/rrp_conf_editor/components/marks_toolbar.js\",\n\t\"./rrp_conf_editor/components/marks_toolbar.js\": \"./app/panels/rrp_conf_editor/components/marks_toolbar.js\",\n\t\"./rrp_conf_editor/components/section\": \"./app/panels/rrp_conf_editor/components/section.js\",\n\t\"./rrp_conf_editor/components/section.js\": \"./app/panels/rrp_conf_editor/components/section.js\",\n\t\"./rrp_conf_editor/components/section_tab\": \"./app/panels/rrp_conf_editor/components/section_tab.js\",\n\t\"./rrp_conf_editor/components/section_tab.js\": \"./app/panels/rrp_conf_editor/components/section_tab.js\",\n\t\"./rrp_conf_editor/components/sections\": \"./app/panels/rrp_conf_editor/components/sections.js\",\n\t\"./rrp_conf_editor/components/sections.js\": \"./app/panels/rrp_conf_editor/components/sections.js\",\n\t\"./rrp_conf_editor/hooks\": \"./app/panels/rrp_conf_editor/hooks.js\",\n\t\"./rrp_conf_editor/hooks.js\": \"./app/panels/rrp_conf_editor/hooks.js\",\n\t\"./rrp_conf_editor/index\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/index.js\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/layouts\": \"./app/panels/rrp_conf_editor/layouts.js\",\n\t\"./rrp_conf_editor/layouts.js\": \"./app/panels/rrp_conf_editor/layouts.js\",\n\t\"./rrp_conf_editor/rrp_conf_editor\": \"./app/panels/rrp_conf_editor/rrp_conf_editor.js\",\n\t\"./rrp_conf_editor/rrp_conf_editor.js\": \"./app/panels/rrp_conf_editor/rrp_conf_editor.js\",\n\t\"./samples\": \"./app/panels/samples/index.js\",\n\t\"./samples/\": \"./app/panels/samples/index.js\",\n\t\"./samples/chart\": \"./app/panels/samples/chart.js\",\n\t\"./samples/chart.js\": \"./app/panels/samples/chart.js\",\n\t\"./samples/cyclogram\": \"./app/panels/samples/cyclogram.js\",\n\t\"./samples/cyclogram.js\": \"./app/panels/samples/cyclogram.js\",\n\t\"./samples/data_grid\": \"./app/panels/samples/data_grid.js\",\n\t\"./samples/data_grid.js\": \"./app/panels/samples/data_grid.js\",\n\t\"./samples/gantt\": \"./app/panels/samples/gantt.js\",\n\t\"./samples/gantt.js\": \"./app/panels/samples/gantt.js\",\n\t\"./samples/index\": \"./app/panels/samples/index.js\",\n\t\"./samples/index.js\": \"./app/panels/samples/index.js\",\n\t\"./samples/indicator\": \"./app/panels/samples/indicator.js\",\n\t\"./samples/indicator.js\": \"./app/panels/samples/indicator.js\",\n\t\"./samples/loader\": \"./app/panels/samples/loader.js\",\n\t\"./samples/loader.js\": \"./app/panels/samples/loader.js\",\n\t\"./samples/messages\": \"./app/panels/samples/messages.js\",\n\t\"./samples/messages.js\": \"./app/panels/samples/messages.js\",\n\t\"./samples/mui\": \"./app/panels/samples/mui.js\",\n\t\"./samples/mui.js\": \"./app/panels/samples/mui.js\",\n\t\"./samples/p8online\": \"./app/panels/samples/p8online.js\",\n\t\"./samples/p8online.js\": \"./app/panels/samples/p8online.js\",\n\t\"./samples/samples\": \"./app/panels/samples/samples.js\",\n\t\"./samples/samples.js\": \"./app/panels/samples/samples.js\",\n\t\"./samples/svg\": \"./app/panels/samples/svg.js\",\n\t\"./samples/svg.js\": \"./app/panels/samples/svg.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./app/panels sync recursive ^\\\\.\\\\/.*$\";\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/_sync_^\\.\\/.*$?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/clnt_task_board.js": +/*!*******************************************************!*\ + !*** ./app/panels/clnt_task_board/clnt_task_board.js ***! + \*******************************************************/ +/***/ ((__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 */ ClntTaskBoard: () => (/* binding */ ClntTaskBoard)\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_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-beautiful-dnd */ \"./node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _components_status_card_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/status_card.js */ \"./app/panels/clnt_task_board/components/status_card.js\");\n/* harmony import */ var _task_dialog_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./task_dialog.js */ \"./app/panels/clnt_task_board/task_dialog.js\");\n/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./filter.js */ \"./app/panels/clnt_task_board/filter.js\");\n/* harmony import */ var _hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/hooks.js */ \"./app/panels/clnt_task_board/hooks/hooks.js\");\n/* harmony import */ var _hooks_tasks_hooks_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/tasks_hooks.js */ \"./app/panels/clnt_task_board/hooks/tasks_hooks.js\");\n/* harmony import */ var _hooks_filter_hooks_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks/filter_hooks.js */ \"./app/panels/clnt_task_board/hooks/filter_hooks.js\");\n/* harmony import */ var _components_note_dialog_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/note_dialog.js */ \"./app/panels/clnt_task_board/components/note_dialog.js\");\n/* harmony import */ var _components_settings_dialog_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/settings_dialog.js */ \"./app/panels/clnt_task_board/components/settings_dialog.js\");\n/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../core/utils.js */ \"./app/core/utils.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./styles */ \"./app/panels/clnt_task_board/styles.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Панель мониторинга: Корневая панель доски задач\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Работа с drag&drop\n //Интерфейсные компоненты\n\n //Компонент формы события\n //Компонент фильтров\n //Вспомогательные хуки\n //Хук событий\n //Вспомогательные хуки фильтра\n //Диалог примечания\n //Диалог дополнительных настроек\n //Вспомогательные функции\n //Общие стили\n //Заголовок страницы\n\n//---------\n//Константы\n//---------\n\n//Высота фильтра\nconst FILTER_HEIGHT = \"56px\";\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n width: \"100%\",\n padding: 0\n },\n BOX_FILTER: {\n display: \"flex\",\n alignItems: \"center\"\n },\n ICON_BUTTON_SETTINGS: {\n marginLeft: \"auto\"\n },\n STACK_STATUSES: {\n maxWidth: \"99vw\",\n paddingBottom: \"5px\",\n overflowX: \"auto\",\n ..._styles__WEBPACK_IMPORTED_MODULE_10__.COMMON_STYLES.SCROLL\n },\n BOX_STATUSES: {\n position: \"fixed\",\n left: \"8px\",\n top: `calc(${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_11__.APP_BAR_HEIGHT} + ${FILTER_HEIGHT})`\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель доски задач\nconst ClntTaskBoard = () => {\n //Состояние фильтров\n const [filters, handleFiltersChange] = (0,_hooks_filter_hooks_js__WEBPACK_IMPORTED_MODULE_6__.useFilters)();\n\n //Состояние текущего загруженного фильтра\n const [filterTypeLoaded, setFilterTypeLoaded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(filters.values.sType);\n\n //Состояние вспомогательных диалогов\n const [dialogsState, setDialogsState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n filterDialogIsOpen: filters.isSetByUser,\n settingsDialogIsOpen: false,\n noteDialog: {\n isOpen: false,\n callback: null\n },\n taskDialogIsOpen: false\n });\n\n //Состояние сортировок\n const [orders, setOrders] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Состояние дополнительных данных\n const [extraData, setExtraData, handleDocLinksLoad] = (0,_hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__.useExtraData)(filters.values.sType);\n\n //Состояние статусов событий\n const [statuses, statusesState, setStatuses, setStatusesState] = (0,_hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__.useStatuses)(filters.values.sType);\n\n //Состояние пользовательских настроек заливки событий\n const [colorRules, setColorRules] = (0,_hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__.useColorRules)();\n\n //Состояние событий\n const [tasks, setTasks, onDragEnd] = (0,_hooks_tasks_hooks_js__WEBPACK_IMPORTED_MODULE_5__.useTasks)(filters.values, orders);\n\n //Состояние доступных маршрутов события\n const [availableRoutes, setAvailableRoutes] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n source: \"\",\n routes: []\n });\n\n //Состояние перетаскиваемого события\n const [dragItem, setDragItem] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n type: \"\",\n status: \"\"\n });\n\n //При открытии/закрытии диалога фильтра\n const handleFilterOpen = isOpen => {\n setDialogsState(pv => ({\n ...pv,\n filterDialogIsOpen: isOpen\n }));\n };\n\n //При открытии/закрытии диалога дополнительных настроек\n const handleSettingsOpen = () => setDialogsState(pv => ({\n ...pv,\n settingsDialogIsOpen: !pv.settingsDialogIsOpen\n }));\n\n //При открытии/закрытии диалога примечания\n const handleNoteOpen = (cb = null) => {\n setDialogsState(pv => ({\n ...pv,\n noteDialog: {\n isOpen: !dialogsState.noteDialog.isOpen,\n callback: cb ? v => cb(v) : null\n }\n }));\n };\n\n //При открытии/закрытии диалога события\n const handleTaskDialogOpen = () => setDialogsState(pv => ({\n ...pv,\n taskDialogIsOpen: !dialogsState.taskDialogIsOpen\n }));\n\n //При необходимости обновить дополнительные данные\n const handleExtraDataReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n setExtraData(pv => ({\n ...pv,\n reload: true\n }));\n }, [setExtraData]);\n\n //При необходимости обновить информацию о событиях\n const handleTasksReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((bAccountsReload = true) => {\n setTasks(pv => ({\n ...pv,\n reload: true,\n accountsReload: bAccountsReload\n }));\n }, [setTasks]);\n\n //При необходимости обновить состояние статусов\n const handleStatusesStateReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n setStatusesState(pv => ({\n ...pv,\n reload: true,\n sorted: false\n }));\n }, [setStatusesState]);\n\n //При изменении дополнительных настроек\n const handleSettingsChange = (newSettings, statusesState) => {\n setColorRules(pv => ({\n ...pv,\n selectedColorRule: newSettings.selectedColorRule\n }));\n setStatusesState({\n ...statusesState,\n sorted: false\n });\n };\n\n //При изменении цвета карточки статуса\n const handleSettingStatusColorChange = (changedStatus, newColor) => {\n //Считываем массив статусов\n let newStatuses = [...statuses];\n //Изменяем цвет нужного статуса\n newStatuses.find(status => status.ID === changedStatus.ID).color = newColor;\n //Обновляем состояние\n setStatuses([...newStatuses]);\n };\n\n //При изменении сортировки\n const handleOrderChanged = columnName => {\n //Копируем состояние сортировки\n let newOrders = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_9__.deepCopyObject)(orders);\n //Находим сортируемую колонку\n const orderedColumn = newOrders.find(o => o.name == columnName);\n //Определяем направление сортировки\n const newDirection = orderedColumn?.direction == \"ASC\" ? \"DESC\" : orderedColumn?.direction == \"DESC\" ? null : \"ASC\";\n //Если сортировка отключается - очищаем информацию о сортировке\n if (newDirection == null && orderedColumn) newOrders.splice(newOrders.indexOf(orderedColumn), 1);\n //Если сортировки не было - устанавливаем\n if (newDirection != null && !orderedColumn) newOrders.push({\n name: columnName,\n direction: newDirection\n });\n //Если сортировка была и не отключается - изменяем\n if (newDirection != null && orderedColumn) orderedColumn.direction = newDirection;\n //Устанавливаем новую сортировку\n setOrders(newOrders);\n };\n\n //При необходимости очистки доступных маршрутов события\n const handleAvailableRoutesStateClear = () => {\n setAvailableRoutes({\n source: \"\",\n routes: []\n });\n };\n\n //Обработка захвата перетаскиваемого объекта\n const handleDragItemChange = (filtersType, statusCode) => setDragItem({\n type: filtersType,\n status: statusCode\n });\n\n //Обработка очистки перетаскиваемого объекта\n const handleDragItemClear = () => {\n setDragItem({\n type: \"\",\n status: \"\"\n });\n };\n\n //Проверка доступности карточки события\n const isCardAvailable = code => {\n return availableRoutes.source === code || availableRoutes.routes.find(r => r.SDESTINATION === code) || !availableRoutes.source ? true : false;\n };\n\n //При изменении фильтра\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если изменился тип\n if (filters.loaded && filters.values.sType) {\n //Если тип события изменился\n if (filterTypeLoaded !== filters.values.sType) {\n //Обновляем информацию о дополнительных данных\n handleExtraDataReload();\n //Обновляем информацию о статусах\n handleStatusesStateReload();\n //Обновляем текущий загруженный тип события\n setFilterTypeLoaded(filters.values.sType);\n }\n //Обновляем информацию о событиях\n handleTasksReload();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filters.loaded, filters.values]);\n\n //При изменении сортировки\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если есть все данные для загрузки событий\n if (filters.loaded && filters.values.sType) {\n //Обновляем информацию о событиях без обновления контрагентов\n handleTasksReload(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [orders]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.CONTAINER\n }, dialogsState.settingsDialogIsOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_settings_dialog_js__WEBPACK_IMPORTED_MODULE_8__.SettingsDialog, {\n initial: {\n colorRules: colorRules,\n statusesState: statusesState\n },\n onSettingsChange: handleSettingsChange,\n onClose: handleSettingsOpen\n }) : null, dialogsState.taskDialogIsOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_dialog_js__WEBPACK_IMPORTED_MODULE_2__.TaskDialog, {\n taskType: dragItem.type,\n taskStatus: dragItem.status,\n onTasksReload: () => handleTasksReload(true),\n onClose: () => {\n handleTaskDialogOpen();\n handleDragItemClear();\n }\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.BOX_FILTER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter_js__WEBPACK_IMPORTED_MODULE_3__.Filter, {\n isFilterDialogOpen: dialogsState.filterDialogIsOpen,\n filter: filters.values,\n docLinks: extraData.docLinks,\n selectedDocLink: filters.values.sDocLink ? extraData.docLinks.find(d => d.NRN === filters.values.sDocLink) : null,\n onFilterChange: handleFiltersChange,\n onDocLinksLoad: handleDocLinksLoad,\n onFilterOpen: () => handleFilterOpen(true),\n onFilterClose: () => handleFilterOpen(false),\n onTasksReload: handleTasksReload,\n orders: orders,\n onOrderChanged: handleOrderChanged\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n title: \"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0438\",\n onClick: handleSettingsOpen,\n sx: STYLES.ICON_BUTTON_SETTINGS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], null, \"settings\"))), dialogsState.noteDialog.isOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_note_dialog_js__WEBPACK_IMPORTED_MODULE_7__.NoteDialog, {\n noteTypes: extraData.noteTypes,\n onCallback: note => dialogsState.noteDialog.callback(note),\n onClose: handleNoteOpen\n }) : null, filters.loaded && filters.values.sType && extraData.dataLoaded && tasks.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__.DragDropContext, {\n onDragStart: path => {\n //Поиск кода текущего статуса задачи\n let sourceCode = statuses.find(status => status.ID == path.source.droppableId).SEVNSTAT_CODE;\n //Устанавливаем доступные маршруты события\n setAvailableRoutes({\n source: sourceCode,\n routes: [...extraData.evRoutes.filter(route => route.SSOURCE === sourceCode)]\n });\n },\n onDragEnd: path => {\n //Если есть статус назначения\n if (path.destination) {\n //Определяем мнемокод статуса назначения\n let destCode = statuses.find(status => status.ID == path.destination.droppableId).SEVNSTAT_CODE;\n //Переносим событие\n onDragEnd({\n path: path,\n eventPoints: extraData.evPoints,\n openNoteDialog: handleNoteOpen,\n destCode: destCode\n });\n }\n //Очищаем информацию о доступных маршрутах события\n handleAvailableRoutesStateClear();\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.BOX_STATUSES\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__.Droppable, {\n droppableId: \"Statuses\",\n type: \"droppableTask\"\n }, provided => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: provided.innerRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n direction: \"row\",\n spacing: 2,\n sx: STYLES.STACK_STATUSES\n }, statusesState.sorted ? statuses.map((status, index) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: index\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__.Droppable, {\n isDropDisabled: !isCardAvailable(status.SEVNSTAT_CODE),\n droppableId: status.ID.toString()\n }, provided => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: provided.innerRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_status_card_js__WEBPACK_IMPORTED_MODULE_1__.StatusCard, {\n tasks: tasks,\n status: status,\n statusTitle: status[statusesState.attr] || status.SEVNSTAT_NAME,\n colorRules: colorRules,\n extraData: extraData,\n filtersType: filters.values.sType,\n isCardAvailable: isCardAvailable,\n onTasksReload: handleTasksReload,\n onDragItemChange: handleDragItemChange,\n onTaskDialogOpen: handleTaskDialogOpen,\n onNoteDialogOpen: handleNoteOpen,\n onStatusColorChange: handleSettingStatusColorChange,\n placeholder: provided.placeholder\n }))))) : null), provided.placeholder)))) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/clnt_task_board.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/custom_input_field.js": +/*!*********************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/custom_input_field.js ***! + \*********************************************************************/ +/***/ ((__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 */ CustomInputField: () => (/* binding */ CustomInputField)\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_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Input/Input.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Select/Select.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormHelperText/FormHelperText.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.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//Стили\nconst STYLES = {\n HELPER_TEXT: {\n color: \"red\"\n },\n SELECT_MENU: width => {\n return {\n ..._styles__WEBPACK_IMPORTED_MODULE_1__.COMMON_STYLES.SCROLL,\n width: width ? width + 24 : null\n };\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Кастомное поле ввода\nconst CustomInputField = ({\n elementCode,\n elementValue,\n labelText,\n onChange,\n required = false,\n items = null,\n emptyItem = null,\n dictionary,\n menuItemRender,\n ...other\n}) => {\n //Значение элемента\n const [value, setValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(elementValue);\n\n //Состояние элемента HTML (для оптимизации ширины MenuItems)\n const [anchorEl, setAnchorEl] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();\n\n //При открытии меню заливки событий\n const handleMenuOpen = e => {\n //Устанавливаем элемент меню\n setAnchorEl(e.target);\n };\n\n //При получении нового значения из вне\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setValue(elementValue);\n }, [elementValue]);\n\n //Изменение значения элемента\n const handleChange = e => {\n setValue(e.target.value);\n if (onChange) onChange(e.target.name, e.target.value);\n };\n\n //Выбор значения из словаря\n const handleDictionaryClick = () => {\n dictionary ? dictionary(res => res ? handleChange({\n target: {\n name: elementCode,\n value: res\n }\n }) : null) : null;\n };\n\n //Генерация поля с выбором из словаря Парус\n const renderInput = validationError => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _extends({\n error: validationError,\n id: elementCode,\n name: elementCode,\n value: value,\n endAdornment: dictionary ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n \"aria-label\": `${elementCode} select`,\n onClick: handleDictionaryClick,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"list\"))) : null,\n \"aria-describedby\": `${elementCode}-helper-text`,\n label: labelText,\n onChange: handleChange\n }, other));\n };\n\n //Генерация поля с выпадающим списком\n const renderSelect = (items, anchorEl, handleMenuOpen, validationError) => {\n //Формируем общий список элементов меню\n const menuItems = emptyItem ? [emptyItem, ...items] : [...items];\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _extends({\n error: validationError,\n id: elementCode,\n name: elementCode\n //!!!Пересмотреть момент. При изменении типа происходит ререндер со старым значением учетного документа:\n //1. Изменяется тип\n //2. Очищается items (список учетных документов)\n //3. Рисуется компонент со старым value и пустым items, из-за чего ошибка \"You have provided an out-of-range value\"\n //4. Вызывается useEffect, меняется значение value на новое (пустое значение)\n ,\n value: value,\n \"aria-describedby\": `${elementCode}-helper-text`,\n label: labelText,\n MenuProps: {\n slotProps: {\n paper: {\n sx: STYLES.SELECT_MENU(anchorEl?.offsetWidth)\n }\n }\n },\n onChange: handleChange,\n onOpen: handleMenuOpen\n }, other), menuItems ? menuItems.map((item, index) => {\n let customRender = null;\n if (menuItemRender) customRender = menuItemRender({\n item: item,\n key: item?.key ?? index\n }) || null;\n return customRender ? customRender : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n key: item?.key ?? index,\n value: item.id\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"inherit\",\n noWrap: true,\n title: item.caption,\n component: \"div\"\n }, item.caption));\n }) : null);\n };\n\n //Признак ошибки валидации\n const validationError = !value && required ? true : false;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n fullWidth: true,\n variant: \"standard\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n htmlFor: elementCode\n }, labelText), items ? renderSelect(items, anchorEl, handleMenuOpen, validationError) : renderInput(validationError), validationError ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n id: `${elementCode}-helper-text`,\n sx: STYLES.HELPER_TEXT\n }, \"*\\u041E\\u0431\\u044F\\u0437\\u0430\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0435 \\u043F\\u043E\\u043B\\u0435\") : null);\n};\n\n//Контроль свойств - Кастомное поле ввода\nCustomInputField.propTypes = {\n elementCode: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string).isRequired,\n elementValue: prop_types__WEBPACK_IMPORTED_MODULE_12___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_12___default().string), (prop_types__WEBPACK_IMPORTED_MODULE_12___default().number)]),\n labelText: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string).isRequired,\n required: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool),\n items: prop_types__WEBPACK_IMPORTED_MODULE_12___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_12___default().object)),\n emptyItem: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object),\n dictionary: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n onChange: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n menuItemRender: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func)\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/custom_input_field.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/filter_dialog.js": +/*!****************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/filter_dialog.js ***! + \****************************************************************/ +/***/ ((__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 */ FilterDialog: () => (/* binding */ FilterDialog)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/RadioGroup/RadioGroup.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControlLabel/FormControlLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Radio/Radio.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _custom_input_field__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./custom_input_field */ \"./app/panels/clnt_task_board/components/custom_input_field.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../layouts */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/dict_hooks */ \"./app/panels/clnt_task_board/hooks/dict_hooks.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//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n SELECT: {\n width: \"450px\"\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Диалог фильтра отбора\nconst FilterDialog = ({\n initial,\n onFilterChange,\n onFilterClose,\n onDocLinksLoad\n}) => {\n //Собственное состояние\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initial.filter);\n\n //Состояние текущих учётных документов\n const [curDocLinks, setCurDocLinks] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: true,\n docLinks: initial.docLinks\n });\n\n //Вспомогательные функции открытия раздела\n const {\n handleCatalogTreeOpen,\n handleEventTypesOpen,\n handleAgnlistOpen,\n handleInsDepartmentOpen,\n handleCostStaffGroupsOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_6__.useDictionary)();\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //При изменении типа события фильтра\n const handleTypeChange = callBack => handleEventTypesOpen({\n sCode: filter.sType,\n callBack: res => {\n callBack(res.outParameters.eventtypecode);\n }\n });\n\n //При изменении каталога фильтра\n const handleCrnChange = callBack => handleCatalogTreeOpen({\n sUnitName: \"ClientEvents\",\n sName: filter.sCrnName,\n callBack: res => {\n callBack(res.outParameters.out_NAME);\n }\n });\n\n //При изменении исполнителя фильтра\n const handleSendPersonChange = callBack => handleAgnlistOpen({\n sMnemo: filter.sSendPerson,\n callBack: res => {\n callBack(res.outParameters.agnmnemo);\n }\n });\n\n //При изменении подразделения фильтра\n const handleSendDivisionChange = callBack => handleInsDepartmentOpen({\n sCode: filter.sSendDivision,\n callBack: res => {\n callBack(res.outParameters.out_CODE);\n }\n });\n\n //При изменении группы пользователей фильтра\n const handleSendUsrGrpChange = callBack => handleCostStaffGroupsOpen({\n sCode: filter.sSendUsrGrp,\n callBack: res => {\n callBack(res.outParameters.out_CODE);\n }\n });\n\n //Считывание подкаталогов\n const getSubCatalogs = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n //Считываем каталоги\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_SUBCATALOGS_GET\",\n args: {\n SCRN_NAME: filter.sCrnName,\n NSUBCAT: filter.bSubcatalogs ? 1 : 0\n }\n });\n //Возвращаем список каталогов\n return data.SRESULT;\n }, [executeStored, filter.sCrnName, filter.bSubcatalogs]);\n\n //При закрытии диалога с изменением фильтра\n const handleDialogOk = async () => {\n //Если указано имя каталога, но не загружен список рег. номеров\n if (filter.sCrnName && !filter.sCrnRnList) {\n //Загружаем список рег. номеров каталогов\n const crns = await getSubCatalogs();\n //Устанавливаем новый фильтр\n onFilterChange({\n ...filter,\n ...(crns ? {\n sCrnRnList: crns\n } : {})\n });\n //Закрываем диалог фильтра\n onFilterClose();\n } else {\n //Устанавливаем новый фильтр\n onFilterChange(filter);\n //Закрываем диалог фильтра\n onFilterClose();\n }\n };\n\n //При очистке фильтра\n const handleFilterClear = () => {\n setFilter({\n sState: _layouts__WEBPACK_IMPORTED_MODULE_4__.EVENT_STATES[1],\n sType: \"\",\n sCrnName: \"\",\n sCrnRnList: \"\",\n bSubcatalogs: false,\n sSendPerson: \"\",\n sSendDivision: \"\",\n sSendUsrGrp: \"\",\n sDocLink: \"\"\n });\n };\n\n //При изменении значения элемента\n const handleFilterItemChange = (item, value) => {\n //Если это изменение типа\n if (item === \"sType\") {\n //Указываем тип с очисткой информации об учетных документах\n setFilter(pv => ({\n ...pv,\n [item]: value,\n sDocLink: \"\"\n }));\n setCurDocLinks(pv => ({\n ...pv,\n loaded: false,\n docLinks: []\n }));\n } else {\n //Обновляем значение поля\n setFilter(pv => ({\n ...pv,\n [item]: value\n }));\n }\n };\n\n //При очистке учётного документа\n const handleDocLinkClear = () => setFilter(pv => ({\n ...pv,\n sDocLink: \"\"\n }));\n\n //Обработка изменений с каталогами\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если каталог не указан, но галка подкаталогов установлена - снимаем её\n if (!filter.sCrnName && filter.bSubcatalogs) setFilter(pv => ({\n ...pv,\n bSubcatalogs: false\n }));\n //Если изменился каталог и остался список рег. номеров каталогов - очищаем его\n if (filter.sCrnName !== initial.sCrnName && filter.sCrnRnList) setFilter(pv => ({\n ...pv,\n sCrnRnList: \"\"\n }));\n //Если каталог равен изначальному\n if (filter.sCrnName === initial.sCrnName) {\n //Если признак подкаталогов равен изначальному, но список рег. номеров каталогов не соответствует - загружаем изначальный\n if (filter.bSubcatalogs === initial.bSubcatalogs && filter.sCrnRnList !== initial.sCrnRnList) {\n setFilter(pv => ({\n ...pv,\n sCrnRnList: initial.sCrnRnList\n }));\n }\n //Если признак подкаталогов не равен изначальному\n if (filter.bSubcatalogs !== initial.bSubcatalogs) {\n //Если не установлен - считываем первый из списка рег. номеров изначальных каталогов\n if (!filter.bSubcatalogs) {\n setFilter(pv => ({\n ...pv,\n sCrnRnList: initial.sCrnRnList.split(\";\")[0]\n }));\n } else {\n //Если установлен - очищаем список рег. номеров каталогов для последующей загрузки\n setFilter(pv => ({\n ...pv,\n sCrnRnList: \"\"\n }));\n }\n }\n }\n }, [filter.sCrnName, filter.sCrnRnList, filter.bSubcatalogs, initial.sCrnName, initial.sCrnRnList, initial.bSubcatalogs]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n open: true,\n onClose: onFilterClose,\n fullWidth: true,\n maxWidth: \"sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"\\u0424\\u0438\\u043B\\u044C\\u0442\\u0440 \\u043E\\u0442\\u0431\\u043E\\u0440\\u0430\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: onFilterClose,\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.DIALOG_CLOSE_BUTTON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"close\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.SCROLL\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.BOX_WITH_LEGEND,\n component: \"fieldset\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"legend\", {\n style: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.LEGEND\n }, \"\\u0421\\u043E\\u0441\\u0442\\u043E\\u044F\\u043D\\u0438\\u0435\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n row: true,\n \"aria-labelledby\": \"sState-label\",\n id: \"sState\",\n name: \"sState\",\n value: filter.sState,\n onChange: e => handleFilterItemChange(e.target.name, e.target.value)\n }, Object.keys(_layouts__WEBPACK_IMPORTED_MODULE_4__.EVENT_STATES).map(function (k) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n key: k,\n value: _layouts__WEBPACK_IMPORTED_MODULE_4__.EVENT_STATES[k],\n control: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], null),\n label: _layouts__WEBPACK_IMPORTED_MODULE_4__.EVENT_STATES[k]\n });\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field__WEBPACK_IMPORTED_MODULE_2__.CustomInputField, {\n elementCode: \"sType\",\n elementValue: filter.sType,\n labelText: \"\\u0422\\u0438\\u043F\",\n dictionary: callBack => handleTypeChange(callBack),\n onChange: handleFilterItemChange\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field__WEBPACK_IMPORTED_MODULE_2__.CustomInputField, {\n elementCode: \"sCrnName\",\n elementValue: filter.sCrnName,\n labelText: \"\\u041A\\u0430\\u0442\\u0430\\u043B\\u043E\\u0433\",\n dictionary: callBack => handleCrnChange(callBack),\n onChange: handleFilterItemChange\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n control: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n id: \"bSubcatalogs\",\n name: \"bSubcatalogs\",\n checked: filter.bSubcatalogs,\n disabled: filter.sCrnName ? false : true,\n onChange: e => handleFilterItemChange(e.target.name, e.target.checked)\n }),\n label: \"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0430\\u044F \\u043F\\u043E\\u0434\\u043A\\u0430\\u0442\\u0430\\u043B\\u043E\\u0433\\u0438\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field__WEBPACK_IMPORTED_MODULE_2__.CustomInputField, {\n elementCode: \"sSendPerson\",\n elementValue: filter.sSendPerson,\n labelText: \"\\u0418\\u0441\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\",\n dictionary: callBack => handleSendPersonChange(callBack),\n onChange: handleFilterItemChange\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field__WEBPACK_IMPORTED_MODULE_2__.CustomInputField, {\n elementCode: \"sSendDivision\",\n elementValue: filter.sSendDivision,\n labelText: \"\\u041F\\u043E\\u0434\\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\",\n dictionary: callBack => handleSendDivisionChange(callBack),\n onChange: handleFilterItemChange\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field__WEBPACK_IMPORTED_MODULE_2__.CustomInputField, {\n elementCode: \"sSendUsrGrp\",\n elementValue: filter.sSendUsrGrp,\n labelText: \"\\u0413\\u0440\\u0443\\u043F\\u043F\\u0430 \\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u0435\\u0439\",\n dictionary: callBack => handleSendUsrGrpChange(callBack),\n onChange: handleFilterItemChange\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n direction: \"row\",\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.STACK_DOCLINKS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field__WEBPACK_IMPORTED_MODULE_2__.CustomInputField, {\n elementCode: \"sDocLink\",\n elementValue: filter.sDocLink,\n labelText: \"\\u0423\\u0447\\u0451\\u0442\\u043D\\u044B\\u0439 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\",\n items: [...(curDocLinks.docLinks || [])].reduce((prev, cur) => [...prev, {\n id: cur.NRN,\n caption: cur.SDESCR\n }], []),\n disabled: !curDocLinks.docLinks.length ? true : false,\n onChange: handleFilterItemChange,\n sx: STYLES.SELECT\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n title: \"\\u041E\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u044C\",\n disabled: !filter.sDocLink,\n onClick: handleDocLinkClear\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"clear\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n title: \"\\u041E\\u0431\\u043D\\u043E\\u0432\\u0438\\u0442\\u044C\",\n disabled: curDocLinks.loaded,\n onClick: () => {\n //Очищаем учетный документ\n handleDocLinkClear();\n //Загружаем учетные документы типа\n onDocLinksLoad(filter.sType).then(dl => setCurDocLinks(pv => ({\n ...pv,\n loaded: true,\n docLinks: dl\n })));\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"refresh\"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.DIALOG_ACTIONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n disabled: !(0,_core_utils__WEBPACK_IMPORTED_MODULE_3__.hasValue)(filter.sType),\n variant: \"text\",\n onClick: handleDialogOk\n }, \"\\u041E\\u041A\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n variant: \"text\",\n onClick: handleFilterClear\n }, \"\\u041E\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n variant: \"text\",\n onClick: onFilterClose\n }, \"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430\"))));\n};\n\n//Контроль свойств компонента - Диалог фильтра отбора\nFilterDialog.propTypes = {\n initial: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().object).isRequired,\n onFilterChange: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().func).isRequired,\n onFilterClose: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().func).isRequired,\n onDocLinksLoad: (prop_types__WEBPACK_IMPORTED_MODULE_20___default().func)\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/filter_dialog.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/note_dialog.js": +/*!**************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/note_dialog.js ***! + \**************************************************************/ +/***/ ((__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 */ NoteDialog: () => (/* binding */ NoteDialog)\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_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./custom_input_field.js */ \"./app/panels/clnt_task_board/components/custom_input_field.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент: Диалог примечания\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Кастомное поле ввода\n //Общие стили\n\n//Стили\nconst STYLES = {\n DIALOG_CONTENT: {\n paddingTop: 0,\n paddingBottom: 0\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Диалог примечания\nconst NoteDialog = ({\n noteTypes,\n onCallback,\n onClose\n}) => {\n //Собственное состояние\n const [note, setNote] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n noteTypeIndex: 0,\n text: \"\"\n });\n\n //При изменении примечания\n const handleNoteChange = value => setNote(pv => ({\n ...pv,\n text: value\n }));\n\n //При изменении заголовка примечания\n const handleNoteHeaderChange = (name, value) => {\n setNote(pv => ({\n ...pv,\n noteTypeIndex: value\n }));\n };\n\n //При закрытии диалога с изменением примечания\n const handleDialogOk = () => {\n //Передаем информацию о примечание в callback\n onCallback({\n header: noteTypes[note.noteTypeIndex],\n text: note.text\n });\n onClose();\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n open: true,\n onClose: onClose,\n fullWidth: true,\n maxWidth: \"sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"\\u041F\\u0440\\u0438\\u043C\\u0435\\u0447\\u0430\\u043D\\u0438\\u0435\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: onClose,\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.DIALOG_CLOSE_BUTTON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"close\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.DIALOG_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__.CustomInputField, {\n elementCode: \"noteHeader\",\n elementValue: note.noteTypeIndex,\n labelText: \"\\u0417\\u0430\\u0433\\u043E\\u043B\\u043E\\u0432\\u043E\\u043A \\u043F\\u0440\\u0438\\u043C\\u0435\\u0447\\u0430\\u043D\\u0438\\u044F\",\n items: noteTypes.reduce((prev, cur) => [...prev, {\n id: prev.length,\n caption: cur\n }], []),\n onChange: handleNoteHeaderChange,\n margin: \"dense\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n id: \"note\",\n label: \"\\u041E\\u043F\\u0438\\u0441\\u0430\\u043D\\u0438\\u0435\",\n variant: \"standard\",\n fullWidth: true,\n required: true,\n multiline: true,\n minRows: 7,\n maxRows: 7,\n value: note.text,\n margin: \"normal\",\n inputProps: {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.SCROLL\n },\n onChange: e => handleNoteChange(e.target.value)\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.DIALOG_ACTIONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n disabled: !note.text,\n variant: \"text\",\n onClick: handleDialogOk\n }, \"\\u041E\\u041A\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n variant: \"text\",\n onClick: onClose\n }, \"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430\")));\n};\n\n//Контроль свойств - Диалог примечания\nNoteDialog.propTypes = {\n noteTypes: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().array),\n onCallback: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/note_dialog.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/settings_dialog.js": +/*!******************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/settings_dialog.js ***! + \******************************************************************/ +/***/ ((__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 */ SettingsDialog: () => (/* binding */ SettingsDialog)\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_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.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/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./custom_input_field.js */ \"./app/panels/clnt_task_board/components/custom_input_field.js\");\n/* harmony import */ var _layouts_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../layouts.js */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../core/utils.js */ \"./app/core/utils.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/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//---------\n\n//Стили\nconst STYLES = {\n SELECT: {\n width: \"100%\"\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Диалог дополнительных настроек\nconst SettingsDialog = ({\n initial,\n onSettingsChange,\n onClose,\n ...other\n}) => {\n //Состояние дополнительных настроек\n const [colorRules, seColorRules] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initial.colorRules);\n\n //Состояние статусов\n const [statusesState, setStatusesState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initial.statusesState);\n\n //Изменение поля сортировки\n const handleSortAttrChange = (item, value) => setStatusesState(pv => ({\n ...pv,\n [item]: value\n }));\n\n //Изменение направления сортировки\n const handleSortDestChange = newDirection => setStatusesState(pv => ({\n ...pv,\n direction: newDirection\n }));\n\n //При изменении правила заливки событий\n const handleColorRuleChange = (item, value) => {\n //Определяем новое правило заливки\n let newColorRule = colorRules.rules[value];\n //Обновляем в основных настройках\n seColorRules(pv => ({\n ...pv,\n selectedColorRule: newColorRule ? newColorRule : {}\n }));\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", other, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n open: true,\n onClose: onClose,\n fullWidth: true,\n maxWidth: \"sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0438\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: onClose,\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.DIALOG_CLOSE_BUTTON\n }, /*#__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_9__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.SCROLL\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__.CustomInputField, {\n elementCode: \"clrRules\",\n elementValue: (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_3__.hasValue)(colorRules.selectedColorRule.id) && colorRules.length !== 0 ? colorRules.selectedColorRule.id : -1,\n labelText: \"\\u0417\\u0430\\u043B\\u0438\\u0432\\u043A\\u0430 \\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u0439\",\n items: colorRules.rules.reduce((prev, cur) => [...prev, {\n id: cur.id,\n caption: cur.SDP_NAME\n }], []),\n emptyItem: {\n key: -1,\n id: -1,\n caption: \"-\"\n },\n onChange: handleColorRuleChange,\n sx: STYLES.SELECT\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n direction: \"row\",\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.STACK_DOCLINKS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__.CustomInputField, {\n elementCode: \"attr\",\n elementValue: statusesState.attr,\n labelText: \"\\u041F\\u043E\\u043B\\u0435 \\u0441\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0438\",\n items: _layouts_js__WEBPACK_IMPORTED_MODULE_2__.sortAttrs.reduce((prev, cur) => [...prev, {\n id: cur.id,\n caption: cur.descr\n }], []),\n onChange: handleSortAttrChange,\n sx: STYLES.SELECT\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n title: statusesState.direction === \"asc\" ? \"По возрастанию\" : \"По убыванию\",\n onClick: () => handleSortDestChange(_layouts_js__WEBPACK_IMPORTED_MODULE_2__.sortDest[_layouts_js__WEBPACK_IMPORTED_MODULE_2__.sortDest.indexOf(statusesState.direction) * -1])\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, statusesState.direction === \"asc\" ? \"arrow_upward\" : \"arrow_downward\"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.DIALOG_ACTIONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n variant: \"text\",\n onClick: () => {\n onSettingsChange(colorRules, statusesState);\n onClose();\n }\n }, \"\\u041E\\u041A\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n variant: \"text\",\n onClick: () => {\n seColorRules(pv => ({\n ...pv,\n selectedColorRule: {}\n }));\n setStatusesState(pv => ({\n ...pv,\n attr: \"SEVNSTAT_NAME\",\n direction: \"asc\"\n }));\n }\n }, \"\\u041E\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n variant: \"text\",\n onClick: onClose\n }, \"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430\"))));\n};\n\n//Контроль свойств компонента - Диалог дополнительных настроек\nSettingsDialog.propTypes = {\n initial: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n onSettingsChange: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/settings_dialog.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/status_card.js": +/*!**************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/status_card.js ***! + \**************************************************************/ +/***/ ((__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 */ StatusCard: () => (/* binding */ StatusCard)\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_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Card/Card.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardHeader/CardHeader.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardContent/CardContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _task_card_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_card.js */ \"./app/panels/clnt_task_board/components/task_card.js\");\n/* harmony import */ var _status_card_settings_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./status_card_settings.js */ \"./app/panels/clnt_task_board/components/status_card_settings.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _layouts_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../layouts.js */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.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//Константы\n//---------\n\n//Нижний отступ заголовка\nconst TITLE_PADDING_BOTTOM = \"16px\";\n\n//Высота фильтра\nconst FILTER_HEIGHT = \"56px\";\n\n//Стили\nconst STYLES = {\n STATUS_BLOCK: statusColor => {\n return {\n width: \"350px\",\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_5__.APP_BAR_HEIGHT} - ${TITLE_PADDING_BOTTOM} - ${FILTER_HEIGHT} - 8px)`,\n backgroundColor: statusColor,\n padding: \"8px\"\n };\n },\n BLOCK_OPACITY: isAvailable => {\n return isAvailable ? {\n opacity: 1\n } : {\n opacity: 0.5\n };\n },\n CARD_HEADER_TITLE: {\n textAlign: \"left\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n display: \"-webkit-box\",\n hyphens: \"auto\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 1,\n maxWidth: \"calc(300px)\",\n width: \"-webkit-fill-available\",\n fontSize: \"1.2rem\",\n cursor: \"default\"\n },\n CARD_HEADER: {\n padding: 0\n },\n CARD_CONTENT: {\n padding: 0,\n paddingRight: \"5px\",\n paddingBottom: \"5px !important\",\n overflowY: \"auto\",\n maxHeight: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_5__.APP_BAR_HEIGHT} - ${TITLE_PADDING_BOTTOM} - ${FILTER_HEIGHT} - 85px)`,\n ..._app_styles__WEBPACK_IMPORTED_MODULE_3__.APP_STYLES.SCROLL\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Карточка статуса события\nconst StatusCard = ({\n tasks,\n status,\n statusTitle,\n colorRules,\n extraData,\n filtersType,\n isCardAvailable,\n onTasksReload,\n onDragItemChange,\n onTaskDialogOpen,\n onNoteDialogOpen,\n onStatusColorChange,\n placeholder\n}) => {\n //Состояние диалога настройки\n const [statusCardSettingsOpen, setStatusCardSettingsOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Открыть/закрыть диалог настройки\n const handleStatusCardSettingsOpen = () => setStatusCardSettingsOpen(!statusCardSettingsOpen);\n\n //При изменении цвета статуса\n const handleStatusColorChange = newColor => {\n onStatusColorChange(status, newColor);\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, statusCardSettingsOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_status_card_settings_js__WEBPACK_IMPORTED_MODULE_2__.StatusCardSettings, {\n statusColor: status.color,\n availableColors: _layouts_js__WEBPACK_IMPORTED_MODULE_4__.COLORS.includes(status.color) ? _layouts_js__WEBPACK_IMPORTED_MODULE_4__.COLORS : [status.color, ..._layouts_js__WEBPACK_IMPORTED_MODULE_4__.COLORS],\n onClose: handleStatusCardSettingsOpen,\n onColorChange: handleStatusColorChange\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"statusId-card\",\n sx: {\n ...STYLES.STATUS_BLOCK(status.color),\n ...STYLES.BLOCK_OPACITY(isCardAvailable(status.SEVNSTAT_CODE))\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n \"aria-label\": \"settings\",\n onClick: handleStatusCardSettingsOpen\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, \"more_vert\")),\n title: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.CARD_HEADER_TITLE,\n title: statusTitle,\n variant: \"h5\"\n }, statusTitle),\n subheader: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: () => {\n onDragItemChange(filtersType, status.SEVNSTAT_CODE);\n onTaskDialogOpen();\n }\n }, \"+ \\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C\"),\n sx: STYLES.CARD_HEADER\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.CARD_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n spacing: 1\n }, tasks.rows.filter(item => item.sStatus === status.SEVNSTAT_NAME).map((item, index) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_card_js__WEBPACK_IMPORTED_MODULE_1__.TaskCard, {\n task: item,\n index: index,\n onTasksReload: onTasksReload,\n key: item.id,\n colorRule: colorRules.selectedColorRule,\n pointSettings: extraData.evPoints.find(p => p.SEVPOINT === status.SEVNSTAT_CODE),\n onOpenNoteDialog: onNoteDialogOpen\n })), placeholder))));\n};\n\n//Контроль свойств - Карточка статуса события\nStatusCard.propTypes = {\n tasks: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n status: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n statusTitle: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string).isRequired,\n colorRules: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n extraData: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n filtersType: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string).isRequired,\n isCardAvailable: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onDragItemChange: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onTaskDialogOpen: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onNoteDialogOpen: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onStatusColorChange: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/status_card.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/status_card_settings.js": +/*!***********************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/status_card_settings.js ***! + \***********************************************************************/ +/***/ ((__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 */ StatusCardSettings: () => (/* binding */ StatusCardSettings)\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_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.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/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./custom_input_field.js */ \"./app/panels/clnt_task_board/components/custom_input_field.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/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 STYLES = {\n BCKG_COLOR: backgroundColor => ({\n backgroundColor: backgroundColor\n })\n};\n\n//--------------------------------\n//Вспомогательные классы и функции\n//--------------------------------\n\n//Генерация элемента меню\nconst menuItemRender = ({\n item,\n key\n}) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n key: key,\n value: item.id,\n sx: STYLES.BCKG_COLOR(item.caption)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n variant: \"inherit\",\n noWrap: true,\n title: item.caption,\n component: \"div\"\n }, item.caption));\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Диалог настройки карточки статуса\nconst StatusCardSettings = ({\n statusColor,\n availableColors,\n onClose,\n onColorChange\n}) => {\n //Состояние индекса текущего цвета\n const [colorIndex, setColorIndex] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(availableColors.indexOf(statusColor));\n\n //При закрытии диалога с применением настройки статуса\n const handleDialogOk = () => {\n //Изменяем цвет статуса\n onColorChange(availableColors[colorIndex]);\n //Закрываем диалог\n onClose();\n };\n\n //При изменении значения элемента\n const handleSettingsItemChange = (item, value) => {\n setColorIndex(value);\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n open: true,\n onClose: onClose,\n fullWidth: true,\n maxWidth: \"sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0438\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: onClose,\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.DIALOG_CLOSE_BUTTON\n }, /*#__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_9__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__.CustomInputField, {\n elementCode: \"color\",\n elementValue: colorIndex,\n labelText: \"\\u0426\\u0432\\u0435\\u0442\",\n items: availableColors.reduce((prev, cur) => [...prev, {\n id: prev.length,\n caption: cur\n }], []),\n onChange: handleSettingsItemChange,\n sx: STYLES.BCKG_COLOR(availableColors[colorIndex]),\n menuItemRender: menuItemRender\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.DIALOG_ACTIONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"text\",\n onClick: handleDialogOk\n }, \"\\u041F\\u0440\\u0438\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"text\",\n onClick: onClose\n }, \"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430\"))));\n};\n\n//Контроль свойств - Диалог настройки карточки статуса\nStatusCardSettings.propTypes = {\n statusColor: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string).isRequired,\n availableColors: prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func).isRequired,\n onColorChange: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func).isRequired\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/status_card_settings.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/task_card.js": +/*!************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/task_card.js ***! + \************************************************************/ +/***/ ((__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 */ TaskCard: () => (/* binding */ TaskCard)\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_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-beautiful-dnd */ \"./node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\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/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Card/Card.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardHeader/CardHeader.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardContent/CardContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Avatar/Avatar.js\");\n/* harmony import */ var _task_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../task_dialog */ \"./app/panels/clnt_task_board/task_dialog.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../layouts */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/dict_hooks */ \"./app/panels/clnt_task_board/hooks/dict_hooks.js\");\n/* harmony import */ var _hooks_tasks_hooks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../hooks/tasks_hooks */ \"./app/panels/clnt_task_board/hooks/tasks_hooks.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 //Работа с drag&drop\n //Интерфейсные компоненты\n //Форма события\n //Контекст приложения\n //Контекст взаимодействия с сервером\n //Контекст сообщений\n //Дополнительная разметка и вёрстка клиентских элементов\n //Состояние открытия разделов\n //Состояние вспомогательных функций событий\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n MENU_ITEM_DELIMITER: {\n borderBottom: \"1px solid lightgrey\"\n },\n CARD: (indicatorClr, bgClr) => {\n const i = indicatorClr ? {\n borderLeft: `solid ${indicatorClr}`\n } : null;\n const bc = bgClr ? {\n backgroundColor: bgClr\n } : null;\n return {\n ...i,\n ...bc\n };\n },\n CARD_HEADER_TITLE: {\n padding: \"4px\",\n width: \"292px\",\n display: \"-webkit-box\",\n hyphens: \"auto\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 2,\n overflow: \"hidden\"\n },\n CARD_HEADER: {\n padding: 0,\n cursor: \"pointer\"\n },\n CARD_CONTENT: {\n padding: \"4px !important\"\n },\n CARD_CONTENT_BOX: {\n display: \"flex\",\n alignItems: \"center\"\n },\n STACK_SENDER: {\n alignItems: \"center\",\n marginLeft: \"auto\"\n },\n TYPOGRAPHY_SECONDARY: {\n color: \"text.secondary\",\n fontSize: 14\n },\n ICON_COLOR: linked => {\n return {\n color: theme => linked ? _layouts__WEBPACK_IMPORTED_MODULE_5__.TASK_COLORS.LINKED : theme.palette.grey[500]\n };\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Действия карточки события\nconst CardActions = ({\n taskRn,\n menuItems,\n cardActions,\n onMethodsMenuButtonClick,\n onMethodsMenuClose,\n onTasksReload,\n pointSettings,\n onOpenNoteDialog\n}) => {\n //При нажатии на действие меню\n const handleActionClick = action => {\n //Выполняем действие\n action.func({\n nEvent: taskRn,\n onReload: action.tasksReload ? () => onTasksReload(action.needAccountsReload) : null,\n onNoteOpen: pointSettings.ADDNOTE_ONSEND ? onOpenNoteDialog : null\n });\n //Закрываем меню действий\n onMethodsMenuClose();\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.BOX_ROW\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n id: `${taskRn}_menu_button`,\n \"aria-haspopup\": \"true\",\n onClick: onMethodsMenuButtonClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"more_vert\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n id: `${taskRn}_menu`,\n anchorEl: cardActions.anchorMenuMethods,\n open: cardActions.openMethods,\n onClose: onMethodsMenuClose\n }, menuItems.map(action => {\n if (action.visible) return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: action.delimiter ? STYLES.MENU_ITEM_DELIMITER : {},\n key: `${taskRn}_${action.method}`,\n onClick: () => handleActionClick(action)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, action.icon), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n pl: 1\n }, action.name));\n })));\n};\n\n//Контроль свойств - Действия карточки события\nCardActions.propTypes = {\n taskRn: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number).isRequired,\n menuItems: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().array).isRequired,\n cardActions: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n onMethodsMenuButtonClick: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onMethodsMenuClose: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n pointSettings: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n onOpenNoteDialog: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Карточка события\nconst TaskCard = ({\n task,\n index,\n onTasksReload,\n colorRule,\n pointSettings,\n onOpenNoteDialog\n}) => {\n //Состояние диалога события\n const [taskDialogOpen, setTaskDialogOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Состояние действий события\n const [cardActions, setCardActions] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n anchorMenuMethods: null,\n openMethods: false\n });\n\n //Состояние списка действий меню\n const [menuItems, setMenuItems] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Вспомогательные функции открытия раздела\n const {\n handleClientEventsOpen,\n handleClientEventsNotesOpen,\n handleFileLinksOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_6__.useDictionary)();\n\n //Состояние вспомогательных функций событий\n const {\n handleTaskStateChange,\n handleTaskSend\n } = (0,_hooks_tasks_hooks__WEBPACK_IMPORTED_MODULE_7__.useTasksFunctions)();\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_3__[\"BackEndСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgWarn\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_4__[\"MessagingСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowDocument\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_2__[\"ApplicationСtx\"]);\n\n //По нажатию на открытие меню действий\n const handleMethodsMenuButtonClick = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(event => {\n setCardActions(pv => ({\n ...pv,\n anchorMenuMethods: event.currentTarget,\n openMethods: true\n }));\n }, []);\n\n //При закрытии меню\n const handleMethodsMenuClose = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n setCardActions(pv => ({\n ...pv,\n anchorMenuMethods: null,\n openMethods: false\n }));\n }, []);\n\n //При удалении контрагента\n const handleTaskDelete = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n nEvent,\n onReload\n }) => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_DELETE\",\n args: {\n NCLNEVENTS: nEvent\n }\n });\n //Если требуется перезагрузить данные\n onReload ? onReload() : null;\n }, [executeStored]);\n\n //При возврате в предыдущую точку события\n const handleTaskReturn = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n nEvent,\n onReload\n }) => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_RETURN\",\n args: {\n NCLNEVENTS: nEvent\n }\n });\n //Если требуется перезагрузить данные\n onReload ? onReload() : null;\n }, [executeStored]);\n\n //По нажатию действия \"Направить\"\n const handleSendAction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n nEvent,\n onReload,\n onNoteOpen\n }) => {\n //Выполняем направление события\n handleTaskSend({\n nEvent,\n onReload,\n onNoteOpen\n });\n }, [handleTaskSend]);\n\n //По нажатия действия \"Редактировать\"\n const handleTaskEditAction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n setTaskDialogOpen(true);\n }, []);\n\n //По нажатия действия \"Редактировать в разделе\"\n const handleTaskEditClientAction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n nEvent\n }) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_SELECT\",\n args: {\n NCLNEVENTS: nEvent\n }\n });\n if (data.NIDENT) {\n //Открываем раздел \"События\" с фильтром по записи\n handleClientEventsOpen({\n nIdent: data.NIDENT\n });\n }\n }, [executeStored, handleClientEventsOpen]);\n\n //По нажатию действия \"Удалить\"\n const handleTaskDeleteAction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n nEvent,\n onReload\n }) => {\n showMsgWarn(\"Удалить событие?\", () => handleTaskDelete({\n nEvent,\n onReload\n }));\n }, [handleTaskDelete, showMsgWarn]);\n\n //По нажатию действия \"Выполнить возврат\"\n const handleTaskReturnAction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n nEvent,\n onReload\n }) => {\n showMsgWarn(\"Выполнить возврат события в предыдущую точку?\", () => handleTaskReturn({\n nEvent,\n onReload\n }));\n }, [handleTaskReturn, showMsgWarn]);\n\n //По нажатию действия \"Примечания\"\n const handleEventNotesOpenAction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n nEvent\n }) => {\n handleClientEventsNotesOpen({\n nPrn: nEvent\n });\n }, [handleClientEventsNotesOpen]);\n\n //По нажатию действия \"Присоединенные документы\"\n const handleTaskFileLinksOpenAction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n nEvent\n }) => {\n handleFileLinksOpen({\n nPrn: nEvent,\n sUnitCode: \"ClientEvents\"\n });\n }, [handleFileLinksOpen]);\n\n //По нажатию действия \"Перейти\"\n const handleStateChangeAction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n nEvent,\n onReload,\n onNoteOpen\n }) => {\n //Выполняем изменения статуса события\n handleTaskStateChange({\n nEvent,\n onReload,\n onNoteOpen\n });\n }, [handleTaskStateChange]);\n\n //При изменении ссылок в меню действий (для того, чтобы ссылка на объект менялась при реальной необходимости)\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Устанавливаем список меню\n setMenuItems((0,_layouts__WEBPACK_IMPORTED_MODULE_5__.makeCardActionsArray)(handleTaskEditAction, handleTaskEditClientAction, handleTaskDeleteAction, handleStateChangeAction, handleTaskReturnAction, handleSendAction, handleEventNotesOpenAction, handleTaskFileLinksOpenAction));\n }, [handleEventNotesOpenAction, handleTaskFileLinksOpenAction, handleSendAction, handleStateChangeAction, handleTaskDeleteAction, handleTaskEditAction, handleTaskEditClientAction, handleTaskReturnAction]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, taskDialogOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_dialog__WEBPACK_IMPORTED_MODULE_1__.TaskDialog, {\n taskRn: task.nRn,\n taskType: task.sType,\n editable: pointSettings.BAN_UPDATE ? false : true,\n onTasksReload: onTasksReload,\n onClose: () => {\n setTaskDialogOpen(false);\n }\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_15__.Draggable, {\n draggableId: task.id.toString(),\n key: task.id,\n index: index\n }, provided => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], _extends({\n ref: provided.innerRef\n }, provided.draggableProps, provided.dragHandleProps, {\n sx: STYLES.CARD((0,_layouts__WEBPACK_IMPORTED_MODULE_5__.getTaskExpiredColor)(task), colorRule.SCOLOR ? (0,_layouts__WEBPACK_IMPORTED_MODULE_5__.getTaskBgColorByRule)(task, colorRule) : null)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n title: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"task-info\",\n sx: STYLES.CARD_HEADER_TITLE,\n lang: \"ru\",\n onClick: () => {\n menuItems.find(action => action.method === \"EDIT\" ? action.func(task.nRn, action.tasksReload ? onTasksReload : null) : null);\n }\n }, task.sDescription),\n sx: STYLES.CARD_HEADER,\n action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CardActions, {\n taskRn: task.nRn,\n menuItems: menuItems,\n cardActions: cardActions,\n onMethodsMenuButtonClick: handleMethodsMenuButtonClick,\n onMethodsMenuClose: handleMethodsMenuClose,\n onTasksReload: onTasksReload,\n pointSettings: pointSettings,\n onOpenNoteDialog: onOpenNoteDialog\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n sx: STYLES.CARD_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.CARD_CONTENT_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n title: task.nLinkedRn ? \"Событие получено по статусной модели\" : null,\n onClick: task.nLinkedRn ? () => pOnlineShowDocument({\n unitCode: task.sLinkedUnit,\n document: task.nLinkedRn\n }) : null,\n sx: STYLES.ICON_COLOR(task.nLinkedRn),\n disabled: !task.nLinkedRn\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"assignment\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n sx: STYLES.TYPOGRAPHY_SECONDARY\n }, task.name), task.sSender ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n direction: \"row\",\n spacing: 0.5,\n sx: STYLES.STACK_SENDER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n sx: STYLES.TYPOGRAPHY_SECONDARY\n }, task.sSender), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n src: task.avatar ? `data:image/png;base64,${task.avatar}` : null\n })) : null)))));\n};\n\n//Контроль свойств - Карточка события\nTaskCard.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n index: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number).isRequired,\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n colorRule: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n pointSettings: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n onOpenNoteDialog: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/task_card.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/task_form.js": +/*!************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/task_form.js ***! + \************************************************************/ +/***/ ((__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 */ TaskForm: () => (/* binding */ TaskForm),\n/* harmony export */ getInputProps: () => (/* binding */ getInputProps)\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_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tabs/Tabs.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tab/Tab.js\");\n/* harmony import */ var _task_form_tab_info__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_form_tab_info */ \"./app/panels/clnt_task_board/components/task_form_tab_info.js\");\n/* harmony import */ var _task_form_tab_executor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./task_form_tab_executor */ \"./app/panels/clnt_task_board/components/task_form_tab_executor.js\");\n/* harmony import */ var _task_form_tab_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./task_form_tab_props */ \"./app/panels/clnt_task_board/components/task_form_tab_props.js\");\n/* harmony import */ var _hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/task_dialog_hooks */ \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../core/utils */ \"./app/core/utils.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//Стили\nconst STYLES = {\n CONTAINER: {\n margin: \"5px 0px\",\n textAlign: \"center\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Свойства вкладки\nfunction a11yProps(index) {\n return {\n id: `simple-tab-${index}`,\n \"aria-controls\": `simple-tabpanel-${index}`\n };\n}\n\n//Вкладка информации\nfunction CustomTabPanel(props) {\n const {\n children,\n value,\n index,\n ...other\n } = props;\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _extends({\n role: \"tabpanel\",\n hidden: value !== index,\n id: `simple-tabpanel-${index}`,\n \"aria-labelledby\": `simple-tab-${index}`\n }, other), value === index && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n pt: 1\n }, children));\n}\n\n//Контроль свойств - Вкладка информации\nCustomTabPanel.propTypes = {\n children: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().node),\n index: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().number).isRequired,\n value: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().number).isRequired\n};\n\n//Формирование кнопки для открытия раздела\nconst getInputProps = (onClick, disabled = false, icon = \"list\") => {\n //Генерация содержимого\n return {\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n disabled: disabled,\n \"aria-label\": `select`,\n onClick: onClick,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, icon)))\n };\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Форма события\nconst TaskForm = ({\n task,\n taskType,\n onTaskChange,\n editable,\n onEventNextNumbGet,\n onDPReady\n}) => {\n //Состояние вкладки\n const [tab, setTab] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\n\n //Состояние допустимых дополнительных свойств\n const [docProps] = (0,_hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_4__.useDocsProps)(taskType);\n\n //При изменении вкладки\n const handleTabChange = (e, newValue) => {\n setTab(newValue);\n };\n\n //При изменении поля\n const handleFieldEdit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e => {\n onTaskChange({\n [e.target.id]: e.target.value,\n //Связанные значения, если меняется одно, то необходимо обнулить другое\n ...(e.target.id === \"sClntClnperson\" ? {\n sClntClients: \"\"\n } : {}),\n ...(e.target.id === \"sClntClients\" ? {\n sClntClnperson: \"\"\n } : {})\n });\n }, [onTaskChange]);\n\n //При изменении доп. свойства\n const handlePropEdit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((docProp, value) => {\n onTaskChange({\n docProps: {\n ...task.docProps,\n [docProp]: value\n }\n });\n }, [onTaskChange, task.docProps]);\n\n //Проверка заполненности всех обязательных доп. свойств\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Считываем количество незаполненных обязательных свойств\n let notFilled = docProps.props.filter(docProp => docProp.BREQUIRE === true && !(0,_core_utils__WEBPACK_IMPORTED_MODULE_5__.hasValue)(task.docProps[docProp.SFORMATTED_ID])).length;\n //Если доп. свойства загрузились и количество незаполненных = 0 - доп. свойства готовы, иначе не готовы\n docProps.loaded && notFilled === 0 ? onDPReady(true) : onDPReady(false);\n }, [docProps, onDPReady, task.docProps]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n pb: 1,\n variant: \"h6\"\n }, task.nRn ? \"Исправление события\" : \"Добавление события\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n value: tab,\n onChange: handleTabChange,\n \"aria-label\": \"tabs of values\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _extends({\n label: \"\\u0421\\u043E\\u0431\\u044B\\u0442\\u0438\\u0435\"\n }, a11yProps(0))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _extends({\n label: \"\\u0418\\u0441\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\"\n }, a11yProps(1))), docProps.props.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _extends({\n label: \"\\u0421\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430\"\n }, a11yProps(2))) : null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomTabPanel, {\n value: tab,\n index: 0\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_form_tab_info__WEBPACK_IMPORTED_MODULE_1__.TaskFormTabInfo, {\n task: task,\n editable: editable,\n onFieldEdit: handleFieldEdit,\n onEventNextNumbGet: onEventNextNumbGet\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomTabPanel, {\n value: tab,\n index: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_form_tab_executor__WEBPACK_IMPORTED_MODULE_2__.TaskFormTabExecutor, {\n task: task,\n onFieldEdit: handleFieldEdit\n })), docProps.props.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomTabPanel, {\n value: tab,\n index: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_form_tab_props__WEBPACK_IMPORTED_MODULE_3__.TaskFormTabProps, {\n task: task,\n taskType: taskType,\n docProps: docProps,\n onPropEdit: handlePropEdit\n })) : null);\n};\n\n//Контроль свойств - Форма события\nTaskForm.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().object).isRequired,\n taskType: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string).isRequired,\n onTaskChange: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func).isRequired,\n editable: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool).isRequired,\n onEventNextNumbGet: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func).isRequired,\n onDPReady: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/task_form.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/task_form_tab_executor.js": +/*!*************************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/task_form_tab_executor.js ***! + \*************************************************************************/ +/***/ ((__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 */ TaskFormTabExecutor: () => (/* binding */ TaskFormTabExecutor)\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_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _task_form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_form */ \"./app/panels/clnt_task_board/components/task_form.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs/plugin/customParseFormat */ \"./node_modules/dayjs/plugin/customParseFormat.js\");\n/* harmony import */ var dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hooks/dict_hooks */ \"./app/panels/clnt_task_board/hooks/dict_hooks.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//Константы\n//---------\n\n//Стили\nconst STYLES = {\n BOX_LEFT_ALIGN: {\n display: \"flex\",\n justifyContent: \"flex-start\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Подключение настройки пользовательского формата даты\ndayjs__WEBPACK_IMPORTED_MODULE_2___default().extend((dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3___default()));\n\n//-----------\n//Тело модуля\n//-----------\n\n//Вкладка информации об исполнителе\nconst TaskFormTabExecutor = ({\n task,\n onFieldEdit\n}) => {\n //Вспомогательные функции открытия раздела\n const {\n handleClientPersonOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_5__.useDictionary)();\n\n //При изменении сотрудника-инициатора\n const handleInitClnpersonChange = () => handleClientPersonOpen({\n sCode: task.sInitClnperson,\n callBack: res => {\n onFieldEdit({\n target: {\n id: \"sInitClnperson\",\n value: res.outParameters.out_CODE\n }\n });\n }\n });\n\n //Генерация содержимого\n return /*#__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_6__[\"default\"], {\n sx: {\n ..._styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.BOX_WITH_LEGEND,\n ...STYLES.BOX_LEFT_ALIGN\n },\n component: \"fieldset\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"legend\", {\n style: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.LEGEND\n }, \"\\u041F\\u043B\\u0430\\u043D\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"dPlanDate\",\n label: \"\\u041D\\u0430\\u0447\\u0430\\u043B\\u043E \\u0440\\u0430\\u0431\\u043E\\u0442\",\n InputLabelProps: {\n shrink: true\n },\n type: \"datetime-local\",\n variant: \"standard\",\n value: task.dPlanDate ? dayjs__WEBPACK_IMPORTED_MODULE_2___default()(task.dPlanDate, \"DD.MM.YYYY HH:mm\").format(\"YYYY-MM-DD HH:mm\") : \"\",\n onChange: onFieldEdit,\n disabled: task.isUpdate\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: {\n ..._styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.BOX_WITH_LEGEND,\n ..._styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.BOX_SINGLE_COLUMN\n },\n component: \"fieldset\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"legend\", {\n style: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.LEGEND\n }, \"\\u0418\\u043D\\u0438\\u0446\\u0438\\u0430\\u0442\\u043E\\u0440\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sInitClnperson\",\n label: \"\\u0421\\u043E\\u0442\\u0440\\u0443\\u0434\\u043D\\u0438\\u043A\",\n value: task.sInitClnperson,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: task.isUpdate,\n InputProps: (0,_task_form__WEBPACK_IMPORTED_MODULE_1__.getInputProps)(() => handleInitClnpersonChange(), task.isUpdate)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sInitUser\",\n label: \"\\u041F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044C\",\n value: task.sInitUser,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sInitReason\",\n label: \"\\u041E\\u0441\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\",\n value: task.sInitReason,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: task.isUpdate\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: {\n ..._styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.BOX_WITH_LEGEND,\n ..._styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.BOX_SINGLE_COLUMN\n },\n component: \"fieldset\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"legend\", {\n style: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.LEGEND\n }, \"\\u041D\\u0430\\u043F\\u0440\\u0430\\u0432\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sToCompany\",\n label: \"\\u041E\\u0440\\u0433\\u0430\\u043D\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\",\n value: task.sToCompany,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sToDepartment\",\n label: \"\\u041F\\u043E\\u0434\\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0435\\u043D\\u0438\\u0435\",\n value: task.sToDepartment,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sToClnpost\",\n label: \"\\u0414\\u043E\\u043B\\u0436\\u043D\\u043E\\u0441\\u0442\\u044C\",\n value: task.sToClnpost,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sToClnpsdep\",\n label: \"\\u0428\\u0442\\u0430\\u0442\\u043D\\u0430\\u044F \\u0434\\u043E\\u043B\\u0436\\u043D\\u043E\\u0441\\u0442\\u044C\",\n value: task.sToClnpsdep,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sToClnperson\",\n label: \"\\u0421\\u043E\\u0442\\u0440\\u0443\\u0434\\u043D\\u0438\\u043A\",\n value: task.sToClnperson,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sToFcstaffgrp\",\n label: \"\\u041D\\u0435\\u0448\\u0442\\u0430\\u0442\\u043D\\u0430\\u044F \\u0434\\u043E\\u043B\\u0436\\u043D\\u043E\\u0441\\u0442\\u044C\",\n value: task.sToFcstaffgrp,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sToUser\",\n label: \"\\u041F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044C\",\n value: task.sToUser,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: \"sToUsergrp\",\n label: \"\\u0413\\u0440\\u0443\\u043F\\u043F\\u0430 \\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u0435\\u0439\",\n value: task.sToUsergrp,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: true\n })));\n};\n\n//Контроль свойств - Вкладка информации об исполнителе\nTaskFormTabExecutor.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object).isRequired,\n onFieldEdit: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/task_form_tab_executor.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/task_form_tab_info.js": +/*!*********************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/task_form_tab_info.js ***! + \*********************************************************************/ +/***/ ((__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 */ TaskFormTabInfo: () => (/* binding */ TaskFormTabInfo)\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_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _task_form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_form */ \"./app/panels/clnt_task_board/components/task_form.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/dict_hooks */ \"./app/panels/clnt_task_board/hooks/dict_hooks.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\n//Стили\nconst STYLES = {\n BOX_FEW_COLUMNS: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"space-between\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Вкладка основной информации\nconst TaskFormTabInfo = ({\n task,\n editable,\n onFieldEdit,\n onEventNextNumbGet\n}) => {\n //Вспомогательные функции открытия раздела\n const {\n handleClientPersonOpen,\n handleCatalogTreeOpen,\n handleClientClientsOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_3__.useDictionary)();\n\n //При изменении каталога\n const handleCrnChange = () => handleCatalogTreeOpen({\n sUnitName: \"ClientEvents\",\n sName: task.sCrn,\n callBack: res => {\n onFieldEdit({\n target: {\n id: \"sCrn\",\n value: res.outParameters.out_NAME\n }\n });\n }\n });\n\n //При изменении клиента-сотрудника\n const handleClntClnpersonChange = () => handleClientPersonOpen({\n sCode: task.sClntClnperson,\n callBack: res => {\n onFieldEdit({\n target: {\n id: \"sClntClnperson\",\n value: res.outParameters.out_CODE\n }\n });\n }\n });\n\n //При изменении клиента-организации\n const handleClntClientsChange = () => handleClientClientsOpen({\n sCode: task.sClntClients,\n callBack: res => {\n onFieldEdit({\n target: {\n id: \"sClntClients\",\n value: res.outParameters.out_CLIENT_CODE\n }\n });\n }\n });\n\n //Генерация содержимого\n return /*#__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_4__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.BOX_WITH_LEGEND,\n component: \"fieldset\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"legend\", {\n style: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.LEGEND\n }, \"\\u0421\\u043E\\u0431\\u044B\\u0442\\u0438\\u0435\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.BOX_FEW_COLUMNS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(),\n id: \"sCrn\",\n label: \"\\u041A\\u0430\\u0442\\u0430\\u043B\\u043E\\u0433\",\n fullWidth: true,\n value: task.sCrn,\n variant: \"standard\",\n onChange: onFieldEdit,\n InputProps: (0,_task_form__WEBPACK_IMPORTED_MODULE_1__.getInputProps)(handleCrnChange),\n required: true,\n disabled: task.isUpdate\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(\"225px\"),\n id: \"sPrefix\",\n label: \"\\u041F\\u0440\\u0435\\u0444\\u0438\\u043A\\u0441\",\n value: task.sPrefix,\n variant: \"standard\",\n onChange: onFieldEdit,\n required: true,\n disabled: task.isUpdate\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(\"225px\"),\n id: \"sNumber\",\n label: \"\\u041D\\u043E\\u043C\\u0435\\u0440\",\n value: task.sNumber,\n variant: \"standard\",\n onChange: onFieldEdit,\n required: true,\n disabled: task.isUpdate,\n InputProps: (0,_task_form__WEBPACK_IMPORTED_MODULE_1__.getInputProps)(onEventNextNumbGet, !task.sPrefix || task.isUpdate, \"refresh\")\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(\"225px\", !task.isUpdate),\n id: \"sType\",\n label: \"\\u0422\\u0438\\u043F\",\n value: task.sType,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: true,\n required: true\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(\"225px\", !task.isUpdate),\n id: \"sStatus\",\n label: \"\\u0421\\u0442\\u0430\\u0442\\u0443\\u0441\",\n value: task.sStatus,\n variant: \"standard\",\n disabled: true,\n required: true,\n onChange: onFieldEdit\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(),\n fullWidth: true,\n id: \"sDescription\",\n label: \"\\u041E\\u043F\\u0438\\u0441\\u0430\\u043D\\u0438\\u0435\",\n value: task.sDescription,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: !task.sType || !editable,\n required: true,\n multiline: true,\n minRows: 7,\n maxRows: 7\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: {\n ..._styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.BOX_WITH_LEGEND,\n ..._styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.BOX_SINGLE_COLUMN\n },\n component: \"fieldset\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"legend\", {\n style: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.LEGEND\n }, \"\\u041A\\u043B\\u0438\\u0435\\u043D\\u0442\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(),\n id: \"sClntClients\",\n label: \"\\u041E\\u0440\\u0433\\u0430\\u043D\\u0438\\u0437\\u0430\\u0446\\u0438\\u044F\",\n value: task.sClntClients,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: !task.sType,\n InputProps: (0,_task_form__WEBPACK_IMPORTED_MODULE_1__.getInputProps)(() => handleClntClientsChange(), !task.sType)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(),\n id: \"sClntClnperson\",\n label: \"\\u0421\\u043E\\u0442\\u0440\\u0443\\u0434\\u043D\\u0438\\u043A\",\n value: task.sClntClnperson,\n variant: \"standard\",\n onChange: onFieldEdit,\n disabled: !task.sType,\n InputProps: (0,_task_form__WEBPACK_IMPORTED_MODULE_1__.getInputProps)(() => handleClntClnpersonChange(), !task.sType)\n })));\n};\n\n//Контроль свойств - Вкладка основной информации\nTaskFormTabInfo.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n editable: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().bool).isRequired,\n onFieldEdit: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n onEventNextNumbGet: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/task_form_tab_info.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/components/task_form_tab_props.js": +/*!**********************************************************************!*\ + !*** ./app/panels/clnt_task_board/components/task_form_tab_props.js ***! + \**********************************************************************/ +/***/ ((__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 */ TaskFormTabProps: () => (/* binding */ TaskFormTabProps)\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 _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _task_form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_form */ \"./app/panels/clnt_task_board/components/task_form.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs/plugin/customParseFormat */ \"./node_modules/dayjs/plugin/customParseFormat.js\");\n/* harmony import */ var dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../layouts */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/dict_hooks */ \"./app/panels/clnt_task_board/hooks/dict_hooks.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//---------\n//Константы\n//---------\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Подключение настройки пользовательского формата даты\ndayjs__WEBPACK_IMPORTED_MODULE_2___default().extend((dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3___default()));\n\n//-----------\n//Тело модуля\n//-----------\n\n//Вкладка информации со свойствами\nconst TaskFormTabProps = ({\n task,\n docProps,\n onPropEdit\n}) => {\n //Вспомогательные функции открытия раздела\n const {\n handleExtraDictionariesOpen,\n handleUnitOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_6__.useDictionary)();\n\n //Выбор из словаря или дополнительного словаря\n const handleDictOpen = async (docProp, curValue = null) => {\n //Если способ выбора - словарь\n docProp.NENTRY_TYPE === 1 ? handleUnitOpen({\n sUnitCode: docProp.SUNITCODE,\n sShowMethod: docProp.SMETHOD_CODE,\n inputParameters: docProp.NPARAM_RN ? [{\n name: docProp.SPARAM_IN_CODE,\n value: curValue\n }] : null,\n callBack: res => {\n onPropEdit(docProp.SFORMATTED_ID, res.outParameters[docProp.SPARAM_OUT_CODE]);\n }\n }) :\n //Если способ выбора - доп. словарь\n handleExtraDictionariesOpen({\n nRn: docProp.NEXTRA_DICT_RN,\n sParamName: _layouts__WEBPACK_IMPORTED_MODULE_4__.DP_IN_VALUE[docProp.NFORMAT],\n paramValue: curValue,\n callBack: res => {\n onPropEdit(docProp.SFORMATTED_ID, res.outParameters[_layouts__WEBPACK_IMPORTED_MODULE_4__.DP_RETURN_VALUE[docProp.NFORMAT]]);\n }\n });\n };\n\n //Инициализация дополнительного свойства\n const initPropValue = prop => {\n //Считываем значение свойства из события\n const value = task.docProps[prop.SFORMATTED_ID];\n //Если есть значение свойства\n if (value) {\n //Строка или число\n if (prop.NFORMAT < 2) {\n return prop.NNUM_PRECISION ? String(value).replace(\".\", \",\") : value;\n }\n //Дата\n if (prop.NFORMAT === 2) {\n //Возвращаем значение исходя из подтипа даты\n switch (prop.NDATA_SUBTYPE) {\n //Дата без времени\n case 0:\n return dayjs__WEBPACK_IMPORTED_MODULE_2___default()(value).format(\"YYYY-MM-DD\");\n //Дата и время без секунд\n case 1:\n return dayjs__WEBPACK_IMPORTED_MODULE_2___default()(value).format(\"YYYY-MM-DD HH:mm\");\n //Дата и время с секундами\n default:\n return dayjs__WEBPACK_IMPORTED_MODULE_2___default()(value).format(\"YYYY-MM-DD HH:mm:ss\");\n }\n }\n //Если это ничего из вышестоящего - время\n return (0,_layouts__WEBPACK_IMPORTED_MODULE_4__.formatSqlDate)(value);\n }\n //Если нет значения, но это изменение события\n if (task.nRn) {\n //Возвращаем пустоту\n return \"\";\n }\n //Если нет значения и это добавление события - возвращаем значение по умолчанию\n return prop[_layouts__WEBPACK_IMPORTED_MODULE_4__.DP_DEFAULT_VALUE[prop.NFORMAT]];\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.BOX_WITH_LEGEND,\n component: \"fieldset\"\n }, docProps.props.map((docProp, index) => {\n return docProp.BSHOW_IN_GRID ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n error: !(0,_layouts__WEBPACK_IMPORTED_MODULE_4__.validationError)(task.docProps[docProp.SFORMATTED_ID], docProp.NFORMAT, docProp.NNUM_WIDTH, docProp.NNUM_PRECISION, docProp.NSTR_WIDTH),\n key: index,\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(),\n id: docProp.SFORMATTED_ID,\n type: docProp.NFORMAT < 2 ? \"string\" : docProp.NFORMAT === 2 ? docProp.NDATA_SUBTYPE === 0 ? \"date\" : \"datetime-local\" : \"time\",\n label: docProp.SNAME,\n fullWidth: true,\n value: initPropValue(docProp),\n variant: \"standard\",\n onChange: e => onPropEdit(e.target.id, e.target.value),\n inputProps: docProp.NFORMAT === 2 && docProp.NDATA_SUBTYPE === 2 || docProp.NFORMAT === 3 && docProp.NDATA_SUBTYPE === 1 ? {\n step: 1\n } : {},\n InputProps: docProp.NENTRY_TYPE > 0 ? (0,_task_form__WEBPACK_IMPORTED_MODULE_1__.getInputProps)(() => handleDictOpen(docProp, task.docProps[docProp.SFORMATTED_ID])) : null,\n InputLabelProps: docProp.NFORMAT < 2 ? {} : {\n shrink: true\n },\n required: docProp.BREQUIRE,\n disabled: docProp.BREADONLY\n }) : null;\n })));\n};\n\n//Контроль свойств - Вкладка информации со свойствами\nTaskFormTabProps.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object).isRequired,\n docProps: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object).isRequired,\n onPropEdit: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/task_form_tab_props.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/filter.js": +/*!**********************************************!*\ + !*** ./app/panels/clnt_task_board/filter.js ***! + \**********************************************/ +/***/ ((__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 */ Filter: () => (/* binding */ Filter)\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_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Menu/Menu.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Chip/Chip.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _components_filter_dialog_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/filter_dialog.js */ \"./app/panels/clnt_task_board/components/filter_dialog.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styles */ \"./app/panels/clnt_task_board/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 STYLES = {\n ICON_ORDERS: orders => {\n return orders.length > 0 ? {\n color: \"#1976d2\"\n } : {};\n },\n MENU_ORDER: {\n width: \"260px\"\n },\n MENU_ITEM_ORDER: {\n display: \"flex\",\n justifyContent: \"space-between\"\n },\n FILTERS_STACK: {\n paddingBottom: \"5px\",\n ..._styles__WEBPACK_IMPORTED_MODULE_2__.COMMON_STYLES.SCROLL\n },\n STACK_FILTER: {\n maxWidth: \"99vw\"\n }\n};\n\n//--------------------------\n//Вспомогательные компоненты\n//--------------------------\n\n//Элемент меню сортировок\nconst SortMenuItem = ({\n item,\n caption,\n orders,\n onOrderChanged\n}) => {\n //Кнопка сортировки\n const order = orders.find(order => order.name == item);\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n sx: STYLES.MENU_ITEM_ORDER,\n key: item,\n onClick: () => onOrderChanged(item)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, caption), order ? order.direction === \"ASC\" ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"arrow_upward\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"arrow_downward\") : null);\n};\n\n//Контроль свойств компонента - Элемент меню сортировок\nSortMenuItem.propTypes = {\n item: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired,\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired,\n orders: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().array),\n onOrderChanged: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//Меню сортировок\nconst SortMenu = ({\n menuOrders,\n onOrdersMenuClose,\n orders,\n onOrderChanged\n}) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n id: `sort_menu`,\n anchorEl: menuOrders.anchorMenuOrders,\n open: menuOrders.openOrders,\n onClose: onOrdersMenuClose,\n MenuListProps: {\n sx: STYLES.MENU_ORDER\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(SortMenuItem, {\n item: \"DCHANGE_DATE\",\n caption: \"Дата последнего изменения\",\n orders: orders,\n onOrderChanged: onOrderChanged\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(SortMenuItem, {\n item: \"DPLAN_DATE\",\n caption: \"Дата начала работ\",\n orders: orders,\n onOrderChanged: onOrderChanged\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(SortMenuItem, {\n item: \"SPREF_NUMB\",\n caption: \"Номер\",\n orders: orders,\n onOrderChanged: onOrderChanged\n }));\n};\n\n//Контроль свойств компонента - Меню сортировок\nSortMenu.propTypes = {\n menuOrders: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n onOrdersMenuClose: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n orders: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().array),\n onOrderChanged: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//Элемент фильтра\nconst FilterItem = ({\n caption,\n value,\n onClick\n}) => {\n //При нажатии на элемент\n const handleClick = () => onClick ? onClick() : null;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n direction: \"row\",\n alignItems: \"center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"strong\", null, caption), value ? `:\\u00A0${value}` : null),\n variant: \"outlined\",\n onClick: handleClick\n });\n};\n\n//Контроль свойств компонента - Элемент фильтра\nFilterItem.propTypes = {\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired,\n value: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().any),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func)\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Фильтр отбора\nconst Filter = ({\n isFilterDialogOpen,\n filter,\n docLinks,\n selectedDocLink,\n onFilterChange,\n onDocLinksLoad,\n onFilterOpen,\n onFilterClose,\n onTasksReload,\n orders,\n onOrderChanged,\n ...other\n}) => {\n //Состояние меню сортировки\n const [menuOrders, setMenuOrders] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n anchorMenuOrders: null,\n openOrders: false\n });\n\n //При нажатии на открытие меню сортировки\n const handleOrdersMenuButtonClick = event => {\n setMenuOrders(pv => ({\n ...pv,\n anchorMenuOrders: event.currentTarget,\n openOrders: true\n }));\n };\n\n //При закрытии меню\n const handleOrdersMenuClose = () => {\n setMenuOrders(pv => ({\n ...pv,\n anchorMenuOrders: null,\n openOrders: false\n }));\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, isFilterDialogOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_filter_dialog_js__WEBPACK_IMPORTED_MODULE_1__.FilterDialog, {\n initial: {\n filter,\n docLinks\n }\n // docLinks={docLinks}\n ,\n onFilterChange: onFilterChange,\n onFilterClose: onFilterClose,\n onDocLinksLoad: onDocLinksLoad\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], other, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n direction: \"row\",\n spacing: 1,\n p: 1,\n alignItems: \"center\",\n sx: STYLES.STACK_FILTER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n title: \"\\u041E\\u0431\\u043D\\u043E\\u0432\\u0438\\u0442\\u044C\",\n onClick: onTasksReload\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"refresh\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n title: \"\\u0421\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u0442\\u044C\",\n sx: STYLES.ICON_ORDERS(orders),\n onClick: handleOrdersMenuButtonClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"sort\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n title: \"\\u0424\\u0438\\u043B\\u044C\\u0442\\u0440\",\n onClick: onFilterOpen\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"filter_alt\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n direction: \"row\",\n spacing: 1,\n alignItems: \"center\",\n sx: STYLES.FILTERS_STACK\n }, filter.sState ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FilterItem, {\n caption: \"Состояние\",\n value: filter.sState,\n onClick: onFilterOpen\n }) : null, filter.sType ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FilterItem, {\n caption: \"Тип\",\n value: filter.sType,\n onClick: onFilterOpen\n }) : null, filter.sCrnName ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FilterItem, {\n caption: \"Каталог\",\n value: filter.sCrnName,\n onClick: onFilterOpen\n }) : null, filter.bSubcatalogs ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FilterItem, {\n caption: \"Включая подкаталоги\",\n onClick: onFilterOpen\n }) : null, filter.sSendPerson ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FilterItem, {\n caption: \"Исполнитель\",\n value: filter.sSendPerson,\n onClick: onFilterOpen\n }) : null, filter.sSendDivision ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FilterItem, {\n caption: \"Подразделение\",\n value: filter.sSendDivision,\n onClick: onFilterOpen\n }) : null, filter.sSendUsrGrp ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FilterItem, {\n caption: \"Группа пользователей\",\n value: filter.sSendUsrGrp,\n onClick: onFilterOpen\n }) : null, filter.sDocLink && selectedDocLink ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FilterItem, {\n caption: \"Учётный документ\",\n value: selectedDocLink.descr,\n onClick: onFilterOpen\n }) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(SortMenu, {\n menuOrders: menuOrders,\n onOrdersMenuClose: handleOrdersMenuClose,\n orders: orders,\n onOrderChanged: onOrderChanged\n })));\n};\n\n//Контроль свойств компонента - Фильтр отбора\nFilter.propTypes = {\n isFilterDialogOpen: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().bool).isRequired,\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n docLinks: prop_types__WEBPACK_IMPORTED_MODULE_6___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_6___default().object)),\n selectedDocLink: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object),\n onFilterChange: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n onDocLinksLoad: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n onFilterOpen: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n onFilterClose: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n orders: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().array),\n onOrderChanged: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/filter.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/hooks/dict_hooks.js": +/*!********************************************************!*\ + !*** ./app/panels/clnt_task_board/hooks/dict_hooks.js ***! + \********************************************************/ +/***/ ((__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 */ useDictionary: () => (/* binding */ useDictionary)\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 _context_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../context/application */ \"./app/context/application.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Пользовательские хуки: Хуки открытия разделов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст приложения\n\n//-----------\n//Тело модуля\n//-----------\n\n//Состояние открытия разделов\nconst useDictionary = () => {\n //Подключение к контексту приложения\n const {\n pOnlineShowDictionary\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Отображение раздела \"Сотрудники\"\n const handleClientPersonOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"ClientPersons\",\n showMethod: \"main\",\n inputParameters: [{\n name: \"in_CODE\",\n value: prms.sCode\n }],\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"Клиенты\"\n const handleClientClientsOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"ClientClients\",\n showMethod: \"main\",\n inputParameters: [{\n name: \"in_CLIENT_CODE\",\n value: prms.sCode\n }],\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"Каталоги\"\n const handleCatalogTreeOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"CatalogTree\",\n showMethod: \"main\",\n inputParameters: [{\n name: \"in_DOCNAME\",\n value: prms.sUnitName\n }, {\n name: \"in_NAME\",\n value: prms.sName\n }],\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"Типы событий\"\n const handleEventTypesOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"ClientEventTypes\",\n showMethod: \"dictionary\",\n inputParameters: [{\n name: \"pos_eventtypecode\",\n value: prms.sCode\n }],\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"Контрагенты\"\n const handleAgnlistOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"AGNLIST\",\n showMethod: \"agents\",\n inputParameters: [{\n name: \"pos_agnmnemo\",\n value: prms.sMnemo\n }],\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"Штатные подразделения\"\n const handleInsDepartmentOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"INS_DEPARTMENT\",\n inputParameters: [{\n name: \"in_CODE\",\n value: prms.sCode\n }],\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"Нештатные структуры\"\n const handleCostStaffGroupsOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"CostStaffGroups\",\n inputParameters: [{\n name: \"in_CODE\",\n value: prms.sCode\n }],\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"Дополнительные словари\"\n const handleExtraDictionariesOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"ExtraDictionaries\",\n showMethod: \"values\",\n inputParameters: [{\n name: \"pos_rn\",\n value: prms.nRn\n }, {\n name: prms.sParamName,\n value: prms.paramValue\n }],\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"Маршруты событий (исполнители в точках)\"\n const handleEventRoutesPointExecutersOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"EventRoutesPointExecuters\",\n showMethod: \"executers\",\n inputParameters: prms.inputParameters,\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"События\"\n const handleClientEventsOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"ClientEvents\",\n inputParameters: [{\n name: \"in_Ident\",\n value: prms.nIdent\n }]\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"События (примечания)\"\n const handleClientEventsNotesOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"ClientEventsNotes\",\n showMethod: \"main\",\n inputParameters: [{\n name: \"in_PRN\",\n value: prms.nPrn\n }]\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"Присоединенные документы\"\n const handleFileLinksOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"FileLinks\",\n showMethod: \"main_link\",\n inputParameters: [{\n name: \"in_PRN\",\n value: prms.nPrn\n }, {\n name: \"in_UNITCODE\",\n value: prms.sUnitCode\n }]\n });\n }, [pOnlineShowDictionary]);\n\n //Отображение раздела \"Маршруты событий (точки перехода)\"\n const handleEventRoutesPointsPassessOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: \"EventRoutesPointsPasses\",\n showMethod: \"main_passes\",\n inputParameters: [{\n name: \"in_ENVTYPE_CODE\",\n value: prms.sEventType\n }, {\n name: \"in_ENVSTAT_CODE\",\n value: prms.sEventStatus\n }, {\n name: \"in_POINT\",\n value: prms.nPoint\n }],\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n\n //Универсальное отображение раздела\n const handleUnitOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n pOnlineShowDictionary({\n unitCode: prms.sUnitCode,\n showMethod: prms.sShowMethod,\n inputParameters: prms.inputParameters,\n callBack: res => {\n res.success ? prms.callBack(res) : null;\n }\n });\n }, [pOnlineShowDictionary]);\n return {\n handleClientPersonOpen,\n handleClientClientsOpen,\n handleCatalogTreeOpen,\n handleEventTypesOpen,\n handleAgnlistOpen,\n handleInsDepartmentOpen,\n handleCostStaffGroupsOpen,\n handleExtraDictionariesOpen,\n handleEventRoutesPointExecutersOpen,\n handleClientEventsOpen,\n handleClientEventsNotesOpen,\n handleFileLinksOpen,\n handleEventRoutesPointsPassessOpen,\n handleUnitOpen\n };\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/hooks/dict_hooks.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/hooks/filter_hooks.js": +/*!**********************************************************!*\ + !*** ./app/panels/clnt_task_board/hooks/filter_hooks.js ***! + \**********************************************************/ +/***/ ((__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 */ useFilters: () => (/* binding */ useFilters)\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 _layouts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../layouts */ \"./app/panels/clnt_task_board/layouts.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Пользовательские хуки: Хуки фильтра\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Перечисление состояний события\n //Вспомогательные функции\n\n//--------------------------\n//Вспомогательные компоненты\n//--------------------------\n\n//Проверка возможности загрузки данных фильтра из локального хранилища\nconst isLocalStorageExists = () => {\n return (0,_layouts__WEBPACK_IMPORTED_MODULE_1__.getLocalStorageValue)(\"sType\");\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Хук фильтра\n//const useFilters = filterOpen => {\nconst useFilters = () => {\n //Состояние фильтра\n const [filters, setFilters] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n isSetByUser: !isLocalStorageExists(),\n values: {\n sState: _layouts__WEBPACK_IMPORTED_MODULE_1__.EVENT_STATES[1],\n sType: \"\",\n sCrnName: \"\",\n sCrnRnList: \"\",\n bSubcatalogs: false,\n sSendPerson: \"\",\n sSendDivision: \"\",\n sSendUsrGrp: \"\",\n sDocLink: \"\"\n }\n });\n\n //Установить значение фильтра\n const setFilterValues = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((values, isSetByUser = true) => {\n setFilters({\n loaded: true,\n isSetByUser: isSetByUser,\n values: values\n });\n }, []);\n\n //Загрузка значений фильтра из локального хранилища браузера\n const loadLocalStorageValues = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n //Загружаем значения по умолчанию\n let values = {\n ...filters.values\n };\n //Обходим ключи объекта значений\n for (let key in values) {\n //Заполняем значениями из хранилища\n switch (key) {\n //Локальное хранилище не хранит булево, форматируем строку в булево\n case \"bSubcatalogs\":\n values[key] = (0,_layouts__WEBPACK_IMPORTED_MODULE_1__.getLocalStorageValue)(key) === \"true\";\n break;\n //Не переносим информацию о связанных записях\n case \"sDocLink\":\n break;\n //Переносим все остальные значения\n default:\n values[key] = (0,_layouts__WEBPACK_IMPORTED_MODULE_1__.getLocalStorageValue)(key, \"\");\n break;\n }\n }\n //Устанавливаем значения фильтра\n setFilterValues(values, false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //При изменении значений фильтра\n const handleFiltersChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(filters => {\n setFilterValues(filters);\n }, [setFilterValues]);\n\n //Сохранение при закрытии панели\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Обработка события закрытия\n const onBeforeUnload = () => {\n //Обходим ключи фильтра\n for (let key in filters.values) {\n //Если это не связи - сохраняем значение в хранилище\n key !== \"sDocLink\" ? localStorage.setItem(key, filters.values[key] ? filters.values[key] : \"\") : null;\n }\n };\n //Если данные были загружены и произошли изменения\n if (filters.loaded && filters.isSetByUser) {\n //Вешаем обработчик события закрытия\n window.addEventListener(\"beforeunload\", onBeforeUnload);\n }\n //Очищаем при размонтировании\n return () => {\n window.removeEventListener(\"beforeunload\", onBeforeUnload);\n };\n }, [filters.loaded, filters.isSetByUser, filters.values]);\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если требуется загрузить фильтр из локального хранилища\n if (!filters.loaded && !filters.isSetByUser) {\n loadLocalStorageValues();\n }\n }, [filters.isSetByUser, filters.loaded, loadLocalStorageValues]);\n return [filters, handleFiltersChange];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/hooks/filter_hooks.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/hooks/hooks.js": +/*!***************************************************!*\ + !*** ./app/panels/clnt_task_board/hooks/hooks.js ***! + \***************************************************/ +/***/ ((__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 */ useColorRules: () => (/* binding */ useColorRules),\n/* harmony export */ useExtraData: () => (/* binding */ useExtraData),\n/* harmony export */ useStatuses: () => (/* binding */ useStatuses)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../layouts */ \"./app/panels/clnt_task_board/layouts.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Пользовательские хуки: Хуки основных данных\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n //Вспомогательные функции\n\n//-----------\n//Тело модуля\n//-----------\n\n//Хук дополнительных данных\nconst useExtraData = filtersType => {\n //Состояние дополнительных данных\n const [extraData, setExtraData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n reload: false,\n typeLoaded: \"\",\n evRoutes: [],\n evPoints: [],\n noteTypes: [],\n docLinks: []\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Считывание учётных документов\n const handleDocLinksLoad = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (type = filtersType) => {\n //Считываем данные\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_DOCLINKS_GET\",\n args: {\n SEVNTYPE_CODE: type\n },\n isArray: name => name === \"XDOCLINKS\",\n respArg: \"COUT\"\n });\n //Возвращаем учётные документы\n return [...(data?.XDOCLINKS || [])];\n }, [executeStored, filtersType]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка дополнительных данных\n const loadExtraData = async () => {\n //Считываем данные\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_GET_INFO_BY_CODE\",\n args: {\n SEVNTYPE_CODE: filtersType\n },\n isArray: name => [\"XEVROUTES\", \"XEVPOINTS\", \"XNOTETYPES\"].includes(name),\n respArg: \"COUT\"\n });\n //Форматируем типы примечаний под нужный формат\n let noteTypes = [...(data?.XNOTETYPES || [])].reduce((prev, cur) => [...prev, cur.SNAME], []);\n //Считываем учётные документы\n let docLinks = await handleDocLinksLoad(filtersType);\n //Обновляем дополнительные данные\n setExtraData({\n dataLoaded: true,\n reload: false,\n typeLoaded: filtersType,\n evRoutes: [...(data?.XEVROUTES || [])],\n evPoints: [...(data?.XEVPOINTS || [])],\n noteTypes: [...noteTypes],\n docLinks: [...docLinks]\n });\n };\n\n //Если указан тип событий и необходимо обновить\n if (extraData.reload && filtersType) {\n //Загружаем дополнительные данные\n if (!extraData.typeLoaded || filtersType !== extraData.typeLoaded) {\n loadExtraData();\n }\n }\n }, [executeStored, extraData.reload, extraData.typeLoaded, filtersType, handleDocLinksLoad]);\n return [extraData, setExtraData, handleDocLinksLoad];\n};\n\n//Хук заливок пользовательских настроек\nconst useColorRules = () => {\n //Собственное состояние\n const [colorRules, setColorRules] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n rules: [],\n selectedColorRule: JSON.parse((0,_layouts__WEBPACK_IMPORTED_MODULE_2__.getLocalStorageValue)(\"settingsColorRule\")) || {}\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //При необходимости загрузки заливок\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Считывание пользовательских настроек\n let getColorRules = async () => {\n //Считываем данные\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_DP_RULES_GET\",\n isArray: name => name === \"XRULES\",\n respArg: \"COUT\"\n });\n //Формируем массив правил заливки пользовательских настроек\n let newColorRules = [...(data.XRULES || [])].reduce((prev, cur) => [...prev, {\n id: prev.length,\n SFIELD: cur.SFIELD,\n SDP_NAME: cur.SDP_NAME,\n SCOLOR: cur.SCOLOR,\n STYPE: cur.STYPE,\n fromValue: cur.NFROM ?? cur.SFROM ?? cur.DFROM,\n toValue: cur.NTO ?? cur.STO ?? cur.DTO\n }], []);\n //Устанавливаем заливки пользовательских настроек\n setColorRules(pv => ({\n ...pv,\n loaded: true,\n rules: [...newColorRules]\n }));\n };\n if (!colorRules.loaded) getColorRules();\n }, [colorRules.loaded, executeStored]);\n\n //Сохранение при закрытии панели\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Обработка события закрытия\n const onBeforeUnload = () => {\n localStorage.setItem(\"settingsColorRule\", JSON.stringify(colorRules.selectedColorRule));\n };\n //Вешаем обработчик события закрытия\n window.addEventListener(\"beforeunload\", onBeforeUnload);\n //Очищаем при размонтировании\n return () => {\n window.removeEventListener(\"beforeunload\", onBeforeUnload);\n };\n }, [colorRules.selectedColorRule]);\n return [colorRules, setColorRules];\n};\n\n//Хук статусов событий\nconst useStatuses = filterType => {\n //Собственное состояние статусов\n const [statuses, setStatuses] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Состояние статусов\n const [statusesState, setStatusesState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n sorted: false,\n reload: true,\n attr: (0,_layouts__WEBPACK_IMPORTED_MODULE_2__.getLocalStorageValue)(\"statusesSortAttr\", \"SEVNSTAT_NAME\"),\n direction: (0,_layouts__WEBPACK_IMPORTED_MODULE_2__.getLocalStorageValue)(\"statusesSortDirection\", \"asc\")\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //При необходимости сортировки статусов\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Сортируем статусы\n const sortStatuses = unsortedStatuses => {\n //Инициализируем поле сортировки и порядок сортировки\n const attr = statusesState.attr;\n const direction = statusesState.direction;\n //Сортируем\n let sortedStatuses = unsortedStatuses.sort((a, b) => direction === \"asc\" ? a[attr].localeCompare(b[attr]) : b[attr].localeCompare(a[attr]));\n //Возвращаем\n return sortedStatuses;\n };\n //Загружаем и сортируем статусы\n const loadAndSortStatuses = async filterType => {\n //Инициализируем статусы\n let newStatuses = [];\n //Если требуется перезагрузка\n if (statusesState.reload) {\n const loadedStatuses = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVNSTATS_LOAD\",\n args: {\n SCLNEVNTYPES: filterType\n },\n isArray: name => name === \"XSTATUS\",\n respArg: \"COUT\"\n });\n //Загружаем статусы и инициализируем цвета\n newStatuses = [...(loadedStatuses?.XSTATUS || [])].reduce((prev, cur) => [...prev, {\n ...cur,\n color: (0,_layouts__WEBPACK_IMPORTED_MODULE_2__.getRandomColor)(prev.length + 1)\n }], []);\n } else {\n //Загружаем из состояния\n newStatuses = [...statuses];\n }\n //Сортируем, если требуется\n newStatuses = !statusesState.sorted ? sortStatuses(newStatuses) : newStatuses;\n //Обновляем состояние статусов\n setStatuses([...newStatuses]);\n //Обновляем информацию о состоянии статусов\n setStatusesState(pv => ({\n ...pv,\n sorted: true,\n reload: false\n }));\n };\n //При необходимости изменения сортировки\n if (filterType && (statusesState.reload || !statusesState.sorted)) {\n //Считываем старые статусы или загружаем новые\n loadAndSortStatuses(filterType);\n }\n }, [executeStored, filterType, statuses, statusesState.attr, statusesState.direction, statusesState.reload, statusesState.sorted]);\n\n //Сохранение при закрытии панели\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Обработка события закрытия\n const onBeforeUnload = () => {\n localStorage.setItem(\"statusesSortAttr\", statusesState.attr);\n localStorage.setItem(\"statusesSortDirection\", statusesState.direction);\n };\n //Вешаем обработчик события закрытия\n window.addEventListener(\"beforeunload\", onBeforeUnload);\n //Очищаем при размонтировании\n return () => {\n window.removeEventListener(\"beforeunload\", onBeforeUnload);\n };\n }, [statusesState.attr, statusesState.direction]);\n return [statuses, statusesState, setStatuses, setStatusesState];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/hooks/hooks.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/hooks/task_dialog_hooks.js": +/*!***************************************************************!*\ + !*** ./app/panels/clnt_task_board/hooks/task_dialog_hooks.js ***! + \***************************************************************/ +/***/ ((__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 */ useClientEvent: () => (/* binding */ useClientEvent),\n/* harmony export */ useDocsProps: () => (/* binding */ useDocsProps)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../context/backend */ \"./app/context/backend.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Пользовательские хуки: Хуки диалога события\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n\n//-----------\n//Тело модуля\n//-----------\n\n//Хук для события\nconst useClientEvent = (taskRn, taskType = \"\", taskStatus = \"\") => {\n //Собственное состояние\n const [task, setTask] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n init: true,\n nRn: taskRn,\n sCrn: \"\",\n sPrefix: \"\",\n sNumber: \"\",\n sType: taskType,\n sStatus: taskStatus,\n sDescription: \"\",\n sClntClients: \"\",\n sClntClnperson: \"\",\n dStartDate: \"\",\n sInitClnperson: \"\",\n sInitUser: \"\",\n sInitReason: \"\",\n sToCompany: \"\",\n sToDepartment: \"\",\n sToClnpost: \"\",\n sToClnpsdep: \"\",\n sToClnperson: \"\",\n sToFcstaffgrp: \"\",\n sToUser: \"\",\n sToUsergrp: \"\",\n sCurrentUser: \"\",\n isUpdate: false,\n insertDisabled: true,\n updateDisabled: true,\n docProps: {}\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //При инициализации события\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если это инициализация\n if (task.init) {\n //Если указан рег. номер события\n if (taskRn) {\n //Считывание параметров события\n const readEvent = async () => {\n //Считываем информацию о событии по рег. номеру\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_GET\",\n args: {\n NCLNEVENTS: task.nRn\n },\n respArg: \"COUT\"\n });\n //Фильтруем доп. свойства\n let docProps = Object.keys(data.XEVENT).filter(key => key.includes(\"DP_\")).reduce((prev, key) => ({\n ...prev,\n [key]: data.XEVENT[key]\n }), {});\n //Устанавливаем информацию о событии\n setTask(pv => ({\n ...pv,\n sCrn: data.XEVENT.SCRN,\n sPrefix: data.XEVENT.SPREF,\n sNumber: data.XEVENT.SNUMB,\n sType: data.XEVENT.STYPE,\n sStatus: data.XEVENT.SSTATUS,\n sDescription: data.XEVENT.SDESCRIPTION,\n sClntClients: data.XEVENT.SCLIENT_CLIENT,\n sClntClnperson: data.XEVENT.SCLIENT_PERSON,\n dPlanDate: data.XEVENT.SPLAN_DATE,\n sInitClnperson: data.XEVENT.SINIT_PERSON,\n sInitUser: data.XEVENT.SINIT_AUTHID,\n sInitReason: data.XEVENT.SREASON,\n sToCompany: data.XEVENT.SSEND_CLIENT,\n sToDepartment: data.XEVENT.SSEND_DIVISION,\n sToClnpost: data.XEVENT.SSEND_POST,\n sToClnpsdep: data.XEVENT.SSEND_PERFORM,\n sToClnperson: data.XEVENT.SSEND_PERSON,\n sToFcstaffgrp: data.XEVENT.SSEND_STAFFGRP,\n sToUser: data.XEVENT.SSEND_USER_NAME,\n sToUsergrp: data.XEVENT.SSEND_USER_GROUP,\n sCurrentUser: data.XEVENT.SINIT_AUTHID,\n isUpdate: true,\n init: false,\n docProps: docProps\n }));\n };\n //Инициализация параметров события\n readEvent();\n } else {\n //Считывание изначальных параметров события\n const initEvent = async () => {\n //Инициализируем параметры события\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_INIT\",\n args: {\n SEVENT_TYPE: task.sType\n }\n });\n //Если есть данные\n if (data) {\n //Устанавливаем данные по событию\n setTask(pv => ({\n ...pv,\n sPrefix: data.SPREF,\n sNumber: data.SNUMB,\n sCurrentUser: data.SINIT_AUTHNAME,\n sInitClnperson: data.SINIT_PERSON,\n sInitUser: !data.SINIT_PERSON ? data.SINIT_AUTHNAME : \"\",\n init: false\n }));\n }\n };\n //Инициализация изначальных параметров события\n initEvent();\n }\n }\n if (!task.init) {\n setTask(pv => ({\n ...pv,\n sInitUser: !task.sInitClnperson ? task.sCurrentUser : \"\"\n }));\n }\n }, [executeStored, task.init, task.nRn, task.sType, task.sCurrentUser, task.sInitClnperson, taskRn]);\n\n //Проверка доступности действия\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setTask(pv => ({\n ...pv,\n insertDisabled: !task.sCrn || !task.sPrefix || !task.sNumber || !task.sType || !task.sStatus || !task.sDescription || !task.sInitClnperson && !task.sInitUser,\n updateDisabled: !task.sDescription\n }));\n }, [task.sCrn, task.sDescription, task.sInitClnperson, task.sInitUser, task.sNumber, task.sPrefix, task.sStatus, task.sType]);\n return [task, setTask];\n};\n\n//Хук для получения свойств раздела \"События\"\nconst useDocsProps = taskType => {\n //Собственное состояние\n const [docProps, setDocsProps] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n props: []\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка доп. свойств\n let getDocsProps = async () => {\n //Считываема доп. свойства по типу события\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_PROPS_GET\",\n args: {\n SEVNTYPE_CODE: taskType\n },\n isArray: name => name === \"XPROPS\",\n respArg: \"COUT\"\n });\n //Устанавливаем доп. свойства\n setDocsProps({\n loaded: true,\n props: [...(data?.XPROPS || [])]\n });\n };\n //Если доп. свойства не загружены\n if (!docProps.loaded) {\n //Загружаем доп. свойства\n getDocsProps();\n }\n }, [docProps.loaded, executeStored, taskType]);\n return [docProps];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/hooks/task_dialog_hooks.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/hooks/tasks_hooks.js": +/*!*********************************************************!*\ + !*** ./app/panels/clnt_task_board/hooks/tasks_hooks.js ***! + \*********************************************************/ +/***/ ((__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 */ useTasks: () => (/* binding */ useTasks),\n/* harmony export */ useTasksFunctions: () => (/* binding */ useTasksFunctions)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../layouts */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _dict_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dict_hooks */ \"./app/panels/clnt_task_board/hooks/dict_hooks.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 useTasksFunctions = () => {\n //Состояние открытия раздела\n const {\n handleEventRoutesPointExecutersOpen,\n handleEventRoutesPointsPassessOpen\n } = (0,_dict_hooks__WEBPACK_IMPORTED_MODULE_4__.useDictionary)();\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Выполнение направления события\n const handleSendExec = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(\n //Выполняем финальное перенаправление события\n async ({\n mainArgs,\n onReload = null\n }) => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_SEND\",\n args: {\n ...mainArgs\n }\n });\n //Если требуется перезагрузить данные\n onReload ? onReload() : null;\n }, [executeStored]);\n\n //При направлении события\n const handleSend = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n mainArgs,\n onReload = null,\n onNoteOpen = null\n }) => {\n //Если требуется добавить примечание\n if (onNoteOpen) {\n //Открываем примечание с коллбэком на направление события\n onNoteOpen(async note => {\n //Выполняем изменение статуса\n handleSendExec({\n mainArgs: {\n ...mainArgs,\n SNOTE_HEADER: note.header,\n SNOTE: note.text\n },\n onReload\n });\n });\n } else {\n //Выполняем изменение статуса\n handleSendExec({\n mainArgs,\n onReload\n });\n }\n }, [handleSendExec]);\n\n //По нажатию действия \"Направить\"\n const handleTaskSend = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n nEvent,\n onReload = null,\n onNoteOpen = null\n }) => {\n //Выполняем инициализацию параметров\n const firstStep = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_SEND\",\n args: {\n NSTEP: 1,\n NEVENT: nEvent\n }\n });\n if (firstStep) {\n //Открываем раздел \"Маршруты событий (исполнители в точках)\" для выбора исполнителя\n handleEventRoutesPointExecutersOpen({\n inputParameters: [{\n name: \"in_IDENT\",\n value: firstStep.NIDENT\n }, {\n name: \"in_EVENT\",\n value: nEvent\n }, {\n name: \"in_PERSON_CODE\",\n value: firstStep.SSEND_PERSON\n }, {\n name: \"in_USER_NAME\",\n value: firstStep.SSEND_USER_NAME\n }, {\n name: \"in_EVENT_TYPE\",\n value: firstStep.SEVENT_TYPE\n }, {\n name: \"in_EVENT_STAT\",\n value: firstStep.SEVENT_STAT\n }, {\n name: \"in_INIT_PERSON\",\n value: firstStep.SINIT_PERSON\n }, {\n name: \"in_INIT_AUTHNAME\",\n value: firstStep.SINIT_AUTHNAME\n }, {\n name: \"in_CLIENT_CLIENT\",\n value: firstStep.SCLIENT_CLIENT\n }, {\n name: \"in_CLIENT_PERSON\",\n value: firstStep.SCLIENT_PERSON\n }],\n callBack: sendPrms => {\n //Собираем основные параметры направления события\n const mainArgs = {\n NIDENT: firstStep.NIDENT,\n NSTEP: 2,\n NEVENT: nEvent,\n SSEND_CLIENT: sendPrms.outParameters.out_CLIENT_CODE,\n SSEND_DIVISION: sendPrms.outParameters.out_DIVISION_CODE,\n SSEND_POST: sendPrms.outParameters.out_POST_CODE,\n SSEND_PERFORM: sendPrms.outParameters.out_POST_IN_DIV_CODE,\n SSEND_PERSON: sendPrms.outParameters.out_PERSON_CODE,\n SSEND_STAFFGRP: sendPrms.outParameters.out_STAFFGRP_CODE,\n SSEND_USER_GROUP: sendPrms.outParameters.out_USER_GROUP_CODE,\n SSEND_USER_NAME: sendPrms.outParameters.out_USER_NAME,\n NSEND_PREDEFINED_EXEC: sendPrms.outParameters.out_PREDEFINED_EXEC,\n NSEND_PREDEFINED_PROC: sendPrms.outParameters.out_PREDEFINED_PROC\n };\n //Перенаправляем событие\n handleSend({\n nEvent,\n mainArgs,\n onReload,\n onNoteOpen\n });\n }\n });\n }\n }, [executeStored, handleEventRoutesPointExecutersOpen, handleSend]);\n\n //Выполнение изменения статуса события\n const handleStateChangeExec = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n mainArgs,\n onReload = null\n }) => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_STATE_CHANGE\",\n args: {\n ...mainArgs\n }\n });\n //Если требуется перезагрузить данные\n onReload ? onReload() : null;\n }, [executeStored]);\n\n //При изменении статуса события\n const handleStateChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n mainArgs,\n onReload = null,\n onNoteOpen = null\n }) => {\n //Если необходимо добавить примечание\n if (onNoteOpen) {\n //Открываем примечание с коллбэком на изменение статуса\n onNoteOpen(async note => {\n //Выполняем изменение статуса\n handleStateChangeExec({\n mainArgs: {\n ...mainArgs,\n SNOTE_HEADER: note.header,\n SNOTE: note.text\n },\n onReload\n });\n });\n } else {\n //Выполняем изменение статуса\n handleStateChangeExec({\n mainArgs,\n onReload\n });\n }\n }, [handleStateChangeExec]);\n\n //При выборе исполнителя\n const handleExecuterSelect = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n nEvent,\n pointInfo,\n onReload = null,\n onNoteOpen = null\n }) => {\n //Если требуется выбрать получателя\n if (pointInfo.NSELECT_EXEC === 1) {\n //Открываем раздел \"Маршруты событий (исполнители в точках)\" для выбора исполнителя\n handleEventRoutesPointExecutersOpen({\n inputParameters: [{\n name: \"in_IDENT\",\n value: pointInfo.NIDENT\n }, {\n name: \"in_EVENT\",\n value: nEvent\n }, {\n name: \"in_EVENT_TYPE\",\n value: pointInfo.SEVENT_TYPE\n }, {\n name: \"in_EVENT_STAT\",\n value: pointInfo.SEVENT_STAT\n }, {\n name: \"in_INIT_PERSON\",\n value: pointInfo.SINIT_PERSON\n }, {\n name: \"in_INIT_AUTHNAME\",\n value: pointInfo.SINIT_AUTHNAME\n }, {\n name: \"in_CLIENT_CLIENT\",\n value: pointInfo.SCLIENT_CLIENT\n }, {\n name: \"in_CLIENT_PERSON\",\n value: pointInfo.SCLIENT_PERSON\n }],\n callBack: sendPrms => {\n const mainArgs = {\n NIDENT: pointInfo.NIDENT,\n NSTEP: 4,\n NEVENT: nEvent,\n SEVENT_STAT: pointInfo.SEVENT_STAT,\n SSEND_CLIENT: sendPrms.outParameters.out_CLIENT_CODE,\n SSEND_DIVISION: sendPrms.outParameters.out_DIVISION_CODE,\n SSEND_POST: sendPrms.outParameters.out_POST_CODE,\n SSEND_PERFORM: sendPrms.outParameters.out_POST_IN_DIV_CODE,\n SSEND_PERSON: sendPrms.outParameters.out_PERSON_CODE,\n SSEND_STAFFGRP: sendPrms.outParameters.out_STAFFGRP_CODE,\n SSEND_USER_GROUP: sendPrms.outParameters.out_USER_GROUP_CODE,\n SSEND_USER_NAME: sendPrms.outParameters.out_USER_NAME,\n NSEND_PREDEFINED_EXEC: sendPrms.outParameters.out_PREDEFINED_EXEC,\n NSEND_PREDEFINED_PROC: sendPrms.outParameters.out_PREDEFINED_PROC\n };\n //Выполняем изменение статуса\n handleStateChange({\n mainArgs,\n onReload,\n onNoteOpen\n });\n }\n });\n } else {\n //Общие аргументы\n const mainArgs = {\n NIDENT: pointInfo.NIDENT,\n NSTEP: 4,\n NEVENT: nEvent,\n SEVENT_STAT: pointInfo.SEVENT_STAT\n };\n //Выполняем изменение статуса\n handleStateChange({\n mainArgs,\n onReload,\n onNoteOpen\n });\n }\n }, [handleEventRoutesPointExecutersOpen, handleStateChange]);\n\n //При выполнении третьего шага\n const handleMakeThirdStep = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n nEvent,\n pointInfo,\n onReload = null,\n onNoteOpen = null\n }) => {\n //Выполняем переход на следующий шаг\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_STATE_CHANGE\",\n args: {\n NIDENT: pointInfo.NIDENT,\n NSTEP: 3,\n NPASS: pointInfo.NPASS\n }\n });\n //Выполняем выбор исполнителя\n handleExecuterSelect({\n nEvent,\n pointInfo,\n onReload,\n onNoteOpen\n });\n }, [executeStored, handleExecuterSelect]);\n\n //При выполнении второго шага\n const handleMakeSecondStep = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n nEvent,\n pointInfo,\n onReload = null,\n onNoteOpen = null\n }) => {\n //Состояние параметров текущего действия\n let currentPointInfo = {\n ...pointInfo\n };\n //Выполняем переход на следующий шаг\n const secondStep = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_STATE_CHANGE\",\n args: {\n NIDENT: currentPointInfo.NIDENT,\n NSTEP: 2,\n NPASS: currentPointInfo.NPASS\n }\n });\n //Устанавливаем признак необходимости выбора исполнителя\n currentPointInfo.NSELECT_EXEC = secondStep.NSELECT_EXEC;\n //Выполняем третий шаг\n handleMakeThirdStep({\n nEvent,\n pointInfo: currentPointInfo,\n onReload,\n onNoteOpen\n });\n }, [executeStored, handleMakeThirdStep]);\n\n //При выборе следующей точки события\n const handleNextPointSelect = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n nEvent,\n pointInfo,\n onReload = null,\n onNoteOpen = null\n }) => {\n //Состояние параметров текущего действия\n let currentPointInfo = {\n ...pointInfo\n };\n //Открываем раздел \"Маршруты событий (точки перехода)\" для выбора следующей точки\n handleEventRoutesPointsPassessOpen({\n sEventType: currentPointInfo.SEVENT_TYPE,\n sEventStatus: currentPointInfo.SEVENT_STAT,\n nPoint: currentPointInfo.NPOINT,\n callBack: async point => {\n //Устанавливаем полученную точку перехода\n currentPointInfo.NPASS = point.outParameters.out_RN;\n currentPointInfo.SEVENT_STAT = point.outParameters.out_NEXT_POINT;\n //Выполняем второй шаг\n handleMakeSecondStep({\n nEvent,\n pointInfo: currentPointInfo,\n onReload,\n onNoteOpen\n });\n }\n });\n }, [handleEventRoutesPointsPassessOpen, handleMakeSecondStep]);\n\n //По нажатию действия \"Перейти\"\n const handleTaskStateChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n nEvent,\n sNextStat = null,\n onReload = null,\n onNoteOpen = null\n }) => {\n //Выполняем инициализацию параметров\n const eventInfo = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_STATE_CHANGE\",\n args: {\n NSTEP: 1,\n NEVENT: nEvent,\n SNEXT_STAT: sNextStat\n }\n });\n //Если информация о события проинициализирована\n if (eventInfo) {\n //Если следующий статус неопределен\n if (!sNextStat) {\n //Выполнение перехода с выбором точки\n handleNextPointSelect({\n nEvent,\n pointInfo: eventInfo,\n onReload,\n onNoteOpen\n });\n } else {\n //Выполняем второй шаг\n handleMakeSecondStep({\n nEvent,\n pointInfo: eventInfo,\n onReload,\n onNoteOpen\n });\n }\n }\n }, [executeStored, handleMakeSecondStep, handleNextPointSelect]);\n return {\n handleTaskStateChange,\n handleTaskSend\n };\n};\n\n//Хук получения событий\nconst useTasks = (filterValues, ordersValues) => {\n //Состояние событий\n const [tasks, setTasks] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n rows: [],\n reload: false,\n accountsReload: false,\n loadedAccounts: []\n });\n\n //Состояние вспомогательных функций событий\n const {\n handleTaskStateChange\n } = useTasksFunctions();\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Инициализация параметров события\n const initTask = (id, task, avatar = null) => {\n //Фильтруем доп. свойства\n let newDocProps = Object.keys(task).filter(key => key.includes(\"DP_\")).reduce((prev, key) => ({\n ...prev,\n [key]: task[key]\n }), {});\n //Возвращаем структуру события\n return {\n id: id,\n avatar: avatar,\n name: task.SPREF_NUMB,\n nRn: task.NRN,\n sCrn: \"\",\n sPrefix: task.SEVPREF,\n sNumber: task.SEVNUMB,\n sType: task.SEVTYPE_CODE,\n sStatus: task.SEVSTAT_NAME,\n sDescription: task.SEVDESCR,\n sClntClients: \"\",\n sClntClnperson: \"\",\n dchange_date: task.DCHANGE_DATE,\n dStartDate: task.DREG_DATE,\n dExpireDate: task.DEXPIRE_DATE,\n dPlanDate: task.DPLAN_DATE,\n sInitClnperson: task.SINIT_PERSON,\n sInitUser: \"\",\n sInitReason: \"\",\n sToCompany: \"\",\n sToDepartment: task.SSEND_DIVISION,\n sToClnpost: \"\",\n sToClnpsdep: \"\",\n sToClnperson: task.SSEND_PERSON,\n sToFcstaffgrp: \"\",\n sToUser: \"\",\n sToUsergrp: task.SSEND_USRGRP,\n sSender: task.SSENDER,\n sCurrentUser: \"\",\n sLinkedUnit: task.SLINKED_UNIT,\n nLinkedRn: task.NLINKED_RN,\n docProps: newDocProps\n };\n };\n\n //Взаимодействие с событием (через перенос)\n const onDragEnd = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(({\n path,\n eventPoints,\n openNoteDialog,\n destCode\n }) => {\n //Определяем нужные параметры\n const {\n source,\n destination\n } = path;\n //Если путь не указан\n if (!destination) {\n return;\n }\n //Если происходит изменение статуса\n if (destination.droppableId !== source.droppableId) {\n //Конвертим ID переносимого события\n let nDraggableTaskId = parseInt(path.draggableId);\n //Считываем строку, у которой изменяется статус\n let task = tasks.rows.find(r => r.id === nDraggableTaskId);\n //Изменяем статус у события\n task.statusId = parseInt(path.destination.droppableId);\n //Получение настройки точки назначения\n const pointSettings = eventPoints.find(eventPoint => eventPoint.SEVPOINT === destCode);\n //Изменяем статус события с добавлением примечания\n handleTaskStateChange({\n nEvent: task.nRn,\n sNextStat: destCode,\n onReload: () => setTasks(pv => ({\n ...pv,\n reload: true,\n accountsReload: true\n })),\n onNoteOpen: pointSettings.ADDNOTE_ONCHST ? openNoteDialog : null\n });\n }\n }, [handleTaskStateChange, tasks.rows]);\n\n //При необходимости перезагрузки данных\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Считывание данных с учетом фильтрации\n let getTasks = async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_LOAD\",\n args: {\n CFILTERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.object2Base64XML)((0,_layouts__WEBPACK_IMPORTED_MODULE_3__.convertFilterValuesToArray)(filterValues), {\n arrayNodeName: \"filters\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.object2Base64XML)(ordersValues, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NINCLUDE_ACCOUNTS: tasks.accountsReload ? 1 : 0\n },\n isArray: name => name === \"XAGENTS\",\n respArg: \"COUT\"\n });\n //Считываем информацию о событиях\n let events = data.XCLNEVENTS.XDATA.XDATA_GRID;\n //Считываем иноформацию о контрагентах\n let accounts = tasks.accountsReload ? [...(data.XAGENTS_WITH_IMG.XAGENTS || [])] : tasks.loadedAccounts;\n //Инициализируем события\n let newRows = [];\n //Если есть события\n if (events.rows) {\n //Формируем структуру событий\n newRows = [...(events.rows || [])].reduce((prev, cur) => [...prev, initTask(prev.length, cur, accounts.find(agent => agent.SAGNABBR === cur.SSENDER)?.BIMAGE)], []);\n }\n //Возвращаем информацию\n return {\n rows: [...newRows],\n loadedAccounts: accounts\n };\n };\n //Считывание данных\n let getData = async () => {\n //Считываем информацию о задачах\n let eventTasks = await getTasks();\n //Загружаем данные\n setTasks(pv => ({\n ...pv,\n loaded: true,\n rows: eventTasks.rows,\n loadedAccounts: eventTasks.loadedAccounts,\n reload: false,\n accountsReload: false\n }));\n };\n //Если необходимо загрузить данные и указан тип событий и загружены все необходимые вспомогательные данные\n if (tasks.reload) {\n //Загружаем данные\n getData();\n }\n }, [SERV_DATA_TYPE_CLOB, executeStored, filterValues, ordersValues, tasks.accountsReload, tasks.loadedAccounts, tasks.reload]);\n return [tasks, setTasks, onDragEnd];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/hooks/tasks_hooks.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/index.js": +/*!*********************************************!*\ + !*** ./app/panels/clnt_task_board/index.js ***! + \*********************************************/ +/***/ ((__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 */ RootClass: () => (/* binding */ RootClass)\n/* harmony export */ });\n/* harmony import */ var _clnt_task_board__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clnt_task_board */ \"./app/panels/clnt_task_board/clnt_task_board.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Панель мониторинга: Точка входа\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Корневая панель выполнения работ\n\n//----------------\n//Интерфейс модуля\n//----------------\n\nconst RootClass = _clnt_task_board__WEBPACK_IMPORTED_MODULE_0__.ClntTaskBoard;\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/index.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/layouts.js": +/*!***********************************************!*\ + !*** ./app/panels/clnt_task_board/layouts.js ***! + \***********************************************/ +/***/ ((__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 */ COLORS: () => (/* binding */ COLORS),\n/* harmony export */ DP_DEFAULT_VALUE: () => (/* binding */ DP_DEFAULT_VALUE),\n/* harmony export */ DP_IN_VALUE: () => (/* binding */ DP_IN_VALUE),\n/* harmony export */ DP_RETURN_VALUE: () => (/* binding */ DP_RETURN_VALUE),\n/* harmony export */ DP_TYPE_PREFIX: () => (/* binding */ DP_TYPE_PREFIX),\n/* harmony export */ EVENT_STATES: () => (/* binding */ EVENT_STATES),\n/* harmony export */ TASK_COLORS: () => (/* binding */ TASK_COLORS),\n/* harmony export */ convertFilterValuesToArray: () => (/* binding */ convertFilterValuesToArray),\n/* harmony export */ formatSqlDate: () => (/* binding */ formatSqlDate),\n/* harmony export */ getLocalStorageValue: () => (/* binding */ getLocalStorageValue),\n/* harmony export */ getRandomColor: () => (/* binding */ getRandomColor),\n/* harmony export */ getTaskBgColorByRule: () => (/* binding */ getTaskBgColorByRule),\n/* harmony export */ getTaskExpiredColor: () => (/* binding */ getTaskExpiredColor),\n/* harmony export */ makeArray: () => (/* binding */ makeArray),\n/* harmony export */ makeCardActionsArray: () => (/* binding */ makeCardActionsArray),\n/* harmony export */ sortAttrs: () => (/* binding */ sortAttrs),\n/* harmony export */ sortDest: () => (/* binding */ sortDest),\n/* harmony export */ validationError: () => (/* binding */ validationError)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Дополнительная разметка и вёрстка клиентских элементов\r\n*/\n\n//---------\n//Константы\n//---------\n\n//Перечисление \"Состояние события\"\nconst EVENT_STATES = Object.freeze({\n 0: \"Все\",\n 1: \"Не аннулированные\",\n 2: \"Аннулированные\"\n});\n\n//Допустимые значение поля сортировки\nconst sortAttrs = [{\n id: \"SEVNSTAT_CODE\",\n descr: \"Мнемокод\"\n}, {\n id: \"SEVNSTAT_NAME\",\n descr: \"Наименование\"\n}, {\n id: \"SEVPOINT_DESCR\",\n descr: \"Описание точки маршрута\"\n}];\n\n//Допустимые значения направления сортировки\nconst sortDest = [];\nsortDest[-1] = \"desc\";\nsortDest[1] = \"asc\";\n\n//Цвета статусов\nconst COLORS = [\"mediumSlateBlue\", \"lightSalmon\", \"fireBrick\", \"orange\", \"gold\", \"limeGreen\", \"yellowGreen\", \"mediumAquaMarine\", \"paleTurquoise\", \"steelBlue\", \"skyBlue\", \"tan\"];\n\n//Перечисление \"Цвет задачи\"\nconst TASK_COLORS = Object.freeze({\n EXPIRED: \"#ff0000\",\n EXPIRES_SOON: \"#ffdf00\",\n LINKED: \"#1e90ff\"\n});\n\n//Перечисление Доп. свойства \"Значение по умолчанию\"\nconst DP_DEFAULT_VALUE = Object.freeze({\n 0: \"SDEFAULT_STR\",\n 1: \"NDEFAULT_NUM\",\n 2: \"DDEFAULT_DATE\",\n 3: \"NDEFAULT_NUM\"\n});\n//Перечисление Доп. свойства \"Префикс формата данных\"\nconst DP_TYPE_PREFIX = Object.freeze({\n 0: \"S\",\n 1: \"N\",\n 2: \"D\",\n 3: \"N\"\n});\n//Перечисление Доп. свойства \"Входящее значение дополнительного словаря\"\nconst DP_IN_VALUE = Object.freeze({\n 0: \"pos_str_value\",\n 1: \"pos_num_value\",\n 2: \"pos_date_value\",\n 3: \"pos_num_value\"\n});\n//Перечисление Доп. свойства \"Исходящее значение дополнительного словаря\"\nconst DP_RETURN_VALUE = Object.freeze({\n 0: \"str_value\",\n 1: \"num_value\",\n 2: \"date_value\",\n 3: \"num_value\"\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Формирование массива из 0, 1 и более элементов\nconst makeArray = arr => {\n return arr ? arr.length ? arr : [arr] : [];\n};\n\n//Конвертация формата HEX в формат RGB\nconst convertHexToRGB = hex => {\n let r = parseInt(hex.slice(1, 3), 16);\n let g = parseInt(hex.slice(3, 5), 16);\n let b = parseInt(hex.slice(5, 7), 16);\n let a = 0.5;\n r = Math.round((a * (r / 255) + a * (255 / 255)) * 255);\n g = Math.round((a * (g / 255) + a * (255 / 255)) * 255);\n b = Math.round((a * (b / 255) + a * (255 / 255)) * 255);\n return \"rgb(\" + r + \", \" + g + \", \" + b + \")\";\n};\n\n//Считывание заливки события по условию\nconst getTaskBgColorByRule = (task, colorRule) => {\n //Инициализируем значения\n let ruleCode = \"\";\n //Исходя из типа определяем наименование\n switch (colorRule.STYPE) {\n case \"number\":\n ruleCode = `N${colorRule.SFIELD}`;\n break;\n case \"date\":\n ruleCode = `D${colorRule.SFIELD}`;\n break;\n default:\n ruleCode = `S${colorRule.SFIELD}`;\n break;\n }\n //Определяем цвет заливки\n let bgColor = ruleCode && task.docProps[ruleCode] == colorRule.fromValue ? convertHexToRGB(colorRule.SCOLOR) : null;\n //Возвращаем цвет заливки\n return bgColor;\n};\n\n//Индикация истечения срока отработки события\nconst getTaskExpiredColor = task => {\n //Определяем текущую дату\n let sysDate = new Date();\n //Определяем дату истечения срока события\n let expireDate = task.dExpireDate ? new Date(task.dExpireDate) : null;\n //Если дата истечения срока определена\n if (expireDate) {\n //Определяем разницу между датами\n let daysDiff = ((expireDate.getTime() - sysDate.getTime()) / (1000 * 60 * 60 * 24)).toFixed(2);\n //Если разница меньше 0 - срок истечен\n if (daysDiff < 0) return TASK_COLORS.EXPIRED;\n //Если разница меньше 4 - скоро истечет\n if (daysDiff < 4) return TASK_COLORS.EXPIRES_SOON;\n }\n return null;\n};\n\n//Цвет из hsl формата в rgba формат\nconst convertHslToRgba = (h, s, l) => {\n s /= 100;\n l /= 100;\n const k = n => (n + h / 30) % 12;\n const a = s * Math.min(l, 1 - l);\n const f = n => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));\n return `rgba(${Math.floor(255 * f(0))},${Math.floor(255 * f(8))},${Math.floor(255 * f(4))},0.3)`;\n};\n\n//Формирование случайного цвета\nconst getRandomColor = index => {\n const hue = index * 137.508;\n return convertHslToRgba(hue, 50, 70);\n};\n\n//Формат дополнительного свойства типа число (длина, точность)\nconst formatRegExpNum = (width, precision) => new RegExp(\"^(\\\\d{1,\" + (width - precision) + \"}\" + (precision > 0 ? \"((\\\\.|,)\\\\d{1,\" + precision + \"})?\" : \"\") + \")?$\");\n\n//Формат дополнительного свойства типа строка (длина)\nconst formatRegExpStr = length => new RegExp(\"^.{0,\" + length + \"}$\");\n\n//Проверка валидности числа\nconst isValidNum = (width, precision, value) => {\n return formatRegExpNum(width, precision).test(value);\n};\n\n//Проверка валидности строки\nconst isValidStr = (length, value) => {\n return formatRegExpStr(length).test(value);\n};\n\n//Признак ошибки валидации\nconst validationError = (value = \"\", format, numWidth, numPrecision, strLength) => {\n //Исходим от формата\n switch (format) {\n //Проверка строки\n case 0:\n return isValidStr(strLength, value);\n //Проверка числа\n case 1:\n return isValidNum(numWidth, numPrecision, value);\n //Остальное не проверяем\n default:\n return true;\n }\n};\n\n//Конвертация времени в привычный формат\nconst formatSqlDate = timeStamp => {\n //Если есть разделитель\n if (timeStamp.indexOf(\".\") !== -1) {\n //Определяем секунды\n let seconds = 24 * 60 * 60 * timeStamp;\n //Определяем часы\n const hours = Math.trunc(seconds / (60 * 60));\n //Переопределяем секунды\n seconds = seconds % (60 * 60);\n //Определяем минуты\n const minutes = Math.trunc(seconds / 60);\n //Определяем остаток секунд\n seconds = Math.round(seconds % 60);\n //Форматируем\n const formattedTime = (\"0\" + hours).slice(-2) + \":\" + (\"0\" + minutes).slice(-2) + \":\" + (\"0\" + seconds).slice(-2);\n //Возвращаем результат\n return formattedTime;\n }\n return timeStamp;\n};\n\n//Считывание значений из локального хранилища\nconst getLocalStorageValue = (sName, defaultValue = null) => localStorage.getItem(sName) || defaultValue;\n\n//Форматирование фильтра в массив для отбора\nconst convertFilterValuesToArray = filterValues => {\n //Инициализируем значение \"с\" состояния (\"Все\", \"Не аннулированные\" - 0, \"Аннулированые\" - 1)\n let nClosedFrom = filterValues.sState ? [EVENT_STATES[0], EVENT_STATES[1]].includes(filterValues.sState) ? 0 : 1 : 0;\n //Инициализируем значение \"по\" состояния (\"Все\", \"Аннулированные\" - 1, \"Не аннулированные\" - 0)\n let nClosedTo = filterValues.sState ? [EVENT_STATES[0], EVENT_STATES[2]].includes(filterValues.sState) ? 1 : 0 : 0;\n //Формируем массив значений фильтра\n let filterValuesArray = [{\n name: \"NCLOSED\",\n from: nClosedFrom,\n to: nClosedTo\n }, {\n name: \"SEVTYPE_CODE\",\n from: filterValues.sType,\n to: null\n }, {\n name: \"NCRN\",\n from: filterValues.sCrnRnList,\n to: null\n }, {\n name: \"SSEND_PERSON\",\n from: filterValues.sSendPerson,\n to: null\n }, {\n name: \"SSEND_DIVISION\",\n from: filterValues.sSendDivision,\n to: null\n }, {\n name: \"SSEND_USRGRP\",\n from: filterValues.sSendUsrGrp,\n to: null\n }, {\n name: \"NLINKED_RN\",\n from: filterValues.sDocLink,\n to: null\n }];\n return filterValuesArray;\n};\n\n//Формирование массива действий карточки события\nconst makeCardActionsArray = (onEdit, onEditClient, onDelete, onStateChange, onReturn, onSend, onNotesOpen, onFileLinksOpen) => {\n //Формируем список действий карточки\n return [{\n method: \"EDIT\",\n name: \"Исправить\",\n icon: \"edit\",\n visible: false,\n delimiter: false,\n tasksReload: false,\n needAccountsReload: false,\n func: onEdit\n }, {\n method: \"EDIT_CLIENT\",\n name: \"Исправить в разделе\",\n icon: \"edit_note\",\n visible: true,\n delimiter: false,\n tasksReload: false,\n needAccountsReload: false,\n func: onEditClient\n }, {\n method: \"DELETE\",\n name: \"Удалить\",\n icon: \"delete\",\n visible: true,\n delimiter: true,\n tasksReload: true,\n needAccountsReload: false,\n func: onDelete\n }, {\n method: \"TASK_STATE_CHANGE\",\n name: \"Перейти\",\n icon: \"turn_right\",\n visible: true,\n delimiter: false,\n tasksReload: true,\n needAccountsReload: true,\n func: onStateChange\n }, {\n method: \"TASK_RETURN\",\n name: \"Выполнить возврат\",\n icon: \"turn_left\",\n visible: true,\n delimiter: false,\n tasksReload: true,\n needAccountsReload: true,\n func: onReturn\n }, {\n method: \"TASK_SEND\",\n name: \"Направить\",\n icon: \"send\",\n visible: true,\n delimiter: true,\n tasksReload: true,\n needAccountsReload: true,\n func: onSend\n }, {\n method: \"NOTES\",\n name: \"Примечания\",\n icon: \"event_note\",\n visible: true,\n delimiter: true,\n tasksReload: false,\n needAccountsReload: false,\n func: onNotesOpen\n }, {\n method: \"FILE_LINKS\",\n name: \"Присоединенные документы\",\n icon: \"attach_file\",\n visible: true,\n delimiter: false,\n tasksReload: false,\n needAccountsReload: false,\n func: onFileLinksOpen\n }];\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/layouts.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/styles.js": +/*!**********************************************!*\ + !*** ./app/panels/clnt_task_board/styles.js ***! + \**********************************************/ +/***/ ((__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 */ COMMON_STYLES: () => (/* binding */ COMMON_STYLES)\n/* harmony export */ });\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../app.styles */ \"./app.styles.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент: Общие стили\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Типовые стили\n\n//---------\n//Константы\n//---------\n\n//Общие стили\nconst COMMON_STYLES = {\n TASK_FORM_TEXT_FIELD: (widthVal, greyDisabled = false) => ({\n margin: \"4px\",\n ...(widthVal ? {\n width: widthVal\n } : {}),\n ...(greyDisabled ? {\n \"& .MuiInputBase-input.Mui-disabled\": {\n WebkitTextFillColor: \"rgba(0, 0, 0, 0.87)\"\n },\n \"& .MuiInputLabel-root.Mui-disabled\": {\n WebkitTextFillColor: \"rgba(0, 0, 0, 0.6)\"\n }\n } : {})\n }),\n BOX_WITH_LEGEND: {\n border: \"1px solid #939393\"\n },\n BOX_SINGLE_COLUMN: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\"\n },\n LEGEND: {\n textAlign: \"left\"\n },\n SELECT_MENU: width => {\n return {\n overflowY: \"auto\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_0__.APP_STYLES.SCROLL,\n width: width ? width : null\n };\n },\n STACK_DOCLINKS: {\n alignItems: \"baseline\"\n },\n SCROLL: {\n ..._app_styles__WEBPACK_IMPORTED_MODULE_0__.APP_STYLES.SCROLL,\n overflowY: \"auto\"\n },\n DIALOG_ACTIONS: {\n justifyContent: \"end\",\n paddingRight: \"24px\",\n paddingLeft: \"24px\"\n },\n DIALOG_CLOSE_BUTTON: {\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme => theme.palette.grey[500]\n },\n ZERO_PADDING: {\n padding: 0\n }\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/styles.js?"); + +/***/ }), + +/***/ "./app/panels/clnt_task_board/task_dialog.js": +/*!***************************************************!*\ + !*** ./app/panels/clnt_task_board/task_dialog.js ***! + \***************************************************/ +/***/ ((__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 */ TaskDialog: () => (/* binding */ TaskDialog)\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_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hooks/task_dialog_hooks */ \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\");\n/* harmony import */ var _components_task_form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/task_form */ \"./app/panels/clnt_task_board/components/task_form.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles */ \"./app/panels/clnt_task_board/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//Константы\n//---------\n\n//Стили\nconst STYLES = {\n DIALOG_CONTENT: {\n paddingBottom: \"0px\",\n maxHeight: \"740px\",\n minHeight: \"740px\",\n ..._styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.SCROLL\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог формы события\nconst TaskDialog = ({\n taskRn,\n taskType,\n taskStatus,\n editable,\n onTasksReload,\n onClose\n}) => {\n //Собственное состояние\n const [task, setTask] = (0,_hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__.useClientEvent)(taskRn, taskType, taskStatus);\n\n //Состояние заполненности всех обязательных свойств\n const [dpReady, setDPReady] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_3__[\"BackEndСtx\"]);\n\n //При изменении заполненности всех обязательных свойств\n const handleDPReady = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(v => setDPReady(v), []);\n\n //При изменении информации о задаче\n const handleTaskChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(newTaskValues => {\n setTask(pv => ({\n ...pv,\n ...newTaskValues\n }));\n }, [setTask]);\n\n //При добавлении события\n const handleInsertTask = async callBack => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_INSERT\",\n args: {\n SCRN: task.sCrn,\n SPREF: task.sPrefix,\n SNUMB: task.sNumber,\n STYPE: task.sType,\n SSTATUS: task.sStatus,\n SPLAN_DATE: task.dPlanDate,\n SINIT_PERSON: task.sInitClnperson,\n SCLIENT_CLIENT: task.sClntClients,\n SCLIENT_PERSON: task.sClntClnperson,\n SDESCRIPTION: task.sDescription,\n SREASON: task.sInitReason,\n CPROPS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.object2Base64XML)([Object.fromEntries(Object.entries(task.docProps)\n // eslint-disable-next-line no-unused-vars\n .filter(([_, v]) => v != ( false || \"\")))], {\n arrayNodeName: \"props\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n }\n });\n callBack();\n };\n\n //При исправлении события\n const handleUpdateEvent = async callBack => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_UPDATE\",\n args: {\n NCLNEVENTS: task.nRn,\n SCLIENT_CLIENT: task.sClntClients,\n SCLIENT_PERSON: task.sClntClnperson,\n SDESCRIPTION: task.sDescription,\n CPROPS: {\n // eslint-disable-next-line no-unused-vars\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.object2Base64XML)([Object.fromEntries(Object.entries(task.docProps).filter(([_, v]) => v != ( false || \"\")))], {\n arrayNodeName: \"props\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n }\n });\n callBack();\n };\n\n //При считывании следующего номера события\n const handleEventNextNumbGet = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n //Считываем данные\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_NEXTNUMB_GET\",\n args: {\n SPREFIX: task.sPrefix\n }\n });\n //Если данные есть\n if (data) {\n //Устанавливаем номер\n setTask(pv => ({\n ...pv,\n sNumber: data.SEVENT_NUMB\n }));\n }\n }, [executeStored, setTask, task.sPrefix]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n open: true,\n onClose: onClose ? onClose : null,\n fullWidth: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.DIALOG_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_task_form__WEBPACK_IMPORTED_MODULE_2__.TaskForm, {\n task: task,\n taskType: taskType,\n onTaskChange: handleTaskChange,\n editable: !taskRn || editable ? true : false,\n onEventNextNumbGet: handleEventNextNumbGet,\n onDPReady: handleDPReady\n })), onClose ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.DIALOG_ACTIONS\n }, taskRn ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: () => handleUpdateEvent(onClose).then(onTasksReload),\n disabled: task.updateDisabled || !editable || !dpReady\n }, \"\\u0418\\u0441\\u043F\\u0440\\u0430\\u0432\\u0438\\u0442\\u044C\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: () => handleInsertTask(onClose).then(onTasksReload),\n disabled: task.insertDisabled || !dpReady\n }, \"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: onClose\n }, \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\")) : null);\n};\n\n//Контроль свойств - Диалог формы события\nTaskDialog.propTypes = {\n taskRn: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number),\n taskType: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string).isRequired,\n taskStatus: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n editable: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/task_dialog.js?"); /***/ }), @@ -3534,7 +3776,18 @@ 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 */ DATA_TYPE: () => (/* binding */ DATA_TYPE),\n/* harmony export */ NODE_TYPE: () => (/* binding */ NODE_TYPE)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Обще ресурсы и константы\r\n*/\n\n//---------\n//Константы\n//---------\n\n//Типы данных\nconst DATA_TYPE = {\n STR: 0,\n NUMB: 1,\n DATE: 2\n};\n\n//Типы элементов диаграммы\nconst NODE_TYPE = {\n ENTITY: \"entity\",\n ATTRIBUTE: \"attribute\"\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/common.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DATA_TYPE: () => (/* binding */ DATA_TYPE),\n/* harmony export */ DATA_TYPE_ICON: () => (/* binding */ DATA_TYPE_ICON),\n/* harmony export */ ENTITY_TYPE: () => (/* binding */ ENTITY_TYPE),\n/* harmony export */ ENTITY_TYPE_ICON: () => (/* binding */ ENTITY_TYPE_ICON),\n/* harmony export */ NODE_TYPE: () => (/* binding */ NODE_TYPE)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Обще ресурсы и константы\r\n*/\n\n//---------\n//Константы\n//---------\n\n//Типы данных\nconst DATA_TYPE = {\n STR: 0,\n NUMB: 1,\n DATE: 2\n};\n\n//Иконки типов данных\nconst DATA_TYPE_ICON = {\n [DATA_TYPE.STR]: \"format_align_left\",\n [DATA_TYPE.NUMB]: \"pin\",\n [DATA_TYPE.DATE]: \"calendar_month\"\n};\n\n//Типы элементов диаграммы\nconst NODE_TYPE = {\n ENTITY: \"entity\",\n ATTRIBUTE: \"attribute\"\n};\n\n//Типы сущностей\nconst ENTITY_TYPE = {\n VIEW: \"VIEW\",\n TABLE: \"TABLE\"\n};\n\n//Иконки типов сущностей\nconst ENTITY_TYPE_ICON = {\n [ENTITY_TYPE.VIEW]: \"table_view\",\n [ENTITY_TYPE.TABLE]: \"table_rows\"\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/common.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/argument/argument.js": +/*!*****************************************************************!*\ + !*** ./app/panels/query_editor/components/argument/argument.js ***! + \*****************************************************************/ +/***/ ((__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 */ ARGUMENT_SHAPE: () => (/* binding */ ARGUMENT_SHAPE),\n/* harmony export */ ARGUMENT_VARIANT: () => (/* binding */ ARGUMENT_VARIANT),\n/* harmony export */ Argument: () => (/* binding */ Argument)\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_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItem/ListItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemIcon/ListItemIcon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Chip/Chip.js\");\n/* harmony import */ var _components_editors_p8p_editors_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/editors/p8p_editors_common */ \"./app/components/editors/p8p_editors_common.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компоненты: Аргумент запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Компоненты UI\n //Общие ресурсы редаторов\n //Общие ресурсы и константы редактора запросов\n\n//---------\n//Константы\n//---------\n\n//Варианты представления\nconst ARGUMENT_VARIANT = {\n LIST_ITEM: \"LIST_ITEM\",\n CHIP: \"CHIP\"\n};\n\n//Структура аргумента\nconst ARGUMENT_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n dataType: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOf(Object.values(_common__WEBPACK_IMPORTED_MODULE_2__.DATA_TYPE)),\n mandatory: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOf([0, 1]).isRequired\n});\n\n//Иконки\nconst ICONS = {\n ..._common__WEBPACK_IMPORTED_MODULE_2__.DATA_TYPE_ICON,\n DEFAULT: \"category\"\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Аргумент запроса\nconst Argument = ({\n arg,\n variant,\n onClick = null,\n onDelete = null\n}) => {\n //Заголовок аргумента\n const title = `${arg.mandatory == 1 ? \"*\" : \"\"}${arg.title}`;\n\n //Иконка аргумента\n const icon = ICONS[arg.dataType] || ICONS.DEFAULT;\n\n //Формирование представления\n return variant == ARGUMENT_VARIANT.LIST_ITEM ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n disablePadding: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n onClick: () => onClick && onClick(arg),\n dense: true\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\"], null, icon)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n primary: title,\n secondaryTypographyProps: {\n component: \"div\"\n },\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n direction: \"column\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n variant: \"caption\"\n }, arg.name))\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: e => onDelete && onDelete(e, arg),\n title: \"Удалить\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"delete\"))))) : variant == ARGUMENT_VARIANT.CHIP ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, icon),\n label: title,\n variant: \"outlined\",\n sx: _components_editors_p8p_editors_common__WEBPACK_IMPORTED_MODULE_1__.STYLES.CHIP(true)\n }) : null;\n};\n\n//Контроль свойств компонента - Аргумент запроса\nArgument.propTypes = {\n arg: ARGUMENT_SHAPE,\n variant: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOf(Object.values(ARGUMENT_VARIANT)).isRequired,\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onDelete: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/argument/argument.js?"); /***/ }), @@ -3545,18 +3798,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 */ Attribute: () => (/* binding */ Attribute)\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_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! reactflow */ \"./node_modules/@reactflow/core/dist/esm/index.mjs\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компоненты: Атрибут сущности\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Библиотека редактора диаграмм\n //Компоненты UI\n //Общие ресурсы и константы редактора\n\n//---------\n//Константы\n//---------\n\n//Типовые цвета точек привязки\nconst HANDLE_BORDER_COLOR = \"#69db7c\";\nconst HANDLE_BORDER_COLOR_DISABLED = \"#adb5bd\";\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n display: \"flex\",\n width: \"100%\",\n height: \"100%\"\n },\n HANDLE_SOURCE: isConnecting => ({\n width: 14,\n height: 14,\n right: -10,\n border: `2px solid ${isConnecting ? HANDLE_BORDER_COLOR_DISABLED : HANDLE_BORDER_COLOR}`,\n borderRadius: 7,\n background: \"white\"\n }),\n HANDLE_TARGET: isConnecting => ({\n width: isConnecting ? 14 : 0,\n height: 14,\n left: isConnecting ? -7 : 0,\n border: `2px solid ${HANDLE_BORDER_COLOR}`,\n borderRadius: 7,\n background: \"white\",\n visibility: isConnecting ? \"visible\" : \"hidden\"\n }),\n CONTENT_STACK: {\n width: \"100%\"\n },\n TITLE_NAME_STACK: {\n width: \"100%\",\n containerType: \"inline-size\"\n }\n};\n\n//Иконки\nconst ICONS = {\n [_common__WEBPACK_IMPORTED_MODULE_1__.DATA_TYPE.STR]: \"format_align_left\",\n [_common__WEBPACK_IMPORTED_MODULE_1__.DATA_TYPE.NUMB]: \"pin\",\n [_common__WEBPACK_IMPORTED_MODULE_1__.DATA_TYPE.DATE]: \"calendar_month\",\n DEFAULT: \"category\"\n};\n\n//Структура данных об атрибуте сущности\nconst ATTRIBUTE_DATA_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n dataType: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number).isRequired\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Атрибут сущности\nconst Attribute = ({\n data\n}) => {\n //Поиск идентификатора соединяемого элемента\n const connectionNodeId = (0,reactflow__WEBPACK_IMPORTED_MODULE_3__.useStore)(state => state.connectionNodeId);\n\n //Флаг выполнения соединения сущностей\n const isConnecting = Boolean(connectionNodeId);\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n p: 1,\n sx: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_3__.Handle, {\n type: \"source\",\n position: reactflow__WEBPACK_IMPORTED_MODULE_3__.Position.Right,\n style: STYLES.HANDLE_SOURCE(isConnecting)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_3__.Handle, {\n type: \"target\",\n position: reactflow__WEBPACK_IMPORTED_MODULE_3__.Position.Left,\n isConnectableStart: false,\n style: STYLES.HANDLE_TARGET(isConnecting)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n direction: \"row\",\n alignItems: \"center\",\n spacing: 1,\n sx: STYLES.CONTENT_STACK\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n color: \"action\"\n }, ICONS[data.dataType] || ICONS.DEFAULT), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n direction: \"column\",\n alignItems: \"left\",\n sx: STYLES.TITLE_NAME_STACK\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"body2\",\n noWrap: true,\n title: data.title\n }, data.title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"caption\",\n color: \"text.secondary\",\n noWrap: true,\n title: data.name\n }, data.name))));\n};\n\n//Контроль свойств компонента - Атрибут сущности\nAttribute.propTypes = {\n data: ATTRIBUTE_DATA_SHAPE\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/attribute/attribute.js?"); - -/***/ }), - -/***/ "./app/panels/query_editor/components/entity/entity.css": -/*!**************************************************************!*\ - !*** ./app/panels/query_editor/components/entity/entity.css ***! - \**************************************************************/ -/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_entity_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../../node_modules/css-loader/dist/cjs.js!./entity.css */ \"./node_modules/css-loader/dist/cjs.js!./app/panels/query_editor/components/entity/entity.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\noptions.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_entity_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_entity_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_entity_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_entity_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/entity/entity.css?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ATTRIBUTE_SHAPE: () => (/* binding */ ATTRIBUTE_SHAPE),\n/* harmony export */ Attribute: () => (/* binding */ Attribute),\n/* harmony export */ attrGetShow: () => (/* binding */ attrGetShow),\n/* harmony export */ attrGetUse: () => (/* binding */ attrGetUse)\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_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! reactflow */ \"./node_modules/@reactflow/core/dist/esm/index.mjs\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компоненты: Атрибут сущности\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Библиотека редактора диаграмм\n //Компоненты UI\n //Общие ресурсы и константы редактора запросов\n\n//---------\n//Константы\n//---------\n\n//Типовые цвета точек привязки\nconst HANDLE_BORDER_COLOR = \"#69db7c\";\nconst HANDLE_BORDER_COLOR_INVALID = \"#ff0000\";\nconst HANDLE_BORDER_COLOR_DISABLED = \"#adb5bd\";\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n display: \"flex\",\n width: \"100%\",\n height: \"100%\",\n cursor: \"default\"\n },\n HANDLE_SOURCE: isConnecting => ({\n width: 14,\n height: 14,\n right: -10,\n border: `2px solid ${isConnecting ? HANDLE_BORDER_COLOR_DISABLED : HANDLE_BORDER_COLOR}`,\n borderRadius: 7,\n background: \"white\"\n }),\n HANDLE_TARGET: (isConnecting, isValidConnection) => ({\n width: isConnecting ? 14 : 0,\n height: 14,\n left: isConnecting ? -7 : 0,\n border: `2px solid ${isValidConnection ? HANDLE_BORDER_COLOR : HANDLE_BORDER_COLOR_INVALID}`,\n borderRadius: 7,\n background: \"white\",\n visibility: isConnecting ? \"visible\" : \"hidden\"\n }),\n CONTENT_STACK: {\n width: \"100%\"\n },\n TITLE_NAME_STACK: {\n width: \"100%\",\n containerType: \"inline-size\"\n },\n ATTR_PROP_ICON: {\n fontSize: \"0.9rem\"\n }\n};\n\n//Иконки\nconst ICONS = {\n ..._common__WEBPACK_IMPORTED_MODULE_1__.DATA_TYPE_ICON,\n DEFAULT: \"category\"\n};\n\n//Структура данных об атрибуте сущности\nconst ATTRIBUTE_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n id: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n parentEntity: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n name: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n dataType: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOf(Object.values(_common__WEBPACK_IMPORTED_MODULE_1__.DATA_TYPE)),\n agg: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n alias: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n use: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOf([0, 1]).isRequired,\n show: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOf([0, 1]).isRequired\n});\n\n//-----------------------\n//Вспомогательные функции\n//-----------------------\n\n//Получение атрибутики состояния включения атрибута в запрос\nconst attrGetUse = (attr, callToAction = false) => {\n return [attr.use === 1, `${attr.use === 1 ? \"Включен в запрос\" : \"Не включен в запрос\"}${callToAction ? \"- нажмите, чтобы изменить\" : \"\"}`];\n};\n\n//Получение атрибутики состояния отображения атрибута в результатах запроса\nconst attrGetShow = (attr, callToAction = false) => {\n return [`${attr.show == 1 ? \"Отображается в результатах запроса\" : \"Не отображается в результатах запроса\"}${callToAction ? \"- нажмите, чтобы изменить\" : \"\"}`, attr.show == 1 ? \"visibility\" : \"visibility_off\"];\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Атрибут сущности\nconst Attribute = ({\n data\n}) => {\n //Поиск идентификатора соединяемого элемента\n const [connectionNodeId, targetConnectionNode, connectionStatus] = (0,reactflow__WEBPACK_IMPORTED_MODULE_3__.useStore)(state => [state.connectionNodeId, state?.connectionEndHandle?.nodeId, state.connectionStatus]);\n\n //Флаг выполнения соединения сущностей\n const isConnecting = Boolean(connectionNodeId);\n\n //Флаг корректности соединения сущностей\n const isValidConnection = !(data.id == targetConnectionNode && connectionStatus == \"invalid\");\n\n //Получим атрибуты состояния отображения\n const [showTitle, showIcon] = attrGetShow(data);\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n p: 1,\n sx: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_3__.Handle, {\n type: \"source\",\n position: reactflow__WEBPACK_IMPORTED_MODULE_3__.Position.Right,\n style: STYLES.HANDLE_SOURCE(isConnecting)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_3__.Handle, {\n type: \"target\",\n position: reactflow__WEBPACK_IMPORTED_MODULE_3__.Position.Left,\n isConnectableStart: false,\n style: STYLES.HANDLE_TARGET(isConnecting, isValidConnection)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n direction: \"row\",\n alignItems: \"center\",\n spacing: 1,\n sx: STYLES.CONTENT_STACK\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n color: \"action\"\n }, ICONS[data.dataType] || ICONS.DEFAULT), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n direction: \"column\",\n alignItems: \"left\",\n sx: STYLES.TITLE_NAME_STACK\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"body2\",\n noWrap: true,\n title: data.title\n }, data.title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n direction: \"row\",\n alignItems: \"center\",\n spacing: 0.5\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n component: \"div\",\n variant: \"caption\",\n color: \"text.secondary\",\n noWrap: true,\n title: data.name\n }, `${data.name},`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n color: \"action\",\n sx: STYLES.ATTR_PROP_ICON,\n title: showTitle\n }, showIcon)))));\n};\n\n//Контроль свойств компонента - Атрибут сущности\nAttribute.propTypes = {\n data: ATTRIBUTE_SHAPE\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/attribute/attribute.js?"); /***/ }), @@ -3567,18 +3809,249 @@ 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 */ Entity: () => (/* binding */ Entity)\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_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _entity_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./entity.css */ \"./app/panels/query_editor/components/entity/entity.css\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компоненты: Сущность запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Стили компомнента\n\n//---------\n//Константы\n//---------\n\n//Структура данных о сущности запроса\nconst ENTITY_DATA_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Сущность запроса\nconst Entity = ({\n data,\n selected\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"entity__wrapper\",\n \"data-selected\": selected\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"entity__title\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, data.title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"entity__name\"\n }, data.name)));\n};\n\n//Контроль свойств компонента - Сущность запроса\nEntity.propTypes = {\n data: ENTITY_DATA_SHAPE,\n selected: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/entity/entity.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ENTITY_BRIEF_SHAPE: () => (/* binding */ ENTITY_BRIEF_SHAPE),\n/* harmony export */ ENTITY_SHAPE: () => (/* binding */ ENTITY_SHAPE),\n/* harmony export */ ENTITY_VARIANT: () => (/* binding */ ENTITY_VARIANT),\n/* harmony export */ Entity: () => (/* binding */ Entity)\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_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItem/ListItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.js\");\n/* harmony import */ var _attribute_attribute__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../attribute/attribute */ \"./app/panels/query_editor/components/attribute/attribute.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компоненты: Сущность запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Компоненты UI\n //Общие ресурсы и константы редактора запросов\n //Описание атрибута сущности\n\n//---------\n//Константы\n//---------\n\n//Варианты представления сущности\nconst ENTITY_VARIANT = {\n LIST_ITEM: \"LIST_ITEM\",\n DIAGRAM: \"DIAGRAM\"\n};\n\n//Иконки\nconst ICONS = {\n ..._common__WEBPACK_IMPORTED_MODULE_1__.ENTITY_TYPE_ICON,\n DEFAULT: \"border_clear\"\n};\n\n//Структура данных о сущности запроса\nconst ENTITY_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n type: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOf(Object.values(_common__WEBPACK_IMPORTED_MODULE_1__.ENTITY_TYPE)).isRequired,\n x: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number).isRequired,\n y: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number).isRequired,\n attrs: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(_attribute_attribute__WEBPACK_IMPORTED_MODULE_2__.ATTRIBUTE_SHAPE).isRequired\n});\n\n//Структура данных о сущности запроса (краткая)\nconst ENTITY_BRIEF_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n type: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOf(Object.values(_common__WEBPACK_IMPORTED_MODULE_1__.ENTITY_TYPE)).isRequired\n});\n\n//Стили\nconst STYLES = {\n CONTAINER: selected => ({\n width: \"100%\",\n height: \"100%\",\n border: \"1px solid var(--border-color-dark)\",\n borderRadius: \"6px\",\n boxShadow: \"var(--shadow-entity)\",\n overflow: \"hidden\",\n backgroundColor: \"white\",\n cursor: \"move\",\n ...(selected ? {\n outline: \"1px solid var(--outline-color)\",\n borderColor: \"var(--outline-color)\"\n } : {})\n }),\n CONTENT_STACK: variant => ({\n width: \"100%\",\n backgroundColor: \"var(--entity-title-bg)\",\n ...(variant === ENTITY_VARIANT.DIAGRAM ? {\n height: \"50px\"\n } : {})\n }),\n CAPTIONS_TYPOGRAPHY: variant => ({\n ...(variant === ENTITY_VARIANT.DIAGRAM ? {\n maxWidth: \"100px\",\n overflow: \"hidden\"\n } : {})\n })\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Сущность запроса\nconst Entity = ({\n data,\n variant = ENTITY_VARIANT.DIAGRAM,\n selected = false,\n onClick = null\n}) => {\n //Иконка\n const icon = ICONS[data.type] || ICONS.DEFAULT;\n\n //Всплывающая подсказка\n const iconTitle = data.type === _common__WEBPACK_IMPORTED_MODULE_1__.ENTITY_TYPE.VIEW ? \"Представление\" : \"Таблица\";\n\n //Содержимое самой сущности\n const entContent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n direction: \"row\",\n alignItems: \"center\",\n justifyContent: variant === ENTITY_VARIANT.DIAGRAM ? \"center\" : \"left\",\n p: 1,\n sx: STYLES.CONTENT_STACK(variant)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n color: \"action\",\n title: iconTitle\n }, icon), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n direction: \"column\",\n alignItems: \"left\",\n pl: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n variant: variant === ENTITY_VARIANT.DIAGRAM ? \"subtitle2\" : \"body2\",\n noWrap: variant === ENTITY_VARIANT.DIAGRAM ? true : false,\n title: data.title,\n sx: STYLES.CAPTIONS_TYPOGRAPHY(variant)\n }, data.title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n component: \"div\",\n variant: \"caption\",\n color: \"text.secondary\",\n noWrap: variant === ENTITY_VARIANT.DIAGRAM ? true : false,\n title: data.name,\n sx: STYLES.CAPTIONS_TYPOGRAPHY(variant)\n }, data.name)));\n\n //Формирование представления\n return variant == ENTITY_VARIANT.LIST_ITEM ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n disablePadding: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: () => onClick && onClick(data),\n dense: true\n }, entContent)) : variant == ENTITY_VARIANT.DIAGRAM ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n sx: STYLES.CONTAINER(selected)\n }, entContent) : null;\n};\n\n//Контроль свойств компонента - Сущность запроса\nEntity.propTypes = {\n data: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([ENTITY_SHAPE, ENTITY_BRIEF_SHAPE]).isRequired,\n variant: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/entity/entity.js?"); /***/ }), -/***/ "./app/panels/query_editor/components/entity_add_dialog/entity_add_dialog.js": -/*!***********************************************************************************!*\ - !*** ./app/panels/query_editor/components/entity_add_dialog/entity_add_dialog.js ***! - \***********************************************************************************/ +/***/ "./app/panels/query_editor/components/inspector/inspector.js": +/*!*******************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector/inspector.js ***! + \*******************************************************************/ /***/ ((__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 */ EntityAddDialog: () => (/* binding */ EntityAddDialog)\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_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.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//Диалог добавления сущности запроса\nconst EntityAddDialog = ({\n onOk,\n onCancel\n}) => {\n //Нажатие на кнопку \"Ok\"\n const handleOk = values => onOk && onOk({\n ...values\n });\n\n //Нажатие на кнопку \"Отмена\"\n const handleCancel = () => onCancel && onCancel();\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8PDialog, {\n title: `${_app_text__WEBPACK_IMPORTED_MODULE_2__.TITLES.INSERT} сущности`,\n inputs: [{\n name: \"name\",\n value: \"\",\n label: \"Имя\"\n }],\n onOk: handleOk,\n onCancel: handleCancel\n });\n};\n\n//Контроль свойств - Диалог добавления сущности запроса\nEntityAddDialog.propTypes = {\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/entity_add_dialog/entity_add_dialog.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Inspector: () => (/* binding */ Inspector)\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_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _components_editors_p8p_editor_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/editors/p8p_editor_box */ \"./app/components/editors/p8p_editor_box.js\");\n/* harmony import */ var _components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../components/editors/p8p_editor_sub_header */ \"./app/components/editors/p8p_editor_sub_header.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/* harmony import */ var _relation_relation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../relation/relation */ \"./app/panels/query_editor/components/relation/relation.js\");\n/* harmony import */ var _argument_argument__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../argument/argument */ \"./app/panels/query_editor/components/argument/argument.js\");\n/* harmony import */ var _inspector_query_args_inspector_query_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../inspector_query_args/inspector_query_args */ \"./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js\");\n/* harmony import */ var _inspector_query_cond_inspector_query_cond__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../inspector_query_cond/inspector_query_cond */ \"./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js\");\n/* harmony import */ var _inspector_query_ents_inspector_query_ents__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../inspector_query_ents/inspector_query_ents */ \"./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js\");\n/* harmony import */ var _inspector_query_rls_inspector_query_rls__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../inspector_query_rls/inspector_query_rls */ \"./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js\");\n/* harmony import */ var _query_area__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./query_area */ \"./app/panels/query_editor/components/inspector/query_area.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 //Управление связями запроса\n //Область запроса\n\n//-----------\n//Тело модуля\n//-----------\n\n//Инспектор свойств\nconst Inspector = ({\n query,\n entity,\n relation,\n entities = [],\n args = [],\n cond = null,\n qry = \"\",\n qryMsg = \"\",\n onOptionsChanged = null\n}) => {\n //При изменении настроек запроса\n const handleOptionsChanged = () => onOptionsChanged && onOptionsChanged();\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_box__WEBPACK_IMPORTED_MODULE_1__.P8PEditorBox, {\n title: \"Настройки запроса\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Аргументы\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_args_inspector_query_args__WEBPACK_IMPORTED_MODULE_6__.InspectorQueryArguments, {\n query: query,\n args: args,\n onOptionsChanged: handleOptionsChanged\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Условия отбора\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_cond_inspector_query_cond__WEBPACK_IMPORTED_MODULE_7__.InspectorQueryConditions, {\n query: query,\n cond: cond,\n entities: entities,\n args: args,\n onOptionsChanged: handleOptionsChanged\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Сущности\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_ents_inspector_query_ents__WEBPACK_IMPORTED_MODULE_8__.InspectorQueryEntities, {\n query: query,\n entity: entity,\n onOptionsChanged: handleOptionsChanged\n }), relation && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Связь\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_rls_inspector_query_rls__WEBPACK_IMPORTED_MODULE_9__.InspectorQueryRelations, {\n query: query,\n relation: relation,\n onOptionsChanged: handleOptionsChanged\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_query_area__WEBPACK_IMPORTED_MODULE_10__.QueryArea, {\n qry: qry,\n qryMsg: qryMsg\n }));\n};\n\n//Контроль свойств компонента - Инспектор свойств\nInspector.propTypes = {\n query: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().number).isRequired,\n entity: _entity_entity__WEBPACK_IMPORTED_MODULE_3__.ENTITY_SHAPE,\n relation: _relation_relation__WEBPACK_IMPORTED_MODULE_4__.RELATION_SHAPE,\n entities: prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(_entity_entity__WEBPACK_IMPORTED_MODULE_3__.ENTITY_SHAPE),\n args: prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(_argument_argument__WEBPACK_IMPORTED_MODULE_5__.ARGUMENT_SHAPE),\n cond: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n qry: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n qryMsg: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n onOptionsChanged: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector/inspector.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector/query_area.js": +/*!********************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector/query_area.js ***! + \********************************************************************/ +/***/ ((__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 */ QueryArea: () => (/* binding */ QueryArea)\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_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Snackbar/Snackbar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Alert/Alert.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.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 //Компоненты MUI\n //Общие текстовые ресурсы приложения\n //Общие стили приложения\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n SQL_FAB: {\n position: \"absolute\",\n bottom: 16,\n right: 16\n },\n SQL_TEXT_FIELD: {\n fontSize: \"0.9rem\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_2__.APP_STYLES.SCROLL\n },\n SNACKBAR_ALERT: {\n width: \"100%\"\n }\n};\n\n//Начальное состояние всплывающего сообщения\nconst SNACK_BAR_MESSAGE_INIT = {\n text: null,\n type: null\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Область запроса\nconst QueryArea = ({\n qry = \"\",\n qryMsg = \"\"\n}) => {\n //Собственное состояние - текст всплывающего сообщения\n const [snackBarMessage, setSnackBarMessage] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(SNACK_BAR_MESSAGE_INIT);\n\n //Собственное состояние - отображение области SQL запроса\n const [displaySQL, setDisplaySQL] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - развёрнутость\n const [expanded, setExpanded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //При нажатии на кнопку копирования текста запроса\n const handleCopyClick = async () => {\n try {\n await navigator.clipboard.writeText(qry);\n setSnackBarMessage({\n text: `Текст запроса скопирован в буфер обмена`\n });\n } catch (e) {\n setSnackBarMessage({\n text: `Ошибка копирования текста запроса в буфер обмена: ${e.message}`,\n type: \"error\"\n });\n }\n };\n\n //При нажатии на кнопку развёртывания\n const handleExpandClick = () => setExpanded(!expanded);\n\n //При нажатии на кнопку отображения SQL запроса\n const handleShowSQLClick = () => setDisplaySQL(true);\n\n //При нажатии на кнопку сокрытия SQL запроса\n const handleCloseSQLClick = () => setDisplaySQL(false);\n\n //При закрытии всплывающего сообщения\n const handleSnackBarClose = () => setSnackBarMessage(SNACK_BAR_MESSAGE_INIT);\n\n //Расчет размеров тектовых полей\n const [qryRows, qryMsgRows] = expanded ? [15, 6] : [5, 3];\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (qry || qryMsg) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n color: qryMsg ? \"warning\" : \"default\",\n sx: STYLES.SQL_FAB,\n title: \"Показать текст SQL запроса\",\n onClick: handleShowSQLClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"join_left\")), displaySQL && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n open: true,\n onClose: handleCloseSQLClick,\n anchor: \"bottom\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n p: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n direction: \"row\",\n justifyContent: \"right\",\n spacing: 2\n }, qry && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleCopyClick,\n title: \"Скопировать текст запроса\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"content_copy\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleExpandClick,\n title: expanded ? \"Свернуть\" : \"Развернуть\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, expanded ? \"expand_more\" : \"expand_less\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleCloseSQLClick,\n title: _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.HIDE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"close\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n direction: \"column\",\n spacing: 2\n }, qry && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n label: \"Текст запроса\",\n multiline: true,\n fullWidth: true,\n value: qry,\n minRows: qryRows,\n maxRows: qryRows,\n variant: \"standard\",\n focused: true,\n inputProps: {\n sx: STYLES.SQL_TEXT_FIELD,\n disabled: true\n }\n }), qryMsg && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n label: \"Предупреждения\",\n color: \"warning\",\n multiline: true,\n fullWidth: true,\n value: qryMsg,\n minRows: qryMsgRows,\n maxRows: qryMsgRows,\n variant: \"standard\",\n focused: true,\n inputProps: {\n sx: STYLES.SQL_TEXT_FIELD,\n disabled: true\n }\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n open: Boolean(snackBarMessage.text),\n autoHideDuration: 3000,\n onClose: handleSnackBarClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n severity: snackBarMessage.type || \"success\",\n sx: STYLES.SNACKBAR_ALERT,\n onClose: handleSnackBarClose\n }, snackBarMessage.text)));\n};\n\n//Контроль свойств компонента - Область запроса\nQueryArea.propTypes = {\n qry: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n qryMsg: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector/query_area.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js": +/*!**********************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js ***! + \**********************************************************************************/ +/***/ ((__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 */ ArgIUDialog: () => (/* binding */ ArgIUDialog)\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 _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.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 ArgIUDialog = ({\n name = \"\",\n title = \"\",\n dataType = _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.NUMB,\n mandatory = 0,\n value = \"\",\n insert = true,\n onOk,\n onCancel\n}) => {\n //Собственное состояние - текущее состояние аргумента\n const [current, setCurrent] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n value,\n dataType\n });\n\n //Нажатие на кнопку \"Ok\"\n const handleOk = values => onOk && onOk({\n ...values\n });\n\n //Нажатие на кнопку \"Отмена\"\n const handleCancel = () => onCancel && onCancel();\n\n //При изменении значений в поле ввода\n const handleInputChange = (name, value) => {\n //Если поменяли тип данных - надо пересмотреть поля для ввода\n if (name === \"dataType\") {\n //Сохраним в состоянии новый тип данных и сбросим \"отладочное значение\", ведь оно зависит от типа данных (от этого состояния зависит свойство inputs, передаваемое в P8PDialog ниже)\n setCurrent({\n dataType: value,\n value: \"\"\n });\n //Мы сами пересчитали форму, туда придут новые настройки элементов ввода через свойство inputs, не надо делать пересчет состояния внутри диалога\n return true;\n }\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8PDialog, {\n title: `${insert === true ? _app_text__WEBPACK_IMPORTED_MODULE_2__.TITLES.INSERT : _app_text__WEBPACK_IMPORTED_MODULE_2__.TITLES.UPDATE} аргумента`,\n inputs: [{\n name: \"name\",\n value: name,\n label: \"Имя\",\n disabled: insert != true\n }, {\n name: \"title\",\n value: title,\n label: \"Приглашение\"\n }, {\n name: \"dataType\",\n value: current.dataType,\n label: \"Тип данных\",\n list: [{\n name: \"Строка\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.STR\n }, {\n name: \"Число\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.NUMB\n }, {\n name: \"Дата\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.DATE\n }]\n }, {\n name: \"mandatory\",\n value: mandatory,\n label: \"Обязательный\",\n list: [{\n name: \"Нет\",\n value: 0\n }, {\n name: \"Да\",\n value: 1\n }]\n }, {\n name: \"value\",\n value: current.value,\n label: \"Значение (для отладки)\",\n type: current.dataType === _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.NUMB ? \"number\" : current.dataType === _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.DATE ? \"date\" : \"text\"\n }],\n onOk: handleOk,\n onCancel: handleCancel,\n onInputChange: handleInputChange\n });\n};\n\n//Контроль свойств - Диалог добавления/исправления аргумента запроса\nArgIUDialog.propTypes = {\n name: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),\n title: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),\n dataType: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().number),\n mandatory: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().number),\n value: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),\n insert: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_args/args_list.js": +/*!******************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_args/args_list.js ***! + \******************************************************************************/ +/***/ ((__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 */ ArgsList: () => (/* binding */ ArgsList)\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 _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _argument_argument__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../argument/argument */ \"./app/panels/query_editor/components/argument/argument.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Список аргументов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n //Общие стили приложения\n //Аргумент запроса\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n LIST: {\n height: \"500px\",\n width: \"360px\",\n bgcolor: \"background.paper\",\n overflowY: \"auto\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_1__.APP_STYLES.SCROLL\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Список аргументов\nconst ArgsList = ({\n args = [],\n onSelect = null,\n onDelete = null\n} = {}) => {\n //При нажатии на элемент списка\n const handleItemClick = arg => onSelect && onSelect(arg);\n\n //При нажатии на удалении элемента списка\n const handleItemDeleteClick = (e, arg) => {\n e.stopPropagation();\n onDelete && onDelete(arg);\n };\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n sx: STYLES.LIST\n }, args && args.map((arg, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_argument_argument__WEBPACK_IMPORTED_MODULE_2__.Argument, {\n key: i,\n arg: arg,\n variant: _argument_argument__WEBPACK_IMPORTED_MODULE_2__.ARGUMENT_VARIANT.LIST_ITEM,\n onClick: handleItemClick,\n onDelete: handleItemDeleteClick\n })));\n};\n\n//Контроль свойств компонента - Список аргументов\nArgsList.propTypes = {\n args: prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf(_argument_argument__WEBPACK_IMPORTED_MODULE_2__.ARGUMENT_SHAPE),\n onSelect: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),\n onDelete: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_args/args_list.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_args/hooks.js": +/*!**************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_args/hooks.js ***! + \**************************************************************************/ +/***/ ((__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 */ useQueryArgs: () => (/* binding */ useQueryArgs)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../context/backend */ \"./app/context/backend.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\n//Работа с аргументами запроса\nconst useQueryArgs = query => {\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Добавление аргумента запроса\n const addArg = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (name, title, dataType, mandatory, value) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_OPT_ARG_ADD\",\n args: {\n NRN: query,\n SNAME: name,\n STITLE: title,\n NDATA_TYPE: dataType,\n NMANDATORY: mandatory,\n SVALUE: value\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Исправление аргумента запроса\n const editArg = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (name, title, dataType, mandatory, value) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_OPT_ARG_EDIT\",\n args: {\n NRN: query,\n SNAME: name,\n STITLE: title,\n NDATA_TYPE: dataType,\n NMANDATORY: mandatory,\n SVALUE: value\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Удаление аргумента запроса\n const removeArg = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async name => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_OPT_ARG_REMOVE\",\n args: {\n NRN: query,\n SNAME: name\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Возвращаем интерфейс хука\n return {\n addArg,\n editArg,\n removeArg\n };\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_args/hooks.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js": +/*!*****************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js ***! + \*****************************************************************************************/ +/***/ ((__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 */ InspectorQueryArguments: () => (/* binding */ InspectorQueryArguments)\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_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Card/Card.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardActionArea/CardActionArea.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardContent/CardContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/components/inspector_query_args/hooks.js\");\n/* harmony import */ var _query_args_dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./query_args_dialog */ \"./app/panels/query_editor/components/inspector_query_args/query_args_dialog.js\");\n/* harmony import */ var _argument_argument__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../argument/argument */ \"./app/panels/query_editor/components/argument/argument.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//-----------\n\n//Компонент инспектора - Аргументы запроса\nconst InspectorQueryArguments = ({\n query,\n args = [],\n onOptionsChanged = null\n}) => {\n //Собственное состояние - отображение диалога настройки состава аргументов\n const [openQueryArgsDialog, setOpenQueryArgsDialog] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Хук для взаимодействия с сервером\n const {\n addArg,\n editArg,\n removeArg\n } = (0,_hooks__WEBPACK_IMPORTED_MODULE_2__.useQueryArgs)(query);\n\n //Уведомление родителя об изменении свойств\n const notifyOptionsChanged = () => onOptionsChanged && onOptionsChanged();\n\n //При нажатии на настройку аргументов\n const handleSetup = () => setOpenQueryArgsDialog(true);\n\n //При добавлении аргумента\n const handleArgAdd = async (arg, cb) => {\n await addArg(arg.name, arg.title, arg.dataType, arg.mandatory, arg.value);\n cb && cb();\n notifyOptionsChanged();\n };\n\n //При изменении аргумента\n const handleArgEdit = async (arg, cb) => {\n await editArg(arg.name, arg.title, arg.dataType, arg.mandatory, arg.value);\n cb && cb();\n notifyOptionsChanged();\n };\n\n //При удалении аргумента\n const handleArgRemove = async arg => {\n await removeArg(arg.name);\n notifyOptionsChanged();\n };\n\n //Закрытие диалога настройки состава аргументов по \"Закрыть\"\n const handleQueryArgsDialogClose = () => setOpenQueryArgsDialog(false);\n\n //Расчет флага \"настроенности\"\n const configured = args && args.length > 0 ? true : false;\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, openQueryArgsDialog && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_query_args_dialog__WEBPACK_IMPORTED_MODULE_3__.QueryArgsDialog, {\n args: args,\n onArgAdd: handleArgAdd,\n onArgEdit: handleArgEdit,\n onArgRemove: handleArgRemove,\n onClose: handleQueryArgsDialogClose\n }), configured && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n variant: \"outlined\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onClick: handleSetup\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n direction: \"column\",\n spacing: 1\n }, args.map((arg, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_argument_argument__WEBPACK_IMPORTED_MODULE_4__.Argument, {\n key: i,\n arg: arg,\n variant: _argument_argument__WEBPACK_IMPORTED_MODULE_4__.ARGUMENT_VARIANT.CHIP\n })))))), !configured && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"build\"),\n onClick: handleSetup\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CONFIG));\n};\n\n//Контроль свойств компонента - Компонент инспектора - Аргументы запроса\nInspectorQueryArguments.propTypes = {\n query: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().number).isRequired,\n args: prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(_argument_argument__WEBPACK_IMPORTED_MODULE_4__.ARGUMENT_SHAPE),\n onOptionsChanged: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_args/query_args_dialog.js": +/*!**************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_args/query_args_dialog.js ***! + \**************************************************************************************/ +/***/ ((__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 */ QueryArgsDialog: () => (/* binding */ QueryArgsDialog)\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 _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.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 _context_messaging__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _argument_argument__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../argument/argument */ \"./app/panels/query_editor/components/argument/argument.js\");\n/* harmony import */ var _args_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./args_list */ \"./app/panels/query_editor/components/inspector_query_args/args_list.js\");\n/* harmony import */ var _arg_iu_dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./arg_iu_dialog */ \"./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.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 //Интерфейсные компоненты MUI\n //Контекст сообщений\n //Общие текстовые ресурсы приложения\n //Типовой диалог\n //Аргумент запроса\n //Список аргументов запроса\n //Диалог добавления/исправления аргумента\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог настройки аргументов запроса\nconst QueryArgsDialog = ({\n args,\n onArgAdd,\n onArgEdit,\n onArgRemove,\n onClose\n}) => {\n //Собственное состояние - изменяемый аргумент\n const [modArg, setModArg] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Подключение к контексту сообщений\n const {\n showMsgWarn\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_1__[\"MessagingСtx\"]);\n\n //Нажатие на кнопку \"Закрыть\"\n const handleClose = () => onClose && onClose();\n\n //При выборе аргумента в списке\n const handleArgSelect = arg => setModArg({\n ...arg\n });\n\n //При добавлении аргумента\n const handleArgAdd = () => setModArg(true);\n\n //Удаление аргумента\n const handleArgRemove = arg => showMsgWarn(\"Удалить аргумент?\", () => onArgRemove && onArgRemove(arg));\n\n //При закрытии диалога добавления/исправления по \"ОК\"\n const handleIUDialogOk = async values => {\n if (modArg === true) onArgAdd && onArgAdd(values, handleIUDialogCancel);else onArgEdit && onArgEdit(values, handleIUDialogCancel);\n };\n\n //При закрытии диалога добавления/исправления по \"Отмена\"\n const handleIUDialogCancel = () => setModArg(null);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_3__.P8PDialog, {\n title: `Аргументы запроса`,\n onClose: handleClose\n }, modArg && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_arg_iu_dialog__WEBPACK_IMPORTED_MODULE_6__.ArgIUDialog, _extends({}, modArg === true ? {} : modArg, {\n insert: modArg === true,\n onOk: handleIUDialogOk,\n onCancel: handleIUDialogCancel\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"add\"),\n onClick: handleArgAdd\n }, _app_text__WEBPACK_IMPORTED_MODULE_2__.BUTTONS.INSERT), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_args_list__WEBPACK_IMPORTED_MODULE_5__.ArgsList, {\n args: args,\n onSelect: handleArgSelect,\n onDelete: handleArgRemove\n }));\n};\n\n//Контроль свойств - Диалог настройки аргументов запроса\nQueryArgsDialog.propTypes = {\n args: prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf(_argument_argument__WEBPACK_IMPORTED_MODULE_4__.ARGUMENT_SHAPE),\n onArgAdd: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n onArgEdit: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n onArgRemove: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_args/query_args_dialog.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js": +/*!*************************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js ***! + \*************************************************************************************************/ +/***/ ((__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 */ COMPONENT_TYPE: () => (/* binding */ COMPONENT_TYPE),\n/* harmony export */ CondComponentSelectButton: () => (/* binding */ CondComponentSelectButton)\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 _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Menu/Menu.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemIcon/ListItemIcon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/editors/p8p_editor_sub_header */ \"./app/components/editors/p8p_editor_sub_header.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Кнопка выбора компонента условия\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n //Подзаголовок\n\n//---------\n//Константы\n//---------\n\n//Типы компонентов\nconst COMPONENT_TYPE = {\n DIVIDER: \"divider\",\n ITEM: \"item\"\n};\n\n//Высота элемента меню для компонента\nconst ITEM_HEIGHT = 48;\n\n//Количество одновременно отображаемых элементов (остальные - прокруткой)\nconst ITEM_DSPL_COUNT = 10;\n\n//Стили\nconst STYLES = {\n MENU_PAPER: {\n maxHeight: ITEM_HEIGHT * ITEM_DSPL_COUNT,\n maxWidth: \"400px\",\n overflow: \"auto\"\n }\n};\n\n//-----------------------\n//Вспомогательные функции\n//-----------------------\n\n//Проверка строкового свойства, обязательного для компонента типа \"ITEM\"\nconst checkReqStringPropForItem = (props, propName, componentName) => {\n if (props.type === COMPONENT_TYPE.ITEM && !props[propName]) {\n return new Error(`Prop \\`${propName}\\` is required when \\`type\\` is \\`${COMPONENT_TYPE.ITEM}\\` in \\`${componentName}\\`.`);\n }\n if (props[propName] && typeof props[propName] !== \"string\" && !(props[propName] instanceof String)) {\n return new Error(`Prop \\`${propName}\\` must be a string`);\n }\n return null;\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Кнопка выбора компонента условия\nconst CondComponentSelectButton = ({\n caption,\n components = [],\n onSelect\n}) => {\n //Собственное состояние - элемент привязки меню\n const [anchorEl, setAnchorEl] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //При нажатии на кнопку\n const handleButtonClick = event => setAnchorEl(event.currentTarget);\n\n //При закрытии меню\n const handleClose = () => setAnchorEl(null);\n\n //При нажатии на элемент меню\n const handleComponentClick = component => {\n handleClose();\n onSelect && onSelect(component.value);\n };\n\n //Расчет флага открытия меню\n const open = Boolean(anchorEl);\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: handleButtonClick,\n endIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, open ? \"arrow_drop_up\" : \"arrow_drop_down\")\n }, caption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n anchorEl: anchorEl,\n open: open,\n onClose: handleClose,\n PaperProps: {\n style: STYLES.MENU_PAPER,\n //Импорт общесистемного JS-стиля не работает здесь, только через общесистемный CSS-класс\n className: \"scroll\"\n }\n }, components.map((component, i) => component.type === COMPONENT_TYPE.DIVIDER ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_1__.P8PEditorSubHeader, {\n key: i,\n title: component.title,\n paddingTop: 0\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n key: i,\n onClick: () => handleComponentClick(component)\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_3__[\"default\"], {\n fontSize: \"small\"\n }, component.icon)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n direction: \"column\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n noWrap: true,\n variant: \"body2\",\n title: component.title\n }, component.title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n noWrap: true,\n variant: \"caption\",\n color: \"text.secondary\",\n title: component.name\n }, component.name))))));\n};\n\n//Контроль свойств - Кнопка выбора компонента условия\nCondComponentSelectButton.propTypes = {\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string).isRequired,\n components: prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_9___default().shape({\n type: prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOf(Object.values(COMPONENT_TYPE)).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string).isRequired,\n name: checkReqStringPropForItem,\n icon: checkReqStringPropForItem,\n value: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().any)\n })),\n onSelect: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js": +/*!*******************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js ***! + \*******************************************************************************************/ +/***/ ((__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 */ CondOperationButtons: () => (/* binding */ CondOperationButtons)\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_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ButtonGroup/ButtonGroup.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Кнопки операций условий отбора\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n\n//-----------\n//Тело модуля\n//-----------\n\n//Кнопки операций условий отбора\nconst CondOperationButtons = ({\n buttons = [],\n onClick\n}) => {\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n size: \"small\",\n variant: \"outlined\"\n }, buttons.map((button, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: i,\n onClick: () => onClick(button.value),\n title: button.title\n }, button.caption)));\n};\n\n//Контроль свойств - Кнопки операций условий отбора\nCondOperationButtons.propTypes = {\n buttons: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n value: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired\n })),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_cond/hooks.js": +/*!**************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_cond/hooks.js ***! + \**************************************************************************/ +/***/ ((__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 */ useQueryConditions: () => (/* binding */ useQueryConditions)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../context/backend */ \"./app/context/backend.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Пользовательские хуки для работы с условиями отбора запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n\n//-----------\n//Тело модуля\n//-----------\n\n//Работа с условиями отбора запроса\nconst useQueryConditions = query => {\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Установка условий отбора в запросе\n const setCond = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async cond => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_OPT_COND_SET\",\n args: {\n NRN: query,\n SCOND: cond\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Возвращаем интерфейс хука\n return {\n setCond\n };\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_cond/hooks.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js": +/*!*****************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js ***! + \*****************************************************************************************/ +/***/ ((__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 */ InspectorQueryConditions: () => (/* binding */ InspectorQueryConditions)\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_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Card/Card.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardActionArea/CardActionArea.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardContent/CardContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Chip/Chip.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.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 _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_editors_p8p_editors_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../components/editors/p8p_editors_common */ \"./app/components/editors/p8p_editors_common.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/components/inspector_query_cond/hooks.js\");\n/* harmony import */ var _query_cond_dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./query_cond_dialog */ \"./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/* harmony import */ var _argument_argument__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../argument/argument */ \"./app/panels/query_editor/components/argument/argument.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//---------\n//Константы\n//---------\n\n//Общий стиль многострочного компонента \"Chip\"\nconst COMMON_MULTILINE_CHIP = _components_editors_p8p_editors_common__WEBPACK_IMPORTED_MODULE_2__.STYLES.CHIP(true, true);\n\n//Стили\nconst STYLES = {\n COND_CHIP: {\n ...COMMON_MULTILINE_CHIP,\n \"& .MuiChip-label\": {\n ...COMMON_MULTILINE_CHIP[\"& .MuiChip-label\"],\n paddingTop: \"5px\",\n paddingBottom: \"5px\"\n }\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Компонент инспектора - Условия отбора запроса\nconst InspectorQueryConditions = ({\n query,\n cond,\n entities = [],\n args = [],\n onOptionsChanged\n}) => {\n //Собственное состояние - отображение диалога настройки условий отбора\n const [openQueryCondDialog, setOpenQueryCondDialog] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Работа со связями на сервере\n const {\n setCond\n } = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useQueryConditions)(query);\n\n //Уведомление родителя об изменении свойств\n const notifyOptionsChanged = () => onOptionsChanged && onOptionsChanged();\n\n //При нажатии на кнопку настройки условий отбора\n const handleSetup = () => setOpenQueryCondDialog(true);\n\n //При закрытии диалога изменений условий отбора по \"ОК\"\n const handleQueryCondDialogOk = async cond => {\n await setCond(cond);\n notifyOptionsChanged();\n setOpenQueryCondDialog(false);\n };\n\n //При закрытии диалога изменений условий отбора по \"Отмена\"\n const handleQueryCondDialogCancel = () => setOpenQueryCondDialog(false);\n\n //Расчет флага сконфигурированности\n const configured = cond ? true : false;\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, openQueryCondDialog && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_query_cond_dialog__WEBPACK_IMPORTED_MODULE_4__.QueryCondDialog, {\n cond: cond,\n entities: entities,\n args: args,\n onOk: handleQueryCondDialogOk,\n onCancel: handleQueryCondDialogCancel\n }), configured && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"outlined\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleSetup\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n direction: \"column\",\n spacing: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.COND_CHIP,\n label: cond\n }))))), !configured && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"build\"),\n onClick: handleSetup\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CONFIG));\n};\n\n//Контроль свойств компонента - Компонент инспектора - Условия отбора запроса\nInspectorQueryConditions.propTypes = {\n query: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().number).isRequired,\n cond: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string),\n entities: prop_types__WEBPACK_IMPORTED_MODULE_14___default().arrayOf(_entity_entity__WEBPACK_IMPORTED_MODULE_5__.ENTITY_SHAPE),\n args: prop_types__WEBPACK_IMPORTED_MODULE_14___default().arrayOf(_argument_argument__WEBPACK_IMPORTED_MODULE_6__.ARGUMENT_SHAPE),\n onOptionsChanged: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js": +/*!**************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js ***! + \**************************************************************************************/ +/***/ ((__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 */ QueryCondDialog: () => (/* binding */ QueryCondDialog)\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_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/* harmony import */ var _argument_argument__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../argument/argument */ \"./app/panels/query_editor/components/argument/argument.js\");\n/* harmony import */ var _cond_operation_buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./cond_operation_buttons */ \"./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js\");\n/* harmony import */ var _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./cond_component_select_button */ \"./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Диалог настройки условий отбора запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n //Типовой диалог\n //Общие ресурсы и константы редактора запросов\n //Описание сущности\n //Описание аргумента запроса\n //Кнопки операций условия отбора\n //Кнопка выбора компонента условия\n\n//---------\n//Константы\n//---------\n\n//Иконки\nconst ICONS = {\n ..._common__WEBPACK_IMPORTED_MODULE_2__.DATA_TYPE_ICON,\n DEFAULT: \"category\"\n};\n\n//Стили\nconst STYLE = {\n BUTTONS_STACK: {\n width: \"550px\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог настройки условий отбора запроса\nconst QueryCondDialog = ({\n cond,\n entities,\n args,\n onOk,\n onCancel\n}) => {\n //Собственное состояние - условия отбора\n const [conditions, setConditions] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(cond || \"\");\n\n //Ссылка на элемент ввода условия\n const coditionInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n //Перемещение курсора в конец поля ввода условия\n const moveCondCursorToEnd = () => {\n if (coditionInputRef.current) {\n const length = coditionInputRef.current.value.length;\n coditionInputRef.current.setSelectionRange(length, length);\n coditionInputRef.current.focus();\n }\n };\n\n //Нажатие на кнопку \"ОК\"\n const handleOk = () => onOk && onOk(conditions);\n\n //Нажатие на кнопку \"Отмена\"\n const handleCancel = () => onCancel && onCancel();\n\n //При изменении условия через компонент\n const handleChange = e => setConditions(e.target.value);\n\n //При выборе компонента условия\n const handleComponentSelected = value => {\n setConditions(pv => pv + value);\n moveCondCursorToEnd();\n };\n\n //При нажатии на кнопку операции\n const handleOperationButtonClick = value => {\n setConditions(pv => pv + value);\n moveCondCursorToEnd();\n };\n\n //При нажатии на кнопку очистки условий\n const handleClearClick = () => setConditions(\"\");\n\n //При подмонтировании компонента\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Перевод курсора в конец обёрнут в setTimeout по тому, что Input подмонтируется позднее диалога (он внутри children)\n setTimeout(moveCondCursorToEnd, 100);\n }, []);\n\n //Доступные атрибуты сущностей запроса\n const entsAttributes = entities && entities?.length > 0 ? entities.reduce((components, e) => [...components, {\n type: _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.DIVIDER,\n title: e.title\n }, ...e.attrs.map(a => ({\n type: _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.ITEM,\n title: a.title,\n name: a.name,\n value: a.id,\n icon: ICONS[a.dataType] || ICONS.DEFAULT\n }))], []) : [];\n const entsAttributesExists = entsAttributes.find(a => a.type === _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.ITEM) ? true : false;\n\n //Доступные аргументы запроса\n const queryArguments = args && args?.length > 0 ? args.reduce((components, a) => [...components, {\n type: _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.ITEM,\n title: a.title,\n name: a.name,\n value: `:${a.name}`,\n icon: ICONS[a.dataType] || ICONS.DEFAULT\n }], []) : [];\n const queryArgumentsExists = queryArguments.length > 0 ? true : false;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8PDialog, {\n title: `Условия отбора запроса`,\n onOk: handleOk,\n onCancel: handleCancel\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLE.BUTTONS_STACK,\n direction: \"row\",\n spacing: 1,\n pb: 1\n }, entsAttributesExists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.CondComponentSelectButton, {\n caption: \"Атрибут сущности\",\n components: entsAttributes,\n onSelect: handleComponentSelected\n }), queryArgumentsExists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.CondComponentSelectButton, {\n caption: \"Аргумент запроса\",\n components: queryArguments,\n onSelect: handleComponentSelected\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleClearClick\n }, \"\\u041E\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u044C\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLE.BUTTONS_STACK,\n direction: \"row\",\n spacing: 1,\n pb: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_operation_buttons__WEBPACK_IMPORTED_MODULE_5__.CondOperationButtons, {\n buttons: [{\n caption: \"=\",\n title: \"Равно\",\n value: \" = \"\n }, {\n caption: \"<>\",\n title: \"Не равно\",\n value: \" <> \"\n }, {\n caption: \">\",\n title: \"Больше\",\n value: \" > \"\n }, {\n caption: \">=\",\n title: \"Больше или равно\",\n value: \" >= \"\n }, {\n caption: \"<\",\n title: \"Меньше\",\n value: \" < \"\n }, {\n caption: \"<=\",\n title: \"Меньше или равно\",\n value: \" <= \"\n }, {\n caption: \"(\",\n title: \"Открывающая скобка\",\n value: \"(\"\n }, {\n caption: \")\",\n title: \"Закрывающая скобка\",\n value: \")\"\n }],\n onClick: handleOperationButtonClick\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_operation_buttons__WEBPACK_IMPORTED_MODULE_5__.CondOperationButtons, {\n buttons: [{\n caption: \"И\",\n title: \"Логическое умножение (конъюнкция)\",\n value: \" and \"\n }, {\n caption: \"ИЛИ\",\n title: \"Логическое сложение (дизъюнкция)\",\n value: \" or \"\n }, {\n caption: \"НЕ\",\n title: \"Отрицание (инверсия)\",\n value: \" not \"\n }, {\n caption: \"B\",\n title: \"Входит в диапазон\",\n value: \" in (0, 1, ...) \"\n }],\n onClick: handleOperationButtonClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n inputRef: coditionInputRef,\n focused: true,\n autoFocus: true,\n value: conditions,\n placeholder: \"Настройте условия отбора...\",\n multiline: true,\n minRows: 10,\n fullWidth: true,\n onChange: handleChange\n }));\n};\n\n//Контроль свойств - Диалог настройки условий отбора запроса\nQueryCondDialog.propTypes = {\n cond: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func),\n entities: prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(_entity_entity__WEBPACK_IMPORTED_MODULE_3__.ENTITY_SHAPE),\n args: prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(_argument_argument__WEBPACK_IMPORTED_MODULE_4__.ARGUMENT_SHAPE),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_ents/attr_setup_dialog.js": +/*!**************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_ents/attr_setup_dialog.js ***! + \**************************************************************************************/ +/***/ ((__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 */ AttrSetupDialog: () => (/* binding */ AttrSetupDialog)\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_5__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.js\");\n/* harmony import */ var _attribute_attribute__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../attribute/attribute */ \"./app/panels/query_editor/components/attribute/attribute.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\n//Диалог добавления/исправления аргумента запроса\nconst AttrSetupDialog = ({\n attr,\n onOk,\n onCancel\n}) => {\n //Достанем необходимое из атрибута\n const {\n name,\n title,\n dataType,\n alias\n } = attr;\n\n //Нажатие на кнопку \"Ok\"\n const handleOk = values => onOk && onOk({\n ...values\n });\n\n //Нажатие на кнопку \"Отмена\"\n const handleCancel = () => onCancel && onCancel();\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8PDialog, {\n title: `${_app_text__WEBPACK_IMPORTED_MODULE_2__.TITLES.CONFIG} атрибута \"${title}\"`,\n inputs: [{\n name: \"name\",\n value: name,\n label: \"Имя\",\n disabled: true\n }, {\n name: \"title\",\n value: title,\n label: \"Наименование\",\n disabled: true\n }, {\n name: \"dataType\",\n value: dataType,\n label: \"Тип данных\",\n list: [{\n name: \"Строка\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.STR\n }, {\n name: \"Число\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.NUMB\n }, {\n name: \"Дата\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.DATE\n }],\n disabled: true\n }, {\n name: \"alias\",\n value: alias,\n label: \"Псевдоним\"\n }],\n onOk: handleOk,\n onCancel: handleCancel\n });\n};\n\n//Контроль свойств - Диалог настройки атрибута сущности\nAttrSetupDialog.propTypes = {\n attr: _attribute_attribute__WEBPACK_IMPORTED_MODULE_4__.ATTRIBUTE_SHAPE.isRequired,\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_ents/attr_setup_dialog.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_ents/attrs_list.js": +/*!*******************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_ents/attrs_list.js ***! + \*******************************************************************************/ +/***/ ((__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 */ AttrsList: () => (/* binding */ AttrsList)\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_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItem/ListItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemIcon/ListItemIcon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _attribute_attribute__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../attribute/attribute */ \"./app/panels/query_editor/components/attribute/attribute.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 //Интерфейсные компоненты MUI\n //Атрибут сущности\n //Общие стили приложения\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n SMALL_TOOL_ICON: {\n fontSize: 20\n },\n LIST: {\n height: \"100%\",\n width: \"100%\",\n bgcolor: \"background.paper\",\n overflowY: \"auto\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_2__.APP_STYLES.SCROLL\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Список атрибутов сущности\nconst AttrsList = ({\n attrs = [],\n onSelect = null,\n onShow = null,\n onSetup = null\n} = {}) => {\n //При выборе элемента списка\n const handleSelectClick = attr => {\n onSelect && onSelect(attr);\n };\n\n //При нажатии на кнопку изменения видимости атрибута\n const handleShowClick = (e, attr) => {\n e.stopPropagation();\n onShow && onShow(attr);\n };\n\n //При нажатии на кнопку настройки атрибута\n const handleSetupClick = (e, attr) => {\n e.stopPropagation();\n onSetup && onSetup(attr);\n };\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n sx: STYLES.LIST\n }, attrs && attrs.map((attr, i) => {\n const [selected, selectedTitle] = (0,_attribute_attribute__WEBPACK_IMPORTED_MODULE_1__.attrGetUse)(attr, true);\n const [showTitle, showIcon] = (0,_attribute_attribute__WEBPACK_IMPORTED_MODULE_1__.attrGetShow)(attr, true);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n key: i,\n disablePadding: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n onClick: () => handleSelectClick(attr),\n selected: selected,\n dense: true\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 edge: \"start\",\n checked: selected,\n tabIndex: -1,\n disableRipple: true,\n title: selectedTitle\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n primary: attr.title,\n secondaryTypographyProps: {\n component: \"div\"\n },\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n direction: \"column\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n variant: \"caption\"\n }, `${attr.name}${attr.alias ? ` (${attr.alias})` : \"\"}`))\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: e => handleShowClick(e, attr),\n title: showTitle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, showIcon)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: e => handleSetupClick(e, attr),\n title: \"Настроить\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, \"settings\")))));\n }));\n};\n\n//Контроль свойств компонента - Список атрибутов сущности\nAttrsList.propTypes = {\n attrs: prop_types__WEBPACK_IMPORTED_MODULE_13___default().arrayOf(_attribute_attribute__WEBPACK_IMPORTED_MODULE_1__.ATTRIBUTE_SHAPE),\n onSelect: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func),\n onShow: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func),\n onSetup: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_ents/attrs_list.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_ents/entity_add_dialog.js": +/*!**************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_ents/entity_add_dialog.js ***! + \**************************************************************************************/ +/***/ ((__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 */ EntityAddDialog: () => (/* binding */ EntityAddDialog)\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_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.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/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _components_editors_p8p_component_inline_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../components/editors/p8p_component_inline_message */ \"./app/components/editors/p8p_component_inline_message.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _ents_list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ents_list */ \"./app/panels/query_editor/components/inspector_query_ents/ents_list.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/components/inspector_query_ents/hooks.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Диалог добавления сущности запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы MUI\n //Типовой диалог\n //Типовое встраиваемое сообщение\n //Общие текстовые ресурсы приложения\n //Список сущостей\n //Хуки для работы с сущностями\n\n//---------\n//Константы\n//---------\n\n//Максимальная длина поисковой фразы для начала поиска (символов)\nconst FILTER_MIN_LENGTH = 3;\n\n//Таймаут ожидания ввода поисковой фразы до начала поиска на сервере (мс)\nconst FILTER_TIMEOUT = 1000;\n\n//Стили\nconst STYLES = {\n LIST_CONTAINER: {\n width: \"100%\",\n height: \"500px\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог добавления сущности запроса\nconst EntityAddDialog = ({\n onSelect,\n onClose\n}) => {\n //Собственное состояние - фильтр сущностей\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\");\n\n //Значение для отложенного поиска\n const debouncedFilter = (0,_hooks__WEBPACK_IMPORTED_MODULE_5__.useDebounce)(filter, FILTER_TIMEOUT);\n\n //Доступные сущности\n const [ents] = (0,_hooks__WEBPACK_IMPORTED_MODULE_5__.useEntities)(debouncedFilter, FILTER_MIN_LENGTH);\n\n //При выборе сущности в списке\n const handleSelect = ent => onSelect && onSelect({\n ...ent\n });\n\n //Нажатие на кнопку \"Закыть\"\n const handleClose = () => onClose && onClose();\n\n //При изменении значения фильтра\n const handleFilterChange = e => setFilter(e.target.value);\n\n //При очистке фильтра\n const handleFilterClear = () => setFilter(\"\");\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8PDialog, {\n title: `${_app_text__WEBPACK_IMPORTED_MODULE_3__.TITLES.INSERT} сущности`,\n width: _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8P_DIALOG_WIDTH.SM,\n fullWidth: true,\n onClose: handleClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n margin: \"normal\",\n variant: \"standard\",\n fullWidth: true,\n placeholder: \"Поиск сущности...\",\n value: filter,\n onChange: handleFilterChange,\n InputProps: {\n startAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n position: \"start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"search\")),\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: handleFilterClear\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"clear\")))\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.LIST_CONTAINER,\n justifyContent: \"center\",\n alignItems: \"center\",\n display: \"flex\"\n }, ents && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ents_list__WEBPACK_IMPORTED_MODULE_4__.EntsList, {\n ents: ents,\n onSelect: handleSelect\n }), !ents && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_component_inline_message__WEBPACK_IMPORTED_MODULE_2__.P8PComponentInlineMessage, {\n name: \"Нет данных, соответствующих фильтру\",\n message: filter || String(filter).length > FILTER_MIN_LENGTH ? \"Измените значение фильтра для повторного поиска\" : `Начните ввод в строку поиска (не менее ${FILTER_MIN_LENGTH} символов)`\n })));\n};\n\n//Контроль свойств - Диалог добавления сущности запроса\nEntityAddDialog.propTypes = {\n onSelect: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func),\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_ents/entity_add_dialog.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_ents/entity_attrs_dialog.js": +/*!****************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_ents/entity_attrs_dialog.js ***! + \****************************************************************************************/ +/***/ ((__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 */ EntityAttrsDialog: () => (/* binding */ EntityAttrsDialog)\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_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.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/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _components_editors_p8p_component_inline_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../components/editors/p8p_component_inline_message */ \"./app/components/editors/p8p_component_inline_message.js\");\n/* harmony import */ var _attrs_list__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./attrs_list */ \"./app/panels/query_editor/components/inspector_query_ents/attrs_list.js\");\n/* harmony import */ var _attr_setup_dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./attr_setup_dialog */ \"./app/panels/query_editor/components/inspector_query_ents/attr_setup_dialog.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/components/inspector_query_ents/hooks.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Диалог настройки атрибутов сущности\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы MUI\n //Типовой диалог\n //Типовое встраиваемое сообщение\n //Список атрибутов сущности\n //Диалог настройки атрибута\n //Хуки диалога настройки атрибутов сущности\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n LIST_CONTAINER: {\n width: \"100%\",\n height: \"500px\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог настройки атрибутов сущности\nconst EntityAttrsDialog = ({\n query,\n id,\n title,\n onOk,\n onCancel\n}) => {\n //Собственное состояние - фильтр атрибутов\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\");\n\n //Собственное состояние - список атрибутов\n const [attrs, setAttrs] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Собственное состояние - настраиваемый атрибут\n const [setupAttr, setSetupAttr] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Хук для взаимодействия с сервером\n const [srvAttrs, saveAttrs] = (0,_hooks__WEBPACK_IMPORTED_MODULE_5__.useEntityAttrs)(query, id);\n\n //Нажатие на кнопку \"Ok\"\n const handleOk = async () => {\n await saveAttrs(attrs);\n onOk && onOk();\n };\n\n //Нажатие на кнопку \"Отмена\"\n const handleCancel = () => onCancel && onCancel();\n\n //Выбор/исключение атрибута из запроса\n const handleAttrSelect = attr => setAttrs(attrs.map(a => ({\n ...(a.id === attr.id ? {\n ...a,\n use: a.use === 1 ? 0 : 1,\n show: a.use === 1 ? 0 : a.show\n } : a)\n })));\n\n //Отображение/сокрытие атрибута в запросе\n const handleAttrShow = attr => setAttrs(attrs.map(a => ({\n ...(a.id === attr.id ? {\n ...a,\n show: a.show === 1 ? 0 : 1,\n use: a.show === 0 ? 1 : a.use\n } : a)\n })));\n\n //Настройка атрибута\n const handleAttrSetup = attr => setSetupAttr({\n ...attr\n });\n\n //При закрытии диалога настройки атрибута по \"ОК\"\n const handleAttrSetupOk = values => {\n setAttrs(attrs.map(a => ({\n ...(a.id === setupAttr.id ? {\n ...a,\n use: 1,\n alias: values.alias\n } : a)\n })));\n setSetupAttr(null);\n };\n const handleAttrSetupCancel = () => setSetupAttr(null);\n\n //При изменении значения фильтра\n const handleFilterChange = e => setFilter(e.target.value);\n\n //При очистке фильтра\n const handleFilterClear = () => setFilter(\"\");\n\n //При загрузке данных с сервера\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (srvAttrs) setAttrs(srvAttrs.map(srvAttr => ({\n ...srvAttr\n })));\n }, [srvAttrs]);\n\n //Рег. выражение для фильтра\n const filterRegExp = filter ? new RegExp(filter, \"i\") : null;\n\n //Отфильтрованные для отображения атрибуты\n const filteredAttrs = attrs.filter(attr => filterRegExp ? filterRegExp.test(attr.name) || filterRegExp.test(attr.title) : true);\n\n //Флаг отображения списка атрибутов\n const displayAttrsList = attrs.length == 0 ? null : filteredAttrs.length > 0 ? true : false;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8PDialog, {\n title: `Атрибуты сущности \"${title}\"`,\n width: _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8P_DIALOG_WIDTH.SM,\n fullWidth: true,\n onOk: handleOk,\n onCancel: handleCancel\n }, setupAttr && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_attr_setup_dialog__WEBPACK_IMPORTED_MODULE_4__.AttrSetupDialog, {\n attr: setupAttr,\n onOk: handleAttrSetupOk,\n onCancel: handleAttrSetupCancel\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n margin: \"normal\",\n variant: \"standard\",\n fullWidth: true,\n placeholder: \"Поиск атрибута...\",\n value: filter,\n onChange: handleFilterChange,\n InputProps: {\n startAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n position: \"start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"search\")),\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: handleFilterClear\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"clear\")))\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.LIST_CONTAINER,\n justifyContent: \"center\",\n alignItems: \"center\",\n display: \"flex\"\n }, displayAttrsList === true && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_attrs_list__WEBPACK_IMPORTED_MODULE_3__.AttrsList, {\n attrs: filteredAttrs,\n filter: filter,\n onSelect: handleAttrSelect,\n onShow: handleAttrShow,\n onSetup: handleAttrSetup\n }), displayAttrsList === false && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_component_inline_message__WEBPACK_IMPORTED_MODULE_2__.P8PComponentInlineMessage, {\n name: \"Нет данных, соответствующих фильтру\",\n message: \"Измените значение фильтра для повторного поиска\"\n })));\n};\n\n//Контроль свойств - Диалог настройки атрибутов сущности\nEntityAttrsDialog.propTypes = {\n query: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().number).isRequired,\n id: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string).isRequired,\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_ents/entity_attrs_dialog.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_ents/ents_list.js": +/*!******************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_ents/ents_list.js ***! + \******************************************************************************/ +/***/ ((__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 */ EntsList: () => (/* binding */ EntsList)\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 _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Список сущностей\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n //Общие стили приложения\n //Сущности\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n LIST: {\n height: \"100%\",\n width: \"100%\",\n bgcolor: \"background.paper\",\n overflowY: \"auto\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_1__.APP_STYLES.SCROLL\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Список сущностей\nconst EntsList = ({\n ents = [],\n onSelect = null\n} = {}) => {\n //При нажатии на элемент списка\n const handleItemClick = ent => onSelect && onSelect(ent);\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n sx: STYLES.LIST\n }, ents && ents.map((ent, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_entity_entity__WEBPACK_IMPORTED_MODULE_2__.Entity, {\n key: i,\n data: ent,\n variant: _entity_entity__WEBPACK_IMPORTED_MODULE_2__.ENTITY_VARIANT.LIST_ITEM,\n onClick: handleItemClick\n })));\n};\n\n//Контроль свойств компонента - Список сущностей\nEntsList.propTypes = {\n ents: prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf(_entity_entity__WEBPACK_IMPORTED_MODULE_2__.ENTITY_BRIEF_SHAPE),\n onSelect: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_ents/ents_list.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_ents/hooks.js": +/*!**************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_ents/hooks.js ***! + \**************************************************************************/ +/***/ ((__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 */ useDebounce: () => (/* binding */ useDebounce),\n/* harmony export */ useEntities: () => (/* binding */ useEntities),\n/* harmony export */ useEntityAttrs: () => (/* binding */ useEntityAttrs),\n/* harmony export */ useQueryEntities: () => (/* binding */ useQueryEntities)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../core/utils */ \"./app/core/utils.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Пользовательские хуки для работы с сущностями\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n //Вспомогательные функции\n\n//-----------\n//Тело модуля\n//-----------\n\n//Работа с сущностями системы\nconst useEntities = (filter, minFilterLen) => {\n //Контроллер для прерывания запросов\n const abortController = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n //Собственное состояние - флаг загрузки\n const [isLoading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг необходимости обновления\n const [refresh, setRefresh] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Собственное состояние - данные\n const [data, setData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Обновление данных\n const doRefresh = () => setRefresh(true);\n\n //При необходимости получить/обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных с сервера\n const loadData = async () => {\n try {\n setLoading(true);\n abortController.current?.abort?.();\n abortController.current = new AbortController();\n const data = await executeStored({\n stored: \"PKG_P8PANELS_QE.ENTITY_LIST\",\n args: {\n SSEARCH: filter\n },\n respArg: \"COUT\",\n isArray: name => [\"XENT\"].includes(name),\n attributeValueProcessor: (name, val) => [\"name\", \"title\"].includes(name) ? undefined : val,\n loader: false,\n signal: abortController.current.signal\n });\n setData(data?.XENTS?.XENT || null);\n } finally {\n setRefresh(false);\n setLoading(false);\n }\n };\n //Если надо обновить\n if (refresh) {\n //Если фильтр задан и он нас удовлетворяет - получим данные\n if (filter && String(filter).length >= minFilterLen) loadData();\n //Нет фильтра - нет данных\n else {\n setData(null);\n }\n }\n //Сбрасываем запрос при смене зависимостей или отмонтировании\n return () => abortController.current?.abort?.();\n }, [refresh, filter, minFilterLen, executeStored]);\n\n //При изменении входных свойств - поднимаем флаг обновления\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setRefresh(true), [filter, minFilterLen]);\n\n //Возвращаем интерфейс хука\n return [data, doRefresh, isLoading];\n};\n\n//Работа с сущностями запроса\nconst useQueryEntities = query => {\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Добавление сущности в запрос\n const addEnt = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (name, type) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_ENT_ADD\",\n args: {\n NRN: query,\n SNAME: name,\n STYPE: type\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Удаление сущности из запроса\n const removeEnt = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ent => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_ENT_REMOVE\",\n args: {\n NRN: query,\n SID: ent\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Сохранение координат сущности на диаграммем\n const setEntPosition = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (ent, x, y) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_ENT_POSITION_SET\",\n args: {\n NRN: query,\n SID: ent,\n NX: x,\n NY: y\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Возвращаем интерфейс хука\n return {\n addEnt,\n removeEnt,\n setEntPosition\n };\n};\n\n//Работа с атрибутами сущности\nconst useEntityAttrs = (query, entity) => {\n //Собственное состояние - флаг загрузки\n const [isLoading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг необходимости обновления\n const [refresh, setRefresh] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Собственное состояние - данные\n const [data, setData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Обновление данных\n const doRefresh = () => setRefresh(true);\n\n //Установка атрибутов сущности\n const setAttrs = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async attrs => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_ENT_ATTRS_SET\",\n args: {\n NRN: query,\n SID: entity,\n CATTRS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.object2Base64XML)(attrs, {\n arrayNodeName: \"XATTR\",\n ignoreAttributes: false,\n attributeNamePrefix: \"\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n },\n loader: false\n });\n }, [query, entity, executeStored, SERV_DATA_TYPE_CLOB]);\n\n //При необходимости получить/обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных с сервера\n const loadData = async () => {\n try {\n setLoading(true);\n const data = await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_ENT_ATTRS_GET\",\n args: {\n NRN: query,\n SID: entity\n },\n respArg: \"COUT\",\n isArray: name => [\"XATTR\"].includes(name),\n attributeValueProcessor: (name, val) => [\"name\", \"title\", \"agg\"].includes(name) ? undefined : val,\n loader: true\n });\n setData(data?.XATTRS?.XATTR || []);\n } finally {\n setRefresh(false);\n setLoading(false);\n }\n };\n //Если надо обновить\n if (refresh)\n //Получим данные\n loadData();\n }, [refresh, query, entity, executeStored]);\n\n //Возвращаем интерфейс хука\n return [data, setAttrs, doRefresh, isLoading];\n};\n\n//Отложенное значение\nconst useDebounce = (value, delay) => {\n //Собственное состояние\n const [debouncedValue, setDebouncedValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(value);\n\n //При изменении интервала или значения\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Взводим таймер\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n //Сбрасываем таймер при отмонтировании или изменении зависимостей\n return () => clearTimeout(handler);\n }, [value, delay]);\n\n //Возвращаем отложенное значение\n return debouncedValue;\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_ents/hooks.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js": +/*!*****************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js ***! + \*****************************************************************************************/ +/***/ ((__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 */ InspectorQueryEntities: () => (/* binding */ InspectorQueryEntities)\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_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../components/editors/p8p_editor_sub_header */ \"./app/components/editors/p8p_editor_sub_header.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/* harmony import */ var _entity_add_dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./entity_add_dialog */ \"./app/panels/query_editor/components/inspector_query_ents/entity_add_dialog.js\");\n/* harmony import */ var _entity_attrs_dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./entity_attrs_dialog */ \"./app/panels/query_editor/components/inspector_query_ents/entity_attrs_dialog.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/components/inspector_query_ents/hooks.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 InspectorQueryEntities = ({\n query,\n entity,\n onOptionsChanged\n}) => {\n //Отображение диалога добавления сущности\n const [openEntityAddDialog, setOpenEntityAddDialog] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Отображение диалога настройки атрибутов сущности\n const [openEntityAttrsDialog, setOpenEntityAttrsDialog] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Работа с сущностями на сервере\n const {\n addEnt,\n removeEnt\n } = (0,_hooks__WEBPACK_IMPORTED_MODULE_7__.useQueryEntities)(query);\n\n //Подключение к контексту сообщений\n const {\n showMsgWarn\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_1__[\"MessagingСtx\"]);\n\n //Уведомление родителя об изменении свойств\n const notifyOptionsChanged = () => onOptionsChanged && onOptionsChanged();\n\n //При нажатии на кнопку добавлении сущности в запрос\n const handleEntityAddClick = () => setOpenEntityAddDialog(true);\n\n //При нажатии на кнопку настройки атрибутов сущности\n const handleEntityAttrsClick = () => setOpenEntityAttrsDialog(true);\n\n //При нажатии на кнопку даления сущности из запроса\n const handleEntityRemoveClick = () => showMsgWarn(`Удалить сущность \"${entity.title}\"?`, async () => {\n if (entity?.id) {\n await removeEnt(entity.id);\n notifyOptionsChanged();\n }\n });\n\n //Закрытие диалога добавления сущности по \"Закрыть\"\n const handleEntityAddDialogClose = () => setOpenEntityAddDialog(false);\n\n //Закрытие диалога добавления сущности по выбору сущности из списка\n const handleEntityAddDialogSelect = async ent => {\n await addEnt(ent.name, ent.type);\n setOpenEntityAddDialog(false);\n notifyOptionsChanged();\n };\n\n //Закрытие диалога настройки атрибутов сущности по \"Отмена\"\n const handleEntityAttrsDialogCancel = () => setOpenEntityAttrsDialog(false);\n\n //Закрытие диалога настройки атрибутов сущности по \"ОК\"\n const handleEntityAttrsDialogOk = () => {\n notifyOptionsChanged();\n setOpenEntityAttrsDialog();\n };\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, openEntityAddDialog && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_entity_add_dialog__WEBPACK_IMPORTED_MODULE_5__.EntityAddDialog, {\n onSelect: handleEntityAddDialogSelect,\n onClose: handleEntityAddDialogClose\n }), openEntityAttrsDialog && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_entity_attrs_dialog__WEBPACK_IMPORTED_MODULE_6__.EntityAttrsDialog, _extends({\n query: query\n }, entity, {\n onOk: handleEntityAttrsDialogOk,\n onCancel: handleEntityAttrsDialogCancel\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, \"add\"),\n onClick: handleEntityAddClick\n }, _app_text__WEBPACK_IMPORTED_MODULE_3__.BUTTONS.INSERT), entity && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: entity.title,\n maxWidth: \"200px\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, \"edit_attributes\"),\n onClick: handleEntityAttrsClick\n }, \"\\u0410\\u0442\\u0440\\u0438\\u0431\\u0443\\u0442\\u044B\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, \"delete\"),\n onClick: handleEntityRemoveClick\n }, _app_text__WEBPACK_IMPORTED_MODULE_3__.BUTTONS.DELETE)));\n};\n\n//Контроль свойств компонента - Компонент инспектора - Сущности запроса\nInspectorQueryEntities.propTypes = {\n query: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number).isRequired,\n entity: _entity_entity__WEBPACK_IMPORTED_MODULE_4__.ENTITY_SHAPE,\n onOptionsChanged: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_rls/hooks.js": +/*!*************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_rls/hooks.js ***! + \*************************************************************************/ +/***/ ((__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 */ useQueryRelations: () => (/* binding */ useQueryRelations)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../context/backend */ \"./app/context/backend.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Пользовательские хуки для работы со связями\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n\n//-----------\n//Тело модуля\n//-----------\n\n//Работа со связами запроса\nconst useQueryRelations = query => {\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Добавление отношения сущностей в запрос\n const addRl = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (source, target) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_RL_ADD\",\n args: {\n NRN: query,\n SSOURCE: source,\n STARGET: target\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Удаление отношения сущностей из запроса\n const removeRl = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async rl => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_RL_REMOVE\",\n args: {\n NRN: query,\n SID: rl\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Установка признака обязательности отношения сущности в запросе\n const setRlMandatory = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (rl, mandatory) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_RL_MANDATORY_SET\",\n args: {\n NRN: query,\n SID: rl,\n NMANDATORY: mandatory\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Возвращаем интерфейс хука\n return {\n addRl,\n removeRl,\n setRlMandatory\n };\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_rls/hooks.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js": +/*!***************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js ***! + \***************************************************************************************/ +/***/ ((__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 */ InspectorQueryRelations: () => (/* binding */ InspectorQueryRelations)\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 _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControlLabel/FormControlLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.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 _context_messaging__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _relation_relation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../relation/relation */ \"./app/panels/query_editor/components/relation/relation.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/components/inspector_query_rls/hooks.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//---------\n\n//Стили\nconst STYLES = {\n MANDATORY_FORMCONTROLLABEL: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Компонент инспектора - Связи запроса\nconst InspectorQueryRelations = ({\n query,\n relation,\n onOptionsChanged\n}) => {\n //Подключение к контексту сообщений\n const {\n showMsgWarn\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_1__[\"MessagingСtx\"]);\n\n //Работа со связями на сервере\n const {\n removeRl,\n setRlMandatory\n } = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useQueryRelations)(query);\n\n //Уведомление родителя об изменении свойств\n const notifyOptionsChanged = () => onOptionsChanged && onOptionsChanged();\n\n //При нажатии на кнопку даления связи из запроса\n const handleRelationRemoveClick = () => showMsgWarn(`Удалить связь \"${relation.source}\" - \"${relation.target}\"?`, async () => {\n if (relation?.id) {\n await removeRl(relation.id);\n notifyOptionsChanged();\n }\n });\n\n //При изменении состояния обязательности связи в запросе\n const handleRelationMandatoryChange = async e => {\n await setRlMandatory(relation.id, e.target.checked === true ? 1 : 0);\n notifyOptionsChanged();\n };\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.MANDATORY_FORMCONTROLLABEL,\n control: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n checked: relation.mandatory === 1 ? true : false,\n onChange: handleRelationMandatoryChange\n }),\n label: \"Обязательна\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"delete\"),\n onClick: handleRelationRemoveClick\n }, _app_text__WEBPACK_IMPORTED_MODULE_2__.BUTTONS.DELETE));\n};\n\n//Контроль свойств компонента - Компонент инспектора - Связи запроса\nInspectorQueryRelations.propTypes = {\n query: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().number).isRequired,\n relation: _relation_relation__WEBPACK_IMPORTED_MODULE_3__.RELATION_SHAPE.isRequired,\n onOptionsChanged: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/queries_manager/hooks.js": +/*!*********************************************************************!*\ + !*** ./app/panels/query_editor/components/queries_manager/hooks.js ***! + \*********************************************************************/ +/***/ ((__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 */ useQueries: () => (/* binding */ useQueries)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../context/backend */ \"./app/context/backend.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Пользовательские хуки для работы с запросами\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n\n//-----------\n//Тело модуля\n//-----------\n\n//Работа с запросами\nconst useQueries = () => {\n //Собственное состояние - флаг инициализированности\n const [isInit, setInit] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг загрузки\n const [isLoading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг необходимости обновления\n const [refresh, setRefresh] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Собственное состояние - данные\n const [data, setData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Обновление данных\n const doRefresh = () => setRefresh(true);\n\n //Добавление запроса\n const insertQuery = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (code, name) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_INSERT\",\n args: {\n SCODE: code,\n SNAME: name\n },\n loader: false\n });\n setRefresh(true);\n }, [executeStored]);\n\n //Изменение запроса\n const updateQuery = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (query, code, name) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_UPDATE\",\n args: {\n NRN: query,\n SCODE: code,\n SNAME: name\n },\n loader: false\n });\n setRefresh(true);\n }, [executeStored]);\n\n //Удаление запроса\n const deleteQuery = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async query => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_DELETE\",\n args: {\n NRN: query\n },\n loader: false\n });\n setRefresh(true);\n }, [executeStored]);\n\n //Установка флага готовности запроса\n const setQueryReady = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (query, ready) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_READY_SET\",\n args: {\n NRN: query,\n NREADY: ready\n },\n loader: false\n });\n setRefresh(true);\n }, [executeStored]);\n\n //Установка флага публичности запроса\n const setQueryPbl = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (query, pbl) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_PBL_SET\",\n args: {\n NRN: query,\n NPBL: pbl\n },\n loader: false\n });\n setRefresh(true);\n }, [executeStored]);\n\n //При необходимости получить/обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных с сервера\n const loadData = async () => {\n try {\n setLoading(true);\n const data = await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_LIST\",\n respArg: \"COUT\",\n isArray: name => [\"XQUERY\"].includes(name),\n attributeValueProcessor: (name, val) => [\"code\", \"name\"].includes(name) ? undefined : val,\n loader: true\n });\n setData(data?.XQUERIES?.XQUERY || []);\n setInit(true);\n } finally {\n setRefresh(false);\n setLoading(false);\n }\n };\n //Если надо обновить\n if (refresh)\n //Получим данные\n loadData();\n }, [refresh, executeStored]);\n\n //Возвращаем интерфейс хука\n return [data, insertQuery, updateQuery, deleteQuery, setQueryReady, setQueryPbl, doRefresh, isLoading, isInit];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/queries_manager/hooks.js?"); /***/ }), @@ -3589,7 +4062,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 */ QueriesList: () => (/* binding */ QueriesList)\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_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItem/ListItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Список запросов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n //Общие текстовые ресурсы приложения\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n SMALL_TOOL_ICON: {\n fontSize: 20\n }\n};\n\n//---------\n//Константы\n//---------\n\n//Структура данных о сущности запроса\nconst QUERIES_LIST_ITEM_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n rn: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number).isRequired,\n code: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n name: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n author: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n chDate: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n modify: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOf([0, 1]).isRequired,\n pbl: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOf([0, 1]).isRequired,\n ready: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOf([0, 1]).isRequired\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог открытия запроса\nconst QueriesList = ({\n queries = [],\n current = null,\n onSelect = null,\n onPbl = null,\n onReady = null,\n onEdit = null,\n onDelete = null\n} = {}) => {\n //При выборе элемента списка\n const handleSelectClick = query => {\n onSelect && onSelect(query);\n };\n\n //При нажатии на общедоступность\n const handlePblClick = (e, query) => {\n e.stopPropagation();\n onPbl && onPbl(query);\n };\n\n //При нажатии на готовность\n const handleReadyClick = (e, query) => {\n e.stopPropagation();\n onReady && onReady(query);\n };\n\n //При нажатии на исправлении\n const handleEditClick = (e, query) => {\n e.stopPropagation();\n onEdit && onEdit(query);\n };\n\n //При нажатии на удаление\n const handleDeleteClick = (e, query) => {\n e.stopPropagation();\n onDelete && onDelete(query);\n };\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n sx: {\n height: \"500px\",\n width: \"360px\",\n bgcolor: \"background.paper\",\n overflowY: \"auto\"\n }\n }, queries.map((query, i) => {\n const selected = query.rn === current;\n const disabled = !query.modify;\n const pblTitle = `${query.pbl === 1 ? \"Общедоступный\" : \"Приватный\"}${!disabled ? \" - нажмите, чтобы изменить\" : \"\"}`;\n const pblIcon = query.pbl === 1 ? \"groups\" : \"lock_person\";\n const readyTitle = `${query.ready === 1 ? \"Готов\" : \"Не готов\"}${!disabled ? \" - нажмите, чтобы изменить\" : \"\"}`;\n const readyIcon = query.ready === 1 ? \"touch_app\" : \"do_not_touch\";\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n key: i\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n onClick: () => handleSelectClick(query),\n selected: selected\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n primary: query.name,\n secondaryTypographyProps: {\n component: \"div\"\n },\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n direction: \"column\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"caption\"\n }, `${query.code}, ${query.author}, ${query.chDate}`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n title: pblTitle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n disabled: disabled,\n onClick: e => handlePblClick(e, query)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.SMALL_TOOL_ICON\n }, pblIcon))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n title: readyTitle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n disabled: disabled,\n onClick: e => handleReadyClick(e, query)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.SMALL_TOOL_ICON\n }, readyIcon)))))\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: e => handleEditClick(e, query),\n disabled: disabled,\n title: _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.UPDATE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"edit\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: e => handleDeleteClick(e, query),\n disabled: disabled,\n title: _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.DELETE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"delete\")))));\n }));\n};\n\n//Контроль свойств компонента - Список запросов\nQueriesList.propTypes = {\n queries: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(QUERIES_LIST_ITEM_SHAPE),\n current: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number),\n onSelect: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onPbl: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onReady: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onEdit: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onDelete: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/queries_manager/queries_list.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ QueriesList: () => (/* binding */ QueriesList)\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_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItem/ListItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.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/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Список запросов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n //Общие стили приложения\n //Общие текстовые ресурсы приложения\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n SMALL_TOOL_ICON: {\n fontSize: 20\n },\n LIST: {\n height: \"500px\",\n width: \"360px\",\n bgcolor: \"background.paper\",\n overflowY: \"auto\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_1__.APP_STYLES.SCROLL\n }\n};\n\n//---------\n//Константы\n//---------\n\n//Структура элемента списка запросов\nconst QUERIES_LIST_ITEM_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n rn: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number).isRequired,\n code: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n author: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n chDate: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n modify: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOf([0, 1]).isRequired,\n pbl: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOf([0, 1]).isRequired,\n ready: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOf([0, 1]).isRequired\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Список запросов\nconst QueriesList = ({\n queries = [],\n current = null,\n onSelect = null,\n onPbl = null,\n onReady = null,\n onEdit = null,\n onDelete = null\n} = {}) => {\n //При выборе элемента списка\n const handleSelectClick = query => {\n onSelect && onSelect(query);\n };\n\n //При нажатии на общедоступность\n const handlePblClick = (e, query) => {\n e.stopPropagation();\n onPbl && onPbl(query);\n };\n\n //При нажатии на готовность\n const handleReadyClick = (e, query) => {\n e.stopPropagation();\n onReady && onReady(query);\n };\n\n //При нажатии на исправлении\n const handleEditClick = (e, query) => {\n e.stopPropagation();\n onEdit && onEdit(query);\n };\n\n //При нажатии на удаление\n const handleDeleteClick = (e, query) => {\n e.stopPropagation();\n onDelete && onDelete(query);\n };\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.LIST\n }, queries.map((query, i) => {\n const selected = query.rn === current;\n const disabled = !query.modify;\n const pblTitle = `${query.pbl === 1 ? \"Общедоступный\" : \"Приватный\"}${!disabled ? \" - нажмите, чтобы изменить\" : \"\"}`;\n const pblIcon = query.pbl === 1 ? \"groups\" : \"lock_person\";\n const readyTitle = `${query.ready === 1 ? \"Готов\" : \"Не готов\"}${!disabled ? \" - нажмите, чтобы изменить\" : \"\"}`;\n const readyIcon = query.ready === 1 ? \"touch_app\" : \"do_not_touch\";\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n key: i,\n disablePadding: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onClick: () => handleSelectClick(query),\n selected: selected,\n dense: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n primary: query.name,\n secondaryTypographyProps: {\n component: \"div\"\n },\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n direction: \"column\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n variant: \"caption\"\n }, `${query.code}, ${query.author}, ${query.chDate}`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n title: pblTitle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n disabled: disabled,\n onClick: e => handlePblClick(e, query)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.SMALL_TOOL_ICON\n }, pblIcon))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n title: readyTitle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n disabled: disabled,\n onClick: e => handleReadyClick(e, query)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.SMALL_TOOL_ICON\n }, readyIcon)))))\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n onClick: e => handleEditClick(e, query),\n disabled: disabled,\n title: _app_text__WEBPACK_IMPORTED_MODULE_2__.BUTTONS.UPDATE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null, \"edit\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n onClick: e => handleDeleteClick(e, query),\n disabled: disabled,\n title: _app_text__WEBPACK_IMPORTED_MODULE_2__.BUTTONS.DELETE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null, \"delete\")))));\n }));\n};\n\n//Контроль свойств компонента - Список запросов\nQueriesList.propTypes = {\n queries: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(QUERIES_LIST_ITEM_SHAPE),\n current: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n onSelect: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onPbl: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onReady: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onEdit: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onDelete: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/queries_manager/queries_list.js?"); /***/ }), @@ -3600,7 +4073,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 */ QueriesManager: () => (/* binding */ QueriesManager)\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 _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.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 _context_messaging__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_editors_p8p_config_dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../components/editors/p8p_config_dialog */ \"./app/components/editors/p8p_config_dialog.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../hooks */ \"./app/panels/query_editor/hooks.js\");\n/* harmony import */ var _queries_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./queries_list */ \"./app/panels/query_editor/components/queries_manager/queries_list.js\");\n/* harmony import */ var _query_iu_dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./query_iu_dialog */ \"./app/panels/query_editor/components/queries_manager/query_iu_dialog.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Менеджер запросов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n //Контекст сообщений\n //Общие текстовые ресурсы приложения\n //Типовой диалог настройки\n //Пользовательские хуки\n //Список запросов\n //Диалог добавления/исправления запроса\n\n//-----------\n//Тело модуля\n//-----------\n\n//Менеджер запросов\nconst QueriesManager = ({\n current = null,\n onQuerySelect = null,\n onCancel = null\n} = {}) => {\n //Собственное состояние - изменяемый запрос\n const [modQuery, setModQuery] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Работа со списком запросов\n const [queries, insertQuery, updateQuery, deleteQuery, setQueryReady, setQueryPbl] = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useQuery)();\n\n //Подключение к контексту сообщений\n const {\n showMsgWarn\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_1__[\"MessagingСtx\"]);\n\n //При добавлении запроса\n const handleQueryAdd = () => setModQuery(true);\n\n //При выборе запроса\n const handleQuerySelect = query => onQuerySelect && onQuerySelect(query.rn);\n\n //При установке признака публичности\n const handleQueryPblSet = query => setQueryPbl(query.rn, query.pbl === 1 ? 0 : 1);\n\n //При установке признака готовности\n const handleQueryReadySet = query => setQueryReady(query.rn, query.ready === 1 ? 0 : 1);\n\n //При исправлении запроса\n const handleQueryEdit = query => setModQuery({\n ...query\n });\n\n //При удалении запроса\n const handleQueryDelete = query => showMsgWarn(\"Удалить запрос?\", () => deleteQuery(query.rn));\n\n //При закрытии диалога добавления/исправления по \"ОК\"\n const handleIUDialogOk = async values => {\n if (modQuery === true) await insertQuery(values.code, values.name);else await updateQuery(modQuery.rn, values.code, values.name);\n setModQuery(null);\n };\n\n //При закрытии диалога добавления/исправления по \"Отмена\"\n const handleIUDialogCancel = () => setModQuery(null);\n\n //При закртии менеджера отменой\n const handleCancel = () => onCancel && onCancel();\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_config_dialog__WEBPACK_IMPORTED_MODULE_3__.P8PConfigDialog, {\n title: \"Запросы\",\n onCancel: handleCancel\n }, modQuery && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_query_iu_dialog__WEBPACK_IMPORTED_MODULE_6__.QueryIUDialog, {\n code: modQuery?.code,\n name: modQuery?.name,\n insert: modQuery === true,\n onOk: handleIUDialogOk,\n onCancel: handleIUDialogCancel\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"add\"),\n onClick: handleQueryAdd\n }, _app_text__WEBPACK_IMPORTED_MODULE_2__.BUTTONS.INSERT), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_queries_list__WEBPACK_IMPORTED_MODULE_5__.QueriesList, {\n queries: queries || [],\n current: current,\n onSelect: handleQuerySelect,\n onPbl: handleQueryPblSet,\n onReady: handleQueryReadySet,\n onEdit: handleQueryEdit,\n onDelete: handleQueryDelete\n }));\n};\n\n//Контроль свойств компонента - Менеджер запросов\nQueriesManager.propTypes = {\n current: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().number),\n onQuerySelect: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/queries_manager/queries_manager.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ QueriesManager: () => (/* binding */ QueriesManager)\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 _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.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 _context_messaging__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_editors_p8p_config_dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../components/editors/p8p_config_dialog */ \"./app/components/editors/p8p_config_dialog.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/components/queries_manager/hooks.js\");\n/* harmony import */ var _queries_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./queries_list */ \"./app/panels/query_editor/components/queries_manager/queries_list.js\");\n/* harmony import */ var _query_iu_dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./query_iu_dialog */ \"./app/panels/query_editor/components/queries_manager/query_iu_dialog.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Менеджер запросов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n //Контекст сообщений\n //Общие текстовые ресурсы приложения\n //Типовой диалог настройки\n //Хуки для работы с запросами\n //Список запросов\n //Диалог добавления/исправления запроса\n\n//-----------\n//Тело модуля\n//-----------\n\n//Менеджер запросов\nconst QueriesManager = ({\n current = null,\n onQuerySelect = null,\n onCancel = null\n} = {}) => {\n //Собственное состояние - изменяемый запрос\n const [modQuery, setModQuery] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Работа со списком запросов\n const [queries, insertQuery, updateQuery, deleteQuery, setQueryReady, setQueryPbl] = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useQueries)();\n\n //Подключение к контексту сообщений\n const {\n showMsgWarn\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_1__[\"MessagingСtx\"]);\n\n //При добавлении запроса\n const handleQueryAdd = () => setModQuery(true);\n\n //При выборе запроса\n const handleQuerySelect = query => onQuerySelect && onQuerySelect({\n ...query\n });\n\n //При установке признака публичности\n const handleQueryPblSet = query => setQueryPbl(query.rn, query.pbl === 1 ? 0 : 1);\n\n //При установке признака готовности\n const handleQueryReadySet = query => setQueryReady(query.rn, query.ready === 1 ? 0 : 1);\n\n //При исправлении запроса\n const handleQueryEdit = query => setModQuery({\n ...query\n });\n\n //При удалении запроса\n const handleQueryDelete = query => showMsgWarn(\"Удалить запрос?\", () => deleteQuery(query.rn));\n\n //При закрытии диалога добавления/исправления по \"ОК\"\n const handleIUDialogOk = async values => {\n if (modQuery === true) await insertQuery(values.code, values.name);else await updateQuery(modQuery.rn, values.code, values.name);\n setModQuery(null);\n };\n\n //При закрытии диалога добавления/исправления по \"Отмена\"\n const handleIUDialogCancel = () => setModQuery(null);\n\n //При закртии менеджера отменой\n const handleCancel = () => onCancel && onCancel();\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_config_dialog__WEBPACK_IMPORTED_MODULE_3__.P8PConfigDialog, {\n title: \"Запросы\",\n onCancel: handleCancel\n }, modQuery && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_query_iu_dialog__WEBPACK_IMPORTED_MODULE_6__.QueryIUDialog, {\n code: modQuery?.code,\n name: modQuery?.name,\n insert: modQuery === true,\n onOk: handleIUDialogOk,\n onCancel: handleIUDialogCancel\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"add\"),\n onClick: handleQueryAdd\n }, _app_text__WEBPACK_IMPORTED_MODULE_2__.BUTTONS.INSERT), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_queries_list__WEBPACK_IMPORTED_MODULE_5__.QueriesList, {\n queries: queries || [],\n current: current,\n onSelect: handleQuerySelect,\n onPbl: handleQueryPblSet,\n onReady: handleQueryReadySet,\n onEdit: handleQueryEdit,\n onDelete: handleQueryDelete\n }));\n};\n\n//Контроль свойств компонента - Менеджер запросов\nQueriesManager.propTypes = {\n current: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().number),\n onQuerySelect: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/queries_manager/queries_manager.js?"); /***/ }), @@ -3633,7 +4106,18 @@ 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 */ QueryDiagram: () => (/* binding */ QueryDiagram)\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 reactflow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! reactflow */ \"./node_modules/@reactflow/core/dist/esm/index.mjs\");\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! reactflow */ \"./node_modules/@reactflow/controls/dist/esm/index.mjs\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/* harmony import */ var _attribute_attribute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../attribute/attribute */ \"./app/panels/query_editor/components/attribute/attribute.js\");\n/* harmony import */ var reactflow_dist_style_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! reactflow/dist/style.css */ \"./node_modules/reactflow/dist/style.css\");\n/* harmony import */ var _query_diagram_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./query_diagram.css */ \"./app/panels/query_editor/components/query_diagram/query_diagram.css\");\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//Стили\nconst STYLES = {\n CONNECTION_LINE: {\n strokeWidth: 2,\n stroke: \"gray\"\n },\n EDGE: {\n strokeWidth: 2\n }\n};\n\n//Привязка компонтов диаграммы к типам\nconst NODE_TYPES_COMPONENTS = {\n [_common__WEBPACK_IMPORTED_MODULE_1__.NODE_TYPE.ENTITY]: _entity_entity__WEBPACK_IMPORTED_MODULE_2__.Entity,\n [_common__WEBPACK_IMPORTED_MODULE_1__.NODE_TYPE.ATTRIBUTE]: _attribute_attribute__WEBPACK_IMPORTED_MODULE_3__.Attribute\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\nconst hasCycle = (connection, target, nodes, edges, visited = new Set()) => {\n if (visited.has(target.id)) {\n return false;\n }\n visited.add(target.id);\n for (const outgoer of (0,reactflow__WEBPACK_IMPORTED_MODULE_6__.getOutgoers)(target, nodes, edges)) {\n if (outgoer.id === connection.source || hasCycle(connection, outgoer, nodes, edges, visited)) {\n return true;\n }\n }\n return false;\n};\nconst isValidConnection = (connection, nodes, edges) => {\n if (!connection.source || !connection.target) {\n return false;\n }\n const tableId = connection.source.split(\"-\")[0];\n const isSameTable = connection.target.startsWith(tableId);\n if (isSameTable) {\n return false;\n }\n const target = nodes.find(node => node.id === connection.target);\n if (!target || target.id === connection.source) {\n return false;\n }\n return !hasCycle(connection, target, nodes, edges);\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диаграмма запроса\nconst QueryDiagram = ({\n entities,\n relations,\n onEntityPositionChange,\n onEntityRemove,\n onRelationAdd,\n onRelationRemove\n}) => {\n //Собственное состояние - элементы\n const [nodes, setNodes] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(entities);\n\n //Собственное состояние - связи\n const [edges, setEdges] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(relations);\n\n //Собственное состояние - перемещённый элемент\n const [movedNode, setMovedNode] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //При изменении элементов на диаграмме\n const handleNodesChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(changes => {\n setNodes(nodesSnapshot => (0,reactflow__WEBPACK_IMPORTED_MODULE_6__.applyNodeChanges)(changes, nodesSnapshot));\n if (changes.length == 1 && changes[0].type == \"position\" && changes[0].dragging) setMovedNode({\n id: changes[0].id,\n position: {\n ...changes[0].position\n }\n });\n if (changes.length == 1 && changes[0].type == \"position\" && !changes[0].dragging && movedNode) {\n if (onEntityPositionChange) onEntityPositionChange(movedNode.id, movedNode.position);\n setMovedNode(null);\n }\n if (changes[0].type == \"remove\" && entities.find(e => e.id == changes[0].id && e.type == _common__WEBPACK_IMPORTED_MODULE_1__.NODE_TYPE.ENTITY) && onEntityRemove) onEntityRemove(changes[0].id);\n }, [movedNode, entities, onEntityPositionChange, onEntityRemove]);\n\n //При связывании элементов на диаграмме\n const handleConnect = connection => {\n setEdges(state => (0,reactflow__WEBPACK_IMPORTED_MODULE_6__.addEdge)({\n ...connection,\n id: `${connection.source}-${connection.target}`\n }, state));\n onRelationAdd && onRelationAdd(connection.source, connection.target);\n };\n\n //При изменении связей на диаграмме\n const handleEdgesChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(changes => {\n setEdges(edgesSnapshot => (0,reactflow__WEBPACK_IMPORTED_MODULE_6__.applyEdgeChanges)(changes, edgesSnapshot));\n if (changes.length == 1 && changes[0].type == \"remove\" && onRelationRemove) onRelationRemove(changes[0].id);\n }, [onRelationRemove]);\n const validateConnection = connection => {\n return isValidConnection(connection, nodes, edges);\n };\n\n //При изменении состава сущностей\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setNodes(entities), [entities]);\n\n //При изменении состава связей\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setEdges(relations), [relations]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_6__.ReactFlow, {\n nodes: nodes,\n nodeTypes: NODE_TYPES_COMPONENTS,\n edges: edges,\n onNodesChange: handleNodesChange,\n onEdgesChange: handleEdgesChange,\n defaultEdgeOptions: {\n animated: true,\n style: STYLES.EDGE\n },\n connectionLineStyle: STYLES.CONNECTION_LINE,\n onConnect: handleConnect,\n isValidConnection: validateConnection,\n className: \"query_diagram\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_7__.Controls, null));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/query_diagram/query_diagram.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ QueryDiagram: () => (/* binding */ QueryDiagram)\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_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! reactflow */ \"./node_modules/@reactflow/core/dist/esm/index.mjs\");\n/* harmony import */ var reactflow__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! reactflow */ \"./node_modules/@reactflow/controls/dist/esm/index.mjs\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/* harmony import */ var _attribute_attribute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../attribute/attribute */ \"./app/panels/query_editor/components/attribute/attribute.js\");\n/* harmony import */ var reactflow_dist_style_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! reactflow/dist/style.css */ \"./node_modules/reactflow/dist/style.css\");\n/* harmony import */ var _query_diagram_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./query_diagram.css */ \"./app/panels/query_editor/components/query_diagram/query_diagram.css\");\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//Стили\nconst STYLES = {\n CONNECTION_LINE: {\n strokeWidth: 2,\n stroke: \"gray\"\n },\n EDGE: {\n strokeWidth: 2\n }\n};\n\n//Привязка компонтов диаграммы к типам\nconst NODE_TYPES_COMPONENTS = {\n [_common__WEBPACK_IMPORTED_MODULE_1__.NODE_TYPE.ENTITY]: _entity_entity__WEBPACK_IMPORTED_MODULE_2__.Entity,\n [_common__WEBPACK_IMPORTED_MODULE_1__.NODE_TYPE.ATTRIBUTE]: _attribute_attribute__WEBPACK_IMPORTED_MODULE_3__.Attribute\n};\n\n//Структура элемента диаграммы\nconst NODE_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_6___default().shape({\n id: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired,\n type: prop_types__WEBPACK_IMPORTED_MODULE_6___default().oneOf([_common__WEBPACK_IMPORTED_MODULE_1__.NODE_TYPE.ENTITY, _common__WEBPACK_IMPORTED_MODULE_1__.NODE_TYPE.ATTRIBUTE]).isRequired,\n style: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object),\n position: prop_types__WEBPACK_IMPORTED_MODULE_6___default().shape({\n x: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().number).isRequired,\n y: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().number).isRequired\n }),\n draggable: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().bool).isRequired,\n data: prop_types__WEBPACK_IMPORTED_MODULE_6___default().oneOfType([_entity_entity__WEBPACK_IMPORTED_MODULE_2__.ENTITY_SHAPE, _attribute_attribute__WEBPACK_IMPORTED_MODULE_3__.ATTRIBUTE_SHAPE])\n});\n\n//Структура связи диаграммы\nconst EDGE_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_6___default().shape({\n id: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired,\n source: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired,\n target: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired\n});\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Проверка зацикленности связи\nconst hasCycle = (connection, target, nodes, edges, visited = new Set()) => {\n if (visited.has(target.id)) return false;\n visited.add(target.id);\n for (const outgoer of (0,reactflow__WEBPACK_IMPORTED_MODULE_7__.getOutgoers)(target, nodes, edges)) if (outgoer.id === connection.source || hasCycle(connection, outgoer, nodes, edges, visited)) return true;\n return false;\n};\n\n//Проверка корректности связи\nconst isValidConnection = (connection, nodes, edges) => {\n //Должны быть заданы источник и приёмник\n if (!connection.source || !connection.target) return false;\n //Найдем источник и приёмник\n const source = nodes.find(node => node.id === connection.source);\n const target = nodes.find(node => node.id === connection.target);\n //Приёмник и источник должны существовать\n if (!target || !source) return false;\n //Нельзя ссылаться на самого себя\n if (source?.data?.parentEntity == target?.data?.parentEntity) return false;\n //Типы данны источника и приёмника должны совпадать\n if (source?.data?.dataType != target?.data?.dataType) return false;\n //Приёмник должен не должен быть источником\n if (target.id === connection.source) return false;\n //Нельзя зацикливаться\n return !hasCycle(connection, target, nodes, edges);\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диаграмма запроса\nconst QueryDiagram = ({\n nodes = [],\n edges = [],\n onEntityClick,\n onEntityAttrClick,\n onEntityPositionChange,\n onEntityRemove,\n onRelactionClick,\n onRelationAdd,\n onRelationRemove,\n onPaneClick\n}) => {\n //Собственное состояние - элементы\n const [nodesCurrent, setNodesCurrent] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(nodes);\n\n //Собственное состояние - связи\n const [edgesCurrent, setEdgesCurrent] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(edges);\n\n //Собственное состояние - перемещённый элемент\n const [movedNode, setMovedNode] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //При изменении элементов на диаграмме\n const handleNodesChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(changes => {\n //При выборе атрибута подсветим всю сущность\n const tmpChanges = changes.reduce((prevChanges, curChanges) => {\n const tmp = {\n ...curChanges\n };\n if (tmp.type == \"select\") {\n const chEnt = nodes.find(n => n.id === tmp.id);\n if (chEnt && chEnt?.data?.parentEntity) {\n prevChanges.push({\n ...curChanges,\n id: chEnt.data.parentEntity\n });\n tmp.selected = false;\n }\n }\n prevChanges.push(tmp);\n return prevChanges;\n }, []);\n //Применим изменения в диаграмме\n setNodesCurrent(nodesSnapshot => (0,reactflow__WEBPACK_IMPORTED_MODULE_7__.applyNodeChanges)(tmpChanges, nodesSnapshot));\n //Если двигали сущность - запомним начало движения\n if (changes.length == 1 && changes[0].type == \"position\" && changes[0].dragging) setMovedNode({\n id: changes[0].id,\n position: {\n ...changes[0].position\n }\n });\n //Если закончили двигать сущность и ранее запомнили начало движения - вызываем колбэки для нажатия и двиения сущности\n if (changes.length == 1 && changes[0].type == \"position\" && !changes[0].dragging && movedNode) {\n if (onEntityPositionChange) onEntityPositionChange(movedNode.id, movedNode.position);\n if (onEntityClick) onEntityClick(movedNode.id);\n setMovedNode(null);\n }\n //Если удалили сущность - вызываем колбэк для удаления\n if (changes[0].type == \"remove\" && nodes.find(n => n.id == changes[0].id && n.type == _common__WEBPACK_IMPORTED_MODULE_1__.NODE_TYPE.ENTITY) && onEntityRemove) onEntityRemove(changes[0].id);\n }, [movedNode, nodes, onEntityClick, onEntityPositionChange, onEntityRemove]);\n\n //При выборе элемента диаграммы\n const handleNodeClick = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((e, node) => node?.type == _common__WEBPACK_IMPORTED_MODULE_1__.NODE_TYPE.ENTITY ? onEntityClick && onEntityClick(node?.id) : onEntityAttrClick && onEntityAttrClick(node?.parentId, node?.id), [onEntityClick, onEntityAttrClick]);\n\n //При связывании элементов на диаграмме\n const handleConnect = connection => {\n setEdgesCurrent(state => (0,reactflow__WEBPACK_IMPORTED_MODULE_7__.addEdge)({\n ...connection,\n id: `${connection.source}-${connection.target}`\n }, state));\n onRelationAdd && onRelationAdd(connection.source, connection.target);\n };\n\n //При выборе связи диаграммы\n const handleEdgeClick = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((e, edge) => onRelactionClick && onRelactionClick(edge.id), [onRelactionClick]);\n\n //При изменении связей на диаграмме\n const handleEdgesChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(changes => {\n setEdgesCurrent(edgesSnapshot => (0,reactflow__WEBPACK_IMPORTED_MODULE_7__.applyEdgeChanges)(changes, edgesSnapshot));\n if (changes.length == 1 && changes[0].type == \"remove\" && onRelationRemove) onRelationRemove(changes[0].id);\n }, [onRelationRemove]);\n\n //При нажатии на холст диаграммы\n const handlePaneClick = () => onPaneClick && onPaneClick();\n\n //Валидация связи\n const validateConnection = connection => isValidConnection(connection, nodesCurrent, edgesCurrent);\n\n //Подсветка выбранной сущности\n\n //При изменении состава сущностей\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setNodesCurrent(nodes), [nodes]);\n\n //При изменении состава связей\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setEdgesCurrent(edges), [edges]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_7__.ReactFlow, {\n nodes: nodesCurrent,\n nodeTypes: NODE_TYPES_COMPONENTS,\n edges: edgesCurrent,\n onNodeClick: handleNodeClick,\n onNodesChange: handleNodesChange,\n onEdgeClick: handleEdgeClick,\n onEdgesChange: handleEdgesChange,\n onPaneClick: handlePaneClick,\n defaultEdgeOptions: {\n style: STYLES.EDGE\n },\n connectionLineStyle: STYLES.CONNECTION_LINE,\n onConnect: handleConnect,\n isValidConnection: validateConnection,\n className: \"query_diagram\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(reactflow__WEBPACK_IMPORTED_MODULE_8__.Controls, null));\n};\n\n//Контроль свойств компонента - Диаграмма запроса\nQueryDiagram.propTypes = {\n nodes: prop_types__WEBPACK_IMPORTED_MODULE_6___default().arrayOf(NODE_SHAPE),\n edges: prop_types__WEBPACK_IMPORTED_MODULE_6___default().arrayOf(EDGE_SHAPE),\n onEntityClick: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n onEntityAttrClick: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n onEntityPositionChange: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n onEntityRemove: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n onRelactionClick: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n onRelationAdd: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n onRelationRemove: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n onPaneClick: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/query_diagram/query_diagram.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/relation/relation.js": +/*!*****************************************************************!*\ + !*** ./app/panels/query_editor/components/relation/relation.js ***! + \*****************************************************************/ +/***/ ((__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 */ RELATION_SHAPE: () => (/* binding */ RELATION_SHAPE)\n/* harmony export */ });\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_0__);\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компоненты: Связь сущностей запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Контроль свойств компонента\n\n//---------\n//Константы\n//---------\n\n//Структура данных о связи сущностей запроса\nconst RELATION_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_0___default().shape({\n id: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string).isRequired,\n source: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string).isRequired,\n target: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().string).isRequired,\n mandatory: (prop_types__WEBPACK_IMPORTED_MODULE_0___default().number).isRequired\n});\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/relation/relation.js?"); /***/ }), @@ -3644,7 +4128,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 */ useQuery: () => (/* binding */ useQuery),\n/* harmony export */ useQueryDesc: () => (/* binding */ useQueryDesc)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./common */ \"./app/panels/query_editor/common.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Пользовательские хуки\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n //Общие ресурсы и константы редактора\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Конвертация серверного описания сущностей запроса в элементы диаграммы\nconst serverEntity2QueryDiagramNodes = entity => {\n const groupWidth = 250;\n const nameColumnHeight = 50;\n const columns = entity?.XATTRS?.XATTR || [];\n const columnsCount = columns.length;\n const groupHeight = nameColumnHeight + columnsCount * 50;\n const groupNode = {\n id: entity.id,\n type: _common__WEBPACK_IMPORTED_MODULE_2__.NODE_TYPE.ENTITY,\n data: {\n ...entity\n },\n position: {\n x: entity.x,\n y: entity.y\n },\n style: {\n width: groupWidth,\n height: groupHeight\n },\n draggable: true\n };\n const columnNodes = columns.map((column, index, columns) => {\n const x = 1;\n const y = 50 * (index + 1);\n const width = groupWidth - 2;\n const height = 50;\n const isLast = index === columns.length - 1;\n const defaultColumnStyles = {\n borderBottom: \"1px solid #dee2e6\"\n };\n const lastColumnStyles = {\n borderBottom: \"none\"\n };\n const otherStyles = isLast ? lastColumnStyles : defaultColumnStyles;\n return {\n id: column.id,\n type: _common__WEBPACK_IMPORTED_MODULE_2__.NODE_TYPE.ATTRIBUTE,\n data: {\n ...column,\n included: false,\n parentEntity: entity.id\n },\n position: {\n x,\n y\n },\n parentId: entity.id,\n extent: \"parent\",\n style: {\n width,\n height,\n ...otherStyles\n },\n draggable: false,\n selectable: true\n };\n });\n return [groupNode, ...columnNodes];\n};\n\n//Конвертация серверного описания запроса в данные для редактора диаграмм\nconst serverQueryData2QueryDiagram = (entities, relations) => {\n const result = {\n entities: [],\n relations: [...relations]\n };\n entities.forEach(entity => {\n const nodes = serverEntity2QueryDiagramNodes(entity);\n result.entities = [...result.entities, ...nodes];\n });\n return result;\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Работа с запросами\nconst useQuery = () => {\n //Собственное состояние - флаг инициализированности\n const [isInit, setInit] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг загрузки\n const [isLoading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг необходимости обновления\n const [refresh, setRefresh] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Собственное состояние - данные\n const [data, setData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Обновление данных\n const doRefresh = () => setRefresh(true);\n\n //Добавление запроса\n const insertQuery = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (code, name) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_INSERT\",\n args: {\n SCODE: code,\n SNAME: name\n },\n loader: false\n });\n setRefresh(true);\n }, [executeStored]);\n\n //Изменение запроса\n const updateQuery = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (query, code, name) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_UPDATE\",\n args: {\n NRN: query,\n SCODE: code,\n SNAME: name\n },\n loader: false\n });\n setRefresh(true);\n }, [executeStored]);\n\n //Удаление запроса\n const deleteQuery = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async query => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_DELETE\",\n args: {\n NRN: query\n },\n loader: false\n });\n setRefresh(true);\n }, [executeStored]);\n\n //Установка флага готовности запроса\n const setQueryReady = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (query, ready) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_READY_SET\",\n args: {\n NRN: query,\n NREADY: ready\n },\n loader: false\n });\n setRefresh(true);\n }, [executeStored]);\n\n //Установка флага публичности запроса\n const setQueryPbl = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (query, pbl) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_PBL_SET\",\n args: {\n NRN: query,\n NPBL: pbl\n },\n loader: false\n });\n setRefresh(true);\n }, [executeStored]);\n\n //При необходимости получить/обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных с сервера\n const loadData = async () => {\n try {\n setLoading(true);\n const data = await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_LIST\",\n respArg: \"COUT\",\n isArray: name => [\"XQUERY\"].includes(name),\n attributeValueProcessor: (name, val) => [\"code\", \"name\"].includes(name) ? undefined : val,\n loader: true\n });\n setData(data?.XQUERIES?.XQUERY || []);\n setInit(true);\n } finally {\n setRefresh(false);\n setLoading(false);\n }\n };\n //Если надо обновить\n if (refresh)\n //Получим данные\n loadData();\n }, [refresh, executeStored]);\n\n //Возвращаем интерфейс хука\n return [data, insertQuery, updateQuery, deleteQuery, setQueryReady, setQueryPbl, doRefresh, isLoading, isInit];\n};\n\n//Работа с содержимым запроса\nconst useQueryDesc = query => {\n //Собственное состояние - флаг инициализированности\n const [isInit, setInit] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг загрузки\n const [isLoading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг необходимости обновления\n const [refresh, setRefresh] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Собственное состояние - данные\n const [data, setData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Обновление данных\n const doRefresh = () => setRefresh(true);\n\n //Добавление сущности в запрос\n const addEnt = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (name, type) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_ENT_ADD\",\n args: {\n NRN: query,\n SNAME: name,\n STYPE: type\n },\n loader: false\n });\n setRefresh(true);\n }, [query, executeStored]);\n\n //Удаление сущности из запроса\n const removeEnt = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ent => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_ENT_REMOVE\",\n args: {\n NRN: query,\n SID: ent\n },\n loader: false\n });\n setRefresh(true);\n }, [query, executeStored]);\n\n //Сохранение координат сущности на диаграммем\n const setEntPosition = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (ent, x, y) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_ENT_POSITION_SET\",\n args: {\n NRN: query,\n SID: ent,\n NX: x,\n NY: y\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Добавление отношения сущностей в запрос\n const addRl = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (source, target) => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_RL_ADD\",\n args: {\n NRN: query,\n SSOURCE: source,\n STARGET: target\n },\n loader: false\n });\n setRefresh(true);\n }, [query, executeStored]);\n\n //Удаление отношения сущностей из запроса\n const removeRl = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async rl => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_RL_REMOVE\",\n args: {\n NRN: query,\n SID: rl\n },\n loader: false\n });\n setRefresh(true);\n }, [query, executeStored]);\n\n //При необходимости получить/обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных с сервера\n const loadData = async () => {\n try {\n setLoading(true);\n const data = await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_DESC\",\n args: {\n NRN: query\n },\n respArg: \"COUT\",\n isArray: name => [\"XENT\", \"XATTR\", \"XRL\"].includes(name),\n loader: true\n });\n setData(serverQueryData2QueryDiagram(data?.XENTS?.XENT || [], data?.XRLS?.XRL || []));\n setInit(true);\n } finally {\n setRefresh(false);\n setLoading(false);\n }\n };\n //Если надо обновить\n if (refresh) if (query)\n //Если есть для чего получать данные\n loadData();\n //Нет идентификатора запроса - нет данных\n else setData(null);\n }, [refresh, query, executeStored]);\n\n //При изменении входных свойств - поднимаем флаг обновления\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setRefresh(true), [query]);\n\n //Возвращаем интерфейс хука\n return [data, addEnt, removeEnt, setEntPosition, addRl, removeRl, doRefresh, isLoading, isInit];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/hooks.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useQuery: () => (/* binding */ useQuery)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./common */ \"./app/panels/query_editor/common.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Пользовательские хуки для работы с метаданными запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n //Общие ресурсы и константы редактора\n\n//---------\n//Константы\n//---------\n\n//Ширина элемента диаграммы\nconst NODE_WIDTH = 250;\n\n//Высота единицы состава группового элемента диаграммы\nconst GROUP_NODE_ITEM_HEIGHT = 50;\n\n//Стили\nconst STYLES = {\n ATTRIBUTE: isLast => ({\n borderBottom: isLast ? \"none\" : \"1px solid #dee2e6\"\n })\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Конвертация серверного описания сущностей запроса в элементы диаграммы\nconst serverEntity2QueryDiagramNodes = entity => {\n //Ссылка на атрибуты\n const attrs = entity.attrs || [];\n //Количество атрибутов\n const attrsCount = attrs.length;\n //Высота группового элемента диаграммы\n const entityNodeHeight = GROUP_NODE_ITEM_HEIGHT + attrsCount * GROUP_NODE_ITEM_HEIGHT;\n //Элемент диаграммы для сущности (групповой элемент)\n const entityNode = {\n id: entity.id,\n type: _common__WEBPACK_IMPORTED_MODULE_2__.NODE_TYPE.ENTITY,\n data: {\n ...entity\n },\n position: {\n x: entity.x,\n y: entity.y\n },\n style: {\n width: NODE_WIDTH,\n height: entityNodeHeight\n },\n draggable: true\n };\n //Элементы диаграммы для атрибутов сущности (состав группового элемента)\n const attrsNodes = attrs.map((attr, index, attrs) => ({\n id: attr.id,\n type: _common__WEBPACK_IMPORTED_MODULE_2__.NODE_TYPE.ATTRIBUTE,\n data: {\n ...attr\n },\n position: {\n x: 1,\n y: GROUP_NODE_ITEM_HEIGHT * (index + 1)\n },\n parentId: entity.id,\n extent: \"parent\",\n style: {\n width: NODE_WIDTH - 2,\n height: GROUP_NODE_ITEM_HEIGHT,\n ...STYLES.ATTRIBUTE(index === attrs.length - 1)\n },\n draggable: false,\n selectable: true\n }));\n //Возвращаем элемент для сущности (групповой) и элементы для атрибутов (состав группового)\n return [entityNode, ...attrsNodes];\n};\n\n//Конвертация серверного описания запроса в данные для редактора диаграмм\nconst serverQueryData2QueryDiagram = (entities, relations) => {\n //Инициализация результата\n const result = {\n entities: [],\n relations: [],\n nodes: [],\n edges: []\n };\n //Сущности (почти как есть на сервере, только массив XATTRS.XATTR перемещается в attrs)\n result.entities = entities.map(e => {\n const tmp = {\n ...e\n };\n tmp.attrs = tmp?.XATTRS?.XATTR?.map(a => ({\n ...a\n })) || [];\n delete tmp.XATTRS;\n return tmp;\n });\n //Связи сущностей\n result.relations = relations.map(r => ({\n ...r\n }));\n //Элементы для диаграммы\n result.entities.forEach(entity => {\n const nodes = serverEntity2QueryDiagramNodes(entity);\n result.nodes = [...result.nodes, ...nodes];\n });\n //Грани для диаграммы\n result.edges = relations.map(r => ({\n ...r,\n animated: r.mandatory === 1 ? false : true\n }));\n //Вернем итоговый результат\n return result;\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Работа с метаданными запроса\nconst useQuery = query => {\n //Собственное состояние - флаг инициализированности\n const [isInit, setInit] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг загрузки\n const [isLoading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг необходимости обновления\n const [refresh, setRefresh] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Собственное состояние - данные диаграммы\n const [queryDiagram, setQueryDiagram] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Собственное состояние - данные настроек\n const [queryOption, setQueryOption] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Собственное состояние - данные SQL-запроса\n const [querySQL, setQuerySQL] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Обновление данных\n const doRefresh = () => setRefresh(true);\n\n //При необходимости получить/обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных с сервера\n const loadData = async () => {\n try {\n setLoading(true);\n const data = await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY\",\n args: {\n NRN: query\n },\n respArg: \"COUT\",\n isArray: name => [\"XENT\", \"XATTR\", \"XRL\", \"XARG\"].includes(name),\n attributeValueProcessor: (name, val) => [\"value\"].includes(name) ? undefined : val,\n loader: true\n });\n setQueryDiagram(serverQueryData2QueryDiagram(data?.XENTS?.XENT || [], data?.XRLS?.XRL || []));\n setQueryOption({\n args: data?.XOPT?.XARGS?.XARG || [],\n cond: data?.XOPT?.XCOND || null\n });\n setQuerySQL({\n qry: data?.XQRY,\n qryMsg: data?.XQRY_MSG\n });\n setInit(true);\n } finally {\n setRefresh(false);\n setLoading(false);\n }\n };\n //Если надо обновить\n if (refresh) if (query)\n //Если есть для чего получать данные\n loadData();\n //Нет идентификатора запроса - нет данных\n else {\n setQueryDiagram(null);\n setQueryOption(null);\n setQuerySQL(null);\n }\n }, [refresh, query, executeStored]);\n\n //При изменении входных свойств - поднимаем флаг обновления\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setRefresh(true), [query]);\n\n //Возвращаем интерфейс хука\n return [queryDiagram, queryOption, querySQL, doRefresh, isLoading, isInit];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/hooks.js?"); /***/ }), @@ -3666,7 +4150,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 */ QueryEditor: () => (/* binding */ QueryEditor)\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 _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.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 _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _components_editors_p8p_editor_toolbar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/editors/p8p_editor_toolbar */ \"./app/components/editors/p8p_editor_toolbar.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_query_diagram_query_diagram__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/query_diagram/query_diagram */ \"./app/panels/query_editor/components/query_diagram/query_diagram.js\");\n/* harmony import */ var _components_queries_manager_queries_manager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/queries_manager/queries_manager */ \"./app/panels/query_editor/components/queries_manager/queries_manager.js\");\n/* harmony import */ var _components_entity_add_dialog_entity_add_dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/entity_add_dialog/entity_add_dialog */ \"./app/panels/query_editor/components/entity_add_dialog/entity_add_dialog.js\");\n/* harmony import */ var _components_editors_p8p_editor_box__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../components/editors/p8p_editor_box */ \"./app/components/editors/p8p_editor_box.js\");\n/* harmony import */ var _components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../components/editors/p8p_editor_sub_header */ \"./app/components/editors/p8p_editor_sub_header.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/hooks.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 //Интерфейсные компоненты MUI\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_1__.APP_BAR_HEIGHT})`\n },\n GRID_ITEM_INSPECTOR: {\n backgroundColor: \"#e9ecef\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневой компонент редактора запросов\nconst QueryEditor = () => {\n //Текущий запрос\n const [query, setQuery] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Отображения менеджера запросов\n const [openQueriesManager, setOpenQueriesManager] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Отображение диалога добавления сущности\n const [openEntityAddDialog, setOpenEntityAddDialog] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Получение данных запроса\n const [queryDiagram, addEnt, removeEnt, setEntPosition, addRl, removeRl] = (0,_hooks__WEBPACK_IMPORTED_MODULE_9__.useQueryDesc)(query);\n\n //Обработка изменения положения сущности на диаграмме\n const handleEntityPositionChange = (ent, position) => setEntPosition(ent, position.x, position.y);\n\n //Обработка удаления сущности из запроса\n const handleEntityRemove = ent => removeEnt(ent);\n\n //Обработка добавления отношения cущностей\n const handleRelationAdd = (source, target) => addRl(source, target);\n\n //Обработка удаления отношения cущностей\n const handleRelationRemove = rl => removeRl(rl);\n\n //Открытие менеджера запросов\n const handleOpenQueriesManager = () => setOpenQueriesManager(true);\n\n //Закрытие менеджера запросов\n const handleCancelQueriesManager = () => setOpenQueriesManager(false);\n\n //Закрытие запроса\n const handleQueryClose = () => setQuery(null);\n\n //При выборе запроса\n const handleQuerySelect = query => {\n setQuery(query);\n setOpenQueriesManager(false);\n };\n\n //При добавлении сущности в запрос\n const handleEntityAdd = () => setOpenEntityAddDialog(true);\n\n //Закрытие диалога добавления сущности по \"ОК\"\n const handleEntityAddDialogOk = async values => {\n await addEnt(values.name, \"VIEW\");\n setOpenEntityAddDialog(false);\n };\n\n //Закрытие диалога добавления сущности по \"ОК\"\n const handleEntityAddDialogCancel = () => setOpenEntityAddDialog(false);\n\n //Панель инструмментов\n const toolBar = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_toolbar__WEBPACK_IMPORTED_MODULE_2__.P8PEditorToolBar, {\n items: [{\n icon: \"file_open\",\n title: \"Менеджер запросов\",\n onClick: handleOpenQueriesManager\n }, {\n icon: \"close\",\n title: \"Закрыть запрос\",\n onClick: handleQueryClose,\n disabled: !query\n }]\n });\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.CONTAINER\n }, openQueriesManager && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_queries_manager_queries_manager__WEBPACK_IMPORTED_MODULE_5__.QueriesManager, {\n current: query,\n onQuerySelect: handleQuerySelect,\n onCancel: handleCancelQueriesManager\n }), openEntityAddDialog && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_entity_add_dialog_entity_add_dialog__WEBPACK_IMPORTED_MODULE_6__.EntityAddDialog, {\n onOk: handleEntityAddDialogOk,\n onCancel: handleEntityAddDialogCancel\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"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_11__[\"default\"], {\n item: true,\n xs: 20\n }, queryDiagram && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_query_diagram_query_diagram__WEBPACK_IMPORTED_MODULE_4__.QueryDiagram, _extends({}, queryDiagram, {\n onEntityPositionChange: handleEntityPositionChange,\n onEntityRemove: handleEntityRemove,\n onRelationAdd: handleRelationAdd,\n onRelationRemove: handleRelationRemove\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n item: true,\n xs: 5,\n sx: STYLES.GRID_ITEM_INSPECTOR\n }, toolBar, query && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_box__WEBPACK_IMPORTED_MODULE_7__.P8PEditorBox, {\n title: \"Параметры запроса\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_8__.P8PEditorSubHeader, {\n title: \"Сущности\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"add\"),\n onClick: handleEntityAdd\n }, _app_text__WEBPACK_IMPORTED_MODULE_3__.BUTTONS.INSERT)))));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/query_editor.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ QueryEditor: () => (/* binding */ QueryEditor)\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 _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.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 _components_editors_p8p_editor_toolbar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/editors/p8p_editor_toolbar */ \"./app/components/editors/p8p_editor_toolbar.js\");\n/* harmony import */ var _components_query_diagram_query_diagram__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/query_diagram/query_diagram */ \"./app/panels/query_editor/components/query_diagram/query_diagram.js\");\n/* harmony import */ var _components_inspector_inspector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/inspector/inspector */ \"./app/panels/query_editor/components/inspector/inspector.js\");\n/* harmony import */ var _components_queries_manager_queries_manager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/queries_manager/queries_manager */ \"./app/panels/query_editor/components/queries_manager/queries_manager.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/hooks.js\");\n/* harmony import */ var _components_inspector_query_rls_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/inspector_query_rls/hooks */ \"./app/panels/query_editor/components/inspector_query_rls/hooks.js\");\n/* harmony import */ var _components_inspector_query_ents_hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/inspector_query_ents/hooks */ \"./app/panels/query_editor/components/inspector_query_ents/hooks.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 //Интерфейсные компоненты MUI\n //Контекст взаимодействия с приложением\n //Компоненты рабочего стола\n //Панель инструментов редактора\n //Диаграмма запроса\n //Инспектор свойств\n //Менеджер запросов\n //Хуки для работы с метаданными запроса на сервере\n //Хуки для работы со связями запроса на сервере\n //Хуки для работы с сущностями запроса на сервере\n\n//---------\n//Константы\n//---------\n\n//Заголовок панели по умолчанию\nconst APP_BAR_TITLE_DEFAULT = \"Редактор запросов\";\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};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневой компонент редактора запросов\nconst QueryEditor = () => {\n //Текущий запрос\n const [query, setQuery] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Текущая сущность\n const [entity, setEntity] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Текущая связь\n const [relation, setRelation] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Отображения менеджера запросов\n const [openQueriesManager, setOpenQueriesManager] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Получение метаданных с описанием запроса\n const [queryDiagram, queryOption, querySQL, doRefresh] = (0,_hooks__WEBPACK_IMPORTED_MODULE_7__.useQuery)(query);\n\n //Работа с сущностями на сервере\n const {\n removeEnt,\n setEntPosition\n } = (0,_components_inspector_query_ents_hooks__WEBPACK_IMPORTED_MODULE_9__.useQueryEntities)(query);\n\n //Работа со связями на сервере\n const {\n addRl,\n removeRl\n } = (0,_components_inspector_query_rls_hooks__WEBPACK_IMPORTED_MODULE_8__.useQueryRelations)(query);\n\n //Подключение к контексту приложения\n const {\n setAppBarTitle\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Выбор сущности\n const selectEntity = ent => {\n setRelation(null);\n const queryEnt = queryDiagram.entities.find(e => e.id === ent);\n if (queryEnt) setEntity({\n ...queryEnt\n });\n };\n\n //Выбор связи\n const selectRelation = rl => {\n setEntity(null);\n const queryRl = queryDiagram.relations.find(r => r.id === rl);\n if (queryRl) setRelation({\n ...queryRl\n });\n };\n\n //Сброс выбора связи и сущности\n const cleanupEnRlSelection = () => {\n setRelation(null);\n setEntity(null);\n };\n\n //Обработка изменения положения сущности на диаграмме\n const handleEntityPositionChange = (ent, position) => setEntPosition(ent, position.x, position.y);\n\n //Обработка удаления сущности из запроса\n const handleEntityRemove = async ent => {\n await removeEnt(ent);\n if (entity && entity?.id === ent) cleanupEnRlSelection();\n doRefresh();\n };\n\n //Обработка выделения сущности\n const handleEntityClick = ent => selectEntity(ent);\n\n //Обработка выделения тарибута сущности\n const handleEntityAttrClick = ent => selectEntity(ent);\n\n //Обработка выделения связи\n const handleRelationClick = rl => selectRelation(rl);\n\n //Обработка добавления отношения cущностей\n const handleRelationAdd = async (source, target) => {\n cleanupEnRlSelection();\n await addRl(source, target);\n doRefresh();\n };\n\n //Обработка удаления отношения cущностей\n const handleRelationRemove = async rl => {\n await removeRl(rl);\n if (relation && relation?.id === rl) cleanupEnRlSelection();\n doRefresh();\n };\n\n //При нажатии на панели (пустом месте) диаграммы запроса\n const handlePaneClick = () => cleanupEnRlSelection();\n\n //Открытие менеджера запросов\n const handleOpenQueriesManager = () => setOpenQueriesManager(true);\n\n //Закрытие менеджера запросов\n const handleCancelQueriesManager = () => setOpenQueriesManager(false);\n\n //Закрытие запроса\n const handleQueryClose = () => {\n setAppBarTitle(APP_BAR_TITLE_DEFAULT);\n cleanupEnRlSelection();\n setQuery(null);\n };\n\n //При выборе запроса\n const handleQuerySelect = ({\n rn,\n name\n }) => {\n setAppBarTitle(`Запрос [${name}]`);\n setQuery(rn);\n setOpenQueriesManager(false);\n cleanupEnRlSelection();\n };\n\n //При изменении свойств запроса\n const handleQueryOptionsChanged = () => {\n cleanupEnRlSelection();\n doRefresh();\n };\n\n //Панель инструмментов\n const toolBar = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_toolbar__WEBPACK_IMPORTED_MODULE_3__.P8PEditorToolBar, {\n items: [{\n icon: \"file_open\",\n title: \"Менеджер запросов\",\n onClick: handleOpenQueriesManager\n }, {\n icon: \"close\",\n title: \"Закрыть запрос\",\n onClick: handleQueryClose,\n disabled: !query\n }]\n });\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.CONTAINER\n }, openQueriesManager && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_queries_manager_queries_manager__WEBPACK_IMPORTED_MODULE_6__.QueriesManager, {\n current: query,\n onQuerySelect: handleQuerySelect,\n onCancel: handleCancelQueriesManager\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"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_11__[\"default\"], {\n item: true,\n xs: 20\n }, queryDiagram && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_query_diagram_query_diagram__WEBPACK_IMPORTED_MODULE_4__.QueryDiagram, {\n nodes: queryDiagram?.nodes,\n edges: queryDiagram?.edges,\n onEntityClick: handleEntityClick,\n onEntityAttrClick: handleEntityAttrClick,\n onEntityPositionChange: handleEntityPositionChange,\n onEntityRemove: handleEntityRemove,\n onRelactionClick: handleRelationClick,\n onRelationAdd: handleRelationAdd,\n onRelationRemove: handleRelationRemove,\n onPaneClick: handlePaneClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n item: true,\n xs: 5,\n sx: STYLES.GRID_ITEM_INSPECTOR\n }, toolBar, query && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_inspector_inspector__WEBPACK_IMPORTED_MODULE_5__.Inspector, _extends({}, queryOption, querySQL, {\n query: query,\n entity: entity,\n relation: relation,\n entities: queryDiagram?.entities,\n onOptionsChanged: handleQueryOptionsChanged\n })))));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/query_editor.js?"); /***/ }), @@ -4022,6 +4506,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@babel/runtime/helpers/esm/defineProperty.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/defineProperty.js ***! + \*******************************************************************/ +/***/ ((__unused_webpack___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 */ \"default\": () => (/* binding */ _defineProperty)\n/* harmony export */ });\n/* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toPropertyKey.js */ \"./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js\");\n\nfunction _defineProperty(e, r, t) {\n return (r = (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@babel/runtime/helpers/esm/defineProperty.js?"); + +/***/ }), + /***/ "./node_modules/@babel/runtime/helpers/esm/extends.js": /*!************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***! @@ -4044,6 +4539,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@babel/runtime/helpers/esm/objectSpread2.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___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 */ \"default\": () => (/* binding */ _objectSpread2)\n/* harmony export */ });\n/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defineProperty.js */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js?"); + +/***/ }), + /***/ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js": /*!*********************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***! @@ -4066,6 +4572,39 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@babel/runtime/helpers/esm/toPrimitive.js": +/*!****************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___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 */ \"default\": () => (/* binding */ toPrimitive)\n/* harmony export */ });\n/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/esm/typeof.js\");\n\nfunction toPrimitive(t, r) {\n if (\"object\" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js?"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js ***! + \******************************************************************/ +/***/ ((__unused_webpack___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 */ \"default\": () => (/* binding */ toPropertyKey)\n/* harmony export */ });\n/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/esm/typeof.js\");\n/* harmony import */ var _toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toPrimitive.js */ \"./node_modules/@babel/runtime/helpers/esm/toPrimitive.js\");\n\n\nfunction toPropertyKey(t) {\n var i = (0,_toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(t, \"string\");\n return \"symbol\" == (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(i) ? i : i + \"\";\n}\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js?"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/typeof.js": +/*!***********************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/typeof.js ***! + \***********************************************************/ +/***/ ((__unused_webpack___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 */ \"default\": () => (/* binding */ _typeof)\n/* harmony export */ });\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@babel/runtime/helpers/esm/typeof.js?"); + +/***/ }), + /***/ "./node_modules/@babel/runtime/helpers/extends.js": /*!********************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/extends.js ***! @@ -4272,6 +4811,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@mui/material/Alert/Alert.js": +/*!***************************************************!*\ + !*** ./node_modules/@mui/material/Alert/Alert.js ***! + \***************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _mui_utils_composeClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/utils/composeClasses */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system_colorManipulator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/system/colorManipulator */ \"./node_modules/@mui/system/colorManipulator.js\");\n/* harmony import */ var _zero_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../zero-styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _DefaultPropsProvider__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../DefaultPropsProvider */ \"./node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js\");\n/* harmony import */ var _utils_useSlot__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/useSlot */ \"./node_modules/@mui/material/utils/useSlot.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _Paper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Paper */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _alertClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./alertClasses */ \"./node_modules/@mui/material/Alert/alertClasses.js\");\n/* harmony import */ var _IconButton__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../IconButton */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _internal_svg_icons_SuccessOutlined__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../internal/svg-icons/SuccessOutlined */ \"./node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js\");\n/* harmony import */ var _internal_svg_icons_ReportProblemOutlined__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../internal/svg-icons/ReportProblemOutlined */ \"./node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js\");\n/* harmony import */ var _internal_svg_icons_ErrorOutline__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../internal/svg-icons/ErrorOutline */ \"./node_modules/@mui/material/internal/svg-icons/ErrorOutline.js\");\n/* harmony import */ var _internal_svg_icons_InfoOutlined__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../internal/svg-icons/InfoOutlined */ \"./node_modules/@mui/material/internal/svg-icons/InfoOutlined.js\");\n/* harmony import */ var _internal_svg_icons_Close__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../internal/svg-icons/Close */ \"./node_modules/@mui/material/internal/svg-icons/Close.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n'use client';\n\n\n\nconst _excluded = [\"action\", \"children\", \"className\", \"closeText\", \"color\", \"components\", \"componentsProps\", \"icon\", \"iconMapping\", \"onClose\", \"role\", \"severity\", \"slotProps\", \"slots\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n const {\n variant,\n color,\n severity,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `color${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color || severity)}`, `${variant}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(color || severity)}`, `${variant}`],\n icon: ['icon'],\n message: ['message'],\n action: ['action']\n };\n return (0,_mui_utils_composeClasses__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(slots, _alertClasses__WEBPACK_IMPORTED_MODULE_7__.getAlertUtilityClass, classes);\n};\nconst AlertRoot = (0,_zero_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_Paper__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n name: 'MuiAlert',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ownerState.color || ownerState.severity)}`]];\n }\n})(({\n theme\n}) => {\n const getColor = theme.palette.mode === 'light' ? _mui_system_colorManipulator__WEBPACK_IMPORTED_MODULE_10__.darken : _mui_system_colorManipulator__WEBPACK_IMPORTED_MODULE_10__.lighten;\n const getBackgroundColor = theme.palette.mode === 'light' ? _mui_system_colorManipulator__WEBPACK_IMPORTED_MODULE_10__.lighten : _mui_system_colorManipulator__WEBPACK_IMPORTED_MODULE_10__.darken;\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.body2, {\n backgroundColor: 'transparent',\n display: 'flex',\n padding: '6px 16px',\n variants: [...Object.entries(theme.palette).filter(([, value]) => value.main && value.light).map(([color]) => ({\n props: {\n colorSeverity: color,\n variant: 'standard'\n },\n style: {\n color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n backgroundColor: theme.vars ? theme.vars.palette.Alert[`${color}StandardBg`] : getBackgroundColor(theme.palette[color].light, 0.9),\n [`& .${_alertClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: theme.vars ? {\n color: theme.vars.palette.Alert[`${color}IconColor`]\n } : {\n color: theme.palette[color].main\n }\n }\n })), ...Object.entries(theme.palette).filter(([, value]) => value.main && value.light).map(([color]) => ({\n props: {\n colorSeverity: color,\n variant: 'outlined'\n },\n style: {\n color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n border: `1px solid ${(theme.vars || theme).palette[color].light}`,\n [`& .${_alertClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"].icon}`]: theme.vars ? {\n color: theme.vars.palette.Alert[`${color}IconColor`]\n } : {\n color: theme.palette[color].main\n }\n }\n })), ...Object.entries(theme.palette).filter(([, value]) => value.main && value.dark).map(([color]) => ({\n props: {\n colorSeverity: color,\n variant: 'filled'\n },\n style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n fontWeight: theme.typography.fontWeightMedium\n }, theme.vars ? {\n color: theme.vars.palette.Alert[`${color}FilledColor`],\n backgroundColor: theme.vars.palette.Alert[`${color}FilledBg`]\n } : {\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette[color].dark : theme.palette[color].main,\n color: theme.palette.getContrastText(theme.palette[color].main)\n })\n }))]\n });\n});\nconst AlertIcon = (0,_zero_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n name: 'MuiAlert',\n slot: 'Icon',\n overridesResolver: (props, styles) => styles.icon\n})({\n marginRight: 12,\n padding: '7px 0',\n display: 'flex',\n fontSize: 22,\n opacity: 0.9\n});\nconst AlertMessage = (0,_zero_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n name: 'MuiAlert',\n slot: 'Message',\n overridesResolver: (props, styles) => styles.message\n})({\n padding: '8px 0',\n minWidth: 0,\n overflow: 'auto'\n});\nconst AlertAction = (0,_zero_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n name: 'MuiAlert',\n slot: 'Action',\n overridesResolver: (props, styles) => styles.action\n})({\n display: 'flex',\n alignItems: 'flex-start',\n padding: '4px 0 0 16px',\n marginLeft: 'auto',\n marginRight: -8\n});\nconst defaultIconMapping = {\n success: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_SuccessOutlined__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n fontSize: \"inherit\"\n }),\n warning: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_ReportProblemOutlined__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n fontSize: \"inherit\"\n }),\n error: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_ErrorOutline__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n fontSize: \"inherit\"\n }),\n info: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_internal_svg_icons_InfoOutlined__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n fontSize: \"inherit\"\n })\n};\nconst Alert = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Alert(inProps, ref) {\n const props = (0,_DefaultPropsProvider__WEBPACK_IMPORTED_MODULE_15__.useDefaultProps)({\n props: inProps,\n name: 'MuiAlert'\n });\n const {\n action,\n children,\n className,\n closeText = 'Close',\n color,\n components = {},\n componentsProps = {},\n icon,\n iconMapping = defaultIconMapping,\n onClose,\n role = 'alert',\n severity = 'success',\n slotProps = {},\n slots = {},\n variant = 'standard'\n } = props,\n other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n color,\n severity,\n variant,\n colorSeverity: color || severity\n });\n const classes = useUtilityClasses(ownerState);\n const externalForwardedProps = {\n slots: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n closeButton: components.CloseButton,\n closeIcon: components.CloseIcon\n }, slots),\n slotProps: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, componentsProps, slotProps)\n };\n const [CloseButtonSlot, closeButtonProps] = (0,_utils_useSlot__WEBPACK_IMPORTED_MODULE_16__[\"default\"])('closeButton', {\n elementType: _IconButton__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n externalForwardedProps,\n ownerState\n });\n const [CloseIconSlot, closeIconProps] = (0,_utils_useSlot__WEBPACK_IMPORTED_MODULE_16__[\"default\"])('closeIcon', {\n elementType: _internal_svg_icons_Close__WEBPACK_IMPORTED_MODULE_18__[\"default\"],\n externalForwardedProps,\n ownerState\n });\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(AlertRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n role: role,\n elevation: 0,\n ownerState: ownerState,\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n ref: ref\n }, other, {\n children: [icon !== false ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AlertIcon, {\n ownerState: ownerState,\n className: classes.icon,\n children: icon || iconMapping[severity] || defaultIconMapping[severity]\n }) : null, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AlertMessage, {\n ownerState: ownerState,\n className: classes.message,\n children: children\n }), action != null ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AlertAction, {\n ownerState: ownerState,\n className: classes.action,\n children: action\n }) : null, action == null && onClose ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(AlertAction, {\n ownerState: ownerState,\n className: classes.action,\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(CloseButtonSlot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n size: \"small\",\n \"aria-label\": closeText,\n title: closeText,\n color: \"inherit\",\n onClick: onClose\n }, closeButtonProps, {\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(CloseIconSlot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n fontSize: \"small\"\n }, closeIconProps))\n }))\n }) : null]\n }));\n});\n true ? Alert.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The action to display. It renders after the message, at the end of the alert.\n */\n action: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().node),\n /**\n * The content of the component.\n */\n children: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().node),\n /**\n * Override or extend the styles applied to the component.\n */\n classes: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object),\n /**\n * @ignore\n */\n className: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string),\n /**\n * Override the default label for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string),\n /**\n * The color of the component. Unless provided, the value is taken from the `severity` prop.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n */\n color: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOf(['error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string)]),\n /**\n * The components used for each slot inside.\n *\n * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n *\n * @default {}\n */\n components: prop_types__WEBPACK_IMPORTED_MODULE_19___default().shape({\n CloseButton: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().elementType),\n CloseIcon: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().elementType)\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n *\n * @default {}\n */\n componentsProps: prop_types__WEBPACK_IMPORTED_MODULE_19___default().shape({\n closeButton: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object),\n closeIcon: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object)\n }),\n /**\n * Override the icon displayed before the children.\n * Unless provided, the icon is mapped to the value of the `severity` prop.\n * Set to `false` to remove the `icon`.\n */\n icon: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().node),\n /**\n * The component maps the `severity` prop to a range of different icons,\n * for instance success to ``.\n * If you wish to change this mapping, you can provide your own.\n * Alternatively, you can use the `icon` prop to override the icon displayed.\n */\n iconMapping: prop_types__WEBPACK_IMPORTED_MODULE_19___default().shape({\n error: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().node),\n info: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().node),\n success: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().node),\n warning: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().node)\n }),\n /**\n * Callback fired when the component requests to be closed.\n * When provided and no `action` prop is set, a close icon button is displayed that triggers the callback when clicked.\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func),\n /**\n * The ARIA role attribute of the element.\n * @default 'alert'\n */\n role: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string),\n /**\n * The severity of the alert. This defines the color and icon used.\n * @default 'success'\n */\n severity: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOf(['error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string)]),\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: prop_types__WEBPACK_IMPORTED_MODULE_19___default().shape({\n closeButton: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_19___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object)]),\n closeIcon: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_19___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object)])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: prop_types__WEBPACK_IMPORTED_MODULE_19___default().shape({\n closeButton: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().elementType),\n closeIcon: (prop_types__WEBPACK_IMPORTED_MODULE_19___default().elementType)\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_19___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_19___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().object)]),\n /**\n * The variant to use.\n * @default 'standard'\n */\n variant: prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_19___default().oneOf(['filled', 'outlined', 'standard']), (prop_types__WEBPACK_IMPORTED_MODULE_19___default().string)])\n} : 0;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Alert);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/Alert/Alert.js?"); + +/***/ }), + +/***/ "./node_modules/@mui/material/Alert/alertClasses.js": +/*!**********************************************************!*\ + !*** ./node_modules/@mui/material/Alert/alertClasses.js ***! + \**********************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ getAlertUtilityClass: () => (/* binding */ getAlertUtilityClass)\n/* harmony export */ });\n/* harmony import */ var _mui_utils_generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils/generateUtilityClasses */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _mui_utils_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils/generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getAlertUtilityClass(slot) {\n return (0,_mui_utils_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiAlert', slot);\n}\nconst alertClasses = (0,_mui_utils_generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiAlert', ['root', 'action', 'icon', 'message', 'filled', 'colorSuccess', 'colorInfo', 'colorWarning', 'colorError', 'filledSuccess', 'filledInfo', 'filledWarning', 'filledError', 'outlined', 'outlinedSuccess', 'outlinedInfo', 'outlinedWarning', 'outlinedError', 'standard', 'standardSuccess', 'standardInfo', 'standardWarning', 'standardError']);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (alertClasses);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/Alert/alertClasses.js?"); + +/***/ }), + /***/ "./node_modules/@mui/material/AppBar/AppBar.js": /*!*****************************************************!*\ !*** ./node_modules/@mui/material/AppBar/AppBar.js ***! @@ -4459,6 +5020,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@mui/material/ButtonGroup/ButtonGroup.js": +/*!***************************************************************!*\ + !*** ./node_modules/@mui/material/ButtonGroup/ButtonGroup.js ***! + \***************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _mui_utils_composeClasses__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/utils/composeClasses */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system_colorManipulator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/system/colorManipulator */ \"./node_modules/@mui/system/colorManipulator.js\");\n/* harmony import */ var _mui_utils_getValidReactChildren__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/utils/getValidReactChildren */ \"./node_modules/@mui/utils/esm/getValidReactChildren/getValidReactChildren.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _DefaultPropsProvider__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../DefaultPropsProvider */ \"./node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js\");\n/* harmony import */ var _buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./buttonGroupClasses */ \"./node_modules/@mui/material/ButtonGroup/buttonGroupClasses.js\");\n/* harmony import */ var _ButtonGroupContext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ButtonGroupContext */ \"./node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js\");\n/* harmony import */ var _ButtonGroupButtonContext__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ButtonGroupButtonContext */ \"./node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n'use client';\n\n\n\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"disableRipple\", \"fullWidth\", \"orientation\", \"size\", \"variant\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].grouped}`]: styles.grouped\n }, {\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].grouped}`]: styles[`grouped${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(ownerState.orientation)}`]\n }, {\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].grouped}`]: styles[`grouped${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(ownerState.variant)}`]\n }, {\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].grouped}`]: styles[`grouped${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(ownerState.variant)}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(ownerState.orientation)}`]\n }, {\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].grouped}`]: styles[`grouped${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(ownerState.variant)}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(ownerState.color)}`]\n }, {\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].firstButton}`]: styles.firstButton\n }, {\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].lastButton}`]: styles.lastButton\n }, {\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].middleButton}`]: styles.middleButton\n }, styles.root, styles[ownerState.variant], ownerState.disableElevation === true && styles.disableElevation, ownerState.fullWidth && styles.fullWidth, ownerState.orientation === 'vertical' && styles.vertical];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disabled,\n disableElevation,\n fullWidth,\n orientation,\n variant\n } = ownerState;\n const slots = {\n root: ['root', variant, orientation === 'vertical' && 'vertical', fullWidth && 'fullWidth', disableElevation && 'disableElevation'],\n grouped: ['grouped', `grouped${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(orientation)}`, `grouped${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(variant)}`, `grouped${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(variant)}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(orientation)}`, `grouped${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(variant)}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(color)}`, disabled && 'disabled'],\n firstButton: ['firstButton'],\n lastButton: ['lastButton'],\n middleButton: ['middleButton']\n };\n return (0,_mui_utils_composeClasses__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(slots, _buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__.getButtonGroupUtilityClass, classes);\n};\nconst ButtonGroupRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_8__[\"default\"])('div', {\n name: 'MuiButtonGroup',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n display: 'inline-flex',\n borderRadius: (theme.vars || theme).shape.borderRadius\n}, ownerState.variant === 'contained' && {\n boxShadow: (theme.vars || theme).shadows[2]\n}, ownerState.disableElevation && {\n boxShadow: 'none'\n}, ownerState.fullWidth && {\n width: '100%'\n}, ownerState.orientation === 'vertical' && {\n flexDirection: 'column'\n}, {\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].grouped}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n minWidth: 40,\n '&:hover': (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.variant === 'contained' && {\n boxShadow: 'none'\n })\n }, ownerState.variant === 'contained' && {\n boxShadow: 'none'\n }),\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].firstButton},& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].middleButton}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.orientation === 'horizontal' && {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0\n }, ownerState.orientation === 'vertical' && {\n borderBottomRightRadius: 0,\n borderBottomLeftRadius: 0\n }, ownerState.variant === 'text' && ownerState.orientation === 'horizontal' && {\n borderRight: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,\n [`&.${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled}`]: {\n borderRight: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n }\n }, ownerState.variant === 'text' && ownerState.orientation === 'vertical' && {\n borderBottom: theme.vars ? `1px solid rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : `1px solid ${theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'}`,\n [`&.${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled}`]: {\n borderBottom: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n }\n }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n borderColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : (0,_mui_system_colorManipulator__WEBPACK_IMPORTED_MODULE_9__.alpha)(theme.palette[ownerState.color].main, 0.5)\n }, ownerState.variant === 'outlined' && ownerState.orientation === 'horizontal' && {\n borderRightColor: 'transparent'\n }, ownerState.variant === 'outlined' && ownerState.orientation === 'vertical' && {\n borderBottomColor: 'transparent'\n }, ownerState.variant === 'contained' && ownerState.orientation === 'horizontal' && {\n borderRight: `1px solid ${(theme.vars || theme).palette.grey[400]}`,\n [`&.${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled}`]: {\n borderRight: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n }\n }, ownerState.variant === 'contained' && ownerState.orientation === 'vertical' && {\n borderBottom: `1px solid ${(theme.vars || theme).palette.grey[400]}`,\n [`&.${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].disabled}`]: {\n borderBottom: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n }\n }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n borderColor: (theme.vars || theme).palette[ownerState.color].dark\n }, {\n '&:hover': (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.variant === 'outlined' && ownerState.orientation === 'horizontal' && {\n borderRightColor: 'currentColor'\n }, ownerState.variant === 'outlined' && ownerState.orientation === 'vertical' && {\n borderBottomColor: 'currentColor'\n })\n }),\n [`& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].lastButton},& .${_buttonGroupClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"].middleButton}`]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.orientation === 'horizontal' && {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0\n }, ownerState.orientation === 'vertical' && {\n borderTopRightRadius: 0,\n borderTopLeftRadius: 0\n }, ownerState.variant === 'outlined' && ownerState.orientation === 'horizontal' && {\n marginLeft: -1\n }, ownerState.variant === 'outlined' && ownerState.orientation === 'vertical' && {\n marginTop: -1\n })\n}));\nconst ButtonGroup = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function ButtonGroup(inProps, ref) {\n const props = (0,_DefaultPropsProvider__WEBPACK_IMPORTED_MODULE_10__.useDefaultProps)({\n props: inProps,\n name: 'MuiButtonGroup'\n });\n const {\n children,\n className,\n color = 'primary',\n component = 'div',\n disabled = false,\n disableElevation = false,\n disableFocusRipple = false,\n disableRipple = false,\n fullWidth = false,\n orientation = 'horizontal',\n size = 'medium',\n variant = 'outlined'\n } = props,\n other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n color,\n component,\n disabled,\n disableElevation,\n disableFocusRipple,\n disableRipple,\n fullWidth,\n orientation,\n size,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const context = react__WEBPACK_IMPORTED_MODULE_2__.useMemo(() => ({\n className: classes.grouped,\n color,\n disabled,\n disableElevation,\n disableFocusRipple,\n disableRipple,\n fullWidth,\n size,\n variant\n }), [color, disabled, disableElevation, disableFocusRipple, disableRipple, fullWidth, size, variant, classes.grouped]);\n const validChildren = (0,_mui_utils_getValidReactChildren__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(children);\n const childrenCount = validChildren.length;\n const getButtonPositionClassName = index => {\n const isFirstButton = index === 0;\n const isLastButton = index === childrenCount - 1;\n if (isFirstButton && isLastButton) {\n return '';\n }\n if (isFirstButton) {\n return classes.firstButton;\n }\n if (isLastButton) {\n return classes.lastButton;\n }\n return classes.middleButton;\n };\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(ButtonGroupRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n as: component,\n role: \"group\",\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_ButtonGroupContext__WEBPACK_IMPORTED_MODULE_12__[\"default\"].Provider, {\n value: context,\n children: validChildren.map((child, index) => {\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(_ButtonGroupButtonContext__WEBPACK_IMPORTED_MODULE_13__[\"default\"].Provider, {\n value: getButtonPositionClassName(index),\n children: child\n }, index);\n })\n })\n }));\n});\n true ? ButtonGroup.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().node),\n /**\n * Override or extend the styles applied to the component.\n */\n classes: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n /**\n * @ignore\n */\n className: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string),\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().elementType),\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n /**\n * If `true`, no elevation is used.\n * @default false\n */\n disableElevation: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n /**\n * If `true`, the button keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n /**\n * If `true`, the button ripple effect is disabled.\n * @default false\n */\n disableRipple: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n /**\n * If `true`, the buttons will take up the full width of its container.\n * @default false\n */\n fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool),\n /**\n * The component orientation (layout flow direction).\n * @default 'horizontal'\n */\n orientation: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['horizontal', 'vertical']),\n /**\n * The size of the component.\n * `small` is equivalent to the dense button styling.\n * @default 'medium'\n */\n size: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['small', 'medium', 'large']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object)]),\n /**\n * The variant to use.\n * @default 'outlined'\n */\n variant: prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_14___default().oneOf(['contained', 'outlined', 'text']), (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string)])\n} : 0;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ButtonGroup);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/ButtonGroup/ButtonGroup.js?"); + +/***/ }), + /***/ "./node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js": /*!****************************************************************************!*\ !*** ./node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js ***! @@ -4481,6 +5053,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@mui/material/ButtonGroup/buttonGroupClasses.js": +/*!**********************************************************************!*\ + !*** ./node_modules/@mui/material/ButtonGroup/buttonGroupClasses.js ***! + \**********************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ getButtonGroupUtilityClass: () => (/* binding */ getButtonGroupUtilityClass)\n/* harmony export */ });\n/* harmony import */ var _mui_utils_generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils/generateUtilityClasses */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _mui_utils_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils/generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getButtonGroupUtilityClass(slot) {\n return (0,_mui_utils_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiButtonGroup', slot);\n}\nconst buttonGroupClasses = (0,_mui_utils_generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiButtonGroup', ['root', 'contained', 'outlined', 'text', 'disableElevation', 'disabled', 'firstButton', 'fullWidth', 'vertical', 'grouped', 'groupedHorizontal', 'groupedVertical', 'groupedText', 'groupedTextHorizontal', 'groupedTextVertical', 'groupedTextPrimary', 'groupedTextSecondary', 'groupedOutlined', 'groupedOutlinedHorizontal', 'groupedOutlinedVertical', 'groupedOutlinedPrimary', 'groupedOutlinedSecondary', 'groupedContained', 'groupedContainedHorizontal', 'groupedContainedVertical', 'groupedContainedPrimary', 'groupedContainedSecondary', 'lastButton', 'middleButton']);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (buttonGroupClasses);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/ButtonGroup/buttonGroupClasses.js?"); + +/***/ }), + /***/ "./node_modules/@mui/material/Card/Card.js": /*!*************************************************!*\ !*** ./node_modules/@mui/material/Card/Card.js ***! @@ -4679,6 +5262,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js": +/*!***************************************************************************!*\ + !*** ./node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js ***! + \***************************************************************************/ +/***/ ((__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 */ ClickAwayListener: () => (/* binding */ ClickAwayListener)\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_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useForkRef/useForkRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/elementAcceptingRef/elementAcceptingRef.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/exactProp/exactProp.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n'use client';\n\n\n\n\n\n// TODO: return `EventHandlerName extends `on${infer EventName}` ? Lowercase : never` once generatePropTypes runs with TS 4.1\n\nfunction mapEventPropToEvent(eventProp) {\n return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event, doc) {\n return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n *\n * Demos:\n *\n * - [Click-Away Listener](https://mui.com/material-ui/react-click-away-listener/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n *\n * API:\n *\n * - [ClickAwayListener API](https://mui.com/material-ui/api/click-away-listener/)\n */\nfunction ClickAwayListener(props) {\n const {\n children,\n disableReactTree = false,\n mouseEvent = 'onClick',\n onClickAway,\n touchEvent = 'onTouchEnd'\n } = props;\n const movedRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n const nodeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const activatedRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n const syntheticEventRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n // Ensure that this component is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n setTimeout(() => {\n activatedRef.current = true;\n }, 0);\n return () => {\n activatedRef.current = false;\n };\n }, []);\n const handleRef = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n // @ts-expect-error TODO upstream fix\n children.ref, nodeRef);\n\n // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n const handleClickAway = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(event => {\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false;\n const doc = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(nodeRef.current);\n\n // 1. IE11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n if (!activatedRef.current || !nodeRef.current || 'clientX' in event && clickedRootScrollbar(event, doc)) {\n return;\n }\n\n // Do not act if user performed touchmove\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n let insideDOM;\n\n // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n if (event.composedPath) {\n insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n } else {\n insideDOM = !doc.documentElement.contains(\n // @ts-expect-error returns `false` as intended when not dispatched from a Node\n event.target) || nodeRef.current.contains(\n // @ts-expect-error returns `false` as intended when not dispatched from a Node\n event.target);\n }\n if (!insideDOM && (disableReactTree || !insideReactTree)) {\n onClickAway(event);\n }\n });\n\n // Keep track of mouse/touch events that bubbled up through the portal.\n const createHandleSynthetic = handlerName => event => {\n syntheticEventRef.current = true;\n const childrenPropsHandler = children.props[handlerName];\n if (childrenPropsHandler) {\n childrenPropsHandler(event);\n }\n };\n const childrenProps = {\n ref: handleRef\n };\n if (touchEvent !== false) {\n childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n }\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (touchEvent !== false) {\n const mappedTouchEvent = mapEventPropToEvent(touchEvent);\n const doc = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(nodeRef.current);\n const handleTouchMove = () => {\n movedRef.current = true;\n };\n doc.addEventListener(mappedTouchEvent, handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return () => {\n doc.removeEventListener(mappedTouchEvent, handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n return undefined;\n }, [handleClickAway, touchEvent]);\n if (mouseEvent !== false) {\n childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n }\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (mouseEvent !== false) {\n const mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n const doc = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(nodeRef.current);\n doc.addEventListener(mappedMouseEvent, handleClickAway);\n return () => {\n doc.removeEventListener(mappedMouseEvent, handleClickAway);\n };\n }\n return undefined;\n }, [handleClickAway, mouseEvent]);\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(children, childrenProps)\n });\n}\n true ? ClickAwayListener.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The wrapped element.\n */\n children: _mui_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"].isRequired,\n /**\n * If `true`, the React tree is ignored and only the DOM tree is considered.\n * This prop changes how portaled elements are handled.\n * @default false\n */\n disableReactTree: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().bool),\n /**\n * The mouse event to listen to. You can disable the listener by providing `false`.\n * @default 'onClick'\n */\n mouseEvent: prop_types__WEBPACK_IMPORTED_MODULE_6___default().oneOf(['onClick', 'onMouseDown', 'onMouseUp', 'onPointerDown', 'onPointerUp', false]),\n /**\n * Callback fired when a \"click away\" event is detected.\n */\n onClickAway: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n /**\n * The touch event to listen to. You can disable the listener by providing `false`.\n * @default 'onTouchEnd'\n */\n touchEvent: prop_types__WEBPACK_IMPORTED_MODULE_6___default().oneOf(['onTouchEnd', 'onTouchStart', false])\n} : 0;\nif (true) {\n // eslint-disable-next-line\n ClickAwayListener['propTypes' + ''] = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(ClickAwayListener.propTypes);\n}\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js?"); + +/***/ }), + /***/ "./node_modules/@mui/material/Container/Container.js": /*!***********************************************************!*\ !*** ./node_modules/@mui/material/Container/Container.js ***! @@ -5955,6 +6549,61 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@mui/material/Snackbar/Snackbar.js": +/*!*********************************************************!*\ + !*** ./node_modules/@mui/material/Snackbar/Snackbar.js ***! + \*********************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\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_utils_composeClasses__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/utils/composeClasses */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_utils_useSlotProps__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/utils/useSlotProps */ \"./node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js\");\n/* harmony import */ var _useSnackbar__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./useSnackbar */ \"./node_modules/@mui/material/Snackbar/useSnackbar.js\");\n/* harmony import */ var _ClickAwayListener__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../ClickAwayListener */ \"./node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../styles */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _DefaultPropsProvider__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../DefaultPropsProvider */ \"./node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js\");\n/* harmony import */ var _utils_capitalize__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/capitalize */ \"./node_modules/@mui/material/utils/capitalize.js\");\n/* harmony import */ var _Grow__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../Grow */ \"./node_modules/@mui/material/Grow/Grow.js\");\n/* harmony import */ var _SnackbarContent__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../SnackbarContent */ \"./node_modules/@mui/material/SnackbarContent/SnackbarContent.js\");\n/* harmony import */ var _snackbarClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./snackbarClasses */ \"./node_modules/@mui/material/Snackbar/snackbarClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n'use client';\n\n\n\nconst _excluded = [\"onEnter\", \"onExited\"],\n _excluded2 = [\"action\", \"anchorOrigin\", \"autoHideDuration\", \"children\", \"className\", \"ClickAwayListenerProps\", \"ContentProps\", \"disableWindowBlurListener\", \"message\", \"onBlur\", \"onClose\", \"onFocus\", \"onMouseEnter\", \"onMouseLeave\", \"open\", \"resumeHideDuration\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n anchorOrigin\n } = ownerState;\n const slots = {\n root: ['root', `anchorOrigin${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(anchorOrigin.vertical)}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(anchorOrigin.horizontal)}`]\n };\n return (0,_mui_utils_composeClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _snackbarClasses__WEBPACK_IMPORTED_MODULE_6__.getSnackbarUtilityClass, classes);\n};\nconst SnackbarRoot = (0,_styles__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n name: 'MuiSnackbar',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`anchorOrigin${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(ownerState.anchorOrigin.vertical)}${(0,_utils_capitalize__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(ownerState.anchorOrigin.horizontal)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n const center = {\n left: '50%',\n right: 'auto',\n transform: 'translateX(-50%)'\n };\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n zIndex: (theme.vars || theme).zIndex.snackbar,\n position: 'fixed',\n display: 'flex',\n left: 8,\n right: 8,\n justifyContent: 'center',\n alignItems: 'center'\n }, ownerState.anchorOrigin.vertical === 'top' ? {\n top: 8\n } : {\n bottom: 8\n }, ownerState.anchorOrigin.horizontal === 'left' && {\n justifyContent: 'flex-start'\n }, ownerState.anchorOrigin.horizontal === 'right' && {\n justifyContent: 'flex-end'\n }, {\n [theme.breakpoints.up('sm')]: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState.anchorOrigin.vertical === 'top' ? {\n top: 24\n } : {\n bottom: 24\n }, ownerState.anchorOrigin.horizontal === 'center' && center, ownerState.anchorOrigin.horizontal === 'left' && {\n left: 24,\n right: 'auto'\n }, ownerState.anchorOrigin.horizontal === 'right' && {\n right: 24,\n left: 'auto'\n })\n });\n});\nconst Snackbar = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function Snackbar(inProps, ref) {\n const props = (0,_DefaultPropsProvider__WEBPACK_IMPORTED_MODULE_8__.useDefaultProps)({\n props: inProps,\n name: 'MuiSnackbar'\n });\n const theme = (0,_styles__WEBPACK_IMPORTED_MODULE_9__[\"default\"])();\n const defaultTransitionDuration = {\n enter: theme.transitions.duration.enteringScreen,\n exit: theme.transitions.duration.leavingScreen\n };\n const {\n action,\n anchorOrigin: {\n vertical,\n horizontal\n } = {\n vertical: 'bottom',\n horizontal: 'left'\n },\n autoHideDuration = null,\n children,\n className,\n ClickAwayListenerProps,\n ContentProps,\n disableWindowBlurListener = false,\n message,\n open,\n TransitionComponent = _Grow__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n transitionDuration = defaultTransitionDuration,\n TransitionProps: {\n onEnter,\n onExited\n } = {}\n } = props,\n TransitionProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props.TransitionProps, _excluded),\n other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded2);\n const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, props, {\n anchorOrigin: {\n vertical,\n horizontal\n },\n autoHideDuration,\n disableWindowBlurListener,\n TransitionComponent,\n transitionDuration\n });\n const classes = useUtilityClasses(ownerState);\n const {\n getRootProps,\n onClickAway\n } = (0,_useSnackbar__WEBPACK_IMPORTED_MODULE_11__[\"default\"])((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, ownerState));\n const [exited, setExited] = react__WEBPACK_IMPORTED_MODULE_2__.useState(true);\n const rootProps = (0,_mui_utils_useSlotProps__WEBPACK_IMPORTED_MODULE_12__[\"default\"])({\n elementType: SnackbarRoot,\n getSlotProps: getRootProps,\n externalForwardedProps: other,\n ownerState,\n additionalProps: {\n ref\n },\n className: [classes.root, className]\n });\n const handleExited = node => {\n setExited(true);\n if (onExited) {\n onExited(node);\n }\n };\n const handleEnter = (node, isAppearing) => {\n setExited(false);\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n };\n\n // So we only render active snackbars.\n if (!open && exited) {\n return null;\n }\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_ClickAwayListener__WEBPACK_IMPORTED_MODULE_13__.ClickAwayListener, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n onClickAway: onClickAway\n }, ClickAwayListenerProps, {\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(SnackbarRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, rootProps, {\n children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(TransitionComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n appear: true,\n in: open,\n timeout: transitionDuration,\n direction: vertical === 'top' ? 'down' : 'up',\n onEnter: handleEnter,\n onExited: handleExited\n }, TransitionProps, {\n children: children || /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_SnackbarContent__WEBPACK_IMPORTED_MODULE_14__[\"default\"], (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n message: message,\n action: action\n }, ContentProps))\n }))\n }))\n }));\n});\n true ? Snackbar.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The action to display. It renders after the message, at the end of the snackbar.\n */\n action: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().node),\n /**\n * The anchor of the `Snackbar`.\n * On smaller screens, the component grows to occupy all the available width,\n * the horizontal alignment is ignored.\n * @default { vertical: 'bottom', horizontal: 'left' }\n */\n anchorOrigin: prop_types__WEBPACK_IMPORTED_MODULE_15___default().shape({\n horizontal: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOf(['center', 'left', 'right']).isRequired,\n vertical: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOf(['bottom', 'top']).isRequired\n }),\n /**\n * The number of milliseconds to wait before automatically calling the\n * `onClose` function. `onClose` should then set the state of the `open`\n * prop to hide the Snackbar. This behavior is disabled by default with\n * the `null` value.\n * @default null\n */\n autoHideDuration: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().number),\n /**\n * Replace the `SnackbarContent` component.\n */\n children: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().element),\n /**\n * Override or extend the styles applied to the component.\n */\n classes: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object),\n /**\n * @ignore\n */\n className: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().string),\n /**\n * Props applied to the `ClickAwayListener` element.\n */\n ClickAwayListenerProps: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object),\n /**\n * Props applied to the [`SnackbarContent`](/material-ui/api/snackbar-content/) element.\n */\n ContentProps: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object),\n /**\n * If `true`, the `autoHideDuration` timer will expire even if the window is not focused.\n * @default false\n */\n disableWindowBlurListener: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n /**\n * When displaying multiple consecutive snackbars using a single parent-rendered\n * ``, add the `key` prop to ensure independent treatment of each message.\n * For instance, use ``. Otherwise, messages might update\n * in place, and features like `autoHideDuration` could be affected.\n */\n key: () => null,\n /**\n * The message to display.\n */\n message: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().node),\n /**\n * @ignore\n */\n onBlur: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n /**\n * Callback fired when the component requests to be closed.\n * Typically `onClose` is used to set state in the parent component,\n * which is used to control the `Snackbar` `open` prop.\n * The `reason` parameter can optionally be used to control the response to `onClose`,\n * for example ignoring `clickaway`.\n *\n * @param {React.SyntheticEvent | Event} event The event source of the callback.\n * @param {string} reason Can be: `\"timeout\"` (`autoHideDuration` expired), `\"clickaway\"`, or `\"escapeKeyDown\"`.\n */\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n /**\n * @ignore\n */\n onFocus: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n /**\n * @ignore\n */\n onMouseEnter: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n /**\n * @ignore\n */\n onMouseLeave: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func),\n /**\n * If `true`, the component is shown.\n */\n open: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool),\n /**\n * The number of milliseconds to wait before dismissing after user interaction.\n * If `autoHideDuration` prop isn't specified, it does nothing.\n * If `autoHideDuration` prop is specified but `resumeHideDuration` isn't,\n * we default to `autoHideDuration / 2` ms.\n */\n resumeHideDuration: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().number),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_15___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_15___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object)]),\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Grow\n */\n TransitionComponent: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().elementType),\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n * @default {\n * enter: theme.transitions.duration.enteringScreen,\n * exit: theme.transitions.duration.leavingScreen,\n * }\n */\n transitionDuration: prop_types__WEBPACK_IMPORTED_MODULE_15___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_15___default().number), prop_types__WEBPACK_IMPORTED_MODULE_15___default().shape({\n appear: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().number),\n enter: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().number),\n exit: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().number)\n })]),\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n * @default {}\n */\n TransitionProps: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object)\n} : 0;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Snackbar);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/Snackbar/Snackbar.js?"); + +/***/ }), + +/***/ "./node_modules/@mui/material/Snackbar/snackbarClasses.js": +/*!****************************************************************!*\ + !*** ./node_modules/@mui/material/Snackbar/snackbarClasses.js ***! + \****************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ getSnackbarUtilityClass: () => (/* binding */ getSnackbarUtilityClass)\n/* harmony export */ });\n/* harmony import */ var _mui_utils_generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils/generateUtilityClasses */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _mui_utils_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils/generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getSnackbarUtilityClass(slot) {\n return (0,_mui_utils_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiSnackbar', slot);\n}\nconst snackbarClasses = (0,_mui_utils_generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiSnackbar', ['root', 'anchorOriginTopCenter', 'anchorOriginBottomCenter', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft']);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (snackbarClasses);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/Snackbar/snackbarClasses.js?"); + +/***/ }), + +/***/ "./node_modules/@mui/material/Snackbar/useSnackbar.js": +/*!************************************************************!*\ + !*** ./node_modules/@mui/material/Snackbar/useSnackbar.js ***! + \************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useTimeout/useTimeout.js\");\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/utils */ \"./node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js\");\n/* harmony import */ var _mui_utils_extractEventHandlers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/utils/extractEventHandlers */ \"./node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js\");\n'use client';\n\n\n\n\n\n/**\n * The basic building block for creating custom snackbar.\n *\n * Demos:\n *\n * - [Snackbar](https://mui.com/base-ui/react-snackbar/#hook)\n *\n * API:\n *\n * - [useSnackbar API](https://mui.com/base-ui/react-snackbar/hooks-api/#use-snackbar)\n */\nfunction useSnackbar(parameters = {}) {\n const {\n autoHideDuration = null,\n disableWindowBlurListener = false,\n onClose,\n open,\n resumeHideDuration\n } = parameters;\n const timerAutoHide = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n react__WEBPACK_IMPORTED_MODULE_1__.useEffect(() => {\n if (!open) {\n return undefined;\n }\n\n /**\n * @param {KeyboardEvent} nativeEvent\n */\n function handleKeyDown(nativeEvent) {\n if (!nativeEvent.defaultPrevented) {\n // IE11, Edge (prior to using Blink?) use 'Esc'\n if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n // not calling `preventDefault` since we don't know if people may ignore this event e.g. a permanently open snackbar\n onClose == null || onClose(nativeEvent, 'escapeKeyDown');\n }\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [open, onClose]);\n const handleClose = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])((event, reason) => {\n onClose == null || onClose(event, reason);\n });\n const setAutoHideTimer = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(autoHideDurationParam => {\n if (!onClose || autoHideDurationParam == null) {\n return;\n }\n timerAutoHide.start(autoHideDurationParam, () => {\n handleClose(null, 'timeout');\n });\n });\n react__WEBPACK_IMPORTED_MODULE_1__.useEffect(() => {\n if (open) {\n setAutoHideTimer(autoHideDuration);\n }\n return timerAutoHide.clear;\n }, [open, autoHideDuration, setAutoHideTimer, timerAutoHide]);\n const handleClickAway = event => {\n onClose == null || onClose(event, 'clickaway');\n };\n\n // Pause the timer when the user is interacting with the Snackbar\n // or when the user hide the window.\n const handlePause = timerAutoHide.clear;\n\n // Restart the timer when the user is no longer interacting with the Snackbar\n // or when the window is shown back.\n const handleResume = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(() => {\n if (autoHideDuration != null) {\n setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);\n }\n }, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);\n const createHandleBlur = otherHandlers => event => {\n const onBlurCallback = otherHandlers.onBlur;\n onBlurCallback == null || onBlurCallback(event);\n handleResume();\n };\n const createHandleFocus = otherHandlers => event => {\n const onFocusCallback = otherHandlers.onFocus;\n onFocusCallback == null || onFocusCallback(event);\n handlePause();\n };\n const createMouseEnter = otherHandlers => event => {\n const onMouseEnterCallback = otherHandlers.onMouseEnter;\n onMouseEnterCallback == null || onMouseEnterCallback(event);\n handlePause();\n };\n const createMouseLeave = otherHandlers => event => {\n const onMouseLeaveCallback = otherHandlers.onMouseLeave;\n onMouseLeaveCallback == null || onMouseLeaveCallback(event);\n handleResume();\n };\n react__WEBPACK_IMPORTED_MODULE_1__.useEffect(() => {\n // TODO: window global should be refactored here\n if (!disableWindowBlurListener && open) {\n window.addEventListener('focus', handleResume);\n window.addEventListener('blur', handlePause);\n return () => {\n window.removeEventListener('focus', handleResume);\n window.removeEventListener('blur', handlePause);\n };\n }\n return undefined;\n }, [disableWindowBlurListener, open, handleResume, handlePause]);\n const getRootProps = (externalProps = {}) => {\n const externalEventHandlers = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, (0,_mui_utils_extractEventHandlers__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(parameters), (0,_mui_utils_extractEventHandlers__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(externalProps));\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n // ClickAwayListener adds an `onClick` prop which results in the alert not being announced.\n // See https://github.com/mui/material-ui/issues/29080\n role: 'presentation'\n }, externalProps, externalEventHandlers, {\n onBlur: createHandleBlur(externalEventHandlers),\n onFocus: createHandleFocus(externalEventHandlers),\n onMouseEnter: createMouseEnter(externalEventHandlers),\n onMouseLeave: createMouseLeave(externalEventHandlers)\n });\n };\n return {\n getRootProps,\n onClickAway: handleClickAway\n };\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useSnackbar);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/Snackbar/useSnackbar.js?"); + +/***/ }), + +/***/ "./node_modules/@mui/material/SnackbarContent/SnackbarContent.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@mui/material/SnackbarContent/SnackbarContent.js ***! + \***********************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _mui_utils_composeClasses__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/utils/composeClasses */ \"./node_modules/@mui/utils/esm/composeClasses/composeClasses.js\");\n/* harmony import */ var _mui_system_colorManipulator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/system/colorManipulator */ \"./node_modules/@mui/system/colorManipulator.js\");\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../styles/styled */ \"./node_modules/@mui/material/styles/styled.js\");\n/* harmony import */ var _DefaultPropsProvider__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../DefaultPropsProvider */ \"./node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js\");\n/* harmony import */ var _Paper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Paper */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _snackbarContentClasses__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./snackbarContentClasses */ \"./node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n'use client';\n\n\n\nconst _excluded = [\"action\", \"className\", \"message\", \"role\"];\n\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n action: ['action'],\n message: ['message']\n };\n return (0,_mui_utils_composeClasses__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(slots, _snackbarContentClasses__WEBPACK_IMPORTED_MODULE_6__.getSnackbarContentUtilityClass, classes);\n};\nconst SnackbarContentRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_Paper__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n name: 'MuiSnackbarContent',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => {\n const emphasis = theme.palette.mode === 'light' ? 0.8 : 0.98;\n const backgroundColor = (0,_mui_system_colorManipulator__WEBPACK_IMPORTED_MODULE_9__.emphasize)(theme.palette.background.default, emphasis);\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, theme.typography.body2, {\n color: theme.vars ? theme.vars.palette.SnackbarContent.color : theme.palette.getContrastText(backgroundColor),\n backgroundColor: theme.vars ? theme.vars.palette.SnackbarContent.bg : backgroundColor,\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n padding: '6px 16px',\n borderRadius: (theme.vars || theme).shape.borderRadius,\n flexGrow: 1,\n [theme.breakpoints.up('sm')]: {\n flexGrow: 'initial',\n minWidth: 288\n }\n });\n});\nconst SnackbarContentMessage = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n name: 'MuiSnackbarContent',\n slot: 'Message',\n overridesResolver: (props, styles) => styles.message\n})({\n padding: '8px 0'\n});\nconst SnackbarContentAction = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_7__[\"default\"])('div', {\n name: 'MuiSnackbarContent',\n slot: 'Action',\n overridesResolver: (props, styles) => styles.action\n})({\n display: 'flex',\n alignItems: 'center',\n marginLeft: 'auto',\n paddingLeft: 16,\n marginRight: -8\n});\nconst SnackbarContent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2__.forwardRef(function SnackbarContent(inProps, ref) {\n const props = (0,_DefaultPropsProvider__WEBPACK_IMPORTED_MODULE_10__.useDefaultProps)({\n props: inProps,\n name: 'MuiSnackbarContent'\n });\n const {\n action,\n className,\n message,\n role = 'alert'\n } = props,\n other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, _excluded);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(SnackbarContentRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n role: role,\n square: true,\n elevation: 6,\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(SnackbarContentMessage, {\n className: classes.message,\n ownerState: ownerState,\n children: message\n }), action ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(SnackbarContentAction, {\n className: classes.action,\n ownerState: ownerState,\n children: action\n }) : null]\n }));\n});\n true ? SnackbarContent.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The action to display. It renders after the message, at the end of the snackbar.\n */\n action: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n /**\n * Override or extend the styles applied to the component.\n */\n classes: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object),\n /**\n * @ignore\n */\n className: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n /**\n * The message to display.\n */\n message: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().node),\n /**\n * The ARIA role attribute of the element.\n * @default 'alert'\n */\n role: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_11___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().bool)])), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_11___default().object)])\n} : 0;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SnackbarContent);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/SnackbarContent/SnackbarContent.js?"); + +/***/ }), + +/***/ "./node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js ***! + \******************************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ getSnackbarContentUtilityClass: () => (/* binding */ getSnackbarContentUtilityClass)\n/* harmony export */ });\n/* harmony import */ var _mui_utils_generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/utils/generateUtilityClasses */ \"./node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js\");\n/* harmony import */ var _mui_utils_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mui/utils/generateUtilityClass */ \"./node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js\");\n\n\nfunction getSnackbarContentUtilityClass(slot) {\n return (0,_mui_utils_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__[\"default\"])('MuiSnackbarContent', slot);\n}\nconst snackbarContentClasses = (0,_mui_utils_generateUtilityClasses__WEBPACK_IMPORTED_MODULE_1__[\"default\"])('MuiSnackbarContent', ['root', 'message', 'action']);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (snackbarContentClasses);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js?"); + +/***/ }), + /***/ "./node_modules/@mui/material/Stack/Stack.js": /*!***************************************************!*\ !*** ./node_modules/@mui/material/Stack/Stack.js ***! @@ -6516,6 +7165,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@mui/material/internal/svg-icons/ErrorOutline.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@mui/material/internal/svg-icons/ErrorOutline.js ***! + \***********************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\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 _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n'use client';\n\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline'));\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/internal/svg-icons/ErrorOutline.js?"); + +/***/ }), + /***/ "./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js": /*!********************************************************************************!*\ !*** ./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js ***! @@ -6527,6 +7187,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@mui/material/internal/svg-icons/InfoOutlined.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@mui/material/internal/svg-icons/InfoOutlined.js ***! + \***********************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\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 _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n'use client';\n\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n d: \"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z\"\n}), 'InfoOutlined'));\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/internal/svg-icons/InfoOutlined.js?"); + +/***/ }), + /***/ "./node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js": /*!****************************************************************************!*\ !*** ./node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js ***! @@ -6582,6 +7253,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js ***! + \********************************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\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 _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n'use client';\n\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n d: \"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"\n}), 'ReportProblemOutlined'));\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js?"); + +/***/ }), + +/***/ "./node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js ***! + \**************************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\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 _utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/createSvgIcon */ \"./node_modules/@mui/material/utils/createSvgIcon.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n'use client';\n\n\n\n\n/**\n * @ignore - internal component.\n */\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils_createSvgIcon__WEBPACK_IMPORTED_MODULE_2__[\"default\"])( /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"path\", {\n d: \"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z\"\n}), 'SuccessOutlined'));\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js?"); + +/***/ }), + /***/ "./node_modules/@mui/material/internal/switchBaseClasses.js": /*!******************************************************************!*\ !*** ./node_modules/@mui/material/internal/switchBaseClasses.js ***! @@ -7737,6 +8430,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/@mui/utils/esm/getValidReactChildren/getValidReactChildren.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@mui/utils/esm/getValidReactChildren/getValidReactChildren.js ***! + \************************************************************************************/ +/***/ ((__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 */ \"default\": () => (/* binding */ getValidReactChildren)\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\n\n/**\n * Gets only the valid children of a component,\n * and ignores any nullish or falsy child.\n *\n * @param children the children\n */\nfunction getValidReactChildren(children) {\n return react__WEBPACK_IMPORTED_MODULE_0__.Children.toArray(children).filter(child => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(child));\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/@mui/utils/esm/getValidReactChildren/getValidReactChildren.js?"); + +/***/ }), + /***/ "./node_modules/@mui/utils/esm/integerPropType/integerPropType.js": /*!************************************************************************!*\ !*** ./node_modules/@mui/utils/esm/integerPropType/integerPropType.js ***! @@ -8737,6 +9441,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/css-box-model/dist/css-box-model.esm.js": +/*!**************************************************************!*\ + !*** ./node_modules/css-box-model/dist/css-box-model.esm.js ***! + \**************************************************************/ +/***/ ((__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 */ calculateBox: () => (/* binding */ calculateBox),\n/* harmony export */ createBox: () => (/* binding */ createBox),\n/* harmony export */ expand: () => (/* binding */ expand),\n/* harmony export */ getBox: () => (/* binding */ getBox),\n/* harmony export */ getRect: () => (/* binding */ getRect),\n/* harmony export */ offset: () => (/* binding */ offset),\n/* harmony export */ shrink: () => (/* binding */ shrink),\n/* harmony export */ withScroll: () => (/* binding */ withScroll)\n/* harmony export */ });\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tiny-invariant */ \"./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\");\n\n\nvar getRect = function getRect(_ref) {\n var top = _ref.top,\n right = _ref.right,\n bottom = _ref.bottom,\n left = _ref.left;\n var width = right - left;\n var height = bottom - top;\n var rect = {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: width,\n height: height,\n x: left,\n y: top,\n center: {\n x: (right + left) / 2,\n y: (bottom + top) / 2\n }\n };\n return rect;\n};\nvar expand = function expand(target, expandBy) {\n return {\n top: target.top - expandBy.top,\n left: target.left - expandBy.left,\n bottom: target.bottom + expandBy.bottom,\n right: target.right + expandBy.right\n };\n};\nvar shrink = function shrink(target, shrinkBy) {\n return {\n top: target.top + shrinkBy.top,\n left: target.left + shrinkBy.left,\n bottom: target.bottom - shrinkBy.bottom,\n right: target.right - shrinkBy.right\n };\n};\n\nvar shift = function shift(target, shiftBy) {\n return {\n top: target.top + shiftBy.y,\n left: target.left + shiftBy.x,\n bottom: target.bottom + shiftBy.y,\n right: target.right + shiftBy.x\n };\n};\n\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nvar createBox = function createBox(_ref2) {\n var borderBox = _ref2.borderBox,\n _ref2$margin = _ref2.margin,\n margin = _ref2$margin === void 0 ? noSpacing : _ref2$margin,\n _ref2$border = _ref2.border,\n border = _ref2$border === void 0 ? noSpacing : _ref2$border,\n _ref2$padding = _ref2.padding,\n padding = _ref2$padding === void 0 ? noSpacing : _ref2$padding;\n var marginBox = getRect(expand(borderBox, margin));\n var paddingBox = getRect(shrink(borderBox, border));\n var contentBox = getRect(shrink(paddingBox, padding));\n return {\n marginBox: marginBox,\n borderBox: getRect(borderBox),\n paddingBox: paddingBox,\n contentBox: contentBox,\n margin: margin,\n border: border,\n padding: padding\n };\n};\n\nvar parse = function parse(raw) {\n var value = raw.slice(0, -2);\n var suffix = raw.slice(-2);\n\n if (suffix !== 'px') {\n return 0;\n }\n\n var result = Number(value);\n !!isNaN(result) ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(false, \"Could not parse value [raw: \" + raw + \", without suffix: \" + value + \"]\") : 0 : void 0;\n return result;\n};\n\nvar getWindowScroll = function getWindowScroll() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};\n\nvar offset = function offset(original, change) {\n var borderBox = original.borderBox,\n border = original.border,\n margin = original.margin,\n padding = original.padding;\n var shifted = shift(borderBox, change);\n return createBox({\n borderBox: shifted,\n border: border,\n margin: margin,\n padding: padding\n });\n};\nvar withScroll = function withScroll(original, scroll) {\n if (scroll === void 0) {\n scroll = getWindowScroll();\n }\n\n return offset(original, scroll);\n};\nvar calculateBox = function calculateBox(borderBox, styles) {\n var margin = {\n top: parse(styles.marginTop),\n right: parse(styles.marginRight),\n bottom: parse(styles.marginBottom),\n left: parse(styles.marginLeft)\n };\n var padding = {\n top: parse(styles.paddingTop),\n right: parse(styles.paddingRight),\n bottom: parse(styles.paddingBottom),\n left: parse(styles.paddingLeft)\n };\n var border = {\n top: parse(styles.borderTopWidth),\n right: parse(styles.borderRightWidth),\n bottom: parse(styles.borderBottomWidth),\n left: parse(styles.borderLeftWidth)\n };\n return createBox({\n borderBox: borderBox,\n margin: margin,\n padding: padding,\n border: border\n });\n};\nvar getBox = function getBox(el) {\n var borderBox = el.getBoundingClientRect();\n var styles = window.getComputedStyle(el);\n return calculateBox(borderBox, styles);\n};\n\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/css-box-model/dist/css-box-model.esm.js?"); + +/***/ }), + /***/ "./node_modules/css-loader/dist/cjs.js!./app/panels/panels_editor/panels_editor.css": /*!******************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./app/panels/panels_editor/panels_editor.css ***! @@ -8748,17 +9463,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), -/***/ "./node_modules/css-loader/dist/cjs.js!./app/panels/query_editor/components/entity/entity.css": -/*!****************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js!./app/panels/query_editor/components/entity/entity.css ***! - \****************************************************************************************************/ -/***/ ((module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.entity__wrapper {\r\n width: 100%;\r\n height: 100%;\r\n border: 1px solid var(--border-color-dark);\r\n border-radius: 6px;\r\n box-shadow: var(--shadow-entity);\r\n overflow: hidden;\r\n background-color: white;\r\n}\r\n\r\n.entity__wrapper[data-selected=\"true\"] {\r\n outline: 1px solid var(--outline-color);\r\n border-color: var(--outline-color);\r\n}\r\n\r\n.entity__title {\r\n width: 100%;\r\n height: 50px;\r\n align-content: center;\r\n border-bottom: 1px solid var(--border-color);\r\n font-weight: 900;\r\n text-align: center;\r\n background-color: var(--entity-title-bg);\r\n cursor: move;\r\n}\r\n\r\n.entity__name {\r\n width: 100%;\r\n align-content: center;\r\n text-align: center;\r\n font-size: 0.8rem;\r\n color: gray;\r\n}\r\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/entity/entity.css?./node_modules/css-loader/dist/cjs.js"); - -/***/ }), - /***/ "./node_modules/css-loader/dist/cjs.js!./app/panels/query_editor/components/query_diagram/query_diagram.css": /*!******************************************************************************************************************!*\ !*** ./node_modules/css-loader/dist/cjs.js!./app/panels/query_editor/components/query_diagram/query_diagram.css ***! @@ -10001,6 +10705,16 @@ eval("!function(t,e){ true?module.exports=e():0}(this,(function(){\"use strict\" /***/ }), +/***/ "./node_modules/dayjs/plugin/customParseFormat.js": +/*!********************************************************!*\ + !*** ./node_modules/dayjs/plugin/customParseFormat.js ***! + \********************************************************/ +/***/ (function(module) { + +eval("!function(e,t){ true?module.exports=t():0}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/dayjs/plugin/customParseFormat.js?"); + +/***/ }), + /***/ "./node_modules/decode-uri-component/index.js": /*!****************************************************!*\ !*** ./node_modules/decode-uri-component/index.js ***! @@ -10193,6 +10907,17 @@ eval("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs /***/ }), +/***/ "./node_modules/memoize-one/dist/memoize-one.esm.js": +/*!**********************************************************!*\ + !*** ./node_modules/memoize-one/dist/memoize-one.esm.js ***! + \**********************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (memoizeOne);\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/memoize-one/dist/memoize-one.esm.js?"); + +/***/ }), + /***/ "./node_modules/object-assign/index.js": /*!*********************************************!*\ !*** ./node_modules/object-assign/index.js ***! @@ -10301,6 +11026,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/raf-schd/dist/raf-schd.esm.js": +/*!****************************************************!*\ + !*** ./node_modules/raf-schd/dist/raf-schd.esm.js ***! + \****************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nvar rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (rafSchd);\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/raf-schd/dist/raf-schd.esm.js?"); + +/***/ }), + +/***/ "./node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js": +/*!**************************************************************************!*\ + !*** ./node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js ***! + \**************************************************************************/ +/***/ ((__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 */ DragDropContext: () => (/* binding */ DragDropContext),\n/* harmony export */ Draggable: () => (/* binding */ PublicDraggable),\n/* harmony export */ Droppable: () => (/* binding */ ConnectedDroppable),\n/* harmony export */ resetServerContext: () => (/* binding */ resetServerContext),\n/* harmony export */ useKeyboardSensor: () => (/* binding */ useKeyboardSensor),\n/* harmony export */ useMouseSensor: () => (/* binding */ useMouseSensor),\n/* harmony export */ useTouchSensor: () => (/* binding */ useTouchSensor)\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 _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ \"./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! redux */ \"./node_modules/redux/es/redux.js\");\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var use_memo_one__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! use-memo-one */ \"./node_modules/use-memo-one/dist/use-memo-one.esm.js\");\n/* harmony import */ var css_box_model__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! css-box-model */ \"./node_modules/css-box-model/dist/css-box-model.esm.js\");\n/* harmony import */ var memoize_one__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! memoize-one */ \"./node_modules/memoize-one/dist/memoize-one.esm.js\");\n/* harmony import */ var raf_schd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! raf-schd */ \"./node_modules/raf-schd/dist/raf-schd.esm.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar isProduction = \"development\" === 'production';\nvar spacesAndTabs = /[ \\t]{2,}/g;\nvar lineStartWithSpaces = /^[ \\t]*/gm;\n\nvar clean = function clean(value) {\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n};\n\nvar getDevMessage = function getDevMessage(message) {\n return clean(\"\\n %creact-beautiful-dnd\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development only message. It will be removed in production builds.\\n\");\n};\n\nvar getFormattedMessage = function getFormattedMessage(message) {\n return [getDevMessage(message), 'color: #00C584; font-size: 1.2em; font-weight: bold;', 'line-height: 1.5', 'color: #723874;'];\n};\nvar isDisabledFlag = '__react-beautiful-dnd-disable-dev-warnings';\nfunction log(type, message) {\n var _console;\n\n if (isProduction) {\n return;\n }\n\n if (typeof window !== 'undefined' && window[isDisabledFlag]) {\n return;\n }\n\n (_console = console)[type].apply(_console, getFormattedMessage(message));\n}\nvar warning = log.bind(null, 'warn');\nvar error = log.bind(null, 'error');\n\nfunction noop() {}\n\nfunction getOptions(shared, fromBinding) {\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, shared, {}, fromBinding);\n}\n\nfunction bindEvents(el, bindings, sharedOptions) {\n var unbindings = bindings.map(function (binding) {\n var options = getOptions(sharedOptions, binding.options);\n el.addEventListener(binding.eventName, binding.fn, options);\n return function unbind() {\n el.removeEventListener(binding.eventName, binding.fn, options);\n };\n });\n return function unbindAll() {\n unbindings.forEach(function (unbind) {\n unbind();\n });\n };\n}\n\nvar isProduction$1 = \"development\" === 'production';\nvar prefix = 'Invariant failed';\nfunction RbdInvariant(message) {\n this.message = message;\n}\n\nRbdInvariant.prototype.toString = function toString() {\n return this.message;\n};\n\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction$1) {\n throw new RbdInvariant(prefix);\n } else {\n throw new RbdInvariant(prefix + \": \" + (message || ''));\n }\n}\n\nvar ErrorBoundary = function (_React$Component) {\n (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.callbacks = null;\n _this.unbind = noop;\n\n _this.onWindowError = function (event) {\n var callbacks = _this.getCallbacks();\n\n if (callbacks.isDragging()) {\n callbacks.tryAbort();\n true ? warning(\"\\n An error was caught by our window 'error' event listener while a drag was occurring.\\n The active drag has been aborted.\\n \") : 0;\n }\n\n var err = event.error;\n\n if (err instanceof RbdInvariant) {\n event.preventDefault();\n\n if (true) {\n error(err.message);\n }\n }\n };\n\n _this.getCallbacks = function () {\n if (!_this.callbacks) {\n throw new Error('Unable to find AppCallbacks in ');\n }\n\n return _this.callbacks;\n };\n\n _this.setCallbacks = function (callbacks) {\n _this.callbacks = callbacks;\n };\n\n return _this;\n }\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.unbind = bindEvents(window, [{\n eventName: 'error',\n fn: this.onWindowError\n }]);\n };\n\n _proto.componentDidCatch = function componentDidCatch(err) {\n if (err instanceof RbdInvariant) {\n if (true) {\n error(err.message);\n }\n\n this.setState({});\n return;\n }\n\n throw err;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.unbind();\n };\n\n _proto.render = function render() {\n return this.props.children(this.setCallbacks);\n };\n\n return ErrorBoundary;\n}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));\n\nvar dragHandleUsageInstructions = \"\\n Press space bar to start a drag.\\n When dragging you can use the arrow keys to move the item around and escape to cancel.\\n Some screen readers may require you to be in focus mode or to use your pass through key\\n\";\n\nvar position = function position(index) {\n return index + 1;\n};\n\nvar onDragStart = function onDragStart(start) {\n return \"\\n You have lifted an item in position \" + position(start.source.index) + \"\\n\";\n};\n\nvar withLocation = function withLocation(source, destination) {\n var isInHomeList = source.droppableId === destination.droppableId;\n var startPosition = position(source.index);\n var endPosition = position(destination.index);\n\n if (isInHomeList) {\n return \"\\n You have moved the item from position \" + startPosition + \"\\n to position \" + endPosition + \"\\n \";\n }\n\n return \"\\n You have moved the item from position \" + startPosition + \"\\n in list \" + source.droppableId + \"\\n to list \" + destination.droppableId + \"\\n in position \" + endPosition + \"\\n \";\n};\n\nvar withCombine = function withCombine(id, source, combine) {\n var inHomeList = source.droppableId === combine.droppableId;\n\n if (inHomeList) {\n return \"\\n The item \" + id + \"\\n has been combined with \" + combine.draggableId;\n }\n\n return \"\\n The item \" + id + \"\\n in list \" + source.droppableId + \"\\n has been combined with \" + combine.draggableId + \"\\n in list \" + combine.droppableId + \"\\n \";\n};\n\nvar onDragUpdate = function onDragUpdate(update) {\n var location = update.destination;\n\n if (location) {\n return withLocation(update.source, location);\n }\n\n var combine = update.combine;\n\n if (combine) {\n return withCombine(update.draggableId, update.source, combine);\n }\n\n return 'You are over an area that cannot be dropped on';\n};\n\nvar returnedToStart = function returnedToStart(source) {\n return \"\\n The item has returned to its starting position\\n of \" + position(source.index) + \"\\n\";\n};\n\nvar onDragEnd = function onDragEnd(result) {\n if (result.reason === 'CANCEL') {\n return \"\\n Movement cancelled.\\n \" + returnedToStart(result.source) + \"\\n \";\n }\n\n var location = result.destination;\n var combine = result.combine;\n\n if (location) {\n return \"\\n You have dropped the item.\\n \" + withLocation(result.source, location) + \"\\n \";\n }\n\n if (combine) {\n return \"\\n You have dropped the item.\\n \" + withCombine(result.draggableId, result.source, combine) + \"\\n \";\n }\n\n return \"\\n The item has been dropped while not over a drop area.\\n \" + returnedToStart(result.source) + \"\\n \";\n};\n\nvar preset = {\n dragHandleUsageInstructions: dragHandleUsageInstructions,\n onDragStart: onDragStart,\n onDragUpdate: onDragUpdate,\n onDragEnd: onDragEnd\n};\n\nvar origin = {\n x: 0,\n y: 0\n};\nvar add = function add(point1, point2) {\n return {\n x: point1.x + point2.x,\n y: point1.y + point2.y\n };\n};\nvar subtract = function subtract(point1, point2) {\n return {\n x: point1.x - point2.x,\n y: point1.y - point2.y\n };\n};\nvar isEqual = function isEqual(point1, point2) {\n return point1.x === point2.x && point1.y === point2.y;\n};\nvar negate = function negate(point) {\n return {\n x: point.x !== 0 ? -point.x : 0,\n y: point.y !== 0 ? -point.y : 0\n };\n};\nvar patch = function patch(line, value, otherValue) {\n var _ref;\n\n if (otherValue === void 0) {\n otherValue = 0;\n }\n\n return _ref = {}, _ref[line] = value, _ref[line === 'x' ? 'y' : 'x'] = otherValue, _ref;\n};\nvar distance = function distance(point1, point2) {\n return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\n};\nvar closest = function closest(target, points) {\n return Math.min.apply(Math, points.map(function (point) {\n return distance(target, point);\n }));\n};\nvar apply = function apply(fn) {\n return function (point) {\n return {\n x: fn(point.x),\n y: fn(point.y)\n };\n };\n};\n\nvar executeClip = (function (frame, subject) {\n var result = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.getRect)({\n top: Math.max(subject.top, frame.top),\n right: Math.min(subject.right, frame.right),\n bottom: Math.min(subject.bottom, frame.bottom),\n left: Math.max(subject.left, frame.left)\n });\n\n if (result.width <= 0 || result.height <= 0) {\n return null;\n }\n\n return result;\n});\n\nvar offsetByPosition = function offsetByPosition(spacing, point) {\n return {\n top: spacing.top + point.y,\n left: spacing.left + point.x,\n bottom: spacing.bottom + point.y,\n right: spacing.right + point.x\n };\n};\nvar getCorners = function getCorners(spacing) {\n return [{\n x: spacing.left,\n y: spacing.top\n }, {\n x: spacing.right,\n y: spacing.top\n }, {\n x: spacing.left,\n y: spacing.bottom\n }, {\n x: spacing.right,\n y: spacing.bottom\n }];\n};\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\n\nvar scroll = function scroll(target, frame) {\n if (!frame) {\n return target;\n }\n\n return offsetByPosition(target, frame.scroll.diff.displacement);\n};\n\nvar increase = function increase(target, axis, withPlaceholder) {\n if (withPlaceholder && withPlaceholder.increasedBy) {\n var _extends2;\n\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, target, (_extends2 = {}, _extends2[axis.end] = target[axis.end] + withPlaceholder.increasedBy[axis.line], _extends2));\n }\n\n return target;\n};\n\nvar clip = function clip(target, frame) {\n if (frame && frame.shouldClipSubject) {\n return executeClip(frame.pageMarginBox, target);\n }\n\n return (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.getRect)(target);\n};\n\nvar getSubject = (function (_ref) {\n var page = _ref.page,\n withPlaceholder = _ref.withPlaceholder,\n axis = _ref.axis,\n frame = _ref.frame;\n var scrolled = scroll(page.marginBox, frame);\n var increased = increase(scrolled, axis, withPlaceholder);\n var clipped = clip(increased, frame);\n return {\n page: page,\n withPlaceholder: withPlaceholder,\n active: clipped\n };\n});\n\nvar scrollDroppable = (function (droppable, newScroll) {\n !droppable.frame ? true ? invariant(false) : 0 : void 0;\n var scrollable = droppable.frame;\n var scrollDiff = subtract(newScroll, scrollable.scroll.initial);\n var scrollDisplacement = negate(scrollDiff);\n\n var frame = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, scrollable, {\n scroll: {\n initial: scrollable.scroll.initial,\n current: newScroll,\n diff: {\n value: scrollDiff,\n displacement: scrollDisplacement\n },\n max: scrollable.scroll.max\n }\n });\n\n var subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: droppable.subject.withPlaceholder,\n axis: droppable.axis,\n frame: frame\n });\n\n var result = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, droppable, {\n frame: frame,\n subject: subject\n });\n\n return result;\n});\n\nfunction isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction values(map) {\n if (Object.values) {\n return Object.values(map);\n }\n\n return Object.keys(map).map(function (key) {\n return map[key];\n });\n}\nfunction findIndex(list, predicate) {\n if (list.findIndex) {\n return list.findIndex(predicate);\n }\n\n for (var i = 0; i < list.length; i++) {\n if (predicate(list[i])) {\n return i;\n }\n }\n\n return -1;\n}\nfunction find(list, predicate) {\n if (list.find) {\n return list.find(predicate);\n }\n\n var index = findIndex(list, predicate);\n\n if (index !== -1) {\n return list[index];\n }\n\n return undefined;\n}\nfunction toArray(list) {\n return Array.prototype.slice.call(list);\n}\n\nvar toDroppableMap = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (droppables) {\n return droppables.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n});\nvar toDraggableMap = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (draggables) {\n return draggables.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n});\nvar toDroppableList = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (droppables) {\n return values(droppables);\n});\nvar toDraggableList = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (draggables) {\n return values(draggables);\n});\n\nvar getDraggablesInsideDroppable = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (droppableId, draggables) {\n var result = toDraggableList(draggables).filter(function (draggable) {\n return droppableId === draggable.descriptor.droppableId;\n }).sort(function (a, b) {\n return a.descriptor.index - b.descriptor.index;\n });\n return result;\n});\n\nfunction tryGetDestination(impact) {\n if (impact.at && impact.at.type === 'REORDER') {\n return impact.at.destination;\n }\n\n return null;\n}\nfunction tryGetCombine(impact) {\n if (impact.at && impact.at.type === 'COMBINE') {\n return impact.at.combine;\n }\n\n return null;\n}\n\nvar removeDraggableFromList = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (remove, list) {\n return list.filter(function (item) {\n return item.descriptor.id !== remove.descriptor.id;\n });\n});\n\nvar moveToNextCombine = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggable = _ref.draggable,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var location = tryGetDestination(previousImpact);\n\n if (!location) {\n return null;\n }\n\n function getImpact(target) {\n var at = {\n type: 'COMBINE',\n combine: {\n draggableId: target,\n droppableId: destination.descriptor.id\n }\n };\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, previousImpact, {\n at: at\n });\n }\n\n var all = previousImpact.displaced.all;\n var closestId = all.length ? all[0] : null;\n\n if (isMovingForward) {\n return closestId ? getImpact(closestId) : null;\n }\n\n var withoutDraggable = removeDraggableFromList(draggable, insideDestination);\n\n if (!closestId) {\n if (!withoutDraggable.length) {\n return null;\n }\n\n var last = withoutDraggable[withoutDraggable.length - 1];\n return getImpact(last.descriptor.id);\n }\n\n var indexOfClosest = findIndex(withoutDraggable, function (d) {\n return d.descriptor.id === closestId;\n });\n !(indexOfClosest !== -1) ? true ? invariant(false, 'Could not find displaced item in set') : 0 : void 0;\n var proposedIndex = indexOfClosest - 1;\n\n if (proposedIndex < 0) {\n return null;\n }\n\n var before = withoutDraggable[proposedIndex];\n return getImpact(before.descriptor.id);\n});\n\nvar isHomeOf = (function (draggable, destination) {\n return draggable.descriptor.droppableId === destination.descriptor.id;\n});\n\nvar noDisplacedBy = {\n point: origin,\n value: 0\n};\nvar emptyGroups = {\n invisible: {},\n visible: {},\n all: []\n};\nvar noImpact = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: null\n};\n\nvar isWithin = (function (lowerBound, upperBound) {\n return function (value) {\n return lowerBound <= value && value <= upperBound;\n };\n});\n\nvar isPartiallyVisibleThroughFrame = (function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n\n if (isContained) {\n return true;\n }\n\n var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n\n if (isPartiallyContained) {\n return true;\n }\n\n var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n\n if (isTargetBiggerThanFrame) {\n return true;\n }\n\n var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n return isTargetBiggerOnOneAxis;\n };\n});\n\nvar isTotallyVisibleThroughFrame = (function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n return isContained;\n };\n});\n\nvar vertical = {\n direction: 'vertical',\n line: 'y',\n crossAxisLine: 'x',\n start: 'top',\n end: 'bottom',\n size: 'height',\n crossAxisStart: 'left',\n crossAxisEnd: 'right',\n crossAxisSize: 'width'\n};\nvar horizontal = {\n direction: 'horizontal',\n line: 'x',\n crossAxisLine: 'y',\n start: 'left',\n end: 'right',\n size: 'width',\n crossAxisStart: 'top',\n crossAxisEnd: 'bottom',\n crossAxisSize: 'height'\n};\n\nvar isTotallyVisibleThroughFrameOnAxis = (function (axis) {\n return function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n if (axis === vertical) {\n return isWithinVertical(subject.top) && isWithinVertical(subject.bottom);\n }\n\n return isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n };\n };\n});\n\nvar getDroppableDisplaced = function getDroppableDisplaced(target, destination) {\n var displacement = destination.frame ? destination.frame.scroll.diff.displacement : origin;\n return offsetByPosition(target, displacement);\n};\n\nvar isVisibleInDroppable = function isVisibleInDroppable(target, destination, isVisibleThroughFrameFn) {\n if (!destination.subject.active) {\n return false;\n }\n\n return isVisibleThroughFrameFn(destination.subject.active)(target);\n};\n\nvar isVisibleInViewport = function isVisibleInViewport(target, viewport, isVisibleThroughFrameFn) {\n return isVisibleThroughFrameFn(viewport)(target);\n};\n\nvar isVisible = function isVisible(_ref) {\n var toBeDisplaced = _ref.target,\n destination = _ref.destination,\n viewport = _ref.viewport,\n withDroppableDisplacement = _ref.withDroppableDisplacement,\n isVisibleThroughFrameFn = _ref.isVisibleThroughFrameFn;\n var displacedTarget = withDroppableDisplacement ? getDroppableDisplaced(toBeDisplaced, destination) : toBeDisplaced;\n return isVisibleInDroppable(displacedTarget, destination, isVisibleThroughFrameFn) && isVisibleInViewport(displacedTarget, viewport, isVisibleThroughFrameFn);\n};\n\nvar isPartiallyVisible = function isPartiallyVisible(args) {\n return isVisible((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, args, {\n isVisibleThroughFrameFn: isPartiallyVisibleThroughFrame\n }));\n};\nvar isTotallyVisible = function isTotallyVisible(args) {\n return isVisible((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, args, {\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrame\n }));\n};\nvar isTotallyVisibleOnAxis = function isTotallyVisibleOnAxis(args) {\n return isVisible((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, args, {\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrameOnAxis(args.destination.axis)\n }));\n};\n\nvar getShouldAnimate = function getShouldAnimate(id, last, forceShouldAnimate) {\n if (typeof forceShouldAnimate === 'boolean') {\n return forceShouldAnimate;\n }\n\n if (!last) {\n return true;\n }\n\n var invisible = last.invisible,\n visible = last.visible;\n\n if (invisible[id]) {\n return false;\n }\n\n var previous = visible[id];\n return previous ? previous.shouldAnimate : true;\n};\n\nfunction getTarget(draggable, displacedBy) {\n var marginBox = draggable.page.marginBox;\n var expandBy = {\n top: displacedBy.point.y,\n right: 0,\n bottom: 0,\n left: displacedBy.point.x\n };\n return (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.getRect)((0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.expand)(marginBox, expandBy));\n}\n\nfunction getDisplacementGroups(_ref) {\n var afterDragging = _ref.afterDragging,\n destination = _ref.destination,\n displacedBy = _ref.displacedBy,\n viewport = _ref.viewport,\n forceShouldAnimate = _ref.forceShouldAnimate,\n last = _ref.last;\n return afterDragging.reduce(function process(groups, draggable) {\n var target = getTarget(draggable, displacedBy);\n var id = draggable.descriptor.id;\n groups.all.push(id);\n var isVisible = isPartiallyVisible({\n target: target,\n destination: destination,\n viewport: viewport,\n withDroppableDisplacement: true\n });\n\n if (!isVisible) {\n groups.invisible[draggable.descriptor.id] = true;\n return groups;\n }\n\n var shouldAnimate = getShouldAnimate(id, last, forceShouldAnimate);\n var displacement = {\n draggableId: id,\n shouldAnimate: shouldAnimate\n };\n groups.visible[id] = displacement;\n return groups;\n }, {\n all: [],\n visible: {},\n invisible: {}\n });\n}\n\nfunction getIndexOfLastItem(draggables, options) {\n if (!draggables.length) {\n return 0;\n }\n\n var indexOfLastItem = draggables[draggables.length - 1].descriptor.index;\n return options.inHomeList ? indexOfLastItem : indexOfLastItem + 1;\n}\n\nfunction goAtEnd(_ref) {\n var insideDestination = _ref.insideDestination,\n inHomeList = _ref.inHomeList,\n displacedBy = _ref.displacedBy,\n destination = _ref.destination;\n var newIndex = getIndexOfLastItem(insideDestination, {\n inHomeList: inHomeList\n });\n return {\n displaced: emptyGroups,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: newIndex\n }\n }\n };\n}\n\nfunction calculateReorderImpact(_ref2) {\n var draggable = _ref2.draggable,\n insideDestination = _ref2.insideDestination,\n destination = _ref2.destination,\n viewport = _ref2.viewport,\n displacedBy = _ref2.displacedBy,\n last = _ref2.last,\n index = _ref2.index,\n forceShouldAnimate = _ref2.forceShouldAnimate;\n var inHomeList = isHomeOf(draggable, destination);\n\n if (index == null) {\n return goAtEnd({\n insideDestination: insideDestination,\n inHomeList: inHomeList,\n displacedBy: displacedBy,\n destination: destination\n });\n }\n\n var match = find(insideDestination, function (item) {\n return item.descriptor.index === index;\n });\n\n if (!match) {\n return goAtEnd({\n insideDestination: insideDestination,\n inHomeList: inHomeList,\n displacedBy: displacedBy,\n destination: destination\n });\n }\n\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var sliceFrom = insideDestination.indexOf(match);\n var impacted = withoutDragging.slice(sliceFrom);\n var displaced = getDisplacementGroups({\n afterDragging: impacted,\n destination: destination,\n displacedBy: displacedBy,\n last: last,\n viewport: viewport.frame,\n forceShouldAnimate: forceShouldAnimate\n });\n return {\n displaced: displaced,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: index\n }\n }\n };\n}\n\nfunction didStartAfterCritical(draggableId, afterCritical) {\n return Boolean(afterCritical.effected[draggableId]);\n}\n\nvar fromCombine = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n destination = _ref.destination,\n draggables = _ref.draggables,\n combine = _ref.combine,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var combineId = combine.draggableId;\n var combineWith = draggables[combineId];\n var combineWithIndex = combineWith.descriptor.index;\n var didCombineWithStartAfterCritical = didStartAfterCritical(combineId, afterCritical);\n\n if (didCombineWithStartAfterCritical) {\n if (isMovingForward) {\n return combineWithIndex;\n }\n\n return combineWithIndex - 1;\n }\n\n if (isMovingForward) {\n return combineWithIndex + 1;\n }\n\n return combineWithIndex;\n});\n\nvar fromReorder = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n isInHomeList = _ref.isInHomeList,\n insideDestination = _ref.insideDestination,\n location = _ref.location;\n\n if (!insideDestination.length) {\n return null;\n }\n\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n var firstIndex = insideDestination[0].descriptor.index;\n var lastIndex = insideDestination[insideDestination.length - 1].descriptor.index;\n var upperBound = isInHomeList ? lastIndex : lastIndex + 1;\n\n if (proposedIndex < firstIndex) {\n return null;\n }\n\n if (proposedIndex > upperBound) {\n return null;\n }\n\n return proposedIndex;\n});\n\nvar moveToNextIndex = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n isInHomeList = _ref.isInHomeList,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var wasAt = previousImpact.at;\n !wasAt ? true ? invariant(false, 'Cannot move in direction without previous impact location') : 0 : void 0;\n\n if (wasAt.type === 'REORDER') {\n var _newIndex = fromReorder({\n isMovingForward: isMovingForward,\n isInHomeList: isInHomeList,\n location: wasAt.destination,\n insideDestination: insideDestination\n });\n\n if (_newIndex == null) {\n return null;\n }\n\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: _newIndex\n });\n }\n\n var newIndex = fromCombine({\n isMovingForward: isMovingForward,\n destination: destination,\n displaced: previousImpact.displaced,\n draggables: draggables,\n combine: wasAt.combine,\n afterCritical: afterCritical\n });\n\n if (newIndex == null) {\n return null;\n }\n\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: newIndex\n });\n});\n\nvar getCombinedItemDisplacement = (function (_ref) {\n var displaced = _ref.displaced,\n afterCritical = _ref.afterCritical,\n combineWith = _ref.combineWith,\n displacedBy = _ref.displacedBy;\n var isDisplaced = Boolean(displaced.visible[combineWith] || displaced.invisible[combineWith]);\n\n if (didStartAfterCritical(combineWith, afterCritical)) {\n return isDisplaced ? origin : negate(displacedBy.point);\n }\n\n return isDisplaced ? displacedBy.point : origin;\n});\n\nvar whenCombining = (function (_ref) {\n var afterCritical = _ref.afterCritical,\n impact = _ref.impact,\n draggables = _ref.draggables;\n var combine = tryGetCombine(impact);\n !combine ? true ? invariant(false) : 0 : void 0;\n var combineWith = combine.draggableId;\n var center = draggables[combineWith].page.borderBox.center;\n var displaceBy = getCombinedItemDisplacement({\n displaced: impact.displaced,\n afterCritical: afterCritical,\n combineWith: combineWith,\n displacedBy: impact.displacedBy\n });\n return add(center, displaceBy);\n});\n\nvar distanceFromStartToBorderBoxCenter = function distanceFromStartToBorderBoxCenter(axis, box) {\n return box.margin[axis.start] + box.borderBox[axis.size] / 2;\n};\n\nvar distanceFromEndToBorderBoxCenter = function distanceFromEndToBorderBoxCenter(axis, box) {\n return box.margin[axis.end] + box.borderBox[axis.size] / 2;\n};\n\nvar getCrossAxisBorderBoxCenter = function getCrossAxisBorderBoxCenter(axis, target, isMoving) {\n return target[axis.crossAxisStart] + isMoving.margin[axis.crossAxisStart] + isMoving.borderBox[axis.crossAxisSize] / 2;\n};\n\nvar goAfter = function goAfter(_ref) {\n var axis = _ref.axis,\n moveRelativeTo = _ref.moveRelativeTo,\n isMoving = _ref.isMoving;\n return patch(axis.line, moveRelativeTo.marginBox[axis.end] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goBefore = function goBefore(_ref2) {\n var axis = _ref2.axis,\n moveRelativeTo = _ref2.moveRelativeTo,\n isMoving = _ref2.isMoving;\n return patch(axis.line, moveRelativeTo.marginBox[axis.start] - distanceFromEndToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goIntoStart = function goIntoStart(_ref3) {\n var axis = _ref3.axis,\n moveInto = _ref3.moveInto,\n isMoving = _ref3.isMoving;\n return patch(axis.line, moveInto.contentBox[axis.start] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveInto.contentBox, isMoving));\n};\n\nvar whenReordering = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppable = _ref.droppable,\n afterCritical = _ref.afterCritical;\n var insideDestination = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n var draggablePage = draggable.page;\n var axis = droppable.axis;\n\n if (!insideDestination.length) {\n return goIntoStart({\n axis: axis,\n moveInto: droppable.page,\n isMoving: draggablePage\n });\n }\n\n var displaced = impact.displaced,\n displacedBy = impact.displacedBy;\n var closestAfter = displaced.all[0];\n\n if (closestAfter) {\n var closest = draggables[closestAfter];\n\n if (didStartAfterCritical(closestAfter, afterCritical)) {\n return goBefore({\n axis: axis,\n moveRelativeTo: closest.page,\n isMoving: draggablePage\n });\n }\n\n var withDisplacement = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.offset)(closest.page, displacedBy.point);\n return goBefore({\n axis: axis,\n moveRelativeTo: withDisplacement,\n isMoving: draggablePage\n });\n }\n\n var last = insideDestination[insideDestination.length - 1];\n\n if (last.descriptor.id === draggable.descriptor.id) {\n return draggablePage.borderBox.center;\n }\n\n if (didStartAfterCritical(last.descriptor.id, afterCritical)) {\n var page = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.offset)(last.page, negate(afterCritical.displacedBy.point));\n return goAfter({\n axis: axis,\n moveRelativeTo: page,\n isMoving: draggablePage\n });\n }\n\n return goAfter({\n axis: axis,\n moveRelativeTo: last.page,\n isMoving: draggablePage\n });\n});\n\nvar withDroppableDisplacement = (function (droppable, point) {\n var frame = droppable.frame;\n\n if (!frame) {\n return point;\n }\n\n return add(point, frame.scroll.diff.displacement);\n});\n\nvar getResultWithoutDroppableDisplacement = function getResultWithoutDroppableDisplacement(_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n draggables = _ref.draggables,\n afterCritical = _ref.afterCritical;\n var original = draggable.page.borderBox.center;\n var at = impact.at;\n\n if (!droppable) {\n return original;\n }\n\n if (!at) {\n return original;\n }\n\n if (at.type === 'REORDER') {\n return whenReordering({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n droppable: droppable,\n afterCritical: afterCritical\n });\n }\n\n return whenCombining({\n impact: impact,\n draggables: draggables,\n afterCritical: afterCritical\n });\n};\n\nvar getPageBorderBoxCenterFromImpact = (function (args) {\n var withoutDisplacement = getResultWithoutDroppableDisplacement(args);\n var droppable = args.droppable;\n var withDisplacement = droppable ? withDroppableDisplacement(droppable, withoutDisplacement) : withoutDisplacement;\n return withDisplacement;\n});\n\nvar scrollViewport = (function (viewport, newScroll) {\n var diff = subtract(newScroll, viewport.scroll.initial);\n var displacement = negate(diff);\n var frame = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.getRect)({\n top: newScroll.y,\n bottom: newScroll.y + viewport.frame.height,\n left: newScroll.x,\n right: newScroll.x + viewport.frame.width\n });\n var updated = {\n frame: frame,\n scroll: {\n initial: viewport.scroll.initial,\n max: viewport.scroll.max,\n current: newScroll,\n diff: {\n value: diff,\n displacement: displacement\n }\n }\n };\n return updated;\n});\n\nfunction getDraggables(ids, draggables) {\n return ids.map(function (id) {\n return draggables[id];\n });\n}\n\nfunction tryGetVisible(id, groups) {\n for (var i = 0; i < groups.length; i++) {\n var displacement = groups[i].visible[id];\n\n if (displacement) {\n return displacement;\n }\n }\n\n return null;\n}\n\nvar speculativelyIncrease = (function (_ref) {\n var impact = _ref.impact,\n viewport = _ref.viewport,\n destination = _ref.destination,\n draggables = _ref.draggables,\n maxScrollChange = _ref.maxScrollChange;\n var scrolledViewport = scrollViewport(viewport, add(viewport.scroll.current, maxScrollChange));\n var scrolledDroppable = destination.frame ? scrollDroppable(destination, add(destination.frame.scroll.current, maxScrollChange)) : destination;\n var last = impact.displaced;\n var withViewportScroll = getDisplacementGroups({\n afterDragging: getDraggables(last.all, draggables),\n destination: destination,\n displacedBy: impact.displacedBy,\n viewport: scrolledViewport.frame,\n last: last,\n forceShouldAnimate: false\n });\n var withDroppableScroll = getDisplacementGroups({\n afterDragging: getDraggables(last.all, draggables),\n destination: scrolledDroppable,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n last: last,\n forceShouldAnimate: false\n });\n var invisible = {};\n var visible = {};\n var groups = [last, withViewportScroll, withDroppableScroll];\n last.all.forEach(function (id) {\n var displacement = tryGetVisible(id, groups);\n\n if (displacement) {\n visible[id] = displacement;\n return;\n }\n\n invisible[id] = true;\n });\n\n var newImpact = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, impact, {\n displaced: {\n all: last.all,\n invisible: invisible,\n visible: visible\n }\n });\n\n return newImpact;\n});\n\nvar withViewportDisplacement = (function (viewport, point) {\n return add(viewport.scroll.diff.displacement, point);\n});\n\nvar getClientFromPageBorderBoxCenter = (function (_ref) {\n var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n draggable = _ref.draggable,\n viewport = _ref.viewport;\n var withoutPageScrollChange = withViewportDisplacement(viewport, pageBorderBoxCenter);\n var offset = subtract(withoutPageScrollChange, draggable.page.borderBox.center);\n return add(draggable.client.borderBox.center, offset);\n});\n\nvar isTotallyVisibleInNewLocation = (function (_ref) {\n var draggable = _ref.draggable,\n destination = _ref.destination,\n newPageBorderBoxCenter = _ref.newPageBorderBoxCenter,\n viewport = _ref.viewport,\n withDroppableDisplacement = _ref.withDroppableDisplacement,\n _ref$onlyOnMainAxis = _ref.onlyOnMainAxis,\n onlyOnMainAxis = _ref$onlyOnMainAxis === void 0 ? false : _ref$onlyOnMainAxis;\n var changeNeeded = subtract(newPageBorderBoxCenter, draggable.page.borderBox.center);\n var shifted = offsetByPosition(draggable.page.borderBox, changeNeeded);\n var args = {\n target: shifted,\n destination: destination,\n withDroppableDisplacement: withDroppableDisplacement,\n viewport: viewport\n };\n return onlyOnMainAxis ? isTotallyVisibleOnAxis(args) : isTotallyVisible(args);\n});\n\nvar moveToNextPlace = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggable = _ref.draggable,\n destination = _ref.destination,\n draggables = _ref.draggables,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n previousClientSelection = _ref.previousClientSelection,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isEnabled) {\n return null;\n }\n\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var isInHomeList = isHomeOf(draggable, destination);\n var impact = moveToNextCombine({\n isMovingForward: isMovingForward,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact\n }) || moveToNextIndex({\n isMovingForward: isMovingForward,\n isInHomeList: isInHomeList,\n draggable: draggable,\n draggables: draggables,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact,\n viewport: viewport,\n afterCritical: afterCritical\n });\n\n if (!impact) {\n return null;\n }\n\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable: draggable,\n destination: destination,\n newPageBorderBoxCenter: pageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n\n if (isVisibleInNewLocation) {\n var clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n return {\n clientSelection: clientSelection,\n impact: impact,\n scrollJumpRequest: null\n };\n }\n\n var distance = subtract(pageBorderBoxCenter, previousPageBorderBoxCenter);\n var cautious = speculativelyIncrease({\n impact: impact,\n viewport: viewport,\n destination: destination,\n draggables: draggables,\n maxScrollChange: distance\n });\n return {\n clientSelection: previousClientSelection,\n impact: cautious,\n scrollJumpRequest: distance\n };\n});\n\nvar getKnownActive = function getKnownActive(droppable) {\n var rect = droppable.subject.active;\n !rect ? true ? invariant(false, 'Cannot get clipped area from droppable') : 0 : void 0;\n return rect;\n};\n\nvar getBestCrossAxisDroppable = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n source = _ref.source,\n droppables = _ref.droppables,\n viewport = _ref.viewport;\n var active = source.subject.active;\n\n if (!active) {\n return null;\n }\n\n var axis = source.axis;\n var isBetweenSourceClipped = isWithin(active[axis.start], active[axis.end]);\n var candidates = toDroppableList(droppables).filter(function (droppable) {\n return droppable !== source;\n }).filter(function (droppable) {\n return droppable.isEnabled;\n }).filter(function (droppable) {\n return Boolean(droppable.subject.active);\n }).filter(function (droppable) {\n return isPartiallyVisibleThroughFrame(viewport.frame)(getKnownActive(droppable));\n }).filter(function (droppable) {\n var activeOfTarget = getKnownActive(droppable);\n\n if (isMovingForward) {\n return active[axis.crossAxisEnd] < activeOfTarget[axis.crossAxisEnd];\n }\n\n return activeOfTarget[axis.crossAxisStart] < active[axis.crossAxisStart];\n }).filter(function (droppable) {\n var activeOfTarget = getKnownActive(droppable);\n var isBetweenDestinationClipped = isWithin(activeOfTarget[axis.start], activeOfTarget[axis.end]);\n return isBetweenSourceClipped(activeOfTarget[axis.start]) || isBetweenSourceClipped(activeOfTarget[axis.end]) || isBetweenDestinationClipped(active[axis.start]) || isBetweenDestinationClipped(active[axis.end]);\n }).sort(function (a, b) {\n var first = getKnownActive(a)[axis.crossAxisStart];\n var second = getKnownActive(b)[axis.crossAxisStart];\n\n if (isMovingForward) {\n return first - second;\n }\n\n return second - first;\n }).filter(function (droppable, index, array) {\n return getKnownActive(droppable)[axis.crossAxisStart] === getKnownActive(array[0])[axis.crossAxisStart];\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0];\n }\n\n var contains = candidates.filter(function (droppable) {\n var isWithinDroppable = isWithin(getKnownActive(droppable)[axis.start], getKnownActive(droppable)[axis.end]);\n return isWithinDroppable(pageBorderBoxCenter[axis.line]);\n });\n\n if (contains.length === 1) {\n return contains[0];\n }\n\n if (contains.length > 1) {\n return contains.sort(function (a, b) {\n return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n })[0];\n }\n\n return candidates.sort(function (a, b) {\n var first = closest(pageBorderBoxCenter, getCorners(getKnownActive(a)));\n var second = closest(pageBorderBoxCenter, getCorners(getKnownActive(b)));\n\n if (first !== second) {\n return first - second;\n }\n\n return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n })[0];\n});\n\nvar getCurrentPageBorderBoxCenter = function getCurrentPageBorderBoxCenter(draggable, afterCritical) {\n var original = draggable.page.borderBox.center;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? subtract(original, afterCritical.displacedBy.point) : original;\n};\nvar getCurrentPageBorderBox = function getCurrentPageBorderBox(draggable, afterCritical) {\n var original = draggable.page.borderBox;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? offsetByPosition(original, negate(afterCritical.displacedBy.point)) : original;\n};\n\nvar getClosestDraggable = (function (_ref) {\n var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n viewport = _ref.viewport,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n afterCritical = _ref.afterCritical;\n var sorted = insideDestination.filter(function (draggable) {\n return isTotallyVisible({\n target: getCurrentPageBorderBox(draggable, afterCritical),\n destination: destination,\n viewport: viewport.frame,\n withDroppableDisplacement: true\n });\n }).sort(function (a, b) {\n var distanceToA = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(a, afterCritical)));\n var distanceToB = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(b, afterCritical)));\n\n if (distanceToA < distanceToB) {\n return -1;\n }\n\n if (distanceToB < distanceToA) {\n return 1;\n }\n\n return a.descriptor.index - b.descriptor.index;\n });\n return sorted[0] || null;\n});\n\nvar getDisplacedBy = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function getDisplacedBy(axis, displaceBy) {\n var displacement = displaceBy[axis.line];\n return {\n value: displacement,\n point: patch(axis.line, displacement)\n };\n});\n\nvar getRequiredGrowthForPlaceholder = function getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables) {\n var axis = droppable.axis;\n\n if (droppable.descriptor.mode === 'virtual') {\n return patch(axis.line, placeholderSize[axis.line]);\n }\n\n var availableSpace = droppable.subject.page.contentBox[axis.size];\n var insideDroppable = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n var spaceUsed = insideDroppable.reduce(function (sum, dimension) {\n return sum + dimension.client.marginBox[axis.size];\n }, 0);\n var requiredSpace = spaceUsed + placeholderSize[axis.line];\n var needsToGrowBy = requiredSpace - availableSpace;\n\n if (needsToGrowBy <= 0) {\n return null;\n }\n\n return patch(axis.line, needsToGrowBy);\n};\n\nvar withMaxScroll = function withMaxScroll(frame, max) {\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, frame, {\n scroll: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, frame.scroll, {\n max: max\n })\n });\n};\n\nvar addPlaceholder = function addPlaceholder(droppable, draggable, draggables) {\n var frame = droppable.frame;\n !!isHomeOf(draggable, droppable) ? true ? invariant(false, 'Should not add placeholder space to home list') : 0 : void 0;\n !!droppable.subject.withPlaceholder ? true ? invariant(false, 'Cannot add placeholder size to a subject when it already has one') : 0 : void 0;\n var placeholderSize = getDisplacedBy(droppable.axis, draggable.displaceBy).point;\n var requiredGrowth = getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables);\n var added = {\n placeholderSize: placeholderSize,\n increasedBy: requiredGrowth,\n oldFrameMaxScroll: droppable.frame ? droppable.frame.scroll.max : null\n };\n\n if (!frame) {\n var _subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: droppable.frame\n });\n\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, droppable, {\n subject: _subject\n });\n }\n\n var maxScroll = requiredGrowth ? add(frame.scroll.max, requiredGrowth) : frame.scroll.max;\n var newFrame = withMaxScroll(frame, maxScroll);\n var subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: newFrame\n });\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, droppable, {\n subject: subject,\n frame: newFrame\n });\n};\nvar removePlaceholder = function removePlaceholder(droppable) {\n var added = droppable.subject.withPlaceholder;\n !added ? true ? invariant(false, 'Cannot remove placeholder form subject when there was none') : 0 : void 0;\n var frame = droppable.frame;\n\n if (!frame) {\n var _subject2 = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: null,\n withPlaceholder: null\n });\n\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, droppable, {\n subject: _subject2\n });\n }\n\n var oldMaxScroll = added.oldFrameMaxScroll;\n !oldMaxScroll ? true ? invariant(false, 'Expected droppable with frame to have old max frame scroll when removing placeholder') : 0 : void 0;\n var newFrame = withMaxScroll(frame, oldMaxScroll);\n var subject = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: newFrame,\n withPlaceholder: null\n });\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, droppable, {\n subject: subject,\n frame: newFrame\n });\n};\n\nvar moveToNewDroppable = (function (_ref) {\n var previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n moveRelativeTo = _ref.moveRelativeTo,\n insideDestination = _ref.insideDestination,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n\n if (!moveRelativeTo) {\n if (insideDestination.length) {\n return null;\n }\n\n var proposed = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: 0\n }\n }\n };\n var proposedPageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: proposed,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var withPlaceholder = isHomeOf(draggable, destination) ? destination : addPlaceholder(destination, draggable, draggables);\n var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable: draggable,\n destination: withPlaceholder,\n newPageBorderBoxCenter: proposedPageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n return isVisibleInNewLocation ? proposed : null;\n }\n\n var isGoingBeforeTarget = Boolean(previousPageBorderBoxCenter[destination.axis.line] <= moveRelativeTo.page.borderBox.center[destination.axis.line]);\n\n var proposedIndex = function () {\n var relativeTo = moveRelativeTo.descriptor.index;\n\n if (moveRelativeTo.descriptor.id === draggable.descriptor.id) {\n return relativeTo;\n }\n\n if (isGoingBeforeTarget) {\n return relativeTo;\n }\n\n return relativeTo + 1;\n }();\n\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n displacedBy: displacedBy,\n last: emptyGroups,\n index: proposedIndex\n });\n});\n\nvar moveCrossAxis = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n draggable = _ref.draggable,\n isOver = _ref.isOver,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var destination = getBestCrossAxisDroppable({\n isMovingForward: isMovingForward,\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n source: isOver,\n droppables: droppables,\n viewport: viewport\n });\n\n if (!destination) {\n return null;\n }\n\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var moveRelativeTo = getClosestDraggable({\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n viewport: viewport,\n destination: destination,\n insideDestination: insideDestination,\n afterCritical: afterCritical\n });\n var impact = moveToNewDroppable({\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n destination: destination,\n draggable: draggable,\n draggables: draggables,\n moveRelativeTo: moveRelativeTo,\n insideDestination: insideDestination,\n viewport: viewport,\n afterCritical: afterCritical\n });\n\n if (!impact) {\n return null;\n }\n\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n return {\n clientSelection: clientSelection,\n impact: impact,\n scrollJumpRequest: null\n };\n});\n\nvar whatIsDraggedOver = (function (impact) {\n var at = impact.at;\n\n if (!at) {\n return null;\n }\n\n if (at.type === 'REORDER') {\n return at.destination.droppableId;\n }\n\n return at.combine.droppableId;\n});\n\nvar getDroppableOver = function getDroppableOver(impact, droppables) {\n var id = whatIsDraggedOver(impact);\n return id ? droppables[id] : null;\n};\n\nvar moveInDirection = (function (_ref) {\n var state = _ref.state,\n type = _ref.type;\n var isActuallyOver = getDroppableOver(state.impact, state.dimensions.droppables);\n var isMainAxisMovementAllowed = Boolean(isActuallyOver);\n var home = state.dimensions.droppables[state.critical.droppable.id];\n var isOver = isActuallyOver || home;\n var direction = isOver.axis.direction;\n var isMovingOnMainAxis = direction === 'vertical' && (type === 'MOVE_UP' || type === 'MOVE_DOWN') || direction === 'horizontal' && (type === 'MOVE_LEFT' || type === 'MOVE_RIGHT');\n\n if (isMovingOnMainAxis && !isMainAxisMovementAllowed) {\n return null;\n }\n\n var isMovingForward = type === 'MOVE_DOWN' || type === 'MOVE_RIGHT';\n var draggable = state.dimensions.draggables[state.critical.draggable.id];\n var previousPageBorderBoxCenter = state.current.page.borderBoxCenter;\n var _state$dimensions = state.dimensions,\n draggables = _state$dimensions.draggables,\n droppables = _state$dimensions.droppables;\n return isMovingOnMainAxis ? moveToNextPlace({\n isMovingForward: isMovingForward,\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n draggable: draggable,\n destination: isOver,\n draggables: draggables,\n viewport: state.viewport,\n previousClientSelection: state.current.client.selection,\n previousImpact: state.impact,\n afterCritical: state.afterCritical\n }) : moveCrossAxis({\n isMovingForward: isMovingForward,\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n draggable: draggable,\n isOver: isOver,\n draggables: draggables,\n droppables: droppables,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n});\n\nfunction isMovementAllowed(state) {\n return state.phase === 'DRAGGING' || state.phase === 'COLLECTING';\n}\n\nfunction isPositionInFrame(frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function run(point) {\n return isWithinVertical(point.y) && isWithinHorizontal(point.x);\n };\n}\n\nfunction getHasOverlap(first, second) {\n return first.left < second.right && first.right > second.left && first.top < second.bottom && first.bottom > second.top;\n}\n\nfunction getFurthestAway(_ref) {\n var pageBorderBox = _ref.pageBorderBox,\n draggable = _ref.draggable,\n candidates = _ref.candidates;\n var startCenter = draggable.page.borderBox.center;\n var sorted = candidates.map(function (candidate) {\n var axis = candidate.axis;\n var target = patch(candidate.axis.line, pageBorderBox.center[axis.line], candidate.page.borderBox.center[axis.crossAxisLine]);\n return {\n id: candidate.descriptor.id,\n distance: distance(startCenter, target)\n };\n }).sort(function (a, b) {\n return b.distance - a.distance;\n });\n return sorted[0] ? sorted[0].id : null;\n}\n\nfunction getDroppableOver$1(_ref2) {\n var pageBorderBox = _ref2.pageBorderBox,\n draggable = _ref2.draggable,\n droppables = _ref2.droppables;\n var candidates = toDroppableList(droppables).filter(function (item) {\n if (!item.isEnabled) {\n return false;\n }\n\n var active = item.subject.active;\n\n if (!active) {\n return false;\n }\n\n if (!getHasOverlap(pageBorderBox, active)) {\n return false;\n }\n\n if (isPositionInFrame(active)(pageBorderBox.center)) {\n return true;\n }\n\n var axis = item.axis;\n var childCenter = active.center[axis.crossAxisLine];\n var crossAxisStart = pageBorderBox[axis.crossAxisStart];\n var crossAxisEnd = pageBorderBox[axis.crossAxisEnd];\n var isContained = isWithin(active[axis.crossAxisStart], active[axis.crossAxisEnd]);\n var isStartContained = isContained(crossAxisStart);\n var isEndContained = isContained(crossAxisEnd);\n\n if (!isStartContained && !isEndContained) {\n return true;\n }\n\n if (isStartContained) {\n return crossAxisStart < childCenter;\n }\n\n return crossAxisEnd > childCenter;\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0].descriptor.id;\n }\n\n return getFurthestAway({\n pageBorderBox: pageBorderBox,\n draggable: draggable,\n candidates: candidates\n });\n}\n\nvar offsetRectByPosition = function offsetRectByPosition(rect, point) {\n return (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.getRect)(offsetByPosition(rect, point));\n};\n\nvar withDroppableScroll = (function (droppable, area) {\n var frame = droppable.frame;\n\n if (!frame) {\n return area;\n }\n\n return offsetRectByPosition(area, frame.scroll.diff.value);\n});\n\nfunction getIsDisplaced(_ref) {\n var displaced = _ref.displaced,\n id = _ref.id;\n return Boolean(displaced.visible[id] || displaced.invisible[id]);\n}\n\nfunction atIndex(_ref) {\n var draggable = _ref.draggable,\n closest = _ref.closest,\n inHomeList = _ref.inHomeList;\n\n if (!closest) {\n return null;\n }\n\n if (!inHomeList) {\n return closest.descriptor.index;\n }\n\n if (closest.descriptor.index > draggable.descriptor.index) {\n return closest.descriptor.index - 1;\n }\n\n return closest.descriptor.index;\n}\n\nvar getReorderImpact = (function (_ref2) {\n var targetRect = _ref2.pageBorderBoxWithDroppableScroll,\n draggable = _ref2.draggable,\n destination = _ref2.destination,\n insideDestination = _ref2.insideDestination,\n last = _ref2.last,\n viewport = _ref2.viewport,\n afterCritical = _ref2.afterCritical;\n var axis = destination.axis;\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n var displacement = displacedBy.value;\n var targetStart = targetRect[axis.start];\n var targetEnd = targetRect[axis.end];\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var closest = find(withoutDragging, function (child) {\n var id = child.descriptor.id;\n var childCenter = child.page.borderBox.center[axis.line];\n var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n var isDisplaced = getIsDisplaced({\n displaced: last,\n id: id\n });\n\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd <= childCenter;\n }\n\n return targetStart < childCenter - displacement;\n }\n\n if (isDisplaced) {\n return targetEnd <= childCenter + displacement;\n }\n\n return targetStart < childCenter;\n });\n var newIndex = atIndex({\n draggable: draggable,\n closest: closest,\n inHomeList: isHomeOf(draggable, destination)\n });\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: last,\n displacedBy: displacedBy,\n index: newIndex\n });\n});\n\nvar combineThresholdDivisor = 4;\nvar getCombineImpact = (function (_ref) {\n var draggable = _ref.draggable,\n targetRect = _ref.pageBorderBoxWithDroppableScroll,\n previousImpact = _ref.previousImpact,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var axis = destination.axis;\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n var displacement = displacedBy.value;\n var targetStart = targetRect[axis.start];\n var targetEnd = targetRect[axis.end];\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var combineWith = find(withoutDragging, function (child) {\n var id = child.descriptor.id;\n var childRect = child.page.borderBox;\n var childSize = childRect[axis.size];\n var threshold = childSize / combineThresholdDivisor;\n var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n var isDisplaced = getIsDisplaced({\n displaced: previousImpact.displaced,\n id: id\n });\n\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + threshold && targetEnd < childRect[axis.end] - threshold;\n }\n\n return targetStart > childRect[axis.start] - displacement + threshold && targetStart < childRect[axis.end] - displacement - threshold;\n }\n\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + displacement + threshold && targetEnd < childRect[axis.end] + displacement - threshold;\n }\n\n return targetStart > childRect[axis.start] + threshold && targetStart < childRect[axis.end] - threshold;\n });\n\n if (!combineWith) {\n return null;\n }\n\n var impact = {\n displacedBy: displacedBy,\n displaced: previousImpact.displaced,\n at: {\n type: 'COMBINE',\n combine: {\n draggableId: combineWith.descriptor.id,\n droppableId: destination.descriptor.id\n }\n }\n };\n return impact;\n});\n\nvar getDragImpact = (function (_ref) {\n var pageOffset = _ref.pageOffset,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var pageBorderBox = offsetRectByPosition(draggable.page.borderBox, pageOffset);\n var destinationId = getDroppableOver$1({\n pageBorderBox: pageBorderBox,\n draggable: draggable,\n droppables: droppables\n });\n\n if (!destinationId) {\n return noImpact;\n }\n\n var destination = droppables[destinationId];\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var pageBorderBoxWithDroppableScroll = withDroppableScroll(destination, pageBorderBox);\n return getCombineImpact({\n pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n draggable: draggable,\n previousImpact: previousImpact,\n destination: destination,\n insideDestination: insideDestination,\n afterCritical: afterCritical\n }) || getReorderImpact({\n pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n last: previousImpact.displaced,\n viewport: viewport,\n afterCritical: afterCritical\n });\n});\n\nvar patchDroppableMap = (function (droppables, updated) {\n var _extends2;\n\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, droppables, (_extends2 = {}, _extends2[updated.descriptor.id] = updated, _extends2));\n});\n\nvar clearUnusedPlaceholder = function clearUnusedPlaceholder(_ref) {\n var previousImpact = _ref.previousImpact,\n impact = _ref.impact,\n droppables = _ref.droppables;\n var last = whatIsDraggedOver(previousImpact);\n var now = whatIsDraggedOver(impact);\n\n if (!last) {\n return droppables;\n }\n\n if (last === now) {\n return droppables;\n }\n\n var lastDroppable = droppables[last];\n\n if (!lastDroppable.subject.withPlaceholder) {\n return droppables;\n }\n\n var updated = removePlaceholder(lastDroppable);\n return patchDroppableMap(droppables, updated);\n};\n\nvar recomputePlaceholders = (function (_ref2) {\n var draggable = _ref2.draggable,\n draggables = _ref2.draggables,\n droppables = _ref2.droppables,\n previousImpact = _ref2.previousImpact,\n impact = _ref2.impact;\n var cleaned = clearUnusedPlaceholder({\n previousImpact: previousImpact,\n impact: impact,\n droppables: droppables\n });\n var isOver = whatIsDraggedOver(impact);\n\n if (!isOver) {\n return cleaned;\n }\n\n var droppable = droppables[isOver];\n\n if (isHomeOf(draggable, droppable)) {\n return cleaned;\n }\n\n if (droppable.subject.withPlaceholder) {\n return cleaned;\n }\n\n var patched = addPlaceholder(droppable, draggable, draggables);\n return patchDroppableMap(cleaned, patched);\n});\n\nvar update = (function (_ref) {\n var state = _ref.state,\n forcedClientSelection = _ref.clientSelection,\n forcedDimensions = _ref.dimensions,\n forcedViewport = _ref.viewport,\n forcedImpact = _ref.impact,\n scrollJumpRequest = _ref.scrollJumpRequest;\n var viewport = forcedViewport || state.viewport;\n var dimensions = forcedDimensions || state.dimensions;\n var clientSelection = forcedClientSelection || state.current.client.selection;\n var offset = subtract(clientSelection, state.initial.client.selection);\n var client = {\n offset: offset,\n selection: clientSelection,\n borderBoxCenter: add(state.initial.client.borderBoxCenter, offset)\n };\n var page = {\n selection: add(client.selection, viewport.scroll.current),\n borderBoxCenter: add(client.borderBoxCenter, viewport.scroll.current),\n offset: add(client.offset, viewport.scroll.diff.value)\n };\n var current = {\n client: client,\n page: page\n };\n\n if (state.phase === 'COLLECTING') {\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n phase: 'COLLECTING'\n }, state, {\n dimensions: dimensions,\n viewport: viewport,\n current: current\n });\n }\n\n var draggable = dimensions.draggables[state.critical.draggable.id];\n var newImpact = forcedImpact || getDragImpact({\n pageOffset: page.offset,\n draggable: draggable,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: state.impact,\n viewport: viewport,\n afterCritical: state.afterCritical\n });\n var withUpdatedPlaceholders = recomputePlaceholders({\n draggable: draggable,\n impact: newImpact,\n previousImpact: state.impact,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables\n });\n\n var result = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, state, {\n current: current,\n dimensions: {\n draggables: dimensions.draggables,\n droppables: withUpdatedPlaceholders\n },\n impact: newImpact,\n viewport: viewport,\n scrollJumpRequest: scrollJumpRequest || null,\n forceShouldAnimate: scrollJumpRequest ? false : null\n });\n\n return result;\n});\n\nfunction getDraggables$1(ids, draggables) {\n return ids.map(function (id) {\n return draggables[id];\n });\n}\n\nvar recompute = (function (_ref) {\n var impact = _ref.impact,\n viewport = _ref.viewport,\n draggables = _ref.draggables,\n destination = _ref.destination,\n forceShouldAnimate = _ref.forceShouldAnimate;\n var last = impact.displaced;\n var afterDragging = getDraggables$1(last.all, draggables);\n var displaced = getDisplacementGroups({\n afterDragging: afterDragging,\n destination: destination,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n forceShouldAnimate: forceShouldAnimate,\n last: last\n });\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, impact, {\n displaced: displaced\n });\n});\n\nvar getClientBorderBoxCenter = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n draggables = _ref.draggables,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n droppable: droppable,\n afterCritical: afterCritical\n });\n return getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n});\n\nvar refreshSnap = (function (_ref) {\n var state = _ref.state,\n forcedDimensions = _ref.dimensions,\n forcedViewport = _ref.viewport;\n !(state.movementMode === 'SNAP') ? true ? invariant(false) : 0 : void 0;\n var needsVisibilityCheck = state.impact;\n var viewport = forcedViewport || state.viewport;\n var dimensions = forcedDimensions || state.dimensions;\n var draggables = dimensions.draggables,\n droppables = dimensions.droppables;\n var draggable = draggables[state.critical.draggable.id];\n var isOver = whatIsDraggedOver(needsVisibilityCheck);\n !isOver ? true ? invariant(false, 'Must be over a destination in SNAP movement mode') : 0 : void 0;\n var destination = droppables[isOver];\n var impact = recompute({\n impact: needsVisibilityCheck,\n viewport: viewport,\n destination: destination,\n draggables: draggables\n });\n var clientSelection = getClientBorderBoxCenter({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n viewport: viewport,\n afterCritical: state.afterCritical\n });\n return update({\n impact: impact,\n clientSelection: clientSelection,\n state: state,\n dimensions: dimensions,\n viewport: viewport\n });\n});\n\nvar getHomeLocation = (function (descriptor) {\n return {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n});\n\nvar getLiftEffect = (function (_ref) {\n var draggable = _ref.draggable,\n home = _ref.home,\n draggables = _ref.draggables,\n viewport = _ref.viewport;\n var displacedBy = getDisplacedBy(home.axis, draggable.displaceBy);\n var insideHome = getDraggablesInsideDroppable(home.descriptor.id, draggables);\n var rawIndex = insideHome.indexOf(draggable);\n !(rawIndex !== -1) ? true ? invariant(false, 'Expected draggable to be inside home list') : 0 : void 0;\n var afterDragging = insideHome.slice(rawIndex + 1);\n var effected = afterDragging.reduce(function (previous, item) {\n previous[item.descriptor.id] = true;\n return previous;\n }, {});\n var afterCritical = {\n inVirtualList: home.descriptor.mode === 'virtual',\n displacedBy: displacedBy,\n effected: effected\n };\n var displaced = getDisplacementGroups({\n afterDragging: afterDragging,\n destination: home,\n displacedBy: displacedBy,\n last: null,\n viewport: viewport.frame,\n forceShouldAnimate: false\n });\n var impact = {\n displaced: displaced,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: getHomeLocation(draggable.descriptor)\n }\n };\n return {\n impact: impact,\n afterCritical: afterCritical\n };\n});\n\nvar patchDimensionMap = (function (dimensions, updated) {\n return {\n draggables: dimensions.draggables,\n droppables: patchDroppableMap(dimensions.droppables, updated)\n };\n});\n\nvar start = function start(key) {\n if (true) {\n {\n return;\n }\n }\n};\nvar finish = function finish(key) {\n if (true) {\n {\n return;\n }\n }\n};\n\nvar offsetDraggable = (function (_ref) {\n var draggable = _ref.draggable,\n offset$1 = _ref.offset,\n initialWindowScroll = _ref.initialWindowScroll;\n var client = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.offset)(draggable.client, offset$1);\n var page = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.withScroll)(client, initialWindowScroll);\n\n var moved = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, draggable, {\n placeholder: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, draggable.placeholder, {\n client: client\n }),\n client: client,\n page: page\n });\n\n return moved;\n});\n\nvar getFrame = (function (droppable) {\n var frame = droppable.frame;\n !frame ? true ? invariant(false, 'Expected Droppable to have a frame') : 0 : void 0;\n return frame;\n});\n\nvar adjustAdditionsForScrollChanges = (function (_ref) {\n var additions = _ref.additions,\n updatedDroppables = _ref.updatedDroppables,\n viewport = _ref.viewport;\n var windowScrollChange = viewport.scroll.diff.value;\n return additions.map(function (draggable) {\n var droppableId = draggable.descriptor.droppableId;\n var modified = updatedDroppables[droppableId];\n var frame = getFrame(modified);\n var droppableScrollChange = frame.scroll.diff.value;\n var totalChange = add(windowScrollChange, droppableScrollChange);\n var moved = offsetDraggable({\n draggable: draggable,\n offset: totalChange,\n initialWindowScroll: viewport.scroll.initial\n });\n return moved;\n });\n});\n\nvar publishWhileDraggingInVirtual = (function (_ref) {\n var state = _ref.state,\n published = _ref.published;\n start();\n var withScrollChange = published.modified.map(function (update) {\n var existing = state.dimensions.droppables[update.droppableId];\n var scrolled = scrollDroppable(existing, update.scroll);\n return scrolled;\n });\n\n var droppables = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, state.dimensions.droppables, {}, toDroppableMap(withScrollChange));\n\n var updatedAdditions = toDraggableMap(adjustAdditionsForScrollChanges({\n additions: published.additions,\n updatedDroppables: droppables,\n viewport: state.viewport\n }));\n\n var draggables = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, state.dimensions.draggables, {}, updatedAdditions);\n\n published.removals.forEach(function (id) {\n delete draggables[id];\n });\n var dimensions = {\n droppables: droppables,\n draggables: draggables\n };\n var wasOverId = whatIsDraggedOver(state.impact);\n var wasOver = wasOverId ? dimensions.droppables[wasOverId] : null;\n var draggable = dimensions.draggables[state.critical.draggable.id];\n var home = dimensions.droppables[state.critical.droppable.id];\n\n var _getLiftEffect = getLiftEffect({\n draggable: draggable,\n home: home,\n draggables: draggables,\n viewport: state.viewport\n }),\n onLiftImpact = _getLiftEffect.impact,\n afterCritical = _getLiftEffect.afterCritical;\n\n var previousImpact = wasOver && wasOver.isCombineEnabled ? state.impact : onLiftImpact;\n var impact = getDragImpact({\n pageOffset: state.current.page.offset,\n draggable: dimensions.draggables[state.critical.draggable.id],\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: previousImpact,\n viewport: state.viewport,\n afterCritical: afterCritical\n });\n finish();\n\n var draggingState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n phase: 'DRAGGING'\n }, state, {\n phase: 'DRAGGING',\n impact: impact,\n onLiftImpact: onLiftImpact,\n dimensions: dimensions,\n afterCritical: afterCritical,\n forceShouldAnimate: false\n });\n\n if (state.phase === 'COLLECTING') {\n return draggingState;\n }\n\n var dropPending = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n phase: 'DROP_PENDING'\n }, draggingState, {\n phase: 'DROP_PENDING',\n reason: state.reason,\n isWaiting: false\n });\n\n return dropPending;\n});\n\nvar isSnapping = function isSnapping(state) {\n return state.movementMode === 'SNAP';\n};\n\nvar postDroppableChange = function postDroppableChange(state, updated, isEnabledChanging) {\n var dimensions = patchDimensionMap(state.dimensions, updated);\n\n if (!isSnapping(state) || isEnabledChanging) {\n return update({\n state: state,\n dimensions: dimensions\n });\n }\n\n return refreshSnap({\n state: state,\n dimensions: dimensions\n });\n};\n\nfunction removeScrollJumpRequest(state) {\n if (state.isDragging && state.movementMode === 'SNAP') {\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n phase: 'DRAGGING'\n }, state, {\n scrollJumpRequest: null\n });\n }\n\n return state;\n}\n\nvar idle = {\n phase: 'IDLE',\n completed: null,\n shouldFlush: false\n};\nvar reducer = (function (state, action) {\n if (state === void 0) {\n state = idle;\n }\n\n if (action.type === 'FLUSH') {\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, idle, {\n shouldFlush: true\n });\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n !(state.phase === 'IDLE') ? true ? invariant(false, 'INITIAL_PUBLISH must come after a IDLE phase') : 0 : void 0;\n var _action$payload = action.payload,\n critical = _action$payload.critical,\n clientSelection = _action$payload.clientSelection,\n viewport = _action$payload.viewport,\n dimensions = _action$payload.dimensions,\n movementMode = _action$payload.movementMode;\n var draggable = dimensions.draggables[critical.draggable.id];\n var home = dimensions.droppables[critical.droppable.id];\n var client = {\n selection: clientSelection,\n borderBoxCenter: draggable.client.borderBox.center,\n offset: origin\n };\n var initial = {\n client: client,\n page: {\n selection: add(client.selection, viewport.scroll.initial),\n borderBoxCenter: add(client.selection, viewport.scroll.initial),\n offset: add(client.selection, viewport.scroll.diff.value)\n }\n };\n var isWindowScrollAllowed = toDroppableList(dimensions.droppables).every(function (item) {\n return !item.isFixedOnPage;\n });\n\n var _getLiftEffect = getLiftEffect({\n draggable: draggable,\n home: home,\n draggables: dimensions.draggables,\n viewport: viewport\n }),\n impact = _getLiftEffect.impact,\n afterCritical = _getLiftEffect.afterCritical;\n\n var result = {\n phase: 'DRAGGING',\n isDragging: true,\n critical: critical,\n movementMode: movementMode,\n dimensions: dimensions,\n initial: initial,\n current: initial,\n isWindowScrollAllowed: isWindowScrollAllowed,\n impact: impact,\n afterCritical: afterCritical,\n onLiftImpact: impact,\n viewport: viewport,\n scrollJumpRequest: null,\n forceShouldAnimate: null\n };\n return result;\n }\n\n if (action.type === 'COLLECTION_STARTING') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !(state.phase === 'DRAGGING') ? true ? invariant(false, \"Collection cannot start from phase \" + state.phase) : 0 : void 0;\n\n var _result = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n phase: 'COLLECTING'\n }, state, {\n phase: 'COLLECTING'\n });\n\n return _result;\n }\n\n if (action.type === 'PUBLISH_WHILE_DRAGGING') {\n !(state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') ? true ? invariant(false, \"Unexpected \" + action.type + \" received in phase \" + state.phase) : 0 : void 0;\n return publishWhileDraggingInVirtual({\n state: state,\n published: action.payload\n });\n }\n\n if (action.type === 'MOVE') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? true ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : 0 : void 0;\n var _clientSelection = action.payload.client;\n\n if (isEqual(_clientSelection, state.current.client.selection)) {\n return state;\n }\n\n return update({\n state: state,\n clientSelection: _clientSelection,\n impact: isSnapping(state) ? state.impact : null\n });\n }\n\n if (action.type === 'UPDATE_DROPPABLE_SCROLL') {\n if (state.phase === 'DROP_PENDING') {\n return removeScrollJumpRequest(state);\n }\n\n if (state.phase === 'COLLECTING') {\n return removeScrollJumpRequest(state);\n }\n\n !isMovementAllowed(state) ? true ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : 0 : void 0;\n var _action$payload2 = action.payload,\n id = _action$payload2.id,\n newScroll = _action$payload2.newScroll;\n var target = state.dimensions.droppables[id];\n\n if (!target) {\n return state;\n }\n\n var scrolled = scrollDroppable(target, newScroll);\n return postDroppableChange(state, scrolled, false);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_IS_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? true ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : 0 : void 0;\n var _action$payload3 = action.payload,\n _id = _action$payload3.id,\n isEnabled = _action$payload3.isEnabled;\n var _target = state.dimensions.droppables[_id];\n !_target ? true ? invariant(false, \"Cannot find Droppable[id: \" + _id + \"] to toggle its enabled state\") : 0 : void 0;\n !(_target.isEnabled !== isEnabled) ? true ? invariant(false, \"Trying to set droppable isEnabled to \" + String(isEnabled) + \"\\n but it is already \" + String(_target.isEnabled)) : 0 : void 0;\n\n var updated = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, _target, {\n isEnabled: isEnabled\n });\n\n return postDroppableChange(state, updated, true);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? true ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : 0 : void 0;\n var _action$payload4 = action.payload,\n _id2 = _action$payload4.id,\n isCombineEnabled = _action$payload4.isCombineEnabled;\n var _target2 = state.dimensions.droppables[_id2];\n !_target2 ? true ? invariant(false, \"Cannot find Droppable[id: \" + _id2 + \"] to toggle its isCombineEnabled state\") : 0 : void 0;\n !(_target2.isCombineEnabled !== isCombineEnabled) ? true ? invariant(false, \"Trying to set droppable isCombineEnabled to \" + String(isCombineEnabled) + \"\\n but it is already \" + String(_target2.isCombineEnabled)) : 0 : void 0;\n\n var _updated = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, _target2, {\n isCombineEnabled: isCombineEnabled\n });\n\n return postDroppableChange(state, _updated, true);\n }\n\n if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n if (state.phase === 'DROP_PENDING' || state.phase === 'DROP_ANIMATING') {\n return state;\n }\n\n !isMovementAllowed(state) ? true ? invariant(false, \"Cannot move by window in phase \" + state.phase) : 0 : void 0;\n !state.isWindowScrollAllowed ? true ? invariant(false, 'Window scrolling is currently not supported for fixed lists') : 0 : void 0;\n var _newScroll = action.payload.newScroll;\n\n if (isEqual(state.viewport.scroll.current, _newScroll)) {\n return removeScrollJumpRequest(state);\n }\n\n var _viewport = scrollViewport(state.viewport, _newScroll);\n\n if (isSnapping(state)) {\n return refreshSnap({\n state: state,\n viewport: _viewport\n });\n }\n\n return update({\n state: state,\n viewport: _viewport\n });\n }\n\n if (action.type === 'UPDATE_VIEWPORT_MAX_SCROLL') {\n if (!isMovementAllowed(state)) {\n return state;\n }\n\n var maxScroll = action.payload.maxScroll;\n\n if (isEqual(maxScroll, state.viewport.scroll.max)) {\n return state;\n }\n\n var withMaxScroll = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, state.viewport, {\n scroll: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, state.viewport.scroll, {\n max: maxScroll\n })\n });\n\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n phase: 'DRAGGING'\n }, state, {\n viewport: withMaxScroll\n });\n }\n\n if (action.type === 'MOVE_UP' || action.type === 'MOVE_DOWN' || action.type === 'MOVE_LEFT' || action.type === 'MOVE_RIGHT') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !(state.phase === 'DRAGGING') ? true ? invariant(false, action.type + \" received while not in DRAGGING phase\") : 0 : void 0;\n\n var _result2 = moveInDirection({\n state: state,\n type: action.type\n });\n\n if (!_result2) {\n return state;\n }\n\n return update({\n state: state,\n impact: _result2.impact,\n clientSelection: _result2.clientSelection,\n scrollJumpRequest: _result2.scrollJumpRequest\n });\n }\n\n if (action.type === 'DROP_PENDING') {\n var reason = action.payload.reason;\n !(state.phase === 'COLLECTING') ? true ? invariant(false, 'Can only move into the DROP_PENDING phase from the COLLECTING phase') : 0 : void 0;\n\n var newState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n phase: 'DROP_PENDING'\n }, state, {\n phase: 'DROP_PENDING',\n isWaiting: true,\n reason: reason\n });\n\n return newState;\n }\n\n if (action.type === 'DROP_ANIMATE') {\n var _action$payload5 = action.payload,\n completed = _action$payload5.completed,\n dropDuration = _action$payload5.dropDuration,\n newHomeClientOffset = _action$payload5.newHomeClientOffset;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? true ? invariant(false, \"Cannot animate drop from phase \" + state.phase) : 0 : void 0;\n var _result3 = {\n phase: 'DROP_ANIMATING',\n completed: completed,\n dropDuration: dropDuration,\n newHomeClientOffset: newHomeClientOffset,\n dimensions: state.dimensions\n };\n return _result3;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var _completed = action.payload.completed;\n return {\n phase: 'IDLE',\n completed: _completed,\n shouldFlush: false\n };\n }\n\n return state;\n});\n\nvar beforeInitialCapture = function beforeInitialCapture(args) {\n return {\n type: 'BEFORE_INITIAL_CAPTURE',\n payload: args\n };\n};\nvar lift = function lift(args) {\n return {\n type: 'LIFT',\n payload: args\n };\n};\nvar initialPublish = function initialPublish(args) {\n return {\n type: 'INITIAL_PUBLISH',\n payload: args\n };\n};\nvar publishWhileDragging = function publishWhileDragging(args) {\n return {\n type: 'PUBLISH_WHILE_DRAGGING',\n payload: args\n };\n};\nvar collectionStarting = function collectionStarting() {\n return {\n type: 'COLLECTION_STARTING',\n payload: null\n };\n};\nvar updateDroppableScroll = function updateDroppableScroll(args) {\n return {\n type: 'UPDATE_DROPPABLE_SCROLL',\n payload: args\n };\n};\nvar updateDroppableIsEnabled = function updateDroppableIsEnabled(args) {\n return {\n type: 'UPDATE_DROPPABLE_IS_ENABLED',\n payload: args\n };\n};\nvar updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(args) {\n return {\n type: 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED',\n payload: args\n };\n};\nvar move = function move(args) {\n return {\n type: 'MOVE',\n payload: args\n };\n};\nvar moveByWindowScroll = function moveByWindowScroll(args) {\n return {\n type: 'MOVE_BY_WINDOW_SCROLL',\n payload: args\n };\n};\nvar updateViewportMaxScroll = function updateViewportMaxScroll(args) {\n return {\n type: 'UPDATE_VIEWPORT_MAX_SCROLL',\n payload: args\n };\n};\nvar moveUp = function moveUp() {\n return {\n type: 'MOVE_UP',\n payload: null\n };\n};\nvar moveDown = function moveDown() {\n return {\n type: 'MOVE_DOWN',\n payload: null\n };\n};\nvar moveRight = function moveRight() {\n return {\n type: 'MOVE_RIGHT',\n payload: null\n };\n};\nvar moveLeft = function moveLeft() {\n return {\n type: 'MOVE_LEFT',\n payload: null\n };\n};\nvar flush = function flush() {\n return {\n type: 'FLUSH',\n payload: null\n };\n};\nvar animateDrop = function animateDrop(args) {\n return {\n type: 'DROP_ANIMATE',\n payload: args\n };\n};\nvar completeDrop = function completeDrop(args) {\n return {\n type: 'DROP_COMPLETE',\n payload: args\n };\n};\nvar drop = function drop(args) {\n return {\n type: 'DROP',\n payload: args\n };\n};\nvar dropPending = function dropPending(args) {\n return {\n type: 'DROP_PENDING',\n payload: args\n };\n};\nvar dropAnimationFinished = function dropAnimationFinished() {\n return {\n type: 'DROP_ANIMATION_FINISHED',\n payload: null\n };\n};\n\nfunction checkIndexes(insideDestination) {\n if (insideDestination.length <= 1) {\n return;\n }\n\n var indexes = insideDestination.map(function (d) {\n return d.descriptor.index;\n });\n var errors = {};\n\n for (var i = 1; i < indexes.length; i++) {\n var current = indexes[i];\n var previous = indexes[i - 1];\n\n if (current !== previous + 1) {\n errors[current] = true;\n }\n }\n\n if (!Object.keys(errors).length) {\n return;\n }\n\n var formatted = indexes.map(function (index) {\n var hasError = Boolean(errors[index]);\n return hasError ? \"[\\uD83D\\uDD25\" + index + \"]\" : \"\" + index;\n }).join(', ');\n true ? warning(\"\\n Detected non-consecutive indexes.\\n\\n (This can cause unexpected bugs)\\n\\n \" + formatted + \"\\n \") : 0;\n}\n\nfunction validateDimensions(critical, dimensions) {\n if (true) {\n var insideDestination = getDraggablesInsideDroppable(critical.droppable.id, dimensions.draggables);\n checkIndexes(insideDestination);\n }\n}\n\nvar lift$1 = (function (marshal) {\n return function (_ref) {\n var getState = _ref.getState,\n dispatch = _ref.dispatch;\n return function (next) {\n return function (action) {\n if (action.type !== 'LIFT') {\n next(action);\n return;\n }\n\n var _action$payload = action.payload,\n id = _action$payload.id,\n clientSelection = _action$payload.clientSelection,\n movementMode = _action$payload.movementMode;\n var initial = getState();\n\n if (initial.phase === 'DROP_ANIMATING') {\n dispatch(completeDrop({\n completed: initial.completed\n }));\n }\n\n !(getState().phase === 'IDLE') ? true ? invariant(false, 'Unexpected phase to start a drag') : 0 : void 0;\n dispatch(flush());\n dispatch(beforeInitialCapture({\n draggableId: id,\n movementMode: movementMode\n }));\n var scrollOptions = {\n shouldPublishImmediately: movementMode === 'SNAP'\n };\n var request = {\n draggableId: id,\n scrollOptions: scrollOptions\n };\n\n var _marshal$startPublish = marshal.startPublishing(request),\n critical = _marshal$startPublish.critical,\n dimensions = _marshal$startPublish.dimensions,\n viewport = _marshal$startPublish.viewport;\n\n validateDimensions(critical, dimensions);\n dispatch(initialPublish({\n critical: critical,\n dimensions: dimensions,\n clientSelection: clientSelection,\n movementMode: movementMode,\n viewport: viewport\n }));\n };\n };\n };\n});\n\nvar style = (function (marshal) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'INITIAL_PUBLISH') {\n marshal.dragging();\n }\n\n if (action.type === 'DROP_ANIMATE') {\n marshal.dropping(action.payload.completed.result.reason);\n }\n\n if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE') {\n marshal.resting();\n }\n\n next(action);\n };\n };\n };\n});\n\nvar curves = {\n outOfTheWay: 'cubic-bezier(0.2, 0, 0, 1)',\n drop: 'cubic-bezier(.2,1,.1,1)'\n};\nvar combine = {\n opacity: {\n drop: 0,\n combining: 0.7\n },\n scale: {\n drop: 0.75\n }\n};\nvar timings = {\n outOfTheWay: 0.2,\n minDropTime: 0.33,\n maxDropTime: 0.55\n};\nvar outOfTheWayTiming = timings.outOfTheWay + \"s \" + curves.outOfTheWay;\nvar transitions = {\n fluid: \"opacity \" + outOfTheWayTiming,\n snap: \"transform \" + outOfTheWayTiming + \", opacity \" + outOfTheWayTiming,\n drop: function drop(duration) {\n var timing = duration + \"s \" + curves.drop;\n return \"transform \" + timing + \", opacity \" + timing;\n },\n outOfTheWay: \"transform \" + outOfTheWayTiming,\n placeholder: \"height \" + outOfTheWayTiming + \", width \" + outOfTheWayTiming + \", margin \" + outOfTheWayTiming\n};\n\nvar moveTo = function moveTo(offset) {\n return isEqual(offset, origin) ? null : \"translate(\" + offset.x + \"px, \" + offset.y + \"px)\";\n};\n\nvar transforms = {\n moveTo: moveTo,\n drop: function drop(offset, isCombining) {\n var translate = moveTo(offset);\n\n if (!translate) {\n return null;\n }\n\n if (!isCombining) {\n return translate;\n }\n\n return translate + \" scale(\" + combine.scale.drop + \")\";\n }\n};\n\nvar minDropTime = timings.minDropTime,\n maxDropTime = timings.maxDropTime;\nvar dropTimeRange = maxDropTime - minDropTime;\nvar maxDropTimeAtDistance = 1500;\nvar cancelDropModifier = 0.6;\nvar getDropDuration = (function (_ref) {\n var current = _ref.current,\n destination = _ref.destination,\n reason = _ref.reason;\n var distance$1 = distance(current, destination);\n\n if (distance$1 <= 0) {\n return minDropTime;\n }\n\n if (distance$1 >= maxDropTimeAtDistance) {\n return maxDropTime;\n }\n\n var percentage = distance$1 / maxDropTimeAtDistance;\n var duration = minDropTime + dropTimeRange * percentage;\n var withDuration = reason === 'CANCEL' ? duration * cancelDropModifier : duration;\n return Number(withDuration.toFixed(2));\n});\n\nvar getNewHomeClientOffset = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n dimensions = _ref.dimensions,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var draggables = dimensions.draggables,\n droppables = dimensions.droppables;\n var droppableId = whatIsDraggedOver(impact);\n var destination = droppableId ? droppables[droppableId] : null;\n var home = droppables[draggable.descriptor.droppableId];\n var newClientCenter = getClientBorderBoxCenter({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n afterCritical: afterCritical,\n droppable: destination || home,\n viewport: viewport\n });\n var offset = subtract(newClientCenter, draggable.client.borderBox.center);\n return offset;\n});\n\nvar getDropImpact = (function (_ref) {\n var draggables = _ref.draggables,\n reason = _ref.reason,\n lastImpact = _ref.lastImpact,\n home = _ref.home,\n viewport = _ref.viewport,\n onLiftImpact = _ref.onLiftImpact;\n\n if (!lastImpact.at || reason !== 'DROP') {\n var recomputedHomeImpact = recompute({\n draggables: draggables,\n impact: onLiftImpact,\n destination: home,\n viewport: viewport,\n forceShouldAnimate: true\n });\n return {\n impact: recomputedHomeImpact,\n didDropInsideDroppable: false\n };\n }\n\n if (lastImpact.at.type === 'REORDER') {\n return {\n impact: lastImpact,\n didDropInsideDroppable: true\n };\n }\n\n var withoutMovement = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, lastImpact, {\n displaced: emptyGroups\n });\n\n return {\n impact: withoutMovement,\n didDropInsideDroppable: true\n };\n});\n\nvar drop$1 = (function (_ref) {\n var getState = _ref.getState,\n dispatch = _ref.dispatch;\n return function (next) {\n return function (action) {\n if (action.type !== 'DROP') {\n next(action);\n return;\n }\n\n var state = getState();\n var reason = action.payload.reason;\n\n if (state.phase === 'COLLECTING') {\n dispatch(dropPending({\n reason: reason\n }));\n return;\n }\n\n if (state.phase === 'IDLE') {\n return;\n }\n\n var isWaitingForDrop = state.phase === 'DROP_PENDING' && state.isWaiting;\n !!isWaitingForDrop ? true ? invariant(false, 'A DROP action occurred while DROP_PENDING and still waiting') : 0 : void 0;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? true ? invariant(false, \"Cannot drop in phase: \" + state.phase) : 0 : void 0;\n var critical = state.critical;\n var dimensions = state.dimensions;\n var draggable = dimensions.draggables[state.critical.draggable.id];\n\n var _getDropImpact = getDropImpact({\n reason: reason,\n lastImpact: state.impact,\n afterCritical: state.afterCritical,\n onLiftImpact: state.onLiftImpact,\n home: state.dimensions.droppables[state.critical.droppable.id],\n viewport: state.viewport,\n draggables: state.dimensions.draggables\n }),\n impact = _getDropImpact.impact,\n didDropInsideDroppable = _getDropImpact.didDropInsideDroppable;\n\n var destination = didDropInsideDroppable ? tryGetDestination(impact) : null;\n var combine = didDropInsideDroppable ? tryGetCombine(impact) : null;\n var source = {\n index: critical.draggable.index,\n droppableId: critical.droppable.id\n };\n var result = {\n draggableId: draggable.descriptor.id,\n type: draggable.descriptor.type,\n source: source,\n reason: reason,\n mode: state.movementMode,\n destination: destination,\n combine: combine\n };\n var newHomeClientOffset = getNewHomeClientOffset({\n impact: impact,\n draggable: draggable,\n dimensions: dimensions,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n var completed = {\n critical: state.critical,\n afterCritical: state.afterCritical,\n result: result,\n impact: impact\n };\n var isAnimationRequired = !isEqual(state.current.client.offset, newHomeClientOffset) || Boolean(result.combine);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop({\n completed: completed\n }));\n return;\n }\n\n var dropDuration = getDropDuration({\n current: state.current.client.offset,\n destination: newHomeClientOffset,\n reason: reason\n });\n var args = {\n newHomeClientOffset: newHomeClientOffset,\n dropDuration: dropDuration,\n completed: completed\n };\n dispatch(animateDrop(args));\n };\n };\n});\n\nvar getWindowScroll = (function () {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n});\n\nfunction getWindowScrollBinding(update) {\n return {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: function fn(event) {\n if (event.target !== window && event.target !== window.document) {\n return;\n }\n\n update();\n }\n };\n}\n\nfunction getScrollListener(_ref) {\n var onWindowScroll = _ref.onWindowScroll;\n\n function updateScroll() {\n onWindowScroll(getWindowScroll());\n }\n\n var scheduled = (0,raf_schd__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(updateScroll);\n var binding = getWindowScrollBinding(scheduled);\n var unbind = noop;\n\n function isActive() {\n return unbind !== noop;\n }\n\n function start() {\n !!isActive() ? true ? invariant(false, 'Cannot start scroll listener when already active') : 0 : void 0;\n unbind = bindEvents(window, [binding]);\n }\n\n function stop() {\n !isActive() ? true ? invariant(false, 'Cannot stop scroll listener when not active') : 0 : void 0;\n scheduled.cancel();\n unbind();\n unbind = noop;\n }\n\n return {\n start: start,\n stop: stop,\n isActive: isActive\n };\n}\n\nvar shouldEnd = function shouldEnd(action) {\n return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar scrollListener = (function (store) {\n var listener = getScrollListener({\n onWindowScroll: function onWindowScroll(newScroll) {\n store.dispatch(moveByWindowScroll({\n newScroll: newScroll\n }));\n }\n });\n return function (next) {\n return function (action) {\n if (!listener.isActive() && action.type === 'INITIAL_PUBLISH') {\n listener.start();\n }\n\n if (listener.isActive() && shouldEnd(action)) {\n listener.stop();\n }\n\n next(action);\n };\n };\n});\n\nvar getExpiringAnnounce = (function (announce) {\n var wasCalled = false;\n var isExpired = false;\n var timeoutId = setTimeout(function () {\n isExpired = true;\n });\n\n var result = function result(message) {\n if (wasCalled) {\n true ? warning('Announcement already made. Not making a second announcement') : 0;\n return;\n }\n\n if (isExpired) {\n true ? warning(\"\\n Announcements cannot be made asynchronously.\\n Default message has already been announced.\\n \") : 0;\n return;\n }\n\n wasCalled = true;\n announce(message);\n clearTimeout(timeoutId);\n };\n\n result.wasCalled = function () {\n return wasCalled;\n };\n\n return result;\n});\n\nvar getAsyncMarshal = (function () {\n var entries = [];\n\n var execute = function execute(timerId) {\n var index = findIndex(entries, function (item) {\n return item.timerId === timerId;\n });\n !(index !== -1) ? true ? invariant(false, 'Could not find timer') : 0 : void 0;\n\n var _entries$splice = entries.splice(index, 1),\n entry = _entries$splice[0];\n\n entry.callback();\n };\n\n var add = function add(fn) {\n var timerId = setTimeout(function () {\n return execute(timerId);\n });\n var entry = {\n timerId: timerId,\n callback: fn\n };\n entries.push(entry);\n };\n\n var flush = function flush() {\n if (!entries.length) {\n return;\n }\n\n var shallow = [].concat(entries);\n entries.length = 0;\n shallow.forEach(function (entry) {\n clearTimeout(entry.timerId);\n entry.callback();\n });\n };\n\n return {\n add: add,\n flush: flush\n };\n});\n\nvar areLocationsEqual = function areLocationsEqual(first, second) {\n if (first == null && second == null) {\n return true;\n }\n\n if (first == null || second == null) {\n return false;\n }\n\n return first.droppableId === second.droppableId && first.index === second.index;\n};\nvar isCombineEqual = function isCombineEqual(first, second) {\n if (first == null && second == null) {\n return true;\n }\n\n if (first == null || second == null) {\n return false;\n }\n\n return first.draggableId === second.draggableId && first.droppableId === second.droppableId;\n};\nvar isCriticalEqual = function isCriticalEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n var isDraggableEqual = first.draggable.id === second.draggable.id && first.draggable.droppableId === second.draggable.droppableId && first.draggable.type === second.draggable.type && first.draggable.index === second.draggable.index;\n var isDroppableEqual = first.droppable.id === second.droppable.id && first.droppable.type === second.droppable.type;\n return isDraggableEqual && isDroppableEqual;\n};\n\nvar withTimings = function withTimings(key, fn) {\n start();\n fn();\n finish();\n};\n\nvar getDragStart = function getDragStart(critical, mode) {\n return {\n draggableId: critical.draggable.id,\n type: critical.droppable.type,\n source: {\n droppableId: critical.droppable.id,\n index: critical.draggable.index\n },\n mode: mode\n };\n};\n\nvar execute = function execute(responder, data, announce, getDefaultMessage) {\n if (!responder) {\n announce(getDefaultMessage(data));\n return;\n }\n\n var willExpire = getExpiringAnnounce(announce);\n var provided = {\n announce: willExpire\n };\n responder(data, provided);\n\n if (!willExpire.wasCalled()) {\n announce(getDefaultMessage(data));\n }\n};\n\nvar getPublisher = (function (getResponders, announce) {\n var asyncMarshal = getAsyncMarshal();\n var dragging = null;\n\n var beforeCapture = function beforeCapture(draggableId, mode) {\n !!dragging ? true ? invariant(false, 'Cannot fire onBeforeCapture as a drag start has already been published') : 0 : void 0;\n withTimings('onBeforeCapture', function () {\n var fn = getResponders().onBeforeCapture;\n\n if (fn) {\n var before = {\n draggableId: draggableId,\n mode: mode\n };\n fn(before);\n }\n });\n };\n\n var beforeStart = function beforeStart(critical, mode) {\n !!dragging ? true ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : 0 : void 0;\n withTimings('onBeforeDragStart', function () {\n var fn = getResponders().onBeforeDragStart;\n\n if (fn) {\n fn(getDragStart(critical, mode));\n }\n });\n };\n\n var start = function start(critical, mode) {\n !!dragging ? true ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : 0 : void 0;\n var data = getDragStart(critical, mode);\n dragging = {\n mode: mode,\n lastCritical: critical,\n lastLocation: data.source,\n lastCombine: null\n };\n asyncMarshal.add(function () {\n withTimings('onDragStart', function () {\n return execute(getResponders().onDragStart, data, announce, preset.onDragStart);\n });\n });\n };\n\n var update = function update(critical, impact) {\n var location = tryGetDestination(impact);\n var combine = tryGetCombine(impact);\n !dragging ? true ? invariant(false, 'Cannot fire onDragMove when onDragStart has not been called') : 0 : void 0;\n var hasCriticalChanged = !isCriticalEqual(critical, dragging.lastCritical);\n\n if (hasCriticalChanged) {\n dragging.lastCritical = critical;\n }\n\n var hasLocationChanged = !areLocationsEqual(dragging.lastLocation, location);\n\n if (hasLocationChanged) {\n dragging.lastLocation = location;\n }\n\n var hasGroupingChanged = !isCombineEqual(dragging.lastCombine, combine);\n\n if (hasGroupingChanged) {\n dragging.lastCombine = combine;\n }\n\n if (!hasCriticalChanged && !hasLocationChanged && !hasGroupingChanged) {\n return;\n }\n\n var data = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, getDragStart(critical, dragging.mode), {\n combine: combine,\n destination: location\n });\n\n asyncMarshal.add(function () {\n withTimings('onDragUpdate', function () {\n return execute(getResponders().onDragUpdate, data, announce, preset.onDragUpdate);\n });\n });\n };\n\n var flush = function flush() {\n !dragging ? true ? invariant(false, 'Can only flush responders while dragging') : 0 : void 0;\n asyncMarshal.flush();\n };\n\n var drop = function drop(result) {\n !dragging ? true ? invariant(false, 'Cannot fire onDragEnd when there is no matching onDragStart') : 0 : void 0;\n dragging = null;\n withTimings('onDragEnd', function () {\n return execute(getResponders().onDragEnd, result, announce, preset.onDragEnd);\n });\n };\n\n var abort = function abort() {\n if (!dragging) {\n return;\n }\n\n var result = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, getDragStart(dragging.lastCritical, dragging.mode), {\n combine: null,\n destination: null,\n reason: 'CANCEL'\n });\n\n drop(result);\n };\n\n return {\n beforeCapture: beforeCapture,\n beforeStart: beforeStart,\n start: start,\n update: update,\n flush: flush,\n drop: drop,\n abort: abort\n };\n});\n\nvar responders = (function (getResponders, announce) {\n var publisher = getPublisher(getResponders, announce);\n return function (store) {\n return function (next) {\n return function (action) {\n if (action.type === 'BEFORE_INITIAL_CAPTURE') {\n publisher.beforeCapture(action.payload.draggableId, action.payload.movementMode);\n return;\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n var critical = action.payload.critical;\n publisher.beforeStart(critical, action.payload.movementMode);\n next(action);\n publisher.start(critical, action.payload.movementMode);\n return;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var result = action.payload.completed.result;\n publisher.flush();\n next(action);\n publisher.drop(result);\n return;\n }\n\n next(action);\n\n if (action.type === 'FLUSH') {\n publisher.abort();\n return;\n }\n\n var state = store.getState();\n\n if (state.phase === 'DRAGGING') {\n publisher.update(state.critical, state.impact);\n }\n };\n };\n };\n});\n\nvar dropAnimationFinish = (function (store) {\n return function (next) {\n return function (action) {\n if (action.type !== 'DROP_ANIMATION_FINISHED') {\n next(action);\n return;\n }\n\n var state = store.getState();\n !(state.phase === 'DROP_ANIMATING') ? true ? invariant(false, 'Cannot finish a drop animating when no drop is occurring') : 0 : void 0;\n store.dispatch(completeDrop({\n completed: state.completed\n }));\n };\n };\n});\n\nvar dropAnimationFlushOnScroll = (function (store) {\n var unbind = null;\n var frameId = null;\n\n function clear() {\n if (frameId) {\n cancelAnimationFrame(frameId);\n frameId = null;\n }\n\n if (unbind) {\n unbind();\n unbind = null;\n }\n }\n\n return function (next) {\n return function (action) {\n if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATION_FINISHED') {\n clear();\n }\n\n next(action);\n\n if (action.type !== 'DROP_ANIMATE') {\n return;\n }\n\n var binding = {\n eventName: 'scroll',\n options: {\n capture: true,\n passive: false,\n once: true\n },\n fn: function flushDropAnimation() {\n var state = store.getState();\n\n if (state.phase === 'DROP_ANIMATING') {\n store.dispatch(dropAnimationFinished());\n }\n }\n };\n frameId = requestAnimationFrame(function () {\n frameId = null;\n unbind = bindEvents(window, [binding]);\n });\n };\n };\n});\n\nvar dimensionMarshalStopper = (function (marshal) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'DROP_COMPLETE' || action.type === 'FLUSH' || action.type === 'DROP_ANIMATE') {\n marshal.stopPublishing();\n }\n\n next(action);\n };\n };\n };\n});\n\nvar focus = (function (marshal) {\n var isWatching = false;\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'INITIAL_PUBLISH') {\n isWatching = true;\n marshal.tryRecordFocus(action.payload.critical.draggable.id);\n next(action);\n marshal.tryRestoreFocusRecorded();\n return;\n }\n\n next(action);\n\n if (!isWatching) {\n return;\n }\n\n if (action.type === 'FLUSH') {\n isWatching = false;\n marshal.tryRestoreFocusRecorded();\n return;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n isWatching = false;\n var result = action.payload.completed.result;\n\n if (result.combine) {\n marshal.tryShiftRecord(result.draggableId, result.combine.draggableId);\n }\n\n marshal.tryRestoreFocusRecorded();\n }\n };\n };\n };\n});\n\nvar shouldStop = function shouldStop(action) {\n return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar autoScroll = (function (autoScroller) {\n return function (store) {\n return function (next) {\n return function (action) {\n if (shouldStop(action)) {\n autoScroller.stop();\n next(action);\n return;\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n next(action);\n var state = store.getState();\n !(state.phase === 'DRAGGING') ? true ? invariant(false, 'Expected phase to be DRAGGING after INITIAL_PUBLISH') : 0 : void 0;\n autoScroller.start(state);\n return;\n }\n\n next(action);\n autoScroller.scroll(store.getState());\n };\n };\n };\n});\n\nvar pendingDrop = (function (store) {\n return function (next) {\n return function (action) {\n next(action);\n\n if (action.type !== 'PUBLISH_WHILE_DRAGGING') {\n return;\n }\n\n var postActionState = store.getState();\n\n if (postActionState.phase !== 'DROP_PENDING') {\n return;\n }\n\n if (postActionState.isWaiting) {\n return;\n }\n\n store.dispatch(drop({\n reason: postActionState.reason\n }));\n };\n };\n});\n\nvar composeEnhancers = true && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: 'react-beautiful-dnd'\n}) : redux__WEBPACK_IMPORTED_MODULE_8__.compose;\nvar createStore = (function (_ref) {\n var dimensionMarshal = _ref.dimensionMarshal,\n focusMarshal = _ref.focusMarshal,\n styleMarshal = _ref.styleMarshal,\n getResponders = _ref.getResponders,\n announce = _ref.announce,\n autoScroller = _ref.autoScroller;\n return (0,redux__WEBPACK_IMPORTED_MODULE_8__.createStore)(reducer, composeEnhancers((0,redux__WEBPACK_IMPORTED_MODULE_8__.applyMiddleware)(style(styleMarshal), dimensionMarshalStopper(dimensionMarshal), lift$1(dimensionMarshal), drop$1, dropAnimationFinish, dropAnimationFlushOnScroll, pendingDrop, autoScroll(autoScroller), scrollListener, focus(focusMarshal), responders(getResponders, announce))));\n});\n\nvar clean$1 = function clean() {\n return {\n additions: {},\n removals: {},\n modified: {}\n };\n};\nfunction createPublisher(_ref) {\n var registry = _ref.registry,\n callbacks = _ref.callbacks;\n var staging = clean$1();\n var frameId = null;\n\n var collect = function collect() {\n if (frameId) {\n return;\n }\n\n callbacks.collectionStarting();\n frameId = requestAnimationFrame(function () {\n frameId = null;\n start();\n var _staging = staging,\n additions = _staging.additions,\n removals = _staging.removals,\n modified = _staging.modified;\n var added = Object.keys(additions).map(function (id) {\n return registry.draggable.getById(id).getDimension(origin);\n }).sort(function (a, b) {\n return a.descriptor.index - b.descriptor.index;\n });\n var updated = Object.keys(modified).map(function (id) {\n var entry = registry.droppable.getById(id);\n var scroll = entry.callbacks.getScrollWhileDragging();\n return {\n droppableId: id,\n scroll: scroll\n };\n });\n var result = {\n additions: added,\n removals: Object.keys(removals),\n modified: updated\n };\n staging = clean$1();\n finish();\n callbacks.publish(result);\n });\n };\n\n var add = function add(entry) {\n var id = entry.descriptor.id;\n staging.additions[id] = entry;\n staging.modified[entry.descriptor.droppableId] = true;\n\n if (staging.removals[id]) {\n delete staging.removals[id];\n }\n\n collect();\n };\n\n var remove = function remove(entry) {\n var descriptor = entry.descriptor;\n staging.removals[descriptor.id] = true;\n staging.modified[descriptor.droppableId] = true;\n\n if (staging.additions[descriptor.id]) {\n delete staging.additions[descriptor.id];\n }\n\n collect();\n };\n\n var stop = function stop() {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n staging = clean$1();\n };\n\n return {\n add: add,\n remove: remove,\n stop: stop\n };\n}\n\nvar getMaxScroll = (function (_ref) {\n var scrollHeight = _ref.scrollHeight,\n scrollWidth = _ref.scrollWidth,\n height = _ref.height,\n width = _ref.width;\n var maxScroll = subtract({\n x: scrollWidth,\n y: scrollHeight\n }, {\n x: width,\n y: height\n });\n var adjustedMaxScroll = {\n x: Math.max(0, maxScroll.x),\n y: Math.max(0, maxScroll.y)\n };\n return adjustedMaxScroll;\n});\n\nvar getDocumentElement = (function () {\n var doc = document.documentElement;\n !doc ? true ? invariant(false, 'Cannot find document.documentElement') : 0 : void 0;\n return doc;\n});\n\nvar getMaxWindowScroll = (function () {\n var doc = getDocumentElement();\n var maxScroll = getMaxScroll({\n scrollHeight: doc.scrollHeight,\n scrollWidth: doc.scrollWidth,\n width: doc.clientWidth,\n height: doc.clientHeight\n });\n return maxScroll;\n});\n\nvar getViewport = (function () {\n var scroll = getWindowScroll();\n var maxScroll = getMaxWindowScroll();\n var top = scroll.y;\n var left = scroll.x;\n var doc = getDocumentElement();\n var width = doc.clientWidth;\n var height = doc.clientHeight;\n var right = left + width;\n var bottom = top + height;\n var frame = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.getRect)({\n top: top,\n left: left,\n right: right,\n bottom: bottom\n });\n var viewport = {\n frame: frame,\n scroll: {\n initial: scroll,\n current: scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n return viewport;\n});\n\nvar getInitialPublish = (function (_ref) {\n var critical = _ref.critical,\n scrollOptions = _ref.scrollOptions,\n registry = _ref.registry;\n start();\n var viewport = getViewport();\n var windowScroll = viewport.scroll.current;\n var home = critical.droppable;\n var droppables = registry.droppable.getAllByType(home.type).map(function (entry) {\n return entry.callbacks.getDimensionAndWatchScroll(windowScroll, scrollOptions);\n });\n var draggables = registry.draggable.getAllByType(critical.draggable.type).map(function (entry) {\n return entry.getDimension(windowScroll);\n });\n var dimensions = {\n draggables: toDraggableMap(draggables),\n droppables: toDroppableMap(droppables)\n };\n finish();\n var result = {\n dimensions: dimensions,\n critical: critical,\n viewport: viewport\n };\n return result;\n});\n\nfunction shouldPublishUpdate(registry, dragging, entry) {\n if (entry.descriptor.id === dragging.id) {\n return false;\n }\n\n if (entry.descriptor.type !== dragging.type) {\n return false;\n }\n\n var home = registry.droppable.getById(entry.descriptor.droppableId);\n\n if (home.descriptor.mode !== 'virtual') {\n true ? warning(\"\\n You are attempting to add or remove a Draggable [id: \" + entry.descriptor.id + \"]\\n while a drag is occurring. This is only supported for virtual lists.\\n\\n See https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/patterns/virtual-lists.md\\n \") : 0;\n return false;\n }\n\n return true;\n}\n\nvar createDimensionMarshal = (function (registry, callbacks) {\n var collection = null;\n var publisher = createPublisher({\n callbacks: {\n publish: callbacks.publishWhileDragging,\n collectionStarting: callbacks.collectionStarting\n },\n registry: registry\n });\n\n var updateDroppableIsEnabled = function updateDroppableIsEnabled(id, isEnabled) {\n !registry.droppable.exists(id) ? true ? invariant(false, \"Cannot update is enabled flag of Droppable \" + id + \" as it is not registered\") : 0 : void 0;\n\n if (!collection) {\n return;\n }\n\n callbacks.updateDroppableIsEnabled({\n id: id,\n isEnabled: isEnabled\n });\n };\n\n var updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(id, isCombineEnabled) {\n if (!collection) {\n return;\n }\n\n !registry.droppable.exists(id) ? true ? invariant(false, \"Cannot update isCombineEnabled flag of Droppable \" + id + \" as it is not registered\") : 0 : void 0;\n callbacks.updateDroppableIsCombineEnabled({\n id: id,\n isCombineEnabled: isCombineEnabled\n });\n };\n\n var updateDroppableScroll = function updateDroppableScroll(id, newScroll) {\n if (!collection) {\n return;\n }\n\n !registry.droppable.exists(id) ? true ? invariant(false, \"Cannot update the scroll on Droppable \" + id + \" as it is not registered\") : 0 : void 0;\n callbacks.updateDroppableScroll({\n id: id,\n newScroll: newScroll\n });\n };\n\n var scrollDroppable = function scrollDroppable(id, change) {\n if (!collection) {\n return;\n }\n\n registry.droppable.getById(id).callbacks.scroll(change);\n };\n\n var stopPublishing = function stopPublishing() {\n if (!collection) {\n return;\n }\n\n publisher.stop();\n var home = collection.critical.droppable;\n registry.droppable.getAllByType(home.type).forEach(function (entry) {\n return entry.callbacks.dragStopped();\n });\n collection.unsubscribe();\n collection = null;\n };\n\n var subscriber = function subscriber(event) {\n !collection ? true ? invariant(false, 'Should only be subscribed when a collection is occurring') : 0 : void 0;\n var dragging = collection.critical.draggable;\n\n if (event.type === 'ADDITION') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.add(event.value);\n }\n }\n\n if (event.type === 'REMOVAL') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.remove(event.value);\n }\n }\n };\n\n var startPublishing = function startPublishing(request) {\n !!collection ? true ? invariant(false, 'Cannot start capturing critical dimensions as there is already a collection') : 0 : void 0;\n var entry = registry.draggable.getById(request.draggableId);\n var home = registry.droppable.getById(entry.descriptor.droppableId);\n var critical = {\n draggable: entry.descriptor,\n droppable: home.descriptor\n };\n var unsubscribe = registry.subscribe(subscriber);\n collection = {\n critical: critical,\n unsubscribe: unsubscribe\n };\n return getInitialPublish({\n critical: critical,\n registry: registry,\n scrollOptions: request.scrollOptions\n });\n };\n\n var marshal = {\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n scrollDroppable: scrollDroppable,\n updateDroppableScroll: updateDroppableScroll,\n startPublishing: startPublishing,\n stopPublishing: stopPublishing\n };\n return marshal;\n});\n\nvar canStartDrag = (function (state, id) {\n if (state.phase === 'IDLE') {\n return true;\n }\n\n if (state.phase !== 'DROP_ANIMATING') {\n return false;\n }\n\n if (state.completed.result.draggableId === id) {\n return false;\n }\n\n return state.completed.result.reason === 'DROP';\n});\n\nvar scrollWindow = (function (change) {\n window.scrollBy(change.x, change.y);\n});\n\nvar getScrollableDroppables = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (droppables) {\n return toDroppableList(droppables).filter(function (droppable) {\n if (!droppable.isEnabled) {\n return false;\n }\n\n if (!droppable.frame) {\n return false;\n }\n\n return true;\n });\n});\n\nvar getScrollableDroppableOver = function getScrollableDroppableOver(target, droppables) {\n var maybe = find(getScrollableDroppables(droppables), function (droppable) {\n !droppable.frame ? true ? invariant(false, 'Invalid result') : 0 : void 0;\n return isPositionInFrame(droppable.frame.pageMarginBox)(target);\n });\n return maybe;\n};\n\nvar getBestScrollableDroppable = (function (_ref) {\n var center = _ref.center,\n destination = _ref.destination,\n droppables = _ref.droppables;\n\n if (destination) {\n var _dimension = droppables[destination];\n\n if (!_dimension.frame) {\n return null;\n }\n\n return _dimension;\n }\n\n var dimension = getScrollableDroppableOver(center, droppables);\n return dimension;\n});\n\nvar config = {\n startFromPercentage: 0.25,\n maxScrollAtPercentage: 0.05,\n maxPixelScroll: 28,\n ease: function ease(percentage) {\n return Math.pow(percentage, 2);\n },\n durationDampening: {\n stopDampeningAt: 1200,\n accelerateAt: 360\n }\n};\n\nvar getDistanceThresholds = (function (container, axis) {\n var startScrollingFrom = container[axis.size] * config.startFromPercentage;\n var maxScrollValueAt = container[axis.size] * config.maxScrollAtPercentage;\n var thresholds = {\n startScrollingFrom: startScrollingFrom,\n maxScrollValueAt: maxScrollValueAt\n };\n return thresholds;\n});\n\nvar getPercentage = (function (_ref) {\n var startOfRange = _ref.startOfRange,\n endOfRange = _ref.endOfRange,\n current = _ref.current;\n var range = endOfRange - startOfRange;\n\n if (range === 0) {\n true ? warning(\"\\n Detected distance range of 0 in the fluid auto scroller\\n This is unexpected and would cause a divide by 0 issue.\\n Not allowing an auto scroll\\n \") : 0;\n return 0;\n }\n\n var currentInRange = current - startOfRange;\n var percentage = currentInRange / range;\n return percentage;\n});\n\nvar minScroll = 1;\n\nvar getValueFromDistance = (function (distanceToEdge, thresholds) {\n if (distanceToEdge > thresholds.startScrollingFrom) {\n return 0;\n }\n\n if (distanceToEdge <= thresholds.maxScrollValueAt) {\n return config.maxPixelScroll;\n }\n\n if (distanceToEdge === thresholds.startScrollingFrom) {\n return minScroll;\n }\n\n var percentageFromMaxScrollValueAt = getPercentage({\n startOfRange: thresholds.maxScrollValueAt,\n endOfRange: thresholds.startScrollingFrom,\n current: distanceToEdge\n });\n var percentageFromStartScrollingFrom = 1 - percentageFromMaxScrollValueAt;\n var scroll = config.maxPixelScroll * config.ease(percentageFromStartScrollingFrom);\n return Math.ceil(scroll);\n});\n\nvar accelerateAt = config.durationDampening.accelerateAt;\nvar stopAt = config.durationDampening.stopDampeningAt;\nvar dampenValueByTime = (function (proposedScroll, dragStartTime) {\n var startOfRange = dragStartTime;\n var endOfRange = stopAt;\n var now = Date.now();\n var runTime = now - startOfRange;\n\n if (runTime >= stopAt) {\n return proposedScroll;\n }\n\n if (runTime < accelerateAt) {\n return minScroll;\n }\n\n var betweenAccelerateAtAndStopAtPercentage = getPercentage({\n startOfRange: accelerateAt,\n endOfRange: endOfRange,\n current: runTime\n });\n var scroll = proposedScroll * config.ease(betweenAccelerateAtAndStopAtPercentage);\n return Math.ceil(scroll);\n});\n\nvar getValue = (function (_ref) {\n var distanceToEdge = _ref.distanceToEdge,\n thresholds = _ref.thresholds,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var scroll = getValueFromDistance(distanceToEdge, thresholds);\n\n if (scroll === 0) {\n return 0;\n }\n\n if (!shouldUseTimeDampening) {\n return scroll;\n }\n\n return Math.max(dampenValueByTime(scroll, dragStartTime), minScroll);\n});\n\nvar getScrollOnAxis = (function (_ref) {\n var container = _ref.container,\n distanceToEdges = _ref.distanceToEdges,\n dragStartTime = _ref.dragStartTime,\n axis = _ref.axis,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var thresholds = getDistanceThresholds(container, axis);\n var isCloserToEnd = distanceToEdges[axis.end] < distanceToEdges[axis.start];\n\n if (isCloserToEnd) {\n return getValue({\n distanceToEdge: distanceToEdges[axis.end],\n thresholds: thresholds,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n }\n\n return -1 * getValue({\n distanceToEdge: distanceToEdges[axis.start],\n thresholds: thresholds,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n});\n\nvar adjustForSizeLimits = (function (_ref) {\n var container = _ref.container,\n subject = _ref.subject,\n proposedScroll = _ref.proposedScroll;\n var isTooBigVertically = subject.height > container.height;\n var isTooBigHorizontally = subject.width > container.width;\n\n if (!isTooBigHorizontally && !isTooBigVertically) {\n return proposedScroll;\n }\n\n if (isTooBigHorizontally && isTooBigVertically) {\n return null;\n }\n\n return {\n x: isTooBigHorizontally ? 0 : proposedScroll.x,\n y: isTooBigVertically ? 0 : proposedScroll.y\n };\n});\n\nvar clean$2 = apply(function (value) {\n return value === 0 ? 0 : value;\n});\nvar getScroll = (function (_ref) {\n var dragStartTime = _ref.dragStartTime,\n container = _ref.container,\n subject = _ref.subject,\n center = _ref.center,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var distanceToEdges = {\n top: center.y - container.top,\n right: container.right - center.x,\n bottom: container.bottom - center.y,\n left: center.x - container.left\n };\n var y = getScrollOnAxis({\n container: container,\n distanceToEdges: distanceToEdges,\n dragStartTime: dragStartTime,\n axis: vertical,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n var x = getScrollOnAxis({\n container: container,\n distanceToEdges: distanceToEdges,\n dragStartTime: dragStartTime,\n axis: horizontal,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n var required = clean$2({\n x: x,\n y: y\n });\n\n if (isEqual(required, origin)) {\n return null;\n }\n\n var limited = adjustForSizeLimits({\n container: container,\n subject: subject,\n proposedScroll: required\n });\n\n if (!limited) {\n return null;\n }\n\n return isEqual(limited, origin) ? null : limited;\n});\n\nvar smallestSigned = apply(function (value) {\n if (value === 0) {\n return 0;\n }\n\n return value > 0 ? 1 : -1;\n});\nvar getOverlap = function () {\n var getRemainder = function getRemainder(target, max) {\n if (target < 0) {\n return target;\n }\n\n if (target > max) {\n return target - max;\n }\n\n return 0;\n };\n\n return function (_ref) {\n var current = _ref.current,\n max = _ref.max,\n change = _ref.change;\n var targetScroll = add(current, change);\n var overlap = {\n x: getRemainder(targetScroll.x, max.x),\n y: getRemainder(targetScroll.y, max.y)\n };\n\n if (isEqual(overlap, origin)) {\n return null;\n }\n\n return overlap;\n };\n}();\nvar canPartiallyScroll = function canPartiallyScroll(_ref2) {\n var rawMax = _ref2.max,\n current = _ref2.current,\n change = _ref2.change;\n var max = {\n x: Math.max(current.x, rawMax.x),\n y: Math.max(current.y, rawMax.y)\n };\n var smallestChange = smallestSigned(change);\n var overlap = getOverlap({\n max: max,\n current: current,\n change: smallestChange\n });\n\n if (!overlap) {\n return true;\n }\n\n if (smallestChange.x !== 0 && overlap.x === 0) {\n return true;\n }\n\n if (smallestChange.y !== 0 && overlap.y === 0) {\n return true;\n }\n\n return false;\n};\nvar canScrollWindow = function canScrollWindow(viewport, change) {\n return canPartiallyScroll({\n current: viewport.scroll.current,\n max: viewport.scroll.max,\n change: change\n });\n};\nvar getWindowOverlap = function getWindowOverlap(viewport, change) {\n if (!canScrollWindow(viewport, change)) {\n return null;\n }\n\n var max = viewport.scroll.max;\n var current = viewport.scroll.current;\n return getOverlap({\n current: current,\n max: max,\n change: change\n });\n};\nvar canScrollDroppable = function canScrollDroppable(droppable, change) {\n var frame = droppable.frame;\n\n if (!frame) {\n return false;\n }\n\n return canPartiallyScroll({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change: change\n });\n};\nvar getDroppableOverlap = function getDroppableOverlap(droppable, change) {\n var frame = droppable.frame;\n\n if (!frame) {\n return null;\n }\n\n if (!canScrollDroppable(droppable, change)) {\n return null;\n }\n\n return getOverlap({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change: change\n });\n};\n\nvar getWindowScrollChange = (function (_ref) {\n var viewport = _ref.viewport,\n subject = _ref.subject,\n center = _ref.center,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var scroll = getScroll({\n dragStartTime: dragStartTime,\n container: viewport.frame,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n return scroll && canScrollWindow(viewport, scroll) ? scroll : null;\n});\n\nvar getDroppableScrollChange = (function (_ref) {\n var droppable = _ref.droppable,\n subject = _ref.subject,\n center = _ref.center,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var frame = droppable.frame;\n\n if (!frame) {\n return null;\n }\n\n var scroll = getScroll({\n dragStartTime: dragStartTime,\n container: frame.pageMarginBox,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n return scroll && canScrollDroppable(droppable, scroll) ? scroll : null;\n});\n\nvar scroll$1 = (function (_ref) {\n var state = _ref.state,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening,\n scrollWindow = _ref.scrollWindow,\n scrollDroppable = _ref.scrollDroppable;\n var center = state.current.page.borderBoxCenter;\n var draggable = state.dimensions.draggables[state.critical.draggable.id];\n var subject = draggable.page.marginBox;\n\n if (state.isWindowScrollAllowed) {\n var viewport = state.viewport;\n\n var _change = getWindowScrollChange({\n dragStartTime: dragStartTime,\n viewport: viewport,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n\n if (_change) {\n scrollWindow(_change);\n return;\n }\n }\n\n var droppable = getBestScrollableDroppable({\n center: center,\n destination: whatIsDraggedOver(state.impact),\n droppables: state.dimensions.droppables\n });\n\n if (!droppable) {\n return;\n }\n\n var change = getDroppableScrollChange({\n dragStartTime: dragStartTime,\n droppable: droppable,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n\n if (change) {\n scrollDroppable(droppable.descriptor.id, change);\n }\n});\n\nvar createFluidScroller = (function (_ref) {\n var scrollWindow = _ref.scrollWindow,\n scrollDroppable = _ref.scrollDroppable;\n var scheduleWindowScroll = (0,raf_schd__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(scrollWindow);\n var scheduleDroppableScroll = (0,raf_schd__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(scrollDroppable);\n var dragging = null;\n\n var tryScroll = function tryScroll(state) {\n !dragging ? true ? invariant(false, 'Cannot fluid scroll if not dragging') : 0 : void 0;\n var _dragging = dragging,\n shouldUseTimeDampening = _dragging.shouldUseTimeDampening,\n dragStartTime = _dragging.dragStartTime;\n scroll$1({\n state: state,\n scrollWindow: scheduleWindowScroll,\n scrollDroppable: scheduleDroppableScroll,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n };\n\n var start$1 = function start$1(state) {\n start();\n !!dragging ? true ? invariant(false, 'Cannot start auto scrolling when already started') : 0 : void 0;\n var dragStartTime = Date.now();\n var wasScrollNeeded = false;\n\n var fakeScrollCallback = function fakeScrollCallback() {\n wasScrollNeeded = true;\n };\n\n scroll$1({\n state: state,\n dragStartTime: 0,\n shouldUseTimeDampening: false,\n scrollWindow: fakeScrollCallback,\n scrollDroppable: fakeScrollCallback\n });\n dragging = {\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: wasScrollNeeded\n };\n finish();\n\n if (wasScrollNeeded) {\n tryScroll(state);\n }\n };\n\n var stop = function stop() {\n if (!dragging) {\n return;\n }\n\n scheduleWindowScroll.cancel();\n scheduleDroppableScroll.cancel();\n dragging = null;\n };\n\n return {\n start: start$1,\n stop: stop,\n scroll: tryScroll\n };\n});\n\nvar createJumpScroller = (function (_ref) {\n var move = _ref.move,\n scrollDroppable = _ref.scrollDroppable,\n scrollWindow = _ref.scrollWindow;\n\n var moveByOffset = function moveByOffset(state, offset) {\n var client = add(state.current.client.selection, offset);\n move({\n client: client\n });\n };\n\n var scrollDroppableAsMuchAsItCan = function scrollDroppableAsMuchAsItCan(droppable, change) {\n if (!canScrollDroppable(droppable, change)) {\n return change;\n }\n\n var overlap = getDroppableOverlap(droppable, change);\n\n if (!overlap) {\n scrollDroppable(droppable.descriptor.id, change);\n return null;\n }\n\n var whatTheDroppableCanScroll = subtract(change, overlap);\n scrollDroppable(droppable.descriptor.id, whatTheDroppableCanScroll);\n var remainder = subtract(change, whatTheDroppableCanScroll);\n return remainder;\n };\n\n var scrollWindowAsMuchAsItCan = function scrollWindowAsMuchAsItCan(isWindowScrollAllowed, viewport, change) {\n if (!isWindowScrollAllowed) {\n return change;\n }\n\n if (!canScrollWindow(viewport, change)) {\n return change;\n }\n\n var overlap = getWindowOverlap(viewport, change);\n\n if (!overlap) {\n scrollWindow(change);\n return null;\n }\n\n var whatTheWindowCanScroll = subtract(change, overlap);\n scrollWindow(whatTheWindowCanScroll);\n var remainder = subtract(change, whatTheWindowCanScroll);\n return remainder;\n };\n\n var jumpScroller = function jumpScroller(state) {\n var request = state.scrollJumpRequest;\n\n if (!request) {\n return;\n }\n\n var destination = whatIsDraggedOver(state.impact);\n !destination ? true ? invariant(false, 'Cannot perform a jump scroll when there is no destination') : 0 : void 0;\n var droppableRemainder = scrollDroppableAsMuchAsItCan(state.dimensions.droppables[destination], request);\n\n if (!droppableRemainder) {\n return;\n }\n\n var viewport = state.viewport;\n var windowRemainder = scrollWindowAsMuchAsItCan(state.isWindowScrollAllowed, viewport, droppableRemainder);\n\n if (!windowRemainder) {\n return;\n }\n\n moveByOffset(state, windowRemainder);\n };\n\n return jumpScroller;\n});\n\nvar createAutoScroller = (function (_ref) {\n var scrollDroppable = _ref.scrollDroppable,\n scrollWindow = _ref.scrollWindow,\n move = _ref.move;\n var fluidScroller = createFluidScroller({\n scrollWindow: scrollWindow,\n scrollDroppable: scrollDroppable\n });\n var jumpScroll = createJumpScroller({\n move: move,\n scrollWindow: scrollWindow,\n scrollDroppable: scrollDroppable\n });\n\n var scroll = function scroll(state) {\n if (state.phase !== 'DRAGGING') {\n return;\n }\n\n if (state.movementMode === 'FLUID') {\n fluidScroller.scroll(state);\n return;\n }\n\n if (!state.scrollJumpRequest) {\n return;\n }\n\n jumpScroll(state);\n };\n\n var scroller = {\n scroll: scroll,\n start: fluidScroller.start,\n stop: fluidScroller.stop\n };\n return scroller;\n});\n\nvar prefix$1 = 'data-rbd';\nvar dragHandle = function () {\n var base = prefix$1 + \"-drag-handle\";\n return {\n base: base,\n draggableId: base + \"-draggable-id\",\n contextId: base + \"-context-id\"\n };\n}();\nvar draggable = function () {\n var base = prefix$1 + \"-draggable\";\n return {\n base: base,\n contextId: base + \"-context-id\",\n id: base + \"-id\"\n };\n}();\nvar droppable = function () {\n var base = prefix$1 + \"-droppable\";\n return {\n base: base,\n contextId: base + \"-context-id\",\n id: base + \"-id\"\n };\n}();\nvar scrollContainer = {\n contextId: prefix$1 + \"-scroll-container-context-id\"\n};\n\nvar makeGetSelector = function makeGetSelector(context) {\n return function (attribute) {\n return \"[\" + attribute + \"=\\\"\" + context + \"\\\"]\";\n };\n};\n\nvar getStyles = function getStyles(rules, property) {\n return rules.map(function (rule) {\n var value = rule.styles[property];\n\n if (!value) {\n return '';\n }\n\n return rule.selector + \" { \" + value + \" }\";\n }).join(' ');\n};\n\nvar noPointerEvents = 'pointer-events: none;';\nvar getStyles$1 = (function (contextId) {\n var getSelector = makeGetSelector(contextId);\n\n var dragHandle$1 = function () {\n var grabCursor = \"\\n cursor: -webkit-grab;\\n cursor: grab;\\n \";\n return {\n selector: getSelector(dragHandle.contextId),\n styles: {\n always: \"\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0,0,0,0);\\n touch-action: manipulation;\\n \",\n resting: grabCursor,\n dragging: noPointerEvents,\n dropAnimating: grabCursor\n }\n };\n }();\n\n var draggable$1 = function () {\n var transition = \"\\n transition: \" + transitions.outOfTheWay + \";\\n \";\n return {\n selector: getSelector(draggable.contextId),\n styles: {\n dragging: transition,\n dropAnimating: transition,\n userCancel: transition\n }\n };\n }();\n\n var droppable$1 = {\n selector: getSelector(droppable.contextId),\n styles: {\n always: \"overflow-anchor: none;\"\n }\n };\n var body = {\n selector: 'body',\n styles: {\n dragging: \"\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n user-select: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n overflow-anchor: none;\\n \"\n }\n };\n var rules = [draggable$1, dragHandle$1, droppable$1, body];\n return {\n always: getStyles(rules, 'always'),\n resting: getStyles(rules, 'resting'),\n dragging: getStyles(rules, 'dragging'),\n dropAnimating: getStyles(rules, 'dropAnimating'),\n userCancel: getStyles(rules, 'userCancel')\n };\n});\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;\n\nvar getHead = function getHead() {\n var head = document.querySelector('head');\n !head ? true ? invariant(false, 'Cannot find the head to append a style to') : 0 : void 0;\n return head;\n};\n\nvar createStyleEl = function createStyleEl(nonce) {\n var el = document.createElement('style');\n\n if (nonce) {\n el.setAttribute('nonce', nonce);\n }\n\n el.type = 'text/css';\n return el;\n};\n\nfunction useStyleMarshal(contextId, nonce) {\n var styles = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return getStyles$1(contextId);\n }, [contextId]);\n var alwaysRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var dynamicRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var setDynamicStyle = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)((0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (proposed) {\n var el = dynamicRef.current;\n !el ? true ? invariant(false, 'Cannot set dynamic style element if it is not set') : 0 : void 0;\n el.textContent = proposed;\n }), []);\n var setAlwaysStyle = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (proposed) {\n var el = alwaysRef.current;\n !el ? true ? invariant(false, 'Cannot set dynamic style element if it is not set') : 0 : void 0;\n el.textContent = proposed;\n }, []);\n useIsomorphicLayoutEffect(function () {\n !(!alwaysRef.current && !dynamicRef.current) ? true ? invariant(false, 'style elements already mounted') : 0 : void 0;\n var always = createStyleEl(nonce);\n var dynamic = createStyleEl(nonce);\n alwaysRef.current = always;\n dynamicRef.current = dynamic;\n always.setAttribute(prefix$1 + \"-always\", contextId);\n dynamic.setAttribute(prefix$1 + \"-dynamic\", contextId);\n getHead().appendChild(always);\n getHead().appendChild(dynamic);\n setAlwaysStyle(styles.always);\n setDynamicStyle(styles.resting);\n return function () {\n var remove = function remove(ref) {\n var current = ref.current;\n !current ? true ? invariant(false, 'Cannot unmount ref as it is not set') : 0 : void 0;\n getHead().removeChild(current);\n ref.current = null;\n };\n\n remove(alwaysRef);\n remove(dynamicRef);\n };\n }, [nonce, setAlwaysStyle, setDynamicStyle, styles.always, styles.resting, contextId]);\n var dragging = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n return setDynamicStyle(styles.dragging);\n }, [setDynamicStyle, styles.dragging]);\n var dropping = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (reason) {\n if (reason === 'DROP') {\n setDynamicStyle(styles.dropAnimating);\n return;\n }\n\n setDynamicStyle(styles.userCancel);\n }, [setDynamicStyle, styles.dropAnimating, styles.userCancel]);\n var resting = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n if (!dynamicRef.current) {\n return;\n }\n\n setDynamicStyle(styles.resting);\n }, [setDynamicStyle, styles.resting]);\n var marshal = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n dragging: dragging,\n dropping: dropping,\n resting: resting\n };\n }, [dragging, dropping, resting]);\n return marshal;\n}\n\nvar getWindowFromEl = (function (el) {\n return el && el.ownerDocument ? el.ownerDocument.defaultView : window;\n});\n\nfunction isHtmlElement(el) {\n return el instanceof getWindowFromEl(el).HTMLElement;\n}\n\nfunction findDragHandle(contextId, draggableId) {\n var selector = \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n var possible = toArray(document.querySelectorAll(selector));\n\n if (!possible.length) {\n true ? warning(\"Unable to find any drag handles in the context \\\"\" + contextId + \"\\\"\") : 0;\n return null;\n }\n\n var handle = find(possible, function (el) {\n return el.getAttribute(dragHandle.draggableId) === draggableId;\n });\n\n if (!handle) {\n true ? warning(\"Unable to find drag handle with id \\\"\" + draggableId + \"\\\" as no handle with a matching id was found\") : 0;\n return null;\n }\n\n if (!isHtmlElement(handle)) {\n true ? warning('drag handle needs to be a HTMLElement') : 0;\n return null;\n }\n\n return handle;\n}\n\nfunction useFocusMarshal(contextId) {\n var entriesRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({});\n var recordRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var restoreFocusFrameRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var isMountedRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);\n var register = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function register(id, focus) {\n var entry = {\n id: id,\n focus: focus\n };\n entriesRef.current[id] = entry;\n return function unregister() {\n var entries = entriesRef.current;\n var current = entries[id];\n\n if (current !== entry) {\n delete entries[id];\n }\n };\n }, []);\n var tryGiveFocus = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function tryGiveFocus(tryGiveFocusTo) {\n var handle = findDragHandle(contextId, tryGiveFocusTo);\n\n if (handle && handle !== document.activeElement) {\n handle.focus();\n }\n }, [contextId]);\n var tryShiftRecord = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function tryShiftRecord(previous, redirectTo) {\n if (recordRef.current === previous) {\n recordRef.current = redirectTo;\n }\n }, []);\n var tryRestoreFocusRecorded = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function tryRestoreFocusRecorded() {\n if (restoreFocusFrameRef.current) {\n return;\n }\n\n if (!isMountedRef.current) {\n return;\n }\n\n restoreFocusFrameRef.current = requestAnimationFrame(function () {\n restoreFocusFrameRef.current = null;\n var record = recordRef.current;\n\n if (record) {\n tryGiveFocus(record);\n }\n });\n }, [tryGiveFocus]);\n var tryRecordFocus = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function tryRecordFocus(id) {\n recordRef.current = null;\n var focused = document.activeElement;\n\n if (!focused) {\n return;\n }\n\n if (focused.getAttribute(dragHandle.draggableId) !== id) {\n return;\n }\n\n recordRef.current = id;\n }, []);\n useIsomorphicLayoutEffect(function () {\n isMountedRef.current = true;\n return function clearFrameOnUnmount() {\n isMountedRef.current = false;\n var frameId = restoreFocusFrameRef.current;\n\n if (frameId) {\n cancelAnimationFrame(frameId);\n }\n };\n }, []);\n var marshal = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n register: register,\n tryRecordFocus: tryRecordFocus,\n tryRestoreFocusRecorded: tryRestoreFocusRecorded,\n tryShiftRecord: tryShiftRecord\n };\n }, [register, tryRecordFocus, tryRestoreFocusRecorded, tryShiftRecord]);\n return marshal;\n}\n\nfunction createRegistry() {\n var entries = {\n draggables: {},\n droppables: {}\n };\n var subscribers = [];\n\n function subscribe(cb) {\n subscribers.push(cb);\n return function unsubscribe() {\n var index = subscribers.indexOf(cb);\n\n if (index === -1) {\n return;\n }\n\n subscribers.splice(index, 1);\n };\n }\n\n function notify(event) {\n if (subscribers.length) {\n subscribers.forEach(function (cb) {\n return cb(event);\n });\n }\n }\n\n function findDraggableById(id) {\n return entries.draggables[id] || null;\n }\n\n function getDraggableById(id) {\n var entry = findDraggableById(id);\n !entry ? true ? invariant(false, \"Cannot find draggable entry with id [\" + id + \"]\") : 0 : void 0;\n return entry;\n }\n\n var draggableAPI = {\n register: function register(entry) {\n entries.draggables[entry.descriptor.id] = entry;\n notify({\n type: 'ADDITION',\n value: entry\n });\n },\n update: function update(entry, last) {\n var current = entries.draggables[last.descriptor.id];\n\n if (!current) {\n return;\n }\n\n if (current.uniqueId !== entry.uniqueId) {\n return;\n }\n\n delete entries.draggables[last.descriptor.id];\n entries.draggables[entry.descriptor.id] = entry;\n },\n unregister: function unregister(entry) {\n var draggableId = entry.descriptor.id;\n var current = findDraggableById(draggableId);\n\n if (!current) {\n return;\n }\n\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n\n delete entries.draggables[draggableId];\n notify({\n type: 'REMOVAL',\n value: entry\n });\n },\n getById: getDraggableById,\n findById: findDraggableById,\n exists: function exists(id) {\n return Boolean(findDraggableById(id));\n },\n getAllByType: function getAllByType(type) {\n return values(entries.draggables).filter(function (entry) {\n return entry.descriptor.type === type;\n });\n }\n };\n\n function findDroppableById(id) {\n return entries.droppables[id] || null;\n }\n\n function getDroppableById(id) {\n var entry = findDroppableById(id);\n !entry ? true ? invariant(false, \"Cannot find droppable entry with id [\" + id + \"]\") : 0 : void 0;\n return entry;\n }\n\n var droppableAPI = {\n register: function register(entry) {\n entries.droppables[entry.descriptor.id] = entry;\n },\n unregister: function unregister(entry) {\n var current = findDroppableById(entry.descriptor.id);\n\n if (!current) {\n return;\n }\n\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n\n delete entries.droppables[entry.descriptor.id];\n },\n getById: getDroppableById,\n findById: findDroppableById,\n exists: function exists(id) {\n return Boolean(findDroppableById(id));\n },\n getAllByType: function getAllByType(type) {\n return values(entries.droppables).filter(function (entry) {\n return entry.descriptor.type === type;\n });\n }\n };\n\n function clean() {\n entries.draggables = {};\n entries.droppables = {};\n subscribers.length = 0;\n }\n\n return {\n draggable: draggableAPI,\n droppable: droppableAPI,\n subscribe: subscribe,\n clean: clean\n };\n}\n\nfunction useRegistry() {\n var registry = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(createRegistry, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n return function unmount() {\n requestAnimationFrame(registry.clean);\n };\n }, [registry]);\n return registry;\n}\n\nvar StoreContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);\n\nvar getBodyElement = (function () {\n var body = document.body;\n !body ? true ? invariant(false, 'Cannot find document.body') : 0 : void 0;\n return body;\n});\n\nvar visuallyHidden = {\n position: 'absolute',\n width: '1px',\n height: '1px',\n margin: '-1px',\n border: '0',\n padding: '0',\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n 'clip-path': 'inset(100%)'\n};\n\nvar getId = function getId(contextId) {\n return \"rbd-announcement-\" + contextId;\n};\nfunction useAnnouncer(contextId) {\n var id = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return getId(contextId);\n }, [contextId]);\n var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function setup() {\n var el = document.createElement('div');\n ref.current = el;\n el.id = id;\n el.setAttribute('aria-live', 'assertive');\n el.setAttribute('aria-atomic', 'true');\n\n (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(el.style, visuallyHidden);\n\n getBodyElement().appendChild(el);\n return function cleanup() {\n setTimeout(function remove() {\n var body = getBodyElement();\n\n if (body.contains(el)) {\n body.removeChild(el);\n }\n\n if (el === ref.current) {\n ref.current = null;\n }\n });\n };\n }, [id]);\n var announce = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (message) {\n var el = ref.current;\n\n if (el) {\n el.textContent = message;\n return;\n }\n\n true ? warning(\"\\n A screen reader message was trying to be announced but it was unable to do so.\\n This can occur if you unmount your in your onDragEnd.\\n Consider calling provided.announce() before the unmount so that the instruction will\\n not be lost for users relying on a screen reader.\\n\\n Message not passed to screen reader:\\n\\n \\\"\" + message + \"\\\"\\n \") : 0;\n }, []);\n return announce;\n}\n\nvar count = 0;\nvar defaults = {\n separator: '::'\n};\nfunction reset() {\n count = 0;\n}\nfunction useUniqueId(prefix, options) {\n if (options === void 0) {\n options = defaults;\n }\n\n return (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return \"\" + prefix + options.separator + count++;\n }, [options.separator, prefix]);\n}\n\nfunction getElementId(_ref) {\n var contextId = _ref.contextId,\n uniqueId = _ref.uniqueId;\n return \"rbd-hidden-text-\" + contextId + \"-\" + uniqueId;\n}\nfunction useHiddenTextElement(_ref2) {\n var contextId = _ref2.contextId,\n text = _ref2.text;\n var uniqueId = useUniqueId('hidden-text', {\n separator: '-'\n });\n var id = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return getElementId({\n contextId: contextId,\n uniqueId: uniqueId\n });\n }, [uniqueId, contextId]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function mount() {\n var el = document.createElement('div');\n el.id = id;\n el.textContent = text;\n el.style.display = 'none';\n getBodyElement().appendChild(el);\n return function unmount() {\n var body = getBodyElement();\n\n if (body.contains(el)) {\n body.removeChild(el);\n }\n };\n }, [id, text]);\n return id;\n}\n\nvar AppContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);\n\nvar peerDependencies = {\n\treact: \"^16.8.5 || ^17.0.0 || ^18.0.0\",\n\t\"react-dom\": \"^16.8.5 || ^17.0.0 || ^18.0.0\"\n};\n\nvar semver = /(\\d+)\\.(\\d+)\\.(\\d+)/;\n\nvar getVersion = function getVersion(value) {\n var result = semver.exec(value);\n !(result != null) ? true ? invariant(false, \"Unable to parse React version \" + value) : 0 : void 0;\n var major = Number(result[1]);\n var minor = Number(result[2]);\n var patch = Number(result[3]);\n return {\n major: major,\n minor: minor,\n patch: patch,\n raw: value\n };\n};\n\nvar isSatisfied = function isSatisfied(expected, actual) {\n if (actual.major > expected.major) {\n return true;\n }\n\n if (actual.major < expected.major) {\n return false;\n }\n\n if (actual.minor > expected.minor) {\n return true;\n }\n\n if (actual.minor < expected.minor) {\n return false;\n }\n\n return actual.patch >= expected.patch;\n};\n\nvar checkReactVersion = (function (peerDepValue, actualValue) {\n var peerDep = getVersion(peerDepValue);\n var actual = getVersion(actualValue);\n\n if (isSatisfied(peerDep, actual)) {\n return;\n }\n\n true ? warning(\"\\n React version: [\" + actual.raw + \"]\\n does not satisfy expected peer dependency version: [\" + peerDep.raw + \"]\\n\\n This can result in run time bugs, and even fatal crashes\\n \") : 0;\n});\n\nvar suffix = \"\\n We expect a html5 doctype: \\n This is to ensure consistent browser layout and measurement\\n\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/doctype.md\\n\";\nvar checkDoctype = (function (doc) {\n var doctype = doc.doctype;\n\n if (!doctype) {\n true ? warning(\"\\n No found.\\n\\n \" + suffix + \"\\n \") : 0;\n return;\n }\n\n if (doctype.name.toLowerCase() !== 'html') {\n true ? warning(\"\\n Unexpected found: (\" + doctype.name + \")\\n\\n \" + suffix + \"\\n \") : 0;\n }\n\n if (doctype.publicId !== '') {\n true ? warning(\"\\n Unexpected publicId found: (\" + doctype.publicId + \")\\n A html5 doctype does not have a publicId\\n\\n \" + suffix + \"\\n \") : 0;\n }\n});\n\nfunction useDev(useHook) {\n if (true) {\n useHook();\n }\n}\n\nfunction useDevSetupWarning(fn, inputs) {\n useDev(function () {\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n try {\n fn();\n } catch (e) {\n error(\"\\n A setup problem was encountered.\\n\\n > \" + e.message + \"\\n \");\n }\n }, inputs);\n });\n}\n\nfunction useStartupValidation() {\n useDevSetupWarning(function () {\n checkReactVersion(peerDependencies.react, (react__WEBPACK_IMPORTED_MODULE_0___default().version));\n checkDoctype(document);\n }, []);\n}\n\nfunction usePrevious(current) {\n var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(current);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n ref.current = current;\n });\n return ref;\n}\n\nfunction create() {\n var lock = null;\n\n function isClaimed() {\n return Boolean(lock);\n }\n\n function isActive(value) {\n return value === lock;\n }\n\n function claim(abandon) {\n !!lock ? true ? invariant(false, 'Cannot claim lock as it is already claimed') : 0 : void 0;\n var newLock = {\n abandon: abandon\n };\n lock = newLock;\n return newLock;\n }\n\n function release() {\n !lock ? true ? invariant(false, 'Cannot release lock when there is no lock') : 0 : void 0;\n lock = null;\n }\n\n function tryAbandon() {\n if (lock) {\n lock.abandon();\n release();\n }\n }\n\n return {\n isClaimed: isClaimed,\n isActive: isActive,\n claim: claim,\n release: release,\n tryAbandon: tryAbandon\n };\n}\n\nvar tab = 9;\nvar enter = 13;\nvar escape = 27;\nvar space = 32;\nvar pageUp = 33;\nvar pageDown = 34;\nvar end = 35;\nvar home = 36;\nvar arrowLeft = 37;\nvar arrowUp = 38;\nvar arrowRight = 39;\nvar arrowDown = 40;\n\nvar _preventedKeys;\nvar preventedKeys = (_preventedKeys = {}, _preventedKeys[enter] = true, _preventedKeys[tab] = true, _preventedKeys);\nvar preventStandardKeyEvents = (function (event) {\n if (preventedKeys[event.keyCode]) {\n event.preventDefault();\n }\n});\n\nvar supportedEventName = function () {\n var base = 'visibilitychange';\n\n if (typeof document === 'undefined') {\n return base;\n }\n\n var candidates = [base, \"ms\" + base, \"webkit\" + base, \"moz\" + base, \"o\" + base];\n var supported = find(candidates, function (eventName) {\n return \"on\" + eventName in document;\n });\n return supported || base;\n}();\n\nvar primaryButton = 0;\nvar sloppyClickThreshold = 5;\n\nfunction isSloppyClickThresholdExceeded(original, current) {\n return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n}\n\nvar idle$1 = {\n type: 'IDLE'\n};\n\nfunction getCaptureBindings(_ref) {\n var cancel = _ref.cancel,\n completed = _ref.completed,\n getPhase = _ref.getPhase,\n setPhase = _ref.setPhase;\n return [{\n eventName: 'mousemove',\n fn: function fn(event) {\n var button = event.button,\n clientX = event.clientX,\n clientY = event.clientY;\n\n if (button !== primaryButton) {\n return;\n }\n\n var point = {\n x: clientX,\n y: clientY\n };\n var phase = getPhase();\n\n if (phase.type === 'DRAGGING') {\n event.preventDefault();\n phase.actions.move(point);\n return;\n }\n\n !(phase.type === 'PENDING') ? true ? invariant(false, 'Cannot be IDLE') : 0 : void 0;\n var pending = phase.point;\n\n if (!isSloppyClickThresholdExceeded(pending, point)) {\n return;\n }\n\n event.preventDefault();\n var actions = phase.actions.fluidLift(point);\n setPhase({\n type: 'DRAGGING',\n actions: actions\n });\n }\n }, {\n eventName: 'mouseup',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'mousedown',\n fn: function fn(event) {\n if (getPhase().type === 'DRAGGING') {\n event.preventDefault();\n }\n\n cancel();\n }\n }, {\n eventName: 'keydown',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type === 'PENDING') {\n cancel();\n return;\n }\n\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: function fn() {\n if (getPhase().type === 'PENDING') {\n cancel();\n }\n }\n }, {\n eventName: 'webkitmouseforcedown',\n fn: function fn(event) {\n var phase = getPhase();\n !(phase.type !== 'IDLE') ? true ? invariant(false, 'Unexpected phase') : 0 : void 0;\n\n if (phase.actions.shouldRespectForcePress()) {\n cancel();\n return;\n }\n\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useMouseSensor(api) {\n var phaseRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(idle$1);\n var unbindEventsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(noop);\n var startCaptureBinding = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n eventName: 'mousedown',\n fn: function onMouseDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.button !== primaryButton) {\n return;\n }\n\n if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!actions) {\n return;\n }\n\n event.preventDefault();\n var point = {\n x: event.clientX,\n y: event.clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n };\n }, [api]);\n var preventForcePressBinding = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n eventName: 'webkitmouseforcewillbegin',\n fn: function fn(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n var id = api.findClosestDraggableId(event);\n\n if (!id) {\n return;\n }\n\n var options = api.findOptionsForDraggable(id);\n\n if (!options) {\n return;\n }\n\n if (options.shouldRespectForcePress) {\n return;\n }\n\n if (!api.canGetLock(id)) {\n return;\n }\n\n event.preventDefault();\n }\n };\n }, [api]);\n var listenForCapture = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function listenForCapture() {\n var options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [preventForcePressBinding, startCaptureBinding], options);\n }, [preventForcePressBinding, startCaptureBinding]);\n var stop = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var current = phaseRef.current;\n\n if (current.type === 'IDLE') {\n return;\n }\n\n phaseRef.current = idle$1;\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture]);\n var cancel = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var phase = phaseRef.current;\n stop();\n\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n var bindCapturingEvents = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function bindCapturingEvents() {\n var options = {\n capture: true,\n passive: false\n };\n var bindings = getCaptureBindings({\n cancel: cancel,\n completed: stop,\n getPhase: function getPhase() {\n return phaseRef.current;\n },\n setPhase: function setPhase(phase) {\n phaseRef.current = phase;\n }\n });\n unbindEventsRef.current = bindEvents(window, bindings, options);\n }, [cancel, stop]);\n var startPendingDrag = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function startPendingDrag(actions, point) {\n !(phaseRef.current.type === 'IDLE') ? true ? invariant(false, 'Expected to move from IDLE to PENDING drag') : 0 : void 0;\n phaseRef.current = {\n type: 'PENDING',\n point: point,\n actions: actions\n };\n bindCapturingEvents();\n }, [bindCapturingEvents]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nvar _scrollJumpKeys;\n\nfunction noop$1() {}\n\nvar scrollJumpKeys = (_scrollJumpKeys = {}, _scrollJumpKeys[pageDown] = true, _scrollJumpKeys[pageUp] = true, _scrollJumpKeys[home] = true, _scrollJumpKeys[end] = true, _scrollJumpKeys);\n\nfunction getDraggingBindings(actions, stop) {\n function cancel() {\n stop();\n actions.cancel();\n }\n\n function drop() {\n stop();\n actions.drop();\n }\n\n return [{\n eventName: 'keydown',\n fn: function fn(event) {\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n\n if (event.keyCode === space) {\n event.preventDefault();\n drop();\n return;\n }\n\n if (event.keyCode === arrowDown) {\n event.preventDefault();\n actions.moveDown();\n return;\n }\n\n if (event.keyCode === arrowUp) {\n event.preventDefault();\n actions.moveUp();\n return;\n }\n\n if (event.keyCode === arrowRight) {\n event.preventDefault();\n actions.moveRight();\n return;\n }\n\n if (event.keyCode === arrowLeft) {\n event.preventDefault();\n actions.moveLeft();\n return;\n }\n\n if (scrollJumpKeys[event.keyCode]) {\n event.preventDefault();\n return;\n }\n\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'mousedown',\n fn: cancel\n }, {\n eventName: 'mouseup',\n fn: cancel\n }, {\n eventName: 'click',\n fn: cancel\n }, {\n eventName: 'touchstart',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'wheel',\n fn: cancel,\n options: {\n passive: true\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useKeyboardSensor(api) {\n var unbindEventsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(noop$1);\n var startCaptureBinding = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n eventName: 'keydown',\n fn: function onKeyDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.keyCode !== space) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var preDrag = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!preDrag) {\n return;\n }\n\n event.preventDefault();\n var isCapturing = true;\n var actions = preDrag.snapLift();\n unbindEventsRef.current();\n\n function stop() {\n !isCapturing ? true ? invariant(false, 'Cannot stop capturing a keyboard drag when not capturing') : 0 : void 0;\n isCapturing = false;\n unbindEventsRef.current();\n listenForCapture();\n }\n\n unbindEventsRef.current = bindEvents(window, getDraggingBindings(actions, stop), {\n capture: true,\n passive: false\n });\n }\n };\n }, [api]);\n var listenForCapture = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function tryStartCapture() {\n var options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nvar idle$2 = {\n type: 'IDLE'\n};\nvar timeForLongPress = 120;\nvar forcePressThreshold = 0.15;\n\nfunction getWindowBindings(_ref) {\n var cancel = _ref.cancel,\n getPhase = _ref.getPhase;\n return [{\n eventName: 'orientationchange',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'contextmenu',\n fn: function fn(event) {\n event.preventDefault();\n }\n }, {\n eventName: 'keydown',\n fn: function fn(event) {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n if (event.keyCode === escape) {\n event.preventDefault();\n }\n\n cancel();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction getHandleBindings(_ref2) {\n var cancel = _ref2.cancel,\n completed = _ref2.completed,\n getPhase = _ref2.getPhase;\n return [{\n eventName: 'touchmove',\n options: {\n capture: false\n },\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n phase.hasMoved = true;\n var _event$touches$ = event.touches[0],\n clientX = _event$touches$.clientX,\n clientY = _event$touches$.clientY;\n var point = {\n x: clientX,\n y: clientY\n };\n event.preventDefault();\n phase.actions.move(point);\n }\n }, {\n eventName: 'touchend',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'touchcancel',\n fn: function fn(event) {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n cancel();\n }\n }, {\n eventName: 'touchforcechange',\n fn: function fn(event) {\n var phase = getPhase();\n !(phase.type !== 'IDLE') ? true ? invariant(false) : 0 : void 0;\n var touch = event.touches[0];\n\n if (!touch) {\n return;\n }\n\n var isForcePress = touch.force >= forcePressThreshold;\n\n if (!isForcePress) {\n return;\n }\n\n var shouldRespect = phase.actions.shouldRespectForcePress();\n\n if (phase.type === 'PENDING') {\n if (shouldRespect) {\n cancel();\n }\n\n return;\n }\n\n if (shouldRespect) {\n if (phase.hasMoved) {\n event.preventDefault();\n return;\n }\n\n cancel();\n return;\n }\n\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useTouchSensor(api) {\n var phaseRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(idle$2);\n var unbindEventsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(noop);\n var getPhase = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function getPhase() {\n return phaseRef.current;\n }, []);\n var setPhase = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function setPhase(phase) {\n phaseRef.current = phase;\n }, []);\n var startCaptureBinding = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n eventName: 'touchstart',\n fn: function onTouchStart(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!actions) {\n return;\n }\n\n var touch = event.touches[0];\n var clientX = touch.clientX,\n clientY = touch.clientY;\n var point = {\n x: clientX,\n y: clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n };\n }, [api]);\n var listenForCapture = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function listenForCapture() {\n var options = {\n capture: true,\n passive: false\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n var stop = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var current = phaseRef.current;\n\n if (current.type === 'IDLE') {\n return;\n }\n\n if (current.type === 'PENDING') {\n clearTimeout(current.longPressTimerId);\n }\n\n setPhase(idle$2);\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture, setPhase]);\n var cancel = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var phase = phaseRef.current;\n stop();\n\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n var bindCapturingEvents = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function bindCapturingEvents() {\n var options = {\n capture: true,\n passive: false\n };\n var args = {\n cancel: cancel,\n completed: stop,\n getPhase: getPhase\n };\n var unbindTarget = bindEvents(window, getHandleBindings(args), options);\n var unbindWindow = bindEvents(window, getWindowBindings(args), options);\n\n unbindEventsRef.current = function unbindAll() {\n unbindTarget();\n unbindWindow();\n };\n }, [cancel, getPhase, stop]);\n var startDragging = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function startDragging() {\n var phase = getPhase();\n !(phase.type === 'PENDING') ? true ? invariant(false, \"Cannot start dragging from phase \" + phase.type) : 0 : void 0;\n var actions = phase.actions.fluidLift(phase.point);\n setPhase({\n type: 'DRAGGING',\n actions: actions,\n hasMoved: false\n });\n }, [getPhase, setPhase]);\n var startPendingDrag = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function startPendingDrag(actions, point) {\n !(getPhase().type === 'IDLE') ? true ? invariant(false, 'Expected to move from IDLE to PENDING drag') : 0 : void 0;\n var longPressTimerId = setTimeout(startDragging, timeForLongPress);\n setPhase({\n type: 'PENDING',\n point: point,\n actions: actions,\n longPressTimerId: longPressTimerId\n });\n bindCapturingEvents();\n }, [bindCapturingEvents, getPhase, setPhase, startDragging]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n var phase = getPhase();\n\n if (phase.type === 'PENDING') {\n clearTimeout(phase.longPressTimerId);\n setPhase(idle$2);\n }\n };\n }, [getPhase, listenForCapture, setPhase]);\n useIsomorphicLayoutEffect(function webkitHack() {\n var unbind = bindEvents(window, [{\n eventName: 'touchmove',\n fn: function fn() {},\n options: {\n capture: false,\n passive: false\n }\n }]);\n return unbind;\n }, []);\n}\n\nfunction useValidateSensorHooks(sensorHooks) {\n useDev(function () {\n var previousRef = usePrevious(sensorHooks);\n useDevSetupWarning(function () {\n !(previousRef.current.length === sensorHooks.length) ? true ? invariant(false, 'Cannot change the amount of sensor hooks after mounting') : 0 : void 0;\n });\n });\n}\n\nvar interactiveTagNames = {\n input: true,\n button: true,\n textarea: true,\n select: true,\n option: true,\n optgroup: true,\n video: true,\n audio: true\n};\n\nfunction isAnInteractiveElement(parent, current) {\n if (current == null) {\n return false;\n }\n\n var hasAnInteractiveTag = Boolean(interactiveTagNames[current.tagName.toLowerCase()]);\n\n if (hasAnInteractiveTag) {\n return true;\n }\n\n var attribute = current.getAttribute('contenteditable');\n\n if (attribute === 'true' || attribute === '') {\n return true;\n }\n\n if (current === parent) {\n return false;\n }\n\n return isAnInteractiveElement(parent, current.parentElement);\n}\n\nfunction isEventInInteractiveElement(draggable, event) {\n var target = event.target;\n\n if (!isHtmlElement(target)) {\n return false;\n }\n\n return isAnInteractiveElement(draggable, target);\n}\n\nvar getBorderBoxCenterPosition = (function (el) {\n return (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.getRect)(el.getBoundingClientRect()).center;\n});\n\nfunction isElement(el) {\n return el instanceof getWindowFromEl(el).Element;\n}\n\nvar supportedMatchesName = function () {\n var base = 'matches';\n\n if (typeof document === 'undefined') {\n return base;\n }\n\n var candidates = [base, 'msMatchesSelector', 'webkitMatchesSelector'];\n var value = find(candidates, function (name) {\n return name in Element.prototype;\n });\n return value || base;\n}();\n\nfunction closestPonyfill(el, selector) {\n if (el == null) {\n return null;\n }\n\n if (el[supportedMatchesName](selector)) {\n return el;\n }\n\n return closestPonyfill(el.parentElement, selector);\n}\n\nfunction closest$1(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n\n return closestPonyfill(el, selector);\n}\n\nfunction getSelector(contextId) {\n return \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n}\n\nfunction findClosestDragHandleFromEvent(contextId, event) {\n var target = event.target;\n\n if (!isElement(target)) {\n true ? warning('event.target must be a Element') : 0;\n return null;\n }\n\n var selector = getSelector(contextId);\n var handle = closest$1(target, selector);\n\n if (!handle) {\n return null;\n }\n\n if (!isHtmlElement(handle)) {\n true ? warning('drag handle must be a HTMLElement') : 0;\n return null;\n }\n\n return handle;\n}\n\nfunction tryGetClosestDraggableIdFromEvent(contextId, event) {\n var handle = findClosestDragHandleFromEvent(contextId, event);\n\n if (!handle) {\n return null;\n }\n\n return handle.getAttribute(dragHandle.draggableId);\n}\n\nfunction findDraggable(contextId, draggableId) {\n var selector = \"[\" + draggable.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n var possible = toArray(document.querySelectorAll(selector));\n var draggable$1 = find(possible, function (el) {\n return el.getAttribute(draggable.id) === draggableId;\n });\n\n if (!draggable$1) {\n return null;\n }\n\n if (!isHtmlElement(draggable$1)) {\n true ? warning('Draggable element is not a HTMLElement') : 0;\n return null;\n }\n\n return draggable$1;\n}\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\n\nfunction _isActive(_ref) {\n var expected = _ref.expected,\n phase = _ref.phase,\n isLockActive = _ref.isLockActive,\n shouldWarn = _ref.shouldWarn;\n\n if (!isLockActive()) {\n if (shouldWarn) {\n true ? warning(\"\\n Cannot perform action.\\n The sensor no longer has an action lock.\\n\\n Tips:\\n\\n - Throw away your action handlers when forceStop() is called\\n - Check actions.isActive() if you really need to\\n \") : 0;\n }\n\n return false;\n }\n\n if (expected !== phase) {\n if (shouldWarn) {\n true ? warning(\"\\n Cannot perform action.\\n The actions you used belong to an outdated phase\\n\\n Current phase: \" + expected + \"\\n You called an action from outdated phase: \" + phase + \"\\n\\n Tips:\\n\\n - Do not use preDragActions actions after calling preDragActions.lift()\\n \") : 0;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction canStart(_ref2) {\n var lockAPI = _ref2.lockAPI,\n store = _ref2.store,\n registry = _ref2.registry,\n draggableId = _ref2.draggableId;\n\n if (lockAPI.isClaimed()) {\n return false;\n }\n\n var entry = registry.draggable.findById(draggableId);\n\n if (!entry) {\n true ? warning(\"Unable to find draggable with id: \" + draggableId) : 0;\n return false;\n }\n\n if (!entry.options.isEnabled) {\n return false;\n }\n\n if (!canStartDrag(store.getState(), draggableId)) {\n return false;\n }\n\n return true;\n}\n\nfunction tryStart(_ref3) {\n var lockAPI = _ref3.lockAPI,\n contextId = _ref3.contextId,\n store = _ref3.store,\n registry = _ref3.registry,\n draggableId = _ref3.draggableId,\n forceSensorStop = _ref3.forceSensorStop,\n sourceEvent = _ref3.sourceEvent;\n var shouldStart = canStart({\n lockAPI: lockAPI,\n store: store,\n registry: registry,\n draggableId: draggableId\n });\n\n if (!shouldStart) {\n return null;\n }\n\n var entry = registry.draggable.getById(draggableId);\n var el = findDraggable(contextId, entry.descriptor.id);\n\n if (!el) {\n true ? warning(\"Unable to find draggable element with id: \" + draggableId) : 0;\n return null;\n }\n\n if (sourceEvent && !entry.options.canDragInteractiveElements && isEventInInteractiveElement(el, sourceEvent)) {\n return null;\n }\n\n var lock = lockAPI.claim(forceSensorStop || noop);\n var phase = 'PRE_DRAG';\n\n function getShouldRespectForcePress() {\n return entry.options.shouldRespectForcePress;\n }\n\n function isLockActive() {\n return lockAPI.isActive(lock);\n }\n\n function tryDispatch(expected, getAction) {\n if (_isActive({\n expected: expected,\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: true\n })) {\n store.dispatch(getAction());\n }\n }\n\n var tryDispatchWhenDragging = tryDispatch.bind(null, 'DRAGGING');\n\n function lift$1(args) {\n function completed() {\n lockAPI.release();\n phase = 'COMPLETED';\n }\n\n if (phase !== 'PRE_DRAG') {\n completed();\n !(phase === 'PRE_DRAG') ? true ? invariant(false, \"Cannot lift in phase \" + phase) : 0 : void 0;\n }\n\n store.dispatch(lift(args.liftActionArgs));\n phase = 'DRAGGING';\n\n function finish(reason, options) {\n if (options === void 0) {\n options = {\n shouldBlockNextClick: false\n };\n }\n\n args.cleanup();\n\n if (options.shouldBlockNextClick) {\n var unbind = bindEvents(window, [{\n eventName: 'click',\n fn: preventDefault,\n options: {\n once: true,\n passive: false,\n capture: true\n }\n }]);\n setTimeout(unbind);\n }\n\n completed();\n store.dispatch(drop({\n reason: reason\n }));\n }\n\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n isActive: function isActive() {\n return _isActive({\n expected: 'DRAGGING',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: false\n });\n },\n shouldRespectForcePress: getShouldRespectForcePress,\n drop: function drop(options) {\n return finish('DROP', options);\n },\n cancel: function cancel(options) {\n return finish('CANCEL', options);\n }\n }, args.actions);\n }\n\n function fluidLift(clientSelection) {\n var move$1 = (0,raf_schd__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(function (client) {\n tryDispatchWhenDragging(function () {\n return move({\n client: client\n });\n });\n });\n var api = lift$1({\n liftActionArgs: {\n id: draggableId,\n clientSelection: clientSelection,\n movementMode: 'FLUID'\n },\n cleanup: function cleanup() {\n return move$1.cancel();\n },\n actions: {\n move: move$1\n }\n });\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, api, {\n move: move$1\n });\n }\n\n function snapLift() {\n var actions = {\n moveUp: function moveUp$1() {\n return tryDispatchWhenDragging(moveUp);\n },\n moveRight: function moveRight$1() {\n return tryDispatchWhenDragging(moveRight);\n },\n moveDown: function moveDown$1() {\n return tryDispatchWhenDragging(moveDown);\n },\n moveLeft: function moveLeft$1() {\n return tryDispatchWhenDragging(moveLeft);\n }\n };\n return lift$1({\n liftActionArgs: {\n id: draggableId,\n clientSelection: getBorderBoxCenterPosition(el),\n movementMode: 'SNAP'\n },\n cleanup: noop,\n actions: actions\n });\n }\n\n function abortPreDrag() {\n var shouldRelease = _isActive({\n expected: 'PRE_DRAG',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: true\n });\n\n if (shouldRelease) {\n lockAPI.release();\n }\n }\n\n var preDrag = {\n isActive: function isActive() {\n return _isActive({\n expected: 'PRE_DRAG',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: false\n });\n },\n shouldRespectForcePress: getShouldRespectForcePress,\n fluidLift: fluidLift,\n snapLift: snapLift,\n abort: abortPreDrag\n };\n return preDrag;\n}\n\nvar defaultSensors = [useMouseSensor, useKeyboardSensor, useTouchSensor];\nfunction useSensorMarshal(_ref4) {\n var contextId = _ref4.contextId,\n store = _ref4.store,\n registry = _ref4.registry,\n customSensors = _ref4.customSensors,\n enableDefaultSensors = _ref4.enableDefaultSensors;\n var useSensors = [].concat(enableDefaultSensors ? defaultSensors : [], customSensors || []);\n var lockAPI = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () {\n return create();\n })[0];\n var tryAbandonLock = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function tryAbandonLock(previous, current) {\n if (previous.isDragging && !current.isDragging) {\n lockAPI.tryAbandon();\n }\n }, [lockAPI]);\n useIsomorphicLayoutEffect(function listenToStore() {\n var previous = store.getState();\n var unsubscribe = store.subscribe(function () {\n var current = store.getState();\n tryAbandonLock(previous, current);\n previous = current;\n });\n return unsubscribe;\n }, [lockAPI, store, tryAbandonLock]);\n useIsomorphicLayoutEffect(function () {\n return lockAPI.tryAbandon;\n }, [lockAPI.tryAbandon]);\n var canGetLock = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (draggableId) {\n return canStart({\n lockAPI: lockAPI,\n registry: registry,\n store: store,\n draggableId: draggableId\n });\n }, [lockAPI, registry, store]);\n var tryGetLock = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (draggableId, forceStop, options) {\n return tryStart({\n lockAPI: lockAPI,\n registry: registry,\n contextId: contextId,\n store: store,\n draggableId: draggableId,\n forceSensorStop: forceStop,\n sourceEvent: options && options.sourceEvent ? options.sourceEvent : null\n });\n }, [contextId, lockAPI, registry, store]);\n var findClosestDraggableId = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (event) {\n return tryGetClosestDraggableIdFromEvent(contextId, event);\n }, [contextId]);\n var findOptionsForDraggable = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (id) {\n var entry = registry.draggable.findById(id);\n return entry ? entry.options : null;\n }, [registry.draggable]);\n var tryReleaseLock = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function tryReleaseLock() {\n if (!lockAPI.isClaimed()) {\n return;\n }\n\n lockAPI.tryAbandon();\n\n if (store.getState().phase !== 'IDLE') {\n store.dispatch(flush());\n }\n }, [lockAPI, store]);\n var isLockClaimed = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(lockAPI.isClaimed, [lockAPI]);\n var api = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n canGetLock: canGetLock,\n tryGetLock: tryGetLock,\n findClosestDraggableId: findClosestDraggableId,\n findOptionsForDraggable: findOptionsForDraggable,\n tryReleaseLock: tryReleaseLock,\n isLockClaimed: isLockClaimed\n };\n }, [canGetLock, tryGetLock, findClosestDraggableId, findOptionsForDraggable, tryReleaseLock, isLockClaimed]);\n useValidateSensorHooks(useSensors);\n\n for (var i = 0; i < useSensors.length; i++) {\n useSensors[i](api);\n }\n}\n\nvar createResponders = function createResponders(props) {\n return {\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragEnd: props.onDragEnd,\n onDragUpdate: props.onDragUpdate\n };\n};\n\nfunction getStore(lazyRef) {\n !lazyRef.current ? true ? invariant(false, 'Could not find store from lazy ref') : 0 : void 0;\n return lazyRef.current;\n}\n\nfunction App(props) {\n var contextId = props.contextId,\n setCallbacks = props.setCallbacks,\n sensors = props.sensors,\n nonce = props.nonce,\n dragHandleUsageInstructions = props.dragHandleUsageInstructions;\n var lazyStoreRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n useStartupValidation();\n var lastPropsRef = usePrevious(props);\n var getResponders = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n return createResponders(lastPropsRef.current);\n }, [lastPropsRef]);\n var announce = useAnnouncer(contextId);\n var dragHandleUsageInstructionsId = useHiddenTextElement({\n contextId: contextId,\n text: dragHandleUsageInstructions\n });\n var styleMarshal = useStyleMarshal(contextId, nonce);\n var lazyDispatch = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (action) {\n getStore(lazyStoreRef).dispatch(action);\n }, []);\n var marshalCallbacks = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return (0,redux__WEBPACK_IMPORTED_MODULE_8__.bindActionCreators)({\n publishWhileDragging: publishWhileDragging,\n updateDroppableScroll: updateDroppableScroll,\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n collectionStarting: collectionStarting\n }, lazyDispatch);\n }, [lazyDispatch]);\n var registry = useRegistry();\n var dimensionMarshal = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return createDimensionMarshal(registry, marshalCallbacks);\n }, [registry, marshalCallbacks]);\n var autoScroller = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return createAutoScroller((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n scrollWindow: scrollWindow,\n scrollDroppable: dimensionMarshal.scrollDroppable\n }, (0,redux__WEBPACK_IMPORTED_MODULE_8__.bindActionCreators)({\n move: move\n }, lazyDispatch)));\n }, [dimensionMarshal.scrollDroppable, lazyDispatch]);\n var focusMarshal = useFocusMarshal(contextId);\n var store = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return createStore({\n announce: announce,\n autoScroller: autoScroller,\n dimensionMarshal: dimensionMarshal,\n focusMarshal: focusMarshal,\n getResponders: getResponders,\n styleMarshal: styleMarshal\n });\n }, [announce, autoScroller, dimensionMarshal, focusMarshal, getResponders, styleMarshal]);\n\n if (true) {\n if (lazyStoreRef.current && lazyStoreRef.current !== store) {\n true ? warning('unexpected store change') : 0;\n }\n }\n\n lazyStoreRef.current = store;\n var tryResetStore = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var current = getStore(lazyStoreRef);\n var state = current.getState();\n\n if (state.phase !== 'IDLE') {\n current.dispatch(flush());\n }\n }, []);\n var isDragging = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var state = getStore(lazyStoreRef).getState();\n return state.isDragging || state.phase === 'DROP_ANIMATING';\n }, []);\n var appCallbacks = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n isDragging: isDragging,\n tryAbort: tryResetStore\n };\n }, [isDragging, tryResetStore]);\n setCallbacks(appCallbacks);\n var getCanLift = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (id) {\n return canStartDrag(getStore(lazyStoreRef).getState(), id);\n }, []);\n var getIsMovementAllowed = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n return isMovementAllowed(getStore(lazyStoreRef).getState());\n }, []);\n var appContext = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n marshal: dimensionMarshal,\n focus: focusMarshal,\n contextId: contextId,\n canLift: getCanLift,\n isMovementAllowed: getIsMovementAllowed,\n dragHandleUsageInstructionsId: dragHandleUsageInstructionsId,\n registry: registry\n };\n }, [contextId, dimensionMarshal, dragHandleUsageInstructionsId, focusMarshal, getCanLift, getIsMovementAllowed, registry]);\n useSensorMarshal({\n contextId: contextId,\n store: store,\n registry: registry,\n customSensors: sensors,\n enableDefaultSensors: props.enableDefaultSensors !== false\n });\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n return tryResetStore;\n }, [tryResetStore]);\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(AppContext.Provider, {\n value: appContext\n }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_redux__WEBPACK_IMPORTED_MODULE_3__.Provider, {\n context: StoreContext,\n store: store\n }, props.children));\n}\n\nvar count$1 = 0;\nfunction reset$1() {\n count$1 = 0;\n}\nfunction useInstanceCount() {\n return (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return \"\" + count$1++;\n }, []);\n}\n\nfunction resetServerContext() {\n reset$1();\n reset();\n}\nfunction DragDropContext(props) {\n var contextId = useInstanceCount();\n var dragHandleUsageInstructions = props.dragHandleUsageInstructions || preset.dragHandleUsageInstructions;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ErrorBoundary, null, function (setCallbacks) {\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(App, {\n nonce: props.nonce,\n contextId: contextId,\n setCallbacks: setCallbacks,\n dragHandleUsageInstructions: dragHandleUsageInstructions,\n enableDefaultSensors: props.enableDefaultSensors,\n sensors: props.sensors,\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragUpdate: props.onDragUpdate,\n onDragEnd: props.onDragEnd\n }, props.children);\n });\n}\n\nvar isEqual$1 = function isEqual(base) {\n return function (value) {\n return base === value;\n };\n};\n\nvar isScroll = isEqual$1('scroll');\nvar isAuto = isEqual$1('auto');\nvar isVisible$1 = isEqual$1('visible');\n\nvar isEither = function isEither(overflow, fn) {\n return fn(overflow.overflowX) || fn(overflow.overflowY);\n};\n\nvar isBoth = function isBoth(overflow, fn) {\n return fn(overflow.overflowX) && fn(overflow.overflowY);\n};\n\nvar isElementScrollable = function isElementScrollable(el) {\n var style = window.getComputedStyle(el);\n var overflow = {\n overflowX: style.overflowX,\n overflowY: style.overflowY\n };\n return isEither(overflow, isScroll) || isEither(overflow, isAuto);\n};\n\nvar isBodyScrollable = function isBodyScrollable() {\n if (false) {}\n\n var body = getBodyElement();\n var html = document.documentElement;\n !html ? true ? invariant(false) : 0 : void 0;\n\n if (!isElementScrollable(body)) {\n return false;\n }\n\n var htmlStyle = window.getComputedStyle(html);\n var htmlOverflow = {\n overflowX: htmlStyle.overflowX,\n overflowY: htmlStyle.overflowY\n };\n\n if (isBoth(htmlOverflow, isVisible$1)) {\n return false;\n }\n\n true ? warning(\"\\n We have detected that your element might be a scroll container.\\n We have found no reliable way of detecting whether the element is a scroll container.\\n Under most circumstances a scroll bar will be on the element (document.documentElement)\\n\\n Because we cannot determine if the is a scroll container, and generally it is not one,\\n we will be treating the as *not* a scroll container\\n\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/how-we-detect-scroll-containers.md\\n \") : 0;\n return false;\n};\n\nvar getClosestScrollable = function getClosestScrollable(el) {\n if (el == null) {\n return null;\n }\n\n if (el === document.body) {\n return isBodyScrollable() ? el : null;\n }\n\n if (el === document.documentElement) {\n return null;\n }\n\n if (!isElementScrollable(el)) {\n return getClosestScrollable(el.parentElement);\n }\n\n return el;\n};\n\nvar checkForNestedScrollContainers = (function (scrollable) {\n if (!scrollable) {\n return;\n }\n\n var anotherScrollParent = getClosestScrollable(scrollable.parentElement);\n\n if (!anotherScrollParent) {\n return;\n }\n\n true ? warning(\"\\n Droppable: unsupported nested scroll container detected.\\n A Droppable can only have one scroll parent (which can be itself)\\n Nested scroll containers are currently not supported.\\n\\n We hope to support nested scroll containers soon: https://github.com/atlassian/react-beautiful-dnd/issues/131\\n \") : 0;\n});\n\nvar getScroll$1 = (function (el) {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n };\n});\n\nvar getIsFixed = function getIsFixed(el) {\n if (!el) {\n return false;\n }\n\n var style = window.getComputedStyle(el);\n\n if (style.position === 'fixed') {\n return true;\n }\n\n return getIsFixed(el.parentElement);\n};\n\nvar getEnv = (function (start) {\n var closestScrollable = getClosestScrollable(start);\n var isFixedOnPage = getIsFixed(start);\n return {\n closestScrollable: closestScrollable,\n isFixedOnPage: isFixedOnPage\n };\n});\n\nvar getDroppableDimension = (function (_ref) {\n var descriptor = _ref.descriptor,\n isEnabled = _ref.isEnabled,\n isCombineEnabled = _ref.isCombineEnabled,\n isFixedOnPage = _ref.isFixedOnPage,\n direction = _ref.direction,\n client = _ref.client,\n page = _ref.page,\n closest = _ref.closest;\n\n var frame = function () {\n if (!closest) {\n return null;\n }\n\n var scrollSize = closest.scrollSize,\n frameClient = closest.client;\n var maxScroll = getMaxScroll({\n scrollHeight: scrollSize.scrollHeight,\n scrollWidth: scrollSize.scrollWidth,\n height: frameClient.paddingBox.height,\n width: frameClient.paddingBox.width\n });\n return {\n pageMarginBox: closest.page.marginBox,\n frameClient: frameClient,\n scrollSize: scrollSize,\n shouldClipSubject: closest.shouldClipSubject,\n scroll: {\n initial: closest.scroll,\n current: closest.scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n }();\n\n var axis = direction === 'vertical' ? vertical : horizontal;\n var subject = getSubject({\n page: page,\n withPlaceholder: null,\n axis: axis,\n frame: frame\n });\n var dimension = {\n descriptor: descriptor,\n isCombineEnabled: isCombineEnabled,\n isFixedOnPage: isFixedOnPage,\n axis: axis,\n isEnabled: isEnabled,\n client: client,\n page: page,\n frame: frame,\n subject: subject\n };\n return dimension;\n});\n\nvar getClient = function getClient(targetRef, closestScrollable) {\n var base = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.getBox)(targetRef);\n\n if (!closestScrollable) {\n return base;\n }\n\n if (targetRef !== closestScrollable) {\n return base;\n }\n\n var top = base.paddingBox.top - closestScrollable.scrollTop;\n var left = base.paddingBox.left - closestScrollable.scrollLeft;\n var bottom = top + closestScrollable.scrollHeight;\n var right = left + closestScrollable.scrollWidth;\n var paddingBox = {\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n var borderBox = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.expand)(paddingBox, base.border);\n var client = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.createBox)({\n borderBox: borderBox,\n margin: base.margin,\n border: base.border,\n padding: base.padding\n });\n return client;\n};\n\nvar getDimension = (function (_ref) {\n var ref = _ref.ref,\n descriptor = _ref.descriptor,\n env = _ref.env,\n windowScroll = _ref.windowScroll,\n direction = _ref.direction,\n isDropDisabled = _ref.isDropDisabled,\n isCombineEnabled = _ref.isCombineEnabled,\n shouldClipSubject = _ref.shouldClipSubject;\n var closestScrollable = env.closestScrollable;\n var client = getClient(ref, closestScrollable);\n var page = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.withScroll)(client, windowScroll);\n\n var closest = function () {\n if (!closestScrollable) {\n return null;\n }\n\n var frameClient = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.getBox)(closestScrollable);\n var scrollSize = {\n scrollHeight: closestScrollable.scrollHeight,\n scrollWidth: closestScrollable.scrollWidth\n };\n return {\n client: frameClient,\n page: (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.withScroll)(frameClient, windowScroll),\n scroll: getScroll$1(closestScrollable),\n scrollSize: scrollSize,\n shouldClipSubject: shouldClipSubject\n };\n }();\n\n var dimension = getDroppableDimension({\n descriptor: descriptor,\n isEnabled: !isDropDisabled,\n isCombineEnabled: isCombineEnabled,\n isFixedOnPage: env.isFixedOnPage,\n direction: direction,\n client: client,\n page: page,\n closest: closest\n });\n return dimension;\n});\n\nvar immediate = {\n passive: false\n};\nvar delayed = {\n passive: true\n};\nvar getListenerOptions = (function (options) {\n return options.shouldPublishImmediately ? immediate : delayed;\n});\n\nfunction useRequiredContext(Context) {\n var result = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);\n !result ? true ? invariant(false, 'Could not find required context') : 0 : void 0;\n return result;\n}\n\nvar getClosestScrollableFromDrag = function getClosestScrollableFromDrag(dragging) {\n return dragging && dragging.env.closestScrollable || null;\n};\n\nfunction useDroppablePublisher(args) {\n var whileDraggingRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var appContext = useRequiredContext(AppContext);\n var uniqueId = useUniqueId('droppable');\n var registry = appContext.registry,\n marshal = appContext.marshal;\n var previousRef = usePrevious(args);\n var descriptor = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n id: args.droppableId,\n type: args.type,\n mode: args.mode\n };\n }, [args.droppableId, args.mode, args.type]);\n var publishedDescriptorRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(descriptor);\n var memoizedUpdateScroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (x, y) {\n !whileDraggingRef.current ? true ? invariant(false, 'Can only update scroll when dragging') : 0 : void 0;\n var scroll = {\n x: x,\n y: y\n };\n marshal.updateDroppableScroll(descriptor.id, scroll);\n });\n }, [descriptor.id, marshal]);\n var getClosestScroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var dragging = whileDraggingRef.current;\n\n if (!dragging || !dragging.env.closestScrollable) {\n return origin;\n }\n\n return getScroll$1(dragging.env.closestScrollable);\n }, []);\n var updateScroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var scroll = getClosestScroll();\n memoizedUpdateScroll(scroll.x, scroll.y);\n }, [getClosestScroll, memoizedUpdateScroll]);\n var scheduleScrollUpdate = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return (0,raf_schd__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(updateScroll);\n }, [updateScroll]);\n var onClosestScroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var dragging = whileDraggingRef.current;\n var closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? true ? invariant(false, 'Could not find scroll options while scrolling') : 0 : void 0;\n var options = dragging.scrollOptions;\n\n if (options.shouldPublishImmediately) {\n updateScroll();\n return;\n }\n\n scheduleScrollUpdate();\n }, [scheduleScrollUpdate, updateScroll]);\n var getDimensionAndWatchScroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (windowScroll, options) {\n !!whileDraggingRef.current ? true ? invariant(false, 'Cannot collect a droppable while a drag is occurring') : 0 : void 0;\n var previous = previousRef.current;\n var ref = previous.getDroppableRef();\n !ref ? true ? invariant(false, 'Cannot collect without a droppable ref') : 0 : void 0;\n var env = getEnv(ref);\n var dragging = {\n ref: ref,\n descriptor: descriptor,\n env: env,\n scrollOptions: options\n };\n whileDraggingRef.current = dragging;\n var dimension = getDimension({\n ref: ref,\n descriptor: descriptor,\n env: env,\n windowScroll: windowScroll,\n direction: previous.direction,\n isDropDisabled: previous.isDropDisabled,\n isCombineEnabled: previous.isCombineEnabled,\n shouldClipSubject: !previous.ignoreContainerClipping\n });\n var scrollable = env.closestScrollable;\n\n if (scrollable) {\n scrollable.setAttribute(scrollContainer.contextId, appContext.contextId);\n scrollable.addEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n\n if (true) {\n checkForNestedScrollContainers(scrollable);\n }\n }\n\n return dimension;\n }, [appContext.contextId, descriptor, onClosestScroll, previousRef]);\n var getScrollWhileDragging = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var dragging = whileDraggingRef.current;\n var closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? true ? invariant(false, 'Can only recollect Droppable client for Droppables that have a scroll container') : 0 : void 0;\n return getScroll$1(closest);\n }, []);\n var dragStopped = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n var dragging = whileDraggingRef.current;\n !dragging ? true ? invariant(false, 'Cannot stop drag when no active drag') : 0 : void 0;\n var closest = getClosestScrollableFromDrag(dragging);\n whileDraggingRef.current = null;\n\n if (!closest) {\n return;\n }\n\n scheduleScrollUpdate.cancel();\n closest.removeAttribute(scrollContainer.contextId);\n closest.removeEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n }, [onClosestScroll, scheduleScrollUpdate]);\n var scroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (change) {\n var dragging = whileDraggingRef.current;\n !dragging ? true ? invariant(false, 'Cannot scroll when there is no drag') : 0 : void 0;\n var closest = getClosestScrollableFromDrag(dragging);\n !closest ? true ? invariant(false, 'Cannot scroll a droppable with no closest scrollable') : 0 : void 0;\n closest.scrollTop += change.y;\n closest.scrollLeft += change.x;\n }, []);\n var callbacks = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n getDimensionAndWatchScroll: getDimensionAndWatchScroll,\n getScrollWhileDragging: getScrollWhileDragging,\n dragStopped: dragStopped,\n scroll: scroll\n };\n }, [dragStopped, getDimensionAndWatchScroll, getScrollWhileDragging, scroll]);\n var entry = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n uniqueId: uniqueId,\n descriptor: descriptor,\n callbacks: callbacks\n };\n }, [callbacks, descriptor, uniqueId]);\n useIsomorphicLayoutEffect(function () {\n publishedDescriptorRef.current = entry.descriptor;\n registry.droppable.register(entry);\n return function () {\n if (whileDraggingRef.current) {\n true ? warning('Unsupported: changing the droppableId or type of a Droppable during a drag') : 0;\n dragStopped();\n }\n\n registry.droppable.unregister(entry);\n };\n }, [callbacks, descriptor, dragStopped, entry, marshal, registry.droppable]);\n useIsomorphicLayoutEffect(function () {\n if (!whileDraggingRef.current) {\n return;\n }\n\n marshal.updateDroppableIsEnabled(publishedDescriptorRef.current.id, !args.isDropDisabled);\n }, [args.isDropDisabled, marshal]);\n useIsomorphicLayoutEffect(function () {\n if (!whileDraggingRef.current) {\n return;\n }\n\n marshal.updateDroppableIsCombineEnabled(publishedDescriptorRef.current.id, args.isCombineEnabled);\n }, [args.isCombineEnabled, marshal]);\n}\n\nfunction noop$2() {}\n\nvar empty = {\n width: 0,\n height: 0,\n margin: noSpacing\n};\n\nvar getSize = function getSize(_ref) {\n var isAnimatingOpenOnMount = _ref.isAnimatingOpenOnMount,\n placeholder = _ref.placeholder,\n animate = _ref.animate;\n\n if (isAnimatingOpenOnMount) {\n return empty;\n }\n\n if (animate === 'close') {\n return empty;\n }\n\n return {\n height: placeholder.client.borderBox.height,\n width: placeholder.client.borderBox.width,\n margin: placeholder.client.margin\n };\n};\n\nvar getStyle = function getStyle(_ref2) {\n var isAnimatingOpenOnMount = _ref2.isAnimatingOpenOnMount,\n placeholder = _ref2.placeholder,\n animate = _ref2.animate;\n var size = getSize({\n isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n placeholder: placeholder,\n animate: animate\n });\n return {\n display: placeholder.display,\n boxSizing: 'border-box',\n width: size.width,\n height: size.height,\n marginTop: size.margin.top,\n marginRight: size.margin.right,\n marginBottom: size.margin.bottom,\n marginLeft: size.margin.left,\n flexShrink: '0',\n flexGrow: '0',\n pointerEvents: 'none',\n transition: animate !== 'none' ? transitions.placeholder : null\n };\n};\n\nfunction Placeholder(props) {\n var animateOpenTimerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var tryClearAnimateOpenTimer = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n if (!animateOpenTimerRef.current) {\n return;\n }\n\n clearTimeout(animateOpenTimerRef.current);\n animateOpenTimerRef.current = null;\n }, []);\n var animate = props.animate,\n onTransitionEnd = props.onTransitionEnd,\n onClose = props.onClose,\n contextId = props.contextId;\n\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(props.animate === 'open'),\n isAnimatingOpenOnMount = _useState[0],\n setIsAnimatingOpenOnMount = _useState[1];\n\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (!isAnimatingOpenOnMount) {\n return noop$2;\n }\n\n if (animate !== 'open') {\n tryClearAnimateOpenTimer();\n setIsAnimatingOpenOnMount(false);\n return noop$2;\n }\n\n if (animateOpenTimerRef.current) {\n return noop$2;\n }\n\n animateOpenTimerRef.current = setTimeout(function () {\n animateOpenTimerRef.current = null;\n setIsAnimatingOpenOnMount(false);\n });\n return tryClearAnimateOpenTimer;\n }, [animate, isAnimatingOpenOnMount, tryClearAnimateOpenTimer]);\n var onSizeChangeEnd = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (event) {\n if (event.propertyName !== 'height') {\n return;\n }\n\n onTransitionEnd();\n\n if (animate === 'close') {\n onClose();\n }\n }, [animate, onClose, onTransitionEnd]);\n var style = getStyle({\n isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n animate: props.animate,\n placeholder: props.placeholder\n });\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(props.placeholder.tagName, {\n style: style,\n 'data-rbd-placeholder-context-id': contextId,\n onTransitionEnd: onSizeChangeEnd,\n ref: props.innerRef\n });\n}\n\nvar Placeholder$1 = react__WEBPACK_IMPORTED_MODULE_0___default().memo(Placeholder);\n\nvar DroppableContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);\n\nfunction checkIsValidInnerRef(el) {\n !(el && isHtmlElement(el)) ? true ? invariant(false, \"\\n provided.innerRef has not been provided with a HTMLElement.\\n\\n You can find a guide on using the innerRef callback functions at:\\n https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/using-inner-ref.md\\n \") : 0 : void 0;\n}\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\n\nfunction runChecks(args, checks) {\n checks.forEach(function (check) {\n return check(args);\n });\n}\n\nvar shared = [function required(_ref) {\n var props = _ref.props;\n !props.droppableId ? true ? invariant(false, 'A Droppable requires a droppableId prop') : 0 : void 0;\n !(typeof props.droppableId === 'string') ? true ? invariant(false, \"A Droppable requires a [string] droppableId. Provided: [\" + typeof props.droppableId + \"]\") : 0 : void 0;\n}, function _boolean(_ref2) {\n var props = _ref2.props;\n !isBoolean(props.isDropDisabled) ? true ? invariant(false, 'isDropDisabled must be a boolean') : 0 : void 0;\n !isBoolean(props.isCombineEnabled) ? true ? invariant(false, 'isCombineEnabled must be a boolean') : 0 : void 0;\n !isBoolean(props.ignoreContainerClipping) ? true ? invariant(false, 'ignoreContainerClipping must be a boolean') : 0 : void 0;\n}, function ref(_ref3) {\n var getDroppableRef = _ref3.getDroppableRef;\n checkIsValidInnerRef(getDroppableRef());\n}];\nvar standard = [function placeholder(_ref4) {\n var props = _ref4.props,\n getPlaceholderRef = _ref4.getPlaceholderRef;\n\n if (!props.placeholder) {\n return;\n }\n\n var ref = getPlaceholderRef();\n\n if (ref) {\n return;\n }\n\n true ? warning(\"\\n Droppable setup issue [droppableId: \\\"\" + props.droppableId + \"\\\"]:\\n DroppableProvided > placeholder could not be found.\\n\\n Please be sure to add the {provided.placeholder} React Node as a child of your Droppable.\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/api/droppable.md\\n \") : 0;\n}];\nvar virtual = [function hasClone(_ref5) {\n var props = _ref5.props;\n !props.renderClone ? true ? invariant(false, 'Must provide a clone render function (renderClone) for virtual lists') : 0 : void 0;\n}, function hasNoPlaceholder(_ref6) {\n var getPlaceholderRef = _ref6.getPlaceholderRef;\n !!getPlaceholderRef() ? true ? invariant(false, 'Expected virtual list to not have a placeholder') : 0 : void 0;\n}];\nfunction useValidation(args) {\n useDevSetupWarning(function () {\n runChecks(args, shared);\n\n if (args.props.mode === 'standard') {\n runChecks(args, standard);\n }\n\n if (args.props.mode === 'virtual') {\n runChecks(args, virtual);\n }\n });\n}\n\nvar AnimateInOut = function (_React$PureComponent) {\n (0,_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(AnimateInOut, _React$PureComponent);\n\n function AnimateInOut() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;\n _this.state = {\n isVisible: Boolean(_this.props.on),\n data: _this.props.on,\n animate: _this.props.shouldAnimate && _this.props.on ? 'open' : 'none'\n };\n\n _this.onClose = function () {\n if (_this.state.animate !== 'close') {\n return;\n }\n\n _this.setState({\n isVisible: false\n });\n };\n\n return _this;\n }\n\n AnimateInOut.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (!props.shouldAnimate) {\n return {\n isVisible: Boolean(props.on),\n data: props.on,\n animate: 'none'\n };\n }\n\n if (props.on) {\n return {\n isVisible: true,\n data: props.on,\n animate: 'open'\n };\n }\n\n if (state.isVisible) {\n return {\n isVisible: true,\n data: state.data,\n animate: 'close'\n };\n }\n\n return {\n isVisible: false,\n animate: 'close',\n data: null\n };\n };\n\n var _proto = AnimateInOut.prototype;\n\n _proto.render = function render() {\n if (!this.state.isVisible) {\n return null;\n }\n\n var provided = {\n onClose: this.onClose,\n data: this.state.data,\n animate: this.state.animate\n };\n return this.props.children(provided);\n };\n\n return AnimateInOut;\n}((react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent));\n\nvar zIndexOptions = {\n dragging: 5000,\n dropAnimating: 4500\n};\n\nvar getDraggingTransition = function getDraggingTransition(shouldAnimateDragMovement, dropping) {\n if (dropping) {\n return transitions.drop(dropping.duration);\n }\n\n if (shouldAnimateDragMovement) {\n return transitions.snap;\n }\n\n return transitions.fluid;\n};\n\nvar getDraggingOpacity = function getDraggingOpacity(isCombining, isDropAnimating) {\n if (!isCombining) {\n return null;\n }\n\n return isDropAnimating ? combine.opacity.drop : combine.opacity.combining;\n};\n\nvar getShouldDraggingAnimate = function getShouldDraggingAnimate(dragging) {\n if (dragging.forceShouldAnimate != null) {\n return dragging.forceShouldAnimate;\n }\n\n return dragging.mode === 'SNAP';\n};\n\nfunction getDraggingStyle(dragging) {\n var dimension = dragging.dimension;\n var box = dimension.client;\n var offset = dragging.offset,\n combineWith = dragging.combineWith,\n dropping = dragging.dropping;\n var isCombining = Boolean(combineWith);\n var shouldAnimate = getShouldDraggingAnimate(dragging);\n var isDropAnimating = Boolean(dropping);\n var transform = isDropAnimating ? transforms.drop(offset, isCombining) : transforms.moveTo(offset);\n var style = {\n position: 'fixed',\n top: box.marginBox.top,\n left: box.marginBox.left,\n boxSizing: 'border-box',\n width: box.borderBox.width,\n height: box.borderBox.height,\n transition: getDraggingTransition(shouldAnimate, dropping),\n transform: transform,\n opacity: getDraggingOpacity(isCombining, isDropAnimating),\n zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n pointerEvents: 'none'\n };\n return style;\n}\n\nfunction getSecondaryStyle(secondary) {\n return {\n transform: transforms.moveTo(secondary.offset),\n transition: secondary.shouldAnimateDisplacement ? null : 'none'\n };\n}\n\nfunction getStyle$1(mapped) {\n return mapped.type === 'DRAGGING' ? getDraggingStyle(mapped) : getSecondaryStyle(mapped);\n}\n\nfunction getDimension$1(descriptor, el, windowScroll) {\n if (windowScroll === void 0) {\n windowScroll = origin;\n }\n\n var computedStyles = window.getComputedStyle(el);\n var borderBox = el.getBoundingClientRect();\n var client = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.calculateBox)(borderBox, computedStyles);\n var page = (0,css_box_model__WEBPACK_IMPORTED_MODULE_5__.withScroll)(client, windowScroll);\n var placeholder = {\n client: client,\n tagName: el.tagName.toLowerCase(),\n display: computedStyles.display\n };\n var displaceBy = {\n x: client.marginBox.width,\n y: client.marginBox.height\n };\n var dimension = {\n descriptor: descriptor,\n placeholder: placeholder,\n displaceBy: displaceBy,\n client: client,\n page: page\n };\n return dimension;\n}\n\nfunction useDraggablePublisher(args) {\n var uniqueId = useUniqueId('draggable');\n var descriptor = args.descriptor,\n registry = args.registry,\n getDraggableRef = args.getDraggableRef,\n canDragInteractiveElements = args.canDragInteractiveElements,\n shouldRespectForcePress = args.shouldRespectForcePress,\n isEnabled = args.isEnabled;\n var options = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress,\n isEnabled: isEnabled\n };\n }, [canDragInteractiveElements, isEnabled, shouldRespectForcePress]);\n var getDimension = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (windowScroll) {\n var el = getDraggableRef();\n !el ? true ? invariant(false, 'Cannot get dimension when no ref is set') : 0 : void 0;\n return getDimension$1(descriptor, el, windowScroll);\n }, [descriptor, getDraggableRef]);\n var entry = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n uniqueId: uniqueId,\n descriptor: descriptor,\n options: options,\n getDimension: getDimension\n };\n }, [descriptor, getDimension, options, uniqueId]);\n var publishedRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(entry);\n var isFirstPublishRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(true);\n useIsomorphicLayoutEffect(function () {\n registry.draggable.register(publishedRef.current);\n return function () {\n return registry.draggable.unregister(publishedRef.current);\n };\n }, [registry.draggable]);\n useIsomorphicLayoutEffect(function () {\n if (isFirstPublishRef.current) {\n isFirstPublishRef.current = false;\n return;\n }\n\n var last = publishedRef.current;\n publishedRef.current = entry;\n registry.draggable.update(entry, last);\n }, [entry, registry.draggable]);\n}\n\nfunction useValidation$1(props, contextId, getRef) {\n useDevSetupWarning(function () {\n function prefix(id) {\n return \"Draggable[id: \" + id + \"]: \";\n }\n\n var id = props.draggableId;\n !id ? true ? invariant(false, 'Draggable requires a draggableId') : 0 : void 0;\n !(typeof id === 'string') ? true ? invariant(false, \"Draggable requires a [string] draggableId.\\n Provided: [type: \" + typeof id + \"] (value: \" + id + \")\") : 0 : void 0;\n !isInteger(props.index) ? true ? invariant(false, prefix(id) + \" requires an integer index prop\") : 0 : void 0;\n\n if (props.mapped.type === 'DRAGGING') {\n return;\n }\n\n checkIsValidInnerRef(getRef());\n\n if (props.isEnabled) {\n !findDragHandle(contextId, id) ? true ? invariant(false, prefix(id) + \" Unable to find drag handle\") : 0 : void 0;\n }\n });\n}\nfunction useClonePropValidation(isClone) {\n useDev(function () {\n var initialRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(isClone);\n useDevSetupWarning(function () {\n !(isClone === initialRef.current) ? true ? invariant(false, 'Draggable isClone prop value changed during component life') : 0 : void 0;\n }, [isClone]);\n });\n}\n\nfunction preventHtml5Dnd(event) {\n event.preventDefault();\n}\n\nfunction Draggable(props) {\n var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var setRef = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (el) {\n ref.current = el;\n }, []);\n var getRef = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n return ref.current;\n }, []);\n\n var _useRequiredContext = useRequiredContext(AppContext),\n contextId = _useRequiredContext.contextId,\n dragHandleUsageInstructionsId = _useRequiredContext.dragHandleUsageInstructionsId,\n registry = _useRequiredContext.registry;\n\n var _useRequiredContext2 = useRequiredContext(DroppableContext),\n type = _useRequiredContext2.type,\n droppableId = _useRequiredContext2.droppableId;\n\n var descriptor = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n id: props.draggableId,\n index: props.index,\n type: type,\n droppableId: droppableId\n };\n }, [props.draggableId, props.index, type, droppableId]);\n var children = props.children,\n draggableId = props.draggableId,\n isEnabled = props.isEnabled,\n shouldRespectForcePress = props.shouldRespectForcePress,\n canDragInteractiveElements = props.canDragInteractiveElements,\n isClone = props.isClone,\n mapped = props.mapped,\n dropAnimationFinishedAction = props.dropAnimationFinished;\n useValidation$1(props, contextId, getRef);\n useClonePropValidation(isClone);\n\n if (!isClone) {\n var forPublisher = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n descriptor: descriptor,\n registry: registry,\n getDraggableRef: getRef,\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress,\n isEnabled: isEnabled\n };\n }, [descriptor, registry, getRef, canDragInteractiveElements, shouldRespectForcePress, isEnabled]);\n useDraggablePublisher(forPublisher);\n }\n\n var dragHandleProps = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return isEnabled ? {\n tabIndex: 0,\n role: 'button',\n 'aria-describedby': dragHandleUsageInstructionsId,\n 'data-rbd-drag-handle-draggable-id': draggableId,\n 'data-rbd-drag-handle-context-id': contextId,\n draggable: false,\n onDragStart: preventHtml5Dnd\n } : null;\n }, [contextId, dragHandleUsageInstructionsId, draggableId, isEnabled]);\n var onMoveEnd = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (event) {\n if (mapped.type !== 'DRAGGING') {\n return;\n }\n\n if (!mapped.dropping) {\n return;\n }\n\n if (event.propertyName !== 'transform') {\n return;\n }\n\n dropAnimationFinishedAction();\n }, [dropAnimationFinishedAction, mapped]);\n var provided = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n var style = getStyle$1(mapped);\n var onTransitionEnd = mapped.type === 'DRAGGING' && mapped.dropping ? onMoveEnd : null;\n var result = {\n innerRef: setRef,\n draggableProps: {\n 'data-rbd-draggable-context-id': contextId,\n 'data-rbd-draggable-id': draggableId,\n style: style,\n onTransitionEnd: onTransitionEnd\n },\n dragHandleProps: dragHandleProps\n };\n return result;\n }, [contextId, dragHandleProps, draggableId, mapped, onMoveEnd, setRef]);\n var rubric = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n };\n }, [descriptor.droppableId, descriptor.id, descriptor.index, descriptor.type]);\n return children(provided, mapped.snapshot, rubric);\n}\n\nvar isStrictEqual = (function (a, b) {\n return a === b;\n});\n\nvar whatIsDraggedOverFromResult = (function (result) {\n var combine = result.combine,\n destination = result.destination;\n\n if (destination) {\n return destination.droppableId;\n }\n\n if (combine) {\n return combine.droppableId;\n }\n\n return null;\n});\n\nvar getCombineWithFromResult = function getCombineWithFromResult(result) {\n return result.combine ? result.combine.draggableId : null;\n};\n\nvar getCombineWithFromImpact = function getCombineWithFromImpact(impact) {\n return impact.at && impact.at.type === 'COMBINE' ? impact.at.combine.draggableId : null;\n};\n\nfunction getDraggableSelector() {\n var memoizedOffset = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (x, y) {\n return {\n x: x,\n y: y\n };\n });\n var getMemoizedSnapshot = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (mode, isClone, draggingOver, combineWith, dropping) {\n return {\n isDragging: true,\n isClone: isClone,\n isDropAnimating: Boolean(dropping),\n dropAnimation: dropping,\n mode: mode,\n draggingOver: draggingOver,\n combineWith: combineWith,\n combineTargetFor: null\n };\n });\n var getMemoizedProps = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (offset, mode, dimension, isClone, draggingOver, combineWith, forceShouldAnimate) {\n return {\n mapped: {\n type: 'DRAGGING',\n dropping: null,\n draggingOver: draggingOver,\n combineWith: combineWith,\n mode: mode,\n offset: offset,\n dimension: dimension,\n forceShouldAnimate: forceShouldAnimate,\n snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, null)\n }\n };\n });\n\n var selector = function selector(state, ownProps) {\n if (state.isDragging) {\n if (state.critical.draggable.id !== ownProps.draggableId) {\n return null;\n }\n\n var offset = state.current.client.offset;\n var dimension = state.dimensions.draggables[ownProps.draggableId];\n var draggingOver = whatIsDraggedOver(state.impact);\n var combineWith = getCombineWithFromImpact(state.impact);\n var forceShouldAnimate = state.forceShouldAnimate;\n return getMemoizedProps(memoizedOffset(offset.x, offset.y), state.movementMode, dimension, ownProps.isClone, draggingOver, combineWith, forceShouldAnimate);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (completed.result.draggableId !== ownProps.draggableId) {\n return null;\n }\n\n var isClone = ownProps.isClone;\n var _dimension = state.dimensions.draggables[ownProps.draggableId];\n var result = completed.result;\n var mode = result.mode;\n\n var _draggingOver = whatIsDraggedOverFromResult(result);\n\n var _combineWith = getCombineWithFromResult(result);\n\n var duration = state.dropDuration;\n var dropping = {\n duration: duration,\n curve: curves.drop,\n moveTo: state.newHomeClientOffset,\n opacity: _combineWith ? combine.opacity.drop : null,\n scale: _combineWith ? combine.scale.drop : null\n };\n return {\n mapped: {\n type: 'DRAGGING',\n offset: state.newHomeClientOffset,\n dimension: _dimension,\n dropping: dropping,\n draggingOver: _draggingOver,\n combineWith: _combineWith,\n mode: mode,\n forceShouldAnimate: null,\n snapshot: getMemoizedSnapshot(mode, isClone, _draggingOver, _combineWith, dropping)\n }\n };\n }\n\n return null;\n };\n\n return selector;\n}\n\nfunction getSecondarySnapshot(combineTargetFor) {\n return {\n isDragging: false,\n isDropAnimating: false,\n isClone: false,\n dropAnimation: null,\n mode: null,\n draggingOver: null,\n combineTargetFor: combineTargetFor,\n combineWith: null\n };\n}\n\nvar atRest = {\n mapped: {\n type: 'SECONDARY',\n offset: origin,\n combineTargetFor: null,\n shouldAnimateDisplacement: true,\n snapshot: getSecondarySnapshot(null)\n }\n};\n\nfunction getSecondarySelector() {\n var memoizedOffset = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (x, y) {\n return {\n x: x,\n y: y\n };\n });\n var getMemoizedSnapshot = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(getSecondarySnapshot);\n var getMemoizedProps = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (offset, combineTargetFor, shouldAnimateDisplacement) {\n if (combineTargetFor === void 0) {\n combineTargetFor = null;\n }\n\n return {\n mapped: {\n type: 'SECONDARY',\n offset: offset,\n combineTargetFor: combineTargetFor,\n shouldAnimateDisplacement: shouldAnimateDisplacement,\n snapshot: getMemoizedSnapshot(combineTargetFor)\n }\n };\n });\n\n var getFallback = function getFallback(combineTargetFor) {\n return combineTargetFor ? getMemoizedProps(origin, combineTargetFor, true) : null;\n };\n\n var getProps = function getProps(ownId, draggingId, impact, afterCritical) {\n var visualDisplacement = impact.displaced.visible[ownId];\n var isAfterCriticalInVirtualList = Boolean(afterCritical.inVirtualList && afterCritical.effected[ownId]);\n var combine = tryGetCombine(impact);\n var combineTargetFor = combine && combine.draggableId === ownId ? draggingId : null;\n\n if (!visualDisplacement) {\n if (!isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n\n if (impact.displaced.invisible[ownId]) {\n return null;\n }\n\n var change = negate(afterCritical.displacedBy.point);\n\n var _offset = memoizedOffset(change.x, change.y);\n\n return getMemoizedProps(_offset, combineTargetFor, true);\n }\n\n if (isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n\n var displaceBy = impact.displacedBy.point;\n var offset = memoizedOffset(displaceBy.x, displaceBy.y);\n return getMemoizedProps(offset, combineTargetFor, visualDisplacement.shouldAnimate);\n };\n\n var selector = function selector(state, ownProps) {\n if (state.isDragging) {\n if (state.critical.draggable.id === ownProps.draggableId) {\n return null;\n }\n\n return getProps(ownProps.draggableId, state.critical.draggable.id, state.impact, state.afterCritical);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (completed.result.draggableId === ownProps.draggableId) {\n return null;\n }\n\n return getProps(ownProps.draggableId, completed.result.draggableId, completed.impact, completed.afterCritical);\n }\n\n return null;\n };\n\n return selector;\n}\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var draggingSelector = getDraggableSelector();\n var secondarySelector = getSecondarySelector();\n\n var selector = function selector(state, ownProps) {\n return draggingSelector(state, ownProps) || secondarySelector(state, ownProps) || atRest;\n };\n\n return selector;\n};\nvar mapDispatchToProps = {\n dropAnimationFinished: dropAnimationFinished\n};\nvar ConnectedDraggable = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.connect)(makeMapStateToProps, mapDispatchToProps, null, {\n context: StoreContext,\n pure: true,\n areStatePropsEqual: isStrictEqual\n})(Draggable);\n\nfunction PrivateDraggable(props) {\n var droppableContext = useRequiredContext(DroppableContext);\n var isUsingCloneFor = droppableContext.isUsingCloneFor;\n\n if (isUsingCloneFor === props.draggableId && !props.isClone) {\n return null;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ConnectedDraggable, props);\n}\nfunction PublicDraggable(props) {\n var isEnabled = typeof props.isDragDisabled === 'boolean' ? !props.isDragDisabled : true;\n var canDragInteractiveElements = Boolean(props.disableInteractiveElementBlocking);\n var shouldRespectForcePress = Boolean(props.shouldRespectForcePress);\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PrivateDraggable, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, props, {\n isClone: false,\n isEnabled: isEnabled,\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress\n }));\n}\n\nfunction Droppable(props) {\n var appContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(AppContext);\n !appContext ? true ? invariant(false, 'Could not find app context') : 0 : void 0;\n var contextId = appContext.contextId,\n isMovementAllowed = appContext.isMovementAllowed;\n var droppableRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var placeholderRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var children = props.children,\n droppableId = props.droppableId,\n type = props.type,\n mode = props.mode,\n direction = props.direction,\n ignoreContainerClipping = props.ignoreContainerClipping,\n isDropDisabled = props.isDropDisabled,\n isCombineEnabled = props.isCombineEnabled,\n snapshot = props.snapshot,\n useClone = props.useClone,\n updateViewportMaxScroll = props.updateViewportMaxScroll,\n getContainerForClone = props.getContainerForClone;\n var getDroppableRef = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n return droppableRef.current;\n }, []);\n var setDroppableRef = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (value) {\n droppableRef.current = value;\n }, []);\n var getPlaceholderRef = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n return placeholderRef.current;\n }, []);\n var setPlaceholderRef = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function (value) {\n placeholderRef.current = value;\n }, []);\n useValidation({\n props: props,\n getDroppableRef: getDroppableRef,\n getPlaceholderRef: getPlaceholderRef\n });\n var onPlaceholderTransitionEnd = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useCallback)(function () {\n if (isMovementAllowed()) {\n updateViewportMaxScroll({\n maxScroll: getMaxWindowScroll()\n });\n }\n }, [isMovementAllowed, updateViewportMaxScroll]);\n useDroppablePublisher({\n droppableId: droppableId,\n type: type,\n mode: mode,\n direction: direction,\n isDropDisabled: isDropDisabled,\n isCombineEnabled: isCombineEnabled,\n ignoreContainerClipping: ignoreContainerClipping,\n getDroppableRef: getDroppableRef\n });\n var placeholder = react__WEBPACK_IMPORTED_MODULE_0___default().createElement(AnimateInOut, {\n on: props.placeholder,\n shouldAnimate: props.shouldAnimatePlaceholder\n }, function (_ref) {\n var onClose = _ref.onClose,\n data = _ref.data,\n animate = _ref.animate;\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Placeholder$1, {\n placeholder: data,\n onClose: onClose,\n innerRef: setPlaceholderRef,\n animate: animate,\n contextId: contextId,\n onTransitionEnd: onPlaceholderTransitionEnd\n });\n });\n var provided = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n innerRef: setDroppableRef,\n placeholder: placeholder,\n droppableProps: {\n 'data-rbd-droppable-id': droppableId,\n 'data-rbd-droppable-context-id': contextId\n }\n };\n }, [contextId, droppableId, placeholder, setDroppableRef]);\n var isUsingCloneFor = useClone ? useClone.dragging.draggableId : null;\n var droppableContext = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_9__.useMemo)(function () {\n return {\n droppableId: droppableId,\n type: type,\n isUsingCloneFor: isUsingCloneFor\n };\n }, [droppableId, isUsingCloneFor, type]);\n\n function getClone() {\n if (!useClone) {\n return null;\n }\n\n var dragging = useClone.dragging,\n render = useClone.render;\n var node = react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PrivateDraggable, {\n draggableId: dragging.draggableId,\n index: dragging.source.index,\n isClone: true,\n isEnabled: true,\n shouldRespectForcePress: false,\n canDragInteractiveElements: true\n }, function (draggableProvided, draggableSnapshot) {\n return render(draggableProvided, draggableSnapshot, dragging);\n });\n return react_dom__WEBPACK_IMPORTED_MODULE_4__.createPortal(node, getContainerForClone());\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(DroppableContext.Provider, {\n value: droppableContext\n }, children(provided, snapshot), getClone());\n}\n\nvar isMatchingType = function isMatchingType(type, critical) {\n return type === critical.droppable.type;\n};\n\nvar getDraggable = function getDraggable(critical, dimensions) {\n return dimensions.draggables[critical.draggable.id];\n};\n\nvar makeMapStateToProps$1 = function makeMapStateToProps() {\n var idleWithAnimation = {\n placeholder: null,\n shouldAnimatePlaceholder: true,\n snapshot: {\n isDraggingOver: false,\n draggingOverWith: null,\n draggingFromThisWith: null,\n isUsingPlaceholder: false\n },\n useClone: null\n };\n\n var idleWithoutAnimation = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, idleWithAnimation, {\n shouldAnimatePlaceholder: false\n });\n\n var getDraggableRubric = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (descriptor) {\n return {\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n };\n });\n var getMapProps = (0,memoize_one__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(function (id, isEnabled, isDraggingOverForConsumer, isDraggingOverForImpact, dragging, renderClone) {\n var draggableId = dragging.descriptor.id;\n var isHome = dragging.descriptor.droppableId === id;\n\n if (isHome) {\n var useClone = renderClone ? {\n render: renderClone,\n dragging: getDraggableRubric(dragging.descriptor)\n } : null;\n var _snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: isDraggingOverForConsumer ? draggableId : null,\n draggingFromThisWith: draggableId,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: false,\n snapshot: _snapshot,\n useClone: useClone\n };\n }\n\n if (!isEnabled) {\n return idleWithoutAnimation;\n }\n\n if (!isDraggingOverForImpact) {\n return idleWithAnimation;\n }\n\n var snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: draggableId,\n draggingFromThisWith: null,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: true,\n snapshot: snapshot,\n useClone: null\n };\n });\n\n var selector = function selector(state, ownProps) {\n var id = ownProps.droppableId;\n var type = ownProps.type;\n var isEnabled = !ownProps.isDropDisabled;\n var renderClone = ownProps.renderClone;\n\n if (state.isDragging) {\n var critical = state.critical;\n\n if (!isMatchingType(type, critical)) {\n return idleWithoutAnimation;\n }\n\n var dragging = getDraggable(critical, state.dimensions);\n var isDraggingOver = whatIsDraggedOver(state.impact) === id;\n return getMapProps(id, isEnabled, isDraggingOver, isDraggingOver, dragging, renderClone);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (!isMatchingType(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n\n var _dragging = getDraggable(completed.critical, state.dimensions);\n\n return getMapProps(id, isEnabled, whatIsDraggedOverFromResult(completed.result) === id, whatIsDraggedOver(completed.impact) === id, _dragging, renderClone);\n }\n\n if (state.phase === 'IDLE' && state.completed && !state.shouldFlush) {\n var _completed = state.completed;\n\n if (!isMatchingType(type, _completed.critical)) {\n return idleWithoutAnimation;\n }\n\n var wasOver = whatIsDraggedOver(_completed.impact) === id;\n var wasCombining = Boolean(_completed.impact.at && _completed.impact.at.type === 'COMBINE');\n var isHome = _completed.critical.droppable.id === id;\n\n if (wasOver) {\n return wasCombining ? idleWithAnimation : idleWithoutAnimation;\n }\n\n if (isHome) {\n return idleWithAnimation;\n }\n\n return idleWithoutAnimation;\n }\n\n return idleWithoutAnimation;\n };\n\n return selector;\n};\nvar mapDispatchToProps$1 = {\n updateViewportMaxScroll: updateViewportMaxScroll\n};\n\nfunction getBody() {\n !document.body ? true ? invariant(false, 'document.body is not ready') : 0 : void 0;\n return document.body;\n}\n\nvar defaultProps = {\n mode: 'standard',\n type: 'DEFAULT',\n direction: 'vertical',\n isDropDisabled: false,\n isCombineEnabled: false,\n ignoreContainerClipping: false,\n renderClone: null,\n getContainerForClone: getBody\n};\nvar ConnectedDroppable = (0,react_redux__WEBPACK_IMPORTED_MODULE_3__.connect)(makeMapStateToProps$1, mapDispatchToProps$1, null, {\n context: StoreContext,\n pure: true,\n areStatePropsEqual: isStrictEqual\n})(Droppable);\nConnectedDroppable.defaultProps = defaultProps;\n\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js?"); + +/***/ }), + /***/ "./node_modules/react-dom/cjs/react-dom.development.js": /*!*************************************************************!*\ !*** ./node_modules/react-dom/cjs/react-dom.development.js ***! @@ -10574,6 +11321,303 @@ eval("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs /***/ }), +/***/ "./node_modules/react-redux/es/components/Context.js": +/*!***********************************************************!*\ + !*** ./node_modules/react-redux/es/components/Context.js ***! + \***********************************************************/ +/***/ ((__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 */ ReactReduxContext: () => (/* binding */ ReactReduxContext),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\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\nvar ReactReduxContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);\n\nif (true) {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReactReduxContext);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/components/Context.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/components/Provider.js": +/*!************************************************************!*\ + !*** ./node_modules/react-redux/es/components/Provider.js ***! + \************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\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 _Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Context */ \"./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/Subscription */ \"./node_modules/react-redux/es/utils/Subscription.js\");\n/* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ \"./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js\");\n\n\n\n\n\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n var subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_2__.createSubscription)(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n return store.getState();\n }, [store]);\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect)(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || _Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (true) {\n Provider.propTypes = {\n store: prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({\n subscribe: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func).isRequired,\n dispatch: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func).isRequired,\n getState: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func).isRequired\n }),\n context: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().object),\n children: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().any)\n };\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Provider);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/components/Provider.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/components/connectAdvanced.js": +/*!*******************************************************************!*\ + !*** ./node_modules/react-redux/es/components/connectAdvanced.js ***! + \*******************************************************************/ +/***/ ((__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 */ \"default\": () => (/* binding */ connectAdvanced)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! hoist-non-react-statics */ \"./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-is */ \"./node_modules/react-redux/node_modules/react-is/index.js\");\n/* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/Subscription */ \"./node_modules/react-redux/es/utils/Subscription.js\");\n/* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ \"./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js\");\n/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Context */ \"./node_modules/react-redux/es/components/Context.js\");\n\n\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n _excluded2 = [\"reactReduxForwardedRef\"];\n\n\n\n\n\n // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_6__.useIsomorphicLayoutEffect)(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nfunction connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? _Context__WEBPACK_IMPORTED_MODULE_7__.ReactReduxContext : _ref2$context,\n connectOptions = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref2, _excluded);\n\n if (true) {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if ( true && !(0,react_is__WEBPACK_IMPORTED_MODULE_4__.isValidElementType)(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? react__WEBPACK_IMPORTED_MODULE_3__.useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded2);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && (0,react_is__WEBPACK_IMPORTED_MODULE_4__.isContextConsumer)( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = (0,react__WEBPACK_IMPORTED_MODULE_3__.useContext)(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if ( true && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n var subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_5__.createSubscription)(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_3__.useReducer)(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)();\n var lastWrapperProps = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(wrapperProps);\n var childPropsFromStoreUpdate = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)();\n var renderIsScheduled = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(WrappedComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? react__WEBPACK_IMPORTED_MODULE_3___default().memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = react__WEBPACK_IMPORTED_MODULE_3___default().forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(Connect, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(forwarded, WrappedComponent);\n }\n\n return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(Connect, WrappedComponent);\n };\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/components/connectAdvanced.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/connect/connect.js": +/*!********************************************************!*\ + !*** ./node_modules/react-redux/es/connect/connect.js ***! + \********************************************************/ +/***/ ((__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 */ createConnect: () => (/* binding */ createConnect),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _components_connectAdvanced__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/connectAdvanced */ \"./node_modules/react-redux/es/components/connectAdvanced.js\");\n/* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/shallowEqual */ \"./node_modules/react-redux/es/utils/shallowEqual.js\");\n/* harmony import */ var _mapDispatchToProps__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mapDispatchToProps */ \"./node_modules/react-redux/es/connect/mapDispatchToProps.js\");\n/* harmony import */ var _mapStateToProps__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mapStateToProps */ \"./node_modules/react-redux/es/connect/mapStateToProps.js\");\n/* harmony import */ var _mergeProps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./mergeProps */ \"./node_modules/react-redux/es/connect/mergeProps.js\");\n/* harmony import */ var _selectorFactory__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./selectorFactory */ \"./node_modules/react-redux/es/connect/selectorFactory.js\");\n\n\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\n\n\n\n\n\n\n/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nfunction createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? _components_connectAdvanced__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? _mapStateToProps__WEBPACK_IMPORTED_MODULE_5__[\"default\"] : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? _mapDispatchToProps__WEBPACK_IMPORTED_MODULE_4__[\"default\"] : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? _mergeProps__WEBPACK_IMPORTED_MODULE_6__[\"default\"] : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? _selectorFactory__WEBPACK_IMPORTED_MODULE_7__[\"default\"] : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_3__[\"default\"] : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_3__[\"default\"] : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_3__[\"default\"] : _ref3$areMergedPropsE,\n extraOptions = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref3, _excluded);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/createConnect());\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/connect/connect.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/connect/mapDispatchToProps.js": +/*!*******************************************************************!*\ + !*** ./node_modules/react-redux/es/connect/mapDispatchToProps.js ***! + \*******************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ whenMapDispatchToPropsIsFunction: () => (/* binding */ whenMapDispatchToPropsIsFunction),\n/* harmony export */ whenMapDispatchToPropsIsMissing: () => (/* binding */ whenMapDispatchToPropsIsMissing),\n/* harmony export */ whenMapDispatchToPropsIsObject: () => (/* binding */ whenMapDispatchToPropsIsObject)\n/* harmony export */ });\n/* harmony import */ var _utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/bindActionCreators */ \"./node_modules/react-redux/es/utils/bindActionCreators.js\");\n/* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./wrapMapToProps */ \"./node_modules/react-redux/es/connect/wrapMapToProps.js\");\n\n\nfunction whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsFunc)(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nfunction whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nfunction whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)(function (dispatch) {\n return (0,_utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(mapDispatchToProps, dispatch);\n }) : undefined;\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject]);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/connect/mapDispatchToProps.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/connect/mapStateToProps.js": +/*!****************************************************************!*\ + !*** ./node_modules/react-redux/es/connect/mapStateToProps.js ***! + \****************************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ whenMapStateToPropsIsFunction: () => (/* binding */ whenMapStateToPropsIsFunction),\n/* harmony export */ whenMapStateToPropsIsMissing: () => (/* binding */ whenMapStateToPropsIsMissing)\n/* harmony export */ });\n/* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wrapMapToProps */ \"./node_modules/react-redux/es/connect/wrapMapToProps.js\");\n\nfunction whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsFunc)(mapStateToProps, 'mapStateToProps') : undefined;\n}\nfunction whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsConstant)(function () {\n return {};\n }) : undefined;\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing]);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/connect/mapStateToProps.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/connect/mergeProps.js": +/*!***********************************************************!*\ + !*** ./node_modules/react-redux/es/connect/mergeProps.js ***! + \***********************************************************/ +/***/ ((__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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ defaultMergeProps: () => (/* binding */ defaultMergeProps),\n/* harmony export */ whenMergePropsIsFunction: () => (/* binding */ whenMergePropsIsFunction),\n/* harmony export */ whenMergePropsIsOmitted: () => (/* binding */ whenMergePropsIsOmitted),\n/* harmony export */ wrapMergePropsFunc: () => (/* binding */ wrapMergePropsFunc)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/verifyPlainObject */ \"./node_modules/react-redux/es/utils/verifyPlainObject.js\");\n\n\nfunction defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, ownProps, stateProps, dispatchProps);\n}\nfunction wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nfunction whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nfunction whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([whenMergePropsIsFunction, whenMergePropsIsOmitted]);\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/connect/mergeProps.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/connect/selectorFactory.js": +/*!****************************************************************!*\ + !*** ./node_modules/react-redux/es/connect/selectorFactory.js ***! + \****************************************************************/ +/***/ ((__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 */ \"default\": () => (/* binding */ finalPropsSelectorFactory),\n/* harmony export */ impureFinalPropsSelectorFactory: () => (/* binding */ impureFinalPropsSelectorFactory),\n/* harmony export */ pureFinalPropsSelectorFactory: () => (/* binding */ pureFinalPropsSelectorFactory)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _verifySubselectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./verifySubselectors */ \"./node_modules/react-redux/es/connect/verifySubselectors.js\");\n\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\n\nfunction impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nfunction pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nfunction finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref2, _excluded);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (true) {\n (0,_verifySubselectors__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/connect/selectorFactory.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/connect/verifySubselectors.js": +/*!*******************************************************************!*\ + !*** ./node_modules/react-redux/es/connect/verifySubselectors.js ***! + \*******************************************************************/ +/***/ ((__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 */ \"default\": () => (/* binding */ verifySubselectors)\n/* harmony export */ });\n/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/warning */ \"./node_modules/react-redux/es/utils/warning.js\");\n\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!Object.prototype.hasOwnProperty.call(selector, 'dependsOnOwnProps')) {\n (0,_utils_warning__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\n\nfunction verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/connect/verifySubselectors.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/connect/wrapMapToProps.js": +/*!***************************************************************!*\ + !*** ./node_modules/react-redux/es/connect/wrapMapToProps.js ***! + \***************************************************************/ +/***/ ((__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 */ getDependsOnOwnProps: () => (/* binding */ getDependsOnOwnProps),\n/* harmony export */ wrapMapToPropsConstant: () => (/* binding */ wrapMapToPropsConstant),\n/* harmony export */ wrapMapToPropsFunc: () => (/* binding */ wrapMapToPropsFunc)\n/* harmony export */ });\n/* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/verifyPlainObject */ \"./node_modules/react-redux/es/utils/verifyPlainObject.js\");\n\nfunction wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nfunction getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nfunction wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/connect/wrapMapToProps.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/exports.js": +/*!************************************************!*\ + !*** ./node_modules/react-redux/es/exports.js ***! + \************************************************/ +/***/ ((__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 */ Provider: () => (/* reexport safe */ _components_Provider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ ReactReduxContext: () => (/* reexport safe */ _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext),\n/* harmony export */ connect: () => (/* reexport safe */ _connect_connect__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ connectAdvanced: () => (/* reexport safe */ _components_connectAdvanced__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ createDispatchHook: () => (/* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_4__.createDispatchHook),\n/* harmony export */ createSelectorHook: () => (/* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_5__.createSelectorHook),\n/* harmony export */ createStoreHook: () => (/* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_6__.createStoreHook),\n/* harmony export */ shallowEqual: () => (/* reexport safe */ _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ useDispatch: () => (/* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_4__.useDispatch),\n/* harmony export */ useSelector: () => (/* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_5__.useSelector),\n/* harmony export */ useStore: () => (/* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_6__.useStore)\n/* harmony export */ });\n/* harmony import */ var _components_Provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Provider */ \"./node_modules/react-redux/es/components/Provider.js\");\n/* harmony import */ var _components_connectAdvanced__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/connectAdvanced */ \"./node_modules/react-redux/es/components/connectAdvanced.js\");\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Context */ \"./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _connect_connect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./connect/connect */ \"./node_modules/react-redux/es/connect/connect.js\");\n/* harmony import */ var _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useDispatch */ \"./node_modules/react-redux/es/hooks/useDispatch.js\");\n/* harmony import */ var _hooks_useSelector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/useSelector */ \"./node_modules/react-redux/es/hooks/useSelector.js\");\n/* harmony import */ var _hooks_useStore__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks/useStore */ \"./node_modules/react-redux/es/hooks/useStore.js\");\n/* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/shallowEqual */ \"./node_modules/react-redux/es/utils/shallowEqual.js\");\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/exports.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/hooks/useDispatch.js": +/*!**********************************************************!*\ + !*** ./node_modules/react-redux/es/hooks/useDispatch.js ***! + \**********************************************************/ +/***/ ((__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 */ createDispatchHook: () => (/* binding */ createDispatchHook),\n/* harmony export */ useDispatch: () => (/* binding */ useDispatch)\n/* harmony export */ });\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Context */ \"./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _useStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useStore */ \"./node_modules/react-redux/es/hooks/useStore.js\");\n\n\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nfunction createDispatchHook(context) {\n if (context === void 0) {\n context = _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext;\n }\n\n var useStore = context === _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext ? _useStore__WEBPACK_IMPORTED_MODULE_1__.useStore : (0,_useStore__WEBPACK_IMPORTED_MODULE_1__.createStoreHook)(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nvar useDispatch = /*#__PURE__*/createDispatchHook();\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/hooks/useDispatch.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/hooks/useReduxContext.js": +/*!**************************************************************!*\ + !*** ./node_modules/react-redux/es/hooks/useReduxContext.js ***! + \**************************************************************/ +/***/ ((__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 */ useReduxContext: () => (/* binding */ useReduxContext)\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 _components_Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Context */ \"./node_modules/react-redux/es/components/Context.js\");\n\n\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nfunction useReduxContext() {\n var contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext);\n\n if ( true && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/hooks/useReduxContext.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/hooks/useSelector.js": +/*!**********************************************************!*\ + !*** ./node_modules/react-redux/es/hooks/useSelector.js ***! + \**********************************************************/ +/***/ ((__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 */ createSelectorHook: () => (/* binding */ createSelectorHook),\n/* harmony export */ useSelector: () => (/* binding */ useSelector)\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 _useReduxContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useReduxContext */ \"./node_modules/react-redux/es/hooks/useReduxContext.js\");\n/* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/Subscription */ \"./node_modules/react-redux/es/utils/Subscription.js\");\n/* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ \"./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js\");\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/Context */ \"./node_modules/react-redux/es/components/Context.js\");\n\n\n\n\n\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n return (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_2__.createSubscription)(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n var latestSelector = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n var latestStoreState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n var latestSelectedState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect)(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect)(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nfunction createSelectorHook(context) {\n if (context === void 0) {\n context = _components_Context__WEBPACK_IMPORTED_MODULE_4__.ReactReduxContext;\n }\n\n var useReduxContext = context === _components_Context__WEBPACK_IMPORTED_MODULE_4__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_1__.useReduxContext : function () {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (true) {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue)(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nvar useSelector = /*#__PURE__*/createSelectorHook();\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/hooks/useSelector.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/hooks/useStore.js": +/*!*******************************************************!*\ + !*** ./node_modules/react-redux/es/hooks/useStore.js ***! + \*******************************************************/ +/***/ ((__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 */ createStoreHook: () => (/* binding */ createStoreHook),\n/* harmony export */ useStore: () => (/* binding */ useStore)\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 _components_Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Context */ \"./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useReduxContext */ \"./node_modules/react-redux/es/hooks/useReduxContext.js\");\n\n\n\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nfunction createStoreHook(context) {\n if (context === void 0) {\n context = _components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext;\n }\n\n var useReduxContext = context === _components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_2__.useReduxContext : function () {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nvar useStore = /*#__PURE__*/createStoreHook();\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/hooks/useStore.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/index.js": +/*!**********************************************!*\ + !*** ./node_modules/react-redux/es/index.js ***! + \**********************************************/ +/***/ ((__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 */ Provider: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.Provider),\n/* harmony export */ ReactReduxContext: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext),\n/* harmony export */ batch: () => (/* reexport safe */ _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_1__.unstable_batchedUpdates),\n/* harmony export */ connect: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.connect),\n/* harmony export */ connectAdvanced: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.connectAdvanced),\n/* harmony export */ createDispatchHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.createDispatchHook),\n/* harmony export */ createSelectorHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.createSelectorHook),\n/* harmony export */ createStoreHook: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.createStoreHook),\n/* harmony export */ shallowEqual: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.shallowEqual),\n/* harmony export */ useDispatch: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.useDispatch),\n/* harmony export */ useSelector: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.useSelector),\n/* harmony export */ useStore: () => (/* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_0__.useStore)\n/* harmony export */ });\n/* harmony import */ var _exports__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exports */ \"./node_modules/react-redux/es/exports.js\");\n/* harmony import */ var _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/reactBatchedUpdates */ \"./node_modules/react-redux/es/utils/reactBatchedUpdates.js\");\n/* harmony import */ var _utils_batch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/batch */ \"./node_modules/react-redux/es/utils/batch.js\");\n\n\n // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\n(0,_utils_batch__WEBPACK_IMPORTED_MODULE_2__.setBatch)(_utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_1__.unstable_batchedUpdates);\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/index.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/utils/Subscription.js": +/*!***********************************************************!*\ + !*** ./node_modules/react-redux/es/utils/Subscription.js ***! + \***********************************************************/ +/***/ ((__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 */ createSubscription: () => (/* binding */ createSubscription)\n/* harmony export */ });\n/* harmony import */ var _batch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./batch */ \"./node_modules/react-redux/es/utils/batch.js\");\n // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = (0,_batch__WEBPACK_IMPORTED_MODULE_0__.getBatch)();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nfunction createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/utils/Subscription.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/utils/batch.js": +/*!****************************************************!*\ + !*** ./node_modules/react-redux/es/utils/batch.js ***! + \****************************************************/ +/***/ ((__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 */ getBatch: () => (/* binding */ getBatch),\n/* harmony export */ setBatch: () => (/* binding */ setBatch)\n/* harmony export */ });\n// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nvar setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nvar getBatch = function getBatch() {\n return batch;\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/utils/batch.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/utils/bindActionCreators.js": +/*!*****************************************************************!*\ + !*** ./node_modules/react-redux/es/utils/bindActionCreators.js ***! + \*****************************************************************/ +/***/ ((__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 */ \"default\": () => (/* binding */ bindActionCreators)\n/* harmony export */ });\nfunction bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n\n var _loop = function _loop(key) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = function () {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n\n for (var key in actionCreators) {\n _loop(key);\n }\n\n return boundActionCreators;\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/utils/bindActionCreators.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/utils/isPlainObject.js": +/*!************************************************************!*\ + !*** ./node_modules/react-redux/es/utils/isPlainObject.js ***! + \************************************************************/ +/***/ ((__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 */ \"default\": () => (/* binding */ isPlainObject)\n/* harmony export */ });\n/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n var baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/utils/isPlainObject.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/utils/reactBatchedUpdates.js": +/*!******************************************************************!*\ + !*** ./node_modules/react-redux/es/utils/reactBatchedUpdates.js ***! + \******************************************************************/ +/***/ ((__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 */ unstable_batchedUpdates: () => (/* reexport safe */ react_dom__WEBPACK_IMPORTED_MODULE_0__.unstable_batchedUpdates)\n/* harmony export */ });\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* eslint-disable import/no-unresolved */\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/utils/reactBatchedUpdates.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/utils/shallowEqual.js": +/*!***********************************************************!*\ + !*** ./node_modules/react-redux/es/utils/shallowEqual.js ***! + \***********************************************************/ +/***/ ((__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 */ \"default\": () => (/* binding */ shallowEqual)\n/* harmony export */ });\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/utils/shallowEqual.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js": +/*!************************************************************************!*\ + !*** ./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js ***! + \************************************************************************/ +/***/ ((__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 */ useIsomorphicLayoutEffect: () => (/* binding */ useIsomorphicLayoutEffect)\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 // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/utils/verifyPlainObject.js": +/*!****************************************************************!*\ + !*** ./node_modules/react-redux/es/utils/verifyPlainObject.js ***! + \****************************************************************/ +/***/ ((__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 */ \"default\": () => (/* binding */ verifyPlainObject)\n/* harmony export */ });\n/* harmony import */ var _isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPlainObject */ \"./node_modules/react-redux/es/utils/isPlainObject.js\");\n/* harmony import */ var _warning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./warning */ \"./node_modules/react-redux/es/utils/warning.js\");\n\n\nfunction verifyPlainObject(value, displayName, methodName) {\n if (!(0,_isPlainObject__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n (0,_warning__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/utils/verifyPlainObject.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/es/utils/warning.js": +/*!******************************************************!*\ + !*** ./node_modules/react-redux/es/utils/warning.js ***! + \******************************************************/ +/***/ ((__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 */ \"default\": () => (/* binding */ warning)\n/* harmony export */ });\n/**\r\n * Prints a warning in the console if it exists.\r\n *\r\n * @param {String} message The warning message.\r\n * @returns {void}\r\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/es/utils/warning.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js": +/*!************************************************************************************!*\ + !*** ./node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js ***! + \************************************************************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; +eval("/** @license React v17.0.2\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar REACT_ELEMENT_TYPE = 0xeac7;\nvar REACT_PORTAL_TYPE = 0xeaca;\nvar REACT_FRAGMENT_TYPE = 0xeacb;\nvar REACT_STRICT_MODE_TYPE = 0xeacc;\nvar REACT_PROFILER_TYPE = 0xead2;\nvar REACT_PROVIDER_TYPE = 0xeacd;\nvar REACT_CONTEXT_TYPE = 0xeace;\nvar REACT_FORWARD_REF_TYPE = 0xead0;\nvar REACT_SUSPENSE_TYPE = 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = 0xead8;\nvar REACT_MEMO_TYPE = 0xead3;\nvar REACT_LAZY_TYPE = 0xead4;\nvar REACT_BLOCK_TYPE = 0xead9;\nvar REACT_SERVER_BLOCK_TYPE = 0xeada;\nvar REACT_FUNDAMENTAL_TYPE = 0xead5;\nvar REACT_SCOPE_TYPE = 0xead7;\nvar REACT_OPAQUE_ID_TYPE = 0xeae0;\nvar REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;\nvar REACT_OFFSCREEN_TYPE = 0xeae2;\nvar REACT_LEGACY_HIDDEN_TYPE = 0xeae3;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n var symbolFor = Symbol.for;\n REACT_ELEMENT_TYPE = symbolFor('react.element');\n REACT_PORTAL_TYPE = symbolFor('react.portal');\n REACT_FRAGMENT_TYPE = symbolFor('react.fragment');\n REACT_STRICT_MODE_TYPE = symbolFor('react.strict_mode');\n REACT_PROFILER_TYPE = symbolFor('react.profiler');\n REACT_PROVIDER_TYPE = symbolFor('react.provider');\n REACT_CONTEXT_TYPE = symbolFor('react.context');\n REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');\n REACT_SUSPENSE_TYPE = symbolFor('react.suspense');\n REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');\n REACT_MEMO_TYPE = symbolFor('react.memo');\n REACT_LAZY_TYPE = symbolFor('react.lazy');\n REACT_BLOCK_TYPE = symbolFor('react.block');\n REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');\n REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');\n REACT_SCOPE_TYPE = symbolFor('react.scope');\n REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');\n REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');\n REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');\n REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');\n}\n\n// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || type === REACT_DEBUG_TRACING_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js?"); + +/***/ }), + +/***/ "./node_modules/react-redux/node_modules/react-is/index.js": +/*!*****************************************************************!*\ + !*** ./node_modules/react-redux/node_modules/react-is/index.js ***! + \*****************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; +eval("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js\");\n}\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/react-redux/node_modules/react-is/index.js?"); + +/***/ }), + /***/ "./node_modules/react-resizable/build/Resizable.js": /*!*********************************************************!*\ !*** ./node_modules/react-resizable/build/Resizable.js ***! @@ -10794,6 +11838,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/redux/es/redux.js": +/*!****************************************!*\ + !*** ./node_modules/redux/es/redux.js ***! + \****************************************/ +/***/ ((__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 */ __DO_NOT_USE__ActionTypes: () => (/* binding */ ActionTypes),\n/* harmony export */ applyMiddleware: () => (/* binding */ applyMiddleware),\n/* harmony export */ bindActionCreators: () => (/* binding */ bindActionCreators),\n/* harmony export */ combineReducers: () => (/* binding */ combineReducers),\n/* harmony export */ compose: () => (/* binding */ compose),\n/* harmony export */ createStore: () => (/* binding */ createStore),\n/* harmony export */ legacy_createStore: () => (/* binding */ legacy_createStore)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ \"./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\");\n\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (true) {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error( false ? 0 : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error( false ? 0 : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error( false ? 0 : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error( false ? 0 : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error( false ? 0 : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error( false ? 0 : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error( false ? 0 : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error( false ? 0 : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error( false ? 0 : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error( false ? 0 : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error( false ? 0 : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error( false ? 0 : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error( false ? 0 : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error( false ? 0 : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (true) {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (true) {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (true) {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error( false ? 0 : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error( false ? 0 : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error( false ? 0 : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/redux/es/redux.js?"); + +/***/ }), + /***/ "./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js": /*!*************************************************************************!*\ !*** ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js ***! @@ -10991,6 +12046,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./node_modules/tiny-invariant/dist/esm/tiny-invariant.js": +/*!****************************************************************!*\ + !*** ./node_modules/tiny-invariant/dist/esm/tiny-invariant.js ***! + \****************************************************************/ +/***/ ((__unused_webpack___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 */ \"default\": () => (/* binding */ invariant)\n/* harmony export */ });\nvar isProduction = \"development\" === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js?"); + +/***/ }), + +/***/ "./node_modules/use-memo-one/dist/use-memo-one.esm.js": +/*!************************************************************!*\ + !*** ./node_modules/use-memo-one/dist/use-memo-one.esm.js ***! + \************************************************************/ +/***/ ((__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 */ useCallback: () => (/* binding */ useCallback),\n/* harmony export */ useCallbackOne: () => (/* binding */ useCallbackOne),\n/* harmony export */ useMemo: () => (/* binding */ useMemo),\n/* harmony export */ useMemoOne: () => (/* binding */ useMemoOne)\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\n\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction useMemoOne(getResult, inputs) {\n var initial = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () {\n return {\n inputs: inputs,\n result: getResult()\n };\n })[0];\n var isFirstRun = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(true);\n var committed = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(initial);\n var useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));\n var cache = useCache ? committed.current : {\n inputs: inputs,\n result: getResult()\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n isFirstRun.current = false;\n committed.current = cache;\n }, [cache]);\n return cache.result;\n}\nfunction useCallbackOne(callback, inputs) {\n return useMemoOne(function () {\n return callback;\n }, inputs);\n}\nvar useMemo = useMemoOne;\nvar useCallback = useCallbackOne;\n\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./node_modules/use-memo-one/dist/use-memo-one.esm.js?"); + +/***/ }), + /***/ "./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js": /*!**********************************************************************************************!*\ !*** ./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js ***!