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

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 (323) hide show
  1. package/cjs/axis/base.js +21 -9
  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 +1 -5
  6. package/cjs/axis/grid/base.js.map +1 -1
  7. package/cjs/axis/index.d.ts +1 -0
  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 +2 -4
  13. package/cjs/axis/mixin/circle.js.map +1 -1
  14. package/cjs/axis/overlap/auto-limit.js +8 -13
  15. package/cjs/axis/overlap/auto-limit.js.map +1 -1
  16. package/cjs/axis/util.d.ts +5 -2
  17. package/cjs/axis/util.js +18 -5
  18. package/cjs/axis/util.js.map +1 -1
  19. package/cjs/brush/brush.js +21 -14
  20. package/cjs/brush/brush.js.map +1 -1
  21. package/cjs/checkbox/checkbox.d.ts +3 -3
  22. package/cjs/checkbox/checkbox.js +12 -12
  23. package/cjs/checkbox/checkbox.js.map +1 -1
  24. package/cjs/checkbox/register.js +1 -1
  25. package/cjs/checkbox/register.js.map +1 -1
  26. package/cjs/checkbox/type.d.ts +2 -2
  27. package/cjs/checkbox/type.js.map +1 -1
  28. package/cjs/data-zoom/data-zoom.js +12 -6
  29. package/cjs/data-zoom/data-zoom.js.map +1 -1
  30. package/cjs/index.d.ts +2 -1
  31. package/cjs/index.js +3 -2
  32. package/cjs/index.js.map +1 -1
  33. package/cjs/indicator/indicator.js +3 -3
  34. package/cjs/indicator/indicator.js.map +1 -1
  35. package/cjs/label/arc.d.ts +2 -2
  36. package/cjs/label/base.d.ts +2 -2
  37. package/cjs/label/base.js +3 -1
  38. package/cjs/label/base.js.map +1 -1
  39. package/cjs/legend/color/color.js +7 -5
  40. package/cjs/legend/color/color.js.map +1 -1
  41. package/cjs/legend/discrete/discrete.js +4 -2
  42. package/cjs/legend/discrete/discrete.js.map +1 -1
  43. package/cjs/legend/size/size.js +6 -4
  44. package/cjs/legend/size/size.js.map +1 -1
  45. package/cjs/marker/area.d.ts +4 -14
  46. package/cjs/marker/area.js +21 -34
  47. package/cjs/marker/area.js.map +1 -1
  48. package/cjs/marker/base.d.ts +3 -21
  49. package/cjs/marker/base.js +5 -40
  50. package/cjs/marker/base.js.map +1 -1
  51. package/cjs/marker/config.d.ts +6 -79
  52. package/cjs/marker/config.js +37 -77
  53. package/cjs/marker/config.js.map +1 -1
  54. package/cjs/marker/index.d.ts +0 -2
  55. package/cjs/marker/index.js +1 -2
  56. package/cjs/marker/index.js.map +1 -1
  57. package/cjs/marker/line.d.ts +12 -24
  58. package/cjs/marker/line.js +45 -111
  59. package/cjs/marker/line.js.map +1 -1
  60. package/cjs/marker/point.d.ts +3 -8
  61. package/cjs/marker/point.js +9 -33
  62. package/cjs/marker/point.js.map +1 -1
  63. package/cjs/marker/register.d.ts +0 -2
  64. package/cjs/marker/register.js +2 -11
  65. package/cjs/marker/register.js.map +1 -1
  66. package/cjs/marker/type.d.ts +12 -102
  67. package/cjs/marker/type.js +2 -8
  68. package/cjs/marker/type.js.map +1 -1
  69. package/cjs/marker/util.js +3 -0
  70. package/cjs/marker/util.js.map +1 -0
  71. package/cjs/pager/pager.js +2 -2
  72. package/cjs/pager/pager.js.map +1 -1
  73. package/cjs/player/base-player.d.ts +2 -0
  74. package/cjs/player/base-player.js +11 -6
  75. package/cjs/player/base-player.js.map +1 -1
  76. package/cjs/player/continuous-player.d.ts +1 -1
  77. package/cjs/player/continuous-player.js +6 -4
  78. package/cjs/player/continuous-player.js.map +1 -1
  79. package/cjs/player/controller/controller.js +4 -4
  80. package/cjs/player/controller/controller.js.map +1 -1
  81. package/cjs/player/discrete-player.d.ts +1 -1
  82. package/cjs/player/discrete-player.js +6 -4
  83. package/cjs/player/discrete-player.js.map +1 -1
  84. package/cjs/poptip/poptip.js +6 -4
  85. package/cjs/poptip/poptip.js.map +1 -1
  86. package/cjs/poptip/register.js +2 -2
  87. package/cjs/poptip/register.js.map +1 -1
  88. package/cjs/radio/index.d.ts +2 -0
  89. package/cjs/radio/index.js +21 -0
  90. package/cjs/radio/index.js.map +1 -0
  91. package/cjs/radio/radio.d.ts +16 -0
  92. package/cjs/radio/radio.js +89 -0
  93. package/cjs/radio/radio.js.map +1 -0
  94. package/cjs/radio/register.d.ts +1 -0
  95. package/cjs/radio/register.js +15 -0
  96. package/cjs/radio/register.js.map +1 -0
  97. package/cjs/radio/type.d.ts +21 -0
  98. package/cjs/radio/type.js +6 -0
  99. package/cjs/radio/type.js.map +1 -0
  100. package/cjs/segment/index.d.ts +0 -1
  101. package/cjs/segment/index.js +1 -2
  102. package/cjs/segment/index.js.map +1 -1
  103. package/cjs/segment/register.d.ts +1 -2
  104. package/cjs/segment/register.js +3 -8
  105. package/cjs/segment/register.js.map +1 -1
  106. package/cjs/segment/segment.d.ts +7 -9
  107. package/cjs/segment/segment.js +8 -12
  108. package/cjs/segment/segment.js.map +1 -1
  109. package/cjs/segment/type.d.ts +4 -24
  110. package/cjs/segment/type.js.map +1 -1
  111. package/cjs/slider/slider.d.ts +2 -0
  112. package/cjs/slider/slider.js +60 -42
  113. package/cjs/slider/slider.js.map +1 -1
  114. package/cjs/slider/type.d.ts +1 -0
  115. package/cjs/slider/type.js.map +1 -1
  116. package/cjs/tag/tag.d.ts +0 -5
  117. package/cjs/tag/tag.js +5 -14
  118. package/cjs/tag/tag.js.map +1 -1
  119. package/cjs/title/register.js +1 -2
  120. package/cjs/title/register.js.map +1 -1
  121. package/cjs/title/title.js +6 -4
  122. package/cjs/title/title.js.map +1 -1
  123. package/cjs/util/text.d.ts +1 -1
  124. package/cjs/util/text.js +6 -7
  125. package/cjs/util/text.js.map +1 -1
  126. package/es/axis/base.js +23 -13
  127. package/es/axis/base.js.map +1 -1
  128. package/es/axis/circle.js +2 -2
  129. package/es/axis/circle.js.map +1 -1
  130. package/es/axis/grid/base.js +2 -6
  131. package/es/axis/grid/base.js.map +1 -1
  132. package/es/axis/index.d.ts +1 -0
  133. package/es/axis/index.js +2 -0
  134. package/es/axis/index.js.map +1 -1
  135. package/es/axis/line.js +5 -5
  136. package/es/axis/line.js.map +1 -1
  137. package/es/axis/mixin/circle.js +2 -3
  138. package/es/axis/mixin/circle.js.map +1 -1
  139. package/es/axis/overlap/auto-limit.js +9 -13
  140. package/es/axis/overlap/auto-limit.js.map +1 -1
  141. package/es/axis/util.d.ts +5 -2
  142. package/es/axis/util.js +15 -1
  143. package/es/axis/util.js.map +1 -1
  144. package/es/brush/brush.js +21 -14
  145. package/es/brush/brush.js.map +1 -1
  146. package/es/checkbox/checkbox.d.ts +3 -3
  147. package/es/checkbox/checkbox.js +13 -12
  148. package/es/checkbox/checkbox.js.map +1 -1
  149. package/es/checkbox/register.js +2 -2
  150. package/es/checkbox/register.js.map +1 -1
  151. package/es/checkbox/type.d.ts +2 -2
  152. package/es/checkbox/type.js.map +1 -1
  153. package/es/data-zoom/data-zoom.js +12 -6
  154. package/es/data-zoom/data-zoom.js.map +1 -1
  155. package/es/index.d.ts +2 -1
  156. package/es/index.js +3 -1
  157. package/es/index.js.map +1 -1
  158. package/es/indicator/indicator.js +3 -3
  159. package/es/indicator/indicator.js.map +1 -1
  160. package/es/label/arc.d.ts +2 -2
  161. package/es/label/base.d.ts +2 -2
  162. package/es/label/base.js +3 -1
  163. package/es/label/base.js.map +1 -1
  164. package/es/legend/color/color.js +7 -5
  165. package/es/legend/color/color.js.map +1 -1
  166. package/es/legend/discrete/discrete.js +4 -2
  167. package/es/legend/discrete/discrete.js.map +1 -1
  168. package/es/legend/size/size.js +6 -4
  169. package/es/legend/size/size.js.map +1 -1
  170. package/es/marker/area.d.ts +4 -14
  171. package/es/marker/area.js +19 -36
  172. package/es/marker/area.js.map +1 -1
  173. package/es/marker/base.d.ts +3 -21
  174. package/es/marker/base.js +4 -43
  175. package/es/marker/base.js.map +1 -1
  176. package/es/marker/config.d.ts +6 -79
  177. package/es/marker/config.js +37 -79
  178. package/es/marker/config.js.map +1 -1
  179. package/es/marker/index.d.ts +0 -2
  180. package/es/marker/index.js +0 -4
  181. package/es/marker/index.js.map +1 -1
  182. package/es/marker/line.d.ts +12 -24
  183. package/es/marker/line.js +48 -116
  184. package/es/marker/line.js.map +1 -1
  185. package/es/marker/point.d.ts +3 -8
  186. package/es/marker/point.js +6 -34
  187. package/es/marker/point.js.map +1 -1
  188. package/es/marker/register.d.ts +0 -2
  189. package/es/marker/register.js +2 -10
  190. package/es/marker/register.js.map +1 -1
  191. package/es/marker/type.d.ts +12 -102
  192. package/es/marker/type.js +0 -9
  193. package/es/marker/type.js.map +1 -1
  194. package/es/marker/util.js +3 -0
  195. package/es/marker/util.js.map +1 -0
  196. package/es/pager/pager.js +2 -2
  197. package/es/pager/pager.js.map +1 -1
  198. package/es/player/base-player.d.ts +2 -0
  199. package/es/player/base-player.js +11 -6
  200. package/es/player/base-player.js.map +1 -1
  201. package/es/player/continuous-player.d.ts +1 -1
  202. package/es/player/continuous-player.js +6 -4
  203. package/es/player/continuous-player.js.map +1 -1
  204. package/es/player/controller/controller.js +5 -5
  205. package/es/player/controller/controller.js.map +1 -1
  206. package/es/player/discrete-player.d.ts +1 -1
  207. package/es/player/discrete-player.js +6 -4
  208. package/es/player/discrete-player.js.map +1 -1
  209. package/es/poptip/poptip.js +6 -4
  210. package/es/poptip/poptip.js.map +1 -1
  211. package/es/poptip/register.js +2 -2
  212. package/es/poptip/register.js.map +1 -1
  213. package/es/radio/index.d.ts +2 -0
  214. package/es/radio/index.js +4 -0
  215. package/es/radio/index.js.map +1 -0
  216. package/es/radio/radio.d.ts +16 -0
  217. package/es/radio/radio.js +88 -0
  218. package/es/radio/radio.js.map +1 -0
  219. package/es/radio/register.d.ts +1 -0
  220. package/es/radio/register.js +6 -0
  221. package/es/radio/register.js.map +1 -0
  222. package/es/radio/type.d.ts +21 -0
  223. package/es/radio/type.js +2 -0
  224. package/es/radio/type.js.map +1 -0
  225. package/es/segment/index.d.ts +0 -1
  226. package/es/segment/index.js +0 -2
  227. package/es/segment/index.js.map +1 -1
  228. package/es/segment/register.d.ts +1 -2
  229. package/es/segment/register.js +2 -6
  230. package/es/segment/register.js.map +1 -1
  231. package/es/segment/segment.d.ts +7 -9
  232. package/es/segment/segment.js +8 -11
  233. package/es/segment/segment.js.map +1 -1
  234. package/es/segment/type.d.ts +4 -24
  235. package/es/segment/type.js.map +1 -1
  236. package/es/slider/slider.d.ts +2 -0
  237. package/es/slider/slider.js +57 -40
  238. package/es/slider/slider.js.map +1 -1
  239. package/es/slider/type.d.ts +1 -0
  240. package/es/slider/type.js.map +1 -1
  241. package/es/tag/tag.d.ts +0 -5
  242. package/es/tag/tag.js +5 -14
  243. package/es/tag/tag.js.map +1 -1
  244. package/es/title/register.js +2 -2
  245. package/es/title/register.js.map +1 -1
  246. package/es/title/title.js +6 -4
  247. package/es/title/title.js.map +1 -1
  248. package/es/util/text.d.ts +1 -1
  249. package/es/util/text.js +6 -7
  250. package/es/util/text.js.map +1 -1
  251. package/package.json +3 -3
  252. package/cjs/marker/animate/animate.d.ts +0 -13
  253. package/cjs/marker/animate/animate.js +0 -92
  254. package/cjs/marker/animate/animate.js.map +0 -1
  255. package/cjs/marker/animate/call-in.d.ts +0 -4
  256. package/cjs/marker/animate/call-in.js +0 -27
  257. package/cjs/marker/animate/call-in.js.map +0 -1
  258. package/cjs/marker/animate/clip-in.d.ts +0 -4
  259. package/cjs/marker/animate/clip-in.js +0 -23
  260. package/cjs/marker/animate/clip-in.js.map +0 -1
  261. package/cjs/marker/animate/common.d.ts +0 -9
  262. package/cjs/marker/animate/common.js +0 -48
  263. package/cjs/marker/animate/common.js.map +0 -1
  264. package/cjs/marker/animate/fade-in.d.ts +0 -7
  265. package/cjs/marker/animate/fade-in.js +0 -30
  266. package/cjs/marker/animate/fade-in.js.map +0 -1
  267. package/cjs/marker/animate/fade-out.d.ts +0 -7
  268. package/cjs/marker/animate/fade-out.js +0 -30
  269. package/cjs/marker/animate/fade-out.js.map +0 -1
  270. package/cjs/marker/animate/index.js +0 -3
  271. package/cjs/marker/animate/index.js.map +0 -1
  272. package/cjs/marker/arc-area.d.ts +0 -55
  273. package/cjs/marker/arc-area.js +0 -131
  274. package/cjs/marker/arc-area.js.map +0 -1
  275. package/cjs/marker/arc-line.d.ts +0 -25
  276. package/cjs/marker/arc-line.js +0 -106
  277. package/cjs/marker/arc-line.js.map +0 -1
  278. package/cjs/marker/common-line.d.ts +0 -22
  279. package/cjs/marker/common-line.js +0 -56
  280. package/cjs/marker/common-line.js.map +0 -1
  281. package/cjs/segment/arc-segment.d.ts +0 -13
  282. package/cjs/segment/arc-segment.js +0 -51
  283. package/cjs/segment/arc-segment.js.map +0 -1
  284. package/cjs/util/interaction.d.ts +0 -4
  285. package/cjs/util/interaction.js +0 -37
  286. package/cjs/util/interaction.js.map +0 -1
  287. package/es/marker/animate/animate.d.ts +0 -13
  288. package/es/marker/animate/animate.js +0 -92
  289. package/es/marker/animate/animate.js.map +0 -1
  290. package/es/marker/animate/call-in.d.ts +0 -4
  291. package/es/marker/animate/call-in.js +0 -17
  292. package/es/marker/animate/call-in.js.map +0 -1
  293. package/es/marker/animate/clip-in.d.ts +0 -4
  294. package/es/marker/animate/clip-in.js +0 -15
  295. package/es/marker/animate/clip-in.js.map +0 -1
  296. package/es/marker/animate/common.d.ts +0 -9
  297. package/es/marker/animate/common.js +0 -39
  298. package/es/marker/animate/common.js.map +0 -1
  299. package/es/marker/animate/fade-in.d.ts +0 -7
  300. package/es/marker/animate/fade-in.js +0 -20
  301. package/es/marker/animate/fade-in.js.map +0 -1
  302. package/es/marker/animate/fade-out.d.ts +0 -7
  303. package/es/marker/animate/fade-out.js +0 -20
  304. package/es/marker/animate/fade-out.js.map +0 -1
  305. package/es/marker/animate/index.js +0 -3
  306. package/es/marker/animate/index.js.map +0 -1
  307. package/es/marker/arc-area.d.ts +0 -55
  308. package/es/marker/arc-area.js +0 -143
  309. package/es/marker/arc-area.js.map +0 -1
  310. package/es/marker/arc-line.d.ts +0 -25
  311. package/es/marker/arc-line.js +0 -114
  312. package/es/marker/arc-line.js.map +0 -1
  313. package/es/marker/common-line.d.ts +0 -22
  314. package/es/marker/common-line.js +0 -58
  315. package/es/marker/common-line.js.map +0 -1
  316. package/es/segment/arc-segment.d.ts +0 -13
  317. package/es/segment/arc-segment.js +0 -49
  318. package/es/segment/arc-segment.js.map +0 -1
  319. package/es/util/interaction.d.ts +0 -4
  320. package/es/util/interaction.js +0 -30
  321. package/es/util/interaction.js.map +0 -1
  322. /package/cjs/marker/{animate/index.d.ts → util.d.ts} +0 -0
  323. /package/es/marker/{animate/index.d.ts → util.d.ts} +0 -0
@@ -0,0 +1,21 @@
1
+ import type { Cursor, IArcGraphicAttribute, IColor, IGroupGraphicAttribute, IWrapTextGraphicAttribute } from '@visactor/vrender-core';
2
+ export type RadioText = {
3
+ disableFill?: IColor;
4
+ } & IWrapTextGraphicAttribute;
5
+ export type CircleStyle = {
6
+ disableFill?: IColor;
7
+ checkedFill?: IColor;
8
+ checkedStroke?: IColor;
9
+ disableCheckedFill?: IColor;
10
+ disableCheckedStroke?: IColor;
11
+ } & IArcGraphicAttribute;
12
+ export type RadioAttributes = IGroupGraphicAttribute & {
13
+ id?: string;
14
+ interactive?: boolean;
15
+ disabled?: boolean;
16
+ checked?: boolean;
17
+ text?: RadioText;
18
+ circle?: CircleStyle;
19
+ disableCursor?: Cursor;
20
+ spaceBetweenTextAndIcon?: number;
21
+ };
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ });
6
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/radio/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n Cursor,\n IArcGraphicAttribute,\n IColor,\n IGroupGraphicAttribute,\n IWrapTextGraphicAttribute\n} from '@visactor/vrender-core';\n\nexport type RadioText = {\n disableFill?: IColor;\n} & IWrapTextGraphicAttribute;\n\nexport type CircleStyle = {\n disableFill?: IColor;\n checkedFill?: IColor;\n checkedStroke?: IColor;\n disableCheckedFill?: IColor;\n disableCheckedStroke?: IColor;\n} & IArcGraphicAttribute;\n\nexport type RadioAttributes = IGroupGraphicAttribute & {\n id?: string;\n\n interactive?: boolean;\n disabled?: boolean;\n checked?: boolean;\n\n /**\n * 图例文字\n */\n text?: RadioText;\n /**\n * 图例选中图标\n */\n circle?: CircleStyle;\n /**\n * 图例选中图标\n */\n disableCursor?: Cursor;\n spaceBetweenTextAndIcon?: number;\n};\n"]}
@@ -1,3 +1,2 @@
1
1
  export * from './segment';
2
- export * from './arc-segment';
3
2
  export * from './type';
@@ -17,6 +17,5 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
17
17
 
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
- }), __exportStar(require("./segment"), exports), __exportStar(require("./arc-segment"), exports),
21
- __exportStar(require("./type"), exports);
20
+ }), __exportStar(require("./segment"), exports), __exportStar(require("./type"), exports);
22
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,4CAA0B;AAC1B,gDAA8B;AAC9B,yCAAuB","file":"index.js","sourcesContent":["/**\n * @description 线,两端可带箭头等 symbol\n */\nexport * from './segment';\nexport * from './arc-segment';\nexport * from './type';\n"]}
1
+ {"version":3,"sources":["../src/segment/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAGA,4CAA0B;AAC1B,yCAAuB","file":"index.js","sourcesContent":["/**\n * @description 线,两端可带箭头等 symbol\n */\nexport * from './segment';\nexport * from './type';\n"]}
@@ -1,2 +1 @@
1
- export declare function loadSegmentComponent(enableAnimation?: boolean): void;
2
- export declare function loadArcSegmentComponent(enableAnimation?: boolean): void;
1
+ export declare function loadSegmentComponent(): void;
@@ -2,19 +2,14 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.loadArcSegmentComponent = exports.loadSegmentComponent = void 0;
5
+ }), exports.loadSegmentComponent = void 0;
6
6
 
7
7
  const vrender_kits_1 = require("@visactor/vrender-kits");
8
8
 
9
- function loadSegmentComponent(enableAnimation = !1) {
9
+ function loadSegmentComponent() {
10
10
  (0, vrender_kits_1.registerGroup)(), (0, vrender_kits_1.registerLine)(), (0, vrender_kits_1.registerPolygon)(),
11
11
  (0, vrender_kits_1.registerSymbol)();
12
12
  }
13
13
 
14
- function loadArcSegmentComponent(enableAnimation = !1) {
15
- (0, vrender_kits_1.registerGroup)(), (0, vrender_kits_1.registerLine)(), (0, vrender_kits_1.registerArc)(),
16
- (0, vrender_kits_1.registerSymbol)();
17
- }
18
-
19
- exports.loadSegmentComponent = loadSegmentComponent, exports.loadArcSegmentComponent = loadArcSegmentComponent;
14
+ exports.loadSegmentComponent = loadSegmentComponent;
20
15
  //# sourceMappingURL=register.js.map
@@ -1 +1 @@
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
+ {"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,26 +1,24 @@
1
- import type { ILine, ISymbol } from '@visactor/vrender-core';
1
+ import type { ISymbol } from '@visactor/vrender-core';
2
2
  import { AbstractComponent } from '../core/base';
3
- import type { SegmentAttributes, SymbolAttributes } from './type';
3
+ import type { SegmentAttributes } 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
- lines?: ILine[];
11
- protected _startAngle: number;
10
+ private _startAngle;
12
11
  getStartAngle(): number;
13
- protected _endAngle: number;
12
+ private _endAngle;
14
13
  getEndAngle(): number;
15
- protected _mainSegmentPoints: Point[];
14
+ private _mainSegmentPoints;
16
15
  getMainSegmentPoints(): Point[];
17
16
  static defaultAttributes: Partial<SegmentAttributes>;
18
17
  constructor(attributes: SegmentAttributes, options?: ComponentOptions);
19
18
  protected render(): void;
20
- protected _computeRotate(angle: number): number;
21
- protected _renderSymbol(attribute: SymbolAttributes, points: Point[], dim: string): ISymbol | undefined;
19
+ private _renderSymbol;
22
20
  private _getMainSegmentPoints;
23
21
  private _clipPoints;
24
22
  private _computeLineAngle;
25
- protected _reset(): void;
23
+ private _reset;
26
24
  }
@@ -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", this.lines = [];
23
+ this.name = "segment";
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 points = this._getMainSegmentPoints(), startSymbolShape = this._renderSymbol(startSymbol, points, "start"), endSymbolShape = this._renderSymbol(endSymbol, points, "end");
30
+ const startSymbolShape = this._renderSymbol(startSymbol, "start"), endSymbolShape = this._renderSymbol(endSymbol, "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), this.lines.push(line);
46
+ this.add(line);
47
47
  }));
48
48
  } else {
49
49
  let lineCreator = vrender_core_1.graphicCreator.line;
@@ -55,13 +55,11 @@ 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), this.lines.push(line);
58
+ this.add(line);
59
59
  }
60
60
  }
61
- _computeRotate(angle) {
62
- return angle + Math.PI / 2;
63
- }
64
- _renderSymbol(attribute, points, dim) {
61
+ _renderSymbol(attribute, dim) {
62
+ const points = this._getMainSegmentPoints();
65
63
  if (!points.length) return;
66
64
  const {autoRotate: autoRotate = !0} = attribute;
67
65
  let symbol;
@@ -71,18 +69,16 @@ class Segment extends base_1.AbstractComponent {
71
69
  "start" === dim ? (position = {
72
70
  x: start.x + ((0, vutils_1.isValidNumber)(startAngle) ? refX * Math.cos(startAngle) + refY * Math.cos(startAngle - Math.PI / 2) : 0),
73
71
  y: start.y + ((0, vutils_1.isValidNumber)(startAngle) ? refX * Math.sin(startAngle) + refY * Math.sin(startAngle - Math.PI / 2) : 0)
74
- }, rotate = this._computeRotate(startAngle)) : (position = {
72
+ }, rotate = startAngle + Math.PI / 2) : (position = {
75
73
  x: end.x + ((0, vutils_1.isValidNumber)(endAngle) ? refX * Math.cos(endAngle) + refY * Math.cos(endAngle - Math.PI / 2) : 0),
76
74
  y: end.y + ((0, vutils_1.isValidNumber)(endAngle) ? refX * Math.sin(endAngle) + refY * Math.sin(endAngle - Math.PI / 2) : 0)
77
- }, rotate = this._computeRotate(endAngle)), symbol = vrender_core_1.graphicCreator.symbol(Object.assign(Object.assign(Object.assign({}, position), {
75
+ }, rotate = endAngle + Math.PI / 2), symbol = vrender_core_1.graphicCreator.symbol(Object.assign(Object.assign(Object.assign({}, position), {
78
76
  symbolType: symbolType,
79
77
  size: size,
80
78
  angle: autoRotate ? rotate + refAngle : 0,
81
79
  strokeBoundsBuffer: 0
82
80
  }), style)), symbol.name = `${this.name}-${dim}-symbol`, symbol.id = this._getNodeId(`${dim}-symbol`),
83
81
  (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),
86
82
  this.add(symbol);
87
83
  }
88
84
  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 { 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
+ {"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,4 +1,4 @@
1
- import type { IArcGraphicAttribute, IGraphicAttribute, IGroupGraphicAttribute, ILineGraphicAttribute, ISymbolGraphicAttribute, SymbolType } from '@visactor/vrender-core';
1
+ import type { 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,37 +11,17 @@ export type SymbolAttributes = {
11
11
  clip?: boolean;
12
12
  style?: Partial<IGraphicAttribute>;
13
13
  };
14
- export interface CommonSegmentAttributes extends IGroupGraphicAttribute {
14
+ export interface SegmentAttributes extends IGroupGraphicAttribute {
15
15
  visible?: boolean;
16
- startSymbol?: SymbolAttributes;
17
- endSymbol?: SymbolAttributes;
18
- }
19
- export interface SegmentAttributes extends CommonSegmentAttributes {
20
16
  multiSegment?: boolean;
21
17
  mainSegmentIndex?: number;
22
18
  points: Point[] | Point[][];
19
+ startSymbol?: SymbolAttributes;
20
+ endSymbol?: SymbolAttributes;
23
21
  lineStyle?: ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[];
24
22
  state?: {
25
23
  line?: State<ILineGraphicWithCornerRadius | Partial<ILineGraphicAttribute>[]>;
26
24
  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>>;
45
25
  };
46
26
  }
47
27
  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 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"]}
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"]}
@@ -92,6 +92,8 @@ 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;
95
97
  setValue(value: number | number[]): void;
96
98
  render(): void;
97
99
  protected _renderRail(container: IGroup): import("@visactor/vrender-core").IRect;
@@ -42,8 +42,9 @@ 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 {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,
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),
47
48
  this._updateTooltip(), this._dispatchTooltipEvent("sliderTooltipUpdate"));
48
49
  }, this._onTooltipHide = () => {
49
50
  const {tooltip: tooltip} = this.attribute;
@@ -67,7 +68,7 @@ class Slider extends base_1.AbstractComponent {
67
68
  railLen = railWidth) : (currentPos = e.clientY, delta = currentPos - this._prePos,
68
69
  originPos = null === (_a = this._currentHandler) || void 0 === _a ? void 0 : _a.attribute.y,
69
70
  railLen = railHeight);
70
- const newPos = (0, vutils_1.clamp)(originPos + delta, 0, railLen), currentValue = newPos / railLen * (max - min) + min;
71
+ const newPos = (0, vutils_1.clamp)(originPos + delta, 0, railLen), currentValue = this.calculateValueByPos(newPos);
71
72
  "text" === this._currentHandler.type ? this._updateHandlerText(this._currentHandler, newPos, currentValue) : this._updateHandler(this._currentHandler, newPos, currentValue),
72
73
  this._updateTrack(), this._prePos = currentPos, this._dispatchChangeEvent();
73
74
  }, this._onHandlerPointerUp = e => {
@@ -85,7 +86,7 @@ class Slider extends base_1.AbstractComponent {
85
86
  }), this.stage.addEventListener("pointerup", this._onTrackPointerUp), this.stage.addEventListener("pointerupoutside", this._onTrackPointerUp));
86
87
  }, this._onTrackPointerMove = e => {
87
88
  e.stopPropagation(), this._isChanging = !0;
88
- const {railWidth: railWidth, railHeight: railHeight, min: min, max: max} = this.attribute;
89
+ const {railWidth: railWidth, railHeight: railHeight, min: min, max: max, inverse: inverse} = this.attribute;
89
90
  if (max === min) return;
90
91
  const {startHandler: startHandler, endHandler: endHandler} = this._getHandlers();
91
92
  let currentPos, trackLen, railLen;
@@ -94,13 +95,13 @@ class Slider extends base_1.AbstractComponent {
94
95
  railLen = railHeight);
95
96
  const delta = currentPos - this._prePos;
96
97
  if (startHandler) {
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;
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);
99
100
  this._updateHandler(startHandler, newPos, currentValue);
100
101
  }
101
102
  if (endHandler) {
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;
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;
104
105
  this._updateHandler(endHandler, newPos, currentValue), this._track.setAttributes(this._isHorizontal ? {
105
106
  x: Math.min(startHandlerAttribute.x, endHandler.attribute.x),
106
107
  width: Math.abs(startHandlerAttribute.x - endHandler.attribute.x)
@@ -126,7 +127,7 @@ class Slider extends base_1.AbstractComponent {
126
127
  endHandlerPos = null == endHandler ? void 0 : endHandler.attribute.x, railLen = railWidth) : (currentPos = e.viewY - this._rail.globalAABBBounds.y1,
127
128
  startHandlerPos = null == startHandler ? void 0 : startHandler.attribute.y, endHandlerPos = null == endHandler ? void 0 : endHandler.attribute.y,
128
129
  railLen = railHeight);
129
- const currentValue = currentPos / railLen * (max - min) + min;
130
+ const currentValue = this.calculateValueByPos(currentPos);
130
131
  if ((0, vutils_1.isValid)(endHandlerPos)) {
131
132
  const updateHandler = Math.abs(currentPos - startHandlerPos) > Math.abs(currentPos - endHandlerPos) ? endHandler : startHandler;
132
133
  this._updateHandler(updateHandler, currentPos, currentValue);
@@ -134,14 +135,22 @@ class Slider extends base_1.AbstractComponent {
134
135
  this._updateTrack(), this._dispatchChangeEvent();
135
136
  };
136
137
  }
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
+ }
137
148
  setValue(value) {
138
- const {layout: layout, railWidth: railWidth, railHeight: railHeight, min: min, max: max} = this.attribute;
149
+ const {min: min, max: max} = this.attribute;
139
150
  if (max === min) return;
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
- }
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),
145
154
  this._updateTrack();
146
155
  }
147
156
  render() {
@@ -220,29 +229,29 @@ class Slider extends base_1.AbstractComponent {
220
229
  const {range: range, min: min, max: max, handlerSize: handlerSize = 14, handlerStyle: handlerStyle, handlerText: handlerText, railHeight: railHeight, railWidth: railWidth, slidable: slidable} = this.attribute;
221
230
  let {value: value} = this.attribute;
222
231
  (0, vutils_1.isNil)(value) && (value = [ min, max ]);
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,
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,
226
235
  size: handlerSize,
227
236
  strokeBoundsBuffer: 0,
228
237
  cursor: !1 === slidable ? "default" : getDefaultCursor(isHorizontal)
229
238
  }, handlerStyle));
230
239
  if (startHandler.name = constant_1.SLIDER_ELEMENT_NAME.startHandler, this._startHandler = startHandler,
231
- container.add(startHandler), this._currentValue.startPos = handlerStart, handlerTextVisible) {
240
+ container.add(startHandler), this._currentValue.startPos = startPos, handlerTextVisible) {
232
241
  const startHandlerText = this._renderHandlerText(startValue, range ? "start" : "end");
233
242
  startHandlerText.name = constant_1.SLIDER_ELEMENT_NAME.startHandlerText, container.add(startHandlerText),
234
243
  this._startHandlerText = startHandlerText;
235
244
  }
236
245
  if (range) {
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,
246
+ const endPos = this.calculatePosByValue(endValue, "end"), endHandler = this._renderHandler(Object.assign({
247
+ x: isHorizontal ? endPos : railWidth / 2,
248
+ y: isHorizontal ? railHeight / 2 : endPos,
240
249
  size: handlerSize,
241
250
  strokeBoundsBuffer: 0,
242
251
  cursor: !1 === slidable ? "default" : getDefaultCursor(isHorizontal)
243
252
  }, handlerStyle));
244
253
  if (endHandler.name = constant_1.SLIDER_ELEMENT_NAME.endHandler, this._endHandler = endHandler,
245
- container.add(endHandler), this._currentValue.endPos = handlerEnd, handlerTextVisible) {
254
+ container.add(endHandler), this._currentValue.endPos = endPos, handlerTextVisible) {
246
255
  const endHandlerText = this._renderHandlerText(endValue, "end");
247
256
  endHandlerText.name = constant_1.SLIDER_ELEMENT_NAME.endHandlerText, container.add(endHandlerText),
248
257
  this._endHandlerText = endHandlerText;
@@ -256,7 +265,7 @@ class Slider extends base_1.AbstractComponent {
256
265
  const clampValue = (0, vutils_1.clampRange)(value, min, max);
257
266
  startValue = clampValue[0], endValue = clampValue[1];
258
267
  } else startValue = min, endValue = (0, vutils_1.clamp)(value, min, max);
259
- const isHorizontal = this._isHorizontal, railLen = isHorizontal ? railWidth : railHeight;
268
+ const isHorizontal = this._isHorizontal;
260
269
  range || (startValue = min);
261
270
  const trackContainer = vrender_core_1.graphicCreator.group({
262
271
  x: 0,
@@ -271,11 +280,11 @@ class Slider extends base_1.AbstractComponent {
271
280
  const draggableTrack = (0, vutils_1.isObject)(range) && !0 === range.draggableTrack;
272
281
  let cursor;
273
282
  cursor = !1 === slidable ? "default" : !1 === range || !1 === draggableTrack ? "pointer" : getDefaultCursor(isHorizontal);
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,
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),
279
288
  cursor: cursor
280
289
  }, trackStyle));
281
290
  track.name = constant_1.SLIDER_ELEMENT_NAME.track, this._track = track, trackContainer.add(track),
@@ -286,17 +295,17 @@ class Slider extends base_1.AbstractComponent {
286
295
  }
287
296
  _renderHandlerText(value, position) {
288
297
  var _a, _b, _c;
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 = {
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 = {
290
299
  text: handlerText.formatter ? handlerText.formatter(value) : value.toFixed(null !== (_b = handlerText.precision) && void 0 !== _b ? _b : 0),
291
300
  lineHeight: null === (_c = handlerText.style) || void 0 === _c ? void 0 : _c.lineHeight,
292
301
  cursor: !1 === slidable ? "default" : getDefaultCursor(isHorizontal)
293
302
  };
294
303
  isHorizontal ? "top" === align ? (textStyle.textBaseline = "bottom", textStyle.textAlign = "center",
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",
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",
297
306
  textStyle.textAlign = "end", textStyle.x = (railWidth - handlerSize) / 2 - textSpace,
298
- textStyle.y = handlerStart) : (textStyle.textBaseline = "middle", textStyle.textAlign = "start",
299
- textStyle.x = (railWidth + handlerSize) / 2 + textSpace, textStyle.y = handlerStart);
307
+ textStyle.y = pos) : (textStyle.textBaseline = "middle", textStyle.textAlign = "start",
308
+ textStyle.x = (railWidth + handlerSize) / 2 + textSpace, textStyle.y = pos);
300
309
  return vrender_core_1.graphicCreator.text(Object.assign(Object.assign({}, textStyle), handlerText.style));
301
310
  }
302
311
  _renderTooltip() {
@@ -332,7 +341,7 @@ class Slider extends base_1.AbstractComponent {
332
341
  _updateTooltip() {
333
342
  var _a, _b;
334
343
  if (!this._tooltipShape && !this._tooltipText || !this._tooltipState) return;
335
- const coord = this._isHorizontal ? this._tooltipState.pos * this.attribute.railWidth : this._tooltipState.pos * this.attribute.railHeight, coordKey = this._isHorizontal ? "x" : "y";
344
+ const {railWidth: railWidth, railHeight: railHeight} = this.attribute, railLen = this._isHorizontal ? railWidth : railHeight, coord = this._tooltipState.pos * railLen, coordKey = this._isHorizontal ? "x" : "y";
336
345
  this._tooltipShape && this._tooltipShape.setAttributes({
337
346
  visible: !0,
338
347
  [coordKey]: coord
@@ -362,7 +371,7 @@ class Slider extends base_1.AbstractComponent {
362
371
  this._mainContainer.addEventListener("pointermove", this._onTooltipUpdate), this._mainContainer.addEventListener("pointerleave", this._onTooltipHide));
363
372
  }
364
373
  _updateTrack() {
365
- const startHandler = this._startHandler, endHandler = this._endHandler;
374
+ const {inverse: inverse, railWidth: railWidth, railHeight: railHeight} = this.attribute, startHandler = this._startHandler, endHandler = this._endHandler;
366
375
  if (this._isHorizontal) {
367
376
  const startHandlerPos = null == startHandler ? void 0 : startHandler.attribute.x;
368
377
  if (endHandler) {
@@ -371,7 +380,10 @@ class Slider extends base_1.AbstractComponent {
371
380
  x: Math.min(startHandlerPos, endHandlerPos),
372
381
  width: Math.abs(startHandlerPos - endHandlerPos)
373
382
  });
374
- } else this._track.setAttributes({
383
+ } else inverse ? this._track.setAttributes({
384
+ x: startHandlerPos,
385
+ width: railWidth - startHandlerPos
386
+ }) : this._track.setAttributes({
375
387
  width: startHandlerPos
376
388
  });
377
389
  } else {
@@ -382,7 +394,10 @@ class Slider extends base_1.AbstractComponent {
382
394
  y: Math.min(startHandlerPos, endHandlerPos),
383
395
  height: Math.abs(startHandlerPos - endHandlerPos)
384
396
  });
385
- } else this._track.setAttributes({
397
+ } else inverse ? this._track.setAttributes({
398
+ y: startHandlerPos,
399
+ height: railHeight - startHandlerPos
400
+ }) : this._track.setAttributes({
386
401
  height: startHandlerPos
387
402
  });
388
403
  }
@@ -432,10 +447,13 @@ class Slider extends base_1.AbstractComponent {
432
447
  });
433
448
  }
434
449
  _getHandlers() {
435
- let temp, startHandler = this._startHandler, endHandler = this._endHandler;
436
- return this._isHorizontal ? endHandler && endHandler.attribute.x < (null == startHandler ? void 0 : startHandler.attribute.x) && (temp = startHandler,
437
- startHandler = endHandler, endHandler = temp) : endHandler && endHandler.attribute.y < (null == startHandler ? void 0 : startHandler.attribute.y) && (temp = startHandler,
438
- startHandler = endHandler, endHandler = temp), {
450
+ const {inverse: inverse} = this.attribute;
451
+ let startHandler = this._startHandler, endHandler = this._endHandler;
452
+ return endHandler ? (this._isHorizontal ? (!inverse && endHandler.attribute.x < (null == startHandler ? void 0 : startHandler.attribute.x) || inverse && endHandler.attribute.x > (null == startHandler ? void 0 : startHandler.attribute.x)) && ([startHandler, endHandler] = [ endHandler, startHandler ]) : (!inverse && endHandler.attribute.y < (null == startHandler ? void 0 : startHandler.attribute.y) || inverse && endHandler.attribute.y > (null == startHandler ? void 0 : startHandler.attribute.y)) && ([startHandler, endHandler] = [ endHandler, startHandler ]),
453
+ {
454
+ startHandler: startHandler,
455
+ endHandler: endHandler
456
+ }) : {
439
457
  startHandler: startHandler,
440
458
  endHandler: endHandler
441
459
  };