@visactor/vrender-components 0.22.7-alpha.6 → 0.22.7-alpha.8

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 (46) hide show
  1. package/cjs/brush/brush.d.ts +7 -4
  2. package/cjs/brush/brush.js +53 -67
  3. package/cjs/brush/brush.js.map +1 -1
  4. package/cjs/brush/config.d.ts +1 -1
  5. package/cjs/brush/config.js +1 -1
  6. package/cjs/brush/config.js.map +1 -1
  7. package/cjs/brush/type.js.map +1 -1
  8. package/cjs/data-zoom/data-zoom.d.ts +0 -2
  9. package/cjs/data-zoom/data-zoom.js +24 -34
  10. package/cjs/data-zoom/data-zoom.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/scrollbar/scrollbar.d.ts +0 -1
  15. package/cjs/scrollbar/scrollbar.js +12 -21
  16. package/cjs/scrollbar/scrollbar.js.map +1 -1
  17. package/cjs/slider/slider.d.ts +0 -2
  18. package/cjs/slider/slider.js +27 -43
  19. package/cjs/slider/slider.js.map +1 -1
  20. package/dist/index.es.js +179 -169
  21. package/es/brush/brush.d.ts +7 -4
  22. package/es/brush/brush.js +55 -70
  23. package/es/brush/brush.js.map +1 -1
  24. package/es/brush/config.d.ts +1 -1
  25. package/es/brush/config.js +1 -1
  26. package/es/brush/config.js.map +1 -1
  27. package/es/brush/type.js.map +1 -1
  28. package/es/data-zoom/data-zoom.d.ts +0 -2
  29. package/es/data-zoom/data-zoom.js +21 -33
  30. package/es/data-zoom/data-zoom.js.map +1 -1
  31. package/es/index.d.ts +1 -1
  32. package/es/index.js +1 -1
  33. package/es/index.js.map +1 -1
  34. package/es/scrollbar/scrollbar.d.ts +0 -1
  35. package/es/scrollbar/scrollbar.js +11 -22
  36. package/es/scrollbar/scrollbar.js.map +1 -1
  37. package/es/slider/slider.d.ts +0 -2
  38. package/es/slider/slider.js +26 -44
  39. package/es/slider/slider.js.map +1 -1
  40. package/package.json +5 -5
  41. package/cjs/util/event.d.ts +0 -1
  42. package/cjs/util/event.js +0 -14
  43. package/cjs/util/event.js.map +0 -1
  44. package/es/util/event.d.ts +0 -1
  45. package/es/util/event.js +0 -6
  46. package/es/util/event.js.map +0 -1
package/dist/index.es.js CHANGED
@@ -14909,13 +14909,6 @@ const SCROLLBAR_START_EVENT = 'scrollDown';
14909
14909
  const SCROLLBAR_EVENT = 'scrollDrag';
14910
14910
  const SCROLLBAR_END_EVENT = 'scrollUp';
14911
14911
 
14912
- function getEndTriggersOfDrag() {
14913
- if (vglobal.env === 'browser') {
14914
- return ['pointerup', 'pointerleave', 'pointercancel'];
14915
- }
14916
- return ['pointerup', 'pointerleave', 'pointerupoutside'];
14917
- }
14918
-
14919
14912
  const delayMap$2 = {
14920
14913
  debounce: debounce,
14921
14914
  throttle: throttle
@@ -14949,7 +14942,6 @@ class ScrollBar extends AbstractComponent {
14949
14942
  }
14950
14943
  };
14951
14944
  this._onSliderPointerDown = (e) => {
14952
- this._clearDragEvents();
14953
14945
  const { stopSliderDownPropagation = true } = this.attribute;
14954
14946
  if (stopSliderDownPropagation) {
14955
14947
  e.stopPropagation();
@@ -14961,12 +14953,15 @@ class ScrollBar extends AbstractComponent {
14961
14953
  pos: this._prePos,
14962
14954
  event: e
14963
14955
  });
14964
- const triggers = getEndTriggersOfDrag();
14965
- const obj = vglobal.env === 'browser' ? vglobal : this.stage;
14966
- obj.addEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true, passive: true });
14967
- triggers.forEach((trigger) => {
14968
- obj.addEventListener(trigger, this._onSliderPointerUp);
14969
- });
14956
+ if (vglobal.env === 'browser') {
14957
+ vglobal.addEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });
14958
+ vglobal.addEventListener('pointerup', this._onSliderPointerUp);
14959
+ }
14960
+ else {
14961
+ this.stage.addEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });
14962
+ this.stage.addEventListener('pointerup', this._onSliderPointerUp);
14963
+ this.stage.addEventListener('pointerupoutside', this._onSliderPointerUp);
14964
+ }
14970
14965
  };
14971
14966
  this._computeScrollValue = (e) => {
14972
14967
  const { direction } = this.attribute;
@@ -14988,7 +14983,6 @@ class ScrollBar extends AbstractComponent {
14988
14983
  return [currentPos, currentScrollValue];
14989
14984
  };
14990
14985
  this._onSliderPointerMove = (e) => {
14991
- e.preventDefault();
14992
14986
  const { stopSliderMovePropagation = true } = this.attribute;
14993
14987
  if (stopSliderMovePropagation) {
14994
14988
  e.stopPropagation();
@@ -15002,6 +14996,7 @@ class ScrollBar extends AbstractComponent {
15002
14996
  ? this._onSliderPointerMove
15003
14997
  : delayMap$2[this.attribute.delayType](this._onSliderPointerMove, this.attribute.delayTime);
15004
14998
  this._onSliderPointerUp = (e) => {
14999
+ e.preventDefault();
15005
15000
  const { range: preRange, limitRange = [0, 1] } = this.attribute;
15006
15001
  const preScrollRange = this.getScrollRange();
15007
15002
  const [currentPos, currentScrollValue] = this._computeScrollValue(e);
@@ -15010,7 +15005,15 @@ class ScrollBar extends AbstractComponent {
15010
15005
  pre: preRange,
15011
15006
  value: clampRange(range, limitRange[0], limitRange[1])
15012
15007
  });
15013
- this._clearDragEvents();
15008
+ if (vglobal.env === 'browser') {
15009
+ vglobal.removeEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });
15010
+ vglobal.removeEventListener('pointerup', this._onSliderPointerUp);
15011
+ }
15012
+ else {
15013
+ this.stage.removeEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });
15014
+ this.stage.removeEventListener('pointerup', this._onSliderPointerUp);
15015
+ this.stage.removeEventListener('pointerupoutside', this._onSliderPointerUp);
15016
+ }
15014
15017
  };
15015
15018
  }
15016
15019
  setScrollRange(range, render = true) {
@@ -15143,14 +15146,6 @@ class ScrollBar extends AbstractComponent {
15143
15146
  ? clampRange([x1 + min * width, x1 + max * width], x1, width - sliderSize)
15144
15147
  : clampRange([y1 + min * height, y1 + max * height], y1, height - sliderSize);
15145
15148
  }
15146
- _clearDragEvents() {
15147
- const triggers = getEndTriggersOfDrag();
15148
- const obj = vglobal.env === 'browser' ? vglobal : this.stage;
15149
- obj.removeEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true, passive: false });
15150
- triggers.forEach((trigger) => {
15151
- obj.removeEventListener(trigger, this._onSliderPointerUp);
15152
- });
15153
- }
15154
15149
  _reset() {
15155
15150
  this._sliderRenderBounds = null;
15156
15151
  this._sliderLimitRange = null;
@@ -23015,13 +23010,8 @@ class DataZoom extends AbstractComponent {
23015
23010
  end: 1
23016
23011
  };
23017
23012
  this._statePointToData = state => state;
23018
- this._handleTouchMove = (e) => {
23019
- if (this._activeState) {
23020
- e.preventDefault();
23021
- }
23022
- };
23023
23013
  this._onHandlerPointerDown = (e, tag) => {
23024
- this._clearDragEvents();
23014
+ e.stopPropagation();
23025
23015
  if (tag === 'start') {
23026
23016
  this._activeTag = DataZoomActiveTag.startHandler;
23027
23017
  this._activeItem = this._startHandlerMask;
@@ -23045,15 +23035,14 @@ class DataZoom extends AbstractComponent {
23045
23035
  this._activeState = true;
23046
23036
  this._activeCache.startPos = this.eventPosToStagePos(e);
23047
23037
  this._activeCache.lastPos = this.eventPosToStagePos(e);
23048
- const evtTarget = vglobal.env === 'browser' ? vglobal : this.stage;
23049
- const triggers = getEndTriggersOfDrag();
23050
- evtTarget.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true, passive: false });
23051
- triggers.forEach((trigger) => {
23052
- evtTarget.addEventListener(trigger, this._onHandlerPointerUp);
23053
- });
23038
+ if (vglobal.env === 'browser') {
23039
+ vglobal.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
23040
+ vglobal.addEventListener('pointerup', this._onHandlerPointerUp);
23041
+ }
23042
+ this.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
23054
23043
  };
23055
23044
  this._pointerMove = (e) => {
23056
- e.preventDefault();
23045
+ e.stopPropagation();
23057
23046
  const { start: startAttr, end: endAttr, brushSelect, realTime = true } = this.attribute;
23058
23047
  const pos = this.eventPosToStagePos(e);
23059
23048
  const { attPos, max } = this._layoutCache;
@@ -23083,12 +23072,12 @@ class DataZoom extends AbstractComponent {
23083
23072
  end = end + dis;
23084
23073
  }
23085
23074
  }
23075
+ this._activeCache.lastPos = pos;
23086
23076
  brushSelect && this.renderDragMask();
23087
23077
  }
23088
23078
  start = Math.min(Math.max(start, 0), 1);
23089
23079
  end = Math.min(Math.max(end, 0), 1);
23090
23080
  if (startAttr !== start || endAttr !== end) {
23091
- this._activeCache.lastPos = pos;
23092
23081
  this.setStateAttr(start, end, true);
23093
23082
  if (realTime) {
23094
23083
  this._dispatchEvent('change', {
@@ -23103,6 +23092,7 @@ class DataZoom extends AbstractComponent {
23103
23092
  ? this._pointerMove
23104
23093
  : delayMap$1[this.attribute.delayType](this._pointerMove, this.attribute.delayTime);
23105
23094
  this._onHandlerPointerUp = (e) => {
23095
+ e.preventDefault();
23106
23096
  const { start, end, brushSelect, realTime = true } = this.attribute;
23107
23097
  if (this._activeState) {
23108
23098
  if (this._activeTag === DataZoomActiveTag.background) {
@@ -23117,7 +23107,12 @@ class DataZoom extends AbstractComponent {
23117
23107
  end: this.state.end,
23118
23108
  tag: this._activeTag
23119
23109
  });
23120
- this._clearDragEvents();
23110
+ if (vglobal.env === 'browser') {
23111
+ vglobal.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
23112
+ vglobal.removeEventListener('pointerup', this._onHandlerPointerUp);
23113
+ }
23114
+ this.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
23115
+ this.removeEventListener('pointerup', this._onHandlerPointerUp);
23121
23116
  };
23122
23117
  const { position, showDetail } = attributes;
23123
23118
  this._activeCache.startPos = position;
@@ -23165,11 +23160,12 @@ class DataZoom extends AbstractComponent {
23165
23160
  if (this._selectedPreviewGroup) {
23166
23161
  this._selectedPreviewGroup.addEventListener('pointerdown', (e) => this._onHandlerPointerDown(e, selectedTag));
23167
23162
  }
23163
+ this.addEventListener('pointerup', this._onHandlerPointerUp);
23164
+ this.addEventListener('pointerupoutside', this._onHandlerPointerUp);
23168
23165
  if (showDetail === 'auto') {
23169
23166
  this.addEventListener('pointerenter', this._onHandlerPointerEnter);
23170
23167
  this.addEventListener('pointerleave', this._onHandlerPointerLeave);
23171
23168
  }
23172
- vglobal.addEventListener('touchmove', this._handleTouchMove, { passive: false });
23173
23169
  }
23174
23170
  dragMaskSize() {
23175
23171
  const { position } = this.attribute;
@@ -23197,19 +23193,13 @@ class DataZoom extends AbstractComponent {
23197
23193
  var _a, _b;
23198
23194
  return (_b = (_a = this.stage) === null || _a === void 0 ? void 0 : _a.eventPointTransform(e)) !== null && _b !== void 0 ? _b : { x: 0, y: 0 };
23199
23195
  }
23200
- _clearDragEvents() {
23201
- const evtTarget = vglobal.env === 'browser' ? vglobal : this.stage;
23202
- const triggers = getEndTriggersOfDrag();
23203
- evtTarget.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true, passive: false });
23204
- triggers.forEach((trigger) => {
23205
- evtTarget.removeEventListener(trigger, this._onHandlerPointerUp);
23206
- });
23207
- }
23208
23196
  _onHandlerPointerEnter(e) {
23197
+ e.stopPropagation();
23209
23198
  this._showText = true;
23210
23199
  this.renderText();
23211
23200
  }
23212
23201
  _onHandlerPointerLeave(e) {
23202
+ e.stopPropagation();
23213
23203
  this._showText = false;
23214
23204
  this.renderText();
23215
23205
  }
@@ -27226,21 +27216,28 @@ class Slider extends AbstractComponent {
27226
27216
  this._dispatchTooltipEvent('sliderTooltipHide');
27227
27217
  };
27228
27218
  this._onHandlerPointerdown = (e) => {
27229
- this._clearAllDragEvents();
27219
+ e.stopPropagation();
27230
27220
  this._isChanging = true;
27231
27221
  const { x, y } = this.stage.eventPointTransform(e);
27232
27222
  this._currentHandler = e.target;
27233
27223
  this._prePos = this._isHorizontal ? x : y;
27234
- const triggers = getEndTriggersOfDrag();
27235
- const obj = vglobal.env === 'browser' ? vglobal : this.stage;
27236
- obj.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true, passive: false });
27237
- triggers.forEach((trigger) => {
27238
- obj.addEventListener(trigger, this._onHandlerPointerUp);
27239
- });
27224
+ if (vglobal.env === 'browser') {
27225
+ vglobal.addEventListener('pointermove', this._onHandlerPointerMove, {
27226
+ capture: true
27227
+ });
27228
+ vglobal.addEventListener('pointerup', this._onHandlerPointerUp);
27229
+ }
27230
+ else {
27231
+ this.stage.addEventListener('pointermove', this._onHandlerPointerMove, {
27232
+ capture: true
27233
+ });
27234
+ this.stage.addEventListener('pointerup', this._onHandlerPointerUp);
27235
+ this.stage.addEventListener('pointerupoutside', this._onHandlerPointerUp);
27236
+ }
27240
27237
  };
27241
27238
  this._onHandlerPointerMove = (e) => {
27242
27239
  var _a, _b;
27243
- e.preventDefault();
27240
+ e.stopPropagation();
27244
27241
  this._isChanging = true;
27245
27242
  const { railWidth, railHeight, min, max } = this.attribute;
27246
27243
  if (max === min) {
@@ -27276,29 +27273,44 @@ class Slider extends AbstractComponent {
27276
27273
  this._dispatchChangeEvent();
27277
27274
  };
27278
27275
  this._onHandlerPointerUp = (e) => {
27276
+ e.preventDefault();
27279
27277
  this._isChanging = false;
27280
27278
  this._currentHandler = null;
27281
- this._clearAllDragEvents();
27282
- };
27283
- this._handleTouchMove = (e) => {
27284
- if (this._isChanging) {
27285
- e.preventDefault();
27279
+ if (vglobal.env === 'browser') {
27280
+ vglobal.removeEventListener('pointermove', this._onHandlerPointerMove, {
27281
+ capture: true
27282
+ });
27283
+ vglobal.removeEventListener('pointerup', this._onHandlerPointerUp);
27284
+ }
27285
+ else {
27286
+ this.stage.removeEventListener('pointermove', this._onHandlerPointerMove, {
27287
+ capture: true
27288
+ });
27289
+ this.stage.removeEventListener('pointerup', this._onHandlerPointerUp);
27290
+ this.stage.removeEventListener('pointerupoutside', this._onHandlerPointerUp);
27286
27291
  }
27287
27292
  };
27288
27293
  this._onTrackPointerdown = (e) => {
27289
- this._clearAllDragEvents();
27294
+ e.stopPropagation();
27290
27295
  this._isChanging = true;
27291
27296
  const { x, y } = this.stage.eventPointTransform(e);
27292
27297
  this._prePos = this._isHorizontal ? x : y;
27293
- const triggers = getEndTriggersOfDrag();
27294
- const obj = vglobal.env === 'browser' ? vglobal : this.stage;
27295
- obj.addEventListener('pointermove', this._onTrackPointerMove, { capture: true, passive: false });
27296
- triggers.forEach((trigger) => {
27297
- obj.addEventListener(trigger, this._onTrackPointerUp);
27298
- });
27298
+ if (vglobal.env === 'browser') {
27299
+ vglobal.addEventListener('pointermove', this._onTrackPointerMove, {
27300
+ capture: true
27301
+ });
27302
+ vglobal.addEventListener('pointerup', this._onTrackPointerUp);
27303
+ }
27304
+ else {
27305
+ this.stage.addEventListener('pointermove', this._onTrackPointerMove, {
27306
+ capture: true
27307
+ });
27308
+ this.stage.addEventListener('pointerup', this._onTrackPointerUp);
27309
+ this.stage.addEventListener('pointerupoutside', this._onTrackPointerUp);
27310
+ }
27299
27311
  };
27300
27312
  this._onTrackPointerMove = (e) => {
27301
- e.preventDefault();
27313
+ e.stopPropagation();
27302
27314
  this._isChanging = true;
27303
27315
  const { railWidth, railHeight, min, max, inverse } = this.attribute;
27304
27316
  if (max === min) {
@@ -27350,11 +27362,24 @@ class Slider extends AbstractComponent {
27350
27362
  this._dispatchChangeEvent();
27351
27363
  };
27352
27364
  this._onTrackPointerUp = (e) => {
27365
+ e.preventDefault();
27353
27366
  this._isChanging = false;
27354
- this._clearAllDragEvents();
27367
+ if (vglobal.env === 'browser') {
27368
+ vglobal.removeEventListener('pointermove', this._onTrackPointerMove, {
27369
+ capture: true
27370
+ });
27371
+ vglobal.removeEventListener('pointerup', this._onTrackPointerUp);
27372
+ }
27373
+ else {
27374
+ this.stage.removeEventListener('pointermove', this._onTrackPointerMove, {
27375
+ capture: true
27376
+ });
27377
+ this.stage.removeEventListener('pointerup', this._onTrackPointerUp);
27378
+ this.stage.removeEventListener('pointerupoutside', this._onTrackPointerUp);
27379
+ }
27355
27380
  };
27356
27381
  this._onRailPointerDown = (e) => {
27357
- this._clearAllDragEvents();
27382
+ e.stopPropagation();
27358
27383
  this._isChanging = true;
27359
27384
  const { railWidth, railHeight, min, max } = this.attribute;
27360
27385
  if (max === min) {
@@ -27732,7 +27757,6 @@ class Slider extends AbstractComponent {
27732
27757
  this._track.addEventListener('pointerdown', this._onTrackPointerdown);
27733
27758
  }
27734
27759
  this._railContainer.addEventListener('pointerdown', this._onRailPointerDown);
27735
- vglobal.addEventListener('touchmove', this._handleTouchMove, { passive: false });
27736
27760
  }
27737
27761
  }
27738
27762
  _bindTooltipEvents() {
@@ -27743,18 +27767,6 @@ class Slider extends AbstractComponent {
27743
27767
  this._mainContainer.addEventListener('pointermove', this._onTooltipUpdate);
27744
27768
  this._mainContainer.addEventListener('pointerleave', this._onTooltipHide);
27745
27769
  }
27746
- _clearAllDragEvents() {
27747
- const triggers = getEndTriggersOfDrag();
27748
- const obj = vglobal.env === 'browser' ? vglobal : this.stage;
27749
- obj.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true, passive: false });
27750
- triggers.forEach((trigger) => {
27751
- obj.removeEventListener(trigger, this._onHandlerPointerUp);
27752
- });
27753
- obj.removeEventListener('pointermove', this._onTrackPointerMove, { capture: true, passive: false });
27754
- triggers.forEach((trigger) => {
27755
- obj.removeEventListener(trigger, this._onTrackPointerUp);
27756
- });
27757
- }
27758
27770
  _updateTrack() {
27759
27771
  const { inverse, railWidth, railHeight } = this.attribute;
27760
27772
  const startHandler = this._startHandler;
@@ -29594,7 +29606,7 @@ var IOperateType;
29594
29606
  const DEFAULT_BRUSH_ATTRIBUTES = {
29595
29607
  trigger: 'pointerdown',
29596
29608
  updateTrigger: 'pointermove',
29597
- endTrigger: 'pointerup',
29609
+ endTrigger: ['pointerup', 'pointerleave'],
29598
29610
  resetTrigger: 'pointerupoutside',
29599
29611
  hasMask: true,
29600
29612
  brushMode: 'single',
@@ -29648,6 +29660,7 @@ class Brush extends AbstractComponent {
29648
29660
  this._isDownBeforeUpOutside = true;
29649
29661
  return;
29650
29662
  }
29663
+ this._isDownBeforeUpOutside = false;
29651
29664
  e.stopPropagation();
29652
29665
  const brushMoved = (_a = this.attribute.brushMoved) !== null && _a !== void 0 ? _a : true;
29653
29666
  this._activeMoveState = brushMoved && this._isPosInBrushMask(e);
@@ -29670,6 +29683,14 @@ class Brush extends AbstractComponent {
29670
29683
  : delayMap[this.attribute.delayType](this._onBrushing, this.attribute.delayTime);
29671
29684
  this._onBrushEnd = (e) => {
29672
29685
  var _a;
29686
+ if (this._isDownBeforeUpOutside) {
29687
+ if (!this._isEmptyMask()) {
29688
+ this._clearMask();
29689
+ this._dispatchBrushEvent(IOperateType.brushClear, e);
29690
+ }
29691
+ this._isDownBeforeUpOutside = false;
29692
+ return;
29693
+ }
29673
29694
  if (!this._activeDrawState && !this._activeMoveState) {
29674
29695
  return;
29675
29696
  }
@@ -29677,29 +29698,29 @@ class Brush extends AbstractComponent {
29677
29698
  const { removeOnClick = true } = this.attribute;
29678
29699
  if (this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick) {
29679
29700
  if ((_a = this._operatingMask) === null || _a === void 0 ? void 0 : _a._AABBBounds.empty()) {
29680
- this._dispatchEvent(IOperateType.brushClear, {
29681
- operateMask: this._operatingMask,
29682
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29683
- event: e
29684
- });
29701
+ if (!this._isEmptyMask()) {
29702
+ this._clearMask();
29703
+ this._dispatchBrushEvent(IOperateType.brushClear, e);
29704
+ }
29705
+ }
29706
+ else {
29707
+ delete this._brushMaskAABBBoundsDict[this._operatingMask.name];
29708
+ this._container.setAttributes({});
29709
+ this._container.removeChild(this._operatingMask);
29710
+ if (!this._isEmptyMask()) {
29711
+ this._dispatchBrushEvent(IOperateType.brushClear, e);
29712
+ }
29713
+ else {
29714
+ this._dispatchBrushEvent(IOperateType.drawEnd, e);
29715
+ }
29685
29716
  }
29686
- this._container.incrementalClearChild();
29687
- this._brushMaskAABBBoundsDict = {};
29688
29717
  }
29689
29718
  else {
29690
29719
  if (this._activeDrawState) {
29691
- this._dispatchEvent(IOperateType.drawEnd, {
29692
- operateMask: this._operatingMask,
29693
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29694
- event: e
29695
- });
29720
+ this._dispatchBrushEvent(IOperateType.drawEnd, e);
29696
29721
  }
29697
29722
  if (this._activeMoveState) {
29698
- this._dispatchEvent(IOperateType.moveEnd, {
29699
- operateMask: this._operatingMask,
29700
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29701
- event: e
29702
- });
29723
+ this._dispatchBrushEvent(IOperateType.moveEnd, e);
29703
29724
  }
29704
29725
  }
29705
29726
  this._activeDrawState = false;
@@ -29711,23 +29732,14 @@ class Brush extends AbstractComponent {
29711
29732
  };
29712
29733
  this._onBrushClear = (e) => {
29713
29734
  e.preventDefault();
29714
- const { removeOnClick = true } = this.attribute;
29715
- if (this._isDownBeforeUpOutside && removeOnClick) {
29716
- this._dispatchEvent(IOperateType.brushClear, {
29717
- operateMask: this._operatingMask,
29718
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29719
- event: e
29720
- });
29721
- this._container.incrementalClearChild();
29722
- this._brushMaskAABBBoundsDict = {};
29735
+ if (!this._isEmptyMask()) {
29736
+ this._clearMask();
29737
+ this._dispatchBrushEvent(IOperateType.brushClear, e);
29723
29738
  }
29724
29739
  this._activeDrawState = false;
29725
29740
  this._activeMoveState = false;
29726
29741
  this._isDrawedBeforeEnd = false;
29727
29742
  this._isDownBeforeUpOutside = false;
29728
- if (this._operatingMask) {
29729
- this._operatingMask.setAttribute('pickable', false);
29730
- }
29731
29743
  };
29732
29744
  }
29733
29745
  _bindBrushEvents() {
@@ -29735,44 +29747,19 @@ class Brush extends AbstractComponent {
29735
29747
  return;
29736
29748
  }
29737
29749
  const { trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger, updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger, endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger, resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger } = this.attribute;
29738
- array(trigger).forEach(t => vglobal.addEventListener(t, this._onBrushStart));
29750
+ array(trigger).forEach(t => this.stage.addEventListener(t, this._onBrushStart));
29739
29751
  array(updateTrigger).forEach(t => this.stage.addEventListener(t, this._onBrushingWithDelay));
29740
29752
  array(endTrigger).forEach(t => this.stage.addEventListener(t, this._onBrushEnd));
29741
29753
  array(resetTrigger).forEach(t => this.stage.addEventListener(t, this._onBrushClear));
29742
29754
  }
29743
- _isPosInBrushMask(e) {
29744
- const pos = this.eventPosToStagePos(e);
29745
- const brushMasks = this._container.getChildren();
29746
- for (let i = 0; i < brushMasks.length; i++) {
29747
- const { points = [], dx = 0, dy = 0 } = brushMasks[i].attribute;
29748
- const pointsConsiderOffset = points.map((point) => {
29749
- return {
29750
- x: point.x + dx,
29751
- y: point.y + dy
29752
- };
29753
- });
29754
- if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) {
29755
- this._operatingMask = brushMasks[i];
29756
- return true;
29757
- }
29758
- }
29759
- return false;
29760
- }
29761
29755
  _initDraw(e) {
29762
29756
  const { brushMode } = this.attribute;
29763
29757
  const pos = this.eventPosToStagePos(e);
29764
29758
  this._cacheDrawPoints = [pos];
29765
29759
  this._isDrawedBeforeEnd = false;
29766
- if (brushMode === 'single') {
29767
- this._brushMaskAABBBoundsDict = {};
29768
- this._container.incrementalClearChild();
29769
- }
29760
+ brushMode === 'single' && this._clearMask();
29770
29761
  this._addBrushMask();
29771
- this._dispatchEvent(IOperateType.drawStart, {
29772
- operateMask: this._operatingMask,
29773
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29774
- event: e
29775
- });
29762
+ this._dispatchBrushEvent(IOperateType.drawStart, e);
29776
29763
  }
29777
29764
  _initMove(e) {
29778
29765
  var _a, _b;
@@ -29789,11 +29776,7 @@ class Brush extends AbstractComponent {
29789
29776
  this._operatingMaskMoveRangeX = [minMoveStepX, maxMoveStepX];
29790
29777
  this._operatingMaskMoveRangeY = [minMoveStepY, maxMoveStepY];
29791
29778
  this._operatingMask.setAttribute('pickable', true);
29792
- this._dispatchEvent(IOperateType.moveStart, {
29793
- operateMask: this._operatingMask,
29794
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29795
- event: e
29796
- });
29779
+ this._dispatchBrushEvent(IOperateType.moveStart, e);
29797
29780
  }
29798
29781
  _drawing(e) {
29799
29782
  var _a, _b;
@@ -29820,12 +29803,8 @@ class Brush extends AbstractComponent {
29820
29803
  !!(Math.abs(x2 - x1) > sizeThreshold || Math.abs(y1 - y2) > sizeThreshold);
29821
29804
  if (this._isDrawedBeforeEnd) {
29822
29805
  this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;
29823
- this._dispatchEvent(IOperateType.drawing, {
29824
- operateMask: this._operatingMask,
29825
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29826
- event: e
29827
- });
29828
29806
  }
29807
+ this._dispatchBrushEvent(IOperateType.drawing, e);
29829
29808
  }
29830
29809
  _moving(e) {
29831
29810
  const startPos = this._cacheMovePoint;
@@ -29844,11 +29823,20 @@ class Brush extends AbstractComponent {
29844
29823
  dy: moveY
29845
29824
  });
29846
29825
  this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;
29847
- this._dispatchEvent(IOperateType.moving, {
29848
- operateMask: this._operatingMask,
29849
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29850
- event: e
29851
- });
29826
+ this._dispatchBrushEvent(IOperateType.moving, e);
29827
+ }
29828
+ render() {
29829
+ this.releaseBrushEvents();
29830
+ this._bindBrushEvents();
29831
+ const group = this.createOrUpdateChild('brush-container', {}, 'group');
29832
+ this._container = group;
29833
+ }
29834
+ releaseBrushEvents() {
29835
+ const { trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger, updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger, endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger, resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger } = this.attribute;
29836
+ array(trigger).forEach(t => this.stage.removeEventListener(t, this._onBrushStart));
29837
+ array(updateTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushingWithDelay));
29838
+ array(endTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushEnd));
29839
+ array(resetTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushClear));
29852
29840
  }
29853
29841
  _computeMaskPoints() {
29854
29842
  const { brushType, xRange = [0, 0], yRange = [0, 0] } = this.attribute;
@@ -29917,12 +29905,30 @@ class Brush extends AbstractComponent {
29917
29905
  _addBrushMask() {
29918
29906
  var _a;
29919
29907
  const { brushStyle, hasMask } = this.attribute;
29920
- const brushMask = graphicCreator.polygon(Object.assign(Object.assign({ points: cloneDeep(this._cacheDrawPoints), cursor: 'move', pickable: false }, brushStyle), { opacity: hasMask ? (_a = brushStyle.opacity) !== null && _a !== void 0 ? _a : 1 : 0 }));
29908
+ const brushMask = graphicCreator.polygon(Object.assign(Object.assign({ points: cloneDeep(this._cacheDrawPoints), cursor: 'move', pickable: false }, brushStyle), { opacity: hasMask ? ((_a = brushStyle.opacity) !== null && _a !== void 0 ? _a : 1) : 0 }));
29921
29909
  brushMask.name = `brush-${Date.now()}`;
29922
29910
  this._operatingMask = brushMask;
29923
29911
  this._container.add(brushMask);
29924
29912
  this._brushMaskAABBBoundsDict[brushMask.name] = brushMask.AABBBounds;
29925
29913
  }
29914
+ _isPosInBrushMask(e) {
29915
+ const pos = this.eventPosToStagePos(e);
29916
+ const brushMasks = this._container.getChildren();
29917
+ for (let i = 0; i < brushMasks.length; i++) {
29918
+ const { points = [], dx = 0, dy = 0 } = brushMasks[i].attribute;
29919
+ const pointsConsiderOffset = points.map((point) => {
29920
+ return {
29921
+ x: point.x + dx,
29922
+ y: point.y + dy
29923
+ };
29924
+ });
29925
+ if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) {
29926
+ this._operatingMask = brushMasks[i];
29927
+ return true;
29928
+ }
29929
+ }
29930
+ return false;
29931
+ }
29926
29932
  _outOfInteractiveRange(e) {
29927
29933
  const { interactiveRange } = this.attribute;
29928
29934
  const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;
@@ -29935,17 +29941,21 @@ class Brush extends AbstractComponent {
29935
29941
  eventPosToStagePos(e) {
29936
29942
  return this.stage.eventPointTransform(e);
29937
29943
  }
29938
- render() {
29939
- this._bindBrushEvents();
29940
- const group = this.createOrUpdateChild('brush-container', {}, 'group');
29941
- this._container = group;
29944
+ _dispatchBrushEvent(operateType, e) {
29945
+ this._dispatchEvent(operateType, {
29946
+ operateMask: this._operatingMask,
29947
+ operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29948
+ event: e
29949
+ });
29942
29950
  }
29943
- releaseBrushEvents() {
29944
- const { delayType = 'throttle', delayTime = 0, trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger, updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger, endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger, resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger } = this.attribute;
29945
- array(trigger).forEach(t => vglobal.removeEventListener(t, this._onBrushStart));
29946
- array(updateTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushingWithDelay));
29947
- array(endTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushEnd));
29948
- array(resetTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushClear));
29951
+ _clearMask() {
29952
+ this._brushMaskAABBBoundsDict = {};
29953
+ this._container.incrementalClearChild();
29954
+ this._operatingMask = null;
29955
+ }
29956
+ _isEmptyMask() {
29957
+ return (isEmpty(this._brushMaskAABBBoundsDict) ||
29958
+ Object.keys(this._brushMaskAABBBoundsDict).every(key => this._brushMaskAABBBoundsDict[key].empty()));
29949
29959
  }
29950
29960
  }
29951
29961
  Brush.defaultAttributes = DEFAULT_BRUSH_ATTRIBUTES;
@@ -31488,6 +31498,6 @@ StoryLabelItem.defaultAttributes = {
31488
31498
  theme: 'default'
31489
31499
  };
31490
31500
 
31491
- const version = "0.22.7-alpha.6";
31501
+ const version = "0.22.7-alpha.8";
31492
31502
 
31493
31503
  export { AXIS_ELEMENT_NAME, AbstractComponent, ArcInfo, ArcLabel, ArcSegment, AxisStateValue, BasePlayer, Brush, CheckBox, CircleAxis, CircleAxisGrid, CircleCrosshair, ColorContinuousLegend, ContinuousPlayer, DEFAULT_ITEM_SPACE_COL, DEFAULT_ITEM_SPACE_ROW, DEFAULT_LABEL_SPACE, DEFAULT_PAGER_SPACE, DEFAULT_SHAPE_SIZE, DEFAULT_SHAPE_SPACE, DEFAULT_STATES$1 as DEFAULT_STATES, DEFAULT_TITLE_SPACE, DEFAULT_VALUE_SPACE, DataLabel, DataZoom, DataZoomActiveTag, DirectionEnum, DiscreteLegend, DiscretePlayer, EmptyTip, GroupTransition, IMarkAreaLabelPosition, IMarkCommonArcLabelPosition, IMarkLineLabelPosition, IMarkPointItemPosition, IOperateType, Indicator, LEGEND_ELEMENT_NAME, LabelBase, LegendEvent, LegendStateValue, LineAxis, LineAxisGrid, LineCrosshair, LineLabel, LinkPath, MarkArcArea, MarkArcLine, MarkArea, MarkLine, MarkPoint, Pager, PlayerEventEnum, PolygonCrosshair, PolygonSectorCrosshair, PopTip, Radio, RectCrosshair, RectLabel, SLIDER_ELEMENT_NAME, ScrollBar, SectorCrosshair, Segment, SizeContinuousLegend, Slider, StoryLabelItem, Switch, SymbolLabel, Tag, Timeline, Title, Tooltip, TopZIndex, VTag, WeatherBox, alignTextInLine, angle, angleLabelOrientAttribute, angleTo, cartesianTicks, clampRadian, computeOffsetForlimit, continuousTicks, contrastAccessibilityChecker, convertDomainToTickData, createTextGraphicByType, deltaXYToAngle, fuzzyEqualNumber, getAxisBreakSymbolAttrs, getCircleLabelPosition, getCirclePoints, getCircleVerticalVector, getElMap, getHorizontalPath, getMarksByName, getNoneGroupMarksByName, getPolarAngleLabelPosition, getPolygonPath, getSizeHandlerPath, getTextAlignAttrOfVerticalDir, getTextType, getVerticalCoord, getVerticalPath, hasOverlap, htmlAttributeTransform, initTextMeasure, isInRange, isPostiveXAxis, isRichText, isVisible, labelSmartInvert, length, limitShapeInBounds, linearDiscreteTicks, loadPoptip, loadScrollbar, measureTextSize, normalize, polarAngleAxisDiscreteTicks, polarTicks, reactAttributeTransform, registerArcDataLabel, registerLineDataLabel, registerMarkArcAreaAnimate, registerMarkArcLineAnimate, registerMarkAreaAnimate, registerMarkLineAnimate, registerMarkPointAnimate, registerRectDataLabel, registerSymbolDataLabel, removeRepeatPoint, richTextAttributeTransform, scale, scrollbarModule, setPoptipTheme, smartInvertStrategy, tan2AngleToAngle, textIntersect, ticks, traverseGroup, version };
@@ -7,7 +7,7 @@ export declare class Brush extends AbstractComponent<Required<BrushAttributes>>
7
7
  static defaultAttributes: {
8
8
  trigger: string;
9
9
  updateTrigger: string;
10
- endTrigger: string;
10
+ endTrigger: string[];
11
11
  resetTrigger: string;
12
12
  hasMask: boolean;
13
13
  brushMode: string;
@@ -44,7 +44,6 @@ export declare class Brush extends AbstractComponent<Required<BrushAttributes>>
44
44
  private _brushMaskAABBBoundsDict;
45
45
  constructor(attributes: BrushAttributes, options?: ComponentOptions);
46
46
  private _bindBrushEvents;
47
- private _isPosInBrushMask;
48
47
  private _onBrushStart;
49
48
  private _onBrushing;
50
49
  private _onBrushingWithDelay;
@@ -54,13 +53,17 @@ export declare class Brush extends AbstractComponent<Required<BrushAttributes>>
54
53
  private _initMove;
55
54
  private _drawing;
56
55
  private _moving;
56
+ protected render(): void;
57
+ releaseBrushEvents(): void;
57
58
  private _computeMaskPoints;
58
59
  private _addBrushMask;
60
+ private _isPosInBrushMask;
59
61
  private _outOfInteractiveRange;
60
62
  protected eventPosToStagePos(e: FederatedPointerEvent): {
61
63
  x: number;
62
64
  y: number;
63
65
  };
64
- protected render(): void;
65
- releaseBrushEvents(): void;
66
+ private _dispatchBrushEvent;
67
+ private _clearMask;
68
+ private _isEmptyMask;
66
69
  }