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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/cjs/axis/base.d.ts +2 -1
  2. package/cjs/axis/base.js +4 -1
  3. package/cjs/axis/base.js.map +1 -1
  4. package/cjs/axis/circle.d.ts +6 -1
  5. package/cjs/axis/circle.js +6 -3
  6. package/cjs/axis/circle.js.map +1 -1
  7. package/cjs/axis/util.d.ts +8 -0
  8. package/cjs/axis/util.js +34 -0
  9. package/cjs/axis/util.js.map +1 -0
  10. package/cjs/brush/type.d.ts +1 -1
  11. package/cjs/brush/type.js.map +1 -1
  12. package/cjs/checkbox/index.js +1 -2
  13. package/cjs/checkbox/type.js +2 -1
  14. package/cjs/data-zoom/config.d.ts +6 -0
  15. package/cjs/data-zoom/config.js +6 -0
  16. package/cjs/data-zoom/config.js.map +1 -1
  17. package/cjs/data-zoom/data-zoom.d.ts +16 -8
  18. package/cjs/data-zoom/data-zoom.js +54 -49
  19. package/cjs/data-zoom/data-zoom.js.map +1 -1
  20. package/cjs/data-zoom/type.d.ts +10 -5
  21. package/cjs/data-zoom/type.js.map +1 -1
  22. package/cjs/index.d.ts +1 -1
  23. package/cjs/index.js +1 -1
  24. package/cjs/index.js.map +1 -1
  25. package/cjs/indicator/config.js +1 -2
  26. package/cjs/indicator/index.js +2 -1
  27. package/cjs/interface.d.ts +1 -0
  28. package/cjs/interface.js.map +1 -1
  29. package/cjs/label/base.js +17 -15
  30. package/cjs/label/base.js.map +1 -1
  31. package/cjs/label/util.js +1 -2
  32. package/cjs/legend/base.js +2 -1
  33. package/cjs/marker/area.js +1 -1
  34. package/cjs/scrollbar/scrollbar.d.ts +4 -0
  35. package/cjs/scrollbar/scrollbar.js +33 -17
  36. package/cjs/scrollbar/scrollbar.js.map +1 -1
  37. package/cjs/scrollbar/type.d.ts +4 -1
  38. package/cjs/scrollbar/type.js.map +1 -1
  39. package/cjs/slider/slider.js +10 -14
  40. package/cjs/slider/slider.js.map +1 -1
  41. package/dist/index.js +213 -102
  42. package/dist/index.min.js +1 -1
  43. package/es/axis/base.d.ts +2 -1
  44. package/es/axis/base.js +4 -1
  45. package/es/axis/base.js.map +1 -1
  46. package/es/axis/circle.d.ts +6 -1
  47. package/es/axis/circle.js +7 -2
  48. package/es/axis/circle.js.map +1 -1
  49. package/es/axis/util.d.ts +8 -0
  50. package/es/axis/util.js +28 -0
  51. package/es/axis/util.js.map +1 -0
  52. package/es/brush/type.d.ts +1 -1
  53. package/es/brush/type.js.map +1 -1
  54. package/es/checkbox/index.js +1 -2
  55. package/es/checkbox/type.js +2 -1
  56. package/es/data-zoom/config.d.ts +6 -0
  57. package/es/data-zoom/config.js +6 -0
  58. package/es/data-zoom/config.js.map +1 -1
  59. package/es/data-zoom/data-zoom.d.ts +16 -8
  60. package/es/data-zoom/data-zoom.js +55 -49
  61. package/es/data-zoom/data-zoom.js.map +1 -1
  62. package/es/data-zoom/type.d.ts +10 -5
  63. package/es/data-zoom/type.js.map +1 -1
  64. package/es/index.d.ts +1 -1
  65. package/es/index.js +1 -1
  66. package/es/index.js.map +1 -1
  67. package/es/indicator/config.js +1 -2
  68. package/es/indicator/index.js +2 -1
  69. package/es/interface.d.ts +1 -0
  70. package/es/interface.js.map +1 -1
  71. package/es/label/base.js +16 -14
  72. package/es/label/base.js.map +1 -1
  73. package/es/label/util.js +1 -2
  74. package/es/legend/base.js +2 -1
  75. package/es/marker/area.js +1 -1
  76. package/es/scrollbar/scrollbar.d.ts +4 -0
  77. package/es/scrollbar/scrollbar.js +35 -17
  78. package/es/scrollbar/scrollbar.js.map +1 -1
  79. package/es/scrollbar/type.d.ts +4 -1
  80. package/es/scrollbar/type.js.map +1 -1
  81. package/es/slider/slider.js +10 -14
  82. package/es/slider/slider.js.map +1 -1
  83. 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
  })),
@@ -20092,6 +20093,10 @@
20092
20093
  }
20093
20094
  }
20094
20095
 
20096
+ const delayMap$2 = {
20097
+ debounce: vutils.debounce,
20098
+ throttle: vutils.throttle
20099
+ };
20095
20100
  class ScrollBar extends AbstractComponent {
20096
20101
  constructor(attributes) {
20097
20102
  super(vutils.merge({}, ScrollBar.defaultAttributes, attributes));
@@ -20129,18 +20134,16 @@
20129
20134
  vglobal.addEventListener('pointerup', this._onSliderPointerUp);
20130
20135
  }
20131
20136
  else {
20132
- this._slider.addEventListener('pointermove', this._onSliderPointerMove, { capture: true });
20133
- this._slider.addEventListener('pointerup', this._onSliderPointerUp);
20134
- this._slider.addEventListener('pointerupoutside', this._onSliderPointerUp);
20137
+ this.stage.addEventListener('pointermove', this._onSliderPointerMove, { capture: true });
20138
+ this.stage.addEventListener('pointerup', this._onSliderPointerUp);
20139
+ this.stage.addEventListener('pointerupoutside', this._onSliderPointerUp);
20135
20140
  }
20136
20141
  };
20137
- this._onSliderPointerMove = (e) => {
20138
- e.stopPropagation();
20142
+ this._computeScrollValue = (e) => {
20139
20143
  const { direction } = this.attribute;
20140
20144
  let currentScrollValue;
20141
20145
  let currentPos;
20142
20146
  let delta = 0;
20143
- const preScrollRange = this.getScrollRange();
20144
20147
  const { width, height } = this._getSliderRenderBounds();
20145
20148
  if (direction === 'vertical') {
20146
20149
  currentPos = e.clientY;
@@ -20152,25 +20155,41 @@
20152
20155
  delta = currentPos - this._prePos;
20153
20156
  currentScrollValue = delta / width;
20154
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);
20155
20164
  this.setScrollRange([preScrollRange[0] + currentScrollValue, preScrollRange[1] + currentScrollValue], true);
20156
20165
  this._prePos = currentPos;
20157
- };
20166
+ }, this.attribute.delayTime);
20158
20167
  this._onSliderPointerUp = (e) => {
20159
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
+ }
20160
20179
  if (vglobal.env === 'browser') {
20161
20180
  vglobal.removeEventListener('pointermove', this._onSliderPointerMove, { capture: true });
20162
20181
  vglobal.removeEventListener('pointerup', this._onSliderPointerUp);
20163
20182
  }
20164
20183
  else {
20165
- this._slider.removeEventListener('pointermove', this._onSliderPointerMove, { capture: true });
20166
- this._slider.removeEventListener('pointerup', this._onSliderPointerUp);
20167
- 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);
20168
20187
  }
20169
20188
  };
20170
20189
  }
20171
20190
  setScrollRange(range, render = true) {
20172
20191
  var _a, _b;
20173
- const { direction = 'horizontal', limitRange = [0, 1], range: preRange } = this.attribute;
20192
+ const { direction = 'horizontal', limitRange = [0, 1], range: preRange, realTime = true } = this.attribute;
20174
20193
  const currScrollRange = vutils.clampRange(range, limitRange[0], limitRange[1]);
20175
20194
  if (render) {
20176
20195
  const sliderPos = this._getSliderPos(currScrollRange);
@@ -20187,10 +20206,12 @@
20187
20206
  }
20188
20207
  }
20189
20208
  this.attribute.range = currScrollRange;
20190
- this._onChange({
20191
- pre: preRange,
20192
- value: currScrollRange
20193
- });
20209
+ if (realTime) {
20210
+ this._onChange({
20211
+ pre: preRange,
20212
+ value: currScrollRange
20213
+ });
20214
+ }
20194
20215
  }
20195
20216
  getScrollRange() {
20196
20217
  return this.attribute.range;
@@ -20199,8 +20220,9 @@
20199
20220
  if (this.attribute.disableTriggerEvent) {
20200
20221
  return;
20201
20222
  }
20223
+ const { delayType = 'throttle', delayTime = 0 } = this.attribute;
20202
20224
  if (this._rail) {
20203
- this._rail.addEventListener('pointerdown', this._onRailPointerDown);
20225
+ this._rail.addEventListener('pointerdown', delayMap$2[delayType](this._onRailPointerDown, delayTime));
20204
20226
  }
20205
20227
  if (this._slider) {
20206
20228
  this._slider.addEventListener('pointerdown', this._onSliderPointerDown);
@@ -20310,7 +20332,10 @@
20310
20332
  fill: 'rgba(0, 0, 0, .0)'
20311
20333
  },
20312
20334
  padding: 2,
20313
- scrollRange: [0, 1]
20335
+ scrollRange: [0, 1],
20336
+ delayType: 'throttle',
20337
+ delayTime: 0,
20338
+ realTime: true
20314
20339
  };
20315
20340
 
20316
20341
  function __rest(s, e) {
@@ -22060,7 +22085,7 @@
22060
22085
  }
22061
22086
  render() {
22062
22087
  this._prepare();
22063
- if ((this._isCollectionBase && vutils.isNil(this._idToPoint)) || (!this._isCollectionBase && vutils.isNil(this._idToGraphic))) {
22088
+ if (vutils.isNil(this._idToGraphic) || (this._isCollectionBase && vutils.isNil(this._idToPoint))) {
22064
22089
  return;
22065
22090
  }
22066
22091
  const { overlap, smartInvert, dataFilter, customLayoutFunc, customOverlapFunc } = this.attribute;
@@ -22156,28 +22181,33 @@
22156
22181
  if (!data || data.length === 0) {
22157
22182
  return;
22158
22183
  }
22184
+ if (!this._idToGraphic) {
22185
+ this._idToGraphic = new Map();
22186
+ }
22159
22187
  if (this._isCollectionBase) {
22160
22188
  if (!this._idToPoint) {
22161
22189
  this._idToPoint = new Map();
22162
22190
  }
22163
- const baseMark = currentBaseMarks[0];
22164
- const points = getPointsOfLineArea(baseMark);
22165
- if (points === null || points === void 0 ? void 0 : points.length) {
22166
- for (let i = 0; i < points.length; i++) {
22167
- const textData = data[i];
22168
- if (textData && points[i]) {
22169
- if (!vutils.isValid(textData.id)) {
22170
- textData.id = `vrender-component-${this.name}-${i}`;
22191
+ let cur = 0;
22192
+ for (let i = 0; i < currentBaseMarks.length; i++) {
22193
+ const baseMark = currentBaseMarks[i];
22194
+ const points = getPointsOfLineArea(baseMark);
22195
+ if (points === null || points === void 0 ? void 0 : points.length) {
22196
+ for (let j = 0; j < points.length; j++) {
22197
+ const textData = data[cur];
22198
+ if (textData && points[j]) {
22199
+ if (!vutils.isValid(textData.id)) {
22200
+ textData.id = `vrender-component-${this.name}-${cur}`;
22201
+ }
22202
+ this._idToPoint.set(textData.id, points[j]);
22203
+ this._idToGraphic.set(textData.id, baseMark);
22171
22204
  }
22172
- this._idToPoint.set(textData.id, points[i]);
22205
+ cur++;
22173
22206
  }
22174
22207
  }
22175
22208
  }
22176
22209
  }
22177
22210
  else {
22178
- if (!this._idToGraphic) {
22179
- this._idToGraphic = new Map();
22180
- }
22181
22211
  for (let i = 0; i < currentBaseMarks.length; i++) {
22182
22212
  const textData = data[i];
22183
22213
  const baseMark = currentBaseMarks[i];
@@ -22191,7 +22221,7 @@
22191
22221
  }
22192
22222
  }
22193
22223
  getRelatedGrphic(item) {
22194
- return this._isCollectionBase ? this._baseMarks[0] : this._idToGraphic.get(item.id);
22224
+ return this._idToGraphic.get(item.id);
22195
22225
  }
22196
22226
  _layout(data = []) {
22197
22227
  const { textStyle = {}, position, offset } = this.attribute;
@@ -24243,7 +24273,10 @@
24243
24273
  layer
24244
24274
  });
24245
24275
  }
24246
- return Object.assign(Object.assign(Object.assign({}, point), { text, lineHeight: textStyle === null || textStyle === void 0 ? void 0 : textStyle.fontSize }), textStyle);
24276
+ return Object.assign(Object.assign(Object.assign({}, this.getLabelPosition(point, vector, text, textStyle)), { text, lineHeight: textStyle === null || textStyle === void 0 ? void 0 : textStyle.fontSize }), textStyle);
24277
+ }
24278
+ getLabelPosition(point, vector, text, style) {
24279
+ return point;
24247
24280
  }
24248
24281
  _transformItems(items) {
24249
24282
  const data = [];
@@ -25005,6 +25038,63 @@
25005
25038
  }
25006
25039
  }
25007
25040
 
25041
+ const clampRadian = (angle = 0) => {
25042
+ if (angle < 0) {
25043
+ while (angle < 0) {
25044
+ angle += vutils.tau;
25045
+ }
25046
+ }
25047
+ else if (angle > 0) {
25048
+ while (angle > vutils.tau) {
25049
+ angle -= vutils.tau;
25050
+ }
25051
+ }
25052
+ return angle;
25053
+ };
25054
+ function isInRange(a, min, max) {
25055
+ return !vutils.isLess(a, min, 0, 1e-6) && !vutils.isGreater(a, max, 0, 1e-6);
25056
+ }
25057
+ function getLabelPosition(tickPosition, tickVector, text, style) {
25058
+ const labelBounds = getTextBounds(Object.assign({ text }, style));
25059
+ const width = labelBounds.width();
25060
+ const height = labelBounds.height();
25061
+ const angle = clampRadian(Math.atan2(tickVector[1], tickVector[0])) - Math.PI;
25062
+ const PI_3_4 = (Math.PI * 3) / 4;
25063
+ const PI_1_4 = Math.PI / 4;
25064
+ const PI_1_2 = Math.PI / 2;
25065
+ const baseX = tickPosition.x;
25066
+ let dx = 0;
25067
+ if (isInRange(angle, -PI_3_4, -PI_1_4)) {
25068
+ dx = ((angle + PI_3_4) / PI_1_2 - 0.5) * width;
25069
+ }
25070
+ else if (isInRange(angle, PI_1_4, PI_3_4)) {
25071
+ dx = (0.5 - (angle - PI_1_4) / PI_1_2) * width;
25072
+ }
25073
+ else if (Math.cos(angle) >= 0) {
25074
+ dx = width * 0.5;
25075
+ }
25076
+ else {
25077
+ dx = -width * 0.5;
25078
+ }
25079
+ const x = baseX - dx;
25080
+ const baseY = tickPosition.y;
25081
+ let dy = 0;
25082
+ if (isInRange(angle, -PI_3_4, -PI_1_4)) {
25083
+ dy = -height * 0.5;
25084
+ }
25085
+ else if (isInRange(angle, PI_1_4, PI_3_4)) {
25086
+ dy = height * 0.5;
25087
+ }
25088
+ else if (Math.cos(angle) >= 0) {
25089
+ dy = (0.5 - (PI_1_4 - angle) / PI_1_2) * height;
25090
+ }
25091
+ else {
25092
+ dy = (0.5 - clampRadian(angle - PI_3_4) / PI_1_2) * height;
25093
+ }
25094
+ const y = baseY - dy;
25095
+ return { x, y };
25096
+ }
25097
+
25008
25098
  class CircleAxis extends AxisBase {
25009
25099
  constructor(attributes) {
25010
25100
  super(vutils.merge({}, CircleAxis.defaultAttributes, attributes));
@@ -25133,10 +25223,13 @@
25133
25223
  }
25134
25224
  getLabelAlign(vector, inside, angle) {
25135
25225
  return {
25136
- textAlign: this.getTextAlign(vector),
25137
- textBaseline: this.getTextBaseline(vector)
25226
+ textAlign: 'center',
25227
+ textBaseline: 'middle'
25138
25228
  };
25139
25229
  }
25230
+ getLabelPosition(point, vector, text, style) {
25231
+ return getLabelPosition(point, vector, text, style);
25232
+ }
25140
25233
  }
25141
25234
  CircleAxis.defaultAttributes = DEFAULT_AXIS_THEME;
25142
25235
  vutils.mixin(CircleAxis, CircleAxisMixin);
@@ -25712,6 +25805,12 @@
25712
25805
  orient: 'bottom',
25713
25806
  showDetail: 'auto',
25714
25807
  brushSelect: true,
25808
+ zoomLock: false,
25809
+ minSpan: 0,
25810
+ maxSpan: 1,
25811
+ delayType: 'throttle',
25812
+ delayTime: 0,
25813
+ realTime: true,
25715
25814
  backgroundStyle: {
25716
25815
  fill: 'white',
25717
25816
  stroke: '#D1DBEE',
@@ -25800,6 +25899,10 @@
25800
25899
  }
25801
25900
  };
25802
25901
 
25902
+ const delayMap$1 = {
25903
+ debounce: vutils.debounce,
25904
+ throttle: vutils.throttle
25905
+ };
25803
25906
  class DataZoom extends AbstractComponent {
25804
25907
  constructor(attributes) {
25805
25908
  super(vutils.merge({}, DataZoom.defaultAttributes, attributes));
@@ -25848,52 +25951,51 @@
25848
25951
  };
25849
25952
  this._onHandlerPointerMove = (e) => {
25850
25953
  e.stopPropagation();
25851
- const { start, end, brushSelect } = this.attribute;
25954
+ const { start: startAttr, end: endAttr, brushSelect, realTime = true } = this.attribute;
25852
25955
  const pos = this.eventPosToStagePos(e);
25853
25956
  const { attPos, max } = this._layoutCache;
25854
25957
  const dis = (pos[attPos] - this._activeCache.lastPos[attPos]) / max;
25958
+ let { start, end } = this.state;
25855
25959
  if (this._activeState) {
25856
25960
  if (this._activeTag === DataZoomActiveTag.middleHandler) {
25857
25961
  this.moveZoomWithMiddle((this.state.start + this.state.end) / 2 + dis);
25858
25962
  }
25859
25963
  else if (this._activeTag === DataZoomActiveTag.startHandler) {
25860
- if (this.state.start + dis > this.state.end) {
25861
- this.state.start = this.state.end;
25862
- this.state.end = this.state.start + dis;
25964
+ if (start + dis > end) {
25965
+ start = end;
25966
+ end = start + dis;
25863
25967
  this._activeTag = DataZoomActiveTag.endHandler;
25864
25968
  }
25865
25969
  else {
25866
- this.state.start = this.state.start + dis;
25970
+ start = start + dis;
25867
25971
  }
25868
25972
  }
25869
25973
  else if (this._activeTag === DataZoomActiveTag.endHandler) {
25870
- if (this.state.end + dis < this.state.start) {
25871
- this.state.end = this.state.start;
25872
- this.state.start = this.state.end + dis;
25974
+ if (end + dis < start) {
25975
+ end = start;
25976
+ start = end + dis;
25873
25977
  this._activeTag = DataZoomActiveTag.startHandler;
25874
25978
  }
25875
25979
  else {
25876
- this.state.end = this.state.end + dis;
25980
+ end = end + dis;
25877
25981
  }
25878
25982
  }
25879
25983
  this._activeCache.lastPos = pos;
25880
25984
  brushSelect && this.renderDragMask();
25881
25985
  }
25882
- this.state.start = Math.min(Math.max(this.state.start, 0), 1);
25883
- this.state.end = Math.min(Math.max(this.state.end, 0), 1);
25884
- if (start !== this.state.start || end !== this.state.end) {
25885
- this.setAttributes({
25886
- start: this.state.start,
25887
- end: this.state.end
25888
- });
25889
- this._updateStateCallback && this._updateStateCallback(this.state.start, this.state.end);
25890
- this._dispatchChangeEvent(this.state.start, this.state.end);
25986
+ start = Math.min(Math.max(start, 0), 1);
25987
+ end = Math.min(Math.max(end, 0), 1);
25988
+ if (startAttr !== start || endAttr !== end) {
25989
+ this.setStateAttr(start, end, true);
25990
+ realTime && this._updateStateCallback && this._updateStateCallback(start, end);
25991
+ this._dispatchChangeEvent(start, end);
25891
25992
  }
25892
25993
  };
25893
- const { start, end, size, orient, showDetail, position, previewData, previewCallbackX, previewCallbackY, previewCallbackX1, previewCallbackY1, updateStateCallback } = this.attribute;
25994
+ const { start, end, size, orient, showDetail, position, previewData, previewPointsX, previewPointsY, previewPointsX1, previewPointsY1, updateStateCallback } = this.attribute;
25894
25995
  const { width, height } = size;
25895
25996
  start && (this.state.start = start);
25896
25997
  end && (this.state.end = end);
25998
+ this._spanCache = this.state.end - this.state.start;
25897
25999
  this._isHorizontal = orient === 'top' || orient === 'bottom';
25898
26000
  this._layoutCache.max = this._isHorizontal ? width : height;
25899
26001
  this._layoutCache.attPos = this._isHorizontal ? 'x' : 'y';
@@ -25907,17 +26009,17 @@
25907
26009
  this._showText = showDetail;
25908
26010
  }
25909
26011
  previewData && (this._previewData = previewData);
25910
- vutils.isFunction(previewCallbackX) && (this._previewCallbackX = previewCallbackX);
25911
- vutils.isFunction(previewCallbackY) && (this._previewCallbackY = previewCallbackY);
25912
- vutils.isFunction(previewCallbackX1) && (this._previewCallbackX1 = previewCallbackX1);
25913
- vutils.isFunction(previewCallbackY1) && (this._previewCallbackY1 = previewCallbackY1);
26012
+ vutils.isFunction(previewPointsX) && (this._previewPointsX = previewPointsX);
26013
+ vutils.isFunction(previewPointsY) && (this._previewPointsY = previewPointsY);
26014
+ vutils.isFunction(previewPointsX1) && (this._previewPointsX1 = previewPointsX1);
26015
+ vutils.isFunction(previewPointsY1) && (this._previewPointsY1 = previewPointsY1);
25914
26016
  vutils.isFunction(updateStateCallback) && (this._updateStateCallback = updateStateCallback);
25915
26017
  }
25916
26018
  bindEvents() {
25917
26019
  if (this.attribute.disableTriggerEvent) {
25918
26020
  return;
25919
26021
  }
25920
- const { showDetail, brushSelect } = this.attribute;
26022
+ const { showDetail, brushSelect, delayType = 'throttle', delayTime = 0 } = this.attribute;
25921
26023
  if (this._startHandler) {
25922
26024
  this._startHandler.addEventListener('pointerdown', (e) => this._onHandlerPointerDown(e, 'start'));
25923
26025
  }
@@ -25944,12 +26046,12 @@
25944
26046
  this._selectedPreviewGroup.addEventListener('pointerdown', (e) => this._onHandlerPointerDown(e, selectedTag));
25945
26047
  }
25946
26048
  if (vglobal.env === 'browser') {
25947
- vglobal.addEventListener('pointermove', this._onHandlerPointerMove.bind(this), {
26049
+ vglobal.addEventListener('pointermove', delayMap$1[delayType](this._onHandlerPointerMove.bind(this), delayTime), {
25948
26050
  capture: true
25949
26051
  });
25950
26052
  vglobal.addEventListener('pointerup', this._onHandlerPointerUp.bind(this));
25951
26053
  }
25952
- this.addEventListener('pointermove', this._onHandlerPointerMove, {
26054
+ this.addEventListener('pointermove', delayMap$1[delayType](this._onHandlerPointerMove, delayTime), {
25953
26055
  capture: true
25954
26056
  });
25955
26057
  this.addEventListener('pointerup', this._onHandlerPointerUp);
@@ -25970,6 +26072,17 @@
25970
26072
  }
25971
26073
  return this._activeCache.lastPos[attPos] - this._activeCache.startPos[attPos];
25972
26074
  }
26075
+ setStateAttr(start, end, shouldRender) {
26076
+ const { zoomLock = false, minSpan = 0, maxSpan = 1 } = this.attribute;
26077
+ const span = end - start;
26078
+ if (span !== this._spanCache && (zoomLock || span < minSpan || span > maxSpan)) {
26079
+ return;
26080
+ }
26081
+ this._spanCache = span;
26082
+ this.state.start = start;
26083
+ this.state.end = end;
26084
+ shouldRender && this.setAttributes({ start, end });
26085
+ }
25973
26086
  eventPosToStagePos(e) {
25974
26087
  var _a, _b, _c;
25975
26088
  const stagePosition = (_a = this.stage) === null || _a === void 0 ? void 0 : _a.window.getBoundingClientRect();
@@ -25980,7 +26093,7 @@
25980
26093
  }
25981
26094
  _onHandlerPointerUp(e) {
25982
26095
  e.preventDefault();
25983
- const { start, end, brushSelect } = this.attribute;
26096
+ const { start, end, brushSelect, realTime = true } = this.attribute;
25984
26097
  if (this._activeState) {
25985
26098
  if (this._activeTag === DataZoomActiveTag.background) {
25986
26099
  const pos = this.eventPosToStagePos(e);
@@ -25989,11 +26102,8 @@
25989
26102
  }
25990
26103
  this._activeState = false;
25991
26104
  brushSelect && this.renderDragMask();
25992
- if (start !== this.state.start || end !== this.state.end) {
25993
- this.setAttributes({
25994
- start: this.state.start,
25995
- end: this.state.end
25996
- });
26105
+ if (!realTime || start !== this.state.start || end !== this.state.end) {
26106
+ this.setStateAttr(this.state.start, this.state.end, true);
25997
26107
  this._updateStateCallback && this._updateStateCallback(this.state.start, this.state.end);
25998
26108
  this._dispatchChangeEvent(this.state.start, this.state.end);
25999
26109
  }
@@ -26019,8 +26129,7 @@
26019
26129
  this.moveZoomWithMiddle(start);
26020
26130
  }
26021
26131
  else {
26022
- this.state.start = start;
26023
- this.state.end = end;
26132
+ this.setStateAttr(start, end, false);
26024
26133
  }
26025
26134
  }
26026
26135
  moveZoomWithMiddle(middle) {
@@ -26039,8 +26148,7 @@
26039
26148
  offset = -this.state.start;
26040
26149
  }
26041
26150
  }
26042
- this.state.start = this.state.start + offset;
26043
- this.state.end = this.state.end + offset;
26151
+ this.setStateAttr(this.state.start + offset, this.state.end + offset, false);
26044
26152
  }
26045
26153
  renderDragMask() {
26046
26154
  const { dragMaskStyle } = this.attribute;
@@ -26270,8 +26378,8 @@
26270
26378
  getPreviewLinePoints() {
26271
26379
  const previewPoints = this._previewData.map(d => {
26272
26380
  return {
26273
- x: this._previewCallbackX && this._previewCallbackX(d),
26274
- y: this._previewCallbackY && this._previewCallbackY(d)
26381
+ x: this._previewPointsX && this._previewPointsX(d),
26382
+ y: this._previewPointsY && this._previewPointsY(d)
26275
26383
  };
26276
26384
  });
26277
26385
  if (previewPoints.length === 0) {
@@ -26283,10 +26391,10 @@
26283
26391
  getPreviewAreaPoints() {
26284
26392
  const previewPoints = this._previewData.map(d => {
26285
26393
  return {
26286
- x: this._previewCallbackX && this._previewCallbackX(d),
26287
- y: this._previewCallbackY && this._previewCallbackY(d),
26288
- x1: this._previewCallbackX1 && this._previewCallbackX1(d),
26289
- y1: this._previewCallbackY1 && this._previewCallbackY1(d)
26394
+ x: this._previewPointsX && this._previewPointsX(d),
26395
+ y: this._previewPointsY && this._previewPointsY(d),
26396
+ x1: this._previewPointsX1 && this._previewPointsX1(d),
26397
+ y1: this._previewPointsY1 && this._previewPointsY1(d)
26290
26398
  };
26291
26399
  });
26292
26400
  if (previewPoints.length === 0) {
@@ -26372,7 +26480,7 @@
26372
26480
  this.state.start = start;
26373
26481
  this.state.end = end;
26374
26482
  if (startAttr !== this.state.start || endAttr !== this.state.end) {
26375
- this.setAttributes({ start, end });
26483
+ this.setStateAttr(start, end, true);
26376
26484
  this._updateStateCallback && this._updateStateCallback(start, end);
26377
26485
  this._dispatchChangeEvent(start, end);
26378
26486
  }
@@ -26405,17 +26513,17 @@
26405
26513
  setUpdateStateCallback(callback) {
26406
26514
  vutils.isFunction(callback) && (this._updateStateCallback = callback);
26407
26515
  }
26408
- setPreviewCallbackX(callback) {
26409
- vutils.isFunction(callback) && (this._previewCallbackX = callback);
26516
+ setPreviewPointsX(callback) {
26517
+ vutils.isFunction(callback) && (this._previewPointsX = callback);
26410
26518
  }
26411
- setPreviewCallbackY(callback) {
26412
- vutils.isFunction(callback) && (this._previewCallbackY = callback);
26519
+ setPreviewPointsY(callback) {
26520
+ vutils.isFunction(callback) && (this._previewPointsY = callback);
26413
26521
  }
26414
- setPreviewCallbackX1(callback) {
26415
- vutils.isFunction(callback) && (this._previewCallbackX1 = callback);
26522
+ setPreviewPointsX1(callback) {
26523
+ vutils.isFunction(callback) && (this._previewPointsX1 = callback);
26416
26524
  }
26417
- setPreviewCallbackY1(callback) {
26418
- vutils.isFunction(callback) && (this._previewCallbackY1 = callback);
26525
+ setPreviewPointsY1(callback) {
26526
+ vutils.isFunction(callback) && (this._previewPointsY1 = callback);
26419
26527
  }
26420
26528
  setStatePointToData(callback) {
26421
26529
  vutils.isFunction(callback) && (this._statePointToData = callback);
@@ -28149,9 +28257,11 @@
28149
28257
  vglobal.addEventListener('pointerup', this._onHandlerPointerUp);
28150
28258
  }
28151
28259
  else {
28152
- this._currentHandler.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
28153
- this._currentHandler.addEventListener('pointerup', this._onHandlerPointerUp);
28154
- this._currentHandler.addEventListener('pointerupoutside', this._onHandlerPointerUp);
28260
+ this.stage.addEventListener('pointermove', this._onHandlerPointerMove, {
28261
+ capture: true
28262
+ });
28263
+ this.stage.addEventListener('pointerup', this._onHandlerPointerUp);
28264
+ this.stage.addEventListener('pointerupoutside', this._onHandlerPointerUp);
28155
28265
  }
28156
28266
  };
28157
28267
  this._onHandlerPointerMove = (e) => {
@@ -28199,10 +28309,11 @@
28199
28309
  vglobal.removeEventListener('pointerup', this._onHandlerPointerUp);
28200
28310
  }
28201
28311
  else {
28202
- const currentTarget = e.target;
28203
- currentTarget.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
28204
- currentTarget.removeEventListener('pointerup', this._onHandlerPointerUp);
28205
- currentTarget.removeEventListener('pointerupoutside', this._onHandlerPointerUp);
28312
+ this.stage.removeEventListener('pointermove', this._onHandlerPointerMove, {
28313
+ capture: true
28314
+ });
28315
+ this.stage.removeEventListener('pointerup', this._onHandlerPointerUp);
28316
+ this.stage.removeEventListener('pointerupoutside', this._onHandlerPointerUp);
28206
28317
  }
28207
28318
  };
28208
28319
  this._onTrackPointerdown = (e) => {
@@ -28215,11 +28326,11 @@
28215
28326
  vglobal.addEventListener('pointerup', this._onTrackPointerUp);
28216
28327
  }
28217
28328
  else {
28218
- this._track.addEventListener('pointermove', this._onTrackPointerMove, {
28329
+ this.stage.addEventListener('pointermove', this._onTrackPointerMove, {
28219
28330
  capture: true
28220
28331
  });
28221
- this._track.addEventListener('pointerup', this._onTrackPointerUp);
28222
- this._track.addEventListener('pointerupoutside', this._onTrackPointerUp);
28332
+ this.stage.addEventListener('pointerup', this._onTrackPointerUp);
28333
+ this.stage.addEventListener('pointerupoutside', this._onTrackPointerUp);
28223
28334
  }
28224
28335
  };
28225
28336
  this._onTrackPointerMove = (e) => {
@@ -28276,11 +28387,11 @@
28276
28387
  vglobal.removeEventListener('pointerup', this._onTrackPointerUp);
28277
28388
  }
28278
28389
  else {
28279
- this._track.removeEventListener('pointermove', this._onTrackPointerMove, {
28390
+ this.stage.removeEventListener('pointermove', this._onTrackPointerMove, {
28280
28391
  capture: true
28281
28392
  });
28282
- this._track.removeEventListener('pointerup', this._onTrackPointerUp);
28283
- this._track.removeEventListener('pointerupoutside', this._onTrackPointerUp);
28393
+ this.stage.removeEventListener('pointerup', this._onTrackPointerUp);
28394
+ this.stage.removeEventListener('pointerupoutside', this._onTrackPointerUp);
28284
28395
  }
28285
28396
  };
28286
28397
  this._onRailPointerDown = (e) => {
@@ -31067,7 +31178,7 @@
31067
31178
  }
31068
31179
  };
31069
31180
 
31070
- const version = "0.16.3";
31181
+ const version = "0.16.5-alpha.0";
31071
31182
 
31072
31183
  exports.AbstractComponent = AbstractComponent;
31073
31184
  exports.ArcInfo = ArcInfo;