@visactor/vrender-components 0.18.10-alpha.2 → 0.18.10-alpha.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/axis/base.js +4 -20
- package/cjs/axis/base.js.map +1 -1
- package/cjs/brush/brush.js +1 -2
- package/cjs/brush/type.js +2 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/{es/marker/polar/area.d.ts → cjs/marker/arc-area.d.ts} +8 -8
- package/cjs/marker/{polar/area.js → arc-area.js} +18 -18
- package/cjs/marker/arc-area.js.map +1 -0
- package/cjs/marker/arc-line.d.ts +23 -0
- package/cjs/marker/{polar/arc-line.js → arc-line.js} +22 -26
- package/cjs/marker/arc-line.js.map +1 -0
- package/{es/marker/cartesian → cjs/marker}/area.d.ts +8 -8
- package/cjs/marker/{cartesian/area.js → area.js} +19 -19
- package/cjs/marker/area.js.map +1 -0
- package/cjs/marker/base.d.ts +1 -0
- package/cjs/marker/base.js +12 -26
- package/cjs/marker/base.js.map +1 -1
- package/cjs/marker/{base-line.d.ts → common-line.d.ts} +3 -2
- package/cjs/marker/{base-line.js → common-line.js} +11 -9
- package/cjs/marker/common-line.js.map +1 -0
- package/cjs/marker/config.d.ts +9 -9
- package/cjs/marker/config.js +9 -9
- package/cjs/marker/config.js.map +1 -1
- package/cjs/marker/index.d.ts +4 -4
- package/cjs/marker/index.js +3 -3
- package/cjs/marker/index.js.map +1 -1
- package/cjs/marker/line.d.ts +28 -0
- package/cjs/marker/{cartesian/line.js → line.js} +36 -40
- package/cjs/marker/line.js.map +1 -0
- package/cjs/marker/register.d.ts +4 -5
- package/cjs/marker/register.js +8 -12
- package/cjs/marker/register.js.map +1 -1
- package/cjs/marker/type.d.ts +23 -33
- package/cjs/marker/type.js +21 -22
- package/cjs/marker/type.js.map +1 -1
- package/cjs/util/interaction.d.ts +4 -0
- package/cjs/util/interaction.js +37 -0
- package/cjs/util/interaction.js.map +1 -0
- package/es/axis/base.js +7 -21
- package/es/axis/base.js.map +1 -1
- package/es/brush/brush.js +1 -2
- package/es/brush/type.js +2 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/{cjs/marker/polar/area.d.ts → es/marker/arc-area.d.ts} +8 -8
- package/es/marker/{polar/area.js → arc-area.js} +23 -23
- package/es/marker/arc-area.js.map +1 -0
- package/es/marker/arc-line.d.ts +23 -0
- package/es/marker/{polar/arc-line.js → arc-line.js} +26 -30
- package/es/marker/arc-line.js.map +1 -0
- package/{cjs/marker/cartesian → es/marker}/area.d.ts +8 -8
- package/es/marker/{cartesian/area.js → area.js} +23 -23
- package/es/marker/area.js.map +1 -0
- package/es/marker/base.d.ts +1 -0
- package/es/marker/base.js +12 -30
- package/es/marker/base.js.map +1 -1
- package/es/marker/{base-line.d.ts → common-line.d.ts} +3 -2
- package/es/marker/{base-line.js → common-line.js} +9 -7
- package/es/marker/common-line.js.map +1 -0
- package/es/marker/config.d.ts +9 -9
- package/es/marker/config.js +9 -9
- package/es/marker/config.js.map +1 -1
- package/es/marker/index.d.ts +4 -4
- package/es/marker/index.js +4 -4
- package/es/marker/index.js.map +1 -1
- package/es/marker/line.d.ts +28 -0
- package/es/marker/{cartesian/line.js → line.js} +40 -44
- package/es/marker/line.js.map +1 -0
- package/es/marker/register.d.ts +4 -5
- package/es/marker/register.js +4 -8
- package/es/marker/register.js.map +1 -1
- package/es/marker/type.d.ts +23 -33
- package/es/marker/type.js +22 -23
- package/es/marker/type.js.map +1 -1
- package/es/util/interaction.d.ts +4 -0
- package/es/util/interaction.js +30 -0
- package/es/util/interaction.js.map +1 -0
- package/package.json +5 -5
- package/cjs/marker/base-line.js.map +0 -1
- package/cjs/marker/cartesian/area.js.map +0 -1
- package/cjs/marker/cartesian/line.d.ts +0 -27
- package/cjs/marker/cartesian/line.js.map +0 -1
- package/cjs/marker/polar/arc-line.d.ts +0 -22
- package/cjs/marker/polar/arc-line.js.map +0 -1
- package/cjs/marker/polar/area.js.map +0 -1
- package/cjs/marker/polar/line.d.ts +0 -1
- package/cjs/marker/polar/line.js +0 -3
- package/cjs/marker/polar/line.js.map +0 -1
- package/es/marker/base-line.js.map +0 -1
- package/es/marker/cartesian/area.js.map +0 -1
- package/es/marker/cartesian/line.d.ts +0 -27
- package/es/marker/cartesian/line.js.map +0 -1
- package/es/marker/polar/arc-line.d.ts +0 -22
- package/es/marker/polar/arc-line.js.map +0 -1
- package/es/marker/polar/area.js.map +0 -1
- package/es/marker/polar/line.d.ts +0 -1
- package/es/marker/polar/line.js +0 -3
- package/es/marker/polar/line.js.map +0 -1
|
@@ -2,80 +2,70 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.
|
|
5
|
+
}), exports.MarkLine = void 0;
|
|
6
6
|
|
|
7
|
-
const vutils_1 = require("@visactor/vutils"), type_1 = require("
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), type_1 = require("./type"), register_1 = require("./register"), common_line_1 = require("./common-line"), segment_1 = require("../segment"), constant_1 = require("../constant"), config_1 = require("./config");
|
|
8
8
|
|
|
9
|
-
(0, register_1.
|
|
9
|
+
(0, register_1.loadMarkLineComponent)();
|
|
10
10
|
|
|
11
|
-
class
|
|
11
|
+
class MarkLine extends common_line_1.MarkCommonLine {
|
|
12
12
|
constructor(attributes, options) {
|
|
13
|
-
super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({},
|
|
14
|
-
this.name = "
|
|
13
|
+
super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, MarkLine.defaultAttributes, attributes)),
|
|
14
|
+
this.name = "markLine";
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (point.length) point.forEach((p => {
|
|
22
|
-
(0, vutils_1.isValidNumber)(p.x) && (0, vutils_1.isValidNumber)(p.y) || (validFlag = !1);
|
|
23
|
-
})); else if (!(0, vutils_1.isValidNumber)(point.x) || !(0, vutils_1.isValidNumber)(point.y)) return void (validFlag = !1);
|
|
24
|
-
})), validFlag;
|
|
25
|
-
}
|
|
26
|
-
getLabelOffsetByDirection(direction) {
|
|
27
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
28
|
-
const labelRectHeight = Math.abs((null !== (_b = null === (_a = this._label.getTextShape().AABBBounds) || void 0 === _a ? void 0 : _a.y2) && void 0 !== _b ? _b : 0) - (null !== (_d = null === (_c = this._label.getTextShape()) || void 0 === _c ? void 0 : _c.AABBBounds.y1) && void 0 !== _d ? _d : 0)), labelTextHeight = Math.abs((null !== (_f = null === (_e = this._label.getBgRect().AABBBounds) || void 0 === _e ? void 0 : _e.y2) && void 0 !== _f ? _f : 0) - (null !== (_h = null === (_g = this._label.getBgRect()) || void 0 === _g ? void 0 : _g.AABBBounds.y1) && void 0 !== _h ? _h : 0)), labelHeight = Math.max(labelRectHeight, labelTextHeight), labelRectWidth = Math.abs((null !== (_k = null === (_j = this._label.getTextShape().AABBBounds) || void 0 === _j ? void 0 : _j.x2) && void 0 !== _k ? _k : 0) - (null !== (_m = null === (_l = this._label.getTextShape()) || void 0 === _l ? void 0 : _l.AABBBounds.x1) && void 0 !== _m ? _m : 0)), labelTextWidth = Math.abs((null !== (_p = null === (_o = this._label.getBgRect().AABBBounds) || void 0 === _o ? void 0 : _o.x2) && void 0 !== _p ? _p : 0) - (null !== (_r = null === (_q = this._label.getBgRect()) || void 0 === _q ? void 0 : _q.AABBBounds.x1) && void 0 !== _r ? _r : 0)), labelWidth = Math.max(labelRectWidth, labelTextWidth);
|
|
29
|
-
switch (direction) {
|
|
30
|
-
case type_1.ICartesianMarkLineLabelPosition.start:
|
|
16
|
+
getLabelOffsetByPosition(position) {
|
|
17
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
18
|
+
const labelRectHeight = Math.abs((null !== (_c = null === (_b = null === (_a = this._label.getTextShape()) || void 0 === _a ? void 0 : _a.AABBBounds) || void 0 === _b ? void 0 : _b.y2) && void 0 !== _c ? _c : 0) - (null !== (_e = null === (_d = this._label.getTextShape()) || void 0 === _d ? void 0 : _d.AABBBounds.y1) && void 0 !== _e ? _e : 0)), labelTextHeight = Math.abs((null !== (_h = null === (_g = null === (_f = this._label.getBgRect()) || void 0 === _f ? void 0 : _f.AABBBounds) || void 0 === _g ? void 0 : _g.y2) && void 0 !== _h ? _h : 0) - (null !== (_k = null === (_j = this._label.getBgRect()) || void 0 === _j ? void 0 : _j.AABBBounds.y1) && void 0 !== _k ? _k : 0)), labelHeight = Math.max(labelRectHeight, labelTextHeight), labelRectWidth = Math.abs((null !== (_o = null === (_m = null === (_l = this._label.getTextShape()) || void 0 === _l ? void 0 : _l.AABBBounds) || void 0 === _m ? void 0 : _m.x2) && void 0 !== _o ? _o : 0) - (null !== (_q = null === (_p = this._label.getTextShape()) || void 0 === _p ? void 0 : _p.AABBBounds.x1) && void 0 !== _q ? _q : 0)), labelTextWidth = Math.abs((null !== (_t = null === (_s = null === (_r = this._label.getBgRect()) || void 0 === _r ? void 0 : _r.AABBBounds) || void 0 === _s ? void 0 : _s.x2) && void 0 !== _t ? _t : 0) - (null !== (_v = null === (_u = this._label.getBgRect()) || void 0 === _u ? void 0 : _u.AABBBounds.x1) && void 0 !== _v ? _v : 0)), labelWidth = Math.max(labelRectWidth, labelTextWidth);
|
|
19
|
+
switch (position) {
|
|
20
|
+
case type_1.IMarkLineLabelPosition.start:
|
|
31
21
|
return {
|
|
32
22
|
offsetX: -labelWidth / 2,
|
|
33
23
|
offsetY: 0
|
|
34
24
|
};
|
|
35
25
|
|
|
36
|
-
case type_1.
|
|
26
|
+
case type_1.IMarkLineLabelPosition.insideStartTop:
|
|
37
27
|
return {
|
|
38
28
|
offsetX: labelWidth / 2,
|
|
39
29
|
offsetY: labelHeight / 2
|
|
40
30
|
};
|
|
41
31
|
|
|
42
|
-
case type_1.
|
|
32
|
+
case type_1.IMarkLineLabelPosition.insideStartBottom:
|
|
43
33
|
return {
|
|
44
34
|
offsetX: labelWidth / 2,
|
|
45
35
|
offsetY: -labelHeight / 2
|
|
46
36
|
};
|
|
47
37
|
|
|
48
|
-
case type_1.
|
|
38
|
+
case type_1.IMarkLineLabelPosition.middle:
|
|
49
39
|
return {
|
|
50
40
|
offsetX: 0,
|
|
51
41
|
offsetY: 0
|
|
52
42
|
};
|
|
53
43
|
|
|
54
|
-
case type_1.
|
|
44
|
+
case type_1.IMarkLineLabelPosition.insideMiddleTop:
|
|
55
45
|
return {
|
|
56
46
|
offsetX: 0,
|
|
57
47
|
offsetY: labelHeight / 2
|
|
58
48
|
};
|
|
59
49
|
|
|
60
|
-
case type_1.
|
|
50
|
+
case type_1.IMarkLineLabelPosition.insideMiddleBottom:
|
|
61
51
|
return {
|
|
62
52
|
offsetX: 0,
|
|
63
53
|
offsetY: -labelHeight / 2
|
|
64
54
|
};
|
|
65
55
|
|
|
66
|
-
case type_1.
|
|
56
|
+
case type_1.IMarkLineLabelPosition.end:
|
|
67
57
|
return {
|
|
68
58
|
offsetX: labelWidth / 2,
|
|
69
59
|
offsetY: 0
|
|
70
60
|
};
|
|
71
61
|
|
|
72
|
-
case type_1.
|
|
62
|
+
case type_1.IMarkLineLabelPosition.insideEndTop:
|
|
73
63
|
return {
|
|
74
64
|
offsetX: -labelWidth / 2,
|
|
75
65
|
offsetY: labelHeight / 2
|
|
76
66
|
};
|
|
77
67
|
|
|
78
|
-
case type_1.
|
|
68
|
+
case type_1.IMarkLineLabelPosition.insideEndBottom:
|
|
79
69
|
return {
|
|
80
70
|
offsetX: -labelWidth / 2,
|
|
81
71
|
offsetY: -labelHeight / 2
|
|
@@ -88,16 +78,16 @@ class CartesianMarkLine extends base_line_1.BaseMarkLine {
|
|
|
88
78
|
};
|
|
89
79
|
}
|
|
90
80
|
}
|
|
91
|
-
|
|
81
|
+
getPointAttrByPosition(position) {
|
|
92
82
|
var _a;
|
|
93
|
-
const {label: label = {}} = this.attribute, {refX: refX = 0, refY: refY = 0} = label, points = this._line.getMainSegmentPoints(), labelAngle = null !== (_a = this._line.getEndAngle()) && void 0 !== _a ? _a : 0, totalRefX = refX + this.
|
|
94
|
-
return
|
|
83
|
+
const {label: label = {}} = this.attribute, {refX: refX = 0, refY: refY = 0} = label, points = this._line.getMainSegmentPoints(), labelAngle = null !== (_a = this._line.getEndAngle()) && void 0 !== _a ? _a : 0, totalRefX = refX + this.getLabelOffsetByPosition(position).offsetX, totalRefY = refY + this.getLabelOffsetByPosition(position).offsetY, labelOffsetX = totalRefX * Math.cos(labelAngle) + totalRefY * Math.cos(labelAngle - Math.PI / 2), labelOffsetY = totalRefX * Math.sin(labelAngle) + totalRefY * Math.sin(labelAngle - Math.PI / 2);
|
|
84
|
+
return position.includes("start") || position.includes("Start") ? {
|
|
95
85
|
position: {
|
|
96
86
|
x: points[0].x + labelOffsetX,
|
|
97
87
|
y: points[0].y + labelOffsetY
|
|
98
88
|
},
|
|
99
89
|
angle: labelAngle
|
|
100
|
-
} :
|
|
90
|
+
} : position.includes("middle") || position.includes("Middle") ? {
|
|
101
91
|
position: {
|
|
102
92
|
x: (points[0].x + points[points.length - 1].x) / 2 + labelOffsetX,
|
|
103
93
|
y: (points[0].y + points[points.length - 1].y) / 2 + labelOffsetY
|
|
@@ -111,13 +101,9 @@ class CartesianMarkLine extends base_line_1.BaseMarkLine {
|
|
|
111
101
|
angle: labelAngle
|
|
112
102
|
};
|
|
113
103
|
}
|
|
114
|
-
|
|
104
|
+
getRotateByAngle(angle) {
|
|
115
105
|
var _a;
|
|
116
|
-
|
|
117
|
-
const {label: label = {}} = this.attribute, {position: position = "end", autoRotate: autoRotate = !0} = label, labelAttr = this.getPositionByDirection(position);
|
|
118
|
-
this._label.setAttributes(Object.assign(Object.assign({}, labelAttr.position), {
|
|
119
|
-
angle: autoRotate ? labelAttr.angle + (null !== (_a = label.refAngle) && void 0 !== _a ? _a : 0) : 0
|
|
120
|
-
}));
|
|
106
|
+
return angle + (null !== (_a = this.attribute.label.refAngle) && void 0 !== _a ? _a : 0);
|
|
121
107
|
}
|
|
122
108
|
createSegment() {
|
|
123
109
|
const {points: points, startSymbol: startSymbol, endSymbol: endSymbol, lineStyle: lineStyle, mainSegmentIndex: mainSegmentIndex, multiSegment: multiSegment, state: state} = this.attribute;
|
|
@@ -147,7 +133,17 @@ class CartesianMarkLine extends base_line_1.BaseMarkLine {
|
|
|
147
133
|
multiSegment: multiSegment
|
|
148
134
|
});
|
|
149
135
|
}
|
|
136
|
+
isValidPoints() {
|
|
137
|
+
const {points: points} = this.attribute;
|
|
138
|
+
if (!points || points.length < 2) return !1;
|
|
139
|
+
let validFlag = !0;
|
|
140
|
+
return points.forEach((point => {
|
|
141
|
+
if (point.length) point.forEach((p => {
|
|
142
|
+
(0, vutils_1.isValidNumber)(p.x) && (0, vutils_1.isValidNumber)(p.y) || (validFlag = !1);
|
|
143
|
+
})); else if (!(0, vutils_1.isValidNumber)(point.x) || !(0, vutils_1.isValidNumber)(point.y)) return void (validFlag = !1);
|
|
144
|
+
})), validFlag;
|
|
145
|
+
}
|
|
150
146
|
}
|
|
151
147
|
|
|
152
|
-
exports.
|
|
148
|
+
exports.MarkLine = MarkLine, MarkLine.defaultAttributes = config_1.DEFAULT_MARK_LINE_THEME;
|
|
153
149
|
//# sourceMappingURL=line.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/marker/line.ts"],"names":[],"mappings":"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","file":"line.js","sourcesContent":["import { isValidNumber, merge } from '@visactor/vutils';\nimport { IMarkLineLabelPosition } from './type';\nimport type { MarkLineAttrs } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { loadMarkLineComponent } from './register';\nimport type { Point } from '../core/type';\nimport { MarkCommonLine } from './common-line';\nimport type { ArcSegment } from '../segment';\n// eslint-disable-next-line no-duplicate-imports\nimport { Segment } from '../segment';\nimport { DEFAULT_STATES } from '../constant';\nimport { DEFAULT_MARK_LINE_THEME } from './config';\nimport type { ILineGraphicAttribute } from '@visactor/vrender-core';\n\nloadMarkLineComponent();\nexport class MarkLine extends MarkCommonLine<ILineGraphicAttribute, IMarkLineLabelPosition> {\n name = 'markLine';\n // eslint-disable-next-line max-len\n static defaultAttributes: Partial<MarkLineAttrs> = DEFAULT_MARK_LINE_THEME as unknown as MarkLineAttrs;\n protected _line!: Segment | ArcSegment;\n\n constructor(attributes: MarkLineAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkLine.defaultAttributes, attributes));\n }\n\n protected getLabelOffsetByPosition(position: IMarkLineLabelPosition) {\n // labelHeight\n const labelRectHeight = Math.abs(\n (this._label.getTextShape()?.AABBBounds?.y2 ?? 0) - (this._label.getTextShape()?.AABBBounds.y1 ?? 0)\n );\n const labelTextHeight = Math.abs(\n (this._label.getBgRect()?.AABBBounds?.y2 ?? 0) - (this._label.getBgRect()?.AABBBounds.y1 ?? 0)\n );\n const labelHeight = Math.max(labelRectHeight, labelTextHeight);\n\n // labelWidth\n const labelRectWidth = Math.abs(\n (this._label.getTextShape()?.AABBBounds?.x2 ?? 0) - (this._label.getTextShape()?.AABBBounds.x1 ?? 0)\n );\n const labelTextWidth = Math.abs(\n (this._label.getBgRect()?.AABBBounds?.x2 ?? 0) - (this._label.getBgRect()?.AABBBounds.x1 ?? 0)\n );\n const labelWidth = Math.max(labelRectWidth, labelTextWidth);\n\n switch (position) {\n case IMarkLineLabelPosition.start:\n return {\n offsetX: -labelWidth / 2,\n offsetY: 0\n };\n case IMarkLineLabelPosition.insideStartTop:\n return {\n offsetX: labelWidth / 2,\n offsetY: labelHeight / 2\n };\n case IMarkLineLabelPosition.insideStartBottom:\n return {\n offsetX: labelWidth / 2,\n offsetY: -labelHeight / 2\n };\n case IMarkLineLabelPosition.middle:\n return {\n offsetX: 0,\n offsetY: 0\n };\n case IMarkLineLabelPosition.insideMiddleTop:\n return {\n offsetX: 0,\n offsetY: labelHeight / 2\n };\n case IMarkLineLabelPosition.insideMiddleBottom:\n return {\n offsetX: 0,\n offsetY: -labelHeight / 2\n };\n case IMarkLineLabelPosition.end:\n return {\n offsetX: labelWidth / 2,\n offsetY: 0\n };\n case IMarkLineLabelPosition.insideEndTop:\n return {\n offsetX: -labelWidth / 2,\n offsetY: labelHeight / 2\n };\n case IMarkLineLabelPosition.insideEndBottom:\n return {\n offsetX: -labelWidth / 2,\n offsetY: -labelHeight / 2\n };\n default: // default end\n return {\n offsetX: labelWidth / 2,\n offsetY: 0\n };\n }\n }\n\n protected getPointAttrByPosition(position: IMarkLineLabelPosition) {\n const { label = {} } = this.attribute;\n const { refX = 0, refY = 0 } = label;\n const points = this._line.getMainSegmentPoints();\n const labelAngle = this._line.getEndAngle() ?? 0;\n\n const totalRefX = refX + this.getLabelOffsetByPosition(position).offsetX;\n const totalRefY = refY + this.getLabelOffsetByPosition(position).offsetY;\n\n const labelOffsetX = totalRefX * Math.cos(labelAngle) + totalRefY * Math.cos(labelAngle - Math.PI / 2);\n const labelOffsetY = totalRefX * Math.sin(labelAngle) + totalRefY * Math.sin(labelAngle - Math.PI / 2);\n\n if (position.includes('start') || position.includes('Start')) {\n return {\n position: {\n x: points[0].x + labelOffsetX,\n y: points[0].y + labelOffsetY\n },\n angle: labelAngle\n };\n } else if (position.includes('middle') || position.includes('Middle')) {\n return {\n position: {\n x: (points[0].x + points[points.length - 1].x) / 2 + labelOffsetX,\n y: (points[0].y + points[points.length - 1].y) / 2 + labelOffsetY\n },\n angle: labelAngle\n };\n }\n return {\n position: {\n x: points[points.length - 1].x + labelOffsetX,\n y: points[points.length - 1].y + labelOffsetY\n },\n angle: labelAngle\n };\n }\n\n protected getRotateByAngle(angle: number): number {\n return angle + (this.attribute.label.refAngle ?? 0);\n }\n\n protected createSegment() {\n const { points, startSymbol, endSymbol, lineStyle, mainSegmentIndex, multiSegment, state } = this\n .attribute as MarkLineAttrs;\n return new Segment({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n mainSegmentIndex,\n multiSegment,\n pickable: false, // 组件容器本身不参与拾取\n state: {\n line: merge({}, DEFAULT_STATES, state?.line),\n startSymbol: merge({}, DEFAULT_STATES, state?.lineStartSymbol),\n endSymbol: merge({}, DEFAULT_STATES, state?.lineEndSymbol)\n }\n });\n }\n\n protected setLineAttributes() {\n const { points, startSymbol, endSymbol, lineStyle, mainSegmentIndex, multiSegment } = this\n .attribute as MarkLineAttrs;\n if (this._line) {\n this._line.setAttributes({\n points,\n startSymbol,\n endSymbol,\n lineStyle,\n mainSegmentIndex,\n multiSegment\n });\n }\n }\n\n protected isValidPoints() {\n const { points } = this.attribute as MarkLineAttrs;\n if (!points || points.length < 2) {\n return false;\n }\n let validFlag = true;\n points.forEach((point: Point | Point[]) => {\n if ((point as any).length) {\n (point as Point[]).forEach((p: Point) => {\n if (!isValidNumber((p as Point).x) || !isValidNumber((p as Point).y)) {\n validFlag = false;\n return;\n }\n });\n } else if (!isValidNumber((point as Point).x) || !isValidNumber((point as Point).y)) {\n validFlag = false;\n return;\n }\n });\n return validFlag;\n }\n}\n"]}
|
package/cjs/marker/register.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export declare function
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function loadPolarMarkAreaComponent(): void;
|
|
1
|
+
export declare function loadMarkLineComponent(): void;
|
|
2
|
+
export declare function loadMarkArcLineComponent(): void;
|
|
3
|
+
export declare function loadMarkAreaComponent(): void;
|
|
4
|
+
export declare function loadMarkArcAreaComponent(): void;
|
|
6
5
|
export declare function loadMarkPointComponent(): void;
|
package/cjs/marker/register.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.loadMarkPointComponent = exports.
|
|
5
|
+
}), exports.loadMarkPointComponent = exports.loadMarkArcAreaComponent = exports.loadMarkAreaComponent = exports.loadMarkArcLineComponent = exports.loadMarkLineComponent = void 0;
|
|
6
6
|
|
|
7
7
|
const vrender_kits_1 = require("@visactor/vrender-kits"), register_1 = require("../tag/register"), register_2 = require("../segment/register");
|
|
8
8
|
|
|
@@ -10,23 +10,19 @@ function loadBaseMarker() {
|
|
|
10
10
|
(0, vrender_kits_1.registerGroup)(), (0, register_1.loadTagComponent)();
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
function
|
|
13
|
+
function loadMarkLineComponent() {
|
|
14
14
|
loadBaseMarker(), (0, register_2.loadSegmentComponent)();
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
function
|
|
18
|
-
loadBaseMarker(), (0, register_2.loadSegmentComponent)();
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function loadPolarMarkArcLineComponent() {
|
|
17
|
+
function loadMarkArcLineComponent() {
|
|
22
18
|
loadBaseMarker(), (0, register_2.loadArcSegmentComponent)();
|
|
23
19
|
}
|
|
24
20
|
|
|
25
|
-
function
|
|
21
|
+
function loadMarkAreaComponent() {
|
|
26
22
|
loadBaseMarker(), (0, vrender_kits_1.registerPolygon)();
|
|
27
23
|
}
|
|
28
24
|
|
|
29
|
-
function
|
|
25
|
+
function loadMarkArcAreaComponent() {
|
|
30
26
|
loadBaseMarker(), (0, vrender_kits_1.registerArc)();
|
|
31
27
|
}
|
|
32
28
|
|
|
@@ -35,7 +31,7 @@ function loadMarkPointComponent() {
|
|
|
35
31
|
(0, vrender_kits_1.registerImage)(), (0, vrender_kits_1.registerLine)();
|
|
36
32
|
}
|
|
37
33
|
|
|
38
|
-
exports.
|
|
39
|
-
exports.
|
|
40
|
-
exports.
|
|
34
|
+
exports.loadMarkLineComponent = loadMarkLineComponent, exports.loadMarkArcLineComponent = loadMarkArcLineComponent,
|
|
35
|
+
exports.loadMarkAreaComponent = loadMarkAreaComponent, exports.loadMarkArcAreaComponent = loadMarkArcAreaComponent,
|
|
36
|
+
exports.loadMarkPointComponent = loadMarkPointComponent;
|
|
41
37
|
//# sourceMappingURL=register.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/marker/register.ts"],"names":[],"mappings":";;;AAAA,yDAOgC;AAChC,8CAAmD;AACnD,kDAAoF;AACpF,SAAS,cAAc;IACrB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAgB,GAAE,CAAC;AACrB,CAAC;AAED,SAAgB,
|
|
1
|
+
{"version":3,"sources":["../src/marker/register.ts"],"names":[],"mappings":";;;AAAA,yDAOgC;AAChC,8CAAmD;AACnD,kDAAoF;AACpF,SAAS,cAAc;IACrB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAgB,GAAE,CAAC;AACrB,CAAC;AAED,SAAgB,qBAAqB;IACnC,cAAc,EAAE,CAAC;IACjB,IAAA,+BAAoB,GAAE,CAAC;AACzB,CAAC;AAHD,sDAGC;AAED,SAAgB,wBAAwB;IACtC,cAAc,EAAE,CAAC;IACjB,IAAA,kCAAuB,GAAE,CAAC;AAC5B,CAAC;AAHD,4DAGC;AAED,SAAgB,qBAAqB;IACnC,cAAc,EAAE,CAAC;IACjB,IAAA,8BAAe,GAAE,CAAC;AACpB,CAAC;AAHD,sDAGC;AAED,SAAgB,wBAAwB;IACtC,cAAc,EAAE,CAAC;IACjB,IAAA,0BAAW,GAAE,CAAC;AAChB,CAAC;AAHD,4DAGC;AAED,SAAgB,sBAAsB;IACpC,cAAc,EAAE,CAAC;IACjB,IAAA,+BAAoB,GAAE,CAAC;IACvB,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;AACjB,CAAC;AAND,wDAMC","file":"register.js","sourcesContent":["import {\n registerArc,\n registerGroup,\n registerImage,\n registerLine,\n registerPolygon,\n registerSymbol\n} from '@visactor/vrender-kits';\nimport { loadTagComponent } from '../tag/register';\nimport { loadArcSegmentComponent, loadSegmentComponent } from '../segment/register';\nfunction loadBaseMarker() {\n registerGroup();\n loadTagComponent();\n}\n\nexport function loadMarkLineComponent() {\n loadBaseMarker();\n loadSegmentComponent();\n}\n\nexport function loadMarkArcLineComponent() {\n loadBaseMarker();\n loadArcSegmentComponent();\n}\n\nexport function loadMarkAreaComponent() {\n loadBaseMarker();\n registerPolygon();\n}\n\nexport function loadMarkArcAreaComponent() {\n loadBaseMarker();\n registerArc();\n}\n\nexport function loadMarkPointComponent() {\n loadBaseMarker();\n loadSegmentComponent();\n registerSymbol();\n registerImage();\n registerLine();\n}\n"]}
|
package/cjs/marker/type.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { EasingType, IArcGraphicAttribute, IGroup, IGroupGraphicAttribute,
|
|
|
2
2
|
import type { CommonSegmentAttributes, ILineGraphicWithCornerRadius, SegmentAttributes, SymbolAttributes } from '../segment';
|
|
3
3
|
import type { TagAttributes } from '../tag';
|
|
4
4
|
import type { Point, State } from '../core/type';
|
|
5
|
-
export declare enum
|
|
5
|
+
export declare enum IMarkLineLabelPosition {
|
|
6
6
|
start = "start",
|
|
7
7
|
middle = "middle",
|
|
8
8
|
end = "end",
|
|
@@ -13,7 +13,7 @@ export declare enum ICartesianMarkLineLabelPosition {
|
|
|
13
13
|
insideEndTop = "insideEndTop",
|
|
14
14
|
insideEndBottom = "insideEndBottom"
|
|
15
15
|
}
|
|
16
|
-
export declare enum
|
|
16
|
+
export declare enum IMarkAreaLabelPosition {
|
|
17
17
|
left = "left",
|
|
18
18
|
right = "right",
|
|
19
19
|
top = "top",
|
|
@@ -24,7 +24,7 @@ export declare enum ICartesianMarkAreaLabelPosition {
|
|
|
24
24
|
insideTop = "insideTop",
|
|
25
25
|
insideBottom = "insideBottom"
|
|
26
26
|
}
|
|
27
|
-
export declare enum
|
|
27
|
+
export declare enum IMarkCommonArcLabelPosition {
|
|
28
28
|
arcInnerStart = "arcInnerStart",
|
|
29
29
|
arcInnerEnd = "arcInnerEnd",
|
|
30
30
|
arcInnerMiddle = "arcInnerMiddle",
|
|
@@ -56,7 +56,7 @@ export type IMarkRef = {
|
|
|
56
56
|
refAngle?: number;
|
|
57
57
|
};
|
|
58
58
|
export type MarkerAttrs = IGroupGraphicAttribute & {
|
|
59
|
-
type?: '
|
|
59
|
+
type?: 'line' | 'arc-line' | 'area' | 'arc-area' | 'point';
|
|
60
60
|
interactive?: boolean;
|
|
61
61
|
select?: boolean;
|
|
62
62
|
hover?: boolean;
|
|
@@ -87,20 +87,15 @@ export type MarkerExitAnimation = {
|
|
|
87
87
|
delay?: number;
|
|
88
88
|
easing?: EasingType;
|
|
89
89
|
};
|
|
90
|
-
export type CommonMarkLineState = {
|
|
91
|
-
line?: State<
|
|
90
|
+
export type CommonMarkLineState<LineAttr> = {
|
|
91
|
+
line?: State<LineAttr>;
|
|
92
92
|
lineStartSymbol?: State<Partial<ISymbolGraphicAttribute>>;
|
|
93
93
|
lineEndSymbol?: State<Partial<ISymbolGraphicAttribute>>;
|
|
94
94
|
label?: State<Partial<ITextGraphicAttribute>>;
|
|
95
95
|
labelBackground?: State<Partial<IRectGraphicAttribute>>;
|
|
96
96
|
};
|
|
97
|
-
export type
|
|
98
|
-
area?: State<Partial<
|
|
99
|
-
label?: State<Partial<ITextGraphicAttribute>>;
|
|
100
|
-
labelBackground?: State<Partial<IRectGraphicAttribute>>;
|
|
101
|
-
};
|
|
102
|
-
export type PolarMarkAreaState = {
|
|
103
|
-
area?: State<Partial<IArcGraphicAttribute>>;
|
|
97
|
+
export type CommonMarkAreaState<AreaAttr> = {
|
|
98
|
+
area?: State<Partial<AreaAttr>>;
|
|
104
99
|
label?: State<Partial<ITextGraphicAttribute>>;
|
|
105
100
|
labelBackground?: State<Partial<IRectGraphicAttribute>>;
|
|
106
101
|
};
|
|
@@ -115,27 +110,22 @@ export type MarkPointState = {
|
|
|
115
110
|
richText?: State<Partial<IRichTextGraphicAttribute>>;
|
|
116
111
|
customMark?: State<Partial<IGroupGraphicAttribute>>;
|
|
117
112
|
};
|
|
118
|
-
export type CommonMarkLineAttrs<
|
|
113
|
+
export type CommonMarkLineAttrs<LineAttr, LineLabelPosition> = MarkerAttrs & Omit<CommonSegmentAttributes, 'state' | 'lineStyle'> & {
|
|
119
114
|
label?: {
|
|
120
|
-
position?:
|
|
115
|
+
position?: LineLabelPosition;
|
|
121
116
|
confine?: boolean;
|
|
122
117
|
} & IMarkRef & IMarkLabel;
|
|
123
|
-
state?: CommonMarkLineState
|
|
118
|
+
state?: CommonMarkLineState<LineAttr>;
|
|
124
119
|
} & BaseMarkerAnimation<CommonMarkLineAnimationType>;
|
|
125
|
-
export type
|
|
126
|
-
type?: '
|
|
120
|
+
export type MarkLineAttrs = CommonMarkLineAttrs<ILineGraphicWithCornerRadius | ILineGraphicAttribute[], keyof typeof IMarkLineLabelPosition> & {
|
|
121
|
+
type?: 'line';
|
|
127
122
|
multiSegment?: boolean;
|
|
128
123
|
mainSegmentIndex?: number;
|
|
129
124
|
points: Point[] | Point[][];
|
|
130
125
|
lineStyle?: ILineGraphicAttribute;
|
|
131
126
|
};
|
|
132
|
-
export type
|
|
133
|
-
type?: '
|
|
134
|
-
points: Point[] | Point[][];
|
|
135
|
-
lineStyle?: ILineGraphicAttribute;
|
|
136
|
-
};
|
|
137
|
-
export type PolarMarkArcLineAttrs = CommonMarkLineAttrs<keyof typeof IPolarMarkLabelPosition> & {
|
|
138
|
-
type?: 'polar-arc-line';
|
|
127
|
+
export type MarkArcLineAttrs = CommonMarkLineAttrs<IArcGraphicAttribute, keyof typeof IMarkCommonArcLabelPosition> & {
|
|
128
|
+
type?: 'arc-line';
|
|
139
129
|
center: {
|
|
140
130
|
x: number;
|
|
141
131
|
y: number;
|
|
@@ -145,18 +135,18 @@ export type PolarMarkArcLineAttrs = CommonMarkLineAttrs<keyof typeof IPolarMarkL
|
|
|
145
135
|
endAngle: number;
|
|
146
136
|
lineStyle?: IArcGraphicAttribute;
|
|
147
137
|
};
|
|
148
|
-
export type
|
|
149
|
-
type?: '
|
|
138
|
+
export type MarkAreaAttrs = MarkerAttrs & {
|
|
139
|
+
type?: 'area';
|
|
150
140
|
points: Point[];
|
|
151
141
|
label?: {
|
|
152
|
-
position?: keyof typeof
|
|
142
|
+
position?: keyof typeof IMarkAreaLabelPosition;
|
|
153
143
|
confine?: boolean;
|
|
154
144
|
} & IMarkLabel;
|
|
155
145
|
areaStyle?: IPolygonAttribute;
|
|
156
|
-
state?:
|
|
146
|
+
state?: CommonMarkAreaState<IPolygonGraphicAttribute>;
|
|
157
147
|
} & BaseMarkerAnimation<CommonMarkAreaAnimationType>;
|
|
158
|
-
export type
|
|
159
|
-
type?: '
|
|
148
|
+
export type MarkArcAreaAttrs = MarkerAttrs & {
|
|
149
|
+
type?: 'arc-area';
|
|
160
150
|
center: {
|
|
161
151
|
x: number;
|
|
162
152
|
y: number;
|
|
@@ -166,11 +156,11 @@ export type PolarMarkAreaAttrs = MarkerAttrs & {
|
|
|
166
156
|
startAngle: number;
|
|
167
157
|
endAngle: number;
|
|
168
158
|
label?: {
|
|
169
|
-
position?: keyof typeof
|
|
159
|
+
position?: keyof typeof IMarkCommonArcLabelPosition;
|
|
170
160
|
confine?: boolean;
|
|
171
161
|
} & IMarkRef & IMarkLabel;
|
|
172
162
|
areaStyle?: IArcGraphicAttribute;
|
|
173
|
-
state?:
|
|
163
|
+
state?: CommonMarkAreaState<IArcGraphicAttribute>;
|
|
174
164
|
} & BaseMarkerAnimation<CommonMarkAreaAnimationType>;
|
|
175
165
|
export type IItemContent = IMarkRef & {
|
|
176
166
|
type?: 'symbol' | 'text' | 'image' | 'richText' | 'custom';
|
package/cjs/marker/type.js
CHANGED
|
@@ -1,30 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var IMarkLineLabelPosition, IMarkAreaLabelPosition, IMarkCommonArcLabelPosition, IMarkPointItemPosition;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: !0
|
|
7
|
-
}), exports.IMarkPointItemPosition = exports.
|
|
8
|
-
function(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}(
|
|
15
|
-
function(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}(IPolarMarkLabelPosition = exports.IPolarMarkLabelPosition || (exports.IPolarMarkLabelPosition = {})),
|
|
7
|
+
}), exports.IMarkPointItemPosition = exports.IMarkCommonArcLabelPosition = exports.IMarkAreaLabelPosition = exports.IMarkLineLabelPosition = void 0,
|
|
8
|
+
function(IMarkLineLabelPosition) {
|
|
9
|
+
IMarkLineLabelPosition.start = "start", IMarkLineLabelPosition.middle = "middle",
|
|
10
|
+
IMarkLineLabelPosition.end = "end", IMarkLineLabelPosition.insideStartTop = "insideStartTop",
|
|
11
|
+
IMarkLineLabelPosition.insideStartBottom = "insideStartBottom", IMarkLineLabelPosition.insideMiddleTop = "insideMiddleTop",
|
|
12
|
+
IMarkLineLabelPosition.insideMiddleBottom = "insideMiddleBottom", IMarkLineLabelPosition.insideEndTop = "insideEndTop",
|
|
13
|
+
IMarkLineLabelPosition.insideEndBottom = "insideEndBottom";
|
|
14
|
+
}(IMarkLineLabelPosition = exports.IMarkLineLabelPosition || (exports.IMarkLineLabelPosition = {})),
|
|
15
|
+
function(IMarkAreaLabelPosition) {
|
|
16
|
+
IMarkAreaLabelPosition.left = "left", IMarkAreaLabelPosition.right = "right", IMarkAreaLabelPosition.top = "top",
|
|
17
|
+
IMarkAreaLabelPosition.bottom = "bottom", IMarkAreaLabelPosition.middle = "middle",
|
|
18
|
+
IMarkAreaLabelPosition.insideLeft = "insideLeft", IMarkAreaLabelPosition.insideRight = "insideRight",
|
|
19
|
+
IMarkAreaLabelPosition.insideTop = "insideTop", IMarkAreaLabelPosition.insideBottom = "insideBottom";
|
|
20
|
+
}(IMarkAreaLabelPosition = exports.IMarkAreaLabelPosition || (exports.IMarkAreaLabelPosition = {})),
|
|
21
|
+
function(IMarkCommonArcLabelPosition) {
|
|
22
|
+
IMarkCommonArcLabelPosition.arcInnerStart = "arcInnerStart", IMarkCommonArcLabelPosition.arcInnerEnd = "arcInnerEnd",
|
|
23
|
+
IMarkCommonArcLabelPosition.arcInnerMiddle = "arcInnerMiddle", IMarkCommonArcLabelPosition.arcOuterStart = "arcOuterStart",
|
|
24
|
+
IMarkCommonArcLabelPosition.arcOuterEnd = "arcOuterEnd", IMarkCommonArcLabelPosition.arcOuterMiddle = "arcOuterMiddle",
|
|
25
|
+
IMarkCommonArcLabelPosition.center = "center";
|
|
26
|
+
}(IMarkCommonArcLabelPosition = exports.IMarkCommonArcLabelPosition || (exports.IMarkCommonArcLabelPosition = {})),
|
|
28
27
|
function(IMarkPointItemPosition) {
|
|
29
28
|
IMarkPointItemPosition.top = "top", IMarkPointItemPosition.bottom = "bottom", IMarkPointItemPosition.middle = "middle",
|
|
30
29
|
IMarkPointItemPosition.insideTop = "insideTop", IMarkPointItemPosition.insideBottom = "insideBottom",
|
package/cjs/marker/type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/marker/type.ts"],"names":[],"mappings":";;;AAwBA,IAAY,+BAUX;AAVD,WAAY,+BAA+B;IACzC,kDAAe,CAAA;IACf,oDAAiB,CAAA;IACjB,8CAAW,CAAA;IACX,oEAAiC,CAAA;IACjC,0EAAuC,CAAA;IACvC,sEAAmC,CAAA;IACnC,4EAAyC,CAAA;IACzC,gEAA6B,CAAA;IAC7B,sEAAmC,CAAA;AACrC,CAAC,EAVW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAU1C;AAED,IAAY,+BAUX;AAVD,WAAY,+BAA+B;IACzC,gDAAa,CAAA;IACb,kDAAe,CAAA;IACf,8CAAW,CAAA;IACX,oDAAiB,CAAA;IACjB,oDAAiB,CAAA;IACjB,4DAAyB,CAAA;IACzB,8DAA2B,CAAA;IAC3B,0DAAuB,CAAA;IACvB,gEAA6B,CAAA;AAC/B,CAAC,EAVW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAU1C;AAED,IAAY,uBAQX;AARD,WAAY,uBAAuB;IACjC,0DAA+B,CAAA;IAC/B,sDAA2B,CAAA;IAC3B,4DAAiC,CAAA;IACjC,0DAA+B,CAAA;IAC/B,sDAA2B,CAAA;IAC3B,4DAAiC,CAAA;IACjC,4CAAiB,CAAA;AACnB,CAAC,EARW,uBAAuB,GAAvB,+BAAuB,KAAvB,+BAAuB,QAQlC;AAED,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,qCAAW,CAAA;IACX,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,iDAAuB,CAAA;IACvB,uDAA6B,CAAA;IAC7B,uDAA6B,CAAA;AAC/B,CAAC,EAPW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAOjC","file":"type.js","sourcesContent":["import type {\n EasingType,\n IArcGraphicAttribute,\n IGroup,\n IGroupGraphicAttribute,\n IImageGraphicAttribute,\n ILineGraphicAttribute,\n IPolygonAttribute,\n IPolygonGraphicAttribute,\n IRectGraphicAttribute,\n IRichTextGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type {\n ArcSegmentAttributes,\n CommonSegmentAttributes,\n ILineGraphicWithCornerRadius,\n SegmentAttributes,\n SymbolAttributes\n} from '../segment';\nimport type { TagAttributes } from '../tag';\nimport type { Point, State } from '../core/type';\n\nexport enum ICartesianMarkLineLabelPosition {\n start = 'start',\n middle = 'middle',\n end = 'end',\n insideStartTop = 'insideStartTop',\n insideStartBottom = 'insideStartBottom',\n insideMiddleTop = 'insideMiddleTop',\n insideMiddleBottom = 'insideMiddleBottom',\n insideEndTop = 'insideEndTop',\n insideEndBottom = 'insideEndBottom'\n}\n\nexport enum ICartesianMarkAreaLabelPosition {\n left = 'left',\n right = 'right',\n top = 'top',\n bottom = 'bottom',\n middle = 'middle',\n insideLeft = 'insideLeft',\n insideRight = 'insideRight',\n insideTop = 'insideTop',\n insideBottom = 'insideBottom'\n}\n\nexport enum IPolarMarkLabelPosition {\n arcInnerStart = 'arcInnerStart',\n arcInnerEnd = 'arcInnerEnd',\n arcInnerMiddle = 'arcInnerMiddle',\n arcOuterStart = 'arcOuterStart',\n arcOuterEnd = 'arcOuterEnd',\n arcOuterMiddle = 'arcOuterMiddle',\n center = 'center'\n}\n\nexport enum IMarkPointItemPosition {\n top = 'top',\n bottom = 'bottom',\n middle = 'middle',\n insideTop = 'insideTop',\n insideBottom = 'insideBottom',\n insideMiddle = 'insideMiddle'\n}\n\nexport type IMarkBackgroundAttributes = {\n /**\n * 是否绘制背景层\n */\n visible: boolean;\n /**\n * TODO: 根据文字宽度进行背景 panel size自适应\n */\n autoHeight?: boolean;\n /**\n * TODO: 根据文高度度进行背景 panel size自适应\n */\n autoWidth?: boolean;\n} & Partial<SymbolAttributes>;\n\nexport type IMarkLabel = Omit<TagAttributes, 'x' | 'y' | 'panel'> & {\n /**\n * 标签的背景面板配置\n */\n panel?: IMarkBackgroundAttributes;\n};\n\nexport type IMarkRef = {\n /**\n * 自动旋转,沿着线的方向,默认 true\n */\n autoRotate?: boolean;\n /**\n * label 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * label 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * label 相对默认角度的偏移 (label跟随line的角度做自动旋转时,默认按照line的平行向量作为初始角度)\n */\n refAngle?: number;\n};\n\nexport type MarkerAttrs = IGroupGraphicAttribute & {\n type?: 'cartesian-line' | 'polar-line' | 'polar-arc-line' | 'cartesian-area' | 'polar-area' | 'point';\n /**\n * 是否支持交互\n * @default true\n */\n interactive?: boolean;\n /**\n * 是否开启选中交互\n * @default false\n */\n select?: boolean;\n /**\n * 是否开启 hover 交互\n * @default false\n */\n hover?: boolean;\n /**\n * 是否显示marker组件\n * @default true\n */\n visible?: boolean;\n /**\n * 是否将组件在绘制区域内进行剪切\n * @default true\n */\n clipInRange?: boolean;\n /**\n * 组件绘制范围配置\n */\n limitRect?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n};\n\n/** animation type */\nexport type BaseMarkerAnimation<T> = {\n animation?: MarkerAnimation<T> | boolean;\n animationEnter?: MarkerUpdateAnimation<T>;\n animationUpdate?: MarkerUpdateAnimation<T>;\n animationExit?: MarkerExitAnimation;\n};\nexport type MarkerAnimation<T> = MarkerUpdateAnimation<T> | MarkerUpdateAnimation<T>;\n\nexport type MarkerUpdateAnimation<T> = {\n type: T;\n} & MarkerExitAnimation;\n\nexport type CommonMarkLineAnimationType = 'clipIn' | 'fadeIn';\n\nexport type CommonMarkAreaAnimationType = 'fadeIn';\n\nexport type MarkPointAnimationType = 'callIn' | 'fadeIn';\n\nexport type MarkerExitAnimation = {\n duration?: number;\n delay?: number;\n easing?: EasingType;\n};\n\n/** state type */\nexport type CommonMarkLineState = {\n line?: State<ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[] | IArcGraphicAttribute>;\n lineStartSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n lineEndSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n label?: State<Partial<ITextGraphicAttribute>>;\n labelBackground?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type CartesianMarkAreaState = {\n area?: State<Partial<IPolygonGraphicAttribute>>;\n label?: State<Partial<ITextGraphicAttribute>>;\n labelBackground?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type PolarMarkAreaState = {\n area?: State<Partial<IArcGraphicAttribute>>;\n label?: State<Partial<ITextGraphicAttribute>>;\n labelBackground?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type MarkPointState = {\n line?: State<ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[]>;\n lineStartSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n lineEndSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n symbol?: State<Partial<ISymbolGraphicAttribute>>;\n image?: State<Partial<IImageGraphicAttribute>>;\n text?: State<Partial<ITextGraphicAttribute>>;\n textBackground?: State<Partial<IRectGraphicAttribute>>;\n richText?: State<Partial<IRichTextGraphicAttribute>>;\n customMark?: State<Partial<IGroupGraphicAttribute>>;\n};\n\nexport type CommonMarkLineAttrs<T> = MarkerAttrs &\n Omit<CommonSegmentAttributes, 'state' | 'lineStyle'> & {\n /**\n * 标签\n */\n label?: {\n /**\n * label 相对line的位置\n */\n position?: T;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkRef &\n IMarkLabel;\n state?: CommonMarkLineState;\n } & BaseMarkerAnimation<CommonMarkLineAnimationType>;\n\nexport type CartesianMarkLineAttrs = CommonMarkLineAttrs<keyof typeof ICartesianMarkLineLabelPosition> & {\n type?: 'cartesian-line';\n /**\n * 是否对 points 进行多段处理,默认为 false,即直接将所有的点连接成线。\n * 如果需要进行多段处理,需要将 points 属性配置为 Point[][] 类型\n * @default false\n */\n multiSegment?: boolean;\n /**\n * 在 `multiSegment` 属性开启的前提下,用于声明那一段线段用来作为主线段,如果不声明,默认全段为主线段\n */\n mainSegmentIndex?: number;\n /**\n * 构成line的点: 如果是两个点,则为直线;多个点则为曲线\n */\n points: Point[] | Point[][];\n lineStyle?: ILineGraphicAttribute;\n};\n\nexport type PolarMarkLineAttrs = CommonMarkLineAttrs<keyof typeof ICartesianMarkLineLabelPosition> & {\n type?: 'polar-line';\n /**\n * 构成line的点: 如果是两个点,则为直线;多个点则为曲线\n */\n points: Point[] | Point[][];\n lineStyle?: ILineGraphicAttribute;\n};\n\nexport type PolarMarkArcLineAttrs = CommonMarkLineAttrs<keyof typeof IPolarMarkLabelPosition> & {\n type?: 'polar-arc-line';\n /**\n * 弧线中心位置\n */\n center: {\n x: number;\n y: number;\n };\n /**\n * 弧线半径\n */\n radius: number;\n /**\n * 弧线起始角度(弧度)\n */\n startAngle: number;\n /**\n * 弧线终点角度(弧度)\n */\n endAngle: number;\n lineStyle?: IArcGraphicAttribute;\n};\n\nexport type CartesianMarkAreaAttrs = MarkerAttrs & {\n type?: 'cartesian-area';\n /**\n * 构成area的点\n */\n points: Point[];\n /**\n * 标签\n */\n label?: {\n position?: keyof typeof ICartesianMarkAreaLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkLabel;\n /**\n * area的样式\n */\n areaStyle?: IPolygonAttribute;\n\n state?: CartesianMarkAreaState;\n} & BaseMarkerAnimation<CommonMarkAreaAnimationType>;\n\nexport type PolarMarkAreaAttrs = MarkerAttrs & {\n type?: 'polar-area';\n /**\n * 扇区中心位置\n */\n center: {\n x: number;\n y: number;\n };\n /**\n * 扇区内半径\n */\n innerRadius: number;\n /**\n * 扇区外半径\n */\n outerRadius: number;\n /**\n * 扇区起始角度(弧度)\n */\n startAngle: number;\n /**\n * 扇区终点角度(弧度)\n */\n endAngle: number;\n /**\n * 标签\n */\n label?: {\n position?: keyof typeof IPolarMarkLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkRef &\n IMarkLabel;\n /**\n * area的样式\n */\n areaStyle?: IArcGraphicAttribute;\n\n state?: PolarMarkAreaState;\n} & BaseMarkerAnimation<CommonMarkAreaAnimationType>;\n\nexport type IItemContent = IMarkRef & {\n /**\n * 标注类型\n * Tips: 保留'richText'与之前的定义做兼容\n */\n type?: 'symbol' | 'text' | 'image' | 'richText' | 'custom';\n position?: keyof typeof IMarkPointItemPosition;\n /**\n * x 方向偏移量\n */\n offsetX?: number;\n /**\n * y 方向偏移量\n */\n offsetY?: number;\n /**\n * type为symbol时, symbol的样式\n */\n symbolStyle?: ISymbolGraphicAttribute;\n /**\n * type为image时, image的样式\n */\n imageStyle?: IImageGraphicAttribute;\n /**\n * type为text时, text的配置\n * 'text'类型的ItemContent新增三种子类型:'text','rich','html'。配置在textStyle.type上,继承自TagAttributes。\n */\n textStyle?: IMarkLabel;\n /**\n * type为rich text时, rich text的样式\n */\n richTextStyle?: IRichTextGraphicAttribute;\n /**\n * type为custom时,允许以callback的方式传入需要render的item\n */\n renderCustomCallback?: () => IGroup;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n};\n\nexport type IItemLine = {\n /** TODO:'type-opo' */\n type?: 'type-s' | 'type-do' | 'type-po' | 'type-op';\n visible?: boolean;\n /**\n * 垂直于引导线的装饰线,参考案例: https://observablehq.com/@mikelotis/edmonton-population-history-line-chart\n */\n decorativeLine?: {\n visible?: boolean;\n length?: number;\n };\n} & Omit<SegmentAttributes, 'points'>;\n\nexport type MarkPointAttrs = Omit<MarkerAttrs, 'labelStyle'> & {\n /**\n * markPoint的位置(也是path的起点)\n */\n position: Point;\n /**\n * 标注引导线\n */\n itemLine?: IItemLine;\n\n /**\n * 标注内容\n */\n itemContent?: IItemContent;\n\n state?: MarkPointState;\n} & BaseMarkerAnimation<MarkPointAnimationType>;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/marker/type.ts"],"names":[],"mappings":";;;AAwBA,IAAY,sBAUX;AAVD,WAAY,sBAAsB;IAChC,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,qCAAW,CAAA;IACX,2DAAiC,CAAA;IACjC,iEAAuC,CAAA;IACvC,6DAAmC,CAAA;IACnC,mEAAyC,CAAA;IACzC,uDAA6B,CAAA;IAC7B,6DAAmC,CAAA;AACrC,CAAC,EAVW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAUjC;AAED,IAAY,sBAUX;AAVD,WAAY,sBAAsB;IAChC,uCAAa,CAAA;IACb,yCAAe,CAAA;IACf,qCAAW,CAAA;IACX,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,mDAAyB,CAAA;IACzB,qDAA2B,CAAA;IAC3B,iDAAuB,CAAA;IACvB,uDAA6B,CAAA;AAC/B,CAAC,EAVW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAUjC;AAED,IAAY,2BAQX;AARD,WAAY,2BAA2B;IACrC,8DAA+B,CAAA;IAC/B,0DAA2B,CAAA;IAC3B,gEAAiC,CAAA;IACjC,8DAA+B,CAAA;IAC/B,0DAA2B,CAAA;IAC3B,gEAAiC,CAAA;IACjC,gDAAiB,CAAA;AACnB,CAAC,EARW,2BAA2B,GAA3B,mCAA2B,KAA3B,mCAA2B,QAQtC;AAED,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,qCAAW,CAAA;IACX,2CAAiB,CAAA;IACjB,2CAAiB,CAAA;IACjB,iDAAuB,CAAA;IACvB,uDAA6B,CAAA;IAC7B,uDAA6B,CAAA;AAC/B,CAAC,EAPW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAOjC","file":"type.js","sourcesContent":["import type {\n EasingType,\n IArcGraphicAttribute,\n IGroup,\n IGroupGraphicAttribute,\n IImageGraphicAttribute,\n ILineGraphicAttribute,\n IPolygonAttribute,\n IPolygonGraphicAttribute,\n IRectGraphicAttribute,\n IRichTextGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type {\n ArcSegmentAttributes,\n CommonSegmentAttributes,\n ILineGraphicWithCornerRadius,\n SegmentAttributes,\n SymbolAttributes\n} from '../segment';\nimport type { TagAttributes } from '../tag';\nimport type { Point, State } from '../core/type';\n\nexport enum IMarkLineLabelPosition {\n start = 'start',\n middle = 'middle',\n end = 'end',\n insideStartTop = 'insideStartTop',\n insideStartBottom = 'insideStartBottom',\n insideMiddleTop = 'insideMiddleTop',\n insideMiddleBottom = 'insideMiddleBottom',\n insideEndTop = 'insideEndTop',\n insideEndBottom = 'insideEndBottom'\n}\n\nexport enum IMarkAreaLabelPosition {\n left = 'left',\n right = 'right',\n top = 'top',\n bottom = 'bottom',\n middle = 'middle',\n insideLeft = 'insideLeft',\n insideRight = 'insideRight',\n insideTop = 'insideTop',\n insideBottom = 'insideBottom'\n}\n\nexport enum IMarkCommonArcLabelPosition {\n arcInnerStart = 'arcInnerStart',\n arcInnerEnd = 'arcInnerEnd',\n arcInnerMiddle = 'arcInnerMiddle',\n arcOuterStart = 'arcOuterStart',\n arcOuterEnd = 'arcOuterEnd',\n arcOuterMiddle = 'arcOuterMiddle',\n center = 'center'\n}\n\nexport enum IMarkPointItemPosition {\n top = 'top',\n bottom = 'bottom',\n middle = 'middle',\n insideTop = 'insideTop',\n insideBottom = 'insideBottom',\n insideMiddle = 'insideMiddle'\n}\n\nexport type IMarkBackgroundAttributes = {\n /**\n * 是否绘制背景层\n */\n visible: boolean;\n /**\n * TODO: 根据文字宽度进行背景 panel size自适应\n */\n autoHeight?: boolean;\n /**\n * TODO: 根据文高度度进行背景 panel size自适应\n */\n autoWidth?: boolean;\n} & Partial<SymbolAttributes>;\n\nexport type IMarkLabel = Omit<TagAttributes, 'x' | 'y' | 'panel'> & {\n /**\n * 标签的背景面板配置\n */\n panel?: IMarkBackgroundAttributes;\n};\n\nexport type IMarkRef = {\n /**\n * 自动旋转,沿着线的方向,默认 true\n */\n autoRotate?: boolean;\n /**\n * label 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * label 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * label 相对默认角度的偏移 (label跟随line的角度做自动旋转时,默认按照line的平行向量作为初始角度)\n */\n refAngle?: number;\n};\n\nexport type MarkerAttrs = IGroupGraphicAttribute & {\n type?: 'line' | 'arc-line' | 'area' | 'arc-area' | 'point';\n /**\n * 是否支持交互\n * @default true\n */\n interactive?: boolean;\n /**\n * 是否开启选中交互\n * @default false\n */\n select?: boolean;\n /**\n * 是否开启 hover 交互\n * @default false\n */\n hover?: boolean;\n /**\n * 是否显示marker组件\n * @default true\n */\n visible?: boolean;\n /**\n * 是否将组件在绘制区域内进行剪切\n * @default true\n */\n clipInRange?: boolean;\n /**\n * 组件绘制范围配置\n */\n limitRect?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n};\n\n/** animation type */\nexport type BaseMarkerAnimation<T> = {\n animation?: MarkerAnimation<T> | boolean;\n animationEnter?: MarkerUpdateAnimation<T>;\n animationUpdate?: MarkerUpdateAnimation<T>;\n animationExit?: MarkerExitAnimation;\n};\nexport type MarkerAnimation<T> = MarkerUpdateAnimation<T> | MarkerUpdateAnimation<T>;\n\nexport type MarkerUpdateAnimation<T> = {\n type: T;\n} & MarkerExitAnimation;\n\nexport type CommonMarkLineAnimationType = 'clipIn' | 'fadeIn';\n\nexport type CommonMarkAreaAnimationType = 'fadeIn';\n\nexport type MarkPointAnimationType = 'callIn' | 'fadeIn';\n\nexport type MarkerExitAnimation = {\n duration?: number;\n delay?: number;\n easing?: EasingType;\n};\n\n/** state type */\nexport type CommonMarkLineState<LineAttr> = {\n line?: State<LineAttr>;\n lineStartSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n lineEndSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n label?: State<Partial<ITextGraphicAttribute>>;\n labelBackground?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type CommonMarkAreaState<AreaAttr> = {\n area?: State<Partial<AreaAttr>>;\n label?: State<Partial<ITextGraphicAttribute>>;\n labelBackground?: State<Partial<IRectGraphicAttribute>>;\n};\n\nexport type MarkPointState = {\n line?: State<ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[]>;\n lineStartSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n lineEndSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n symbol?: State<Partial<ISymbolGraphicAttribute>>;\n image?: State<Partial<IImageGraphicAttribute>>;\n text?: State<Partial<ITextGraphicAttribute>>;\n textBackground?: State<Partial<IRectGraphicAttribute>>;\n richText?: State<Partial<IRichTextGraphicAttribute>>;\n customMark?: State<Partial<IGroupGraphicAttribute>>;\n};\n\nexport type CommonMarkLineAttrs<LineAttr, LineLabelPosition> = MarkerAttrs &\n Omit<CommonSegmentAttributes, 'state' | 'lineStyle'> & {\n /**\n * 标签\n */\n label?: {\n /**\n * label 相对line的位置\n */\n position?: LineLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkRef &\n IMarkLabel;\n state?: CommonMarkLineState<LineAttr>;\n } & BaseMarkerAnimation<CommonMarkLineAnimationType>;\n\nexport type MarkLineAttrs = CommonMarkLineAttrs<\n ILineGraphicWithCornerRadius | ILineGraphicAttribute[],\n keyof typeof IMarkLineLabelPosition\n> & {\n type?: 'line';\n /**\n * 是否对 points 进行多段处理,默认为 false,即直接将所有的点连接成线。\n * 如果需要进行多段处理,需要将 points 属性配置为 Point[][] 类型\n * @default false\n */\n multiSegment?: boolean;\n /**\n * 在 `multiSegment` 属性开启的前提下,用于声明那一段线段用来作为主线段,如果不声明,默认全段为主线段\n */\n mainSegmentIndex?: number;\n /**\n * 构成line的点: 如果是两个点,则为直线;多个点则为曲线\n */\n points: Point[] | Point[][];\n lineStyle?: ILineGraphicAttribute;\n};\n\nexport type MarkArcLineAttrs = CommonMarkLineAttrs<IArcGraphicAttribute, keyof typeof IMarkCommonArcLabelPosition> & {\n type?: 'arc-line';\n /**\n * 弧线中心位置\n */\n center: {\n x: number;\n y: number;\n };\n /**\n * 弧线半径\n */\n radius: number;\n /**\n * 弧线起始角度(弧度)\n */\n startAngle: number;\n /**\n * 弧线终点角度(弧度)\n */\n endAngle: number;\n lineStyle?: IArcGraphicAttribute;\n};\n\nexport type MarkAreaAttrs = MarkerAttrs & {\n type?: 'area';\n /**\n * 构成area的点\n */\n points: Point[];\n /**\n * 标签\n */\n label?: {\n position?: keyof typeof IMarkAreaLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkLabel;\n /**\n * area的样式\n */\n areaStyle?: IPolygonAttribute;\n\n state?: CommonMarkAreaState<IPolygonGraphicAttribute>;\n} & BaseMarkerAnimation<CommonMarkAreaAnimationType>;\n\nexport type MarkArcAreaAttrs = MarkerAttrs & {\n type?: 'arc-area';\n /**\n * 扇区中心位置\n */\n center: {\n x: number;\n y: number;\n };\n /**\n * 扇区内半径\n */\n innerRadius: number;\n /**\n * 扇区外半径\n */\n outerRadius: number;\n /**\n * 扇区起始角度(弧度)\n */\n startAngle: number;\n /**\n * 扇区终点角度(弧度)\n */\n endAngle: number;\n /**\n * 标签\n */\n label?: {\n position?: keyof typeof IMarkCommonArcLabelPosition;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n } & IMarkRef &\n IMarkLabel;\n /**\n * area的样式\n */\n areaStyle?: IArcGraphicAttribute;\n\n state?: CommonMarkAreaState<IArcGraphicAttribute>;\n} & BaseMarkerAnimation<CommonMarkAreaAnimationType>;\n\nexport type IItemContent = IMarkRef & {\n /**\n * 标注类型\n * Tips: 保留'richText'与之前的定义做兼容\n */\n type?: 'symbol' | 'text' | 'image' | 'richText' | 'custom';\n position?: keyof typeof IMarkPointItemPosition;\n /**\n * x 方向偏移量\n */\n offsetX?: number;\n /**\n * y 方向偏移量\n */\n offsetY?: number;\n /**\n * type为symbol时, symbol的样式\n */\n symbolStyle?: ISymbolGraphicAttribute;\n /**\n * type为image时, image的样式\n */\n imageStyle?: IImageGraphicAttribute;\n /**\n * type为text时, text的配置\n * 'text'类型的ItemContent新增三种子类型:'text','rich','html'。配置在textStyle.type上,继承自TagAttributes。\n */\n textStyle?: IMarkLabel;\n /**\n * type为rich text时, rich text的样式\n */\n richTextStyle?: IRichTextGraphicAttribute;\n /**\n * type为custom时,允许以callback的方式传入需要render的item\n */\n renderCustomCallback?: () => IGroup;\n /**\n * 当 mark 配置了 limitRect 之后,label 是否自动调整位置\n * @default false\n */\n confine?: boolean;\n};\n\nexport type IItemLine = {\n /** TODO:'type-opo' */\n type?: 'type-s' | 'type-do' | 'type-po' | 'type-op';\n visible?: boolean;\n /**\n * 垂直于引导线的装饰线,参考案例: https://observablehq.com/@mikelotis/edmonton-population-history-line-chart\n */\n decorativeLine?: {\n visible?: boolean;\n length?: number;\n };\n} & Omit<SegmentAttributes, 'points'>;\n\nexport type MarkPointAttrs = Omit<MarkerAttrs, 'labelStyle'> & {\n /**\n * markPoint的位置(也是path的起点)\n */\n position: Point;\n /**\n * 标注引导线\n */\n itemLine?: IItemLine;\n\n /**\n * 标注内容\n */\n itemContent?: IItemContent;\n\n state?: MarkPointState;\n} & BaseMarkerAnimation<MarkPointAnimationType>;\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FederatedPointerEvent, IGraphic, IGroup } from '@visactor/vrender-core';
|
|
2
|
+
export declare const dispatchHoverState: (e: FederatedPointerEvent, container: IGroup, lastHover: IGraphic | null) => IGraphic<Partial<import("@visactor/vrender-core").IGraphicAttribute>>;
|
|
3
|
+
export declare const dispatchUnHoverState: (e: FederatedPointerEvent, container: IGroup, lastHover: IGraphic | null) => IGraphic<Partial<import("@visactor/vrender-core").IGraphicAttribute>>;
|
|
4
|
+
export declare const dispatchClickState: (e: FederatedPointerEvent, container: IGroup, lastSelect: IGraphic | null) => IGraphic<Partial<import("@visactor/vrender-core").IGraphicAttribute>>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: !0
|
|
5
|
+
}), exports.dispatchClickState = exports.dispatchUnHoverState = exports.dispatchHoverState = void 0;
|
|
6
|
+
|
|
7
|
+
const constant_1 = require("../constant"), util_1 = require("../util"), vutils_1 = require("@visactor/vutils"), dispatchHoverState = (e, container, lastHover) => {
|
|
8
|
+
const target = e.target;
|
|
9
|
+
return target !== lastHover && target.name && !(0, vutils_1.isEmpty)(target.states) ? (target.addState(constant_1.StateValue.hover, !0),
|
|
10
|
+
(0, util_1.traverseGroup)(container, (node => {
|
|
11
|
+
node !== target && node.name && !(0, vutils_1.isEmpty)(node.states) && node.addState(constant_1.StateValue.hoverReverse, !0);
|
|
12
|
+
})), target) : lastHover;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.dispatchHoverState = dispatchHoverState;
|
|
16
|
+
|
|
17
|
+
const dispatchUnHoverState = (e, container, lastHover) => lastHover ? ((0, util_1.traverseGroup)(container, (node => {
|
|
18
|
+
node.name && !(0, vutils_1.isEmpty)(node.states) && (node.removeState(constant_1.StateValue.hoverReverse),
|
|
19
|
+
node.removeState(constant_1.StateValue.hover));
|
|
20
|
+
})), null) : lastHover;
|
|
21
|
+
|
|
22
|
+
exports.dispatchUnHoverState = dispatchUnHoverState;
|
|
23
|
+
|
|
24
|
+
const dispatchClickState = (e, container, lastSelect) => {
|
|
25
|
+
const target = e.target;
|
|
26
|
+
return lastSelect === target && target.hasState(constant_1.StateValue.selected) ? ((0,
|
|
27
|
+
util_1.traverseGroup)(container, (node => {
|
|
28
|
+
node.name && !(0, vutils_1.isEmpty)(node.states) && (node.removeState(constant_1.StateValue.selectedReverse),
|
|
29
|
+
node.removeState(constant_1.StateValue.selected));
|
|
30
|
+
})), null) : target.name && !(0, vutils_1.isEmpty)(target.states) ? (target.addState(constant_1.StateValue.selected, !0),
|
|
31
|
+
(0, util_1.traverseGroup)(container, (node => {
|
|
32
|
+
node !== target && node.name && !(0, vutils_1.isEmpty)(node.states) && node.addState(constant_1.StateValue.selectedReverse, !0);
|
|
33
|
+
})), target) : lastSelect;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.dispatchClickState = dispatchClickState;
|
|
37
|
+
//# sourceMappingURL=interaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/util/interaction.ts"],"names":[],"mappings":";;;AACA,0CAAyC;AACzC,kCAAwC;AACxC,6CAA2C;AAEpC,MAAM,kBAAkB,GAAG,CAAC,CAAwB,EAAE,SAAiB,EAAE,SAA0B,EAAE,EAAE;IAC5G,MAAM,MAAM,GAAG,CAAC,CAAC,MAA6B,CAAC;IAC/C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,IAAA,gBAAO,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QAClE,MAAM,CAAC,QAAQ,CAAC,qBAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACxC,IAAA,oBAAa,EAAC,SAAS,EAAE,CAAC,IAAc,EAAE,EAAE;YAC1C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACzD,IAAI,CAAC,QAAQ,CAAC,qBAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;KACf;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAZW,QAAA,kBAAkB,sBAY7B;AAEK,MAAM,oBAAoB,GAAG,CAAC,CAAwB,EAAE,SAAiB,EAAE,SAA0B,EAAE,EAAE;IAC9G,IAAI,SAAS,EAAE;QACb,IAAA,oBAAa,EAAC,SAAS,EAAE,CAAC,IAAc,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACtC,IAAI,CAAC,WAAW,CAAC,qBAAU,CAAC,YAAY,CAAC,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,qBAAU,CAAC,KAAK,CAAC,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACb;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAXW,QAAA,oBAAoB,wBAW/B;AAEK,MAAM,kBAAkB,GAAG,CAAC,CAAwB,EAAE,SAAiB,EAAE,UAA2B,EAAE,EAAE;IAC7G,MAAM,MAAM,GAAG,CAAC,CAAC,MAA6B,CAAC;IAC/C,IAAI,UAAU,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,qBAAU,CAAC,QAAQ,CAAC,EAAE;QACjE,IAAA,oBAAa,EAAC,SAAS,EAAE,CAAC,IAAc,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACtC,IAAI,CAAC,WAAW,CAAC,qBAAU,CAAC,eAAe,CAAC,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,qBAAU,CAAC,QAAQ,CAAC,CAAC;aACvC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;KACb;IAED,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,IAAA,gBAAO,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QAC1C,MAAM,CAAC,QAAQ,CAAC,qBAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAA,oBAAa,EAAC,SAAS,EAAE,CAAC,IAAc,EAAE,EAAE;YAC1C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACzD,IAAI,CAAC,QAAQ,CAAC,qBAAU,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;aACjD;QACH,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;KACf;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAvBW,QAAA,kBAAkB,sBAuB7B","file":"interaction.js","sourcesContent":["import type { FederatedPointerEvent, IGraphic, IGroup } from '@visactor/vrender-core';\nimport { StateValue } from '../constant';\nimport { traverseGroup } from '../util';\nimport { isEmpty } from '@visactor/vutils';\n\nexport const dispatchHoverState = (e: FederatedPointerEvent, container: IGroup, lastHover: IGraphic | null) => {\n const target = e.target as unknown as IGraphic;\n if (target !== lastHover && target.name && !isEmpty(target.states)) {\n target.addState(StateValue.hover, true);\n traverseGroup(container, (node: IGraphic) => {\n if (node !== target && node.name && !isEmpty(node.states)) {\n node.addState(StateValue.hoverReverse, true);\n }\n });\n return target;\n }\n return lastHover;\n};\n\nexport const dispatchUnHoverState = (e: FederatedPointerEvent, container: IGroup, lastHover: IGraphic | null) => {\n if (lastHover) {\n traverseGroup(container, (node: IGraphic) => {\n if (node.name && !isEmpty(node.states)) {\n node.removeState(StateValue.hoverReverse);\n node.removeState(StateValue.hover);\n }\n });\n return null;\n }\n return lastHover;\n};\n\nexport const dispatchClickState = (e: FederatedPointerEvent, container: IGroup, lastSelect: IGraphic | null) => {\n const target = e.target as unknown as IGraphic;\n if (lastSelect === target && target.hasState(StateValue.selected)) {\n traverseGroup(container, (node: IGraphic) => {\n if (node.name && !isEmpty(node.states)) {\n node.removeState(StateValue.selectedReverse);\n node.removeState(StateValue.selected);\n }\n });\n // 取消选中\n return null;\n }\n\n if (target.name && !isEmpty(target.states)) {\n target.addState(StateValue.selected, true);\n traverseGroup(container, (node: IGraphic) => {\n if (node !== target && node.name && !isEmpty(node.states)) {\n node.addState(StateValue.selectedReverse, true);\n }\n });\n return target;\n }\n return lastSelect;\n};\n"]}
|