nsc-react-component 3.2.13 → 3.2.15

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.
@@ -1,350 +0,0 @@
1
- import _Upload from "antd/es/upload";
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 _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; }
6
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
7
- 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); }
8
- import * as React from "react";
9
- import file from "nsc-file";
10
- import message from "../message";
11
- import withZhLocale from "../common/withZhLocale";
12
- import omit from "omit.js";
13
- import { getLess } from "../../utils";
14
- import styles from "./index.less";
15
- import cls from "classnames";
16
- import FileIcon from "../common/FileIcon";
17
- import { DeleteOutlined, DownloadOutlined, EyeOutlined } from "@ant-design/icons";
18
- import PdfViewer from "../pdfviwer";
19
- const {
20
- upload,
21
- download
22
- } = file;
23
- class NscUpload extends React.PureComponent {
24
- constructor() {
25
- super(...arguments);
26
- _defineProperty(this, "state", {
27
- fileList: [],
28
- viewId: ""
29
- });
30
- _defineProperty(this, "customRequest", async options => {
31
- const file = options.file;
32
- const {
33
- onComplete,
34
- onProcess,
35
- sliceSize
36
- } = this.props;
37
- const {
38
- maxSize,
39
- allowFileSuffix
40
- } = this.props;
41
- if (allowFileSuffix && !this.checkFileType(file)) {
42
- message.error("".concat(file.name, "\u6587\u4EF6\u7C7B\u578B\u4E0D\u5141\u8BB8\u4E0A\u4F20\uFF0C\u8BF7\u4E0A\u4F20\u540E\u7F00\u4E3A").concat(allowFileSuffix, "\u7684\u7C7B\u578B\u6587\u4EF6\uFF01"));
43
- onComplete && onComplete({
44
- file: options.file,
45
- fileId: "",
46
- status: "error"
47
- });
48
- options.onError();
49
- return false;
50
- }
51
- if (maxSize) {
52
- const size = maxSize * 1024 * 1024;
53
- if (size < file.size) {
54
- message.error("".concat(file.name, "\u6587\u4EF6\u5927\u5C0F\u8D85\u8FC7").concat(maxSize, "M\uFF0C\u8BF7\u91CD\u65B0\u4E0A\u4F20\uFF01"));
55
- onComplete && onComplete({
56
- file: options.file,
57
- fileId: "",
58
- status: "error"
59
- });
60
- options.onError();
61
- return false;
62
- }
63
- }
64
- const onProgress = totalProgress => {
65
- options.onProgress({
66
- percent: totalProgress
67
- }, file);
68
- this.onProcess({
69
- percent: totalProgress,
70
- file: file
71
- });
72
- onProcess && onProcess({
73
- percent: totalProgress,
74
- file: file
75
- });
76
- };
77
- try {
78
- const res = await upload({
79
- file: file,
80
- onProgress: onProgress,
81
- partSize: sliceSize
82
- });
83
- let fileId = null;
84
- if (res.code == 200) {
85
- fileId = res.data.attachId;
86
- options.onSuccess();
87
- } else {
88
- options.onError();
89
- }
90
- this.onComplete({
91
- file: options.file,
92
- fileId: fileId,
93
- status: res.code == 200 ? "success" : "error"
94
- });
95
- onComplete && onComplete({
96
- file: options.file,
97
- fileId: fileId,
98
- status: res.code == 200 ? "success" : "error"
99
- });
100
- } catch (e) {
101
- this.onComplete({
102
- file: options.file,
103
- fileId: "",
104
- status: "error"
105
- });
106
- onComplete && onComplete({
107
- file: options.file,
108
- fileId: "",
109
- status: "error"
110
- });
111
- options.onError();
112
- }
113
- });
114
- }
115
- componentDidMount() {
116
- if (this.props.fileList) {
117
- this.convertFileList();
118
- }
119
- }
120
- convertFileList(list) {
121
- const {
122
- fileList
123
- } = this.props;
124
- const newFileList = [];
125
- let oldList = list ? list : fileList;
126
- oldList.map(item => {
127
- let temp = _objectSpread({}, item);
128
- if (!item.name) {
129
- temp.name = item.fileName;
130
- }
131
- newFileList.push(temp);
132
- });
133
- this.setState({
134
- fileList: newFileList
135
- });
136
- }
137
- componentDidUpdate(preProps, preState) {
138
- if (this.props.fileList) {
139
- if (JSON.stringify(preState.fileList) !== JSON.stringify(this.props.fileList)) {
140
- this.convertFileList();
141
- }
142
- }
143
- }
144
- getFileList() {
145
- return this.state.fileList;
146
- }
147
- setFileList(fileList) {
148
- this.convertFileList(fileList);
149
- }
150
- beforeUpload(file) {
151
- const {
152
- fileList
153
- } = this.state;
154
- const {
155
- onListChange
156
- } = this.props;
157
- const newList = [...fileList, {
158
- fileName: file.name,
159
- percent: 0,
160
- status: "uploading",
161
- uid: file.uid,
162
- name: file.name
163
- }];
164
- this.setState({
165
- fileList: newList
166
- });
167
- onListChange && onListChange(newList);
168
- }
169
- checkFileType(file) {
170
- const {
171
- allowFileSuffix
172
- } = this.props;
173
- const names = file.name.split(".");
174
- const suffix = names[names.length - 1];
175
- if (allowFileSuffix.indexOf(suffix) > -1) {
176
- return true;
177
- }
178
- return false;
179
- }
180
- onProcess(_ref) {
181
- let {
182
- percent,
183
- file
184
- } = _ref;
185
- const {
186
- fileList
187
- } = this.state;
188
- const {
189
- onListChange
190
- } = this.props;
191
- const newList = [];
192
- fileList.map(item => {
193
- const newFile = _objectSpread({}, item);
194
- if (file.uid == item.uid) {
195
- newFile.percent = percent;
196
- }
197
- newList.push(newFile);
198
- });
199
- this.setState({
200
- fileList: newList
201
- });
202
- onListChange && onListChange(newList);
203
- }
204
- onComplete(file) {
205
- const {
206
- fileList
207
- } = this.state;
208
- const {
209
- onListChange
210
- } = this.props;
211
- const newList = [];
212
- fileList.map(item => {
213
- const newFile = _objectSpread({}, item);
214
- if (file.file.uid == item.uid) {
215
- newFile.status = file.status == "success" ? "done" : file.status;
216
- newFile.fileId = file.fileId;
217
- }
218
- newList.push(newFile);
219
- });
220
- this.setState({
221
- fileList: newList
222
- });
223
- onListChange && onListChange(newList);
224
- }
225
- onDelete(file) {
226
- const {
227
- fileList
228
- } = this.state;
229
- const {
230
- onListChange
231
- } = this.props;
232
- const newList = [];
233
- fileList.map(item => {
234
- if (item.fileId !== file.fileId || item.uid !== file.uid) {
235
- newList.push(item);
236
- }
237
- });
238
- this.setState({
239
- fileList: newList
240
- });
241
- onListChange && onListChange(newList);
242
- }
243
- render() {
244
- let {
245
- useDefaultList,
246
- fileList,
247
- fileCard,
248
- showUploadList = {
249
- showDownloadIcon: true,
250
- showPreviewIcon: false,
251
- showRemoveIcon: true,
252
- downloadIcon: null,
253
- removeIcon: null,
254
- previewIcon: null
255
- }
256
- } = this.props;
257
- let newFileList = this.state.fileList;
258
- if (useDefaultList && fileList) {
259
- newFileList = fileList;
260
- }
261
- const newprops = omit(this.props, ["sliceSize", "maxSize", "onComplete", "onProcess", "allowFileSuffix", "useDefaultList", "fileCard", "onListChange"]);
262
- let defaultProps = {
263
- customRequest: this.customRequest.bind(this),
264
- multiple: true,
265
- beforeUpload: this.beforeUpload.bind(this)
266
- };
267
- if (fileCard) {
268
- defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
269
- itemRender: (originNode, file, currFileList) => {
270
- const name = file.name || file.fileName;
271
- const names = name.split(".");
272
- const suffix = names ? names[names.length - 1] : "";
273
- return /*#__PURE__*/React.createElement("div", {
274
- className: getLess(styles, "file-item")
275
- }, /*#__PURE__*/React.createElement("div", {
276
- className: cls(getLess(styles, "content"), {
277
- [getLess(styles, "content_error")]: file.status == "error"
278
- })
279
- }, /*#__PURE__*/React.createElement("div", {
280
- className: getLess(styles, "mark-picture")
281
- }, /*#__PURE__*/React.createElement(FileIcon, {
282
- suffix: suffix,
283
- fileId: file.fileId
284
- })), /*#__PURE__*/React.createElement("div", {
285
- className: getLess(styles, "name")
286
- }, file.name || file.fileName), /*#__PURE__*/React.createElement("div", {
287
- className: getLess(styles, "icon")
288
- }, showUploadList.showPreviewIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
289
- onClick: () => {
290
- if (this.props.onDownload) {
291
- this.props.onDownload(file);
292
- } else {
293
- download(file.fileId);
294
- }
295
- },
296
- style: {
297
- cursor: "pointer"
298
- }
299
- }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(EyeOutlined, null)), showUploadList.showDownloadIcon && file.status == "done" && /*#__PURE__*/React.createElement("div", {
300
- onClick: () => {
301
- if (this.props.onDownload) {
302
- this.props.onDownload(file);
303
- } else {
304
- download(file.fileId);
305
- }
306
- },
307
- style: {
308
- cursor: "pointer"
309
- }
310
- }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DownloadOutlined, null)), showUploadList.showRemoveIcon && /*#__PURE__*/React.createElement("div", {
311
- onClick: () => {
312
- if (this.props.onRemove) {
313
- this.props.onRemove(file);
314
- } else {
315
- this.onDelete(file);
316
- }
317
- },
318
- style: {
319
- cursor: "pointer"
320
- }
321
- }, showUploadList.downloadIcon ? showUploadList.downloadIcon : /*#__PURE__*/React.createElement(DeleteOutlined, null)))), file.status == "uploading" && /*#__PURE__*/React.createElement("div", {
322
- className: getLess(styles, "process")
323
- }, /*#__PURE__*/React.createElement("div", {
324
- className: getLess(styles, "percent"),
325
- style: {
326
- width: file.percent + "%"
327
- }
328
- })));
329
- }
330
- });
331
- } else {
332
- defaultProps = _objectSpread(_objectSpread({}, defaultProps), {}, {
333
- onDownload: file => {
334
- download(file.fileId);
335
- },
336
- onRemove: file => {
337
- this.onDelete(file);
338
- },
339
- showUploadList: _objectSpread({}, showUploadList)
340
- });
341
- }
342
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Upload, _extends({
343
- fileList: this.state.fileList
344
- }, defaultProps, newprops)), /*#__PURE__*/React.createElement(PdfViewer, {
345
- fileId: this.state.viewId
346
- }));
347
- }
348
- }
349
- export default withZhLocale(NscUpload);
350
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwid2l0aFpoTG9jYWxlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiUGRmVmlld2VyIiwidXBsb2FkIiwiZG93bmxvYWQiLCJOc2NVcGxvYWQiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJmaWxlTGlzdCIsInZpZXdJZCIsIm9wdGlvbnMiLCJvbkNvbXBsZXRlIiwib25Qcm9jZXNzIiwic2xpY2VTaXplIiwicHJvcHMiLCJtYXhTaXplIiwiYWxsb3dGaWxlU3VmZml4IiwiY2hlY2tGaWxlVHlwZSIsImVycm9yIiwiY29uY2F0IiwibmFtZSIsImZpbGVJZCIsInN0YXR1cyIsIm9uRXJyb3IiLCJzaXplIiwib25Qcm9ncmVzcyIsInRvdGFsUHJvZ3Jlc3MiLCJwZXJjZW50IiwicmVzIiwicGFydFNpemUiLCJjb2RlIiwiZGF0YSIsImF0dGFjaElkIiwib25TdWNjZXNzIiwiZSIsImNvbXBvbmVudERpZE1vdW50IiwiY29udmVydEZpbGVMaXN0IiwibGlzdCIsIm5ld0ZpbGVMaXN0Iiwib2xkTGlzdCIsIm1hcCIsIml0ZW0iLCJ0ZW1wIiwiX29iamVjdFNwcmVhZCIsImZpbGVOYW1lIiwicHVzaCIsInNldFN0YXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJlUHJvcHMiLCJwcmVTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRGaWxlTGlzdCIsInN0YXRlIiwic2V0RmlsZUxpc3QiLCJiZWZvcmVVcGxvYWQiLCJvbkxpc3RDaGFuZ2UiLCJuZXdMaXN0IiwidWlkIiwibmFtZXMiLCJzcGxpdCIsInN1ZmZpeCIsImxlbmd0aCIsImluZGV4T2YiLCJfcmVmIiwibmV3RmlsZSIsIm9uRGVsZXRlIiwicmVuZGVyIiwidXNlRGVmYXVsdExpc3QiLCJmaWxlQ2FyZCIsInNob3dVcGxvYWRMaXN0Iiwic2hvd0Rvd25sb2FkSWNvbiIsInNob3dQcmV2aWV3SWNvbiIsInNob3dSZW1vdmVJY29uIiwiZG93bmxvYWRJY29uIiwicmVtb3ZlSWNvbiIsInByZXZpZXdJY29uIiwibmV3cHJvcHMiLCJkZWZhdWx0UHJvcHMiLCJjdXN0b21SZXF1ZXN0IiwiYmluZCIsIm11bHRpcGxlIiwiaXRlbVJlbmRlciIsIm9yaWdpbk5vZGUiLCJjdXJyRmlsZUxpc3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwib25DbGljayIsIm9uRG93bmxvYWQiLCJzdHlsZSIsImN1cnNvciIsIm9uUmVtb3ZlIiwid2lkdGgiLCJGcmFnbWVudCIsIl9VcGxvYWQiLCJfZXh0ZW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdXBsb2FkL2luZGV4IGNvcHkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBVcGxvYWQsIFVwbG9hZFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IGZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi9tZXNzYWdlXCI7XHJcbmltcG9ydCB3aXRoWmhMb2NhbGUgZnJvbSBcIi4uL2NvbW1vbi93aXRoWmhMb2NhbGVcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG4gIERvd25sb2FkT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCBQZGZWaWV3ZXIgZnJvbSBcIi4uL3BkZnZpd2VyXCI7XHJcbmNvbnN0IHsgdXBsb2FkLCBkb3dubG9hZCB9ID0gZmlsZTtcclxuXHJcbmludGVyZmFjZSBJVXBsb2FkUHJvcHMgZXh0ZW5kcyBVcGxvYWRQcm9wcyB7XHJcbiAgc2xpY2VTaXplPzogbnVtYmVyO1xyXG4gIG1heFNpemU/OiBudW1iZXI7XHJcbiAgb25Qcm9jZXNzPzogKHByb2Nlc3MpID0+IHZvaWQ7XHJcbiAgb25Db21wbGV0ZT86ICh7IGZpbGUsIGZpbGVJZCwgc3RhdHVzIH0pID0+IHZvaWQ7XHJcbiAgYWxsb3dGaWxlU3VmZml4PzogQXJyYXk8U3RyaW5nPjsgLy/lhYHorrjkuIrkvKDmianlsZXlkI0s5LiN5bimLlxyXG4gIHVzZURlZmF1bHRMaXN0PzogYm9vbGVhbjsgLy/mmK/lkKbkvb/nlKjpu5jorqTnmoRmaWxlTGlzdFxyXG4gIGZpbGVDYXJkPzogYm9vbGVhbjtcclxuICBvbkxpc3RDaGFuZ2U/OiBhbnk7XHJcbn1cclxuY2xhc3MgTnNjVXBsb2FkIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJVXBsb2FkUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRlID0geyBmaWxlTGlzdDogW10sIHZpZXdJZDogXCJcIiB9O1xyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QoKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29udmVydEZpbGVMaXN0KGxpc3Q/OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3RmlsZUxpc3QgPSBbXTtcclxuICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgIG9sZExpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IC4uLml0ZW0gfTtcclxuICAgICAgaWYgKCFpdGVtLm5hbWUpIHtcclxuICAgICAgICB0ZW1wLm5hbWUgPSBpdGVtLmZpbGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0ZpbGVMaXN0LnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3RmlsZUxpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZVN0YXRlLmZpbGVMaXN0KSAhPT1cclxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmZpbGVMaXN0KVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEZpbGVMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgfVxyXG4gIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdChmaWxlTGlzdCk7XHJcbiAgfVxyXG4gIGJlZm9yZVVwbG9hZChmaWxlKSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0ID0gW1xyXG4gICAgICAuLi5maWxlTGlzdCxcclxuICAgICAge1xyXG4gICAgICAgIGZpbGVOYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgcGVyY2VudDogMCxcclxuICAgICAgICBzdGF0dXM6IFwidXBsb2FkaW5nXCIsXHJcbiAgICAgICAgdWlkOiBmaWxlLnVpZCxcclxuICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBuZXdMaXN0IH0pO1xyXG4gICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICB9XHJcbiAgY2hlY2tGaWxlVHlwZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGFsbG93RmlsZVN1ZmZpeCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5hbWVzID0gZmlsZS5uYW1lLnNwbGl0KFwiLlwiKTtcclxuICAgIGNvbnN0IHN1ZmZpeCA9IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdO1xyXG4gICAgaWYgKGFsbG93RmlsZVN1ZmZpeC5pbmRleE9mKHN1ZmZpeCkgPiAtMSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgb25Qcm9jZXNzKHsgcGVyY2VudCwgZmlsZSB9OiBhbnkpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICBpZiAoZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICBuZXdGaWxlLnBlcmNlbnQgPSBwZXJjZW50O1xyXG4gICAgICB9XHJcbiAgICAgIG5ld0xpc3QucHVzaChuZXdGaWxlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGZpbGVMaXN0OiBuZXdMaXN0LFxyXG4gICAgfSk7XHJcbiAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gIH1cclxuICBvbkNvbXBsZXRlKGZpbGUpIHtcclxuICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICBpZiAoZmlsZS5maWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgIG5ld0ZpbGUuc3RhdHVzID0gZmlsZS5zdGF0dXMgPT0gXCJzdWNjZXNzXCIgPyBcImRvbmVcIiA6IGZpbGUuc3RhdHVzO1xyXG4gICAgICAgIG5ld0ZpbGUuZmlsZUlkID0gZmlsZS5maWxlSWQ7XHJcbiAgICAgIH1cclxuICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICB9KTtcclxuICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgfVxyXG4gIGN1c3RvbVJlcXVlc3QgPSBhc3luYyAob3B0aW9ucykgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IG9wdGlvbnMuZmlsZTtcclxuICAgIGNvbnN0IHsgb25Db21wbGV0ZSwgb25Qcm9jZXNzLCBzbGljZVNpemUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IG1heFNpemUsIGFsbG93RmlsZVN1ZmZpeCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChhbGxvd0ZpbGVTdWZmaXggJiYgIXRoaXMuY2hlY2tGaWxlVHlwZShmaWxlKSkge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKFxyXG4gICAgICAgIGAke2ZpbGUubmFtZX3mlofku7bnsbvlnovkuI3lhYHorrjkuIrkvKDvvIzor7fkuIrkvKDlkI7nvIDkuLoke2FsbG93RmlsZVN1ZmZpeH3nmoTnsbvlnovmlofku7bvvIFgXHJcbiAgICAgICk7XHJcbiAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKG1heFNpemUpIHtcclxuICAgICAgY29uc3Qgc2l6ZSA9IG1heFNpemUgKiAxMDI0ICogMTAyNDtcclxuICAgICAgaWYgKHNpemUgPCBmaWxlLnNpemUpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKGAke2ZpbGUubmFtZX3mlofku7blpKflsI/otoXov4cke21heFNpemV9Te+8jOivt+mHjeaWsOS4iuS8oO+8gWApO1xyXG4gICAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICAgIG9uQ29tcGxldGUoeyBmaWxlOiBvcHRpb25zLmZpbGUsIGZpbGVJZDogXCJcIiwgc3RhdHVzOiBcImVycm9yXCIgfSk7XHJcbiAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBvblByb2dyZXNzID0gKHRvdGFsUHJvZ3Jlc3M6IGFueSkgPT4ge1xyXG4gICAgICBvcHRpb25zLm9uUHJvZ3Jlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzIH0sIGZpbGUpO1xyXG4gICAgICB0aGlzLm9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgIG9uUHJvY2VzcyAmJiBvblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgfTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdXBsb2FkKHtcclxuICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgIG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXHJcbiAgICAgICAgcGFydFNpemU6IHNsaWNlU2l6ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBmaWxlSWQgPSBudWxsO1xyXG4gICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgZmlsZUlkID0gcmVzLmRhdGEuYXR0YWNoSWQ7XHJcbiAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9uQ29tcGxldGUoe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IGZpbGVJZCxcclxuICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgIG9uQ29tcGxldGUoe1xyXG4gICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICB0aGlzLm9uQ29tcGxldGUoe1xyXG4gICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICBmaWxlSWQ6IFwiXCIsXHJcbiAgICAgICAgc3RhdHVzOiBcImVycm9yXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgb25Db21wbGV0ZSh7IGZpbGU6IG9wdGlvbnMuZmlsZSwgZmlsZUlkOiBcIlwiLCBzdGF0dXM6IFwiZXJyb3JcIiB9KTtcclxuICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBvbkRlbGV0ZShmaWxlKSB7XHJcbiAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmZpbGVJZCAhPT0gZmlsZS5maWxlSWQgfHwgaXRlbS51aWQgIT09IGZpbGUudWlkKSB7XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgIH0pO1xyXG4gICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICB9XHJcbiAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XHJcbiAgICBsZXQge1xyXG4gICAgICB1c2VEZWZhdWx0TGlzdCxcclxuICAgICAgZmlsZUxpc3QsXHJcbiAgICAgIGZpbGVDYXJkLFxyXG4gICAgICBzaG93VXBsb2FkTGlzdCA9IHtcclxuICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgIHNob3dQcmV2aWV3SWNvbjogZmFsc2UsXHJcbiAgICAgICAgc2hvd1JlbW92ZUljb246IHRydWUsXHJcbiAgICAgICAgZG93bmxvYWRJY29uOiBudWxsLFxyXG4gICAgICAgIHJlbW92ZUljb246IG51bGwsXHJcbiAgICAgICAgcHJldmlld0ljb246IG51bGwsXHJcbiAgICAgIH0gYXMgYW55LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgbmV3RmlsZUxpc3QgPSB0aGlzLnN0YXRlLmZpbGVMaXN0O1xyXG4gICAgaWYgKHVzZURlZmF1bHRMaXN0ICYmIGZpbGVMaXN0KSB7XHJcbiAgICAgIG5ld0ZpbGVMaXN0ID0gZmlsZUxpc3Q7XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdwcm9wcyA9IG9taXQodGhpcy5wcm9wcywgW1xyXG4gICAgICBcInNsaWNlU2l6ZVwiLFxyXG4gICAgICBcIm1heFNpemVcIixcclxuICAgICAgXCJvbkNvbXBsZXRlXCIsXHJcbiAgICAgIFwib25Qcm9jZXNzXCIsXHJcbiAgICAgIFwiYWxsb3dGaWxlU3VmZml4XCIsXHJcbiAgICAgIFwidXNlRGVmYXVsdExpc3RcIixcclxuICAgICAgXCJmaWxlQ2FyZFwiLFxyXG4gICAgICBcIm9uTGlzdENoYW5nZVwiLFxyXG4gICAgXSk7XHJcbiAgICBsZXQgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgICBjdXN0b21SZXF1ZXN0OiB0aGlzLmN1c3RvbVJlcXVlc3QuYmluZCh0aGlzKSxcclxuICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgIGJlZm9yZVVwbG9hZDogdGhpcy5iZWZvcmVVcGxvYWQuYmluZCh0aGlzKSxcclxuICAgIH0gYXMgSVVwbG9hZFByb3BzO1xyXG4gICAgaWYgKGZpbGVDYXJkKSB7XHJcbiAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgaXRlbVJlbmRlcjogKG9yaWdpbk5vZGUsIGZpbGU6IGFueSwgY3VyckZpbGVMaXN0KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWU7XHJcbiAgICAgICAgICBjb25zdCBuYW1lcyA9IG5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJiBmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkRvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkRvd25sb2FkKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkKGZpbGUuZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxFeWVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dEb3dubG9hZEljb24gJiYgZmlsZS5zdGF0dXMgPT0gXCJkb25lXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25Eb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25Eb3dubG9hZChmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RG93bmxvYWRPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dSZW1vdmVJY29uICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVtb3ZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlbW92ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAge2ZpbGUuc3RhdHVzID09IFwidXBsb2FkaW5nXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInByb2Nlc3NcIil9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwZXJjZW50XCIpfVxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBmaWxlLnBlcmNlbnQgKyBcIiVcIiB9fVxyXG4gICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgb25Eb3dubG9hZDogKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25SZW1vdmU6IChmaWxlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3Q6IHsgLi4uc2hvd1VwbG9hZExpc3QgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPFVwbG9hZFxyXG4gICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3R9XHJcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxyXG4gICAgICAgICAgey4uLm5ld3Byb3BzfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPFBkZlZpZXdlciBmaWxlSWQ9e3RoaXMuc3RhdGUudmlld0lkfSAvPlxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOc2NVcGxvYWQpO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFPO0FBRTlCLE9BQU9DLElBQUksTUFBTSxVQUFVO0FBQzNCLE9BQU9DLE9BQU8sTUFBTSxZQUFZO0FBQ2hDLE9BQU9DLFlBQVksTUFBTSx3QkFBd0I7QUFDakQsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFDMUIsU0FBU0MsT0FBTyxRQUFRLGFBQWE7QUFDckMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBT0MsUUFBUSxNQUFNLG9CQUFvQjtBQUN6QyxTQUNFQyxjQUFjLEVBQ2RDLGdCQUFnQixFQUNoQkMsV0FBVyxRQUNOLG1CQUFtQjtBQUMxQixPQUFPQyxTQUFTLE1BQU0sYUFBYTtBQUNuQyxNQUFNO0VBQUVDLE1BQU07RUFBRUM7QUFBUyxDQUFDLEdBQUdiLElBQUk7QUFZakMsTUFBTWMsU0FBUyxTQUFTZixLQUFLLENBQUNnQixhQUFhLENBQW9CO0VBQUFDLFlBQUE7SUFBQSxTQUFBQyxTQUFBO0lBQUFDLGVBQUEsZ0JBQ3JEO01BQUVDLFFBQVEsRUFBRSxFQUFFO01BQUVD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
@@ -1 +0,0 @@
1
- {"version":3,"file":"index copy.js","names":["React","file","message","withZhLocale","omit","getLess","styles","cls","FileIcon","DeleteOutlined","DownloadOutlined","EyeOutlined","PdfViewer","upload","download","NscUpload","PureComponent","constructor","arguments","_defineProperty","fileList","viewId","options","onComplete","onProcess","sliceSize","props","maxSize","allowFileSuffix","checkFileType","error","concat","name","fileId","status","onError","size","onProgress","totalProgress","percent","res","partSize","code","data","attachId","onSuccess","e","componentDidMount","convertFileList","list","newFileList","oldList","map","item","temp","_objectSpread","fileName","push","setState","componentDidUpdate","preProps","preState","JSON","stringify","getFileList","state","setFileList","beforeUpload","onListChange","newList","uid","names","split","suffix","length","indexOf","_ref","newFile","onDelete","render","useDefaultList","fileCard","showUploadList","showDownloadIcon","showPreviewIcon","showRemoveIcon","downloadIcon","removeIcon","previewIcon","newprops","defaultProps","customRequest","bind","multiple","itemRender","originNode","currFileList","createElement","className","onClick","onDownload","style","cursor","onRemove","width","Fragment","_Upload","_extends"],"sources":["../../../src/components/base/upload/index copy.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Upload, UploadProps } from \"antd\";\r\nimport file from \"nsc-file\";\r\nimport message from \"../message\";\r\nimport withZhLocale from \"../common/withZhLocale\";\r\nimport omit from \"omit.js\";\r\nimport { getLess } from \"../../utils\";\r\nimport styles from \"./index.less\";\r\nimport cls from \"classnames\";\r\nimport FileIcon from \"../common/FileIcon\";\r\nimport {\r\n DeleteOutlined,\r\n DownloadOutlined,\r\n EyeOutlined,\r\n} from \"@ant-design/icons\";\r\nimport PdfViewer from \"../pdfviwer\";\r\nconst { upload, download } = file;\r\n\r\ninterface IUploadProps extends UploadProps {\r\n sliceSize?: number;\r\n maxSize?: number;\r\n onProcess?: (process) => void;\r\n onComplete?: ({ file, fileId, status }) => void;\r\n allowFileSuffix?: Array<String>; //允许上传扩展名,不带.\r\n useDefaultList?: boolean; //是否使用默认的fileList\r\n fileCard?: boolean;\r\n onListChange?: any;\r\n}\r\nclass NscUpload extends React.PureComponent<IUploadProps, any> {\r\n state = { fileList: [], viewId: \"\" };\r\n componentDidMount() {\r\n if (this.props.fileList) {\r\n this.convertFileList();\r\n }\r\n }\r\n convertFileList(list?: Array<Object>) {\r\n const { fileList } = this.props;\r\n const newFileList = [];\r\n let oldList = list ? list : fileList;\r\n oldList.map((item: any) => {\r\n let temp = { ...item };\r\n if (!item.name) {\r\n temp.name = item.fileName;\r\n }\r\n newFileList.push(temp);\r\n });\r\n this.setState({\r\n fileList: newFileList,\r\n });\r\n }\r\n componentDidUpdate(preProps, preState) {\r\n if (this.props.fileList) {\r\n if (\r\n JSON.stringify(preState.fileList) !==\r\n JSON.stringify(this.props.fileList)\r\n ) {\r\n this.convertFileList();\r\n }\r\n }\r\n }\r\n getFileList() {\r\n return this.state.fileList;\r\n }\r\n setFileList(fileList: Array<Object>) {\r\n this.convertFileList(fileList);\r\n }\r\n beforeUpload(file) {\r\n const { fileList } = this.state;\r\n const { onListChange } = this.props;\r\n const newList = [\r\n ...fileList,\r\n {\r\n fileName: file.name,\r\n percent: 0,\r\n status: \"uploading\",\r\n uid: file.uid,\r\n name: file.name,\r\n },\r\n ];\r\n this.setState({ fileList: newList });\r\n onListChange && onListChange(newList);\r\n }\r\n checkFileType(file) {\r\n const { allowFileSuffix } = this.props;\r\n const names = file.name.split(\".\");\r\n const suffix = names[names.length - 1];\r\n if (allowFileSuffix.indexOf(suffix) > -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n onProcess({ percent, file }: any) {\r\n const { fileList } = this.state;\r\n const { onListChange } = this.props;\r\n const newList: any = [];\r\n fileList.map((item: any) => {\r\n const newFile = { ...item };\r\n if (file.uid == item.uid) {\r\n newFile.percent = percent;\r\n }\r\n newList.push(newFile);\r\n });\r\n this.setState({\r\n fileList: newList,\r\n });\r\n onListChange && onListChange(newList);\r\n }\r\n onComplete(file) {\r\n const { fileList } = this.state;\r\n const { onListChange } = this.props;\r\n const newList: any = [];\r\n fileList.map((item: any) => {\r\n const newFile = { ...item };\r\n if (file.file.uid == item.uid) {\r\n newFile.status = file.status == \"success\" ? \"done\" : file.status;\r\n newFile.fileId = file.fileId;\r\n }\r\n newList.push(newFile);\r\n });\r\n this.setState({\r\n fileList: newList,\r\n });\r\n onListChange && onListChange(newList);\r\n }\r\n customRequest = async (options) => {\r\n const file = options.file;\r\n const { onComplete, onProcess, sliceSize } = this.props;\r\n const { maxSize, allowFileSuffix } = this.props;\r\n if (allowFileSuffix && !this.checkFileType(file)) {\r\n message.error(\r\n `${file.name}文件类型不允许上传,请上传后缀为${allowFileSuffix}的类型文件!`\r\n );\r\n onComplete &&\r\n onComplete({ file: options.file, fileId: \"\", status: \"error\" });\r\n options.onError();\r\n return false;\r\n }\r\n if (maxSize) {\r\n const size = maxSize * 1024 * 1024;\r\n if (size < file.size) {\r\n message.error(`${file.name}文件大小超过${maxSize}M,请重新上传!`);\r\n onComplete &&\r\n onComplete({ file: options.file, fileId: \"\", status: \"error\" });\r\n options.onError();\r\n return false;\r\n }\r\n }\r\n const onProgress = (totalProgress: any) => {\r\n options.onProgress({ percent: totalProgress }, file);\r\n this.onProcess({ percent: totalProgress, file: file });\r\n onProcess && onProcess({ percent: totalProgress, file: file });\r\n };\r\n try {\r\n const res: any = await upload({\r\n file: file,\r\n onProgress: onProgress,\r\n partSize: sliceSize,\r\n });\r\n let fileId = null;\r\n if (res.code == 200) {\r\n fileId = res.data.attachId;\r\n options.onSuccess();\r\n } else {\r\n options.onError();\r\n }\r\n this.onComplete({\r\n file: options.file,\r\n fileId: fileId,\r\n status: res.code == 200 ? \"success\" : \"error\",\r\n });\r\n onComplete &&\r\n onComplete({\r\n file: options.file,\r\n fileId: fileId,\r\n status: res.code == 200 ? \"success\" : \"error\",\r\n });\r\n } catch (e) {\r\n this.onComplete({\r\n file: options.file,\r\n fileId: \"\",\r\n status: \"error\",\r\n });\r\n onComplete &&\r\n onComplete({ file: options.file, fileId: \"\", status: \"error\" });\r\n options.onError();\r\n }\r\n };\r\n onDelete(file) {\r\n const { fileList } = this.state;\r\n const { onListChange } = this.props;\r\n const newList: any = [];\r\n fileList.map((item: any) => {\r\n if (item.fileId !== file.fileId || item.uid !== file.uid) {\r\n newList.push(item);\r\n }\r\n });\r\n this.setState({\r\n fileList: newList,\r\n });\r\n onListChange && onListChange(newList);\r\n }\r\n render(): React.ReactNode {\r\n let {\r\n useDefaultList,\r\n fileList,\r\n fileCard,\r\n showUploadList = {\r\n showDownloadIcon: true,\r\n showPreviewIcon: false,\r\n showRemoveIcon: true,\r\n downloadIcon: null,\r\n removeIcon: null,\r\n previewIcon: null,\r\n } as any,\r\n } = this.props;\r\n let newFileList = this.state.fileList;\r\n if (useDefaultList && fileList) {\r\n newFileList = fileList;\r\n }\r\n const newprops = omit(this.props, [\r\n \"sliceSize\",\r\n \"maxSize\",\r\n \"onComplete\",\r\n \"onProcess\",\r\n \"allowFileSuffix\",\r\n \"useDefaultList\",\r\n \"fileCard\",\r\n \"onListChange\",\r\n ]);\r\n let defaultProps = {\r\n customRequest: this.customRequest.bind(this),\r\n multiple: true,\r\n beforeUpload: this.beforeUpload.bind(this),\r\n } as IUploadProps;\r\n if (fileCard) {\r\n defaultProps = {\r\n ...defaultProps,\r\n itemRender: (originNode, file: any, currFileList) => {\r\n const name = file.name || file.fileName;\r\n const names = name.split(\".\");\r\n const suffix = names ? names[names.length - 1] : \"\";\r\n return (\r\n <div className={getLess(styles, \"file-item\")}>\r\n <div\r\n className={cls(getLess(styles, \"content\"), {\r\n [getLess(styles, \"content_error\")]: file.status == \"error\",\r\n })}\r\n >\r\n <div className={getLess(styles, \"mark-picture\")}>\r\n <FileIcon suffix={suffix} fileId={file.fileId} />\r\n </div>\r\n <div className={getLess(styles, \"name\")}>\r\n {file.name || file.fileName}\r\n </div>\r\n <div className={getLess(styles, \"icon\")}>\r\n {showUploadList.showPreviewIcon && file.status == \"done\" && (\r\n <div\r\n onClick={() => {\r\n if (this.props.onDownload) {\r\n this.props.onDownload(file);\r\n } else {\r\n download(file.fileId);\r\n }\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n {showUploadList.downloadIcon ? (\r\n showUploadList.downloadIcon\r\n ) : (\r\n <EyeOutlined />\r\n )}\r\n </div>\r\n )}\r\n {showUploadList.showDownloadIcon && file.status == \"done\" && (\r\n <div\r\n onClick={() => {\r\n if (this.props.onDownload) {\r\n this.props.onDownload(file);\r\n } else {\r\n download(file.fileId);\r\n }\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n {showUploadList.downloadIcon ? (\r\n showUploadList.downloadIcon\r\n ) : (\r\n <DownloadOutlined />\r\n )}\r\n </div>\r\n )}\r\n {showUploadList.showRemoveIcon && (\r\n <div\r\n onClick={() => {\r\n if (this.props.onRemove) {\r\n this.props.onRemove(file);\r\n } else {\r\n this.onDelete(file);\r\n }\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n {showUploadList.downloadIcon ? (\r\n showUploadList.downloadIcon\r\n ) : (\r\n <DeleteOutlined />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {file.status == \"uploading\" && (\r\n <div className={getLess(styles, \"process\")}>\r\n <div\r\n className={getLess(styles, \"percent\")}\r\n style={{ width: file.percent + \"%\" }}\r\n ></div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n },\r\n };\r\n } else {\r\n defaultProps = {\r\n ...defaultProps,\r\n onDownload: (file: any) => {\r\n download(file.fileId);\r\n },\r\n onRemove: (file) => {\r\n this.onDelete(file);\r\n },\r\n showUploadList: { ...showUploadList },\r\n };\r\n }\r\n return (\r\n <>\r\n <Upload\r\n fileList={this.state.fileList}\r\n {...defaultProps}\r\n {...newprops}\r\n />\r\n <PdfViewer fileId={this.state.viewId} />\r\n </>\r\n );\r\n }\r\n}\r\nexport default withZhLocale(NscUpload);\r\n"],"mappings":"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"}