@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
package/build/index.js CHANGED
@@ -16377,14 +16377,10 @@
16377
16377
  attrs && (Object.assign(stateAttrs, attrs.attributes), (null === (_a = attrs.subAttributes) || void 0 === _a ? void 0 : _a.length) && subAttrs.forEach((subAttrs, index) => {
16378
16378
  Object.assign(subAttrs, attrs.subAttributes[index]);
16379
16379
  }));
16380
- }), this.subGraphic.forEach((graphic, index) => {
16381
- graphic.updateNormalAttrs(subAttrs[index]), graphic.applyStateAttrs(subAttrs[index], states, hasAnimation);
16382
16380
  }), this.updateNormalAttrs(stateAttrs), this.currentStates = states, this.applyStateAttrs(stateAttrs, states, hasAnimation);
16383
16381
  }
16384
16382
  clearStates(hasAnimation) {
16385
- this.stopStateAnimates(), this.hasState() && this.normalAttrs ? (this.currentStates = [], this.subGraphic.forEach(graphic => {
16386
- graphic.applyStateAttrs(graphic.normalAttrs, this.currentStates, hasAnimation, !0), graphic.normalAttrs = null;
16387
- }), this.applyStateAttrs(this.normalAttrs, this.currentStates, hasAnimation, !0)) : this.currentStates = [], this.normalAttrs = null;
16383
+ this.stopStateAnimates(), this.hasState() && this.normalAttrs ? (this.currentStates = [], this.applyStateAttrs(this.normalAttrs, this.currentStates, hasAnimation, !0)) : this.currentStates = [], this.normalAttrs = null;
16388
16384
  }
16389
16385
  clone() {
16390
16386
  const glyph = new Glyph(Object.assign({}, this.attribute));
@@ -33700,7 +33696,7 @@
33700
33696
  }
33701
33697
  class GrowAngleIn extends GrowAngleBase {
33702
33698
  onBind() {
33703
- var _a, _b;
33699
+ var _a, _b, _c;
33704
33700
  super.onBind();
33705
33701
  const {
33706
33702
  from: from,
@@ -33709,7 +33705,7 @@
33709
33705
  fromAttrs = null !== (_b = null === (_a = this.target.context) || void 0 === _a ? void 0 : _a.lastAttrs) && void 0 !== _b ? _b : from;
33710
33706
  this.props = to, this.propKeys = Object.keys(to).filter(key => null != to[key]), this.from = fromAttrs, this.to = to;
33711
33707
  const finalAttribute = this.target.getFinalAttribute();
33712
- finalAttribute && this.target.setAttributes(finalAttribute), this.target.setAttributes(fromAttrs), this.determineUpdateFunction();
33708
+ finalAttribute && this.target.setAttributes(finalAttribute), !1 !== (null === (_c = this.params.controlOptions) || void 0 === _c ? void 0 : _c.immediatelyApply) && this.target.setAttributes(fromAttrs), this.determineUpdateFunction();
33713
33709
  }
33714
33710
  }
33715
33711
  class GrowAngleOut extends GrowAngleBase {
@@ -34317,7 +34313,7 @@
34317
34313
  }
34318
34314
  class GrowRadiusIn extends GrowPointsBase {
34319
34315
  onBind() {
34320
- var _a, _b;
34316
+ var _a, _b, _c;
34321
34317
  super.onBind();
34322
34318
  const {
34323
34319
  from: from,
@@ -34326,7 +34322,7 @@
34326
34322
  fromAttrs = null !== (_b = null === (_a = this.target.context) || void 0 === _a ? void 0 : _a.lastAttrs) && void 0 !== _b ? _b : from;
34327
34323
  this.props = to, this.propKeys = Object.keys(to).filter(key => null != to[key]), this.from = fromAttrs, this.to = to;
34328
34324
  const finalAttribute = this.target.getFinalAttribute();
34329
- finalAttribute && this.target.setAttributes(finalAttribute), this.target.setAttributes(fromAttrs);
34325
+ finalAttribute && this.target.setAttributes(finalAttribute), !1 !== (null === (_c = this.params.controlOptions) || void 0 === _c ? void 0 : _c.immediatelyApply) && this.target.setAttributes(fromAttrs);
34330
34326
  }
34331
34327
  }
34332
34328
  class GrowRadiusOut extends GrowPointsBase {
@@ -34441,7 +34437,7 @@
34441
34437
  super(from, to, duration, easing, params);
34442
34438
  }
34443
34439
  onBind() {
34444
- var _a, _b;
34440
+ var _a, _b, _c;
34445
34441
  super.onBind();
34446
34442
  const {
34447
34443
  from: from,
@@ -34450,7 +34446,7 @@
34450
34446
  fromAttrs = null !== (_b = null === (_a = this.target.context) || void 0 === _a ? void 0 : _a.lastAttrs) && void 0 !== _b ? _b : from;
34451
34447
  this.props = to, this.propKeys = Object.keys(to).filter(key => null != to[key]), this.from = fromAttrs, this.to = to;
34452
34448
  const finalAttribute = this.target.getFinalAttribute();
34453
- finalAttribute && this.target.setAttributes(finalAttribute), this.target.setAttributes(fromAttrs);
34449
+ finalAttribute && this.target.setAttributes(finalAttribute), !1 !== (null === (_c = this.params.controlOptions) || void 0 === _c ? void 0 : _c.immediatelyApply) && this.target.setAttributes(fromAttrs);
34454
34450
  }
34455
34451
  onEnd(cb) {
34456
34452
  super.onEnd(cb);
@@ -37348,7 +37344,9 @@
37348
37344
  space = bandSpace(n, this._paddingInner, this._paddingOuter);
37349
37345
  return this._step = (stop - start) / Math.max(1, space || 1), this._round && (this._step = Math.floor(this._step)), start += (stop - start - this._step * (n - this._paddingInner)) * this._align, this.isBandwidthFixed() || (this._bandwidth = this._step * (1 - this._paddingInner)), this._round && (start = Math.round(start), this.isBandwidthFixed() || (this._bandwidth = Math.round(this._bandwidth))), this._bandRangeState = {
37350
37346
  reverse: reverse,
37351
- start: reverse ? start + this._step * (n - 1) : start,
37347
+ start: reverse ? clamp$1(start + this._step * (n - 1), wholeRange[1], wholeRange[0]) : clamp$1(start, wholeRange[0], wholeRange[1]),
37348
+ min: reverse ? wholeRange[1] : wholeRange[0],
37349
+ max: stop,
37352
37350
  count: n
37353
37351
  }, this.generateFishEyeTransform(), this;
37354
37352
  }
@@ -37365,10 +37363,12 @@
37365
37363
  const {
37366
37364
  count: count,
37367
37365
  start: start,
37368
- reverse: reverse
37366
+ reverse: reverse,
37367
+ min: min,
37368
+ max: max
37369
37369
  } = this._bandRangeState,
37370
37370
  output = start + (reverse ? -1 : 1) * ((i - 1) % count) * this._step;
37371
- return this._fishEyeTransform ? this._fishEyeTransform(output) : output;
37371
+ return clamp$1(this._fishEyeTransform ? this._fishEyeTransform(output) : output, min, max);
37372
37372
  }
37373
37373
  _calculateWholeRange(range, changeProperty) {
37374
37374
  if (this._wholeRange) return this._wholeRange;
@@ -47295,6 +47295,22 @@
47295
47295
  return value;
47296
47296
  };
47297
47297
  }
47298
+ function removeUndefined(obj, deep = false) {
47299
+ if (obj === null || typeof obj !== 'object') {
47300
+ return obj;
47301
+ }
47302
+ for (const key in obj) {
47303
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
47304
+ if (obj[key] === undefined) {
47305
+ delete obj[key];
47306
+ continue;
47307
+ }
47308
+ if (deep) {
47309
+ removeUndefined(obj[key], deep);
47310
+ }
47311
+ }
47312
+ }
47313
+ }
47298
47314
 
47299
47315
  exports.SeriesTypeForThemeEnum = void 0;
47300
47316
  (function (SeriesTypeForThemeEnum) {
@@ -55663,7 +55679,8 @@
55663
55679
  this._cachedProcessedTheme[cacheKey] = theme;
55664
55680
  return theme;
55665
55681
  };
55666
- this._option = Object.assign(Object.assign(Object.assign({}, this._option), { animation: spec.animation !== false }), options);
55682
+ removeUndefined(options);
55683
+ this._option = Object.assign(Object.assign({}, this._option), options);
55667
55684
  if (options === null || options === void 0 ? void 0 : options.optimize) {
55668
55685
  this._option.optimize = Object.assign(Object.assign({}, this._option.optimize), options.optimize);
55669
55686
  }
@@ -55977,7 +55994,7 @@
55977
55994
  }
55978
55995
  _updateAnimateState(initial) {
55979
55996
  var _a, _b;
55980
- if (this._option.animation) {
55997
+ if (this.isAnimationEnable()) {
55981
55998
  const updateGraphicAnimationState = (graphic) => {
55982
55999
  var _a;
55983
56000
  const diffState = (_a = graphic.context) === null || _a === void 0 ? void 0 : _a.diffState;
@@ -56773,6 +56790,12 @@
56773
56790
  _getMode() {
56774
56791
  return this._option.mode || exports.RenderModeEnum['desktop-browser'];
56775
56792
  }
56793
+ isAnimationEnable() {
56794
+ if ('animation' in this._option) {
56795
+ return !!this._option.animation;
56796
+ }
56797
+ return this._spec.animation !== false;
56798
+ }
56776
56799
  _getChartOption(type) {
56777
56800
  return {
56778
56801
  type,
@@ -56786,7 +56809,6 @@
56786
56809
  modeParams: this._option.modeParams,
56787
56810
  getCompiler: () => this._compiler,
56788
56811
  viewBox: this._viewBox,
56789
- animation: this._option.animation,
56790
56812
  getTheme: this.getTheme,
56791
56813
  getSpecInfo: () => { var _a; return (_a = this._specInfo) !== null && _a !== void 0 ? _a : {}; },
56792
56814
  layout: this._option.layout,
@@ -56910,7 +56932,7 @@
56910
56932
  });
56911
56933
  };
56912
56934
 
56913
- const version = "2.0.2";
56935
+ const version = "2.0.3-alpha.1";
56914
56936
 
56915
56937
  const addVChartProperty = (data, op) => {
56916
56938
  const context = op.beforeCall();
@@ -57674,7 +57696,7 @@
57674
57696
  if (seriesSpec.animation === false) {
57675
57697
  return false;
57676
57698
  }
57677
- if (((_b = (_a = series.getChart()) === null || _a === void 0 ? void 0 : _a.getOption()) === null || _b === void 0 ? void 0 : _b.animation) === false) {
57699
+ if (((_b = (_a = series.getOption()) === null || _a === void 0 ? void 0 : _a.globalInstance) === null || _b === void 0 ? void 0 : _b.isAnimationEnable()) === false) {
57678
57700
  return false;
57679
57701
  }
57680
57702
  let animationThreshold = (_c = seriesSpec.animationThreshold) !== null && _c !== void 0 ? _c : Number.MAX_SAFE_INTEGER;
@@ -57758,7 +57780,7 @@
57758
57780
  if (labelSpec && labelSpec.visible) {
57759
57781
  const { animation = true, animationUpdate: labelAnimationUpdate = true, animationEnter: labelAnimationEnter = true, animationExit: labelAnimationExit = true } = labelSpec;
57760
57782
  const { animationUpdate = true, animationEnter = true, animationExit = true } = spec;
57761
- const animationEnabled = (_c = (_b = (_a = this._option) === null || _a === void 0 ? void 0 : _a.animation) !== null && _b !== void 0 ? _b : spec.animation) !== null && _c !== void 0 ? _c : labelSpec.animation;
57783
+ const animationEnabled = (_c = (_b = (_a = this._option.globalInstance) === null || _a === void 0 ? void 0 : _a.isAnimationEnable()) !== null && _b !== void 0 ? _b : spec.animation) !== null && _c !== void 0 ? _c : labelSpec.animation;
57762
57784
  const labelAnimationEnabled = !!animationEnabled && !!hasAnimation;
57763
57785
  this.addLabelSpec(isFunction$1(markName) ? markName(labelSpec) : markName, Object.assign(Object.assign({}, labelSpec), { animation: labelAnimationEnabled ? animation : false, animationUpdate: labelAnimationEnabled && animationUpdate && labelAnimationUpdate ? animationUpdate : false, animationEnter: labelAnimationEnabled && animationEnter && labelAnimationEnter ? animationEnter : false, animationExit: labelAnimationEnabled && animationEnter && labelAnimationExit ? animationExit : false, getStyleHandler: (series) => { var _a; return (_a = series[styleHandlerName]) === null || _a === void 0 ? void 0 : _a.bind(series); } }), head);
57764
57786
  }
@@ -61206,7 +61228,7 @@
61206
61228
  return [(_a = this._axisMark) === null || _a === void 0 ? void 0 : _a.getProduct(), (_b = this._gridMark) === null || _b === void 0 ? void 0 : _b.getProduct()].filter(isValid$1);
61207
61229
  }
61208
61230
  created() {
61209
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
61231
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
61210
61232
  super.created();
61211
61233
  this.setSeriesAndRegionsFromSpec();
61212
61234
  this.initEvent();
@@ -61243,15 +61265,15 @@
61243
61265
  this._marks.addMark(gridMark);
61244
61266
  this._gridMark = gridMark;
61245
61267
  }
61246
- if (this._option.animation !== false &&
61268
+ if (((_h = this._option.globalInstance) === null || _h === void 0 ? void 0 : _h.isAnimationEnable()) &&
61247
61269
  get$1(this._option.getChart().getSpec(), 'animation') !== false &&
61248
61270
  this._spec.animation === true) {
61249
- const axisAnimateConfig = animationConfig((_h = Factory.getAnimationInKey('axis')) === null || _h === void 0 ? void 0 : _h(), {
61250
- appear: (_k = (_j = this._spec.animationAppear) !== null && _j !== void 0 ? _j : get$1(this._option.getChart().getSpec(), 'animationAppear.axis')) !== null && _k !== void 0 ? _k : get$1(this._option.getChart().getSpec(), 'animationAppear'),
61251
- disappear: (_m = (_l = this._spec.animationDisappear) !== null && _l !== void 0 ? _l : get$1(this._option.getChart().getSpec(), 'animationDisappear.axis')) !== null && _m !== void 0 ? _m : get$1(this._option.getChart().getSpec(), 'animationDisappear'),
61252
- enter: (_p = (_o = this._spec.animationEnter) !== null && _o !== void 0 ? _o : get$1(this._option.getChart().getSpec(), 'animationEnter.axis')) !== null && _p !== void 0 ? _p : get$1(this._option.getChart().getSpec(), 'animationEnter'),
61253
- exit: (_r = (_q = this._spec.animationExit) !== null && _q !== void 0 ? _q : get$1(this._option.getChart().getSpec(), 'animationExit.axis')) !== null && _r !== void 0 ? _r : get$1(this._option.getChart().getSpec(), 'animationExit'),
61254
- update: (_t = (_s = this._spec.animationUpdate) !== null && _s !== void 0 ? _s : get$1(this._option.getChart().getSpec(), 'animationUpdate.axis')) !== null && _t !== void 0 ? _t : get$1(this._option.getChart().getSpec(), 'animationUpdate')
61271
+ const axisAnimateConfig = animationConfig((_j = Factory.getAnimationInKey('axis')) === null || _j === void 0 ? void 0 : _j(), {
61272
+ appear: (_l = (_k = this._spec.animationAppear) !== null && _k !== void 0 ? _k : get$1(this._option.getChart().getSpec(), 'animationAppear.axis')) !== null && _l !== void 0 ? _l : get$1(this._option.getChart().getSpec(), 'animationAppear'),
61273
+ disappear: (_o = (_m = this._spec.animationDisappear) !== null && _m !== void 0 ? _m : get$1(this._option.getChart().getSpec(), 'animationDisappear.axis')) !== null && _o !== void 0 ? _o : get$1(this._option.getChart().getSpec(), 'animationDisappear'),
61274
+ enter: (_q = (_p = this._spec.animationEnter) !== null && _p !== void 0 ? _p : get$1(this._option.getChart().getSpec(), 'animationEnter.axis')) !== null && _q !== void 0 ? _q : get$1(this._option.getChart().getSpec(), 'animationEnter'),
61275
+ exit: (_s = (_r = this._spec.animationExit) !== null && _r !== void 0 ? _r : get$1(this._option.getChart().getSpec(), 'animationExit.axis')) !== null && _s !== void 0 ? _s : get$1(this._option.getChart().getSpec(), 'animationExit'),
61276
+ update: (_u = (_t = this._spec.animationUpdate) !== null && _t !== void 0 ? _t : get$1(this._option.getChart().getSpec(), 'animationUpdate.axis')) !== null && _u !== void 0 ? _u : get$1(this._option.getChart().getSpec(), 'animationUpdate')
61255
61277
  });
61256
61278
  if (axisAnimateConfig.enter) {
61257
61279
  axisAnimateConfig.update[0].customParameters = {
@@ -65794,15 +65816,15 @@
65794
65816
  return true;
65795
65817
  }
65796
65818
  _getDefaultSeriesSpec(chartSpec, pickKeys, pickKeys2) {
65797
- var _a, _b, _c, _d;
65819
+ var _a, _b, _c, _d, _e;
65798
65820
  const series = {
65799
65821
  dataKey: chartSpec.dataKey,
65800
65822
  hover: chartSpec.hover,
65801
65823
  select: chartSpec.select,
65802
65824
  label: chartSpec.label,
65803
65825
  seriesStyle: chartSpec.seriesStyle,
65804
- animation: (_a = chartSpec.animation) !== null && _a !== void 0 ? _a : this._option.animation,
65805
- animationThreshold: (_b = chartSpec.animationThreshold) !== null && _b !== void 0 ? _b : (_d = (_c = this._option).getTheme) === null || _d === void 0 ? void 0 : _d.call(_c, 'animationThreshold'),
65826
+ animation: (_a = chartSpec.animation) !== null && _a !== void 0 ? _a : (_b = this._option.globalInstance) === null || _b === void 0 ? void 0 : _b.isAnimationEnable(),
65827
+ animationThreshold: (_c = chartSpec.animationThreshold) !== null && _c !== void 0 ? _c : (_e = (_d = this._option).getTheme) === null || _e === void 0 ? void 0 : _e.call(_d, 'animationThreshold'),
65806
65828
  animationAppear: chartSpec.animationAppear,
65807
65829
  animationDisappear: chartSpec.animationDisappear,
65808
65830
  animationEnter: chartSpec.animationEnter,
@@ -76926,6 +76948,72 @@
76926
76948
  isNil$1(node.value) && ((null === (_a = node.children) || void 0 === _a ? void 0 : _a.length) ? node.value = calculateNodeValue(node.children) : node.value = 0), sum += Math.abs(node.value);
76927
76949
  }), sum;
76928
76950
  };
76951
+ function makeHierarchicNodes(originalNodes, nodeKeyFunc, nodes = [], nodeMap = {}, originalLinks) {
76952
+ calculateNodeValue(originalNodes);
76953
+ const doSubTree = (subTree, depth, parents) => {
76954
+ subTree.forEach((node, index) => {
76955
+ const nodeKey = nodeKeyFunc ? nodeKeyFunc(node) : parents ? `${parents[parents.length - 1].key}-${index}` : `${depth}-${index}`,
76956
+ nodeValue = isNil$1(node.value) ? 0 : toValidNumber$1(node.value);
76957
+ if (nodeMap[nodeKey]) nodeMap[nodeKey].value = void 0;else {
76958
+ const nodeElement = {
76959
+ depth: depth,
76960
+ datum: node,
76961
+ index: index,
76962
+ key: nodeKey,
76963
+ value: nodeValue,
76964
+ sourceLinks: [],
76965
+ targetLinks: []
76966
+ };
76967
+ nodeMap[nodeKey] = nodeElement, nodes.push(nodeElement);
76968
+ }
76969
+ parents && originalLinks && originalLinks.push({
76970
+ source: parents[parents.length - 1].key,
76971
+ target: nodeKey,
76972
+ value: nodeValue,
76973
+ parents: parents
76974
+ }), node.children && node.children.length && doSubTree(node.children, depth + 1, parents ? parents.concat([nodeMap[nodeKey]]) : [nodeMap[nodeKey]]);
76975
+ });
76976
+ };
76977
+ return doSubTree(originalNodes, 0, null), nodes;
76978
+ }
76979
+ function computeHierarchicNodeLinks(originalNodes, nodeKeyFunc) {
76980
+ const nodes = [],
76981
+ links = [],
76982
+ nodeMap = {},
76983
+ linkMap = {},
76984
+ originalLinks = [];
76985
+ return makeHierarchicNodes(originalNodes, nodeKeyFunc, nodes, nodeMap, originalLinks), originalLinks.forEach((link, index) => {
76986
+ const key = `${link.source}-${link.target}`,
76987
+ linkDatum = pickWithout(link, ["parents"]);
76988
+ if (linkDatum.parents = link.parents.map(node => pickWithout(node, ["sourceLinks", "targetLinks"])), linkMap[key]) return linkMap[key].value += toValidNumber$1(link.value), void linkMap[key].datum.push(linkDatum);
76989
+ const linkElement = {
76990
+ index: index,
76991
+ key: `${link.source}-${link.target}`,
76992
+ source: link.source,
76993
+ target: link.target,
76994
+ datum: [linkDatum],
76995
+ value: link.value,
76996
+ parents: link.parents.map(parent => parent.key)
76997
+ };
76998
+ links.push(linkElement), nodeMap[link.source].sourceLinks.push(linkElement), nodeMap[link.target].targetLinks.push(linkElement), linkMap[key] = linkElement;
76999
+ }), {
77000
+ nodes: nodes,
77001
+ links: links,
77002
+ nodeMap: nodeMap
77003
+ };
77004
+ }
77005
+ function computeNodeValues(nodes) {
77006
+ for (let i = 0, len = nodes.length; i < len; i++) {
77007
+ const node = nodes[i];
77008
+ node.value = Math.max(isNil$1(node.value) ? 0 : toValidNumber$1(node.value), node.sourceLinks.reduce((sum, link) => {
77009
+ var _a;
77010
+ return sum + (null !== (_a = toValidNumber$1(link.value)) && void 0 !== _a ? _a : 0);
77011
+ }, 0), node.targetLinks.reduce((sum, link) => {
77012
+ var _a;
77013
+ return sum + (null !== (_a = toValidNumber$1(link.value)) && void 0 !== _a ? _a : 0);
77014
+ }, 0));
77015
+ }
77016
+ }
76929
77017
 
76930
77018
  function left(node) {
76931
77019
  return node.depth;
@@ -77059,55 +77147,7 @@
77059
77147
  };
77060
77148
  }
77061
77149
  computeHierarchicNodeLinks(originalNodes) {
77062
- const nodes = [],
77063
- links = [],
77064
- nodeMap = {},
77065
- linkMap = {},
77066
- originalLinks = [];
77067
- calculateNodeValue(originalNodes);
77068
- const doSubTree = (subTree, depth, parents) => {
77069
- subTree.forEach((node, index) => {
77070
- const nodeKey = this._getNodeKey ? this._getNodeKey(node) : parents ? `${parents[parents.length - 1].key}-${index}` : `${depth}-${index}`,
77071
- nodeValue = isNil$1(node.value) ? 0 : toValidNumber$1(node.value);
77072
- if (nodeMap[nodeKey]) nodeMap[nodeKey].value = void 0;else {
77073
- const nodeElement = {
77074
- depth: depth,
77075
- datum: node,
77076
- index: index,
77077
- key: nodeKey,
77078
- value: nodeValue,
77079
- sourceLinks: [],
77080
- targetLinks: []
77081
- };
77082
- nodeMap[nodeKey] = nodeElement, nodes.push(nodeElement);
77083
- }
77084
- parents && originalLinks.push({
77085
- source: parents[parents.length - 1].key,
77086
- target: nodeKey,
77087
- value: nodeValue,
77088
- parents: parents
77089
- }), node.children && node.children.length && doSubTree(node.children, depth + 1, parents ? parents.concat([nodeMap[nodeKey]]) : [nodeMap[nodeKey]]);
77090
- });
77091
- };
77092
- return doSubTree(originalNodes, 0, null), originalLinks.forEach((link, index) => {
77093
- const key = `${link.source}-${link.target}`,
77094
- linkDatum = pickWithout(link, ["parents"]);
77095
- if (linkDatum.parents = link.parents.map(node => pickWithout(node, ["sourceLinks", "targetLinks"])), linkMap[key]) return linkMap[key].value += toValidNumber$1(link.value), void linkMap[key].datum.push(linkDatum);
77096
- const linkElement = {
77097
- index: index,
77098
- key: `${link.source}-${link.target}`,
77099
- source: link.source,
77100
- target: link.target,
77101
- datum: [linkDatum],
77102
- value: link.value,
77103
- parents: link.parents.map(parent => parent.key)
77104
- };
77105
- links.push(linkElement), nodeMap[link.source].sourceLinks.push(linkElement), nodeMap[link.target].targetLinks.push(linkElement), linkMap[key] = linkElement;
77106
- }), {
77107
- nodes: nodes,
77108
- links: links,
77109
- nodeMap: nodeMap
77110
- };
77150
+ return computeHierarchicNodeLinks(originalNodes, this._getNodeKey);
77111
77151
  }
77112
77152
  computeSourceTargetNodeLinks(data) {
77113
77153
  const nodes = [],
@@ -77177,16 +77217,7 @@
77177
77217
  };
77178
77218
  }
77179
77219
  computeNodeValues(nodes) {
77180
- for (let i = 0, len = nodes.length; i < len; i++) {
77181
- const node = nodes[i];
77182
- node.value = Math.max(isNil$1(node.value) ? 0 : toValidNumber$1(node.value), node.sourceLinks.reduce((sum, link) => {
77183
- var _a;
77184
- return sum + (null !== (_a = toValidNumber$1(link.value)) && void 0 !== _a ? _a : 0);
77185
- }, 0), node.targetLinks.reduce((sum, link) => {
77186
- var _a;
77187
- return sum + (null !== (_a = toValidNumber$1(link.value)) && void 0 !== _a ? _a : 0);
77188
- }, 0));
77189
- }
77220
+ return computeNodeValues(nodes);
77190
77221
  }
77191
77222
  computeNodeDepths(nodes) {
77192
77223
  var _a;
@@ -78251,7 +78282,7 @@
78251
78282
  return ret;
78252
78283
  }
78253
78284
 
78254
- function scaleSolution(solution, width, height, x0, y0) {
78285
+ function scaleSolution(solution, width, height, x0, y0, hasEmptySet = !1) {
78255
78286
  width = Math.max(width, 1), height = Math.max(height, 1);
78256
78287
  const circles = [],
78257
78288
  setIds = [];
@@ -78261,9 +78292,20 @@
78261
78292
  yRange = bounds.yRange;
78262
78293
  if (xRange.max === xRange.min || yRange.max === yRange.min) return console.log("not scaling solution: zero size detected"), solution;
78263
78294
  const xScaling = width / (xRange.max - xRange.min),
78264
- yScaling = height / (yRange.max - yRange.min),
78265
- scaling = Math.min(yScaling, xScaling),
78266
- xOffset = (width - (xRange.max - xRange.min) * scaling) / 2,
78295
+ yScaling = height / (yRange.max - yRange.min);
78296
+ let scaling;
78297
+ if (hasEmptySet) {
78298
+ const containerRadius = Math.min(width, height) / 2,
78299
+ centerX = (xRange.min + xRange.max) / 2,
78300
+ centerY = (yRange.min + yRange.max) / 2;
78301
+ let diagramRadius = 0;
78302
+ for (const circle of circles) {
78303
+ const maxDistanceForThisCircle = Math.sqrt(Math.pow(circle.x - centerX, 2) + Math.pow(circle.y - centerY, 2)) + circle.radius;
78304
+ diagramRadius = Math.max(diagramRadius, maxDistanceForThisCircle);
78305
+ }
78306
+ scaling = containerRadius / diagramRadius;
78307
+ } else scaling = Math.min(yScaling, xScaling);
78308
+ const xOffset = (width - (xRange.max - xRange.min) * scaling) / 2,
78267
78309
  yOffset = (height - (yRange.max - yRange.min) * scaling) / 2,
78268
78310
  scaled = {};
78269
78311
  for (let i = 0; i < circles.length; ++i) {
@@ -78478,21 +78520,39 @@
78478
78520
  setField = "sets",
78479
78521
  valueField = "size",
78480
78522
  orientation = Math.PI / 2,
78481
- orientationOrder = null
78523
+ orientationOrder = null,
78524
+ emptySetKey: emptySetKey
78482
78525
  } = options;
78483
78526
  let circles = {},
78484
78527
  textCenters = {};
78485
- if (upstreamData.length > 0) {
78486
- const vennData = upstreamData.map(area => ({
78528
+ const hasEmptySet = upstreamData.some(area => {
78529
+ const sets = array(area[setField]);
78530
+ return !sets || 0 === sets.length;
78531
+ }),
78532
+ nonEmptyData = hasEmptySet ? upstreamData.filter(area => !isEmpty(array(area[setField]))) : upstreamData;
78533
+ if (nonEmptyData.length > 0) {
78534
+ const vennData = nonEmptyData.map(area => ({
78487
78535
  sets: array(area[setField]),
78488
78536
  size: area[valueField]
78489
78537
  }));
78490
78538
  let solution = venn$1(vennData, options);
78491
- solution = normalizeSolution(solution, orientation, orientationOrder), circles = scaleSolution(solution, x1 - x0, y1 - y0, x0, y0), textCenters = computeTextCenters(circles, vennData);
78539
+ solution = normalizeSolution(solution, orientation, orientationOrder), circles = scaleSolution(solution, x1 - x0, y1 - y0, x0, y0, hasEmptySet), textCenters = computeTextCenters(circles, vennData);
78492
78540
  }
78493
78541
  return upstreamData.map(area => {
78494
- const sets = array(area[setField]),
78495
- key = sets.toString(),
78542
+ const sets = array(area[setField]);
78543
+ if (!sets || 0 === sets.length) return Object.assign(Object.assign({}, area), {
78544
+ datum: area,
78545
+ sets: sets,
78546
+ key: emptySetKey || "others",
78547
+ size: area[valueField],
78548
+ labelX: void 0,
78549
+ labelY: void 0,
78550
+ type: "circle",
78551
+ x: x0 + (x1 - x0) / 2,
78552
+ y: y0 + (y1 - y0) / 2,
78553
+ radius: Math.min(x1 - x0, y1 - y0) / 2
78554
+ });
78555
+ const key = sets.toString(),
78496
78556
  textCenter = textCenters[key],
78497
78557
  basicDatum = Object.assign(Object.assign({}, area), {
78498
78558
  datum: area,
@@ -82876,380 +82936,6 @@
82876
82936
  }
82877
82937
  }
82878
82938
  };
82879
- this._handleClearEmpty = () => {
82880
- var _a, _b;
82881
- if (!this._needClear) {
82882
- return;
82883
- }
82884
- const allNodeElements = (_a = this._nodeMark) === null || _a === void 0 ? void 0 : _a.getGraphics();
82885
- if (!allNodeElements || !allNodeElements.length) {
82886
- return;
82887
- }
82888
- const allLinkElements = (_b = this._linkMark) === null || _b === void 0 ? void 0 : _b.getGraphics();
82889
- if (!allLinkElements || !allLinkElements.length) {
82890
- return;
82891
- }
82892
- allNodeElements.forEach(el => {
82893
- el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
82894
- el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
82895
- });
82896
- allLinkElements.forEach(el => {
82897
- el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
82898
- el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
82899
- });
82900
- this._needClear = false;
82901
- };
82902
- this._handleNodeAdjacencyClick = (graphic) => {
82903
- const nodeDatum = getDatumOfGraphic(graphic);
82904
- const highlightNodes = [nodeDatum.key];
82905
- if (this._linkMark) {
82906
- const allLinkElements = this._linkMark.getGraphics();
82907
- if (!allLinkElements || !allLinkElements.length) {
82908
- return;
82909
- }
82910
- allLinkElements.forEach((linkEl, i) => {
82911
- const linkDatum = getDatumOfGraphic(linkEl);
82912
- if (linkDatum.source === nodeDatum.key) {
82913
- if (!highlightNodes.includes(linkDatum.target)) {
82914
- highlightNodes.push(linkDatum.target);
82915
- }
82916
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
82917
- linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true);
82918
- }
82919
- else if (linkDatum.target === nodeDatum.key) {
82920
- if (!highlightNodes.includes(linkDatum.source)) {
82921
- highlightNodes.push(linkDatum.source);
82922
- }
82923
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
82924
- linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true);
82925
- }
82926
- else {
82927
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
82928
- linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);
82929
- }
82930
- });
82931
- }
82932
- if (this._nodeMark) {
82933
- this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
82934
- }
82935
- this._needClear = true;
82936
- };
82937
- this._handleLinkAdjacencyClick = (graphic) => {
82938
- const curLinkDatum = getDatumOfGraphic(graphic);
82939
- const highlightNodes = [curLinkDatum.source, curLinkDatum.target];
82940
- if (this._linkMark) {
82941
- const allLinkElements = this._linkMark.getGraphics();
82942
- if (!allLinkElements || !allLinkElements.length) {
82943
- return;
82944
- }
82945
- allLinkElements.forEach(linkEl => {
82946
- if (linkEl === graphic) {
82947
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
82948
- addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });
82949
- }
82950
- else {
82951
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
82952
- linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);
82953
- }
82954
- });
82955
- }
82956
- if (this._nodeMark) {
82957
- this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
82958
- }
82959
- this._needClear = true;
82960
- };
82961
- this._handleNodeRelatedClick = (graphic) => {
82962
- var _a;
82963
- const nodeDatum = getDatumOfGraphic(graphic);
82964
- const allNodeElements = this._nodeMark.getGraphics();
82965
- if (!allNodeElements || !allNodeElements.length) {
82966
- return;
82967
- }
82968
- const allLinkElements = this._linkMark.getGraphics();
82969
- if (!allLinkElements || !allLinkElements.length) {
82970
- return;
82971
- }
82972
- const father = ((_a = getDatumOfGraphic(allLinkElements[0])) === null || _a === void 0 ? void 0 : _a.parents) ? 'parents' : 'source';
82973
- if (father === 'source') {
82974
- const highlightNodes = [nodeDatum.key];
82975
- const highlightLinks = [];
82976
- allLinkElements.forEach((linkEl, i) => {
82977
- var _a, _b, _c, _d;
82978
- const linkDatum = getDatumOfGraphic(linkEl);
82979
- const father = (linkDatum === null || linkDatum === void 0 ? void 0 : linkDatum.parents) ? 'parents' : 'source';
82980
- if (array(linkDatum[father]).includes(nodeDatum.key)) {
82981
- if (!highlightLinks.includes((_a = linkDatum.key) !== null && _a !== void 0 ? _a : linkDatum.index)) {
82982
- highlightLinks.push((_b = linkDatum.key) !== null && _b !== void 0 ? _b : linkDatum.index);
82983
- }
82984
- if (!highlightNodes.includes(linkDatum.source)) {
82985
- highlightNodes.push(linkDatum.source);
82986
- }
82987
- if (!highlightNodes.includes(linkDatum.target)) {
82988
- highlightNodes.push(linkDatum.target);
82989
- const targetNode = allNodeElements.find(nodeElement => {
82990
- return nodeElement.data[0].key === linkDatum.target;
82991
- });
82992
- let targetNodeSourceLinks = targetNode.data[0].sourceLinks;
82993
- while ((targetNodeSourceLinks === null || targetNodeSourceLinks === void 0 ? void 0 : targetNodeSourceLinks.length) > 0) {
82994
- const newTargetNodeSourceLinks = [];
82995
- targetNodeSourceLinks.forEach((targetNodeSourceLinkDatum) => {
82996
- var _a, _b;
82997
- if (!highlightLinks.includes((_a = targetNodeSourceLinkDatum.key) !== null && _a !== void 0 ? _a : targetNodeSourceLinkDatum.index)) {
82998
- highlightLinks.push((_b = targetNodeSourceLinkDatum.key) !== null && _b !== void 0 ? _b : targetNodeSourceLinkDatum.index);
82999
- if (!highlightNodes.includes(targetNodeSourceLinkDatum.target)) {
83000
- highlightNodes.push(targetNodeSourceLinkDatum.target);
83001
- const sourceNodeTemp = allNodeElements.find(nodeElement => {
83002
- return nodeElement.data[0].key === targetNodeSourceLinkDatum.target;
83003
- });
83004
- newTargetNodeSourceLinks.push(sourceNodeTemp.data[0].targetLinks);
83005
- }
83006
- else {
83007
- return;
83008
- }
83009
- }
83010
- else {
83011
- return;
83012
- }
83013
- });
83014
- targetNodeSourceLinks = newTargetNodeSourceLinks;
83015
- return;
83016
- }
83017
- }
83018
- }
83019
- else if (linkDatum.target === nodeDatum.key) {
83020
- if (!highlightLinks.includes((_c = linkDatum.key) !== null && _c !== void 0 ? _c : linkDatum.index)) {
83021
- highlightLinks.push((_d = linkDatum.key) !== null && _d !== void 0 ? _d : linkDatum.index);
83022
- }
83023
- if (!highlightNodes.includes(linkDatum.source)) {
83024
- highlightNodes.push(linkDatum.source);
83025
- const sourceNode = allNodeElements.find(nodeElement => {
83026
- return nodeElement.data[0].key === linkDatum.source;
83027
- });
83028
- let sourceNodeTargetLinks = sourceNode.data[0].targetLinks;
83029
- while ((sourceNodeTargetLinks === null || sourceNodeTargetLinks === void 0 ? void 0 : sourceNodeTargetLinks.length) > 0) {
83030
- const newSourceNodeTargetLinks = [];
83031
- sourceNodeTargetLinks.forEach((sourceNodeTargetLinkDatum) => {
83032
- var _a, _b;
83033
- if (!highlightLinks.includes((_a = sourceNodeTargetLinkDatum.key) !== null && _a !== void 0 ? _a : sourceNodeTargetLinkDatum.index)) {
83034
- highlightLinks.push((_b = sourceNodeTargetLinkDatum.key) !== null && _b !== void 0 ? _b : sourceNodeTargetLinkDatum.index);
83035
- if (!highlightNodes.includes(sourceNodeTargetLinkDatum.source)) {
83036
- highlightNodes.push(sourceNodeTargetLinkDatum.source);
83037
- const sourceNodeTemp = allNodeElements.find(nodeElement => {
83038
- return nodeElement.data[0].key === sourceNodeTargetLinkDatum.source;
83039
- });
83040
- newSourceNodeTargetLinks.push(sourceNodeTemp.data[0].targetLinks);
83041
- }
83042
- else {
83043
- return;
83044
- }
83045
- }
83046
- else {
83047
- return;
83048
- }
83049
- });
83050
- sourceNodeTargetLinks = newSourceNodeTargetLinks;
83051
- return;
83052
- }
83053
- }
83054
- }
83055
- });
83056
- if (this._linkMark) {
83057
- const allLinkElements = this._linkMark.getGraphics();
83058
- if (!allLinkElements || !allLinkElements.length) {
83059
- return;
83060
- }
83061
- allLinkElements.forEach((linkEl, i) => {
83062
- var _a;
83063
- const linkDatum = getDatumOfGraphic(linkEl);
83064
- if (highlightLinks.includes((_a = linkDatum.key) !== null && _a !== void 0 ? _a : linkDatum.index)) {
83065
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83066
- linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true);
83067
- }
83068
- else {
83069
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83070
- linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);
83071
- }
83072
- });
83073
- }
83074
- if (this._nodeMark) {
83075
- this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
83076
- }
83077
- }
83078
- else {
83079
- const highlightNodes = [nodeDatum.key];
83080
- const upstreamLinks = nodeDatum.targetLinks.reduce((res, link) => {
83081
- const dividedLinks = array(link.datum);
83082
- dividedLinks.forEach(dividedLink => {
83083
- const parents = dividedLink.parents;
83084
- const len = parents.length;
83085
- for (let i = 0; i < len; i++) {
83086
- const source = parents[i].key;
83087
- const target = parents[i + 1] ? parents[i + 1].key : nodeDatum.key;
83088
- const value = dividedLink.value;
83089
- const existingItem = res.find(item => item.source === source && item.target === target);
83090
- if (existingItem) {
83091
- existingItem.value += value;
83092
- }
83093
- else {
83094
- res.push({ source, target, value });
83095
- }
83096
- }
83097
- });
83098
- return res;
83099
- }, []);
83100
- allLinkElements.forEach((linkEl, i) => {
83101
- const linkDatum = getDatumOfGraphic(linkEl);
83102
- const originalDatum = linkDatum.datum;
83103
- const selectedDatum = originalDatum
83104
- ? originalDatum.filter((entry) => entry[father].some((par) => par.key === nodeDatum.key))
83105
- : null;
83106
- const upSelectedLink = upstreamLinks.find((upLink) => upLink.source === linkDatum.source && upLink.target === linkDatum.target);
83107
- if (selectedDatum && selectedDatum.length) {
83108
- if (!highlightNodes.includes(linkDatum.source)) {
83109
- highlightNodes.push(linkDatum.source);
83110
- }
83111
- if (!highlightNodes.includes(linkDatum.target)) {
83112
- highlightNodes.push(linkDatum.target);
83113
- }
83114
- const val = selectedDatum.reduce((sum, d) => {
83115
- return (sum += d.value);
83116
- }, 0);
83117
- const ratio = val / linkDatum.value;
83118
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83119
- addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio });
83120
- return;
83121
- }
83122
- if (upSelectedLink) {
83123
- if (!highlightNodes.includes(linkDatum.source)) {
83124
- highlightNodes.push(linkDatum.source);
83125
- }
83126
- if (!highlightNodes.includes(linkDatum.target)) {
83127
- highlightNodes.push(linkDatum.target);
83128
- }
83129
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83130
- addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
83131
- ratio: upSelectedLink.value / linkDatum.value
83132
- });
83133
- return;
83134
- }
83135
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83136
- linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);
83137
- return;
83138
- });
83139
- if (this._nodeMark) {
83140
- this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
83141
- }
83142
- }
83143
- this._needClear = true;
83144
- };
83145
- this._handleLinkRelatedClick = (graphic) => {
83146
- const allNodeElements = this._nodeMark.getGraphics();
83147
- if (!allNodeElements || !allNodeElements.length) {
83148
- return;
83149
- }
83150
- const allLinkElements = this._linkMark.getGraphics();
83151
- if (!allLinkElements || !allLinkElements.length) {
83152
- return;
83153
- }
83154
- const father = getDatumOfGraphic(graphic) ? 'parents' : 'source';
83155
- if (father === 'source') {
83156
- if (this._linkMark) {
83157
- allLinkElements.forEach(linkEl => {
83158
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83159
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83160
- });
83161
- }
83162
- if (this._nodeMark) {
83163
- allNodeElements.forEach(el => {
83164
- el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83165
- el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83166
- });
83167
- }
83168
- }
83169
- else {
83170
- const curLinkDatum = getDatumOfGraphic(graphic);
83171
- const highlightNodes = [curLinkDatum.source, curLinkDatum.target];
83172
- const upstreamLinks = [];
83173
- const dividedLinks = array(curLinkDatum.datum);
83174
- dividedLinks.forEach(dividedLink => {
83175
- const parents = dividedLink.parents;
83176
- const len = parents.length;
83177
- for (let i = 0; i < len - 1; i++) {
83178
- const source = parents[i].key;
83179
- const target = parents[i + 1].key;
83180
- const value = dividedLink.value;
83181
- const existingItem = upstreamLinks.find(item => item.source === source && item.target === target);
83182
- upstreamLinks.push({
83183
- source: parents[i].key,
83184
- target: parents[i + 1].key,
83185
- value: dividedLink.value
83186
- });
83187
- if (existingItem) {
83188
- existingItem.value += value;
83189
- }
83190
- else {
83191
- upstreamLinks.push({ source, target, value });
83192
- }
83193
- }
83194
- });
83195
- allLinkElements.forEach(linkEl => {
83196
- const linkDatum = getDatumOfGraphic(linkEl);
83197
- const originalDatum = linkDatum.datum;
83198
- if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) {
83199
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83200
- addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });
83201
- return;
83202
- }
83203
- const selectedDatum = originalDatum
83204
- ? originalDatum.filter((entry) => {
83205
- const parentKeysList = entry.parents.map((item) => item.key);
83206
- return parentKeysList.includes(curLinkDatum.source) && parentKeysList.includes(curLinkDatum.target);
83207
- })
83208
- : null;
83209
- if (selectedDatum && selectedDatum.length) {
83210
- if (!highlightNodes.includes(linkDatum.source)) {
83211
- highlightNodes.push(linkDatum.source);
83212
- }
83213
- if (!highlightNodes.includes(linkDatum.target)) {
83214
- highlightNodes.push(linkDatum.target);
83215
- }
83216
- const val = selectedDatum
83217
- .filter((entry) => {
83218
- return entry.parents.some((par, index) => {
83219
- var _a;
83220
- return par.key === curLinkDatum.source && ((_a = entry.parents[index + 1]) === null || _a === void 0 ? void 0 : _a.key) === curLinkDatum.target;
83221
- });
83222
- })
83223
- .reduce((sum, d) => {
83224
- return (sum += d.value);
83225
- }, 0);
83226
- const ratio = val / linkDatum.value;
83227
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83228
- addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio });
83229
- return;
83230
- }
83231
- const upSelectedLink = upstreamLinks.find((upLink) => upLink.source === linkDatum.source && upLink.target === linkDatum.target);
83232
- if (upSelectedLink) {
83233
- if (!highlightNodes.includes(linkDatum.source)) {
83234
- highlightNodes.push(linkDatum.source);
83235
- }
83236
- if (!highlightNodes.includes(linkDatum.target)) {
83237
- highlightNodes.push(linkDatum.target);
83238
- }
83239
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83240
- addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
83241
- ratio: upSelectedLink.value / linkDatum.value
83242
- });
83243
- return;
83244
- }
83245
- linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83246
- linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);
83247
- return;
83248
- });
83249
- this._highLightElements(allNodeElements, highlightNodes);
83250
- }
83251
- this._needClear = true;
83252
- };
83253
82939
  }
83254
82940
  get direction() {
83255
82941
  var _a;
@@ -83539,6 +83225,380 @@
83539
83225
  linksSeriesDataUpdate() {
83540
83226
  this._linkMark.getData().updateData();
83541
83227
  }
83228
+ _handleClearEmpty() {
83229
+ var _a, _b;
83230
+ if (!this._needClear) {
83231
+ return;
83232
+ }
83233
+ const allNodeElements = (_a = this._nodeMark) === null || _a === void 0 ? void 0 : _a.getGraphics();
83234
+ if (!allNodeElements || !allNodeElements.length) {
83235
+ return;
83236
+ }
83237
+ const allLinkElements = (_b = this._linkMark) === null || _b === void 0 ? void 0 : _b.getGraphics();
83238
+ if (!allLinkElements || !allLinkElements.length) {
83239
+ return;
83240
+ }
83241
+ allNodeElements.forEach(el => {
83242
+ el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83243
+ el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83244
+ });
83245
+ allLinkElements.forEach(el => {
83246
+ el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83247
+ el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83248
+ });
83249
+ this._needClear = false;
83250
+ }
83251
+ _handleNodeAdjacencyClick(graphic) {
83252
+ const nodeDatum = getDatumOfGraphic(graphic);
83253
+ const highlightNodes = [nodeDatum.key];
83254
+ if (this._linkMark) {
83255
+ const allLinkElements = this._linkMark.getGraphics();
83256
+ if (!allLinkElements || !allLinkElements.length) {
83257
+ return;
83258
+ }
83259
+ allLinkElements.forEach((linkEl, i) => {
83260
+ const linkDatum = getDatumOfGraphic(linkEl);
83261
+ if (linkDatum.source === nodeDatum.key) {
83262
+ if (!highlightNodes.includes(linkDatum.target)) {
83263
+ highlightNodes.push(linkDatum.target);
83264
+ }
83265
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83266
+ linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true);
83267
+ }
83268
+ else if (linkDatum.target === nodeDatum.key) {
83269
+ if (!highlightNodes.includes(linkDatum.source)) {
83270
+ highlightNodes.push(linkDatum.source);
83271
+ }
83272
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83273
+ linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true);
83274
+ }
83275
+ else {
83276
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83277
+ linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);
83278
+ }
83279
+ });
83280
+ }
83281
+ if (this._nodeMark) {
83282
+ this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
83283
+ }
83284
+ this._needClear = true;
83285
+ }
83286
+ _handleLinkAdjacencyClick(graphic) {
83287
+ const curLinkDatum = getDatumOfGraphic(graphic);
83288
+ const highlightNodes = [curLinkDatum.source, curLinkDatum.target];
83289
+ if (this._linkMark) {
83290
+ const allLinkElements = this._linkMark.getGraphics();
83291
+ if (!allLinkElements || !allLinkElements.length) {
83292
+ return;
83293
+ }
83294
+ allLinkElements.forEach(linkEl => {
83295
+ if (linkEl === graphic) {
83296
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83297
+ addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });
83298
+ }
83299
+ else {
83300
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83301
+ linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);
83302
+ }
83303
+ });
83304
+ }
83305
+ if (this._nodeMark) {
83306
+ this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
83307
+ }
83308
+ this._needClear = true;
83309
+ }
83310
+ _handleNodeRelatedClick(graphic) {
83311
+ var _a;
83312
+ const nodeDatum = getDatumOfGraphic(graphic);
83313
+ const allNodeElements = this._nodeMark.getGraphics();
83314
+ if (!allNodeElements || !allNodeElements.length) {
83315
+ return;
83316
+ }
83317
+ const allLinkElements = this._linkMark.getGraphics();
83318
+ if (!allLinkElements || !allLinkElements.length) {
83319
+ return;
83320
+ }
83321
+ const father = ((_a = getDatumOfGraphic(allLinkElements[0])) === null || _a === void 0 ? void 0 : _a.parents) ? 'parents' : 'source';
83322
+ if (father === 'source') {
83323
+ const highlightNodes = [nodeDatum.key];
83324
+ const highlightLinks = [];
83325
+ allLinkElements.forEach((linkEl, i) => {
83326
+ var _a, _b, _c, _d;
83327
+ const linkDatum = getDatumOfGraphic(linkEl);
83328
+ const father = (linkDatum === null || linkDatum === void 0 ? void 0 : linkDatum.parents) ? 'parents' : 'source';
83329
+ if (array(linkDatum[father]).includes(nodeDatum.key)) {
83330
+ if (!highlightLinks.includes((_a = linkDatum.key) !== null && _a !== void 0 ? _a : linkDatum.index)) {
83331
+ highlightLinks.push((_b = linkDatum.key) !== null && _b !== void 0 ? _b : linkDatum.index);
83332
+ }
83333
+ if (!highlightNodes.includes(linkDatum.source)) {
83334
+ highlightNodes.push(linkDatum.source);
83335
+ }
83336
+ if (!highlightNodes.includes(linkDatum.target)) {
83337
+ highlightNodes.push(linkDatum.target);
83338
+ const targetNode = allNodeElements.find(nodeElement => {
83339
+ return nodeElement.data[0].key === linkDatum.target;
83340
+ });
83341
+ let targetNodeSourceLinks = targetNode.data[0].sourceLinks;
83342
+ while ((targetNodeSourceLinks === null || targetNodeSourceLinks === void 0 ? void 0 : targetNodeSourceLinks.length) > 0) {
83343
+ const newTargetNodeSourceLinks = [];
83344
+ targetNodeSourceLinks.forEach((targetNodeSourceLinkDatum) => {
83345
+ var _a, _b;
83346
+ if (!highlightLinks.includes((_a = targetNodeSourceLinkDatum.key) !== null && _a !== void 0 ? _a : targetNodeSourceLinkDatum.index)) {
83347
+ highlightLinks.push((_b = targetNodeSourceLinkDatum.key) !== null && _b !== void 0 ? _b : targetNodeSourceLinkDatum.index);
83348
+ if (!highlightNodes.includes(targetNodeSourceLinkDatum.target)) {
83349
+ highlightNodes.push(targetNodeSourceLinkDatum.target);
83350
+ const sourceNodeTemp = allNodeElements.find(nodeElement => {
83351
+ return nodeElement.data[0].key === targetNodeSourceLinkDatum.target;
83352
+ });
83353
+ newTargetNodeSourceLinks.push(sourceNodeTemp.data[0].targetLinks);
83354
+ }
83355
+ else {
83356
+ return;
83357
+ }
83358
+ }
83359
+ else {
83360
+ return;
83361
+ }
83362
+ });
83363
+ targetNodeSourceLinks = newTargetNodeSourceLinks;
83364
+ return;
83365
+ }
83366
+ }
83367
+ }
83368
+ else if (linkDatum.target === nodeDatum.key) {
83369
+ if (!highlightLinks.includes((_c = linkDatum.key) !== null && _c !== void 0 ? _c : linkDatum.index)) {
83370
+ highlightLinks.push((_d = linkDatum.key) !== null && _d !== void 0 ? _d : linkDatum.index);
83371
+ }
83372
+ if (!highlightNodes.includes(linkDatum.source)) {
83373
+ highlightNodes.push(linkDatum.source);
83374
+ const sourceNode = allNodeElements.find(nodeElement => {
83375
+ return nodeElement.data[0].key === linkDatum.source;
83376
+ });
83377
+ let sourceNodeTargetLinks = sourceNode.data[0].targetLinks;
83378
+ while ((sourceNodeTargetLinks === null || sourceNodeTargetLinks === void 0 ? void 0 : sourceNodeTargetLinks.length) > 0) {
83379
+ const newSourceNodeTargetLinks = [];
83380
+ sourceNodeTargetLinks.forEach((sourceNodeTargetLinkDatum) => {
83381
+ var _a, _b;
83382
+ if (!highlightLinks.includes((_a = sourceNodeTargetLinkDatum.key) !== null && _a !== void 0 ? _a : sourceNodeTargetLinkDatum.index)) {
83383
+ highlightLinks.push((_b = sourceNodeTargetLinkDatum.key) !== null && _b !== void 0 ? _b : sourceNodeTargetLinkDatum.index);
83384
+ if (!highlightNodes.includes(sourceNodeTargetLinkDatum.source)) {
83385
+ highlightNodes.push(sourceNodeTargetLinkDatum.source);
83386
+ const sourceNodeTemp = allNodeElements.find(nodeElement => {
83387
+ return nodeElement.data[0].key === sourceNodeTargetLinkDatum.source;
83388
+ });
83389
+ newSourceNodeTargetLinks.push(sourceNodeTemp.data[0].targetLinks);
83390
+ }
83391
+ else {
83392
+ return;
83393
+ }
83394
+ }
83395
+ else {
83396
+ return;
83397
+ }
83398
+ });
83399
+ sourceNodeTargetLinks = newSourceNodeTargetLinks;
83400
+ return;
83401
+ }
83402
+ }
83403
+ }
83404
+ });
83405
+ if (this._linkMark) {
83406
+ const allLinkElements = this._linkMark.getGraphics();
83407
+ if (!allLinkElements || !allLinkElements.length) {
83408
+ return;
83409
+ }
83410
+ allLinkElements.forEach((linkEl, i) => {
83411
+ var _a;
83412
+ const linkDatum = getDatumOfGraphic(linkEl);
83413
+ if (highlightLinks.includes((_a = linkDatum.key) !== null && _a !== void 0 ? _a : linkDatum.index)) {
83414
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83415
+ linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, true);
83416
+ }
83417
+ else {
83418
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83419
+ linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);
83420
+ }
83421
+ });
83422
+ }
83423
+ if (this._nodeMark) {
83424
+ this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
83425
+ }
83426
+ }
83427
+ else {
83428
+ const highlightNodes = [nodeDatum.key];
83429
+ const upstreamLinks = nodeDatum.targetLinks.reduce((res, link) => {
83430
+ const dividedLinks = array(link.datum);
83431
+ dividedLinks.forEach(dividedLink => {
83432
+ const parents = dividedLink.parents;
83433
+ const len = parents.length;
83434
+ for (let i = 0; i < len; i++) {
83435
+ const source = parents[i].key;
83436
+ const target = parents[i + 1] ? parents[i + 1].key : nodeDatum.key;
83437
+ const value = dividedLink.value;
83438
+ const existingItem = res.find(item => item.source === source && item.target === target);
83439
+ if (existingItem) {
83440
+ existingItem.value += value;
83441
+ }
83442
+ else {
83443
+ res.push({ source, target, value });
83444
+ }
83445
+ }
83446
+ });
83447
+ return res;
83448
+ }, []);
83449
+ allLinkElements.forEach((linkEl, i) => {
83450
+ const linkDatum = getDatumOfGraphic(linkEl);
83451
+ const originalDatum = linkDatum.datum;
83452
+ const selectedDatum = originalDatum
83453
+ ? originalDatum.filter((entry) => entry[father].some((par) => par.key === nodeDatum.key))
83454
+ : null;
83455
+ const upSelectedLink = upstreamLinks.find((upLink) => upLink.source === linkDatum.source && upLink.target === linkDatum.target);
83456
+ if (selectedDatum && selectedDatum.length) {
83457
+ if (!highlightNodes.includes(linkDatum.source)) {
83458
+ highlightNodes.push(linkDatum.source);
83459
+ }
83460
+ if (!highlightNodes.includes(linkDatum.target)) {
83461
+ highlightNodes.push(linkDatum.target);
83462
+ }
83463
+ const val = selectedDatum.reduce((sum, d) => {
83464
+ return (sum += d.value);
83465
+ }, 0);
83466
+ const ratio = val / linkDatum.value;
83467
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83468
+ addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio });
83469
+ return;
83470
+ }
83471
+ if (upSelectedLink) {
83472
+ if (!highlightNodes.includes(linkDatum.source)) {
83473
+ highlightNodes.push(linkDatum.source);
83474
+ }
83475
+ if (!highlightNodes.includes(linkDatum.target)) {
83476
+ highlightNodes.push(linkDatum.target);
83477
+ }
83478
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83479
+ addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
83480
+ ratio: upSelectedLink.value / linkDatum.value
83481
+ });
83482
+ return;
83483
+ }
83484
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83485
+ linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);
83486
+ return;
83487
+ });
83488
+ if (this._nodeMark) {
83489
+ this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
83490
+ }
83491
+ }
83492
+ this._needClear = true;
83493
+ }
83494
+ _handleLinkRelatedClick(graphic) {
83495
+ const allNodeElements = this._nodeMark.getGraphics();
83496
+ if (!allNodeElements || !allNodeElements.length) {
83497
+ return;
83498
+ }
83499
+ const allLinkElements = this._linkMark.getGraphics();
83500
+ if (!allLinkElements || !allLinkElements.length) {
83501
+ return;
83502
+ }
83503
+ const father = getDatumOfGraphic(graphic) ? 'parents' : 'source';
83504
+ if (father === 'source') {
83505
+ if (this._linkMark) {
83506
+ allLinkElements.forEach(linkEl => {
83507
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83508
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83509
+ });
83510
+ }
83511
+ if (this._nodeMark) {
83512
+ allNodeElements.forEach(el => {
83513
+ el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83514
+ el.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83515
+ });
83516
+ }
83517
+ }
83518
+ else {
83519
+ const curLinkDatum = getDatumOfGraphic(graphic);
83520
+ const highlightNodes = [curLinkDatum.source, curLinkDatum.target];
83521
+ const upstreamLinks = [];
83522
+ const dividedLinks = array(curLinkDatum.datum);
83523
+ dividedLinks.forEach(dividedLink => {
83524
+ const parents = dividedLink.parents;
83525
+ const len = parents.length;
83526
+ for (let i = 0; i < len - 1; i++) {
83527
+ const source = parents[i].key;
83528
+ const target = parents[i + 1].key;
83529
+ const value = dividedLink.value;
83530
+ const existingItem = upstreamLinks.find(item => item.source === source && item.target === target);
83531
+ upstreamLinks.push({
83532
+ source: parents[i].key,
83533
+ target: parents[i + 1].key,
83534
+ value: dividedLink.value
83535
+ });
83536
+ if (existingItem) {
83537
+ existingItem.value += value;
83538
+ }
83539
+ else {
83540
+ upstreamLinks.push({ source, target, value });
83541
+ }
83542
+ }
83543
+ });
83544
+ allLinkElements.forEach(linkEl => {
83545
+ const linkDatum = getDatumOfGraphic(linkEl);
83546
+ const originalDatum = linkDatum.datum;
83547
+ if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) {
83548
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83549
+ addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio: 1 });
83550
+ return;
83551
+ }
83552
+ const selectedDatum = originalDatum
83553
+ ? originalDatum.filter((entry) => {
83554
+ const parentKeysList = entry.parents.map((item) => item.key);
83555
+ return parentKeysList.includes(curLinkDatum.source) && parentKeysList.includes(curLinkDatum.target);
83556
+ })
83557
+ : null;
83558
+ if (selectedDatum && selectedDatum.length) {
83559
+ if (!highlightNodes.includes(linkDatum.source)) {
83560
+ highlightNodes.push(linkDatum.source);
83561
+ }
83562
+ if (!highlightNodes.includes(linkDatum.target)) {
83563
+ highlightNodes.push(linkDatum.target);
83564
+ }
83565
+ const val = selectedDatum
83566
+ .filter((entry) => {
83567
+ return entry.parents.some((par, index) => {
83568
+ var _a;
83569
+ return par.key === curLinkDatum.source && ((_a = entry.parents[index + 1]) === null || _a === void 0 ? void 0 : _a.key) === curLinkDatum.target;
83570
+ });
83571
+ })
83572
+ .reduce((sum, d) => {
83573
+ return (sum += d.value);
83574
+ }, 0);
83575
+ const ratio = val / linkDatum.value;
83576
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83577
+ addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, { ratio });
83578
+ return;
83579
+ }
83580
+ const upSelectedLink = upstreamLinks.find((upLink) => upLink.source === linkDatum.source && upLink.target === linkDatum.target);
83581
+ if (upSelectedLink) {
83582
+ if (!highlightNodes.includes(linkDatum.source)) {
83583
+ highlightNodes.push(linkDatum.source);
83584
+ }
83585
+ if (!highlightNodes.includes(linkDatum.target)) {
83586
+ highlightNodes.push(linkDatum.target);
83587
+ }
83588
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
83589
+ addRuntimeState(linkEl, exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
83590
+ ratio: upSelectedLink.value / linkDatum.value
83591
+ });
83592
+ return;
83593
+ }
83594
+ linkEl.removeState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS);
83595
+ linkEl.addState(exports.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, true);
83596
+ return;
83597
+ });
83598
+ this._highLightElements(allNodeElements, highlightNodes);
83599
+ }
83600
+ this._needClear = true;
83601
+ }
83542
83602
  _highLightElements(graphics, highlightNodes) {
83543
83603
  if (!graphics || !graphics.length) {
83544
83604
  return;
@@ -96976,7 +97036,6 @@ C0.3-1.4,0.3-1.4,0.3-1.4z;`;
96976
97036
  if (!this._spec) {
96977
97037
  return;
96978
97038
  }
96979
- const hasAnimation = this._option.animation !== false;
96980
97039
  let parentMark = null;
96981
97040
  if (this._spec.parent) {
96982
97041
  const mark = this.getChart()
@@ -96986,12 +97045,10 @@ C0.3-1.4,0.3-1.4,0.3-1.4z;`;
96986
97045
  parentMark = mark;
96987
97046
  }
96988
97047
  }
96989
- this._createExtensionMark(this._spec, parentMark, `${PREFIX}_series_${this.id}_extensionMark`, 0, {
96990
- hasAnimation
96991
- });
97048
+ this._createExtensionMark(this._spec, parentMark, `${PREFIX}_series_${this.id}_extensionMark`, 0);
96992
97049
  }
96993
- _createExtensionMark(spec, parentMark, namePrefix, index = 0, options) {
96994
- var _a;
97050
+ _createExtensionMark(spec, parentMark, namePrefix, index = 0) {
97051
+ var _a, _b;
96995
97052
  const mark = this._createMark({
96996
97053
  type: spec.type,
96997
97054
  name: isValid$1(spec.name) ? `${spec.name}` : `${namePrefix}_${index}`
@@ -97007,7 +97064,7 @@ C0.3-1.4,0.3-1.4,0.3-1.4z;`;
97007
97064
  if (isValid$1(spec.id)) {
97008
97065
  mark.setUserId(spec.id);
97009
97066
  }
97010
- if (options.hasAnimation && spec.animation) {
97067
+ if (((_a = this._option.globalInstance) === null || _a === void 0 ? void 0 : _a.isAnimationEnable()) && spec.animation) {
97011
97068
  const config = animationConfig({}, userAnimationConfig(spec.type, spec, this._markAttributeContext));
97012
97069
  mark.setAnimationConfig(config);
97013
97070
  }
@@ -97020,8 +97077,8 @@ C0.3-1.4,0.3-1.4,0.3-1.4z;`;
97020
97077
  this.initMarkStyleWithSpec(mark, spec);
97021
97078
  if (spec.type === 'group') {
97022
97079
  namePrefix = `${namePrefix}_${index}`;
97023
- (_a = spec.children) === null || _a === void 0 ? void 0 : _a.forEach((s, i) => {
97024
- this._createExtensionMark(s, mark, namePrefix, i, options);
97080
+ (_b = spec.children) === null || _b === void 0 ? void 0 : _b.forEach((s, i) => {
97081
+ this._createExtensionMark(s, mark, namePrefix, i);
97025
97082
  });
97026
97083
  }
97027
97084
  if (isValid$1(spec.dataId) || isValidNumber$1(spec.dataIndex)) {
@@ -98090,7 +98147,7 @@ C0.3-1.4,0.3-1.4,0.3-1.4z;`;
98090
98147
  if (!changePositionOnly) {
98091
98148
  this._updateDomStringByCol(actualTooltip);
98092
98149
  }
98093
- this._updateDomStyle('height');
98150
+ this._updateDomStyle('height', changePositionOnly);
98094
98151
  const rect = (_a = this._rootDom) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
98095
98152
  return {
98096
98153
  width: rect === null || rect === void 0 ? void 0 : rect.width,
@@ -98235,7 +98292,7 @@ C0.3-1.4,0.3-1.4,0.3-1.4z;`;
98235
98292
  contentDom.parentNode.removeChild(contentDom);
98236
98293
  }
98237
98294
  }
98238
- _updateDomStyle(sizeKey = 'width') {
98295
+ _updateDomStyle(sizeKey = 'width', refreshSize) {
98239
98296
  var _a, _b, _c, _d, _e;
98240
98297
  const rootDom = this._rootDom;
98241
98298
  const contentDom = [...rootDom.children].find(child => child.className.includes(TOOLTIP_CONTENT_BOX_CLASS_NAME));
@@ -98278,6 +98335,9 @@ C0.3-1.4,0.3-1.4,0.3-1.4z;`;
98278
98335
  const row = rows[i];
98279
98336
  const cols = (_d = row.children) !== null && _d !== void 0 ? _d : [];
98280
98337
  for (let j = 0; j < cols.length; j++) {
98338
+ if (refreshSize) {
98339
+ cols[j].style[sizeKey] = 'initial';
98340
+ }
98281
98341
  const width = cols[j].getBoundingClientRect()[sizeKey];
98282
98342
  if (widthByCol[j] === undefined || widthByCol[j] < width) {
98283
98343
  widthByCol[j] = width;
@@ -98309,7 +98369,7 @@ C0.3-1.4,0.3-1.4,0.3-1.4z;`;
98309
98369
  }
98310
98370
  if (this.getVisibility()) {
98311
98371
  this._updateDomStringByCol(this._tooltipActual);
98312
- this._updateDomStyle('height');
98372
+ this._updateDomStyle('height', false);
98313
98373
  }
98314
98374
  }
98315
98375
  _updatePosition({ x, y }) {
@@ -100379,6 +100439,7 @@ C0.3-1.4,0.3-1.4,0.3-1.4z;`;
100379
100439
  exports.STACK_FIELD_TOTAL_PERCENT = STACK_FIELD_TOTAL_PERCENT;
100380
100440
  exports.STACK_FIELD_TOTAL_TOP = STACK_FIELD_TOTAL_TOP;
100381
100441
  exports.SankeyChart = SankeyChart;
100442
+ exports.SankeyChartSpecTransformer = SankeyChartSpecTransformer;
100382
100443
  exports.SankeySeries = SankeySeries;
100383
100444
  exports.ScatterChart = ScatterChart;
100384
100445
  exports.ScatterSeries = ScatterSeries;