@visactor/vrender-components 0.18.14-alpha.0 → 0.19.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/cjs/axis/base.js +4 -20
  2. package/cjs/axis/base.js.map +1 -1
  3. package/cjs/brush/brush.js +14 -21
  4. package/cjs/brush/brush.js.map +1 -1
  5. package/cjs/checkbox/checkbox.d.ts +2 -2
  6. package/cjs/checkbox/checkbox.js +3 -4
  7. package/cjs/checkbox/checkbox.js.map +1 -1
  8. package/cjs/checkbox/register.js +1 -1
  9. package/cjs/checkbox/register.js.map +1 -1
  10. package/cjs/checkbox/type.d.ts +2 -2
  11. package/cjs/checkbox/type.js.map +1 -1
  12. package/cjs/data-zoom/data-zoom.js +6 -12
  13. package/cjs/data-zoom/data-zoom.js.map +1 -1
  14. package/cjs/index.d.ts +1 -2
  15. package/cjs/index.js +2 -3
  16. package/cjs/index.js.map +1 -1
  17. package/cjs/label/arc.d.ts +2 -2
  18. package/cjs/label/base.d.ts +2 -2
  19. package/cjs/marker/animate/animate.d.ts +13 -0
  20. package/cjs/marker/animate/animate.js +92 -0
  21. package/cjs/marker/animate/animate.js.map +1 -0
  22. package/cjs/marker/animate/call-in.d.ts +4 -0
  23. package/cjs/marker/animate/call-in.js +27 -0
  24. package/cjs/marker/animate/call-in.js.map +1 -0
  25. package/cjs/marker/animate/clip-in.d.ts +4 -0
  26. package/cjs/marker/animate/clip-in.js +23 -0
  27. package/cjs/marker/animate/clip-in.js.map +1 -0
  28. package/cjs/marker/animate/common.d.ts +9 -0
  29. package/cjs/marker/animate/common.js +48 -0
  30. package/cjs/marker/animate/common.js.map +1 -0
  31. package/cjs/marker/animate/fade-in.d.ts +7 -0
  32. package/cjs/marker/animate/fade-in.js +30 -0
  33. package/cjs/marker/animate/fade-in.js.map +1 -0
  34. package/cjs/marker/animate/fade-out.d.ts +7 -0
  35. package/cjs/marker/animate/fade-out.js +30 -0
  36. package/cjs/marker/animate/fade-out.js.map +1 -0
  37. package/cjs/marker/animate/index.js +3 -0
  38. package/cjs/marker/animate/index.js.map +1 -0
  39. package/cjs/marker/arc-area.d.ts +55 -0
  40. package/cjs/marker/arc-area.js +131 -0
  41. package/cjs/marker/arc-area.js.map +1 -0
  42. package/cjs/marker/arc-line.d.ts +25 -0
  43. package/cjs/marker/arc-line.js +106 -0
  44. package/cjs/marker/arc-line.js.map +1 -0
  45. package/cjs/marker/area.d.ts +14 -4
  46. package/cjs/marker/area.js +34 -21
  47. package/cjs/marker/area.js.map +1 -1
  48. package/cjs/marker/base.d.ts +21 -3
  49. package/cjs/marker/base.js +40 -5
  50. package/cjs/marker/base.js.map +1 -1
  51. package/cjs/marker/common-line.d.ts +22 -0
  52. package/cjs/marker/common-line.js +56 -0
  53. package/cjs/marker/common-line.js.map +1 -0
  54. package/cjs/marker/config.d.ts +79 -6
  55. package/cjs/marker/config.js +77 -37
  56. package/cjs/marker/config.js.map +1 -1
  57. package/cjs/marker/index.d.ts +2 -0
  58. package/cjs/marker/index.js +2 -1
  59. package/cjs/marker/index.js.map +1 -1
  60. package/cjs/marker/line.d.ts +24 -12
  61. package/cjs/marker/line.js +111 -45
  62. package/cjs/marker/line.js.map +1 -1
  63. package/cjs/marker/point.d.ts +8 -3
  64. package/cjs/marker/point.js +33 -9
  65. package/cjs/marker/point.js.map +1 -1
  66. package/cjs/marker/register.d.ts +2 -0
  67. package/cjs/marker/register.js +11 -2
  68. package/cjs/marker/register.js.map +1 -1
  69. package/cjs/marker/type.d.ts +102 -12
  70. package/cjs/marker/type.js +8 -2
  71. package/cjs/marker/type.js.map +1 -1
  72. package/cjs/poptip/poptip.js +4 -6
  73. package/cjs/poptip/poptip.js.map +1 -1
  74. package/cjs/poptip/register.js +2 -2
  75. package/cjs/poptip/register.js.map +1 -1
  76. package/cjs/segment/arc-segment.d.ts +13 -0
  77. package/cjs/segment/arc-segment.js +51 -0
  78. package/cjs/segment/arc-segment.js.map +1 -0
  79. package/cjs/segment/index.d.ts +1 -0
  80. package/cjs/segment/index.js +2 -1
  81. package/cjs/segment/index.js.map +1 -1
  82. package/cjs/segment/register.d.ts +2 -1
  83. package/cjs/segment/register.js +8 -3
  84. package/cjs/segment/register.js.map +1 -1
  85. package/cjs/segment/segment.d.ts +9 -7
  86. package/cjs/segment/segment.js +12 -8
  87. package/cjs/segment/segment.js.map +1 -1
  88. package/cjs/segment/type.d.ts +24 -4
  89. package/cjs/segment/type.js.map +1 -1
  90. package/cjs/slider/slider.js +4 -7
  91. package/cjs/slider/slider.js.map +1 -1
  92. package/cjs/tag/tag.d.ts +5 -0
  93. package/cjs/tag/tag.js +11 -2
  94. package/cjs/tag/tag.js.map +1 -1
  95. package/cjs/title/register.js +2 -1
  96. package/cjs/title/register.js.map +1 -1
  97. package/cjs/title/title.js +4 -6
  98. package/cjs/title/title.js.map +1 -1
  99. package/cjs/util/interaction.d.ts +4 -0
  100. package/cjs/util/interaction.js +37 -0
  101. package/cjs/util/interaction.js.map +1 -0
  102. package/es/axis/base.js +7 -21
  103. package/es/axis/base.js.map +1 -1
  104. package/es/brush/brush.js +14 -21
  105. package/es/brush/brush.js.map +1 -1
  106. package/es/checkbox/checkbox.d.ts +2 -2
  107. package/es/checkbox/checkbox.js +3 -5
  108. package/es/checkbox/checkbox.js.map +1 -1
  109. package/es/checkbox/register.js +2 -2
  110. package/es/checkbox/register.js.map +1 -1
  111. package/es/checkbox/type.d.ts +2 -2
  112. package/es/checkbox/type.js.map +1 -1
  113. package/es/data-zoom/data-zoom.js +6 -12
  114. package/es/data-zoom/data-zoom.js.map +1 -1
  115. package/es/index.d.ts +1 -2
  116. package/es/index.js +1 -3
  117. package/es/index.js.map +1 -1
  118. package/es/label/arc.d.ts +2 -2
  119. package/es/label/base.d.ts +2 -2
  120. package/es/marker/animate/animate.d.ts +13 -0
  121. package/es/marker/animate/animate.js +92 -0
  122. package/es/marker/animate/animate.js.map +1 -0
  123. package/es/marker/animate/call-in.d.ts +4 -0
  124. package/es/marker/animate/call-in.js +17 -0
  125. package/es/marker/animate/call-in.js.map +1 -0
  126. package/es/marker/animate/clip-in.d.ts +4 -0
  127. package/es/marker/animate/clip-in.js +15 -0
  128. package/es/marker/animate/clip-in.js.map +1 -0
  129. package/es/marker/animate/common.d.ts +9 -0
  130. package/es/marker/animate/common.js +39 -0
  131. package/es/marker/animate/common.js.map +1 -0
  132. package/es/marker/animate/fade-in.d.ts +7 -0
  133. package/es/marker/animate/fade-in.js +20 -0
  134. package/es/marker/animate/fade-in.js.map +1 -0
  135. package/es/marker/animate/fade-out.d.ts +7 -0
  136. package/es/marker/animate/fade-out.js +20 -0
  137. package/es/marker/animate/fade-out.js.map +1 -0
  138. package/es/marker/animate/index.js +3 -0
  139. package/es/marker/animate/index.js.map +1 -0
  140. package/es/marker/arc-area.d.ts +55 -0
  141. package/es/marker/arc-area.js +143 -0
  142. package/es/marker/arc-area.js.map +1 -0
  143. package/es/marker/arc-line.d.ts +25 -0
  144. package/es/marker/arc-line.js +114 -0
  145. package/es/marker/arc-line.js.map +1 -0
  146. package/es/marker/area.d.ts +14 -4
  147. package/es/marker/area.js +36 -19
  148. package/es/marker/area.js.map +1 -1
  149. package/es/marker/base.d.ts +21 -3
  150. package/es/marker/base.js +43 -4
  151. package/es/marker/base.js.map +1 -1
  152. package/es/marker/common-line.d.ts +22 -0
  153. package/es/marker/common-line.js +58 -0
  154. package/es/marker/common-line.js.map +1 -0
  155. package/es/marker/config.d.ts +79 -6
  156. package/es/marker/config.js +79 -37
  157. package/es/marker/config.js.map +1 -1
  158. package/es/marker/index.d.ts +2 -0
  159. package/es/marker/index.js +4 -0
  160. package/es/marker/index.js.map +1 -1
  161. package/es/marker/line.d.ts +24 -12
  162. package/es/marker/line.js +116 -48
  163. package/es/marker/line.js.map +1 -1
  164. package/es/marker/point.d.ts +8 -3
  165. package/es/marker/point.js +34 -6
  166. package/es/marker/point.js.map +1 -1
  167. package/es/marker/register.d.ts +2 -0
  168. package/es/marker/register.js +10 -2
  169. package/es/marker/register.js.map +1 -1
  170. package/es/marker/type.d.ts +102 -12
  171. package/es/marker/type.js +9 -0
  172. package/es/marker/type.js.map +1 -1
  173. package/es/poptip/poptip.js +4 -6
  174. package/es/poptip/poptip.js.map +1 -1
  175. package/es/poptip/register.js +2 -2
  176. package/es/poptip/register.js.map +1 -1
  177. package/es/segment/arc-segment.d.ts +13 -0
  178. package/es/segment/arc-segment.js +49 -0
  179. package/es/segment/arc-segment.js.map +1 -0
  180. package/es/segment/index.d.ts +1 -0
  181. package/es/segment/index.js +2 -0
  182. package/es/segment/index.js.map +1 -1
  183. package/es/segment/register.d.ts +2 -1
  184. package/es/segment/register.js +6 -2
  185. package/es/segment/register.js.map +1 -1
  186. package/es/segment/segment.d.ts +9 -7
  187. package/es/segment/segment.js +11 -8
  188. package/es/segment/segment.js.map +1 -1
  189. package/es/segment/type.d.ts +24 -4
  190. package/es/segment/type.js.map +1 -1
  191. package/es/slider/slider.js +4 -7
  192. package/es/slider/slider.js.map +1 -1
  193. package/es/tag/tag.d.ts +5 -0
  194. package/es/tag/tag.js +11 -2
  195. package/es/tag/tag.js.map +1 -1
  196. package/es/title/register.js +2 -2
  197. package/es/title/register.js.map +1 -1
  198. package/es/title/title.js +4 -6
  199. package/es/title/title.js.map +1 -1
  200. package/es/util/interaction.d.ts +4 -0
  201. package/es/util/interaction.js +30 -0
  202. package/es/util/interaction.js.map +1 -0
  203. package/package.json +3 -3
  204. package/cjs/marker/util.js +0 -3
  205. package/cjs/marker/util.js.map +0 -1
  206. package/cjs/radio/index.d.ts +0 -2
  207. package/cjs/radio/index.js +0 -21
  208. package/cjs/radio/index.js.map +0 -1
  209. package/cjs/radio/radio.d.ts +0 -16
  210. package/cjs/radio/radio.js +0 -89
  211. package/cjs/radio/radio.js.map +0 -1
  212. package/cjs/radio/register.d.ts +0 -1
  213. package/cjs/radio/register.js +0 -15
  214. package/cjs/radio/register.js.map +0 -1
  215. package/cjs/radio/type.d.ts +0 -21
  216. package/cjs/radio/type.js +0 -6
  217. package/cjs/radio/type.js.map +0 -1
  218. package/es/marker/util.js +0 -3
  219. package/es/marker/util.js.map +0 -1
  220. package/es/radio/index.d.ts +0 -2
  221. package/es/radio/index.js +0 -4
  222. package/es/radio/index.js.map +0 -1
  223. package/es/radio/radio.d.ts +0 -16
  224. package/es/radio/radio.js +0 -88
  225. package/es/radio/radio.js.map +0 -1
  226. package/es/radio/register.d.ts +0 -1
  227. package/es/radio/register.js +0 -6
  228. package/es/radio/register.js.map +0 -1
  229. package/es/radio/type.d.ts +0 -21
  230. package/es/radio/type.js +0 -2
  231. package/es/radio/type.js.map +0 -1
  232. /package/cjs/marker/{util.d.ts → animate/index.d.ts} +0 -0
  233. /package/es/marker/{util.d.ts → animate/index.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/marker/arc-line.ts"],"names":[],"mappings":"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","file":"arc-line.js","sourcesContent":["import { merge } from '@visactor/vutils';\nimport { ArcSegment } from '../segment';\nimport { loadMarkArcLineComponent } from './register';\nimport { DEFAULT_STATES } from '../constant';\nimport { MarkCommonLine } from './common-line';\nimport type { ComponentOptions } from '../interface';\nimport type { IArcGraphicAttribute } from '@visactor/vrender-core';\nimport { IMarkCommonArcLabelPosition } from './type';\n// eslint-disable-next-line no-duplicate-imports\nimport type { MarkArcLineAttrs, MarkerAnimationState } from './type';\nimport { DEFAULT_MARK_ARC_LINE_THEME } from './config';\nimport { markCommonLineAnimate } from './animate/animate';\n\nloadMarkArcLineComponent();\n\nexport function registerMarkArcLineAnimate() {\n MarkArcLine._animate = markCommonLineAnimate;\n}\nexport class MarkArcLine extends MarkCommonLine<IArcGraphicAttribute, IMarkCommonArcLabelPosition> {\n name = 'markArcLine';\n // eslint-disable-next-line max-len\n static defaultAttributes: Partial<MarkArcLineAttrs> = DEFAULT_MARK_ARC_LINE_THEME as unknown as MarkArcLineAttrs;\n protected _line!: ArcSegment;\n\n protected markerAnimate(state: MarkerAnimationState) {\n if (MarkArcLine._animate && this._animationConfig) {\n MarkArcLine._animate(this._line, this._label, this._animationConfig, state);\n }\n }\n\n constructor(attributes: MarkArcLineAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkArcLine.defaultAttributes, attributes));\n }\n\n protected getPointAttrByPosition(direction: IMarkCommonArcLabelPosition) {\n const { center, radius, startAngle, endAngle, label } = this.attribute as MarkArcLineAttrs;\n const { refX = 0, refY = 0 } = label;\n const labelTextHeight = this._label.getTextShape().attribute.visible\n ? Math.abs((this._label.getTextShape()?.AABBBounds?.y2 ?? 0) - (this._label.getTextShape()?.AABBBounds.y1 ?? 0))\n : 0;\n const labelRectHeight = this._label.getBgRect().attribute.visible\n ? Math.abs((this._label.getBgRect()?.AABBBounds?.y2 ?? 0) - (this._label.getBgRect()?.AABBBounds.y1 ?? 0))\n : 0;\n const labelHeight = Math.max(labelRectHeight, labelTextHeight);\n\n let angle;\n // tag在正交方向是向内偏移,还是向外偏移\n // 不偏移: 0, 内: -1, 外: 1\n let orthogonalOffsetDirection;\n\n switch (direction) {\n case IMarkCommonArcLabelPosition.center:\n angle = (startAngle + endAngle) / 2;\n orthogonalOffsetDirection = 0;\n break;\n case IMarkCommonArcLabelPosition.arcInnerStart:\n angle = startAngle;\n orthogonalOffsetDirection = -1;\n break;\n case IMarkCommonArcLabelPosition.arcOuterStart:\n angle = startAngle;\n orthogonalOffsetDirection = 1;\n break;\n case IMarkCommonArcLabelPosition.arcInnerEnd:\n angle = endAngle;\n orthogonalOffsetDirection = -1;\n break;\n case IMarkCommonArcLabelPosition.arcOuterEnd:\n angle = endAngle;\n orthogonalOffsetDirection = 1;\n break;\n case IMarkCommonArcLabelPosition.arcInnerMiddle:\n angle = (startAngle + endAngle) / 2;\n orthogonalOffsetDirection = -1;\n break;\n case IMarkCommonArcLabelPosition.arcOuterMiddle:\n angle = (startAngle + endAngle) / 2;\n orthogonalOffsetDirection = 1;\n break;\n default: // default arcInnerMiddle\n angle = (startAngle + endAngle) / 2;\n orthogonalOffsetDirection = -1;\n }\n\n return {\n position: {\n x:\n center.x +\n (radius + (orthogonalOffsetDirection * labelHeight) / 2 + refY) * Math.cos(angle) +\n refX * Math.cos(angle - Math.PI / 2),\n y:\n center.y +\n (radius + (orthogonalOffsetDirection * labelHeight) / 2 + refY) * Math.sin(angle) +\n refX * Math.sin(angle - Math.PI / 2)\n },\n angle\n };\n }\n\n protected getRotateByAngle(angle: number): number {\n return angle - Math.PI / 2 + (this.attribute.label.refAngle ?? 0);\n }\n\n protected createSegment() {\n const { center, radius, startAngle, endAngle, startSymbol, endSymbol, lineStyle, state } = this\n .attribute as MarkArcLineAttrs;\n return new ArcSegment({\n center,\n radius,\n startAngle,\n endAngle,\n startSymbol,\n endSymbol,\n lineStyle,\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 { center, radius, startAngle, endAngle, startSymbol, endSymbol, lineStyle } = this\n .attribute as MarkArcLineAttrs;\n if (this._line) {\n (this._line as any).setAttributes({\n center,\n radius,\n startAngle,\n endAngle,\n startSymbol,\n endSymbol,\n lineStyle\n });\n }\n }\n\n protected isValidPoints() {\n return true;\n }\n}\n"]}
@@ -1,13 +1,15 @@
1
1
  import type { IGroup, IPolygon } from '@visactor/vrender-core';
2
2
  import { Tag } from '../tag';
3
3
  import { Marker } from './base';
4
- import type { MarkAreaAttrs } from './type';
4
+ import type { CommonMarkAreaAnimationType, IMarkAreaLabelPosition, MarkAreaAttrs, MarkerAnimationState } from './type';
5
5
  import type { ComponentOptions } from '../interface';
6
- export declare class MarkArea extends Marker<MarkAreaAttrs> {
6
+ export declare function registerMarkAreaAnimate(): void;
7
+ export declare class MarkArea extends Marker<MarkAreaAttrs, CommonMarkAreaAnimationType> {
7
8
  name: string;
8
9
  static defaultAttributes: {
10
+ interactive: boolean;
9
11
  label: {
10
- position: import("./type").IMarkAreaLabelPosition;
12
+ position: IMarkAreaLabelPosition;
11
13
  textStyle: {
12
14
  fill: string;
13
15
  stroke: string;
@@ -15,6 +17,8 @@ export declare class MarkArea extends Marker<MarkAreaAttrs> {
15
17
  fontSize: number;
16
18
  fontWeight: string;
17
19
  fontStyle: string;
20
+ textAlign: string;
21
+ textBaseline: string;
18
22
  };
19
23
  padding: number[];
20
24
  panel: {
@@ -29,11 +33,17 @@ export declare class MarkArea extends Marker<MarkAreaAttrs> {
29
33
  visible: boolean;
30
34
  };
31
35
  };
36
+ defaultUpdateAnimation: never;
37
+ defaultExitAnimation: import("./type").MarkerExitAnimation;
38
+ protected markerAnimate(state: MarkerAnimationState): void;
32
39
  private _area;
33
40
  getArea(): IPolygon;
34
41
  getLabel(): Tag;
35
42
  constructor(attributes: MarkAreaAttrs, options?: ComponentOptions);
36
- private _getPositionByDirection;
43
+ protected getPointAttrByPosition(position: IMarkAreaLabelPosition): {
44
+ x: number;
45
+ y: number;
46
+ };
37
47
  protected setLabelPos(): void;
38
48
  protected initMarker(container: IGroup): void;
39
49
  protected updateMarker(): void;
@@ -2,13 +2,20 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.MarkArea = void 0;
5
+ }), exports.MarkArea = exports.registerMarkAreaAnimate = void 0;
6
6
 
7
- const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), tag_1 = require("../tag"), base_1 = require("./base"), config_1 = require("./config"), limit_shape_1 = require("../util/limit-shape"), register_1 = require("./register");
7
+ const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@visactor/vutils"), tag_1 = require("../tag"), base_1 = require("./base"), config_1 = require("./config"), limit_shape_1 = require("../util/limit-shape"), register_1 = require("./register"), constant_1 = require("../constant"), animate_1 = require("./animate/animate");
8
8
 
9
- (0, register_1.loadMarkAreaComponent)();
9
+ function registerMarkAreaAnimate() {
10
+ MarkArea._animate = animate_1.markAreaAnimate;
11
+ }
12
+
13
+ (0, register_1.loadMarkAreaComponent)(), exports.registerMarkAreaAnimate = registerMarkAreaAnimate;
10
14
 
11
15
  class MarkArea extends base_1.Marker {
16
+ markerAnimate(state) {
17
+ MarkArea._animate && this._animationConfig && MarkArea._animate(this._area, this._label, this._animationConfig, state);
18
+ }
12
19
  getArea() {
13
20
  return this._area;
14
21
  }
@@ -17,22 +24,24 @@ class MarkArea extends base_1.Marker {
17
24
  }
18
25
  constructor(attributes, options) {
19
26
  super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, MarkArea.defaultAttributes, attributes)),
20
- this.name = "markArea";
27
+ this.name = "markArea", this.defaultUpdateAnimation = animate_1.DefaultUpdateMarkAreaAnimation,
28
+ this.defaultExitAnimation = animate_1.DefaultExitMarkerAnimation;
21
29
  }
22
- _getPositionByDirection(area, direction) {
23
- const {x1: x1, x2: x2, y1: y1, y2: y2} = this._area.AABBBounds;
24
- return direction.includes("left") || direction.includes("Left") ? {
25
- x: x1,
30
+ getPointAttrByPosition(position) {
31
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
32
+ const {x1: x1, x2: x2, y1: y1, y2: y2} = this._area.AABBBounds, labelTextHeight = this._label.getTextShape().attribute.visible ? 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)) : 0, labelRectHeight = this._label.getBgRect().attribute.visible ? 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)) : 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);
33
+ return position.includes("left") || position.includes("Left") ? {
34
+ x: x1 + (position.includes("inside") ? .5 : -.5) * labelWidth,
26
35
  y: (y1 + y2) / 2
27
- } : direction.includes("right") || direction.includes("Right") ? {
28
- x: x2,
36
+ } : position.includes("right") || position.includes("Right") ? {
37
+ x: x2 + (position.includes("inside") ? -.5 : .5) * labelWidth,
29
38
  y: (y1 + y2) / 2
30
- } : direction.includes("top") || direction.includes("Top") ? {
39
+ } : position.includes("top") || position.includes("Top") ? {
31
40
  x: (x1 + x2) / 2,
32
- y: y1
33
- } : direction.includes("bottom") || direction.includes("Bottom") ? {
41
+ y: y1 + (position.includes("inside") ? .5 : -.5) * labelHeight
42
+ } : position.includes("bottom") || position.includes("Bottom") ? {
34
43
  x: (x1 + x2) / 2,
35
- y: y2
44
+ y: y2 + (position.includes("inside") ? -.5 : .5) * labelHeight
36
45
  } : {
37
46
  x: (x1 + x2) / 2,
38
47
  y: (y1 + y2) / 2
@@ -41,10 +50,8 @@ class MarkArea extends base_1.Marker {
41
50
  setLabelPos() {
42
51
  var _a;
43
52
  if (this._label && this._area) {
44
- const {label: label = {}} = this.attribute, labelPosition = null !== (_a = label.position) && void 0 !== _a ? _a : "middle", labelPoint = this._getPositionByDirection(this._area, labelPosition);
45
- if (this._label.setAttributes(Object.assign(Object.assign({}, labelPoint), {
46
- textStyle: Object.assign(Object.assign({}, config_1.DEFAULT_MARK_AREA_TEXT_STYLE_MAP[labelPosition]), label.textStyle)
47
- })), this.attribute.limitRect && label.confine) {
53
+ const {label: label = {}} = this.attribute, labelPosition = null !== (_a = label.position) && void 0 !== _a ? _a : "middle", labelPoint = this.getPointAttrByPosition(labelPosition);
54
+ if (this._label.setAttributes(Object.assign({}, labelPoint)), this.attribute.limitRect && label.confine) {
48
55
  const {x: x, y: y, width: width, height: height} = this.attribute.limitRect;
49
56
  (0, limit_shape_1.limitShapeInBounds)(this._label, {
50
57
  x1: x,
@@ -56,11 +63,17 @@ class MarkArea extends base_1.Marker {
56
63
  }
57
64
  }
58
65
  initMarker(container) {
59
- const {points: points, label: label, areaStyle: areaStyle} = this.attribute, area = vrender_core_1.graphicCreator.polygon(Object.assign({
66
+ const {points: points, label: label, areaStyle: areaStyle, state: state} = this.attribute, area = vrender_core_1.graphicCreator.polygon(Object.assign({
60
67
  points: points
61
68
  }, areaStyle));
62
- area.name = "mark-area-area", this._area = area, container.add(area);
63
- const markLabel = new tag_1.Tag(Object.assign({}, label));
69
+ area.states = (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.area),
70
+ area.name = "mark-area-polygon", this._area = area, container.add(area);
71
+ const markLabel = new tag_1.Tag(Object.assign(Object.assign({}, label), {
72
+ state: {
73
+ panel: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.labelBackground),
74
+ text: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.label)
75
+ }
76
+ }));
64
77
  markLabel.name = "mark-area-label", this._label = markLabel, container.add(markLabel),
65
78
  this.setLabelPos();
66
79
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/marker/area.ts"],"names":[],"mappings":"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","file":"area.js","sourcesContent":["import type { IGroup, INode, IPolygon } from '@visactor/vrender-core';\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { isValidNumber, merge } from '@visactor/vutils';\nimport type { TagAttributes } from '../tag';\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_AREA_TEXT_STYLE_MAP, DEFAULT_MARK_AREA_THEME } from './config';\nimport type { MarkAreaAttrs } from './type';\nimport { limitShapeInBounds } from '../util/limit-shape';\nimport type { ComponentOptions } from '../interface';\nimport { loadMarkAreaComponent } from './register';\nimport type { Point } from '../core/type';\n\nloadMarkAreaComponent();\nexport class MarkArea extends Marker<MarkAreaAttrs> {\n name = 'markArea';\n static defaultAttributes = DEFAULT_MARK_AREA_THEME;\n private _area!: IPolygon;\n getArea() {\n return this._area;\n }\n\n getLabel() {\n return this._label;\n }\n\n constructor(attributes: MarkAreaAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkArea.defaultAttributes, attributes));\n }\n\n private _getPositionByDirection(area: IPolygon, direction: string) {\n const { x1, x2, y1, y2 } = this._area.AABBBounds;\n\n if (direction.includes('left') || direction.includes('Left')) {\n return {\n x: x1,\n y: (y1 + y2) / 2\n };\n }\n if (direction.includes('right') || direction.includes('Right')) {\n return {\n x: x2,\n y: (y1 + y2) / 2\n };\n }\n if (direction.includes('top') || direction.includes('Top')) {\n return {\n x: (x1 + x2) / 2,\n y: y1\n };\n }\n if (direction.includes('bottom') || direction.includes('Bottom')) {\n return {\n x: (x1 + x2) / 2,\n y: y2\n };\n }\n\n return {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n };\n }\n\n protected setLabelPos() {\n if (this._label && this._area) {\n const { label = {} } = this.attribute as MarkAreaAttrs;\n const labelPosition = label.position ?? 'middle';\n const labelPoint = this._getPositionByDirection(this._area, labelPosition);\n this._label.setAttributes({\n ...labelPoint,\n textStyle: {\n ...DEFAULT_MARK_AREA_TEXT_STYLE_MAP[labelPosition],\n ...label.textStyle\n }\n });\n\n if (this.attribute.limitRect && label.confine) {\n const { x, y, width, height } = this.attribute.limitRect;\n limitShapeInBounds(this._label, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n }\n }\n }\n\n protected initMarker(container: IGroup) {\n const { points, label, areaStyle } = this.attribute as MarkAreaAttrs;\n const area = graphicCreator.polygon({\n points: points,\n ...areaStyle\n });\n area.name = 'mark-area-area';\n this._area = area;\n container.add(area);\n\n const markLabel = new Tag({\n ...(label as TagAttributes)\n });\n markLabel.name = 'mark-area-label';\n this._label = markLabel;\n container.add(markLabel as unknown as INode);\n this.setLabelPos();\n }\n\n protected updateMarker() {\n const { points, label, areaStyle } = this.attribute as MarkAreaAttrs;\n if (this._area) {\n this._area.setAttributes({\n points: points,\n ...areaStyle\n });\n }\n if (this._area) {\n this._label.setAttributes({\n dx: 0,\n dy: 0, // 需要进行复位\n ...(label as TagAttributes)\n });\n }\n this.setLabelPos();\n }\n\n protected isValidPoints() {\n const { points } = this.attribute as MarkAreaAttrs;\n if (!points || points.length < 3) {\n return false;\n }\n let validFlag = true;\n points.forEach((point: Point) => {\n if (!isValidNumber((point as Point).x) || !isValidNumber((point as Point).y)) {\n validFlag = false;\n return;\n }\n });\n return validFlag;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/marker/area.ts"],"names":[],"mappings":"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","file":"area.js","sourcesContent":["import type { IGroup, INode, IPolygon } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { isValidNumber, merge } from '@visactor/vutils';\nimport type { TagAttributes } from '../tag';\n// eslint-disable-next-line no-duplicate-imports\nimport { Tag } from '../tag';\nimport { Marker } from './base';\nimport { DEFAULT_MARK_AREA_THEME } from './config';\nimport type { CommonMarkAreaAnimationType, IMarkAreaLabelPosition, MarkAreaAttrs, MarkerAnimationState } from './type';\nimport { limitShapeInBounds } from '../util/limit-shape';\nimport type { ComponentOptions } from '../interface';\nimport { loadMarkAreaComponent } from './register';\nimport type { Point } from '../core/type';\nimport { DEFAULT_STATES } from '../constant';\nimport { DefaultExitMarkerAnimation, DefaultUpdateMarkAreaAnimation, markAreaAnimate } from './animate/animate';\n\nloadMarkAreaComponent();\n\nexport function registerMarkAreaAnimate() {\n MarkArea._animate = markAreaAnimate;\n}\n\nexport class MarkArea extends Marker<MarkAreaAttrs, CommonMarkAreaAnimationType> {\n name = 'markArea';\n static defaultAttributes = DEFAULT_MARK_AREA_THEME;\n\n /** animate */\n defaultUpdateAnimation = DefaultUpdateMarkAreaAnimation;\n defaultExitAnimation = DefaultExitMarkerAnimation;\n protected markerAnimate(state: MarkerAnimationState) {\n if (MarkArea._animate && this._animationConfig) {\n MarkArea._animate(this._area, this._label, this._animationConfig, state);\n }\n }\n\n private _area!: IPolygon;\n getArea() {\n return this._area;\n }\n\n getLabel() {\n return this._label;\n }\n\n constructor(attributes: MarkAreaAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, MarkArea.defaultAttributes, attributes));\n }\n\n protected getPointAttrByPosition(position: IMarkAreaLabelPosition) {\n const { x1, x2, y1, y2 } = this._area.AABBBounds;\n // labelHeight\n const labelTextHeight = this._label.getTextShape().attribute.visible\n ? Math.abs((this._label.getTextShape().AABBBounds?.y2 ?? 0) - (this._label.getTextShape()?.AABBBounds.y1 ?? 0))\n : 0;\n const labelRectHeight = this._label.getBgRect().attribute.visible\n ? Math.abs((this._label.getBgRect().AABBBounds?.y2 ?? 0) - (this._label.getBgRect()?.AABBBounds.y1 ?? 0))\n : 0;\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 if (position.includes('left') || position.includes('Left')) {\n return {\n x: x1 + (position.includes('inside') ? 0.5 : -0.5) * labelWidth,\n y: (y1 + y2) / 2\n };\n }\n if (position.includes('right') || position.includes('Right')) {\n return {\n x: x2 + (position.includes('inside') ? -0.5 : 0.5) * labelWidth,\n y: (y1 + y2) / 2\n };\n }\n if (position.includes('top') || position.includes('Top')) {\n return {\n x: (x1 + x2) / 2,\n y: y1 + (position.includes('inside') ? 0.5 : -0.5) * labelHeight\n };\n }\n if (position.includes('bottom') || position.includes('Bottom')) {\n return {\n x: (x1 + x2) / 2,\n y: y2 + (position.includes('inside') ? -0.5 : 0.5) * labelHeight\n };\n }\n\n return {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n };\n }\n\n protected setLabelPos() {\n if (this._label && this._area) {\n const { label = {} } = this.attribute as MarkAreaAttrs;\n const labelPosition = label.position ?? 'middle';\n const labelPoint = this.getPointAttrByPosition(labelPosition as IMarkAreaLabelPosition);\n this._label.setAttributes({\n ...labelPoint\n });\n\n if (this.attribute.limitRect && label.confine) {\n const { x, y, width, height } = this.attribute.limitRect;\n limitShapeInBounds(this._label, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n }\n }\n }\n\n protected initMarker(container: IGroup) {\n const { points, label, areaStyle, state } = this.attribute as MarkAreaAttrs;\n const area = graphicCreator.polygon({\n points: points,\n ...areaStyle\n });\n area.states = merge({}, DEFAULT_STATES, state?.area);\n area.name = 'mark-area-polygon';\n this._area = area;\n container.add(area);\n\n const markLabel = new Tag({\n ...(label as TagAttributes),\n state: {\n panel: merge({}, DEFAULT_STATES, state?.labelBackground),\n text: merge({}, DEFAULT_STATES, state?.label)\n }\n });\n markLabel.name = 'mark-area-label';\n this._label = markLabel;\n container.add(markLabel as unknown as INode);\n this.setLabelPos();\n }\n\n protected updateMarker() {\n const { points, label, areaStyle } = this.attribute as MarkAreaAttrs;\n if (this._area) {\n this._area.setAttributes({\n points: points,\n ...areaStyle\n });\n }\n if (this._area) {\n this._label.setAttributes({\n dx: 0,\n dy: 0, // 需要进行复位\n ...(label as TagAttributes)\n });\n }\n this.setLabelPos();\n }\n\n protected isValidPoints() {\n const { points } = this.attribute as MarkAreaAttrs;\n if (!points || points.length < 3) {\n return false;\n }\n let validFlag = true;\n points.forEach((point: Point) => {\n if (!isValidNumber((point as Point).x) || !isValidNumber((point as Point).y)) {\n validFlag = false;\n return;\n }\n });\n return validFlag;\n }\n}\n"]}
@@ -1,18 +1,36 @@
1
- import type { IGroup } from '@visactor/vrender-core';
1
+ import type { IGroup, IImage, IRichText, ISymbol } from '@visactor/vrender-core';
2
2
  import { AbstractComponent } from '../core/base';
3
3
  import type { Tag } from '../tag';
4
- import type { MarkerAttrs } from './type';
5
- export declare abstract class Marker<T extends MarkerAttrs> extends AbstractComponent<Required<T>> {
4
+ import type { MarkerAnimationState, MarkerAttrs, MarkerExitAnimation, MarkerUpdateAnimation } from './type';
5
+ export declare abstract class Marker<T extends MarkerAttrs<AnimationAttr>, AnimationAttr> extends AbstractComponent<Required<T>> {
6
6
  name: string;
7
7
  private _containerClip;
8
8
  private _container;
9
9
  protected _label: Tag;
10
+ static _animate?: (marker: any, label: Tag | IRichText | ISymbol | IImage, animationConfig: any, state: MarkerAnimationState) => void;
11
+ defaultUpdateAnimation: MarkerUpdateAnimation<AnimationAttr>;
12
+ defaultExitAnimation: MarkerExitAnimation;
13
+ protected _animationConfig?: {
14
+ enter: MarkerUpdateAnimation<AnimationAttr>;
15
+ exit: MarkerExitAnimation;
16
+ update: MarkerUpdateAnimation<AnimationAttr>;
17
+ };
18
+ private _lastHover;
19
+ private _lastSelect;
10
20
  protected abstract setLabelPos(): any;
11
21
  protected abstract initMarker(container: IGroup): any;
12
22
  protected abstract updateMarker(): any;
13
23
  protected abstract isValidPoints(): any;
24
+ protected abstract markerAnimate(state: MarkerAnimationState): void;
25
+ private transAnimationConfig;
14
26
  setAttribute(key: string, value: any, forceUpdateTag?: boolean | undefined): void;
27
+ private _bindEvent;
28
+ private _releaseEvent;
29
+ private _onHover;
30
+ private _onUnHover;
31
+ private _onClick;
15
32
  private _initContainer;
16
33
  private _updateContainer;
17
34
  protected render(): void;
35
+ release(): void;
18
36
  }
@@ -4,15 +4,46 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.Marker = void 0;
6
6
 
7
- const vrender_core_1 = require("@visactor/vrender-core"), base_1 = require("../core/base");
7
+ const vrender_core_1 = require("@visactor/vrender-core"), base_1 = require("../core/base"), interaction_1 = require("../util/interaction"), vutils_1 = require("@visactor/vutils");
8
8
 
9
9
  class Marker extends base_1.AbstractComponent {
10
10
  constructor() {
11
- super(...arguments), this.name = "marker";
11
+ super(...arguments), this.name = "marker", this._onHover = e => {
12
+ this._lastHover = (0, interaction_1.dispatchHoverState)(e, this._container, this._lastHover);
13
+ }, this._onUnHover = e => {
14
+ this._lastHover = (0, interaction_1.dispatchUnHoverState)(e, this._container, this._lastHover);
15
+ }, this._onClick = e => {
16
+ this._lastSelect = (0, interaction_1.dispatchClickState)(e, this._container, this._lastSelect);
17
+ };
18
+ }
19
+ transAnimationConfig() {
20
+ var _a, _b, _c;
21
+ if (!1 !== this.attribute.animation) {
22
+ const animation = (0, vutils_1.isObject)(this.attribute.animation) ? this.attribute.animation : {};
23
+ this._animationConfig = {
24
+ enter: (0, vutils_1.merge)({}, this.defaultUpdateAnimation, animation, null !== (_a = this.attribute.animationEnter) && void 0 !== _a ? _a : {}),
25
+ exit: (0, vutils_1.merge)({}, this.defaultExitAnimation, animation, null !== (_b = this.attribute.animationExit) && void 0 !== _b ? _b : {}),
26
+ update: (0, vutils_1.merge)({}, this.defaultUpdateAnimation, animation, null !== (_c = this.attribute.animationUpdate) && void 0 !== _c ? _c : {})
27
+ };
28
+ }
12
29
  }
13
30
  setAttribute(key, value, forceUpdateTag) {
14
31
  super.setAttribute(key, value, forceUpdateTag), "visible" === key && this.render();
15
32
  }
33
+ _bindEvent() {
34
+ var _a, _b, _c;
35
+ if (!this.attribute.interactive) return;
36
+ const {hover: hover, select: select} = this.attribute;
37
+ hover && (null === (_a = this._container) || void 0 === _a || _a.addEventListener("pointermove", this._onHover),
38
+ null === (_b = this._container) || void 0 === _b || _b.addEventListener("pointerout", this._onUnHover)),
39
+ select && (null === (_c = this._container) || void 0 === _c || _c.addEventListener("pointerdown", this._onClick));
40
+ }
41
+ _releaseEvent() {
42
+ var _a, _b, _c;
43
+ null === (_a = this._container) || void 0 === _a || _a.removeEventListener("pointermove", this._onHover),
44
+ null === (_b = this._container) || void 0 === _b || _b.removeEventListener("pointerout", this._onUnHover),
45
+ null === (_c = this._container) || void 0 === _c || _c.removeEventListener("pointerdown", this._onClick);
46
+ }
16
47
  _initContainer() {
17
48
  var _a, _b;
18
49
  const {limitRect: limitRect = {}, clipInRange: clipInRange} = this.attribute;
@@ -45,12 +76,16 @@ class Marker extends base_1.AbstractComponent {
45
76
  }
46
77
  render() {
47
78
  var _a;
48
- this.setAttribute("pickable", !1);
79
+ this.transAnimationConfig(), this.setAttribute("pickable", !1);
49
80
  const markerVisible = null === (_a = this.attribute.visible) || void 0 === _a || _a;
50
81
  !1 === this.attribute.interactive && this.setAttribute("childrenPickable", !1),
51
82
  markerVisible && this.isValidPoints() ? this._container ? (this._updateContainer(),
52
- this.updateMarker()) : (this._initContainer(), this.initMarker(this._container)) : (this._container = null,
53
- this.removeAllChild(!0));
83
+ this.updateMarker(), this.markerAnimate("update")) : (this._initContainer(), this.initMarker(this._container),
84
+ this.markerAnimate("enter")) : (this.markerAnimate("exit"), this._container = null,
85
+ this.removeAllChild(!0)), this._releaseEvent(), this._bindEvent();
86
+ }
87
+ release() {
88
+ this.markerAnimate("exit"), super.release(), this._releaseEvent(), this._container = null;
54
89
  }
55
90
  }
56
91
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/marker/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["import type { IGroup } from '@visactor/vrender-core';\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { Tag } from '../tag';\nimport type { MarkerAttrs } from './type';\n\nexport abstract class Marker<T extends MarkerAttrs> extends AbstractComponent<Required<T>> {\n name = 'marker';\n private _containerClip!: IGroup;\n private _container!: IGroup;\n\n protected _label!: Tag;\n\n protected abstract setLabelPos(): any;\n protected abstract initMarker(container: IGroup): any;\n protected abstract updateMarker(): any;\n protected abstract isValidPoints(): any;\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean | undefined): void {\n super.setAttribute(key, value, forceUpdateTag);\n if (key === 'visible') {\n this.render();\n }\n }\n\n private _initContainer() {\n const { limitRect = {} as T['limitRect'], clipInRange } = this.attribute;\n let group;\n if (clipInRange) {\n // 如果用户配置了剪切\n const groupClip = graphicCreator.group({\n ...limitRect,\n clip: true,\n pickable: false\n });\n group = graphicCreator.group({\n x: -(limitRect.x ?? 0),\n y: -(limitRect.y ?? 0),\n pickable: false\n });\n groupClip.add(group);\n this._containerClip = groupClip;\n this.add(groupClip);\n } else {\n group = graphicCreator.group({\n x: 0,\n y: 0,\n pickable: false\n });\n this.add(group);\n }\n group.name = 'marker-container';\n this._container = group;\n }\n\n private _updateContainer() {\n const { limitRect = {} as T['limitRect'], clipInRange } = this.attribute;\n if (this._containerClip) {\n this._containerClip.setAttributes({\n ...limitRect\n });\n }\n\n this._container.setAttributes({\n x: clipInRange ? -(limitRect.x ?? 0) : 0,\n y: clipInRange ? -(limitRect.y ?? 0) : 0\n });\n }\n\n protected render() {\n // 因为标注本身不规则,所以默认将组件的 group 设置为不可拾取\n this.setAttribute('pickable', false);\n\n const markerVisible = this.attribute.visible ?? true;\n if (this.attribute.interactive === false) {\n this.setAttribute('childrenPickable', false);\n }\n\n if (markerVisible && this.isValidPoints()) {\n if (!this._container) {\n this._initContainer();\n this.initMarker(this._container);\n } else {\n this._updateContainer();\n this.updateMarker();\n }\n } else {\n this._container = null;\n this.removeAllChild(true);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/marker/base.ts"],"names":[],"mappings":";;;AAEA,yDAAwD;AACxD,uCAAiD;AAGjD,qDAAmG;AACnG,6CAAmD;AAEnD,MAAsB,MAA4D,SAAQ,wBAEzF;IAFD;;QAGE,SAAI,GAAG,QAAQ,CAAC;QAkFR,aAAQ,GAAG,CAAC,CAAwB,EAAE,EAAE;YAC9C,IAAI,CAAC,UAAU,GAAG,IAAA,gCAAkB,EAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5E,CAAC,CAAC;QAEM,eAAU,GAAG,CAAC,CAAwB,EAAE,EAAE;YAChD,IAAI,CAAC,UAAU,GAAG,IAAA,kCAAoB,EAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9E,CAAC,CAAC;QAEM,aAAQ,GAAG,CAAC,CAAwB,EAAE,EAAE;YAC9C,IAAI,CAAC,WAAW,GAAG,IAAA,gCAAkB,EAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9E,CAAC,CAAC;IAoFJ,CAAC;IA/IS,oBAAoB;;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,KAAK,EAAE;YACtC,MAAM,SAAS,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,IAAI,CAAC,gBAAgB,GAAG;gBACtB,KAAK,EAAE,IAAA,cAAK,EACV,EAAE,EACF,IAAI,CAAC,sBAAsB,EAC3B,SAAS,EACT,MAAA,IAAI,CAAC,SAAS,CAAC,cAAc,mCAAI,EAAE,CACI;gBACzC,IAAI,EAAE,IAAA,cAAK,EAAC,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,CAAC,aAAa,mCAAI,EAAE,CAAC;gBACzF,MAAM,EAAE,IAAA,cAAK,EACX,EAAE,EACF,IAAI,CAAC,sBAAsB,EAC3B,SAAS,EACT,MAAA,IAAI,CAAC,SAAS,CAAC,eAAe,mCAAI,EAAE,CACG;aAC1C,CAAC;SACH;IACH,CAAC;IACD,YAAY,CAAC,GAAW,EAAE,KAAU,EAAE,cAAoC;QACxE,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;IAEO,UAAU;;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC/B,OAAO;SACR;QACD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAEzC,IAAI,KAAK,EAAE;YACT,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,QAA8C,CAAC,CAAC;YACtG,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAgD,CAAC,CAAC;SACxG;QAED,IAAI,MAAM,EAAE;YACV,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,QAA8C,CAAC,CAAC;SACvG;IACH,CAAC;IAEO,aAAa;;QACnB,MAAA,IAAI,CAAC,UAAU,0CAAE,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,QAA8C,CAAC,CAAC;QACzG,MAAA,IAAI,CAAC,UAAU,0CAAE,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAgD,CAAC,CAAC;QAC1G,MAAA,IAAI,CAAC,UAAU,0CAAE,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,QAA8C,CAAC,CAAC;IAC3G,CAAC;IAcO,cAAc;;QACpB,MAAM,EAAE,SAAS,GAAG,EAAoB,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACzE,IAAI,KAAK,CAAC;QACV,IAAI,WAAW,EAAE;YAEf,MAAM,SAAS,GAAG,6BAAc,CAAC,KAAK,iCACjC,SAAS,KACZ,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,KAAK,IACf,CAAC;YACH,KAAK,GAAG,6BAAc,CAAC,KAAK,CAAC;gBAC3B,CAAC,EAAE,CAAC,CAAC,MAAA,SAAS,CAAC,CAAC,mCAAI,CAAC,CAAC;gBACtB,CAAC,EAAE,CAAC,CAAC,MAAA,SAAS,CAAC,CAAC,mCAAI,CAAC,CAAC;gBACtB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;YACH,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACrB;aAAM;YACL,KAAK,GAAG,6BAAc,CAAC,KAAK,CAAC;gBAC3B,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACjB;QACD,KAAK,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEO,gBAAgB;;QACtB,MAAM,EAAE,SAAS,GAAG,EAAoB,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACzE,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,aAAa,mBAC5B,SAAS,EACZ,CAAC;SACJ;QAED,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAC5B,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAA,SAAS,CAAC,CAAC,mCAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAA,SAAS,CAAC,CAAC,mCAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACzC,CAAC,CAAC;IACL,CAAC;IAES,MAAM;;QACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAG5B,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAErC,MAAM,aAAa,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,OAAO,mCAAI,IAAI,CAAC;QACrD,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,KAAK,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;SAC9C;QAED,IAAI,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACzC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;aAC9B;SACF;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SAC3B;QAGD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3B,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;CACF;AAnLD,wBAmLC","file":"base.js","sourcesContent":["import type { FederatedPointerEvent, IGraphic, IGroup, IImage, IRichText, ISymbol } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { Tag } from '../tag';\nimport type { MarkerAnimationState, MarkerAttrs, MarkerExitAnimation, MarkerUpdateAnimation } from './type';\nimport { dispatchClickState, dispatchHoverState, dispatchUnHoverState } from '../util/interaction';\nimport { isObject, merge } from '@visactor/vutils';\n\nexport abstract class Marker<T extends MarkerAttrs<AnimationAttr>, AnimationAttr> extends AbstractComponent<\n Required<T>\n> {\n name = 'marker';\n\n private _containerClip!: IGroup;\n private _container!: IGroup;\n\n protected _label!: Tag;\n\n /** animate */\n static _animate?: (\n marker: any,\n label: Tag | IRichText | ISymbol | IImage,\n animationConfig: any,\n state: MarkerAnimationState\n ) => void;\n\n defaultUpdateAnimation!: MarkerUpdateAnimation<AnimationAttr>;\n defaultExitAnimation!: MarkerExitAnimation;\n\n protected _animationConfig?: {\n enter: MarkerUpdateAnimation<AnimationAttr>;\n exit: MarkerExitAnimation;\n update: MarkerUpdateAnimation<AnimationAttr>;\n };\n\n private _lastHover: IGraphic;\n private _lastSelect: IGraphic;\n\n protected abstract setLabelPos(): any;\n protected abstract initMarker(container: IGroup): any;\n protected abstract updateMarker(): any;\n protected abstract isValidPoints(): any;\n protected abstract markerAnimate(state: MarkerAnimationState): void;\n\n private transAnimationConfig(): void {\n if (this.attribute.animation !== false) {\n const animation = isObject(this.attribute.animation) ? this.attribute.animation : {};\n this._animationConfig = {\n enter: merge(\n {},\n this.defaultUpdateAnimation,\n animation,\n this.attribute.animationEnter ?? {}\n ) as MarkerUpdateAnimation<AnimationAttr>,\n exit: merge({}, this.defaultExitAnimation, animation, this.attribute.animationExit ?? {}),\n update: merge(\n {},\n this.defaultUpdateAnimation,\n animation,\n this.attribute.animationUpdate ?? {}\n ) as MarkerUpdateAnimation<AnimationAttr>\n };\n }\n }\n setAttribute(key: string, value: any, forceUpdateTag?: boolean | undefined): void {\n super.setAttribute(key, value, forceUpdateTag);\n if (key === 'visible') {\n this.render();\n }\n }\n\n private _bindEvent() {\n if (!this.attribute.interactive) {\n return;\n }\n const { hover, select } = this.attribute;\n\n if (hover) {\n this._container?.addEventListener('pointermove', this._onHover as EventListenerOrEventListenerObject);\n this._container?.addEventListener('pointerout', this._onUnHover as EventListenerOrEventListenerObject);\n }\n\n if (select) {\n this._container?.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _releaseEvent() {\n this._container?.removeEventListener('pointermove', this._onHover as EventListenerOrEventListenerObject);\n this._container?.removeEventListener('pointerout', this._onUnHover as EventListenerOrEventListenerObject);\n this._container?.removeEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n this._lastHover = dispatchHoverState(e, this._container, this._lastHover);\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n this._lastHover = dispatchUnHoverState(e, this._container, this._lastHover);\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n this._lastSelect = dispatchClickState(e, this._container, this._lastSelect);\n };\n\n private _initContainer() {\n const { limitRect = {} as T['limitRect'], clipInRange } = this.attribute;\n let group;\n if (clipInRange) {\n // 如果用户配置了剪切\n const groupClip = graphicCreator.group({\n ...limitRect,\n clip: true,\n pickable: false\n });\n group = graphicCreator.group({\n x: -(limitRect.x ?? 0),\n y: -(limitRect.y ?? 0),\n pickable: false\n });\n groupClip.add(group);\n this._containerClip = groupClip;\n this.add(groupClip);\n } else {\n group = graphicCreator.group({\n x: 0,\n y: 0,\n pickable: false\n });\n this.add(group);\n }\n group.name = 'marker-container';\n this._container = group;\n }\n\n private _updateContainer() {\n const { limitRect = {} as T['limitRect'], clipInRange } = this.attribute;\n if (this._containerClip) {\n this._containerClip.setAttributes({\n ...limitRect\n });\n }\n\n this._container.setAttributes({\n x: clipInRange ? -(limitRect.x ?? 0) : 0,\n y: clipInRange ? -(limitRect.y ?? 0) : 0\n });\n }\n\n protected render() {\n this.transAnimationConfig();\n\n // 因为标注本身不规则,所以默认将组件的 group 设置为不可拾取\n this.setAttribute('pickable', false);\n\n const markerVisible = this.attribute.visible ?? true;\n if (this.attribute.interactive === false) {\n this.setAttribute('childrenPickable', false);\n }\n\n if (markerVisible && this.isValidPoints()) {\n if (!this._container) {\n this._initContainer();\n this.initMarker(this._container);\n this.markerAnimate('enter');\n } else {\n this._updateContainer();\n this.updateMarker();\n this.markerAnimate('update');\n }\n } else {\n this.markerAnimate('exit');\n this._container = null;\n this.removeAllChild(true);\n }\n\n // 先把之前的event都release掉,否则会重复触发\n this._releaseEvent();\n this._bindEvent();\n }\n\n release(): void {\n this.markerAnimate('exit');\n super.release();\n this._releaseEvent();\n this._container = null;\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import type { IGroup } from '@visactor/vrender-core';
2
+ import type { ArcSegment, Segment } from '../segment';
3
+ import { Tag } from '../tag';
4
+ import type { MarkCommonLineAnimationType, MarkCommonLineAttrs, MarkerAnimationState } from './type';
5
+ import { Marker } from './base';
6
+ export declare abstract class MarkCommonLine<LineAttr, LabelPosition> extends Marker<MarkCommonLineAttrs<LineAttr, LabelPosition, MarkCommonLineAnimationType>, MarkCommonLineAnimationType> {
7
+ name: string;
8
+ static _animate?: (line: Segment | ArcSegment, label: Tag, animationConfig: any, state: MarkerAnimationState) => void;
9
+ defaultUpdateAnimation: never;
10
+ defaultExitAnimation: import("./type").MarkerExitAnimation;
11
+ protected _line: Segment | ArcSegment;
12
+ protected abstract createSegment(): any;
13
+ protected abstract setLineAttributes(): any;
14
+ protected abstract getPointAttrByPosition(position: any): any;
15
+ protected abstract getRotateByAngle(angle: number): number;
16
+ protected abstract markerAnimate(state: MarkerAnimationState): void;
17
+ getLine(): Segment | ArcSegment;
18
+ getLabel(): Tag;
19
+ protected setLabelPos(): void;
20
+ protected initMarker(container: IGroup): void;
21
+ protected updateMarker(): void;
22
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.MarkCommonLine = void 0;
6
+
7
+ const vutils_1 = require("@visactor/vutils"), tag_1 = require("../tag"), limit_shape_1 = require("../util/limit-shape"), constant_1 = require("../constant"), base_1 = require("./base"), animate_1 = require("./animate/animate");
8
+
9
+ class MarkCommonLine extends base_1.Marker {
10
+ constructor() {
11
+ super(...arguments), this.name = "markCommonLine", this.defaultUpdateAnimation = animate_1.DefaultUpdateMarkLineAnimation,
12
+ this.defaultExitAnimation = animate_1.DefaultExitMarkerAnimation;
13
+ }
14
+ getLine() {
15
+ return this._line;
16
+ }
17
+ getLabel() {
18
+ return this._label;
19
+ }
20
+ setLabelPos() {
21
+ const {label: label = {}, limitRect: limitRect} = this.attribute, {position: position, confine: confine, autoRotate: autoRotate = !0} = label, labelPoint = this.getPointAttrByPosition(position);
22
+ if (this._label.setAttributes(Object.assign(Object.assign({}, labelPoint.position), {
23
+ angle: autoRotate ? this.getRotateByAngle(labelPoint.angle) : 0
24
+ })), limitRect && confine) {
25
+ const {x: x, y: y, width: width, height: height} = limitRect;
26
+ (0, limit_shape_1.limitShapeInBounds)(this._label, {
27
+ x1: x,
28
+ y1: y,
29
+ x2: x + width,
30
+ y2: y + height
31
+ });
32
+ }
33
+ }
34
+ initMarker(container) {
35
+ const {label: label, state: state} = this.attribute, line = this.createSegment();
36
+ line.name = "mark-common-line-line", this._line = line, container.add(line);
37
+ const markLabel = new tag_1.Tag(Object.assign(Object.assign({}, label), {
38
+ state: {
39
+ panel: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.labelBackground),
40
+ text: (0, vutils_1.merge)({}, constant_1.DEFAULT_STATES, null == state ? void 0 : state.label)
41
+ }
42
+ }));
43
+ markLabel.name = "mark-common-line-label", this._label = markLabel, container.add(markLabel),
44
+ this.setLabelPos();
45
+ }
46
+ updateMarker() {
47
+ const {label: label} = this.attribute;
48
+ this.setLineAttributes(), this._label && this._label.setAttributes(Object.assign({
49
+ dx: 0,
50
+ dy: 0
51
+ }, label)), this.setLabelPos();
52
+ }
53
+ }
54
+
55
+ exports.MarkCommonLine = MarkCommonLine;
56
+ //# sourceMappingURL=common-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/marker/common-line.ts"],"names":[],"mappings":";;;AACA,6CAAyC;AAIzC,gCAA6B;AAE7B,qDAAyD;AACzD,0CAA6C;AAC7C,iCAAgC;AAChC,+CAA+F;AAE/F,MAAsB,cAAwC,SAAQ,aAGrE;IAHD;;QAIE,SAAI,GAAG,gBAAgB,CAAC;QAIxB,2BAAsB,GAAG,wCAA8B,CAAC;QACxD,yBAAoB,GAAG,oCAA0B,CAAC;IA0EpD,CAAC;IAjEC,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,WAAW;QACnB,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACjD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,aAAa,iCACpB,UAAU,CAAC,QAAQ,KACtB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAC/D,CAAC;QACH,IAAI,SAAS,IAAI,OAAO,EAAE;YACxB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;YAC1C,IAAA,gCAAkB,EAAC,IAAI,CAAC,MAAM,EAAE;gBAC9B,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,CAAC,GAAG,KAAK;gBACb,EAAE,EAAE,CAAC,GAAG,MAAM;aACf,CAAC,CAAC;SACJ;IACH,CAAC;IAES,UAAU,CAAC,SAAiB;QACpC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAI7B,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,SAAS,CAAC,GAAG,CAAC,IAAwB,CAAC,CAAC;QAExC,MAAM,SAAS,GAAG,IAAI,SAAG,iCACnB,KAAuB,KAC3B,KAAK,EAAE;gBACL,KAAK,EAAE,IAAA,cAAK,EAAC,EAAE,EAAE,yBAAc,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,eAAe,CAAC;gBACxD,IAAI,EAAE,IAAA,cAAK,EAAC,EAAE,EAAE,yBAAc,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;aAC9C,IACD,CAAC;QACH,SAAS,CAAC,IAAI,GAAG,wBAAwB,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,SAAS,CAAC,GAAG,CAAC,SAA6B,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAES,YAAY;QACpB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAsF,CAAC;QAE9G,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,aAAa,iBACvB,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,CAAC,IACD,KAAuB,EAC3B,CAAC;SACJ;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF;AAnFD,wCAmFC","file":"common-line.js","sourcesContent":["import type { IGroup, INode } from '@visactor/vrender-core';\nimport { merge } from '@visactor/vutils';\nimport type { ArcSegment, Segment } from '../segment';\nimport type { TagAttributes } from '../tag';\n// eslint-disable-next-line no-duplicate-imports\nimport { Tag } from '../tag';\nimport type { MarkCommonLineAnimationType, MarkCommonLineAttrs, MarkerAnimationState } from './type';\nimport { limitShapeInBounds } from '../util/limit-shape';\nimport { DEFAULT_STATES } from '../constant';\nimport { Marker } from './base';\nimport { DefaultExitMarkerAnimation, DefaultUpdateMarkLineAnimation } from './animate/animate';\n\nexport abstract class MarkCommonLine<LineAttr, LabelPosition> extends Marker<\n MarkCommonLineAttrs<LineAttr, LabelPosition, MarkCommonLineAnimationType>,\n MarkCommonLineAnimationType\n> {\n name = 'markCommonLine';\n\n /** animate */\n static _animate?: (line: Segment | ArcSegment, label: Tag, animationConfig: any, state: MarkerAnimationState) => void;\n defaultUpdateAnimation = DefaultUpdateMarkLineAnimation;\n defaultExitAnimation = DefaultExitMarkerAnimation;\n\n protected _line!: Segment | ArcSegment;\n protected abstract createSegment(): any;\n protected abstract setLineAttributes(): any;\n protected abstract getPointAttrByPosition(position: any): any;\n protected abstract getRotateByAngle(angle: number): number;\n protected abstract markerAnimate(state: MarkerAnimationState): void;\n\n getLine() {\n return this._line;\n }\n getLabel() {\n return this._label;\n }\n\n protected setLabelPos() {\n const { label = {}, limitRect } = this.attribute;\n const { position, confine, autoRotate = true } = label;\n const labelPoint = this.getPointAttrByPosition(position);\n this._label.setAttributes({\n ...labelPoint.position,\n angle: autoRotate ? this.getRotateByAngle(labelPoint.angle) : 0\n });\n if (limitRect && confine) {\n const { x, y, width, height } = limitRect;\n limitShapeInBounds(this._label, {\n x1: x,\n y1: y,\n x2: x + width,\n y2: y + height\n });\n }\n }\n\n protected initMarker(container: IGroup) {\n const { label, state } = this.attribute as MarkCommonLineAttrs<\n LineAttr,\n LabelPosition,\n MarkCommonLineAnimationType\n >;\n const line = this.createSegment();\n line.name = 'mark-common-line-line';\n this._line = line;\n container.add(line as unknown as INode);\n\n const markLabel = new Tag({\n ...(label as TagAttributes),\n state: {\n panel: merge({}, DEFAULT_STATES, state?.labelBackground),\n text: merge({}, DEFAULT_STATES, state?.label)\n }\n });\n markLabel.name = 'mark-common-line-label';\n this._label = markLabel;\n container.add(markLabel as unknown as INode);\n this.setLabelPos();\n }\n\n protected updateMarker() {\n const { label } = this.attribute as MarkCommonLineAttrs<LineAttr, LabelPosition, MarkCommonLineAnimationType>;\n\n this.setLineAttributes();\n\n if (this._label) {\n this._label.setAttributes({\n dx: 0,\n dy: 0, // 需要进行复位\n ...(label as TagAttributes)\n });\n }\n\n this.setLabelPos();\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  import type { TextAlignType, TextBaselineType } from '@visactor/vrender-core';
2
- import { IMarkAreaLabelPosition, IMarkLineLabelPosition } from './type';
2
+ import { IMarkAreaLabelPosition, IMarkLineLabelPosition, IMarkCommonArcLabelPosition } from './type';
3
3
  export declare const DEFAULT_MARK_LINE_THEME: {
4
+ interactive: boolean;
4
5
  startSymbol: {
5
6
  visible: boolean;
6
7
  symbolType: string;
@@ -27,6 +28,8 @@ export declare const DEFAULT_MARK_LINE_THEME: {
27
28
  fontSize: number;
28
29
  fontWeight: string;
29
30
  fontStyle: string;
31
+ textAlign: string;
32
+ textBaseline: string;
30
33
  };
31
34
  padding: number[];
32
35
  panel: {
@@ -42,13 +45,53 @@ export declare const DEFAULT_MARK_LINE_THEME: {
42
45
  lineDash: number[];
43
46
  };
44
47
  };
45
- export declare const DEFAULT_MARK_LINE_TEXT_STYLE_MAP: {
46
- [K: string]: {
47
- textAlign: TextAlignType;
48
- textBaseline: TextBaselineType;
48
+ export declare const DEFAULT_MARK_ARC_LINE_THEME: {
49
+ interactive: boolean;
50
+ startSymbol: {
51
+ visible: boolean;
52
+ symbolType: string;
53
+ size: number;
54
+ fill: string;
55
+ lineWidth: number;
56
+ };
57
+ endSymbol: {
58
+ visible: boolean;
59
+ symbolType: string;
60
+ size: number;
61
+ fill: string;
62
+ lineWidth: number;
63
+ };
64
+ label: {
65
+ position: IMarkCommonArcLabelPosition;
66
+ refX: number;
67
+ refY: number;
68
+ refAngle: number;
69
+ textStyle: {
70
+ fill: string;
71
+ stroke: string;
72
+ lineWidth: number;
73
+ fontSize: number;
74
+ fontWeight: string;
75
+ fontStyle: string;
76
+ textAlign: string;
77
+ textBaseline: string;
78
+ };
79
+ padding: number[];
80
+ panel: {
81
+ visible: boolean;
82
+ cornerRadius: number;
83
+ fill: string;
84
+ fillOpacity: number;
85
+ };
86
+ };
87
+ lineStyle: {
88
+ stroke: string;
89
+ lineWidth: number;
90
+ lineDash: number[];
49
91
  };
50
92
  };
51
93
  export declare const DEFAULT_MARK_AREA_THEME: {
94
+ interactive: boolean;
52
95
  label: {
53
96
  position: IMarkAreaLabelPosition;
54
97
  textStyle: {
@@ -58,6 +101,35 @@ export declare const DEFAULT_MARK_AREA_THEME: {
58
101
  fontSize: number;
59
102
  fontWeight: string;
60
103
  fontStyle: string;
104
+ textAlign: string;
105
+ textBaseline: string;
106
+ };
107
+ padding: number[];
108
+ panel: {
109
+ visible: boolean;
110
+ cornerRadius: number;
111
+ fill: string;
112
+ fillOpacity: number;
113
+ };
114
+ };
115
+ areaStyle: {
116
+ fill: string;
117
+ visible: boolean;
118
+ };
119
+ };
120
+ export declare const DEFAULT_MARK_ARC_AREA_THEME: {
121
+ interactive: boolean;
122
+ label: {
123
+ position: IMarkCommonArcLabelPosition;
124
+ textStyle: {
125
+ fill: string;
126
+ stroke: string;
127
+ lineWidth: number;
128
+ fontSize: number;
129
+ fontWeight: string;
130
+ fontStyle: string;
131
+ textAlign: string;
132
+ textBaseline: string;
61
133
  };
62
134
  padding: number[];
63
135
  panel: {
@@ -72,13 +144,14 @@ export declare const DEFAULT_MARK_AREA_THEME: {
72
144
  visible: boolean;
73
145
  };
74
146
  };
75
- export declare const DEFAULT_MARK_AREA_TEXT_STYLE_MAP: {
147
+ export declare const DEFAULT_CARTESIAN_MARK_AREA_TEXT_STYLE_MAP: {
76
148
  [K: string]: {
77
149
  textAlign: TextAlignType;
78
150
  textBaseline: TextBaselineType;
79
151
  };
80
152
  };
81
153
  export declare const DEFAULT_MARK_POINT_THEME: {
154
+ interactive: boolean;
82
155
  itemLine: {
83
156
  visible: boolean;
84
157
  decorativeLine: {