@visactor/vrender-components 0.22.4 → 0.22.5-alpha.2
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.
- package/cjs/brush/brush.d.ts +6 -4
- package/cjs/brush/brush.js +53 -69
- package/cjs/brush/brush.js.map +1 -1
- package/cjs/brush/config.d.ts +1 -1
- package/cjs/brush/config.js +1 -1
- package/cjs/brush/config.js.map +1 -1
- package/cjs/brush/type.js +1 -2
- package/cjs/brush/type.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/jsx/component-type.js +1 -1
- package/cjs/jsx/index.js +1 -2
- package/cjs/label/base.js +2 -1
- package/cjs/label/rect.js +1 -1
- package/cjs/label/register.js +1 -1
- package/dist/index.es.js +79 -85
- package/es/brush/brush.d.ts +6 -4
- package/es/brush/brush.js +55 -72
- package/es/brush/brush.js.map +1 -1
- package/es/brush/config.d.ts +1 -1
- package/es/brush/config.js +1 -1
- package/es/brush/config.js.map +1 -1
- package/es/brush/type.js +1 -2
- package/es/brush/type.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/jsx/component-type.js +1 -1
- package/es/jsx/index.js +1 -2
- package/es/label/base.js +2 -1
- package/es/label/rect.js +1 -1
- package/es/label/register.js +1 -1
- package/package.json +5 -5
package/dist/index.es.js
CHANGED
|
@@ -29566,7 +29566,7 @@ var IOperateType;
|
|
|
29566
29566
|
const DEFAULT_BRUSH_ATTRIBUTES = {
|
|
29567
29567
|
trigger: 'pointerdown',
|
|
29568
29568
|
updateTrigger: 'pointermove',
|
|
29569
|
-
endTrigger: 'pointerup',
|
|
29569
|
+
endTrigger: ['pointerup', 'pointerleave'],
|
|
29570
29570
|
resetTrigger: 'pointerupoutside',
|
|
29571
29571
|
hasMask: true,
|
|
29572
29572
|
brushMode: 'single',
|
|
@@ -29620,6 +29620,7 @@ class Brush extends AbstractComponent {
|
|
|
29620
29620
|
this._isDownBeforeUpOutside = true;
|
|
29621
29621
|
return;
|
|
29622
29622
|
}
|
|
29623
|
+
this._isDownBeforeUpOutside = false;
|
|
29623
29624
|
e.stopPropagation();
|
|
29624
29625
|
const brushMoved = (_a = this.attribute.brushMoved) !== null && _a !== void 0 ? _a : true;
|
|
29625
29626
|
this._activeMoveState = brushMoved && this._isPosInBrushMask(e);
|
|
@@ -29642,6 +29643,14 @@ class Brush extends AbstractComponent {
|
|
|
29642
29643
|
: delayMap[this.attribute.delayType](this._onBrushing, this.attribute.delayTime);
|
|
29643
29644
|
this._onBrushEnd = (e) => {
|
|
29644
29645
|
var _a;
|
|
29646
|
+
if (this._isDownBeforeUpOutside) {
|
|
29647
|
+
if (!isEmpty(this._brushMaskAABBBoundsDict)) {
|
|
29648
|
+
this._clearMask();
|
|
29649
|
+
this._dispatchBrushEvent(IOperateType.brushClear, e);
|
|
29650
|
+
}
|
|
29651
|
+
this._isDownBeforeUpOutside = false;
|
|
29652
|
+
return;
|
|
29653
|
+
}
|
|
29645
29654
|
if (!this._activeDrawState && !this._activeMoveState) {
|
|
29646
29655
|
return;
|
|
29647
29656
|
}
|
|
@@ -29649,29 +29658,29 @@ class Brush extends AbstractComponent {
|
|
|
29649
29658
|
const { removeOnClick = true } = this.attribute;
|
|
29650
29659
|
if (this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick) {
|
|
29651
29660
|
if ((_a = this._operatingMask) === null || _a === void 0 ? void 0 : _a._AABBBounds.empty()) {
|
|
29652
|
-
this.
|
|
29653
|
-
|
|
29654
|
-
|
|
29655
|
-
|
|
29656
|
-
|
|
29661
|
+
if (!isEmpty(this._brushMaskAABBBoundsDict)) {
|
|
29662
|
+
this._clearMask();
|
|
29663
|
+
this._dispatchBrushEvent(IOperateType.brushClear, e);
|
|
29664
|
+
}
|
|
29665
|
+
}
|
|
29666
|
+
else {
|
|
29667
|
+
delete this._brushMaskAABBBoundsDict[this._operatingMask.name];
|
|
29668
|
+
this._container.setAttributes({});
|
|
29669
|
+
this._container.removeChild(this._operatingMask);
|
|
29670
|
+
if (isEmpty(this._brushMaskAABBBoundsDict)) {
|
|
29671
|
+
this._dispatchBrushEvent(IOperateType.brushClear, e);
|
|
29672
|
+
}
|
|
29673
|
+
else {
|
|
29674
|
+
this._dispatchBrushEvent(IOperateType.drawEnd, e);
|
|
29675
|
+
}
|
|
29657
29676
|
}
|
|
29658
|
-
this._container.incrementalClearChild();
|
|
29659
|
-
this._brushMaskAABBBoundsDict = {};
|
|
29660
29677
|
}
|
|
29661
29678
|
else {
|
|
29662
29679
|
if (this._activeDrawState) {
|
|
29663
|
-
this.
|
|
29664
|
-
operateMask: this._operatingMask,
|
|
29665
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
29666
|
-
event: e
|
|
29667
|
-
});
|
|
29680
|
+
this._dispatchBrushEvent(IOperateType.drawEnd, e);
|
|
29668
29681
|
}
|
|
29669
29682
|
if (this._activeMoveState) {
|
|
29670
|
-
this.
|
|
29671
|
-
operateMask: this._operatingMask,
|
|
29672
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
29673
|
-
event: e
|
|
29674
|
-
});
|
|
29683
|
+
this._dispatchBrushEvent(IOperateType.moveEnd, e);
|
|
29675
29684
|
}
|
|
29676
29685
|
}
|
|
29677
29686
|
this._activeDrawState = false;
|
|
@@ -29683,23 +29692,14 @@ class Brush extends AbstractComponent {
|
|
|
29683
29692
|
};
|
|
29684
29693
|
this._onBrushClear = (e) => {
|
|
29685
29694
|
e.preventDefault();
|
|
29686
|
-
|
|
29687
|
-
|
|
29688
|
-
this.
|
|
29689
|
-
operateMask: this._operatingMask,
|
|
29690
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
29691
|
-
event: e
|
|
29692
|
-
});
|
|
29693
|
-
this._container.incrementalClearChild();
|
|
29694
|
-
this._brushMaskAABBBoundsDict = {};
|
|
29695
|
+
if (!isEmpty(this._brushMaskAABBBoundsDict)) {
|
|
29696
|
+
this._clearMask();
|
|
29697
|
+
this._dispatchBrushEvent(IOperateType.brushClear, e);
|
|
29695
29698
|
}
|
|
29696
29699
|
this._activeDrawState = false;
|
|
29697
29700
|
this._activeMoveState = false;
|
|
29698
29701
|
this._isDrawedBeforeEnd = false;
|
|
29699
29702
|
this._isDownBeforeUpOutside = false;
|
|
29700
|
-
if (this._operatingMask) {
|
|
29701
|
-
this._operatingMask.setAttribute('pickable', false);
|
|
29702
|
-
}
|
|
29703
29703
|
};
|
|
29704
29704
|
}
|
|
29705
29705
|
_bindBrushEvents() {
|
|
@@ -29707,44 +29707,19 @@ class Brush extends AbstractComponent {
|
|
|
29707
29707
|
return;
|
|
29708
29708
|
}
|
|
29709
29709
|
const { trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger, updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger, endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger, resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger } = this.attribute;
|
|
29710
|
-
array(trigger).forEach(t =>
|
|
29710
|
+
array(trigger).forEach(t => this.stage.addEventListener(t, this._onBrushStart));
|
|
29711
29711
|
array(updateTrigger).forEach(t => this.stage.addEventListener(t, this._onBrushingWithDelay));
|
|
29712
29712
|
array(endTrigger).forEach(t => this.stage.addEventListener(t, this._onBrushEnd));
|
|
29713
29713
|
array(resetTrigger).forEach(t => this.stage.addEventListener(t, this._onBrushClear));
|
|
29714
29714
|
}
|
|
29715
|
-
_isPosInBrushMask(e) {
|
|
29716
|
-
const pos = this.eventPosToStagePos(e);
|
|
29717
|
-
const brushMasks = this._container.getChildren();
|
|
29718
|
-
for (let i = 0; i < brushMasks.length; i++) {
|
|
29719
|
-
const { points = [], dx = 0, dy = 0 } = brushMasks[i].attribute;
|
|
29720
|
-
const pointsConsiderOffset = points.map((point) => {
|
|
29721
|
-
return {
|
|
29722
|
-
x: point.x + dx,
|
|
29723
|
-
y: point.y + dy
|
|
29724
|
-
};
|
|
29725
|
-
});
|
|
29726
|
-
if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) {
|
|
29727
|
-
this._operatingMask = brushMasks[i];
|
|
29728
|
-
return true;
|
|
29729
|
-
}
|
|
29730
|
-
}
|
|
29731
|
-
return false;
|
|
29732
|
-
}
|
|
29733
29715
|
_initDraw(e) {
|
|
29734
29716
|
const { brushMode } = this.attribute;
|
|
29735
29717
|
const pos = this.eventPosToStagePos(e);
|
|
29736
29718
|
this._cacheDrawPoints = [pos];
|
|
29737
29719
|
this._isDrawedBeforeEnd = false;
|
|
29738
|
-
|
|
29739
|
-
this._brushMaskAABBBoundsDict = {};
|
|
29740
|
-
this._container.incrementalClearChild();
|
|
29741
|
-
}
|
|
29720
|
+
brushMode === 'single' && this._clearMask();
|
|
29742
29721
|
this._addBrushMask();
|
|
29743
|
-
this.
|
|
29744
|
-
operateMask: this._operatingMask,
|
|
29745
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
29746
|
-
event: e
|
|
29747
|
-
});
|
|
29722
|
+
this._dispatchBrushEvent(IOperateType.drawStart, e);
|
|
29748
29723
|
}
|
|
29749
29724
|
_initMove(e) {
|
|
29750
29725
|
var _a, _b;
|
|
@@ -29761,11 +29736,7 @@ class Brush extends AbstractComponent {
|
|
|
29761
29736
|
this._operatingMaskMoveRangeX = [minMoveStepX, maxMoveStepX];
|
|
29762
29737
|
this._operatingMaskMoveRangeY = [minMoveStepY, maxMoveStepY];
|
|
29763
29738
|
this._operatingMask.setAttribute('pickable', true);
|
|
29764
|
-
this.
|
|
29765
|
-
operateMask: this._operatingMask,
|
|
29766
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
29767
|
-
event: e
|
|
29768
|
-
});
|
|
29739
|
+
this._dispatchBrushEvent(IOperateType.moveStart, e);
|
|
29769
29740
|
}
|
|
29770
29741
|
_drawing(e) {
|
|
29771
29742
|
var _a, _b;
|
|
@@ -29792,12 +29763,8 @@ class Brush extends AbstractComponent {
|
|
|
29792
29763
|
!!(Math.abs(x2 - x1) > sizeThreshold || Math.abs(y1 - y2) > sizeThreshold);
|
|
29793
29764
|
if (this._isDrawedBeforeEnd) {
|
|
29794
29765
|
this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;
|
|
29795
|
-
this._dispatchEvent(IOperateType.drawing, {
|
|
29796
|
-
operateMask: this._operatingMask,
|
|
29797
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
29798
|
-
event: e
|
|
29799
|
-
});
|
|
29800
29766
|
}
|
|
29767
|
+
this._dispatchBrushEvent(IOperateType.drawing, e);
|
|
29801
29768
|
}
|
|
29802
29769
|
_moving(e) {
|
|
29803
29770
|
const startPos = this._cacheMovePoint;
|
|
@@ -29816,11 +29783,20 @@ class Brush extends AbstractComponent {
|
|
|
29816
29783
|
dy: moveY
|
|
29817
29784
|
});
|
|
29818
29785
|
this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds;
|
|
29819
|
-
this.
|
|
29820
|
-
|
|
29821
|
-
|
|
29822
|
-
|
|
29823
|
-
|
|
29786
|
+
this._dispatchBrushEvent(IOperateType.moving, e);
|
|
29787
|
+
}
|
|
29788
|
+
render() {
|
|
29789
|
+
this.releaseBrushEvents();
|
|
29790
|
+
this._bindBrushEvents();
|
|
29791
|
+
const group = this.createOrUpdateChild('brush-container', {}, 'group');
|
|
29792
|
+
this._container = group;
|
|
29793
|
+
}
|
|
29794
|
+
releaseBrushEvents() {
|
|
29795
|
+
const { trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger, updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger, endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger, resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger } = this.attribute;
|
|
29796
|
+
array(trigger).forEach(t => this.stage.removeEventListener(t, this._onBrushStart));
|
|
29797
|
+
array(updateTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushingWithDelay));
|
|
29798
|
+
array(endTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushEnd));
|
|
29799
|
+
array(resetTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushClear));
|
|
29824
29800
|
}
|
|
29825
29801
|
_computeMaskPoints() {
|
|
29826
29802
|
const { brushType, xRange = [0, 0], yRange = [0, 0] } = this.attribute;
|
|
@@ -29889,12 +29865,30 @@ class Brush extends AbstractComponent {
|
|
|
29889
29865
|
_addBrushMask() {
|
|
29890
29866
|
var _a;
|
|
29891
29867
|
const { brushStyle, hasMask } = this.attribute;
|
|
29892
|
-
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 }));
|
|
29868
|
+
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 }));
|
|
29893
29869
|
brushMask.name = `brush-${Date.now()}`;
|
|
29894
29870
|
this._operatingMask = brushMask;
|
|
29895
29871
|
this._container.add(brushMask);
|
|
29896
29872
|
this._brushMaskAABBBoundsDict[brushMask.name] = brushMask.AABBBounds;
|
|
29897
29873
|
}
|
|
29874
|
+
_isPosInBrushMask(e) {
|
|
29875
|
+
const pos = this.eventPosToStagePos(e);
|
|
29876
|
+
const brushMasks = this._container.getChildren();
|
|
29877
|
+
for (let i = 0; i < brushMasks.length; i++) {
|
|
29878
|
+
const { points = [], dx = 0, dy = 0 } = brushMasks[i].attribute;
|
|
29879
|
+
const pointsConsiderOffset = points.map((point) => {
|
|
29880
|
+
return {
|
|
29881
|
+
x: point.x + dx,
|
|
29882
|
+
y: point.y + dy
|
|
29883
|
+
};
|
|
29884
|
+
});
|
|
29885
|
+
if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) {
|
|
29886
|
+
this._operatingMask = brushMasks[i];
|
|
29887
|
+
return true;
|
|
29888
|
+
}
|
|
29889
|
+
}
|
|
29890
|
+
return false;
|
|
29891
|
+
}
|
|
29898
29892
|
_outOfInteractiveRange(e) {
|
|
29899
29893
|
const { interactiveRange } = this.attribute;
|
|
29900
29894
|
const { minY = -Infinity, maxY = Infinity, minX = -Infinity, maxX = Infinity } = interactiveRange;
|
|
@@ -29907,17 +29901,17 @@ class Brush extends AbstractComponent {
|
|
|
29907
29901
|
eventPosToStagePos(e) {
|
|
29908
29902
|
return this.stage.eventPointTransform(e);
|
|
29909
29903
|
}
|
|
29910
|
-
|
|
29911
|
-
this.
|
|
29912
|
-
|
|
29913
|
-
|
|
29904
|
+
_dispatchBrushEvent(operateType, e) {
|
|
29905
|
+
this._dispatchEvent(operateType, {
|
|
29906
|
+
operateMask: this._operatingMask,
|
|
29907
|
+
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
29908
|
+
event: e
|
|
29909
|
+
});
|
|
29914
29910
|
}
|
|
29915
|
-
|
|
29916
|
-
|
|
29917
|
-
|
|
29918
|
-
|
|
29919
|
-
array(endTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushEnd));
|
|
29920
|
-
array(resetTrigger).forEach(t => this.stage.removeEventListener(t, this._onBrushClear));
|
|
29911
|
+
_clearMask() {
|
|
29912
|
+
this._brushMaskAABBBoundsDict = {};
|
|
29913
|
+
this._container.incrementalClearChild();
|
|
29914
|
+
this._operatingMask = null;
|
|
29921
29915
|
}
|
|
29922
29916
|
}
|
|
29923
29917
|
Brush.defaultAttributes = DEFAULT_BRUSH_ATTRIBUTES;
|
|
@@ -31460,6 +31454,6 @@ StoryLabelItem.defaultAttributes = {
|
|
|
31460
31454
|
theme: 'default'
|
|
31461
31455
|
};
|
|
31462
31456
|
|
|
31463
|
-
const version = "0.22.
|
|
31457
|
+
const version = "0.22.5-alpha.2";
|
|
31464
31458
|
|
|
31465
31459
|
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 };
|
package/es/brush/brush.d.ts
CHANGED
|
@@ -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,16 @@ 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
|
-
|
|
65
|
-
|
|
66
|
+
private _dispatchBrushEvent;
|
|
67
|
+
private _clearMask;
|
|
66
68
|
}
|
package/es/brush/brush.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { graphicCreator
|
|
1
|
+
import { graphicCreator } from "@visactor/vrender-core";
|
|
2
2
|
|
|
3
|
-
import { array, cloneDeep, debounce, merge, polygonContainPoint, throttle } from "@visactor/vutils";
|
|
3
|
+
import { array, cloneDeep, debounce, isEmpty, merge, polygonContainPoint, throttle } from "@visactor/vutils";
|
|
4
4
|
|
|
5
5
|
import { AbstractComponent } from "../core/base";
|
|
6
6
|
|
|
@@ -27,7 +27,7 @@ export class Brush extends AbstractComponent {
|
|
|
27
27
|
this._onBrushStart = e => {
|
|
28
28
|
var _a;
|
|
29
29
|
if (this._outOfInteractiveRange(e)) return void (this._isDownBeforeUpOutside = !0);
|
|
30
|
-
e.stopPropagation();
|
|
30
|
+
this._isDownBeforeUpOutside = !1, e.stopPropagation();
|
|
31
31
|
const brushMoved = null === (_a = this.attribute.brushMoved) || void 0 === _a || _a;
|
|
32
32
|
this._activeMoveState = brushMoved && this._isPosInBrushMask(e), this._activeDrawState = !this._activeMoveState,
|
|
33
33
|
this._activeDrawState && this._initDraw(e), this._activeMoveState && this._initMove(e);
|
|
@@ -37,63 +37,35 @@ export class Brush extends AbstractComponent {
|
|
|
37
37
|
}, this._onBrushingWithDelay = 0 === this.attribute.delayTime ? this._onBrushing : delayMap[this.attribute.delayType](this._onBrushing, this.attribute.delayTime),
|
|
38
38
|
this._onBrushEnd = e => {
|
|
39
39
|
var _a;
|
|
40
|
+
if (this._isDownBeforeUpOutside) return isEmpty(this._brushMaskAABBBoundsDict) || (this._clearMask(),
|
|
41
|
+
this._dispatchBrushEvent(IOperateType.brushClear, e)), void (this._isDownBeforeUpOutside = !1);
|
|
40
42
|
if (!this._activeDrawState && !this._activeMoveState) return;
|
|
41
43
|
e.preventDefault();
|
|
42
44
|
const {removeOnClick: removeOnClick = !0} = this.attribute;
|
|
43
|
-
this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick ? (
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
50
|
-
event: e
|
|
51
|
-
}), this._activeMoveState && this._dispatchEvent(IOperateType.moveEnd, {
|
|
52
|
-
operateMask: this._operatingMask,
|
|
53
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
54
|
-
event: e
|
|
55
|
-
})), this._activeDrawState = !1, this._activeMoveState = !1, this._isDrawedBeforeEnd = !1,
|
|
56
|
-
this._operatingMask && this._operatingMask.setAttribute("pickable", !1);
|
|
45
|
+
this._activeDrawState && !this._isDrawedBeforeEnd && removeOnClick ? (null === (_a = this._operatingMask) || void 0 === _a ? void 0 : _a._AABBBounds.empty()) ? isEmpty(this._brushMaskAABBBoundsDict) || (this._clearMask(),
|
|
46
|
+
this._dispatchBrushEvent(IOperateType.brushClear, e)) : (delete this._brushMaskAABBBoundsDict[this._operatingMask.name],
|
|
47
|
+
this._container.setAttributes({}), this._container.removeChild(this._operatingMask),
|
|
48
|
+
isEmpty(this._brushMaskAABBBoundsDict) ? this._dispatchBrushEvent(IOperateType.brushClear, e) : this._dispatchBrushEvent(IOperateType.drawEnd, e)) : (this._activeDrawState && this._dispatchBrushEvent(IOperateType.drawEnd, e),
|
|
49
|
+
this._activeMoveState && this._dispatchBrushEvent(IOperateType.moveEnd, e)), this._activeDrawState = !1,
|
|
50
|
+
this._activeMoveState = !1, this._isDrawedBeforeEnd = !1, this._operatingMask && this._operatingMask.setAttribute("pickable", !1);
|
|
57
51
|
}, this._onBrushClear = e => {
|
|
58
|
-
e.preventDefault()
|
|
59
|
-
|
|
60
|
-
this.
|
|
61
|
-
operateMask: this._operatingMask,
|
|
62
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
63
|
-
event: e
|
|
64
|
-
}), this._container.incrementalClearChild(), this._brushMaskAABBBoundsDict = {}),
|
|
65
|
-
this._activeDrawState = !1, this._activeMoveState = !1, this._isDrawedBeforeEnd = !1,
|
|
66
|
-
this._isDownBeforeUpOutside = !1, this._operatingMask && this._operatingMask.setAttribute("pickable", !1);
|
|
52
|
+
e.preventDefault(), isEmpty(this._brushMaskAABBBoundsDict) || (this._clearMask(),
|
|
53
|
+
this._dispatchBrushEvent(IOperateType.brushClear, e)), this._activeDrawState = !1,
|
|
54
|
+
this._activeMoveState = !1, this._isDrawedBeforeEnd = !1, this._isDownBeforeUpOutside = !1;
|
|
67
55
|
};
|
|
68
56
|
}
|
|
69
57
|
_bindBrushEvents() {
|
|
70
58
|
if (this.attribute.disableTriggerEvent) return;
|
|
71
59
|
const {trigger: trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger, updateTrigger: updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger, endTrigger: endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger, resetTrigger: resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger} = this.attribute;
|
|
72
|
-
array(trigger).forEach((t =>
|
|
60
|
+
array(trigger).forEach((t => this.stage.addEventListener(t, this._onBrushStart))),
|
|
73
61
|
array(updateTrigger).forEach((t => this.stage.addEventListener(t, this._onBrushingWithDelay))),
|
|
74
62
|
array(endTrigger).forEach((t => this.stage.addEventListener(t, this._onBrushEnd))),
|
|
75
63
|
array(resetTrigger).forEach((t => this.stage.addEventListener(t, this._onBrushClear)));
|
|
76
64
|
}
|
|
77
|
-
_isPosInBrushMask(e) {
|
|
78
|
-
const pos = this.eventPosToStagePos(e), brushMasks = this._container.getChildren();
|
|
79
|
-
for (let i = 0; i < brushMasks.length; i++) {
|
|
80
|
-
const {points: points = [], dx: dx = 0, dy: dy = 0} = brushMasks[i].attribute, pointsConsiderOffset = points.map((point => ({
|
|
81
|
-
x: point.x + dx,
|
|
82
|
-
y: point.y + dy
|
|
83
|
-
})));
|
|
84
|
-
if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) return this._operatingMask = brushMasks[i],
|
|
85
|
-
!0;
|
|
86
|
-
}
|
|
87
|
-
return !1;
|
|
88
|
-
}
|
|
89
65
|
_initDraw(e) {
|
|
90
66
|
const {brushMode: brushMode} = this.attribute, pos = this.eventPosToStagePos(e);
|
|
91
|
-
this._cacheDrawPoints = [ pos ], this._isDrawedBeforeEnd = !1, "single" === brushMode &&
|
|
92
|
-
this.
|
|
93
|
-
operateMask: this._operatingMask,
|
|
94
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
95
|
-
event: e
|
|
96
|
-
});
|
|
67
|
+
this._cacheDrawPoints = [ pos ], this._isDrawedBeforeEnd = !1, "single" === brushMode && this._clearMask(),
|
|
68
|
+
this._addBrushMask(), this._dispatchBrushEvent(IOperateType.drawStart, e);
|
|
97
69
|
}
|
|
98
70
|
_initMove(e) {
|
|
99
71
|
var _a, _b;
|
|
@@ -101,11 +73,7 @@ export class Brush extends AbstractComponent {
|
|
|
101
73
|
this._operatingMaskMoveDy = null !== (_b = this._operatingMask.attribute.dy) && void 0 !== _b ? _b : 0;
|
|
102
74
|
const {interactiveRange: interactiveRange} = this.attribute, {minY: minY = -1 / 0, maxY: maxY = 1 / 0, minX: minX = -1 / 0, maxX: maxX = 1 / 0} = interactiveRange, {x1: x1, x2: x2, y1: y1, y2: y2} = this._operatingMask.globalAABBBounds, minMoveStepX = minX - x1, maxMoveStepX = maxX - x2, minMoveStepY = minY - y1, maxMoveStepY = maxY - y2;
|
|
103
75
|
this._operatingMaskMoveRangeX = [ minMoveStepX, maxMoveStepX ], this._operatingMaskMoveRangeY = [ minMoveStepY, maxMoveStepY ],
|
|
104
|
-
this._operatingMask.setAttribute("pickable", !0), this.
|
|
105
|
-
operateMask: this._operatingMask,
|
|
106
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
107
|
-
event: e
|
|
108
|
-
});
|
|
76
|
+
this._operatingMask.setAttribute("pickable", !0), this._dispatchBrushEvent(IOperateType.moveStart, e);
|
|
109
77
|
}
|
|
110
78
|
_drawing(e) {
|
|
111
79
|
var _a, _b;
|
|
@@ -119,12 +87,8 @@ export class Brush extends AbstractComponent {
|
|
|
119
87
|
this._operatingMask.setAttribute("points", maskPoints);
|
|
120
88
|
const {x1: x1 = 0, x2: x2 = 0, y1: y1 = 0, y2: y2 = 0} = null === (_b = this._operatingMask) || void 0 === _b ? void 0 : _b._AABBBounds;
|
|
121
89
|
this._isDrawedBeforeEnd = !this._operatingMask._AABBBounds.empty() && !!(Math.abs(x2 - x1) > sizeThreshold || Math.abs(y1 - y2) > sizeThreshold),
|
|
122
|
-
this._isDrawedBeforeEnd && (this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds,
|
|
123
|
-
this.
|
|
124
|
-
operateMask: this._operatingMask,
|
|
125
|
-
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
126
|
-
event: e
|
|
127
|
-
}));
|
|
90
|
+
this._isDrawedBeforeEnd && (this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds),
|
|
91
|
+
this._dispatchBrushEvent(IOperateType.drawing, e);
|
|
128
92
|
}
|
|
129
93
|
_moving(e) {
|
|
130
94
|
const startPos = this._cacheMovePoint, pos = this.eventPosToStagePos(e);
|
|
@@ -134,11 +98,19 @@ export class Brush extends AbstractComponent {
|
|
|
134
98
|
dx: moveX,
|
|
135
99
|
dy: moveY
|
|
136
100
|
}), this._brushMaskAABBBoundsDict[this._operatingMask.name] = this._operatingMask.AABBBounds,
|
|
137
|
-
this.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
});
|
|
101
|
+
this._dispatchBrushEvent(IOperateType.moving, e);
|
|
102
|
+
}
|
|
103
|
+
render() {
|
|
104
|
+
this.releaseBrushEvents(), this._bindBrushEvents();
|
|
105
|
+
const group = this.createOrUpdateChild("brush-container", {}, "group");
|
|
106
|
+
this._container = group;
|
|
107
|
+
}
|
|
108
|
+
releaseBrushEvents() {
|
|
109
|
+
const {trigger: trigger = DEFAULT_BRUSH_ATTRIBUTES.trigger, updateTrigger: updateTrigger = DEFAULT_BRUSH_ATTRIBUTES.updateTrigger, endTrigger: endTrigger = DEFAULT_BRUSH_ATTRIBUTES.endTrigger, resetTrigger: resetTrigger = DEFAULT_BRUSH_ATTRIBUTES.resetTrigger} = this.attribute;
|
|
110
|
+
array(trigger).forEach((t => this.stage.removeEventListener(t, this._onBrushStart))),
|
|
111
|
+
array(updateTrigger).forEach((t => this.stage.removeEventListener(t, this._onBrushingWithDelay))),
|
|
112
|
+
array(endTrigger).forEach((t => this.stage.removeEventListener(t, this._onBrushEnd))),
|
|
113
|
+
array(resetTrigger).forEach((t => this.stage.removeEventListener(t, this._onBrushClear)));
|
|
142
114
|
}
|
|
143
115
|
_computeMaskPoints() {
|
|
144
116
|
const {brushType: brushType, xRange: xRange = [ 0, 0 ], yRange: yRange = [ 0, 0 ]} = this.attribute;
|
|
@@ -188,6 +160,18 @@ export class Brush extends AbstractComponent {
|
|
|
188
160
|
brushMask.name = `brush-${Date.now()}`, this._operatingMask = brushMask, this._container.add(brushMask),
|
|
189
161
|
this._brushMaskAABBBoundsDict[brushMask.name] = brushMask.AABBBounds;
|
|
190
162
|
}
|
|
163
|
+
_isPosInBrushMask(e) {
|
|
164
|
+
const pos = this.eventPosToStagePos(e), brushMasks = this._container.getChildren();
|
|
165
|
+
for (let i = 0; i < brushMasks.length; i++) {
|
|
166
|
+
const {points: points = [], dx: dx = 0, dy: dy = 0} = brushMasks[i].attribute, pointsConsiderOffset = points.map((point => ({
|
|
167
|
+
x: point.x + dx,
|
|
168
|
+
y: point.y + dy
|
|
169
|
+
})));
|
|
170
|
+
if (polygonContainPoint(pointsConsiderOffset, pos.x, pos.y)) return this._operatingMask = brushMasks[i],
|
|
171
|
+
!0;
|
|
172
|
+
}
|
|
173
|
+
return !1;
|
|
174
|
+
}
|
|
191
175
|
_outOfInteractiveRange(e) {
|
|
192
176
|
const {interactiveRange: interactiveRange} = this.attribute, {minY: minY = -1 / 0, maxY: maxY = 1 / 0, minX: minX = -1 / 0, maxX: maxX = 1 / 0} = interactiveRange, pos = this.eventPosToStagePos(e);
|
|
193
177
|
return pos.x > maxX || pos.x < minX || pos.y > maxY || pos.y < minY;
|
|
@@ -195,18 +179,17 @@ export class Brush extends AbstractComponent {
|
|
|
195
179
|
eventPosToStagePos(e) {
|
|
196
180
|
return this.stage.eventPointTransform(e);
|
|
197
181
|
}
|
|
198
|
-
|
|
199
|
-
this.
|
|
200
|
-
|
|
201
|
-
|
|
182
|
+
_dispatchBrushEvent(operateType, e) {
|
|
183
|
+
this._dispatchEvent(operateType, {
|
|
184
|
+
operateMask: this._operatingMask,
|
|
185
|
+
operatedMaskAABBBounds: this._brushMaskAABBBoundsDict,
|
|
186
|
+
event: e
|
|
187
|
+
});
|
|
202
188
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
array(trigger).forEach((t => vglobal.removeEventListener(t, this._onBrushStart))),
|
|
206
|
-
array(updateTrigger).forEach((t => this.stage.removeEventListener(t, this._onBrushingWithDelay))),
|
|
207
|
-
array(endTrigger).forEach((t => this.stage.removeEventListener(t, this._onBrushEnd))),
|
|
208
|
-
array(resetTrigger).forEach((t => this.stage.removeEventListener(t, this._onBrushClear)));
|
|
189
|
+
_clearMask() {
|
|
190
|
+
this._brushMaskAABBBoundsDict = {}, this._container.incrementalClearChild(), this._operatingMask = null;
|
|
209
191
|
}
|
|
210
192
|
}
|
|
211
193
|
|
|
212
|
-
Brush.defaultAttributes = DEFAULT_BRUSH_ATTRIBUTES;
|
|
194
|
+
Brush.defaultAttributes = DEFAULT_BRUSH_ATTRIBUTES;
|
|
195
|
+
//# sourceMappingURL=brush.js.map
|