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