nsc-react-component 2.14.30 → 2.15.2
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/base/chart/index.js +1 -2
- package/lib/base/chart/index.js.map +1 -1
- package/lib/base/slidermenu/index.js +4 -1
- package/lib/base/slidermenu/index.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/page/BasePage/Form--back.js +328 -0
- package/lib/page/BasePage/Form--back.js.map +1 -0
- package/lib/page/BasePage/index.js +5 -5
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/FormPage/index.d.ts +48 -0
- package/lib/page/FormPage/index.js +488 -0
- package/lib/page/FormPage/index.js.map +1 -0
- package/lib/page/FormPage/index.module.less +42 -0
- package/package.json +1 -1
- package/lib/page/BasePage/Form.js +0 -328
- package/lib/page/BasePage/Form.js.map +0 -1
- /package/lib/page/BasePage/{Form.d.ts → Form--back.d.ts} +0 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
const _excluded = ["data"];
|
|
2
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
3
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
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; }
|
|
6
|
+
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; }
|
|
7
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
9
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
10
|
+
import React, { PureComponent } from "react";
|
|
11
|
+
import Form from "../../base/form";
|
|
12
|
+
import { getLess, getNode } from "../../utils";
|
|
13
|
+
import message from "../../base/message";
|
|
14
|
+
import Col from "../../base/grid/Col";
|
|
15
|
+
import Row from "../../base/grid/Row";
|
|
16
|
+
import { isEmptyObj } from "@bj-nsc/functions";
|
|
17
|
+
import moment from "moment";
|
|
18
|
+
import styles from "./index.module.less";
|
|
19
|
+
import lodash from "lodash";
|
|
20
|
+
import Button from "../../base/button";
|
|
21
|
+
import Upload from '../../base/upload';
|
|
22
|
+
class EditorForm extends PureComponent {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
_defineProperty(this, "formRef", /*#__PURE__*/React.createRef());
|
|
26
|
+
_defineProperty(this, "state", {
|
|
27
|
+
loading: false,
|
|
28
|
+
label: "",
|
|
29
|
+
editorFlag: true,
|
|
30
|
+
value: {},
|
|
31
|
+
dictNames: {},
|
|
32
|
+
fileList: {}
|
|
33
|
+
});
|
|
34
|
+
_defineProperty(this, "valid", []);
|
|
35
|
+
_defineProperty(this, "dateValueFormat", {});
|
|
36
|
+
_defineProperty(this, "dateFormat", {});
|
|
37
|
+
}
|
|
38
|
+
//表单显示
|
|
39
|
+
show(orgValue) {
|
|
40
|
+
let editorflag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "add";
|
|
41
|
+
let label = "新增";
|
|
42
|
+
if (orgValue && editorflag == "editor") {
|
|
43
|
+
label = "编辑";
|
|
44
|
+
} else if (orgValue && editorflag == "detail") {
|
|
45
|
+
label = "查看";
|
|
46
|
+
}
|
|
47
|
+
if (orgValue) {
|
|
48
|
+
this.setState({
|
|
49
|
+
label: label,
|
|
50
|
+
value: orgValue
|
|
51
|
+
}, () => {
|
|
52
|
+
var _this$formRef$current;
|
|
53
|
+
let value = lodash.cloneDeep(orgValue);
|
|
54
|
+
if (!isEmptyObj(this.dateFormat)) {
|
|
55
|
+
for (let key in this.dateFormat) {
|
|
56
|
+
let olddata = value[key];
|
|
57
|
+
if (Array.isArray(olddata)) {
|
|
58
|
+
value[key] = [moment(olddata[0], this.dateFormat[key]), moment(olddata[1], this.dateFormat[key])];
|
|
59
|
+
} else {
|
|
60
|
+
value[key] = moment(olddata, this.dateFormat[key]);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
(_this$formRef$current = this.formRef.current) === null || _this$formRef$current === void 0 || _this$formRef$current.showForm(value);
|
|
65
|
+
});
|
|
66
|
+
} else {
|
|
67
|
+
this.setState({
|
|
68
|
+
label: label
|
|
69
|
+
}, () => {
|
|
70
|
+
var _this$formRef$current2;
|
|
71
|
+
(_this$formRef$current2 = this.formRef.current) === null || _this$formRef$current2 === void 0 || _this$formRef$current2.showForm(this.props.defaultValue);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
hide() {
|
|
76
|
+
var _this$formRef$current3;
|
|
77
|
+
let hide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
78
|
+
const {
|
|
79
|
+
onHideForm
|
|
80
|
+
} = this.props;
|
|
81
|
+
if (onHideForm) {
|
|
82
|
+
onHideForm && onHideForm();
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this.setState({
|
|
86
|
+
loading: false
|
|
87
|
+
});
|
|
88
|
+
hide && ((_this$formRef$current3 = this.formRef.current) === null || _this$formRef$current3 === void 0 ? void 0 : _this$formRef$current3.hideForm());
|
|
89
|
+
}
|
|
90
|
+
hideForm() {
|
|
91
|
+
var _this$formRef$current4;
|
|
92
|
+
this.setState({
|
|
93
|
+
loading: false
|
|
94
|
+
});
|
|
95
|
+
(_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 || _this$formRef$current4.hideForm();
|
|
96
|
+
}
|
|
97
|
+
setLoading(loading) {
|
|
98
|
+
this.setState({
|
|
99
|
+
loading: loading
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
setFieldsValue(values) {
|
|
103
|
+
var _this$formRef$current5;
|
|
104
|
+
(_this$formRef$current5 = this.formRef.current) === null || _this$formRef$current5 === void 0 || _this$formRef$current5.setFieldsValue(values);
|
|
105
|
+
}
|
|
106
|
+
getFieldsValue() {
|
|
107
|
+
var _this$formRef$current6;
|
|
108
|
+
return (_this$formRef$current6 = this.formRef.current) === null || _this$formRef$current6 === void 0 ? void 0 : _this$formRef$current6.getFieldsValue();
|
|
109
|
+
}
|
|
110
|
+
doSubmit(formdata, label) {
|
|
111
|
+
var _this$formRef$current7;
|
|
112
|
+
const {
|
|
113
|
+
submitUrl,
|
|
114
|
+
submitParams,
|
|
115
|
+
callBack
|
|
116
|
+
} = this.props;
|
|
117
|
+
const {
|
|
118
|
+
data = {}
|
|
119
|
+
} = submitParams,
|
|
120
|
+
otherParams = _objectWithoutProperties(submitParams, _excluded);
|
|
121
|
+
if (!submitUrl) {
|
|
122
|
+
throw new Error("url不能为空!");
|
|
123
|
+
}
|
|
124
|
+
(_this$formRef$current7 = this.formRef.current) === null || _this$formRef$current7 === void 0 || _this$formRef$current7.onSubmit(submitUrl, _objectSpread({
|
|
125
|
+
data: _objectSpread(_objectSpread({}, formdata), data),
|
|
126
|
+
noUndefined: label == "编辑"
|
|
127
|
+
}, otherParams), res => {
|
|
128
|
+
const {
|
|
129
|
+
code
|
|
130
|
+
} = res;
|
|
131
|
+
this.setState({
|
|
132
|
+
loading: false
|
|
133
|
+
});
|
|
134
|
+
if (code === 200) {
|
|
135
|
+
message.success(label + "成功");
|
|
136
|
+
this.hide(true);
|
|
137
|
+
callBack && callBack();
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
this.hide(false);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
onSubmit() {
|
|
144
|
+
var _this$formRef$current8, _this$formRef$current9;
|
|
145
|
+
const {
|
|
146
|
+
onSubmit
|
|
147
|
+
} = this.props;
|
|
148
|
+
const {
|
|
149
|
+
label,
|
|
150
|
+
value,
|
|
151
|
+
dictNames
|
|
152
|
+
} = this.state;
|
|
153
|
+
const formValue = (_this$formRef$current8 = this.formRef.current) === null || _this$formRef$current8 === void 0 ? void 0 : _this$formRef$current8.getFieldsValue();
|
|
154
|
+
let valid = this.valid;
|
|
155
|
+
(_this$formRef$current9 = this.formRef.current) === null || _this$formRef$current9 === void 0 || _this$formRef$current9.validateFields(valid).then(() => {
|
|
156
|
+
this.setState({
|
|
157
|
+
loading: true
|
|
158
|
+
});
|
|
159
|
+
let data = _objectSpread(_objectSpread({}, formValue), dictNames);
|
|
160
|
+
if (!isEmptyObj(this.dateValueFormat)) {
|
|
161
|
+
for (let key in this.dateValueFormat) {
|
|
162
|
+
let olddata = data[key];
|
|
163
|
+
if (Array.isArray(olddata)) {
|
|
164
|
+
data[key] = [moment(olddata[0]).format(this.dateValueFormat[key]), moment(olddata[1]).format(this.dateValueFormat[key])];
|
|
165
|
+
} else {
|
|
166
|
+
data[key] = moment(olddata).format(this.dateValueFormat[key]);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (label == "编辑") {
|
|
171
|
+
data = _objectSpread(_objectSpread({}, data), {}, {
|
|
172
|
+
id: value === null || value === void 0 ? void 0 : value.id
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
if (onSubmit) {
|
|
176
|
+
onSubmit && onSubmit(data, label);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
this.doSubmit(data, label);
|
|
180
|
+
}).catch(errorInfo => {});
|
|
181
|
+
}
|
|
182
|
+
valueChange(_ref, props, value, valueOption, data) {
|
|
183
|
+
let {
|
|
184
|
+
type,
|
|
185
|
+
dictName
|
|
186
|
+
} = _ref;
|
|
187
|
+
if (valueOption) {
|
|
188
|
+
if (dictName) {
|
|
189
|
+
const {
|
|
190
|
+
dictNames
|
|
191
|
+
} = this.state;
|
|
192
|
+
const newNames = _objectSpread({}, dictNames);
|
|
193
|
+
newNames[dictName] = valueOption.label;
|
|
194
|
+
this.setState({
|
|
195
|
+
dictNames: newNames
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (props.onChange) {
|
|
200
|
+
props.onChange(value, valueOption, data);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
render() {
|
|
204
|
+
const {
|
|
205
|
+
formProps = [],
|
|
206
|
+
otherProps = {}
|
|
207
|
+
} = this.props;
|
|
208
|
+
const {
|
|
209
|
+
loading,
|
|
210
|
+
label
|
|
211
|
+
} = this.state;
|
|
212
|
+
let modalProps = {
|
|
213
|
+
title: label,
|
|
214
|
+
onOk: this.onSubmit.bind(this),
|
|
215
|
+
onCancel: this.hide.bind(this),
|
|
216
|
+
okButtonProps: {
|
|
217
|
+
loading: loading
|
|
218
|
+
},
|
|
219
|
+
centered: true,
|
|
220
|
+
width: "50vw"
|
|
221
|
+
};
|
|
222
|
+
const newValid = [];
|
|
223
|
+
let drawerProps = {
|
|
224
|
+
title: label,
|
|
225
|
+
onOk: this.onSubmit.bind(this),
|
|
226
|
+
onClose: this.hide.bind(this),
|
|
227
|
+
width: "50vw"
|
|
228
|
+
};
|
|
229
|
+
if (label == "查看") {
|
|
230
|
+
modalProps.footer = null;
|
|
231
|
+
drawerProps.footer = null;
|
|
232
|
+
}
|
|
233
|
+
this.dateValueFormat = {};
|
|
234
|
+
this.dateFormat = {};
|
|
235
|
+
return /*#__PURE__*/React.createElement(Form, _extends({
|
|
236
|
+
ref: this.formRef,
|
|
237
|
+
showModel: this.props.formType,
|
|
238
|
+
modalProps: _objectSpread({}, modalProps),
|
|
239
|
+
drawerProps: _objectSpread({}, drawerProps),
|
|
240
|
+
labelCol: {
|
|
241
|
+
flex: "100px"
|
|
242
|
+
},
|
|
243
|
+
wrapperCol: {
|
|
244
|
+
flex: "15vw"
|
|
245
|
+
},
|
|
246
|
+
onValuesChange: (changedValues, allValues) => {
|
|
247
|
+
const {
|
|
248
|
+
onFormChange
|
|
249
|
+
} = this.props;
|
|
250
|
+
onFormChange && onFormChange(changedValues, allValues);
|
|
251
|
+
},
|
|
252
|
+
changeValid: this.props.changeValid
|
|
253
|
+
}, otherProps), /*#__PURE__*/React.createElement("div", {
|
|
254
|
+
className: getLess(styles, "form")
|
|
255
|
+
}, /*#__PURE__*/React.createElement(Row, {
|
|
256
|
+
gutter: 24
|
|
257
|
+
}, formProps.map((item, index) => {
|
|
258
|
+
const itemProps = item.props || {};
|
|
259
|
+
if (itemProps.valueFormat) {
|
|
260
|
+
this.dateValueFormat[item.name] = itemProps.valueFormat;
|
|
261
|
+
}
|
|
262
|
+
if (itemProps.format) {
|
|
263
|
+
this.dateFormat[item.name] = itemProps.format;
|
|
264
|
+
}
|
|
265
|
+
let allowChars = item.props.allowChars || false;
|
|
266
|
+
let props = _objectSpread(_objectSpread({
|
|
267
|
+
placeholder: "\u8BF7\u8F93\u5165".concat(item.label)
|
|
268
|
+
}, item.props), {}, {
|
|
269
|
+
onChange: this.valueChange.bind(this, {
|
|
270
|
+
type: item.type,
|
|
271
|
+
dictName: item.dictName
|
|
272
|
+
}, _objectSpread({}, item.props))
|
|
273
|
+
});
|
|
274
|
+
if (!item.type || item.type == "Input") {
|
|
275
|
+
props.allowChars = true;
|
|
276
|
+
props.showCount = true;
|
|
277
|
+
}
|
|
278
|
+
delete props.valueFormat;
|
|
279
|
+
delete props.format;
|
|
280
|
+
if (label == "查看") {
|
|
281
|
+
props.disabled = true;
|
|
282
|
+
}
|
|
283
|
+
if (item.rules && item.rules.length > 0) {
|
|
284
|
+
newValid.push(item.name);
|
|
285
|
+
}
|
|
286
|
+
if (index + 1 === formProps.length) {
|
|
287
|
+
this.valid = newValid;
|
|
288
|
+
}
|
|
289
|
+
if (item.type !== 'Upload') {
|
|
290
|
+
return /*#__PURE__*/React.createElement(Col, {
|
|
291
|
+
span: item.span || 12,
|
|
292
|
+
key: index
|
|
293
|
+
}, /*#__PURE__*/React.createElement(Form.Item, {
|
|
294
|
+
label: item.label,
|
|
295
|
+
name: item.name,
|
|
296
|
+
rules: item.rules,
|
|
297
|
+
allowChars: allowChars,
|
|
298
|
+
componentName: item.type ? item.type : "Input"
|
|
299
|
+
}, getNode(item.type, _objectSpread({}, props))));
|
|
300
|
+
} else {
|
|
301
|
+
return /*#__PURE__*/React.createElement(Col, {
|
|
302
|
+
span: item.span || 12,
|
|
303
|
+
key: index
|
|
304
|
+
}, /*#__PURE__*/React.createElement(Form.Item, {
|
|
305
|
+
label: item.label,
|
|
306
|
+
name: item.name,
|
|
307
|
+
rules: item.rules,
|
|
308
|
+
allowChars: allowChars,
|
|
309
|
+
componentName: item.type ? item.type : "Input"
|
|
310
|
+
}, /*#__PURE__*/React.createElement(Upload, _extends({
|
|
311
|
+
fileList: this.state.fileList[item.name] || [],
|
|
312
|
+
onListChange: list => {
|
|
313
|
+
const {
|
|
314
|
+
fileList
|
|
315
|
+
} = this.state;
|
|
316
|
+
this.setState({
|
|
317
|
+
fileList: _objectSpread(_objectSpread({}, fileList), {}, {
|
|
318
|
+
[item.name]: list
|
|
319
|
+
})
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}, props), /*#__PURE__*/React.createElement(Button, null, "\u4E0A\u4F20\u6587\u4EF6"))));
|
|
323
|
+
}
|
|
324
|
+
}))));
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
export default EditorForm;
|
|
328
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0TGVzcyIsImdldE5vZGUiLCJtZXNzYWdlIiwiQ29sIiwiUm93IiwiaXNFbXB0eU9iaiIsIm1vbWVudCIsInN0eWxlcyIsImxvZGFzaCIsIkJ1dHRvbiIsIlVwbG9hZCIsIkVkaXRvckZvcm0iLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImxvYWRpbmciLCJsYWJlbCIsImVkaXRvckZsYWciLCJ2YWx1ZSIsImRpY3ROYW1lcyIsImZpbGVMaXN0Iiwic2hvdyIsIm9yZ1ZhbHVlIiwiZWRpdG9yZmxhZyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInNldFN0YXRlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50IiwiY2xvbmVEZWVwIiwiZGF0ZUZvcm1hdCIsImtleSIsIm9sZGRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtUmVmIiwiY3VycmVudCIsInNob3dGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MiIsInByb3BzIiwiZGVmYXVsdFZhbHVlIiwiaGlkZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJvbkhpZGVGb3JtIiwiaGlkZUZvcm0iLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ0Iiwic2V0TG9hZGluZyIsInNldEZpZWxkc1ZhbHVlIiwidmFsdWVzIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NSIsImdldEZpZWxkc1ZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NiIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwiY2FsbEJhY2siLCJkYXRhIiwib3RoZXJQYXJhbXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJFcnJvciIsIm9uU3VibWl0IiwiX29iamVjdFNwcmVhZCIsIm5vVW5kZWZpbmVkIiwicmVzIiwiY29kZSIsInN1Y2Nlc3MiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ4IiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50OSIsInN0YXRlIiwiZm9ybVZhbHVlIiwidmFsaWQiLCJ2YWxpZGF0ZUZpZWxkcyIsInRoZW4iLCJkYXRlVmFsdWVGb3JtYXQiLCJmb3JtYXQiLCJpZCIsImNhdGNoIiwiZXJyb3JJbmZvIiwidmFsdWVDaGFuZ2UiLCJfcmVmIiwidmFsdWVPcHRpb24iLCJ0eXBlIiwiZGljdE5hbWUiLCJuZXdOYW1lcyIsIm9uQ2hhbmdlIiwicmVuZGVyIiwiZm9ybVByb3BzIiwib3RoZXJQcm9wcyIsIm1vZGFsUHJvcHMiLCJ0aXRsZSIsIm9uT2siLCJiaW5kIiwib25DYW5jZWwiLCJva0J1dHRvblByb3BzIiwiY2VudGVyZWQiLCJ3aWR0aCIsIm5ld1ZhbGlkIiwiZHJhd2VyUHJvcHMiLCJvbkNsb3NlIiwiZm9vdGVyIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzIiwicmVmIiwic2hvd01vZGVsIiwiZm9ybVR5cGUiLCJsYWJlbENvbCIsImZsZXgiLCJ3cmFwcGVyQ29sIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJndXR0ZXIiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJzaG93Q291bnQiLCJkaXNhYmxlZCIsInJ1bGVzIiwicHVzaCIsInNwYW4iLCJJdGVtIiwiY29tcG9uZW50TmFtZSIsIm9uTGlzdENoYW5nZSIsImxpc3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL0Zvcm0tLWJhY2sudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBDb2wgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Db2xcIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSAnLi4vLi4vYmFzZS91cGxvYWQnXHJcbmNsYXNzIEVkaXRvckZvcm0gZXh0ZW5kcyBQdXJlQ29tcG9uZW50PGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgICBmaWxlTGlzdDoge30gYXMgYW55XHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgLy/ooajljZXmmL7npLpcclxuICBzaG93KG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIikge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZGV0YWlsXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gbG9kYXNoLmNsb25lRGVlcChvcmdWYWx1ZSk7XHJcbiAgICAgICAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZVtrZXldO1xyXG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVtrZXldID0gW1xyXG4gICAgICAgICAgICAgICAgICBtb21lbnQob2xkZGF0YVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgICAgICBtb21lbnQob2xkZGF0YVsxXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVba2V5XSA9IG1vbWVudChvbGRkYXRhLCB0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhpZGUoaGlkZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgb25IaWRlRm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvbkhpZGVGb3JtKSB7XHJcbiAgICAgIG9uSGlkZUZvcm0gJiYgb25IaWRlRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICBoaWRlICYmIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBsb2FkaW5nIH0pO1xyXG4gIH1cclxuICBzZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpIHtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZXMpO1xyXG4gIH1cclxuICBnZXRGaWVsZHNWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZm9ybWRhdGEsIGxhYmVsKSB7XHJcbiAgICBjb25zdCB7IHN1Ym1pdFVybCwgc3VibWl0UGFyYW1zLCBjYWxsQmFjayB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gc3VibWl0UGFyYW1zXHJcbiAgICBpZiAoIXN1Ym1pdFVybCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ub25TdWJtaXQoXHJcbiAgICAgIHN1Ym1pdFVybCxcclxuICAgICAge1xyXG4gICAgICAgIGRhdGE6IHsgLi4uZm9ybWRhdGEsIC4uLmRhdGEgfSxcclxuICAgICAgICBub1VuZGVmaW5lZDogbGFiZWwgPT0gXCLnvJbovpFcIixcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIG9uU3VibWl0LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgdmFsaWQgPSB0aGlzLnZhbGlkO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnRcclxuICAgICAgPy52YWxpZGF0ZUZpZWxkcyh2YWxpZClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUsIC4uLmRpY3ROYW1lcyB9O1xyXG4gICAgICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICBsZXQgb2xkZGF0YSA9IGRhdGFba2V5XTtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgICBtb21lbnQob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgICAgbW9tZW50KG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRhdGFba2V5XSA9IG1vbWVudChvbGRkYXRhKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgICAgICBkYXRhID0geyAuLi5kYXRhLCBpZDogdmFsdWU/LmlkIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvblN1Ym1pdCkge1xyXG4gICAgICAgICAgb25TdWJtaXQgJiYgb25TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRvU3VibWl0KGRhdGEsIGxhYmVsKVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7IH0pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZvcm1Qcm9wcyA9IFtdLCBvdGhlclByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG1vZGFsUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcblxyXG4gICAgY29uc3QgbmV3VmFsaWQ6IGFueVtdID0gW107XHJcbiAgICBsZXQgZHJhd2VyUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICBtb2RhbFByb3BzLmZvb3RlciA9IG51bGw7XHJcbiAgICAgIGRyYXdlclByb3BzLmZvb3RlciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdCA9IHt9O1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0ID0ge307XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPEZvcm1cclxuICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICBzaG93TW9kZWw9e3RoaXMucHJvcHMuZm9ybVR5cGV9XHJcbiAgICAgICAgbW9kYWxQcm9wcz17eyAuLi5tb2RhbFByb3BzIH19XHJcbiAgICAgICAgZHJhd2VyUHJvcHM9e3sgLi4uZHJhd2VyUHJvcHMgfX1cclxuICAgICAgICBsYWJlbENvbD17eyBmbGV4OiBcIjEwMHB4XCIgfX1cclxuICAgICAgICB3cmFwcGVyQ29sPXt7IGZsZXg6IFwiMTV2d1wiIH19XHJcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2U9eyhjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgb25Gb3JtQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgb25Gb3JtQ2hhbmdlICYmIG9uRm9ybUNoYW5nZShjaGFuZ2VkVmFsdWVzLCBhbGxWYWx1ZXMpO1xyXG4gICAgICAgIH19XHJcbiAgICAgICAgY2hhbmdlVmFsaWQ9e3RoaXMucHJvcHMuY2hhbmdlVmFsaWR9XHJcbiAgICAgICAgey4uLm90aGVyUHJvcHN9XHJcbiAgICAgID5cclxuICAgICAgICB7LyogPGRpdj4gKi99XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImZvcm1cIil9PlxyXG4gICAgICAgICAgPFJvdyBndXR0ZXI9ezI0fT5cclxuICAgICAgICAgICAge2Zvcm1Qcm9wcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLmZvcm1hdDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgbGV0IGFsbG93Q2hhcnMgPSBpdGVtLnByb3BzLmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgICAgICAgbGV0IHByb3BzID0ge1xyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGDor7fovpPlhaUke2l0ZW0ubGFiZWx9YCxcclxuXHJcbiAgICAgICAgICAgICAgICAuLi5pdGVtLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudmFsdWVDaGFuZ2UuYmluZChcclxuICAgICAgICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBkaWN0TmFtZTogaXRlbS5kaWN0TmFtZSxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgeyAuLi5pdGVtLnByb3BzIH1cclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZSB8fCBpdGVtLnR5cGUgPT0gXCJJbnB1dFwiKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5hbGxvd0NoYXJzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHByb3BzLnNob3dDb3VudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGRlbGV0ZSBwcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgICAgICBkZWxldGUgcHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybVByb3BzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZCA9IG5ld1ZhbGlkO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlICE9PSAnVXBsb2FkJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPENvbCBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgIDxDb2wgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU9e2l0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIn1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0W2l0ZW0ubmFtZV0gfHwgW119XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uTGlzdENoYW5nZT17KGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdDogeyAuLi5maWxlTGlzdCwgW2l0ZW0ubmFtZV06IGxpc3QgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc30+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24+5LiK5Lyg5paH5Lu2PC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L1VwbG9hZD5cclxuICAgICAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8L1Jvdz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEVkaXRvckZvcm07XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQVEsT0FBTztBQUM1QyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQVNDLE9BQU8sRUFBRUMsT0FBTyxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxHQUFHLE1BQU0scUJBQXFCO0FBQ3JDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsU0FBU0MsVUFBVSxRQUFRLG1CQUFtQjtBQUM5QyxPQUFPQyxNQUFNLE1BQU0sUUFBUTtBQUMzQixPQUFPQyxNQUFNLE1BQU0scUJBQXFCO0FBRXhDLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxNQUFNQyxVQUFVLFNBQVNiLGFBQWEsQ0FBTTtFQUFBYyxZQUFBO0lBQUEsU0FBQUMsU0FBQTtJQUFBQyxlQUFBLCtCQUNoQ2pCLEtBQUssQ0FBQ2tCLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsZ0JBQ3hCO01BQ05FLE9BQU8sRUFBRSxLQUFLO01BQ2RDLEtBQUssRUFBRSxFQUFFO01BQ1RDLFVBQVUsRUFBRSxJQUFJO01BQ2hCQyxLQUFLLEVBQUUsQ0FBQyxDQUFRO01BQ2hCQyxTQUFTLEVBQUUsQ0FBQyxDQUFRO01BQ3BCQyxRQUFRLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFBQVAsZUFBQSxnQkFDWSxFQUFFO0lBQUFBLGVBQUEsMEJBQ0csQ0FBQyxDQUFDO0lBQUFBLGVBQUEscUJBQ1AsQ0FBQyxDQUFDO0VBQUE7RUFDZjtFQUNBUSxJQUFJQSxDQUFD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QUFJLEVBQUVKLElBQUksQ0FBQ0ksSUFBSztVQUNoQk0sS0FBSyxFQUFFVixJQUFJLENBQUNVLEtBQU07VUFDbEJMLFVBQVUsRUFBRUEsVUFBVztVQUN2QlMsYUFBYSxFQUFFZCxJQUFJLENBQUNuQyxJQUFJLEdBQUdtQyxJQUFJLENBQUNuQyxJQUFJLEdBQUc7UUFBUSxHQUU5Q25GLE9BQU8sQ0FBQ3NILElBQUksQ0FBQ25DLElBQUksRUFBQXBCLGFBQUEsS0FDYnpCLEtBQUssQ0FDVCxDQUNRLENBQ1IsQ0FBQztNQUVWLENBQUMsTUFBTTtRQUNMLG9CQUNFMUMsS0FBQSxDQUFBMEcsYUFBQSxDQUFDcEcsR0FBRztVQUFDZ0ksSUFBSSxFQUFFWixJQUFJLENBQUNZLElBQUksSUFBSSxFQUFHO1VBQUNwRyxHQUFHLEVBQUV5RjtRQUFNLGdCQUNyQzNILEtBQUEsQ0FBQTBHLGFBQUEsQ0FBQ3hHLElBQUksQ0FBQ3FJLElBQUk7VUFDUm5ILEtBQUssRUFBRXNHLElBQUksQ0FBQ3RHLEtBQU07VUFDbEIwRyxJQUFJLEVBQUVKLElBQUksQ0FBQ0ksSUFBSztVQUNoQk0sS0FBSyxFQUFFVixJQUFJLENBQUNVLEtBQU07VUFDbEJMLFVBQVUsRUFBRUEsVUFBVztVQUN2QlMsYUFBYSxFQUFFZCxJQUFJLENBQUNuQyxJQUFJLEdBQUdtQyxJQUFJLENBQUNuQyxJQUFJLEdBQUc7UUFBUSxnQkFFL0N2RixLQUFBLENBQUEwRyxhQUFBLENBQUM3RixNQUFNLEVBQUE4RixRQUFBO1VBQ0xuRixRQUFRLEVBQUUsSUFBSSxDQUFDa0QsS0FBSyxDQUFDbEQsUUFBUSxDQUFDa0csSUFBSSxDQUFDSSxJQUFJLENBQUMsSUFBSSxFQUFHO1VBQy9DVyxZQUFZLEVBQUdDLElBQUksSUFBSztZQUN0QixNQUFNO2NBQUVsSDtZQUFTLENBQUMsR0FBRyxJQUFJLENBQUNrRCxLQUFLO1lBQy9CLElBQUksQ0FBQzVDLFFBQVEsQ0FBQztjQUNaTixRQUFRLEVBQUEyQyxhQUFBLENBQUFBLGFBQUEsS0FBTzNDLFFBQVE7Z0JBQUUsQ0FBQ2tHLElBQUksQ0FBQ0ksSUFBSSxHQUFHWTtjQUFJO1lBQzVDLENBQUMsQ0FBQztVQUNKO1FBQUUsR0FDRWhHLEtBQUssZ0JBQ1QxQyxLQUFBLENBQUEwRyxhQUFBLENBQUM5RixNQUFNLFFBQUMsMEJBQVksQ0FDZCxDQUNDLENBQ1IsQ0FBQztNQUVWO0lBQ0YsQ0FBQyxDQUNFLENBQ0YsQ0FDRCxDQUFDO0VBRVg7QUFDRjtBQUVBLGVBQWVFLFVBQVUiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Form--back.js","names":["React","PureComponent","Form","getLess","getNode","message","Col","Row","isEmptyObj","moment","styles","lodash","Button","Upload","EditorForm","constructor","arguments","_defineProperty","createRef","loading","label","editorFlag","value","dictNames","fileList","show","orgValue","editorflag","length","undefined","setState","_this$formRef$current","cloneDeep","dateFormat","key","olddata","Array","isArray","formRef","current","showForm","_this$formRef$current2","props","defaultValue","hide","_this$formRef$current3","onHideForm","hideForm","_this$formRef$current4","setLoading","setFieldsValue","values","_this$formRef$current5","getFieldsValue","_this$formRef$current6","doSubmit","formdata","_this$formRef$current7","submitUrl","submitParams","callBack","data","otherParams","_objectWithoutProperties","_excluded","Error","onSubmit","_objectSpread","noUndefined","res","code","success","_this$formRef$current8","_this$formRef$current9","state","formValue","valid","validateFields","then","dateValueFormat","format","id","catch","errorInfo","valueChange","_ref","valueOption","type","dictName","newNames","onChange","render","formProps","otherProps","modalProps","title","onOk","bind","onCancel","okButtonProps","centered","width","newValid","drawerProps","onClose","footer","createElement","_extends","ref","showModel","formType","labelCol","flex","wrapperCol","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","gutter","map","item","index","itemProps","valueFormat","name","allowChars","placeholder","concat","showCount","disabled","rules","push","span","Item","componentName","onListChange","list"],"sources":["../../../src/components/page/BasePage/Form--back.tsx"],"sourcesContent":["import React, { PureComponent } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport moment from \"moment\";\r\nimport styles from \"./index.module.less\";\r\nimport utils from \"../../utils\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from '../../base/upload'\r\nclass EditorForm extends PureComponent<any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\") {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && editorflag == \"detail\") {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n },\r\n () => {\r\n let value = lodash.cloneDeep(orgValue);\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = value[key];\r\n if (Array.isArray(olddata)) {\r\n value[key] = [\r\n moment(olddata[0], this.dateFormat[key]),\r\n moment(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n value[key] = moment(olddata, this.dateFormat[key]);\r\n }\r\n }\r\n }\r\n this.formRef.current?.showForm(value);\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue);\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false });\r\n this.formRef.current?.hideForm();\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n setFieldsValue(values) {\r\n this.formRef.current?.setFieldsValue(values);\r\n }\r\n getFieldsValue() {\r\n return this.formRef.current?.getFieldsValue();\r\n }\r\n doSubmit(formdata, label) {\r\n const { submitUrl, submitParams, callBack } = this.props;\r\n const { data = {}, ...otherParams } = submitParams\r\n if (!submitUrl) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n this.formRef.current?.onSubmit(\r\n submitUrl,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n this.hide(true);\r\n callBack && callBack();\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n onSubmit() {\r\n const {\r\n onSubmit,\r\n } = this.props;\r\n const { label, value, dictNames } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields(valid)\r\n .then(() => {\r\n this.setState({ loading: true });\r\n let data = { ...formValue, ...dictNames };\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n moment(olddata[0]).format(this.dateValueFormat[key]),\r\n moment(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n } else {\r\n data[key] = moment(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id };\r\n }\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label)\r\n })\r\n .catch((errorInfo: any) => { });\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n props.onChange(value, valueOption, data);\r\n }\r\n }\r\n\r\n render() {\r\n const { formProps = [], otherProps = {} } = this.props;\r\n const { loading, label } = this.state;\r\n let modalProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n } as any;\r\n\r\n const newValid: any[] = [];\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n labelCol={{ flex: \"100px\" }}\r\n wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...otherProps}\r\n >\r\n {/* <div> */}\r\n <div className={getLess(styles, \"form\")}>\r\n <Row gutter={24}>\r\n {formProps.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] = itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n let allowChars = item.props.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true;\r\n props.showCount = true;\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n }\r\n\r\n if (item.rules && item.rules.length > 0) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === formProps.length) {\r\n this.valid = newValid;\r\n }\r\n if (item.type !== 'Upload') {\r\n return (\r\n <Col span={item.span || 12} key={index}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n >\r\n {getNode(item.type, {\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n return (\r\n <Col span={item.span || 12} key={index}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list }\r\n })\r\n }}\r\n {...props}>\r\n <Button>上传文件</Button>\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default EditorForm;\r\n"],"mappings":"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","ignoreList":[]}
|