nsc-react-component 2.0.14 → 2.0.17
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/lib/{affix → base/affix}/index.d.ts +0 -0
- package/lib/{affix → base/affix}/index.js +1 -1
- package/lib/{alert → base/alert}/index.d.ts +0 -0
- package/lib/{alert → base/alert}/index.js +1 -1
- package/lib/{anchor → base/anchor}/index.d.ts +0 -0
- package/lib/{anchor → base/anchor}/index.js +1 -1
- package/lib/{avatar → base/avatar}/index.d.ts +0 -0
- package/lib/{avatar → base/avatar}/index.js +1 -1
- package/lib/{backTop → base/backTop}/index.d.ts +0 -0
- package/lib/{backTop → base/backTop}/index.js +1 -1
- package/lib/{badge → base/badge}/index.d.ts +0 -0
- package/lib/{badge → base/badge}/index.js +1 -1
- package/lib/{breadcrumb → base/breadcrumb}/index.d.ts +0 -0
- package/lib/{breadcrumb → base/breadcrumb}/index.js +1 -1
- package/lib/{button → base/button}/index.d.ts +0 -0
- package/lib/{button → base/button}/index.js +2 -2
- package/lib/{button → base/button}/index.less +0 -0
- package/lib/{calendar → base/calendar}/index.d.ts +0 -0
- package/lib/{calendar → base/calendar}/index.js +1 -1
- package/lib/{card → base/card}/index.d.ts +0 -0
- package/lib/{card → base/card}/index.js +1 -1
- package/lib/{carousel → base/carousel}/index.d.ts +0 -0
- package/lib/{carousel → base/carousel}/index.js +1 -1
- package/lib/{cascader → base/cascader}/index.d.ts +0 -0
- package/lib/base/cascader/index.js +268 -0
- package/lib/{chart → base/chart}/index.d.ts +0 -0
- package/lib/base/chart/index.js +353 -0
- package/lib/{checkbox → base/checkbox}/CheckboxGroup.d.ts +0 -0
- package/lib/base/checkbox/CheckboxGroup.js +340 -0
- package/lib/{checkbox → base/checkbox}/index.d.ts +0 -0
- package/lib/{checkbox → base/checkbox}/index.js +1 -1
- package/lib/{collapse → base/collapse}/index.d.ts +0 -0
- package/lib/{collapse → base/collapse}/index.js +1 -1
- package/lib/{comment → base/comment}/index.d.ts +0 -0
- package/lib/{comment → base/comment}/index.js +1 -1
- package/lib/{common → base/common}/BodyRow/index.d.ts +0 -0
- package/lib/{common → base/common}/BodyRow/index.js +1 -1
- package/lib/{common → base/common}/BodyRow/index.less +0 -0
- package/lib/{common → base/common}/Icon.d.ts +0 -0
- package/lib/{common → base/common}/Icon.js +1 -1
- package/lib/{common → base/common}/IconFont.d.ts +0 -0
- package/lib/base/common/IconFont.js +17 -0
- package/lib/{common → base/common}/NoAuthority.d.ts +0 -0
- package/lib/{common → base/common}/NoAuthority.js +1 -1
- package/lib/{common → base/common}/NoData.d.ts +0 -0
- package/lib/{common → base/common}/NoData.js +1 -1
- package/lib/{common → base/common}/NoData.less +0 -0
- package/lib/{common → base/common}/NoMessage.d.ts +0 -0
- package/lib/{common → base/common}/NoMessage.js +1 -1
- package/lib/{common → base/common}/NoNetWork.d.ts +0 -0
- package/lib/{common → base/common}/NoNetWork.js +1 -1
- package/lib/{common → base/common}/Page404.d.ts +0 -0
- package/lib/{common → base/common}/Page404.js +1 -1
- package/lib/{common → base/common}/PageRequest.d.ts +0 -0
- package/lib/{common → base/common}/PageRequest.js +1 -1
- package/lib/{common → base/common}/TreePanel.d.ts +2 -1
- package/lib/base/common/TreePanel.js +290 -0
- package/lib/{common → base/common}/img/NoAuthority.png +0 -0
- package/lib/{common → base/common}/img/NoData.png +0 -0
- package/lib/{common → base/common}/img/NoMessage.png +0 -0
- package/lib/{common → base/common}/img/NoNetWork.png +0 -0
- package/lib/{common → base/common}/img/Page404.png +0 -0
- package/lib/{common → base/common}/withZhLocale.d.ts +0 -0
- package/lib/base/common/withZhLocale.js +20 -0
- package/lib/{configProvider → base/configProvider}/index.d.ts +0 -0
- package/lib/{configProvider → base/configProvider}/index.js +1 -1
- package/lib/{datepick → base/datepick}/Rangepicker.d.ts +0 -0
- package/lib/base/datepick/Rangepicker.js +553 -0
- package/lib/{datepick → base/datepick}/index.d.ts +0 -0
- package/lib/{datepick → base/datepick}/index.js +1 -1
- package/lib/{datepick → base/datepick}/index.less +0 -0
- package/lib/{descriptions → base/descriptions}/index.d.ts +0 -0
- package/lib/{descriptions → base/descriptions}/index.js +1 -1
- package/lib/{divider → base/divider}/index.d.ts +0 -0
- package/lib/{divider → base/divider}/index.js +1 -1
- package/lib/{drawer → base/drawer}/index.d.ts +0 -0
- package/lib/{drawer → base/drawer}/index.js +1 -1
- package/lib/{dropdown → base/dropdown}/index.d.ts +0 -0
- package/lib/{dropdown → base/dropdown}/index.js +1 -1
- package/lib/{form → base/form}/Form.d.ts +0 -0
- package/lib/base/form/Form.js +415 -0
- package/lib/{form → base/form}/filed/Cascader.d.ts +0 -0
- package/lib/{form → base/form}/filed/Cascader.js +1 -1
- package/lib/{form → base/form}/filed/Checkbox.d.ts +0 -0
- package/lib/{form → base/form}/filed/Checkbox.js +1 -1
- package/lib/{form → base/form}/filed/DatePicker.d.ts +0 -0
- package/lib/{form → base/form}/filed/DatePicker.js +1 -1
- package/lib/{form → base/form}/filed/FormItem.d.ts +0 -0
- package/lib/{form → base/form}/filed/FormItem.js +1 -1
- package/lib/{form → base/form}/filed/Input.d.ts +0 -0
- package/lib/{form → base/form}/filed/Input.js +1 -1
- package/lib/{form → base/form}/filed/InputEamil.d.ts +0 -0
- package/lib/{form → base/form}/filed/InputEamil.js +1 -1
- package/lib/{form → base/form}/filed/InputNumber.d.ts +0 -0
- package/lib/{form → base/form}/filed/InputNumber.js +1 -1
- package/lib/{form → base/form}/filed/InputPassword.d.ts +0 -0
- package/lib/{form → base/form}/filed/InputPassword.js +1 -1
- package/lib/{form → base/form}/filed/Item.d.ts +0 -0
- package/lib/base/form/filed/Item.js +161 -0
- package/lib/{form → base/form}/filed/Radio.d.ts +0 -0
- package/lib/{form → base/form}/filed/Radio.js +1 -1
- package/lib/{form → base/form}/filed/RangerPicker.d.ts +0 -0
- package/lib/{form → base/form}/filed/RangerPicker.js +1 -1
- package/lib/{form → base/form}/filed/Rate.d.ts +0 -0
- package/lib/{form → base/form}/filed/Rate.js +1 -1
- package/lib/{form → base/form}/filed/Select.d.ts +0 -0
- package/lib/{form → base/form}/filed/Select.js +1 -1
- package/lib/{form → base/form}/filed/Slider.d.ts +0 -0
- package/lib/{form → base/form}/filed/Slider.js +1 -1
- package/lib/{form → base/form}/filed/Switch.d.ts +0 -0
- package/lib/{form → base/form}/filed/Switch.js +1 -1
- package/lib/{form → base/form}/filed/TagSelect.d.ts +0 -0
- package/lib/{form → base/form}/filed/TagSelect.js +1 -1
- package/lib/{form → base/form}/filed/TextArea.d.ts +0 -0
- package/lib/{form → base/form}/filed/TextArea.js +1 -1
- package/lib/{form → base/form}/filed/Upload.d.ts +0 -0
- package/lib/{form → base/form}/filed/Upload.js +1 -1
- package/lib/{form → base/form}/index.d.ts +0 -0
- package/lib/{form → base/form}/index.js +1 -1
- package/lib/{grid → base/grid}/Col.d.ts +0 -0
- package/lib/{grid → base/grid}/Col.js +1 -1
- package/lib/{grid → base/grid}/Row.d.ts +0 -0
- package/lib/{grid → base/grid}/Row.js +1 -1
- package/lib/{grid → base/grid}/index.d.ts +0 -0
- package/lib/{grid → base/grid}/index.js +0 -0
- package/lib/{image → base/image}/index.d.ts +0 -0
- package/lib/{image → base/image}/index.js +1 -1
- package/lib/{input → base/input}/Email.d.ts +0 -0
- package/lib/{input → base/input}/Email.js +1 -1
- package/lib/{input → base/input}/Number.d.ts +0 -0
- package/lib/{input → base/input}/Number.js +1 -1
- package/lib/{input → base/input}/Password.d.ts +0 -3
- package/lib/{input → base/input}/Password.js +1 -1
- package/lib/{input → base/input}/Search.d.ts +0 -3
- package/lib/{input → base/input}/Search.js +1 -1
- package/lib/{input → base/input}/TextArea.d.ts +0 -3
- package/lib/{input → base/input}/TextArea.js +1 -1
- package/lib/{input → base/input}/index.d.ts +0 -0
- package/lib/base/input/index.js +242 -0
- package/lib/{input → base/input}/index.less +0 -0
- package/lib/{layout → base/layout}/index.d.ts +0 -0
- package/lib/{layout → base/layout}/index.js +1 -1
- package/lib/{list → base/list}/index.d.ts +0 -0
- package/lib/{list → base/list}/index.js +1 -1
- package/lib/{menu → base/menu}/index.d.ts +0 -0
- package/lib/base/menu/index.js +247 -0
- package/lib/{message → base/message}/index.d.ts +0 -0
- package/lib/{message → base/message}/index.js +1 -1
- package/lib/{modal → base/modal}/index.d.ts +0 -0
- package/lib/{modal → base/modal}/index.js +1 -1
- package/lib/{notification → base/notification}/index.d.ts +0 -0
- package/lib/{notification → base/notification}/index.js +1 -1
- package/lib/{pageHeader → base/pageHeader}/index.d.ts +0 -0
- package/lib/{pageHeader → base/pageHeader}/index.js +1 -1
- package/lib/{pagination → base/pagination}/index.d.ts +0 -0
- package/lib/{pagination → base/pagination}/index.js +1 -1
- package/lib/{popconfirm → base/popconfirm}/index.d.ts +0 -0
- package/lib/{popconfirm → base/popconfirm}/index.js +1 -1
- package/lib/{popover → base/popover}/index.d.ts +0 -0
- package/lib/{popover → base/popover}/index.js +1 -1
- package/lib/{progress → base/progress}/index.d.ts +0 -0
- package/lib/{progress → base/progress}/index.js +1 -1
- package/lib/{radio → base/radio}/RadioGroup.d.ts +0 -0
- package/lib/base/radio/RadioGroup.js +378 -0
- package/lib/{radio → base/radio}/index.d.ts +0 -0
- package/lib/{radio → base/radio}/index.js +1 -1
- package/lib/{result → base/result}/index.d.ts +0 -0
- package/lib/{result → base/result}/index.js +1 -1
- package/lib/{select → base/select}/index.d.ts +0 -0
- package/lib/base/select/index.js +529 -0
- package/lib/{select → base/select}/index.less +0 -0
- package/lib/{skeleton → base/skeleton}/index.d.ts +0 -0
- package/lib/{skeleton → base/skeleton}/index.js +1 -1
- package/lib/{space → base/space}/index.d.ts +0 -0
- package/lib/{space → base/space}/index.js +1 -1
- package/lib/{spin → base/spin}/index.d.ts +0 -0
- package/lib/{spin → base/spin}/index.js +1 -1
- package/lib/{statistic → base/statistic}/index.d.ts +0 -0
- package/lib/{statistic → base/statistic}/index.js +1 -1
- package/lib/{steps → base/steps}/index.d.ts +0 -0
- package/lib/{steps → base/steps}/index.js +1 -1
- package/lib/{table → base/table}/index.d.ts +10 -2
- package/lib/base/table/index.js +902 -0
- package/lib/{table → base/table}/index.module.less +22 -0
- package/lib/{table → base/table}/resize.module.less +0 -0
- package/lib/{tabs → base/tabs}/Tabpane.d.ts +0 -0
- package/lib/{tabs → base/tabs}/Tabpane.js +1 -1
- package/lib/{tabs → base/tabs}/index.d.ts +0 -0
- package/lib/{tabs → base/tabs}/index.js +1 -1
- package/lib/{tagSelect → base/tagSelect}/TagSelect.d.ts +0 -0
- package/lib/base/tagSelect/TagSelect.js +268 -0
- package/lib/{tagSelect → base/tagSelect}/index.d.ts +0 -0
- package/lib/base/tagSelect/index.js +188 -0
- package/lib/{tagSelect → base/tagSelect}/index.less +0 -0
- package/lib/{timeline → base/timeline}/index.d.ts +0 -0
- package/lib/{timeline → base/timeline}/index.js +1 -1
- package/lib/{tooltip → base/tooltip}/index.d.ts +0 -0
- package/lib/{tooltip → base/tooltip}/index.js +1 -1
- package/lib/{tree → base/tree}/TreeSearch.d.ts +0 -0
- package/lib/base/tree/TreeSearch.js +273 -0
- package/lib/{tree → base/tree}/index.d.ts +0 -0
- package/lib/base/tree/index.js +307 -0
- package/lib/{tree → base/tree}/index.less +0 -0
- package/lib/{typography → base/typography}/index.d.ts +0 -0
- package/lib/{typography → base/typography}/index.js +1 -1
- package/lib/index.d.ts +63 -63
- package/lib/index.js +63 -63
- package/lib/{pageComponents → page}/BasePage/Form.d.ts +0 -0
- package/lib/page/BasePage/Form.js +244 -0
- package/lib/{pageComponents → page}/BasePage/index.d.ts +2 -3
- package/lib/page/BasePage/index.js +636 -0
- package/lib/{pageComponents → page}/BasePage/index.module.less +0 -0
- package/lib/utils.d.ts +1 -0
- package/lib/utils.js +16 -9
- package/package.json +1 -1
- package/lib/cascader/index.js +0 -268
- package/lib/chart/index.js +0 -353
- package/lib/checkbox/CheckboxGroup.js +0 -338
- package/lib/common/IconFont.js +0 -17
- package/lib/common/TreePanel.js +0 -303
- package/lib/common/withZhLocale.js +0 -20
- package/lib/datepick/Rangepicker.js +0 -553
- package/lib/form/Form.js +0 -415
- package/lib/form/filed/Item.js +0 -161
- package/lib/input/index.js +0 -242
- package/lib/menu/index.js +0 -247
- package/lib/pageComponents/BasePage/Form.js +0 -244
- package/lib/pageComponents/BasePage/index.js +0 -626
- package/lib/radio/RadioGroup.js +0 -376
- package/lib/select/index.js +0 -524
- package/lib/table/index.js +0 -756
- package/lib/tagSelect/TagSelect.js +0 -268
- package/lib/tagSelect/index.js +0 -190
- package/lib/tree/TreeSearch.js +0 -274
- package/lib/tree/index.js +0 -293
|
@@ -0,0 +1,636 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
2
|
+
|
|
3
|
+
var _excluded = ["children", "pageType", "onClick"],
|
|
4
|
+
_excluded2 = ["children", "pageType", "onClick", "Icon"];
|
|
5
|
+
|
|
6
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
7
|
+
|
|
8
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
9
|
+
|
|
10
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
11
|
+
|
|
12
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
13
|
+
|
|
14
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
15
|
+
|
|
16
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
17
|
+
|
|
18
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
19
|
+
|
|
20
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
21
|
+
|
|
22
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
23
|
+
|
|
24
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
+
|
|
26
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
27
|
+
|
|
28
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
29
|
+
|
|
30
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
31
|
+
|
|
32
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
33
|
+
|
|
34
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
35
|
+
|
|
36
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
37
|
+
|
|
38
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
39
|
+
|
|
40
|
+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
41
|
+
|
|
42
|
+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
43
|
+
|
|
44
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
45
|
+
|
|
46
|
+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
47
|
+
|
|
48
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
49
|
+
|
|
50
|
+
import React, { PureComponent } from "react";
|
|
51
|
+
import Table from "../../base/table";
|
|
52
|
+
import Tree from "../../base/tree";
|
|
53
|
+
import Form from "../../base/form";
|
|
54
|
+
import Button from "../../base/button";
|
|
55
|
+
import Modal from "../../base/modal";
|
|
56
|
+
import Popover from "../../base/popover";
|
|
57
|
+
import message from "../../base/message";
|
|
58
|
+
import Icon from "../../base/common/IconFont";
|
|
59
|
+
import { iconType } from "../../constants";
|
|
60
|
+
import EditorForm from "./Form";
|
|
61
|
+
import cls from "classnames";
|
|
62
|
+
import styles from "./index.module.less";
|
|
63
|
+
import { DownOutlined, UpOutlined } from "@ant-design/icons";
|
|
64
|
+
import { getNode } from "../../utils";
|
|
65
|
+
import request from "nsc-request";
|
|
66
|
+
|
|
67
|
+
var BasePage = /*#__PURE__*/function (_PureComponent) {
|
|
68
|
+
_inherits(BasePage, _PureComponent);
|
|
69
|
+
|
|
70
|
+
var _super = _createSuper(BasePage);
|
|
71
|
+
|
|
72
|
+
function BasePage(props) {
|
|
73
|
+
var _this;
|
|
74
|
+
|
|
75
|
+
_classCallCheck(this, BasePage);
|
|
76
|
+
|
|
77
|
+
_this = _super.call(this, props);
|
|
78
|
+
|
|
79
|
+
_defineProperty(_assertThisInitialized(_this), "tableRef", /*#__PURE__*/React.createRef());
|
|
80
|
+
|
|
81
|
+
_defineProperty(_assertThisInitialized(_this), "treeRef", /*#__PURE__*/React.createRef());
|
|
82
|
+
|
|
83
|
+
_defineProperty(_assertThisInitialized(_this), "searchRef", /*#__PURE__*/React.createRef());
|
|
84
|
+
|
|
85
|
+
_defineProperty(_assertThisInitialized(_this), "editorRef", /*#__PURE__*/React.createRef());
|
|
86
|
+
|
|
87
|
+
_defineProperty(_assertThisInitialized(_this), "onSelect", function (checkedTreeKeys) {
|
|
88
|
+
var _this$state = _this.state,
|
|
89
|
+
name = _this$state.name,
|
|
90
|
+
userType = _this$state.userType,
|
|
91
|
+
account = _this$state.account;
|
|
92
|
+
var value = {
|
|
93
|
+
name: name,
|
|
94
|
+
userType: userType,
|
|
95
|
+
account: account,
|
|
96
|
+
deptId: checkedTreeKeys[0]
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
_this.tableLoad(value);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
_this.state = {
|
|
103
|
+
type: "add",
|
|
104
|
+
selectedRowKeys: [],
|
|
105
|
+
treeSelectedKey: "",
|
|
106
|
+
expand: false
|
|
107
|
+
};
|
|
108
|
+
return _this;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
_createClass(BasePage, [{
|
|
112
|
+
key: "componentDidMount",
|
|
113
|
+
value: function componentDidMount() {
|
|
114
|
+
var initData = this.props.initData;
|
|
115
|
+
initData && initData();
|
|
116
|
+
}
|
|
117
|
+
}, {
|
|
118
|
+
key: "showForm",
|
|
119
|
+
value: //显示表单
|
|
120
|
+
function showForm(value) {
|
|
121
|
+
var _this$editorRef$curre;
|
|
122
|
+
|
|
123
|
+
var flag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
124
|
+
(_this$editorRef$curre = this.editorRef.current) === null || _this$editorRef$curre === void 0 ? void 0 : _this$editorRef$curre.show(value, flag);
|
|
125
|
+
} //批量删除
|
|
126
|
+
|
|
127
|
+
}, {
|
|
128
|
+
key: "onDelete",
|
|
129
|
+
value: function onDelete() {
|
|
130
|
+
var _this$props = this.props,
|
|
131
|
+
deleteUrl = _this$props.deleteUrl,
|
|
132
|
+
onDelete = _this$props.onDelete,
|
|
133
|
+
deleteParams = _this$props.deleteParams;
|
|
134
|
+
var selectedRowKeys = this.state.selectedRowKeys;
|
|
135
|
+
|
|
136
|
+
if (selectedRowKeys.length == 0) {
|
|
137
|
+
message.warning("请选择要删除的数据!");
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (onDelete) {
|
|
142
|
+
onDelete && onDelete(selectedRowKeys);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (!deleteUrl) {
|
|
147
|
+
throw new Error("url不能为空!");
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
Modal.confirm({
|
|
151
|
+
title: "是否确认删除所选项?",
|
|
152
|
+
// icon: <Icon type={'icontishi-3'} />,
|
|
153
|
+
okText: "确认",
|
|
154
|
+
cancelText: "取消",
|
|
155
|
+
onOk: function onOk() {
|
|
156
|
+
var defaultParams = {
|
|
157
|
+
method: "post",
|
|
158
|
+
params: {
|
|
159
|
+
ids: selectedRowKeys.join()
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
var requestParams = {};
|
|
163
|
+
|
|
164
|
+
if (defaultParams) {
|
|
165
|
+
requestParams = _objectSpread({}, deleteParams);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
requestParams = _objectSpread({}, defaultParams);
|
|
169
|
+
request(deleteUrl, _objectSpread({}, requestParams)).then(function (res) {
|
|
170
|
+
var code = res.code;
|
|
171
|
+
|
|
172
|
+
if (code === 200) {
|
|
173
|
+
message.success("删除成功!");
|
|
174
|
+
} else {
|
|
175
|
+
message.error("删除失败!");
|
|
176
|
+
}
|
|
177
|
+
}).catch(function (error) {
|
|
178
|
+
console.log("error", error);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}, {
|
|
184
|
+
key: "tableLoad",
|
|
185
|
+
value: function tableLoad(params) {
|
|
186
|
+
var _this$tableRef$curren;
|
|
187
|
+
|
|
188
|
+
(_this$tableRef$curren = this.tableRef.current) === null || _this$tableRef$curren === void 0 ? void 0 : _this$tableRef$curren.store.load({
|
|
189
|
+
params: params
|
|
190
|
+
});
|
|
191
|
+
} //查询
|
|
192
|
+
|
|
193
|
+
}, {
|
|
194
|
+
key: "onSearch",
|
|
195
|
+
value: function onSearch() {
|
|
196
|
+
var _this$searchRef$curre;
|
|
197
|
+
|
|
198
|
+
var onSearch = this.props.onSearch;
|
|
199
|
+
var fromValue = (_this$searchRef$curre = this.searchRef.current) === null || _this$searchRef$curre === void 0 ? void 0 : _this$searchRef$curre.getFieldsValue();
|
|
200
|
+
|
|
201
|
+
if (onSearch) {
|
|
202
|
+
onSearch(fromValue);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
this.tableLoad(fromValue);
|
|
207
|
+
} //表格重新加载
|
|
208
|
+
|
|
209
|
+
}, {
|
|
210
|
+
key: "tableReload",
|
|
211
|
+
value: function tableReload() {
|
|
212
|
+
var _this$tableRef$curren2;
|
|
213
|
+
|
|
214
|
+
(_this$tableRef$curren2 = this.tableRef.current) === null || _this$tableRef$curren2 === void 0 ? void 0 : _this$tableRef$curren2.store.reload();
|
|
215
|
+
}
|
|
216
|
+
}, {
|
|
217
|
+
key: "getSelectedRowKeys",
|
|
218
|
+
value: function getSelectedRowKeys() {
|
|
219
|
+
return this.state.selectedRowKeys;
|
|
220
|
+
}
|
|
221
|
+
}, {
|
|
222
|
+
key: "getSearchValues",
|
|
223
|
+
value: function getSearchValues() {
|
|
224
|
+
var _this$searchRef$curre2;
|
|
225
|
+
|
|
226
|
+
var fromValue = (_this$searchRef$curre2 = this.searchRef.current) === null || _this$searchRef$curre2 === void 0 ? void 0 : _this$searchRef$curre2.getFieldsValue();
|
|
227
|
+
return fromValue;
|
|
228
|
+
}
|
|
229
|
+
}, {
|
|
230
|
+
key: "rowSelectionOnSelect",
|
|
231
|
+
value: function rowSelectionOnSelect(record, selected) {
|
|
232
|
+
var selectedRowKeys = this.state.selectedRowKeys;
|
|
233
|
+
|
|
234
|
+
var newSelectedRowKeys = _toConsumableArray(selectedRowKeys);
|
|
235
|
+
|
|
236
|
+
if (selected) {
|
|
237
|
+
newSelectedRowKeys = [].concat(_toConsumableArray(newSelectedRowKeys), [record.id]);
|
|
238
|
+
} else {
|
|
239
|
+
selectedRowKeys.map(function (item, index) {
|
|
240
|
+
if (item === record.id) {
|
|
241
|
+
newSelectedRowKeys.splice(index, 1);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
this.setState({
|
|
247
|
+
selectedRowKeys: newSelectedRowKeys
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}, {
|
|
251
|
+
key: "rowSelectionOnSelectAll",
|
|
252
|
+
value: function rowSelectionOnSelectAll(selected, selectedRows, changeRows) {
|
|
253
|
+
var selectedRowKeys = this.state.selectedRowKeys;
|
|
254
|
+
var newids = [];
|
|
255
|
+
|
|
256
|
+
if (changeRows.length > 0) {
|
|
257
|
+
var changeIds = changeRows.map(function (item) {
|
|
258
|
+
return item.id;
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
if (selected) {
|
|
262
|
+
newids = [].concat(_toConsumableArray(selectedRowKeys), _toConsumableArray(changeIds));
|
|
263
|
+
} else {
|
|
264
|
+
selectedRowKeys.map(function (item, index) {
|
|
265
|
+
if (changeIds.indexOf(item) == -1) {
|
|
266
|
+
newids.push(item);
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
} else {
|
|
271
|
+
newids = _toConsumableArray(selectedRowKeys);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
this.setState({
|
|
275
|
+
selectedRowKeys: _toConsumableArray(newids)
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}, {
|
|
279
|
+
key: "renderCloumnButton",
|
|
280
|
+
value: function renderCloumnButton(columnButtons, record, actionButton) {
|
|
281
|
+
var _this$props2 = this.props,
|
|
282
|
+
_this$props2$editorFo = _this$props2.editorForm,
|
|
283
|
+
editorForm = _this$props2$editorFo === void 0 ? true : _this$props2$editorFo,
|
|
284
|
+
_this$props2$buttons = _this$props2.buttons,
|
|
285
|
+
buttons = _this$props2$buttons === void 0 ? [] : _this$props2$buttons;
|
|
286
|
+
var content = columnButtons.map(function (item, index) {
|
|
287
|
+
var _item$props = item.props,
|
|
288
|
+
children = _item$props.children,
|
|
289
|
+
pageType = _item$props.pageType,
|
|
290
|
+
_onClick = _item$props.onClick,
|
|
291
|
+
params = _objectWithoutProperties(_item$props, _excluded);
|
|
292
|
+
|
|
293
|
+
if (index > 2) {
|
|
294
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
295
|
+
className: cls(styles["editor"], styles["content-item"]),
|
|
296
|
+
key: index,
|
|
297
|
+
onClick: function onClick() {
|
|
298
|
+
_onClick && _onClick(record);
|
|
299
|
+
}
|
|
300
|
+
}, params), children);
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
return columnButtons.map(function (item, index) {
|
|
304
|
+
var _item$props2 = item.props,
|
|
305
|
+
children = _item$props2.children,
|
|
306
|
+
pageType = _item$props2.pageType,
|
|
307
|
+
_onClick2 = _item$props2.onClick,
|
|
308
|
+
Icon = _item$props2.Icon,
|
|
309
|
+
params = _objectWithoutProperties(_item$props2, _excluded2);
|
|
310
|
+
|
|
311
|
+
if (index == 3) {
|
|
312
|
+
return /*#__PURE__*/React.createElement(Popover, {
|
|
313
|
+
placement: "bottom",
|
|
314
|
+
title: null,
|
|
315
|
+
content: content,
|
|
316
|
+
trigger: ["click", "hover"],
|
|
317
|
+
key: index // overlayClassName={styles['pop']}
|
|
318
|
+
|
|
319
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
320
|
+
className: styles["editor"]
|
|
321
|
+
}, "\u66F4\u591A", /*#__PURE__*/React.createElement("span", {
|
|
322
|
+
className: styles["icon"]
|
|
323
|
+
}, /*#__PURE__*/React.createElement(DownOutlined, null))));
|
|
324
|
+
} else if (index < 3) {
|
|
325
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
326
|
+
className: styles["editor"],
|
|
327
|
+
key: index,
|
|
328
|
+
onClick: function onClick() {
|
|
329
|
+
_onClick2 && _onClick2(record);
|
|
330
|
+
}
|
|
331
|
+
}, params), Icon, " ", children);
|
|
332
|
+
} else {
|
|
333
|
+
return null;
|
|
334
|
+
}
|
|
335
|
+
}); // }
|
|
336
|
+
} //树点击事件
|
|
337
|
+
|
|
338
|
+
}, {
|
|
339
|
+
key: "treeSelect",
|
|
340
|
+
value: function treeSelect(selectedKeys, _ref) {
|
|
341
|
+
var _this$searchRef$curre3;
|
|
342
|
+
|
|
343
|
+
var selected = _ref.selected,
|
|
344
|
+
selectedNodes = _ref.selectedNodes;
|
|
345
|
+
var keyword = "";
|
|
346
|
+
var _this$props$treeProps = this.props.treeProps,
|
|
347
|
+
_this$props$treeProps2 = _this$props$treeProps.searchKey,
|
|
348
|
+
searchKey = _this$props$treeProps2 === void 0 ? "key" : _this$props$treeProps2,
|
|
349
|
+
_this$props$treeProps3 = _this$props$treeProps.searchField,
|
|
350
|
+
searchField = _this$props$treeProps3 === void 0 ? "" : _this$props$treeProps3;
|
|
351
|
+
var treeSelectedKey = this.state.treeSelectedKey;
|
|
352
|
+
|
|
353
|
+
if (selected) {
|
|
354
|
+
if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {
|
|
355
|
+
if (selectedKeys[0] !== treeSelectedKey) {
|
|
356
|
+
// let mapData = this.treeRef.current?.store.getFlattenData();
|
|
357
|
+
keyword = selectedNodes[0].dataref.attribute[searchKey];
|
|
358
|
+
this.setState({
|
|
359
|
+
treeSelectedKey: selectedKeys[0]
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
} else {
|
|
364
|
+
this.setState({
|
|
365
|
+
treeSelectedKey: keyword
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
var fromValue = (_this$searchRef$curre3 = this.searchRef.current) === null || _this$searchRef$curre3 === void 0 ? void 0 : _this$searchRef$curre3.getFieldsValue();
|
|
370
|
+
searchField && this.tableLoad(_objectSpread(_objectSpread({}, fromValue), {}, _defineProperty({}, searchField, keyword)));
|
|
371
|
+
}
|
|
372
|
+
}, {
|
|
373
|
+
key: "resetSearch",
|
|
374
|
+
value: function resetSearch() {
|
|
375
|
+
var _this$searchRef$curre4;
|
|
376
|
+
|
|
377
|
+
(_this$searchRef$curre4 = this.searchRef.current) === null || _this$searchRef$curre4 === void 0 ? void 0 : _this$searchRef$curre4.resetFields();
|
|
378
|
+
}
|
|
379
|
+
}, {
|
|
380
|
+
key: "render",
|
|
381
|
+
value: function render() {
|
|
382
|
+
var _this2 = this;
|
|
383
|
+
|
|
384
|
+
var selectedRowKeys = this.state.selectedRowKeys;
|
|
385
|
+
var _this$props3 = this.props,
|
|
386
|
+
_this$props3$columns = _this$props3.columns,
|
|
387
|
+
columns = _this$props3$columns === void 0 ? [] : _this$props3$columns,
|
|
388
|
+
_this$props3$showSear = _this$props3.showSearch,
|
|
389
|
+
showSearch = _this$props3$showSear === void 0 ? true : _this$props3$showSear,
|
|
390
|
+
children = _this$props3.children,
|
|
391
|
+
_this$props3$submitUr = _this$props3.submitUrl,
|
|
392
|
+
submitUrl = _this$props3$submitUr === void 0 ? "" : _this$props3$submitUr,
|
|
393
|
+
_this$props3$tablePro = _this$props3.tableProps,
|
|
394
|
+
tableProps = _this$props3$tablePro === void 0 ? {} : _this$props3$tablePro,
|
|
395
|
+
_this$props3$treeProp = _this$props3.treeProps,
|
|
396
|
+
treeProps = _this$props3$treeProp === void 0 ? {} : _this$props3$treeProp,
|
|
397
|
+
_this$props3$showLeft = _this$props3.showLeft,
|
|
398
|
+
showLeft = _this$props3$showLeft === void 0 ? false : _this$props3$showLeft,
|
|
399
|
+
_this$props3$submitPa = _this$props3.submitParams,
|
|
400
|
+
submitParams = _this$props3$submitPa === void 0 ? {} : _this$props3$submitPa,
|
|
401
|
+
_this$props3$showTool = _this$props3.showToolButton,
|
|
402
|
+
showToolButton = _this$props3$showTool === void 0 ? true : _this$props3$showTool,
|
|
403
|
+
_this$props3$buttons = _this$props3.buttons,
|
|
404
|
+
buttons = _this$props3$buttons === void 0 ? [] : _this$props3$buttons,
|
|
405
|
+
_this$props3$editorFo = _this$props3.editorForm,
|
|
406
|
+
editorForm = _this$props3$editorFo === void 0 ? true : _this$props3$editorFo;
|
|
407
|
+
var _tableProps$store = tableProps.store,
|
|
408
|
+
store = _tableProps$store === void 0 ? {} : _tableProps$store,
|
|
409
|
+
_tableProps$filterCol = tableProps.filterColumn,
|
|
410
|
+
filterColumn = _tableProps$filterCol === void 0 ? true : _tableProps$filterCol,
|
|
411
|
+
_tableProps$actionBut = tableProps.actionButton,
|
|
412
|
+
actionButton = _tableProps$actionBut === void 0 ? true : _tableProps$actionBut,
|
|
413
|
+
_tableProps$actionCol = tableProps.actionColumn,
|
|
414
|
+
actionColumn = _tableProps$actionCol === void 0 ? true : _tableProps$actionCol,
|
|
415
|
+
_tableProps$showRowSe = tableProps.showRowSelection,
|
|
416
|
+
showRowSelection = _tableProps$showRowSe === void 0 ? true : _tableProps$showRowSe;
|
|
417
|
+
var _treeProps$store = treeProps.store,
|
|
418
|
+
treeStore = _treeProps$store === void 0 ? {} : _treeProps$store,
|
|
419
|
+
_treeProps$showSearch = treeProps.showSearch,
|
|
420
|
+
treeSearch = _treeProps$showSearch === void 0 ? true : _treeProps$showSearch,
|
|
421
|
+
_treeProps$titleAlias = treeProps.titleAlias,
|
|
422
|
+
titleAlias = _treeProps$titleAlias === void 0 ? "title" : _treeProps$titleAlias;
|
|
423
|
+
var tableParams = {
|
|
424
|
+
filterColumn: filterColumn,
|
|
425
|
+
store: store
|
|
426
|
+
};
|
|
427
|
+
|
|
428
|
+
if (showRowSelection) {
|
|
429
|
+
tableParams = _objectSpread(_objectSpread({}, tableParams), {}, {
|
|
430
|
+
rowSelection: {
|
|
431
|
+
selectedRowKeys: selectedRowKeys,
|
|
432
|
+
onSelect: this.rowSelectionOnSelect.bind(this),
|
|
433
|
+
onSelectAll: this.rowSelectionOnSelectAll.bind(this),
|
|
434
|
+
columnWidth: 40
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
var tableColumn = [];
|
|
440
|
+
var searchForms = [];
|
|
441
|
+
var editorForms = [];
|
|
442
|
+
columns.map(function (item) {
|
|
443
|
+
var temp = _objectSpread({}, item);
|
|
444
|
+
|
|
445
|
+
if (temp.search) {
|
|
446
|
+
searchForms.push({
|
|
447
|
+
name: temp.field || temp.dataIndex,
|
|
448
|
+
label: temp.title,
|
|
449
|
+
type: temp.type,
|
|
450
|
+
props: temp.props
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
delete temp.search;
|
|
455
|
+
temp.editor !== false && editorForms.push({
|
|
456
|
+
name: temp.field || temp.dataIndex,
|
|
457
|
+
label: temp.title,
|
|
458
|
+
rules: temp.rules,
|
|
459
|
+
type: temp.type,
|
|
460
|
+
props: temp.props,
|
|
461
|
+
span: temp.span,
|
|
462
|
+
dictName: temp.dictName
|
|
463
|
+
});
|
|
464
|
+
delete temp.rules;
|
|
465
|
+
delete temp.span;
|
|
466
|
+
|
|
467
|
+
if (temp.columnSearch) {
|
|
468
|
+
temp.filterProps = {
|
|
469
|
+
type: temp.type,
|
|
470
|
+
props: temp.props
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
delete temp.type;
|
|
475
|
+
delete temp.props;
|
|
476
|
+
tableColumn.push(temp);
|
|
477
|
+
});
|
|
478
|
+
var selfButtons = [];
|
|
479
|
+
var columnButtons = [];
|
|
480
|
+
|
|
481
|
+
if (actionButton && editorForm == true) {
|
|
482
|
+
if (buttons.indexOf("search") > -1) {
|
|
483
|
+
columnButtons.push( /*#__PURE__*/React.createElement("div", {
|
|
484
|
+
className: styles["editor"],
|
|
485
|
+
onClick: function onClick(record) {
|
|
486
|
+
_this2.showForm(record, false);
|
|
487
|
+
}
|
|
488
|
+
}, "\u67E5\u770B"));
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
if (buttons.indexOf("editor") > -1) {
|
|
492
|
+
columnButtons.push( /*#__PURE__*/React.createElement("div", {
|
|
493
|
+
className: styles["editor"],
|
|
494
|
+
onClick: function onClick(record) {
|
|
495
|
+
_this2.showForm(record, true);
|
|
496
|
+
}
|
|
497
|
+
}, "\u7F16\u8F91"));
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
if (Array.isArray(children)) {
|
|
502
|
+
children.map(function (item) {
|
|
503
|
+
if (item.props.pageType == "toolButton") {
|
|
504
|
+
selfButtons.push(item);
|
|
505
|
+
} else if (item.props.pageType == "cloumnButton") {
|
|
506
|
+
columnButtons.push(item);
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
} else if (children) {
|
|
510
|
+
var props = children.props;
|
|
511
|
+
|
|
512
|
+
if (props.pageType == "toolButton") {
|
|
513
|
+
selfButtons.push(children);
|
|
514
|
+
} else if (props.pageType == "cloumnButton") {
|
|
515
|
+
columnButtons.push(children);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
actionColumn && tableColumn.push({
|
|
520
|
+
title: "操作",
|
|
521
|
+
dataIndex: "action",
|
|
522
|
+
align: "center",
|
|
523
|
+
width: 150,
|
|
524
|
+
render: function render(text, record) {
|
|
525
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
526
|
+
className: styles["action"]
|
|
527
|
+
}, _this2.renderCloumnButton(columnButtons, record, actionButton));
|
|
528
|
+
}
|
|
529
|
+
});
|
|
530
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
531
|
+
className: styles["page"],
|
|
532
|
+
style: {
|
|
533
|
+
display: "flex"
|
|
534
|
+
}
|
|
535
|
+
}, showLeft && /*#__PURE__*/React.createElement("div", {
|
|
536
|
+
className: styles["left"]
|
|
537
|
+
}, /*#__PURE__*/React.createElement(Tree, {
|
|
538
|
+
store: _objectSpread({}, treeStore),
|
|
539
|
+
showIcon: false,
|
|
540
|
+
checkable: false,
|
|
541
|
+
searchable: treeSearch,
|
|
542
|
+
onSelect: this.treeSelect.bind(this),
|
|
543
|
+
selectedKeys: [this.state.treeSelectedKey],
|
|
544
|
+
titleAlias: titleAlias
|
|
545
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
546
|
+
className: styles["right"]
|
|
547
|
+
}, showSearch && /*#__PURE__*/React.createElement("div", {
|
|
548
|
+
className: styles["header"]
|
|
549
|
+
}, /*#__PURE__*/React.createElement(Form, {
|
|
550
|
+
ref: this.searchRef,
|
|
551
|
+
labelCol: {},
|
|
552
|
+
wrapperCol: {},
|
|
553
|
+
layout: "inline"
|
|
554
|
+
}, searchForms.map(function (item, index) {
|
|
555
|
+
if (index > 2 && !_this2.state.expand) {
|
|
556
|
+
return;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
return /*#__PURE__*/React.createElement(Form.Item, {
|
|
560
|
+
label: item.label,
|
|
561
|
+
name: item.name // rules={item.rules}
|
|
562
|
+
,
|
|
563
|
+
key: index
|
|
564
|
+
}, getNode(item.type, _objectSpread(_objectSpread({}, item.props), {}, {
|
|
565
|
+
placeholder: "\u8BF7\u8F93\u5165".concat(item.label)
|
|
566
|
+
})));
|
|
567
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
568
|
+
className: styles["buttons"],
|
|
569
|
+
style: {
|
|
570
|
+
marginTop: 0
|
|
571
|
+
}
|
|
572
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
573
|
+
type: "primary",
|
|
574
|
+
onClick: this.onSearch.bind(this),
|
|
575
|
+
icon: /*#__PURE__*/React.createElement(Icon, {
|
|
576
|
+
type: iconType.search
|
|
577
|
+
})
|
|
578
|
+
}, "\u67E5\u8BE2"), /*#__PURE__*/React.createElement(Button, {
|
|
579
|
+
type: "primary",
|
|
580
|
+
onClick: this.resetSearch.bind(this),
|
|
581
|
+
icon: /*#__PURE__*/React.createElement(Icon, {
|
|
582
|
+
type: iconType.refresh
|
|
583
|
+
})
|
|
584
|
+
}, "\u91CD\u7F6E"), searchForms.length > 3 && /*#__PURE__*/React.createElement("a", {
|
|
585
|
+
className: styles.a_style,
|
|
586
|
+
onClick: function onClick() {
|
|
587
|
+
var expand = _this2.state.expand;
|
|
588
|
+
|
|
589
|
+
_this2.setState({
|
|
590
|
+
expand: !expand
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
}, this.state.expand ? "收起" : "展开", this.state.expand ? /*#__PURE__*/React.createElement(UpOutlined, null) : /*#__PURE__*/React.createElement(DownOutlined, null)))), showToolButton && /*#__PURE__*/React.createElement("div", {
|
|
594
|
+
className: styles["buttons"],
|
|
595
|
+
style: {
|
|
596
|
+
marginLeft: 0
|
|
597
|
+
}
|
|
598
|
+
}, buttons.indexOf("add") > -1 && editorForm == true && /*#__PURE__*/React.createElement(Button, {
|
|
599
|
+
type: "primary",
|
|
600
|
+
onClick: this.showForm.bind(this),
|
|
601
|
+
icon: /*#__PURE__*/React.createElement(Icon, {
|
|
602
|
+
type: iconType.add
|
|
603
|
+
})
|
|
604
|
+
}, "\u6DFB\u52A0"), buttons.indexOf("delete") > -1 && /*#__PURE__*/React.createElement(Button // type={"primary"}
|
|
605
|
+
, {
|
|
606
|
+
onClick: this.onDelete.bind(this),
|
|
607
|
+
icon: /*#__PURE__*/React.createElement(Icon, {
|
|
608
|
+
type: iconType.delete3
|
|
609
|
+
}),
|
|
610
|
+
danger: true
|
|
611
|
+
}, "\u5220\u9664"), selfButtons.map(function (item, index) {
|
|
612
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
613
|
+
key: index
|
|
614
|
+
}, item);
|
|
615
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
616
|
+
className: styles["table"]
|
|
617
|
+
}, /*#__PURE__*/React.createElement(Table, _extends({
|
|
618
|
+
ref: this.tableRef,
|
|
619
|
+
columns: tableColumn
|
|
620
|
+
}, tableParams)))), editorForm && /*#__PURE__*/React.createElement(EditorForm, {
|
|
621
|
+
ref: this.editorRef,
|
|
622
|
+
onCancel: this.showForm.bind(this),
|
|
623
|
+
callBack: this.tableReload.bind(this),
|
|
624
|
+
formProps: editorForms,
|
|
625
|
+
submitUrl: submitUrl,
|
|
626
|
+
submitParams: submitParams,
|
|
627
|
+
onSubmit: this.props.onSubmit
|
|
628
|
+
}));
|
|
629
|
+
}
|
|
630
|
+
}]);
|
|
631
|
+
|
|
632
|
+
return BasePage;
|
|
633
|
+
}(PureComponent);
|
|
634
|
+
|
|
635
|
+
export default BasePage;
|
|
636
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIlRhYmxlIiwiVHJlZSIsIkZvcm0iLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiSWNvbiIsImljb25UeXBlIiwiRWRpdG9yRm9ybSIsImNscyIsInN0eWxlcyIsIkRvd25PdXRsaW5lZCIsIlVwT3V0bGluZWQiLCJnZXROb2RlIiwicmVxdWVzdCIsIkJhc2VQYWdlIiwicHJvcHMiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJzdGF0ZSIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJ2YWx1ZSIsImRlcHRJZCIsInRhYmxlTG9hZCIsInR5cGUiLCJzZWxlY3RlZFJvd0tleXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJpbml0RGF0YSIsImZsYWciLCJlZGl0b3JSZWYiLCJjdXJyZW50Iiwic2hvdyIsImRlbGV0ZVVybCIsIm9uRGVsZXRlIiwiZGVsZXRlUGFyYW1zIiwibGVuZ3RoIiwid2FybmluZyIsIkVycm9yIiwiY29uZmlybSIsInRpdGxlIiwib2tUZXh0IiwiY2FuY2VsVGV4dCIsIm9uT2siLCJkZWZhdWx0UGFyYW1zIiwibWV0aG9kIiwicGFyYW1zIiwiaWRzIiwiam9pbiIsInJlcXVlc3RQYXJhbXMiLCJ0aGVuIiwicmVzIiwiY29kZSIsInN1Y2Nlc3MiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsInRhYmxlUmVmIiwic3RvcmUiLCJsb2FkIiwib25TZWFyY2giLCJmcm9tVmFsdWUiLCJzZWFyY2hSZWYiLCJnZXRGaWVsZHNWYWx1ZSIsInJlbG9hZCIsInJlY29yZCIsInNlbGVjdGVkIiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwiaWQiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJzcGxpY2UiLCJzZXRTdGF0ZSIsInNlbGVjdGVkUm93cyIsImNoYW5nZVJvd3MiLCJuZXdpZHMiLCJjaGFuZ2VJZHMiLCJpbmRleE9mIiwicHVzaCIsImNvbHVtbkJ1dHRvbnMiLCJhY3Rpb25CdXR0b24iLCJlZGl0b3JGb3JtIiwiYnV0dG9ucyIsImNvbnRlbnQiLCJjaGlsZHJlbiIsInBhZ2VUeXBlIiwib25DbGljayIsInNlbGVjdGVkS2V5cyIsInNlbGVjdGVkTm9kZXMiLCJrZXl3b3JkIiwidHJlZVByb3BzIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJpc0xlYWYiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwicmVzZXRGaWVsZHMiLCJjb2x1bW5zIiwic2hvd1NlYXJjaCIsInN1Ym1pdFVybCIsInRhYmxlUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidGFibGVQYXJhbXMiLCJyb3dTZWxlY3Rpb24iLCJvblNlbGVjdCIsInJvd1NlbGVjdGlvbk9uU2VsZWN0IiwiYmluZCIsIm9uU2VsZWN0QWxsIiwicm93U2VsZWN0aW9uT25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRlbXAiLCJzZWFyY2giLCJmaWVsZCIsImRhdGFJbmRleCIsImxhYmVsIiwiZWRpdG9yIiwicnVsZXMiLCJzcGFuIiwiZGljdE5hbWUiLCJjb2x1bW5TZWFyY2giLCJmaWx0ZXJQcm9wcyIsInNlbGZCdXR0b25zIiwic2hvd0Zvcm0iLCJBcnJheSIsImlzQXJyYXkiLCJhbGlnbiIsIndpZHRoIiwicmVuZGVyIiwidGV4dCIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImRpc3BsYXkiLCJ0cmVlU2VsZWN0IiwicGxhY2Vob2xkZXIiLCJtYXJnaW5Ub3AiLCJyZXNldFNlYXJjaCIsInJlZnJlc2giLCJhX3N0eWxl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RyxZQU5oQjtBQU9FLFFBQUEsUUFBUSxFQUFFLEtBQUsxRixLQUFMLENBQVc0STtBQVB2QixRQXpHSixDQURGO0FBc0hEOzs7O0VBbGVvQjlKLGE7O0FBb2V2QixlQUFlaUIsUUFBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vSWNvbkZvbnRcIjtcclxuaW1wb3J0IHsgaWNvblR5cGUgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtIGZyb20gXCIuL0Zvcm1cIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgRG93bk91dGxpbmVkLCBVcE91dGxpbmVkIH0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCB7IEJ1dHRvblByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xyXG4gIGFjdGlvbkNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgYWN0aW9uQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbpu5jorqTmmL7npLrmlrDlop7vvIznvJbovpHpu5jorqTmjInpkq5cclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxufVxyXG5pbnRlcmZhY2UgVHJlZVByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pCc57Si5qGGXHJcbiAgc2VhcmNoS2V5Pzogc3RyaW5nOyAvL+aQnOe0onZhbHVl5a+55bqU55qEa2V5XHJcbiAgc2VhcmNoRmllbGQ/OiBzdHJpbmc7IC8v5p+l6K+i5a+55bqU55qEa2V5XHJcbiAgdGl0bGVBbGlhcz86IHN0cmluZzsgLy/moJF0aXRsZeWvueW6lOeahGtleSzpu5jorqR0aXRsZVxyXG4gIG5vZGVQb3Jwcz86IG9iamVjdDtcclxufVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogYW55O1xyXG4gIGNvbHVtbnM6IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiBhbnk7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogYW55O1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86IEFycmF5PHN0cmluZz47IC8v5oyJ6ZKu6ZuG5ZCIICBbJ2FkZCcsJ2RlbGV0ZScsJ3NlYXJjaCcsJ2VkaXRvciddXHJcbn1cclxuXHJcbmNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxOU0NCYXNlQmFnZVByb3BzLCBhbnk+IHtcclxuICB0YWJsZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgdHJlZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICB0eXBlOiBcImFkZFwiLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICB9O1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgaW5pdERhdGEgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBmbGFnID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2hvdyh2YWx1ZSwgZmxhZyk7XHJcbiAgfVxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoKSB7XHJcbiAgICBjb25zdCB7IGRlbGV0ZVVybCwgb25EZWxldGUsIGRlbGV0ZVBhcmFtcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICBvbkRlbGV0ZSAmJiBvbkRlbGV0ZShzZWxlY3RlZFJvd0tleXMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWRlbGV0ZVVybCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgdGl0bGU6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGljb246IDxJY29uIHR5cGU9eydpY29udGlzaGktMyd9IC8+LFxyXG4gICAgICBva1RleHQ6IFwi56Gu6K6kXCIsXHJcbiAgICAgIGNhbmNlbFRleHQ6IFwi5Y+W5raIXCIsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIHBhcmFtczogeyBpZHM6IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgfSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCByZXF1ZXN0UGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGlmIChkZWZhdWx0UGFyYW1zKSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW1zID0geyAuLi5kZWxldGVQYXJhbXMgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QoZGVsZXRlVXJsLCB7XHJcbiAgICAgICAgICAuLi5yZXF1ZXN0UGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaCgpIHtcclxuICAgIGNvbnN0IHsgb25TZWFyY2ggfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKGZyb21WYWx1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKGZyb21WYWx1ZSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQoKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLnJlbG9hZCgpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZFJvd0tleXM7XHJcbiAgfVxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICByZXR1cm4gZnJvbVZhbHVlO1xyXG4gIH1cclxuICByb3dTZWxlY3Rpb25PblNlbGVjdChyZWNvcmQ6IGFueSwgc2VsZWN0ZWQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLm5ld1NlbGVjdGVkUm93S2V5cywgcmVjb3JkLmlkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtID09PSByZWNvcmQuaWQpIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93S2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBuZXdTZWxlY3RlZFJvd0tleXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3RBbGwoc2VsZWN0ZWQ6IGFueSwgc2VsZWN0ZWRSb3dzOiBhbnksIGNoYW5nZVJvd3M6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgbmV3aWRzOiBhbnkgPSBbXTtcclxuICAgIGlmIChjaGFuZ2VSb3dzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGNoYW5nZUlkcyA9IGNoYW5nZVJvd3MubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uaWQpO1xyXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLCAuLi5jaGFuZ2VJZHNdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNlbGVjdGVkUm93S2V5cy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW0pID09IC0xKSB7XHJcbiAgICAgICAgICAgIG5ld2lkcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdpZHMgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzXTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFsuLi5uZXdpZHNdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSwgYWN0aW9uQnV0dG9uPzogYm9vbGVhbikge1xyXG4gICAgY29uc3QgeyBlZGl0b3JGb3JtID0gdHJ1ZSwgYnV0dG9ucyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKHN0eWxlc1tcImVkaXRvclwiXSwgc3R5bGVzW1wiY29udGVudC1pdGVtXCJdKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBJY29uLCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA9PSAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiLCBcImhvdmVyXCJdfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfT5cclxuICAgICAgICAgICAgICDmm7TlpJpcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1tcImljb25cIl19PlxyXG4gICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChpbmRleCA8IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcImVkaXRvclwiXX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7SWNvbn0ge2NoaWxkcmVufVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9OiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHsgc2VhcmNoS2V5ID0gXCJrZXlcIiwgc2VhcmNoRmllbGQgPSBcIlwiIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgLy8gbGV0IG1hcERhdGEgPSB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUuZ2V0RmxhdHRlbkRhdGEoKTtcclxuICAgICAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICAvLyBzaG93QWRkQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgLy8gc2hvd0RlbGV0ZUJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG5cclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHsgZmlsdGVyQ29sdW1uLCBzdG9yZSB9IGFzIGFueTtcclxuXHJcbiAgICBpZiAoc2hvd1Jvd1NlbGVjdGlvbikge1xyXG4gICAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgICByb3dTZWxlY3Rpb246IHtcclxuICAgICAgICAgIHNlbGVjdGVkUm93S2V5czogc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgb25TZWxlY3Q6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgIG9uU2VsZWN0QWxsOiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjb2x1bW5XaWR0aDogNDAsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29sdW1ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICBpZiAodGVtcC5zZWFyY2gpIHtcclxuICAgICAgICBzZWFyY2hGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNlYXJjaDtcclxuICAgICAgdGVtcC5lZGl0b3IgIT09IGZhbHNlICYmXHJcbiAgICAgICAgZWRpdG9yRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5ydWxlcyxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBkZWxldGUgdGVtcC5wcm9wcztcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgaWYgKGFjdGlvbkJ1dHRvbiAmJiBlZGl0b3JGb3JtID09IHRydWUpIHtcclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcInNlYXJjaFwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcImVkaXRvclwiXX1cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOafpeeci1xyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZWRpdG9yXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wiZWRpdG9yXCJdfVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQsIHRydWUpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDnvJbovpFcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnByb3BzLnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5wcm9wcy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzLnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHMucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgd2lkdGg6IDE1MCxcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wiYWN0aW9uXCJdfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkLCBhY3Rpb25CdXR0b24pfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInBhZ2VcIl19IHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19PlxyXG4gICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wibGVmdFwiXX0+XHJcbiAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJyaWdodFwiXX0+XHJcbiAgICAgICAgICB7c2hvd1NlYXJjaCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJoZWFkZXJcIl19PlxyXG4gICAgICAgICAgICAgIDxGb3JtXHJcbiAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgbGFiZWxDb2w9e3t9fVxyXG4gICAgICAgICAgICAgICAgd3JhcHBlckNvbD17e319XHJcbiAgICAgICAgICAgICAgICBsYXlvdXQ9XCJpbmxpbmVcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtzZWFyY2hGb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAyICYmICF0aGlzLnN0YXRlLmV4cGFuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA8L0Zvcm0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImJ1dHRvbnNcIl19IHN0eWxlPXt7IG1hcmdpblRvcDogMCB9fT5cclxuICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUuc2VhcmNofSAvPn1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAg5p+l6K+iXHJcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucmVzZXRTZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUucmVmcmVzaH0gLz59XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIOmHjee9rlxyXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICB7c2VhcmNoRm9ybXMubGVuZ3RoID4gMyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYV9zdHlsZX1cclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGV4cGFuZCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmQ6ICFleHBhbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kID8gXCLmlLbotbdcIiA6IFwi5bGV5byAXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kID8gPFVwT3V0bGluZWQgLz4gOiA8RG93bk91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7c2hvd1Rvb2xCdXR0b24gJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wiYnV0dG9uc1wiXX0gc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fT5cclxuICAgICAgICAgICAgICB7YnV0dG9ucy5pbmRleE9mKFwiYWRkXCIpID4gLTEgJiYgZWRpdG9yRm9ybSA9PSB0cnVlICYmIChcclxuICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuc2hvd0Zvcm0uYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgaWNvbj17PEljb24gdHlwZT17aWNvblR5cGUuYWRkfSAvPn1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAg5re75YqgXHJcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIHtidXR0b25zLmluZGV4T2YoXCJkZWxldGVcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIGljb249ezxJY29uIHR5cGU9e2ljb25UeXBlLmRlbGV0ZTN9IC8+fVxyXG4gICAgICAgICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIHtzZWxmQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+O1xyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1widGFibGVcIl19PlxyXG4gICAgICAgICAgICA8VGFibGUgcmVmPXt0aGlzLnRhYmxlUmVmfSBjb2x1bW5zPXt0YWJsZUNvbHVtbn0gey4uLnRhYmxlUGFyYW1zfSAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgb25DYW5jZWw9e3RoaXMuc2hvd0Zvcm0uYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgY2FsbEJhY2s9e3RoaXMudGFibGVSZWxvYWQuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl19
|