nsc-react-component 4.4.7 → 4.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/base/chart/index.d.ts +1 -1
- package/lib/base/chart/index.js +8 -12
- package/lib/base/chart/index.js.map +1 -1
- package/lib/base/chart/index.less +4 -1
- package/lib/page/SettingChart/index.d.ts +33 -0
- package/lib/page/SettingChart/index.js +126 -0
- package/lib/page/SettingChart/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import React, { PureComponent } from "react";
|
|
|
2
2
|
import { ECharts } from "echarts/lib/echarts";
|
|
3
3
|
import { StoreProps } from "@bj-nsc/msn";
|
|
4
4
|
import "./index.less";
|
|
5
|
-
interface ChartProps {
|
|
5
|
+
export interface ChartProps {
|
|
6
6
|
store?: StoreProps;
|
|
7
7
|
option: any;
|
|
8
8
|
data?: Array<Object> | Object;
|
package/lib/base/chart/index.js
CHANGED
|
@@ -12,6 +12,7 @@ import Store from "@bj-nsc/msn";
|
|
|
12
12
|
import { utils } from "@bj-nsc/msn/lib/utils";
|
|
13
13
|
import { px2vw } from "../../utils";
|
|
14
14
|
import { isArray, isObject } from "@bj-nsc/functions";
|
|
15
|
+
import cls from "classnames";
|
|
15
16
|
import "./index.less";
|
|
16
17
|
//data示例
|
|
17
18
|
/**
|
|
@@ -96,7 +97,6 @@ class NscChart extends PureComponent {
|
|
|
96
97
|
store,
|
|
97
98
|
option
|
|
98
99
|
} = this.props;
|
|
99
|
-
// 添加检查避免重复初始化
|
|
100
100
|
if (this.myChart || !this.chartRef.current) {
|
|
101
101
|
return;
|
|
102
102
|
}
|
|
@@ -184,8 +184,8 @@ class NscChart extends PureComponent {
|
|
|
184
184
|
if (isArray(datas)) {
|
|
185
185
|
datas.map(item => {
|
|
186
186
|
var tempObj = {};
|
|
187
|
-
for (let key in
|
|
188
|
-
let v =
|
|
187
|
+
for (let key in data) {
|
|
188
|
+
let v = data[key];
|
|
189
189
|
if (this.isReplace(v)) {
|
|
190
190
|
tempObj[key] = item[this.replace(v)];
|
|
191
191
|
} else {
|
|
@@ -439,7 +439,7 @@ class NscChart extends PureComponent {
|
|
|
439
439
|
if (legend == true) {
|
|
440
440
|
boxStyle.display = "flex";
|
|
441
441
|
}
|
|
442
|
-
return
|
|
442
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
443
443
|
style: boxStyle
|
|
444
444
|
}, /*#__PURE__*/React.createElement("div", {
|
|
445
445
|
ref: this.chartRef,
|
|
@@ -447,8 +447,8 @@ class NscChart extends PureComponent {
|
|
|
447
447
|
flex: 1,
|
|
448
448
|
height: "100%"
|
|
449
449
|
}
|
|
450
|
-
}), /*#__PURE__*/React.createElement("div", {
|
|
451
|
-
className: "nsc-chart-legendBox"
|
|
450
|
+
}), legend && /*#__PURE__*/React.createElement("div", {
|
|
451
|
+
className: cls("nsc-chart-legendBox")
|
|
452
452
|
}, legendData.map((item, index) => {
|
|
453
453
|
return /*#__PURE__*/React.createElement("div", {
|
|
454
454
|
className: "nsc-chart-legendItem",
|
|
@@ -465,12 +465,8 @@ class NscChart extends PureComponent {
|
|
|
465
465
|
}, item.value || 0), /*#__PURE__*/React.createElement("div", {
|
|
466
466
|
className: "nsc-chart-legendItem-percent"
|
|
467
467
|
}, item.percent));
|
|
468
|
-
})))
|
|
469
|
-
style: boxStyle,
|
|
470
|
-
ref: this.chartRef,
|
|
471
|
-
id: "nsc_charts"
|
|
472
|
-
});
|
|
468
|
+
})));
|
|
473
469
|
}
|
|
474
470
|
}
|
|
475
471
|
export default NscChart;
|
|
476
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJlY2hhcnRzIiwiU3RvcmUiLCJ1dGlscyIsInB4MnZ3IiwiaXNBcnJheSIsImlzT2JqZWN0IiwiTnNjQ2hhcnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiZGF0YVNvdXJjZSIsImxlZ2VuZERhdGEiLCJjb2xvcnMiLCJkYXRhIiwic3RvcmUiLCJjaGlsZHJlbiIsIm9wdGlvbiIsIm9wdGlvbnMiLCJhdXRvTG9hZCIsInVybCIsImxpc3RlbmVycyIsImxpc3RlbmVyc1BvcHMiLCJzdG9yZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJFcnJvciIsIl90aGlzIiwic3RvcmVQcm9wcyIsIl9vYmplY3RTcHJlYWQiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9uQmVmb3JlTG9hZCIsImNhbGxiYWNrIiwibG9hZCIsIm1vZGVsRGF0YSIsInNldFN0YXRlIiwiaXNGaXJzdCIsImluaXQiLCJkYXRhQ2hhbmdlZCIsImNvbXBvbmVudERpZE1vdW50IiwibXlDaGFydCIsImNoYXJ0UmVmIiwiY3VycmVudCIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsInNuYXBzaG90IiwiSlNPTiIsInN0cmluZ2lmeSIsInJlU2V0Q2hhcnQiLCJpc1N0cmluZyIsInYiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImRpc3Bvc2UiLCJ3aW5kb3ciLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2hhcnRSZXNpemUiLCJiaW5kIiwiaXNSZXBsYWNlIiwidGVzdCIsInJlcGxhY2UiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJnZXRSYW5kb21Db2xvciIsImNvbG9yIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwidG9TdHJpbmciLCJwYWRTdGFydCIsImdlbmVyYXRlQ29sb3JzIiwiY291bnQiLCJkZWZhdWx0Q29sb3JzIiwic2xpY2UiLCJuZWVkZWQiLCJpIiwicHVzaCIsImRhdGFDb252ZXJzaW9uIiwiZGF0YXMiLCJkYXRhTWFwIiwicmVzdWx0IiwibWFwIiwiaXRlbSIsInZhbHVlIiwidGVtcE9iaiIsImtleSIsIm9iamVjdENvbnZlcnNpb24iLCJvYmoiLCJ0eXBlIiwibGVnZW5kIiwiYWxsRGF0YSIsImNhbGN1bGF0ZVBlcmNlbnRhZ2VzIiwidG90YWwiLCJyZWR1Y2UiLCJzdW0iLCJuYW1lIiwicGVyY2VudCIsImluZGV4IiwiY29uY2F0IiwidG9GaXhlZCIsIm90aGVyc1RvdGFsIiwicGFyc2VGbG9hdCIsImxhc3RQZXJjZW50IiwiZ2V0TmV3T3B0aW9uIiwibmV3T3B0aW9uIiwic2VyaWVzIiwiQXJyYXkiLCJ0b29sdGlwIiwidHJpZ2dlciIsInNlcmllc0l0ZW0iLCJiYXJXaWR0aCIsIml0ZW1TdHlsZSIsImJvcmRlclJhZGl1cyIsInBpZURhdGFDb3VudCIsInBpZUNvbG9ycyIsInJhZGl1cyIsImxhYmVsIiwic2hvdyIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJfbXlDaGFydCRnZXRaciIsIl9teUNoYXJ0JGdldFpyMiIsIk9uQ2xpY2siLCJPblpyQ2xpY2siLCJzdGF0ZSIsIm5ld0RhdGFzIiwic2VyaWVzQ291bnQiLCJkZWZhdWx0T3B0aW9uIiwieEF4aXMiLCJ5QXhpcyIsImNoYXJ0Q29sb3JzIiwiY2xlYXIiLCJvZmYiLCJnZXRaciIsInNldE9wdGlvbiIsIm9uIiwicGFyYW1zIiwic2V0VGltZW91dCIsInJlc2l6ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW5kZXIiLCJ3aWR0aCIsImhlaWdodCIsImJveFN0eWxlIiwiZGlzcGxheSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInJlZiIsImZsZXgiLCJjbGFzc05hbWUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJpZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvY2hhcnQvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCAqIGFzIGVjaGFydHMgZnJvbSBcImVjaGFydHNcIjtcclxuaW1wb3J0IHsgRUNoYXJ0cyB9IGZyb20gXCJlY2hhcnRzL2xpYi9lY2hhcnRzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQgeyBkZWVwTWVyZ2UsIHB4MnZ3IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzT2JqZWN0IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbnRlcmZhY2UgQ2hhcnRQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIG9wdGlvbjogYW55O1xyXG4gIGRhdGE/OiBBcnJheTxPYmplY3Q+IHwgT2JqZWN0O1xyXG4gIHdpZHRoOiBudW1iZXIgfCBzdHJpbmc7IC8v5Zu+6KGo5a695bqmXHJcbiAgaGVpZ2h0OiBudW1iZXIgfCBzdHJpbmc7IC8v5Zu+6KGo6ZW/5bqmXHJcbiAgYXV0b0xvYWQ/OiBib29sZWFuOyAvL+aVsOaNruaUueWPmO+8jOiHquWKqOWIt+aWsOWbvuihqCzpu5jorqR0cnVlXHJcbiAgT25DbGljaz86IChwYXJhbXM6IGFueSwgZT86IGFueSkgPT4gdm9pZDsgLy/lm77ooajngrnlh7vkuovku7ZcclxuICBPblpyQ2xpY2s/OiAocGFyYW1zOiBhbnksIGU/OiBhbnkpID0+IHZvaWQ7IC8v5Zu+6KGo54K55Ye75LqL5Lu2XHJcbiAgbGVnZW5kPzogYm9vbGVhbjsgLy/oh6rlrprkuYnlm77kvovmmK/lkKbmmL7npLog77yM55So5LqO6aW85Zu+XHJcbiAgW3Byb05hbWVzOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8vZGF0YeekuuS+i1xyXG4vKipcclxuIOaVsOe7hO+8mlxyXG4gZGF0YT1be25hbWU6JzHmnIgnLHZhbHVlOjIwfSx7bmFtZTonMuaciCcsdmFsdWU6MTB9LHtuYW1lOicz5pyIJyx2YWx1ZToyNX1dXHJcbiDlr7nosaFcclxuIGRhdGE9e25hbWU6Wycx5pyIJywnMuaciCcsJzPmnIgnXSx2YWx1ZTpbMjAsMzAsNDBdfVxyXG4gKi9cclxuY2xhc3MgTnNjQ2hhcnQgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PENoYXJ0UHJvcHM+IHtcclxuICBjaGFydFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuICBteUNoYXJ0OiBFQ2hhcnRzIHwgbnVsbCA9IG51bGw7XHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIGRlZmF1bHRDb2xvcnMgPSBbXHJcbiAgICBcIiM1Qjk2RjdcIixcclxuICAgIFwiIzczQzhGRlwiLFxyXG4gICAgXCIjM0M2Q0ZFXCIsXHJcbiAgICBcIiM4MThGRkZcIixcclxuICAgIFxyXG4gICAgXCIjOTdEQ0ZCXCIsXHJcbiAgICBcIiNFRjZGNUJcIixcclxuICAgIFwiI0Y4QkY3MFwiLFxyXG4gICAgXCIjNTdDMzlFXCIsXHJcbiAgXSBhcyBzdHJpbmdbXTtcclxuICBzdGF0ZSA9IHtcclxuICAgIGRhdGFTb3VyY2U6IG51bGwsXHJcbiAgICBsZWdlbmREYXRhOiBbXSxcclxuICAgIGNvbG9yczogW10sXHJcbiAgfTtcclxuICBpc0ZpcnN0ID0gdHJ1ZTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgb3B0aW9uOiBvcHRpb25zLFxyXG4gICAgICBhdXRvTG9hZCA9IHRydWUsXHJcbiAgICB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB7IHVybCwgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sIC4uLnN0b3JlcyB9ID0gc3RvcmU7XHJcbiAgICBpZiAoIWNoaWxkcmVuKSB7XHJcbiAgICAgIGlmICghKGRhdGEgfHwgdXJsIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs44CBZGF0YeOAgW9wdGlvbuS4jeiDvemDveS4uuepuu+8gVwiKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgICBsZXQgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogZnVuY3Rpb24gKHN0b3JlLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMub25CZWZvcmVMb2FkLCBfdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbG9hZDogZnVuY3Rpb24gKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpIHtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChfdGhpcy5pc0ZpcnN0ICYmIGF1dG9Mb2FkKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5pbml0KCk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5pc0ZpcnN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5sb2FkLCBfdGhpcywgW2RhdGEsIG1vZGVsRGF0YSwgc3RvcmVdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkYXRhQ2hhbmdlZDogZnVuY3Rpb24gKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpIHtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChhdXRvTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaW5pdCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMuZGF0YUNoYW5nZWQsIF90aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnN0b3JlcyxcclxuICAgICAgfTtcclxuICAgICAgaWYgKHVybCAmJiBkYXRhID09IG51bGwpIHtcclxuICAgICAgICBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICBhdXRvTG9hZDogdHJ1ZSxcclxuICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4uc3RvcmVQcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgU3RvcmUoc3RvcmVQcm9wcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgYXV0b0xvYWQgPSB0cnVlLCBzdG9yZSwgb3B0aW9uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgLy8g5re75Yqg5qOA5p+l6YG/5YWN6YeN5aSN5Yid5aeL5YyWXHJcbiAgICBpZiAodGhpcy5teUNoYXJ0IHx8ICF0aGlzLmNoYXJ0UmVmLmN1cnJlbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGEgJiYgYXV0b0xvYWQpIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9IGVsc2UgaWYgKCFkYXRhICYmICFzdG9yZT8udXJsICYmIG9wdGlvbikge1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShcclxuICAgIHByZXZQcm9wczogUmVhZG9ubHk8Q2hhcnRQcm9wcz4sXHJcbiAgICBwcmV2U3RhdGU6IFJlYWRvbmx5PHt9PixcclxuICAgIHNuYXBzaG90PzogYW55XHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGF1dG9Mb2FkID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChhdXRvTG9hZCkge1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkocHJldlByb3BzLmRhdGEpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmRhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocHJldlByb3BzLm9wdGlvbikgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMub3B0aW9uKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVTZXRDaGFydCgpIHtcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuICBpc1N0cmluZyh2KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCI7XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgLy8g5riF55CGIGVjaGFydHMg5a6e5L6LXHJcbiAgICBpZiAodGhpcy5teUNoYXJ0KSB7XHJcbiAgICAgIHRoaXMubXlDaGFydC5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMubXlDaGFydCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g56e76Zmk5LqL5Lu255uR5ZCs5ZmoXHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZUNoYXJ0UmVzaXplLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgaXNSZXBsYWNlKHYpIHtcclxuICAgIHJldHVybiAvXnsuKn0kL2dpLnRlc3Qodik7XHJcbiAgfVxyXG4gIHJlcGxhY2Uodikge1xyXG4gICAgcmV0dXJuIHYuc3Vic3RyaW5nKDEsIHYubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG5cclxuICBnZXRSYW5kb21Db2xvcigpIHtcclxuICAgIGxldCBjb2xvcjtcclxuICAgIGRvIHtcclxuICAgICAgY29sb3IgPVxyXG4gICAgICAgIFwiI1wiICtcclxuICAgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAweGZmZmZmZilcclxuICAgICAgICAgIC50b1N0cmluZygxNilcclxuICAgICAgICAgIC5wYWRTdGFydCg2LCBcIjBcIik7XHJcbiAgICB9IHdoaWxlIChjb2xvciA9PT0gXCIjRkZGRkZGXCIgfHwgY29sb3IgPT09IFwiIzAwMDAwMFwiKTtcclxuICAgIHJldHVybiBjb2xvcjtcclxuICB9XHJcbiAgZ2VuZXJhdGVDb2xvcnMoY291bnQ6IG51bWJlcik6IHN0cmluZ1tdIHtcclxuICAgIC8vIOWmguaenOmcgOimgeeahOminOiJsuaVsOmHj+WwkeS6juaIluetieS6jum7mOiupOminOiJsuaVsOmHj++8jOebtOaOpei/lOWbnuWvueW6lOaVsOmHj+eahOm7mOiupOminOiJslxyXG4gICAgaWYgKGNvdW50IDw9IHRoaXMuZGVmYXVsdENvbG9ycy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENvbG9ycy5zbGljZSgwLCBjb3VudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5ZCm5YiZ77yM5YWI5aSN5Yi25omA5pyJ6buY6K6k6aKc6ImyXHJcbiAgICBjb25zdCBjb2xvcnMgPSBbLi4udGhpcy5kZWZhdWx0Q29sb3JzXTtcclxuXHJcbiAgICAvLyDnlJ/miJDpop3lpJbnmoTpmo/mnLrpopzoibJcclxuICAgIGNvbnN0IG5lZWRlZCA9IGNvdW50IC0gdGhpcy5kZWZhdWx0Q29sb3JzLmxlbmd0aDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmVlZGVkOyBpKyspIHtcclxuICAgICAgY29sb3JzLnB1c2godGhpcy5nZXRSYW5kb21Db2xvcigpKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xvcnMgfSk7XHJcbiAgICByZXR1cm4gY29sb3JzO1xyXG4gIH1cclxuICBkYXRhQ29udmVyc2lvbihkYXRhLCBkYXRhcywgZGF0YU1hcCkge1xyXG4gICAgbGV0IHJlc3VsdDtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzU3RyaW5nKGRhdGEpICYmIHRoaXMuaXNSZXBsYWNlKGRhdGEpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gZGF0YU1hcFt0aGlzLnJlcGxhY2UoZGF0YSldO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICBkYXRhLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHYgPSBpdGVtPy52YWx1ZSB8fCBudWxsO1xyXG4gICAgICAgICAgaWYgKHYgJiYgdGhpcy5pc1JlcGxhY2UodikpIHtcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odiwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJlc3VsdCA9IGRhdGE7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoZGF0YSkpIHtcclxuICAgICAgICByZXN1bHQgPSBbXTtcclxuICAgICAgICBpZiAoaXNBcnJheShkYXRhcykpIHtcclxuICAgICAgICAgIGRhdGFzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgdGVtcE9iaiA9IHt9O1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gaXRlbSkge1xyXG4gICAgICAgICAgICAgIGxldCB2ID0gaXRlbVtrZXldO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzUmVwbGFjZSh2KSkge1xyXG4gICAgICAgICAgICAgICAgdGVtcE9ialtrZXldID0gaXRlbVt0aGlzLnJlcGxhY2UodildO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wT2JqW2tleV0gPSB2O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh0ZW1wT2JqKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIG9iamVjdENvbnZlcnNpb24ob2JqLCBkYXRhcywgZGF0YU1hcCkge1xyXG4gICAgbGV0IHRlbXBPYmo6IGFueTtcclxuICAgIGlmIChvYmopIHtcclxuICAgICAgaWYgKGlzQXJyYXkob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSBbLi4ub2JqXTtcclxuICAgICAgICB0ZW1wT2JqLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW0uZGF0YSkge1xyXG4gICAgICAgICAgICBpdGVtLmRhdGEgPSB0aGlzLmRhdGFDb252ZXJzaW9uKGl0ZW0uZGF0YSwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTdHJpbmcob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSBvYmo7XHJcbiAgICAgICAgdGVtcE9iai5kYXRhID0gdGhpcy5kYXRhQ29udmVyc2lvbih0ZW1wT2JqLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSB7IC4uLm9iaiB9O1xyXG4gICAgICAgIHRlbXBPYmouZGF0YSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odGVtcE9iai5kYXRhLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgICAgaWYgKHRlbXBPYmoudHlwZSA9PT0gXCJwaWVcIiAmJiB0aGlzLnByb3BzLmxlZ2VuZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICBsZXQgYWxsRGF0YSA9IHRlbXBPYmouZGF0YTtcclxuICAgICAgICAgIGNvbnN0IGxlZ2VuZERhdGEgPSB0aGlzLmNhbGN1bGF0ZVBlcmNlbnRhZ2VzKGFsbERhdGEpO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGxlZ2VuZERhdGEsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0ZW1wT2JqO1xyXG4gIH1cclxuICBjYWxjdWxhdGVQZXJjZW50YWdlcyhcclxuICAgIGFsbERhdGE6IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH0+XHJcbiAgKTogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBudW1iZXI7IHBlcmNlbnQ6IHN0cmluZyB9PiB7XHJcbiAgICBpZiAoIWFsbERhdGEgfHwgYWxsRGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG90YWwgPSBhbGxEYXRhLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbS52YWx1ZSB8fCAwKSwgMCk7XHJcbiAgICBpZiAodG90YWwgPT09IDApIHtcclxuICAgICAgcmV0dXJuIGFsbERhdGEubWFwKChpdGVtKSA9PiAoe1xyXG4gICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcclxuICAgICAgICBwZXJjZW50OiBcIjAlXCIsXHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgcGVyY2VudGFnZXMgZm9yIGFsbCBidXQgdGhlIGxhc3QgaXRlbVxyXG4gICAgY29uc3QgcmVzdWx0ID0gYWxsRGF0YS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gYWxsRGF0YS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgLy8gRm9yIHRoZSBsYXN0IGl0ZW0sIHdlJ2xsIGNhbGN1bGF0ZSBiYXNlZCBvbiByZW1haW5pbmcgcGVyY2VudGFnZVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcclxuICAgICAgICAgIHBlcmNlbnQ6IFwiXCIsIC8vIFBsYWNlaG9sZGVyLCB3aWxsIGJlIGNhbGN1bGF0ZWQgYmVsb3dcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBwZXJjZW50ID0gKGl0ZW0udmFsdWUgLyB0b3RhbCkgKiAxMDA7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxyXG4gICAgICAgIHBlcmNlbnQ6IGAke3BlcmNlbnQudG9GaXhlZCgyKX0lYCxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIENhbGN1bGF0ZSB0aGUgbGFzdCBpdGVtJ3MgcGVyY2VudGFnZSB0byBlbnN1cmUgdG90YWwgaXMgMTAwJVxyXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IG90aGVyc1RvdGFsID0gcmVzdWx0LnNsaWNlKDAsIC0xKS5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBzdW0gKyBwYXJzZUZsb2F0KGl0ZW0ucGVyY2VudCk7XHJcbiAgICAgIH0sIDApO1xyXG5cclxuICAgICAgY29uc3QgbGFzdFBlcmNlbnQgPSAxMDAgLSBvdGhlcnNUb3RhbDtcclxuICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXS5wZXJjZW50ID0gYCR7bGFzdFBlcmNlbnQudG9GaXhlZCgyKX0lYDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBnZXROZXdPcHRpb24obmV3T3B0aW9uKSB7XHJcbiAgICBsZXQgY29sb3JzID0gbmV3T3B0aW9uLmNvbG9yO1xyXG4gICAgaWYgKG5ld09wdGlvbi5zZXJpZXMpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmV3T3B0aW9uLnNlcmllcykpIHtcclxuICAgICAgICBuZXdPcHRpb24udG9vbHRpcCA9IG5ld09wdGlvbi50b29sdGlwIHx8IHsgdHJpZ2dlcjogXCJheGlzXCIgfTtcclxuICAgICAgICBuZXdPcHRpb24uc2VyaWVzID0gbmV3T3B0aW9uLnNlcmllcy5tYXAoKHNlcmllc0l0ZW0pID0+IHtcclxuICAgICAgICAgIC8vIOWmguaenOaYr+afseeKtuWbvuS4lOayoeacieiuvue9riBiYXJXaWR0aO+8jOWImeiuvue9rum7mOiupOWAvOS4ujIwXHJcbiAgICAgICAgICBpZiAoc2VyaWVzSXRlbS50eXBlID09PSBcImJhclwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgYmFyV2lkdGg6IDIwLFxyXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBbNSwgNSwgMCwgMF0sXHJcbiAgICAgICAgICAgICAgICAuLi5zZXJpZXNJdGVtLml0ZW1TdHlsZSwgLy8g5L+d55WZ55So5oi36Ieq5a6a5LmJ55qEIGl0ZW1TdHlsZVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgLi4uc2VyaWVzSXRlbSxcclxuICAgICAgICAgICAgICAvLyDmraPnoa7orr7nva4gYm9yZGVyUmFkaXVz77yM6ZyA6KaB5pS+5ZyoIGl0ZW1TdHlsZSDkuK1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoc2VyaWVzSXRlbS50eXBlID09PSBcInBpZVwiKSB7XHJcbiAgICAgICAgICAgIG5ld09wdGlvbi50b29sdGlwID0gbmV3T3B0aW9uLnRvb2x0aXAgfHwgeyB0cmlnZ2VyOiBcIml0ZW1cIiB9O1xyXG4gICAgICAgICAgICBsZXQgcGllRGF0YUNvdW50ID0gMTtcclxuICAgICAgICAgICAgaWYgKHNlcmllc0l0ZW0uZGF0YSAmJiBBcnJheS5pc0FycmF5KHNlcmllc0l0ZW0uZGF0YSkpIHtcclxuICAgICAgICAgICAgICBwaWVEYXRhQ291bnQgPSBzZXJpZXNJdGVtLmRhdGEubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDkuLrppbzlm77nlJ/miJDpgILlvZPmlbDph4/nmoTpopzoibJcclxuICAgICAgICAgICAgY29uc3QgcGllQ29sb3JzID0gdGhpcy5nZW5lcmF0ZUNvbG9ycyhwaWVEYXRhQ291bnQpO1xyXG4gICAgICAgICAgICBjb2xvcnMgPSBjb2xvcnMgfHwgcGllQ29sb3JzO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIHJhZGl1czogW1wiNDAlXCIsIFwiNzAlXCJdLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAxMCxcclxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBcIiNmZmZcIixcclxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLFxyXG4gICAgICAgICAgICAgICAgLi4uc2VyaWVzSXRlbS5pdGVtU3R5bGUsIC8vIOS/neeVmeeUqOaIt+iHquWumuS5ieeahCBpdGVtU3R5bGVcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIC8vIGNvbG9yOiBzZXJpZXNJdGVtLmNvbG9yIHx8IHBpZUNvbG9ycyxcclxuICAgICAgICAgICAgICAuLi5zZXJpZXNJdGVtLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHNlcmllc0l0ZW07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAobmV3T3B0aW9uLnNlcmllcy50eXBlID09PSBcImJhclwiKSB7XHJcbiAgICAgICAgLy8g5aSE55CG5Y2V5LiqIHNlcmllcyDlr7nosaHnmoTmg4XlhrVcclxuICAgICAgICBuZXdPcHRpb24uc2VyaWVzID0ge1xyXG4gICAgICAgICAgYmFyV2lkdGg6IDIwLFxyXG4gICAgICAgICAgLi4ubmV3T3B0aW9uLnNlcmllcyxcclxuICAgICAgICAgIC8vIOato+ehruiuvue9riBib3JkZXJSYWRpdXPvvIzpnIDopoHmlL7lnKggaXRlbVN0eWxlIOS4rVxyXG4gICAgICAgICAgaXRlbVN0eWxlOiB7XHJcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogWzUsIDUsIDAsIDBdLFxyXG4gICAgICAgICAgICAuLi5uZXdPcHRpb24uc2VyaWVzLml0ZW1TdHlsZSwgLy8g5L+d55WZ55So5oi36Ieq5a6a5LmJ55qEIGl0ZW1TdHlsZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2UgaWYgKG5ld09wdGlvbi5zZXJpZXMudHlwZSA9PT0gXCJwaWVcIikge1xyXG4gICAgICAgIC8vIOWkhOeQhuWNleS4qiBzZXJpZXMg5a+56LGh55qE5oOF5Ya177yI6aW85Zu+77yJXHJcbiAgICAgICAgbmV3T3B0aW9uLnRvb2x0aXAgPSBuZXdPcHRpb24udG9vbHRpcCB8fCB7IHRyaWdnZXI6IFwiaXRlbVwiIH07XHJcbiAgICAgICAgbGV0IHBpZURhdGFDb3VudCA9IDE7XHJcbiAgICAgICAgaWYgKG5ld09wdGlvbi5zZXJpZXMuZGF0YSAmJiBBcnJheS5pc0FycmF5KG5ld09wdGlvbi5zZXJpZXMuZGF0YSkpIHtcclxuICAgICAgICAgIHBpZURhdGFDb3VudCA9IG5ld09wdGlvbi5zZXJpZXMuZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOS4uumlvOWbvueUn+aIkOmAguW9k+aVsOmHj+eahOminOiJslxyXG4gICAgICAgIGNvbnN0IHBpZUNvbG9ycyA9IHRoaXMuZ2VuZXJhdGVDb2xvcnMocGllRGF0YUNvdW50KTtcclxuICAgICAgICBjb2xvcnMgPSBjb2xvcnMgfHwgcGllQ29sb3JzO1xyXG4gICAgICAgIG5ld09wdGlvbi5zZXJpZXMgPSB7XHJcbiAgICAgICAgICByYWRpdXM6IFtcIjQwJVwiLCBcIjcwJVwiXSxcclxuICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgIHNob3c6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm5ld09wdGlvbi5zZXJpZXMsXHJcbiAgICAgICAgICBpdGVtU3R5bGU6IHtcclxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAxMCxcclxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IFwiI2ZmZlwiLFxyXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogMixcclxuICAgICAgICAgICAgLi4ubmV3T3B0aW9uLnNlcmllcy5pdGVtU3R5bGUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLy8gY29sb3I6IG5ld09wdGlvbi5zZXJpZXMuY29sb3IgfHwgcGllQ29sb3JzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG5ld09wdGlvbi5jb2xvciA9IGNvbG9ycztcclxuICAgIHJldHVybiBuZXdPcHRpb247XHJcbiAgfVxyXG4gIGluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hhcnRSZWYuY3VycmVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG9wdGlvbiwgZGF0YSwgT25DbGljaywgT25ackNsaWNrIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBkYXRhU291cmNlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IGRhdGFNYXA6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgbmV3RGF0YXMgPSBkYXRhIHx8IGRhdGFTb3VyY2U7XHJcbiAgICBsZXQgc2VyaWVzQ291bnQgPSAxOyAvLyDpu5jorqToh7PlsJHkuIDkuKrns7vliJdcclxuICAgIGlmIChvcHRpb24/LnNlcmllcykge1xyXG4gICAgICBzZXJpZXNDb3VudCA9IEFycmF5LmlzQXJyYXkob3B0aW9uLnNlcmllcykgPyBvcHRpb24uc2VyaWVzLmxlbmd0aCA6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g55Sf5oiQ6YCC5b2T5pWw6YeP55qE6aKc6Imy77yI5aaC5p6c55So5oi35rKh5pyJ5o+Q5L6b6aKc6Imy77yJXHJcbiAgICBsZXQgZGVmYXVsdE9wdGlvbiA9IHt9O1xyXG5cclxuICAgIGxldCBuZXdPcHRpb246IGFueSA9IHsgLi4uZGVmYXVsdE9wdGlvbiwgLi4ub3B0aW9uIH07XHJcblxyXG4gICAgaWYgKGlzQXJyYXkobmV3RGF0YXMpKSB7XHJcbiAgICAgIG5ld0RhdGFzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBpdGVtKSB7XHJcbiAgICAgICAgICBpZiAoZGF0YU1hcFtrZXldID09IG51bGwpIHtcclxuICAgICAgICAgICAgZGF0YU1hcFtrZXldID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRhTWFwW2tleV0ucHVzaChpdGVtW2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG5ld0RhdGFzKSkge1xyXG4gICAgICBkYXRhTWFwID0gbmV3RGF0YXM7XHJcbiAgICB9XHJcbiAgICBuZXdPcHRpb24ueEF4aXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24obmV3T3B0aW9uLnhBeGlzLCBuZXdEYXRhcywgZGF0YU1hcCk7XHJcbiAgICBuZXdPcHRpb24ueUF4aXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24obmV3T3B0aW9uLnlBeGlzLCBuZXdEYXRhcywgZGF0YU1hcCk7XHJcbiAgICBuZXdPcHRpb24uc2VyaWVzID0gdGhpcy5vYmplY3RDb252ZXJzaW9uKFxyXG4gICAgICBuZXdPcHRpb24uc2VyaWVzLFxyXG4gICAgICBuZXdEYXRhcyxcclxuICAgICAgZGF0YU1hcFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGNoYXJ0Q29sb3JzID0gdGhpcy5nZW5lcmF0ZUNvbG9ycyhzZXJpZXNDb3VudCk7XHJcbiAgICBuZXdPcHRpb24gPSB0aGlzLmdldE5ld09wdGlvbih7IC4uLm5ld09wdGlvbiB9KTtcclxuICAgIG5ld09wdGlvbiA9IHsgLi4ubmV3T3B0aW9uICxjb2xvcjogbmV3T3B0aW9uLmNvbG9yIHx8IGNoYXJ0Q29sb3JzfTtcclxuICAgIGlmICh0aGlzLm15Q2hhcnQpIHtcclxuICAgICAgdGhpcy5teUNoYXJ0LmRpc3Bvc2UoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG15Q2hhcnQgPSAodGhpcy5teUNoYXJ0ID0gZWNoYXJ0cy5pbml0KFxyXG4gICAgICB0aGlzLmNoYXJ0UmVmLmN1cnJlbnQgYXMgSFRNTERpdkVsZW1lbnRcclxuICAgICkpOyAvL+WIneWni+WMlmVjaGFydHPvvIzpgJrov4dyZWblsZ7mgKfojrflj5Zkb21cclxuICAgIG15Q2hhcnQuY2xlYXIoKTtcclxuICAgIG15Q2hhcnQub2ZmKFwiY2xpY2tcIik7XHJcbiAgICBteUNoYXJ0Py5nZXRacigpPy5vZmYoXCJjbGlja1wiKTtcclxuICAgIG15Q2hhcnQuc2V0T3B0aW9uKG5ld09wdGlvbik7XHJcbiAgICBteUNoYXJ0Lm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICBPbkNsaWNrICYmIE9uQ2xpY2socGFyYW1zLCBteUNoYXJ0KTtcclxuICAgIH0pO1xyXG4gICAgbXlDaGFydD8uZ2V0WnIoKT8ub24oXCJjbGlja1wiLCAocGFyYW1zKSA9PiB7XHJcbiAgICAgIE9uWnJDbGljayAmJiBPblpyQ2xpY2socGFyYW1zLCBteUNoYXJ0KTtcclxuICAgIH0pO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm15Q2hhcnQpIHtcclxuICAgICAgICB0aGlzLm15Q2hhcnQucmVzaXplKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGNvbG9yczogbmV3T3B0aW9uLmNvbG9yLFxyXG4gICAgfSk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZUNoYXJ0UmVzaXplLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2hhcnRSZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5teUNoYXJ0KSB7XHJcbiAgICAgIHRoaXMubXlDaGFydC5yZXNpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCwgbGVnZW5kIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsZWdlbmREYXRhID0gW10sIGNvbG9ycyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGJveFN0eWxlID0ge1xyXG4gICAgICB3aWR0aDogdHlwZW9mIHdpZHRoID09IFwibnVtYmVyXCIgPyBweDJ2dyh3aWR0aCkgOiB3aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0eXBlb2YgaGVpZ2h0ID09IFwibnVtYmVyXCIgPyBweDJ2dyhoZWlnaHQpIDogaGVpZ2h0LFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBpZiAobGVnZW5kID09IHRydWUpIHtcclxuICAgICAgYm94U3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxlZ2VuZCA9PSB0cnVlID8gKFxyXG4gICAgICA8ZGl2IHN0eWxlPXtib3hTdHlsZX0+XHJcbiAgICAgICAgPGRpdiByZWY9e3RoaXMuY2hhcnRSZWZ9IHN0eWxlPXt7IGZsZXg6IDEsIGhlaWdodDogXCIxMDAlXCIgfX0+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtY2hhcnQtbGVnZW5kQm94XCI+XHJcbiAgICAgICAgICB7bGVnZW5kRGF0YS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtY2hhcnQtbGVnZW5kSXRlbVwiIGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJuc2MtY2hhcnQtbGVnZW5kSXRlbS1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiBjb2xvcnNbaW5kZXhdIH19XHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1jaGFydC1sZWdlbmRJdGVtLW5hbWVcIj57aXRlbS5uYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtY2hhcnQtbGVnZW5kSXRlbS12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS52YWx1ZSB8fCAwfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1jaGFydC1sZWdlbmRJdGVtLXBlcmNlbnRcIj5cclxuICAgICAgICAgICAgICAgICAge2l0ZW0ucGVyY2VudH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKSA6IChcclxuICAgICAgPGRpdiBzdHlsZT17Ym94U3R5bGV9IHJlZj17dGhpcy5jaGFydFJlZn0gaWQ9XCJuc2NfY2hhcnRzXCI+PC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTnNjQ2hhcnQ7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBUSxPQUFPO0FBQzVDLE9BQU8sS0FBS0MsT0FBTyxNQUFNLFNBQVM7QUFFbEMsT0FBT0MsS0FBSyxNQUFzQixhQUFhO0FBQy9DLFNBQVNDLEtBQUssUUFBUSx1QkFBdUI7QUFDN0MsU0FBb0JDLEtBQUssUUFBUSxhQUFhO0FBQzlDLFNBQVNDLE9BQU8sRUFBRUMsUUFBUSxRQUFRLG1CQUFtQjtBQUNyRCxPQUFPLGNBQWM7QUFjckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQyxRQUFRLFNBQVNQLGFBQWEsQ0FBYTtFQXFCL0NRLFdBQVdBLENBQUNDLEtBQUssRUFBRTtJQUNqQixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUFDQyxlQUFBLGdDQXJCSlgsS0FBSyxDQUFDWSxTQUFTLENBQWlCLENBQUM7SUFBQUQsZUFBQSxrQkFDbEIsSUFBSTtJQUFBQSxlQUFBLGdCQUN0QixDQUFDLENBQUM7SUFBQUEsZUFBQSx3QkFDTSxDQUNkLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFFVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLENBQ1Y7SUFBQUEsZUFBQSxnQkFDTztNQUNORSxVQUFVLEVBQUUsSUFBSTtNQUNoQkMsVUFBVSxFQUFFLEVBQUU7TUFDZEMsTUFBTSxFQUFFO0lBQ1YsQ0FBQztJQUFBSixlQUFBLGtCQUNTLElBQUk7SUFHWixNQUFNO01BQ0pLLElBQUk7TUFDSkMsS0FBSyxHQUFHLENBQUMsQ0FBQztNQUNWQyxRQUFRO01BQ1JDLE1BQU0s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
|
|
472
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJlY2hhcnRzIiwiU3RvcmUiLCJ1dGlscyIsInB4MnZ3IiwiaXNBcnJheSIsImlzT2JqZWN0IiwiY2xzIiwiTnNjQ2hhcnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiZGF0YVNvdXJjZSIsImxlZ2VuZERhdGEiLCJjb2xvcnMiLCJkYXRhIiwic3RvcmUiLCJjaGlsZHJlbiIsIm9wdGlvbiIsIm9wdGlvbnMiLCJhdXRvTG9hZCIsInVybCIsImxpc3RlbmVycyIsImxpc3RlbmVyc1BvcHMiLCJzdG9yZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJFcnJvciIsIl90aGlzIiwic3RvcmVQcm9wcyIsIl9vYmplY3RTcHJlYWQiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9uQmVmb3JlTG9hZCIsImNhbGxiYWNrIiwibG9hZCIsIm1vZGVsRGF0YSIsInNldFN0YXRlIiwiaXNGaXJzdCIsImluaXQiLCJkYXRhQ2hhbmdlZCIsImNvbXBvbmVudERpZE1vdW50IiwibXlDaGFydCIsImNoYXJ0UmVmIiwiY3VycmVudCIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsInNuYXBzaG90IiwiSlNPTiIsInN0cmluZ2lmeSIsInJlU2V0Q2hhcnQiLCJpc1N0cmluZyIsInYiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImRpc3Bvc2UiLCJ3aW5kb3ciLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2hhcnRSZXNpemUiLCJiaW5kIiwiaXNSZXBsYWNlIiwidGVzdCIsInJlcGxhY2UiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJnZXRSYW5kb21Db2xvciIsImNvbG9yIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwidG9TdHJpbmciLCJwYWRTdGFydCIsImdlbmVyYXRlQ29sb3JzIiwiY291bnQiLCJkZWZhdWx0Q29sb3JzIiwic2xpY2UiLCJuZWVkZWQiLCJpIiwicHVzaCIsImRhdGFDb252ZXJzaW9uIiwiZGF0YXMiLCJkYXRhTWFwIiwicmVzdWx0IiwibWFwIiwiaXRlbSIsInZhbHVlIiwidGVtcE9iaiIsImtleSIsIm9iamVjdENvbnZlcnNpb24iLCJvYmoiLCJ0eXBlIiwibGVnZW5kIiwiYWxsRGF0YSIsImNhbGN1bGF0ZVBlcmNlbnRhZ2VzIiwidG90YWwiLCJyZWR1Y2UiLCJzdW0iLCJuYW1lIiwicGVyY2VudCIsImluZGV4IiwiY29uY2F0IiwidG9GaXhlZCIsIm90aGVyc1RvdGFsIiwicGFyc2VGbG9hdCIsImxhc3RQZXJjZW50IiwiZ2V0TmV3T3B0aW9uIiwibmV3T3B0aW9uIiwic2VyaWVzIiwiQXJyYXkiLCJ0b29sdGlwIiwidHJpZ2dlciIsInNlcmllc0l0ZW0iLCJiYXJXaWR0aCIsIml0ZW1TdHlsZSIsImJvcmRlclJhZGl1cyIsInBpZURhdGFDb3VudCIsInBpZUNvbG9ycyIsInJhZGl1cyIsImxhYmVsIiwic2hvdyIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJfbXlDaGFydCRnZXRaciIsIl9teUNoYXJ0JGdldFpyMiIsIk9uQ2xpY2siLCJPblpyQ2xpY2siLCJzdGF0ZSIsIm5ld0RhdGFzIiwic2VyaWVzQ291bnQiLCJkZWZhdWx0T3B0aW9uIiwieEF4aXMiLCJ5QXhpcyIsImNoYXJ0Q29sb3JzIiwiY2xlYXIiLCJvZmYiLCJnZXRaciIsInNldE9wdGlvbiIsIm9uIiwicGFyYW1zIiwic2V0VGltZW91dCIsInJlc2l6ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW5kZXIiLCJ3aWR0aCIsImhlaWdodCIsImJveFN0eWxlIiwiZGlzcGxheSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInJlZiIsImZsZXgiLCJjbGFzc05hbWUiLCJiYWNrZ3JvdW5kQ29sb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL2NoYXJ0L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgKiBhcyBlY2hhcnRzIGZyb20gXCJlY2hhcnRzXCI7XHJcbmltcG9ydCB7IEVDaGFydHMgfSBmcm9tIFwiZWNoYXJ0cy9saWIvZWNoYXJ0c1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHsgZGVlcE1lcmdlLCBweDJ2dyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgeyBpc0FycmF5LCBpc09iamVjdCB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0UHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBvcHRpb246IGFueTtcclxuICBkYXRhPzogQXJyYXk8T2JqZWN0PiB8IE9iamVjdDtcclxuICB3aWR0aDogbnVtYmVyIHwgc3RyaW5nOyAvL+WbvuihqOWuveW6plxyXG4gIGhlaWdodDogbnVtYmVyIHwgc3RyaW5nOyAvL+WbvuihqOmVv+W6plxyXG4gIGF1dG9Mb2FkPzogYm9vbGVhbjsgLy/mlbDmja7mlLnlj5jvvIzoh6rliqjliLfmlrDlm77ooags6buY6K6kdHJ1ZVxyXG4gIE9uQ2xpY2s/OiAocGFyYW1zOiBhbnksIGU/OiBhbnkpID0+IHZvaWQ7IC8v5Zu+6KGo54K55Ye75LqL5Lu2XHJcbiAgT25ackNsaWNrPzogKHBhcmFtczogYW55LCBlPzogYW55KSA9PiB2b2lkOyAvL+WbvuihqOeCueWHu+S6i+S7tlxyXG4gIGxlZ2VuZD86IGJvb2xlYW47IC8v6Ieq5a6a5LmJ5Zu+5L6L5piv5ZCm5pi+56S6IO+8jOeUqOS6jumlvOWbvlxyXG4gIFtwcm9OYW1lczogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vL2RhdGHnpLrkvotcclxuLyoqXHJcbiDmlbDnu4TvvJpcclxuIGRhdGE9W3tuYW1lOicx5pyIJyx2YWx1ZToyMH0se25hbWU6JzLmnIgnLHZhbHVlOjEwfSx7bmFtZTonM+aciCcsdmFsdWU6MjV9XVxyXG4g5a+56LGhXHJcbiBkYXRhPXtuYW1lOlsnMeaciCcsJzLmnIgnLCcz5pyIJ10sdmFsdWU6WzIwLDMwLDQwXX1cclxuICovXHJcbmNsYXNzIE5zY0NoYXJ0IGV4dGVuZHMgUHVyZUNvbXBvbmVudDxDaGFydFByb3BzPiB7XHJcbiAgY2hhcnRSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgbXlDaGFydDogRUNoYXJ0cyB8IG51bGwgPSBudWxsO1xyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICBkZWZhdWx0Q29sb3JzID0gW1xyXG4gICAgXCIjNUI5NkY3XCIsXHJcbiAgICBcIiM3M0M4RkZcIixcclxuICAgIFwiIzNDNkNGRVwiLFxyXG4gICAgXCIjODE4RkZGXCIsXHJcbiAgICBcIiM5N0RDRkJcIixcclxuICAgIFwiI0VGNkY1QlwiLFxyXG4gICAgXCIjRjhCRjcwXCIsXHJcbiAgICBcIiM1N0MzOUVcIixcclxuICBdIGFzIHN0cmluZ1tdO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgZGF0YVNvdXJjZTogbnVsbCxcclxuICAgIGxlZ2VuZERhdGE6IFtdLFxyXG4gICAgY29sb3JzOiBbXSxcclxuICB9O1xyXG4gIGlzRmlyc3QgPSB0cnVlO1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBvcHRpb246IG9wdGlvbnMsXHJcbiAgICAgIGF1dG9Mb2FkID0gdHJ1ZSxcclxuICAgIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHsgdXJsLCBsaXN0ZW5lcnM6IGxpc3RlbmVyc1BvcHMgPSB7fSwgLi4uc3RvcmVzIH0gPSBzdG9yZTtcclxuICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgaWYgKCEoZGF0YSB8fCB1cmwgfHwgb3B0aW9ucykpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzjgIFkYXRh44CBb3B0aW9u5LiN6IO96YO95Li656m677yBXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgIGxldCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiBmdW5jdGlvbiAoc3RvcmUsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5vbkJlZm9yZUxvYWQsIF90aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG1vZGVsRGF0YSB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKF90aGlzLmlzRmlyc3QgJiYgYXV0b0xvYWQpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmluaXQoKTtcclxuICAgICAgICAgICAgICAgIF90aGlzLmlzRmlyc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmxvYWQsIF90aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG1vZGVsRGF0YSB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGF1dG9Mb2FkKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5pbml0KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5kYXRhQ2hhbmdlZCwgX3RoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4uc3RvcmVzLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAodXJsICYmIGRhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgIHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgIGF1dG9Mb2FkOiB0cnVlLFxyXG4gICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5zdG9yZVByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBTdG9yZShzdG9yZVByb3BzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBhdXRvTG9hZCA9IHRydWUsIHN0b3JlLCBvcHRpb24gfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgaWYgKHRoaXMubXlDaGFydCB8fCAhdGhpcy5jaGFydFJlZi5jdXJyZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChkYXRhICYmIGF1dG9Mb2FkKSB7XHJcbiAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfSBlbHNlIGlmICghZGF0YSAmJiAhc3RvcmU/LnVybCAmJiBvcHRpb24pIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PENoYXJ0UHJvcHM+LFxyXG4gICAgcHJldlN0YXRlOiBSZWFkb25seTx7fT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBhdXRvTG9hZCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5kYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5kYXRhKSkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5vcHRpb24pICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLm9wdGlvbilcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlU2V0Q2hhcnQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcbiAgaXNTdHJpbmcodikge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcInN0cmluZ1wiO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIC8vIOa4heeQhiBlY2hhcnRzIOWunuS+i1xyXG4gICAgaWYgKHRoaXMubXlDaGFydCkge1xyXG4gICAgICB0aGlzLm15Q2hhcnQuZGlzcG9zZSgpO1xyXG4gICAgICB0aGlzLm15Q2hhcnQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOenu+mZpOS6i+S7tuebkeWQrOWZqFxyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVDaGFydFJlc2l6ZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIGlzUmVwbGFjZSh2KSB7XHJcbiAgICByZXR1cm4gL157Lip9JC9naS50ZXN0KHYpO1xyXG4gIH1cclxuICByZXBsYWNlKHYpIHtcclxuICAgIHJldHVybiB2LnN1YnN0cmluZygxLCB2Lmxlbmd0aCAtIDEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmFuZG9tQ29sb3IoKSB7XHJcbiAgICBsZXQgY29sb3I7XHJcbiAgICBkbyB7XHJcbiAgICAgIGNvbG9yID1cclxuICAgICAgICBcIiNcIiArXHJcbiAgICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMHhmZmZmZmYpXHJcbiAgICAgICAgICAudG9TdHJpbmcoMTYpXHJcbiAgICAgICAgICAucGFkU3RhcnQoNiwgXCIwXCIpO1xyXG4gICAgfSB3aGlsZSAoY29sb3IgPT09IFwiI0ZGRkZGRlwiIHx8IGNvbG9yID09PSBcIiMwMDAwMDBcIik7XHJcbiAgICByZXR1cm4gY29sb3I7XHJcbiAgfVxyXG4gIGdlbmVyYXRlQ29sb3JzKGNvdW50OiBudW1iZXIpOiBzdHJpbmdbXSB7XHJcbiAgICAvLyDlpoLmnpzpnIDopoHnmoTpopzoibLmlbDph4/lsJHkuo7miJbnrYnkuo7pu5jorqTpopzoibLmlbDph4/vvIznm7TmjqXov5Tlm57lr7nlupTmlbDph4/nmoTpu5jorqTpopzoibJcclxuICAgIGlmIChjb3VudCA8PSB0aGlzLmRlZmF1bHRDb2xvcnMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDb2xvcnMuc2xpY2UoMCwgY291bnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWQpuWIme+8jOWFiOWkjeWItuaJgOaciem7mOiupOminOiJslxyXG4gICAgY29uc3QgY29sb3JzID0gWy4uLnRoaXMuZGVmYXVsdENvbG9yc107XHJcblxyXG4gICAgLy8g55Sf5oiQ6aKd5aSW55qE6ZqP5py66aKc6ImyXHJcbiAgICBjb25zdCBuZWVkZWQgPSBjb3VudCAtIHRoaXMuZGVmYXVsdENvbG9ycy5sZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lZWRlZDsgaSsrKSB7XHJcbiAgICAgIGNvbG9ycy5wdXNoKHRoaXMuZ2V0UmFuZG9tQ29sb3IoKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgY29sb3JzIH0pO1xyXG4gICAgcmV0dXJuIGNvbG9ycztcclxuICB9XHJcbiAgZGF0YUNvbnZlcnNpb24oZGF0YSwgZGF0YXMsIGRhdGFNYXApIHtcclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICBpZiAodGhpcy5pc1N0cmluZyhkYXRhKSAmJiB0aGlzLmlzUmVwbGFjZShkYXRhKSkge1xyXG4gICAgICAgIHJlc3VsdCA9IGRhdGFNYXBbdGhpcy5yZXBsYWNlKGRhdGEpXTtcclxuICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGxldCB2ID0gaXRlbT8udmFsdWUgfHwgbnVsbDtcclxuICAgICAgICAgIGlmICh2ICYmIHRoaXMuaXNSZXBsYWNlKHYpKSB7XHJcbiAgICAgICAgICAgIGl0ZW0udmFsdWUgPSB0aGlzLmRhdGFDb252ZXJzaW9uKHYsIGRhdGFzLCBkYXRhTWFwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXN1bHQgPSBkYXRhO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGRhdGEpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gW107XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoZGF0YXMpKSB7XHJcbiAgICAgICAgICBkYXRhcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgdmFyIHRlbXBPYmogPSB7fTtcclxuICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgICAgICBsZXQgdiA9IGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5pc1JlcGxhY2UodikpIHtcclxuICAgICAgICAgICAgICAgIHRlbXBPYmpba2V5XSA9IGl0ZW1bdGhpcy5yZXBsYWNlKHYpXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGVtcE9ialtrZXldID0gdjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzdWx0LnB1c2godGVtcE9iaik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBvYmplY3RDb252ZXJzaW9uKG9iaiwgZGF0YXMsIGRhdGFNYXApIHtcclxuICAgIGxldCB0ZW1wT2JqOiBhbnk7XHJcbiAgICBpZiAob2JqKSB7XHJcbiAgICAgIGlmIChpc0FycmF5KG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0gWy4uLm9ial07XHJcbiAgICAgICAgdGVtcE9iai5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtLmRhdGEpIHtcclxuICAgICAgICAgICAgaXRlbS5kYXRhID0gdGhpcy5kYXRhQ29udmVyc2lvbihpdGVtLmRhdGEsIGRhdGFzLCBkYXRhTWFwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzU3RyaW5nKG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0gb2JqO1xyXG4gICAgICAgIHRlbXBPYmouZGF0YSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odGVtcE9iaiwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0geyAuLi5vYmogfTtcclxuICAgICAgICB0ZW1wT2JqLmRhdGEgPSB0aGlzLmRhdGFDb252ZXJzaW9uKHRlbXBPYmouZGF0YSwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgIGlmICh0ZW1wT2JqLnR5cGUgPT09IFwicGllXCIgJiYgdGhpcy5wcm9wcy5sZWdlbmQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgbGV0IGFsbERhdGEgPSB0ZW1wT2JqLmRhdGE7XHJcbiAgICAgICAgICBjb25zdCBsZWdlbmREYXRhID0gdGhpcy5jYWxjdWxhdGVQZXJjZW50YWdlcyhhbGxEYXRhKTtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBsZWdlbmREYXRhLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGVtcE9iajtcclxuICB9XHJcbiAgY2FsY3VsYXRlUGVyY2VudGFnZXMoXHJcbiAgICBhbGxEYXRhOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IG51bWJlciB9PlxyXG4gICk6IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogbnVtYmVyOyBwZXJjZW50OiBzdHJpbmcgfT4ge1xyXG4gICAgaWYgKCFhbGxEYXRhIHx8IGFsbERhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdGFsID0gYWxsRGF0YS5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0udmFsdWUgfHwgMCksIDApO1xyXG4gICAgaWYgKHRvdGFsID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBhbGxEYXRhLm1hcCgoaXRlbSkgPT4gKHtcclxuICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXHJcbiAgICAgICAgcGVyY2VudDogXCIwJVwiLFxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2FsY3VsYXRlIHBlcmNlbnRhZ2VzIGZvciBhbGwgYnV0IHRoZSBsYXN0IGl0ZW1cclxuICAgIGNvbnN0IHJlc3VsdCA9IGFsbERhdGEubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPT09IGFsbERhdGEubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIC8vIEZvciB0aGUgbGFzdCBpdGVtLCB3ZSdsbCBjYWxjdWxhdGUgYmFzZWQgb24gcmVtYWluaW5nIHBlcmNlbnRhZ2VcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXHJcbiAgICAgICAgICBwZXJjZW50OiBcIlwiLCAvLyBQbGFjZWhvbGRlciwgd2lsbCBiZSBjYWxjdWxhdGVkIGJlbG93XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgcGVyY2VudCA9IChpdGVtLnZhbHVlIC8gdG90YWwpICogMTAwO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcclxuICAgICAgICBwZXJjZW50OiBgJHtwZXJjZW50LnRvRml4ZWQoMil9JWAsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGxhc3QgaXRlbSdzIHBlcmNlbnRhZ2UgdG8gZW5zdXJlIHRvdGFsIGlzIDEwMCVcclxuICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBvdGhlcnNUb3RhbCA9IHJlc3VsdC5zbGljZSgwLCAtMSkucmVkdWNlKChzdW0sIGl0ZW0pID0+IHtcclxuICAgICAgICByZXR1cm4gc3VtICsgcGFyc2VGbG9hdChpdGVtLnBlcmNlbnQpO1xyXG4gICAgICB9LCAwKTtcclxuXHJcbiAgICAgIGNvbnN0IGxhc3RQZXJjZW50ID0gMTAwIC0gb3RoZXJzVG90YWw7XHJcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0ucGVyY2VudCA9IGAke2xhc3RQZXJjZW50LnRvRml4ZWQoMil9JWA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgZ2V0TmV3T3B0aW9uKG5ld09wdGlvbikge1xyXG4gICAgbGV0IGNvbG9ycyA9IG5ld09wdGlvbi5jb2xvcjtcclxuICAgIGlmIChuZXdPcHRpb24uc2VyaWVzKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG5ld09wdGlvbi5zZXJpZXMpKSB7XHJcbiAgICAgICAgbmV3T3B0aW9uLnRvb2x0aXAgPSBuZXdPcHRpb24udG9vbHRpcCB8fCB7IHRyaWdnZXI6IFwiYXhpc1wiIH07XHJcbiAgICAgICAgbmV3T3B0aW9uLnNlcmllcyA9IG5ld09wdGlvbi5zZXJpZXMubWFwKChzZXJpZXNJdGVtKSA9PiB7XHJcbiAgICAgICAgICAvLyDlpoLmnpzmmK/mn7Hnirblm77kuJTmsqHmnInorr7nva4gYmFyV2lkdGjvvIzliJnorr7nva7pu5jorqTlgLzkuLoyMFxyXG4gICAgICAgICAgaWYgKHNlcmllc0l0ZW0udHlwZSA9PT0gXCJiYXJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGJhcldpZHRoOiAyMCxcclxuICAgICAgICAgICAgICBpdGVtU3R5bGU6IHtcclxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogWzUsIDUsIDAsIDBdLFxyXG4gICAgICAgICAgICAgICAgLi4uc2VyaWVzSXRlbS5pdGVtU3R5bGUsIC8vIOS/neeVmeeUqOaIt+iHquWumuS5ieeahCBpdGVtU3R5bGVcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIC4uLnNlcmllc0l0ZW0sXHJcbiAgICAgICAgICAgICAgLy8g5q2j56Gu6K6+572uIGJvcmRlclJhZGl1c++8jOmcgOimgeaUvuWcqCBpdGVtU3R5bGUg5LitXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHNlcmllc0l0ZW0udHlwZSA9PT0gXCJwaWVcIikge1xyXG4gICAgICAgICAgICBuZXdPcHRpb24udG9vbHRpcCA9IG5ld09wdGlvbi50b29sdGlwIHx8IHsgdHJpZ2dlcjogXCJpdGVtXCIgfTtcclxuICAgICAgICAgICAgbGV0IHBpZURhdGFDb3VudCA9IDE7XHJcbiAgICAgICAgICAgIGlmIChzZXJpZXNJdGVtLmRhdGEgJiYgQXJyYXkuaXNBcnJheShzZXJpZXNJdGVtLmRhdGEpKSB7XHJcbiAgICAgICAgICAgICAgcGllRGF0YUNvdW50ID0gc2VyaWVzSXRlbS5kYXRhLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8g5Li66aW85Zu+55Sf5oiQ6YCC5b2T5pWw6YeP55qE6aKc6ImyXHJcbiAgICAgICAgICAgIGNvbnN0IHBpZUNvbG9ycyA9IHRoaXMuZ2VuZXJhdGVDb2xvcnMocGllRGF0YUNvdW50KTtcclxuICAgICAgICAgICAgY29sb3JzID0gY29sb3JzIHx8IHBpZUNvbG9ycztcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICByYWRpdXM6IFtcIjQwJVwiLCBcIjcwJVwiXSxcclxuICAgICAgICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgICAgICAgc2hvdzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBpdGVtU3R5bGU6IHtcclxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogMTAsXHJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogXCIjZmZmXCIsXHJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogMixcclxuICAgICAgICAgICAgICAgIC4uLnNlcmllc0l0ZW0uaXRlbVN0eWxlLCAvLyDkv53nlZnnlKjmiLfoh6rlrprkuYnnmoQgaXRlbVN0eWxlXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAvLyBjb2xvcjogc2VyaWVzSXRlbS5jb2xvciB8fCBwaWVDb2xvcnMsXHJcbiAgICAgICAgICAgICAgLi4uc2VyaWVzSXRlbSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBzZXJpZXNJdGVtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKG5ld09wdGlvbi5zZXJpZXMudHlwZSA9PT0gXCJiYXJcIikge1xyXG4gICAgICAgIC8vIOWkhOeQhuWNleS4qiBzZXJpZXMg5a+56LGh55qE5oOF5Ya1XHJcbiAgICAgICAgbmV3T3B0aW9uLnNlcmllcyA9IHtcclxuICAgICAgICAgIGJhcldpZHRoOiAyMCxcclxuICAgICAgICAgIC4uLm5ld09wdGlvbi5zZXJpZXMsXHJcbiAgICAgICAgICAvLyDmraPnoa7orr7nva4gYm9yZGVyUmFkaXVz77yM6ZyA6KaB5pS+5ZyoIGl0ZW1TdHlsZSDkuK1cclxuICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IFs1LCA1LCAwLCAwXSxcclxuICAgICAgICAgICAgLi4ubmV3T3B0aW9uLnNlcmllcy5pdGVtU3R5bGUsIC8vIOS/neeVmeeUqOaIt+iHquWumuS5ieeahCBpdGVtU3R5bGVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIGlmIChuZXdPcHRpb24uc2VyaWVzLnR5cGUgPT09IFwicGllXCIpIHtcclxuICAgICAgICAvLyDlpITnkIbljZXkuKogc2VyaWVzIOWvueixoeeahOaDheWGte+8iOmlvOWbvu+8iVxyXG4gICAgICAgIG5ld09wdGlvbi50b29sdGlwID0gbmV3T3B0aW9uLnRvb2x0aXAgfHwgeyB0cmlnZ2VyOiBcIml0ZW1cIiB9O1xyXG4gICAgICAgIGxldCBwaWVEYXRhQ291bnQgPSAxO1xyXG4gICAgICAgIGlmIChuZXdPcHRpb24uc2VyaWVzLmRhdGEgJiYgQXJyYXkuaXNBcnJheShuZXdPcHRpb24uc2VyaWVzLmRhdGEpKSB7XHJcbiAgICAgICAgICBwaWVEYXRhQ291bnQgPSBuZXdPcHRpb24uc2VyaWVzLmRhdGEubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDkuLrppbzlm77nlJ/miJDpgILlvZPmlbDph4/nmoTpopzoibJcclxuICAgICAgICBjb25zdCBwaWVDb2xvcnMgPSB0aGlzLmdlbmVyYXRlQ29sb3JzKHBpZURhdGFDb3VudCk7XHJcbiAgICAgICAgY29sb3JzID0gY29sb3JzIHx8IHBpZUNvbG9ycztcclxuICAgICAgICBuZXdPcHRpb24uc2VyaWVzID0ge1xyXG4gICAgICAgICAgcmFkaXVzOiBbXCI0MCVcIiwgXCI3MCVcIl0sXHJcbiAgICAgICAgICBsYWJlbDoge1xyXG4gICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5uZXdPcHRpb24uc2VyaWVzLFxyXG4gICAgICAgICAgaXRlbVN0eWxlOiB7XHJcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogMTAsXHJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBcIiNmZmZcIixcclxuICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDIsXHJcbiAgICAgICAgICAgIC4uLm5ld09wdGlvbi5zZXJpZXMuaXRlbVN0eWxlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC8vIGNvbG9yOiBuZXdPcHRpb24uc2VyaWVzLmNvbG9yIHx8IHBpZUNvbG9ycyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBuZXdPcHRpb24uY29sb3IgPSBjb2xvcnM7XHJcbiAgICByZXR1cm4gbmV3T3B0aW9uO1xyXG4gIH1cclxuICBpbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLmNoYXJ0UmVmLmN1cnJlbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBvcHRpb24sIGRhdGEsIE9uQ2xpY2ssIE9uWnJDbGljayB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZGF0YVNvdXJjZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBkYXRhTWFwOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IG5ld0RhdGFzID0gZGF0YSB8fCBkYXRhU291cmNlO1xyXG4gICAgbGV0IHNlcmllc0NvdW50ID0gMTsgLy8g6buY6K6k6Iez5bCR5LiA5Liq57O75YiXXHJcbiAgICBpZiAob3B0aW9uPy5zZXJpZXMpIHtcclxuICAgICAgc2VyaWVzQ291bnQgPSBBcnJheS5pc0FycmF5KG9wdGlvbi5zZXJpZXMpID8gb3B0aW9uLnNlcmllcy5sZW5ndGggOiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOeUn+aIkOmAguW9k+aVsOmHj+eahOminOiJsu+8iOWmguaenOeUqOaIt+ayoeacieaPkOS+m+minOiJsu+8iVxyXG4gICAgbGV0IGRlZmF1bHRPcHRpb24gPSB7fTtcclxuXHJcbiAgICBsZXQgbmV3T3B0aW9uOiBhbnkgPSB7IC4uLmRlZmF1bHRPcHRpb24sIC4uLm9wdGlvbiB9O1xyXG5cclxuICAgIGlmIChpc0FycmF5KG5ld0RhdGFzKSkge1xyXG4gICAgICBuZXdEYXRhcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gaXRlbSkge1xyXG4gICAgICAgICAgaWYgKGRhdGFNYXBba2V5XSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGRhdGFNYXBba2V5XSA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGF0YU1hcFtrZXldLnB1c2goaXRlbVtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChpc09iamVjdChuZXdEYXRhcykpIHtcclxuICAgICAgZGF0YU1hcCA9IG5ld0RhdGFzO1xyXG4gICAgfVxyXG4gICAgbmV3T3B0aW9uLnhBeGlzID0gdGhpcy5vYmplY3RDb252ZXJzaW9uKG5ld09wdGlvbi54QXhpcywgbmV3RGF0YXMsIGRhdGFNYXApO1xyXG4gICAgbmV3T3B0aW9uLnlBeGlzID0gdGhpcy5vYmplY3RDb252ZXJzaW9uKG5ld09wdGlvbi55QXhpcywgbmV3RGF0YXMsIGRhdGFNYXApO1xyXG4gICAgbmV3T3B0aW9uLnNlcmllcyA9IHRoaXMub2JqZWN0Q29udmVyc2lvbihcclxuICAgICAgbmV3T3B0aW9uLnNlcmllcyxcclxuICAgICAgbmV3RGF0YXMsXHJcbiAgICAgIGRhdGFNYXBcclxuICAgICk7XHJcbiAgICBjb25zdCBjaGFydENvbG9ycyA9IHRoaXMuZ2VuZXJhdGVDb2xvcnMoc2VyaWVzQ291bnQpO1xyXG4gICAgbmV3T3B0aW9uID0gdGhpcy5nZXROZXdPcHRpb24oeyAuLi5uZXdPcHRpb24gfSk7XHJcbiAgICBuZXdPcHRpb24gPSB7IC4uLm5ld09wdGlvbiwgY29sb3I6IG5ld09wdGlvbi5jb2xvciB8fCBjaGFydENvbG9ycyB9O1xyXG4gICAgaWYgKHRoaXMubXlDaGFydCkge1xyXG4gICAgICB0aGlzLm15Q2hhcnQuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbXlDaGFydCA9ICh0aGlzLm15Q2hhcnQgPSBlY2hhcnRzLmluaXQoXHJcbiAgICAgIHRoaXMuY2hhcnRSZWYuY3VycmVudCBhcyBIVE1MRGl2RWxlbWVudFxyXG4gICAgKSk7IC8v5Yid5aeL5YyWZWNoYXJ0c++8jOmAmui/h3JlZuWxnuaAp+iOt+WPlmRvbVxyXG4gICAgbXlDaGFydC5jbGVhcigpO1xyXG4gICAgbXlDaGFydC5vZmYoXCJjbGlja1wiKTtcclxuICAgIG15Q2hhcnQ/LmdldFpyKCk/Lm9mZihcImNsaWNrXCIpO1xyXG4gICAgbXlDaGFydC5zZXRPcHRpb24obmV3T3B0aW9uKTtcclxuICAgIG15Q2hhcnQub24oXCJjbGlja1wiLCBmdW5jdGlvbiAocGFyYW1zKSB7XHJcbiAgICAgIE9uQ2xpY2sgJiYgT25DbGljayhwYXJhbXMsIG15Q2hhcnQpO1xyXG4gICAgfSk7XHJcbiAgICBteUNoYXJ0Py5nZXRacigpPy5vbihcImNsaWNrXCIsIChwYXJhbXMpID0+IHtcclxuICAgICAgT25ackNsaWNrICYmIE9uWnJDbGljayhwYXJhbXMsIG15Q2hhcnQpO1xyXG4gICAgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMubXlDaGFydCkge1xyXG4gICAgICAgIHRoaXMubXlDaGFydC5yZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgY29sb3JzOiBuZXdPcHRpb24uY29sb3IsXHJcbiAgICB9KTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlQ2hhcnRSZXNpemUuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDaGFydFJlc2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLm15Q2hhcnQpIHtcclxuICAgICAgdGhpcy5teUNoYXJ0LnJlc2l6ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCBsZWdlbmQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxlZ2VuZERhdGEgPSBbXSwgY29sb3JzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgYm94U3R5bGUgPSB7XHJcbiAgICAgIHdpZHRoOiB0eXBlb2Ygd2lkdGggPT0gXCJudW1iZXJcIiA/IHB4MnZ3KHdpZHRoKSA6IHdpZHRoLFxyXG4gICAgICBoZWlnaHQ6IHR5cGVvZiBoZWlnaHQgPT0gXCJudW1iZXJcIiA/IHB4MnZ3KGhlaWdodCkgOiBoZWlnaHQsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsZWdlbmQgPT0gdHJ1ZSkge1xyXG4gICAgICBib3hTdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IHN0eWxlPXtib3hTdHlsZX0+XHJcbiAgICAgICAgPGRpdiByZWY9e3RoaXMuY2hhcnRSZWZ9IHN0eWxlPXt7IGZsZXg6IDEsIGhlaWdodDogXCIxMDAlXCIgfX0+PC9kaXY+XHJcbiAgICAgICAge2xlZ2VuZCAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKFwibnNjLWNoYXJ0LWxlZ2VuZEJveFwiKX0+XHJcbiAgICAgICAgICAgIHtsZWdlbmREYXRhLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtY2hhcnQtbGVnZW5kSXRlbVwiIGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibnNjLWNoYXJ0LWxlZ2VuZEl0ZW0taWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiBjb2xvcnNbaW5kZXhdIH19XHJcbiAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtY2hhcnQtbGVnZW5kSXRlbS1uYW1lXCI+e2l0ZW0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtY2hhcnQtbGVnZW5kSXRlbS12YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLnZhbHVlIHx8IDB9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1jaGFydC1sZWdlbmRJdGVtLXBlcmNlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5wZXJjZW50fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTnNjQ2hhcnQ7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBUSxPQUFPO0FBQzVDLE9BQU8sS0FBS0MsT0FBTyxNQUFNLFNBQVM7QUFFbEMsT0FBT0MsS0FBSyxNQUFzQixhQUFhO0FBQy9DLFNBQVNDLEtBQUssUUFBUSx1QkFBdUI7QUFDN0MsU0FBb0JDLEtBQUssUUFBUSxhQUFhO0FBQzlDLFNBQVNDLE9BQU8sRUFBRUMsUUFBUSxRQUFRLG1CQUFtQjtBQUNyRCxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUM1QixPQUFPLGNBQWM7QUFjckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQyxRQUFRLFNBQVNSLGFBQWEsQ0FBYTtFQW9CL0NTLFdBQVdBLENBQUNDLEtBQUssRUFBRTtJQUNqQixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUFDQyxlQUFBLGdDQXBCSlosS0FBSyxDQUFDYSxTQUFTLENBQWlCLENBQUM7SUFBQUQsZUFBQSxrQkFDbEIsSUFBSTtJQUFBQSxlQUFBLGdCQUN0QixDQUFDLENBQUM7SUFBQUEsZUFBQSx3QkFDTSxDQUNkLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLENBQ1Y7SUFBQUEsZUFBQSxnQkFDTztNQUNORSxVQUFVLEVBQUUsSUFBSTtNQUNoQkMsVUFBVSxFQUFFLEVBQUU7TUFDZEMsTUFBTSxFQUFFO0lBQ1YsQ0FBQztJQUFBSixlQUFBLGtCQUNTLElBQUk7SUFHWixNQUFNO01BQ0pLLElBQUk7TUFDSkMsS0FBSyxHQUFHLENBQUMsQ0FBQztNQUNWQyxRQUFRO01BQ1JDLE1BQU0s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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PureComponent","echarts","Store","utils","px2vw","isArray","isObject","NscChart","constructor","props","_defineProperty","createRef","dataSource","legendData","colors","data","store","children","option","options","autoLoad","url","listeners","listenersPops","stores","_objectWithoutProperties","_excluded","Error","_this","storeProps","_objectSpread","model","component","onBeforeLoad","callback","load","modelData","setState","isFirst","init","dataChanged","componentDidMount","myChart","chartRef","current","componentDidUpdate","prevProps","prevState","snapshot","JSON","stringify","reSetChart","isString","v","componentWillUnmount","dispose","window","removeEventListener","handleChartResize","bind","isReplace","test","replace","substring","length","getRandomColor","color","Math","floor","random","toString","padStart","generateColors","count","defaultColors","slice","needed","i","push","dataConversion","datas","dataMap","result","map","item","value","tempObj","key","objectConversion","obj","type","legend","allData","calculatePercentages","total","reduce","sum","name","percent","index","concat","toFixed","othersTotal","parseFloat","lastPercent","getNewOption","newOption","series","Array","tooltip","trigger","seriesItem","barWidth","itemStyle","borderRadius","pieDataCount","pieColors","radius","label","show","borderColor","borderWidth","_myChart$getZr","_myChart$getZr2","OnClick","OnZrClick","state","newDatas","seriesCount","defaultOption","xAxis","yAxis","chartColors","clear","off","getZr","setOption","on","params","setTimeout","resize","addEventListener","render","width","height","boxStyle","display","createElement","style","ref","flex","className","backgroundColor","id"],"sources":["../../../src/components/base/chart/index.tsx"],"sourcesContent":["import React, { PureComponent } from \"react\";\r\nimport * as echarts from \"echarts\";\r\nimport { ECharts } from \"echarts/lib/echarts\";\r\nimport Store, { StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport { deepMerge, px2vw } from \"../../utils\";\r\nimport { isArray, isObject } from \"@bj-nsc/functions\";\r\nimport \"./index.less\";\r\ninterface ChartProps {\r\n store?: StoreProps;\r\n option: any;\r\n data?: Array<Object> | Object;\r\n width: number | string; //图表宽度\r\n height: number | string; //图表长度\r\n autoLoad?: boolean; //数据改变,自动刷新图表,默认true\r\n OnClick?: (params: any, e?: any) => void; //图表点击事件\r\n OnZrClick?: (params: any, e?: any) => void; //图表点击事件\r\n legend?: boolean; //自定义图例是否显示 ,用于饼图\r\n [proNames: string]: any;\r\n}\r\n\r\n//data示例\r\n/**\r\n 数组:\r\n data=[{name:'1月',value:20},{name:'2月',value:10},{name:'3月',value:25}]\r\n 对象\r\n data={name:['1月','2月','3月'],value:[20,30,40]}\r\n */\r\nclass NscChart extends PureComponent<ChartProps> {\r\n chartRef = React.createRef<HTMLDivElement>();\r\n myChart: ECharts | null = null;\r\n store = {} as StoreProps;\r\n defaultColors = [\r\n \"#5B96F7\",\r\n \"#73C8FF\",\r\n \"#3C6CFE\",\r\n \"#818FFF\",\r\n \r\n \"#97DCFB\",\r\n \"#EF6F5B\",\r\n \"#F8BF70\",\r\n \"#57C39E\",\r\n ] as string[];\r\n state = {\r\n dataSource: null,\r\n legendData: [],\r\n colors: [],\r\n };\r\n isFirst = true;\r\n constructor(props) {\r\n super(props);\r\n const {\r\n data,\r\n store = {},\r\n children,\r\n option: options,\r\n autoLoad = true,\r\n } = props;\r\n const { url, listeners: listenersPops = {}, ...stores } = store;\r\n if (!children) {\r\n if (!(data || url || options)) {\r\n throw new Error(\"url、data、option不能都为空!\");\r\n }\r\n let _this = this;\r\n let storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: function (store, options) {\r\n utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);\r\n },\r\n load: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (_this.isFirst && autoLoad) {\r\n _this.init();\r\n _this.isFirst = false;\r\n }\r\n });\r\n utils.callback(listenersPops.load, _this, [data, modelData, store]);\r\n },\r\n dataChanged: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (autoLoad) {\r\n _this.init();\r\n }\r\n });\r\n utils.callback(listenersPops.dataChanged, _this, [\r\n data,\r\n modelData,\r\n store,\r\n ]);\r\n },\r\n },\r\n ...stores,\r\n };\r\n if (url && data == null) {\r\n storeProps = {\r\n ...{\r\n autoLoad: true,\r\n url: url,\r\n },\r\n ...storeProps,\r\n };\r\n }\r\n this.store = new Store(storeProps);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const { data, autoLoad = true, store, option } = this.props;\r\n // 添加检查避免重复初始化\r\n if (this.myChart || !this.chartRef.current) {\r\n return;\r\n }\r\n if (data && autoLoad) {\r\n this.init();\r\n } else if (!data && !store?.url && option) {\r\n this.init();\r\n }\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<ChartProps>,\r\n prevState: Readonly<{}>,\r\n snapshot?: any\r\n ): void {\r\n const { autoLoad = true } = this.props;\r\n if (autoLoad) {\r\n if (JSON.stringify(prevProps.data) !== JSON.stringify(this.props.data)) {\r\n this.init();\r\n } else if (\r\n JSON.stringify(prevProps.option) !== JSON.stringify(this.props.option)\r\n ) {\r\n this.init();\r\n }\r\n }\r\n }\r\n\r\n reSetChart() {\r\n this.init();\r\n }\r\n isString(v) {\r\n return typeof v === \"string\";\r\n }\r\n componentWillUnmount() {\r\n // 清理 echarts 实例\r\n if (this.myChart) {\r\n this.myChart.dispose();\r\n this.myChart = null;\r\n }\r\n\r\n // 移除事件监听器\r\n window.removeEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n isReplace(v) {\r\n return /^{.*}$/gi.test(v);\r\n }\r\n replace(v) {\r\n return v.substring(1, v.length - 1);\r\n }\r\n\r\n getRandomColor() {\r\n let color;\r\n do {\r\n color =\r\n \"#\" +\r\n Math.floor(Math.random() * 0xffffff)\r\n .toString(16)\r\n .padStart(6, \"0\");\r\n } while (color === \"#FFFFFF\" || color === \"#000000\");\r\n return color;\r\n }\r\n generateColors(count: number): string[] {\r\n // 如果需要的颜色数量少于或等于默认颜色数量,直接返回对应数量的默认颜色\r\n if (count <= this.defaultColors.length) {\r\n return this.defaultColors.slice(0, count);\r\n }\r\n\r\n // 否则,先复制所有默认颜色\r\n const colors = [...this.defaultColors];\r\n\r\n // 生成额外的随机颜色\r\n const needed = count - this.defaultColors.length;\r\n for (let i = 0; i < needed; i++) {\r\n colors.push(this.getRandomColor());\r\n }\r\n this.setState({ colors });\r\n return colors;\r\n }\r\n dataConversion(data, datas, dataMap) {\r\n let result;\r\n if (data) {\r\n if (this.isString(data) && this.isReplace(data)) {\r\n result = dataMap[this.replace(data)];\r\n } else if (isArray(data)) {\r\n data.map((item) => {\r\n let v = item?.value || null;\r\n if (v && this.isReplace(v)) {\r\n item.value = this.dataConversion(v, datas, dataMap);\r\n }\r\n });\r\n result = data;\r\n } else if (isObject(data)) {\r\n result = [];\r\n if (isArray(datas)) {\r\n datas.map((item) => {\r\n var tempObj = {};\r\n for (let key in item) {\r\n let v = item[key];\r\n if (this.isReplace(v)) {\r\n tempObj[key] = item[this.replace(v)];\r\n } else {\r\n tempObj[key] = v;\r\n }\r\n }\r\n result.push(tempObj);\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n objectConversion(obj, datas, dataMap) {\r\n let tempObj: any;\r\n if (obj) {\r\n if (isArray(obj)) {\r\n tempObj = [...obj];\r\n tempObj.map((item) => {\r\n if (item.data) {\r\n item.data = this.dataConversion(item.data, datas, dataMap);\r\n }\r\n });\r\n } else if (this.isString(obj)) {\r\n tempObj = obj;\r\n tempObj.data = this.dataConversion(tempObj, datas, dataMap);\r\n } else if (isObject(obj)) {\r\n tempObj = { ...obj };\r\n tempObj.data = this.dataConversion(tempObj.data, datas, dataMap);\r\n if (tempObj.type === \"pie\" && this.props.legend == true) {\r\n let allData = tempObj.data;\r\n const legendData = this.calculatePercentages(allData);\r\n this.setState({\r\n legendData,\r\n });\r\n }\r\n }\r\n }\r\n return tempObj;\r\n }\r\n calculatePercentages(\r\n allData: Array<{ name: string; value: number }>\r\n ): Array<{ name: string; value: number; percent: string }> {\r\n if (!allData || allData.length === 0) {\r\n return [];\r\n }\r\n const total = allData.reduce((sum, item) => sum + (item.value || 0), 0);\r\n if (total === 0) {\r\n return allData.map((item) => ({\r\n name: item.name,\r\n value: item.value,\r\n percent: \"0%\",\r\n }));\r\n }\r\n\r\n // Calculate percentages for all but the last item\r\n const result = allData.map((item, index) => {\r\n if (index === allData.length - 1) {\r\n // For the last item, we'll calculate based on remaining percentage\r\n return {\r\n name: item.name,\r\n value: item.value,\r\n percent: \"\", // Placeholder, will be calculated below\r\n };\r\n }\r\n\r\n const percent = (item.value / total) * 100;\r\n return {\r\n name: item.name,\r\n value: item.value,\r\n percent: `${percent.toFixed(2)}%`,\r\n };\r\n });\r\n\r\n // Calculate the last item's percentage to ensure total is 100%\r\n if (result.length > 0) {\r\n const othersTotal = result.slice(0, -1).reduce((sum, item) => {\r\n return sum + parseFloat(item.percent);\r\n }, 0);\r\n\r\n const lastPercent = 100 - othersTotal;\r\n result[result.length - 1].percent = `${lastPercent.toFixed(2)}%`;\r\n }\r\n\r\n return result;\r\n }\r\n getNewOption(newOption) {\r\n let colors = newOption.color;\r\n if (newOption.series) {\r\n if (Array.isArray(newOption.series)) {\r\n newOption.tooltip = newOption.tooltip || { trigger: \"axis\" };\r\n newOption.series = newOption.series.map((seriesItem) => {\r\n // 如果是柱状图且没有设置 barWidth,则设置默认值为20\r\n if (seriesItem.type === \"bar\") {\r\n return {\r\n barWidth: 20,\r\n itemStyle: {\r\n borderRadius: [5, 5, 0, 0],\r\n ...seriesItem.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n ...seriesItem,\r\n // 正确设置 borderRadius,需要放在 itemStyle 中\r\n };\r\n } else if (seriesItem.type === \"pie\") {\r\n newOption.tooltip = newOption.tooltip || { trigger: \"item\" };\r\n let pieDataCount = 1;\r\n if (seriesItem.data && Array.isArray(seriesItem.data)) {\r\n pieDataCount = seriesItem.data.length;\r\n }\r\n\r\n // 为饼图生成适当数量的颜色\r\n const pieColors = this.generateColors(pieDataCount);\r\n colors = colors || pieColors;\r\n return {\r\n radius: [\"40%\", \"70%\"],\r\n label: {\r\n show: false,\r\n },\r\n itemStyle: {\r\n borderRadius: 10,\r\n borderColor: \"#fff\",\r\n borderWidth: 2,\r\n ...seriesItem.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n // color: seriesItem.color || pieColors,\r\n ...seriesItem,\r\n };\r\n }\r\n return seriesItem;\r\n });\r\n } else if (newOption.series.type === \"bar\") {\r\n // 处理单个 series 对象的情况\r\n newOption.series = {\r\n barWidth: 20,\r\n ...newOption.series,\r\n // 正确设置 borderRadius,需要放在 itemStyle 中\r\n itemStyle: {\r\n borderRadius: [5, 5, 0, 0],\r\n ...newOption.series.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n };\r\n } else if (newOption.series.type === \"pie\") {\r\n // 处理单个 series 对象的情况(饼图)\r\n newOption.tooltip = newOption.tooltip || { trigger: \"item\" };\r\n let pieDataCount = 1;\r\n if (newOption.series.data && Array.isArray(newOption.series.data)) {\r\n pieDataCount = newOption.series.data.length;\r\n }\r\n // 为饼图生成适当数量的颜色\r\n const pieColors = this.generateColors(pieDataCount);\r\n colors = colors || pieColors;\r\n newOption.series = {\r\n radius: [\"40%\", \"70%\"],\r\n label: {\r\n show: false,\r\n },\r\n ...newOption.series,\r\n itemStyle: {\r\n borderRadius: 10,\r\n borderColor: \"#fff\",\r\n borderWidth: 2,\r\n ...newOption.series.itemStyle,\r\n },\r\n // color: newOption.series.color || pieColors,\r\n };\r\n }\r\n }\r\n newOption.color = colors;\r\n return newOption;\r\n }\r\n init() {\r\n if (!this.chartRef.current) {\r\n return;\r\n }\r\n const { option, data, OnClick, OnZrClick } = this.props;\r\n const { dataSource } = this.state;\r\n let dataMap: any = {};\r\n const newDatas = data || dataSource;\r\n let seriesCount = 1; // 默认至少一个系列\r\n if (option?.series) {\r\n seriesCount = Array.isArray(option.series) ? option.series.length : 1;\r\n }\r\n\r\n // 生成适当数量的颜色(如果用户没有提供颜色)\r\n let defaultOption = {};\r\n\r\n let newOption: any = { ...defaultOption, ...option };\r\n\r\n if (isArray(newDatas)) {\r\n newDatas.map((item) => {\r\n for (let key in item) {\r\n if (dataMap[key] == null) {\r\n dataMap[key] = [];\r\n }\r\n dataMap[key].push(item[key]);\r\n }\r\n });\r\n } else if (isObject(newDatas)) {\r\n dataMap = newDatas;\r\n }\r\n newOption.xAxis = this.objectConversion(newOption.xAxis, newDatas, dataMap);\r\n newOption.yAxis = this.objectConversion(newOption.yAxis, newDatas, dataMap);\r\n newOption.series = this.objectConversion(\r\n newOption.series,\r\n newDatas,\r\n dataMap\r\n );\r\n const chartColors = this.generateColors(seriesCount);\r\n newOption = this.getNewOption({ ...newOption });\r\n newOption = { ...newOption ,color: newOption.color || chartColors};\r\n if (this.myChart) {\r\n this.myChart.dispose();\r\n }\r\n const myChart = (this.myChart = echarts.init(\r\n this.chartRef.current as HTMLDivElement\r\n )); //初始化echarts,通过ref属性获取dom\r\n myChart.clear();\r\n myChart.off(\"click\");\r\n myChart?.getZr()?.off(\"click\");\r\n myChart.setOption(newOption);\r\n myChart.on(\"click\", function (params) {\r\n OnClick && OnClick(params, myChart);\r\n });\r\n myChart?.getZr()?.on(\"click\", (params) => {\r\n OnZrClick && OnZrClick(params, myChart);\r\n });\r\n setTimeout(() => {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }, 0);\r\n this.setState({\r\n colors: newOption.color,\r\n });\r\n window.addEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n handleChartResize() {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }\r\n\r\n render() {\r\n const { width, height, legend } = this.props;\r\n const { legendData = [], colors } = this.state;\r\n const boxStyle = {\r\n width: typeof width == \"number\" ? px2vw(width) : width,\r\n height: typeof height == \"number\" ? px2vw(height) : height,\r\n } as any;\r\n if (legend == true) {\r\n boxStyle.display = \"flex\";\r\n }\r\n return legend == true ? (\r\n <div style={boxStyle}>\r\n <div ref={this.chartRef} style={{ flex: 1, height: \"100%\" }}></div>\r\n <div className=\"nsc-chart-legendBox\">\r\n {legendData.map((item, index) => {\r\n return (\r\n <div className=\"nsc-chart-legendItem\" key={index}>\r\n <div\r\n className=\"nsc-chart-legendItem-icon\"\r\n style={{ backgroundColor: colors[index] }}\r\n ></div>\r\n <div className=\"nsc-chart-legendItem-name\">{item.name}</div>\r\n <div className=\"nsc-chart-legendItem-value\">\r\n {item.value || 0}\r\n </div>\r\n <div className=\"nsc-chart-legendItem-percent\">\r\n {item.percent}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n ) : (\r\n <div style={boxStyle} ref={this.chartRef} id=\"nsc_charts\"></div>\r\n );\r\n }\r\n}\r\n\r\nexport default NscChart;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PureComponent","echarts","Store","utils","px2vw","isArray","isObject","cls","NscChart","constructor","props","_defineProperty","createRef","dataSource","legendData","colors","data","store","children","option","options","autoLoad","url","listeners","listenersPops","stores","_objectWithoutProperties","_excluded","Error","_this","storeProps","_objectSpread","model","component","onBeforeLoad","callback","load","modelData","setState","isFirst","init","dataChanged","componentDidMount","myChart","chartRef","current","componentDidUpdate","prevProps","prevState","snapshot","JSON","stringify","reSetChart","isString","v","componentWillUnmount","dispose","window","removeEventListener","handleChartResize","bind","isReplace","test","replace","substring","length","getRandomColor","color","Math","floor","random","toString","padStart","generateColors","count","defaultColors","slice","needed","i","push","dataConversion","datas","dataMap","result","map","item","value","tempObj","key","objectConversion","obj","type","legend","allData","calculatePercentages","total","reduce","sum","name","percent","index","concat","toFixed","othersTotal","parseFloat","lastPercent","getNewOption","newOption","series","Array","tooltip","trigger","seriesItem","barWidth","itemStyle","borderRadius","pieDataCount","pieColors","radius","label","show","borderColor","borderWidth","_myChart$getZr","_myChart$getZr2","OnClick","OnZrClick","state","newDatas","seriesCount","defaultOption","xAxis","yAxis","chartColors","clear","off","getZr","setOption","on","params","setTimeout","resize","addEventListener","render","width","height","boxStyle","display","createElement","style","ref","flex","className","backgroundColor"],"sources":["../../../src/components/base/chart/index.tsx"],"sourcesContent":["import React, { PureComponent } from \"react\";\r\nimport * as echarts from \"echarts\";\r\nimport { ECharts } from \"echarts/lib/echarts\";\r\nimport Store, { StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport { deepMerge, px2vw } from \"../../utils\";\r\nimport { isArray, isObject } from \"@bj-nsc/functions\";\r\nimport cls from \"classnames\";\r\nimport \"./index.less\";\r\nexport interface ChartProps {\r\n store?: StoreProps;\r\n option: any;\r\n data?: Array<Object> | Object;\r\n width: number | string; //图表宽度\r\n height: number | string; //图表长度\r\n autoLoad?: boolean; //数据改变,自动刷新图表,默认true\r\n OnClick?: (params: any, e?: any) => void; //图表点击事件\r\n OnZrClick?: (params: any, e?: any) => void; //图表点击事件\r\n legend?: boolean; //自定义图例是否显示 ,用于饼图\r\n [proNames: string]: any;\r\n}\r\n\r\n//data示例\r\n/**\r\n 数组:\r\n data=[{name:'1月',value:20},{name:'2月',value:10},{name:'3月',value:25}]\r\n 对象\r\n data={name:['1月','2月','3月'],value:[20,30,40]}\r\n */\r\nclass NscChart extends PureComponent<ChartProps> {\r\n chartRef = React.createRef<HTMLDivElement>();\r\n myChart: ECharts | null = null;\r\n store = {} as StoreProps;\r\n defaultColors = [\r\n \"#5B96F7\",\r\n \"#73C8FF\",\r\n \"#3C6CFE\",\r\n \"#818FFF\",\r\n \"#97DCFB\",\r\n \"#EF6F5B\",\r\n \"#F8BF70\",\r\n \"#57C39E\",\r\n ] as string[];\r\n state = {\r\n dataSource: null,\r\n legendData: [],\r\n colors: [],\r\n };\r\n isFirst = true;\r\n constructor(props) {\r\n super(props);\r\n const {\r\n data,\r\n store = {},\r\n children,\r\n option: options,\r\n autoLoad = true,\r\n } = props;\r\n const { url, listeners: listenersPops = {}, ...stores } = store;\r\n if (!children) {\r\n if (!(data || url || options)) {\r\n throw new Error(\"url、data、option不能都为空!\");\r\n }\r\n let _this = this;\r\n let storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: function (store, options) {\r\n utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);\r\n },\r\n load: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (_this.isFirst && autoLoad) {\r\n _this.init();\r\n _this.isFirst = false;\r\n }\r\n });\r\n utils.callback(listenersPops.load, _this, [data, modelData, store]);\r\n },\r\n dataChanged: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (autoLoad) {\r\n _this.init();\r\n }\r\n });\r\n utils.callback(listenersPops.dataChanged, _this, [\r\n data,\r\n modelData,\r\n store,\r\n ]);\r\n },\r\n },\r\n ...stores,\r\n };\r\n if (url && data == null) {\r\n storeProps = {\r\n ...{\r\n autoLoad: true,\r\n url: url,\r\n },\r\n ...storeProps,\r\n };\r\n }\r\n this.store = new Store(storeProps);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const { data, autoLoad = true, store, option } = this.props;\r\n\r\n if (this.myChart || !this.chartRef.current) {\r\n return;\r\n }\r\n if (data && autoLoad) {\r\n this.init();\r\n } else if (!data && !store?.url && option) {\r\n this.init();\r\n }\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<ChartProps>,\r\n prevState: Readonly<{}>,\r\n snapshot?: any\r\n ): void {\r\n const { autoLoad = true } = this.props;\r\n if (autoLoad) {\r\n if (JSON.stringify(prevProps.data) !== JSON.stringify(this.props.data)) {\r\n this.init();\r\n } else if (\r\n JSON.stringify(prevProps.option) !== JSON.stringify(this.props.option)\r\n ) {\r\n this.init();\r\n }\r\n }\r\n }\r\n\r\n reSetChart() {\r\n this.init();\r\n }\r\n isString(v) {\r\n return typeof v === \"string\";\r\n }\r\n componentWillUnmount() {\r\n // 清理 echarts 实例\r\n if (this.myChart) {\r\n this.myChart.dispose();\r\n this.myChart = null;\r\n }\r\n\r\n // 移除事件监听器\r\n window.removeEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n isReplace(v) {\r\n return /^{.*}$/gi.test(v);\r\n }\r\n replace(v) {\r\n return v.substring(1, v.length - 1);\r\n }\r\n\r\n getRandomColor() {\r\n let color;\r\n do {\r\n color =\r\n \"#\" +\r\n Math.floor(Math.random() * 0xffffff)\r\n .toString(16)\r\n .padStart(6, \"0\");\r\n } while (color === \"#FFFFFF\" || color === \"#000000\");\r\n return color;\r\n }\r\n generateColors(count: number): string[] {\r\n // 如果需要的颜色数量少于或等于默认颜色数量,直接返回对应数量的默认颜色\r\n if (count <= this.defaultColors.length) {\r\n return this.defaultColors.slice(0, count);\r\n }\r\n\r\n // 否则,先复制所有默认颜色\r\n const colors = [...this.defaultColors];\r\n\r\n // 生成额外的随机颜色\r\n const needed = count - this.defaultColors.length;\r\n for (let i = 0; i < needed; i++) {\r\n colors.push(this.getRandomColor());\r\n }\r\n this.setState({ colors });\r\n return colors;\r\n }\r\n dataConversion(data, datas, dataMap) {\r\n let result;\r\n if (data) {\r\n if (this.isString(data) && this.isReplace(data)) {\r\n result = dataMap[this.replace(data)];\r\n } else if (isArray(data)) {\r\n data.map((item) => {\r\n let v = item?.value || null;\r\n if (v && this.isReplace(v)) {\r\n item.value = this.dataConversion(v, datas, dataMap);\r\n }\r\n });\r\n result = data;\r\n } else if (isObject(data)) {\r\n result = [];\r\n if (isArray(datas)) {\r\n datas.map((item) => {\r\n var tempObj = {};\r\n for (let key in data) {\r\n let v = data[key];\r\n if (this.isReplace(v)) {\r\n tempObj[key] = item[this.replace(v)];\r\n } else {\r\n tempObj[key] = v;\r\n }\r\n }\r\n result.push(tempObj);\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n objectConversion(obj, datas, dataMap) {\r\n let tempObj: any;\r\n if (obj) {\r\n if (isArray(obj)) {\r\n tempObj = [...obj];\r\n tempObj.map((item) => {\r\n if (item.data) {\r\n item.data = this.dataConversion(item.data, datas, dataMap);\r\n }\r\n });\r\n } else if (this.isString(obj)) {\r\n tempObj = obj;\r\n tempObj.data = this.dataConversion(tempObj, datas, dataMap);\r\n } else if (isObject(obj)) {\r\n tempObj = { ...obj };\r\n tempObj.data = this.dataConversion(tempObj.data, datas, dataMap);\r\n if (tempObj.type === \"pie\" && this.props.legend == true) {\r\n let allData = tempObj.data;\r\n const legendData = this.calculatePercentages(allData);\r\n this.setState({\r\n legendData,\r\n });\r\n }\r\n }\r\n }\r\n return tempObj;\r\n }\r\n calculatePercentages(\r\n allData: Array<{ name: string; value: number }>\r\n ): Array<{ name: string; value: number; percent: string }> {\r\n if (!allData || allData.length === 0) {\r\n return [];\r\n }\r\n const total = allData.reduce((sum, item) => sum + (item.value || 0), 0);\r\n if (total === 0) {\r\n return allData.map((item) => ({\r\n name: item.name,\r\n value: item.value,\r\n percent: \"0%\",\r\n }));\r\n }\r\n\r\n // Calculate percentages for all but the last item\r\n const result = allData.map((item, index) => {\r\n if (index === allData.length - 1) {\r\n // For the last item, we'll calculate based on remaining percentage\r\n return {\r\n name: item.name,\r\n value: item.value,\r\n percent: \"\", // Placeholder, will be calculated below\r\n };\r\n }\r\n\r\n const percent = (item.value / total) * 100;\r\n return {\r\n name: item.name,\r\n value: item.value,\r\n percent: `${percent.toFixed(2)}%`,\r\n };\r\n });\r\n\r\n // Calculate the last item's percentage to ensure total is 100%\r\n if (result.length > 0) {\r\n const othersTotal = result.slice(0, -1).reduce((sum, item) => {\r\n return sum + parseFloat(item.percent);\r\n }, 0);\r\n\r\n const lastPercent = 100 - othersTotal;\r\n result[result.length - 1].percent = `${lastPercent.toFixed(2)}%`;\r\n }\r\n\r\n return result;\r\n }\r\n getNewOption(newOption) {\r\n let colors = newOption.color;\r\n if (newOption.series) {\r\n if (Array.isArray(newOption.series)) {\r\n newOption.tooltip = newOption.tooltip || { trigger: \"axis\" };\r\n newOption.series = newOption.series.map((seriesItem) => {\r\n // 如果是柱状图且没有设置 barWidth,则设置默认值为20\r\n if (seriesItem.type === \"bar\") {\r\n return {\r\n barWidth: 20,\r\n itemStyle: {\r\n borderRadius: [5, 5, 0, 0],\r\n ...seriesItem.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n ...seriesItem,\r\n // 正确设置 borderRadius,需要放在 itemStyle 中\r\n };\r\n } else if (seriesItem.type === \"pie\") {\r\n newOption.tooltip = newOption.tooltip || { trigger: \"item\" };\r\n let pieDataCount = 1;\r\n if (seriesItem.data && Array.isArray(seriesItem.data)) {\r\n pieDataCount = seriesItem.data.length;\r\n }\r\n\r\n // 为饼图生成适当数量的颜色\r\n const pieColors = this.generateColors(pieDataCount);\r\n colors = colors || pieColors;\r\n return {\r\n radius: [\"40%\", \"70%\"],\r\n label: {\r\n show: false,\r\n },\r\n itemStyle: {\r\n borderRadius: 10,\r\n borderColor: \"#fff\",\r\n borderWidth: 2,\r\n ...seriesItem.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n // color: seriesItem.color || pieColors,\r\n ...seriesItem,\r\n };\r\n }\r\n return seriesItem;\r\n });\r\n } else if (newOption.series.type === \"bar\") {\r\n // 处理单个 series 对象的情况\r\n newOption.series = {\r\n barWidth: 20,\r\n ...newOption.series,\r\n // 正确设置 borderRadius,需要放在 itemStyle 中\r\n itemStyle: {\r\n borderRadius: [5, 5, 0, 0],\r\n ...newOption.series.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n };\r\n } else if (newOption.series.type === \"pie\") {\r\n // 处理单个 series 对象的情况(饼图)\r\n newOption.tooltip = newOption.tooltip || { trigger: \"item\" };\r\n let pieDataCount = 1;\r\n if (newOption.series.data && Array.isArray(newOption.series.data)) {\r\n pieDataCount = newOption.series.data.length;\r\n }\r\n // 为饼图生成适当数量的颜色\r\n const pieColors = this.generateColors(pieDataCount);\r\n colors = colors || pieColors;\r\n newOption.series = {\r\n radius: [\"40%\", \"70%\"],\r\n label: {\r\n show: false,\r\n },\r\n ...newOption.series,\r\n itemStyle: {\r\n borderRadius: 10,\r\n borderColor: \"#fff\",\r\n borderWidth: 2,\r\n ...newOption.series.itemStyle,\r\n },\r\n // color: newOption.series.color || pieColors,\r\n };\r\n }\r\n }\r\n newOption.color = colors;\r\n return newOption;\r\n }\r\n init() {\r\n if (!this.chartRef.current) {\r\n return;\r\n }\r\n const { option, data, OnClick, OnZrClick } = this.props;\r\n const { dataSource } = this.state;\r\n let dataMap: any = {};\r\n const newDatas = data || dataSource;\r\n let seriesCount = 1; // 默认至少一个系列\r\n if (option?.series) {\r\n seriesCount = Array.isArray(option.series) ? option.series.length : 1;\r\n }\r\n\r\n // 生成适当数量的颜色(如果用户没有提供颜色)\r\n let defaultOption = {};\r\n\r\n let newOption: any = { ...defaultOption, ...option };\r\n\r\n if (isArray(newDatas)) {\r\n newDatas.map((item) => {\r\n for (let key in item) {\r\n if (dataMap[key] == null) {\r\n dataMap[key] = [];\r\n }\r\n dataMap[key].push(item[key]);\r\n }\r\n });\r\n } else if (isObject(newDatas)) {\r\n dataMap = newDatas;\r\n }\r\n newOption.xAxis = this.objectConversion(newOption.xAxis, newDatas, dataMap);\r\n newOption.yAxis = this.objectConversion(newOption.yAxis, newDatas, dataMap);\r\n newOption.series = this.objectConversion(\r\n newOption.series,\r\n newDatas,\r\n dataMap\r\n );\r\n const chartColors = this.generateColors(seriesCount);\r\n newOption = this.getNewOption({ ...newOption });\r\n newOption = { ...newOption, color: newOption.color || chartColors };\r\n if (this.myChart) {\r\n this.myChart.dispose();\r\n }\r\n const myChart = (this.myChart = echarts.init(\r\n this.chartRef.current as HTMLDivElement\r\n )); //初始化echarts,通过ref属性获取dom\r\n myChart.clear();\r\n myChart.off(\"click\");\r\n myChart?.getZr()?.off(\"click\");\r\n myChart.setOption(newOption);\r\n myChart.on(\"click\", function (params) {\r\n OnClick && OnClick(params, myChart);\r\n });\r\n myChart?.getZr()?.on(\"click\", (params) => {\r\n OnZrClick && OnZrClick(params, myChart);\r\n });\r\n setTimeout(() => {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }, 0);\r\n this.setState({\r\n colors: newOption.color,\r\n });\r\n window.addEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n handleChartResize() {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }\r\n\r\n render() {\r\n const { width, height, legend } = this.props;\r\n const { legendData = [], colors } = this.state;\r\n const boxStyle = {\r\n width: typeof width == \"number\" ? px2vw(width) : width,\r\n height: typeof height == \"number\" ? px2vw(height) : height,\r\n } as any;\r\n if (legend == true) {\r\n boxStyle.display = \"flex\";\r\n }\r\n return (\r\n <div style={boxStyle}>\r\n <div ref={this.chartRef} style={{ flex: 1, height: \"100%\" }}></div>\r\n {legend && (\r\n <div className={cls(\"nsc-chart-legendBox\")}>\r\n {legendData.map((item, index) => {\r\n return (\r\n <div className=\"nsc-chart-legendItem\" key={index}>\r\n <div\r\n className=\"nsc-chart-legendItem-icon\"\r\n style={{ backgroundColor: colors[index] }}\r\n ></div>\r\n <div className=\"nsc-chart-legendItem-name\">{item.name}</div>\r\n <div className=\"nsc-chart-legendItem-value\">\r\n {item.value || 0}\r\n </div>\r\n <div className=\"nsc-chart-legendItem-percent\">\r\n {item.percent}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default NscChart;\r\n"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import "./index.less";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { ChartProps } from "../../base/chart";
|
|
4
|
+
export declare const getSettingData: (params: any, settingSource: any) => any;
|
|
5
|
+
interface IProps {
|
|
6
|
+
chartCode: string;
|
|
7
|
+
funcs?: any;
|
|
8
|
+
published?: boolean;
|
|
9
|
+
chartProps?: ChartProps;
|
|
10
|
+
[propName: string]: any;
|
|
11
|
+
}
|
|
12
|
+
export declare const getFormSetting: (data: any) => {
|
|
13
|
+
formType: any;
|
|
14
|
+
selfButton: any;
|
|
15
|
+
props: any;
|
|
16
|
+
otherProps: any;
|
|
17
|
+
forms: any;
|
|
18
|
+
};
|
|
19
|
+
export default class SettingForm extends React.Component<IProps, any> {
|
|
20
|
+
state: {
|
|
21
|
+
otherPorps: {};
|
|
22
|
+
option: {};
|
|
23
|
+
chartProps: {};
|
|
24
|
+
pageLoading: boolean;
|
|
25
|
+
};
|
|
26
|
+
pageRef: React.RefObject<any>;
|
|
27
|
+
componentDidMount(): void;
|
|
28
|
+
componentDidUpdate(prevProps: Readonly<IProps>, prevState: Readonly<any>, snapshot?: any): void;
|
|
29
|
+
initData: (res: any) => void;
|
|
30
|
+
getData(): void;
|
|
31
|
+
render(): React.JSX.Element;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import _message from "antd/es/message";
|
|
2
|
+
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; }
|
|
3
|
+
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; }
|
|
4
|
+
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; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
6
|
+
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); }
|
|
7
|
+
import Chart from "../../base/chart";
|
|
8
|
+
import Spin from "../../base/spin";
|
|
9
|
+
import "./index.less";
|
|
10
|
+
import React from "react";
|
|
11
|
+
import NscRequest from "nsc-request";
|
|
12
|
+
export const getSettingData = (params, settingSource) => {
|
|
13
|
+
let url = "";
|
|
14
|
+
return NscRequest.get(url, {
|
|
15
|
+
params,
|
|
16
|
+
xssFilter: false,
|
|
17
|
+
autoPrefix: true
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
export const getFormSetting = data => {
|
|
21
|
+
let forms = JSON.parse(data.forms || "[]") || [];
|
|
22
|
+
let selfFormButton = JSON.parse(data.selfButton || "[]") || [];
|
|
23
|
+
let otherProps = JSON.parse(data.otherProps || "{}") || {};
|
|
24
|
+
let formType = data.formType;
|
|
25
|
+
let props = JSON.parse(data.props || "{}") || {};
|
|
26
|
+
let formSetting = {
|
|
27
|
+
formType: formType,
|
|
28
|
+
selfButton: selfFormButton,
|
|
29
|
+
props: props,
|
|
30
|
+
otherProps: otherProps,
|
|
31
|
+
forms: forms
|
|
32
|
+
};
|
|
33
|
+
return formSetting;
|
|
34
|
+
};
|
|
35
|
+
export default class SettingForm extends React.Component {
|
|
36
|
+
constructor() {
|
|
37
|
+
super(...arguments);
|
|
38
|
+
_defineProperty(this, "state", {
|
|
39
|
+
otherPorps: {},
|
|
40
|
+
option: {},
|
|
41
|
+
chartProps: {},
|
|
42
|
+
pageLoading: true
|
|
43
|
+
});
|
|
44
|
+
_defineProperty(this, "pageRef", /*#__PURE__*/React.createRef());
|
|
45
|
+
_defineProperty(this, "initData", res => {});
|
|
46
|
+
}
|
|
47
|
+
componentDidMount() {
|
|
48
|
+
this.getData();
|
|
49
|
+
}
|
|
50
|
+
componentDidUpdate(prevProps, prevState, snapshot) {
|
|
51
|
+
if (prevProps.chartCode != this.props.chartCode) {
|
|
52
|
+
this.setState({}, () => {
|
|
53
|
+
this.getData();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// 获取数据
|
|
58
|
+
getData() {
|
|
59
|
+
// 从props中获取tableCode、published、menuCode
|
|
60
|
+
this.setState({
|
|
61
|
+
pageLoading: true
|
|
62
|
+
});
|
|
63
|
+
const {
|
|
64
|
+
formCode,
|
|
65
|
+
published = true,
|
|
66
|
+
menuCode,
|
|
67
|
+
settingSource = "form"
|
|
68
|
+
} = this.props;
|
|
69
|
+
// 如果tableCode存在
|
|
70
|
+
if (formCode) {
|
|
71
|
+
// 定义参数
|
|
72
|
+
let params = {
|
|
73
|
+
code: formCode
|
|
74
|
+
};
|
|
75
|
+
// 如果published为true
|
|
76
|
+
if (published) {
|
|
77
|
+
// 设置参数isPublished为1
|
|
78
|
+
params.isPublished = 1;
|
|
79
|
+
}
|
|
80
|
+
// 调用getPageData方法获取数据
|
|
81
|
+
getSettingData(_objectSpread({}, params), settingSource).then(res => {
|
|
82
|
+
if (res.code == 200 && res.data) {} else if (res.code == 200 && res.data == null) {
|
|
83
|
+
_message.error("未找到配置信息!");
|
|
84
|
+
this.setState({
|
|
85
|
+
pageLoading: false
|
|
86
|
+
});
|
|
87
|
+
} else {
|
|
88
|
+
this.setState({
|
|
89
|
+
pageLoading: false
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
} else {
|
|
94
|
+
this.setState({
|
|
95
|
+
pageLoading: false
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
render() {
|
|
100
|
+
const {
|
|
101
|
+
option
|
|
102
|
+
} = this.props;
|
|
103
|
+
const {
|
|
104
|
+
pageLoading
|
|
105
|
+
} = this.state;
|
|
106
|
+
let _this = this;
|
|
107
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
108
|
+
style: {
|
|
109
|
+
height: "100%",
|
|
110
|
+
width: "100%"
|
|
111
|
+
}
|
|
112
|
+
}, pageLoading ? /*#__PURE__*/React.createElement("div", {
|
|
113
|
+
style: {
|
|
114
|
+
width: "100%",
|
|
115
|
+
height: "100%"
|
|
116
|
+
}
|
|
117
|
+
}, /*#__PURE__*/React.createElement(Spin, {
|
|
118
|
+
spinning: pageLoading
|
|
119
|
+
})) : /*#__PURE__*/React.createElement(Chart, {
|
|
120
|
+
width: 800,
|
|
121
|
+
height: 500,
|
|
122
|
+
option: {}
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydCIsIlNwaW4iLCJSZWFjdCIsIk5zY1JlcXVlc3QiLCJnZXRTZXR0aW5nRGF0YSIsInBhcmFtcyIsInNldHRpbmdTb3VyY2UiLCJ1cmwiLCJnZXQiLCJ4c3NGaWx0ZXIiLCJhdXRvUHJlZml4IiwiZ2V0Rm9ybVNldHRpbmciLCJkYXRhIiwiZm9ybXMiLCJKU09OIiwicGFyc2UiLCJzZWxmRm9ybUJ1dHRvbiIsInNlbGZCdXR0b24iLCJvdGhlclByb3BzIiwiZm9ybVR5cGUiLCJwcm9wcyIsImZvcm1TZXR0aW5nIiwiU2V0dGluZ0Zvcm0iLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsIm90aGVyUG9ycHMiLCJvcHRpb24iLCJjaGFydFByb3BzIiwicGFnZUxvYWRpbmciLCJjcmVhdGVSZWYiLCJyZXMiLCJjb21wb25lbnREaWRNb3VudCIsImdldERhdGEiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsImNoYXJ0Q29kZSIsInNldFN0YXRlIiwiZm9ybUNvZGUiLCJwdWJsaXNoZWQiLCJtZW51Q29kZSIsImNvZGUiLCJpc1B1Ymxpc2hlZCIsIl9vYmplY3RTcHJlYWQiLCJ0aGVuIiwiX21lc3NhZ2UiLCJlcnJvciIsInJlbmRlciIsInN0YXRlIiwiX3RoaXMiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJoZWlnaHQiLCJ3aWR0aCIsInNwaW5uaW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9TZXR0aW5nQ2hhcnQvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDaGFydCBmcm9tIFwiLi4vLi4vYmFzZS9jaGFydFwiO1xyXG5pbXBvcnQgU3BpbiBmcm9tIFwiLi4vLi4vYmFzZS9zcGluXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBOc2NSZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCB7IG1lc3NhZ2UgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBDaGFydFByb3BzIH0gZnJvbSBcIi4uLy4uL2Jhc2UvY2hhcnRcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTZXR0aW5nRGF0YSA9IChwYXJhbXM6IGFueSwgc2V0dGluZ1NvdXJjZSkgPT4ge1xyXG4gIGxldCB1cmwgPSBcIlwiO1xyXG4gIHJldHVybiBOc2NSZXF1ZXN0LmdldCh1cmwsIHtcclxuICAgIHBhcmFtcyxcclxuICAgIHhzc0ZpbHRlcjogZmFsc2UsXHJcbiAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gIH0pO1xyXG59O1xyXG5cclxuaW50ZXJmYWNlIElQcm9wcyB7XHJcbiAgY2hhcnRDb2RlOiBzdHJpbmc7XHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcHVibGlzaGVkPzogYm9vbGVhbjtcclxuICBjaGFydFByb3BzPzogQ2hhcnRQcm9wcztcclxuICBbcHJvcE5hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdldEZvcm1TZXR0aW5nID0gKGRhdGEpID0+IHtcclxuICBsZXQgZm9ybXMgPSBKU09OLnBhcnNlKGRhdGEuZm9ybXMgfHwgXCJbXVwiKSB8fCBbXTtcclxuICBsZXQgc2VsZkZvcm1CdXR0b24gPSBKU09OLnBhcnNlKGRhdGEuc2VsZkJ1dHRvbiB8fCBcIltdXCIpIHx8IFtdO1xyXG4gIGxldCBvdGhlclByb3BzID0gSlNPTi5wYXJzZShkYXRhLm90aGVyUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICBsZXQgZm9ybVR5cGUgPSBkYXRhLmZvcm1UeXBlO1xyXG4gIGxldCBwcm9wcyA9IEpTT04ucGFyc2UoZGF0YS5wcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gIGxldCBmb3JtU2V0dGluZyA9IHtcclxuICAgIGZvcm1UeXBlOiBmb3JtVHlwZSxcclxuICAgIHNlbGZCdXR0b246IHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgcHJvcHM6IHByb3BzLFxyXG4gICAgb3RoZXJQcm9wczogb3RoZXJQcm9wcyxcclxuICAgIGZvcm1zOiBmb3JtcyxcclxuICB9O1xyXG4gIHJldHVybiBmb3JtU2V0dGluZztcclxufTtcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ0Zvcm0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBhbnk+IHtcclxuICBzdGF0ZSA9IHtcclxuICAgIG90aGVyUG9ycHM6IHt9LFxyXG4gICAgb3B0aW9uOiB7fSxcclxuICAgIGNoYXJ0UHJvcHM6IHt9LFxyXG4gICAgcGFnZUxvYWRpbmc6dHJ1ZVxyXG4gIH07XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PElQcm9wcz4sXHJcbiAgICBwcmV2U3RhdGU6IFJlYWRvbmx5PGFueT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKHByZXZQcm9wcy5jaGFydENvZGUgIT0gdGhpcy5wcm9wcy5jaGFydENvZGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7fSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXREYXRhID0gKHJlczogYW55KSA9PiB7fTtcclxuICAvLyDojrflj5bmlbDmja5cclxuICBnZXREYXRhKCkge1xyXG4gICAgLy8g5LuOcHJvcHPkuK3ojrflj5Z0YWJsZUNvZGXjgIFwdWJsaXNoZWTjgIFtZW51Q29kZVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHBhZ2VMb2FkaW5nOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGZvcm1Db2RlLFxyXG4gICAgICBwdWJsaXNoZWQgPSB0cnVlLFxyXG4gICAgICBtZW51Q29kZSxcclxuICAgICAgc2V0dGluZ1NvdXJjZSA9IFwiZm9ybVwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAvLyDlpoLmnpx0YWJsZUNvZGXlrZjlnKhcclxuICAgIGlmIChmb3JtQ29kZSkge1xyXG4gICAgICAvLyDlrprkuYnlj4LmlbBcclxuICAgICAgbGV0IHBhcmFtcyA9IHsgY29kZTogZm9ybUNvZGUgfSBhcyBhbnk7XHJcbiAgICAgIC8vIOWmguaenHB1Ymxpc2hlZOS4unRydWVcclxuICAgICAgaWYgKHB1Ymxpc2hlZCkge1xyXG4gICAgICAgIC8vIOiuvue9ruWPguaVsGlzUHVibGlzaGVk5Li6MVxyXG4gICAgICAgIHBhcmFtcy5pc1B1Ymxpc2hlZCA9IDE7XHJcbiAgICAgIH1cclxuICAgICAgLy8g6LCD55SoZ2V0UGFnZURhdGHmlrnms5Xojrflj5bmlbDmja5cclxuICAgICAgZ2V0U2V0dGluZ0RhdGEoeyAuLi5wYXJhbXMgfSwgc2V0dGluZ1NvdXJjZSkudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhKSB7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuacquaJvuWIsOmFjee9ruS/oeaBr++8gVwiKTtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IG9wdGlvbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcGFnZUxvYWRpbmcgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgc3R5bGU9e3sgaGVpZ2h0OiBcIjEwMCVcIiwgd2lkdGg6IFwiMTAwJVwiIH19PlxyXG4gICAgICAgIHtwYWdlTG9hZGluZyA/IChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiIH19PlxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17cGFnZUxvYWRpbmd9PjwvU3Bpbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8Q2hhcnQgd2lkdGg9ezgwMH0gaGVpZ2h0PXs1MDB9IG9wdGlvbj17e319IC8+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU9BLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUNsQyxPQUFPLGNBQWM7QUFDckIsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBT0MsVUFBVSxNQUFNLGFBQWE7QUFLcEMsT0FBTyxNQUFNQyxjQUFjLEdBQUdBLENBQUNDLE1BQVcsRUFBRUMsYUFBYSxLQUFLO0VBQzVELElBQUlDLEdBQUcsR0FBRyxFQUFFO0VBQ1osT0FB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Chart","Spin","React","NscRequest","getSettingData","params","settingSource","url","get","xssFilter","autoPrefix","getFormSetting","data","forms","JSON","parse","selfFormButton","selfButton","otherProps","formType","props","formSetting","SettingForm","Component","constructor","arguments","_defineProperty","otherPorps","option","chartProps","pageLoading","createRef","res","componentDidMount","getData","componentDidUpdate","prevProps","prevState","snapshot","chartCode","setState","formCode","published","menuCode","code","isPublished","_objectSpread","then","_message","error","render","state","_this","createElement","style","height","width","spinning"],"sources":["../../../src/components/page/SettingChart/index.tsx"],"sourcesContent":["import Chart from \"../../base/chart\";\r\nimport Spin from \"../../base/spin\";\r\nimport \"./index.less\";\r\nimport React from \"react\";\r\nimport NscRequest from \"nsc-request\";\r\nimport cls from \"classnames\";\r\nimport { message } from \"antd\";\r\nimport { ChartProps } from \"../../base/chart\";\r\n\r\nexport const getSettingData = (params: any, settingSource) => {\r\n let url = \"\";\r\n return NscRequest.get(url, {\r\n params,\r\n xssFilter: false,\r\n autoPrefix: true,\r\n });\r\n};\r\n\r\ninterface IProps {\r\n chartCode: string;\r\n funcs?: any;\r\n published?: boolean;\r\n chartProps?: ChartProps;\r\n [propName: string]: any;\r\n}\r\n\r\nexport const getFormSetting = (data) => {\r\n let forms = JSON.parse(data.forms || \"[]\") || [];\r\n let selfFormButton = JSON.parse(data.selfButton || \"[]\") || [];\r\n let otherProps = JSON.parse(data.otherProps || \"{}\") || {};\r\n let formType = data.formType;\r\n let props = JSON.parse(data.props || \"{}\") || {};\r\n let formSetting = {\r\n formType: formType,\r\n selfButton: selfFormButton,\r\n props: props,\r\n otherProps: otherProps,\r\n forms: forms,\r\n };\r\n return formSetting;\r\n};\r\nexport default class SettingForm extends React.Component<IProps, any> {\r\n state = {\r\n otherPorps: {},\r\n option: {},\r\n chartProps: {},\r\n pageLoading:true\r\n };\r\n pageRef = React.createRef<any>();\r\n\r\n componentDidMount(): void {\r\n this.getData();\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<IProps>,\r\n prevState: Readonly<any>,\r\n snapshot?: any\r\n ): void {\r\n if (prevProps.chartCode != this.props.chartCode) {\r\n this.setState({}, () => {\r\n this.getData();\r\n });\r\n }\r\n }\r\n\r\n initData = (res: any) => {};\r\n // 获取数据\r\n getData() {\r\n // 从props中获取tableCode、published、menuCode\r\n this.setState({\r\n pageLoading: true,\r\n });\r\n const {\r\n formCode,\r\n published = true,\r\n menuCode,\r\n settingSource = \"form\",\r\n } = this.props;\r\n // 如果tableCode存在\r\n if (formCode) {\r\n // 定义参数\r\n let params = { code: formCode } as any;\r\n // 如果published为true\r\n if (published) {\r\n // 设置参数isPublished为1\r\n params.isPublished = 1;\r\n }\r\n // 调用getPageData方法获取数据\r\n getSettingData({ ...params }, settingSource).then((res: any) => {\r\n if (res.code == 200 && res.data) {\r\n } else if (res.code == 200 && res.data == null) {\r\n message.error(\"未找到配置信息!\");\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n }\r\n render() {\r\n const { option } = this.props;\r\n const { pageLoading } = this.state;\r\n let _this = this;\r\n\r\n return (\r\n <div style={{ height: \"100%\", width: \"100%\" }}>\r\n {pageLoading ? (\r\n <div style={{ width: \"100%\", height: \"100%\" }}>\r\n <Spin spinning={pageLoading}></Spin>\r\n </div>\r\n ) : (\r\n <Chart width={800} height={500} option={{}} />\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,MAAM,kBAAkB;AACpC,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAO,cAAc;AACrB,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,aAAa;AAKpC,OAAO,MAAMC,cAAc,GAAGA,CAACC,MAAW,EAAEC,aAAa,KAAK;EAC5D,IAAIC,GAAG,GAAG,EAAE;EACZ,OAAOJ,UAAU,CAACK,GAAG,CAACD,GAAG,EAAE;IACzBF,MAAM;IACNI,SAAS,EAAE,KAAK;IAChBC,UAAU,EAAE;EACd,CAAC,CAAC;AACJ,CAAC;AAUD,OAAO,MAAMC,cAAc,GAAIC,IAAI,IAAK;EACtC,IAAIC,KAAK,GAAGC,IAAI,CAACC,KAAK,CAACH,IAAI,CAACC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;EAChD,IAAIG,cAAc,GAAGF,IAAI,CAACC,KAAK,CAACH,IAAI,CAACK,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE;EAC9D,IAAIC,UAAU,GAAGJ,IAAI,CAACC,KAAK,CAACH,IAAI,CAACM,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;EAC1D,IAAIC,QAAQ,GAAGP,IAAI,CAACO,QAAQ;EAC5B,IAAIC,KAAK,GAAGN,IAAI,CAACC,KAAK,CAACH,IAAI,CAACQ,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;EAChD,IAAIC,WAAW,GAAG;IAChBF,QAAQ,EAAEA,QAAQ;IAClBF,UAAU,EAAED,cAAc;IAC1BI,KAAK,EAAEA,KAAK;IACZF,UAAU,EAAEA,UAAU;IACtBL,KAAK,EAAEA;EACT,CAAC;EACD,OAAOQ,WAAW;AACpB,CAAC;AACD,eAAe,MAAMC,WAAW,SAASpB,KAAK,CAACqB,SAAS,CAAc;EAAAC,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,gBAC5D;MACNC,UAAU,EAAE,CAAC,CAAC;MACdC,MAAM,EAAE,CAAC,CAAC;MACVC,UAAU,EAAE,CAAC,CAAC;MACdC,WAAW,EAAC;IACd,CAAC;IAAAJ,eAAA,+BACSxB,KAAK,CAAC6B,SAAS,CAAM,CAAC;IAAAL,eAAA,mBAkBpBM,GAAQ,IAAK,CAAC,CAAC;EAAA;EAhB3BC,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACC,OAAO,CAAC,CAAC;EAChB;EAEAC,kBAAkBA,CAChBC,SAA2B,EAC3BC,SAAwB,EACxBC,QAAc,EACR;IACN,IAAIF,SAAS,CAACG,SAAS,IAAI,IAAI,CAACnB,KAAK,CAACmB,SAAS,EAAE;MAC/C,IAAI,CAACC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;QACtB,IAAI,CAACN,OAAO,CAAC,CAAC;MAChB,CAAC,CAAC;IACJ;EACF;EAGA;EACAA,OAAOA,CAAA,EAAG;IACR;IACA,IAAI,CAACM,QAAQ,CAAC;MACZV,WAAW,EAAE;IACf,CAAC,CAAC;IACF,MAAM;MACJW,QAAQ;MACRC,SAAS,GAAG,IAAI;MAChBC,QAAQ;MACRrC,aAAa,GAAG;IAClB,CAAC,GAAG,IAAI,CAACc,KAAK;IACd;IACA,IAAIqB,QAAQ,EAAE;MACZ;MACA,IAAIpC,MAAM,GAAG;QAAEuC,IAAI,EAAEH;MAAS,CAAQ;MACtC;MACA,IAAIC,SAAS,EAAE;QACb;QACArC,MAAM,CAACwC,WAAW,GAAG,CAAC;MACxB;MACA;MACAzC,cAAc,CAAA0C,aAAA,KAAMzC,MAAM,GAAIC,aAAa,CAAC,CAACyC,IAAI,CAAEf,GAAQ,IAAK;QAC9D,IAAIA,GAAG,CAACY,IAAI,IAAI,GAAG,IAAIZ,GAAG,CAACpB,IAAI,EAAE,CACjC,CAAC,MAAM,IAAIoB,GAAG,CAACY,IAAI,IAAI,GAAG,IAAIZ,GAAG,CAACpB,IAAI,IAAI,IAAI,EAAE;UAC9CoC,QAAA,CAAQC,KAAK,CAAC,UAAU,CAAC;UACzB,IAAI,CAACT,QAAQ,CAAC;YACZV,WAAW,EAAE;UACf,CAAC,CAAC;QACJ,CAAC,MAAM;UACL,IAAI,CAACU,QAAQ,CAAC;YACZV,WAAW,EAAE;UACf,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAACU,QAAQ,CAAC;QACZV,WAAW,EAAE;MACf,CAAC,CAAC;IACJ;EACF;EACAoB,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEtB;IAAO,CAAC,GAAG,IAAI,CAACR,KAAK;IAC7B,MAAM;MAAEU;IAAY,CAAC,GAAG,IAAI,CAACqB,KAAK;IAClC,IAAIC,KAAK,GAAG,IAAI;IAEhB,oBACElD,KAAA,CAAAmD,aAAA;MAAKC,KAAK,EAAE;QAAEC,MAAM,EAAE,MAAM;QAAEC,KAAK,EAAE;MAAO;IAAE,GAC3C1B,WAAW,gBACV5B,KAAA,CAAAmD,aAAA;MAAKC,KAAK,EAAE;QAAEE,KAAK,EAAE,MAAM;QAAED,MAAM,EAAE;MAAO;IAAE,gBAC5CrD,KAAA,CAAAmD,aAAA,CAACpD,IAAI;MAACwD,QAAQ,EAAE3B;IAAY,CAAO,CAChC,CAAC,gBAEN5B,KAAA,CAAAmD,aAAA,CAACrD,KAAK;MAACwD,KAAK,EAAE,GAAI;MAACD,MAAM,EAAE,GAAI;MAAC3B,MAAM,EAAE,CAAC;IAAE,CAAE,CAE5C,CAAC;EAEV;AACF"}
|