@visactor/vrender-components 0.16.3-alpha.0 → 0.16.4

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 (89) hide show
  1. package/cjs/brush/type.d.ts +1 -1
  2. package/cjs/brush/type.js.map +1 -1
  3. package/cjs/data-zoom/config.d.ts +6 -0
  4. package/cjs/data-zoom/config.js +6 -0
  5. package/cjs/data-zoom/config.js.map +1 -1
  6. package/cjs/data-zoom/data-zoom.d.ts +16 -8
  7. package/cjs/data-zoom/data-zoom.js +54 -49
  8. package/cjs/data-zoom/data-zoom.js.map +1 -1
  9. package/cjs/data-zoom/type.d.ts +10 -5
  10. package/cjs/data-zoom/type.js.map +1 -1
  11. package/cjs/index.d.ts +1 -1
  12. package/cjs/index.js +1 -1
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/interface.d.ts +1 -0
  15. package/cjs/interface.js.map +1 -1
  16. package/cjs/label/base.d.ts +4 -1
  17. package/cjs/label/base.js +47 -27
  18. package/cjs/label/base.js.map +1 -1
  19. package/cjs/label/dataLabel.js +3 -2
  20. package/cjs/label/dataLabel.js.map +1 -1
  21. package/cjs/label/index.d.ts +1 -0
  22. package/cjs/label/index.js +1 -1
  23. package/cjs/label/index.js.map +1 -1
  24. package/cjs/label/line-data.d.ts +12 -0
  25. package/cjs/label/line-data.js +30 -0
  26. package/cjs/label/line-data.js.map +1 -0
  27. package/cjs/label/symbol.js +2 -42
  28. package/cjs/label/symbol.js.map +1 -1
  29. package/cjs/label/type.d.ts +8 -3
  30. package/cjs/label/type.js.map +1 -1
  31. package/cjs/label/util.d.ts +7 -1
  32. package/cjs/label/util.js +63 -1
  33. package/cjs/label/util.js.map +1 -1
  34. package/cjs/legend/base.js +1 -2
  35. package/cjs/legend/constant.js +2 -1
  36. package/cjs/marker/base.js +1 -1
  37. package/cjs/scrollbar/scrollbar.d.ts +4 -0
  38. package/cjs/scrollbar/scrollbar.js +31 -15
  39. package/cjs/scrollbar/scrollbar.js.map +1 -1
  40. package/cjs/scrollbar/type.d.ts +4 -1
  41. package/cjs/scrollbar/type.js.map +1 -1
  42. package/cjs/slider/slider.js +10 -14
  43. package/cjs/slider/slider.js.map +1 -1
  44. package/dist/index.js +431 -294
  45. package/dist/index.min.js +1 -1
  46. package/es/brush/type.d.ts +1 -1
  47. package/es/brush/type.js.map +1 -1
  48. package/es/data-zoom/config.d.ts +6 -0
  49. package/es/data-zoom/config.js +6 -0
  50. package/es/data-zoom/config.js.map +1 -1
  51. package/es/data-zoom/data-zoom.d.ts +16 -8
  52. package/es/data-zoom/data-zoom.js +55 -49
  53. package/es/data-zoom/data-zoom.js.map +1 -1
  54. package/es/data-zoom/type.d.ts +10 -5
  55. package/es/data-zoom/type.js.map +1 -1
  56. package/es/index.d.ts +1 -1
  57. package/es/index.js +1 -1
  58. package/es/index.js.map +1 -1
  59. package/es/interface.d.ts +1 -0
  60. package/es/interface.js.map +1 -1
  61. package/es/label/base.d.ts +4 -1
  62. package/es/label/base.js +49 -28
  63. package/es/label/base.js.map +1 -1
  64. package/es/label/dataLabel.js +4 -1
  65. package/es/label/dataLabel.js.map +1 -1
  66. package/es/label/index.d.ts +1 -0
  67. package/es/label/index.js +2 -0
  68. package/es/label/index.js.map +1 -1
  69. package/es/label/line-data.d.ts +12 -0
  70. package/es/label/line-data.js +28 -0
  71. package/es/label/line-data.js.map +1 -0
  72. package/es/label/symbol.js +3 -41
  73. package/es/label/symbol.js.map +1 -1
  74. package/es/label/type.d.ts +8 -3
  75. package/es/label/type.js.map +1 -1
  76. package/es/label/util.d.ts +7 -1
  77. package/es/label/util.js +58 -0
  78. package/es/label/util.js.map +1 -1
  79. package/es/legend/base.js +1 -2
  80. package/es/legend/constant.js +2 -1
  81. package/es/marker/base.js +1 -1
  82. package/es/scrollbar/scrollbar.d.ts +4 -0
  83. package/es/scrollbar/scrollbar.js +33 -15
  84. package/es/scrollbar/scrollbar.js.map +1 -1
  85. package/es/scrollbar/type.d.ts +4 -1
  86. package/es/scrollbar/type.js.map +1 -1
  87. package/es/slider/slider.js +10 -14
  88. package/es/slider/slider.js.map +1 -1
  89. package/package.json +5 -5
package/dist/index.js CHANGED
@@ -9350,12 +9350,13 @@
9350
9350
  main: !1
9351
9351
  };
9352
9352
  this.tryInit();
9353
- var layerMode = this.getRecommendedLayerType(options.layerMode),
9354
- layerHandler = this.getLayerHandler(layerMode),
9353
+ var layerMode = this.getRecommendedLayerType(options.layerMode);
9354
+ layerMode = options.canvasId ? "static" : layerMode;
9355
+ var layerHandler = this.getLayerHandler(layerMode),
9355
9356
  layer = new Layer(stage, this.global, stage.window, Object.assign(Object.assign({
9356
9357
  main: !1
9357
9358
  }, options), {
9358
- layerMode: options.canvasId ? "static" : layerMode,
9359
+ layerMode: layerMode,
9359
9360
  canvasId: options.canvasId,
9360
9361
  layerHandler: layerHandler
9361
9362
  })),
@@ -19921,7 +19922,11 @@
19921
19922
  }, {
19922
19923
  key: "containsPoint",
19923
19924
  value: function containsPoint(graphic, point, params) {
19924
- return !!this.pickItem(graphic, point, null, params);
19925
+ var _a;
19926
+ return !!(null === (_a = this.pickItem(graphic, point, null, null != params ? params : {
19927
+ pickContext: this.pickContext,
19928
+ pickerService: this
19929
+ })) || void 0 === _a ? void 0 : _a.graphic);
19925
19930
  }
19926
19931
  }, {
19927
19932
  key: "pickGroup",
@@ -20088,6 +20093,10 @@
20088
20093
  }
20089
20094
  }
20090
20095
 
20096
+ const delayMap$2 = {
20097
+ debounce: vutils.debounce,
20098
+ throttle: vutils.throttle
20099
+ };
20091
20100
  class ScrollBar extends AbstractComponent {
20092
20101
  constructor(attributes) {
20093
20102
  super(vutils.merge({}, ScrollBar.defaultAttributes, attributes));
@@ -20130,13 +20139,11 @@
20130
20139
  this._slider.addEventListener('pointerupoutside', this._onSliderPointerUp);
20131
20140
  }
20132
20141
  };
20133
- this._onSliderPointerMove = (e) => {
20134
- e.stopPropagation();
20142
+ this._computeScrollValue = (e) => {
20135
20143
  const { direction } = this.attribute;
20136
20144
  let currentScrollValue;
20137
20145
  let currentPos;
20138
20146
  let delta = 0;
20139
- const preScrollRange = this.getScrollRange();
20140
20147
  const { width, height } = this._getSliderRenderBounds();
20141
20148
  if (direction === 'vertical') {
20142
20149
  currentPos = e.clientY;
@@ -20148,25 +20155,41 @@
20148
20155
  delta = currentPos - this._prePos;
20149
20156
  currentScrollValue = delta / width;
20150
20157
  }
20158
+ return [currentPos, currentScrollValue];
20159
+ };
20160
+ this._onSliderPointerMove = delayMap$2[this.attribute.delayType]((e) => {
20161
+ e.stopPropagation();
20162
+ const preScrollRange = this.getScrollRange();
20163
+ const [currentPos, currentScrollValue] = this._computeScrollValue(e);
20151
20164
  this.setScrollRange([preScrollRange[0] + currentScrollValue, preScrollRange[1] + currentScrollValue], true);
20152
20165
  this._prePos = currentPos;
20153
- };
20166
+ }, this.attribute.delayTime);
20154
20167
  this._onSliderPointerUp = (e) => {
20155
20168
  e.preventDefault();
20169
+ const { realTime = true, range: preRange, limitRange = [0, 1] } = this.attribute;
20170
+ const preScrollRange = this.getScrollRange();
20171
+ const [currentPos, currentScrollValue] = this._computeScrollValue(e);
20172
+ const range = [preScrollRange[0] + currentScrollValue, preScrollRange[1] + currentScrollValue];
20173
+ if (!realTime) {
20174
+ this._onChange({
20175
+ pre: preRange,
20176
+ value: vutils.clampRange(range, limitRange[0], limitRange[1])
20177
+ });
20178
+ }
20156
20179
  if (vglobal.env === 'browser') {
20157
20180
  vglobal.removeEventListener('pointermove', this._onSliderPointerMove, { capture: true });
20158
20181
  vglobal.removeEventListener('pointerup', this._onSliderPointerUp);
20159
20182
  }
20160
20183
  else {
20161
- this._slider.removeEventListener('pointermove', this._onSliderPointerMove, { capture: true });
20162
- this._slider.removeEventListener('pointerup', this._onSliderPointerUp);
20163
- this._slider.removeEventListener('pointerupoutside', this._onSliderPointerUp);
20184
+ this.stage.removeEventListener('pointermove', this._onSliderPointerMove, { capture: true });
20185
+ this.stage.removeEventListener('pointerup', this._onSliderPointerUp);
20186
+ this.stage.removeEventListener('pointerupoutside', this._onSliderPointerUp);
20164
20187
  }
20165
20188
  };
20166
20189
  }
20167
20190
  setScrollRange(range, render = true) {
20168
20191
  var _a, _b;
20169
- const { direction = 'horizontal', limitRange = [0, 1], range: preRange } = this.attribute;
20192
+ const { direction = 'horizontal', limitRange = [0, 1], range: preRange, realTime = true } = this.attribute;
20170
20193
  const currScrollRange = vutils.clampRange(range, limitRange[0], limitRange[1]);
20171
20194
  if (render) {
20172
20195
  const sliderPos = this._getSliderPos(currScrollRange);
@@ -20183,10 +20206,12 @@
20183
20206
  }
20184
20207
  }
20185
20208
  this.attribute.range = currScrollRange;
20186
- this._onChange({
20187
- pre: preRange,
20188
- value: currScrollRange
20189
- });
20209
+ if (realTime) {
20210
+ this._onChange({
20211
+ pre: preRange,
20212
+ value: currScrollRange
20213
+ });
20214
+ }
20190
20215
  }
20191
20216
  getScrollRange() {
20192
20217
  return this.attribute.range;
@@ -20195,8 +20220,9 @@
20195
20220
  if (this.attribute.disableTriggerEvent) {
20196
20221
  return;
20197
20222
  }
20223
+ const { delayType = 'throttle', delayTime = 0 } = this.attribute;
20198
20224
  if (this._rail) {
20199
- this._rail.addEventListener('pointerdown', this._onRailPointerDown);
20225
+ this._rail.addEventListener('pointerdown', delayMap$2[delayType](this._onRailPointerDown, delayTime));
20200
20226
  }
20201
20227
  if (this._slider) {
20202
20228
  this._slider.addEventListener('pointerdown', this._onSliderPointerDown);
@@ -20306,7 +20332,10 @@
20306
20332
  fill: 'rgba(0, 0, 0, .0)'
20307
20333
  },
20308
20334
  padding: 2,
20309
- scrollRange: [0, 1]
20335
+ scrollRange: [0, 1],
20336
+ delayType: 'throttle',
20337
+ delayTime: 0,
20338
+ realTime: true
20310
20339
  };
20311
20340
 
20312
20341
  function __rest(s, e) {
@@ -21787,6 +21816,194 @@
21787
21816
  easing: 'linear'
21788
21817
  };
21789
21818
 
21819
+ function polarToCartesian(point) {
21820
+ if (!point.radius) {
21821
+ return { x: 0, y: 0 };
21822
+ }
21823
+ return {
21824
+ x: Math.cos(point.angle) * point.radius,
21825
+ y: Math.sin(point.angle) * point.radius
21826
+ };
21827
+ }
21828
+ function circlePoint(x0, y0, radius, radian) {
21829
+ const offset = polarToCartesian({
21830
+ radius,
21831
+ angle: radian
21832
+ });
21833
+ return {
21834
+ x: x0 + offset.x,
21835
+ y: y0 + offset.y
21836
+ };
21837
+ }
21838
+ function computeQuadrant(angle) {
21839
+ angle = normalizeAngle(angle);
21840
+ if (angle > 0 && angle <= Math.PI / 2) {
21841
+ return 2;
21842
+ }
21843
+ else if (angle > Math.PI / 2 && angle <= Math.PI) {
21844
+ return 3;
21845
+ }
21846
+ else if (angle > Math.PI && angle <= (3 * Math.PI) / 2) {
21847
+ return 4;
21848
+ }
21849
+ return 1;
21850
+ }
21851
+ function normalizeAngle(angle) {
21852
+ while (angle < 0) {
21853
+ angle += Math.PI * 2;
21854
+ }
21855
+ while (angle >= Math.PI * 2) {
21856
+ angle -= Math.PI * 2;
21857
+ }
21858
+ return angle;
21859
+ }
21860
+ function isQuadrantLeft(quadrant) {
21861
+ return quadrant === 3 || quadrant === 4;
21862
+ }
21863
+ function isQuadrantRight(quadrant) {
21864
+ return quadrant === 1 || quadrant === 2;
21865
+ }
21866
+ function lineCirclePoints(a, b, c, x0, y0, r) {
21867
+ if ((a === 0 && b === 0) || r <= 0) {
21868
+ return [];
21869
+ }
21870
+ if (a === 0) {
21871
+ const y1 = -c / b;
21872
+ const fy = (y1 - y0) ** 2;
21873
+ const fd = r ** 2 - fy;
21874
+ if (fd < 0) {
21875
+ return [];
21876
+ }
21877
+ else if (fd === 0) {
21878
+ return [{ x: x0, y: y1 }];
21879
+ }
21880
+ const x1 = Math.sqrt(fd) + x0;
21881
+ const x2 = -Math.sqrt(fd) + x0;
21882
+ return [
21883
+ { x: x1, y: y1 },
21884
+ { x: x2, y: y1 }
21885
+ ];
21886
+ }
21887
+ else if (b === 0) {
21888
+ const x1 = -c / a;
21889
+ const fx = (x1 - x0) ** 2;
21890
+ const fd = r ** 2 - fx;
21891
+ if (fd < 0) {
21892
+ return [];
21893
+ }
21894
+ else if (fd === 0) {
21895
+ return [{ x: x1, y: y0 }];
21896
+ }
21897
+ const y1 = Math.sqrt(fd) + y0;
21898
+ const y2 = -Math.sqrt(fd) + y0;
21899
+ return [
21900
+ { x: x1, y: y1 },
21901
+ { x: x1, y: y2 }
21902
+ ];
21903
+ }
21904
+ const fa = (b / a) ** 2 + 1;
21905
+ const fb = 2 * ((c / a + x0) * (b / a) - y0);
21906
+ const fc = (c / a + x0) ** 2 + y0 ** 2 - r ** 2;
21907
+ const fd = fb ** 2 - 4 * fa * fc;
21908
+ if (fd < 0) {
21909
+ return [];
21910
+ }
21911
+ const y1 = (-fb + Math.sqrt(fd)) / (2 * fa);
21912
+ const y2 = (-fb - Math.sqrt(fd)) / (2 * fa);
21913
+ const x1 = -(b * y1 + c) / a;
21914
+ const x2 = -(b * y2 + c) / a;
21915
+ if (fd === 0) {
21916
+ return [{ x: x1, y: y1 }];
21917
+ }
21918
+ return [
21919
+ { x: x1, y: y1 },
21920
+ { x: x2, y: y2 }
21921
+ ];
21922
+ }
21923
+ function connectLineRadian(radius, length) {
21924
+ if (length > radius * 2) {
21925
+ return NaN;
21926
+ }
21927
+ return Math.asin(length / 2 / radius) * 2;
21928
+ }
21929
+ function checkBoundsOverlap(boundsA, boundsB) {
21930
+ const { x1: ax1, y1: ay1, x2: ax2, y2: ay2 } = boundsA;
21931
+ const { x1: bx1, y1: by1, x2: bx2, y2: by2 } = boundsB;
21932
+ return !((ax1 <= bx1 && ax2 <= bx1) ||
21933
+ (ax1 >= bx2 && ax2 >= bx2) ||
21934
+ (ay1 <= by1 && ay2 <= by1) ||
21935
+ (ay1 >= by2 && ay2 >= by2));
21936
+ }
21937
+ const labelingPoint = (textBounds, graphicBounds, position = 'top', offset = 0) => {
21938
+ if (!textBounds) {
21939
+ return;
21940
+ }
21941
+ const { x1, y1, x2, y2 } = textBounds;
21942
+ const width = Math.abs(x2 - x1);
21943
+ const height = Math.abs(y2 - y1);
21944
+ const anchorX = (graphicBounds.x1 + graphicBounds.x2) / 2;
21945
+ const anchorY = (graphicBounds.y1 + graphicBounds.y2) / 2;
21946
+ let sx = 0;
21947
+ let sy = 0;
21948
+ let offsetX = 0;
21949
+ let offsetY = 0;
21950
+ if (graphicBounds) {
21951
+ offsetX = Math.abs(graphicBounds.x1 - graphicBounds.x2) / 2;
21952
+ offsetY = Math.abs(graphicBounds.y1 - graphicBounds.y2) / 2;
21953
+ }
21954
+ const angle = {
21955
+ 'top-right': -235,
21956
+ 'top-left': 235,
21957
+ 'bottom-right': 45,
21958
+ 'bottom-left': -45
21959
+ };
21960
+ switch (position) {
21961
+ case 'top':
21962
+ sy = -1;
21963
+ break;
21964
+ case 'bottom':
21965
+ sy = 1;
21966
+ break;
21967
+ case 'left':
21968
+ sx = -1;
21969
+ break;
21970
+ case 'right':
21971
+ sx = 1;
21972
+ break;
21973
+ case 'bottom-left':
21974
+ case 'bottom-right':
21975
+ case 'top-left':
21976
+ case 'top-right':
21977
+ sx = Math.sin(angle[position] * (Math.PI / 180));
21978
+ sy = Math.cos(angle[position] * (Math.PI / 180));
21979
+ break;
21980
+ case 'center':
21981
+ sx = 0;
21982
+ sy = 0;
21983
+ break;
21984
+ }
21985
+ const x = anchorX + sx * (offset + offsetX) + Math.sign(sx) * (width / 2);
21986
+ const y = anchorY + sy * (offset + offsetY) + Math.sign(sy) * (height / 2);
21987
+ return { x, y };
21988
+ };
21989
+ const getPointsOfLineArea = (graphic) => {
21990
+ if (!graphic || !graphic.attribute) {
21991
+ return [];
21992
+ }
21993
+ const { points, segments } = graphic.attribute;
21994
+ if (segments && segments.length) {
21995
+ const res = [];
21996
+ segments.forEach(seg => {
21997
+ const segPoints = seg.points;
21998
+ segPoints.forEach(point => {
21999
+ res.push(point);
22000
+ });
22001
+ });
22002
+ return res;
22003
+ }
22004
+ return points;
22005
+ };
22006
+
21790
22007
  class LabelBase extends AbstractComponent {
21791
22008
  setBitmap(bitmap) {
21792
22009
  this._bitmap = bitmap;
@@ -21846,15 +22063,17 @@
21846
22063
  var _a, _b, _c;
21847
22064
  if (((_a = e.detail) === null || _a === void 0 ? void 0 : _a.type) === AttributeUpdateType.STATE) {
21848
22065
  const currentStates = (_c = (_b = e.target) === null || _b === void 0 ? void 0 : _b.currentStates) !== null && _c !== void 0 ? _c : [];
21849
- const label = this._graphicToText.get(e.target);
21850
- if (label) {
21851
- if (label.text) {
21852
- label.text.useStates(currentStates);
21853
- }
21854
- if (label.labelLine) {
21855
- label.labelLine.useStates(currentStates);
22066
+ const labels = this._isCollectionBase ? [...this._graphicToText.values()] : [this._graphicToText.get(e.target)];
22067
+ labels.forEach(label => {
22068
+ if (label) {
22069
+ if (label.text) {
22070
+ label.text.useStates(currentStates);
22071
+ }
22072
+ if (label.labelLine) {
22073
+ label.labelLine.useStates(currentStates);
22074
+ }
21856
22075
  }
21857
- }
22076
+ });
21858
22077
  }
21859
22078
  };
21860
22079
  }
@@ -21866,7 +22085,7 @@
21866
22085
  }
21867
22086
  render() {
21868
22087
  this._prepare();
21869
- if (vutils.isNil(this._idToGraphic)) {
22088
+ if ((this._isCollectionBase && vutils.isNil(this._idToPoint)) || (!this._isCollectionBase && vutils.isNil(this._idToGraphic))) {
21870
22089
  return;
21871
22090
  }
21872
22091
  const { overlap, smartInvert, dataFilter, customLayoutFunc, customOverlapFunc } = this.attribute;
@@ -21876,13 +22095,13 @@
21876
22095
  }
21877
22096
  let labels;
21878
22097
  if (vutils.isFunction(customLayoutFunc)) {
21879
- labels = customLayoutFunc(data, (d) => this._idToGraphic.get(d.id));
22098
+ labels = customLayoutFunc(data, this.getRelatedGrphic, this._isCollectionBase ? (d) => this._idToPoint.get(d.id) : null);
21880
22099
  }
21881
22100
  else {
21882
22101
  labels = this._layout(data);
21883
22102
  }
21884
22103
  if (vutils.isFunction(customOverlapFunc)) {
21885
- labels = customOverlapFunc(labels, (d) => this._idToGraphic.get(d.id));
22104
+ labels = customOverlapFunc(labels, this.getRelatedGrphic, this._isCollectionBase ? (d) => this._idToPoint.get(d.id) : null);
21886
22105
  }
21887
22106
  else {
21888
22107
  if (overlap !== false) {
@@ -21937,7 +22156,7 @@
21937
22156
  return text;
21938
22157
  }
21939
22158
  _prepare() {
21940
- var _a;
22159
+ var _a, _b, _c, _d;
21941
22160
  const currentBaseMarks = [];
21942
22161
  let baseMarks;
21943
22162
  if (vutils.isFunction(this.attribute.getBaseMarks)) {
@@ -21952,7 +22171,9 @@
21952
22171
  }
21953
22172
  });
21954
22173
  (_a = this._idToGraphic) === null || _a === void 0 ? void 0 : _a.clear();
22174
+ (_b = this._idToPoint) === null || _b === void 0 ? void 0 : _b.clear();
21955
22175
  this._baseMarks = currentBaseMarks;
22176
+ this._isCollectionBase = ((_c = currentBaseMarks === null || currentBaseMarks === void 0 ? void 0 : currentBaseMarks[0]) === null || _c === void 0 ? void 0 : _c.type) === 'line' || ((_d = currentBaseMarks === null || currentBaseMarks === void 0 ? void 0 : currentBaseMarks[0]) === null || _d === void 0 ? void 0 : _d.type) === 'area';
21956
22177
  if (!currentBaseMarks || currentBaseMarks.length === 0) {
21957
22178
  return;
21958
22179
  }
@@ -21960,30 +22181,59 @@
21960
22181
  if (!data || data.length === 0) {
21961
22182
  return;
21962
22183
  }
21963
- if (!this._idToGraphic) {
21964
- this._idToGraphic = new Map();
22184
+ if (this._isCollectionBase) {
22185
+ if (!this._idToPoint) {
22186
+ this._idToPoint = new Map();
22187
+ }
22188
+ const baseMark = currentBaseMarks[0];
22189
+ const points = getPointsOfLineArea(baseMark);
22190
+ if (points === null || points === void 0 ? void 0 : points.length) {
22191
+ for (let i = 0; i < points.length; i++) {
22192
+ const textData = data[i];
22193
+ if (textData && points[i]) {
22194
+ if (!vutils.isValid(textData.id)) {
22195
+ textData.id = `vrender-component-${this.name}-${i}`;
22196
+ }
22197
+ this._idToPoint.set(textData.id, points[i]);
22198
+ }
22199
+ }
22200
+ }
21965
22201
  }
21966
- for (let i = 0; i < currentBaseMarks.length; i++) {
21967
- const textData = data[i];
21968
- const baseMark = currentBaseMarks[i];
21969
- if (textData && baseMark) {
21970
- if (!vutils.isValid(textData.id)) {
21971
- textData.id = `vrender-component-${this.name}-${i}`;
22202
+ else {
22203
+ if (!this._idToGraphic) {
22204
+ this._idToGraphic = new Map();
22205
+ }
22206
+ for (let i = 0; i < currentBaseMarks.length; i++) {
22207
+ const textData = data[i];
22208
+ const baseMark = currentBaseMarks[i];
22209
+ if (textData && baseMark) {
22210
+ if (!vutils.isValid(textData.id)) {
22211
+ textData.id = `vrender-component-${this.name}-${i}`;
22212
+ }
22213
+ this._idToGraphic.set(textData.id, baseMark);
21972
22214
  }
21973
- this._idToGraphic.set(textData.id, baseMark);
21974
22215
  }
21975
22216
  }
21976
22217
  }
22218
+ getRelatedGrphic(item) {
22219
+ return this._isCollectionBase ? this._baseMarks[0] : this._idToGraphic.get(item.id);
22220
+ }
21977
22221
  _layout(data = []) {
21978
22222
  const { textStyle = {}, position, offset } = this.attribute;
21979
22223
  const labels = [];
21980
22224
  for (let i = 0; i < data.length; i++) {
21981
22225
  const textData = data[i];
21982
- const baseMark = this._idToGraphic.get(textData.id);
21983
- const labelAttribute = Object.assign(Object.assign({ fill: baseMark.attribute.fill }, textStyle), textData);
22226
+ const baseMark = this.getRelatedGrphic(textData);
22227
+ const labelAttribute = Object.assign(Object.assign({ fill: this._isCollectionBase
22228
+ ? vutils.isArray(baseMark.attribute.stroke)
22229
+ ? baseMark.attribute.stroke.find(entry => !!entry && entry !== true)
22230
+ : baseMark.attribute.stroke
22231
+ : baseMark.attribute.fill }, textStyle), textData);
21984
22232
  const text = this._createLabelText(labelAttribute);
21985
22233
  const textBounds = this.getGraphicBounds(text);
21986
- const graphicBounds = this.getGraphicBounds(baseMark, { x: textData.x, y: textData.y });
22234
+ const graphicBounds = this._isCollectionBase
22235
+ ? this.getGraphicBounds(null, this._idToPoint.get(textData.id))
22236
+ : this.getGraphicBounds(baseMark, { x: textData.x, y: textData.y });
21987
22237
  const textLocation = this.labeling(textBounds, graphicBounds, vutils.isFunction(position) ? position(textData) : position, offset);
21988
22238
  if (textLocation) {
21989
22239
  labelAttribute.x = textLocation.x;
@@ -22035,7 +22285,7 @@
22035
22285
  continue;
22036
22286
  }
22037
22287
  const text = labels[i];
22038
- const baseMark = this._idToGraphic.get(text.attribute.id);
22288
+ const baseMark = this.getRelatedGrphic(text.attribute);
22039
22289
  text.update();
22040
22290
  if (!vutils.isRectIntersect(baseMark.AABBBounds, { x1: 0, x2: bmpTool.width, y1: 0, y2: bmpTool.height }, true)) {
22041
22291
  continue;
@@ -22054,7 +22304,9 @@
22054
22304
  }
22055
22305
  let hasPlace = false;
22056
22306
  for (let j = 0; j < strategy.length; j++) {
22057
- hasPlace = place(bmpTool, bitmap, strategy[j], this.attribute, text, this.getGraphicBounds(baseMark, labels[i]), this.labeling);
22307
+ hasPlace = place(bmpTool, bitmap, strategy[j], this.attribute, text, this._isCollectionBase
22308
+ ? this.getGraphicBounds(null, this._idToPoint.get(labels[i].attribute.id))
22309
+ : this.getGraphicBounds(baseMark, labels[i].attribute), this.labeling);
22058
22310
  if (hasPlace !== false) {
22059
22311
  text.setAttributes({ x: hasPlace.x, y: hasPlace.y });
22060
22312
  result.push(text);
@@ -22121,11 +22373,13 @@
22121
22373
  labels.forEach((text, index) => {
22122
22374
  var _a, _b, _c, _d, _e, _f, _g;
22123
22375
  const labelLine = this._labelLine(text);
22124
- const relatedGraphic = this._idToGraphic.get(text.attribute.id);
22125
- const state = (prevTextMap === null || prevTextMap === void 0 ? void 0 : prevTextMap.get(relatedGraphic)) ? 'update' : 'enter';
22376
+ const relatedGraphic = this.getRelatedGrphic(text.attribute);
22377
+ const textId = text.attribute.id;
22378
+ const textKey = this._isCollectionBase ? textId : relatedGraphic;
22379
+ const state = (prevTextMap === null || prevTextMap === void 0 ? void 0 : prevTextMap.get(textKey)) ? 'update' : 'enter';
22126
22380
  if (state === 'enter') {
22127
22381
  texts.push(text);
22128
- currentTextMap.set(relatedGraphic, labelLine ? { text, labelLine } : { text });
22382
+ currentTextMap.set(textKey, labelLine ? { text, labelLine } : { text });
22129
22383
  if (relatedGraphic) {
22130
22384
  const { from, to } = getAnimationAttributes(text.attribute, 'fadeIn');
22131
22385
  this.add(text);
@@ -22134,7 +22388,7 @@
22134
22388
  this.add(labelLine);
22135
22389
  }
22136
22390
  this._syncStateWithRelatedGraphic(relatedGraphic);
22137
- relatedGraphic.once('animate-bind', () => {
22391
+ relatedGraphic.once('animate-bind', a => {
22138
22392
  text.setAttributes(from);
22139
22393
  const listener = this._afterRelatedGraphicAttributeUpdate(text, texts, index, relatedGraphic, {
22140
22394
  mode,
@@ -22148,9 +22402,9 @@
22148
22402
  }
22149
22403
  }
22150
22404
  else if (state === 'update') {
22151
- const prevLabel = prevTextMap.get(relatedGraphic);
22152
- prevTextMap.delete(relatedGraphic);
22153
- currentTextMap.set(relatedGraphic, prevLabel);
22405
+ const prevLabel = prevTextMap.get(textKey);
22406
+ prevTextMap.delete(textKey);
22407
+ currentTextMap.set(textKey, prevLabel);
22154
22408
  const prevText = prevLabel.text;
22155
22409
  prevText.animate().to(text.attribute, duration, easing);
22156
22410
  if (prevLabel.labelLine) {
@@ -22185,10 +22439,11 @@
22185
22439
  labels.forEach(text => {
22186
22440
  var _a;
22187
22441
  const labelLine = this._labelLine(text);
22188
- const relatedGraphic = this._idToGraphic.get(text.attribute.id);
22442
+ const relatedGraphic = this.getRelatedGrphic(text.attribute);
22189
22443
  const state = (prevTextMap === null || prevTextMap === void 0 ? void 0 : prevTextMap.get(relatedGraphic)) ? 'update' : 'enter';
22444
+ const textKey = this._isCollectionBase ? text.attribute.id : relatedGraphic;
22190
22445
  if (state === 'enter') {
22191
- currentTextMap.set(relatedGraphic, labelLine ? { text, labelLine } : { text });
22446
+ currentTextMap.set(textKey, labelLine ? { text, labelLine } : { text });
22192
22447
  this.add(text);
22193
22448
  if (labelLine) {
22194
22449
  this.add(labelLine);
@@ -22196,9 +22451,9 @@
22196
22451
  this._syncStateWithRelatedGraphic(relatedGraphic);
22197
22452
  }
22198
22453
  else if (state === 'update') {
22199
- const prevLabel = prevTextMap.get(relatedGraphic);
22200
- prevTextMap.delete(relatedGraphic);
22201
- currentTextMap.set(relatedGraphic, prevLabel);
22454
+ const prevLabel = prevTextMap.get(textKey);
22455
+ prevTextMap.delete(textKey);
22456
+ currentTextMap.set(textKey, prevLabel);
22202
22457
  prevLabel.text.setAttributes(text.attribute);
22203
22458
  if (prevLabel === null || prevLabel === void 0 ? void 0 : prevLabel.labelLine) {
22204
22459
  prevLabel.labelLine.setAttributes({ points: (_a = text.attribute) === null || _a === void 0 ? void 0 : _a.points });
@@ -22220,7 +22475,7 @@
22220
22475
  }
22221
22476
  _afterRelatedGraphicAttributeUpdate(text, texts, index, relatedGraphic, { mode, duration, easing, to, delay }) {
22222
22477
  const listener = (event) => {
22223
- var _a;
22478
+ var _a, _b;
22224
22479
  const { detail } = event;
22225
22480
  if (!detail) {
22226
22481
  return {};
@@ -22259,7 +22514,15 @@
22259
22514
  break;
22260
22515
  case 'same-time':
22261
22516
  default:
22262
- if (detail.animationState.isFirstFrameOfStep) {
22517
+ if (this._isCollectionBase) {
22518
+ const point = this._idToPoint.get(text.attribute.id);
22519
+ if (point &&
22520
+ (!text.animates || !text.animates.has('label-animate')) &&
22521
+ this._baseMarks[0].containsPoint(point.x, point.y, IContainPointMode.LOCAL, (_b = this.stage) === null || _b === void 0 ? void 0 : _b.pickerService)) {
22522
+ text.animate({ onEnd }).wait(delay).to(to, duration, easing);
22523
+ }
22524
+ }
22525
+ else if (detail.animationState.isFirstFrameOfStep) {
22263
22526
  text.animate({ onEnd }).wait(delay).to(to, duration, easing);
22264
22527
  }
22265
22528
  break;
@@ -22284,7 +22547,7 @@
22284
22547
  if (!label) {
22285
22548
  continue;
22286
22549
  }
22287
- const baseMark = this._idToGraphic.get(label.attribute.id);
22550
+ const baseMark = this.getRelatedGrphic(label.attribute);
22288
22551
  const backgroundColor = baseMark.attribute.fill;
22289
22552
  const foregroundColor = label.attribute.fill;
22290
22553
  const baseColor = backgroundColor;
@@ -22361,56 +22624,7 @@
22361
22624
  this.name = 'symbol-label';
22362
22625
  }
22363
22626
  labeling(textBounds, graphicBounds, position = 'top', offset = 0) {
22364
- if (!textBounds) {
22365
- return;
22366
- }
22367
- const { x1, y1, x2, y2 } = textBounds;
22368
- const width = Math.abs(x2 - x1);
22369
- const height = Math.abs(y2 - y1);
22370
- const anchorX = (graphicBounds.x1 + graphicBounds.x2) / 2;
22371
- const anchorY = (graphicBounds.y1 + graphicBounds.y2) / 2;
22372
- let sx = 0;
22373
- let sy = 0;
22374
- let offsetX = 0;
22375
- let offsetY = 0;
22376
- if (graphicBounds) {
22377
- offsetX = Math.abs(graphicBounds.x1 - graphicBounds.x2) / 2;
22378
- offsetY = Math.abs(graphicBounds.y1 - graphicBounds.y2) / 2;
22379
- }
22380
- const angle = {
22381
- 'top-right': -235,
22382
- 'top-left': 235,
22383
- 'bottom-right': 45,
22384
- 'bottom-left': -45
22385
- };
22386
- switch (position) {
22387
- case 'top':
22388
- sy = -1;
22389
- break;
22390
- case 'bottom':
22391
- sy = 1;
22392
- break;
22393
- case 'left':
22394
- sx = -1;
22395
- break;
22396
- case 'right':
22397
- sx = 1;
22398
- break;
22399
- case 'bottom-left':
22400
- case 'bottom-right':
22401
- case 'top-left':
22402
- case 'top-right':
22403
- sx = Math.sin(angle[position] * (Math.PI / 180));
22404
- sy = Math.cos(angle[position] * (Math.PI / 180));
22405
- break;
22406
- case 'center':
22407
- sx = 0;
22408
- sy = 0;
22409
- break;
22410
- }
22411
- const x = anchorX + sx * (offset + offsetX) + Math.sign(sx) * (width / 2);
22412
- const y = anchorY + sy * (offset + offsetY) + Math.sign(sy) * (height / 2);
22413
- return { x, y };
22627
+ return labelingPoint(textBounds, graphicBounds, position, offset);
22414
22628
  }
22415
22629
  }
22416
22630
  SymbolLabel.defaultAttributes = {
@@ -22549,125 +22763,6 @@
22549
22763
  pickable: false
22550
22764
  };
22551
22765
 
22552
- function polarToCartesian(point) {
22553
- if (!point.radius) {
22554
- return { x: 0, y: 0 };
22555
- }
22556
- return {
22557
- x: Math.cos(point.angle) * point.radius,
22558
- y: Math.sin(point.angle) * point.radius
22559
- };
22560
- }
22561
- function circlePoint(x0, y0, radius, radian) {
22562
- const offset = polarToCartesian({
22563
- radius,
22564
- angle: radian
22565
- });
22566
- return {
22567
- x: x0 + offset.x,
22568
- y: y0 + offset.y
22569
- };
22570
- }
22571
- function computeQuadrant(angle) {
22572
- angle = normalizeAngle(angle);
22573
- if (angle > 0 && angle <= Math.PI / 2) {
22574
- return 2;
22575
- }
22576
- else if (angle > Math.PI / 2 && angle <= Math.PI) {
22577
- return 3;
22578
- }
22579
- else if (angle > Math.PI && angle <= (3 * Math.PI) / 2) {
22580
- return 4;
22581
- }
22582
- return 1;
22583
- }
22584
- function normalizeAngle(angle) {
22585
- while (angle < 0) {
22586
- angle += Math.PI * 2;
22587
- }
22588
- while (angle >= Math.PI * 2) {
22589
- angle -= Math.PI * 2;
22590
- }
22591
- return angle;
22592
- }
22593
- function isQuadrantLeft(quadrant) {
22594
- return quadrant === 3 || quadrant === 4;
22595
- }
22596
- function isQuadrantRight(quadrant) {
22597
- return quadrant === 1 || quadrant === 2;
22598
- }
22599
- function lineCirclePoints(a, b, c, x0, y0, r) {
22600
- if ((a === 0 && b === 0) || r <= 0) {
22601
- return [];
22602
- }
22603
- if (a === 0) {
22604
- const y1 = -c / b;
22605
- const fy = (y1 - y0) ** 2;
22606
- const fd = r ** 2 - fy;
22607
- if (fd < 0) {
22608
- return [];
22609
- }
22610
- else if (fd === 0) {
22611
- return [{ x: x0, y: y1 }];
22612
- }
22613
- const x1 = Math.sqrt(fd) + x0;
22614
- const x2 = -Math.sqrt(fd) + x0;
22615
- return [
22616
- { x: x1, y: y1 },
22617
- { x: x2, y: y1 }
22618
- ];
22619
- }
22620
- else if (b === 0) {
22621
- const x1 = -c / a;
22622
- const fx = (x1 - x0) ** 2;
22623
- const fd = r ** 2 - fx;
22624
- if (fd < 0) {
22625
- return [];
22626
- }
22627
- else if (fd === 0) {
22628
- return [{ x: x1, y: y0 }];
22629
- }
22630
- const y1 = Math.sqrt(fd) + y0;
22631
- const y2 = -Math.sqrt(fd) + y0;
22632
- return [
22633
- { x: x1, y: y1 },
22634
- { x: x1, y: y2 }
22635
- ];
22636
- }
22637
- const fa = (b / a) ** 2 + 1;
22638
- const fb = 2 * ((c / a + x0) * (b / a) - y0);
22639
- const fc = (c / a + x0) ** 2 + y0 ** 2 - r ** 2;
22640
- const fd = fb ** 2 - 4 * fa * fc;
22641
- if (fd < 0) {
22642
- return [];
22643
- }
22644
- const y1 = (-fb + Math.sqrt(fd)) / (2 * fa);
22645
- const y2 = (-fb - Math.sqrt(fd)) / (2 * fa);
22646
- const x1 = -(b * y1 + c) / a;
22647
- const x2 = -(b * y2 + c) / a;
22648
- if (fd === 0) {
22649
- return [{ x: x1, y: y1 }];
22650
- }
22651
- return [
22652
- { x: x1, y: y1 },
22653
- { x: x2, y: y2 }
22654
- ];
22655
- }
22656
- function connectLineRadian(radius, length) {
22657
- if (length > radius * 2) {
22658
- return NaN;
22659
- }
22660
- return Math.asin(length / 2 / radius) * 2;
22661
- }
22662
- function checkBoundsOverlap(boundsA, boundsB) {
22663
- const { x1: ax1, y1: ay1, x2: ax2, y2: ay2 } = boundsA;
22664
- const { x1: bx1, y1: by1, x2: bx2, y2: by2 } = boundsB;
22665
- return !((ax1 <= bx1 && ax2 <= bx1) ||
22666
- (ax1 >= bx2 && ax2 >= bx2) ||
22667
- (ay1 <= by1 && ay2 <= by1) ||
22668
- (ay1 >= by2 && ay2 >= by2));
22669
- }
22670
-
22671
22766
  class ArcInfo {
22672
22767
  constructor(refDatum, center, outerCenter, quadrant, radian, middleAngle, innerRadius, outerRadius, circleCenter) {
22673
22768
  this.refDatum = refDatum;
@@ -23392,10 +23487,33 @@
23392
23487
  pickable: false
23393
23488
  };
23394
23489
 
23490
+ class LineDataLabel extends LabelBase {
23491
+ constructor(attributes) {
23492
+ super(vutils.merge({}, LineDataLabel.defaultAttributes, attributes));
23493
+ this.name = 'line-data-label';
23494
+ }
23495
+ labeling(textBounds, graphicBounds, position = 'top', offset = 0) {
23496
+ return labelingPoint(textBounds, graphicBounds, position, offset);
23497
+ }
23498
+ }
23499
+ LineDataLabel.defaultAttributes = {
23500
+ textStyle: {
23501
+ fontSize: 12,
23502
+ fill: '#000',
23503
+ textAlign: 'center',
23504
+ textBaseline: 'middle',
23505
+ boundsPadding: [-1, 0, -1, 0]
23506
+ },
23507
+ position: 'top',
23508
+ offset: 5,
23509
+ pickable: false
23510
+ };
23511
+
23395
23512
  const labelComponentMap = {
23396
23513
  rect: RectLabel,
23397
23514
  symbol: SymbolLabel,
23398
- arc: ArcLabel
23515
+ arc: ArcLabel,
23516
+ 'line-data': LineDataLabel
23399
23517
  };
23400
23518
  class DataLabel extends AbstractComponent {
23401
23519
  constructor(attributes) {
@@ -25619,6 +25737,12 @@
25619
25737
  orient: 'bottom',
25620
25738
  showDetail: 'auto',
25621
25739
  brushSelect: true,
25740
+ zoomLock: false,
25741
+ minSpan: 0,
25742
+ maxSpan: 1,
25743
+ delayType: 'throttle',
25744
+ delayTime: 0,
25745
+ realTime: true,
25622
25746
  backgroundStyle: {
25623
25747
  fill: 'white',
25624
25748
  stroke: '#D1DBEE',
@@ -25707,6 +25831,10 @@
25707
25831
  }
25708
25832
  };
25709
25833
 
25834
+ const delayMap$1 = {
25835
+ debounce: vutils.debounce,
25836
+ throttle: vutils.throttle
25837
+ };
25710
25838
  class DataZoom extends AbstractComponent {
25711
25839
  constructor(attributes) {
25712
25840
  super(vutils.merge({}, DataZoom.defaultAttributes, attributes));
@@ -25755,52 +25883,51 @@
25755
25883
  };
25756
25884
  this._onHandlerPointerMove = (e) => {
25757
25885
  e.stopPropagation();
25758
- const { start, end, brushSelect } = this.attribute;
25886
+ const { start: startAttr, end: endAttr, brushSelect, realTime = true } = this.attribute;
25759
25887
  const pos = this.eventPosToStagePos(e);
25760
25888
  const { attPos, max } = this._layoutCache;
25761
25889
  const dis = (pos[attPos] - this._activeCache.lastPos[attPos]) / max;
25890
+ let { start, end } = this.state;
25762
25891
  if (this._activeState) {
25763
25892
  if (this._activeTag === DataZoomActiveTag.middleHandler) {
25764
25893
  this.moveZoomWithMiddle((this.state.start + this.state.end) / 2 + dis);
25765
25894
  }
25766
25895
  else if (this._activeTag === DataZoomActiveTag.startHandler) {
25767
- if (this.state.start + dis > this.state.end) {
25768
- this.state.start = this.state.end;
25769
- this.state.end = this.state.start + dis;
25896
+ if (start + dis > end) {
25897
+ start = end;
25898
+ end = start + dis;
25770
25899
  this._activeTag = DataZoomActiveTag.endHandler;
25771
25900
  }
25772
25901
  else {
25773
- this.state.start = this.state.start + dis;
25902
+ start = start + dis;
25774
25903
  }
25775
25904
  }
25776
25905
  else if (this._activeTag === DataZoomActiveTag.endHandler) {
25777
- if (this.state.end + dis < this.state.start) {
25778
- this.state.end = this.state.start;
25779
- this.state.start = this.state.end + dis;
25906
+ if (end + dis < start) {
25907
+ end = start;
25908
+ start = end + dis;
25780
25909
  this._activeTag = DataZoomActiveTag.startHandler;
25781
25910
  }
25782
25911
  else {
25783
- this.state.end = this.state.end + dis;
25912
+ end = end + dis;
25784
25913
  }
25785
25914
  }
25786
25915
  this._activeCache.lastPos = pos;
25787
25916
  brushSelect && this.renderDragMask();
25788
25917
  }
25789
- this.state.start = Math.min(Math.max(this.state.start, 0), 1);
25790
- this.state.end = Math.min(Math.max(this.state.end, 0), 1);
25791
- if (start !== this.state.start || end !== this.state.end) {
25792
- this.setAttributes({
25793
- start: this.state.start,
25794
- end: this.state.end
25795
- });
25796
- this._updateStateCallback && this._updateStateCallback(this.state.start, this.state.end);
25797
- this._dispatchChangeEvent(this.state.start, this.state.end);
25918
+ start = Math.min(Math.max(start, 0), 1);
25919
+ end = Math.min(Math.max(end, 0), 1);
25920
+ if (startAttr !== start || endAttr !== end) {
25921
+ this.setStateAttr(start, end, true);
25922
+ realTime && this._updateStateCallback && this._updateStateCallback(start, end);
25923
+ this._dispatchChangeEvent(start, end);
25798
25924
  }
25799
25925
  };
25800
- const { start, end, size, orient, showDetail, position, previewData, previewCallbackX, previewCallbackY, previewCallbackX1, previewCallbackY1, updateStateCallback } = this.attribute;
25926
+ const { start, end, size, orient, showDetail, position, previewData, previewPointsX, previewPointsY, previewPointsX1, previewPointsY1, updateStateCallback } = this.attribute;
25801
25927
  const { width, height } = size;
25802
25928
  start && (this.state.start = start);
25803
25929
  end && (this.state.end = end);
25930
+ this._spanCache = this.state.end - this.state.start;
25804
25931
  this._isHorizontal = orient === 'top' || orient === 'bottom';
25805
25932
  this._layoutCache.max = this._isHorizontal ? width : height;
25806
25933
  this._layoutCache.attPos = this._isHorizontal ? 'x' : 'y';
@@ -25814,17 +25941,17 @@
25814
25941
  this._showText = showDetail;
25815
25942
  }
25816
25943
  previewData && (this._previewData = previewData);
25817
- vutils.isFunction(previewCallbackX) && (this._previewCallbackX = previewCallbackX);
25818
- vutils.isFunction(previewCallbackY) && (this._previewCallbackY = previewCallbackY);
25819
- vutils.isFunction(previewCallbackX1) && (this._previewCallbackX1 = previewCallbackX1);
25820
- vutils.isFunction(previewCallbackY1) && (this._previewCallbackY1 = previewCallbackY1);
25944
+ vutils.isFunction(previewPointsX) && (this._previewPointsX = previewPointsX);
25945
+ vutils.isFunction(previewPointsY) && (this._previewPointsY = previewPointsY);
25946
+ vutils.isFunction(previewPointsX1) && (this._previewPointsX1 = previewPointsX1);
25947
+ vutils.isFunction(previewPointsY1) && (this._previewPointsY1 = previewPointsY1);
25821
25948
  vutils.isFunction(updateStateCallback) && (this._updateStateCallback = updateStateCallback);
25822
25949
  }
25823
25950
  bindEvents() {
25824
25951
  if (this.attribute.disableTriggerEvent) {
25825
25952
  return;
25826
25953
  }
25827
- const { showDetail, brushSelect } = this.attribute;
25954
+ const { showDetail, brushSelect, delayType = 'throttle', delayTime = 0 } = this.attribute;
25828
25955
  if (this._startHandler) {
25829
25956
  this._startHandler.addEventListener('pointerdown', (e) => this._onHandlerPointerDown(e, 'start'));
25830
25957
  }
@@ -25851,12 +25978,12 @@
25851
25978
  this._selectedPreviewGroup.addEventListener('pointerdown', (e) => this._onHandlerPointerDown(e, selectedTag));
25852
25979
  }
25853
25980
  if (vglobal.env === 'browser') {
25854
- vglobal.addEventListener('pointermove', this._onHandlerPointerMove.bind(this), {
25981
+ vglobal.addEventListener('pointermove', delayMap$1[delayType](this._onHandlerPointerMove.bind(this), delayTime), {
25855
25982
  capture: true
25856
25983
  });
25857
25984
  vglobal.addEventListener('pointerup', this._onHandlerPointerUp.bind(this));
25858
25985
  }
25859
- this.addEventListener('pointermove', this._onHandlerPointerMove, {
25986
+ this.addEventListener('pointermove', delayMap$1[delayType](this._onHandlerPointerMove, delayTime), {
25860
25987
  capture: true
25861
25988
  });
25862
25989
  this.addEventListener('pointerup', this._onHandlerPointerUp);
@@ -25877,6 +26004,17 @@
25877
26004
  }
25878
26005
  return this._activeCache.lastPos[attPos] - this._activeCache.startPos[attPos];
25879
26006
  }
26007
+ setStateAttr(start, end, shouldRender) {
26008
+ const { zoomLock = false, minSpan = 0, maxSpan = 1 } = this.attribute;
26009
+ const span = end - start;
26010
+ if (span !== this._spanCache && (zoomLock || span < minSpan || span > maxSpan)) {
26011
+ return;
26012
+ }
26013
+ this._spanCache = span;
26014
+ this.state.start = start;
26015
+ this.state.end = end;
26016
+ shouldRender && this.setAttributes({ start, end });
26017
+ }
25880
26018
  eventPosToStagePos(e) {
25881
26019
  var _a, _b, _c;
25882
26020
  const stagePosition = (_a = this.stage) === null || _a === void 0 ? void 0 : _a.window.getBoundingClientRect();
@@ -25887,7 +26025,7 @@
25887
26025
  }
25888
26026
  _onHandlerPointerUp(e) {
25889
26027
  e.preventDefault();
25890
- const { start, end, brushSelect } = this.attribute;
26028
+ const { start, end, brushSelect, realTime = true } = this.attribute;
25891
26029
  if (this._activeState) {
25892
26030
  if (this._activeTag === DataZoomActiveTag.background) {
25893
26031
  const pos = this.eventPosToStagePos(e);
@@ -25896,11 +26034,8 @@
25896
26034
  }
25897
26035
  this._activeState = false;
25898
26036
  brushSelect && this.renderDragMask();
25899
- if (start !== this.state.start || end !== this.state.end) {
25900
- this.setAttributes({
25901
- start: this.state.start,
25902
- end: this.state.end
25903
- });
26037
+ if (!realTime || start !== this.state.start || end !== this.state.end) {
26038
+ this.setStateAttr(this.state.start, this.state.end, true);
25904
26039
  this._updateStateCallback && this._updateStateCallback(this.state.start, this.state.end);
25905
26040
  this._dispatchChangeEvent(this.state.start, this.state.end);
25906
26041
  }
@@ -25926,8 +26061,7 @@
25926
26061
  this.moveZoomWithMiddle(start);
25927
26062
  }
25928
26063
  else {
25929
- this.state.start = start;
25930
- this.state.end = end;
26064
+ this.setStateAttr(start, end, false);
25931
26065
  }
25932
26066
  }
25933
26067
  moveZoomWithMiddle(middle) {
@@ -25946,8 +26080,7 @@
25946
26080
  offset = -this.state.start;
25947
26081
  }
25948
26082
  }
25949
- this.state.start = this.state.start + offset;
25950
- this.state.end = this.state.end + offset;
26083
+ this.setStateAttr(this.state.start + offset, this.state.end + offset, false);
25951
26084
  }
25952
26085
  renderDragMask() {
25953
26086
  const { dragMaskStyle } = this.attribute;
@@ -26177,8 +26310,8 @@
26177
26310
  getPreviewLinePoints() {
26178
26311
  const previewPoints = this._previewData.map(d => {
26179
26312
  return {
26180
- x: this._previewCallbackX && this._previewCallbackX(d),
26181
- y: this._previewCallbackY && this._previewCallbackY(d)
26313
+ x: this._previewPointsX && this._previewPointsX(d),
26314
+ y: this._previewPointsY && this._previewPointsY(d)
26182
26315
  };
26183
26316
  });
26184
26317
  if (previewPoints.length === 0) {
@@ -26190,10 +26323,10 @@
26190
26323
  getPreviewAreaPoints() {
26191
26324
  const previewPoints = this._previewData.map(d => {
26192
26325
  return {
26193
- x: this._previewCallbackX && this._previewCallbackX(d),
26194
- y: this._previewCallbackY && this._previewCallbackY(d),
26195
- x1: this._previewCallbackX1 && this._previewCallbackX1(d),
26196
- y1: this._previewCallbackY1 && this._previewCallbackY1(d)
26326
+ x: this._previewPointsX && this._previewPointsX(d),
26327
+ y: this._previewPointsY && this._previewPointsY(d),
26328
+ x1: this._previewPointsX1 && this._previewPointsX1(d),
26329
+ y1: this._previewPointsY1 && this._previewPointsY1(d)
26197
26330
  };
26198
26331
  });
26199
26332
  if (previewPoints.length === 0) {
@@ -26279,7 +26412,7 @@
26279
26412
  this.state.start = start;
26280
26413
  this.state.end = end;
26281
26414
  if (startAttr !== this.state.start || endAttr !== this.state.end) {
26282
- this.setAttributes({ start, end });
26415
+ this.setStateAttr(start, end, true);
26283
26416
  this._updateStateCallback && this._updateStateCallback(start, end);
26284
26417
  this._dispatchChangeEvent(start, end);
26285
26418
  }
@@ -26312,17 +26445,17 @@
26312
26445
  setUpdateStateCallback(callback) {
26313
26446
  vutils.isFunction(callback) && (this._updateStateCallback = callback);
26314
26447
  }
26315
- setPreviewCallbackX(callback) {
26316
- vutils.isFunction(callback) && (this._previewCallbackX = callback);
26448
+ setPreviewPointsX(callback) {
26449
+ vutils.isFunction(callback) && (this._previewPointsX = callback);
26317
26450
  }
26318
- setPreviewCallbackY(callback) {
26319
- vutils.isFunction(callback) && (this._previewCallbackY = callback);
26451
+ setPreviewPointsY(callback) {
26452
+ vutils.isFunction(callback) && (this._previewPointsY = callback);
26320
26453
  }
26321
- setPreviewCallbackX1(callback) {
26322
- vutils.isFunction(callback) && (this._previewCallbackX1 = callback);
26454
+ setPreviewPointsX1(callback) {
26455
+ vutils.isFunction(callback) && (this._previewPointsX1 = callback);
26323
26456
  }
26324
- setPreviewCallbackY1(callback) {
26325
- vutils.isFunction(callback) && (this._previewCallbackY1 = callback);
26457
+ setPreviewPointsY1(callback) {
26458
+ vutils.isFunction(callback) && (this._previewPointsY1 = callback);
26326
26459
  }
26327
26460
  setStatePointToData(callback) {
26328
26461
  vutils.isFunction(callback) && (this._statePointToData = callback);
@@ -28056,9 +28189,11 @@
28056
28189
  vglobal.addEventListener('pointerup', this._onHandlerPointerUp);
28057
28190
  }
28058
28191
  else {
28059
- this._currentHandler.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
28060
- this._currentHandler.addEventListener('pointerup', this._onHandlerPointerUp);
28061
- this._currentHandler.addEventListener('pointerupoutside', this._onHandlerPointerUp);
28192
+ this.stage.addEventListener('pointermove', this._onHandlerPointerMove, {
28193
+ capture: true
28194
+ });
28195
+ this.stage.addEventListener('pointerup', this._onHandlerPointerUp);
28196
+ this.stage.addEventListener('pointerupoutside', this._onHandlerPointerUp);
28062
28197
  }
28063
28198
  };
28064
28199
  this._onHandlerPointerMove = (e) => {
@@ -28106,10 +28241,11 @@
28106
28241
  vglobal.removeEventListener('pointerup', this._onHandlerPointerUp);
28107
28242
  }
28108
28243
  else {
28109
- const currentTarget = e.target;
28110
- currentTarget.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
28111
- currentTarget.removeEventListener('pointerup', this._onHandlerPointerUp);
28112
- currentTarget.removeEventListener('pointerupoutside', this._onHandlerPointerUp);
28244
+ this.stage.removeEventListener('pointermove', this._onHandlerPointerMove, {
28245
+ capture: true
28246
+ });
28247
+ this.stage.removeEventListener('pointerup', this._onHandlerPointerUp);
28248
+ this.stage.removeEventListener('pointerupoutside', this._onHandlerPointerUp);
28113
28249
  }
28114
28250
  };
28115
28251
  this._onTrackPointerdown = (e) => {
@@ -28122,11 +28258,11 @@
28122
28258
  vglobal.addEventListener('pointerup', this._onTrackPointerUp);
28123
28259
  }
28124
28260
  else {
28125
- this._track.addEventListener('pointermove', this._onTrackPointerMove, {
28261
+ this.stage.addEventListener('pointermove', this._onTrackPointerMove, {
28126
28262
  capture: true
28127
28263
  });
28128
- this._track.addEventListener('pointerup', this._onTrackPointerUp);
28129
- this._track.addEventListener('pointerupoutside', this._onTrackPointerUp);
28264
+ this.stage.addEventListener('pointerup', this._onTrackPointerUp);
28265
+ this.stage.addEventListener('pointerupoutside', this._onTrackPointerUp);
28130
28266
  }
28131
28267
  };
28132
28268
  this._onTrackPointerMove = (e) => {
@@ -28183,11 +28319,11 @@
28183
28319
  vglobal.removeEventListener('pointerup', this._onTrackPointerUp);
28184
28320
  }
28185
28321
  else {
28186
- this._track.removeEventListener('pointermove', this._onTrackPointerMove, {
28322
+ this.stage.removeEventListener('pointermove', this._onTrackPointerMove, {
28187
28323
  capture: true
28188
28324
  });
28189
- this._track.removeEventListener('pointerup', this._onTrackPointerUp);
28190
- this._track.removeEventListener('pointerupoutside', this._onTrackPointerUp);
28325
+ this.stage.removeEventListener('pointerup', this._onTrackPointerUp);
28326
+ this.stage.removeEventListener('pointerupoutside', this._onTrackPointerUp);
28191
28327
  }
28192
28328
  };
28193
28329
  this._onRailPointerDown = (e) => {
@@ -30974,7 +31110,7 @@
30974
31110
  }
30975
31111
  };
30976
31112
 
30977
- const version = "0.16.3-alpha.0";
31113
+ const version = "0.16.4";
30978
31114
 
30979
31115
  exports.AbstractComponent = AbstractComponent;
30980
31116
  exports.ArcInfo = ArcInfo;
@@ -31008,6 +31144,7 @@
31008
31144
  exports.LineAxis = LineAxis;
31009
31145
  exports.LineAxisGrid = LineAxisGrid;
31010
31146
  exports.LineCrosshair = LineCrosshair;
31147
+ exports.LineDataLabel = LineDataLabel;
31011
31148
  exports.LineLabel = LineLabel;
31012
31149
  exports.LinkPath = LinkPath;
31013
31150
  exports.MarkArea = MarkArea;