@omniumretail/component-library 1.0.54 → 1.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bundle.js
CHANGED
|
@@ -10772,7 +10772,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
10772
10772
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
10773
10773
|
|
|
10774
10774
|
"use strict";
|
|
10775
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ModalWithTable\": function() { return /* binding */ ModalWithTable; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Button */ \"./src/components/Button/index.tsx\");\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/modal/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _ant_design_icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @ant-design/icons */ \"./node_modules/@ant-design/icons/es/icons/CloseOutlined.js\");\n/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styles.module.scss */ \"./src/components/ModalWithTable/styles.module.scss\");\n/* harmony import */ var _Tag__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Tag */ \"./src/components/Tag/index.tsx\");\n/* harmony import */ var _Table__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Table */ \"./src/components/Table/index.tsx\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_6__);\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n\n\n\n\n\nvar ModalWithTable = function (props) {\n var _a;\n var closeText = props.closeText, buttonText = props.buttonText, _b = props.isOpen, isOpen = _b === void 0 ? false : _b, tableData = props.tableData, modalData = props.modalData, isLoading = props.isLoading, initialRowSelectedInfo = props.initialRowSelectedInfo;\n var prevIsOpenRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)();\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n prevIsOpenRef.current = isOpen;\n }, [isOpen]);\n var prevIsOpen = prevIsOpenRef.current;\n // Add a new state to store the initial values\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)({\n pageInfo: {},\n rowSelectionInfo: [],\n tagsInfo: [],\n selectedData: [],\n }), initialValues = _c[0], setInitialValues = _c[1];\n var pageBase = { currentPage: 1 };\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)((isOpen)), open = _d[0], setOpen = _d[1];\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false), confirmLoading = _e[0], setConfirmLoading = _e[1];\n var _f = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(pageBase), pageInfo = _f[0], setPageInfo = _f[1];\n var _g = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(undefined), rowSelectionInfo = _g[0], setRowSelectionInfo = _g[1];\n var _h = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)([]), tagsInfo = _h[0], setTagsInfo = _h[1];\n var _j = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)([]), selectedData = _j[0], setSelectedData = _j[1];\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n setOpen(isOpen);\n if (isOpen && !prevIsOpen) {\n setInitialValues({\n pageInfo: pageInfo,\n rowSelectionInfo: rowSelectionInfo,\n tagsInfo: tagsInfo,\n selectedData: selectedData,\n });\n }\n }, [isOpen]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n initialRowSelectedInfo && setRowSelectionInfo(initialRowSelectedInfo);\n }, [initialRowSelectedInfo]);\n var hideModal = function () {\n setOpen(false);\n setPageInfo(initialValues.pageInfo);\n setRowSelectionInfo(initialValues.rowSelectionInfo);\n setTagsInfo(initialValues.tagsInfo);\n setSelectedData(initialValues.selectedData);\n };\n var saveChanges = function () {\n setOpen(false);\n };\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n if (!open) {\n setPageInfo(pageBase);\n }\n var modalDataObj = {\n pageInfo: pageInfo,\n rowSelectionInfo: rowSelectionInfo,\n tagsInfo: tagsInfo,\n open: open,\n selectedData: selectedData,\n };\n modalData(modalDataObj);\n }, [tagsInfo, open, rowSelectionInfo, selectedData]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n var _a, _b;\n var selectedRowKeys = rowSelectionInfo || tableData.rowSelection.selectedRowKeys;\n if (((_a = tableData === null || tableData === void 0 ? void 0 : tableData.rowSelection) === null || _a === void 0 ? void 0 : _a.type) === 'radio') {\n var filteredArray = (_b = tableData === null || tableData === void 0 ? void 0 : tableData.dataSource) === null || _b === void 0 ? void 0 : _b.filter(function (element) {\n return selectedRowKeys.includes(element[tableData.rowKeyValue]);\n });\n setSelectedData(filteredArray);\n return;\n }\n setSelectedData(function (prevData) {\n var _a;\n var newData = ((_a = tableData === null || tableData === void 0 ? void 0 : tableData.dataSource) === null || _a === void 0 ? void 0 : _a.filter(function (element) {\n return selectedRowKeys.includes(element[tableData.rowKeyValue]);\n })) || [];\n var oldData = prevData.filter(function (dataItem) {\n var _a;\n return !((_a = tableData === null || tableData === void 0 ? void 0 : tableData.dataSource) === null || _a === void 0 ? void 0 : _a.some(function (element) { return element[tableData.rowKeyValue] === dataItem[tableData.rowKeyValue]; }));\n });\n var combinedData = __spreadArray(__spreadArray([], oldData, true), newData, true).filter(function (dataItem, index, self) {\n return (index ===\n self.findIndex(function (item) { return item[tableData.rowKeyValue] === dataItem[tableData.rowKeyValue]; }));\n });\n setInitialValues(__assign(__assign({}, initialValues), { selectedData: combinedData }));\n return combinedData;\n });\n }, [rowSelectionInfo]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n if (tagsInfo.length > 0) {\n setConfirmLoading(true);\n }\n }, [tagsInfo]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n setConfirmLoading(isLoading);\n }, [isLoading]);\n var modalClasses = classnames__WEBPACK_IMPORTED_MODULE_6___default()((_a = {},\n _a[_styles_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].disabled] = confirmLoading,\n _a), _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].modal);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"], __assign({ destroyOnClose: true, closeIcon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", __assign({ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].closeButton }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"p\", { children: closeText }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ant_design_icons__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {})] })), open: open, onOk: hideModal, onCancel: hideModal, maskClosable: false, centered: true, width: '100%', footer: [\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Button__WEBPACK_IMPORTED_MODULE_1__.Button, __assign({ onClick: saveChanges }, { children: buttonText }), \"submit\")\n ], className: modalClasses }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", __assign({ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].tagsWrapper }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tag__WEBPACK_IMPORTED_MODULE_4__.TagField, { tagsInfo: setTagsInfo }) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", __assign({ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].tableWrapper }, { children: tableData &&\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Table__WEBPACK_IMPORTED_MODULE_5__.Table, __assign({}, tableData, { paginationInfo: setPageInfo, rowSelectionInfo: setRowSelectionInfo, headingTranslationsKey: 'tableHeadings' })) }))] })) }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29tcG9uZW50cy9Nb2RhbFdpdGhUYWJsZS9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2xpYi8uL3NyYy9jb21wb25lbnRzL01vZGFsV2l0aFRhYmxlL2luZGV4LnRzeD8yNWViIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cywgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICdhbnRkJztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENsb3NlT3V0bGluZWQgfSBmcm9tICdAYW50LWRlc2lnbi9pY29ucyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLm1vZHVsZS5zY3NzJztcbmltcG9ydCB7IFRhZ0ZpZWxkIH0gZnJvbSAnLi4vVGFnJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vVGFibGUnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5leHBvcnQgdmFyIE1vZGFsV2l0aFRhYmxlID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBjbG9zZVRleHQgPSBwcm9wcy5jbG9zZVRleHQsIGJ1dHRvblRleHQgPSBwcm9wcy5idXR0b25UZXh0LCBfYiA9IHByb3BzLmlzT3BlbiwgaXNPcGVuID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2IsIHRhYmxlRGF0YSA9IHByb3BzLnRhYmxlRGF0YSwgbW9kYWxEYXRhID0gcHJvcHMubW9kYWxEYXRhLCBpc0xvYWRpbmcgPSBwcm9wcy5pc0xvYWRpbmcsIGluaXRpYWxSb3dTZWxlY3RlZEluZm8gPSBwcm9wcy5pbml0aWFsUm93U2VsZWN0ZWRJbmZvO1xuICAgIHZhciBwcmV2SXNPcGVuUmVmID0gdXNlUmVmKCk7XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcHJldklzT3BlblJlZi5jdXJyZW50ID0gaXNPcGVuO1xuICAgIH0sIFtpc09wZW5dKTtcbiAgICB2YXIgcHJldklzT3BlbiA9IHByZXZJc09wZW5SZWYuY3VycmVudDtcbiAgICAvLyBBZGQgYSBuZXcgc3RhdGUgdG8gc3RvcmUgdGhlIGluaXRpYWwgdmFsdWVzXG4gICAgdmFyIF9jID0gdXNlU3RhdGUoe1xuICAgICAgICBwYWdlSW5mbzoge30sXG4gICAgICAgIHJvd1NlbGVjdGlvbkluZm86IFtdLFxuICAgICAgICB0YWdzSW5mbzogW10sXG4gICAgICAgIHNlbGVjdGVkRGF0YTogW10sXG4gICAgfSksIGluaXRpYWxWYWx1ZXMgPSBfY1swXSwgc2V0SW5pdGlhbFZhbHVlcyA9IF9jWzFdO1xuICAgIHZhciBwYWdlQmFzZSA9IHsgY3VycmVudFBhZ2U6IDEgfTtcbiAgICB2YXIgX2QgPSB1c2VTdGF0ZSgoaXNPcGVuKSksIG9wZW4gPSBfZFswXSwgc2V0T3BlbiA9IF9kWzFdO1xuICAgIHZhciBfZSA9IHVzZVN0YXRlKGZhbHNlKSwgY29uZmlybUxvYWRpbmcgPSBfZVswXSwgc2V0Q29uZmlybUxvYWRpbmcgPSBfZVsxXTtcbiAgICB2YXIgX2YgPSB1c2VTdGF0ZShwYWdlQmFzZSksIHBhZ2VJbmZvID0gX2ZbMF0sIHNldFBhZ2VJbmZvID0gX2ZbMV07XG4gICAgdmFyIF9nID0gdXNlU3RhdGUodW5kZWZpbmVkKSwgcm93U2VsZWN0aW9uSW5mbyA9IF9nWzBdLCBzZXRSb3dTZWxlY3Rpb25JbmZvID0gX2dbMV07XG4gICAgdmFyIF9oID0gdXNlU3RhdGUoW10pLCB0YWdzSW5mbyA9IF9oWzBdLCBzZXRUYWdzSW5mbyA9IF9oWzFdO1xuICAgIHZhciBfaiA9IHVzZVN0YXRlKFtdKSwgc2VsZWN0ZWREYXRhID0gX2pbMF0sIHNldFNlbGVjdGVkRGF0YSA9IF9qWzFdO1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldE9wZW4oaXNPcGVuKTtcbiAgICAgICAgaWYgKGlzT3BlbiAmJiAhcHJldklzT3Blbikge1xuICAgICAgICAgICAgc2V0SW5pdGlhbFZhbHVlcyh7XG4gICAgICAgICAgICAgICAgcGFnZUluZm86IHBhZ2VJbmZvLFxuICAgICAgICAgICAgICAgIHJvd1NlbGVjdGlvbkluZm86IHJvd1NlbGVjdGlvbkluZm8sXG4gICAgICAgICAgICAgICAgdGFnc0luZm86IHRhZ3NJbmZvLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YTogc2VsZWN0ZWREYXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCBbaXNPcGVuXSk7XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaW5pdGlhbFJvd1NlbGVjdGVkSW5mbyAmJiBzZXRSb3dTZWxlY3Rpb25JbmZvKGluaXRpYWxSb3dTZWxlY3RlZEluZm8pO1xuICAgIH0sIFtpbml0aWFsUm93U2VsZWN0ZWRJbmZvXSk7XG4gICAgdmFyIGhpZGVNb2RhbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgICAgIHNldFBhZ2VJbmZvKGluaXRpYWxWYWx1ZXMucGFnZUluZm8pO1xuICAgICAgICBzZXRSb3dTZWxlY3Rpb25JbmZvKGluaXRpYWxWYWx1ZXMucm93U2VsZWN0aW9uSW5mbyk7XG4gICAgICAgIHNldFRhZ3NJbmZvKGluaXRpYWxWYWx1ZXMudGFnc0luZm8pO1xuICAgICAgICBzZXRTZWxlY3RlZERhdGEoaW5pdGlhbFZhbHVlcy5zZWxlY3RlZERhdGEpO1xuICAgIH07XG4gICAgdmFyIHNhdmVDaGFuZ2VzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRPcGVuKGZhbHNlKTtcbiAgICB9O1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghb3Blbikge1xuICAgICAgICAgICAgc2V0UGFnZUluZm8ocGFnZUJhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtb2RhbERhdGFPYmogPSB7XG4gICAgICAgICAgICBwYWdlSW5mbzogcGFnZUluZm8sXG4gICAgICAgICAgICByb3dTZWxlY3Rpb25JbmZvOiByb3dTZWxlY3Rpb25JbmZvLFxuICAgICAgICAgICAgdGFnc0luZm86IHRhZ3NJbmZvLFxuICAgICAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgICAgIHNlbGVjdGVkRGF0YTogc2VsZWN0ZWREYXRhLFxuICAgICAgICB9O1xuICAgICAgICBtb2RhbERhdGEobW9kYWxEYXRhT2JqKTtcbiAgICB9LCBbdGFnc0luZm8sIG9wZW4sIHJvd1NlbGVjdGlvbkluZm8sIHNlbGVjdGVkRGF0YV0pO1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHZhciBzZWxlY3RlZFJvd0tleXMgPSByb3dTZWxlY3Rpb25JbmZvIHx8IHRhYmxlRGF0YS5yb3dTZWxlY3Rpb24uc2VsZWN0ZWRSb3dLZXlzO1xuICAgICAgICBpZiAoKChfYSA9IHRhYmxlRGF0YSA9PT0gbnVsbCB8fCB0YWJsZURhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYmxlRGF0YS5yb3dTZWxlY3Rpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50eXBlKSA9PT0gJ3JhZGlvJykge1xuICAgICAgICAgICAgdmFyIGZpbHRlcmVkQXJyYXkgPSAoX2IgPSB0YWJsZURhdGEgPT09IG51bGwgfHwgdGFibGVEYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YWJsZURhdGEuZGF0YVNvdXJjZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmZpbHRlcihmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFJvd0tleXMuaW5jbHVkZXMoZWxlbWVudFt0YWJsZURhdGEucm93S2V5VmFsdWVdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWREYXRhKGZpbHRlcmVkQXJyYXkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldFNlbGVjdGVkRGF0YShmdW5jdGlvbiAocHJldkRhdGEpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBuZXdEYXRhID0gKChfYSA9IHRhYmxlRGF0YSA9PT0gbnVsbCB8fCB0YWJsZURhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYmxlRGF0YS5kYXRhU291cmNlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93S2V5cy5pbmNsdWRlcyhlbGVtZW50W3RhYmxlRGF0YS5yb3dLZXlWYWx1ZV0pO1xuICAgICAgICAgICAgfSkpIHx8IFtdO1xuICAgICAgICAgICAgdmFyIG9sZERhdGEgPSBwcmV2RGF0YS5maWx0ZXIoZnVuY3Rpb24gKGRhdGFJdGVtKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHJldHVybiAhKChfYSA9IHRhYmxlRGF0YSA9PT0gbnVsbCB8fCB0YWJsZURhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYmxlRGF0YS5kYXRhU291cmNlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudFt0YWJsZURhdGEucm93S2V5VmFsdWVdID09PSBkYXRhSXRlbVt0YWJsZURhdGEucm93S2V5VmFsdWVdOyB9KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBjb21iaW5lZERhdGEgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIG9sZERhdGEsIHRydWUpLCBuZXdEYXRhLCB0cnVlKS5maWx0ZXIoZnVuY3Rpb24gKGRhdGFJdGVtLCBpbmRleCwgc2VsZikge1xuICAgICAgICAgICAgICAgIHJldHVybiAoaW5kZXggPT09XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZmluZEluZGV4KGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpdGVtW3RhYmxlRGF0YS5yb3dLZXlWYWx1ZV0gPT09IGRhdGFJdGVtW3RhYmxlRGF0YS5yb3dLZXlWYWx1ZV07IH0pKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0SW5pdGlhbFZhbHVlcyhfX2Fzc2lnbihfX2Fzc2lnbih7fSwgaW5pdGlhbFZhbHVlcyksIHsgc2VsZWN0ZWREYXRhOiBjb21iaW5lZERhdGEgfSkpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTtcbiAgICAgICAgfSk7XG4gICAgfSwgW3Jvd1NlbGVjdGlvbkluZm9dKTtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGFnc0luZm8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0Q29uZmlybUxvYWRpbmcodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9LCBbdGFnc0luZm9dKTtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRDb25maXJtTG9hZGluZyhpc0xvYWRpbmcpO1xuICAgIH0sIFtpc0xvYWRpbmddKTtcbiAgICB2YXIgbW9kYWxDbGFzc2VzID0gY2xhc3NuYW1lcygoX2EgPSB7fSxcbiAgICAgICAgX2Fbc3R5bGVzLmRpc2FibGVkXSA9IGNvbmZpcm1Mb2FkaW5nLFxuICAgICAgICBfYSksIHN0eWxlcy5tb2RhbCk7XG4gICAgcmV0dXJuIChfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogX2pzeHMoTW9kYWwsIF9fYXNzaWduKHsgZGVzdHJveU9uQ2xvc2U6IHRydWUsIGNsb3NlSWNvbjogX2pzeHMoXCJkaXZcIiwgX19hc3NpZ24oeyBjbGFzc05hbWU6IHN0eWxlcy5jbG9zZUJ1dHRvbiB9LCB7IGNoaWxkcmVuOiBbX2pzeChcInBcIiwgeyBjaGlsZHJlbjogY2xvc2VUZXh0IH0pLCBfanN4KENsb3NlT3V0bGluZWQsIHt9KV0gfSkpLCBvcGVuOiBvcGVuLCBvbk9rOiBoaWRlTW9kYWwsIG9uQ2FuY2VsOiBoaWRlTW9kYWwsIG1hc2tDbG9zYWJsZTogZmFsc2UsIGNlbnRlcmVkOiB0cnVlLCB3aWR0aDogJzEwMCUnLCBmb290ZXI6IFtcbiAgICAgICAgICAgICAgICBfanN4KEJ1dHRvbiwgX19hc3NpZ24oeyBvbkNsaWNrOiBzYXZlQ2hhbmdlcyB9LCB7IGNoaWxkcmVuOiBidXR0b25UZXh0IH0pLCBcInN1Ym1pdFwiKVxuICAgICAgICAgICAgXSwgY2xhc3NOYW1lOiBtb2RhbENsYXNzZXMgfSwgeyBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgX19hc3NpZ24oeyBjbGFzc05hbWU6IHN0eWxlcy50YWdzV3JhcHBlciB9LCB7IGNoaWxkcmVuOiBfanN4KFRhZ0ZpZWxkLCB7IHRhZ3NJbmZvOiBzZXRUYWdzSW5mbyB9KSB9KSksIF9qc3goXCJkaXZcIiwgX19hc3NpZ24oeyBjbGFzc05hbWU6IHN0eWxlcy50YWJsZVdyYXBwZXIgfSwgeyBjaGlsZHJlbjogdGFibGVEYXRhICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBfanN4KFRhYmxlLCBfX2Fzc2lnbih7fSwgdGFibGVEYXRhLCB7IHBhZ2luYXRpb25JbmZvOiBzZXRQYWdlSW5mbywgcm93U2VsZWN0aW9uSW5mbzogc2V0Um93U2VsZWN0aW9uSW5mbywgaGVhZGluZ1RyYW5zbGF0aW9uc0tleTogJ3RhYmxlSGVhZGluZ3MnIH0pKSB9KSldIH0pKSB9KSk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/components/ModalWithTable/index.tsx\n");
|
|
10775
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ModalWithTable\": function() { return /* binding */ ModalWithTable; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"./node_modules/react/jsx-runtime.js\");\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Button */ \"./src/components/Button/index.tsx\");\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/modal/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _ant_design_icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @ant-design/icons */ \"./node_modules/@ant-design/icons/es/icons/CloseOutlined.js\");\n/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styles.module.scss */ \"./src/components/ModalWithTable/styles.module.scss\");\n/* harmony import */ var _Tag__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Tag */ \"./src/components/Tag/index.tsx\");\n/* harmony import */ var _Table__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Table */ \"./src/components/Table/index.tsx\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_6__);\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\n\n\n\n\n\nfunction objectsAreEqual(obj1, obj2) {\n var keys1 = Object.keys(obj1);\n var keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (var _i = 0, keys1_1 = keys1; _i < keys1_1.length; _i++) {\n var key = keys1_1[_i];\n if (!keys2.includes(key) || obj1[key] !== obj2[key]) {\n return false;\n }\n }\n return true;\n}\nfunction arrayContainsObject(array, newObj) {\n return array.some(function (existingObj) { return objectsAreEqual(existingObj, newObj); });\n}\nvar ModalWithTable = function (props) {\n var _a;\n var closeText = props.closeText, buttonText = props.buttonText, _b = props.isOpen, isOpen = _b === void 0 ? false : _b, tableData = props.tableData, modalData = props.modalData, isLoading = props.isLoading, initialRowSelectedInfo = props.initialRowSelectedInfo;\n var prevIsOpenRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)();\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n prevIsOpenRef.current = isOpen;\n }, [isOpen]);\n var prevIsOpen = prevIsOpenRef.current;\n // Add a new state to store the initial values\n var _c = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)({\n pageInfo: {},\n rowSelectionInfo: [],\n tagsInfo: [],\n selectedData: [],\n }), initialValues = _c[0], setInitialValues = _c[1];\n var pageBase = { currentPage: 1 };\n var _d = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)((isOpen)), open = _d[0], setOpen = _d[1];\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false), confirmLoading = _e[0], setConfirmLoading = _e[1];\n var _f = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(pageBase), pageInfo = _f[0], setPageInfo = _f[1];\n var _g = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(undefined), rowSelectionInfo = _g[0], setRowSelectionInfo = _g[1];\n var _h = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)([]), tagsInfo = _h[0], setTagsInfo = _h[1];\n var _j = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)([]), selectedData = _j[0], setSelectedData = _j[1];\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n setOpen(isOpen);\n if (isOpen && !prevIsOpen) {\n setInitialValues({\n pageInfo: pageInfo,\n rowSelectionInfo: rowSelectionInfo,\n tagsInfo: tagsInfo,\n selectedData: selectedData,\n });\n }\n }, [isOpen]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n initialRowSelectedInfo && setRowSelectionInfo(initialRowSelectedInfo);\n }, [initialRowSelectedInfo]);\n var hideModal = function () {\n setOpen(false);\n setPageInfo(initialValues.pageInfo);\n setRowSelectionInfo(initialValues.rowSelectionInfo);\n setTagsInfo(initialValues.tagsInfo);\n setSelectedData(initialValues.selectedData);\n };\n var saveChanges = function () {\n var _a;\n setOpen(false);\n if (((_a = tableData === null || tableData === void 0 ? void 0 : tableData.rowSelection) === null || _a === void 0 ? void 0 : _a.type) === 'radio') {\n setSelectedData([selectedData[selectedData.length - 1]]);\n }\n };\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n if (!open) {\n setPageInfo(pageBase);\n }\n var modalDataObj = {\n pageInfo: pageInfo,\n rowSelectionInfo: rowSelectionInfo,\n tagsInfo: tagsInfo,\n open: open,\n selectedData: selectedData,\n };\n modalData(modalDataObj);\n }, [tagsInfo, open, rowSelectionInfo, selectedData]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n var _a;\n var selectedRowKeys = rowSelectionInfo || tableData.rowSelection.selectedRowKeys;\n if (((_a = tableData === null || tableData === void 0 ? void 0 : tableData.rowSelection) === null || _a === void 0 ? void 0 : _a.type) === 'radio') {\n setSelectedData(function (prevData) {\n var _a;\n var newData = ((_a = tableData === null || tableData === void 0 ? void 0 : tableData.dataSource) === null || _a === void 0 ? void 0 : _a.filter(function (element) {\n return selectedRowKeys.includes(element[tableData.rowKeyValue]);\n })) || [];\n if (newData.length < 1) {\n return selectedData;\n }\n if (arrayContainsObject(selectedData, newData[0])) {\n return selectedData;\n }\n var combinedData = __spreadArray(__spreadArray([], selectedData, true), newData, true);\n return combinedData;\n });\n return;\n }\n setSelectedData(function (prevData) {\n var _a;\n var newData = ((_a = tableData === null || tableData === void 0 ? void 0 : tableData.dataSource) === null || _a === void 0 ? void 0 : _a.filter(function (element) {\n return selectedRowKeys.includes(element[tableData.rowKeyValue]);\n })) || [];\n var oldData = prevData.filter(function (dataItem) {\n var _a;\n return !((_a = tableData === null || tableData === void 0 ? void 0 : tableData.dataSource) === null || _a === void 0 ? void 0 : _a.some(function (element) { return element[tableData.rowKeyValue] === dataItem[tableData.rowKeyValue]; }));\n });\n var combinedData = __spreadArray(__spreadArray([], oldData, true), newData, true).filter(function (dataItem, index, self) {\n return (index ===\n self.findIndex(function (item) { return item[tableData.rowKeyValue] === dataItem[tableData.rowKeyValue]; }));\n });\n setInitialValues(__assign(__assign({}, initialValues), { selectedData: combinedData }));\n return combinedData;\n });\n }, [rowSelectionInfo]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n if (tagsInfo.length > 0) {\n setConfirmLoading(true);\n }\n }, [tagsInfo]);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\n setConfirmLoading(isLoading);\n }, [isLoading]);\n var modalClasses = classnames__WEBPACK_IMPORTED_MODULE_6___default()((_a = {},\n _a[_styles_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].disabled] = confirmLoading,\n _a), _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].modal);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"], __assign({ destroyOnClose: true, closeIcon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", __assign({ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].closeButton }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"p\", { children: closeText }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ant_design_icons__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {})] })), open: open, onOk: hideModal, onCancel: hideModal, maskClosable: false, centered: true, width: '100%', footer: [\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Button__WEBPACK_IMPORTED_MODULE_1__.Button, __assign({ onClick: saveChanges }, { children: buttonText }), \"submit\")\n ], className: modalClasses }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", __assign({ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].tagsWrapper }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tag__WEBPACK_IMPORTED_MODULE_4__.TagField, { tagsInfo: setTagsInfo }) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", __assign({ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].tableWrapper }, { children: tableData &&\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Table__WEBPACK_IMPORTED_MODULE_5__.Table, __assign({}, tableData, { paginationInfo: setPageInfo, rowSelectionInfo: setRowSelectionInfo, headingTranslationsKey: 'tableHeadings' })) }))] })) }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29tcG9uZW50cy9Nb2RhbFdpdGhUYWJsZS9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbGliLy4vc3JjL2NvbXBvbmVudHMvTW9kYWxXaXRoVGFibGUvaW5kZXgudHN4PzI1ZWIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzLCBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbic7XG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJ2FudGQnO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ2xvc2VPdXRsaW5lZCB9IGZyb20gJ0BhbnQtZGVzaWduL2ljb25zJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMubW9kdWxlLnNjc3MnO1xuaW1wb3J0IHsgVGFnRmllbGQgfSBmcm9tICcuLi9UYWcnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi9UYWJsZSc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmZ1bmN0aW9uIG9iamVjdHNBcmVFcXVhbChvYmoxLCBvYmoyKSB7XG4gICAgdmFyIGtleXMxID0gT2JqZWN0LmtleXMob2JqMSk7XG4gICAgdmFyIGtleXMyID0gT2JqZWN0LmtleXMob2JqMik7XG4gICAgaWYgKGtleXMxLmxlbmd0aCAhPT0ga2V5czIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgX2kgPSAwLCBrZXlzMV8xID0ga2V5czE7IF9pIDwga2V5czFfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMxXzFbX2ldO1xuICAgICAgICBpZiAoIWtleXMyLmluY2x1ZGVzKGtleSkgfHwgb2JqMVtrZXldICE9PSBvYmoyW2tleV0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGFycmF5Q29udGFpbnNPYmplY3QoYXJyYXksIG5ld09iaikge1xuICAgIHJldHVybiBhcnJheS5zb21lKGZ1bmN0aW9uIChleGlzdGluZ09iaikgeyByZXR1cm4gb2JqZWN0c0FyZUVxdWFsKGV4aXN0aW5nT2JqLCBuZXdPYmopOyB9KTtcbn1cbmV4cG9ydCB2YXIgTW9kYWxXaXRoVGFibGUgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGNsb3NlVGV4dCA9IHByb3BzLmNsb3NlVGV4dCwgYnV0dG9uVGV4dCA9IHByb3BzLmJ1dHRvblRleHQsIF9iID0gcHJvcHMuaXNPcGVuLCBpc09wZW4gPSBfYiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYiwgdGFibGVEYXRhID0gcHJvcHMudGFibGVEYXRhLCBtb2RhbERhdGEgPSBwcm9wcy5tb2RhbERhdGEsIGlzTG9hZGluZyA9IHByb3BzLmlzTG9hZGluZywgaW5pdGlhbFJvd1NlbGVjdGVkSW5mbyA9IHByb3BzLmluaXRpYWxSb3dTZWxlY3RlZEluZm87XG4gICAgdmFyIHByZXZJc09wZW5SZWYgPSB1c2VSZWYoKTtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBwcmV2SXNPcGVuUmVmLmN1cnJlbnQgPSBpc09wZW47XG4gICAgfSwgW2lzT3Blbl0pO1xuICAgIHZhciBwcmV2SXNPcGVuID0gcHJldklzT3BlblJlZi5jdXJyZW50O1xuICAgIC8vIEFkZCBhIG5ldyBzdGF0ZSB0byBzdG9yZSB0aGUgaW5pdGlhbCB2YWx1ZXNcbiAgICB2YXIgX2MgPSB1c2VTdGF0ZSh7XG4gICAgICAgIHBhZ2VJbmZvOiB7fSxcbiAgICAgICAgcm93U2VsZWN0aW9uSW5mbzogW10sXG4gICAgICAgIHRhZ3NJbmZvOiBbXSxcbiAgICAgICAgc2VsZWN0ZWREYXRhOiBbXSxcbiAgICB9KSwgaW5pdGlhbFZhbHVlcyA9IF9jWzBdLCBzZXRJbml0aWFsVmFsdWVzID0gX2NbMV07XG4gICAgdmFyIHBhZ2VCYXNlID0geyBjdXJyZW50UGFnZTogMSB9O1xuICAgIHZhciBfZCA9IHVzZVN0YXRlKChpc09wZW4pKSwgb3BlbiA9IF9kWzBdLCBzZXRPcGVuID0gX2RbMV07XG4gICAgdmFyIF9lID0gdXNlU3RhdGUoZmFsc2UpLCBjb25maXJtTG9hZGluZyA9IF9lWzBdLCBzZXRDb25maXJtTG9hZGluZyA9IF9lWzFdO1xuICAgIHZhciBfZiA9IHVzZVN0YXRlKHBhZ2VCYXNlKSwgcGFnZUluZm8gPSBfZlswXSwgc2V0UGFnZUluZm8gPSBfZlsxXTtcbiAgICB2YXIgX2cgPSB1c2VTdGF0ZSh1bmRlZmluZWQpLCByb3dTZWxlY3Rpb25JbmZvID0gX2dbMF0sIHNldFJvd1NlbGVjdGlvbkluZm8gPSBfZ1sxXTtcbiAgICB2YXIgX2ggPSB1c2VTdGF0ZShbXSksIHRhZ3NJbmZvID0gX2hbMF0sIHNldFRhZ3NJbmZvID0gX2hbMV07XG4gICAgdmFyIF9qID0gdXNlU3RhdGUoW10pLCBzZWxlY3RlZERhdGEgPSBfalswXSwgc2V0U2VsZWN0ZWREYXRhID0gX2pbMV07XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0T3Blbihpc09wZW4pO1xuICAgICAgICBpZiAoaXNPcGVuICYmICFwcmV2SXNPcGVuKSB7XG4gICAgICAgICAgICBzZXRJbml0aWFsVmFsdWVzKHtcbiAgICAgICAgICAgICAgICBwYWdlSW5mbzogcGFnZUluZm8sXG4gICAgICAgICAgICAgICAgcm93U2VsZWN0aW9uSW5mbzogcm93U2VsZWN0aW9uSW5mbyxcbiAgICAgICAgICAgICAgICB0YWdzSW5mbzogdGFnc0luZm8sXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhOiBzZWxlY3RlZERhdGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIFtpc09wZW5dKTtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpbml0aWFsUm93U2VsZWN0ZWRJbmZvICYmIHNldFJvd1NlbGVjdGlvbkluZm8oaW5pdGlhbFJvd1NlbGVjdGVkSW5mbyk7XG4gICAgfSwgW2luaXRpYWxSb3dTZWxlY3RlZEluZm9dKTtcbiAgICB2YXIgaGlkZU1vZGFsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRPcGVuKGZhbHNlKTtcbiAgICAgICAgc2V0UGFnZUluZm8oaW5pdGlhbFZhbHVlcy5wYWdlSW5mbyk7XG4gICAgICAgIHNldFJvd1NlbGVjdGlvbkluZm8oaW5pdGlhbFZhbHVlcy5yb3dTZWxlY3Rpb25JbmZvKTtcbiAgICAgICAgc2V0VGFnc0luZm8oaW5pdGlhbFZhbHVlcy50YWdzSW5mbyk7XG4gICAgICAgIHNldFNlbGVjdGVkRGF0YShpbml0aWFsVmFsdWVzLnNlbGVjdGVkRGF0YSk7XG4gICAgfTtcbiAgICB2YXIgc2F2ZUNoYW5nZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgICAgIGlmICgoKF9hID0gdGFibGVEYXRhID09PSBudWxsIHx8IHRhYmxlRGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFibGVEYXRhLnJvd1NlbGVjdGlvbikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnR5cGUpID09PSAncmFkaW8nKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZERhdGEoW3NlbGVjdGVkRGF0YVtzZWxlY3RlZERhdGEubGVuZ3RoIC0gMV1dKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFvcGVuKSB7XG4gICAgICAgICAgICBzZXRQYWdlSW5mbyhwYWdlQmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vZGFsRGF0YU9iaiA9IHtcbiAgICAgICAgICAgIHBhZ2VJbmZvOiBwYWdlSW5mbyxcbiAgICAgICAgICAgIHJvd1NlbGVjdGlvbkluZm86IHJvd1NlbGVjdGlvbkluZm8sXG4gICAgICAgICAgICB0YWdzSW5mbzogdGFnc0luZm8sXG4gICAgICAgICAgICBvcGVuOiBvcGVuLFxuICAgICAgICAgICAgc2VsZWN0ZWREYXRhOiBzZWxlY3RlZERhdGEsXG4gICAgICAgIH07XG4gICAgICAgIG1vZGFsRGF0YShtb2RhbERhdGFPYmopO1xuICAgIH0sIFt0YWdzSW5mbywgb3Blbiwgcm93U2VsZWN0aW9uSW5mbywgc2VsZWN0ZWREYXRhXSk7XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgc2VsZWN0ZWRSb3dLZXlzID0gcm93U2VsZWN0aW9uSW5mbyB8fCB0YWJsZURhdGEucm93U2VsZWN0aW9uLnNlbGVjdGVkUm93S2V5cztcbiAgICAgICAgaWYgKCgoX2EgPSB0YWJsZURhdGEgPT09IG51bGwgfHwgdGFibGVEYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YWJsZURhdGEucm93U2VsZWN0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHlwZSkgPT09ICdyYWRpbycpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkRGF0YShmdW5jdGlvbiAocHJldkRhdGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdmFyIG5ld0RhdGEgPSAoKF9hID0gdGFibGVEYXRhID09PSBudWxsIHx8IHRhYmxlRGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFibGVEYXRhLmRhdGFTb3VyY2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93S2V5cy5pbmNsdWRlcyhlbGVtZW50W3RhYmxlRGF0YS5yb3dLZXlWYWx1ZV0pO1xuICAgICAgICAgICAgICAgIH0pKSB8fCBbXTtcbiAgICAgICAgICAgICAgICBpZiAobmV3RGF0YS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZERhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhcnJheUNvbnRhaW5zT2JqZWN0KHNlbGVjdGVkRGF0YSwgbmV3RGF0YVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkRGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGNvbWJpbmVkRGF0YSA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgc2VsZWN0ZWREYXRhLCB0cnVlKSwgbmV3RGF0YSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldFNlbGVjdGVkRGF0YShmdW5jdGlvbiAocHJldkRhdGEpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBuZXdEYXRhID0gKChfYSA9IHRhYmxlRGF0YSA9PT0gbnVsbCB8fCB0YWJsZURhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYmxlRGF0YS5kYXRhU291cmNlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93S2V5cy5pbmNsdWRlcyhlbGVtZW50W3RhYmxlRGF0YS5yb3dLZXlWYWx1ZV0pO1xuICAgICAgICAgICAgfSkpIHx8IFtdO1xuICAgICAgICAgICAgdmFyIG9sZERhdGEgPSBwcmV2RGF0YS5maWx0ZXIoZnVuY3Rpb24gKGRhdGFJdGVtKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIHJldHVybiAhKChfYSA9IHRhYmxlRGF0YSA9PT0gbnVsbCB8fCB0YWJsZURhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYmxlRGF0YS5kYXRhU291cmNlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudFt0YWJsZURhdGEucm93S2V5VmFsdWVdID09PSBkYXRhSXRlbVt0YWJsZURhdGEucm93S2V5VmFsdWVdOyB9KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBjb21iaW5lZERhdGEgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIG9sZERhdGEsIHRydWUpLCBuZXdEYXRhLCB0cnVlKS5maWx0ZXIoZnVuY3Rpb24gKGRhdGFJdGVtLCBpbmRleCwgc2VsZikge1xuICAgICAgICAgICAgICAgIHJldHVybiAoaW5kZXggPT09XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZmluZEluZGV4KGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpdGVtW3RhYmxlRGF0YS5yb3dLZXlWYWx1ZV0gPT09IGRhdGFJdGVtW3RhYmxlRGF0YS5yb3dLZXlWYWx1ZV07IH0pKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0SW5pdGlhbFZhbHVlcyhfX2Fzc2lnbihfX2Fzc2lnbih7fSwgaW5pdGlhbFZhbHVlcyksIHsgc2VsZWN0ZWREYXRhOiBjb21iaW5lZERhdGEgfSkpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTtcbiAgICAgICAgfSk7XG4gICAgfSwgW3Jvd1NlbGVjdGlvbkluZm9dKTtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGFnc0luZm8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0Q29uZmlybUxvYWRpbmcodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9LCBbdGFnc0luZm9dKTtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRDb25maXJtTG9hZGluZyhpc0xvYWRpbmcpO1xuICAgIH0sIFtpc0xvYWRpbmddKTtcbiAgICB2YXIgbW9kYWxDbGFzc2VzID0gY2xhc3NuYW1lcygoX2EgPSB7fSxcbiAgICAgICAgX2Fbc3R5bGVzLmRpc2FibGVkXSA9IGNvbmZpcm1Mb2FkaW5nLFxuICAgICAgICBfYSksIHN0eWxlcy5tb2RhbCk7XG4gICAgcmV0dXJuIChfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogX2pzeHMoTW9kYWwsIF9fYXNzaWduKHsgZGVzdHJveU9uQ2xvc2U6IHRydWUsIGNsb3NlSWNvbjogX2pzeHMoXCJkaXZcIiwgX19hc3NpZ24oeyBjbGFzc05hbWU6IHN0eWxlcy5jbG9zZUJ1dHRvbiB9LCB7IGNoaWxkcmVuOiBbX2pzeChcInBcIiwgeyBjaGlsZHJlbjogY2xvc2VUZXh0IH0pLCBfanN4KENsb3NlT3V0bGluZWQsIHt9KV0gfSkpLCBvcGVuOiBvcGVuLCBvbk9rOiBoaWRlTW9kYWwsIG9uQ2FuY2VsOiBoaWRlTW9kYWwsIG1hc2tDbG9zYWJsZTogZmFsc2UsIGNlbnRlcmVkOiB0cnVlLCB3aWR0aDogJzEwMCUnLCBmb290ZXI6IFtcbiAgICAgICAgICAgICAgICBfanN4KEJ1dHRvbiwgX19hc3NpZ24oeyBvbkNsaWNrOiBzYXZlQ2hhbmdlcyB9LCB7IGNoaWxkcmVuOiBidXR0b25UZXh0IH0pLCBcInN1Ym1pdFwiKVxuICAgICAgICAgICAgXSwgY2xhc3NOYW1lOiBtb2RhbENsYXNzZXMgfSwgeyBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgX19hc3NpZ24oeyBjbGFzc05hbWU6IHN0eWxlcy50YWdzV3JhcHBlciB9LCB7IGNoaWxkcmVuOiBfanN4KFRhZ0ZpZWxkLCB7IHRhZ3NJbmZvOiBzZXRUYWdzSW5mbyB9KSB9KSksIF9qc3goXCJkaXZcIiwgX19hc3NpZ24oeyBjbGFzc05hbWU6IHN0eWxlcy50YWJsZVdyYXBwZXIgfSwgeyBjaGlsZHJlbjogdGFibGVEYXRhICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBfanN4KFRhYmxlLCBfX2Fzc2lnbih7fSwgdGFibGVEYXRhLCB7IHBhZ2luYXRpb25JbmZvOiBzZXRQYWdlSW5mbywgcm93U2VsZWN0aW9uSW5mbzogc2V0Um93U2VsZWN0aW9uSW5mbywgaGVhZGluZ1RyYW5zbGF0aW9uc0tleTogJ3RhYmxlSGVhZGluZ3MnIH0pKSB9KSldIH0pKSB9KSk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/components/ModalWithTable/index.tsx\n");
|
|
10776
10776
|
|
|
10777
10777
|
/***/ }),
|
|
10778
10778
|
|
package/package.json
CHANGED
|
@@ -17,6 +17,26 @@ export interface ModalWithTableProps {
|
|
|
17
17
|
confirmLoading?: boolean;
|
|
18
18
|
initialRowSelectedInfo?: any;
|
|
19
19
|
}
|
|
20
|
+
function objectsAreEqual(obj1: any, obj2: any) {
|
|
21
|
+
const keys1 = Object.keys(obj1);
|
|
22
|
+
const keys2 = Object.keys(obj2);
|
|
23
|
+
|
|
24
|
+
if (keys1.length !== keys2.length) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
for (const key of keys1) {
|
|
29
|
+
if (!keys2.includes(key) || obj1[key] !== obj2[key]) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function arrayContainsObject(array: any, newObj: any) {
|
|
38
|
+
return array.some((existingObj: any) => objectsAreEqual(existingObj, newObj));
|
|
39
|
+
}
|
|
20
40
|
|
|
21
41
|
export const ModalWithTable = (props: ModalWithTableProps) => {
|
|
22
42
|
const {
|
|
@@ -42,7 +62,7 @@ export const ModalWithTable = (props: ModalWithTableProps) => {
|
|
|
42
62
|
tagsInfo: [],
|
|
43
63
|
selectedData: [],
|
|
44
64
|
});
|
|
45
|
-
const pageBase = {currentPage: 1};
|
|
65
|
+
const pageBase = { currentPage: 1 };
|
|
46
66
|
const [open, setOpen] = useState((isOpen));
|
|
47
67
|
const [confirmLoading, setConfirmLoading] = useState(false);
|
|
48
68
|
const [pageInfo, setPageInfo] = useState<any>(pageBase);
|
|
@@ -50,15 +70,15 @@ export const ModalWithTable = (props: ModalWithTableProps) => {
|
|
|
50
70
|
const [tagsInfo, setTagsInfo] = useState<any>([]);
|
|
51
71
|
const [selectedData, setSelectedData] = useState<any>([]);
|
|
52
72
|
|
|
53
|
-
useEffect(()=> {
|
|
73
|
+
useEffect(() => {
|
|
54
74
|
setOpen(isOpen);
|
|
55
75
|
|
|
56
76
|
if (isOpen && !prevIsOpen) {
|
|
57
77
|
setInitialValues({
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
78
|
+
pageInfo: pageInfo,
|
|
79
|
+
rowSelectionInfo: rowSelectionInfo,
|
|
80
|
+
tagsInfo: tagsInfo,
|
|
81
|
+
selectedData: selectedData,
|
|
62
82
|
});
|
|
63
83
|
}
|
|
64
84
|
}, [isOpen])
|
|
@@ -77,13 +97,17 @@ export const ModalWithTable = (props: ModalWithTableProps) => {
|
|
|
77
97
|
|
|
78
98
|
const saveChanges = () => {
|
|
79
99
|
setOpen(false);
|
|
100
|
+
|
|
101
|
+
if (tableData?.rowSelection?.type === 'radio') {
|
|
102
|
+
setSelectedData([selectedData[selectedData.length - 1]]);
|
|
103
|
+
}
|
|
80
104
|
};
|
|
81
105
|
|
|
82
106
|
useEffect(() => {
|
|
83
107
|
if (!open) {
|
|
84
108
|
setPageInfo(pageBase);
|
|
85
109
|
}
|
|
86
|
-
|
|
110
|
+
|
|
87
111
|
const modalDataObj = {
|
|
88
112
|
pageInfo: pageInfo,
|
|
89
113
|
rowSelectionInfo: rowSelectionInfo,
|
|
@@ -91,19 +115,29 @@ export const ModalWithTable = (props: ModalWithTableProps) => {
|
|
|
91
115
|
open: open,
|
|
92
116
|
selectedData: selectedData,
|
|
93
117
|
};
|
|
94
|
-
|
|
118
|
+
|
|
95
119
|
modalData(modalDataObj);
|
|
96
120
|
}, [tagsInfo, open, rowSelectionInfo, selectedData]);
|
|
97
121
|
|
|
98
122
|
useEffect(() => {
|
|
99
123
|
const selectedRowKeys = rowSelectionInfo || tableData.rowSelection.selectedRowKeys;
|
|
100
124
|
|
|
101
|
-
if(tableData?.rowSelection?.type === 'radio') {
|
|
102
|
-
|
|
103
|
-
|
|
125
|
+
if (tableData?.rowSelection?.type === 'radio') {
|
|
126
|
+
setSelectedData((prevData: any) => {
|
|
127
|
+
const newData = tableData?.dataSource?.filter((element) => {
|
|
128
|
+
return selectedRowKeys.includes(element[tableData.rowKeyValue as any]);
|
|
129
|
+
}) || [];
|
|
130
|
+
|
|
131
|
+
if (newData.length < 1) {
|
|
132
|
+
return selectedData;
|
|
133
|
+
}
|
|
134
|
+
if (arrayContainsObject(selectedData, newData[0])) {
|
|
135
|
+
return selectedData;
|
|
136
|
+
}
|
|
137
|
+
const combinedData = [...selectedData, ...newData];
|
|
138
|
+
return combinedData;
|
|
104
139
|
});
|
|
105
|
-
|
|
106
|
-
setSelectedData(filteredArray);
|
|
140
|
+
|
|
107
141
|
return;
|
|
108
142
|
}
|
|
109
143
|
|
|
@@ -111,13 +145,13 @@ export const ModalWithTable = (props: ModalWithTableProps) => {
|
|
|
111
145
|
const newData = tableData?.dataSource?.filter((element) => {
|
|
112
146
|
return selectedRowKeys.includes(element[tableData.rowKeyValue as any]);
|
|
113
147
|
}) || [];
|
|
114
|
-
|
|
148
|
+
|
|
115
149
|
const oldData = prevData.filter((dataItem: any) => {
|
|
116
150
|
return !tableData?.dataSource?.some(
|
|
117
151
|
(element) => element[tableData.rowKeyValue as any] === dataItem[tableData.rowKeyValue as any]
|
|
118
152
|
);
|
|
119
153
|
});
|
|
120
|
-
|
|
154
|
+
|
|
121
155
|
const combinedData = [...oldData, ...newData].filter((dataItem, index, self) => {
|
|
122
156
|
return (
|
|
123
157
|
index ===
|
|
@@ -127,18 +161,18 @@ export const ModalWithTable = (props: ModalWithTableProps) => {
|
|
|
127
161
|
);
|
|
128
162
|
});
|
|
129
163
|
|
|
130
|
-
setInitialValues({...initialValues, selectedData: combinedData});
|
|
164
|
+
setInitialValues({ ...initialValues, selectedData: combinedData });
|
|
131
165
|
return combinedData;
|
|
132
166
|
});
|
|
133
167
|
}, [rowSelectionInfo])
|
|
134
168
|
|
|
135
|
-
useEffect(()=> {
|
|
136
|
-
if(tagsInfo.length > 0) {
|
|
169
|
+
useEffect(() => {
|
|
170
|
+
if (tagsInfo.length > 0) {
|
|
137
171
|
setConfirmLoading(true);
|
|
138
172
|
}
|
|
139
173
|
}, [tagsInfo]);
|
|
140
174
|
|
|
141
|
-
useEffect(()=> {
|
|
175
|
+
useEffect(() => {
|
|
142
176
|
setConfirmLoading(isLoading!);
|
|
143
177
|
}, [isLoading]);
|
|
144
178
|
|
|
@@ -154,7 +188,7 @@ export const ModalWithTable = (props: ModalWithTableProps) => {
|
|
|
154
188
|
<div className={styles.closeButton}>
|
|
155
189
|
<p>{closeText}</p><CloseOutlined />
|
|
156
190
|
</div>
|
|
157
|
-
}
|
|
191
|
+
}
|
|
158
192
|
open={open}
|
|
159
193
|
onOk={hideModal}
|
|
160
194
|
onCancel={hideModal}
|
|
@@ -168,15 +202,15 @@ export const ModalWithTable = (props: ModalWithTableProps) => {
|
|
|
168
202
|
]}
|
|
169
203
|
className={modalClasses}
|
|
170
204
|
>
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
205
|
+
<div className={styles.tagsWrapper}>
|
|
206
|
+
<TagField tagsInfo={setTagsInfo} />
|
|
207
|
+
</div>
|
|
174
208
|
|
|
175
|
-
|
|
176
|
-
|
|
209
|
+
<div className={styles.tableWrapper}>
|
|
210
|
+
{tableData &&
|
|
177
211
|
<Table {...tableData} paginationInfo={setPageInfo} rowSelectionInfo={setRowSelectionInfo} headingTranslationsKey={'tableHeadings'} />
|
|
178
|
-
|
|
179
|
-
|
|
212
|
+
}
|
|
213
|
+
</div>
|
|
180
214
|
|
|
181
215
|
</Modal>
|
|
182
216
|
</>
|