@visactor/vchart 1.11.0-alpha.3 → 1.11.1-alpha.0

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 (107) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +245 -138
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/chart/base/base-chart.d.ts +3 -0
  6. package/cjs/chart/base/base-chart.js +11 -0
  7. package/cjs/chart/base/base-chart.js.map +1 -1
  8. package/cjs/chart/interface/chart.d.ts +3 -0
  9. package/cjs/chart/interface/chart.js.map +1 -1
  10. package/cjs/chart/sankey/sankey-transformer.js +5 -0
  11. package/cjs/chart/sankey/sankey-transformer.js.map +1 -1
  12. package/cjs/chart/sankey/sankey.d.ts +5 -0
  13. package/cjs/chart/sankey/sankey.js +23 -1
  14. package/cjs/chart/sankey/sankey.js.map +1 -1
  15. package/cjs/compile/compiler.d.ts +4 -3
  16. package/cjs/compile/compiler.js +12 -7
  17. package/cjs/compile/compiler.js.map +1 -1
  18. package/cjs/compile/mark/interface.d.ts +3 -1
  19. package/cjs/compile/mark/interface.js +2 -1
  20. package/cjs/compile/mark/interface.js.map +1 -1
  21. package/cjs/component/axis/interface/spec.js.map +1 -1
  22. package/cjs/component/tooltip/tooltip.d.ts +1 -5
  23. package/cjs/component/tooltip/tooltip.js.map +1 -1
  24. package/cjs/component/tooltip/utils/compose.d.ts +2 -2
  25. package/cjs/component/tooltip/utils/compose.js +2 -2
  26. package/cjs/component/tooltip/utils/compose.js.map +1 -1
  27. package/cjs/component/tooltip/utils/get-spec.js +6 -6
  28. package/cjs/component/tooltip/utils/get-spec.js.map +1 -1
  29. package/cjs/core/index.d.ts +1 -1
  30. package/cjs/core/index.js +1 -1
  31. package/cjs/core/index.js.map +1 -1
  32. package/cjs/core/interface.d.ts +3 -0
  33. package/cjs/core/interface.js.map +1 -1
  34. package/cjs/core/vchart.d.ts +3 -0
  35. package/cjs/core/vchart.js +9 -0
  36. package/cjs/core/vchart.js.map +1 -1
  37. package/cjs/data/transforms/sankey.js +1 -14
  38. package/cjs/data/transforms/sankey.js.map +1 -1
  39. package/cjs/plugin/chart/formatter/formatter.js +3 -3
  40. package/cjs/plugin/chart/formatter/formatter.js.map +1 -1
  41. package/cjs/plugin/components/register.js +2 -2
  42. package/cjs/plugin/components/register.js.map +1 -1
  43. package/cjs/series/base/base-series.js +4 -4
  44. package/cjs/series/base/base-series.js.map +1 -1
  45. package/cjs/series/sankey/interface.d.ts +5 -0
  46. package/cjs/series/sankey/interface.js.map +1 -1
  47. package/cjs/series/sankey/sankey.d.ts +8 -3
  48. package/cjs/series/sankey/sankey.js +85 -49
  49. package/cjs/series/sankey/sankey.js.map +1 -1
  50. package/cjs/series/sankey/tooltip-helper.js +1 -1
  51. package/cjs/series/sankey/tooltip-helper.js.map +1 -1
  52. package/cjs/series/scatter/scatter.js +1 -1
  53. package/cjs/series/scatter/scatter.js.map +1 -1
  54. package/cjs/typings/tooltip/line.d.ts +4 -0
  55. package/cjs/typings/tooltip/line.js.map +1 -1
  56. package/esm/chart/base/base-chart.d.ts +3 -0
  57. package/esm/chart/base/base-chart.js +11 -0
  58. package/esm/chart/base/base-chart.js.map +1 -1
  59. package/esm/chart/interface/chart.d.ts +3 -0
  60. package/esm/chart/interface/chart.js.map +1 -1
  61. package/esm/chart/sankey/sankey-transformer.js +5 -0
  62. package/esm/chart/sankey/sankey-transformer.js.map +1 -1
  63. package/esm/chart/sankey/sankey.d.ts +5 -0
  64. package/esm/chart/sankey/sankey.js +24 -0
  65. package/esm/chart/sankey/sankey.js.map +1 -1
  66. package/esm/compile/compiler.d.ts +4 -3
  67. package/esm/compile/compiler.js +13 -8
  68. package/esm/compile/compiler.js.map +1 -1
  69. package/esm/compile/mark/interface.d.ts +3 -1
  70. package/esm/compile/mark/interface.js +2 -1
  71. package/esm/compile/mark/interface.js.map +1 -1
  72. package/esm/component/axis/interface/spec.js.map +1 -1
  73. package/esm/component/tooltip/tooltip.d.ts +1 -5
  74. package/esm/component/tooltip/tooltip.js.map +1 -1
  75. package/esm/component/tooltip/utils/compose.d.ts +2 -2
  76. package/esm/component/tooltip/utils/compose.js +1 -1
  77. package/esm/component/tooltip/utils/compose.js.map +1 -1
  78. package/esm/component/tooltip/utils/get-spec.js +1 -1
  79. package/esm/component/tooltip/utils/get-spec.js.map +1 -1
  80. package/esm/core/index.d.ts +1 -1
  81. package/esm/core/index.js +1 -1
  82. package/esm/core/index.js.map +1 -1
  83. package/esm/core/interface.d.ts +3 -0
  84. package/esm/core/interface.js.map +1 -1
  85. package/esm/core/vchart.d.ts +3 -0
  86. package/esm/core/vchart.js +9 -0
  87. package/esm/core/vchart.js.map +1 -1
  88. package/esm/data/transforms/sankey.js +1 -16
  89. package/esm/data/transforms/sankey.js.map +1 -1
  90. package/esm/plugin/chart/formatter/formatter.js +3 -1
  91. package/esm/plugin/chart/formatter/formatter.js.map +1 -1
  92. package/esm/plugin/components/register.js +1 -1
  93. package/esm/plugin/components/register.js.map +1 -1
  94. package/esm/series/base/base-series.js +3 -4
  95. package/esm/series/base/base-series.js.map +1 -1
  96. package/esm/series/sankey/interface.d.ts +5 -0
  97. package/esm/series/sankey/interface.js.map +1 -1
  98. package/esm/series/sankey/sankey.d.ts +8 -3
  99. package/esm/series/sankey/sankey.js +85 -50
  100. package/esm/series/sankey/sankey.js.map +1 -1
  101. package/esm/series/sankey/tooltip-helper.js +1 -1
  102. package/esm/series/sankey/tooltip-helper.js.map +1 -1
  103. package/esm/series/scatter/scatter.js +1 -1
  104. package/esm/series/scatter/scatter.js.map +1 -1
  105. package/esm/typings/tooltip/line.d.ts +4 -0
  106. package/esm/typings/tooltip/line.js.map +1 -1
  107. package/package.json +13 -13
@@ -26,7 +26,7 @@ import { SeriesData } from "../base/series-data";
26
26
 
27
27
  import { SankeySeriesTooltipHelper } from "./tooltip-helper";
28
28
 
29
- import { Bounds, array, isNil } from "@visactor/vutils";
29
+ import { Bounds, array, isNil, isValid, isNumber } from "@visactor/vutils";
30
30
 
31
31
  import { registerSankeyAnimation } from "./animation";
32
32
 
@@ -51,12 +51,10 @@ import { addDataKey, initKeyMap } from "../../data/transforms/data-key";
51
51
  export class SankeySeries extends CartesianSeries {
52
52
  constructor() {
53
53
  super(...arguments), this.type = SeriesTypeEnum.sankey, this._nodeLayoutZIndex = LayoutZIndex.Node,
54
- this._labelLayoutZIndex = LayoutZIndex.Label, this._viewBox = new Bounds, this._handleAdjacencyClick = params => {
55
- const element = params.item;
56
- element && element.mark.id().includes("node") ? this._handleNodeAdjacencyClick(element) : element && element.mark.id().includes("link") ? this._handleLinkAdjacencyClick(element) : this._handleClearEmpty();
57
- }, this._handleRelatedClick = params => {
58
- const element = params.item;
59
- element && element.mark.id().includes("node") ? this._handleNodeRelatedClick(element) : element && element.mark.id().includes("link") ? this._handleLinkRelatedClick(element) : this._handleClearEmpty();
54
+ this._labelLayoutZIndex = LayoutZIndex.Label, this._viewBox = new Bounds, this._handleEmphasisElement = params => {
55
+ var _a;
56
+ const emphasisSpec = null !== (_a = this._spec.emphasis) && void 0 !== _a ? _a : {}, element = params.item;
57
+ "adjacency" === emphasisSpec.effect ? element && element.mark.id().includes("node") ? this._handleNodeAdjacencyClick(element) : element && element.mark.id().includes("link") ? this._handleLinkAdjacencyClick(element) : this._handleClearEmpty() : "related" === emphasisSpec.effect && (element && element.mark.id().includes("node") ? this._handleNodeRelatedClick(element) : element && element.mark.id().includes("link") ? this._handleLinkRelatedClick(element) : this._handleClearEmpty());
60
58
  }, this._handleClearEmpty = () => {
61
59
  var _a, _b, _c;
62
60
  const allNodeElements = null === (_a = this._nodeMark) || void 0 === _a ? void 0 : _a.getProductElements();
@@ -64,20 +62,21 @@ export class SankeySeries extends CartesianSeries {
64
62
  const allLinkElements = null === (_b = this._linkMark) || void 0 === _b ? void 0 : _b.getProductElements();
65
63
  if (!allLinkElements || !allLinkElements.length) return;
66
64
  const allLabelElements = null === (_c = this._labelMark) || void 0 === _c ? void 0 : _c.getProductElements();
67
- allLabelElements && allLabelElements.length && (allNodeElements.forEach((el => {
68
- el.clearStates();
65
+ if (!allLabelElements || !allLabelElements.length) return;
66
+ const states = [ STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE ];
67
+ allNodeElements.forEach((el => {
68
+ el.removeState(states);
69
69
  })), allLinkElements.forEach((el => {
70
- el.clearStates();
70
+ el.removeState(states);
71
71
  })), allLabelElements.forEach((el => {
72
- el.clearStates();
73
- })));
72
+ el.removeState(states);
73
+ }));
74
74
  }, this._handleNodeAdjacencyClick = element => {
75
75
  const nodeDatum = element.getDatum(), highlightNodes = [ nodeDatum.key ];
76
76
  if (this._linkMark) {
77
77
  const allLinkElements = this._linkMark.getProductElements();
78
78
  if (!allLinkElements || !allLinkElements.length) return;
79
79
  allLinkElements.forEach(((linkEl, i) => {
80
- linkEl.clearStates();
81
80
  const linkDatum = linkEl.getDatum(), father = (null == linkDatum ? void 0 : linkDatum.parents) ? "parents" : "source";
82
81
  if (array(linkDatum[father]).includes(nodeDatum.key)) {
83
82
  let ratio;
@@ -87,10 +86,12 @@ export class SankeySeries extends CartesianSeries {
87
86
  const originalDatum = linkDatum.datum;
88
87
  ratio = (originalDatum ? originalDatum.filter((entry => entry.parents.some((par => par.key === nodeDatum.key)))).reduce(((sum, d) => sum + d.value), 0) : 0) / linkDatum.value;
89
88
  }
90
- linkEl.addState("selected", {
89
+ linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
90
+ linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
91
91
  ratio: ratio
92
92
  });
93
- } else linkDatum.target === nodeDatum.key ? highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source) : linkEl.useStates([ "blur" ]);
93
+ } else linkDatum.target === nodeDatum.key ? highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source) : (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
94
+ linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
94
95
  }));
95
96
  }
96
97
  this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
@@ -101,9 +102,10 @@ export class SankeySeries extends CartesianSeries {
101
102
  const allLinkElements = this._linkMark.getProductElements();
102
103
  if (!allLinkElements || !allLinkElements.length) return;
103
104
  allLinkElements.forEach((linkEl => {
104
- linkEl.clearStates(), linkEl === element ? linkEl.addState("selected", {
105
+ linkEl === element ? (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
106
+ linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
105
107
  ratio: 1
106
- }) : linkEl.useStates([ "blur" ]);
108
+ })) : (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
107
109
  }));
108
110
  }
109
111
  this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
@@ -118,7 +120,6 @@ export class SankeySeries extends CartesianSeries {
118
120
  const highlightNodes = [ nodeDatum.key ], highlightLinks = [];
119
121
  if (allLinkElements.forEach(((linkEl, i) => {
120
122
  var _a, _b, _c, _d;
121
- linkEl.clearStates();
122
123
  const linkDatum = linkEl.getDatum(), father = (null == linkDatum ? void 0 : linkDatum.parents) ? "parents" : "source";
123
124
  if (array(linkDatum[father]).includes(nodeDatum.key)) {
124
125
  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),
@@ -161,7 +162,9 @@ export class SankeySeries extends CartesianSeries {
161
162
  if (!allLinkElements || !allLinkElements.length) return;
162
163
  allLinkElements.forEach(((linkEl, i) => {
163
164
  var _a;
164
- linkEl.clearStates(), highlightLinks.includes(null !== (_a = linkEl.getDatum().key) && void 0 !== _a ? _a : linkEl.getDatum().index) ? linkEl.useStates([ "selected" ]) : linkEl.useStates([ "blur" ]);
165
+ highlightLinks.includes(null !== (_a = linkEl.getDatum().key) && void 0 !== _a ? _a : linkEl.getDatum().index) ? (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
166
+ linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS)) : (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
167
+ linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
165
168
  }));
166
169
  }
167
170
  this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
@@ -179,22 +182,23 @@ export class SankeySeries extends CartesianSeries {
179
182
  }
180
183
  })), res)), []);
181
184
  allLinkElements.forEach(((linkEl, i) => {
182
- linkEl.clearStates();
183
185
  const linkDatum = linkEl.getDatum(), father = (null == linkDatum ? void 0 : linkDatum.parents) ? "parents" : "source", 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));
184
186
  if (selectedDatum && selectedDatum.length) {
185
187
  highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
186
188
  highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target);
187
189
  const ratio = selectedDatum.reduce(((sum, d) => sum + d.value), 0) / linkDatum.value;
188
- return linkEl.useStates([ "selected" ]), void linkEl.addState("selected", {
190
+ return linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
191
+ void linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
189
192
  ratio: ratio
190
193
  });
191
194
  }
192
195
  if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
193
196
  highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
194
- linkEl.useStates([ "selected" ]), void linkEl.addState("selected", {
197
+ linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
198
+ void linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
195
199
  ratio: upSelectedLink.value / linkDatum.value
196
200
  });
197
- linkEl.useStates([ "blur" ]);
201
+ linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
198
202
  })), this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
199
203
  this._labelMark && this._highLightElements(this._labelMark.getProductElements(), highlightNodes);
200
204
  }
@@ -205,15 +209,16 @@ export class SankeySeries extends CartesianSeries {
205
209
  const allLinkElements = this._linkMark.getProductElements();
206
210
  if (!allLinkElements || !allLinkElements.length) return;
207
211
  if ("source" === ((null === (_a = element.getDatum()) || void 0 === _a ? void 0 : _a.parents) ? "parents" : "source")) {
212
+ const states = [ STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE ];
208
213
  if (this._linkMark && allLinkElements.forEach((linkEl => {
209
- linkEl.clearStates();
214
+ linkEl.removeState(states);
210
215
  })), this._nodeMark && allNodeElements.forEach((el => {
211
- el.clearStates();
216
+ el.removeState(states);
212
217
  })), this._labelMark) {
213
218
  const allLabelElements = this._labelMark.getProductElements();
214
219
  if (!allLabelElements || !allLabelElements.length) return;
215
220
  allLabelElements.forEach((el => {
216
- el.clearStates();
221
+ el.removeState(states);
217
222
  }));
218
223
  }
219
224
  } else {
@@ -233,10 +238,9 @@ export class SankeySeries extends CartesianSeries {
233
238
  });
234
239
  }
235
240
  })), allLinkElements.forEach((linkEl => {
236
- linkEl.clearStates();
237
241
  const linkDatum = linkEl.getDatum(), originalDatum = linkDatum.datum;
238
- if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) return linkEl.useStates([ "selected" ]),
239
- void linkEl.addState("selected", {
242
+ if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) return linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
243
+ void linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
240
244
  ratio: 1
241
245
  });
242
246
  const selectedDatum = originalDatum ? originalDatum.filter((entry => {
@@ -250,17 +254,19 @@ export class SankeySeries extends CartesianSeries {
250
254
  var _a;
251
255
  return par.key === curLinkDatum.source && (null === (_a = entry.parents[index + 1]) || void 0 === _a ? void 0 : _a.key) === curLinkDatum.target;
252
256
  })))).reduce(((sum, d) => sum + d.value), 0), ratio = val / linkDatum.value;
253
- return linkEl.useStates([ "selected" ]), void linkEl.addState("selected", {
257
+ return linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
258
+ void linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
254
259
  ratio: ratio
255
260
  });
256
261
  }
257
262
  const upSelectedLink = upstreamLinks.find((upLink => upLink.source === linkDatum.source && upLink.target === linkDatum.target));
258
263
  if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
259
264
  highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
260
- linkEl.useStates([ "selected" ]), void linkEl.addState("selected", {
265
+ linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
266
+ void linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
261
267
  ratio: upSelectedLink.value / linkDatum.value
262
268
  });
263
- linkEl.useStates([ "blur" ]);
269
+ linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
264
270
  })), this._highLightElements(allNodeElements, highlightNodes), this._labelMark && this._highLightElements(this._labelMark.getProductElements(), highlightNodes);
265
271
  }
266
272
  };
@@ -315,7 +321,12 @@ export class SankeySeries extends CartesianSeries {
315
321
  nodeKey: this._spec.nodeKey,
316
322
  linkSortBy: this._spec.linkSortBy,
317
323
  nodeSortBy: this._spec.nodeSortBy,
318
- setNodeLayer: this._spec.setNodeLayer
324
+ setNodeLayer: this._spec.setNodeLayer,
325
+ dropIsolatedNode: this._spec.dropIsolatedNode,
326
+ nodeHeight: this._spec.nodeHeight,
327
+ linkHeight: this._spec.linkHeight,
328
+ equalNodeHeight: this._spec.equalNodeHeight,
329
+ linkOverlap: this._spec.linkOverlap
319
330
  },
320
331
  level: TransformLevel.sankeyLayout
321
332
  });
@@ -386,6 +397,24 @@ export class SankeySeries extends CartesianSeries {
386
397
  labelMark && (this._labelMark = labelMark);
387
398
  }
388
399
  }
400
+ _buildMarkAttributeContext() {
401
+ super._buildMarkAttributeContext(), this._markAttributeContext.valueToNode = this.valueToNode.bind(this),
402
+ this._markAttributeContext.valueToLink = this.valueToLink.bind(this);
403
+ }
404
+ valueToNode(value) {
405
+ const nodes = this._nodesSeriesData.getLatestData(), specifyValue = array(value)[0];
406
+ return nodes && nodes.find((node => node.key === specifyValue));
407
+ }
408
+ valueToLink(value) {
409
+ const links = this._linksSeriesData.getLatestData(), specifyValue = array(value);
410
+ return links && links.find((link => link && link.source === specifyValue[0] && link.target === specifyValue[1]));
411
+ }
412
+ valueToPositionX(value) {
413
+ return this.valueToNode(value).x0;
414
+ }
415
+ valueToPositionY(value) {
416
+ return this.valueToNode(value).y0;
417
+ }
389
418
  initMarkStyle() {
390
419
  this._initNodeMarkStyle(), this._initLinkMarkStyle(), this._initLabelMarkStyle();
391
420
  }
@@ -412,11 +441,11 @@ export class SankeySeries extends CartesianSeries {
412
441
  y1: datum => datum.y1,
413
442
  thickness: datum => datum.thickness,
414
443
  fill: datum => {
415
- var _a, _b, _c, _d, _e, _f;
444
+ var _a, _b, _c;
416
445
  const fill = null === (_b = null === (_a = this._spec.link) || void 0 === _a ? void 0 : _a.style) || void 0 === _b ? void 0 : _b.fill;
417
446
  if (fill) return fill;
418
- const sourceName = this._spec.nodeKey || (null === (_e = null === (_d = null === (_c = this._rawData.latestData[0]) || void 0 === _c ? void 0 : _c.nodes) || void 0 === _d ? void 0 : _d[0]) || void 0 === _e ? void 0 : _e.children) ? datum.source : this.getNodeList()[datum.source];
419
- return null === (_f = this._colorScale) || void 0 === _f ? void 0 : _f.scale(sourceName);
447
+ const sourceName = isNumber(datum.source) ? this.getNodeList()[datum.source] : datum.source;
448
+ return null === (_c = this._colorScale) || void 0 === _c ? void 0 : _c.scale(sourceName);
420
449
  },
421
450
  direction: null !== (_a = this._spec.direction) && void 0 !== _a ? _a : "horizontal"
422
451
  }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);
@@ -559,15 +588,12 @@ export class SankeySeries extends CartesianSeries {
559
588
  super.initEvent(), null === (_a = this._nodesSeriesData.getDataView()) || void 0 === _a || _a.target.addListener("change", this.nodesSeriesDataUpdate.bind(this)),
560
589
  null === (_b = this._linksSeriesData.getDataView()) || void 0 === _b || _b.target.addListener("change", this.linksSeriesDataUpdate.bind(this));
561
590
  const emphasisSpec = null !== (_c = this._spec.emphasis) && void 0 !== _c ? _c : {};
562
- !0 !== this._option.disableTriggerEvent && (emphasisSpec.enable && "adjacency" === emphasisSpec.effect && ("hover" === emphasisSpec.trigger ? this.event.on("pointerover", {
563
- level: Event_Bubble_Level.chart
564
- }, this._handleAdjacencyClick) : this.event.on("pointerdown", {
565
- level: Event_Bubble_Level.chart
566
- }, this._handleAdjacencyClick)), emphasisSpec.enable && "related" === emphasisSpec.effect && ("hover" === emphasisSpec.trigger ? this.event.on("pointerover", {
567
- level: Event_Bubble_Level.chart
568
- }, this._handleRelatedClick) : this.event.on("pointerdown", {
569
- level: Event_Bubble_Level.chart
570
- }, this._handleRelatedClick)));
591
+ if (!0 !== this._option.disableTriggerEvent && emphasisSpec.enable && ("adjacency" === emphasisSpec.effect || "related" === emphasisSpec.effect)) {
592
+ const event = "hover" === emphasisSpec.trigger ? "pointerover" : "pointerdown";
593
+ this.event.on(event, {
594
+ level: Event_Bubble_Level.chart
595
+ }, this._handleEmphasisElement);
596
+ }
571
597
  }
572
598
  nodesSeriesDataUpdate() {
573
599
  this._nodesSeriesData.updateData(), this._setNodeOrdinalColorScale();
@@ -577,7 +603,8 @@ export class SankeySeries extends CartesianSeries {
577
603
  }
578
604
  _highLightElements(vGrammarElements, highlightNodes) {
579
605
  vGrammarElements && vGrammarElements.length && vGrammarElements.forEach((el => {
580
- el.clearStates(), highlightNodes.includes(el.getDatum().key) || el.useStates([ "blur" ]);
606
+ el.removeState([ STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS ]),
607
+ highlightNodes.includes(el.getDatum().key) || el.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
581
608
  }));
582
609
  }
583
610
  initTooltip() {
@@ -598,11 +625,13 @@ export class SankeySeries extends CartesianSeries {
598
625
  this._colorScale = ordinalScale;
599
626
  }
600
627
  getNodeList() {
601
- var _a, _b, _c;
602
- return (null === (_a = this._rawData.latestData[0]) || void 0 === _a ? void 0 : _a.nodes) ? (null === (_b = this._rawData.latestData[0].nodes[0]) || void 0 === _b ? void 0 : _b.children) ? Array.from(this.extractNamesFromTree(this._rawData.latestData[0].nodes, this._spec.categoryField)) : this._rawData.latestData[0].nodes.map(((datum, index) => datum[this._spec.categoryField])) : null === (_c = this._rawData.latestData[0]) || void 0 === _c ? void 0 : _c.values.map(((datum, index) => datum[this._spec.categoryField]));
628
+ var _a;
629
+ const data = this._rawData.latestData[0];
630
+ return (null == data ? void 0 : data.nodes) ? (null === (_a = data.nodes[0]) || void 0 === _a ? void 0 : _a.children) ? Array.from(this.extractNamesFromTree(data.nodes, this._spec.categoryField)) : data.nodes.map(((datum, index) => datum[this._spec.categoryField])) : (null == data ? void 0 : data.links) ? Array.from(this.extractNamesFromLink(data.links)) : null == data ? void 0 : data.values.map(((datum, index) => datum[this._spec.categoryField]));
603
631
  }
604
632
  _getNodeNameFromData(datum) {
605
- return (null == datum ? void 0 : datum.datum) ? null == datum ? void 0 : datum.datum[this._spec.categoryField] : datum[this._spec.categoryField];
633
+ var _a;
634
+ return (null == datum ? void 0 : datum.datum) ? datum.datum[this._spec.categoryField] : null !== (_a = datum.key) && void 0 !== _a ? _a : datum[this._spec.categoryField];
606
635
  }
607
636
  extractNamesFromTree(tree, categoryName) {
608
637
  const uniqueNames = new Set;
@@ -612,6 +641,12 @@ export class SankeySeries extends CartesianSeries {
612
641
  }
613
642
  })), uniqueNames;
614
643
  }
644
+ extractNamesFromLink(links) {
645
+ const uniqueNames = new Set, {sourceField: sourceField, targetField: targetField} = this._spec;
646
+ return links.forEach((link => {
647
+ isValid(link[sourceField]) && uniqueNames.add(link[sourceField]), isValid(link[targetField]) && uniqueNames.add(link[targetField]);
648
+ })), uniqueNames;
649
+ }
615
650
  getDimensionField() {
616
651
  return [ this._spec.categoryField ];
617
652
  }
@@ -641,7 +676,7 @@ export class SankeySeries extends CartesianSeries {
641
676
  }
642
677
  onLayoutEnd(ctx) {
643
678
  super.onLayoutEnd(ctx), this._viewBox.set(0, 0, this._region.getLayoutRect().width, this._region.getLayoutRect().height),
644
- this.getViewData().reRunAllTransform(), this._nodesSeriesData.updateData(), this._linksSeriesData.updateData();
679
+ this.getViewData().reRunAllTransform();
645
680
  }
646
681
  getDefaultShapeType() {
647
682
  return "square";