@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omniumretail/component-library",
3
- "version": "1.0.54",
3
+ "version": "1.0.55",
4
4
  "private": false,
5
5
  "main": "dist/bundle.js",
6
6
  "typings": "./dist/types/index",
@@ -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
- pageInfo: pageInfo,
59
- rowSelectionInfo: rowSelectionInfo,
60
- tagsInfo: tagsInfo,
61
- selectedData: selectedData,
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
- const filteredArray = tableData?.dataSource?.filter((element) => {
103
- return selectedRowKeys.includes(element[tableData.rowKeyValue as any]);
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
- <div className={styles.tagsWrapper}>
172
- <TagField tagsInfo={setTagsInfo}/>
173
- </div>
205
+ <div className={styles.tagsWrapper}>
206
+ <TagField tagsInfo={setTagsInfo} />
207
+ </div>
174
208
 
175
- <div className={styles.tableWrapper}>
176
- { tableData &&
209
+ <div className={styles.tableWrapper}>
210
+ {tableData &&
177
211
  <Table {...tableData} paginationInfo={setPageInfo} rowSelectionInfo={setRowSelectionInfo} headingTranslationsKey={'tableHeadings'} />
178
- }
179
- </div>
212
+ }
213
+ </div>
180
214
 
181
215
  </Modal>
182
216
  </>