@omniumretail/component-library 1.0.97 → 1.0.98
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
|
@@ -11047,7 +11047,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
11047
11047
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
11048
11048
|
|
|
11049
11049
|
"use strict";
|
|
11050
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Table\": function() { return /* binding */ Table; },\n/* harmony export */ \"sortBy\": function() { return /* binding */ sortBy; }\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 react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/space/index.js\");\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/dropdown/index.js\");\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/select/index.js\");\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/table/index.js\");\n/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styles.module.scss */ \"./src/components/Table/styles.module.scss\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ \"react-i18next\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _ant_design_icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @ant-design/icons */ \"./node_modules/@ant-design/icons/es/icons/MoreOutlined.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Button */ \"./src/components/Button/index.tsx\");\nvar __assign = (undefined && undefined.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar sortBy;\r\n(function (sortBy) {\r\n sortBy[\"asc\"] = \"asc\";\r\n sortBy[\"desc\"] = \"desc\";\r\n})(sortBy || (sortBy = {}));\r\nvar Table = function (props) {\r\n var _a;\r\n var _b;\r\n var t = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)().t;\r\n var _c = props.dataSource, dataSource = _c === void 0 ? undefined : _c, fieldsToSort = props.fieldsToSort, _d = props.selectPlaceholder, selectPlaceholder = _d === void 0 ? 'Sort By' : _d, onSort = props.onSort, headingTranslationsKey = props.headingTranslationsKey, items = props.actionsArray, rowKeyValue = props.rowKeyValue, hiddenColumns = props.hiddenColumns, rowSelection = props.rowSelection, onSelectAllButtonClick = props.onSelectAllButtonClick, AllItemsShowing = props.AllItemsShowing, selectAllStatus = props.selectAllStatus, isTableDataRefreshed = props.isTableDataRefreshed, tableLoading = props.tableLoading, tableMaxHeight = props.tableMaxHeight, sortByColumns = props.sortByColumns, columnsToSort = props.columnsToSort;\r\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]), customFilters = _e[0], setCustomFilters = _e[1];\r\n var _f = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]), customColumns = _f[0], setCustomColumns = _f[1];\r\n var _g = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]), sortInfo = _g[0], setSortInfo = _g[1];\r\n var _h = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)((rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.selectedRowKeys) || []), selectedRowKeys = _h[0], setselectedRowKeys = _h[1];\r\n var _j = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false), selectedAllRowKeys = _j[0], setSelectedAllRowKeys = _j[1];\r\n var _k = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false), deselectAll = _k[0], setDeselectAll = _k[1];\r\n var onSelectChange = function (newSelectedRowKeys) {\r\n if (rowSelection.type === 'radio') {\r\n setselectedRowKeys(newSelectedRowKeys);\r\n return;\r\n }\r\n setselectedRowKeys(function (prevKeys) {\r\n var dataSourceIds = dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (data) { return data[rowKeyValue]; });\r\n var oldKeys = prevKeys.filter(function (key) {\r\n return !(dataSourceIds === null || dataSourceIds === void 0 ? void 0 : dataSourceIds.includes(key));\r\n });\r\n return __spreadArray(__spreadArray([], oldKeys, true), newSelectedRowKeys, true);\r\n });\r\n setSelectedAllRowKeys(false);\r\n setDeselectAll(false);\r\n };\r\n var handleChange = function (pagination, filters, sorter, extra) {\r\n var getPagination = {\r\n currentPage: pagination.current,\r\n };\r\n var getSortAndPaginationInfo = __assign(__assign({}, sortInfo), getPagination);\r\n props.paginationInfo(getSortAndPaginationInfo);\r\n // SORT \r\n if (sortByColumns) {\r\n var field = sorter.field, order = sorter.order;\r\n var mappedOrder = null;\r\n if (order === \"ascend\") {\r\n mappedOrder = \"asc\";\r\n }\r\n else if (order === \"descend\") {\r\n mappedOrder = \"desc\";\r\n }\r\n if (field && mappedOrder) {\r\n props.columnsSortChange({ field: field, order: mappedOrder });\r\n }\r\n }\r\n };\r\n var setSorter = function (option) {\r\n onSort === null || onSort === void 0 ? void 0 : onSort(option.value.split('-')[0], option.direction);\r\n var sortData = {\r\n sortDirection: option.direction,\r\n sortValue: option.value.split('-')[0],\r\n };\r\n setSortInfo(sortData);\r\n };\r\n var selectAllRows = function () {\r\n if (selectedAllRowKeys) {\r\n setDeselectAll(true);\r\n }\r\n else {\r\n onSelectAllButtonClick === null || onSelectAllButtonClick === void 0 ? void 0 : onSelectAllButtonClick(); // Call the onSelectAllButtonClick callback\r\n }\r\n };\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\r\n if (isTableDataRefreshed && !tableLoading || AllItemsShowing) {\r\n if (selectAllStatus && AllItemsShowing) {\r\n var allRowKeys = dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (record) { return record[rowKeyValue]; });\r\n setselectedRowKeys(allRowKeys);\r\n setSelectedAllRowKeys(true);\r\n }\r\n }\r\n }, [isTableDataRefreshed, tableLoading, selectAllStatus, AllItemsShowing]);\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\r\n if (deselectAll) {\r\n setselectedRowKeys([]);\r\n setDeselectAll(false);\r\n setSelectedAllRowKeys(false);\r\n }\r\n }, [deselectAll]);\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\r\n props.rowSelectionInfo(selectedRowKeys);\r\n }, [selectedRowKeys]);\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\r\n var _a;\r\n if (dataSource && (dataSource === null || dataSource === void 0 ? void 0 : dataSource.length) > 0) {\r\n // Columns\r\n var columns = Object.keys(dataSource === null || dataSource === void 0 ? void 0 : dataSource[0]).map(function (key) {\r\n if (hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.includes(key)) {\r\n return;\r\n }\r\n var isColumnSortable = (columnsToSort === null || columnsToSort === void 0 ? void 0 : columnsToSort.includes(key)) ? sortByColumns : false;\r\n return ({\r\n title: headingTranslationsKey ? t(\"\".concat(headingTranslationsKey, \".\").concat(key)) : key,\r\n dataIndex: key,\r\n key: key,\r\n ellipsis: false,\r\n sorter: isColumnSortable,\r\n });\r\n }).filter(function (el) { return el !== undefined; });\r\n var columnActions = {\r\n key: 'action',\r\n title: headingTranslationsKey ? t(\"\".concat(headingTranslationsKey, \".\").concat('action')) : 'action',\r\n dataIndex: 6,\r\n ellipsis: false,\r\n render: function () {\r\n if (!(items === null || items === void 0 ? void 0 : items[0]))\r\n return null; // Verifica se o array items é nulo\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"], __assign({ size: \"middle\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"], __assign({ menu: { items: items } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ant_design_icons__WEBPACK_IMPORTED_MODULE_8__[\"default\"], { style: { color: 'var(--color-blue)', transform: 'scale(1.6)' } }) }) })) })));\r\n },\r\n };\r\n items && columns.push(columnActions);\r\n setCustomColumns(columns);\r\n // Filters\r\n var dataKeysToFilter = Object.keys(dataSource === null || dataSource === void 0 ? void 0 : dataSource[0]).filter(function (el) { return fieldsToSort === null || fieldsToSort === void 0 ? void 0 : fieldsToSort.includes(el); });\r\n var filters = (_a = []).concat.apply(_a, __spreadArray(__spreadArray([], dataKeysToFilter.map(function (key) { return ({\r\n value: \"\".concat(key, \"-\").concat(sortBy.desc),\r\n label: \"\".concat(headingTranslationsKey ? t(\"\".concat(headingTranslationsKey, \".\").concat(key)) : key, \" (\").concat(sortBy.desc, \")\"),\r\n direction: \"\".concat(sortBy.desc),\r\n }); }), false), dataKeysToFilter.map(function (key) { return ({\r\n value: \"\".concat(key, \"-\").concat(sortBy.asc),\r\n label: \"\".concat(headingTranslationsKey ? t(\"\".concat(headingTranslationsKey, \".\").concat(key)) : key, \" (\").concat(sortBy.asc, \")\"),\r\n direction: \"\".concat(sortBy.asc),\r\n }); }), false));\r\n setCustomFilters(filters);\r\n }\r\n }, [dataSource]);\r\n var shouldRenderSortDropdown = customFilters.length > 0;\r\n var tableWrapperClasses = classnames__WEBPACK_IMPORTED_MODULE_4___default()((_a = {},\r\n _a[_styles_module_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].tableWrapperNoSelection] = !rowSelection,\r\n _a), [_styles_module_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].tableWrapper]);\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", __assign({ className: tableWrapperClasses }, { children: [shouldRenderSortDropdown &&\r\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"], __assign({ style: { marginBottom: 16 } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(antd__WEBPACK_IMPORTED_MODULE_9__[\"default\"], { style: { width: 'auto', minWidth: 200 }, placeholder: selectPlaceholder, onSelect: function (_, option) {\r\n setSorter(option);\r\n }, optionFilterProp: \"children\", filterOption: function (input, option) { var _a; return ((_a = option === null || option === void 0 ? void 0 : option.label) !== null && _a !== void 0 ? _a : '').includes(input); }, filterSort: function (optionA, optionB) { var _a, _b; return ((_a = optionA === null || optionA === void 0 ? void 0 : optionA.label) !== null && _a !== void 0 ? _a : '').toLowerCase().localeCompare(((_b = optionB === null || optionB === void 0 ? void 0 : optionB.label) !== null && _b !== void 0 ? _b : '').toLowerCase()); }, options: customFilters }) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(antd__WEBPACK_IMPORTED_MODULE_10__[\"default\"], __assign({ dataSource: dataSource, onChange: handleChange }, props, { columns: customColumns }, props.rowSelection ? ({\r\n rowSelection: {\r\n selectedRowKeys: selectedRowKeys,\r\n onChange: onSelectChange,\r\n type: (_b = props.rowSelection) === null || _b === void 0 ? void 0 : _b.type,\r\n }\r\n }) : null, { rowKey: rowKeyValue }, (tableMaxHeight ? { scroll: { y: tableMaxHeight } } : {}))), onSelectAllButtonClick &&\r\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Button__WEBPACK_IMPORTED_MODULE_5__.Button, __assign({ onClick: selectAllRows, className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].selectAllRows }, { children: selectedAllRowKeys ? t('components.table.deselectAll') : t('components.table.selectAll') }))] })));\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29tcG9uZW50cy9UYWJsZS9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9saWIvLi9zcmMvY29tcG9uZW50cy9UYWJsZS9pbmRleC50c3g/M2U4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXHJcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn07XHJcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn07XHJcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XHJcbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IFNwYWNlLCBTZWxlY3QsIERyb3Bkb3duIH0gZnJvbSAnYW50ZCc7XHJcbmltcG9ydCB7IFRhYmxlIGFzIEFudGRUYWJsZSB9IGZyb20gJ2FudGQnO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLm1vZHVsZS5zY3NzJztcclxuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcclxuaW1wb3J0IHsgTW9yZU91dGxpbmVkIH0gZnJvbSAnQGFudC1kZXNpZ24vaWNvbnMnO1xyXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcclxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJztcclxuZXhwb3J0IHZhciBzb3J0Qnk7XHJcbihmdW5jdGlvbiAoc29ydEJ5KSB7XHJcbiAgICBzb3J0QnlbXCJhc2NcIl0gPSBcImFzY1wiO1xyXG4gICAgc29ydEJ5W1wiZGVzY1wiXSA9IFwiZGVzY1wiO1xyXG59KShzb3J0QnkgfHwgKHNvcnRCeSA9IHt9KSk7XHJcbmV4cG9ydCB2YXIgVGFibGUgPSBmdW5jdGlvbiAocHJvcHMpIHtcclxuICAgIHZhciBfYTtcclxuICAgIHZhciBfYjtcclxuICAgIHZhciB0ID0gdXNlVHJhbnNsYXRpb24oKS50O1xyXG4gICAgdmFyIF9jID0gcHJvcHMuZGF0YVNvdXJjZSwgZGF0YVNvdXJjZSA9IF9jID09PSB2b2lkIDAgPyB1bmRlZmluZWQgOiBfYywgZmllbGRzVG9Tb3J0ID0gcHJvcHMuZmllbGRzVG9Tb3J0LCBfZCA9IHByb3BzLnNlbGVjdFBsYWNlaG9sZGVyLCBzZWxlY3RQbGFjZWhvbGRlciA9IF9kID09PSB2b2lkIDAgPyAnU29ydCBCeScgOiBfZCwgb25Tb3J0ID0gcHJvcHMub25Tb3J0LCBoZWFkaW5nVHJhbnNsYXRpb25zS2V5ID0gcHJvcHMuaGVhZGluZ1RyYW5zbGF0aW9uc0tleSwgaXRlbXMgPSBwcm9wcy5hY3Rpb25zQXJyYXksIHJvd0tleVZhbHVlID0gcHJvcHMucm93S2V5VmFsdWUsIGhpZGRlbkNvbHVtbnMgPSBwcm9wcy5oaWRkZW5Db2x1bW5zLCByb3dTZWxlY3Rpb24gPSBwcm9wcy5yb3dTZWxlY3Rpb24sIG9uU2VsZWN0QWxsQnV0dG9uQ2xpY2sgPSBwcm9wcy5vblNlbGVjdEFsbEJ1dHRvbkNsaWNrLCBBbGxJdGVtc1Nob3dpbmcgPSBwcm9wcy5BbGxJdGVtc1Nob3dpbmcsIHNlbGVjdEFsbFN0YXR1cyA9IHByb3BzLnNlbGVjdEFsbFN0YXR1cywgaXNUYWJsZURhdGFSZWZyZXNoZWQgPSBwcm9wcy5pc1RhYmxlRGF0YVJlZnJlc2hlZCwgdGFibGVMb2FkaW5nID0gcHJvcHMudGFibGVMb2FkaW5nLCB0YWJsZU1heEhlaWdodCA9IHByb3BzLnRhYmxlTWF4SGVpZ2h0LCBzb3J0QnlDb2x1bW5zID0gcHJvcHMuc29ydEJ5Q29sdW1ucywgY29sdW1uc1RvU29ydCA9IHByb3BzLmNvbHVtbnNUb1NvcnQ7XHJcbiAgICB2YXIgX2UgPSB1c2VTdGF0ZShbXSksIGN1c3RvbUZpbHRlcnMgPSBfZVswXSwgc2V0Q3VzdG9tRmlsdGVycyA9IF9lWzFdO1xyXG4gICAgdmFyIF9mID0gdXNlU3RhdGUoW10pLCBjdXN0b21Db2x1bW5zID0gX2ZbMF0sIHNldEN1c3RvbUNvbHVtbnMgPSBfZlsxXTtcclxuICAgIHZhciBfZyA9IHVzZVN0YXRlKFtdKSwgc29ydEluZm8gPSBfZ1swXSwgc2V0U29ydEluZm8gPSBfZ1sxXTtcclxuICAgIHZhciBfaCA9IHVzZVN0YXRlKChyb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24uc2VsZWN0ZWRSb3dLZXlzKSB8fCBbXSksIHNlbGVjdGVkUm93S2V5cyA9IF9oWzBdLCBzZXRzZWxlY3RlZFJvd0tleXMgPSBfaFsxXTtcclxuICAgIHZhciBfaiA9IHVzZVN0YXRlKGZhbHNlKSwgc2VsZWN0ZWRBbGxSb3dLZXlzID0gX2pbMF0sIHNldFNlbGVjdGVkQWxsUm93S2V5cyA9IF9qWzFdO1xyXG4gICAgdmFyIF9rID0gdXNlU3RhdGUoZmFsc2UpLCBkZXNlbGVjdEFsbCA9IF9rWzBdLCBzZXREZXNlbGVjdEFsbCA9IF9rWzFdO1xyXG4gICAgdmFyIG9uU2VsZWN0Q2hhbmdlID0gZnVuY3Rpb24gKG5ld1NlbGVjdGVkUm93S2V5cykge1xyXG4gICAgICAgIGlmIChyb3dTZWxlY3Rpb24udHlwZSA9PT0gJ3JhZGlvJykge1xyXG4gICAgICAgICAgICBzZXRzZWxlY3RlZFJvd0tleXMobmV3U2VsZWN0ZWRSb3dLZXlzKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRzZWxlY3RlZFJvd0tleXMoZnVuY3Rpb24gKHByZXZLZXlzKSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhU291cmNlSWRzID0gZGF0YVNvdXJjZSA9PT0gbnVsbCB8fCBkYXRhU291cmNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkYXRhU291cmNlLm1hcChmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YVtyb3dLZXlWYWx1ZV07IH0pO1xyXG4gICAgICAgICAgICB2YXIgb2xkS2V5cyA9IHByZXZLZXlzLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gIShkYXRhU291cmNlSWRzID09PSBudWxsIHx8IGRhdGFTb3VyY2VJZHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRhdGFTb3VyY2VJZHMuaW5jbHVkZXMoa2V5KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBvbGRLZXlzLCB0cnVlKSwgbmV3U2VsZWN0ZWRSb3dLZXlzLCB0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBzZXRTZWxlY3RlZEFsbFJvd0tleXMoZmFsc2UpO1xyXG4gICAgICAgIHNldERlc2VsZWN0QWxsKGZhbHNlKTtcclxuICAgIH07XHJcbiAgICB2YXIgaGFuZGxlQ2hhbmdlID0gZnVuY3Rpb24gKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgICAgICB2YXIgZ2V0UGFnaW5hdGlvbiA9IHtcclxuICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHZhciBnZXRTb3J0QW5kUGFnaW5hdGlvbkluZm8gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc29ydEluZm8pLCBnZXRQYWdpbmF0aW9uKTtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uSW5mbyhnZXRTb3J0QW5kUGFnaW5hdGlvbkluZm8pO1xyXG4gICAgICAgIC8vIFNPUlQgXHJcbiAgICAgICAgaWYgKHNvcnRCeUNvbHVtbnMpIHtcclxuICAgICAgICAgICAgdmFyIGZpZWxkID0gc29ydGVyLmZpZWxkLCBvcmRlciA9IHNvcnRlci5vcmRlcjtcclxuICAgICAgICAgICAgdmFyIG1hcHBlZE9yZGVyID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKG9yZGVyID09PSBcImFzY2VuZFwiKSB7XHJcbiAgICAgICAgICAgICAgICBtYXBwZWRPcmRlciA9IFwiYXNjXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob3JkZXIgPT09IFwiZGVzY2VuZFwiKSB7XHJcbiAgICAgICAgICAgICAgICBtYXBwZWRPcmRlciA9IFwiZGVzY1wiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChmaWVsZCAmJiBtYXBwZWRPcmRlcikge1xyXG4gICAgICAgICAgICAgICAgcHJvcHMuY29sdW1uc1NvcnRDaGFuZ2UoeyBmaWVsZDogZmllbGQsIG9yZGVyOiBtYXBwZWRPcmRlciB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB2YXIgc2V0U29ydGVyID0gZnVuY3Rpb24gKG9wdGlvbikge1xyXG4gICAgICAgIG9uU29ydCA9PT0gbnVsbCB8fCBvblNvcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU29ydChvcHRpb24udmFsdWUuc3BsaXQoJy0nKVswXSwgb3B0aW9uLmRpcmVjdGlvbik7XHJcbiAgICAgICAgdmFyIHNvcnREYXRhID0ge1xyXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiBvcHRpb24uZGlyZWN0aW9uLFxyXG4gICAgICAgICAgICBzb3J0VmFsdWU6IG9wdGlvbi52YWx1ZS5zcGxpdCgnLScpWzBdLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgc2V0U29ydEluZm8oc29ydERhdGEpO1xyXG4gICAgfTtcclxuICAgIHZhciBzZWxlY3RBbGxSb3dzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZEFsbFJvd0tleXMpIHtcclxuICAgICAgICAgICAgc2V0RGVzZWxlY3RBbGwodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBvblNlbGVjdEFsbEJ1dHRvbkNsaWNrID09PSBudWxsIHx8IG9uU2VsZWN0QWxsQnV0dG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VsZWN0QWxsQnV0dG9uQ2xpY2soKTsgLy8gQ2FsbCB0aGUgb25TZWxlY3RBbGxCdXR0b25DbGljayBjYWxsYmFja1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChpc1RhYmxlRGF0YVJlZnJlc2hlZCAmJiAhdGFibGVMb2FkaW5nIHx8IEFsbEl0ZW1zU2hvd2luZykge1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0QWxsU3RhdHVzICYmIEFsbEl0ZW1zU2hvd2luZykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGFsbFJvd0tleXMgPSBkYXRhU291cmNlID09PSBudWxsIHx8IGRhdGFTb3VyY2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRhdGFTb3VyY2UubWFwKGZ1bmN0aW9uIChyZWNvcmQpIHsgcmV0dXJuIHJlY29yZFtyb3dLZXlWYWx1ZV07IH0pO1xyXG4gICAgICAgICAgICAgICAgc2V0c2VsZWN0ZWRSb3dLZXlzKGFsbFJvd0tleXMpO1xyXG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRBbGxSb3dLZXlzKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzVGFibGVEYXRhUmVmcmVzaGVkLCB0YWJsZUxvYWRpbmcsIHNlbGVjdEFsbFN0YXR1cywgQWxsSXRlbXNTaG93aW5nXSk7XHJcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChkZXNlbGVjdEFsbCkge1xyXG4gICAgICAgICAgICBzZXRzZWxlY3RlZFJvd0tleXMoW10pO1xyXG4gICAgICAgICAgICBzZXREZXNlbGVjdEFsbChmYWxzZSk7XHJcbiAgICAgICAgICAgIHNldFNlbGVjdGVkQWxsUm93S2V5cyhmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2Rlc2VsZWN0QWxsXSk7XHJcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHByb3BzLnJvd1NlbGVjdGlvbkluZm8oc2VsZWN0ZWRSb3dLZXlzKTtcclxuICAgIH0sIFtzZWxlY3RlZFJvd0tleXNdKTtcclxuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgIGlmIChkYXRhU291cmNlICYmIChkYXRhU291cmNlID09PSBudWxsIHx8IGRhdGFTb3VyY2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRhdGFTb3VyY2UubGVuZ3RoKSA+IDApIHtcclxuICAgICAgICAgICAgLy8gQ29sdW1uc1xyXG4gICAgICAgICAgICB2YXIgY29sdW1ucyA9IE9iamVjdC5rZXlzKGRhdGFTb3VyY2UgPT09IG51bGwgfHwgZGF0YVNvdXJjZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGF0YVNvdXJjZVswXSkubWFwKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChoaWRkZW5Db2x1bW5zID09PSBudWxsIHx8IGhpZGRlbkNvbHVtbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGhpZGRlbkNvbHVtbnMuaW5jbHVkZXMoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBpc0NvbHVtblNvcnRhYmxlID0gKGNvbHVtbnNUb1NvcnQgPT09IG51bGwgfHwgY29sdW1uc1RvU29ydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29sdW1uc1RvU29ydC5pbmNsdWRlcyhrZXkpKSA/IHNvcnRCeUNvbHVtbnMgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBoZWFkaW5nVHJhbnNsYXRpb25zS2V5ID8gdChcIlwiLmNvbmNhdChoZWFkaW5nVHJhbnNsYXRpb25zS2V5LCBcIi5cIikuY29uY2F0KGtleSkpIDoga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFJbmRleDoga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIGVsbGlwc2lzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBzb3J0ZXI6IGlzQ29sdW1uU29ydGFibGUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSkuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwgIT09IHVuZGVmaW5lZDsgfSk7XHJcbiAgICAgICAgICAgIHZhciBjb2x1bW5BY3Rpb25zID0ge1xyXG4gICAgICAgICAgICAgICAga2V5OiAnYWN0aW9uJyxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBoZWFkaW5nVHJhbnNsYXRpb25zS2V5ID8gdChcIlwiLmNvbmNhdChoZWFkaW5nVHJhbnNsYXRpb25zS2V5LCBcIi5cIikuY29uY2F0KCdhY3Rpb24nKSkgOiAnYWN0aW9uJyxcclxuICAgICAgICAgICAgICAgIGRhdGFJbmRleDogNixcclxuICAgICAgICAgICAgICAgIGVsbGlwc2lzOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKGl0ZW1zID09PSBudWxsIHx8IGl0ZW1zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtc1swXSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOyAvLyBWZXJpZmljYSBzZSBvIGFycmF5IGl0ZW1zIMOpIG51bG9cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goU3BhY2UsIF9fYXNzaWduKHsgc2l6ZTogXCJtaWRkbGVcIiB9LCB7IGNoaWxkcmVuOiBfanN4KERyb3Bkb3duLCBfX2Fzc2lnbih7IG1lbnU6IHsgaXRlbXM6IGl0ZW1zIH0gfSwgeyBjaGlsZHJlbjogX2pzeChcImFcIiwgeyBjaGlsZHJlbjogX2pzeChNb3JlT3V0bGluZWQsIHsgc3R5bGU6IHsgY29sb3I6ICd2YXIoLS1jb2xvci1ibHVlKScsIHRyYW5zZm9ybTogJ3NjYWxlKDEuNiknIH0gfSkgfSkgfSkpIH0pKSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpdGVtcyAmJiBjb2x1bW5zLnB1c2goY29sdW1uQWN0aW9ucyk7XHJcbiAgICAgICAgICAgIHNldEN1c3RvbUNvbHVtbnMoY29sdW1ucyk7XHJcbiAgICAgICAgICAgIC8vIEZpbHRlcnNcclxuICAgICAgICAgICAgdmFyIGRhdGFLZXlzVG9GaWx0ZXIgPSBPYmplY3Qua2V5cyhkYXRhU291cmNlID09PSBudWxsIHx8IGRhdGFTb3VyY2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRhdGFTb3VyY2VbMF0pLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGZpZWxkc1RvU29ydCA9PT0gbnVsbCB8fCBmaWVsZHNUb1NvcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpZWxkc1RvU29ydC5pbmNsdWRlcyhlbCk7IH0pO1xyXG4gICAgICAgICAgICB2YXIgZmlsdGVycyA9IChfYSA9IFtdKS5jb25jYXQuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgZGF0YUtleXNUb0ZpbHRlci5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLmNvbmNhdChrZXksIFwiLVwiKS5jb25jYXQoc29ydEJ5LmRlc2MpLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiXCIuY29uY2F0KGhlYWRpbmdUcmFuc2xhdGlvbnNLZXkgPyB0KFwiXCIuY29uY2F0KGhlYWRpbmdUcmFuc2xhdGlvbnNLZXksIFwiLlwiKS5jb25jYXQoa2V5KSkgOiBrZXksIFwiIChcIikuY29uY2F0KHNvcnRCeS5kZXNjLCBcIilcIiksXHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IFwiXCIuY29uY2F0KHNvcnRCeS5kZXNjKSxcclxuICAgICAgICAgICAgfSk7IH0pLCBmYWxzZSksIGRhdGFLZXlzVG9GaWx0ZXIubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICh7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIi5jb25jYXQoa2V5LCBcIi1cIikuY29uY2F0KHNvcnRCeS5hc2MpLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiXCIuY29uY2F0KGhlYWRpbmdUcmFuc2xhdGlvbnNLZXkgPyB0KFwiXCIuY29uY2F0KGhlYWRpbmdUcmFuc2xhdGlvbnNLZXksIFwiLlwiKS5jb25jYXQoa2V5KSkgOiBrZXksIFwiIChcIikuY29uY2F0KHNvcnRCeS5hc2MsIFwiKVwiKSxcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogXCJcIi5jb25jYXQoc29ydEJ5LmFzYyksXHJcbiAgICAgICAgICAgIH0pOyB9KSwgZmFsc2UpKTtcclxuICAgICAgICAgICAgc2V0Q3VzdG9tRmlsdGVycyhmaWx0ZXJzKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbZGF0YVNvdXJjZV0pO1xyXG4gICAgdmFyIHNob3VsZFJlbmRlclNvcnREcm9wZG93biA9IGN1c3RvbUZpbHRlcnMubGVuZ3RoID4gMDtcclxuICAgIHZhciB0YWJsZVdyYXBwZXJDbGFzc2VzID0gY2xhc3NuYW1lcygoX2EgPSB7fSxcclxuICAgICAgICBfYVtzdHlsZXMudGFibGVXcmFwcGVyTm9TZWxlY3Rpb25dID0gIXJvd1NlbGVjdGlvbixcclxuICAgICAgICBfYSksIFtzdHlsZXMudGFibGVXcmFwcGVyXSk7XHJcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIF9fYXNzaWduKHsgY2xhc3NOYW1lOiB0YWJsZVdyYXBwZXJDbGFzc2VzIH0sIHsgY2hpbGRyZW46IFtzaG91bGRSZW5kZXJTb3J0RHJvcGRvd24gJiZcclxuICAgICAgICAgICAgICAgIF9qc3goU3BhY2UsIF9fYXNzaWduKHsgc3R5bGU6IHsgbWFyZ2luQm90dG9tOiAxNiB9IH0sIHsgY2hpbGRyZW46IF9qc3goU2VsZWN0LCB7IHN0eWxlOiB7IHdpZHRoOiAnYXV0bycsIG1pbldpZHRoOiAyMDAgfSwgcGxhY2Vob2xkZXI6IHNlbGVjdFBsYWNlaG9sZGVyLCBvblNlbGVjdDogZnVuY3Rpb24gKF8sIG9wdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U29ydGVyKG9wdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9wdGlvbkZpbHRlclByb3A6IFwiY2hpbGRyZW5cIiwgZmlsdGVyT3B0aW9uOiBmdW5jdGlvbiAoaW5wdXQsIG9wdGlvbikgeyB2YXIgX2E7IHJldHVybiAoKF9hID0gb3B0aW9uID09PSBudWxsIHx8IG9wdGlvbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9uLmxhYmVsKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJykuaW5jbHVkZXMoaW5wdXQpOyB9LCBmaWx0ZXJTb3J0OiBmdW5jdGlvbiAob3B0aW9uQSwgb3B0aW9uQikgeyB2YXIgX2EsIF9iOyByZXR1cm4gKChfYSA9IG9wdGlvbkEgPT09IG51bGwgfHwgb3B0aW9uQSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9uQS5sYWJlbCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZSgoKF9iID0gb3B0aW9uQiA9PT0gbnVsbCB8fCBvcHRpb25CID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25CLmxhYmVsKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJykudG9Mb3dlckNhc2UoKSk7IH0sIG9wdGlvbnM6IGN1c3RvbUZpbHRlcnMgfSkgfSkpLCBfanN4KEFudGRUYWJsZSwgX19hc3NpZ24oeyBkYXRhU291cmNlOiBkYXRhU291cmNlLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlIH0sIHByb3BzLCB7IGNvbHVtbnM6IGN1c3RvbUNvbHVtbnMgfSwgcHJvcHMucm93U2VsZWN0aW9uID8gKHtcclxuICAgICAgICAgICAgICAgIHJvd1NlbGVjdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93S2V5czogc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvblNlbGVjdENoYW5nZSxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAoX2IgPSBwcm9wcy5yb3dTZWxlY3Rpb24pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50eXBlLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSA6IG51bGwsIHsgcm93S2V5OiByb3dLZXlWYWx1ZSB9LCAodGFibGVNYXhIZWlnaHQgPyB7IHNjcm9sbDogeyB5OiB0YWJsZU1heEhlaWdodCB9IH0gOiB7fSkpKSwgb25TZWxlY3RBbGxCdXR0b25DbGljayAmJlxyXG4gICAgICAgICAgICAgICAgX2pzeChCdXR0b24sIF9fYXNzaWduKHsgb25DbGljazogc2VsZWN0QWxsUm93cywgY2xhc3NOYW1lOiBzdHlsZXMuc2VsZWN0QWxsUm93cyB9LCB7IGNoaWxkcmVuOiBzZWxlY3RlZEFsbFJvd0tleXMgPyB0KCdjb21wb25lbnRzLnRhYmxlLmRlc2VsZWN0QWxsJykgOiB0KCdjb21wb25lbnRzLnRhYmxlLnNlbGVjdEFsbCcpIH0pKV0gfSkpKTtcclxufTtcclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/components/Table/index.tsx\n");
|
|
11050
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Table\": function() { return /* binding */ Table; },\n/* harmony export */ \"sortBy\": function() { return /* binding */ sortBy; }\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 react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/space/index.js\");\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/dropdown/index.js\");\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/select/index.js\");\n/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! antd */ \"./node_modules/antd/es/table/index.js\");\n/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styles.module.scss */ \"./src/components/Table/styles.module.scss\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ \"react-i18next\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _ant_design_icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @ant-design/icons */ \"./node_modules/@ant-design/icons/es/icons/MoreOutlined.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../Button */ \"./src/components/Button/index.tsx\");\nvar __assign = (undefined && undefined.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar sortBy;\r\n(function (sortBy) {\r\n sortBy[\"asc\"] = \"asc\";\r\n sortBy[\"desc\"] = \"desc\";\r\n})(sortBy || (sortBy = {}));\r\nvar Table = function (props) {\r\n var _a;\r\n var _b;\r\n var t = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)().t;\r\n var _c = props.dataSource, dataSource = _c === void 0 ? undefined : _c, fieldsToSort = props.fieldsToSort, _d = props.selectPlaceholder, selectPlaceholder = _d === void 0 ? 'Sort By' : _d, onSort = props.onSort, headingTranslationsKey = props.headingTranslationsKey, items = props.actionsArray, rowKeyValue = props.rowKeyValue, hiddenColumns = props.hiddenColumns, rowSelection = props.rowSelection, onSelectAllButtonClick = props.onSelectAllButtonClick, AllItemsShowing = props.AllItemsShowing, selectAllStatus = props.selectAllStatus, isTableDataRefreshed = props.isTableDataRefreshed, tableLoading = props.tableLoading, tableMaxHeight = props.tableMaxHeight, sortByColumns = props.sortByColumns, columnsToSort = props.columnsToSort, fixedColumns = props.fixedColumns;\r\n var _e = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]), customFilters = _e[0], setCustomFilters = _e[1];\r\n var _f = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]), customColumns = _f[0], setCustomColumns = _f[1];\r\n var _g = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]), sortInfo = _g[0], setSortInfo = _g[1];\r\n var _h = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)((rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.selectedRowKeys) || []), selectedRowKeys = _h[0], setselectedRowKeys = _h[1];\r\n var _j = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false), selectedAllRowKeys = _j[0], setSelectedAllRowKeys = _j[1];\r\n var _k = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false), deselectAll = _k[0], setDeselectAll = _k[1];\r\n var onSelectChange = function (newSelectedRowKeys) {\r\n if (rowSelection.type === 'radio') {\r\n setselectedRowKeys(newSelectedRowKeys);\r\n return;\r\n }\r\n setselectedRowKeys(function (prevKeys) {\r\n var dataSourceIds = dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (data) { return data[rowKeyValue]; });\r\n var oldKeys = prevKeys.filter(function (key) {\r\n return !(dataSourceIds === null || dataSourceIds === void 0 ? void 0 : dataSourceIds.includes(key));\r\n });\r\n return __spreadArray(__spreadArray([], oldKeys, true), newSelectedRowKeys, true);\r\n });\r\n setSelectedAllRowKeys(false);\r\n setDeselectAll(false);\r\n };\r\n var handleChange = function (pagination, filters, sorter, extra) {\r\n var getPagination = {\r\n currentPage: pagination.current,\r\n };\r\n var getSortAndPaginationInfo = __assign(__assign({}, sortInfo), getPagination);\r\n props.paginationInfo(getSortAndPaginationInfo);\r\n // SORT \r\n if (sortByColumns) {\r\n var field = sorter.field, order = sorter.order;\r\n var mappedOrder = null;\r\n if (order === \"ascend\") {\r\n mappedOrder = \"asc\";\r\n }\r\n else if (order === \"descend\") {\r\n mappedOrder = \"desc\";\r\n }\r\n if (field && mappedOrder) {\r\n props.columnsSortChange({ field: field, order: mappedOrder });\r\n }\r\n }\r\n };\r\n var setSorter = function (option) {\r\n onSort === null || onSort === void 0 ? void 0 : onSort(option.value.split('-')[0], option.direction);\r\n var sortData = {\r\n sortDirection: option.direction,\r\n sortValue: option.value.split('-')[0],\r\n };\r\n setSortInfo(sortData);\r\n };\r\n var selectAllRows = function () {\r\n if (selectedAllRowKeys) {\r\n setDeselectAll(true);\r\n }\r\n else {\r\n onSelectAllButtonClick === null || onSelectAllButtonClick === void 0 ? void 0 : onSelectAllButtonClick(); // Call the onSelectAllButtonClick callback\r\n }\r\n };\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\r\n if (isTableDataRefreshed && !tableLoading || AllItemsShowing) {\r\n if (selectAllStatus && AllItemsShowing) {\r\n var allRowKeys = dataSource === null || dataSource === void 0 ? void 0 : dataSource.map(function (record) { return record[rowKeyValue]; });\r\n setselectedRowKeys(allRowKeys);\r\n setSelectedAllRowKeys(true);\r\n }\r\n }\r\n }, [isTableDataRefreshed, tableLoading, selectAllStatus, AllItemsShowing]);\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\r\n if (deselectAll) {\r\n setselectedRowKeys([]);\r\n setDeselectAll(false);\r\n setSelectedAllRowKeys(false);\r\n }\r\n }, [deselectAll]);\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\r\n props.rowSelectionInfo(selectedRowKeys);\r\n }, [selectedRowKeys]);\r\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\r\n var _a;\r\n if (dataSource && (dataSource === null || dataSource === void 0 ? void 0 : dataSource.length) > 0) {\r\n // Columns\r\n var columns_1 = Object.keys(dataSource === null || dataSource === void 0 ? void 0 : dataSource[0]).map(function (key) {\r\n if (hiddenColumns === null || hiddenColumns === void 0 ? void 0 : hiddenColumns.includes(key)) {\r\n return;\r\n }\r\n var isColumnSortable = (columnsToSort === null || columnsToSort === void 0 ? void 0 : columnsToSort.includes(key)) ? sortByColumns : false;\r\n var column = {\r\n title: headingTranslationsKey ? t(\"\".concat(headingTranslationsKey, \".\").concat(key)) : key,\r\n dataIndex: key,\r\n key: key,\r\n ellipsis: false,\r\n sorter: isColumnSortable,\r\n // No fixed property here, we'll add it later based on the fixedColumns prop\r\n };\r\n return column;\r\n }).filter(function (el) { return el !== undefined; });\r\n var columnActions = {\r\n key: 'action',\r\n title: headingTranslationsKey ? t(\"\".concat(headingTranslationsKey, \".\").concat('action')) : 'action',\r\n dataIndex: 6,\r\n ellipsis: false,\r\n render: function () {\r\n if (!(items === null || items === void 0 ? void 0 : items[0]))\r\n return null; // Verifica se o array items é nulo\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"], __assign({ size: \"middle\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(antd__WEBPACK_IMPORTED_MODULE_7__[\"default\"], __assign({ menu: { items: items } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ant_design_icons__WEBPACK_IMPORTED_MODULE_8__[\"default\"], { style: { color: 'var(--color-blue)', transform: 'scale(1.6)' } }) }) })) })));\r\n },\r\n };\r\n items && columns_1.push(columnActions);\r\n if (fixedColumns) {\r\n fixedColumns.forEach(function (column) {\r\n var dataIndex = column.dataIndex, side = column.side;\r\n var foundColumn = columns_1.find(function (col) { return col.dataIndex === dataIndex; });\r\n if (foundColumn) {\r\n foundColumn.fixed = side;\r\n }\r\n });\r\n }\r\n setCustomColumns(columns_1);\r\n // Filters\r\n var dataKeysToFilter = Object.keys(dataSource === null || dataSource === void 0 ? void 0 : dataSource[0]).filter(function (el) { return fieldsToSort === null || fieldsToSort === void 0 ? void 0 : fieldsToSort.includes(el); });\r\n var filters = (_a = []).concat.apply(_a, __spreadArray(__spreadArray([], dataKeysToFilter.map(function (key) { return ({\r\n value: \"\".concat(key, \"-\").concat(sortBy.desc),\r\n label: \"\".concat(headingTranslationsKey ? t(\"\".concat(headingTranslationsKey, \".\").concat(key)) : key, \" (\").concat(sortBy.desc, \")\"),\r\n direction: \"\".concat(sortBy.desc),\r\n }); }), false), dataKeysToFilter.map(function (key) { return ({\r\n value: \"\".concat(key, \"-\").concat(sortBy.asc),\r\n label: \"\".concat(headingTranslationsKey ? t(\"\".concat(headingTranslationsKey, \".\").concat(key)) : key, \" (\").concat(sortBy.asc, \")\"),\r\n direction: \"\".concat(sortBy.asc),\r\n }); }), false));\r\n setCustomFilters(filters);\r\n }\r\n }, [dataSource]);\r\n var shouldRenderSortDropdown = customFilters.length > 0;\r\n var tableWrapperClasses = classnames__WEBPACK_IMPORTED_MODULE_4___default()((_a = {},\r\n _a[_styles_module_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].tableWrapperNoSelection] = !rowSelection,\r\n _a), [_styles_module_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].tableWrapper]);\r\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", __assign({ className: tableWrapperClasses }, { children: [shouldRenderSortDropdown &&\r\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(antd__WEBPACK_IMPORTED_MODULE_6__[\"default\"], __assign({ style: { marginBottom: 16 } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(antd__WEBPACK_IMPORTED_MODULE_9__[\"default\"], { style: { width: 'auto', minWidth: 200 }, placeholder: selectPlaceholder, onSelect: function (_, option) {\r\n setSorter(option);\r\n }, optionFilterProp: \"children\", filterOption: function (input, option) { var _a; return ((_a = option === null || option === void 0 ? void 0 : option.label) !== null && _a !== void 0 ? _a : '').includes(input); }, filterSort: function (optionA, optionB) { var _a, _b; return ((_a = optionA === null || optionA === void 0 ? void 0 : optionA.label) !== null && _a !== void 0 ? _a : '').toLowerCase().localeCompare(((_b = optionB === null || optionB === void 0 ? void 0 : optionB.label) !== null && _b !== void 0 ? _b : '').toLowerCase()); }, options: customFilters }) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(antd__WEBPACK_IMPORTED_MODULE_10__[\"default\"], __assign({ dataSource: dataSource, onChange: handleChange }, props, { columns: customColumns }, props.rowSelection ? ({\r\n rowSelection: {\r\n selectedRowKeys: selectedRowKeys,\r\n onChange: onSelectChange,\r\n type: (_b = props.rowSelection) === null || _b === void 0 ? void 0 : _b.type,\r\n }\r\n }) : null, { rowKey: rowKeyValue }, (tableMaxHeight ? { scroll: { y: tableMaxHeight } } : {}))), onSelectAllButtonClick &&\r\n (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Button__WEBPACK_IMPORTED_MODULE_5__.Button, __assign({ onClick: selectAllRows, className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_2__[\"default\"].selectAllRows }, { children: selectedAllRowKeys ? t('components.table.deselectAll') : t('components.table.selectAll') }))] })));\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29tcG9uZW50cy9UYWJsZS9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbGliLy4vc3JjL2NvbXBvbmVudHMvVGFibGUvaW5kZXgudHN4PzNlODgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxyXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59O1xyXG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59O1xyXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xyXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgeyBTcGFjZSwgU2VsZWN0LCBEcm9wZG93biB9IGZyb20gJ2FudGQnO1xyXG5pbXBvcnQgeyBUYWJsZSBhcyBBbnRkVGFibGUgfSBmcm9tICdhbnRkJztcclxuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5tb2R1bGUuc2Nzcyc7XHJcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XHJcbmltcG9ydCB7IE1vcmVPdXRsaW5lZCB9IGZyb20gJ0BhbnQtZGVzaWduL2ljb25zJztcclxuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XHJcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbic7XHJcbmV4cG9ydCB2YXIgc29ydEJ5O1xyXG4oZnVuY3Rpb24gKHNvcnRCeSkge1xyXG4gICAgc29ydEJ5W1wiYXNjXCJdID0gXCJhc2NcIjtcclxuICAgIHNvcnRCeVtcImRlc2NcIl0gPSBcImRlc2NcIjtcclxufSkoc29ydEJ5IHx8IChzb3J0QnkgPSB7fSkpO1xyXG5leHBvcnQgdmFyIFRhYmxlID0gZnVuY3Rpb24gKHByb3BzKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICB2YXIgX2I7XHJcbiAgICB2YXIgdCA9IHVzZVRyYW5zbGF0aW9uKCkudDtcclxuICAgIHZhciBfYyA9IHByb3BzLmRhdGFTb3VyY2UsIGRhdGFTb3VyY2UgPSBfYyA9PT0gdm9pZCAwID8gdW5kZWZpbmVkIDogX2MsIGZpZWxkc1RvU29ydCA9IHByb3BzLmZpZWxkc1RvU29ydCwgX2QgPSBwcm9wcy5zZWxlY3RQbGFjZWhvbGRlciwgc2VsZWN0UGxhY2Vob2xkZXIgPSBfZCA9PT0gdm9pZCAwID8gJ1NvcnQgQnknIDogX2QsIG9uU29ydCA9IHByb3BzLm9uU29ydCwgaGVhZGluZ1RyYW5zbGF0aW9uc0tleSA9IHByb3BzLmhlYWRpbmdUcmFuc2xhdGlvbnNLZXksIGl0ZW1zID0gcHJvcHMuYWN0aW9uc0FycmF5LCByb3dLZXlWYWx1ZSA9IHByb3BzLnJvd0tleVZhbHVlLCBoaWRkZW5Db2x1bW5zID0gcHJvcHMuaGlkZGVuQ29sdW1ucywgcm93U2VsZWN0aW9uID0gcHJvcHMucm93U2VsZWN0aW9uLCBvblNlbGVjdEFsbEJ1dHRvbkNsaWNrID0gcHJvcHMub25TZWxlY3RBbGxCdXR0b25DbGljaywgQWxsSXRlbXNTaG93aW5nID0gcHJvcHMuQWxsSXRlbXNTaG93aW5nLCBzZWxlY3RBbGxTdGF0dXMgPSBwcm9wcy5zZWxlY3RBbGxTdGF0dXMsIGlzVGFibGVEYXRhUmVmcmVzaGVkID0gcHJvcHMuaXNUYWJsZURhdGFSZWZyZXNoZWQsIHRhYmxlTG9hZGluZyA9IHByb3BzLnRhYmxlTG9hZGluZywgdGFibGVNYXhIZWlnaHQgPSBwcm9wcy50YWJsZU1heEhlaWdodCwgc29ydEJ5Q29sdW1ucyA9IHByb3BzLnNvcnRCeUNvbHVtbnMsIGNvbHVtbnNUb1NvcnQgPSBwcm9wcy5jb2x1bW5zVG9Tb3J0LCBmaXhlZENvbHVtbnMgPSBwcm9wcy5maXhlZENvbHVtbnM7XHJcbiAgICB2YXIgX2UgPSB1c2VTdGF0ZShbXSksIGN1c3RvbUZpbHRlcnMgPSBfZVswXSwgc2V0Q3VzdG9tRmlsdGVycyA9IF9lWzFdO1xyXG4gICAgdmFyIF9mID0gdXNlU3RhdGUoW10pLCBjdXN0b21Db2x1bW5zID0gX2ZbMF0sIHNldEN1c3RvbUNvbHVtbnMgPSBfZlsxXTtcclxuICAgIHZhciBfZyA9IHVzZVN0YXRlKFtdKSwgc29ydEluZm8gPSBfZ1swXSwgc2V0U29ydEluZm8gPSBfZ1sxXTtcclxuICAgIHZhciBfaCA9IHVzZVN0YXRlKChyb3dTZWxlY3Rpb24gPT09IG51bGwgfHwgcm93U2VsZWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb3dTZWxlY3Rpb24uc2VsZWN0ZWRSb3dLZXlzKSB8fCBbXSksIHNlbGVjdGVkUm93S2V5cyA9IF9oWzBdLCBzZXRzZWxlY3RlZFJvd0tleXMgPSBfaFsxXTtcclxuICAgIHZhciBfaiA9IHVzZVN0YXRlKGZhbHNlKSwgc2VsZWN0ZWRBbGxSb3dLZXlzID0gX2pbMF0sIHNldFNlbGVjdGVkQWxsUm93S2V5cyA9IF9qWzFdO1xyXG4gICAgdmFyIF9rID0gdXNlU3RhdGUoZmFsc2UpLCBkZXNlbGVjdEFsbCA9IF9rWzBdLCBzZXREZXNlbGVjdEFsbCA9IF9rWzFdO1xyXG4gICAgdmFyIG9uU2VsZWN0Q2hhbmdlID0gZnVuY3Rpb24gKG5ld1NlbGVjdGVkUm93S2V5cykge1xyXG4gICAgICAgIGlmIChyb3dTZWxlY3Rpb24udHlwZSA9PT0gJ3JhZGlvJykge1xyXG4gICAgICAgICAgICBzZXRzZWxlY3RlZFJvd0tleXMobmV3U2VsZWN0ZWRSb3dLZXlzKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRzZWxlY3RlZFJvd0tleXMoZnVuY3Rpb24gKHByZXZLZXlzKSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRhU291cmNlSWRzID0gZGF0YVNvdXJjZSA9PT0gbnVsbCB8fCBkYXRhU291cmNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkYXRhU291cmNlLm1hcChmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YVtyb3dLZXlWYWx1ZV07IH0pO1xyXG4gICAgICAgICAgICB2YXIgb2xkS2V5cyA9IHByZXZLZXlzLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gIShkYXRhU291cmNlSWRzID09PSBudWxsIHx8IGRhdGFTb3VyY2VJZHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRhdGFTb3VyY2VJZHMuaW5jbHVkZXMoa2V5KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBvbGRLZXlzLCB0cnVlKSwgbmV3U2VsZWN0ZWRSb3dLZXlzLCB0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBzZXRTZWxlY3RlZEFsbFJvd0tleXMoZmFsc2UpO1xyXG4gICAgICAgIHNldERlc2VsZWN0QWxsKGZhbHNlKTtcclxuICAgIH07XHJcbiAgICB2YXIgaGFuZGxlQ2hhbmdlID0gZnVuY3Rpb24gKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgICAgICB2YXIgZ2V0UGFnaW5hdGlvbiA9IHtcclxuICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHZhciBnZXRTb3J0QW5kUGFnaW5hdGlvbkluZm8gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc29ydEluZm8pLCBnZXRQYWdpbmF0aW9uKTtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uSW5mbyhnZXRTb3J0QW5kUGFnaW5hdGlvbkluZm8pO1xyXG4gICAgICAgIC8vIFNPUlQgXHJcbiAgICAgICAgaWYgKHNvcnRCeUNvbHVtbnMpIHtcclxuICAgICAgICAgICAgdmFyIGZpZWxkID0gc29ydGVyLmZpZWxkLCBvcmRlciA9IHNvcnRlci5vcmRlcjtcclxuICAgICAgICAgICAgdmFyIG1hcHBlZE9yZGVyID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKG9yZGVyID09PSBcImFzY2VuZFwiKSB7XHJcbiAgICAgICAgICAgICAgICBtYXBwZWRPcmRlciA9IFwiYXNjXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob3JkZXIgPT09IFwiZGVzY2VuZFwiKSB7XHJcbiAgICAgICAgICAgICAgICBtYXBwZWRPcmRlciA9IFwiZGVzY1wiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChmaWVsZCAmJiBtYXBwZWRPcmRlcikge1xyXG4gICAgICAgICAgICAgICAgcHJvcHMuY29sdW1uc1NvcnRDaGFuZ2UoeyBmaWVsZDogZmllbGQsIG9yZGVyOiBtYXBwZWRPcmRlciB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB2YXIgc2V0U29ydGVyID0gZnVuY3Rpb24gKG9wdGlvbikge1xyXG4gICAgICAgIG9uU29ydCA9PT0gbnVsbCB8fCBvblNvcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU29ydChvcHRpb24udmFsdWUuc3BsaXQoJy0nKVswXSwgb3B0aW9uLmRpcmVjdGlvbik7XHJcbiAgICAgICAgdmFyIHNvcnREYXRhID0ge1xyXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiBvcHRpb24uZGlyZWN0aW9uLFxyXG4gICAgICAgICAgICBzb3J0VmFsdWU6IG9wdGlvbi52YWx1ZS5zcGxpdCgnLScpWzBdLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgc2V0U29ydEluZm8oc29ydERhdGEpO1xyXG4gICAgfTtcclxuICAgIHZhciBzZWxlY3RBbGxSb3dzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZEFsbFJvd0tleXMpIHtcclxuICAgICAgICAgICAgc2V0RGVzZWxlY3RBbGwodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBvblNlbGVjdEFsbEJ1dHRvbkNsaWNrID09PSBudWxsIHx8IG9uU2VsZWN0QWxsQnV0dG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VsZWN0QWxsQnV0dG9uQ2xpY2soKTsgLy8gQ2FsbCB0aGUgb25TZWxlY3RBbGxCdXR0b25DbGljayBjYWxsYmFja1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChpc1RhYmxlRGF0YVJlZnJlc2hlZCAmJiAhdGFibGVMb2FkaW5nIHx8IEFsbEl0ZW1zU2hvd2luZykge1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0QWxsU3RhdHVzICYmIEFsbEl0ZW1zU2hvd2luZykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGFsbFJvd0tleXMgPSBkYXRhU291cmNlID09PSBudWxsIHx8IGRhdGFTb3VyY2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRhdGFTb3VyY2UubWFwKGZ1bmN0aW9uIChyZWNvcmQpIHsgcmV0dXJuIHJlY29yZFtyb3dLZXlWYWx1ZV07IH0pO1xyXG4gICAgICAgICAgICAgICAgc2V0c2VsZWN0ZWRSb3dLZXlzKGFsbFJvd0tleXMpO1xyXG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRBbGxSb3dLZXlzKHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2lzVGFibGVEYXRhUmVmcmVzaGVkLCB0YWJsZUxvYWRpbmcsIHNlbGVjdEFsbFN0YXR1cywgQWxsSXRlbXNTaG93aW5nXSk7XHJcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmIChkZXNlbGVjdEFsbCkge1xyXG4gICAgICAgICAgICBzZXRzZWxlY3RlZFJvd0tleXMoW10pO1xyXG4gICAgICAgICAgICBzZXREZXNlbGVjdEFsbChmYWxzZSk7XHJcbiAgICAgICAgICAgIHNldFNlbGVjdGVkQWxsUm93S2V5cyhmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2Rlc2VsZWN0QWxsXSk7XHJcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHByb3BzLnJvd1NlbGVjdGlvbkluZm8oc2VsZWN0ZWRSb3dLZXlzKTtcclxuICAgIH0sIFtzZWxlY3RlZFJvd0tleXNdKTtcclxuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgIGlmIChkYXRhU291cmNlICYmIChkYXRhU291cmNlID09PSBudWxsIHx8IGRhdGFTb3VyY2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRhdGFTb3VyY2UubGVuZ3RoKSA+IDApIHtcclxuICAgICAgICAgICAgLy8gQ29sdW1uc1xyXG4gICAgICAgICAgICB2YXIgY29sdW1uc18xID0gT2JqZWN0LmtleXMoZGF0YVNvdXJjZSA9PT0gbnVsbCB8fCBkYXRhU291cmNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkYXRhU291cmNlWzBdKS5tYXAoZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGhpZGRlbkNvbHVtbnMgPT09IG51bGwgfHwgaGlkZGVuQ29sdW1ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGlkZGVuQ29sdW1ucy5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGlzQ29sdW1uU29ydGFibGUgPSAoY29sdW1uc1RvU29ydCA9PT0gbnVsbCB8fCBjb2x1bW5zVG9Tb3J0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb2x1bW5zVG9Tb3J0LmluY2x1ZGVzKGtleSkpID8gc29ydEJ5Q29sdW1ucyA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNvbHVtbiA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaGVhZGluZ1RyYW5zbGF0aW9uc0tleSA/IHQoXCJcIi5jb25jYXQoaGVhZGluZ1RyYW5zbGF0aW9uc0tleSwgXCIuXCIpLmNvbmNhdChrZXkpKSA6IGtleSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhSW5kZXg6IGtleSxcclxuICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcclxuICAgICAgICAgICAgICAgICAgICBlbGxpcHNpczogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgc29ydGVyOiBpc0NvbHVtblNvcnRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIE5vIGZpeGVkIHByb3BlcnR5IGhlcmUsIHdlJ2xsIGFkZCBpdCBsYXRlciBiYXNlZCBvbiB0aGUgZml4ZWRDb2x1bW5zIHByb3BcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sdW1uO1xyXG4gICAgICAgICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbCAhPT0gdW5kZWZpbmVkOyB9KTtcclxuICAgICAgICAgICAgdmFyIGNvbHVtbkFjdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICBrZXk6ICdhY3Rpb24nLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGhlYWRpbmdUcmFuc2xhdGlvbnNLZXkgPyB0KFwiXCIuY29uY2F0KGhlYWRpbmdUcmFuc2xhdGlvbnNLZXksIFwiLlwiKS5jb25jYXQoJ2FjdGlvbicpKSA6ICdhY3Rpb24nLFxyXG4gICAgICAgICAgICAgICAgZGF0YUluZGV4OiA2LFxyXG4gICAgICAgICAgICAgICAgZWxsaXBzaXM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoaXRlbXMgPT09IG51bGwgfHwgaXRlbXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW1zWzBdKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7IC8vIFZlcmlmaWNhIHNlIG8gYXJyYXkgaXRlbXMgw6kgbnVsb1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChTcGFjZSwgX19hc3NpZ24oeyBzaXplOiBcIm1pZGRsZVwiIH0sIHsgY2hpbGRyZW46IF9qc3goRHJvcGRvd24sIF9fYXNzaWduKHsgbWVudTogeyBpdGVtczogaXRlbXMgfSB9LCB7IGNoaWxkcmVuOiBfanN4KFwiYVwiLCB7IGNoaWxkcmVuOiBfanN4KE1vcmVPdXRsaW5lZCwgeyBzdHlsZTogeyBjb2xvcjogJ3ZhcigtLWNvbG9yLWJsdWUpJywgdHJhbnNmb3JtOiAnc2NhbGUoMS42KScgfSB9KSB9KSB9KSkgfSkpKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGl0ZW1zICYmIGNvbHVtbnNfMS5wdXNoKGNvbHVtbkFjdGlvbnMpO1xyXG4gICAgICAgICAgICBpZiAoZml4ZWRDb2x1bW5zKSB7XHJcbiAgICAgICAgICAgICAgICBmaXhlZENvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGFJbmRleCA9IGNvbHVtbi5kYXRhSW5kZXgsIHNpZGUgPSBjb2x1bW4uc2lkZTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZm91bmRDb2x1bW4gPSBjb2x1bW5zXzEuZmluZChmdW5jdGlvbiAoY29sKSB7IHJldHVybiBjb2wuZGF0YUluZGV4ID09PSBkYXRhSW5kZXg7IH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZENvbHVtbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZENvbHVtbi5maXhlZCA9IHNpZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0Q3VzdG9tQ29sdW1ucyhjb2x1bW5zXzEpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXJzXHJcbiAgICAgICAgICAgIHZhciBkYXRhS2V5c1RvRmlsdGVyID0gT2JqZWN0LmtleXMoZGF0YVNvdXJjZSA9PT0gbnVsbCB8fCBkYXRhU291cmNlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkYXRhU291cmNlWzBdKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBmaWVsZHNUb1NvcnQgPT09IG51bGwgfHwgZmllbGRzVG9Tb3J0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmaWVsZHNUb1NvcnQuaW5jbHVkZXMoZWwpOyB9KTtcclxuICAgICAgICAgICAgdmFyIGZpbHRlcnMgPSAoX2EgPSBbXSkuY29uY2F0LmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIGRhdGFLZXlzVG9GaWx0ZXIubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICh7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIi5jb25jYXQoa2V5LCBcIi1cIikuY29uY2F0KHNvcnRCeS5kZXNjKSxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlwiLmNvbmNhdChoZWFkaW5nVHJhbnNsYXRpb25zS2V5ID8gdChcIlwiLmNvbmNhdChoZWFkaW5nVHJhbnNsYXRpb25zS2V5LCBcIi5cIikuY29uY2F0KGtleSkpIDoga2V5LCBcIiAoXCIpLmNvbmNhdChzb3J0QnkuZGVzYywgXCIpXCIpLFxyXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBcIlwiLmNvbmNhdChzb3J0QnkuZGVzYyksXHJcbiAgICAgICAgICAgIH0pOyB9KSwgZmFsc2UpLCBkYXRhS2V5c1RvRmlsdGVyLm1hcChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAoe1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIuY29uY2F0KGtleSwgXCItXCIpLmNvbmNhdChzb3J0QnkuYXNjKSxcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlwiLmNvbmNhdChoZWFkaW5nVHJhbnNsYXRpb25zS2V5ID8gdChcIlwiLmNvbmNhdChoZWFkaW5nVHJhbnNsYXRpb25zS2V5LCBcIi5cIikuY29uY2F0KGtleSkpIDoga2V5LCBcIiAoXCIpLmNvbmNhdChzb3J0QnkuYXNjLCBcIilcIiksXHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IFwiXCIuY29uY2F0KHNvcnRCeS5hc2MpLFxyXG4gICAgICAgICAgICB9KTsgfSksIGZhbHNlKSk7XHJcbiAgICAgICAgICAgIHNldEN1c3RvbUZpbHRlcnMoZmlsdGVycyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2RhdGFTb3VyY2VdKTtcclxuICAgIHZhciBzaG91bGRSZW5kZXJTb3J0RHJvcGRvd24gPSBjdXN0b21GaWx0ZXJzLmxlbmd0aCA+IDA7XHJcbiAgICB2YXIgdGFibGVXcmFwcGVyQ2xhc3NlcyA9IGNsYXNzbmFtZXMoKF9hID0ge30sXHJcbiAgICAgICAgX2Fbc3R5bGVzLnRhYmxlV3JhcHBlck5vU2VsZWN0aW9uXSA9ICFyb3dTZWxlY3Rpb24sXHJcbiAgICAgICAgX2EpLCBbc3R5bGVzLnRhYmxlV3JhcHBlcl0pO1xyXG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCBfX2Fzc2lnbih7IGNsYXNzTmFtZTogdGFibGVXcmFwcGVyQ2xhc3NlcyB9LCB7IGNoaWxkcmVuOiBbc2hvdWxkUmVuZGVyU29ydERyb3Bkb3duICYmXHJcbiAgICAgICAgICAgICAgICBfanN4KFNwYWNlLCBfX2Fzc2lnbih7IHN0eWxlOiB7IG1hcmdpbkJvdHRvbTogMTYgfSB9LCB7IGNoaWxkcmVuOiBfanN4KFNlbGVjdCwgeyBzdHlsZTogeyB3aWR0aDogJ2F1dG8nLCBtaW5XaWR0aDogMjAwIH0sIHBsYWNlaG9sZGVyOiBzZWxlY3RQbGFjZWhvbGRlciwgb25TZWxlY3Q6IGZ1bmN0aW9uIChfLCBvcHRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNvcnRlcihvcHRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBvcHRpb25GaWx0ZXJQcm9wOiBcImNoaWxkcmVuXCIsIGZpbHRlck9wdGlvbjogZnVuY3Rpb24gKGlucHV0LCBvcHRpb24pIHsgdmFyIF9hOyByZXR1cm4gKChfYSA9IG9wdGlvbiA9PT0gbnVsbCB8fCBvcHRpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbi5sYWJlbCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycpLmluY2x1ZGVzKGlucHV0KTsgfSwgZmlsdGVyU29ydDogZnVuY3Rpb24gKG9wdGlvbkEsIG9wdGlvbkIpIHsgdmFyIF9hLCBfYjsgcmV0dXJuICgoX2EgPSBvcHRpb25BID09PSBudWxsIHx8IG9wdGlvbkEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbkEubGFiZWwpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnKS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoKChfYiA9IG9wdGlvbkIgPT09IG51bGwgfHwgb3B0aW9uQiA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9uQi5sYWJlbCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogJycpLnRvTG93ZXJDYXNlKCkpOyB9LCBvcHRpb25zOiBjdXN0b21GaWx0ZXJzIH0pIH0pKSwgX2pzeChBbnRkVGFibGUsIF9fYXNzaWduKHsgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSwgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSB9LCBwcm9wcywgeyBjb2x1bW5zOiBjdXN0b21Db2x1bW5zIH0sIHByb3BzLnJvd1NlbGVjdGlvbiA/ICh7XHJcbiAgICAgICAgICAgICAgICByb3dTZWxlY3Rpb246IHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHNlbGVjdGVkUm93S2V5cyxcclxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25TZWxlY3RDaGFuZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogKF9iID0gcHJvcHMucm93U2VsZWN0aW9uKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudHlwZSxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkgOiBudWxsLCB7IHJvd0tleTogcm93S2V5VmFsdWUgfSwgKHRhYmxlTWF4SGVpZ2h0ID8geyBzY3JvbGw6IHsgeTogdGFibGVNYXhIZWlnaHQgfSB9IDoge30pKSksIG9uU2VsZWN0QWxsQnV0dG9uQ2xpY2sgJiZcclxuICAgICAgICAgICAgICAgIF9qc3goQnV0dG9uLCBfX2Fzc2lnbih7IG9uQ2xpY2s6IHNlbGVjdEFsbFJvd3MsIGNsYXNzTmFtZTogc3R5bGVzLnNlbGVjdEFsbFJvd3MgfSwgeyBjaGlsZHJlbjogc2VsZWN0ZWRBbGxSb3dLZXlzID8gdCgnY29tcG9uZW50cy50YWJsZS5kZXNlbGVjdEFsbCcpIDogdCgnY29tcG9uZW50cy50YWJsZS5zZWxlY3RBbGwnKSB9KSldIH0pKSk7XHJcbn07XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/components/Table/index.tsx\n");
|
|
11051
11051
|
|
|
11052
11052
|
/***/ }),
|
|
11053
11053
|
|
|
@@ -33,5 +33,9 @@ export interface TableCustomProps extends TableProps<any> {
|
|
|
33
33
|
columnsSortChange?: any;
|
|
34
34
|
sortByColumns?: boolean;
|
|
35
35
|
columnsToSort?: string[];
|
|
36
|
+
fixedColumns?: {
|
|
37
|
+
dataIndex: string;
|
|
38
|
+
side: 'left' | 'right';
|
|
39
|
+
}[];
|
|
36
40
|
}
|
|
37
41
|
export declare const Table: (props: TableCustomProps) => JSX.Element;
|
package/package.json
CHANGED
|
@@ -20,7 +20,10 @@ const Template: Story<TableCustomProps> = (args) => {
|
|
|
20
20
|
// For example, trigger an API call
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
return <Table
|
|
23
|
+
return <Table scroll={{y: 1000, x: 3000}} fixedColumns={[
|
|
24
|
+
{ dataIndex: 'name', side: 'left' },
|
|
25
|
+
{ dataIndex: 'mecanographicNumber', side: 'left' },
|
|
26
|
+
]} columnsSortChange={handleSortByColumnChange} paginationInfo={setPageInfo} headingTranslationsKey={'tableHeadings'} rowSelectionInfo={setRowSelectionInfo} actionsArray={
|
|
24
27
|
[
|
|
25
28
|
{ key: '1', label: `${t('actions.one')}`, onClick: () => {
|
|
26
29
|
console.log('onClick');
|
|
@@ -45,6 +45,7 @@ export interface TableCustomProps extends TableProps<any> {
|
|
|
45
45
|
columnsSortChange?: any;
|
|
46
46
|
sortByColumns?: boolean;
|
|
47
47
|
columnsToSort?: string[];
|
|
48
|
+
fixedColumns?: { dataIndex: string; side: 'left' | 'right' }[];
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
export const Table = (props: TableCustomProps) => {
|
|
@@ -67,7 +68,8 @@ export const Table = (props: TableCustomProps) => {
|
|
|
67
68
|
tableLoading,
|
|
68
69
|
tableMaxHeight,
|
|
69
70
|
sortByColumns,
|
|
70
|
-
columnsToSort
|
|
71
|
+
columnsToSort,
|
|
72
|
+
fixedColumns
|
|
71
73
|
} = props;
|
|
72
74
|
|
|
73
75
|
const [customFilters, setCustomFilters] = useState<any>([]);
|
|
@@ -107,16 +109,16 @@ export const Table = (props: TableCustomProps) => {
|
|
|
107
109
|
props.paginationInfo(getSortAndPaginationInfo);
|
|
108
110
|
|
|
109
111
|
// SORT
|
|
110
|
-
if(sortByColumns) {
|
|
112
|
+
if (sortByColumns) {
|
|
111
113
|
const { field, order } = sorter;
|
|
112
114
|
let mappedOrder = null;
|
|
113
|
-
if(order === "ascend") {
|
|
115
|
+
if (order === "ascend") {
|
|
114
116
|
mappedOrder = "asc";
|
|
115
|
-
} else if(order === "descend") {
|
|
117
|
+
} else if (order === "descend") {
|
|
116
118
|
mappedOrder = "desc";
|
|
117
119
|
}
|
|
118
|
-
|
|
119
|
-
if(field && mappedOrder) {
|
|
120
|
+
|
|
121
|
+
if (field && mappedOrder) {
|
|
120
122
|
props.columnsSortChange({ field, order: mappedOrder });
|
|
121
123
|
}
|
|
122
124
|
}
|
|
@@ -172,13 +174,17 @@ export const Table = (props: TableCustomProps) => {
|
|
|
172
174
|
|
|
173
175
|
const isColumnSortable = columnsToSort?.includes(key) ? sortByColumns : false;
|
|
174
176
|
|
|
175
|
-
|
|
177
|
+
const column = {
|
|
176
178
|
title: headingTranslationsKey ? t(`${headingTranslationsKey}.${key}`) : key,
|
|
177
179
|
dataIndex: key,
|
|
178
180
|
key: key,
|
|
179
181
|
ellipsis: false,
|
|
180
182
|
sorter: isColumnSortable,
|
|
181
|
-
|
|
183
|
+
// No fixed property here, we'll add it later based on the fixedColumns prop
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
return column;
|
|
187
|
+
|
|
182
188
|
}).filter(el => el !== undefined) as any;
|
|
183
189
|
|
|
184
190
|
let columnActions = {
|
|
@@ -188,21 +194,31 @@ export const Table = (props: TableCustomProps) => {
|
|
|
188
194
|
ellipsis: false,
|
|
189
195
|
render: () => {
|
|
190
196
|
if (!items?.[0]) return null; // Verifica se o array items é nulo
|
|
191
|
-
|
|
197
|
+
|
|
192
198
|
return (
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
199
|
+
<Space size="middle">
|
|
200
|
+
<Dropdown menu={{ items }}>
|
|
201
|
+
<a>
|
|
202
|
+
<MoreOutlined style={{ color: 'var(--color-blue)', transform: 'scale(1.6)' }} />
|
|
203
|
+
</a>
|
|
204
|
+
</Dropdown>
|
|
205
|
+
</Space>
|
|
200
206
|
);
|
|
201
|
-
|
|
207
|
+
},
|
|
202
208
|
};
|
|
203
209
|
|
|
204
210
|
items && columns.push(columnActions as any);
|
|
205
211
|
|
|
212
|
+
if (fixedColumns) {
|
|
213
|
+
fixedColumns.forEach((column) => {
|
|
214
|
+
const { dataIndex, side } = column;
|
|
215
|
+
const foundColumn = columns.find((col: any) => col.dataIndex === dataIndex);
|
|
216
|
+
if (foundColumn) {
|
|
217
|
+
foundColumn.fixed = side;
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
206
222
|
setCustomColumns(columns);
|
|
207
223
|
|
|
208
224
|
// Filters
|