@visactor/vchart 2.0.2 → 2.0.3-alpha.1

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.
Files changed (80) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.es.js +547 -487
  3. package/build/index.js +547 -486
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/animation/utils.js +1 -1
  7. package/cjs/animation/utils.js.map +1 -1
  8. package/cjs/chart/base/base-chart-transformer.js +3 -3
  9. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  10. package/cjs/chart/base/base-chart.js.map +1 -1
  11. package/cjs/chart/index.d.ts +2 -2
  12. package/cjs/chart/index.js +7 -2
  13. package/cjs/chart/index.js.map +1 -1
  14. package/cjs/chart/interface/common.d.ts +1 -1
  15. package/cjs/chart/interface/common.js.map +1 -1
  16. package/cjs/component/axis/base-axis.js +14 -13
  17. package/cjs/component/axis/base-axis.js.map +1 -1
  18. package/cjs/component/custom-mark/custom-mark.js +6 -9
  19. package/cjs/component/custom-mark/custom-mark.js.map +1 -1
  20. package/cjs/core/index.d.ts +1 -1
  21. package/cjs/core/index.js +1 -1
  22. package/cjs/core/index.js.map +1 -1
  23. package/cjs/core/interface.d.ts +1 -0
  24. package/cjs/core/interface.js.map +1 -1
  25. package/cjs/core/vchart.d.ts +1 -0
  26. package/cjs/core/vchart.js +6 -5
  27. package/cjs/core/vchart.js.map +1 -1
  28. package/cjs/mark/base/base-line.d.ts +1 -1
  29. package/cjs/mark/base/base-line.js.map +1 -1
  30. package/cjs/model/interface.d.ts +1 -1
  31. package/cjs/model/interface.js.map +1 -1
  32. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.d.ts +1 -1
  33. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js +4 -3
  34. package/cjs/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
  35. package/cjs/series/base/base-series-transformer.js +1 -1
  36. package/cjs/series/base/base-series-transformer.js.map +1 -1
  37. package/cjs/series/sankey/sankey.d.ts +10 -10
  38. package/cjs/series/sankey/sankey.js +199 -194
  39. package/cjs/series/sankey/sankey.js.map +1 -1
  40. package/cjs/util/object.d.ts +1 -0
  41. package/cjs/util/object.js +13 -2
  42. package/cjs/util/object.js.map +1 -1
  43. package/esm/animation/utils.js +1 -1
  44. package/esm/animation/utils.js.map +1 -1
  45. package/esm/chart/base/base-chart-transformer.js +3 -3
  46. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  47. package/esm/chart/base/base-chart.js.map +1 -1
  48. package/esm/chart/index.d.ts +2 -2
  49. package/esm/chart/index.js +2 -2
  50. package/esm/chart/index.js.map +1 -1
  51. package/esm/chart/interface/common.d.ts +1 -1
  52. package/esm/chart/interface/common.js.map +1 -1
  53. package/esm/component/axis/base-axis.js +8 -8
  54. package/esm/component/axis/base-axis.js.map +1 -1
  55. package/esm/component/custom-mark/custom-mark.js +6 -9
  56. package/esm/component/custom-mark/custom-mark.js.map +1 -1
  57. package/esm/core/index.d.ts +1 -1
  58. package/esm/core/index.js +1 -1
  59. package/esm/core/index.js.map +1 -1
  60. package/esm/core/interface.d.ts +1 -0
  61. package/esm/core/interface.js.map +1 -1
  62. package/esm/core/vchart.d.ts +1 -0
  63. package/esm/core/vchart.js +7 -6
  64. package/esm/core/vchart.js.map +1 -1
  65. package/esm/mark/base/base-line.d.ts +1 -1
  66. package/esm/mark/base/base-line.js.map +1 -1
  67. package/esm/model/interface.d.ts +1 -1
  68. package/esm/model/interface.js.map +1 -1
  69. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.d.ts +1 -1
  70. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js +4 -3
  71. package/esm/plugin/components/tooltip-handler/dom-tooltip-handler.js.map +1 -1
  72. package/esm/series/base/base-series-transformer.js +1 -1
  73. package/esm/series/base/base-series-transformer.js.map +1 -1
  74. package/esm/series/sankey/sankey.d.ts +10 -10
  75. package/esm/series/sankey/sankey.js +192 -187
  76. package/esm/series/sankey/sankey.js.map +1 -1
  77. package/esm/util/object.d.ts +1 -0
  78. package/esm/util/object.js +11 -0
  79. package/esm/util/object.js.map +1 -1
  80. package/package.json +12 -12
@@ -34,200 +34,6 @@ class SankeySeries extends cartesian_1.CartesianSeries {
34
34
  var _a;
35
35
  const emphasisSpec = null !== (_a = this._spec.emphasis) && void 0 !== _a ? _a : {}, graphic = params.item;
36
36
  "adjacency" === emphasisSpec.effect ? graphic && params.mark === this._nodeMark ? this._handleNodeAdjacencyClick(graphic) : graphic && params.mark === this._linkMark ? this._handleLinkAdjacencyClick(graphic) : this._handleClearEmpty() : "related" === emphasisSpec.effect && (graphic && params.mark === this._nodeMark ? this._handleNodeRelatedClick(graphic) : graphic && params.mark === this._linkMark ? this._handleLinkRelatedClick(graphic) : this._handleClearEmpty());
37
- }, this._handleClearEmpty = () => {
38
- var _a, _b;
39
- if (!this._needClear) return;
40
- const allNodeElements = null === (_a = this._nodeMark) || void 0 === _a ? void 0 : _a.getGraphics();
41
- if (!allNodeElements || !allNodeElements.length) return;
42
- const allLinkElements = null === (_b = this._linkMark) || void 0 === _b ? void 0 : _b.getGraphics();
43
- allLinkElements && allLinkElements.length && (allNodeElements.forEach((el => {
44
- el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
45
- })), allLinkElements.forEach((el => {
46
- el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
47
- })), this._needClear = !1);
48
- }, this._handleNodeAdjacencyClick = graphic => {
49
- const nodeDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ nodeDatum.key ];
50
- if (this._linkMark) {
51
- const allLinkElements = this._linkMark.getGraphics();
52
- if (!allLinkElements || !allLinkElements.length) return;
53
- allLinkElements.forEach(((linkEl, i) => {
54
- const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl);
55
- linkDatum.source === nodeDatum.key ? (highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
56
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
57
- linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : linkDatum.target === nodeDatum.key ? (highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
58
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
59
- linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
60
- linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
61
- }));
62
- }
63
- this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes),
64
- this._needClear = !0;
65
- }, this._handleLinkAdjacencyClick = graphic => {
66
- const curLinkDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ];
67
- if (this._linkMark) {
68
- const allLinkElements = this._linkMark.getGraphics();
69
- if (!allLinkElements || !allLinkElements.length) return;
70
- allLinkElements.forEach((linkEl => {
71
- linkEl === graphic ? (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
72
- (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
73
- ratio: 1
74
- })) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
75
- }));
76
- }
77
- this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes),
78
- this._needClear = !0;
79
- }, this._handleNodeRelatedClick = graphic => {
80
- var _a;
81
- const nodeDatum = (0, util_2.getDatumOfGraphic)(graphic), allNodeElements = this._nodeMark.getGraphics();
82
- if (!allNodeElements || !allNodeElements.length) return;
83
- const allLinkElements = this._linkMark.getGraphics();
84
- if (!allLinkElements || !allLinkElements.length) return;
85
- const father = (null === (_a = (0, util_2.getDatumOfGraphic)(allLinkElements[0])) || void 0 === _a ? void 0 : _a.parents) ? "parents" : "source";
86
- if ("source" === father) {
87
- const highlightNodes = [ nodeDatum.key ], highlightLinks = [];
88
- if (allLinkElements.forEach(((linkEl, i) => {
89
- var _a, _b, _c, _d;
90
- const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), father = (null == linkDatum ? void 0 : linkDatum.parents) ? "parents" : "source";
91
- if ((0, vutils_1.array)(linkDatum[father]).includes(nodeDatum.key)) {
92
- if (highlightLinks.includes(null !== (_a = linkDatum.key) && void 0 !== _a ? _a : linkDatum.index) || highlightLinks.push(null !== (_b = linkDatum.key) && void 0 !== _b ? _b : linkDatum.index),
93
- highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
94
- !highlightNodes.includes(linkDatum.target)) {
95
- highlightNodes.push(linkDatum.target);
96
- let targetNodeSourceLinks = allNodeElements.find((nodeElement => nodeElement.data[0].key === linkDatum.target)).data[0].sourceLinks;
97
- for (;(null == targetNodeSourceLinks ? void 0 : targetNodeSourceLinks.length) > 0; ) {
98
- const newTargetNodeSourceLinks = [];
99
- return targetNodeSourceLinks.forEach((targetNodeSourceLinkDatum => {
100
- var _a, _b;
101
- if (!highlightLinks.includes(null !== (_a = targetNodeSourceLinkDatum.key) && void 0 !== _a ? _a : targetNodeSourceLinkDatum.index) && (highlightLinks.push(null !== (_b = targetNodeSourceLinkDatum.key) && void 0 !== _b ? _b : targetNodeSourceLinkDatum.index),
102
- !highlightNodes.includes(targetNodeSourceLinkDatum.target))) {
103
- highlightNodes.push(targetNodeSourceLinkDatum.target);
104
- const sourceNodeTemp = allNodeElements.find((nodeElement => nodeElement.data[0].key === targetNodeSourceLinkDatum.target));
105
- newTargetNodeSourceLinks.push(sourceNodeTemp.data[0].targetLinks);
106
- }
107
- })), void (targetNodeSourceLinks = newTargetNodeSourceLinks);
108
- }
109
- }
110
- } else if (linkDatum.target === nodeDatum.key && (highlightLinks.includes(null !== (_c = linkDatum.key) && void 0 !== _c ? _c : linkDatum.index) || highlightLinks.push(null !== (_d = linkDatum.key) && void 0 !== _d ? _d : linkDatum.index),
111
- !highlightNodes.includes(linkDatum.source))) {
112
- highlightNodes.push(linkDatum.source);
113
- let sourceNodeTargetLinks = allNodeElements.find((nodeElement => nodeElement.data[0].key === linkDatum.source)).data[0].targetLinks;
114
- for (;(null == sourceNodeTargetLinks ? void 0 : sourceNodeTargetLinks.length) > 0; ) {
115
- const newSourceNodeTargetLinks = [];
116
- return sourceNodeTargetLinks.forEach((sourceNodeTargetLinkDatum => {
117
- var _a, _b;
118
- if (!highlightLinks.includes(null !== (_a = sourceNodeTargetLinkDatum.key) && void 0 !== _a ? _a : sourceNodeTargetLinkDatum.index) && (highlightLinks.push(null !== (_b = sourceNodeTargetLinkDatum.key) && void 0 !== _b ? _b : sourceNodeTargetLinkDatum.index),
119
- !highlightNodes.includes(sourceNodeTargetLinkDatum.source))) {
120
- highlightNodes.push(sourceNodeTargetLinkDatum.source);
121
- const sourceNodeTemp = allNodeElements.find((nodeElement => nodeElement.data[0].key === sourceNodeTargetLinkDatum.source));
122
- newSourceNodeTargetLinks.push(sourceNodeTemp.data[0].targetLinks);
123
- }
124
- })), void (sourceNodeTargetLinks = newSourceNodeTargetLinks);
125
- }
126
- }
127
- })), this._linkMark) {
128
- const allLinkElements = this._linkMark.getGraphics();
129
- if (!allLinkElements || !allLinkElements.length) return;
130
- allLinkElements.forEach(((linkEl, i) => {
131
- var _a;
132
- const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl);
133
- highlightLinks.includes(null !== (_a = linkDatum.key) && void 0 !== _a ? _a : linkDatum.index) ? (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
134
- linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
135
- linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
136
- }));
137
- }
138
- this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
139
- } else {
140
- const highlightNodes = [ nodeDatum.key ], upstreamLinks = nodeDatum.targetLinks.reduce(((res, link) => ((0,
141
- vutils_1.array)(link.datum).forEach((dividedLink => {
142
- const parents = dividedLink.parents, len = parents.length;
143
- for (let i = 0; i < len; i++) {
144
- const source = parents[i].key, target = parents[i + 1] ? parents[i + 1].key : nodeDatum.key, value = dividedLink.value, existingItem = res.find((item => item.source === source && item.target === target));
145
- existingItem ? existingItem.value += value : res.push({
146
- source: source,
147
- target: target,
148
- value: value
149
- });
150
- }
151
- })), res)), []);
152
- allLinkElements.forEach(((linkEl, i) => {
153
- const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), originalDatum = linkDatum.datum, selectedDatum = originalDatum ? originalDatum.filter((entry => entry[father].some((par => par.key === nodeDatum.key)))) : null, upSelectedLink = upstreamLinks.find((upLink => upLink.source === linkDatum.source && upLink.target === linkDatum.target));
154
- if (selectedDatum && selectedDatum.length) {
155
- highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
156
- highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target);
157
- const ratio = selectedDatum.reduce(((sum, d) => sum + d.value), 0) / linkDatum.value;
158
- return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
159
- void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
160
- ratio: ratio
161
- });
162
- }
163
- if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
164
- highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
165
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
166
- void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
167
- ratio: upSelectedLink.value / linkDatum.value
168
- });
169
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0);
170
- })), this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
171
- }
172
- this._needClear = !0;
173
- }, this._handleLinkRelatedClick = graphic => {
174
- const allNodeElements = this._nodeMark.getGraphics();
175
- if (!allNodeElements || !allNodeElements.length) return;
176
- const allLinkElements = this._linkMark.getGraphics();
177
- if (!allLinkElements || !allLinkElements.length) return;
178
- if ("source" === ((0, util_2.getDatumOfGraphic)(graphic) ? "parents" : "source")) this._linkMark && allLinkElements.forEach((linkEl => {
179
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
180
- })), this._nodeMark && allNodeElements.forEach((el => {
181
- el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
182
- })); else {
183
- const curLinkDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ], upstreamLinks = [];
184
- (0, vutils_1.array)(curLinkDatum.datum).forEach((dividedLink => {
185
- const parents = dividedLink.parents, len = parents.length;
186
- for (let i = 0; i < len - 1; i++) {
187
- const source = parents[i].key, target = parents[i + 1].key, value = dividedLink.value, existingItem = upstreamLinks.find((item => item.source === source && item.target === target));
188
- upstreamLinks.push({
189
- source: parents[i].key,
190
- target: parents[i + 1].key,
191
- value: dividedLink.value
192
- }), existingItem ? existingItem.value += value : upstreamLinks.push({
193
- source: source,
194
- target: target,
195
- value: value
196
- });
197
- }
198
- })), allLinkElements.forEach((linkEl => {
199
- const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), originalDatum = linkDatum.datum;
200
- if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
201
- void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
202
- ratio: 1
203
- });
204
- const selectedDatum = originalDatum ? originalDatum.filter((entry => {
205
- const parentKeysList = entry.parents.map((item => item.key));
206
- return parentKeysList.includes(curLinkDatum.source) && parentKeysList.includes(curLinkDatum.target);
207
- })) : null;
208
- if (selectedDatum && selectedDatum.length) {
209
- highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
210
- highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target);
211
- const ratio = selectedDatum.filter((entry => entry.parents.some(((par, index) => {
212
- var _a;
213
- return par.key === curLinkDatum.source && (null === (_a = entry.parents[index + 1]) || void 0 === _a ? void 0 : _a.key) === curLinkDatum.target;
214
- })))).reduce(((sum, d) => sum + d.value), 0) / linkDatum.value;
215
- return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
216
- void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
217
- ratio: ratio
218
- });
219
- }
220
- const upSelectedLink = upstreamLinks.find((upLink => upLink.source === linkDatum.source && upLink.target === linkDatum.target));
221
- if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
222
- highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
223
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
224
- void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
225
- ratio: upSelectedLink.value / linkDatum.value
226
- });
227
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0);
228
- })), this._highLightElements(allNodeElements, highlightNodes);
229
- }
230
- this._needClear = !0;
231
37
  };
232
38
  }
233
39
  get direction() {
@@ -474,6 +280,205 @@ class SankeySeries extends cartesian_1.CartesianSeries {
474
280
  linksSeriesDataUpdate() {
475
281
  this._linkMark.getData().updateData();
476
282
  }
283
+ _handleClearEmpty() {
284
+ var _a, _b;
285
+ if (!this._needClear) return;
286
+ const allNodeElements = null === (_a = this._nodeMark) || void 0 === _a ? void 0 : _a.getGraphics();
287
+ if (!allNodeElements || !allNodeElements.length) return;
288
+ const allLinkElements = null === (_b = this._linkMark) || void 0 === _b ? void 0 : _b.getGraphics();
289
+ allLinkElements && allLinkElements.length && (allNodeElements.forEach((el => {
290
+ el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
291
+ })), allLinkElements.forEach((el => {
292
+ el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
293
+ })), this._needClear = !1);
294
+ }
295
+ _handleNodeAdjacencyClick(graphic) {
296
+ const nodeDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ nodeDatum.key ];
297
+ if (this._linkMark) {
298
+ const allLinkElements = this._linkMark.getGraphics();
299
+ if (!allLinkElements || !allLinkElements.length) return;
300
+ allLinkElements.forEach(((linkEl, i) => {
301
+ const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl);
302
+ linkDatum.source === nodeDatum.key ? (highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
303
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
304
+ linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : linkDatum.target === nodeDatum.key ? (highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
305
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
306
+ linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
307
+ linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
308
+ }));
309
+ }
310
+ this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes),
311
+ this._needClear = !0;
312
+ }
313
+ _handleLinkAdjacencyClick(graphic) {
314
+ const curLinkDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ];
315
+ if (this._linkMark) {
316
+ const allLinkElements = this._linkMark.getGraphics();
317
+ if (!allLinkElements || !allLinkElements.length) return;
318
+ allLinkElements.forEach((linkEl => {
319
+ linkEl === graphic ? (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
320
+ (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
321
+ ratio: 1
322
+ })) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
323
+ }));
324
+ }
325
+ this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes),
326
+ this._needClear = !0;
327
+ }
328
+ _handleNodeRelatedClick(graphic) {
329
+ var _a;
330
+ const nodeDatum = (0, util_2.getDatumOfGraphic)(graphic), allNodeElements = this._nodeMark.getGraphics();
331
+ if (!allNodeElements || !allNodeElements.length) return;
332
+ const allLinkElements = this._linkMark.getGraphics();
333
+ if (!allLinkElements || !allLinkElements.length) return;
334
+ const father = (null === (_a = (0, util_2.getDatumOfGraphic)(allLinkElements[0])) || void 0 === _a ? void 0 : _a.parents) ? "parents" : "source";
335
+ if ("source" === father) {
336
+ const highlightNodes = [ nodeDatum.key ], highlightLinks = [];
337
+ if (allLinkElements.forEach(((linkEl, i) => {
338
+ var _a, _b, _c, _d;
339
+ const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), father = (null == linkDatum ? void 0 : linkDatum.parents) ? "parents" : "source";
340
+ if ((0, vutils_1.array)(linkDatum[father]).includes(nodeDatum.key)) {
341
+ if (highlightLinks.includes(null !== (_a = linkDatum.key) && void 0 !== _a ? _a : linkDatum.index) || highlightLinks.push(null !== (_b = linkDatum.key) && void 0 !== _b ? _b : linkDatum.index),
342
+ highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
343
+ !highlightNodes.includes(linkDatum.target)) {
344
+ highlightNodes.push(linkDatum.target);
345
+ let targetNodeSourceLinks = allNodeElements.find((nodeElement => nodeElement.data[0].key === linkDatum.target)).data[0].sourceLinks;
346
+ for (;(null == targetNodeSourceLinks ? void 0 : targetNodeSourceLinks.length) > 0; ) {
347
+ const newTargetNodeSourceLinks = [];
348
+ return targetNodeSourceLinks.forEach((targetNodeSourceLinkDatum => {
349
+ var _a, _b;
350
+ if (!highlightLinks.includes(null !== (_a = targetNodeSourceLinkDatum.key) && void 0 !== _a ? _a : targetNodeSourceLinkDatum.index) && (highlightLinks.push(null !== (_b = targetNodeSourceLinkDatum.key) && void 0 !== _b ? _b : targetNodeSourceLinkDatum.index),
351
+ !highlightNodes.includes(targetNodeSourceLinkDatum.target))) {
352
+ highlightNodes.push(targetNodeSourceLinkDatum.target);
353
+ const sourceNodeTemp = allNodeElements.find((nodeElement => nodeElement.data[0].key === targetNodeSourceLinkDatum.target));
354
+ newTargetNodeSourceLinks.push(sourceNodeTemp.data[0].targetLinks);
355
+ }
356
+ })), void (targetNodeSourceLinks = newTargetNodeSourceLinks);
357
+ }
358
+ }
359
+ } else if (linkDatum.target === nodeDatum.key && (highlightLinks.includes(null !== (_c = linkDatum.key) && void 0 !== _c ? _c : linkDatum.index) || highlightLinks.push(null !== (_d = linkDatum.key) && void 0 !== _d ? _d : linkDatum.index),
360
+ !highlightNodes.includes(linkDatum.source))) {
361
+ highlightNodes.push(linkDatum.source);
362
+ let sourceNodeTargetLinks = allNodeElements.find((nodeElement => nodeElement.data[0].key === linkDatum.source)).data[0].targetLinks;
363
+ for (;(null == sourceNodeTargetLinks ? void 0 : sourceNodeTargetLinks.length) > 0; ) {
364
+ const newSourceNodeTargetLinks = [];
365
+ return sourceNodeTargetLinks.forEach((sourceNodeTargetLinkDatum => {
366
+ var _a, _b;
367
+ if (!highlightLinks.includes(null !== (_a = sourceNodeTargetLinkDatum.key) && void 0 !== _a ? _a : sourceNodeTargetLinkDatum.index) && (highlightLinks.push(null !== (_b = sourceNodeTargetLinkDatum.key) && void 0 !== _b ? _b : sourceNodeTargetLinkDatum.index),
368
+ !highlightNodes.includes(sourceNodeTargetLinkDatum.source))) {
369
+ highlightNodes.push(sourceNodeTargetLinkDatum.source);
370
+ const sourceNodeTemp = allNodeElements.find((nodeElement => nodeElement.data[0].key === sourceNodeTargetLinkDatum.source));
371
+ newSourceNodeTargetLinks.push(sourceNodeTemp.data[0].targetLinks);
372
+ }
373
+ })), void (sourceNodeTargetLinks = newSourceNodeTargetLinks);
374
+ }
375
+ }
376
+ })), this._linkMark) {
377
+ const allLinkElements = this._linkMark.getGraphics();
378
+ if (!allLinkElements || !allLinkElements.length) return;
379
+ allLinkElements.forEach(((linkEl, i) => {
380
+ var _a;
381
+ const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl);
382
+ highlightLinks.includes(null !== (_a = linkDatum.key) && void 0 !== _a ? _a : linkDatum.index) ? (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
383
+ linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
384
+ linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
385
+ }));
386
+ }
387
+ this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
388
+ } else {
389
+ const highlightNodes = [ nodeDatum.key ], upstreamLinks = nodeDatum.targetLinks.reduce(((res, link) => ((0,
390
+ vutils_1.array)(link.datum).forEach((dividedLink => {
391
+ const parents = dividedLink.parents, len = parents.length;
392
+ for (let i = 0; i < len; i++) {
393
+ const source = parents[i].key, target = parents[i + 1] ? parents[i + 1].key : nodeDatum.key, value = dividedLink.value, existingItem = res.find((item => item.source === source && item.target === target));
394
+ existingItem ? existingItem.value += value : res.push({
395
+ source: source,
396
+ target: target,
397
+ value: value
398
+ });
399
+ }
400
+ })), res)), []);
401
+ allLinkElements.forEach(((linkEl, i) => {
402
+ const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), originalDatum = linkDatum.datum, selectedDatum = originalDatum ? originalDatum.filter((entry => entry[father].some((par => par.key === nodeDatum.key)))) : null, upSelectedLink = upstreamLinks.find((upLink => upLink.source === linkDatum.source && upLink.target === linkDatum.target));
403
+ if (selectedDatum && selectedDatum.length) {
404
+ highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
405
+ highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target);
406
+ const ratio = selectedDatum.reduce(((sum, d) => sum + d.value), 0) / linkDatum.value;
407
+ return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
408
+ void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
409
+ ratio: ratio
410
+ });
411
+ }
412
+ if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
413
+ highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
414
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
415
+ void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
416
+ ratio: upSelectedLink.value / linkDatum.value
417
+ });
418
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0);
419
+ })), this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
420
+ }
421
+ this._needClear = !0;
422
+ }
423
+ _handleLinkRelatedClick(graphic) {
424
+ const allNodeElements = this._nodeMark.getGraphics();
425
+ if (!allNodeElements || !allNodeElements.length) return;
426
+ const allLinkElements = this._linkMark.getGraphics();
427
+ if (!allLinkElements || !allLinkElements.length) return;
428
+ if ("source" === ((0, util_2.getDatumOfGraphic)(graphic) ? "parents" : "source")) this._linkMark && allLinkElements.forEach((linkEl => {
429
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
430
+ })), this._nodeMark && allNodeElements.forEach((el => {
431
+ el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
432
+ })); else {
433
+ const curLinkDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ], upstreamLinks = [];
434
+ (0, vutils_1.array)(curLinkDatum.datum).forEach((dividedLink => {
435
+ const parents = dividedLink.parents, len = parents.length;
436
+ for (let i = 0; i < len - 1; i++) {
437
+ const source = parents[i].key, target = parents[i + 1].key, value = dividedLink.value, existingItem = upstreamLinks.find((item => item.source === source && item.target === target));
438
+ upstreamLinks.push({
439
+ source: parents[i].key,
440
+ target: parents[i + 1].key,
441
+ value: dividedLink.value
442
+ }), existingItem ? existingItem.value += value : upstreamLinks.push({
443
+ source: source,
444
+ target: target,
445
+ value: value
446
+ });
447
+ }
448
+ })), allLinkElements.forEach((linkEl => {
449
+ const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), originalDatum = linkDatum.datum;
450
+ if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
451
+ void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
452
+ ratio: 1
453
+ });
454
+ const selectedDatum = originalDatum ? originalDatum.filter((entry => {
455
+ const parentKeysList = entry.parents.map((item => item.key));
456
+ return parentKeysList.includes(curLinkDatum.source) && parentKeysList.includes(curLinkDatum.target);
457
+ })) : null;
458
+ if (selectedDatum && selectedDatum.length) {
459
+ highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
460
+ highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target);
461
+ const ratio = selectedDatum.filter((entry => entry.parents.some(((par, index) => {
462
+ var _a;
463
+ return par.key === curLinkDatum.source && (null === (_a = entry.parents[index + 1]) || void 0 === _a ? void 0 : _a.key) === curLinkDatum.target;
464
+ })))).reduce(((sum, d) => sum + d.value), 0) / linkDatum.value;
465
+ return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
466
+ void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
467
+ ratio: ratio
468
+ });
469
+ }
470
+ const upSelectedLink = upstreamLinks.find((upLink => upLink.source === linkDatum.source && upLink.target === linkDatum.target));
471
+ if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
472
+ highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
473
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
474
+ void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
475
+ ratio: upSelectedLink.value / linkDatum.value
476
+ });
477
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0);
478
+ })), this._highLightElements(allNodeElements, highlightNodes);
479
+ }
480
+ this._needClear = !0;
481
+ }
477
482
  _highLightElements(graphics, highlightNodes) {
478
483
  graphics && graphics.length && graphics.forEach((g => {
479
484
  g.removeState([ interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS ]),