@visactor/vchart 1.12.0-alpha.0 → 1.12.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +7713 -7064
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/animate-manager.js +1 -1
  6. package/cjs/animation/animate-manager.js.map +1 -1
  7. package/cjs/animation/config.js +4 -1
  8. package/cjs/animation/config.js.map +1 -1
  9. package/cjs/chart/base/base-chart.d.ts +1 -0
  10. package/cjs/chart/base/base-chart.js +18 -9
  11. package/cjs/chart/base/base-chart.js.map +1 -1
  12. package/cjs/chart/cartesian/cartesian-transformer.d.ts +4 -0
  13. package/cjs/chart/cartesian/cartesian-transformer.js +25 -10
  14. package/cjs/chart/cartesian/cartesian-transformer.js.map +1 -1
  15. package/cjs/chart/index.d.ts +5 -3
  16. package/cjs/chart/index.js +16 -2
  17. package/cjs/chart/index.js.map +1 -1
  18. package/cjs/chart/interface/type.d.ts +2 -1
  19. package/cjs/chart/interface/type.js +2 -1
  20. package/cjs/chart/interface/type.js.map +1 -1
  21. package/cjs/chart/mosaic/index.d.ts +3 -0
  22. package/cjs/chart/mosaic/index.js +22 -0
  23. package/cjs/chart/mosaic/index.js.map +1 -0
  24. package/cjs/chart/mosaic/interface.d.ts +7 -0
  25. package/cjs/chart/mosaic/interface.js +6 -0
  26. package/cjs/chart/mosaic/interface.js.map +1 -0
  27. package/cjs/chart/mosaic/mosaic-transformer.d.ts +9 -0
  28. package/cjs/chart/mosaic/mosaic-transformer.js +43 -0
  29. package/cjs/chart/mosaic/mosaic-transformer.js.map +1 -0
  30. package/cjs/chart/mosaic/mosaic.d.ts +20 -0
  31. package/cjs/chart/mosaic/mosaic.js +39 -0
  32. package/cjs/chart/mosaic/mosaic.js.map +1 -0
  33. package/cjs/chart/sankey/sankey.js +5 -3
  34. package/cjs/chart/sankey/sankey.js.map +1 -1
  35. package/cjs/chart/stack.d.ts +11 -1
  36. package/cjs/chart/stack.js +5 -4
  37. package/cjs/chart/stack.js.map +1 -1
  38. package/cjs/compile/grammar-item.js +2 -1
  39. package/cjs/compile/mark/compilable-mark.js +6 -4
  40. package/cjs/compile/mark/compilable-mark.js.map +1 -1
  41. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  42. package/cjs/component/axis/cartesian/band-axis.d.ts +2 -2
  43. package/cjs/component/axis/cartesian/band-axis.js +2 -2
  44. package/cjs/component/axis/cartesian/band-axis.js.map +1 -1
  45. package/cjs/component/axis/polar/axis.d.ts +1 -1
  46. package/cjs/component/axis/polar/axis.js +1 -1
  47. package/cjs/component/axis/polar/axis.js.map +1 -1
  48. package/cjs/component/axis/polar/band-axis.d.ts +1 -1
  49. package/cjs/component/crosshair/cartesian.js +10 -5
  50. package/cjs/component/crosshair/cartesian.js.map +1 -1
  51. package/cjs/component/crosshair/polar.js +2 -2
  52. package/cjs/component/crosshair/polar.js.map +1 -1
  53. package/cjs/component/data-zoom/data-filter-base-component.d.ts +0 -1
  54. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  55. package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +1 -1
  56. package/cjs/component/data-zoom/data-zoom/data-zoom.js +19 -5
  57. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  58. package/cjs/component/data-zoom/data-zoom/interface.d.ts +1 -0
  59. package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
  60. package/cjs/component/indicator/indicator.d.ts +1 -1
  61. package/cjs/component/indicator/indicator.js +4 -2
  62. package/cjs/component/indicator/indicator.js.map +1 -1
  63. package/cjs/component/indicator/interface.d.ts +3 -1
  64. package/cjs/component/indicator/interface.js.map +1 -1
  65. package/cjs/component/label/interface.d.ts +2 -1
  66. package/cjs/component/label/interface.js.map +1 -1
  67. package/cjs/component/label/label.js +8 -5
  68. package/cjs/component/label/label.js.map +1 -1
  69. package/cjs/component/label/util.d.ts +9 -0
  70. package/cjs/component/label/util.js +35 -8
  71. package/cjs/component/label/util.js.map +1 -1
  72. package/cjs/component/legend/continuous/legend.js +2 -1
  73. package/cjs/component/legend/continuous/legend.js.map +1 -1
  74. package/cjs/component/marker/base-marker.d.ts +4 -3
  75. package/cjs/component/marker/base-marker.js +6 -45
  76. package/cjs/component/marker/base-marker.js.map +1 -1
  77. package/cjs/component/marker/interface.d.ts +3 -3
  78. package/cjs/component/marker/interface.js.map +1 -1
  79. package/cjs/component/marker/mark-area/cartesian-mark-area.d.ts +2 -2
  80. package/cjs/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
  81. package/cjs/component/marker/mark-area/interface/spec.d.ts +3 -2
  82. package/cjs/component/marker/mark-area/interface/spec.js.map +1 -1
  83. package/cjs/component/marker/mark-area/polar-mark-area.d.ts +2 -2
  84. package/cjs/component/marker/mark-area/polar-mark-area.js.map +1 -1
  85. package/cjs/component/marker/mark-line/cartesian-mark-line.d.ts +2 -2
  86. package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  87. package/cjs/component/marker/mark-line/interface/spec.d.ts +5 -5
  88. package/cjs/component/marker/mark-line/interface/spec.js.map +1 -1
  89. package/cjs/component/marker/mark-line/polar-mark-line.d.ts +2 -2
  90. package/cjs/component/marker/mark-line/polar-mark-line.js.map +1 -1
  91. package/cjs/component/marker/mark-point/cartesian-mark-point.d.ts +2 -2
  92. package/cjs/component/marker/mark-point/cartesian-mark-point.js +1 -1
  93. package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  94. package/cjs/component/marker/mark-point/geo-mark-point.d.ts +2 -1
  95. package/cjs/component/marker/mark-point/geo-mark-point.js.map +1 -1
  96. package/cjs/component/marker/mark-point/interface/spec.d.ts +4 -3
  97. package/cjs/component/marker/mark-point/interface/spec.js.map +1 -1
  98. package/cjs/component/marker/mark-point/polar-mark-point.d.ts +2 -1
  99. package/cjs/component/marker/mark-point/polar-mark-point.js.map +1 -1
  100. package/cjs/component/marker/utils.d.ts +2 -3
  101. package/cjs/component/marker/utils.js +16 -14
  102. package/cjs/component/marker/utils.js.map +1 -1
  103. package/cjs/component/tooltip/interface/spec.d.ts +1 -0
  104. package/cjs/component/tooltip/interface/spec.js.map +1 -1
  105. package/cjs/component/tooltip/interface/theme.d.ts +3 -2
  106. package/cjs/component/tooltip/interface/theme.js.map +1 -1
  107. package/cjs/component/tooltip/tooltip.d.ts +2 -1
  108. package/cjs/component/tooltip/tooltip.js +5 -3
  109. package/cjs/component/tooltip/tooltip.js.map +1 -1
  110. package/cjs/component/util.js +1 -2
  111. package/cjs/constant/index.d.ts +5 -0
  112. package/cjs/constant/index.js +6 -2
  113. package/cjs/constant/index.js.map +1 -1
  114. package/cjs/core/index.d.ts +1 -2
  115. package/cjs/core/index.js +2 -2
  116. package/cjs/core/index.js.map +1 -1
  117. package/cjs/core/interface.d.ts +3 -2
  118. package/cjs/core/interface.js.map +1 -1
  119. package/cjs/core/vchart.d.ts +8 -6
  120. package/cjs/core/vchart.js +46 -27
  121. package/cjs/core/vchart.js.map +1 -1
  122. package/cjs/data/transforms/aggregation.d.ts +8 -3
  123. package/cjs/data/transforms/aggregation.js +62 -2
  124. package/cjs/data/transforms/aggregation.js.map +1 -1
  125. package/cjs/data/transforms/legend-data/continuous/continuous.js +4 -3
  126. package/cjs/data/transforms/legend-data/continuous/continuous.js.map +1 -1
  127. package/cjs/data/transforms/legend-data/continuous/interface.d.ts +1 -0
  128. package/cjs/data/transforms/legend-data/continuous/interface.js.map +1 -1
  129. package/cjs/data/transforms/stack-split.js +2 -2
  130. package/cjs/data/transforms/stack-split.js.map +1 -1
  131. package/cjs/data/transforms/waterfall.js +17 -6
  132. package/cjs/data/transforms/waterfall.js.map +1 -1
  133. package/cjs/index-wx.d.ts +1 -0
  134. package/cjs/index-wx.js +1 -1
  135. package/cjs/index-wx.js.map +1 -1
  136. package/cjs/index.d.ts +1 -0
  137. package/cjs/index.js +5 -4
  138. package/cjs/index.js.map +1 -1
  139. package/cjs/layout/layout-item.d.ts +1 -1
  140. package/cjs/model/interface.d.ts +4 -0
  141. package/cjs/model/interface.js.map +1 -1
  142. package/cjs/plugin/components/tooltip-handler/dom/interface.d.ts +1 -0
  143. package/cjs/plugin/components/tooltip-handler/dom/interface.js.map +1 -1
  144. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.d.ts +1 -3
  145. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.js +9 -14
  146. package/cjs/plugin/components/tooltip-handler/dom/model/content-model.js.map +1 -1
  147. package/cjs/plugin/components/tooltip-handler/dom/model/shape-model.js +7 -11
  148. package/cjs/plugin/components/tooltip-handler/dom/model/shape-model.js.map +1 -1
  149. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js +8 -6
  150. package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
  151. package/cjs/plugin/components/tooltip-handler/dom/utils/style.js +6 -5
  152. package/cjs/plugin/components/tooltip-handler/dom/utils/style.js.map +1 -1
  153. package/cjs/plugin/components/tooltip-handler/interface/style.d.ts +1 -0
  154. package/cjs/plugin/components/tooltip-handler/interface/style.js.map +1 -1
  155. package/cjs/plugin/components/tooltip-handler/utils/attribute.js +8 -3
  156. package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  157. package/cjs/series/bar/bar.d.ts +0 -1
  158. package/cjs/series/bar/bar.js +38 -33
  159. package/cjs/series/bar/bar.js.map +1 -1
  160. package/cjs/series/base/base-series.js +7 -7
  161. package/cjs/series/base/base-series.js.map +1 -1
  162. package/cjs/series/base/constant.d.ts +6 -0
  163. package/cjs/series/base/constant.js +12 -2
  164. package/cjs/series/base/constant.js.map +1 -1
  165. package/cjs/series/gauge/gauge-pointer.js +3 -1
  166. package/cjs/series/gauge/gauge-pointer.js.map +1 -1
  167. package/cjs/series/interface/common.d.ts +2 -0
  168. package/cjs/series/interface/common.js.map +1 -1
  169. package/cjs/series/interface/series.d.ts +4 -1
  170. package/cjs/series/interface/series.js.map +1 -1
  171. package/cjs/series/interface/theme.d.ts +2 -0
  172. package/cjs/series/interface/theme.js +2 -1
  173. package/cjs/series/interface/theme.js.map +1 -1
  174. package/cjs/series/interface/type.d.ts +2 -1
  175. package/cjs/series/interface/type.js +1 -1
  176. package/cjs/series/interface/type.js.map +1 -1
  177. package/cjs/series/line/animation.js +7 -4
  178. package/cjs/series/line/animation.js.map +1 -1
  179. package/cjs/series/mosaic/interface.d.ts +16 -0
  180. package/cjs/series/mosaic/interface.js +6 -0
  181. package/cjs/series/mosaic/interface.js.map +1 -0
  182. package/cjs/series/mosaic/mosaic.d.ts +16 -0
  183. package/cjs/series/mosaic/mosaic.js +69 -0
  184. package/cjs/series/mosaic/mosaic.js.map +1 -0
  185. package/cjs/series/polar/animation.js +12 -3
  186. package/cjs/series/polar/animation.js.map +1 -1
  187. package/cjs/series/polar/progress-like/progress-like.js +2 -2
  188. package/cjs/series/polar/progress-like/progress-like.js.map +1 -1
  189. package/cjs/series/rose/animation.js +8 -2
  190. package/cjs/series/rose/animation.js.map +1 -1
  191. package/cjs/series/sankey/interface.d.ts +5 -4
  192. package/cjs/series/sankey/interface.js.map +1 -1
  193. package/cjs/series/sankey/sankey-transformer.d.ts +5 -0
  194. package/cjs/series/sankey/sankey-transformer.js +16 -0
  195. package/cjs/series/sankey/sankey-transformer.js.map +1 -0
  196. package/cjs/series/sankey/sankey.d.ts +7 -2
  197. package/cjs/series/sankey/sankey.js +47 -151
  198. package/cjs/series/sankey/sankey.js.map +1 -1
  199. package/cjs/series/treemap/treemap.d.ts +1 -0
  200. package/cjs/series/treemap/treemap.js +2 -1
  201. package/cjs/series/treemap/treemap.js.map +1 -1
  202. package/cjs/series/word-cloud/interface.d.ts +1 -1
  203. package/cjs/series/word-cloud/interface.js.map +1 -1
  204. package/cjs/theme/builtin/common/component/legend/discrete-legend.js +24 -0
  205. package/cjs/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
  206. package/cjs/theme/builtin/common/component/tooltip.js +0 -2
  207. package/cjs/theme/builtin/common/component/tooltip.js.map +1 -1
  208. package/cjs/theme/builtin/common/series/index.js +3 -2
  209. package/cjs/theme/builtin/common/series/index.js.map +1 -1
  210. package/cjs/theme/builtin/common/series/mosaic.d.ts +2 -0
  211. package/cjs/theme/builtin/common/series/mosaic.js +27 -0
  212. package/cjs/theme/builtin/common/series/mosaic.js.map +1 -0
  213. package/cjs/theme/builtin/common/series/pie.js +1 -0
  214. package/cjs/theme/builtin/common/series/pie.js.map +1 -1
  215. package/cjs/theme/builtin/common/series/pie3d.js +1 -0
  216. package/cjs/theme/builtin/common/series/pie3d.js.map +1 -1
  217. package/cjs/theme/builtin/dark/color-scheme.js +4 -1
  218. package/cjs/theme/builtin/dark/color-scheme.js.map +1 -1
  219. package/cjs/theme/builtin/light/color-scheme.js +4 -1
  220. package/cjs/theme/builtin/light/color-scheme.js.map +1 -1
  221. package/cjs/theme/interface.d.ts +2 -2
  222. package/cjs/theme/interface.js.map +1 -1
  223. package/cjs/typings/spec/common.d.ts +2 -2
  224. package/cjs/typings/spec/common.js.map +1 -1
  225. package/cjs/typings/visual.d.ts +2 -2
  226. package/cjs/typings/visual.js.map +1 -1
  227. package/cjs/util/data.d.ts +24 -1
  228. package/cjs/util/data.js +88 -17
  229. package/cjs/util/data.js.map +1 -1
  230. package/cjs/util/hierarchy.d.ts +2 -0
  231. package/cjs/util/hierarchy.js +16 -3
  232. package/cjs/util/hierarchy.js.map +1 -1
  233. package/cjs/util/spec/index.d.ts +0 -1
  234. package/cjs/util/spec/index.js +1 -1
  235. package/cjs/util/spec/index.js.map +1 -1
  236. package/cjs/util/style.d.ts +1 -0
  237. package/cjs/util/style.js +11 -2
  238. package/cjs/util/style.js.map +1 -1
  239. package/esm/animation/animate-manager.js +1 -1
  240. package/esm/animation/animate-manager.js.map +1 -1
  241. package/esm/animation/config.js +4 -1
  242. package/esm/animation/config.js.map +1 -1
  243. package/esm/chart/base/base-chart.d.ts +1 -0
  244. package/esm/chart/base/base-chart.js +20 -11
  245. package/esm/chart/base/base-chart.js.map +1 -1
  246. package/esm/chart/cartesian/cartesian-transformer.d.ts +4 -0
  247. package/esm/chart/cartesian/cartesian-transformer.js +25 -10
  248. package/esm/chart/cartesian/cartesian-transformer.js.map +1 -1
  249. package/esm/chart/index.d.ts +5 -3
  250. package/esm/chart/index.js +4 -2
  251. package/esm/chart/index.js.map +1 -1
  252. package/esm/chart/interface/type.d.ts +2 -1
  253. package/esm/chart/interface/type.js +2 -1
  254. package/esm/chart/interface/type.js.map +1 -1
  255. package/esm/chart/mosaic/index.d.ts +3 -0
  256. package/esm/chart/mosaic/index.js +6 -0
  257. package/esm/chart/mosaic/index.js.map +1 -0
  258. package/esm/chart/mosaic/interface.d.ts +7 -0
  259. package/esm/chart/mosaic/interface.js +2 -0
  260. package/esm/chart/mosaic/interface.js.map +1 -0
  261. package/esm/chart/mosaic/mosaic-transformer.d.ts +9 -0
  262. package/esm/chart/mosaic/mosaic-transformer.js +37 -0
  263. package/esm/chart/mosaic/mosaic-transformer.js.map +1 -0
  264. package/esm/chart/mosaic/mosaic.d.ts +20 -0
  265. package/esm/chart/mosaic/mosaic.js +41 -0
  266. package/esm/chart/mosaic/mosaic.js.map +1 -0
  267. package/esm/chart/sankey/sankey.js +5 -3
  268. package/esm/chart/sankey/sankey.js.map +1 -1
  269. package/esm/chart/stack.d.ts +11 -1
  270. package/esm/chart/stack.js +5 -4
  271. package/esm/chart/stack.js.map +1 -1
  272. package/esm/compile/grammar-item.js +2 -1
  273. package/esm/compile/mark/compilable-mark.js +6 -4
  274. package/esm/compile/mark/compilable-mark.js.map +1 -1
  275. package/esm/component/axis/cartesian/axis.js.map +1 -1
  276. package/esm/component/axis/cartesian/band-axis.d.ts +2 -2
  277. package/esm/component/axis/cartesian/band-axis.js +2 -2
  278. package/esm/component/axis/cartesian/band-axis.js.map +1 -1
  279. package/esm/component/axis/polar/axis.d.ts +1 -1
  280. package/esm/component/axis/polar/axis.js +1 -1
  281. package/esm/component/axis/polar/axis.js.map +1 -1
  282. package/esm/component/axis/polar/band-axis.d.ts +1 -1
  283. package/esm/component/crosshair/cartesian.js +10 -5
  284. package/esm/component/crosshair/cartesian.js.map +1 -1
  285. package/esm/component/crosshair/polar.js +2 -2
  286. package/esm/component/crosshair/polar.js.map +1 -1
  287. package/esm/component/data-zoom/data-filter-base-component.d.ts +0 -1
  288. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  289. package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +1 -1
  290. package/esm/component/data-zoom/data-zoom/data-zoom.js +19 -5
  291. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  292. package/esm/component/data-zoom/data-zoom/interface.d.ts +1 -0
  293. package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
  294. package/esm/component/indicator/indicator.d.ts +1 -1
  295. package/esm/component/indicator/indicator.js +4 -4
  296. package/esm/component/indicator/indicator.js.map +1 -1
  297. package/esm/component/indicator/interface.d.ts +3 -1
  298. package/esm/component/indicator/interface.js.map +1 -1
  299. package/esm/component/label/interface.d.ts +2 -1
  300. package/esm/component/label/interface.js.map +1 -1
  301. package/esm/component/label/label.js +9 -5
  302. package/esm/component/label/label.js.map +1 -1
  303. package/esm/component/label/util.d.ts +9 -0
  304. package/esm/component/label/util.js +34 -5
  305. package/esm/component/label/util.js.map +1 -1
  306. package/esm/component/legend/continuous/legend.js +2 -1
  307. package/esm/component/legend/continuous/legend.js.map +1 -1
  308. package/esm/component/marker/base-marker.d.ts +4 -3
  309. package/esm/component/marker/base-marker.js +6 -39
  310. package/esm/component/marker/base-marker.js.map +1 -1
  311. package/esm/component/marker/interface.d.ts +3 -3
  312. package/esm/component/marker/interface.js.map +1 -1
  313. package/esm/component/marker/mark-area/cartesian-mark-area.d.ts +2 -2
  314. package/esm/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
  315. package/esm/component/marker/mark-area/interface/spec.d.ts +3 -2
  316. package/esm/component/marker/mark-area/interface/spec.js.map +1 -1
  317. package/esm/component/marker/mark-area/polar-mark-area.d.ts +2 -2
  318. package/esm/component/marker/mark-area/polar-mark-area.js.map +1 -1
  319. package/esm/component/marker/mark-line/cartesian-mark-line.d.ts +2 -2
  320. package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
  321. package/esm/component/marker/mark-line/interface/spec.d.ts +5 -5
  322. package/esm/component/marker/mark-line/interface/spec.js.map +1 -1
  323. package/esm/component/marker/mark-line/polar-mark-line.d.ts +2 -2
  324. package/esm/component/marker/mark-line/polar-mark-line.js.map +1 -1
  325. package/esm/component/marker/mark-point/cartesian-mark-point.d.ts +2 -2
  326. package/esm/component/marker/mark-point/cartesian-mark-point.js +1 -1
  327. package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
  328. package/esm/component/marker/mark-point/geo-mark-point.d.ts +2 -1
  329. package/esm/component/marker/mark-point/geo-mark-point.js.map +1 -1
  330. package/esm/component/marker/mark-point/interface/spec.d.ts +4 -3
  331. package/esm/component/marker/mark-point/interface/spec.js.map +1 -1
  332. package/esm/component/marker/mark-point/polar-mark-point.d.ts +2 -1
  333. package/esm/component/marker/mark-point/polar-mark-point.js.map +1 -1
  334. package/esm/component/marker/utils.d.ts +2 -3
  335. package/esm/component/marker/utils.js +16 -14
  336. package/esm/component/marker/utils.js.map +1 -1
  337. package/esm/component/tooltip/interface/spec.d.ts +1 -0
  338. package/esm/component/tooltip/interface/spec.js.map +1 -1
  339. package/esm/component/tooltip/interface/theme.d.ts +3 -2
  340. package/esm/component/tooltip/interface/theme.js.map +1 -1
  341. package/esm/component/tooltip/tooltip.d.ts +2 -1
  342. package/esm/component/tooltip/tooltip.js +5 -3
  343. package/esm/component/tooltip/tooltip.js.map +1 -1
  344. package/esm/component/util.js +1 -2
  345. package/esm/constant/index.d.ts +5 -0
  346. package/esm/constant/index.js +10 -0
  347. package/esm/constant/index.js.map +1 -1
  348. package/esm/core/index.d.ts +1 -2
  349. package/esm/core/index.js +1 -3
  350. package/esm/core/index.js.map +1 -1
  351. package/esm/core/interface.d.ts +3 -2
  352. package/esm/core/interface.js.map +1 -1
  353. package/esm/core/vchart.d.ts +8 -6
  354. package/esm/core/vchart.js +47 -28
  355. package/esm/core/vchart.js.map +1 -1
  356. package/esm/data/transforms/aggregation.d.ts +8 -3
  357. package/esm/data/transforms/aggregation.js +60 -2
  358. package/esm/data/transforms/aggregation.js.map +1 -1
  359. package/esm/data/transforms/legend-data/continuous/continuous.js +4 -2
  360. package/esm/data/transforms/legend-data/continuous/continuous.js.map +1 -1
  361. package/esm/data/transforms/legend-data/continuous/interface.d.ts +1 -0
  362. package/esm/data/transforms/legend-data/continuous/interface.js.map +1 -1
  363. package/esm/data/transforms/stack-split.js +2 -2
  364. package/esm/data/transforms/stack-split.js.map +1 -1
  365. package/esm/data/transforms/waterfall.js +17 -6
  366. package/esm/data/transforms/waterfall.js.map +1 -1
  367. package/esm/index-wx.d.ts +1 -0
  368. package/esm/index-wx.js +2 -0
  369. package/esm/index-wx.js.map +1 -1
  370. package/esm/index.d.ts +1 -0
  371. package/esm/index.js +2 -0
  372. package/esm/index.js.map +1 -1
  373. package/esm/layout/layout-item.d.ts +1 -1
  374. package/esm/model/interface.d.ts +4 -0
  375. package/esm/model/interface.js.map +1 -1
  376. package/esm/plugin/components/tooltip-handler/dom/interface.d.ts +1 -0
  377. package/esm/plugin/components/tooltip-handler/dom/interface.js.map +1 -1
  378. package/esm/plugin/components/tooltip-handler/dom/model/content-model.d.ts +1 -3
  379. package/esm/plugin/components/tooltip-handler/dom/model/content-model.js +9 -14
  380. package/esm/plugin/components/tooltip-handler/dom/model/content-model.js.map +1 -1
  381. package/esm/plugin/components/tooltip-handler/dom/model/shape-model.js +5 -9
  382. package/esm/plugin/components/tooltip-handler/dom/model/shape-model.js.map +1 -1
  383. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js +8 -6
  384. package/esm/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
  385. package/esm/plugin/components/tooltip-handler/dom/utils/style.js +5 -4
  386. package/esm/plugin/components/tooltip-handler/dom/utils/style.js.map +1 -1
  387. package/esm/plugin/components/tooltip-handler/interface/style.d.ts +1 -0
  388. package/esm/plugin/components/tooltip-handler/interface/style.js.map +1 -1
  389. package/esm/plugin/components/tooltip-handler/utils/attribute.js +7 -2
  390. package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
  391. package/esm/series/bar/bar.d.ts +0 -1
  392. package/esm/series/bar/bar.js +39 -34
  393. package/esm/series/bar/bar.js.map +1 -1
  394. package/esm/series/base/base-series.js +8 -7
  395. package/esm/series/base/base-series.js.map +1 -1
  396. package/esm/series/base/constant.d.ts +6 -0
  397. package/esm/series/base/constant.js +13 -0
  398. package/esm/series/base/constant.js.map +1 -1
  399. package/esm/series/gauge/gauge-pointer.js +3 -2
  400. package/esm/series/gauge/gauge-pointer.js.map +1 -1
  401. package/esm/series/interface/common.d.ts +2 -0
  402. package/esm/series/interface/common.js.map +1 -1
  403. package/esm/series/interface/series.d.ts +4 -1
  404. package/esm/series/interface/series.js.map +1 -1
  405. package/esm/series/interface/theme.d.ts +2 -0
  406. package/esm/series/interface/theme.js +2 -1
  407. package/esm/series/interface/theme.js.map +1 -1
  408. package/esm/series/interface/type.d.ts +2 -1
  409. package/esm/series/interface/type.js +1 -1
  410. package/esm/series/interface/type.js.map +1 -1
  411. package/esm/series/line/animation.js +7 -4
  412. package/esm/series/line/animation.js.map +1 -1
  413. package/esm/series/mosaic/interface.d.ts +16 -0
  414. package/esm/series/mosaic/interface.js +2 -0
  415. package/esm/series/mosaic/interface.js.map +1 -0
  416. package/esm/series/mosaic/mosaic.d.ts +16 -0
  417. package/esm/series/mosaic/mosaic.js +78 -0
  418. package/esm/series/mosaic/mosaic.js.map +1 -0
  419. package/esm/series/polar/animation.js +10 -4
  420. package/esm/series/polar/animation.js.map +1 -1
  421. package/esm/series/polar/progress-like/progress-like.js +2 -2
  422. package/esm/series/polar/progress-like/progress-like.js.map +1 -1
  423. package/esm/series/rose/animation.js +8 -2
  424. package/esm/series/rose/animation.js.map +1 -1
  425. package/esm/series/sankey/interface.d.ts +5 -4
  426. package/esm/series/sankey/interface.js.map +1 -1
  427. package/esm/series/sankey/sankey-transformer.d.ts +5 -0
  428. package/esm/series/sankey/sankey-transformer.js +8 -0
  429. package/esm/series/sankey/sankey-transformer.js.map +1 -0
  430. package/esm/series/sankey/sankey.d.ts +7 -2
  431. package/esm/series/sankey/sankey.js +49 -147
  432. package/esm/series/sankey/sankey.js.map +1 -1
  433. package/esm/series/treemap/treemap.d.ts +1 -0
  434. package/esm/series/treemap/treemap.js +2 -1
  435. package/esm/series/treemap/treemap.js.map +1 -1
  436. package/esm/series/word-cloud/interface.d.ts +1 -1
  437. package/esm/series/word-cloud/interface.js.map +1 -1
  438. package/esm/theme/builtin/common/component/legend/discrete-legend.js +24 -0
  439. package/esm/theme/builtin/common/component/legend/discrete-legend.js.map +1 -1
  440. package/esm/theme/builtin/common/component/tooltip.js +0 -2
  441. package/esm/theme/builtin/common/component/tooltip.js.map +1 -1
  442. package/esm/theme/builtin/common/series/index.js +4 -1
  443. package/esm/theme/builtin/common/series/index.js.map +1 -1
  444. package/esm/theme/builtin/common/series/mosaic.d.ts +2 -0
  445. package/esm/theme/builtin/common/series/mosaic.js +23 -0
  446. package/esm/theme/builtin/common/series/mosaic.js.map +1 -0
  447. package/esm/theme/builtin/common/series/pie.js +1 -0
  448. package/esm/theme/builtin/common/series/pie.js.map +1 -1
  449. package/esm/theme/builtin/common/series/pie3d.js +1 -0
  450. package/esm/theme/builtin/common/series/pie3d.js.map +1 -1
  451. package/esm/theme/builtin/dark/color-scheme.js +4 -1
  452. package/esm/theme/builtin/dark/color-scheme.js.map +1 -1
  453. package/esm/theme/builtin/light/color-scheme.js +4 -1
  454. package/esm/theme/builtin/light/color-scheme.js.map +1 -1
  455. package/esm/theme/interface.d.ts +2 -2
  456. package/esm/theme/interface.js.map +1 -1
  457. package/esm/typings/spec/common.d.ts +2 -2
  458. package/esm/typings/spec/common.js.map +1 -1
  459. package/esm/typings/visual.d.ts +2 -2
  460. package/esm/typings/visual.js.map +1 -1
  461. package/esm/util/data.d.ts +24 -1
  462. package/esm/util/data.js +86 -17
  463. package/esm/util/data.js.map +1 -1
  464. package/esm/util/hierarchy.d.ts +2 -0
  465. package/esm/util/hierarchy.js +14 -0
  466. package/esm/util/hierarchy.js.map +1 -1
  467. package/esm/util/spec/index.d.ts +0 -1
  468. package/esm/util/spec/index.js +0 -2
  469. package/esm/util/spec/index.js.map +1 -1
  470. package/esm/util/style.d.ts +1 -0
  471. package/esm/util/style.js +8 -0
  472. package/esm/util/style.js.map +1 -1
  473. package/package.json +18 -18
  474. package/build/index.es.js +0 -101358
  475. package/cjs/util/spec/background.d.ts +0 -4
  476. package/cjs/util/spec/background.js +0 -21
  477. package/cjs/util/spec/background.js.map +0 -1
  478. package/esm/util/spec/background.d.ts +0 -4
  479. package/esm/util/spec/background.js +0 -13
  480. package/esm/util/spec/background.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/polar/progress-like/progress-like.ts"],"names":[],"mappings":"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","file":"progress-like.js","sourcesContent":["import type { Datum } from '@visactor/vgrammar-core';\nimport { degreeToRadian, isNil, isValid, isValidNumber, binaryFuzzySearch } from '@visactor/vutils';\nimport {\n AttributeLevel,\n POLAR_END_RADIAN,\n POLAR_START_RADIAN,\n SEGMENT_FIELD_START,\n STACK_FIELD_END,\n STACK_FIELD_START\n} from '../../../constant';\nimport type { IMarkStyle } from '../../../mark/interface';\nimport type { ConvertToMarkStyleSpec, ICommonSpec } from '../../../typings';\nimport { valueInScaleRange } from '../../../util/scale';\nimport { PolarSeries } from '../polar';\nimport type { IContinuousTickData, IProgressLikeSeriesSpec } from './interface';\nimport type { IPolarAxis, IPolarAxisSpec } from '../../../component/axis';\nimport type { IGroupMark } from '../../../mark/group';\nimport { createArc, createRect } from '@visactor/vrender-core';\nimport type { SeriesMarkMap } from '../../interface';\nimport { progressLikeSeriesMark } from './constant';\n\nexport abstract class ProgressLikeSeries<T extends IProgressLikeSeriesSpec> extends PolarSeries<T> {\n static readonly mark: SeriesMarkMap = progressLikeSeriesMark;\n\n protected _startAngle: number;\n protected _endAngle: number;\n\n protected _arcGroupMark: IGroupMark | null = null;\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n const chartSpec = this._option.globalInstance.getChart()?.getSpec() as any;\n const startAngle = this._spec.startAngle ?? chartSpec?.startAngle;\n this._startAngle = isValid(startAngle) ? degreeToRadian(startAngle) : POLAR_START_RADIAN;\n const endAngle = this._spec.endAngle ?? chartSpec?.endAngle;\n this._endAngle = isValid(endAngle) ? degreeToRadian(endAngle) : POLAR_END_RADIAN;\n\n // 值信息给角度\n this.setAngleField(this._spec.valueField || this._spec.angleField);\n // 分类信息给半径\n this.setRadiusField(this._spec.categoryField || this._spec.radiusField);\n\n this._specAngleField = this._angleField.slice();\n this._specRadiusField = this._radiusField.slice();\n }\n\n getStackGroupFields(): string[] {\n return this._radiusField;\n }\n\n getStackValueField() {\n return this._angleField?.[0];\n }\n\n getGroupFields() {\n return this._angleField;\n }\n\n /** 重载 mark style 赋值前转换逻辑 */\n protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(\n style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>\n ): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>> {\n const newStyle = super._convertMarkStyle(style) as unknown as any;\n\n const fillKey = 'fill';\n if (newStyle[fillKey]) {\n const value = style[fillKey] as unknown as any;\n // 为环形渐变色自动加 startAngle 和 endAngle\n if (value?.gradient === 'conical' && !isValid(value?.startAngle) && !isValid(value?.endAngle)) {\n newStyle[fillKey] = {\n ...value,\n startAngle: this._startAngle,\n endAngle: this._endAngle\n };\n }\n }\n\n return newStyle;\n }\n\n protected _getAngleValueStart = (datum: Datum) => {\n const axis = this._getAngleAxis();\n const { tickMask } = this._spec;\n\n if (tickMask?.forceAlign && this._isTickMaskVisible(axis)) {\n const field = this.getStack() ? STACK_FIELD_START : SEGMENT_FIELD_START;\n const originValue = datum[field];\n const subTickData = this._getAngleAxisSubTickData(axis);\n const step = subTickData[1].value - subTickData[0].value;\n const offsetAngle = degreeToRadian(tickMask.offsetAngle);\n\n let pos: number | undefined;\n if (isValid(originValue)) {\n // 找到第一个大于等于数据值的 tick\n const index = binaryFuzzySearch(subTickData, tick => tick.value - originValue);\n // 对齐\n const targetIndex =\n originValue > subTickData[index].value - step / 2\n ? Math.min(index, subTickData.length - 1)\n : index > 0\n ? index - 1\n : undefined;\n if (targetIndex !== undefined) {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[targetIndex].value - step / 2 // 确保占满整个 tick mask\n ]);\n }\n }\n if (isNil(pos)) {\n pos = this.angleAxisHelper.dataToPosition(\n [subTickData[0].value - step / 2] // 确保空出整个 tick mask\n );\n }\n return pos + offsetAngle;\n }\n return this._getAngleValueStartWithoutMask(datum);\n };\n\n protected _getAngleValueEnd = (datum: Datum) => {\n const axis = this._getAngleAxis();\n const { tickMask } = this._spec;\n\n if (tickMask?.forceAlign && this._isTickMaskVisible(axis)) {\n const field = this.getStack() ? STACK_FIELD_END : this._angleField[0];\n const originValue = datum[field];\n const subTickData = this._getAngleAxisSubTickData(axis);\n const step = subTickData[1].value - subTickData[0].value;\n const offsetAngle = degreeToRadian(tickMask.offsetAngle);\n\n // 找到第一个大于等于数据值的 tick\n const index = binaryFuzzySearch(subTickData, tick => tick.value - originValue);\n // 对齐\n const targetIndex =\n originValue > subTickData[index].value - step / 2\n ? Math.min(index, subTickData.length - 1)\n : index > 0\n ? index - 1\n : undefined;\n let pos: number;\n if (targetIndex !== undefined) {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[targetIndex].value + step / 2 // 确保占满整个 tick mask\n ]);\n } else {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[0].value - step / 2 // 确保空出整个 tick mask\n ]);\n }\n return pos + offsetAngle;\n }\n return this._getAngleValueEndWithoutMask(datum);\n };\n\n protected _getAngleValueStartWithoutMask(datum: Datum) {\n if (this.getStack()) {\n const value = valueInScaleRange(\n this.angleAxisHelper.dataToPosition([datum[STACK_FIELD_START]]),\n this.angleAxisHelper.getScale(0)\n );\n if (isValidNumber(value)) {\n return value;\n }\n }\n return this._startAngle;\n }\n\n protected _getAngleValueEndWithoutMask(datum: Datum) {\n if (this.getStack()) {\n const value = valueInScaleRange(\n this.angleAxisHelper.dataToPosition([datum[STACK_FIELD_END]]),\n this.angleAxisHelper.getScale(0)\n );\n if (isValidNumber(value)) {\n return value;\n }\n }\n return this.angleAxisHelper.dataToPosition([datum[this._angleField[0]]]);\n }\n\n getDimensionField(): string[] {\n return this._specRadiusField;\n }\n\n getMeasureField(): string[] {\n return this._specAngleField;\n }\n\n initMark(): void {\n this._initArcGroupMark();\n }\n\n initMarkStyle(): void {\n this._initArcGroupMarkStyle();\n }\n\n protected _initArcGroupMark() {\n // FIXME: disable group mark layout to prevent reevaluate after layout end\n this._arcGroupMark = this._createMark(ProgressLikeSeries.mark.group, {\n skipBeforeLayouted: false\n }) as IGroupMark;\n return this._arcGroupMark;\n }\n\n protected _initArcGroupMarkStyle() {\n const groupMark = this._arcGroupMark;\n groupMark.setZIndex(this.layoutZIndex);\n groupMark.created();\n this.setMarkStyle(\n groupMark,\n {\n x: 0,\n y: 0\n },\n 'normal',\n AttributeLevel.Series\n );\n groupMark.setClip(() => {\n const axis = this._getAngleAxis();\n if (this._isTickMaskVisible(axis)) {\n const { tickMask } = this._spec;\n const { angle, offsetAngle, style = {} } = tickMask;\n const subTickData = this._getAngleAxisSubTickData(axis);\n const { x, y } = this.angleAxisHelper.center();\n const radius = this._computeLayoutRadius();\n const markStyle = style as any;\n return subTickData.map(({ value }) => {\n const pos = this.angleAxisHelper.dataToPosition([value]) + degreeToRadian(offsetAngle);\n const angleUnit = degreeToRadian(angle) / 2;\n return createArc({\n ...markStyle,\n x,\n y,\n startAngle: pos - angleUnit,\n endAngle: pos + angleUnit,\n innerRadius: radius * this._innerRadius,\n outerRadius: radius * this._outerRadius,\n fill: true\n });\n });\n }\n const { width, height } = this.getLayoutRect();\n return [\n createRect({\n width,\n height,\n fill: true\n })\n ];\n });\n this._arcGroupMark.setInteractive(false);\n }\n\n protected _getAngleAxis() {\n if (!this.angleAxisHelper) {\n return undefined;\n }\n const angleAxisId = this.angleAxisHelper.getAxisId();\n const angleAxis = this._option\n .getChart()\n .getAllComponents()\n .find(component => component.id === angleAxisId) as IPolarAxis;\n return angleAxis;\n }\n\n protected _getAngleAxisTickData(angleAxis?: IPolarAxis): IContinuousTickData[] {\n const tickData = angleAxis?.getTickData()?.getLatestData();\n return tickData;\n }\n\n protected _isTickMaskVisible(angleAxis?: IPolarAxis) {\n const tickData = this._getAngleAxisTickData(angleAxis);\n const { tickMask } = this._spec;\n return tickMask && tickMask.visible !== false && tickData?.length > 1;\n }\n\n protected _getAngleAxisSubTickData(angleAxis: IPolarAxis) {\n const tickData = this._getAngleAxisTickData(angleAxis);\n // TODO: 这块照搬了 vrender-components 的计算方法,需要抽出这块的公用逻辑\n const subTickData: IContinuousTickData[] = [];\n const { subTick = {}, tick = {} } = (angleAxis?.getSpec() ?? {}) as IPolarAxisSpec;\n const { tickCount: subTickCount = 4 } = subTick;\n const { alignWithLabel } = tick;\n // 刻度线的数量大于 2 时,才绘制子刻度\n if (tickData?.length >= 2) {\n const tickSegment = tickData[1].value - tickData[0].value;\n for (let i = 0; i < tickData.length - 1; i++) {\n const pre = tickData[i];\n const next = tickData[i + 1];\n subTickData.push(pre);\n for (let j = 0; j < subTickCount; j++) {\n const percent = (j + 1) / (subTickCount + 1);\n const value =\n (1 - percent) * pre.value + percent * (next ? next.value : alignWithLabel ? 1 : pre.value + tickSegment);\n subTickData.push({\n value\n });\n }\n }\n subTickData.push(tickData[tickData.length - 1]);\n return subTickData;\n }\n return tickData;\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/series/polar/progress-like/progress-like.ts"],"names":[],"mappings":"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","file":"progress-like.js","sourcesContent":["import type { Datum } from '@visactor/vgrammar-core';\nimport { degreeToRadian, isNil, isValid, isValidNumber, binaryFuzzySearch } from '@visactor/vutils';\nimport {\n AttributeLevel,\n POLAR_END_RADIAN,\n POLAR_START_RADIAN,\n SEGMENT_FIELD_START,\n STACK_FIELD_END,\n STACK_FIELD_START\n} from '../../../constant';\nimport type { IMarkStyle } from '../../../mark/interface';\nimport type { ConvertToMarkStyleSpec, ICommonSpec } from '../../../typings';\nimport { valueInScaleRange } from '../../../util/scale';\nimport { PolarSeries } from '../polar';\nimport type { IContinuousTickData, IProgressLikeSeriesSpec } from './interface';\nimport type { IPolarAxis, IPolarAxisSpec } from '../../../component/axis';\nimport type { IGroupMark } from '../../../mark/group';\nimport { createArc, createRect } from '@visactor/vrender-core';\nimport type { SeriesMarkMap } from '../../interface';\nimport { progressLikeSeriesMark } from './constant';\n\nexport abstract class ProgressLikeSeries<T extends IProgressLikeSeriesSpec> extends PolarSeries<T> {\n static readonly mark: SeriesMarkMap = progressLikeSeriesMark;\n\n protected _startAngle: number;\n protected _endAngle: number;\n\n protected _arcGroupMark: IGroupMark | null = null;\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n const chartSpec = this._option.globalInstance.getChart()?.getSpec() as any;\n const startAngle = this._spec.startAngle ?? chartSpec?.startAngle;\n this._startAngle = isValid(startAngle) ? degreeToRadian(startAngle) : POLAR_START_RADIAN;\n const endAngle = this._spec.endAngle ?? chartSpec?.endAngle;\n this._endAngle = isValid(endAngle) ? degreeToRadian(endAngle) : POLAR_END_RADIAN;\n\n // 值信息给角度\n this.setAngleField(this._spec.valueField || this._spec.angleField);\n // 分类信息给半径\n this.setRadiusField(this._spec.categoryField || this._spec.radiusField);\n\n this._specAngleField = this._angleField.slice();\n this._specRadiusField = this._radiusField.slice();\n }\n\n getStackGroupFields(): string[] {\n return this._radiusField;\n }\n\n getStackValueField() {\n return this._angleField?.[0];\n }\n\n getGroupFields() {\n return this._angleField;\n }\n\n /** 重载 mark style 赋值前转换逻辑 */\n protected _convertMarkStyle<T extends ICommonSpec = ICommonSpec>(\n style: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>\n ): Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>> {\n const newStyle = super._convertMarkStyle(style) as unknown as any;\n\n const fillKey = 'fill';\n if (newStyle[fillKey]) {\n const value = style[fillKey] as unknown as any;\n // 为环形渐变色自动加 startAngle 和 endAngle\n if (value?.gradient === 'conical' && !isValid(value?.startAngle) && !isValid(value?.endAngle)) {\n newStyle[fillKey] = {\n ...value,\n startAngle: this._startAngle,\n endAngle: this._endAngle\n };\n }\n }\n\n return newStyle;\n }\n\n protected _getAngleValueStart = (datum: Datum) => {\n const axis = this._getAngleAxis();\n const { tickMask } = this._spec;\n\n if (tickMask?.forceAlign && this._isTickMaskVisible(axis)) {\n const field = this.getStack() ? STACK_FIELD_START : SEGMENT_FIELD_START;\n const originValue = datum[field];\n const subTickData = this._getAngleAxisSubTickData(axis);\n const step = subTickData[1].value - subTickData[0].value;\n const offsetAngle = degreeToRadian(tickMask.offsetAngle);\n\n let pos: number | undefined;\n if (isValid(originValue)) {\n // 找到第一个大于等于数据值的 tick\n const index = binaryFuzzySearch(subTickData, tick => tick.value - originValue);\n // 对齐\n const targetIndex =\n index >= subTickData.length || originValue > subTickData[index].value - step / 2\n ? Math.min(index, subTickData.length - 1)\n : index > 0\n ? index - 1\n : undefined;\n if (targetIndex !== undefined) {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[targetIndex].value - step / 2 // 确保占满整个 tick mask\n ]);\n }\n }\n if (isNil(pos)) {\n pos = this.angleAxisHelper.dataToPosition(\n [subTickData[0].value - step / 2] // 确保空出整个 tick mask\n );\n }\n return pos + offsetAngle;\n }\n return this._getAngleValueStartWithoutMask(datum);\n };\n\n protected _getAngleValueEnd = (datum: Datum) => {\n const axis = this._getAngleAxis();\n const { tickMask } = this._spec;\n\n if (tickMask?.forceAlign && this._isTickMaskVisible(axis)) {\n const field = this.getStack() ? STACK_FIELD_END : this._angleField[0];\n const originValue = datum[field];\n const subTickData = this._getAngleAxisSubTickData(axis);\n const step = subTickData[1].value - subTickData[0].value;\n const offsetAngle = degreeToRadian(tickMask.offsetAngle);\n\n // 找到第一个大于等于数据值的 tick\n const index = binaryFuzzySearch(subTickData, tick => tick.value - originValue);\n // 对齐\n const targetIndex =\n index >= subTickData.length || originValue > subTickData[index].value - step / 2\n ? Math.min(index, subTickData.length - 1)\n : index > 0\n ? index - 1\n : undefined;\n let pos: number;\n if (targetIndex !== undefined) {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[targetIndex].value + step / 2 // 确保占满整个 tick mask\n ]);\n } else {\n pos = this.angleAxisHelper.dataToPosition([\n subTickData[0].value - step / 2 // 确保空出整个 tick mask\n ]);\n }\n return pos + offsetAngle;\n }\n return this._getAngleValueEndWithoutMask(datum);\n };\n\n protected _getAngleValueStartWithoutMask(datum: Datum) {\n if (this.getStack()) {\n const value = valueInScaleRange(\n this.angleAxisHelper.dataToPosition([datum[STACK_FIELD_START]]),\n this.angleAxisHelper.getScale(0)\n );\n if (isValidNumber(value)) {\n return value;\n }\n }\n return this._startAngle;\n }\n\n protected _getAngleValueEndWithoutMask(datum: Datum) {\n if (this.getStack()) {\n const value = valueInScaleRange(\n this.angleAxisHelper.dataToPosition([datum[STACK_FIELD_END]]),\n this.angleAxisHelper.getScale(0)\n );\n if (isValidNumber(value)) {\n return value;\n }\n }\n return this.angleAxisHelper.dataToPosition([datum[this._angleField[0]]]);\n }\n\n getDimensionField(): string[] {\n return this._specRadiusField;\n }\n\n getMeasureField(): string[] {\n return this._specAngleField;\n }\n\n initMark(): void {\n this._initArcGroupMark();\n }\n\n initMarkStyle(): void {\n this._initArcGroupMarkStyle();\n }\n\n protected _initArcGroupMark() {\n // FIXME: disable group mark layout to prevent reevaluate after layout end\n this._arcGroupMark = this._createMark(ProgressLikeSeries.mark.group, {\n skipBeforeLayouted: false\n }) as IGroupMark;\n return this._arcGroupMark;\n }\n\n protected _initArcGroupMarkStyle() {\n const groupMark = this._arcGroupMark;\n groupMark.setZIndex(this.layoutZIndex);\n groupMark.created();\n this.setMarkStyle(\n groupMark,\n {\n x: 0,\n y: 0\n },\n 'normal',\n AttributeLevel.Series\n );\n groupMark.setClip(() => {\n const axis = this._getAngleAxis();\n if (this._isTickMaskVisible(axis)) {\n const { tickMask } = this._spec;\n const { angle, offsetAngle, style = {} } = tickMask;\n const subTickData = this._getAngleAxisSubTickData(axis);\n const { x, y } = this.angleAxisHelper.center();\n const radius = this._computeLayoutRadius();\n const markStyle = style as any;\n return subTickData.map(({ value }) => {\n const pos = this.angleAxisHelper.dataToPosition([value]) + degreeToRadian(offsetAngle);\n const angleUnit = degreeToRadian(angle) / 2;\n return createArc({\n ...markStyle,\n x,\n y,\n startAngle: pos - angleUnit,\n endAngle: pos + angleUnit,\n innerRadius: radius * this._innerRadius,\n outerRadius: radius * this._outerRadius,\n fill: true\n });\n });\n }\n const { width, height } = this.getLayoutRect();\n return [\n createRect({\n width,\n height,\n fill: true\n })\n ];\n });\n this._arcGroupMark.setInteractive(false);\n }\n\n protected _getAngleAxis() {\n if (!this.angleAxisHelper) {\n return undefined;\n }\n const angleAxisId = this.angleAxisHelper.getAxisId();\n const angleAxis = this._option\n .getChart()\n .getAllComponents()\n .find(component => component.id === angleAxisId) as IPolarAxis;\n return angleAxis;\n }\n\n protected _getAngleAxisTickData(angleAxis?: IPolarAxis): IContinuousTickData[] {\n const tickData = angleAxis?.getTickData()?.getLatestData();\n return tickData;\n }\n\n protected _isTickMaskVisible(angleAxis?: IPolarAxis) {\n const tickData = this._getAngleAxisTickData(angleAxis);\n const { tickMask } = this._spec;\n return tickMask && tickMask.visible !== false && tickData?.length > 1;\n }\n\n protected _getAngleAxisSubTickData(angleAxis: IPolarAxis) {\n const tickData = this._getAngleAxisTickData(angleAxis);\n // TODO: 这块照搬了 vrender-components 的计算方法,需要抽出这块的公用逻辑\n const subTickData: IContinuousTickData[] = [];\n const { subTick = {}, tick = {} } = (angleAxis?.getSpec() ?? {}) as IPolarAxisSpec;\n const { tickCount: subTickCount = 4 } = subTick;\n const { alignWithLabel } = tick;\n // 刻度线的数量大于 2 时,才绘制子刻度\n if (tickData?.length >= 2) {\n const tickSegment = tickData[1].value - tickData[0].value;\n for (let i = 0; i < tickData.length - 1; i++) {\n const pre = tickData[i];\n const next = tickData[i + 1];\n subTickData.push(pre);\n for (let j = 0; j < subTickCount; j++) {\n const percent = (j + 1) / (subTickCount + 1);\n const value =\n (1 - percent) * pre.value + percent * (next ? next.value : alignWithLabel ? 1 : pre.value + tickSegment);\n subTickData.push({\n value\n });\n }\n }\n subTickData.push(tickData[tickData.length - 1]);\n return subTickData;\n }\n return tickData;\n }\n}\n"]}
@@ -8,11 +8,17 @@ export const Appear_Grow = params => {
8
8
  channel: {
9
9
  innerRadius: {
10
10
  from: from,
11
- to: (datum, element) => element.getGraphicAttribute("innerRadius")
11
+ to: (datum, element) => {
12
+ var _a;
13
+ return null === (_a = element.getFinalGraphicAttributes()) || void 0 === _a ? void 0 : _a.innerRadius;
14
+ }
12
15
  },
13
16
  outerRadius: {
14
17
  from: from,
15
- to: (datum, element) => element.getGraphicAttribute("outerRadius")
18
+ to: (datum, element) => {
19
+ var _a;
20
+ return null === (_a = element.getFinalGraphicAttributes()) || void 0 === _a ? void 0 : _a.outerRadius;
21
+ }
16
22
  }
17
23
  }
18
24
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/rose/animation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAS7C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAA4B,EAAwB,EAAE;IAChF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAEnE,OAAO,MAAM,CAAC,SAAS,KAAK,OAAO;QACjC,CAAC,CAAC;YACE,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;SACpE;QACH,CAAC,CAAC;YACE,OAAO,EAAE;gBACP,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAY,EAAE,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE;gBACrG,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAY,EAAE,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE;aACtG;SACF,CAAC;AACR,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD,IAAI,EAAE,QAAQ;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAA4B,EAAwB,EAAE;IAC9E,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;KACpE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA4B,EAAwB,EAAE;IAC7E,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe;KACtE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAA4B,EAAwB,EAAE;IAClF,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe;KACtE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,MAA4B,EAC5B,MAAkC;IAElC,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,MAAM,EAAE;QACd,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,WAAW;YACd,OAAO,WAAW,iCACb,MAAM,KACT,SAAS,EAAE,OAAO,IAClB,CAAC;QACL;YACE,OAAO,WAAW,iCACb,MAAM,KACT,SAAS,EAAE,QAAQ,IACnB,CAAC;KACN;AACH,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,MAA4B,EAAE,MAAwB,EAAE,EAAE;QAC3F,OAAO;YACL,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;YAC3C,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC;SACjC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","file":"animation.js","sourcesContent":["import type { IAnimationTypeConfig } from '@visactor/vgrammar-core';\nimport type { Datum } from '../../typings';\nimport { Factory } from '../../core/factory';\n\nexport interface IRoseAnimationParams {\n innerRadius: () => number;\n growField?: 'angle' | 'radius';\n}\n\nexport type RoseAppearPreset = 'growAngle' | 'growRadius' | 'fadeIn';\n\nexport const Appear_Grow = (params: IRoseAnimationParams): IAnimationTypeConfig => {\n const from = params.growField === 'angle' ? 0 : params.innerRadius;\n //TODO: 待 vgrammar 内置后替换\n return params.growField === 'angle'\n ? {\n type: params.growField === 'angle' ? 'growAngleIn' : 'growRadiusIn'\n }\n : {\n channel: {\n innerRadius: { from, to: (datum: Datum, element: any) => element.getGraphicAttribute('innerRadius') },\n outerRadius: { from, to: (datum: Datum, element: any) => element.getGraphicAttribute('outerRadius') }\n }\n };\n};\n\nexport const Appear_FadeIn: IAnimationTypeConfig = {\n type: 'fadeIn'\n};\n\nexport const roseEnter = (params: IRoseAnimationParams): IAnimationTypeConfig => {\n return {\n type: params.growField === 'angle' ? 'growAngleIn' : 'growRadiusIn'\n };\n};\n\nexport const roseExit = (params: IRoseAnimationParams): IAnimationTypeConfig => {\n return {\n type: params.growField === 'angle' ? 'growAngleOut' : 'growRadiusOut'\n };\n};\n\nexport const roseDisappear = (params: IRoseAnimationParams): IAnimationTypeConfig => {\n return {\n type: params.growField === 'angle' ? 'growAngleOut' : 'growRadiusOut'\n };\n};\n\nexport function rosePresetAnimation(\n params: IRoseAnimationParams,\n preset: RoseAppearPreset | boolean\n): IAnimationTypeConfig {\n if (preset === false) {\n return {};\n }\n switch (preset) {\n case 'fadeIn':\n return Appear_FadeIn;\n case 'growAngle':\n return Appear_Grow({\n ...params,\n growField: 'angle'\n });\n default:\n return Appear_Grow({\n ...params,\n growField: 'radius'\n });\n }\n}\n\nexport const registerRoseAnimation = () => {\n Factory.registerAnimation('rose', (params: IRoseAnimationParams, preset: RoseAppearPreset) => {\n return {\n appear: rosePresetAnimation(params, preset),\n enter: roseEnter(params),\n exit: roseExit(params),\n disappear: roseDisappear(params)\n };\n });\n};\n"]}
1
+ {"version":3,"sources":["../src/series/rose/animation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAS7C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAA4B,EAAwB,EAAE;IAChF,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAEnE,OAAO,MAAM,CAAC,SAAS,KAAK,OAAO;QACjC,CAAC,CAAC;YACE,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;SACpE;QACH,CAAC,CAAC;YACE,OAAO,EAAE;gBACP,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAY,EAAE,OAAY,EAAE,EAAE,WAAC,OAAA,MAAA,OAAO,CAAC,yBAAyB,EAAE,0CAAE,WAAW,CAAA,EAAA,EAAE;gBAC3G,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAY,EAAE,OAAY,EAAE,EAAE,WAAC,OAAA,MAAA,OAAO,CAAC,yBAAyB,EAAE,0CAAE,WAAW,CAAA,EAAA,EAAE;aAC5G;SACF,CAAC;AACR,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD,IAAI,EAAE,QAAQ;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAA4B,EAAwB,EAAE;IAC9E,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;KACpE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAA4B,EAAwB,EAAE;IAC7E,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe;KACtE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAA4B,EAAwB,EAAE;IAClF,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe;KACtE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,MAA4B,EAC5B,MAAkC;IAElC,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,MAAM,EAAE;QACd,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,WAAW;YACd,OAAO,WAAW,iCACb,MAAM,KACT,SAAS,EAAE,OAAO,IAClB,CAAC;QACL;YACE,OAAO,WAAW,iCACb,MAAM,KACT,SAAS,EAAE,QAAQ,IACnB,CAAC;KACN;AACH,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,MAA4B,EAAE,MAAwB,EAAE,EAAE;QAC3F,OAAO;YACL,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;YAC3C,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC;SACjC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","file":"animation.js","sourcesContent":["import type { IAnimationTypeConfig } from '@visactor/vgrammar-core';\nimport type { Datum } from '../../typings';\nimport { Factory } from '../../core/factory';\n\nexport interface IRoseAnimationParams {\n innerRadius: () => number;\n growField?: 'angle' | 'radius';\n}\n\nexport type RoseAppearPreset = 'growAngle' | 'growRadius' | 'fadeIn';\n\nexport const Appear_Grow = (params: IRoseAnimationParams): IAnimationTypeConfig => {\n const from = params.growField === 'angle' ? 0 : params.innerRadius;\n //TODO: 待 vgrammar 内置后替换\n return params.growField === 'angle'\n ? {\n type: params.growField === 'angle' ? 'growAngleIn' : 'growRadiusIn'\n }\n : {\n channel: {\n innerRadius: { from, to: (datum: Datum, element: any) => element.getFinalGraphicAttributes()?.innerRadius },\n outerRadius: { from, to: (datum: Datum, element: any) => element.getFinalGraphicAttributes()?.outerRadius }\n }\n };\n};\n\nexport const Appear_FadeIn: IAnimationTypeConfig = {\n type: 'fadeIn'\n};\n\nexport const roseEnter = (params: IRoseAnimationParams): IAnimationTypeConfig => {\n return {\n type: params.growField === 'angle' ? 'growAngleIn' : 'growRadiusIn'\n };\n};\n\nexport const roseExit = (params: IRoseAnimationParams): IAnimationTypeConfig => {\n return {\n type: params.growField === 'angle' ? 'growAngleOut' : 'growRadiusOut'\n };\n};\n\nexport const roseDisappear = (params: IRoseAnimationParams): IAnimationTypeConfig => {\n return {\n type: params.growField === 'angle' ? 'growAngleOut' : 'growRadiusOut'\n };\n};\n\nexport function rosePresetAnimation(\n params: IRoseAnimationParams,\n preset: RoseAppearPreset | boolean\n): IAnimationTypeConfig {\n if (preset === false) {\n return {};\n }\n switch (preset) {\n case 'fadeIn':\n return Appear_FadeIn;\n case 'growAngle':\n return Appear_Grow({\n ...params,\n growField: 'angle'\n });\n default:\n return Appear_Grow({\n ...params,\n growField: 'radius'\n });\n }\n}\n\nexport const registerRoseAnimation = () => {\n Factory.registerAnimation('rose', (params: IRoseAnimationParams, preset: RoseAppearPreset) => {\n return {\n appear: rosePresetAnimation(params, preset),\n enter: roseEnter(params),\n exit: roseExit(params),\n disappear: roseDisappear(params)\n };\n });\n};\n"]}
@@ -5,6 +5,10 @@ import type { IAnimationSpec } from '../../animation/spec';
5
5
  import type { SankeyAppearPreset, SankeyMark } from './animation';
6
6
  import type { SeriesMarkNameEnum } from '../interface/type';
7
7
  import type { ILabelSpec } from '../../component/label';
8
+ export type ISankeyLabelSpec = ILabelSpec & {
9
+ position?: 'outside' | 'inside-start' | 'inside-middle' | 'inside-end' | 'left' | 'right';
10
+ limit?: number;
11
+ };
8
12
  export interface ISankeySeriesSpec extends Omit<ISeriesSpec, 'data'>, IAnimationSpec<SankeyMark, SankeyAppearPreset> {
9
13
  nameKey: any;
10
14
  type: 'sankey';
@@ -37,10 +41,7 @@ export interface ISankeySeriesSpec extends Omit<ISeriesSpec, 'data'>, IAnimation
37
41
  trigger?: 'click' | 'hover';
38
42
  effect: 'self' | 'adjacency' | 'related';
39
43
  };
40
- [SeriesMarkNameEnum.label]?: ILabelSpec & {
41
- position?: 'outside' | 'inside-start' | 'inside-middle' | 'inside-end' | 'left' | 'right';
42
- limit?: number;
43
- };
44
+ [SeriesMarkNameEnum.label]?: ISankeyLabelSpec | ISankeyLabelSpec[];
44
45
  }
45
46
  export interface SankeyLinkDatum {
46
47
  source: string | number;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/sankey/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeriesSpec, DirectionType, IMarkTheme } from '../../typings';\nimport type { IMarkSpec } from '../../typings/spec/common';\nimport type { IRectMarkSpec, ILinkPathMarkSpec } from '../../typings/visual';\nimport type { IAnimationSpec } from '../../animation/spec';\nimport type { SankeyAppearPreset, SankeyMark } from './animation';\nimport type { SeriesMarkNameEnum } from '../interface/type';\nimport type { ILabelSpec } from '../../component/label';\n\nexport interface ISankeySeriesSpec extends Omit<ISeriesSpec, 'data'>, IAnimationSpec<SankeyMark, SankeyAppearPreset> {\n nameKey: any;\n type: 'sankey';\n\n /**\n * 数据字段配置\n */\n /** 节点名称字段配置 */\n categoryField: string;\n /** 节点之间关系的权重字段 */\n valueField: string;\n /** 来源节点数据字段\n * 层级数据不提供\n */\n sourceField?: string;\n /** 目标节点数据字段\n * 层级数据不提供\n */\n targetField?: string;\n\n /**\n * 图表布局方向\n */\n direction?: DirectionType;\n /**\n * 节点的对齐类型\n */\n nodeAlign?: 'left' | 'right' | 'center' | 'justify' | 'start' | 'end';\n /**\n * 同一层中两个节点之间的间隙大小\n */\n nodeGap?: number;\n /**\n * 每个节点的宽度,支持三种取值\n * 1. 百分比字符串,例如:{ nodeWidth: '12%' }\n * 2. 以'px'为单位的简单数字,eg: { nodeWidth: 20 }\n * 3. function,通过自定义计算指定nodeWidth\n */\n nodeWidth?: string | number | ((node: SankeyNodeElement) => number);\n /**\n * link宽度,单位px\n */\n linkWidth?: number | ((link: SankeyLinkElement) => number);\n /**\n * link + node 的最小宽度\n */\n minStepWidth?: number;\n /**\n * 数据不为零或空时节点的最小大小\n * - 这个配置可以用来避免数据太小时看不到太细的节点\n * - 建议小于5px\n */\n minNodeHeight?: number;\n /**\n * 数据不为零或空时边的最小大小\n * - 这个配置可以用来避免数据太小的时候看不到太细的链接\n * - 建议小于5px\n * - 当同时指定 `minNodeHeight` 和 `minLinkHeight` 两个选项时,此选项应小于 `minNodeHeight`\n */\n minLinkHeight?: number;\n /** 布局的迭代次数 */\n iterations?: number;\n /** 解析node的key,defaultValue */\n nodeKey?: string | number | ((datum: SankeyNodeDatum) => string | number);\n /** 按此funtion排序link */\n linkSortBy?: (a: SankeyLinkElement, b: SankeyLinkElement) => number;\n /** 按此funtion排序node */\n nodeSortBy?: (a: SankeyNodeElement, b: SankeyNodeElement) => number;\n /** 自定义指定节点层 */\n setNodeLayer?: (datum: SankeyNodeDatum) => number;\n /**\n * 是否丢弃孤立的节点\n * @since 1.11.0\n */\n dropIsolatedNode?: boolean;\n /**\n * set the height of node\n * @since 1.11.0\n */\n nodeHeight?: number | ((node: SankeyNodeElement) => number);\n /**\n * set the height of link\n * @since 1.11.0\n */\n linkHeight?: number | ((link: SankeyLinkElement, sourceNode: SankeyNodeElement, sourceNodeHeight: number) => number);\n /**\n * each node has same height\n * @since 1.11.0\n */\n equalNodeHeight?: boolean;\n /**\n * the layout type of link\n * @since 1.11.0\n */\n linkOverlap?: 'start' | 'center' | 'end';\n\n /** 节点配置 */\n [SeriesMarkNameEnum.node]?: IMarkSpec<IRectMarkSpec>;\n\n /** 边配置 */\n [SeriesMarkNameEnum.link]?: IMarkSpec<ILinkPathMarkSpec>;\n\n /** 联动交互配置 */\n emphasis?: {\n /** 是否开启交互 */\n enable: boolean;\n /**\n * 交互触发类型\n * 默认为‘click'\n */\n trigger?: 'click' | 'hover';\n /**桑基图提供3种在节点上的交互联动效果\n * self: 仅高亮当前节点。\n * adjacency: 高亮当前节点上下游节点和关联的边,淡化其它图形元素。\n * related: 高亮与当前节点相关的整条路径上的节点和边,淡化其它图形元素。 */\n effect: 'self' | 'adjacency' | 'related';\n };\n\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: ILabelSpec & {\n /**\n * 标签布局方式\n * @default 'outside'\n */\n position?: 'outside' | 'inside-start' | 'inside-middle' | 'inside-end' | 'left' | 'right';\n /** 标签文字缩略 */\n limit?: number;\n };\n\n /** 进度条配置 */\n // scroll?: IScrollSpec & {\n // /** 是否开启进度条 */\n // enable: boolean;\n // };\n}\n\nexport interface SankeyLinkDatum {\n source: string | number;\n target: string | number;\n value?: number;\n}\n\nexport interface SankeyNodeDatum {\n value?: number;\n}\n\nexport interface HierarchyNodeDatum {\n value?: number;\n children?: HierarchyNodeDatum[];\n}\n\nexport type SankeyData =\n | {\n nodes?: SankeyNodeDatum[];\n links: SankeyLinkDatum[];\n }\n | {\n nodes: HierarchyNodeDatum[];\n };\n\n/**\n * The node element after sankey layout\n */\nexport interface SankeyNodeElement {\n key: string | number;\n index: number;\n /** the depth of node, from source to target */\n depth: number;\n\n /** the depth of node, from target to source */\n endDepth?: number;\n /** the final layer index after layout */\n layer?: number;\n isLastLayer?: boolean;\n value: number;\n datum: SankeyNodeDatum;\n sourceLinks: SankeyLinkElement[];\n targetLinks: SankeyLinkElement[];\n x0?: number;\n y0?: number;\n x1?: number;\n y1?: number;\n}\n/**\n * the link element after sankey layout\n */\nexport interface SankeyLinkElement {\n vertical?: boolean;\n index: number;\n source: string | number;\n target: string | number;\n value: number;\n datum: SankeyLinkDatum | SankeyLinkDatum[];\n thickness?: number;\n sourceRect?: { x0: number; x1: number; y0: number; y1: number };\n targetRect?: { x0: number; x1: number; y0: number; y1: number };\n /** this will only be generate in hierarchy node data*/\n parents?: (string | number)[];\n y0?: number;\n y1?: number;\n x0?: number;\n x1?: number;\n}\n\nexport type SankeyLayoutResult = {\n nodes: SankeyNodeElement[];\n links: SankeyLinkElement[];\n columns: SankeyNodeElement[][];\n}[];\n\nexport interface ISankeySeriesTheme {\n [SeriesMarkNameEnum.node]?: IMarkTheme<IRectMarkSpec>;\n [SeriesMarkNameEnum.link]?: IMarkTheme<ILinkPathMarkSpec>;\n}\n"]}
1
+ {"version":3,"sources":["../src/series/sankey/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ISeriesSpec, DirectionType, IMarkTheme } from '../../typings';\nimport type { IMarkSpec } from '../../typings/spec/common';\nimport type { IRectMarkSpec, ILinkPathMarkSpec } from '../../typings/visual';\nimport type { IAnimationSpec } from '../../animation/spec';\nimport type { SankeyAppearPreset, SankeyMark } from './animation';\nimport type { SeriesMarkNameEnum } from '../interface/type';\nimport type { ILabelSpec } from '../../component/label';\n\nexport type ISankeyLabelSpec = ILabelSpec & {\n /**\n * 标签布局方式\n * @default 'outside'\n */\n position?: 'outside' | 'inside-start' | 'inside-middle' | 'inside-end' | 'left' | 'right';\n /** 标签文字缩略 */\n limit?: number;\n};\n\nexport interface ISankeySeriesSpec extends Omit<ISeriesSpec, 'data'>, IAnimationSpec<SankeyMark, SankeyAppearPreset> {\n nameKey: any;\n type: 'sankey';\n\n /**\n * 数据字段配置\n */\n /** 节点名称字段配置 */\n categoryField: string;\n /** 节点之间关系的权重字段 */\n valueField: string;\n /** 来源节点数据字段\n * 层级数据不提供\n */\n sourceField?: string;\n /** 目标节点数据字段\n * 层级数据不提供\n */\n targetField?: string;\n\n /**\n * 图表布局方向\n */\n direction?: DirectionType;\n /**\n * 节点的对齐类型\n */\n nodeAlign?: 'left' | 'right' | 'center' | 'justify' | 'start' | 'end';\n /**\n * 同一层中两个节点之间的间隙大小\n */\n nodeGap?: number;\n /**\n * 每个节点的宽度,支持三种取值\n * 1. 百分比字符串,例如:{ nodeWidth: '12%' }\n * 2. 以'px'为单位的简单数字,eg: { nodeWidth: 20 }\n * 3. function,通过自定义计算指定nodeWidth\n */\n nodeWidth?: string | number | ((node: SankeyNodeElement) => number);\n /**\n * link宽度,单位px\n */\n linkWidth?: number | ((link: SankeyLinkElement) => number);\n /**\n * link + node 的最小宽度\n */\n minStepWidth?: number;\n /**\n * 数据不为零或空时节点的最小大小\n * - 这个配置可以用来避免数据太小时看不到太细的节点\n * - 建议小于5px\n */\n minNodeHeight?: number;\n /**\n * 数据不为零或空时边的最小大小\n * - 这个配置可以用来避免数据太小的时候看不到太细的链接\n * - 建议小于5px\n * - 当同时指定 `minNodeHeight` 和 `minLinkHeight` 两个选项时,此选项应小于 `minNodeHeight`\n */\n minLinkHeight?: number;\n /** 布局的迭代次数 */\n iterations?: number;\n /** 解析node的key,defaultValue */\n nodeKey?: string | number | ((datum: SankeyNodeDatum) => string | number);\n /** 按此funtion排序link */\n linkSortBy?: (a: SankeyLinkElement, b: SankeyLinkElement) => number;\n /** 按此funtion排序node */\n nodeSortBy?: (a: SankeyNodeElement, b: SankeyNodeElement) => number;\n /** 自定义指定节点层 */\n setNodeLayer?: (datum: SankeyNodeDatum) => number;\n /**\n * 是否丢弃孤立的节点\n * @since 1.11.0\n */\n dropIsolatedNode?: boolean;\n /**\n * set the height of node\n * @since 1.11.0\n */\n nodeHeight?: number | ((node: SankeyNodeElement) => number);\n /**\n * set the height of link\n * @since 1.11.0\n */\n linkHeight?: number | ((link: SankeyLinkElement, sourceNode: SankeyNodeElement, sourceNodeHeight: number) => number);\n /**\n * each node has same height\n * @since 1.11.0\n */\n equalNodeHeight?: boolean;\n /**\n * the layout type of link\n * @since 1.11.0\n */\n linkOverlap?: 'start' | 'center' | 'end';\n\n /** 节点配置 */\n [SeriesMarkNameEnum.node]?: IMarkSpec<IRectMarkSpec>;\n\n /** 边配置 */\n [SeriesMarkNameEnum.link]?: IMarkSpec<ILinkPathMarkSpec>;\n\n /** 联动交互配置 */\n emphasis?: {\n /** 是否开启交互 */\n enable: boolean;\n /**\n * 交互触发类型\n * 默认为‘click'\n */\n trigger?: 'click' | 'hover';\n /**桑基图提供3种在节点上的交互联动效果\n * self: 仅高亮当前节点。\n * adjacency: 高亮当前节点上下游节点和关联的边,淡化其它图形元素。\n * related: 高亮与当前节点相关的整条路径上的节点和边,淡化其它图形元素。 */\n effect: 'self' | 'adjacency' | 'related';\n };\n\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: ISankeyLabelSpec | ISankeyLabelSpec[];\n\n /** 进度条配置 */\n // scroll?: IScrollSpec & {\n // /** 是否开启进度条 */\n // enable: boolean;\n // };\n}\n\nexport interface SankeyLinkDatum {\n source: string | number;\n target: string | number;\n value?: number;\n}\n\nexport interface SankeyNodeDatum {\n value?: number;\n}\n\nexport interface HierarchyNodeDatum {\n value?: number;\n children?: HierarchyNodeDatum[];\n}\n\nexport type SankeyData =\n | {\n nodes?: SankeyNodeDatum[];\n links: SankeyLinkDatum[];\n }\n | {\n nodes: HierarchyNodeDatum[];\n };\n\n/**\n * The node element after sankey layout\n */\nexport interface SankeyNodeElement {\n key: string | number;\n index: number;\n /** the depth of node, from source to target */\n depth: number;\n\n /** the depth of node, from target to source */\n endDepth?: number;\n /** the final layer index after layout */\n layer?: number;\n isLastLayer?: boolean;\n value: number;\n datum: SankeyNodeDatum;\n sourceLinks: SankeyLinkElement[];\n targetLinks: SankeyLinkElement[];\n x0?: number;\n y0?: number;\n x1?: number;\n y1?: number;\n}\n/**\n * the link element after sankey layout\n */\nexport interface SankeyLinkElement {\n vertical?: boolean;\n index: number;\n source: string | number;\n target: string | number;\n value: number;\n datum: SankeyLinkDatum | SankeyLinkDatum[];\n thickness?: number;\n sourceRect?: { x0: number; x1: number; y0: number; y1: number };\n targetRect?: { x0: number; x1: number; y0: number; y1: number };\n /** this will only be generate in hierarchy node data*/\n parents?: (string | number)[];\n y0?: number;\n y1?: number;\n x0?: number;\n x1?: number;\n}\n\nexport type SankeyLayoutResult = {\n nodes: SankeyNodeElement[];\n links: SankeyLinkElement[];\n columns: SankeyNodeElement[][];\n}[];\n\nexport interface ISankeySeriesTheme {\n [SeriesMarkNameEnum.node]?: IMarkTheme<IRectMarkSpec>;\n [SeriesMarkNameEnum.link]?: IMarkTheme<ILinkPathMarkSpec>;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { BaseSeriesSpecTransformer } from '../base';
2
+ import type { ISankeySeriesSpec, ISankeySeriesTheme } from './interface';
3
+ export declare class SankeySeriesSpecTransformer<T extends ISankeySeriesSpec = ISankeySeriesSpec, K extends ISankeySeriesTheme = ISankeySeriesTheme> extends BaseSeriesSpecTransformer<T, K> {
4
+ protected _transformLabelSpec(spec: T): void;
5
+ }
@@ -0,0 +1,8 @@
1
+ import { BaseSeriesSpecTransformer } from "../base";
2
+
3
+ export class SankeySeriesSpecTransformer extends BaseSeriesSpecTransformer {
4
+ _transformLabelSpec(spec) {
5
+ this._addMarkLabelSpec(spec, "node");
6
+ }
7
+ }
8
+ //# sourceMappingURL=sankey-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/series/sankey/sankey-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAIpD,MAAM,OAAO,2BAGX,SAAQ,yBAA+B;IAC7B,mBAAmB,CAAC,IAAO;QACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,SAA0B,CAAC;IACxD,CAAC;CACF","file":"sankey-transformer.js","sourcesContent":["import { BaseSeriesSpecTransformer } from '../base';\nimport { SeriesMarkNameEnum } from '../interface';\nimport type { ISankeySeriesSpec, ISankeySeriesTheme } from './interface';\n\nexport class SankeySeriesSpecTransformer<\n T extends ISankeySeriesSpec = ISankeySeriesSpec,\n K extends ISankeySeriesTheme = ISankeySeriesTheme\n> extends BaseSeriesSpecTransformer<T, K> {\n protected _transformLabelSpec(spec: T): void {\n this._addMarkLabelSpec(spec, SeriesMarkNameEnum.node);\n }\n}\n"]}
@@ -1,19 +1,23 @@
1
1
  import { CartesianSeries } from '../cartesian/cartesian';
2
2
  import type { SeriesMarkMap } from '../interface';
3
3
  import { SeriesTypeEnum } from '../interface/type';
4
+ import type { ITextMark } from '../../mark/text';
4
5
  import type { Datum, StringOrNumber } from '../../typings';
5
6
  import { SeriesData } from '../base/series-data';
6
7
  import type { ISankeySeriesSpec } from './interface';
7
8
  import type { ExtendEventParam } from '../../event/interface';
8
9
  import type { IElement, IGlyphElement, IMark as IVgrammarMark } from '@visactor/vgrammar-core';
9
10
  import type { IMark } from '../../mark/interface';
11
+ import { SankeySeriesSpecTransformer } from './sankey-transformer';
12
+ import type { ILabelSpec } from '../../component';
10
13
  export declare class SankeySeries<T extends ISankeySeriesSpec = ISankeySeriesSpec> extends CartesianSeries<T> {
11
14
  static readonly type: string;
12
15
  type: SeriesTypeEnum;
16
+ static readonly transformerConstructor: any;
17
+ readonly transformerConstructor: typeof SankeySeriesSpecTransformer;
13
18
  static readonly mark: SeriesMarkMap;
14
19
  private _nodeMark;
15
20
  private _linkMark;
16
- private _labelMark?;
17
21
  private _nodeLayoutZIndex;
18
22
  private _labelLayoutZIndex;
19
23
  private _labelLimit;
@@ -23,6 +27,7 @@ export declare class SankeySeries<T extends ISankeySeriesSpec = ISankeySeriesSpe
23
27
  protected _categoryField: string;
24
28
  private _colorScale;
25
29
  private _nodeList;
30
+ get direction(): "vertical" | "horizontal";
26
31
  getCategoryField(): string;
27
32
  setCategoryField(f: string): string;
28
33
  protected _valueField: string;
@@ -41,7 +46,7 @@ export declare class SankeySeries<T extends ISankeySeriesSpec = ISankeySeriesSpe
41
46
  protected _fillByNode: (datum: Datum) => any;
42
47
  protected _fillByLink: (datum: Datum) => any;
43
48
  protected _initLinkMarkStyle(): void;
44
- protected _initLabelMarkStyle(): void;
49
+ initLabelMarkStyle(labelMark: ITextMark, labelSpec: ILabelSpec): void;
45
50
  private _createText;
46
51
  initAnimation(): void;
47
52
  protected initEvent(): void;
@@ -48,10 +48,15 @@ import { TransformLevel } from "../../data/initialize";
48
48
 
49
49
  import { addDataKey, initKeyMap } from "../../data/transforms/data-key";
50
50
 
51
+ import { SankeySeriesSpecTransformer } from "./sankey-transformer";
52
+
53
+ import { getFormatFunction } from "../../component/util";
54
+
51
55
  export class SankeySeries extends CartesianSeries {
52
56
  constructor() {
53
- super(...arguments), this.type = SeriesTypeEnum.sankey, this._nodeLayoutZIndex = LayoutZIndex.Node,
54
- this._labelLayoutZIndex = LayoutZIndex.Label, this._viewBox = new Bounds, this._fillByNode = datum => {
57
+ super(...arguments), this.type = SeriesTypeEnum.sankey, this.transformerConstructor = SankeySeriesSpecTransformer,
58
+ this._nodeLayoutZIndex = LayoutZIndex.Node, this._labelLayoutZIndex = LayoutZIndex.Label,
59
+ this._viewBox = new Bounds, this._fillByNode = datum => {
55
60
  var _a, _b, _c, _d, _e;
56
61
  if (datum && datum.sourceRect && datum.targetRect) return this._fillByLink(datum);
57
62
  const fill = null === (_b = null === (_a = this._spec.node) || void 0 === _a ? void 0 : _a.style) || void 0 === _b ? void 0 : _b.fill;
@@ -76,20 +81,16 @@ export class SankeySeries extends CartesianSeries {
76
81
  const emphasisSpec = null !== (_a = this._spec.emphasis) && void 0 !== _a ? _a : {}, element = params.item;
77
82
  "adjacency" === emphasisSpec.effect ? element && element.mark.id().includes("node") ? this._handleNodeAdjacencyClick(element) : element && element.mark.id().includes("link") ? this._handleLinkAdjacencyClick(element) : this._handleClearEmpty() : "related" === emphasisSpec.effect && (element && element.mark.id().includes("node") ? this._handleNodeRelatedClick(element) : element && element.mark.id().includes("link") ? this._handleLinkRelatedClick(element) : this._handleClearEmpty());
78
83
  }, this._handleClearEmpty = () => {
79
- var _a, _b, _c;
84
+ var _a, _b;
80
85
  const allNodeElements = null === (_a = this._nodeMark) || void 0 === _a ? void 0 : _a.getProductElements();
81
86
  if (!allNodeElements || !allNodeElements.length) return;
82
87
  const allLinkElements = null === (_b = this._linkMark) || void 0 === _b ? void 0 : _b.getProductElements();
83
88
  if (!allLinkElements || !allLinkElements.length) return;
84
- const allLabelElements = null === (_c = this._labelMark) || void 0 === _c ? void 0 : _c.getProductElements();
85
- if (!allLabelElements || !allLabelElements.length) return;
86
89
  const states = [ STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE ];
87
90
  allNodeElements.forEach((el => {
88
91
  el.removeState(states);
89
92
  })), allLinkElements.forEach((el => {
90
93
  el.removeState(states);
91
- })), allLabelElements.forEach((el => {
92
- el.removeState(states);
93
94
  }));
94
95
  }, this._handleNodeAdjacencyClick = element => {
95
96
  const nodeDatum = element.getDatum(), highlightNodes = [ nodeDatum.key ];
@@ -114,8 +115,7 @@ export class SankeySeries extends CartesianSeries {
114
115
  linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
115
116
  }));
116
117
  }
117
- this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
118
- this._labelMark && this._highLightElements(this._labelMark.getProductElements(), highlightNodes);
118
+ this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);
119
119
  }, this._handleLinkAdjacencyClick = element => {
120
120
  const curLinkDatum = element.getDatum(), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ];
121
121
  if (this._linkMark) {
@@ -128,8 +128,7 @@ export class SankeySeries extends CartesianSeries {
128
128
  })) : (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
129
129
  }));
130
130
  }
131
- this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
132
- this._labelMark && this._highLightElements(this._labelMark.getProductElements(), highlightNodes);
131
+ this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);
133
132
  }, this._handleNodeRelatedClick = element => {
134
133
  var _a;
135
134
  const nodeDatum = element.getDatum(), allNodeElements = this._nodeMark.getProductElements();
@@ -187,8 +186,7 @@ export class SankeySeries extends CartesianSeries {
187
186
  linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
188
187
  }));
189
188
  }
190
- this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
191
- this._labelMark && this._highLightElements(this._labelMark.getProductElements(), highlightNodes);
189
+ this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);
192
190
  } else {
193
191
  const highlightNodes = [ nodeDatum.key ], upstreamLinks = nodeDatum.targetLinks.reduce(((res, link) => (array(link.datum).forEach((dividedLink => {
194
192
  const parents = dividedLink.parents, len = parents.length;
@@ -219,8 +217,7 @@ export class SankeySeries extends CartesianSeries {
219
217
  ratio: upSelectedLink.value / linkDatum.value
220
218
  });
221
219
  linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
222
- })), this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
223
- this._labelMark && this._highLightElements(this._labelMark.getProductElements(), highlightNodes);
220
+ })), this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);
224
221
  }
225
222
  }, this._handleLinkRelatedClick = element => {
226
223
  var _a;
@@ -230,17 +227,11 @@ export class SankeySeries extends CartesianSeries {
230
227
  if (!allLinkElements || !allLinkElements.length) return;
231
228
  if ("source" === ((null === (_a = element.getDatum()) || void 0 === _a ? void 0 : _a.parents) ? "parents" : "source")) {
232
229
  const states = [ STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE ];
233
- if (this._linkMark && allLinkElements.forEach((linkEl => {
230
+ this._linkMark && allLinkElements.forEach((linkEl => {
234
231
  linkEl.removeState(states);
235
232
  })), this._nodeMark && allNodeElements.forEach((el => {
236
233
  el.removeState(states);
237
- })), this._labelMark) {
238
- const allLabelElements = this._labelMark.getProductElements();
239
- if (!allLabelElements || !allLabelElements.length) return;
240
- allLabelElements.forEach((el => {
241
- el.removeState(states);
242
- }));
243
- }
234
+ }));
244
235
  } else {
245
236
  const curLinkDatum = element.getDatum(), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ], upstreamLinks = [];
246
237
  array(curLinkDatum.datum).forEach((dividedLink => {
@@ -287,10 +278,14 @@ export class SankeySeries extends CartesianSeries {
287
278
  ratio: upSelectedLink.value / linkDatum.value
288
279
  });
289
280
  linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
290
- })), this._highLightElements(allNodeElements, highlightNodes), this._labelMark && this._highLightElements(this._labelMark.getProductElements(), highlightNodes);
281
+ })), this._highLightElements(allNodeElements, highlightNodes);
291
282
  }
292
283
  };
293
284
  }
285
+ get direction() {
286
+ var _a;
287
+ return null !== (_a = this._spec.direction) && void 0 !== _a ? _a : "horizontal";
288
+ }
294
289
  getCategoryField() {
295
290
  return this._categoryField;
296
291
  }
@@ -304,10 +299,9 @@ export class SankeySeries extends CartesianSeries {
304
299
  return this._valueField = f, this._valueField;
305
300
  }
306
301
  setAttrFromSpec() {
307
- var _a, _b, _c;
302
+ var _a;
308
303
  super.setAttrFromSpec(), this.setCategoryField(this._spec.categoryField), this.setValueField(this._spec.valueField),
309
- this.setSeriesField(null !== (_a = this._spec.seriesField) && void 0 !== _a ? _a : this._spec.categoryField),
310
- this._labelLimit = null !== (_c = null === (_b = this._spec.label) || void 0 === _b ? void 0 : _b.limit) && void 0 !== _c ? _c : 100;
304
+ this.setSeriesField(null !== (_a = this._spec.seriesField) && void 0 !== _a ? _a : this._spec.categoryField);
311
305
  }
312
306
  initData() {
313
307
  var _a, _b, _c, _d;
@@ -329,7 +323,7 @@ export class SankeySeries extends CartesianSeries {
329
323
  sourceField: this._spec.sourceField,
330
324
  targetField: this._spec.targetField,
331
325
  valueField: this._spec.valueField,
332
- direction: this._spec.direction,
326
+ direction: this.direction,
333
327
  nodeAlign: null !== (_a = this._spec.nodeAlign) && void 0 !== _a ? _a : "justify",
334
328
  nodeGap: null !== (_b = this._spec.nodeGap) && void 0 !== _b ? _b : 8,
335
329
  nodeWidth: null !== (_c = this._spec.nodeWidth) && void 0 !== _c ? _c : 10,
@@ -409,13 +403,7 @@ export class SankeySeries extends CartesianSeries {
409
403
  customShape: null === (_c = this._spec.link) || void 0 === _c ? void 0 : _c.customShape,
410
404
  stateSort: null === (_d = this._spec.link) || void 0 === _d ? void 0 : _d.stateSort
411
405
  });
412
- if (linkMark && (this._linkMark = linkMark), this._spec.label && this._spec.label.visible) {
413
- const labelMark = this._createMark(SankeySeries.mark.label, {
414
- dataView: this._nodesSeriesData.getDataView(),
415
- dataProductId: this._nodesSeriesData.getProductId()
416
- });
417
- labelMark && (this._labelMark = labelMark);
418
- }
406
+ linkMark && (this._linkMark = linkMark);
419
407
  }
420
408
  _buildMarkAttributeContext() {
421
409
  super._buildMarkAttributeContext(), this._markAttributeContext.valueToNode = this.valueToNode.bind(this),
@@ -438,7 +426,7 @@ export class SankeySeries extends CartesianSeries {
438
426
  return null == node ? void 0 : node.y0;
439
427
  }
440
428
  initMarkStyle() {
441
- this._initNodeMarkStyle(), this._initLinkMarkStyle(), this._initLabelMarkStyle();
429
+ this._initNodeMarkStyle(), this._initLinkMarkStyle();
442
430
  }
443
431
  _initNodeMarkStyle() {
444
432
  const nodeMark = this._nodeMark;
@@ -451,7 +439,6 @@ export class SankeySeries extends CartesianSeries {
451
439
  }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Mark);
452
440
  }
453
441
  _initLinkMarkStyle() {
454
- var _a;
455
442
  const linkMark = this._linkMark;
456
443
  linkMark && this.setMarkStyle(linkMark, {
457
444
  x0: datum => datum.x0,
@@ -460,119 +447,35 @@ export class SankeySeries extends CartesianSeries {
460
447
  y1: datum => datum.y1,
461
448
  thickness: datum => datum.thickness,
462
449
  fill: this._fillByLink,
463
- direction: null !== (_a = this._spec.direction) && void 0 !== _a ? _a : "horizontal"
450
+ direction: this.direction
464
451
  }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);
465
452
  }
466
- _initLabelMarkStyle() {
467
- this._labelMark && ("vertical" === this._spec.direction ? "inside-start" === this._spec.label.position ? this.setMarkStyle(this._labelMark, {
468
- x: datum => datum.x0,
469
- y: datum => (datum.y0 + datum.y1) / 2,
470
- fill: "#ffffff",
471
- text: datum => this._createText(datum),
472
- limit: datum => {
473
- var _a;
474
- return null !== (_a = this._spec.label.limit) && void 0 !== _a ? _a : datum.x1 - datum.x0;
475
- },
476
- textAlign: "left",
477
- textBaseline: "middle"
478
- }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series) : "inside-middle" === this._spec.label.position ? this.setMarkStyle(this._labelMark, {
479
- x: datum => (datum.x0 + datum.x1) / 2,
480
- y: datum => (datum.y0 + datum.y1) / 2,
481
- fill: "#ffffff",
482
- text: datum => this._createText(datum),
483
- limit: datum => {
484
- var _a;
485
- return null !== (_a = this._spec.label.limit) && void 0 !== _a ? _a : datum.x1 - datum.x0;
486
- },
487
- textAlign: "center",
488
- textBaseline: "middle"
489
- }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series) : "inside-end" === this._spec.label.position ? this.setMarkStyle(this._labelMark, {
490
- x: datum => datum.x1,
491
- y: datum => (datum.y0 + datum.y1) / 2,
492
- fill: "#ffffff",
493
- text: datum => this._createText(datum),
494
- limit: datum => {
495
- var _a;
496
- return null !== (_a = this._spec.label.limit) && void 0 !== _a ? _a : datum.x1 - datum.x0;
497
- },
498
- textAlign: "right",
499
- textBaseline: "middle"
500
- }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series) : this.setMarkStyle(this._labelMark, {
501
- x: datum => (datum.x0 + datum.x1) / 2,
502
- y: datum => datum.y1 >= this._viewBox.y2 ? datum.y0 : datum.y1,
503
- fill: this._fillByNode,
504
- text: datum => this._createText(datum),
505
- limit: this._labelLimit,
506
- textAlign: "center",
507
- textBaseline: datum => datum.y1 >= this._viewBox.y2 ? "bottom" : "top"
508
- }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series) : "inside-start" === this._spec.label.position ? this.setMarkStyle(this._labelMark, {
509
- x: datum => datum.x0,
510
- y: datum => (datum.y0 + datum.y1) / 2,
511
- fill: "#ffffff",
512
- text: datum => this._createText(datum),
513
- limit: datum => {
514
- var _a;
515
- return null !== (_a = this._spec.label.limit) && void 0 !== _a ? _a : datum.x1 - datum.x0;
516
- },
517
- textAlign: "left",
518
- textBaseline: "middle"
519
- }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series) : "inside-middle" === this._spec.label.position ? this.setMarkStyle(this._labelMark, {
520
- x: datum => (datum.x0 + datum.x1) / 2,
521
- y: datum => (datum.y0 + datum.y1) / 2,
522
- fill: "#ffffff",
523
- text: datum => this._createText(datum),
524
- limit: datum => {
525
- var _a;
526
- return null !== (_a = this._spec.label.limit) && void 0 !== _a ? _a : datum.x1 - datum.x0;
527
- },
528
- textAlign: "center",
529
- textBaseline: "middle"
530
- }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series) : "inside-end" === this._spec.label.position ? this.setMarkStyle(this._labelMark, {
531
- x: datum => datum.x1,
532
- y: datum => (datum.y0 + datum.y1) / 2,
453
+ initLabelMarkStyle(labelMark, labelSpec) {
454
+ if (!labelMark) return;
455
+ const position = labelSpec.position;
456
+ position && position.includes("inside") ? this.setMarkStyle(labelMark, {
533
457
  fill: "#ffffff",
534
- text: datum => this._createText(datum),
535
- limit: datum => {
458
+ text: datum => this._createText(datum, labelSpec),
459
+ maxLineWidth: datum => {
536
460
  var _a;
537
- return null !== (_a = this._spec.label.limit) && void 0 !== _a ? _a : datum.x1 - datum.x0;
538
- },
539
- textAlign: "right",
540
- textBaseline: "middle"
541
- }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series) : "left" === this._spec.label.position ? this.setMarkStyle(this._labelMark, {
542
- x: datum => datum.x0,
543
- y: datum => (datum.y0 + datum.y1) / 2,
544
- fill: this._fillByNode,
545
- text: datum => this._createText(datum),
546
- limit: this._labelLimit,
547
- textAlign: "right",
548
- textBaseline: "middle"
549
- }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series) : "right" === this._spec.label.position ? this.setMarkStyle(this._labelMark, {
550
- x: datum => datum.x1,
551
- y: datum => (datum.y0 + datum.y1) / 2,
552
- fill: this._fillByNode,
553
- text: datum => this._createText(datum),
554
- limit: this._labelLimit,
555
- textAlign: "left",
556
- textBaseline: "middle"
557
- }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series) : this.setMarkStyle(this._labelMark, {
558
- x: datum => datum.x1 >= this._viewBox.x2 ? datum.x0 : datum.x1,
559
- y: datum => (datum.y0 + datum.y1) / 2,
461
+ return null !== (_a = labelSpec.limit) && void 0 !== _a ? _a : datum.x1 - datum.x0;
462
+ }
463
+ }) : this.setMarkStyle(labelMark, {
560
464
  fill: this._fillByNode,
561
- text: datum => this._createText(datum),
562
- limit: this._labelLimit,
563
- textAlign: datum => datum.x1 >= this._viewBox.x2 ? "right" : "left",
564
- textBaseline: "middle"
565
- }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series), this._labelMark.setZIndex(this._labelLayoutZIndex));
465
+ text: datum => this._createText(datum, labelSpec),
466
+ maxLineWidth: labelSpec.limit
467
+ }), labelMark.setZIndex(this._labelLayoutZIndex);
566
468
  }
567
- _createText(datum) {
568
- var _a;
469
+ _createText(datum, labelSpec) {
569
470
  if (isNil(datum) || isNil(datum.datum)) return "";
570
471
  let text = datum.datum[this._spec.categoryField] || "";
571
- return (null === (_a = this._spec.label) || void 0 === _a ? void 0 : _a.formatMethod) && (text = this._spec.label.formatMethod(text, datum.datum)),
572
- text;
472
+ const {formatMethod: formatMethod, formatter: formatter} = labelSpec || {}, {formatFunc: formatFunc, args: args} = getFormatFunction(formatMethod, formatter, text, datum.datum);
473
+ return formatFunc && (text = formatFunc(...args, {
474
+ series: this
475
+ })), text;
573
476
  }
574
477
  initAnimation() {
575
- var _a, _b, _c, _d, _e;
478
+ var _a, _b, _c, _d;
576
479
  const animationParams = {
577
480
  direction: this.direction,
578
481
  growFrom: () => {
@@ -581,8 +484,7 @@ export class SankeySeries extends CartesianSeries {
581
484
  }
582
485
  }, appearPreset = null === (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.animationAppear) || void 0 === _b ? void 0 : _b.preset;
583
486
  this._nodeMark && this._nodeMark.setAnimationConfig(animationConfig(null === (_c = Factory.getAnimationInKey("sankeyNode")) || void 0 === _c ? void 0 : _c(animationParams, appearPreset), userAnimationConfig("node", this._spec, this._markAttributeContext))),
584
- this._linkMark && this._linkMark.setAnimationConfig(animationConfig(null === (_d = Factory.getAnimationInKey("sankeyLinkPath")) || void 0 === _d ? void 0 : _d(animationParams, appearPreset), userAnimationConfig("link", this._spec, this._markAttributeContext))),
585
- this._labelMark && this._labelMark.setAnimationConfig(animationConfig(null === (_e = Factory.getAnimationInKey("fadeInOut")) || void 0 === _e ? void 0 : _e(), userAnimationConfig("label", this._spec, this._markAttributeContext)));
487
+ this._linkMark && this._linkMark.setAnimationConfig(animationConfig(null === (_d = Factory.getAnimationInKey("sankeyLinkPath")) || void 0 === _d ? void 0 : _d(animationParams, appearPreset), userAnimationConfig("link", this._spec, this._markAttributeContext)));
586
488
  }
587
489
  initEvent() {
588
490
  var _a, _b, _c;
@@ -610,8 +512,7 @@ export class SankeySeries extends CartesianSeries {
610
512
  }
611
513
  initTooltip() {
612
514
  this._tooltipHelper = new SankeySeriesTooltipHelper(this), this._nodeMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nodeMark),
613
- this._linkMark && this._tooltipHelper.activeTriggerSet.mark.add(this._linkMark),
614
- this._labelMark && this._tooltipHelper.activeTriggerSet.mark.add(this._labelMark);
515
+ this._linkMark && this._tooltipHelper.activeTriggerSet.mark.add(this._linkMark);
615
516
  }
616
517
  _setNodeOrdinalColorScale() {
617
518
  var _a, _b, _c, _d, _e;
@@ -626,9 +527,9 @@ export class SankeySeries extends CartesianSeries {
626
527
  this._colorScale = ordinalScale;
627
528
  }
628
529
  getNodeList() {
629
- var _a;
530
+ var _a, _b;
630
531
  if (this._nodeList) return this._nodeList;
631
- const data = this._rawData.latestData[0], nodeList = (null == data ? void 0 : data.nodes) ? (null === (_a = data.nodes[0]) || void 0 === _a ? void 0 : _a.children) ? Array.from(this.extractNamesFromTree(data.nodes, this._spec.categoryField)) : data.nodes.map(((datum, index) => datum[this._spec.categoryField])) : (null == data ? void 0 : data.links) ? Array.from(this.extractNamesFromLink(data.links)) : null == data ? void 0 : data.values.map(((datum, index) => datum[this._spec.categoryField]));
532
+ const data = this._rawData.latestData[0], nodeList = (null == data ? void 0 : data.nodes) ? (null === (_a = data.nodes[0]) || void 0 === _a ? void 0 : _a.children) ? Array.from(this.extractNamesFromTree(data.nodes, this._spec.categoryField)) : data.nodes.map(((datum, index) => datum[this._spec.categoryField])) : (null == data ? void 0 : data.links) ? Array.from(this.extractNamesFromLink(data.links)) : null === (_b = null == data ? void 0 : data.values) || void 0 === _b ? void 0 : _b.map(((datum, index) => datum[this._spec.categoryField]));
632
533
  return this._nodeList = nodeList, nodeList;
633
534
  }
634
535
  _getNodeNameFromData(datum) {
@@ -689,7 +590,8 @@ export class SankeySeries extends CartesianSeries {
689
590
  }
690
591
  }
691
592
 
692
- SankeySeries.type = SeriesTypeEnum.sankey, SankeySeries.mark = sankeySeriesMark;
593
+ SankeySeries.type = SeriesTypeEnum.sankey, SankeySeries.transformerConstructor = SankeySeriesSpecTransformer,
594
+ SankeySeries.mark = sankeySeriesMark;
693
595
 
694
596
  export const registerSankeySeries = () => {
695
597
  registerSankeyTransforms(), registerRectMark(), registerLinkPathMark(), registerTextMark(),