@visactor/vrender-components 0.18.11-alpha.6 → 0.18.11-alpha.7

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 (283) hide show
  1. package/cjs/axis/base.js +9 -21
  2. package/cjs/axis/base.js.map +1 -1
  3. package/cjs/axis/circle.js +1 -1
  4. package/cjs/axis/circle.js.map +1 -1
  5. package/cjs/axis/grid/base.js +5 -1
  6. package/cjs/axis/grid/base.js.map +1 -1
  7. package/cjs/axis/index.d.ts +0 -1
  8. package/cjs/axis/index.js +1 -1
  9. package/cjs/axis/index.js.map +1 -1
  10. package/cjs/axis/line.js +5 -5
  11. package/cjs/axis/line.js.map +1 -1
  12. package/cjs/axis/mixin/circle.js +4 -2
  13. package/cjs/axis/mixin/circle.js.map +1 -1
  14. package/cjs/axis/overlap/auto-limit.js +13 -8
  15. package/cjs/axis/overlap/auto-limit.js.map +1 -1
  16. package/cjs/axis/util.d.ts +2 -5
  17. package/cjs/axis/util.js +5 -18
  18. package/cjs/axis/util.js.map +1 -1
  19. package/cjs/brush/brush.js +9 -11
  20. package/cjs/brush/brush.js.map +1 -1
  21. package/cjs/brush/type.js +1 -2
  22. package/cjs/checkbox/checkbox.d.ts +1 -1
  23. package/cjs/checkbox/checkbox.js +10 -9
  24. package/cjs/checkbox/checkbox.js.map +1 -1
  25. package/cjs/crosshair/polygon.js +2 -1
  26. package/cjs/index.d.ts +1 -1
  27. package/cjs/index.js +1 -1
  28. package/cjs/index.js.map +1 -1
  29. package/cjs/indicator/indicator.js +3 -3
  30. package/cjs/indicator/indicator.js.map +1 -1
  31. package/cjs/indicator/type.js +1 -1
  32. package/cjs/label/arc.d.ts +2 -2
  33. package/cjs/label/base.d.ts +2 -2
  34. package/cjs/label/base.js +1 -3
  35. package/cjs/label/base.js.map +1 -1
  36. package/cjs/label/index.js +1 -2
  37. package/cjs/label/type.js +2 -1
  38. package/cjs/label/util.js +2 -2
  39. package/cjs/legend/color/color.js +5 -7
  40. package/cjs/legend/color/color.js.map +1 -1
  41. package/cjs/legend/discrete/discrete.js +2 -4
  42. package/cjs/legend/discrete/discrete.js.map +1 -1
  43. package/cjs/legend/size/size.js +4 -6
  44. package/cjs/legend/size/size.js.map +1 -1
  45. package/cjs/marker/animate/animate.d.ts +13 -0
  46. package/cjs/marker/animate/animate.js +92 -0
  47. package/cjs/marker/animate/animate.js.map +1 -0
  48. package/cjs/marker/animate/call-in.d.ts +4 -0
  49. package/cjs/marker/animate/call-in.js +27 -0
  50. package/cjs/marker/animate/call-in.js.map +1 -0
  51. package/cjs/marker/animate/clip-in.d.ts +4 -0
  52. package/cjs/marker/animate/clip-in.js +23 -0
  53. package/cjs/marker/animate/clip-in.js.map +1 -0
  54. package/cjs/marker/animate/common.d.ts +9 -0
  55. package/cjs/marker/animate/common.js +48 -0
  56. package/cjs/marker/animate/common.js.map +1 -0
  57. package/cjs/marker/animate/fade-in.d.ts +7 -0
  58. package/cjs/marker/animate/fade-in.js +30 -0
  59. package/cjs/marker/animate/fade-in.js.map +1 -0
  60. package/cjs/marker/animate/fade-out.d.ts +7 -0
  61. package/cjs/marker/animate/fade-out.js +30 -0
  62. package/cjs/marker/animate/fade-out.js.map +1 -0
  63. package/cjs/marker/animate/index.js +3 -0
  64. package/cjs/marker/animate/index.js.map +1 -0
  65. package/cjs/marker/arc-area.d.ts +55 -0
  66. package/cjs/marker/arc-area.js +131 -0
  67. package/cjs/marker/arc-area.js.map +1 -0
  68. package/cjs/marker/arc-line.d.ts +25 -0
  69. package/cjs/marker/arc-line.js +106 -0
  70. package/cjs/marker/arc-line.js.map +1 -0
  71. package/cjs/marker/area.d.ts +14 -4
  72. package/cjs/marker/area.js +34 -21
  73. package/cjs/marker/area.js.map +1 -1
  74. package/cjs/marker/base.d.ts +21 -3
  75. package/cjs/marker/base.js +40 -5
  76. package/cjs/marker/base.js.map +1 -1
  77. package/cjs/marker/common-line.d.ts +22 -0
  78. package/cjs/marker/common-line.js +56 -0
  79. package/cjs/marker/common-line.js.map +1 -0
  80. package/cjs/marker/config.d.ts +79 -6
  81. package/cjs/marker/config.js +77 -37
  82. package/cjs/marker/config.js.map +1 -1
  83. package/cjs/marker/index.d.ts +2 -0
  84. package/cjs/marker/index.js +2 -1
  85. package/cjs/marker/index.js.map +1 -1
  86. package/cjs/marker/line.d.ts +24 -12
  87. package/cjs/marker/line.js +111 -45
  88. package/cjs/marker/line.js.map +1 -1
  89. package/cjs/marker/point.d.ts +8 -3
  90. package/cjs/marker/point.js +33 -9
  91. package/cjs/marker/point.js.map +1 -1
  92. package/cjs/marker/register.d.ts +2 -0
  93. package/cjs/marker/register.js +11 -2
  94. package/cjs/marker/register.js.map +1 -1
  95. package/cjs/marker/type.d.ts +102 -12
  96. package/cjs/marker/type.js +8 -2
  97. package/cjs/marker/type.js.map +1 -1
  98. package/cjs/pager/pager.js +2 -2
  99. package/cjs/pager/pager.js.map +1 -1
  100. package/cjs/player/base-player.d.ts +0 -2
  101. package/cjs/player/base-player.js +6 -11
  102. package/cjs/player/base-player.js.map +1 -1
  103. package/cjs/player/continuous-player.d.ts +1 -1
  104. package/cjs/player/continuous-player.js +4 -6
  105. package/cjs/player/continuous-player.js.map +1 -1
  106. package/cjs/player/controller/controller.js +4 -4
  107. package/cjs/player/controller/controller.js.map +1 -1
  108. package/cjs/player/discrete-player.d.ts +1 -1
  109. package/cjs/player/discrete-player.js +4 -6
  110. package/cjs/player/discrete-player.js.map +1 -1
  111. package/cjs/segment/arc-segment.d.ts +13 -0
  112. package/cjs/segment/arc-segment.js +51 -0
  113. package/cjs/segment/arc-segment.js.map +1 -0
  114. package/cjs/segment/index.d.ts +1 -0
  115. package/cjs/segment/index.js +2 -1
  116. package/cjs/segment/index.js.map +1 -1
  117. package/cjs/segment/register.d.ts +2 -1
  118. package/cjs/segment/register.js +8 -3
  119. package/cjs/segment/register.js.map +1 -1
  120. package/cjs/segment/segment.d.ts +9 -7
  121. package/cjs/segment/segment.js +12 -8
  122. package/cjs/segment/segment.js.map +1 -1
  123. package/cjs/segment/type.d.ts +24 -4
  124. package/cjs/segment/type.js.map +1 -1
  125. package/cjs/slider/slider.d.ts +0 -2
  126. package/cjs/slider/slider.js +38 -53
  127. package/cjs/slider/slider.js.map +1 -1
  128. package/cjs/slider/type.d.ts +0 -1
  129. package/cjs/slider/type.js.map +1 -1
  130. package/cjs/tag/tag.d.ts +5 -0
  131. package/cjs/tag/tag.js +14 -5
  132. package/cjs/tag/tag.js.map +1 -1
  133. package/cjs/util/interaction.d.ts +4 -0
  134. package/cjs/util/interaction.js +37 -0
  135. package/cjs/util/interaction.js.map +1 -0
  136. package/cjs/util/text.d.ts +1 -1
  137. package/cjs/util/text.js +7 -6
  138. package/cjs/util/text.js.map +1 -1
  139. package/es/axis/base.js +13 -23
  140. package/es/axis/base.js.map +1 -1
  141. package/es/axis/circle.js +2 -2
  142. package/es/axis/circle.js.map +1 -1
  143. package/es/axis/grid/base.js +6 -2
  144. package/es/axis/grid/base.js.map +1 -1
  145. package/es/axis/index.d.ts +0 -1
  146. package/es/axis/index.js +0 -2
  147. package/es/axis/index.js.map +1 -1
  148. package/es/axis/line.js +5 -5
  149. package/es/axis/line.js.map +1 -1
  150. package/es/axis/mixin/circle.js +3 -2
  151. package/es/axis/mixin/circle.js.map +1 -1
  152. package/es/axis/overlap/auto-limit.js +13 -9
  153. package/es/axis/overlap/auto-limit.js.map +1 -1
  154. package/es/axis/util.d.ts +2 -5
  155. package/es/axis/util.js +1 -15
  156. package/es/axis/util.js.map +1 -1
  157. package/es/brush/brush.js +9 -11
  158. package/es/brush/brush.js.map +1 -1
  159. package/es/brush/type.js +1 -2
  160. package/es/checkbox/checkbox.d.ts +1 -1
  161. package/es/checkbox/checkbox.js +10 -9
  162. package/es/checkbox/checkbox.js.map +1 -1
  163. package/es/crosshair/polygon.js +2 -1
  164. package/es/index.d.ts +1 -1
  165. package/es/index.js +1 -1
  166. package/es/index.js.map +1 -1
  167. package/es/indicator/indicator.js +3 -3
  168. package/es/indicator/indicator.js.map +1 -1
  169. package/es/indicator/type.js +1 -1
  170. package/es/label/arc.d.ts +2 -2
  171. package/es/label/base.d.ts +2 -2
  172. package/es/label/base.js +1 -3
  173. package/es/label/base.js.map +1 -1
  174. package/es/label/index.js +1 -2
  175. package/es/label/type.js +2 -1
  176. package/es/label/util.js +1 -1
  177. package/es/legend/color/color.js +5 -7
  178. package/es/legend/color/color.js.map +1 -1
  179. package/es/legend/discrete/discrete.js +2 -4
  180. package/es/legend/discrete/discrete.js.map +1 -1
  181. package/es/legend/size/size.js +4 -6
  182. package/es/legend/size/size.js.map +1 -1
  183. package/es/marker/animate/animate.d.ts +13 -0
  184. package/es/marker/animate/animate.js +92 -0
  185. package/es/marker/animate/animate.js.map +1 -0
  186. package/es/marker/animate/call-in.d.ts +4 -0
  187. package/es/marker/animate/call-in.js +17 -0
  188. package/es/marker/animate/call-in.js.map +1 -0
  189. package/es/marker/animate/clip-in.d.ts +4 -0
  190. package/es/marker/animate/clip-in.js +15 -0
  191. package/es/marker/animate/clip-in.js.map +1 -0
  192. package/es/marker/animate/common.d.ts +9 -0
  193. package/es/marker/animate/common.js +39 -0
  194. package/es/marker/animate/common.js.map +1 -0
  195. package/es/marker/animate/fade-in.d.ts +7 -0
  196. package/es/marker/animate/fade-in.js +20 -0
  197. package/es/marker/animate/fade-in.js.map +1 -0
  198. package/es/marker/animate/fade-out.d.ts +7 -0
  199. package/es/marker/animate/fade-out.js +20 -0
  200. package/es/marker/animate/fade-out.js.map +1 -0
  201. package/es/marker/animate/index.js +3 -0
  202. package/es/marker/animate/index.js.map +1 -0
  203. package/es/marker/arc-area.d.ts +55 -0
  204. package/es/marker/arc-area.js +143 -0
  205. package/es/marker/arc-area.js.map +1 -0
  206. package/es/marker/arc-line.d.ts +25 -0
  207. package/es/marker/arc-line.js +114 -0
  208. package/es/marker/arc-line.js.map +1 -0
  209. package/es/marker/area.d.ts +14 -4
  210. package/es/marker/area.js +36 -19
  211. package/es/marker/area.js.map +1 -1
  212. package/es/marker/base.d.ts +21 -3
  213. package/es/marker/base.js +43 -4
  214. package/es/marker/base.js.map +1 -1
  215. package/es/marker/common-line.d.ts +22 -0
  216. package/es/marker/common-line.js +58 -0
  217. package/es/marker/common-line.js.map +1 -0
  218. package/es/marker/config.d.ts +79 -6
  219. package/es/marker/config.js +79 -37
  220. package/es/marker/config.js.map +1 -1
  221. package/es/marker/index.d.ts +2 -0
  222. package/es/marker/index.js +4 -0
  223. package/es/marker/index.js.map +1 -1
  224. package/es/marker/line.d.ts +24 -12
  225. package/es/marker/line.js +116 -48
  226. package/es/marker/line.js.map +1 -1
  227. package/es/marker/point.d.ts +8 -3
  228. package/es/marker/point.js +34 -6
  229. package/es/marker/point.js.map +1 -1
  230. package/es/marker/register.d.ts +2 -0
  231. package/es/marker/register.js +10 -2
  232. package/es/marker/register.js.map +1 -1
  233. package/es/marker/type.d.ts +102 -12
  234. package/es/marker/type.js +9 -0
  235. package/es/marker/type.js.map +1 -1
  236. package/es/pager/pager.js +2 -2
  237. package/es/pager/pager.js.map +1 -1
  238. package/es/player/base-player.d.ts +0 -2
  239. package/es/player/base-player.js +6 -11
  240. package/es/player/base-player.js.map +1 -1
  241. package/es/player/continuous-player.d.ts +1 -1
  242. package/es/player/continuous-player.js +4 -6
  243. package/es/player/continuous-player.js.map +1 -1
  244. package/es/player/controller/controller.js +5 -5
  245. package/es/player/controller/controller.js.map +1 -1
  246. package/es/player/discrete-player.d.ts +1 -1
  247. package/es/player/discrete-player.js +4 -6
  248. package/es/player/discrete-player.js.map +1 -1
  249. package/es/segment/arc-segment.d.ts +13 -0
  250. package/es/segment/arc-segment.js +49 -0
  251. package/es/segment/arc-segment.js.map +1 -0
  252. package/es/segment/index.d.ts +1 -0
  253. package/es/segment/index.js +2 -0
  254. package/es/segment/index.js.map +1 -1
  255. package/es/segment/register.d.ts +2 -1
  256. package/es/segment/register.js +6 -2
  257. package/es/segment/register.js.map +1 -1
  258. package/es/segment/segment.d.ts +9 -7
  259. package/es/segment/segment.js +11 -8
  260. package/es/segment/segment.js.map +1 -1
  261. package/es/segment/type.d.ts +24 -4
  262. package/es/segment/type.js.map +1 -1
  263. package/es/slider/slider.d.ts +0 -2
  264. package/es/slider/slider.js +36 -50
  265. package/es/slider/slider.js.map +1 -1
  266. package/es/slider/type.d.ts +0 -1
  267. package/es/slider/type.js.map +1 -1
  268. package/es/tag/tag.d.ts +5 -0
  269. package/es/tag/tag.js +14 -5
  270. package/es/tag/tag.js.map +1 -1
  271. package/es/util/interaction.d.ts +4 -0
  272. package/es/util/interaction.js +30 -0
  273. package/es/util/interaction.js.map +1 -0
  274. package/es/util/text.d.ts +1 -1
  275. package/es/util/text.js +7 -6
  276. package/es/util/text.js.map +1 -1
  277. package/package.json +3 -3
  278. package/cjs/marker/util.js +0 -3
  279. package/cjs/marker/util.js.map +0 -1
  280. package/es/marker/util.js +0 -3
  281. package/es/marker/util.js.map +0 -1
  282. /package/cjs/marker/{util.d.ts → animate/index.d.ts} +0 -0
  283. /package/es/marker/{util.d.ts → animate/index.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/segment/register.ts"],"names":[],"mappings":";;;AAAA,yDAAsG;AAEtG,SAAgB,oBAAoB;IAClC,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,8BAAe,GAAE,CAAC;IAClB,IAAA,6BAAc,GAAE,CAAC;AACnB,CAAC;AALD,oDAKC","file":"register.js","sourcesContent":["import { registerGroup, registerLine, registerPolygon, registerSymbol } from '@visactor/vrender-kits';\n\nexport function loadSegmentComponent() {\n registerGroup();\n registerLine();\n registerPolygon();\n registerSymbol();\n}\n"]}
1
+ {"version":3,"sources":["../src/segment/register.ts"],"names":[],"mappings":";;;AAAA,yDAAmH;AAEnH,SAAgB,oBAAoB,CAAC,kBAA2B,KAAK;IACnE,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,8BAAe,GAAE,CAAC;IAClB,IAAA,6BAAc,GAAE,CAAC;AACnB,CAAC;AALD,oDAKC;AAED,SAAgB,uBAAuB,CAAC,kBAA2B,KAAK;IACtE,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,0BAAW,GAAE,CAAC;IACd,IAAA,6BAAc,GAAE,CAAC;AACnB,CAAC;AALD,0DAKC","file":"register.js","sourcesContent":["import { registerGroup, registerLine, registerPolygon, registerSymbol, registerArc } from '@visactor/vrender-kits';\n\nexport function loadSegmentComponent(enableAnimation: boolean = false) {\n registerGroup();\n registerLine();\n registerPolygon();\n registerSymbol();\n}\n\nexport function loadArcSegmentComponent(enableAnimation: boolean = false) {\n registerGroup();\n registerLine();\n registerArc();\n registerSymbol();\n}\n"]}
@@ -1,24 +1,26 @@
1
- import type { ISymbol } from '@visactor/vrender-core';
1
+ import type { ILine, ISymbol } from '@visactor/vrender-core';
2
2
  import { AbstractComponent } from '../core/base';
3
- import type { SegmentAttributes } from './type';
3
+ import type { SegmentAttributes, SymbolAttributes } from './type';
4
4
  import type { Point } from '../core/type';
5
5
  import type { ComponentOptions } from '../interface';
6
6
  export declare class Segment extends AbstractComponent<Required<SegmentAttributes>> {
7
7
  name: string;
8
8
  startSymbol?: ISymbol;
9
9
  endSymbol?: ISymbol;
10
- private _startAngle;
10
+ lines?: ILine[];
11
+ protected _startAngle: number;
11
12
  getStartAngle(): number;
12
- private _endAngle;
13
+ protected _endAngle: number;
13
14
  getEndAngle(): number;
14
- private _mainSegmentPoints;
15
+ protected _mainSegmentPoints: Point[];
15
16
  getMainSegmentPoints(): Point[];
16
17
  static defaultAttributes: Partial<SegmentAttributes>;
17
18
  constructor(attributes: SegmentAttributes, options?: ComponentOptions);
18
19
  protected render(): void;
19
- private _renderSymbol;
20
+ protected _computeRotate(angle: number): number;
21
+ protected _renderSymbol(attribute: SymbolAttributes, points: Point[], dim: string): ISymbol | undefined;
20
22
  private _getMainSegmentPoints;
21
23
  private _clipPoints;
22
24
  private _computeLineAngle;
23
- private _reset;
25
+ protected _reset(): void;
24
26
  }
@@ -20,14 +20,14 @@ class Segment extends base_1.AbstractComponent {
20
20
  }
21
21
  constructor(attributes, options) {
22
22
  super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, Segment.defaultAttributes, attributes)),
23
- this.name = "segment";
23
+ this.name = "segment", this.lines = [];
24
24
  }
25
25
  render() {
26
26
  this.removeAllChild(!0), this._reset();
27
27
  const {startSymbol: startSymbol, endSymbol: endSymbol, lineStyle: lineStyle, state: state, visible: visible = !0, multiSegment: multiSegment, mainSegmentIndex: mainSegmentIndex} = this.attribute;
28
28
  if (!visible) return;
29
29
  this._computeLineAngle();
30
- const startSymbolShape = this._renderSymbol(startSymbol, "start"), endSymbolShape = this._renderSymbol(endSymbol, "end");
30
+ const points = this._getMainSegmentPoints(), startSymbolShape = this._renderSymbol(startSymbol, points, "start"), endSymbolShape = this._renderSymbol(endSymbol, points, "end");
31
31
  if (this.startSymbol = startSymbolShape, this.endSymbol = endSymbolShape, multiSegment) {
32
32
  const points = [ ...this.attribute.points ];
33
33
  if ((0, vutils_1.isValidNumber)(mainSegmentIndex)) points[mainSegmentIndex] = this._clipPoints(points[mainSegmentIndex]); else {
@@ -43,7 +43,7 @@ class Segment extends base_1.AbstractComponent {
43
43
  }));
44
44
  line.name = `${this.name}-line`, line.id = this._getNodeId("line" + index), (0,
45
45
  vutils_1.isEmpty)(null == state ? void 0 : state.line) || (line.states = (0, vutils_1.isArray)(state.line) ? null !== (_b = state.line[index]) && void 0 !== _b ? _b : state.line[state.line.length - 1] : state.line),
46
- this.add(line);
46
+ this.add(line), this.lines.push(line);
47
47
  }));
48
48
  } else {
49
49
  let lineCreator = vrender_core_1.graphicCreator.line;
@@ -55,11 +55,13 @@ class Segment extends base_1.AbstractComponent {
55
55
  closePath: !1
56
56
  }));
57
57
  line.name = `${this.name}-line`, line.id = this._getNodeId("line"), (0, vutils_1.isEmpty)(null == state ? void 0 : state.line) || (line.states = [].concat(state.line)[0]),
58
- this.add(line);
58
+ this.add(line), this.lines.push(line);
59
59
  }
60
60
  }
61
- _renderSymbol(attribute, dim) {
62
- const points = this._getMainSegmentPoints();
61
+ _computeRotate(angle) {
62
+ return angle + Math.PI / 2;
63
+ }
64
+ _renderSymbol(attribute, points, dim) {
63
65
  if (!points.length) return;
64
66
  const {autoRotate: autoRotate = !0} = attribute;
65
67
  let symbol;
@@ -69,16 +71,18 @@ class Segment extends base_1.AbstractComponent {
69
71
  "start" === dim ? (position = {
70
72
  x: start.x + ((0, vutils_1.isValidNumber)(startAngle) ? refX * Math.cos(startAngle) + refY * Math.cos(startAngle - Math.PI / 2) : 0),
71
73
  y: start.y + ((0, vutils_1.isValidNumber)(startAngle) ? refX * Math.sin(startAngle) + refY * Math.sin(startAngle - Math.PI / 2) : 0)
72
- }, rotate = startAngle + Math.PI / 2) : (position = {
74
+ }, rotate = this._computeRotate(startAngle)) : (position = {
73
75
  x: end.x + ((0, vutils_1.isValidNumber)(endAngle) ? refX * Math.cos(endAngle) + refY * Math.cos(endAngle - Math.PI / 2) : 0),
74
76
  y: end.y + ((0, vutils_1.isValidNumber)(endAngle) ? refX * Math.sin(endAngle) + refY * Math.sin(endAngle - Math.PI / 2) : 0)
75
- }, rotate = endAngle + Math.PI / 2), symbol = vrender_core_1.graphicCreator.symbol(Object.assign(Object.assign(Object.assign({}, position), {
77
+ }, rotate = this._computeRotate(endAngle)), symbol = vrender_core_1.graphicCreator.symbol(Object.assign(Object.assign(Object.assign({}, position), {
76
78
  symbolType: symbolType,
77
79
  size: size,
78
80
  angle: autoRotate ? rotate + refAngle : 0,
79
81
  strokeBoundsBuffer: 0
80
82
  }), style)), symbol.name = `${this.name}-${dim}-symbol`, symbol.id = this._getNodeId(`${dim}-symbol`),
81
83
  (0, vutils_1.isEmpty)(null == state ? void 0 : state.symbol) || (symbol.states = state.symbol),
84
+ "start" === dim ? (0, vutils_1.isEmpty)(null == state ? void 0 : state.startSymbol) || (symbol.states = state.startSymbol) : (0,
85
+ vutils_1.isEmpty)(null == state ? void 0 : state.endSymbol) || (symbol.states = state.endSymbol),
82
86
  this.add(symbol);
83
87
  }
84
88
  return symbol;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/segment/segment.ts"],"names":[],"mappings":"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","file":"segment.js","sourcesContent":["/**\n * @description 标签组件\n */\nimport { array, flattenArray, isArray, isEmpty, isValidNumber, merge } from '@visactor/vutils';\nimport type { ISymbol } from '@visactor/vrender-core';\nimport { graphicCreator } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { ILineGraphicWithCornerRadius, SegmentAttributes, SymbolAttributes } from './type';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\nimport { loadSegmentComponent } from './register';\n\nloadSegmentComponent();\nexport class Segment extends AbstractComponent<Required<SegmentAttributes>> {\n name = 'segment';\n\n startSymbol?: ISymbol;\n endSymbol?: ISymbol;\n\n private _startAngle!: number;\n /**\n * 外部获取segment起点正方向\n */\n getStartAngle() {\n return this._startAngle;\n }\n\n private _endAngle!: number;\n /**\n * 外部获取segment终点正方向\n */\n getEndAngle() {\n return this._endAngle;\n }\n\n private _mainSegmentPoints: Point[]; // 组成主线段的点\n getMainSegmentPoints() {\n return this._mainSegmentPoints;\n }\n\n static defaultAttributes: Partial<SegmentAttributes> = {\n visible: true,\n lineStyle: {\n lineWidth: 1,\n stroke: '#000'\n },\n startSymbol: {\n visible: false,\n autoRotate: true,\n symbolType: 'triangle',\n size: 12,\n refX: 0,\n refY: 0,\n refAngle: 0,\n style: {\n fill: '#000',\n zIndex: 1 // 默认 symbol 绘制在 line 上面\n }\n },\n endSymbol: {\n visible: false,\n autoRotate: true,\n symbolType: 'triangle',\n size: 12,\n refX: 0,\n refY: 0,\n refAngle: 0,\n style: {\n fill: '#000',\n zIndex: 1 // 默认 symbol 绘制在 line 上面\n }\n }\n };\n\n constructor(attributes: SegmentAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Segment.defaultAttributes, attributes));\n }\n\n protected render() {\n this.removeAllChild(true);\n this._reset();\n const {\n // points,\n startSymbol,\n endSymbol,\n lineStyle,\n state,\n visible = true,\n multiSegment,\n mainSegmentIndex\n } = this.attribute as SegmentAttributes;\n\n if (!visible) {\n return;\n }\n\n // 计算线的起点和终点角度\n // 计算角度的原因:\n // 1. segment symbol的自动旋转提供参数\n // 2. 使用segment时,需要根据line的角度对附加元素进行自动旋转(比如:markLine的标签, markPoint的装饰线)\n this._computeLineAngle();\n\n // 绘制start和end symbol\n const startSymbolShape = this._renderSymbol(startSymbol as SymbolAttributes, 'start');\n const endSymbolShape = this._renderSymbol(endSymbol as SymbolAttributes, 'end');\n\n this.startSymbol = startSymbolShape;\n this.endSymbol = endSymbolShape;\n\n if (multiSegment) {\n const points = [...this.attribute.points];\n if (isValidNumber(mainSegmentIndex)) {\n points[mainSegmentIndex] = this._clipPoints(points[mainSegmentIndex] as Point[]);\n } else {\n const clipPoints = this._clipPoints(flattenArray(points) as Point[]);\n points[0][0] = clipPoints[0];\n (points[points.length - 1] as Point[])[(points[points.length - 1] as Point[]).length - 1] =\n clipPoints[clipPoints.length - 1];\n }\n points.forEach((point: Point[], index) => {\n const line = graphicCreator.line({\n points: point,\n ...(isArray(lineStyle) ? lineStyle[index] ?? lineStyle[lineStyle.length - 1] : lineStyle),\n fill: false\n });\n\n line.name = `${this.name}-line`;\n line.id = this._getNodeId('line' + index);\n if (!isEmpty(state?.line)) {\n line.states = isArray(state.line) ? state.line[index] ?? state.line[state.line.length - 1] : state.line;\n }\n this.add(line);\n });\n } else {\n // 如果配置了cornerRadius, 则绘制polygon, 否则绘制line\n let lineCreator = graphicCreator.line;\n if ((array(lineStyle)[0] as ILineGraphicWithCornerRadius).cornerRadius) {\n lineCreator = graphicCreator.polygon;\n }\n const line = lineCreator({\n points: this._clipPoints(this.attribute.points as Point[]),\n ...array(lineStyle)[0],\n fill: false,\n closePath: false\n });\n\n line.name = `${this.name}-line`;\n line.id = this._getNodeId('line');\n if (!isEmpty(state?.line)) {\n line.states = [].concat(state.line)[0];\n }\n this.add(line);\n }\n }\n\n private _renderSymbol(attribute: SymbolAttributes, dim: string): ISymbol | undefined {\n const points = this._getMainSegmentPoints();\n if (!points.length) {\n return;\n }\n\n const { autoRotate = true } = attribute;\n let symbol;\n if (attribute && attribute.visible) {\n const startAngle = this._startAngle;\n const endAngle = this._endAngle;\n const { state } = this.attribute as SegmentAttributes;\n const start = points[0];\n const end = points[points.length - 1];\n const { refX = 0, refY = 0, refAngle = 0, style, symbolType, size = 12 } = attribute;\n let position;\n let rotate;\n if (dim === 'start') {\n position = {\n x:\n start.x +\n (isValidNumber(startAngle) ? refX * Math.cos(startAngle) + refY * Math.cos(startAngle - Math.PI / 2) : 0),\n y:\n start.y +\n (isValidNumber(startAngle) ? refX * Math.sin(startAngle) + refY * Math.sin(startAngle - Math.PI / 2) : 0)\n };\n rotate = startAngle + Math.PI / 2; // @chensiji - 加Math.PI / 2是因为:默认symbol的包围盒垂直于line,所以在做自动旋转时需要在line正方向基础上做90度偏移\n } else {\n position = {\n x:\n end.x + (isValidNumber(endAngle) ? refX * Math.cos(endAngle) + refY * Math.cos(endAngle - Math.PI / 2) : 0),\n y: end.y + (isValidNumber(endAngle) ? refX * Math.sin(endAngle) + refY * Math.sin(endAngle - Math.PI / 2) : 0)\n };\n rotate = endAngle + Math.PI / 2;\n }\n\n symbol = graphicCreator.symbol({\n ...position,\n symbolType: symbolType as string,\n size,\n angle: autoRotate ? rotate + refAngle : 0,\n strokeBoundsBuffer: 0,\n ...style\n });\n symbol.name = `${this.name}-${dim}-symbol`;\n symbol.id = this._getNodeId(`${dim}-symbol`);\n\n if (!isEmpty(state?.symbol)) {\n symbol.states = state.symbol;\n }\n\n this.add(symbol);\n }\n return symbol;\n }\n\n private _getMainSegmentPoints(): Point[] {\n if (this._mainSegmentPoints) {\n return this._mainSegmentPoints;\n }\n const { points: originPoints, multiSegment, mainSegmentIndex } = this.attribute as SegmentAttributes;\n\n let points: Point[];\n // 需要做下约束判断\n if (multiSegment) {\n if (isValidNumber(mainSegmentIndex)) {\n points = originPoints[mainSegmentIndex] as Point[];\n } else {\n points = flattenArray(originPoints);\n }\n } else {\n points = originPoints as Point[];\n }\n this._mainSegmentPoints = points;\n\n return points;\n }\n\n private _clipPoints(points: Point[]) {\n const { startSymbol = {} as SegmentAttributes['startSymbol'], endSymbol = {} as SegmentAttributes['endSymbol'] } =\n this.attribute as SegmentAttributes;\n // 通过改变line起点和终点的方式达到symbol在fill为false的情况下,也可以遮盖line的效果\n let pointsAfterClip = points;\n if (startSymbol.visible) {\n const startSize = startSymbol.clip ? startSymbol.size || 10 : 0;\n const pointsStart = {\n x: points[0].x - (startSize / 2) * (Math.cos(this._startAngle) || 0),\n y: points[0].y - (startSize / 2) * (Math.sin(this._startAngle) || 0)\n };\n pointsAfterClip = [pointsStart, ...pointsAfterClip.slice(1)];\n }\n if (endSymbol.visible) {\n const endSize = endSymbol.clip ? endSymbol.size || 10 : 0;\n const pointsEnd = {\n x: points[points.length - 1].x - (endSize / 2) * (Math.cos(this._endAngle) || 0),\n y: points[points.length - 1].y - (endSize / 2) * (Math.sin(this._endAngle) || 0)\n };\n pointsAfterClip = [...pointsAfterClip.slice(0, pointsAfterClip.length - 1), pointsEnd];\n }\n\n return pointsAfterClip;\n }\n\n private _computeLineAngle() {\n const points = this._getMainSegmentPoints();\n if (points.length <= 1) {\n return;\n }\n const start = points[0];\n const startInside = points[1];\n const endInside = points[points.length - 2];\n const end = points[points.length - 1];\n const startVector = [start.x - startInside.x, start.y - startInside.y]; // 起点正方向向量\n const startAngle = Math.atan2(startVector[1], startVector[0]); // 起点正方向角度\n const endVector = [end.x - endInside.x, end.y - endInside.y]; // 终点正方向向量\n const endAngle = Math.atan2(endVector[1], endVector[0]); // 终点正方向角度\n\n this._startAngle = startAngle;\n this._endAngle = endAngle;\n }\n\n private _reset() {\n this.startSymbol = null;\n this.endSymbol = null;\n this._startAngle = null;\n this._endAngle = null;\n this._mainSegmentPoints = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/segment/segment.ts"],"names":[],"mappings":"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","file":"segment.js","sourcesContent":["/**\n * @description 标签组件\n */\nimport { array, flattenArray, isArray, isEmpty, isValidNumber, merge } from '@visactor/vutils';\nimport type { ILine, 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 { ILineGraphicWithCornerRadius, SegmentAttributes, SymbolAttributes } from './type';\nimport type { Point } from '../core/type';\nimport type { ComponentOptions } from '../interface';\nimport { loadSegmentComponent } from './register';\n\nloadSegmentComponent();\nexport class Segment extends AbstractComponent<Required<SegmentAttributes>> {\n name = 'segment';\n\n startSymbol?: ISymbol;\n endSymbol?: ISymbol;\n lines?: ILine[] = [];\n // animate?: (startSymbol, endSymbol, lines) => void;\n\n protected _startAngle!: number;\n /**\n * 外部获取segment起点正方向\n */\n getStartAngle() {\n return this._startAngle;\n }\n\n protected _endAngle!: number;\n /**\n * 外部获取segment终点正方向\n */\n getEndAngle() {\n return this._endAngle;\n }\n\n protected _mainSegmentPoints: Point[]; // 组成主线段的点\n getMainSegmentPoints() {\n return this._mainSegmentPoints;\n }\n\n static defaultAttributes: Partial<SegmentAttributes> = {\n visible: true,\n lineStyle: {\n lineWidth: 1,\n stroke: '#000'\n },\n startSymbol: {\n visible: false,\n autoRotate: true,\n symbolType: 'triangle',\n size: 12,\n refX: 0,\n refY: 0,\n refAngle: 0,\n style: {\n fill: '#000',\n zIndex: 1 // 默认 symbol 绘制在 line 上面\n }\n },\n endSymbol: {\n visible: false,\n autoRotate: true,\n symbolType: 'triangle',\n size: 12,\n refX: 0,\n refY: 0,\n refAngle: 0,\n style: {\n fill: '#000',\n zIndex: 1 // 默认 symbol 绘制在 line 上面\n }\n }\n };\n\n constructor(attributes: SegmentAttributes, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, Segment.defaultAttributes, attributes));\n }\n\n protected render() {\n this.removeAllChild(true);\n this._reset();\n const {\n // points,\n startSymbol,\n endSymbol,\n lineStyle,\n state,\n visible = true,\n multiSegment,\n mainSegmentIndex\n } = this.attribute as SegmentAttributes;\n\n if (!visible) {\n return;\n }\n\n // 计算线的起点和终点角度\n // 计算角度的原因:\n // 1. segment symbol的自动旋转提供参数\n // 2. 使用segment时,需要根据line的角度对附加元素进行自动旋转(比如:markLine的标签, markPoint的装饰线)\n this._computeLineAngle();\n\n // 绘制start和end symbol\n const points = this._getMainSegmentPoints();\n const startSymbolShape = this._renderSymbol(startSymbol as SymbolAttributes, points, 'start');\n const endSymbolShape = this._renderSymbol(endSymbol as SymbolAttributes, points, 'end');\n\n this.startSymbol = startSymbolShape;\n this.endSymbol = endSymbolShape;\n\n if (multiSegment) {\n const points = [...this.attribute.points];\n if (isValidNumber(mainSegmentIndex)) {\n points[mainSegmentIndex] = this._clipPoints(points[mainSegmentIndex] as Point[]);\n } else {\n const clipPoints = this._clipPoints(flattenArray(points) as Point[]);\n points[0][0] = clipPoints[0];\n (points[points.length - 1] as Point[])[(points[points.length - 1] as Point[]).length - 1] =\n clipPoints[clipPoints.length - 1];\n }\n points.forEach((point: Point[], index) => {\n const line = graphicCreator.line({\n points: point,\n ...(isArray(lineStyle) ? lineStyle[index] ?? lineStyle[lineStyle.length - 1] : lineStyle),\n fill: false\n });\n\n line.name = `${this.name}-line`;\n line.id = this._getNodeId('line' + index);\n if (!isEmpty(state?.line)) {\n line.states = isArray(state.line) ? state.line[index] ?? state.line[state.line.length - 1] : state.line;\n }\n this.add(line);\n this.lines.push(line);\n });\n } else {\n // 如果配置了cornerRadius, 则绘制polygon, 否则绘制line\n let lineCreator = graphicCreator.line;\n if ((array(lineStyle)[0] as ILineGraphicWithCornerRadius).cornerRadius) {\n lineCreator = graphicCreator.polygon;\n }\n const line = lineCreator({\n points: this._clipPoints(this.attribute.points as Point[]),\n ...array(lineStyle)[0],\n fill: false,\n closePath: false\n });\n\n line.name = `${this.name}-line`;\n line.id = this._getNodeId('line');\n if (!isEmpty(state?.line)) {\n line.states = [].concat(state.line)[0];\n }\n this.add(line);\n this.lines.push(line);\n }\n\n // if(Segment.animate) {\n // console.log('animate', this.animate)\n // Segment.animate(this.startSymbol, this.endSymbol, this.lines)\n // }\n }\n\n protected _computeRotate(angle: number) {\n return angle + Math.PI / 2;\n }\n\n protected _renderSymbol(attribute: SymbolAttributes, points: Point[], dim: string): ISymbol | undefined {\n if (!points.length) {\n return;\n }\n const { autoRotate = true } = attribute;\n let symbol;\n if (attribute && attribute.visible) {\n const startAngle = this._startAngle;\n const endAngle = this._endAngle;\n const { state } = this.attribute as SegmentAttributes;\n const start = points[0];\n const end = points[points.length - 1];\n const { refX = 0, refY = 0, refAngle = 0, style, symbolType, size = 12 } = attribute;\n let position;\n let rotate;\n if (dim === 'start') {\n position = {\n x:\n start.x +\n (isValidNumber(startAngle) ? refX * Math.cos(startAngle) + refY * Math.cos(startAngle - Math.PI / 2) : 0),\n y:\n start.y +\n (isValidNumber(startAngle) ? refX * Math.sin(startAngle) + refY * Math.sin(startAngle - Math.PI / 2) : 0)\n };\n rotate = this._computeRotate(startAngle); // @chensiji - 加Math.PI / 2是因为:默认symbol的包围盒垂直于line,所以在做自动旋转时需要在line正方向基础上做90度偏移\n } else {\n position = {\n x:\n end.x + (isValidNumber(endAngle) ? refX * Math.cos(endAngle) + refY * Math.cos(endAngle - Math.PI / 2) : 0),\n y: end.y + (isValidNumber(endAngle) ? refX * Math.sin(endAngle) + refY * Math.sin(endAngle - Math.PI / 2) : 0)\n };\n rotate = this._computeRotate(endAngle);\n }\n\n symbol = graphicCreator.symbol({\n ...position,\n symbolType: symbolType as string,\n size,\n angle: autoRotate ? rotate + refAngle : 0,\n strokeBoundsBuffer: 0,\n ...style\n });\n symbol.name = `${this.name}-${dim}-symbol`;\n symbol.id = this._getNodeId(`${dim}-symbol`);\n\n // 兼容旧逻辑, state.symbol同时应用到startSymbol和endSymbol\n if (!isEmpty(state?.symbol)) {\n symbol.states = state.symbol;\n }\n\n // 新逻辑, state.startSymbol和state.endSymbol做不同匹配\n if (dim === 'start') {\n if (!isEmpty(state?.startSymbol)) {\n symbol.states = state.startSymbol;\n }\n } else {\n if (!isEmpty(state?.endSymbol)) {\n symbol.states = state.endSymbol;\n }\n }\n\n this.add(symbol);\n }\n return symbol;\n }\n\n private _getMainSegmentPoints(): Point[] {\n if (this._mainSegmentPoints) {\n return this._mainSegmentPoints;\n }\n const { points: originPoints, multiSegment, mainSegmentIndex } = this.attribute as SegmentAttributes;\n\n let points: Point[];\n // 需要做下约束判断\n if (multiSegment) {\n if (isValidNumber(mainSegmentIndex)) {\n points = originPoints[mainSegmentIndex] as Point[];\n } else {\n points = flattenArray(originPoints);\n }\n } else {\n points = originPoints as Point[];\n }\n this._mainSegmentPoints = points;\n\n return points;\n }\n\n private _clipPoints(points: Point[]) {\n const { startSymbol = {} as SegmentAttributes['startSymbol'], endSymbol = {} as SegmentAttributes['endSymbol'] } =\n this.attribute as SegmentAttributes;\n // 通过改变line起点和终点的方式达到symbol在fill为false的情况下,也可以遮盖line的效果\n let pointsAfterClip = points;\n if (startSymbol.visible) {\n const startSize = startSymbol.clip ? startSymbol.size || 10 : 0;\n const pointsStart = {\n x: points[0].x - (startSize / 2) * (Math.cos(this._startAngle) || 0),\n y: points[0].y - (startSize / 2) * (Math.sin(this._startAngle) || 0)\n };\n pointsAfterClip = [pointsStart, ...pointsAfterClip.slice(1)];\n }\n if (endSymbol.visible) {\n const endSize = endSymbol.clip ? endSymbol.size || 10 : 0;\n const pointsEnd = {\n x: points[points.length - 1].x - (endSize / 2) * (Math.cos(this._endAngle) || 0),\n y: points[points.length - 1].y - (endSize / 2) * (Math.sin(this._endAngle) || 0)\n };\n pointsAfterClip = [...pointsAfterClip.slice(0, pointsAfterClip.length - 1), pointsEnd];\n }\n\n return pointsAfterClip;\n }\n\n private _computeLineAngle() {\n const points = this._getMainSegmentPoints();\n if (points.length <= 1) {\n return;\n }\n const start = points[0];\n const startInside = points[1];\n const endInside = points[points.length - 2];\n const end = points[points.length - 1];\n const startVector = [start.x - startInside.x, start.y - startInside.y]; // 起点正方向向量\n const startAngle = Math.atan2(startVector[1], startVector[0]); // 起点正方向角度\n const endVector = [end.x - endInside.x, end.y - endInside.y]; // 终点正方向向量\n const endAngle = Math.atan2(endVector[1], endVector[0]); // 终点正方向角度\n\n this._startAngle = startAngle;\n this._endAngle = endAngle;\n }\n\n protected _reset() {\n this.startSymbol = null;\n this.endSymbol = null;\n this._startAngle = null;\n this._endAngle = null;\n this._mainSegmentPoints = null;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { IGraphicAttribute, IGroupGraphicAttribute, ILineGraphicAttribute, ISymbolGraphicAttribute, SymbolType } from '@visactor/vrender-core';
1
+ import type { IArcGraphicAttribute, IGraphicAttribute, IGroupGraphicAttribute, ILineGraphicAttribute, ISymbolGraphicAttribute, SymbolType } from '@visactor/vrender-core';
2
2
  import type { Point, State } from '../core/type';
3
3
  export type SymbolAttributes = {
4
4
  visible: boolean;
@@ -11,17 +11,37 @@ export type SymbolAttributes = {
11
11
  clip?: boolean;
12
12
  style?: Partial<IGraphicAttribute>;
13
13
  };
14
- export interface SegmentAttributes extends IGroupGraphicAttribute {
14
+ export interface CommonSegmentAttributes extends IGroupGraphicAttribute {
15
15
  visible?: boolean;
16
+ startSymbol?: SymbolAttributes;
17
+ endSymbol?: SymbolAttributes;
18
+ }
19
+ export interface SegmentAttributes extends CommonSegmentAttributes {
16
20
  multiSegment?: boolean;
17
21
  mainSegmentIndex?: number;
18
22
  points: Point[] | Point[][];
19
- startSymbol?: SymbolAttributes;
20
- endSymbol?: SymbolAttributes;
21
23
  lineStyle?: ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[];
22
24
  state?: {
23
25
  line?: State<ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[]>;
24
26
  symbol?: State<Partial<ISymbolGraphicAttribute>>;
27
+ startSymbol?: State<Partial<ISymbolGraphicAttribute>>;
28
+ endSymbol?: State<Partial<ISymbolGraphicAttribute>>;
29
+ };
30
+ }
31
+ export interface ArcSegmentAttributes extends CommonSegmentAttributes {
32
+ center: {
33
+ x: number;
34
+ y: number;
35
+ };
36
+ radius: number;
37
+ startAngle: number;
38
+ endAngle: number;
39
+ lineStyle?: IArcGraphicAttribute;
40
+ state?: {
41
+ line?: State<IArcGraphicAttribute>;
42
+ symbol?: State<Partial<ISymbolGraphicAttribute>>;
43
+ startSymbol?: State<Partial<ISymbolGraphicAttribute>>;
44
+ endSymbol?: State<Partial<ISymbolGraphicAttribute>>;
25
45
  };
26
46
  }
27
47
  export interface ILineGraphicWithCornerRadius extends Partial<ILineGraphicAttribute> {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/segment/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n IGraphicAttribute,\n IGroupGraphicAttribute,\n ILineGraphicAttribute,\n ISymbolGraphicAttribute,\n SymbolType\n} from '@visactor/vrender-core';\nimport type { Point, State } from '../core/type';\n\nexport type SymbolAttributes = {\n /** 是否展示 symbol */\n visible: boolean;\n /**\n * symbol 形状,默认为带左右方向的箭头\n */\n symbolType?: SymbolType;\n /**\n * symbol 大小\n */\n size?: number;\n /**\n * 自动旋转,沿着线的方向,默认 true\n */\n autoRotate?: boolean;\n /**\n * symbol 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * symbol 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * symbol 相对默认角度的偏移\n * @description (@chensiji: 默认角度为笛卡尔坐标系y正方向,即默认symbol包围盒的角度为笛卡尔坐标系y正方向, 做自动旋转时, 会在此基础上,将包围盒转换到line平行方向上。)\n */\n refAngle?: number;\n /**\n * symbol 是否clip line,即当symbol fill为false时,line在symbol内部的部分是否展示\n * @defalut false\n */\n clip?: boolean;\n /**\n * symbol 样式配置\n */\n style?: Partial<IGraphicAttribute>;\n};\n\nexport interface SegmentAttributes extends IGroupGraphicAttribute {\n /**\n * 可见性\n * @default true\n */\n visible?: boolean;\n /**\n * 是否对 points 进行多段处理,默认为 false,即直接将所有的点连接成线。\n * 如果需要进行多段处理,需要将 points 属性配置为 Point[][] 类型\n * @default false\n */\n multiSegment?: boolean;\n /**\n * 在 `multiSegment` 属性开启的前提下,用于声明那一段线段用来作为主线段,如果不声明,默认全段为主线段\n */\n mainSegmentIndex?: number;\n points: Point[] | Point[][];\n /** 轴线起始点 symbol 配置 */\n startSymbol?: SymbolAttributes;\n /** 轴线末端 symbol 配置 */\n endSymbol?: SymbolAttributes;\n /**\n * 线样式配置\n */\n lineStyle?: ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[];\n\n state?: {\n line?: State<ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[]>;\n symbol?: State<Partial<ISymbolGraphicAttribute>>;\n };\n}\n\nexport interface ILineGraphicWithCornerRadius extends Partial<ILineGraphicAttribute> {\n /**\n * 折现拐角处的圆角配置\n */\n cornerRadius?: number;\n}\n"]}
1
+ {"version":3,"sources":["../src/segment/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n IArcGraphicAttribute,\n IGraphicAttribute,\n IGroupGraphicAttribute,\n ILineGraphicAttribute,\n ISymbolGraphicAttribute,\n SymbolType\n} from '@visactor/vrender-core';\nimport type { Point, State } from '../core/type';\n\nexport type SymbolAttributes = {\n /** 是否展示 symbol */\n visible: boolean;\n /**\n * symbol 形状,默认为带左右方向的箭头\n */\n symbolType?: SymbolType;\n /**\n * symbol 大小\n */\n size?: number;\n /**\n * 自动旋转,沿着线的方向,默认 true\n */\n autoRotate?: boolean;\n /**\n * symbol 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * symbol 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * symbol 相对默认角度的偏移\n * @description (@chensiji: 默认角度为笛卡尔坐标系y正方向,即默认symbol包围盒的角度为笛卡尔坐标系y正方向, 做自动旋转时, 会在此基础上,将包围盒转换到line平行方向上。)\n */\n refAngle?: number;\n /**\n * symbol 是否clip line,即当symbol fill为false时,line在symbol内部的部分是否展示\n * @defalut false\n */\n clip?: boolean;\n /**\n * symbol 样式配置\n */\n style?: Partial<IGraphicAttribute>;\n};\n\nexport interface CommonSegmentAttributes extends IGroupGraphicAttribute {\n /**\n * 可见性\n * @default true\n */\n visible?: boolean;\n /** 轴线起始点 symbol 配置 */\n startSymbol?: SymbolAttributes;\n /** 轴线末端 symbol 配置 */\n endSymbol?: SymbolAttributes;\n}\nexport interface SegmentAttributes extends CommonSegmentAttributes {\n /**\n * 是否对 points 进行多段处理,默认为 false,即直接将所有的点连接成线。\n * 如果需要进行多段处理,需要将 points 属性配置为 Point[][] 类型\n * @default false\n */\n multiSegment?: boolean;\n /**\n * 在 `multiSegment` 属性开启的前提下,用于声明那一段线段用来作为主线段,如果不声明,默认全段为主线段\n */\n mainSegmentIndex?: number;\n points: Point[] | Point[][];\n /**\n * 线样式配置\n */\n lineStyle?: ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[];\n /**\n * 图元状态\n */\n state?: {\n line?: State<ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[]>;\n symbol?: State<Partial<ISymbolGraphicAttribute>>;\n startSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n endSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n };\n}\n\nexport interface ArcSegmentAttributes extends CommonSegmentAttributes {\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 /**\n * 线样式配置\n */\n lineStyle?: IArcGraphicAttribute;\n /**\n * 图元状态\n */\n state?: {\n line?: State<IArcGraphicAttribute>;\n symbol?: State<Partial<ISymbolGraphicAttribute>>;\n startSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n endSymbol?: State<Partial<ISymbolGraphicAttribute>>;\n };\n}\n\nexport interface ILineGraphicWithCornerRadius extends Partial<ILineGraphicAttribute> {\n /**\n * 折现拐角处的圆角配置\n */\n cornerRadius?: number;\n}\n"]}
@@ -92,8 +92,6 @@ export declare class Slider extends AbstractComponent<Required<SliderAttributes>
92
92
  get endHandler(): ISymbol;
93
93
  get tooltipShape(): ISymbol;
94
94
  constructor(attributes: SliderAttributes, options?: ComponentOptions);
95
- protected calculatePosByValue(value: number, pos?: 'start' | 'end'): number;
96
- protected calculateValueByPos(pos: number): number;
97
95
  setValue(value: number | number[]): void;
98
96
  render(): void;
99
97
  protected _renderRail(container: IGroup): import("@visactor/vrender-core").IRect;
@@ -42,9 +42,8 @@ class Slider extends base_1.AbstractComponent {
42
42
  }, this._onTooltipUpdate(e), this._dispatchTooltipEvent("sliderTooltipShow"));
43
43
  }, this._onTooltipUpdate = e => {
44
44
  if (this._isChanging || !this._tooltipState || !this._tooltipState.isActive) return;
45
- const railLen = this._isHorizontal ? this._rail.globalAABBBounds.width() : this._rail.globalAABBBounds.height(), pos = (0,
46
- vutils_1.clamp)(this._isHorizontal ? (e.viewX - this._rail.globalAABBBounds.x1) / railLen : (e.viewY - this._rail.globalAABBBounds.y1) / railLen, 0, 1);
47
- pos !== this._tooltipState.pos && (this._tooltipState.pos = pos, this._tooltipState.value = this.calculateValueByPos(pos * railLen),
45
+ const {min: min, max: max} = this.attribute, pos = (0, vutils_1.clamp)(this._isHorizontal ? (e.viewX - this._rail.globalAABBBounds.x1) / this._rail.globalAABBBounds.width() : (e.viewY - this._rail.globalAABBBounds.y1) / this._rail.globalAABBBounds.height(), 0, 1);
46
+ pos !== this._tooltipState.pos && (this._tooltipState.pos = pos, this._tooltipState.value = min + (max - min) * pos,
48
47
  this._updateTooltip(), this._dispatchTooltipEvent("sliderTooltipUpdate"));
49
48
  }, this._onTooltipHide = () => {
50
49
  const {tooltip: tooltip} = this.attribute;
@@ -68,7 +67,7 @@ class Slider extends base_1.AbstractComponent {
68
67
  railLen = railWidth) : (currentPos = e.clientY, delta = currentPos - this._prePos,
69
68
  originPos = null === (_a = this._currentHandler) || void 0 === _a ? void 0 : _a.attribute.y,
70
69
  railLen = railHeight);
71
- const newPos = (0, vutils_1.clamp)(originPos + delta, 0, railLen), currentValue = this.calculateValueByPos(newPos);
70
+ const newPos = (0, vutils_1.clamp)(originPos + delta, 0, railLen), currentValue = newPos / railLen * (max - min) + min;
72
71
  "text" === this._currentHandler.type ? this._updateHandlerText(this._currentHandler, newPos, currentValue) : this._updateHandler(this._currentHandler, newPos, currentValue),
73
72
  this._updateTrack(), this._prePos = currentPos, this._dispatchChangeEvent();
74
73
  }, this._onHandlerPointerUp = e => {
@@ -86,7 +85,7 @@ class Slider extends base_1.AbstractComponent {
86
85
  }), this.stage.addEventListener("pointerup", this._onTrackPointerUp), this.stage.addEventListener("pointerupoutside", this._onTrackPointerUp));
87
86
  }, this._onTrackPointerMove = e => {
88
87
  e.stopPropagation(), this._isChanging = !0;
89
- const {railWidth: railWidth, railHeight: railHeight, min: min, max: max, inverse: inverse} = this.attribute;
88
+ const {railWidth: railWidth, railHeight: railHeight, min: min, max: max} = this.attribute;
90
89
  if (max === min) return;
91
90
  const {startHandler: startHandler, endHandler: endHandler} = this._getHandlers();
92
91
  let currentPos, trackLen, railLen;
@@ -95,13 +94,13 @@ class Slider extends base_1.AbstractComponent {
95
94
  railLen = railHeight);
96
95
  const delta = currentPos - this._prePos;
97
96
  if (startHandler) {
98
- const originPos = this._isHorizontal ? startHandler.attribute.x : startHandler.attribute.y, newPos = inverse ? (0,
99
- vutils_1.clamp)(originPos + delta, trackLen, railLen) : (0, vutils_1.clamp)(originPos + delta, 0, railLen - trackLen), currentValue = this.calculateValueByPos(newPos);
97
+ const originPos = this._isHorizontal ? startHandler.attribute.x : startHandler.attribute.y, newPos = (0,
98
+ vutils_1.clamp)(originPos + delta, 0, railLen - trackLen), currentValue = newPos / railLen * (max - min) + min;
100
99
  this._updateHandler(startHandler, newPos, currentValue);
101
100
  }
102
101
  if (endHandler) {
103
- const originPos = this._isHorizontal ? endHandler.attribute.x : endHandler.attribute.y, newPos = inverse ? (0,
104
- vutils_1.clamp)(originPos + delta, 0, railLen - trackLen) : (0, vutils_1.clamp)(originPos + delta, trackLen, railLen), currentValue = this.calculateValueByPos(newPos), startHandlerAttribute = null == startHandler ? void 0 : startHandler.attribute;
102
+ const originPos = this._isHorizontal ? endHandler.attribute.x : endHandler.attribute.y, newPos = (0,
103
+ vutils_1.clamp)(originPos + delta, trackLen, railLen), currentValue = newPos / railLen * (max - min) + min, startHandlerAttribute = null == startHandler ? void 0 : startHandler.attribute;
105
104
  this._updateHandler(endHandler, newPos, currentValue), this._track.setAttributes(this._isHorizontal ? {
106
105
  x: Math.min(startHandlerAttribute.x, endHandler.attribute.x),
107
106
  width: Math.abs(startHandlerAttribute.x - endHandler.attribute.x)
@@ -127,7 +126,7 @@ class Slider extends base_1.AbstractComponent {
127
126
  endHandlerPos = null == endHandler ? void 0 : endHandler.attribute.x, railLen = railWidth) : (currentPos = e.viewY - this._rail.globalAABBBounds.y1,
128
127
  startHandlerPos = null == startHandler ? void 0 : startHandler.attribute.y, endHandlerPos = null == endHandler ? void 0 : endHandler.attribute.y,
129
128
  railLen = railHeight);
130
- const currentValue = this.calculateValueByPos(currentPos);
129
+ const currentValue = currentPos / railLen * (max - min) + min;
131
130
  if ((0, vutils_1.isValid)(endHandlerPos)) {
132
131
  const updateHandler = Math.abs(currentPos - startHandlerPos) > Math.abs(currentPos - endHandlerPos) ? endHandler : startHandler;
133
132
  this._updateHandler(updateHandler, currentPos, currentValue);
@@ -135,22 +134,14 @@ class Slider extends base_1.AbstractComponent {
135
134
  this._updateTrack(), this._dispatchChangeEvent();
136
135
  };
137
136
  }
138
- calculatePosByValue(value, pos) {
139
- const {layout: layout, railWidth: railWidth, railHeight: railHeight, min: min, max: max, inverse: inverse} = this.attribute;
140
- let ratio = 0;
141
- ratio = min === max ? "start" === pos ? 0 : "end" === pos ? 1 : 0 : (value - min) / (max - min);
142
- return (inverse ? 1 - ratio : ratio) * ("vertical" === layout ? railHeight : railWidth);
143
- }
144
- calculateValueByPos(pos) {
145
- const {layout: layout, railWidth: railWidth, railHeight: railHeight, min: min, max: max, inverse: inverse} = this.attribute, railLen = "vertical" === layout ? railHeight : railWidth;
146
- return min + (max - min) * (inverse ? 1 - pos / railLen : pos / railLen);
147
- }
148
137
  setValue(value) {
149
- const {min: min, max: max} = this.attribute;
138
+ const {layout: layout, railWidth: railWidth, railHeight: railHeight, min: min, max: max} = this.attribute;
150
139
  if (max === min) return;
151
- const [startValue, endValue] = (0, vutils_1.array)(value), {startHandler: startHandler, endHandler: endHandler} = this._getHandlers();
152
- startHandler && this._updateHandler(startHandler, this.calculatePosByValue(startValue), startValue),
153
- endHandler && this._updateHandler(endHandler, this.calculatePosByValue(endValue), endValue),
140
+ const [startValue, endValue] = (0, vutils_1.array)(value), {startHandler: startHandler, endHandler: endHandler} = this._getHandlers(), railLen = "vertical" === layout ? railHeight : railWidth, startPos = (startValue - min) / (max - min) * railLen;
141
+ if (startHandler && this._updateHandler(startHandler, startPos, startValue), endHandler) {
142
+ const endPos = (endValue - min) / (max - min) * railLen;
143
+ this._updateHandler(endHandler, endPos, endValue);
144
+ }
154
145
  this._updateTrack();
155
146
  }
156
147
  render() {
@@ -229,29 +220,29 @@ class Slider extends base_1.AbstractComponent {
229
220
  const {range: range, min: min, max: max, handlerSize: handlerSize = 14, handlerStyle: handlerStyle, handlerText: handlerText, railHeight: railHeight, railWidth: railWidth, slidable: slidable} = this.attribute;
230
221
  let {value: value} = this.attribute;
231
222
  (0, vutils_1.isNil)(value) && (value = [ min, max ]);
232
- const handlerTextVisible = handlerText && handlerText.visible, isHorizontal = this._isHorizontal, [startValue, endValue] = convertValueToRange(value), startPos = this.calculatePosByValue(startValue, range ? "start" : "end"), startHandler = this._renderHandler(Object.assign({
233
- x: isHorizontal ? startPos : railWidth / 2,
234
- y: isHorizontal ? railHeight / 2 : startPos,
223
+ const handlerTextVisible = handlerText && handlerText.visible, isHorizontal = this._isHorizontal, railLen = isHorizontal ? railWidth : railHeight, [startValue, endValue] = convertValueToRange(value), handlerStart = max === min ? range ? 0 : railLen : (startValue - min) / (max - min) * railLen, startHandler = this._renderHandler(Object.assign({
224
+ x: isHorizontal ? handlerStart : railWidth / 2,
225
+ y: isHorizontal ? railHeight / 2 : handlerStart,
235
226
  size: handlerSize,
236
227
  strokeBoundsBuffer: 0,
237
228
  cursor: !1 === slidable ? "default" : getDefaultCursor(isHorizontal)
238
229
  }, handlerStyle));
239
230
  if (startHandler.name = constant_1.SLIDER_ELEMENT_NAME.startHandler, this._startHandler = startHandler,
240
- container.add(startHandler), this._currentValue.startPos = startPos, handlerTextVisible) {
231
+ container.add(startHandler), this._currentValue.startPos = handlerStart, handlerTextVisible) {
241
232
  const startHandlerText = this._renderHandlerText(startValue, range ? "start" : "end");
242
233
  startHandlerText.name = constant_1.SLIDER_ELEMENT_NAME.startHandlerText, container.add(startHandlerText),
243
234
  this._startHandlerText = startHandlerText;
244
235
  }
245
236
  if (range) {
246
- const endPos = this.calculatePosByValue(endValue, "end"), endHandler = this._renderHandler(Object.assign({
247
- x: isHorizontal ? endPos : railWidth / 2,
248
- y: isHorizontal ? railHeight / 2 : endPos,
237
+ const handlerEnd = max === min ? railLen : (endValue - min) / (max - min) * railLen, endHandler = this._renderHandler(Object.assign({
238
+ x: isHorizontal ? handlerEnd : railWidth / 2,
239
+ y: isHorizontal ? railHeight / 2 : handlerEnd,
249
240
  size: handlerSize,
250
241
  strokeBoundsBuffer: 0,
251
242
  cursor: !1 === slidable ? "default" : getDefaultCursor(isHorizontal)
252
243
  }, handlerStyle));
253
244
  if (endHandler.name = constant_1.SLIDER_ELEMENT_NAME.endHandler, this._endHandler = endHandler,
254
- container.add(endHandler), this._currentValue.endPos = endPos, handlerTextVisible) {
245
+ container.add(endHandler), this._currentValue.endPos = handlerEnd, handlerTextVisible) {
255
246
  const endHandlerText = this._renderHandlerText(endValue, "end");
256
247
  endHandlerText.name = constant_1.SLIDER_ELEMENT_NAME.endHandlerText, container.add(endHandlerText),
257
248
  this._endHandlerText = endHandlerText;
@@ -265,7 +256,7 @@ class Slider extends base_1.AbstractComponent {
265
256
  const clampValue = (0, vutils_1.clampRange)(value, min, max);
266
257
  startValue = clampValue[0], endValue = clampValue[1];
267
258
  } else startValue = min, endValue = (0, vutils_1.clamp)(value, min, max);
268
- const isHorizontal = this._isHorizontal;
259
+ const isHorizontal = this._isHorizontal, railLen = isHorizontal ? railWidth : railHeight;
269
260
  range || (startValue = min);
270
261
  const trackContainer = vrender_core_1.graphicCreator.group({
271
262
  x: 0,
@@ -280,11 +271,11 @@ class Slider extends base_1.AbstractComponent {
280
271
  const draggableTrack = (0, vutils_1.isObject)(range) && !0 === range.draggableTrack;
281
272
  let cursor;
282
273
  cursor = !1 === slidable ? "default" : !1 === range || !1 === draggableTrack ? "pointer" : getDefaultCursor(isHorizontal);
283
- const startPos = this.calculatePosByValue(startValue, "start"), endPos = this.calculatePosByValue(endValue, range ? "end" : "start"), track = vrender_core_1.graphicCreator.rect(Object.assign({
284
- x: isHorizontal ? Math.min(startPos, endPos) : 0,
285
- y: isHorizontal ? 0 : Math.min(startPos, endPos),
286
- width: isHorizontal ? Math.abs(endPos - startPos) : railWidth,
287
- height: isHorizontal ? railHeight : Math.abs(endPos - startPos),
274
+ const trackWidth = max === min ? railLen : (endValue - startValue) / (max - min) * railLen, startPos = max === min ? 0 : (startValue - min) / (max - min) * railLen, track = vrender_core_1.graphicCreator.rect(Object.assign({
275
+ x: isHorizontal ? startPos : 0,
276
+ y: isHorizontal ? 0 : startPos,
277
+ width: isHorizontal ? trackWidth : railWidth,
278
+ height: isHorizontal ? railHeight : trackWidth,
288
279
  cursor: cursor
289
280
  }, trackStyle));
290
281
  track.name = constant_1.SLIDER_ELEMENT_NAME.track, this._track = track, trackContainer.add(track),
@@ -295,17 +286,17 @@ class Slider extends base_1.AbstractComponent {
295
286
  }
296
287
  _renderHandlerText(value, position) {
297
288
  var _a, _b, _c;
298
- const {align: align, handlerSize: handlerSize = 14, handlerText: handlerText = {}, railHeight: railHeight, railWidth: railWidth, slidable: slidable} = this.attribute, isHorizontal = this._isHorizontal, pos = this.calculatePosByValue(value, position), textSpace = null !== (_a = handlerText.space) && void 0 !== _a ? _a : 4, textStyle = {
289
+ const {align: align, min: min, max: max, handlerSize: handlerSize = 14, handlerText: handlerText = {}, railHeight: railHeight, railWidth: railWidth, slidable: slidable} = this.attribute, isHorizontal = this._isHorizontal, railLen = isHorizontal ? railWidth : railHeight, handlerStart = max === min ? "start" === position ? 0 : railLen : (value - min) / (max - min) * railLen, textSpace = null !== (_a = handlerText.space) && void 0 !== _a ? _a : 4, textStyle = {
299
290
  text: handlerText.formatter ? handlerText.formatter(value) : value.toFixed(null !== (_b = handlerText.precision) && void 0 !== _b ? _b : 0),
300
291
  lineHeight: null === (_c = handlerText.style) || void 0 === _c ? void 0 : _c.lineHeight,
301
292
  cursor: !1 === slidable ? "default" : getDefaultCursor(isHorizontal)
302
293
  };
303
294
  isHorizontal ? "top" === align ? (textStyle.textBaseline = "bottom", textStyle.textAlign = "center",
304
- textStyle.x = pos, textStyle.y = (railHeight - handlerSize) / 2 - textSpace) : (textStyle.textBaseline = "top",
305
- textStyle.textAlign = "center", textStyle.x = pos, textStyle.y = (railHeight + handlerSize) / 2 + textSpace) : "left" === align ? (textStyle.textBaseline = "middle",
295
+ textStyle.x = handlerStart, textStyle.y = (railHeight - handlerSize) / 2 - textSpace) : (textStyle.textBaseline = "top",
296
+ textStyle.textAlign = "center", textStyle.x = handlerStart, textStyle.y = (railHeight + handlerSize) / 2 + textSpace) : "left" === align ? (textStyle.textBaseline = "middle",
306
297
  textStyle.textAlign = "end", textStyle.x = (railWidth - handlerSize) / 2 - textSpace,
307
- textStyle.y = pos) : (textStyle.textBaseline = "middle", textStyle.textAlign = "start",
308
- textStyle.x = (railWidth + handlerSize) / 2 + textSpace, textStyle.y = pos);
298
+ textStyle.y = handlerStart) : (textStyle.textBaseline = "middle", textStyle.textAlign = "start",
299
+ textStyle.x = (railWidth + handlerSize) / 2 + textSpace, textStyle.y = handlerStart);
309
300
  return vrender_core_1.graphicCreator.text(Object.assign(Object.assign({}, textStyle), handlerText.style));
310
301
  }
311
302
  _renderTooltip() {
@@ -341,7 +332,7 @@ class Slider extends base_1.AbstractComponent {
341
332
  _updateTooltip() {
342
333
  var _a, _b;
343
334
  if (!this._tooltipShape && !this._tooltipText || !this._tooltipState) return;
344
- const {railWidth: railWidth, railHeight: railHeight} = this.attribute, railLen = this._isHorizontal ? railWidth : railHeight, coord = this._tooltipState.pos * railLen, coordKey = this._isHorizontal ? "x" : "y";
335
+ const coord = this._isHorizontal ? this._tooltipState.pos * this.attribute.railWidth : this._tooltipState.pos * this.attribute.railHeight, coordKey = this._isHorizontal ? "x" : "y";
345
336
  this._tooltipShape && this._tooltipShape.setAttributes({
346
337
  visible: !0,
347
338
  [coordKey]: coord
@@ -371,7 +362,7 @@ class Slider extends base_1.AbstractComponent {
371
362
  this._mainContainer.addEventListener("pointermove", this._onTooltipUpdate), this._mainContainer.addEventListener("pointerleave", this._onTooltipHide));
372
363
  }
373
364
  _updateTrack() {
374
- const {inverse: inverse, railWidth: railWidth, railHeight: railHeight} = this.attribute, startHandler = this._startHandler, endHandler = this._endHandler;
365
+ const startHandler = this._startHandler, endHandler = this._endHandler;
375
366
  if (this._isHorizontal) {
376
367
  const startHandlerPos = null == startHandler ? void 0 : startHandler.attribute.x;
377
368
  if (endHandler) {
@@ -380,10 +371,7 @@ class Slider extends base_1.AbstractComponent {
380
371
  x: Math.min(startHandlerPos, endHandlerPos),
381
372
  width: Math.abs(startHandlerPos - endHandlerPos)
382
373
  });
383
- } else inverse ? this._track.setAttributes({
384
- x: startHandlerPos,
385
- width: railWidth - startHandlerPos
386
- }) : this._track.setAttributes({
374
+ } else this._track.setAttributes({
387
375
  width: startHandlerPos
388
376
  });
389
377
  } else {
@@ -394,10 +382,7 @@ class Slider extends base_1.AbstractComponent {
394
382
  y: Math.min(startHandlerPos, endHandlerPos),
395
383
  height: Math.abs(startHandlerPos - endHandlerPos)
396
384
  });
397
- } else inverse ? this._track.setAttributes({
398
- y: startHandlerPos,
399
- height: railHeight - startHandlerPos
400
- }) : this._track.setAttributes({
385
+ } else this._track.setAttributes({
401
386
  height: startHandlerPos
402
387
  });
403
388
  }