vxe-table-plugin-export-xlsx-xhx 1.0.5 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,16 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports["default"] = exports.VXETablePluginExportXLSX = void 0;
7
+ var _xeUtils = _interopRequireDefault(require("xe-utils/methods/xe-utils"));
8
+ var _xlsx = _interopRequireDefault(require("xlsx"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
6
10
  /* eslint-disable no-unused-vars */
7
- var xe_utils_1 = require("xe-utils/methods/xe-utils");
8
- var xlsx_1 = require("xlsx");
11
+
9
12
  /* eslint-enable no-unused-vars */
10
13
  var _vxetable;
11
14
  function getCellLabel(column, cellValue) {
12
15
  if (cellValue) {
13
16
  switch (column.cellType) {
14
17
  case 'string':
15
- return xe_utils_1["default"].toValueString(cellValue);
18
+ // return _xeUtils["default"].toValueString(cellValue);
19
+ return _xeUtils.toValueString(cellValue);
16
20
  case 'number':
17
21
  if (!isNaN(cellValue)) {
18
22
  return Number(cellValue);
@@ -28,7 +32,9 @@ function getCellLabel(column, cellValue) {
28
32
  return cellValue;
29
33
  }
30
34
  function getFooterCellValue($table, opts, rows, column) {
31
- var cellValue = xe_utils_1["default"].toString(rows[$table.$getColumnIndex(column)]);
35
+ // var cellValue = _xeUtils["default"].toString(rows[$table.$getColumnIndex(column)]);
36
+ var cellValue = _xeUtils.toString(rows[$table.$getColumnIndex(column)]);
37
+
32
38
  return cellValue;
33
39
  }
34
40
  function toBuffer(wbout) {
@@ -57,7 +63,7 @@ function exportXLSX(params) {
57
63
  if (isHeader) {
58
64
  columns.forEach(function (column) {
59
65
  // colHead[column.id] = XEUtils.toString(original ? column.property : column.getTitle())
60
- colHead[column.id] = xe_utils_1["default"].toString(original ? column.property : column.getTitle());
66
+ colHead[column.id] = _xeUtils.toString(original ? column.property : column.getTitle());
61
67
  });
62
68
  }
63
69
  // 新增部分
@@ -69,7 +75,8 @@ function exportXLSX(params) {
69
75
  return rest;
70
76
  });
71
77
  if (isFooter) {
72
- var footerData = $table.getTableData().footerData;
78
+ var _$table$getTableData = $table.getTableData(),
79
+ footerData = _$table$getTableData.footerData;
73
80
  var footers = footerFilterMethod ? footerData.filter(footerFilterMethod) : footerData;
74
81
  footers.forEach(function (rows) {
75
82
  var item = {};
@@ -79,13 +86,13 @@ function exportXLSX(params) {
79
86
  footList.push(item);
80
87
  });
81
88
  }
82
- var book = xlsx_1["default"].utils.book_new();
83
- var sheet = xlsx_1["default"].utils.json_to_sheet((isHeader ? [colHead] : []).concat(rowList).concat(footList), {
89
+ var book = _xlsx.utils.book_new();
90
+ var sheet = _xlsx.utils.json_to_sheet((isHeader ? [colHead] : []).concat(rowList).concat(footList), {
84
91
  skipHeader: true
85
92
  });
86
93
  // 转换数据
87
- xlsx_1["default"].utils.book_append_sheet(book, sheet, sheetName);
88
- var wbout = xlsx_1["default"].write(book, {
94
+ _xlsx.utils.book_append_sheet(book, sheet, sheetName);
95
+ var wbout = _xlsx.write(book, {
89
96
  bookType: type,
90
97
  bookSST: false,
91
98
  type: 'binary'
@@ -107,11 +114,11 @@ function downloadFile(blob, options) {
107
114
  var filename = options.filename,
108
115
  type = options.type;
109
116
  if (navigator.msSaveBlob) {
110
- navigator.msSaveBlob(blob, filename + "." + type);
117
+ navigator.msSaveBlob(blob, "".concat(filename, ".").concat(type));
111
118
  } else {
112
119
  var linkElem = document.createElement('a');
113
120
  linkElem.target = '_blank';
114
- linkElem.download = filename + "." + type;
121
+ linkElem.download = "".concat(filename, ".").concat(type);
115
122
  linkElem.href = URL.createObjectURL(blob);
116
123
  document.body.appendChild(linkElem);
117
124
  linkElem.click();
@@ -133,13 +140,13 @@ function parseCsv(columns, content) {
133
140
  list[0].split(',').map(replaceDoubleQuotation);
134
141
  rList.forEach(function (r) {
135
142
  if (r) {
136
- var item_1 = {};
143
+ var item = {};
137
144
  r.split(',').forEach(function (val, colIndex) {
138
145
  if (fields[colIndex]) {
139
- item_1[fields[colIndex]] = replaceDoubleQuotation(val);
146
+ item[fields[colIndex]] = replaceDoubleQuotation(val);
140
147
  }
141
148
  });
142
- rows.push(item_1);
149
+ rows.push(item);
143
150
  }
144
151
  });
145
152
  }
@@ -168,13 +175,13 @@ function importXLSX(params) {
168
175
  var _importResolve = $table._importResolve;
169
176
  var fileReader = new FileReader();
170
177
  fileReader.onload = function (e) {
171
- var workbook = xlsx_1["default"].read(e.target.result, {
178
+ var workbook = _xlsx["default"].read(e.target.result, {
172
179
  type: 'binary'
173
180
  });
174
- var csvData = xlsx_1["default"].utils.sheet_to_csv(workbook.Sheets.Sheet1);
175
- var _a = parseCsv(columns, csvData),
176
- fields = _a.fields,
177
- rows = _a.rows;
181
+ var csvData = _xlsx["default"].utils.sheet_to_csv(workbook.Sheets.Sheet1);
182
+ var _parseCsv = parseCsv(columns, csvData),
183
+ fields = _parseCsv.fields,
184
+ rows = _parseCsv.rows;
178
185
  var status = checkImportData(columns, fields, rows);
179
186
  if (status) {
180
187
  $table.createData(rows).then(function (data) {
@@ -186,7 +193,7 @@ function importXLSX(params) {
186
193
  });
187
194
  if (options.message !== false) {
188
195
  _vxetable.modal.message({
189
- message: xe_utils_1["default"].template(_vxetable.t('vxe.table.impSuccess'), [rows.length]),
196
+ message: _xeUtils["default"].template(_vxetable.t('vxe.table.impSuccess'), [rows.length]),
190
197
  status: 'success'
191
198
  });
192
199
  }
@@ -218,7 +225,7 @@ function handleExportEvent(params) {
218
225
  /**
219
226
  * 基于 vxe-table 表格的增强插件,支持导出 xlsx 格式
220
227
  */
221
- exports.VXETablePluginExportXLSX = {
228
+ var VXETablePluginExportXLSX = {
222
229
  install: function install(xtable) {
223
230
  var interceptor = xtable.interceptor;
224
231
  _vxetable = xtable;
@@ -231,8 +238,10 @@ exports.VXETablePluginExportXLSX = {
231
238
  });
232
239
  }
233
240
  };
241
+ exports.VXETablePluginExportXLSX = VXETablePluginExportXLSX;
234
242
  if (typeof window !== 'undefined' && window.VXETable) {
235
- window.VXETable.use(exports.VXETablePluginExportXLSX);
243
+ window.VXETable.use(VXETablePluginExportXLSX);
236
244
  }
237
- exports["default"] = exports.VXETablePluginExportXLSX;
238
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIiwiaW5kZXgudHMiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJ4ZV91dGlsc18xIiwicmVxdWlyZSIsInhsc3hfMSIsIl92eGV0YWJsZSIsImdldENlbGxMYWJlbCIsImNvbHVtbiIsImNlbGxWYWx1ZSIsImNlbGxUeXBlIiwidG9WYWx1ZVN0cmluZyIsImlzTmFOIiwiTnVtYmVyIiwibGVuZ3RoIiwiZ2V0Rm9vdGVyQ2VsbFZhbHVlIiwiJHRhYmxlIiwib3B0cyIsInJvd3MiLCJ0b1N0cmluZyIsIiRnZXRDb2x1bW5JbmRleCIsInRvQnVmZmVyIiwid2JvdXQiLCJidWYiLCJBcnJheUJ1ZmZlciIsInZpZXciLCJVaW50OEFycmF5IiwiaW5kZXgiLCJjaGFyQ29kZUF0IiwiZXhwb3J0WExTWCIsInBhcmFtcyIsIm9wdGlvbnMiLCJjb2x1bW5zIiwiZGF0YXMiLCJzaGVldE5hbWUiLCJ0eXBlIiwiaXNIZWFkZXIiLCJpc0Zvb3RlciIsIm9yaWdpbmFsIiwibWVzc2FnZSIsImZvb3RlckZpbHRlck1ldGhvZCIsImNvbEhlYWQiLCJmb290TGlzdCIsImZvckVhY2giLCJpZCIsInByb3BlcnR5IiwiZ2V0VGl0bGUiLCJyb3dMaXN0IiwibWFwIiwiaXRlbSIsInJlc3QiLCJmb290ZXJEYXRhIiwiZ2V0VGFibGVEYXRhIiwiZm9vdGVycyIsImZpbHRlciIsInB1c2giLCJib29rIiwidXRpbHMiLCJib29rX25ldyIsInNoZWV0IiwianNvbl90b19zaGVldCIsImNvbmNhdCIsInNraXBIZWFkZXIiLCJib29rX2FwcGVuZF9zaGVldCIsIndyaXRlIiwiYm9va1R5cGUiLCJib29rU1NUIiwiYmxvYiIsIkJsb2IiLCJkb3dubG9hZEZpbGUiLCJtb2RhbCIsInQiLCJzdGF0dXMiLCJ3aW5kb3ciLCJmaWxlbmFtZSIsIm5hdmlnYXRvciIsIm1zU2F2ZUJsb2IiLCJsaW5rRWxlbSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInRhcmdldCIsImRvd25sb2FkIiwiaHJlZiIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmVtb3ZlQ2hpbGQiLCJjb25zb2xlIiwiZXJyb3IiLCJyZXBsYWNlRG91YmxlUXVvdGF0aW9uIiwidmFsIiwicmVwbGFjZSIsInBhcnNlQ3N2IiwiY29udGVudCIsImxpc3QiLCJzcGxpdCIsImZpZWxkcyIsInJMaXN0Iiwic2xpY2UiLCJyIiwiaXRlbV8xIiwiY29sSW5kZXgiLCJjaGVja0ltcG9ydERhdGEiLCJ0YWJsZUZpZWxkcyIsImZpZWxkIiwiZXZlcnkiLCJpbmNsdWRlcyIsImltcG9ydFhMU1giLCJmaWxlIiwiX2ltcG9ydFJlc29sdmUiLCJmaWxlUmVhZGVyIiwiRmlsZVJlYWRlciIsIm9ubG9hZCIsImUiLCJ3b3JrYm9vayIsInJlYWQiLCJyZXN1bHQiLCJjc3ZEYXRhIiwic2hlZXRfdG9fY3N2IiwiU2hlZXRzIiwiU2hlZXQxIiwiX2EiLCJjcmVhdGVEYXRhIiwidGhlbiIsImRhdGEiLCJtb2RlIiwiaW5zZXJ0QXQiLCJyZWxvYWREYXRhIiwidGVtcGxhdGUiLCJyZWFkQXNCaW5hcnlTdHJpbmciLCJoYW5kbGVJbXBvcnRFdmVudCIsImhhbmRsZUV4cG9ydEV2ZW50IiwiVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYIiwiaW5zdGFsbCIsInh0YWJsZSIsImludGVyY2VwdG9yIiwiYXNzaWduIiwidHlwZXMiLCJ4bHN4IiwibWl4aW4iLCJWWEVUYWJsZSIsInVzZSJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFDWkEsTUFBTSxDQUFDQyxjQUFjLENBQUNDLE9BQU8sRUFBRSxZQUFZLEVBQUU7RUFBRUMsS0FBSyxFQUFFO0FBQUssQ0FBQyxDQUFDO0FDRDdEO0FBQ0EsSUFBQUMsVUFBQSxHQUFBQyxPQUFBLENBQUEsMkJBQUEsQ0FBQTtBQVNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQSxDQUFBLE1BQUEsQ0FBQTtBQUNB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QUE7SUFDdEIsSUFBQUMsV0FBQSxHQUFBRCxNQUFBLENBQUFDLFdBQVc7SUFDbkJuSSxTQUFTLEdBQUdrSSxNQUFNO0lBQ2xCekksTUFBTSxDQUFDMkksTUFBTSxDQUFDRixNQUFNLENBQUNHLEtBQUssRUFBRTtNQUFFQyxJQUFJLEVBQUU7SUFBQyxDQUFFLENBQUM7SUFDeENILFdBQVcsQ0FBQ0ksS0FBSyxDQUFDO01BQ2hCLGNBQWMsRUFBRVQsaUJBQWlCO01BQ2pDLGNBQWMsRUFBRUM7SURuQmQsQ0NvQkgsQ0FBQztFQUNKO0FEbkJGLENDb0JDO0FBRUQsSUFBSSxPQUFPNUQsTUFBTSxLQUFLLFdBQVcsSUFBSUEsTUFBTSxDQUFDcUUsUUFBUSxFQUFFO0VBQ3BEckUsTUFBTSxDQUFDcUUsUUFBUSxDQUFDQyxHQUFHLENBQUM5SSxPQUFBLENBQUFxSSx3QkFBd0IsQ0FBQztBRHBCL0M7QUN1QkFySSxPQUFBLFdBQUEsR0FBZUEsT0FBQSxDQUFBcUksd0JBQXdCIiwiZmlsZSI6ImluZGV4LmNvbW1vbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbnZhciB4ZV91dGlsc18xID0gcmVxdWlyZShcInhlLXV0aWxzL21ldGhvZHMveGUtdXRpbHNcIik7XG52YXIgeGxzeF8xID0gcmVxdWlyZShcInhsc3hcIik7XG4vKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgX3Z4ZXRhYmxlO1xuZnVuY3Rpb24gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgY2VsbFZhbHVlKSB7XG4gICAgaWYgKGNlbGxWYWx1ZSkge1xuICAgICAgICBzd2l0Y2ggKGNvbHVtbi5jZWxsVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geGVfdXRpbHNfMS5kZWZhdWx0LnRvVmFsdWVTdHJpbmcoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgaWYgKCFpc05hTihjZWxsVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChjZWxsVmFsdWUubGVuZ3RoIDwgMTIgJiYgIWlzTmFOKGNlbGxWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcihjZWxsVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2VsbFZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0cywgcm93cywgY29sdW1uKSB7XG4gICAgdmFyIGNlbGxWYWx1ZSA9IHhlX3V0aWxzXzEuZGVmYXVsdC50b1N0cmluZyhyb3dzWyR0YWJsZS4kZ2V0Q29sdW1uSW5kZXgoY29sdW1uKV0pO1xuICAgIHJldHVybiBjZWxsVmFsdWU7XG59XG5mdW5jdGlvbiB0b0J1ZmZlcih3Ym91dCkge1xuICAgIHZhciBidWYgPSBuZXcgQXJyYXlCdWZmZXIod2JvdXQubGVuZ3RoKTtcbiAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCAhPT0gd2JvdXQubGVuZ3RoOyArK2luZGV4KVxuICAgICAgICB2aWV3W2luZGV4XSA9IHdib3V0LmNoYXJDb2RlQXQoaW5kZXgpICYgMHhGRjtcbiAgICByZXR1cm4gYnVmO1xufVxuZnVuY3Rpb24gZXhwb3J0WExTWChwYXJhbXMpIHtcbiAgICB2YXIgJHRhYmxlID0gcGFyYW1zLiR0YWJsZSwgb3B0aW9ucyA9IHBhcmFtcy5vcHRpb25zLCBjb2x1bW5zID0gcGFyYW1zLmNvbHVtbnMsIGRhdGFzID0gcGFyYW1zLmRhdGFzO1xuICAgIHZhciBzaGVldE5hbWUgPSBvcHRpb25zLnNoZWV0TmFtZSwgdHlwZSA9IG9wdGlvbnMudHlwZSwgaXNIZWFkZXIgPSBvcHRpb25zLmlzSGVhZGVyLCBpc0Zvb3RlciA9IG9wdGlvbnMuaXNGb290ZXIsIG9yaWdpbmFsID0gb3B0aW9ucy5vcmlnaW5hbCwgbWVzc2FnZSA9IG9wdGlvbnMubWVzc2FnZSwgZm9vdGVyRmlsdGVyTWV0aG9kID0gb3B0aW9ucy5mb290ZXJGaWx0ZXJNZXRob2Q7XG4gICAgdmFyIGNvbEhlYWQgPSB7fTtcbiAgICB2YXIgZm9vdExpc3QgPSBbXTtcbiAgICAvLyBjb25zdCByb3dMaXN0ID0gZGF0YXNcbiAgICBpZiAoaXNIZWFkZXIpIHtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgICAgIC8vIGNvbEhlYWRbY29sdW1uLmlkXSA9IFhFVXRpbHMudG9TdHJpbmcob3JpZ2luYWwgPyBjb2x1bW4ucHJvcGVydHkgOiBjb2x1bW4uZ2V0VGl0bGUoKSlcbiAgICAgICAgICAgIGNvbEhlYWRbY29sdW1uLmlkXSA9IHhlX3V0aWxzXzEuZGVmYXVsdC50b1N0cmluZyhvcmlnaW5hbCA/IGNvbHVtbi5wcm9wZXJ0eSA6IGNvbHVtbi5nZXRUaXRsZSgpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIOaWsOWinumDqOWIhlxuICAgIHZhciByb3dMaXN0ID0gZGF0YXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHZhciByZXN0ID0ge307XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgICAgICAgICByZXN0W2NvbHVtbi5pZF0gPSBnZXRDZWxsTGFiZWwoY29sdW1uLCBpdGVtW2NvbHVtbi5pZF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3Q7XG4gICAgfSk7XG4gICAgaWYgKGlzRm9vdGVyKSB7XG4gICAgICAgIHZhciBmb290ZXJEYXRhID0gJHRhYmxlLmdldFRhYmxlRGF0YSgpLmZvb3RlckRhdGE7XG4gICAgICAgIHZhciBmb290ZXJzID0gZm9vdGVyRmlsdGVyTWV0aG9kID8gZm9vdGVyRGF0YS5maWx0ZXIoZm9vdGVyRmlsdGVyTWV0aG9kKSA6IGZvb3RlckRhdGE7XG4gICAgICAgIGZvb3RlcnMuZm9yRWFjaChmdW5jdGlvbiAocm93cykge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSB7fTtcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgaXRlbVtjb2x1bW4uaWRdID0gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0aW9ucywgcm93cywgY29sdW1uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9vdExpc3QucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHZhciBib29rID0geGxzeF8xLmRlZmF1bHQudXRpbHMuYm9va19uZXcoKTtcbiAgICB2YXIgc2hlZXQgPSB4bHN4XzEuZGVmYXVsdC51dGlscy5qc29uX3RvX3NoZWV0KChpc0hlYWRlciA/IFtjb2xIZWFkXSA6IFtdKS5jb25jYXQocm93TGlzdCkuY29uY2F0KGZvb3RMaXN0KSwgeyBza2lwSGVhZGVyOiB0cnVlIH0pO1xuICAgIC8vIOi9rOaNouaVsOaNrlxuICAgIHhsc3hfMS5kZWZhdWx0LnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KGJvb2ssIHNoZWV0LCBzaGVldE5hbWUpO1xuICAgIHZhciB3Ym91dCA9IHhsc3hfMS5kZWZhdWx0LndyaXRlKGJvb2ssIHsgYm9va1R5cGU6IHR5cGUsIGJvb2tTU1Q6IGZhbHNlLCB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFt0b0J1ZmZlcih3Ym91dCldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xuICAgIC8vIOS/neWtmOWvvOWHulxuICAgIGRvd25sb2FkRmlsZShibG9iLCBvcHRpb25zKTtcbiAgICBpZiAobWVzc2FnZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLnRhYmxlLmV4cFN1Y2Nlc3MnKSwgc3RhdHVzOiAnc3VjY2VzcycgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gZG93bmxvYWRGaWxlKGJsb2IsIG9wdGlvbnMpIHtcbiAgICBpZiAod2luZG93LkJsb2IpIHtcbiAgICAgICAgdmFyIGZpbGVuYW1lID0gb3B0aW9ucy5maWxlbmFtZSwgdHlwZSA9IG9wdGlvbnMudHlwZTtcbiAgICAgICAgaWYgKG5hdmlnYXRvci5tc1NhdmVCbG9iKSB7XG4gICAgICAgICAgICBuYXZpZ2F0b3IubXNTYXZlQmxvYihibG9iLCBmaWxlbmFtZSArIFwiLlwiICsgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbGlua0VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgICAgICBsaW5rRWxlbS50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgICAgIGxpbmtFbGVtLmRvd25sb2FkID0gZmlsZW5hbWUgKyBcIi5cIiArIHR5cGU7XG4gICAgICAgICAgICBsaW5rRWxlbS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGlua0VsZW0pO1xuICAgICAgICAgICAgbGlua0VsZW0uY2xpY2soKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGlua0VsZW0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKF92eGV0YWJsZS50KCd2eGUuZXJyb3Iubm90RXhwJykpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlcGxhY2VEb3VibGVRdW90YXRpb24odmFsKSB7XG4gICAgcmV0dXJuIHZhbC5yZXBsYWNlKC9eXCIvLCAnJykucmVwbGFjZSgvXCIkLywgJycpO1xufVxuZnVuY3Rpb24gcGFyc2VDc3YoY29sdW1ucywgY29udGVudCkge1xuICAgIHZhciBsaXN0ID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG4gICAgdmFyIGZpZWxkcyA9IFtdO1xuICAgIHZhciByb3dzID0gW107XG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIHZhciByTGlzdCA9IGxpc3Quc2xpY2UoMSk7XG4gICAgICAgIGxpc3RbMF0uc3BsaXQoJywnKS5tYXAocmVwbGFjZURvdWJsZVF1b3RhdGlvbik7XG4gICAgICAgIHJMaXN0LmZvckVhY2goZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1fMSA9IHt9O1xuICAgICAgICAgICAgICAgIHIuc3BsaXQoJywnKS5mb3JFYWNoKGZ1bmN0aW9uICh2YWwsIGNvbEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZHNbY29sSW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtXzFbZmllbGRzW2NvbEluZGV4XV0gPSByZXBsYWNlRG91YmxlUXVvdGF0aW9uKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByb3dzLnB1c2goaXRlbV8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7IGZpZWxkczogZmllbGRzLCByb3dzOiByb3dzIH07XG59XG5mdW5jdGlvbiBjaGVja0ltcG9ydERhdGEoY29sdW1ucywgZmllbGRzLCByb3dzKSB7XG4gICAgdmFyIHRhYmxlRmllbGRzID0gW107XG4gICAgY29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgdmFyIGZpZWxkID0gY29sdW1uLnByb3BlcnR5O1xuICAgICAgICBpZiAoZmllbGQpIHtcbiAgICAgICAgICAgIHRhYmxlRmllbGRzLnB1c2goZmllbGQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRhYmxlRmllbGRzLmV2ZXJ5KGZ1bmN0aW9uIChmaWVsZCkgeyByZXR1cm4gZmllbGRzLmluY2x1ZGVzKGZpZWxkKTsgfSk7XG59XG5mdW5jdGlvbiBpbXBvcnRYTFNYKHBhcmFtcykge1xuICAgIHZhciBjb2x1bW5zID0gcGFyYW1zLmNvbHVtbnMsIG9wdGlvbnMgPSBwYXJhbXMub3B0aW9ucywgZmlsZSA9IHBhcmFtcy5maWxlO1xuICAgIHZhciAkdGFibGUgPSBwYXJhbXMuJHRhYmxlO1xuICAgIHZhciBfaW1wb3J0UmVzb2x2ZSA9ICR0YWJsZS5faW1wb3J0UmVzb2x2ZTtcbiAgICB2YXIgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgZmlsZVJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgd29ya2Jvb2sgPSB4bHN4XzEuZGVmYXVsdC5yZWFkKGUudGFyZ2V0LnJlc3VsdCwgeyB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICAgICAgdmFyIGNzdkRhdGEgPSB4bHN4XzEuZGVmYXVsdC51dGlscy5zaGVldF90b19jc3Yod29ya2Jvb2suU2hlZXRzLlNoZWV0MSk7XG4gICAgICAgIHZhciBfYSA9IHBhcnNlQ3N2KGNvbHVtbnMsIGNzdkRhdGEpLCBmaWVsZHMgPSBfYS5maWVsZHMsIHJvd3MgPSBfYS5yb3dzO1xuICAgICAgICB2YXIgc3RhdHVzID0gY2hlY2tJbXBvcnREYXRhKGNvbHVtbnMsIGZpZWxkcywgcm93cyk7XG4gICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICR0YWJsZS5jcmVhdGVEYXRhKHJvd3MpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09PSAnYXBwZW5kJykge1xuICAgICAgICAgICAgICAgICAgICAkdGFibGUuaW5zZXJ0QXQoZGF0YSwgLTEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJHRhYmxlLnJlbG9hZERhdGEoZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogeGVfdXRpbHNfMS5kZWZhdWx0LnRlbXBsYXRlKF92eGV0YWJsZS50KCd2eGUudGFibGUuaW1wU3VjY2VzcycpLCBbcm93cy5sZW5ndGhdKSwgc3RhdHVzOiAnc3VjY2VzcycgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLmVycm9yLmltcEZpZWxkcycpLCBzdGF0dXM6ICdlcnJvcicgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9pbXBvcnRSZXNvbHZlKSB7XG4gICAgICAgICAgICBfaW1wb3J0UmVzb2x2ZShzdGF0dXMpO1xuICAgICAgICAgICAgJHRhYmxlLl9pbXBvcnRSZXNvbHZlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG59XG5mdW5jdGlvbiBoYW5kbGVJbXBvcnRFdmVudChwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLm9wdGlvbnMudHlwZSA9PT0gJ3hsc3gnKSB7XG4gICAgICAgIGltcG9ydFhMU1gocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGhhbmRsZUV4cG9ydEV2ZW50KHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcbiAgICAgICAgZXhwb3J0WExTWChwYXJhbXMpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuLyoqXG4gKiDln7rkuo4gdnhlLXRhYmxlIOihqOagvOeahOWinuW8uuaPkuS7tu+8jOaUr+aMgeWvvOWHuiB4bHN4IOagvOW8j1xuICovXG5leHBvcnRzLlZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWCA9IHtcbiAgICBpbnN0YWxsOiBmdW5jdGlvbiAoeHRhYmxlKSB7XG4gICAgICAgIHZhciBpbnRlcmNlcHRvciA9IHh0YWJsZS5pbnRlcmNlcHRvcjtcbiAgICAgICAgX3Z4ZXRhYmxlID0geHRhYmxlO1xuICAgICAgICBPYmplY3QuYXNzaWduKHh0YWJsZS50eXBlcywgeyB4bHN4OiAxIH0pO1xuICAgICAgICBpbnRlcmNlcHRvci5taXhpbih7XG4gICAgICAgICAgICAnZXZlbnQuaW1wb3J0JzogaGFuZGxlSW1wb3J0RXZlbnQsXG4gICAgICAgICAgICAnZXZlbnQuZXhwb3J0JzogaGFuZGxlRXhwb3J0RXZlbnRcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVlhFVGFibGUpIHtcbiAgICB3aW5kb3cuVlhFVGFibGUudXNlKGV4cG9ydHMuVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYKTtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGV4cG9ydHMuVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYO1xuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuaW1wb3J0IFhFVXRpbHMgZnJvbSAneGUtdXRpbHMvbWV0aG9kcy94ZS11dGlscydcclxuaW1wb3J0IHtcclxuICBWWEVUYWJsZSxcclxuICBUYWJsZSxcclxuICBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcyxcclxuICBJbnRlcmNlcHRvckltcG9ydFBhcmFtcyxcclxuICBDb2x1bW5Db25maWcsXHJcbiAgRXhwb3J0T3B0b25zXHJcbn0gZnJvbSAndnhlLXRhYmxlL2xpYi92eGUtdGFibGUnXHJcbmltcG9ydCBYTFNYIGZyb20gJ3hsc3gnXHJcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuXHJcbmxldCBfdnhldGFibGU6IHR5cGVvZiBWWEVUYWJsZVxyXG5cclxuXHJcbmZ1bmN0aW9uIGdldENlbGxMYWJlbCAoY29sdW1uOiBDb2x1bW5Db25maWcsIGNlbGxWYWx1ZTogYW55KSB7XHJcbiAgaWYgKGNlbGxWYWx1ZSkge1xyXG4gICAgc3dpdGNoIChjb2x1bW4uY2VsbFR5cGUpIHtcclxuICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICByZXR1cm4gWEVVdGlscy50b1ZhbHVlU3RyaW5nKGNlbGxWYWx1ZSlcclxuICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICBpZiAoIWlzTmFOKGNlbGxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmIChjZWxsVmFsdWUubGVuZ3RoIDwgMTIgJiYgIWlzTmFOKGNlbGxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY2VsbFZhbHVlXHJcbn1cclxuXHJcblxyXG5cclxuZnVuY3Rpb24gZ2V0Rm9vdGVyQ2VsbFZhbHVlICgkdGFibGU6IFRhYmxlLCBvcHRzOiBFeHBvcnRPcHRvbnMsIHJvd3M6IGFueVtdLCBjb2x1bW46IENvbHVtbkNvbmZpZykge1xyXG4gIHZhciBjZWxsVmFsdWUgPSBYRVV0aWxzLnRvU3RyaW5nKHJvd3NbJHRhYmxlLiRnZXRDb2x1bW5JbmRleChjb2x1bW4pXSlcclxuICByZXR1cm4gY2VsbFZhbHVlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvQnVmZmVyICh3Ym91dDogYW55KSB7XHJcbiAgbGV0IGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcih3Ym91dC5sZW5ndGgpXHJcbiAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCAhPT0gd2JvdXQubGVuZ3RoOyArK2luZGV4KSB2aWV3W2luZGV4XSA9IHdib3V0LmNoYXJDb2RlQXQoaW5kZXgpICYgMHhGRlxyXG4gIHJldHVybiBidWZcclxufVxyXG5cclxuZnVuY3Rpb24gZXhwb3J0WExTWCAocGFyYW1zOiBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcykge1xyXG4gIGNvbnN0IHsgJHRhYmxlLCBvcHRpb25zLCBjb2x1bW5zLCBkYXRhcyB9ID0gcGFyYW1zXHJcbiAgY29uc3QgeyBzaGVldE5hbWUsIHR5cGUsIGlzSGVhZGVyLCBpc0Zvb3Rlciwgb3JpZ2luYWwsIG1lc3NhZ2UsIGZvb3RlckZpbHRlck1ldGhvZCB9ID0gb3B0aW9uc1xyXG4gIGNvbnN0IGNvbEhlYWQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fVxyXG4gIGNvbnN0IGZvb3RMaXN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXVxyXG4gIC8vIGNvbnN0IHJvd0xpc3QgPSBkYXRhc1xyXG5cclxuICBpZiAoaXNIZWFkZXIpIHtcclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIC8vIGNvbEhlYWRbY29sdW1uLmlkXSA9IFhFVXRpbHMudG9TdHJpbmcob3JpZ2luYWwgPyBjb2x1bW4ucHJvcGVydHkgOiBjb2x1bW4uZ2V0VGl0bGUoKSlcclxuICAgICAgY29sSGVhZFtjb2x1bW4uaWRdID0gWEVVdGlscy50b1N0cmluZyhvcmlnaW5hbCA/IGNvbHVtbi5wcm9wZXJ0eSA6IGNvbHVtbi5nZXRUaXRsZSgpKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIOaWsOWinumDqOWIhlxyXG4gIGNvbnN0IHJvd0xpc3QgPSBkYXRhcy5tYXAoaXRlbSA9PiB7XHJcbiAgICBjb25zdCByZXN0OiBhbnkgPSB7fVxyXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgcmVzdFtjb2x1bW4uaWRdID0gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgaXRlbVtjb2x1bW4uaWRdKVxyXG4gICAgfSlcclxuICAgIHJldHVybiByZXN0XHJcbiAgfSlcclxuXHJcbiAgaWYgKGlzRm9vdGVyKSB7XHJcbiAgICBjb25zdCB7IGZvb3RlckRhdGEgfSA9ICR0YWJsZS5nZXRUYWJsZURhdGEoKVxyXG4gICAgY29uc3QgZm9vdGVycyA9IGZvb3RlckZpbHRlck1ldGhvZCA/IGZvb3RlckRhdGEuZmlsdGVyKGZvb3RlckZpbHRlck1ldGhvZCkgOiBmb290ZXJEYXRhXHJcbiAgICBmb290ZXJzLmZvckVhY2goKHJvd3MpID0+IHtcclxuICAgICAgY29uc3QgaXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uaWRdID0gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0aW9ucywgcm93cywgY29sdW1uKVxyXG4gICAgICB9KVxyXG4gICAgICBmb290TGlzdC5wdXNoKGl0ZW0pXHJcbiAgICB9KVxyXG4gIH1cclxuICBjb25zdCBib29rID0gWExTWC51dGlscy5ib29rX25ldygpXHJcbiAgY29uc3Qgc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoKGlzSGVhZGVyID8gW2NvbEhlYWRdIDogW10pLmNvbmNhdChyb3dMaXN0KS5jb25jYXQoZm9vdExpc3QpLCB7IHNraXBIZWFkZXI6IHRydWUgfSlcclxuICAvLyDovazmjaLmlbDmja5cclxuICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KGJvb2ssIHNoZWV0LCBzaGVldE5hbWUpXHJcbiAgY29uc3Qgd2JvdXQgPSBYTFNYLndyaXRlKGJvb2ssIHsgYm9va1R5cGU6IHR5cGUsIGJvb2tTU1Q6IGZhbHNlLCB0eXBlOiAnYmluYXJ5JyB9KVxyXG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdG9CdWZmZXIod2JvdXQpXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KVxyXG4gIC8vIOS/neWtmOWvvOWHulxyXG4gIGRvd25sb2FkRmlsZShibG9iLCBvcHRpb25zKVxyXG4gIGlmIChtZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLnRhYmxlLmV4cFN1Y2Nlc3MnKSwgc3RhdHVzOiAnc3VjY2VzcycgfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRvd25sb2FkRmlsZSAoYmxvYjogQmxvYiwgb3B0aW9uczogRXhwb3J0T3B0b25zKSB7XHJcbiAgaWYgKHdpbmRvdy5CbG9iKSB7XHJcbiAgICBjb25zdCB7IGZpbGVuYW1lLCB0eXBlIH0gPSBvcHRpb25zXHJcbiAgICBpZiAobmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHtcclxuICAgICAgbmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYiwgYCR7ZmlsZW5hbWV9LiR7dHlwZX1gKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGxpbmtFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgIGxpbmtFbGVtLnRhcmdldCA9ICdfYmxhbmsnXHJcbiAgICAgIGxpbmtFbGVtLmRvd25sb2FkID0gYCR7ZmlsZW5hbWV9LiR7dHlwZX1gXHJcbiAgICAgIGxpbmtFbGVtLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGlua0VsZW0pXHJcbiAgICAgIGxpbmtFbGVtLmNsaWNrKClcclxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rRWxlbSlcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5lcnJvcihfdnhldGFibGUudCgndnhlLmVycm9yLm5vdEV4cCcpKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVwbGFjZURvdWJsZVF1b3RhdGlvbiAodmFsOiBzdHJpbmcpIHtcclxuICByZXR1cm4gdmFsLnJlcGxhY2UoL15cIi8sICcnKS5yZXBsYWNlKC9cIiQvLCAnJylcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VDc3YgKGNvbHVtbnM6IENvbHVtbkNvbmZpZ1tdLCBjb250ZW50OiBzdHJpbmcpIHtcclxuICBjb25zdCBsaXN0ID0gY29udGVudC5zcGxpdCgnXFxuJylcclxuICBjb25zdCBmaWVsZHM6IHN0cmluZ1tdID0gW11cclxuICBjb25zdCByb3dzOiBhbnlbXSA9IFtdXHJcbiAgaWYgKGxpc3QubGVuZ3RoKSB7XHJcbiAgICBjb25zdCByTGlzdCA9IGxpc3Quc2xpY2UoMSlcclxuICAgIGxpc3RbMF0uc3BsaXQoJywnKS5tYXAocmVwbGFjZURvdWJsZVF1b3RhdGlvbilcclxuICAgIHJMaXN0LmZvckVhY2goKHIpID0+IHtcclxuICAgICAgaWYgKHIpIHtcclxuICAgICAgICBjb25zdCBpdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cclxuICAgICAgICByLnNwbGl0KCcsJykuZm9yRWFjaCgodmFsLCBjb2xJbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpZWxkc1tjb2xJbmRleF0pIHtcclxuICAgICAgICAgICAgaXRlbVtmaWVsZHNbY29sSW5kZXhdXSA9IHJlcGxhY2VEb3VibGVRdW90YXRpb24odmFsKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcm93cy5wdXNoKGl0ZW0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHJldHVybiB7IGZpZWxkcywgcm93cyB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrSW1wb3J0RGF0YSAoY29sdW1uczogQ29sdW1uQ29uZmlnW10sIGZpZWxkczogc3RyaW5nW10sIHJvd3M6IGFueVtdKSB7XHJcbiAgbGV0IHRhYmxlRmllbGRzOiBzdHJpbmdbXSA9IFtdXHJcbiAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgIGxldCBmaWVsZCA9IGNvbHVtbi5wcm9wZXJ0eVxyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIHRhYmxlRmllbGRzLnB1c2goZmllbGQpXHJcbiAgICB9XHJcbiAgfSlcclxuICByZXR1cm4gdGFibGVGaWVsZHMuZXZlcnkoKGZpZWxkKSA9PiBmaWVsZHMuaW5jbHVkZXMoZmllbGQpKVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbXBvcnRYTFNYIChwYXJhbXM6IEludGVyY2VwdG9ySW1wb3J0UGFyYW1zKSB7XHJcbiAgY29uc3QgeyBjb2x1bW5zLCBvcHRpb25zLCBmaWxlIH0gPSBwYXJhbXNcclxuICBjb25zdCAkdGFibGU6IGFueSA9IHBhcmFtcy4kdGFibGVcclxuICBjb25zdCB7IF9pbXBvcnRSZXNvbHZlIH0gPSAkdGFibGVcclxuICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxyXG4gIGZpbGVSZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBYTFNYLnJlYWQoZS50YXJnZXQucmVzdWx0LCB7IHR5cGU6ICdiaW5hcnknIH0pXHJcbiAgICBjb25zdCBjc3ZEYXRhOiBzdHJpbmcgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2Nzdih3b3JrYm9vay5TaGVldHMuU2hlZXQxKVxyXG4gICAgY29uc3QgeyBmaWVsZHMsIHJvd3MgfSA9IHBhcnNlQ3N2KGNvbHVtbnMsIGNzdkRhdGEpXHJcbiAgICBjb25zdCBzdGF0dXMgPSBjaGVja0ltcG9ydERhdGEoY29sdW1ucywgZmllbGRzLCByb3dzKVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICAkdGFibGUuY3JlYXRlRGF0YShyb3dzKVxyXG4gICAgICAgIC50aGVuKChkYXRhOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PT0gJ2FwcGVuZCcpIHtcclxuICAgICAgICAgICAgJHRhYmxlLmluc2VydEF0KGRhdGEsIC0xKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJHRhYmxlLnJlbG9hZERhdGEoZGF0YSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogWEVVdGlscy50ZW1wbGF0ZShfdnhldGFibGUudCgndnhlLnRhYmxlLmltcFN1Y2Nlc3MnKSwgW3Jvd3MubGVuZ3RoXSksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IF92eGV0YWJsZS50KCd2eGUuZXJyb3IuaW1wRmllbGRzJyksIHN0YXR1czogJ2Vycm9yJyB9KVxyXG4gICAgfVxyXG4gICAgaWYgKF9pbXBvcnRSZXNvbHZlKSB7XHJcbiAgICAgIF9pbXBvcnRSZXNvbHZlKHN0YXR1cylcclxuICAgICAgJHRhYmxlLl9pbXBvcnRSZXNvbHZlID0gbnVsbFxyXG4gICAgfVxyXG4gIH1cclxuICBmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVJbXBvcnRFdmVudCAocGFyYW1zOiBJbnRlcmNlcHRvckltcG9ydFBhcmFtcykge1xyXG4gIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcclxuICAgIGltcG9ydFhMU1gocGFyYW1zKVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVFeHBvcnRFdmVudCAocGFyYW1zOiBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcykge1xyXG4gIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcclxuICAgIGV4cG9ydFhMU1gocGFyYW1zKVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICog5Z+65LqOIHZ4ZS10YWJsZSDooajmoLznmoTlop7lvLrmj5Lku7bvvIzmlK/mjIHlr7zlh7ogeGxzeCDmoLzlvI9cclxuICovXHJcbmV4cG9ydCBjb25zdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1ggPSB7XHJcbiAgaW5zdGFsbCAoeHRhYmxlOiB0eXBlb2YgVlhFVGFibGUpIHtcclxuICAgIGNvbnN0IHsgaW50ZXJjZXB0b3IgfSA9IHh0YWJsZVxyXG4gICAgX3Z4ZXRhYmxlID0geHRhYmxlXHJcbiAgICBPYmplY3QuYXNzaWduKHh0YWJsZS50eXBlcywgeyB4bHN4OiAxIH0pXHJcbiAgICBpbnRlcmNlcHRvci5taXhpbih7XHJcbiAgICAgICdldmVudC5pbXBvcnQnOiBoYW5kbGVJbXBvcnRFdmVudCxcclxuICAgICAgJ2V2ZW50LmV4cG9ydCc6IGhhbmRsZUV4cG9ydEV2ZW50XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5WWEVUYWJsZSkge1xyXG4gIHdpbmRvdy5WWEVUYWJsZS51c2UoVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYKVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1hcclxuIl19
245
+ var _default = VXETablePluginExportXLSX;
246
+ exports["default"] = _default;
247
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIiwiaW5kZXguanMiXSwibmFtZXMiOlsiX3Z4ZXRhYmxlIiwiZ2V0Q2VsbExhYmVsIiwiY29sdW1uIiwiY2VsbFZhbHVlIiwiY2VsbFR5cGUiLCJYRVV0aWxzIiwidG9WYWx1ZVN0cmluZyIsImlzTmFOIiwiTnVtYmVyIiwibGVuZ3RoIiwiZ2V0Rm9vdGVyQ2VsbFZhbHVlIiwiJHRhYmxlIiwib3B0cyIsInJvd3MiLCJ0b1N0cmluZyIsIiRnZXRDb2x1bW5JbmRleCIsInRvQnVmZmVyIiwid2JvdXQiLCJidWYiLCJBcnJheUJ1ZmZlciIsInZpZXciLCJVaW50OEFycmF5IiwiaW5kZXgiLCJjaGFyQ29kZUF0IiwiZXhwb3J0WExTWCIsInBhcmFtcyIsIm9wdGlvbnMiLCJjb2x1bW5zIiwiZGF0YXMiLCJzaGVldE5hbWUiLCJ0eXBlIiwiaXNIZWFkZXIiLCJpc0Zvb3RlciIsIm9yaWdpbmFsIiwibWVzc2FnZSIsImZvb3RlckZpbHRlck1ldGhvZCIsImNvbEhlYWQiLCJmb290TGlzdCIsImZvckVhY2giLCJpZCIsInByb3BlcnR5IiwiZ2V0VGl0bGUiLCJyb3dMaXN0IiwibWFwIiwiaXRlbSIsInJlc3QiLCJnZXRUYWJsZURhdGEiLCJmb290ZXJEYXRhIiwiZm9vdGVycyIsImZpbHRlciIsInB1c2giLCJib29rIiwiWExTWCIsInV0aWxzIiwiYm9va19uZXciLCJzaGVldCIsImpzb25fdG9fc2hlZXQiLCJjb25jYXQiLCJza2lwSGVhZGVyIiwiYm9va19hcHBlbmRfc2hlZXQiLCJ3cml0ZSIsImJvb2tUeXBlIiwiYm9va1NTVCIsImJsb2IiLCJCbG9iIiwiZG93bmxvYWRGaWxlIiwibW9kYWwiLCJ0Iiwic3RhdHVzIiwid2luZG93IiwiZmlsZW5hbWUiLCJuYXZpZ2F0b3IiLCJtc1NhdmVCbG9iIiwibGlua0VsZW0iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0YXJnZXQiLCJkb3dubG9hZCIsImhyZWYiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGljayIsInJlbW92ZUNoaWxkIiwiY29uc29sZSIsImVycm9yIiwicmVwbGFjZURvdWJsZVF1b3RhdGlvbiIsInZhbCIsInJlcGxhY2UiLCJwYXJzZUNzdiIsImNvbnRlbnQiLCJsaXN0Iiwic3BsaXQiLCJmaWVsZHMiLCJyTGlzdCIsInNsaWNlIiwiciIsImNvbEluZGV4IiwiY2hlY2tJbXBvcnREYXRhIiwidGFibGVGaWVsZHMiLCJmaWVsZCIsImV2ZXJ5IiwiaW5jbHVkZXMiLCJpbXBvcnRYTFNYIiwiZmlsZSIsIl9pbXBvcnRSZXNvbHZlIiwiZmlsZVJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJlIiwid29ya2Jvb2siLCJyZWFkIiwicmVzdWx0IiwiY3N2RGF0YSIsInNoZWV0X3RvX2NzdiIsIlNoZWV0cyIsIlNoZWV0MSIsImNyZWF0ZURhdGEiLCJ0aGVuIiwiZGF0YSIsIm1vZGUiLCJpbnNlcnRBdCIsInJlbG9hZERhdGEiLCJ0ZW1wbGF0ZSIsInJlYWRBc0JpbmFyeVN0cmluZyIsImhhbmRsZUltcG9ydEV2ZW50IiwiaGFuZGxlRXhwb3J0RXZlbnQiLCJWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1giLCJpbnN0YWxsIiwieHRhYmxlIiwiaW50ZXJjZXB0b3IiLCJPYmplY3QiLCJhc3NpZ24iLCJ0eXBlcyIsInhsc3giLCJtaXhpbiIsIlZYRVRhYmxlIiwidXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQTtBQVNBO0FBQXVCO0FBVnZCOztBQVdBO0FBRUEsSUFBSUEsU0FBMEI7QUFHOUIsU0FBU0MsWUFBWSxDQUFFQyxNQUFvQixFQUFFQyxTQUFjLEVBQUE7RUFDekQsSUFBSUEsU0FBUyxFQUFFO0lBQ2IsUUFBUUQsTUFBTSxDQUFDRSxRQUFRO01BQ3JCLEtBQUssUUFBUTtRQUNYLE9BQU9DLG1CQUFPLENBQUNDLGFBQWEsQ0FBQ0gsU0FBUyxDQUFDO01BQ3pDLEtBQUssUUFBUTtRQUNYLElBQUksQ0FBQ0ksS0FBSyxDQUFDSixT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Q29FLFFBQVEsRUFBRTtFQUNwRHBFLE1BQU0sQ0FBQ29FLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDVix3QkFBd0IsQ0FBQztBQ3RCL0M7QUR1QkMsZUFFY0Esd0JBQXdCO0FBQUEiLCJmaWxlIjoiaW5kZXguY29tbW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuaW1wb3J0IFhFVXRpbHMgZnJvbSAneGUtdXRpbHMvbWV0aG9kcy94ZS11dGlscydcclxuaW1wb3J0IHtcclxuICBWWEVUYWJsZSxcclxuICBUYWJsZSxcclxuICBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcyxcclxuICBJbnRlcmNlcHRvckltcG9ydFBhcmFtcyxcclxuICBDb2x1bW5Db25maWcsXHJcbiAgRXhwb3J0T3B0b25zXHJcbn0gZnJvbSAndnhlLXRhYmxlL2xpYi92eGUtdGFibGUnXHJcbmltcG9ydCBYTFNYIGZyb20gJ3hsc3gnXHJcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuXHJcbmxldCBfdnhldGFibGU6IHR5cGVvZiBWWEVUYWJsZVxyXG5cclxuXHJcbmZ1bmN0aW9uIGdldENlbGxMYWJlbCAoY29sdW1uOiBDb2x1bW5Db25maWcsIGNlbGxWYWx1ZTogYW55KSB7XHJcbiAgaWYgKGNlbGxWYWx1ZSkge1xyXG4gICAgc3dpdGNoIChjb2x1bW4uY2VsbFR5cGUpIHtcclxuICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICByZXR1cm4gWEVVdGlscy50b1ZhbHVlU3RyaW5nKGNlbGxWYWx1ZSlcclxuICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICBpZiAoIWlzTmFOKGNlbGxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGlmIChjZWxsVmFsdWUubGVuZ3RoIDwgMTIgJiYgIWlzTmFOKGNlbGxWYWx1ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVha1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY2VsbFZhbHVlXHJcbn1cclxuXHJcblxyXG5cclxuZnVuY3Rpb24gZ2V0Rm9vdGVyQ2VsbFZhbHVlICgkdGFibGU6IFRhYmxlLCBvcHRzOiBFeHBvcnRPcHRvbnMsIHJvd3M6IGFueVtdLCBjb2x1bW46IENvbHVtbkNvbmZpZykge1xyXG4gIHZhciBjZWxsVmFsdWUgPSBYRVV0aWxzLnRvU3RyaW5nKHJvd3NbJHRhYmxlLiRnZXRDb2x1bW5JbmRleChjb2x1bW4pXSlcclxuICByZXR1cm4gY2VsbFZhbHVlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvQnVmZmVyICh3Ym91dDogYW55KSB7XHJcbiAgbGV0IGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcih3Ym91dC5sZW5ndGgpXHJcbiAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCAhPT0gd2JvdXQubGVuZ3RoOyArK2luZGV4KSB2aWV3W2luZGV4XSA9IHdib3V0LmNoYXJDb2RlQXQoaW5kZXgpICYgMHhGRlxyXG4gIHJldHVybiBidWZcclxufVxyXG5cclxuZnVuY3Rpb24gZXhwb3J0WExTWCAocGFyYW1zOiBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcykge1xyXG4gIGNvbnN0IHsgJHRhYmxlLCBvcHRpb25zLCBjb2x1bW5zLCBkYXRhcyB9ID0gcGFyYW1zXHJcbiAgY29uc3QgeyBzaGVldE5hbWUsIHR5cGUsIGlzSGVhZGVyLCBpc0Zvb3Rlciwgb3JpZ2luYWwsIG1lc3NhZ2UsIGZvb3RlckZpbHRlck1ldGhvZCB9ID0gb3B0aW9uc1xyXG4gIGNvbnN0IGNvbEhlYWQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fVxyXG4gIGNvbnN0IGZvb3RMaXN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXVxyXG4gIC8vIGNvbnN0IHJvd0xpc3QgPSBkYXRhc1xyXG5cclxuICBpZiAoaXNIZWFkZXIpIHtcclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIC8vIGNvbEhlYWRbY29sdW1uLmlkXSA9IFhFVXRpbHMudG9TdHJpbmcob3JpZ2luYWwgPyBjb2x1bW4ucHJvcGVydHkgOiBjb2x1bW4uZ2V0VGl0bGUoKSlcclxuICAgICAgY29sSGVhZFtjb2x1bW4uaWRdID0gWEVVdGlscy50b1N0cmluZyhvcmlnaW5hbCA/IGNvbHVtbi5wcm9wZXJ0eSA6IGNvbHVtbi5nZXRUaXRsZSgpKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIOaWsOWinumDqOWIhlxyXG4gIGNvbnN0IHJvd0xpc3QgPSBkYXRhcy5tYXAoaXRlbSA9PiB7XHJcbiAgICBjb25zdCByZXN0OiBhbnkgPSB7fVxyXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgcmVzdFtjb2x1bW4uaWRdID0gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgaXRlbVtjb2x1bW4uaWRdKVxyXG4gICAgfSlcclxuICAgIHJldHVybiByZXN0XHJcbiAgfSlcclxuXHJcbiAgaWYgKGlzRm9vdGVyKSB7XHJcbiAgICBjb25zdCB7IGZvb3RlckRhdGEgfSA9ICR0YWJsZS5nZXRUYWJsZURhdGEoKVxyXG4gICAgY29uc3QgZm9vdGVycyA9IGZvb3RlckZpbHRlck1ldGhvZCA/IGZvb3RlckRhdGEuZmlsdGVyKGZvb3RlckZpbHRlck1ldGhvZCkgOiBmb290ZXJEYXRhXHJcbiAgICBmb290ZXJzLmZvckVhY2goKHJvd3MpID0+IHtcclxuICAgICAgY29uc3QgaXRlbTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XHJcbiAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgaXRlbVtjb2x1bW4uaWRdID0gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0aW9ucywgcm93cywgY29sdW1uKVxyXG4gICAgICB9KVxyXG4gICAgICBmb290TGlzdC5wdXNoKGl0ZW0pXHJcbiAgICB9KVxyXG4gIH1cclxuICBjb25zdCBib29rID0gWExTWC51dGlscy5ib29rX25ldygpXHJcbiAgY29uc3Qgc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoKGlzSGVhZGVyID8gW2NvbEhlYWRdIDogW10pLmNvbmNhdChyb3dMaXN0KS5jb25jYXQoZm9vdExpc3QpLCB7IHNraXBIZWFkZXI6IHRydWUgfSlcclxuICAvLyDovazmjaLmlbDmja5cclxuICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KGJvb2ssIHNoZWV0LCBzaGVldE5hbWUpXHJcbiAgY29uc3Qgd2JvdXQgPSBYTFNYLndyaXRlKGJvb2ssIHsgYm9va1R5cGU6IHR5cGUsIGJvb2tTU1Q6IGZhbHNlLCB0eXBlOiAnYmluYXJ5JyB9KVxyXG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdG9CdWZmZXIod2JvdXQpXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KVxyXG4gIC8vIOS/neWtmOWvvOWHulxyXG4gIGRvd25sb2FkRmlsZShibG9iLCBvcHRpb25zKVxyXG4gIGlmIChtZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLnRhYmxlLmV4cFN1Y2Nlc3MnKSwgc3RhdHVzOiAnc3VjY2VzcycgfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRvd25sb2FkRmlsZSAoYmxvYjogQmxvYiwgb3B0aW9uczogRXhwb3J0T3B0b25zKSB7XHJcbiAgaWYgKHdpbmRvdy5CbG9iKSB7XHJcbiAgICBjb25zdCB7IGZpbGVuYW1lLCB0eXBlIH0gPSBvcHRpb25zXHJcbiAgICBpZiAobmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHtcclxuICAgICAgbmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYiwgYCR7ZmlsZW5hbWV9LiR7dHlwZX1gKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGxpbmtFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgIGxpbmtFbGVtLnRhcmdldCA9ICdfYmxhbmsnXHJcbiAgICAgIGxpbmtFbGVtLmRvd25sb2FkID0gYCR7ZmlsZW5hbWV9LiR7dHlwZX1gXHJcbiAgICAgIGxpbmtFbGVtLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGlua0VsZW0pXHJcbiAgICAgIGxpbmtFbGVtLmNsaWNrKClcclxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rRWxlbSlcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5lcnJvcihfdnhldGFibGUudCgndnhlLmVycm9yLm5vdEV4cCcpKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVwbGFjZURvdWJsZVF1b3RhdGlvbiAodmFsOiBzdHJpbmcpIHtcclxuICByZXR1cm4gdmFsLnJlcGxhY2UoL15cIi8sICcnKS5yZXBsYWNlKC9cIiQvLCAnJylcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VDc3YgKGNvbHVtbnM6IENvbHVtbkNvbmZpZ1tdLCBjb250ZW50OiBzdHJpbmcpIHtcclxuICBjb25zdCBsaXN0ID0gY29udGVudC5zcGxpdCgnXFxuJylcclxuICBjb25zdCBmaWVsZHM6IHN0cmluZ1tdID0gW11cclxuICBjb25zdCByb3dzOiBhbnlbXSA9IFtdXHJcbiAgaWYgKGxpc3QubGVuZ3RoKSB7XHJcbiAgICBjb25zdCByTGlzdCA9IGxpc3Quc2xpY2UoMSlcclxuICAgIGxpc3RbMF0uc3BsaXQoJywnKS5tYXAocmVwbGFjZURvdWJsZVF1b3RhdGlvbilcclxuICAgIHJMaXN0LmZvckVhY2goKHIpID0+IHtcclxuICAgICAgaWYgKHIpIHtcclxuICAgICAgICBjb25zdCBpdGVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cclxuICAgICAgICByLnNwbGl0KCcsJykuZm9yRWFjaCgodmFsLCBjb2xJbmRleCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpZWxkc1tjb2xJbmRleF0pIHtcclxuICAgICAgICAgICAgaXRlbVtmaWVsZHNbY29sSW5kZXhdXSA9IHJlcGxhY2VEb3VibGVRdW90YXRpb24odmFsKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcm93cy5wdXNoKGl0ZW0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHJldHVybiB7IGZpZWxkcywgcm93cyB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrSW1wb3J0RGF0YSAoY29sdW1uczogQ29sdW1uQ29uZmlnW10sIGZpZWxkczogc3RyaW5nW10sIHJvd3M6IGFueVtdKSB7XHJcbiAgbGV0IHRhYmxlRmllbGRzOiBzdHJpbmdbXSA9IFtdXHJcbiAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgIGxldCBmaWVsZCA9IGNvbHVtbi5wcm9wZXJ0eVxyXG4gICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgIHRhYmxlRmllbGRzLnB1c2goZmllbGQpXHJcbiAgICB9XHJcbiAgfSlcclxuICByZXR1cm4gdGFibGVGaWVsZHMuZXZlcnkoKGZpZWxkKSA9PiBmaWVsZHMuaW5jbHVkZXMoZmllbGQpKVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbXBvcnRYTFNYIChwYXJhbXM6IEludGVyY2VwdG9ySW1wb3J0UGFyYW1zKSB7XHJcbiAgY29uc3QgeyBjb2x1bW5zLCBvcHRpb25zLCBmaWxlIH0gPSBwYXJhbXNcclxuICBjb25zdCAkdGFibGU6IGFueSA9IHBhcmFtcy4kdGFibGVcclxuICBjb25zdCB7IF9pbXBvcnRSZXNvbHZlIH0gPSAkdGFibGVcclxuICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxyXG4gIGZpbGVSZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBYTFNYLnJlYWQoZS50YXJnZXQucmVzdWx0LCB7IHR5cGU6ICdiaW5hcnknIH0pXHJcbiAgICBjb25zdCBjc3ZEYXRhOiBzdHJpbmcgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2Nzdih3b3JrYm9vay5TaGVldHMuU2hlZXQxKVxyXG4gICAgY29uc3QgeyBmaWVsZHMsIHJvd3MgfSA9IHBhcnNlQ3N2KGNvbHVtbnMsIGNzdkRhdGEpXHJcbiAgICBjb25zdCBzdGF0dXMgPSBjaGVja0ltcG9ydERhdGEoY29sdW1ucywgZmllbGRzLCByb3dzKVxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICAkdGFibGUuY3JlYXRlRGF0YShyb3dzKVxyXG4gICAgICAgIC50aGVuKChkYXRhOiBhbnlbXSkgPT4ge1xyXG4gICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PT0gJ2FwcGVuZCcpIHtcclxuICAgICAgICAgICAgJHRhYmxlLmluc2VydEF0KGRhdGEsIC0xKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJHRhYmxlLnJlbG9hZERhdGEoZGF0YSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogWEVVdGlscy50ZW1wbGF0ZShfdnhldGFibGUudCgndnhlLnRhYmxlLmltcFN1Y2Nlc3MnKSwgW3Jvd3MubGVuZ3RoXSksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xyXG4gICAgICBfdnhldGFibGUubW9kYWwubWVzc2FnZSh7IG1lc3NhZ2U6IF92eGV0YWJsZS50KCd2eGUuZXJyb3IuaW1wRmllbGRzJyksIHN0YXR1czogJ2Vycm9yJyB9KVxyXG4gICAgfVxyXG4gICAgaWYgKF9pbXBvcnRSZXNvbHZlKSB7XHJcbiAgICAgIF9pbXBvcnRSZXNvbHZlKHN0YXR1cylcclxuICAgICAgJHRhYmxlLl9pbXBvcnRSZXNvbHZlID0gbnVsbFxyXG4gICAgfVxyXG4gIH1cclxuICBmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlKVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVJbXBvcnRFdmVudCAocGFyYW1zOiBJbnRlcmNlcHRvckltcG9ydFBhcmFtcykge1xyXG4gIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcclxuICAgIGltcG9ydFhMU1gocGFyYW1zKVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVFeHBvcnRFdmVudCAocGFyYW1zOiBJbnRlcmNlcHRvckV4cG9ydFBhcmFtcykge1xyXG4gIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcclxuICAgIGV4cG9ydFhMU1gocGFyYW1zKVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICog5Z+65LqOIHZ4ZS10YWJsZSDooajmoLznmoTlop7lvLrmj5Lku7bvvIzmlK/mjIHlr7zlh7ogeGxzeCDmoLzlvI9cclxuICovXHJcbmV4cG9ydCBjb25zdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1ggPSB7XHJcbiAgaW5zdGFsbCAoeHRhYmxlOiB0eXBlb2YgVlhFVGFibGUpIHtcclxuICAgIGNvbnN0IHsgaW50ZXJjZXB0b3IgfSA9IHh0YWJsZVxyXG4gICAgX3Z4ZXRhYmxlID0geHRhYmxlXHJcbiAgICBPYmplY3QuYXNzaWduKHh0YWJsZS50eXBlcywgeyB4bHN4OiAxIH0pXHJcbiAgICBpbnRlcmNlcHRvci5taXhpbih7XHJcbiAgICAgICdldmVudC5pbXBvcnQnOiBoYW5kbGVJbXBvcnRFdmVudCxcclxuICAgICAgJ2V2ZW50LmV4cG9ydCc6IGhhbmRsZUV4cG9ydEV2ZW50XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5WWEVUYWJsZSkge1xyXG4gIHdpbmRvdy5WWEVUYWJsZS51c2UoVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYKVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1hcclxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbmltcG9ydCBYRVV0aWxzIGZyb20gJ3hlLXV0aWxzL21ldGhvZHMveGUtdXRpbHMnO1xuaW1wb3J0IFhMU1ggZnJvbSAneGxzeCc7XG4vKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG5sZXQgX3Z4ZXRhYmxlO1xuZnVuY3Rpb24gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgY2VsbFZhbHVlKSB7XG4gICAgaWYgKGNlbGxWYWx1ZSkge1xuICAgICAgICBzd2l0Y2ggKGNvbHVtbi5jZWxsVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWEVVdGlscy50b1ZhbHVlU3RyaW5nKGNlbGxWYWx1ZSk7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIGlmICghaXNOYU4oY2VsbFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyKGNlbGxWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAoY2VsbFZhbHVlLmxlbmd0aCA8IDEyICYmICFpc05hTihjZWxsVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2VsbFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNlbGxWYWx1ZTtcbn1cbmZ1bmN0aW9uIGdldEZvb3RlckNlbGxWYWx1ZSgkdGFibGUsIG9wdHMsIHJvd3MsIGNvbHVtbikge1xuICAgIHZhciBjZWxsVmFsdWUgPSBYRVV0aWxzLnRvU3RyaW5nKHJvd3NbJHRhYmxlLiRnZXRDb2x1bW5JbmRleChjb2x1bW4pXSk7XG4gICAgcmV0dXJuIGNlbGxWYWx1ZTtcbn1cbmZ1bmN0aW9uIHRvQnVmZmVyKHdib3V0KSB7XG4gICAgbGV0IGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcih3Ym91dC5sZW5ndGgpO1xuICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4ICE9PSB3Ym91dC5sZW5ndGg7ICsraW5kZXgpXG4gICAgICAgIHZpZXdbaW5kZXhdID0gd2JvdXQuY2hhckNvZGVBdChpbmRleCkgJiAweEZGO1xuICAgIHJldHVybiBidWY7XG59XG5mdW5jdGlvbiBleHBvcnRYTFNYKHBhcmFtcykge1xuICAgIGNvbnN0IHsgJHRhYmxlLCBvcHRpb25zLCBjb2x1bW5zLCBkYXRhcyB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHsgc2hlZXROYW1lLCB0eXBlLCBpc0hlYWRlciwgaXNGb290ZXIsIG9yaWdpbmFsLCBtZXNzYWdlLCBmb290ZXJGaWx0ZXJNZXRob2QgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgY29sSGVhZCA9IHt9O1xuICAgIGNvbnN0IGZvb3RMaXN0ID0gW107XG4gICAgLy8gY29uc3Qgcm93TGlzdCA9IGRhdGFzXG4gICAgaWYgKGlzSGVhZGVyKSB7XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAvLyBjb2xIZWFkW2NvbHVtbi5pZF0gPSBYRVV0aWxzLnRvU3RyaW5nKG9yaWdpbmFsID8gY29sdW1uLnByb3BlcnR5IDogY29sdW1uLmdldFRpdGxlKCkpXG4gICAgICAgICAgICBjb2xIZWFkW2NvbHVtbi5pZF0gPSBYRVV0aWxzLnRvU3RyaW5nKG9yaWdpbmFsID8gY29sdW1uLnByb3BlcnR5IDogY29sdW1uLmdldFRpdGxlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8g5paw5aKe6YOo5YiGXG4gICAgY29uc3Qgcm93TGlzdCA9IGRhdGFzLm1hcChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgcmVzdCA9IHt9O1xuICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgcmVzdFtjb2x1bW4uaWRdID0gZ2V0Q2VsbExhYmVsKGNvbHVtbiwgaXRlbVtjb2x1bW4uaWRdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN0O1xuICAgIH0pO1xuICAgIGlmIChpc0Zvb3Rlcikge1xuICAgICAgICBjb25zdCB7IGZvb3RlckRhdGEgfSA9ICR0YWJsZS5nZXRUYWJsZURhdGEoKTtcbiAgICAgICAgY29uc3QgZm9vdGVycyA9IGZvb3RlckZpbHRlck1ldGhvZCA/IGZvb3RlckRhdGEuZmlsdGVyKGZvb3RlckZpbHRlck1ldGhvZCkgOiBmb290ZXJEYXRhO1xuICAgICAgICBmb290ZXJzLmZvckVhY2goKHJvd3MpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7fTtcbiAgICAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbVtjb2x1bW4uaWRdID0gZ2V0Rm9vdGVyQ2VsbFZhbHVlKCR0YWJsZSwgb3B0aW9ucywgcm93cywgY29sdW1uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9vdExpc3QucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGJvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XG4gICAgY29uc3Qgc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoKGlzSGVhZGVyID8gW2NvbEhlYWRdIDogW10pLmNvbmNhdChyb3dMaXN0KS5jb25jYXQoZm9vdExpc3QpLCB7IHNraXBIZWFkZXI6IHRydWUgfSk7XG4gICAgLy8g6L2s5o2i5pWw5o2uXG4gICAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldChib29rLCBzaGVldCwgc2hlZXROYW1lKTtcbiAgICBjb25zdCB3Ym91dCA9IFhMU1gud3JpdGUoYm9vaywgeyBib29rVHlwZTogdHlwZSwgYm9va1NTVDogZmFsc2UsIHR5cGU6ICdiaW5hcnknIH0pO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdG9CdWZmZXIod2JvdXQpXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcbiAgICAvLyDkv53lrZjlr7zlh7pcbiAgICBkb3dubG9hZEZpbGUoYmxvYiwgb3B0aW9ucyk7XG4gICAgaWYgKG1lc3NhZ2UgIT09IGZhbHNlKSB7XG4gICAgICAgIF92eGV0YWJsZS5tb2RhbC5tZXNzYWdlKHsgbWVzc2FnZTogX3Z4ZXRhYmxlLnQoJ3Z4ZS50YWJsZS5leHBTdWNjZXNzJyksIHN0YXR1czogJ3N1Y2Nlc3MnIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRvd25sb2FkRmlsZShibG9iLCBvcHRpb25zKSB7XG4gICAgaWYgKHdpbmRvdy5CbG9iKSB7XG4gICAgICAgIGNvbnN0IHsgZmlsZW5hbWUsIHR5cGUgfSA9IG9wdGlvbnM7XG4gICAgICAgIGlmIChuYXZpZ2F0b3IubXNTYXZlQmxvYikge1xuICAgICAgICAgICAgbmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYiwgYCR7ZmlsZW5hbWV9LiR7dHlwZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsaW5rRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGxpbmtFbGVtLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgICAgICAgbGlua0VsZW0uZG93bmxvYWQgPSBgJHtmaWxlbmFtZX0uJHt0eXBlfWA7XG4gICAgICAgICAgICBsaW5rRWxlbS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGlua0VsZW0pO1xuICAgICAgICAgICAgbGlua0VsZW0uY2xpY2soKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGlua0VsZW0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKF92eGV0YWJsZS50KCd2eGUuZXJyb3Iubm90RXhwJykpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHJlcGxhY2VEb3VibGVRdW90YXRpb24odmFsKSB7XG4gICAgcmV0dXJuIHZhbC5yZXBsYWNlKC9eXCIvLCAnJykucmVwbGFjZSgvXCIkLywgJycpO1xufVxuZnVuY3Rpb24gcGFyc2VDc3YoY29sdW1ucywgY29udGVudCkge1xuICAgIGNvbnN0IGxpc3QgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXTtcbiAgICBjb25zdCByb3dzID0gW107XG4gICAgaWYgKGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHJMaXN0ID0gbGlzdC5zbGljZSgxKTtcbiAgICAgICAgbGlzdFswXS5zcGxpdCgnLCcpLm1hcChyZXBsYWNlRG91YmxlUXVvdGF0aW9uKTtcbiAgICAgICAgckxpc3QuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0ge307XG4gICAgICAgICAgICAgICAgci5zcGxpdCgnLCcpLmZvckVhY2goKHZhbCwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkc1tjb2xJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1bZmllbGRzW2NvbEluZGV4XV0gPSByZXBsYWNlRG91YmxlUXVvdGF0aW9uKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByb3dzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4geyBmaWVsZHMsIHJvd3MgfTtcbn1cbmZ1bmN0aW9uIGNoZWNrSW1wb3J0RGF0YShjb2x1bW5zLCBmaWVsZHMsIHJvd3MpIHtcbiAgICBsZXQgdGFibGVGaWVsZHMgPSBbXTtcbiAgICBjb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICBsZXQgZmllbGQgPSBjb2x1bW4ucHJvcGVydHk7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgdGFibGVGaWVsZHMucHVzaChmaWVsZCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGFibGVGaWVsZHMuZXZlcnkoKGZpZWxkKSA9PiBmaWVsZHMuaW5jbHVkZXMoZmllbGQpKTtcbn1cbmZ1bmN0aW9uIGltcG9ydFhMU1gocGFyYW1zKSB7XG4gICAgY29uc3QgeyBjb2x1bW5zLCBvcHRpb25zLCBmaWxlIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgJHRhYmxlID0gcGFyYW1zLiR0YWJsZTtcbiAgICBjb25zdCB7IF9pbXBvcnRSZXNvbHZlIH0gPSAkdGFibGU7XG4gICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgZmlsZVJlYWRlci5vbmxvYWQgPSAoZSkgPT4ge1xuICAgICAgICBjb25zdCB3b3JrYm9vayA9IFhMU1gucmVhZChlLnRhcmdldC5yZXN1bHQsIHsgdHlwZTogJ2JpbmFyeScgfSk7XG4gICAgICAgIGNvbnN0IGNzdkRhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2Nzdih3b3JrYm9vay5TaGVldHMuU2hlZXQxKTtcbiAgICAgICAgY29uc3QgeyBmaWVsZHMsIHJvd3MgfSA9IHBhcnNlQ3N2KGNvbHVtbnMsIGNzdkRhdGEpO1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBjaGVja0ltcG9ydERhdGEoY29sdW1ucywgZmllbGRzLCByb3dzKTtcbiAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgJHRhYmxlLmNyZWF0ZURhdGEocm93cylcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09ICdhcHBlbmQnKSB7XG4gICAgICAgICAgICAgICAgICAgICR0YWJsZS5pbnNlcnRBdChkYXRhLCAtMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkdGFibGUucmVsb2FkRGF0YShkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLm1lc3NhZ2UgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBYRVV0aWxzLnRlbXBsYXRlKF92eGV0YWJsZS50KCd2eGUudGFibGUuaW1wU3VjY2VzcycpLCBbcm93cy5sZW5ndGhdKSwgc3RhdHVzOiAnc3VjY2VzcycgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5tZXNzYWdlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgX3Z4ZXRhYmxlLm1vZGFsLm1lc3NhZ2UoeyBtZXNzYWdlOiBfdnhldGFibGUudCgndnhlLmVycm9yLmltcEZpZWxkcycpLCBzdGF0dXM6ICdlcnJvcicgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9pbXBvcnRSZXNvbHZlKSB7XG4gICAgICAgICAgICBfaW1wb3J0UmVzb2x2ZShzdGF0dXMpO1xuICAgICAgICAgICAgJHRhYmxlLl9pbXBvcnRSZXNvbHZlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7XG59XG5mdW5jdGlvbiBoYW5kbGVJbXBvcnRFdmVudChwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLm9wdGlvbnMudHlwZSA9PT0gJ3hsc3gnKSB7XG4gICAgICAgIGltcG9ydFhMU1gocGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGhhbmRsZUV4cG9ydEV2ZW50KHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMub3B0aW9ucy50eXBlID09PSAneGxzeCcpIHtcbiAgICAgICAgZXhwb3J0WExTWChwYXJhbXMpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuLyoqXG4gKiDln7rkuo4gdnhlLXRhYmxlIOihqOagvOeahOWinuW8uuaPkuS7tu+8jOaUr+aMgeWvvOWHuiB4bHN4IOagvOW8j1xuICovXG5leHBvcnQgY29uc3QgVlhFVGFibGVQbHVnaW5FeHBvcnRYTFNYID0ge1xuICAgIGluc3RhbGwoeHRhYmxlKSB7XG4gICAgICAgIGNvbnN0IHsgaW50ZXJjZXB0b3IgfSA9IHh0YWJsZTtcbiAgICAgICAgX3Z4ZXRhYmxlID0geHRhYmxlO1xuICAgICAgICBPYmplY3QuYXNzaWduKHh0YWJsZS50eXBlcywgeyB4bHN4OiAxIH0pO1xuICAgICAgICBpbnRlcmNlcHRvci5taXhpbih7XG4gICAgICAgICAgICAnZXZlbnQuaW1wb3J0JzogaGFuZGxlSW1wb3J0RXZlbnQsXG4gICAgICAgICAgICAnZXZlbnQuZXhwb3J0JzogaGFuZGxlRXhwb3J0RXZlbnRcbiAgICAgICAgfSk7XG4gICAgfVxufTtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVlhFVGFibGUpIHtcbiAgICB3aW5kb3cuVlhFVGFibGUudXNlKFZYRVRhYmxlUGx1Z2luRXhwb3J0WExTWCk7XG59XG5leHBvcnQgZGVmYXVsdCBWWEVUYWJsZVBsdWdpbkV4cG9ydFhMU1g7XG4iXX0=
package/dist/index.js CHANGED
@@ -1,31 +1,34 @@
1
1
  (function (global, factory) {
2
2
  if (typeof define === "function" && define.amd) {
3
- define("vxe-table-plugin-export-xlsx-xhx", [], factory);
3
+ define("vxe-table-plugin-export-xlsx-xhx", ["exports", "xe-utils", "xlsx"], factory);
4
4
  } else if (typeof exports !== "undefined") {
5
- factory();
5
+ factory(exports, require("xe-utils"), require("xlsx"));
6
6
  } else {
7
7
  var mod = {
8
8
  exports: {}
9
9
  };
10
- factory();
10
+ factory(mod.exports, global.XEUtils, global.XLSX);
11
11
  global.VXETablePluginExportXLSX = mod.exports.default;
12
12
  }
13
- })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function () {
13
+ })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _xeUtils, _xlsx) {
14
14
  "use strict";
15
15
 
16
- Object.defineProperty(exports, "__esModule", {
16
+ Object.defineProperty(_exports, "__esModule", {
17
17
  value: true
18
18
  });
19
+ _exports["default"] = _exports.VXETablePluginExportXLSX = void 0;
20
+ _xeUtils = _interopRequireDefault(_xeUtils);
21
+ _xlsx = _interopRequireDefault(_xlsx);
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
23
  /* eslint-disable no-unused-vars */
20
- var xe_utils_1 = require("xe-utils/methods/xe-utils");
21
- var xlsx_1 = require("xlsx");
24
+
22
25
  /* eslint-enable no-unused-vars */
23
26
  var _vxetable;
24
27
  function getCellLabel(column, cellValue) {
25
28
  if (cellValue) {
26
29
  switch (column.cellType) {
27
30
  case 'string':
28
- return xe_utils_1["default"].toValueString(cellValue);
31
+ return _xeUtils["default"].toValueString(cellValue);
29
32
  case 'number':
30
33
  if (!isNaN(cellValue)) {
31
34
  return Number(cellValue);
@@ -41,7 +44,7 @@
41
44
  return cellValue;
42
45
  }
43
46
  function getFooterCellValue($table, opts, rows, column) {
44
- var cellValue = xe_utils_1["default"].toString(rows[$table.$getColumnIndex(column)]);
47
+ var cellValue = _xeUtils["default"].toString(rows[$table.$getColumnIndex(column)]);
45
48
  return cellValue;
46
49
  }
47
50
  function toBuffer(wbout) {
@@ -70,7 +73,7 @@
70
73
  if (isHeader) {
71
74
  columns.forEach(function (column) {
72
75
  // colHead[column.id] = XEUtils.toString(original ? column.property : column.getTitle())
73
- colHead[column.id] = xe_utils_1["default"].toString(original ? column.property : column.getTitle());
76
+ colHead[column.id] = _xeUtils["default"].toString(original ? column.property : column.getTitle());
74
77
  });
75
78
  }
76
79
  // 新增部分
@@ -82,7 +85,8 @@
82
85
  return rest;
83
86
  });
84
87
  if (isFooter) {
85
- var footerData = $table.getTableData().footerData;
88
+ var _$table$getTableData = $table.getTableData(),
89
+ footerData = _$table$getTableData.footerData;
86
90
  var footers = footerFilterMethod ? footerData.filter(footerFilterMethod) : footerData;
87
91
  footers.forEach(function (rows) {
88
92
  var item = {};
@@ -92,13 +96,13 @@
92
96
  footList.push(item);
93
97
  });
94
98
  }
95
- var book = xlsx_1["default"].utils.book_new();
96
- var sheet = xlsx_1["default"].utils.json_to_sheet((isHeader ? [colHead] : []).concat(rowList).concat(footList), {
99
+ var book = _xlsx["default"].utils.book_new();
100
+ var sheet = _xlsx["default"].utils.json_to_sheet((isHeader ? [colHead] : []).concat(rowList).concat(footList), {
97
101
  skipHeader: true
98
102
  });
99
103
  // 转换数据
100
- xlsx_1["default"].utils.book_append_sheet(book, sheet, sheetName);
101
- var wbout = xlsx_1["default"].write(book, {
104
+ _xlsx["default"].utils.book_append_sheet(book, sheet, sheetName);
105
+ var wbout = _xlsx["default"].write(book, {
102
106
  bookType: type,
103
107
  bookSST: false,
104
108
  type: 'binary'
@@ -120,11 +124,11 @@
120
124
  var filename = options.filename,
121
125
  type = options.type;
122
126
  if (navigator.msSaveBlob) {
123
- navigator.msSaveBlob(blob, filename + "." + type);
127
+ navigator.msSaveBlob(blob, "".concat(filename, ".").concat(type));
124
128
  } else {
125
129
  var linkElem = document.createElement('a');
126
130
  linkElem.target = '_blank';
127
- linkElem.download = filename + "." + type;
131
+ linkElem.download = "".concat(filename, ".").concat(type);
128
132
  linkElem.href = URL.createObjectURL(blob);
129
133
  document.body.appendChild(linkElem);
130
134
  linkElem.click();
@@ -146,13 +150,13 @@
146
150
  list[0].split(',').map(replaceDoubleQuotation);
147
151
  rList.forEach(function (r) {
148
152
  if (r) {
149
- var item_1 = {};
153
+ var item = {};
150
154
  r.split(',').forEach(function (val, colIndex) {
151
155
  if (fields[colIndex]) {
152
- item_1[fields[colIndex]] = replaceDoubleQuotation(val);
156
+ item[fields[colIndex]] = replaceDoubleQuotation(val);
153
157
  }
154
158
  });
155
- rows.push(item_1);
159
+ rows.push(item);
156
160
  }
157
161
  });
158
162
  }
@@ -181,13 +185,13 @@
181
185
  var _importResolve = $table._importResolve;
182
186
  var fileReader = new FileReader();
183
187
  fileReader.onload = function (e) {
184
- var workbook = xlsx_1["default"].read(e.target.result, {
188
+ var workbook = _xlsx["default"].read(e.target.result, {
185
189
  type: 'binary'
186
190
  });
187
- var csvData = xlsx_1["default"].utils.sheet_to_csv(workbook.Sheets.Sheet1);
188
- var _a = parseCsv(columns, csvData),
189
- fields = _a.fields,
190
- rows = _a.rows;
191
+ var csvData = _xlsx["default"].utils.sheet_to_csv(workbook.Sheets.Sheet1);
192
+ var _parseCsv = parseCsv(columns, csvData),
193
+ fields = _parseCsv.fields,
194
+ rows = _parseCsv.rows;
191
195
  var status = checkImportData(columns, fields, rows);
192
196
  if (status) {
193
197
  $table.createData(rows).then(function (data) {
@@ -199,7 +203,7 @@
199
203
  });
200
204
  if (options.message !== false) {
201
205
  _vxetable.modal.message({
202
- message: xe_utils_1["default"].template(_vxetable.t('vxe.table.impSuccess'), [rows.length]),
206
+ message: _xeUtils["default"].template(_vxetable.t('vxe.table.impSuccess'), [rows.length]),
203
207
  status: 'success'
204
208
  });
205
209
  }
@@ -231,7 +235,7 @@
231
235
  /**
232
236
  * 基于 vxe-table 表格的增强插件,支持导出 xlsx 格式
233
237
  */
234
- exports.VXETablePluginExportXLSX = {
238
+ var VXETablePluginExportXLSX = {
235
239
  install: function install(xtable) {
236
240
  var interceptor = xtable.interceptor;
237
241
  _vxetable = xtable;
@@ -244,8 +248,10 @@
244
248
  });
245
249
  }
246
250
  };
251
+ _exports.VXETablePluginExportXLSX = VXETablePluginExportXLSX;
247
252
  if (typeof window !== 'undefined' && window.VXETable) {
248
- window.VXETable.use(exports.VXETablePluginExportXLSX);
253
+ window.VXETable.use(VXETablePluginExportXLSX);
249
254
  }
250
- exports["default"] = exports.VXETablePluginExportXLSX;
255
+ var _default = VXETablePluginExportXLSX;
256
+ _exports["default"] = _default;
251
257
  });
package/dist/index.min.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"function"==typeof define&&define.amd?define("vxe-table-plugin-export-xlsx-xhx",[],t):"undefined"!=typeof exports?t():(t(),e.VXETablePluginExportXLSX={}.default)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var p,m=require("xe-utils/methods/xe-utils"),g=require("xlsx");function t(e){var o=e.$table,t=e.options,r=e.columns,e=e.datas,n=t.sheetName,a=t.type,i=t.isHeader,s=t.isFooter,l=t.original,u=t.message,f=t.footerFilterMethod,c={},d=[],e=(i&&r.forEach(function(e){c[e.id]=m.default.toString(l?e.property:e.getTitle())}),e.map(function(t){var n={};return r.forEach(function(e){n[e.id]=function(e,t){if(t)switch(e.cellType){case"string":return m.default.toValueString(t);case"number":if(isNaN(t))break;return Number(t);default:if(t.length<12&&!isNaN(t))return Number(t)}return t}(e,t[e.id])}),n})),f=(s&&(s=o.getTableData().footerData,(f?s.filter(f):s).forEach(function(t){var n={};r.forEach(function(e){n[e.id]=m.default.toString(t[o.$getColumnIndex(e)])}),d.push(n)})),g.default.utils.book_new()),s=g.default.utils.json_to_sheet((i?[c]:[]).concat(e).concat(d),{skipHeader:!0}),i=(g.default.utils.book_append_sheet(f,s,n),g.default.write(f,{bookType:a,bookSST:!1,type:"binary"})),e=new Blob([function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),o=0;o!==e.length;++o)n[o]=255&e.charCodeAt(o);return t}(i)],{type:"application/octet-stream"}),s=t;window.Blob?(n=s.filename,s=s.type,navigator.msSaveBlob?navigator.msSaveBlob(e,n+"."+s):((f=document.createElement("a")).target="_blank",f.download=n+"."+s,f.href=URL.createObjectURL(e),document.body.appendChild(f),f.click(),document.body.removeChild(f))):console.error(p.t("vxe.error.notExp")),!1!==u&&p.modal.message({message:p.t("vxe.table.expSuccess"),status:"success"})}function f(e){return e.replace(/^"/,"").replace(/"$/,"")}function n(e){var i=e.columns,s=e.options,t=e.file,l=e.$table,u=l._importResolve,e=new FileReader;e.onload=function(e){var o,t,n,r,e=g.default.read(e.target.result,{type:"binary"}),e=g.default.utils.sheet_to_csv(e.Sheets.Sheet1),e=(e=(e=e).split("\n"),o=[],t=[],e.length&&(a=e.slice(1),e[0].split(",").map(f),a.forEach(function(e){var n;e&&(n={},e.split(",").forEach(function(e,t){o[t]&&(n[o[t]]=f(e))}),t.push(n))})),{fields:o,rows:t}),a=e.rows,e=(n=e.fields,r=[],i.forEach(function(e){e=e.property;e&&r.push(e)}),r.every(function(e){return n.includes(e)}));e?(l.createData(a).then(function(e){"append"===s.mode?l.insertAt(e,-1):l.reloadData(e)}),!1!==s.message&&p.modal.message({message:m.default.template(p.t("vxe.table.impSuccess"),[a.length]),status:"success"})):!1!==s.message&&p.modal.message({message:p.t("vxe.error.impFields"),status:"error"}),u&&(u(e),l._importResolve=null)},e.readAsBinaryString(t)}function o(e){if("xlsx"===e.options.type)return n(e),!1}function r(e){if("xlsx"===e.options.type)return t(e),!1}exports.VXETablePluginExportXLSX={install:function(e){var t=e.interceptor;p=e,Object.assign(e.types,{xlsx:1}),t.mixin({"event.import":o,"event.export":r})}},"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(exports.VXETablePluginExportXLSX),exports.default=exports.VXETablePluginExportXLSX});
1
+ !function(e,t){"function"==typeof define&&define.amd?define("vxe-table-plugin-export-xlsx-xhx",["exports","xe-utils","xlsx"],t):"undefined"!=typeof exports?t(exports,require("xe-utils"),require("xlsx")):(t((t={exports:{}}).exports,e.XEUtils,e.XLSX),e.VXETablePluginExportXLSX=t.exports.default)}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(e,p,m){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}var x;function n(e){var o=e.$table,t=e.options,a=e.columns,e=e.datas,n=t.sheetName,r=t.type,i=t.isHeader,s=t.isFooter,l=t.original,u=t.message,c=t.footerFilterMethod,f={},d=[],e=(i&&a.forEach(function(e){f[e.id]=p.default.toString(l?e.property:e.getTitle())}),e.map(function(t){var n={};return a.forEach(function(e){n[e.id]=function(e,t){if(t)switch(e.cellType){case"string":return p.default.toValueString(t);case"number":if(isNaN(t))break;return Number(t);default:if(t.length<12&&!isNaN(t))return Number(t)}return t}(e,t[e.id])}),n})),c=(s&&(s=o.getTableData().footerData,(c?s.filter(c):s).forEach(function(t){var n={};a.forEach(function(e){n[e.id]=p.default.toString(t[o.$getColumnIndex(e)])}),d.push(n)})),m.default.utils.book_new()),s=m.default.utils.json_to_sheet((i?[f]:[]).concat(e).concat(d),{skipHeader:!0}),i=(m.default.utils.book_append_sheet(c,s,n),m.default.write(c,{bookType:r,bookSST:!1,type:"binary"})),e=new Blob([function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),o=0;o!==e.length;++o)n[o]=255&e.charCodeAt(o);return t}(i)],{type:"application/octet-stream"}),s=t;window.Blob?(n=s.filename,s=s.type,navigator.msSaveBlob?navigator.msSaveBlob(e,"".concat(n,".").concat(s)):((c=document.createElement("a")).target="_blank",c.download="".concat(n,".").concat(s),c.href=URL.createObjectURL(e),document.body.appendChild(c),c.click(),document.body.removeChild(c))):console.error(x.t("vxe.error.notExp")),!1!==u&&x.modal.message({message:x.t("vxe.table.expSuccess"),status:"success"})}function c(e){return e.replace(/^"/,"").replace(/"$/,"")}function o(e){var i=e.columns,s=e.options,t=e.file,l=e.$table,u=l._importResolve,e=new FileReader;e.onload=function(e){var o,t,n,a,e=m.default.read(e.target.result,{type:"binary"}),e=m.default.utils.sheet_to_csv(e.Sheets.Sheet1),e=(e=(e=e).split("\n"),o=[],t=[],e.length&&(r=e.slice(1),e[0].split(",").map(c),r.forEach(function(e){var n;e&&(n={},e.split(",").forEach(function(e,t){o[t]&&(n[o[t]]=c(e))}),t.push(n))})),{fields:o,rows:t}),r=e.rows,e=(n=e.fields,a=[],i.forEach(function(e){e=e.property;e&&a.push(e)}),a.every(function(e){return n.includes(e)}));e?(l.createData(r).then(function(e){"append"===s.mode?l.insertAt(e,-1):l.reloadData(e)}),!1!==s.message&&x.modal.message({message:p.default.template(x.t("vxe.table.impSuccess"),[r.length]),status:"success"})):!1!==s.message&&x.modal.message({message:x.t("vxe.error.impFields"),status:"error"}),u&&(u(e),l._importResolve=null)},e.readAsBinaryString(t)}function a(e){if("xlsx"===e.options.type)return o(e),!1}function r(e){if("xlsx"===e.options.type)return n(e),!1}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.VXETablePluginExportXLSX=void 0,p=t(p),m=t(m);var i={install:function(e){var t=e.interceptor;x=e,Object.assign(e.types,{xlsx:1}),t.mixin({"event.import":a,"event.export":r})}};e.VXETablePluginExportXLSX=i,"undefined"!=typeof window&&window.VXETable&&window.VXETable.use(i);e.default=i});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table-plugin-export-xlsx-xhx",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "基于 vxe-table 表格的增强插件,支持导出 xlsx 格式",
5
5
  "scripts": {
6
6
  "lib": "gulp build"