@visactor/vrender-components 0.22.7-alpha.1 → 0.22.7-alpha.10

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 (48) 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 +3 -0
  9. package/cjs/data-zoom/data-zoom.js +39 -24
  10. package/cjs/data-zoom/data-zoom.js.map +1 -1
  11. package/cjs/empty-tip/type.js +2 -1
  12. package/cjs/index.d.ts +1 -1
  13. package/cjs/index.js +1 -1
  14. package/cjs/index.js.map +1 -1
  15. package/cjs/jsx/index.js +1 -2
  16. package/cjs/scrollbar/scrollbar.d.ts +1 -0
  17. package/cjs/scrollbar/scrollbar.js +14 -9
  18. package/cjs/scrollbar/scrollbar.js.map +1 -1
  19. package/cjs/slider/slider.d.ts +3 -0
  20. package/cjs/slider/slider.js +35 -22
  21. package/cjs/slider/slider.js.map +1 -1
  22. package/cjs/util/event.js +1 -1
  23. package/cjs/util/event.js.map +1 -1
  24. package/dist/index.es.js +165 -134
  25. package/es/brush/brush.d.ts +7 -4
  26. package/es/brush/brush.js +55 -70
  27. package/es/brush/brush.js.map +1 -1
  28. package/es/brush/config.d.ts +1 -1
  29. package/es/brush/config.js +1 -1
  30. package/es/brush/config.js.map +1 -1
  31. package/es/brush/type.js.map +1 -1
  32. package/es/data-zoom/data-zoom.d.ts +3 -0
  33. package/es/data-zoom/data-zoom.js +38 -21
  34. package/es/data-zoom/data-zoom.js.map +1 -1
  35. package/es/empty-tip/type.js +2 -1
  36. package/es/index.d.ts +1 -1
  37. package/es/index.js +1 -1
  38. package/es/index.js.map +1 -1
  39. package/es/jsx/index.js +1 -2
  40. package/es/scrollbar/scrollbar.d.ts +1 -0
  41. package/es/scrollbar/scrollbar.js +14 -9
  42. package/es/scrollbar/scrollbar.js.map +1 -1
  43. package/es/slider/slider.d.ts +3 -0
  44. package/es/slider/slider.js +35 -22
  45. package/es/slider/slider.js.map +1 -1
  46. package/es/util/event.js +1 -1
  47. package/es/util/event.js.map +1 -1
  48. package/package.json +5 -5
package/dist/index.es.js CHANGED
@@ -14911,7 +14911,7 @@ const SCROLLBAR_END_EVENT = 'scrollUp';
14911
14911
 
14912
14912
  function getEndTriggersOfDrag() {
14913
14913
  if (vglobal.env === 'browser') {
14914
- return ['pointerup', 'pointerleave'];
14914
+ return ['pointerup', 'pointerleave', 'pointercancel'];
14915
14915
  }
14916
14916
  return ['pointerup', 'pointerleave', 'pointerupoutside'];
14917
14917
  }
@@ -14949,6 +14949,7 @@ class ScrollBar extends AbstractComponent {
14949
14949
  }
14950
14950
  };
14951
14951
  this._onSliderPointerDown = (e) => {
14952
+ this._clearDragEvents();
14952
14953
  const { stopSliderDownPropagation = true } = this.attribute;
14953
14954
  if (stopSliderDownPropagation) {
14954
14955
  e.stopPropagation();
@@ -14962,7 +14963,7 @@ class ScrollBar extends AbstractComponent {
14962
14963
  });
14963
14964
  const triggers = getEndTriggersOfDrag();
14964
14965
  const obj = vglobal.env === 'browser' ? vglobal : this.stage;
14965
- obj.addEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });
14966
+ obj.addEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true, passive: true });
14966
14967
  triggers.forEach((trigger) => {
14967
14968
  obj.addEventListener(trigger, this._onSliderPointerUp);
14968
14969
  });
@@ -14987,6 +14988,7 @@ class ScrollBar extends AbstractComponent {
14987
14988
  return [currentPos, currentScrollValue];
14988
14989
  };
14989
14990
  this._onSliderPointerMove = (e) => {
14991
+ e.preventDefault();
14990
14992
  const { stopSliderMovePropagation = true } = this.attribute;
14991
14993
  if (stopSliderMovePropagation) {
14992
14994
  e.stopPropagation();
@@ -15000,7 +15002,6 @@ class ScrollBar extends AbstractComponent {
15000
15002
  ? this._onSliderPointerMove
15001
15003
  : delayMap$2[this.attribute.delayType](this._onSliderPointerMove, this.attribute.delayTime);
15002
15004
  this._onSliderPointerUp = (e) => {
15003
- e.preventDefault();
15004
15005
  const { range: preRange, limitRange = [0, 1] } = this.attribute;
15005
15006
  const preScrollRange = this.getScrollRange();
15006
15007
  const [currentPos, currentScrollValue] = this._computeScrollValue(e);
@@ -15009,12 +15010,7 @@ class ScrollBar extends AbstractComponent {
15009
15010
  pre: preRange,
15010
15011
  value: clampRange(range, limitRange[0], limitRange[1])
15011
15012
  });
15012
- const triggers = getEndTriggersOfDrag();
15013
- const obj = vglobal.env === 'browser' ? vglobal : this.stage;
15014
- obj.removeEventListener('pointermove', this._onSliderPointerMoveWithDelay, { capture: true });
15015
- triggers.forEach((trigger) => {
15016
- obj.removeEventListener(trigger, this._onSliderPointerUp);
15017
- });
15013
+ this._clearDragEvents();
15018
15014
  };
15019
15015
  }
15020
15016
  setScrollRange(range, render = true) {
@@ -15147,6 +15143,14 @@ class ScrollBar extends AbstractComponent {
15147
15143
  ? clampRange([x1 + min * width, x1 + max * width], x1, width - sliderSize)
15148
15144
  : clampRange([y1 + min * height, y1 + max * height], y1, height - sliderSize);
15149
15145
  }
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
+ }
15150
15154
  _reset() {
15151
15155
  this._sliderRenderBounds = null;
15152
15156
  this._sliderLimitRange = null;
@@ -23011,8 +23015,13 @@ class DataZoom extends AbstractComponent {
23011
23015
  end: 1
23012
23016
  };
23013
23017
  this._statePointToData = state => state;
23018
+ this._handleTouchMove = (e) => {
23019
+ if (this._activeState) {
23020
+ e.preventDefault();
23021
+ }
23022
+ };
23014
23023
  this._onHandlerPointerDown = (e, tag) => {
23015
- e.stopPropagation();
23024
+ this._clearDragEvents();
23016
23025
  if (tag === 'start') {
23017
23026
  this._activeTag = DataZoomActiveTag.startHandler;
23018
23027
  this._activeItem = this._startHandlerMask;
@@ -23036,14 +23045,15 @@ class DataZoom extends AbstractComponent {
23036
23045
  this._activeState = true;
23037
23046
  this._activeCache.startPos = this.eventPosToStagePos(e);
23038
23047
  this._activeCache.lastPos = this.eventPosToStagePos(e);
23039
- if (vglobal.env === 'browser') {
23040
- vglobal.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
23041
- vglobal.addEventListener('pointerup', this._onHandlerPointerUp);
23042
- }
23043
- this.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
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
+ });
23044
23054
  };
23045
23055
  this._pointerMove = (e) => {
23046
- e.stopPropagation();
23056
+ e.preventDefault();
23047
23057
  const { start: startAttr, end: endAttr, brushSelect, realTime = true } = this.attribute;
23048
23058
  const pos = this.eventPosToStagePos(e);
23049
23059
  const { attPos, max } = this._layoutCache;
@@ -23073,12 +23083,12 @@ class DataZoom extends AbstractComponent {
23073
23083
  end = end + dis;
23074
23084
  }
23075
23085
  }
23076
- this._activeCache.lastPos = pos;
23077
23086
  brushSelect && this.renderDragMask();
23078
23087
  }
23079
23088
  start = Math.min(Math.max(start, 0), 1);
23080
23089
  end = Math.min(Math.max(end, 0), 1);
23081
23090
  if (startAttr !== start || endAttr !== end) {
23091
+ this._activeCache.lastPos = pos;
23082
23092
  this.setStateAttr(start, end, true);
23083
23093
  if (realTime) {
23084
23094
  this._dispatchEvent('change', {
@@ -23093,7 +23103,6 @@ class DataZoom extends AbstractComponent {
23093
23103
  ? this._pointerMove
23094
23104
  : delayMap$1[this.attribute.delayType](this._pointerMove, this.attribute.delayTime);
23095
23105
  this._onHandlerPointerUp = (e) => {
23096
- e.preventDefault();
23097
23106
  const { start, end, brushSelect, realTime = true } = this.attribute;
23098
23107
  if (this._activeState) {
23099
23108
  if (this._activeTag === DataZoomActiveTag.background) {
@@ -23108,12 +23117,7 @@ class DataZoom extends AbstractComponent {
23108
23117
  end: this.state.end,
23109
23118
  tag: this._activeTag
23110
23119
  });
23111
- if (vglobal.env === 'browser') {
23112
- vglobal.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
23113
- vglobal.removeEventListener('pointerup', this._onHandlerPointerUp);
23114
- }
23115
- this.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
23116
- this.removeEventListener('pointerup', this._onHandlerPointerUp);
23120
+ this._clearDragEvents();
23117
23121
  };
23118
23122
  const { position, showDetail } = attributes;
23119
23123
  this._activeCache.startPos = position;
@@ -23161,12 +23165,13 @@ class DataZoom extends AbstractComponent {
23161
23165
  if (this._selectedPreviewGroup) {
23162
23166
  this._selectedPreviewGroup.addEventListener('pointerdown', (e) => this._onHandlerPointerDown(e, selectedTag));
23163
23167
  }
23164
- this.addEventListener('pointerup', this._onHandlerPointerUp);
23165
- this.addEventListener('pointerupoutside', this._onHandlerPointerUp);
23166
23168
  if (showDetail === 'auto') {
23167
23169
  this.addEventListener('pointerenter', this._onHandlerPointerEnter);
23168
23170
  this.addEventListener('pointerleave', this._onHandlerPointerLeave);
23169
23171
  }
23172
+ (vglobal.env === 'browser' ? vglobal : this.stage).addEventListener('touchmove', this._handleTouchMove, {
23173
+ passive: false
23174
+ });
23170
23175
  }
23171
23176
  dragMaskSize() {
23172
23177
  const { position } = this.attribute;
@@ -23194,13 +23199,19 @@ class DataZoom extends AbstractComponent {
23194
23199
  var _a, _b;
23195
23200
  return (_b = (_a = this.stage) === null || _a === void 0 ? void 0 : _a.eventPointTransform(e)) !== null && _b !== void 0 ? _b : { x: 0, y: 0 };
23196
23201
  }
23202
+ _clearDragEvents() {
23203
+ const evtTarget = vglobal.env === 'browser' ? vglobal : this.stage;
23204
+ const triggers = getEndTriggersOfDrag();
23205
+ evtTarget.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true, passive: false });
23206
+ triggers.forEach((trigger) => {
23207
+ evtTarget.removeEventListener(trigger, this._onHandlerPointerUp);
23208
+ });
23209
+ }
23197
23210
  _onHandlerPointerEnter(e) {
23198
- e.stopPropagation();
23199
23211
  this._showText = true;
23200
23212
  this.renderText();
23201
23213
  }
23202
23214
  _onHandlerPointerLeave(e) {
23203
- e.stopPropagation();
23204
23215
  this._showText = false;
23205
23216
  this.renderText();
23206
23217
  }
@@ -23710,6 +23721,13 @@ class DataZoom extends AbstractComponent {
23710
23721
  setStatePointToData(callback) {
23711
23722
  isFunction(callback) && (this._statePointToData = callback);
23712
23723
  }
23724
+ release(all) {
23725
+ super.release(all);
23726
+ (vglobal.env === 'browser' ? vglobal : this.stage).addEventListener('touchmove', this._handleTouchMove, {
23727
+ passive: false
23728
+ });
23729
+ this._clearDragEvents();
23730
+ }
23713
23731
  }
23714
23732
  DataZoom.defaultAttributes = DEFAULT_DATA_ZOOM_ATTRIBUTES;
23715
23733
 
@@ -27217,21 +27235,21 @@ class Slider extends AbstractComponent {
27217
27235
  this._dispatchTooltipEvent('sliderTooltipHide');
27218
27236
  };
27219
27237
  this._onHandlerPointerdown = (e) => {
27220
- e.stopPropagation();
27238
+ this._clearAllDragEvents();
27221
27239
  this._isChanging = true;
27222
27240
  const { x, y } = this.stage.eventPointTransform(e);
27223
27241
  this._currentHandler = e.target;
27224
27242
  this._prePos = this._isHorizontal ? x : y;
27225
27243
  const triggers = getEndTriggersOfDrag();
27226
27244
  const obj = vglobal.env === 'browser' ? vglobal : this.stage;
27227
- obj.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
27245
+ obj.addEventListener('pointermove', this._onHandlerPointerMove, { capture: true, passive: false });
27228
27246
  triggers.forEach((trigger) => {
27229
27247
  obj.addEventListener(trigger, this._onHandlerPointerUp);
27230
27248
  });
27231
27249
  };
27232
27250
  this._onHandlerPointerMove = (e) => {
27233
27251
  var _a, _b;
27234
- e.stopPropagation();
27252
+ e.preventDefault();
27235
27253
  this._isChanging = true;
27236
27254
  const { railWidth, railHeight, min, max } = this.attribute;
27237
27255
  if (max === min) {
@@ -27267,30 +27285,29 @@ class Slider extends AbstractComponent {
27267
27285
  this._dispatchChangeEvent();
27268
27286
  };
27269
27287
  this._onHandlerPointerUp = (e) => {
27270
- e.preventDefault();
27271
27288
  this._isChanging = false;
27272
27289
  this._currentHandler = null;
27273
- const triggers = getEndTriggersOfDrag();
27274
- const obj = vglobal.env === 'browser' ? vglobal : this.stage;
27275
- obj.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true });
27276
- triggers.forEach((trigger) => {
27277
- obj.removeEventListener(trigger, this._onHandlerPointerUp);
27278
- });
27290
+ this._clearAllDragEvents();
27291
+ };
27292
+ this._handleTouchMove = (e) => {
27293
+ if (this._isChanging) {
27294
+ e.preventDefault();
27295
+ }
27279
27296
  };
27280
27297
  this._onTrackPointerdown = (e) => {
27281
- e.stopPropagation();
27298
+ this._clearAllDragEvents();
27282
27299
  this._isChanging = true;
27283
27300
  const { x, y } = this.stage.eventPointTransform(e);
27284
27301
  this._prePos = this._isHorizontal ? x : y;
27285
27302
  const triggers = getEndTriggersOfDrag();
27286
27303
  const obj = vglobal.env === 'browser' ? vglobal : this.stage;
27287
- obj.addEventListener('pointermove', this._onTrackPointerMove, { capture: true });
27304
+ obj.addEventListener('pointermove', this._onTrackPointerMove, { capture: true, passive: false });
27288
27305
  triggers.forEach((trigger) => {
27289
27306
  obj.addEventListener(trigger, this._onTrackPointerUp);
27290
27307
  });
27291
27308
  };
27292
27309
  this._onTrackPointerMove = (e) => {
27293
- e.stopPropagation();
27310
+ e.preventDefault();
27294
27311
  this._isChanging = true;
27295
27312
  const { railWidth, railHeight, min, max, inverse } = this.attribute;
27296
27313
  if (max === min) {
@@ -27342,17 +27359,11 @@ class Slider extends AbstractComponent {
27342
27359
  this._dispatchChangeEvent();
27343
27360
  };
27344
27361
  this._onTrackPointerUp = (e) => {
27345
- e.preventDefault();
27346
27362
  this._isChanging = false;
27347
- const triggers = getEndTriggersOfDrag();
27348
- const obj = vglobal.env === 'browser' ? vglobal : this.stage;
27349
- obj.removeEventListener('pointermove', this._onTrackPointerMove, { capture: true });
27350
- triggers.forEach((trigger) => {
27351
- obj.removeEventListener(trigger, this._onTrackPointerUp);
27352
- });
27363
+ this._clearAllDragEvents();
27353
27364
  };
27354
27365
  this._onRailPointerDown = (e) => {
27355
- e.stopPropagation();
27366
+ this._clearAllDragEvents();
27356
27367
  this._isChanging = true;
27357
27368
  const { railWidth, railHeight, min, max } = this.attribute;
27358
27369
  if (max === min) {
@@ -27730,6 +27741,9 @@ class Slider extends AbstractComponent {
27730
27741
  this._track.addEventListener('pointerdown', this._onTrackPointerdown);
27731
27742
  }
27732
27743
  this._railContainer.addEventListener('pointerdown', this._onRailPointerDown);
27744
+ (vglobal.env === 'browser' ? vglobal : this.stage).addEventListener('touchmove', this._handleTouchMove, {
27745
+ passive: false
27746
+ });
27733
27747
  }
27734
27748
  }
27735
27749
  _bindTooltipEvents() {
@@ -27740,6 +27754,18 @@ class Slider extends AbstractComponent {
27740
27754
  this._mainContainer.addEventListener('pointermove', this._onTooltipUpdate);
27741
27755
  this._mainContainer.addEventListener('pointerleave', this._onTooltipHide);
27742
27756
  }
27757
+ _clearAllDragEvents() {
27758
+ const triggers = getEndTriggersOfDrag();
27759
+ const obj = vglobal.env === 'browser' ? vglobal : this.stage;
27760
+ obj.removeEventListener('pointermove', this._onHandlerPointerMove, { capture: true, passive: false });
27761
+ triggers.forEach((trigger) => {
27762
+ obj.removeEventListener(trigger, this._onHandlerPointerUp);
27763
+ });
27764
+ obj.removeEventListener('pointermove', this._onTrackPointerMove, { capture: true, passive: false });
27765
+ triggers.forEach((trigger) => {
27766
+ obj.removeEventListener(trigger, this._onTrackPointerUp);
27767
+ });
27768
+ }
27743
27769
  _updateTrack() {
27744
27770
  const { inverse, railWidth, railHeight } = this.attribute;
27745
27771
  const startHandler = this._startHandler;
@@ -27880,6 +27906,13 @@ class Slider extends AbstractComponent {
27880
27906
  endHandler
27881
27907
  };
27882
27908
  }
27909
+ release(all) {
27910
+ super.release(all);
27911
+ (vglobal.env === 'browser' ? vglobal : this.stage).addEventListener('touchmove', this._handleTouchMove, {
27912
+ passive: false
27913
+ });
27914
+ this._clearAllDragEvents();
27915
+ }
27883
27916
  }
27884
27917
  Slider.defaultAttributes = {
27885
27918
  slidable: true,
@@ -29579,7 +29612,7 @@ var IOperateType;
29579
29612
  const DEFAULT_BRUSH_ATTRIBUTES = {
29580
29613
  trigger: 'pointerdown',
29581
29614
  updateTrigger: 'pointermove',
29582
- endTrigger: 'pointerup',
29615
+ endTrigger: ['pointerup', 'pointerleave'],
29583
29616
  resetTrigger: 'pointerupoutside',
29584
29617
  hasMask: true,
29585
29618
  brushMode: 'single',
@@ -29633,6 +29666,7 @@ class Brush extends AbstractComponent {
29633
29666
  this._isDownBeforeUpOutside = true;
29634
29667
  return;
29635
29668
  }
29669
+ this._isDownBeforeUpOutside = false;
29636
29670
  e.stopPropagation();
29637
29671
  const brushMoved = (_a = this.attribute.brushMoved) !== null && _a !== void 0 ? _a : true;
29638
29672
  this._activeMoveState = brushMoved && this._isPosInBrushMask(e);
@@ -29655,6 +29689,14 @@ class Brush extends AbstractComponent {
29655
29689
  : delayMap[this.attribute.delayType](this._onBrushing, this.attribute.delayTime);
29656
29690
  this._onBrushEnd = (e) => {
29657
29691
  var _a;
29692
+ if (this._isDownBeforeUpOutside) {
29693
+ if (!this._isEmptyMask()) {
29694
+ this._clearMask();
29695
+ this._dispatchBrushEvent(IOperateType.brushClear, e);
29696
+ }
29697
+ this._isDownBeforeUpOutside = false;
29698
+ return;
29699
+ }
29658
29700
  if (!this._activeDrawState && !this._activeMoveState) {
29659
29701
  return;
29660
29702
  }
@@ -29662,29 +29704,29 @@ class Brush extends AbstractComponent {
29662
29704
  const { removeOnClick = true } = this.attribute;
29663
29705
  if (this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick) {
29664
29706
  if ((_a = this._operatingMask) === null || _a === void 0 ? void 0 : _a._AABBBounds.empty()) {
29665
- this._dispatchEvent(IOperateType.brushClear, {
29666
- operateMask: this._operatingMask,
29667
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29668
- event: e
29669
- });
29707
+ if (!this._isEmptyMask()) {
29708
+ this._clearMask();
29709
+ this._dispatchBrushEvent(IOperateType.brushClear, e);
29710
+ }
29711
+ }
29712
+ else {
29713
+ delete this._brushMaskAABBBoundsDict[this._operatingMask.name];
29714
+ this._container.setAttributes({});
29715
+ this._container.removeChild(this._operatingMask);
29716
+ if (!this._isEmptyMask()) {
29717
+ this._dispatchBrushEvent(IOperateType.brushClear, e);
29718
+ }
29719
+ else {
29720
+ this._dispatchBrushEvent(IOperateType.drawEnd, e);
29721
+ }
29670
29722
  }
29671
- this._container.incrementalClearChild();
29672
- this._brushMaskAABBBoundsDict = {};
29673
29723
  }
29674
29724
  else {
29675
29725
  if (this._activeDrawState) {
29676
- this._dispatchEvent(IOperateType.drawEnd, {
29677
- operateMask: this._operatingMask,
29678
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29679
- event: e
29680
- });
29726
+ this._dispatchBrushEvent(IOperateType.drawEnd, e);
29681
29727
  }
29682
29728
  if (this._activeMoveState) {
29683
- this._dispatchEvent(IOperateType.moveEnd, {
29684
- operateMask: this._operatingMask,
29685
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29686
- event: e
29687
- });
29729
+ this._dispatchBrushEvent(IOperateType.moveEnd, e);
29688
29730
  }
29689
29731
  }
29690
29732
  this._activeDrawState = false;
@@ -29696,23 +29738,14 @@ class Brush extends AbstractComponent {
29696
29738
  };
29697
29739
  this._onBrushClear = (e) => {
29698
29740
  e.preventDefault();
29699
- const { removeOnClick = true } = this.attribute;
29700
- if (this._isDownBeforeUpOutside && removeOnClick) {
29701
- this._dispatchEvent(IOperateType.brushClear, {
29702
- operateMask: this._operatingMask,
29703
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29704
- event: e
29705
- });
29706
- this._container.incrementalClearChild();
29707
- this._brushMaskAABBBoundsDict = {};
29741
+ if (!this._isEmptyMask()) {
29742
+ this._clearMask();
29743
+ this._dispatchBrushEvent(IOperateType.brushClear, e);
29708
29744
  }
29709
29745
  this._activeDrawState = false;
29710
29746
  this._activeMoveState = false;
29711
29747
  this._isDrawedBeforeEnd = false;
29712
29748
  this._isDownBeforeUpOutside = false;
29713
- if (this._operatingMask) {
29714
- this._operatingMask.setAttribute('pickable', false);
29715
- }
29716
29749
  };
29717
29750
  }
29718
29751
  _bindBrushEvents() {
@@ -29720,44 +29753,19 @@ class Brush extends AbstractComponent {
29720
29753
  return;
29721
29754
  }
29722
29755
  const { trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger, updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger, endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger, resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger } = this.attribute;
29723
- array(trigger).forEach(t => vglobal.addEventListener(t, this._onBrushStart));
29756
+ array(trigger).forEach(t => this.stage.addEventListener(t, this._onBrushStart));
29724
29757
  array(updateTrigger).forEach(t => this.stage.addEventListener(t, this._onBrushingWithDelay));
29725
29758
  array(endTrigger).forEach(t => this.stage.addEventListener(t, this._onBrushEnd));
29726
29759
  array(resetTrigger).forEach(t => this.stage.addEventListener(t, this._onBrushClear));
29727
29760
  }
29728
- _isPosInBrushMask(e) {
29729
- const pos = this.eventPosToStagePos(e);
29730
- const brushMasks = this._container.getChildren();
29731
- for (let i = 0; i < brushMasks.length; i++) {
29732
- const { points = [], dx = 0, dy = 0 } = brushMasks[i].attribute;
29733
- const pointsConsiderOffset = points.map((point) => {
29734
- return {
29735
- x: point.x + dx,
29736
- y: point.y + dy
29737
- };
29738
- });
29739
- if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) {
29740
- this._operatingMask = brushMasks[i];
29741
- return true;
29742
- }
29743
- }
29744
- return false;
29745
- }
29746
29761
  _initDraw(e) {
29747
29762
  const { brushMode } = this.attribute;
29748
29763
  const pos = this.eventPosToStagePos(e);
29749
29764
  this._cacheDrawPoints = [pos];
29750
29765
  this._isDrawedBeforeEnd = false;
29751
- if (brushMode === 'single') {
29752
- this._brushMaskAABBBoundsDict = {};
29753
- this._container.incrementalClearChild();
29754
- }
29766
+ brushMode === 'single' && this._clearMask();
29755
29767
  this._addBrushMask();
29756
- this._dispatchEvent(IOperateType.drawStart, {
29757
- operateMask: this._operatingMask,
29758
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29759
- event: e
29760
- });
29768
+ this._dispatchBrushEvent(IOperateType.drawStart, e);
29761
29769
  }
29762
29770
  _initMove(e) {
29763
29771
  var _a, _b;
@@ -29774,11 +29782,7 @@ class Brush extends AbstractComponent {
29774
29782
  this._operatingMaskMoveRangeX = [minMoveStepX, maxMoveStepX];
29775
29783
  this._operatingMaskMoveRangeY = [minMoveStepY, maxMoveStepY];
29776
29784
  this._operatingMask.setAttribute('pickable', true);
29777
- this._dispatchEvent(IOperateType.moveStart, {
29778
- operateMask: this._operatingMask,
29779
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29780
- event: e
29781
- });
29785
+ this._dispatchBrushEvent(IOperateType.moveStart, e);
29782
29786
  }
29783
29787
  _drawing(e) {
29784
29788
  var _a, _b;
@@ -29805,12 +29809,8 @@ class Brush extends AbstractComponent {
29805
29809
  !!(Math.abs(x2 - x1) > sizeThreshold || Math.abs(y1 - y2) > sizeThreshold);
29806
29810
  if (this._isDrawedBeforeEnd) {
29807
29811
  this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;
29808
- this._dispatchEvent(IOperateType.drawing, {
29809
- operateMask: this._operatingMask,
29810
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29811
- event: e
29812
- });
29813
29812
  }
29813
+ this._dispatchBrushEvent(IOperateType.drawing, e);
29814
29814
  }
29815
29815
  _moving(e) {
29816
29816
  const startPos = this._cacheMovePoint;
@@ -29829,11 +29829,20 @@ class Brush extends AbstractComponent {
29829
29829
  dy: moveY
29830
29830
  });
29831
29831
  this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;
29832
- this._dispatchEvent(IOperateType.moving, {
29833
- operateMask: this._operatingMask,
29834
- operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29835
- event: e
29836
- });
29832
+ this._dispatchBrushEvent(IOperateType.moving, e);
29833
+ }
29834
+ render() {
29835
+ this.releaseBrushEvents();
29836
+ this._bindBrushEvents();
29837
+ const group = this.createOrUpdateChild('brush-container', {}, 'group');
29838
+ this._container = group;
29839
+ }
29840
+ releaseBrushEvents() {
29841
+ const { trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger, updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger, endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger, resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger } = this.attribute;
29842
+ array(trigger).forEach(t => this.stage.removeEventListener(t, this._onBrushStart));
29843
+ array(updateTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushingWithDelay));
29844
+ array(endTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushEnd));
29845
+ array(resetTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushClear));
29837
29846
  }
29838
29847
  _computeMaskPoints() {
29839
29848
  const { brushType, xRange = [0, 0], yRange = [0, 0] } = this.attribute;
@@ -29902,12 +29911,30 @@ class Brush extends AbstractComponent {
29902
29911
  _addBrushMask() {
29903
29912
  var _a;
29904
29913
  const { brushStyle, hasMask } = this.attribute;
29905
- 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 }));
29914
+ 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 }));
29906
29915
  brushMask.name = `brush-${Date.now()}`;
29907
29916
  this._operatingMask = brushMask;
29908
29917
  this._container.add(brushMask);
29909
29918
  this._brushMaskAABBBoundsDict[brushMask.name] = brushMask.AABBBounds;
29910
29919
  }
29920
+ _isPosInBrushMask(e) {
29921
+ const pos = this.eventPosToStagePos(e);
29922
+ const brushMasks = this._container.getChildren();
29923
+ for (let i = 0; i < brushMasks.length; i++) {
29924
+ const { points = [], dx = 0, dy = 0 } = brushMasks[i].attribute;
29925
+ const pointsConsiderOffset = points.map((point) => {
29926
+ return {
29927
+ x: point.x + dx,
29928
+ y: point.y + dy
29929
+ };
29930
+ });
29931
+ if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) {
29932
+ this._operatingMask = brushMasks[i];
29933
+ return true;
29934
+ }
29935
+ }
29936
+ return false;
29937
+ }
29911
29938
  _outOfInteractiveRange(e) {
29912
29939
  const { interactiveRange } = this.attribute;
29913
29940
  const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;
@@ -29920,17 +29947,21 @@ class Brush extends AbstractComponent {
29920
29947
  eventPosToStagePos(e) {
29921
29948
  return this.stage.eventPointTransform(e);
29922
29949
  }
29923
- render() {
29924
- this._bindBrushEvents();
29925
- const group = this.createOrUpdateChild('brush-container', {}, 'group');
29926
- this._container = group;
29950
+ _dispatchBrushEvent(operateType, e) {
29951
+ this._dispatchEvent(operateType, {
29952
+ operateMask: this._operatingMask,
29953
+ operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
29954
+ event: e
29955
+ });
29927
29956
  }
29928
- releaseBrushEvents() {
29929
- 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;
29930
- array(trigger).forEach(t => vglobal.removeEventListener(t, this._onBrushStart));
29931
- array(updateTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushingWithDelay));
29932
- array(endTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushEnd));
29933
- array(resetTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushClear));
29957
+ _clearMask() {
29958
+ this._brushMaskAABBBoundsDict = {};
29959
+ this._container.incrementalClearChild();
29960
+ this._operatingMask = null;
29961
+ }
29962
+ _isEmptyMask() {
29963
+ return (isEmpty(this._brushMaskAABBBoundsDict) ||
29964
+ Object.keys(this._brushMaskAABBBoundsDict).every(key => this._brushMaskAABBBoundsDict[key].empty()));
29934
29965
  }
29935
29966
  }
29936
29967
  Brush.defaultAttributes = DEFAULT_BRUSH_ATTRIBUTES;
@@ -31473,6 +31504,6 @@ StoryLabelItem.defaultAttributes = {
31473
31504
  theme: 'default'
31474
31505
  };
31475
31506
 
31476
- const version = "0.22.7-alpha.1";
31507
+ const version = "0.22.7-alpha.10";
31477
31508
 
31478
31509
  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
  }