@visactor/vseed 0.3.15 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/buildSpec.js +1 -0
  4. package/dist/esm/builder/builder/buildSpec.js.map +1 -1
  5. package/dist/esm/builder/builder/builder.d.ts +1212 -302
  6. package/dist/esm/builder/register/all.js +4 -1
  7. package/dist/esm/builder/register/all.js.map +1 -1
  8. package/dist/esm/builder/register/chartType/circlePacking.d.ts +5 -0
  9. package/dist/esm/builder/register/chartType/circlePacking.js +9 -0
  10. package/dist/esm/builder/register/chartType/circlePacking.js.map +1 -0
  11. package/dist/esm/builder/register/chartType/index.d.ts +3 -0
  12. package/dist/esm/builder/register/chartType/index.js +4 -1
  13. package/dist/esm/builder/register/chartType/sunburst.d.ts +5 -0
  14. package/dist/esm/builder/register/chartType/sunburst.js +9 -0
  15. package/dist/esm/builder/register/chartType/sunburst.js.map +1 -0
  16. package/dist/esm/builder/register/chartType/treeMap.d.ts +5 -0
  17. package/dist/esm/builder/register/chartType/treeMap.js +9 -0
  18. package/dist/esm/builder/register/chartType/treeMap.js.map +1 -0
  19. package/dist/esm/dataReshape/constant.d.ts +2 -0
  20. package/dist/esm/dataReshape/constant.js +3 -1
  21. package/dist/esm/dataReshape/constant.js.map +1 -1
  22. package/dist/esm/dataReshape/unfoldDimensions.js +8 -2
  23. package/dist/esm/dataReshape/unfoldDimensions.js.map +1 -1
  24. package/dist/esm/pipeline/advanced/chart/pipeline/circlePacking.d.ts +2 -0
  25. package/dist/esm/pipeline/advanced/chart/pipeline/circlePacking.js +33 -0
  26. package/dist/esm/pipeline/advanced/chart/pipeline/circlePacking.js.map +1 -0
  27. package/dist/esm/pipeline/advanced/chart/pipeline/index.d.ts +6 -3
  28. package/dist/esm/pipeline/advanced/chart/pipeline/index.js +7 -4
  29. package/dist/esm/pipeline/advanced/chart/pipeline/raceBar.js +33 -2
  30. package/dist/esm/pipeline/advanced/chart/pipeline/raceBar.js.map +1 -1
  31. package/dist/esm/pipeline/advanced/chart/pipeline/raceColumn.js +34 -2
  32. package/dist/esm/pipeline/advanced/chart/pipeline/raceColumn.js.map +1 -1
  33. package/dist/esm/pipeline/advanced/chart/pipeline/raceScatter.js +28 -2
  34. package/dist/esm/pipeline/advanced/chart/pipeline/raceScatter.js.map +1 -1
  35. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js +1 -3
  36. package/dist/esm/pipeline/advanced/chart/pipeline/scatter.js.map +1 -1
  37. package/dist/esm/pipeline/advanced/chart/pipeline/sunburst.d.ts +2 -0
  38. package/dist/esm/pipeline/advanced/chart/pipeline/sunburst.js +33 -0
  39. package/dist/esm/pipeline/advanced/chart/pipeline/sunburst.js.map +1 -0
  40. package/dist/esm/pipeline/advanced/chart/pipeline/treeMap.d.ts +2 -0
  41. package/dist/esm/pipeline/advanced/chart/pipeline/treeMap.js +33 -0
  42. package/dist/esm/pipeline/advanced/chart/pipeline/treeMap.js.map +1 -0
  43. package/dist/esm/pipeline/advanced/chart/pipes/config/circlePacking.d.ts +2 -0
  44. package/dist/esm/pipeline/advanced/chart/pipes/config/circlePacking.js +27 -0
  45. package/dist/esm/pipeline/advanced/chart/pipes/config/circlePacking.js.map +1 -0
  46. package/dist/esm/pipeline/advanced/chart/pipes/config/index.d.ts +3 -0
  47. package/dist/esm/pipeline/advanced/chart/pipes/config/index.js +4 -1
  48. package/dist/esm/pipeline/advanced/chart/pipes/config/index.js.map +1 -1
  49. package/dist/esm/pipeline/advanced/chart/pipes/config/sunburst.d.ts +2 -0
  50. package/dist/esm/pipeline/advanced/chart/pipes/config/sunburst.js +27 -0
  51. package/dist/esm/pipeline/advanced/chart/pipes/config/sunburst.js.map +1 -0
  52. package/dist/esm/pipeline/advanced/chart/pipes/config/treeMap.d.ts +2 -0
  53. package/dist/esm/pipeline/advanced/chart/pipes/config/treeMap.js +27 -0
  54. package/dist/esm/pipeline/advanced/chart/pipes/config/treeMap.js.map +1 -0
  55. package/dist/esm/pipeline/advanced/chart/pipes/encoding/hierarchy.d.ts +3 -0
  56. package/dist/esm/pipeline/advanced/chart/pipes/encoding/hierarchy.js +77 -0
  57. package/dist/esm/pipeline/advanced/chart/pipes/encoding/hierarchy.js.map +1 -0
  58. package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.d.ts +4 -0
  59. package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.js +5 -1
  60. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceBar.d.ts +3 -0
  61. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceBar.js +81 -0
  62. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceBar.js.map +1 -0
  63. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceColumn.d.ts +3 -0
  64. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceColumn.js +81 -0
  65. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceColumn.js.map +1 -0
  66. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceScatter.d.ts +3 -0
  67. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceScatter.js +83 -0
  68. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceScatter.js.map +1 -0
  69. package/dist/esm/pipeline/advanced/chart/pipes/encoding/rose.js.map +1 -1
  70. package/dist/esm/pipeline/advanced/chart/pipes/reshape/index.d.ts +2 -0
  71. package/dist/esm/pipeline/advanced/chart/pipes/reshape/index.js +3 -1
  72. package/dist/esm/pipeline/spec/chart/pipeline/circlePacking.d.ts +1 -0
  73. package/dist/esm/pipeline/spec/chart/pipeline/circlePacking.js +36 -0
  74. package/dist/esm/pipeline/spec/chart/pipeline/circlePacking.js.map +1 -0
  75. package/dist/esm/pipeline/spec/chart/pipeline/index.d.ts +3 -0
  76. package/dist/esm/pipeline/spec/chart/pipeline/index.js +4 -1
  77. package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js +3 -3
  78. package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js.map +1 -1
  79. package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js +3 -3
  80. package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js.map +1 -1
  81. package/dist/esm/pipeline/spec/chart/pipeline/raceScatter.js +14 -7
  82. package/dist/esm/pipeline/spec/chart/pipeline/raceScatter.js.map +1 -1
  83. package/dist/esm/pipeline/spec/chart/pipeline/sunburst.d.ts +1 -0
  84. package/dist/esm/pipeline/spec/chart/pipeline/sunburst.js +36 -0
  85. package/dist/esm/pipeline/spec/chart/pipeline/sunburst.js.map +1 -0
  86. package/dist/esm/pipeline/spec/chart/pipeline/treeMap.d.ts +1 -0
  87. package/dist/esm/pipeline/spec/chart/pipeline/treeMap.js +39 -0
  88. package/dist/esm/pipeline/spec/chart/pipeline/treeMap.js.map +1 -0
  89. package/dist/esm/pipeline/spec/chart/pipes/axes/bandAxisStyle.js +6 -1
  90. package/dist/esm/pipeline/spec/chart/pipes/axes/bandAxisStyle.js.map +1 -1
  91. package/dist/esm/pipeline/spec/chart/pipes/axes/linearAxisStyle.js +6 -1
  92. package/dist/esm/pipeline/spec/chart/pipes/axes/linearAxisStyle.js.map +1 -1
  93. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js +5 -2
  94. package/dist/esm/pipeline/spec/chart/pipes/axes/xLinear.js.map +1 -1
  95. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js +5 -2
  96. package/dist/esm/pipeline/spec/chart/pipes/axes/yLinear.js.map +1 -1
  97. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHierarchy.d.ts +10 -0
  98. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHierarchy.js +119 -0
  99. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetHierarchy.js.map +1 -0
  100. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetPivotHierarchy.d.ts +2 -0
  101. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetPivotHierarchy.js +72 -0
  102. package/dist/esm/pipeline/spec/chart/pipes/dataset/datasetPivotHierarchy.js.map +1 -0
  103. package/dist/esm/pipeline/spec/chart/pipes/dataset/index.d.ts +2 -0
  104. package/dist/esm/pipeline/spec/chart/pipes/dataset/index.js +3 -1
  105. package/dist/esm/pipeline/spec/chart/pipes/{player/playerXBand.d.ts → hierarchy/drill.d.ts} +1 -1
  106. package/dist/esm/pipeline/spec/chart/pipes/hierarchy/drill.js +7 -0
  107. package/dist/esm/pipeline/spec/chart/pipes/hierarchy/drill.js.map +1 -0
  108. package/dist/esm/pipeline/spec/chart/pipes/hierarchy/index.d.ts +1 -0
  109. package/dist/esm/pipeline/spec/chart/pipes/hierarchy/index.js +2 -0
  110. package/dist/esm/pipeline/spec/chart/pipes/index.d.ts +1 -0
  111. package/dist/esm/pipeline/spec/chart/pipes/index.js +1 -0
  112. package/dist/esm/pipeline/spec/chart/pipes/init/circlePacking.d.ts +2 -0
  113. package/dist/esm/pipeline/spec/chart/pipes/init/circlePacking.js +35 -0
  114. package/dist/esm/pipeline/spec/chart/pipes/init/circlePacking.js.map +1 -0
  115. package/dist/esm/pipeline/spec/chart/pipes/init/index.d.ts +3 -0
  116. package/dist/esm/pipeline/spec/chart/pipes/init/index.js +4 -1
  117. package/dist/esm/pipeline/spec/chart/pipes/{player/playerYLinear.d.ts → init/sunburst.d.ts} +1 -1
  118. package/dist/esm/pipeline/spec/chart/pipes/init/sunburst.js +43 -0
  119. package/dist/esm/pipeline/spec/chart/pipes/init/sunburst.js.map +1 -0
  120. package/dist/esm/pipeline/spec/chart/pipes/{player/playerYBand.d.ts → init/treeMap.d.ts} +1 -1
  121. package/dist/esm/pipeline/spec/chart/pipes/init/treeMap.js +25 -0
  122. package/dist/esm/pipeline/spec/chart/pipes/init/treeMap.js.map +1 -0
  123. package/dist/esm/pipeline/spec/chart/pipes/label/index.d.ts +4 -0
  124. package/dist/esm/pipeline/spec/chart/pipes/label/index.js +5 -1
  125. package/dist/esm/pipeline/spec/chart/pipes/label/label.js.map +1 -1
  126. package/dist/esm/pipeline/spec/chart/pipes/label/labelCirclePacking.d.ts +2 -0
  127. package/dist/esm/pipeline/spec/chart/pipes/label/labelCirclePacking.js +23 -0
  128. package/dist/esm/pipeline/spec/chart/pipes/label/labelCirclePacking.js.map +1 -0
  129. package/dist/esm/pipeline/spec/chart/pipes/{player/playerXLinear.d.ts → label/labelSunburst.d.ts} +1 -1
  130. package/dist/esm/pipeline/spec/chart/pipes/label/labelSunburst.js +26 -0
  131. package/dist/esm/pipeline/spec/chart/pipes/label/labelSunburst.js.map +1 -0
  132. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapGroup.d.ts +2 -0
  133. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapGroup.js +31 -0
  134. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapGroup.js.map +1 -0
  135. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.d.ts +2 -0
  136. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.js +68 -0
  137. package/dist/esm/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.js.map +1 -0
  138. package/dist/esm/pipeline/spec/chart/pipes/player/index.d.ts +0 -4
  139. package/dist/esm/pipeline/spec/chart/pipes/player/index.js +0 -4
  140. package/dist/esm/pipeline/spec/chart/pipes/player/playerXY.js +45 -16
  141. package/dist/esm/pipeline/spec/chart/pipes/player/playerXY.js.map +1 -1
  142. package/dist/esm/pipeline/spec/chart/pipes/player/playerYX.js +47 -21
  143. package/dist/esm/pipeline/spec/chart/pipes/player/playerYX.js.map +1 -1
  144. package/dist/esm/pipeline/spec/chart/pipes/player/playerYY.js +13 -9
  145. package/dist/esm/pipeline/spec/chart/pipes/player/playerYY.js.map +1 -1
  146. package/dist/esm/pipeline/spec/chart/pipes/tooltip/index.d.ts +1 -0
  147. package/dist/esm/pipeline/spec/chart/pipes/tooltip/index.js +2 -1
  148. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.d.ts +2 -0
  149. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js +84 -0
  150. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipHierarchy.js.map +1 -0
  151. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.d.ts +2 -0
  152. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js +93 -0
  153. package/dist/esm/pipeline/spec/chart/pipes/tooltip/tooltipTreeMap.js.map +1 -0
  154. package/dist/esm/pipeline/utils/constant.d.ts +3 -0
  155. package/dist/esm/pipeline/utils/constant.js +3 -0
  156. package/dist/esm/pipeline/utils/constant.js.map +1 -1
  157. package/dist/esm/pipeline/utils/measures/typeGuard.d.ts +2 -2
  158. package/dist/esm/pipeline/utils/measures/typeGuard.js +1 -1
  159. package/dist/esm/pipeline/utils/measures/typeGuard.js.map +1 -1
  160. package/dist/esm/theme/common/player.js +2 -0
  161. package/dist/esm/theme/common/player.js.map +1 -1
  162. package/dist/esm/theme/dark/area.d.ts +156 -0
  163. package/dist/esm/theme/dark/area.js +29 -0
  164. package/dist/esm/theme/dark/area.js.map +1 -0
  165. package/dist/esm/theme/dark/bar.d.ts +238 -0
  166. package/dist/esm/theme/dark/bar.js +49 -0
  167. package/dist/esm/theme/dark/bar.js.map +1 -0
  168. package/dist/esm/theme/dark/boxPlot.d.ts +80 -0
  169. package/dist/esm/theme/dark/boxPlot.js +31 -0
  170. package/dist/esm/theme/dark/boxPlot.js.map +1 -0
  171. package/dist/esm/theme/dark/column.d.ts +411 -0
  172. package/dist/esm/theme/dark/column.js +64 -0
  173. package/dist/esm/theme/dark/column.js.map +1 -0
  174. package/dist/esm/theme/dark/dark.js +42 -328
  175. package/dist/esm/theme/dark/dark.js.map +1 -1
  176. package/dist/esm/theme/dark/dualAxis.d.ts +122 -0
  177. package/dist/esm/theme/dark/dualAxis.js +34 -0
  178. package/dist/esm/theme/dark/dualAxis.js.map +1 -0
  179. package/dist/esm/theme/dark/funnel.d.ts +64 -0
  180. package/dist/esm/theme/dark/funnel.js +22 -0
  181. package/dist/esm/theme/dark/funnel.js.map +1 -0
  182. package/dist/esm/theme/dark/heatmap.d.ts +66 -0
  183. package/dist/esm/theme/dark/heatmap.js +30 -0
  184. package/dist/esm/theme/dark/heatmap.js.map +1 -0
  185. package/dist/esm/theme/dark/hierarchy.d.ts +189 -0
  186. package/dist/esm/theme/dark/hierarchy.js +21 -0
  187. package/dist/esm/theme/dark/hierarchy.js.map +1 -0
  188. package/dist/esm/theme/dark/histogram.d.ts +252 -0
  189. package/dist/esm/theme/dark/histogram.js +29 -0
  190. package/dist/esm/theme/dark/histogram.js.map +1 -0
  191. package/dist/esm/theme/dark/line.d.ts +78 -0
  192. package/dist/esm/theme/dark/line.js +28 -0
  193. package/dist/esm/theme/dark/line.js.map +1 -0
  194. package/dist/esm/theme/dark/pie.d.ts +130 -0
  195. package/dist/esm/theme/dark/pie.js +26 -0
  196. package/dist/esm/theme/dark/pie.js.map +1 -0
  197. package/dist/esm/theme/dark/race.d.ts +717 -0
  198. package/dist/esm/theme/dark/race.js +138 -0
  199. package/dist/esm/theme/dark/race.js.map +1 -0
  200. package/dist/esm/theme/dark/radar.d.ts +63 -0
  201. package/dist/esm/theme/dark/radar.js +19 -0
  202. package/dist/esm/theme/dark/radar.js.map +1 -0
  203. package/dist/esm/theme/dark/rose.d.ts +128 -0
  204. package/dist/esm/theme/dark/rose.js +25 -0
  205. package/dist/esm/theme/dark/rose.js.map +1 -0
  206. package/dist/esm/theme/dark/scatter.d.ts +345 -0
  207. package/dist/esm/theme/dark/scatter.js +50 -0
  208. package/dist/esm/theme/dark/scatter.js.map +1 -0
  209. package/dist/esm/theme/light/area.d.ts +156 -0
  210. package/dist/esm/theme/light/area.js +29 -0
  211. package/dist/esm/theme/light/area.js.map +1 -0
  212. package/dist/esm/theme/light/bar.d.ts +238 -0
  213. package/dist/esm/theme/light/bar.js +49 -0
  214. package/dist/esm/theme/light/bar.js.map +1 -0
  215. package/dist/esm/theme/light/boxPlot.d.ts +80 -0
  216. package/dist/esm/theme/light/boxPlot.js +30 -0
  217. package/dist/esm/theme/light/boxPlot.js.map +1 -0
  218. package/dist/esm/theme/light/column.d.ts +411 -0
  219. package/dist/esm/theme/light/column.js +64 -0
  220. package/dist/esm/theme/light/column.js.map +1 -0
  221. package/dist/esm/theme/light/dualAxis.d.ts +122 -0
  222. package/dist/esm/theme/light/dualAxis.js +34 -0
  223. package/dist/esm/theme/light/dualAxis.js.map +1 -0
  224. package/dist/esm/theme/light/funnel.d.ts +64 -0
  225. package/dist/esm/theme/light/funnel.js +22 -0
  226. package/dist/esm/theme/light/funnel.js.map +1 -0
  227. package/dist/esm/theme/light/heatmap.d.ts +66 -0
  228. package/dist/esm/theme/light/heatmap.js +30 -0
  229. package/dist/esm/theme/light/heatmap.js.map +1 -0
  230. package/dist/esm/theme/light/hierarchy.d.ts +189 -0
  231. package/dist/esm/theme/light/hierarchy.js +21 -0
  232. package/dist/esm/theme/light/hierarchy.js.map +1 -0
  233. package/dist/esm/theme/light/histogram.d.ts +252 -0
  234. package/dist/esm/theme/light/histogram.js +29 -0
  235. package/dist/esm/theme/light/histogram.js.map +1 -0
  236. package/dist/esm/theme/light/light.js +42 -334
  237. package/dist/esm/theme/light/light.js.map +1 -1
  238. package/dist/esm/theme/light/line.d.ts +78 -0
  239. package/dist/esm/theme/light/line.js +28 -0
  240. package/dist/esm/theme/light/line.js.map +1 -0
  241. package/dist/esm/theme/light/pie.d.ts +130 -0
  242. package/dist/esm/theme/light/pie.js +26 -0
  243. package/dist/esm/theme/light/pie.js.map +1 -0
  244. package/dist/esm/theme/light/race.d.ts +899 -0
  245. package/dist/esm/theme/light/race.js +172 -0
  246. package/dist/esm/theme/light/race.js.map +1 -0
  247. package/dist/esm/theme/light/radar.d.ts +63 -0
  248. package/dist/esm/theme/light/radar.js +19 -0
  249. package/dist/esm/theme/light/radar.js.map +1 -0
  250. package/dist/esm/theme/light/rose.d.ts +128 -0
  251. package/dist/esm/theme/light/rose.js +25 -0
  252. package/dist/esm/theme/light/rose.js.map +1 -0
  253. package/dist/esm/theme/light/scatter.d.ts +345 -0
  254. package/dist/esm/theme/light/scatter.js +50 -0
  255. package/dist/esm/theme/light/scatter.js.map +1 -0
  256. package/dist/esm/types/chartType/area/zArea.d.ts +13 -2
  257. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +13 -2
  258. package/dist/esm/types/chartType/bar/zBar.d.ts +13 -2
  259. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +13 -2
  260. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +13 -2
  261. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +13 -2
  262. package/dist/esm/types/chartType/circlePacking/circlePacking.d.ts +85 -0
  263. package/dist/esm/types/chartType/circlePacking/circlePacking.js +0 -0
  264. package/dist/esm/types/chartType/circlePacking/index.d.ts +2 -0
  265. package/dist/esm/types/chartType/circlePacking/index.js +1 -0
  266. package/dist/esm/types/chartType/circlePacking/zCirclePacking.d.ts +263 -0
  267. package/dist/esm/types/chartType/circlePacking/zCirclePacking.js +19 -0
  268. package/dist/esm/types/chartType/circlePacking/zCirclePacking.js.map +1 -0
  269. package/dist/esm/types/chartType/column/zColumn.d.ts +13 -3
  270. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +13 -3
  271. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +13 -2
  272. package/dist/esm/types/chartType/donut/zDonut.d.ts +4 -1
  273. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +26 -4
  274. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +4 -1
  275. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +2 -0
  276. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +14 -3
  277. package/dist/esm/types/chartType/index.d.ts +3 -0
  278. package/dist/esm/types/chartType/index.js +3 -0
  279. package/dist/esm/types/chartType/line/zLine.d.ts +13 -2
  280. package/dist/esm/types/chartType/pie/zPie.d.ts +4 -1
  281. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +2 -0
  282. package/dist/esm/types/chartType/raceBar/raceBar.d.ts +3 -4
  283. package/dist/esm/types/chartType/raceBar/zRaceBar.d.ts +13 -3
  284. package/dist/esm/types/chartType/raceColumn/raceColumn.d.ts +3 -3
  285. package/dist/esm/types/chartType/raceColumn/zRaceColumn.d.ts +13 -3
  286. package/dist/esm/types/chartType/raceScatter/raceScatter.d.ts +16 -2
  287. package/dist/esm/types/chartType/raceScatter/zRaceScatter.d.ts +16 -4
  288. package/dist/esm/types/chartType/raceScatter/zRaceScatter.js +2 -0
  289. package/dist/esm/types/chartType/raceScatter/zRaceScatter.js.map +1 -1
  290. package/dist/esm/types/chartType/radar/zRadar.d.ts +4 -1
  291. package/dist/esm/types/chartType/rose/zRose.d.ts +4 -1
  292. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +4 -1
  293. package/dist/esm/types/chartType/scatter/zScatter.d.ts +14 -3
  294. package/dist/esm/types/chartType/sunburst/index.d.ts +2 -0
  295. package/dist/esm/types/chartType/sunburst/index.js +1 -0
  296. package/dist/esm/types/chartType/sunburst/sunburst.d.ts +86 -0
  297. package/dist/esm/types/chartType/sunburst/sunburst.js +0 -0
  298. package/dist/esm/types/chartType/sunburst/zSunburst.d.ts +263 -0
  299. package/dist/esm/types/chartType/sunburst/zSunburst.js +19 -0
  300. package/dist/esm/types/chartType/sunburst/zSunburst.js.map +1 -0
  301. package/dist/esm/types/chartType/table/zTable.d.ts +2 -0
  302. package/dist/esm/types/chartType/treeMap/index.d.ts +2 -0
  303. package/dist/esm/types/chartType/treeMap/index.js +1 -0
  304. package/dist/esm/types/chartType/treeMap/treeMap.d.ts +85 -0
  305. package/dist/esm/types/chartType/treeMap/treeMap.js +0 -0
  306. package/dist/esm/types/chartType/treeMap/zTreeMap.d.ts +263 -0
  307. package/dist/esm/types/chartType/treeMap/zTreeMap.js +19 -0
  308. package/dist/esm/types/chartType/treeMap/zTreeMap.js.map +1 -0
  309. package/dist/esm/types/properties/chartType/chartType.d.ts +6 -1
  310. package/dist/esm/types/properties/chartType/chartType.js +6 -0
  311. package/dist/esm/types/properties/chartType/chartType.js.map +1 -1
  312. package/dist/esm/types/properties/config/annotation/index.d.ts +1 -1
  313. package/dist/esm/types/properties/config/annotation/index.js +1 -1
  314. package/dist/esm/types/properties/config/annotation/{zAnnotaion.js → zAnnotation.js} +1 -1
  315. package/dist/esm/types/properties/config/annotation/zAnnotation.js.map +1 -0
  316. package/dist/esm/types/properties/config/area.d.ts +18 -2
  317. package/dist/esm/types/properties/config/area.js +1 -1
  318. package/dist/esm/types/properties/config/area.js.map +1 -1
  319. package/dist/esm/types/properties/config/axes/bandAxis.d.ts +26 -0
  320. package/dist/esm/types/properties/config/axes/linearAxis.d.ts +30 -4
  321. package/dist/esm/types/properties/config/axes/zBandAxis.d.ts +8 -0
  322. package/dist/esm/types/properties/config/axes/zBandAxis.js +4 -0
  323. package/dist/esm/types/properties/config/axes/zBandAxis.js.map +1 -1
  324. package/dist/esm/types/properties/config/axes/zLinearAxis.d.ts +10 -2
  325. package/dist/esm/types/properties/config/axes/zLinearAxis.js +5 -1
  326. package/dist/esm/types/properties/config/axes/zLinearAxis.js.map +1 -1
  327. package/dist/esm/types/properties/config/bar.d.ts +27 -3
  328. package/dist/esm/types/properties/config/bar.js +1 -1
  329. package/dist/esm/types/properties/config/bar.js.map +1 -1
  330. package/dist/esm/types/properties/config/boxplot.d.ts +9 -1
  331. package/dist/esm/types/properties/config/boxplot.js +1 -1
  332. package/dist/esm/types/properties/config/boxplot.js.map +1 -1
  333. package/dist/esm/types/properties/config/circlePacking.d.ts +211 -0
  334. package/dist/esm/types/properties/config/circlePacking.js +18 -0
  335. package/dist/esm/types/properties/config/circlePacking.js.map +1 -0
  336. package/dist/esm/types/properties/config/column.d.ts +27 -3
  337. package/dist/esm/types/properties/config/column.js +1 -1
  338. package/dist/esm/types/properties/config/column.js.map +1 -1
  339. package/dist/esm/types/properties/config/config.d.ts +986 -183
  340. package/dist/esm/types/properties/config/config.js +6 -0
  341. package/dist/esm/types/properties/config/config.js.map +1 -1
  342. package/dist/esm/types/properties/config/dualAxis.d.ts +24 -4
  343. package/dist/esm/types/properties/config/dualAxis.js +1 -1
  344. package/dist/esm/types/properties/config/dualAxis.js.map +1 -1
  345. package/dist/esm/types/properties/config/heatmap.d.ts +8 -0
  346. package/dist/esm/types/properties/config/histogram.d.ts +9 -1
  347. package/dist/esm/types/properties/config/histogram.js +1 -1
  348. package/dist/esm/types/properties/config/histogram.js.map +1 -1
  349. package/dist/esm/types/properties/config/index.d.ts +3 -0
  350. package/dist/esm/types/properties/config/index.js +3 -0
  351. package/dist/esm/types/properties/config/line.d.ts +9 -1
  352. package/dist/esm/types/properties/config/line.js +1 -1
  353. package/dist/esm/types/properties/config/line.js.map +1 -1
  354. package/dist/esm/types/properties/config/player/player.d.ts +2 -2
  355. package/dist/esm/types/properties/config/player/zPlayer.d.ts +0 -1
  356. package/dist/esm/types/properties/config/player/zPlayer.js +0 -1
  357. package/dist/esm/types/properties/config/player/zPlayer.js.map +1 -1
  358. package/dist/esm/types/properties/config/race.d.ts +64 -12
  359. package/dist/esm/types/properties/config/race.js +2 -2
  360. package/dist/esm/types/properties/config/race.js.map +1 -1
  361. package/dist/esm/types/properties/config/scatter.d.ts +10 -2
  362. package/dist/esm/types/properties/config/scatter.js +1 -1
  363. package/dist/esm/types/properties/config/scatter.js.map +1 -1
  364. package/dist/esm/types/properties/config/sunburst.d.ts +211 -0
  365. package/dist/esm/types/properties/config/sunburst.js +18 -0
  366. package/dist/esm/types/properties/config/sunburst.js.map +1 -0
  367. package/dist/esm/types/properties/config/treeMap.d.ts +211 -0
  368. package/dist/esm/types/properties/config/treeMap.js +18 -0
  369. package/dist/esm/types/properties/config/treeMap.js.map +1 -0
  370. package/dist/esm/types/properties/datasetReshapeInfo/datasetReshapeInfo.d.ts +2 -0
  371. package/dist/esm/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.d.ts +4 -0
  372. package/dist/esm/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.js +2 -0
  373. package/dist/esm/types/properties/datasetReshapeInfo/zDatasetReshapeInfo.js.map +1 -1
  374. package/dist/esm/types/properties/dimensions/hierarchyDimension.d.ts +11 -0
  375. package/dist/esm/types/properties/dimensions/hierarchyDimension.js +0 -0
  376. package/dist/esm/types/properties/dimensions/index.d.ts +4 -0
  377. package/dist/esm/types/properties/dimensions/raceBarDimension.d.ts +17 -0
  378. package/dist/esm/types/properties/dimensions/raceBarDimension.js +0 -0
  379. package/dist/esm/types/properties/dimensions/raceColumnDimension.d.ts +20 -0
  380. package/dist/esm/types/properties/dimensions/raceColumnDimension.js +0 -0
  381. package/dist/esm/types/properties/dimensions/raceScatterDimension.d.ts +14 -0
  382. package/dist/esm/types/properties/dimensions/raceScatterDimension.js +0 -0
  383. package/dist/esm/types/properties/dimensions/zDimensions.d.ts +6 -0
  384. package/dist/esm/types/properties/dimensions/zDimensions.js +2 -11
  385. package/dist/esm/types/properties/dimensions/zDimensions.js.map +1 -1
  386. package/dist/esm/types/properties/encoding/dimensionEncoding.d.ts +1 -1
  387. package/dist/esm/types/properties/encoding/encoding.d.ts +11 -4
  388. package/dist/esm/types/properties/encoding/zDimensionEncoding.d.ts +4 -0
  389. package/dist/esm/types/properties/encoding/zDimensionEncoding.js +6 -2
  390. package/dist/esm/types/properties/encoding/zDimensionEncoding.js.map +1 -1
  391. package/dist/esm/types/properties/encoding/zEncoding.d.ts +4 -2
  392. package/dist/esm/types/properties/encoding/zEncoding.js +4 -2
  393. package/dist/esm/types/properties/encoding/zEncoding.js.map +1 -1
  394. package/dist/esm/types/properties/measures/hierarchyMeasures.d.ts +4 -0
  395. package/dist/esm/types/properties/measures/hierarchyMeasures.js +0 -0
  396. package/dist/esm/types/properties/measures/index.d.ts +2 -0
  397. package/dist/esm/types/properties/measures/raceBarMeasure.d.ts +12 -0
  398. package/dist/esm/types/properties/measures/raceBarMeasure.js +0 -0
  399. package/dist/esm/types/properties/theme/customTheme.d.ts +2762 -1156
  400. package/dist/esm/types/vseed.d.ts +2 -2
  401. package/dist/esm/types/zVseed.d.ts +1257 -266
  402. package/dist/esm/types/zVseed.js +4 -1
  403. package/dist/esm/types/zVseed.js.map +1 -1
  404. package/dist/umd/index.js +4918 -3110
  405. package/dist/umd/index.js.map +1 -1
  406. package/package.json +6 -5
  407. package/dist/esm/pipeline/spec/chart/pipes/player/playerXBand.js +0 -10
  408. package/dist/esm/pipeline/spec/chart/pipes/player/playerXBand.js.map +0 -1
  409. package/dist/esm/pipeline/spec/chart/pipes/player/playerXLinear.js +0 -14
  410. package/dist/esm/pipeline/spec/chart/pipes/player/playerXLinear.js.map +0 -1
  411. package/dist/esm/pipeline/spec/chart/pipes/player/playerYBand.js +0 -13
  412. package/dist/esm/pipeline/spec/chart/pipes/player/playerYBand.js.map +0 -1
  413. package/dist/esm/pipeline/spec/chart/pipes/player/playerYLinear.js +0 -14
  414. package/dist/esm/pipeline/spec/chart/pipes/player/playerYLinear.js.map +0 -1
  415. package/dist/esm/types/properties/config/annotation/zAnnotaion.js.map +0 -1
  416. /package/dist/esm/types/properties/config/annotation/{zAnnotaion.d.ts → zAnnotation.d.ts} +0 -0
@@ -0,0 +1,31 @@
1
+ const labelTreeMapGroup = (spec, context)=>{
2
+ const result = {
3
+ ...spec
4
+ };
5
+ const { advancedVSeed } = context;
6
+ const { chartType } = advancedVSeed;
7
+ const baseConfig = advancedVSeed.config[chartType];
8
+ const { label } = baseConfig;
9
+ if (!label.enable) return result;
10
+ result.nonLeaf = {
11
+ visible: true
12
+ };
13
+ result.nonLeafLabel = {
14
+ visible: true,
15
+ position: 'top',
16
+ padding: 30,
17
+ style: {
18
+ x: (data)=>(data.labelRect?.x0 || 0) + 4,
19
+ textAlign: 'left',
20
+ text: (data)=>[
21
+ data.name
22
+ ],
23
+ fontSize: 12,
24
+ fill: '#000'
25
+ }
26
+ };
27
+ return result;
28
+ };
29
+ export { labelTreeMapGroup };
30
+
31
+ //# sourceMappingURL=labelTreeMapGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/label/labelTreeMapGroup.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelTreeMapGroup.ts"],"sourcesContent":["import type { ITreemapChartSpec } from '@visactor/vchart'\nimport type { Label, VChartSpecPipe } from 'src/types'\n\nexport const labelTreeMapGroup: VChartSpecPipe = (spec, context) => {\n const result = { ...spec } as ITreemapChartSpec\n const { advancedVSeed } = context\n const { chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n const { label } = baseConfig\n\n if (!label.enable) {\n return result\n }\n\n result.nonLeaf = {\n visible: true,\n }\n\n result.nonLeafLabel = {\n visible: true,\n position: 'top',\n padding: 30,\n style: {\n x: (data: any) => {\n return (data.labelRect?.x0 || 0) + 4\n },\n textAlign: 'left',\n text: (data: any) => {\n return [data.name]\n },\n fontSize: 12,\n fill: '#000',\n },\n }\n\n return result\n}\n"],"names":["labelTreeMapGroup","spec","context","result","advancedVSeed","chartType","baseConfig","label","data"],"mappings":"AAGO,MAAMA,oBAAoC,CAACC,MAAMC;IACtD,MAAMC,SAAS;QAAE,GAAGF,IAAI;IAAC;IACzB,MAAM,EAAEG,aAAa,EAAE,GAAGF;IAC1B,MAAM,EAAEG,SAAS,EAAE,GAAGD;IACtB,MAAME,aAAaF,cAAc,MAAM,CAACC,UAAU;IAClD,MAAM,EAAEE,KAAK,EAAE,GAAGD;IAElB,IAAI,CAACC,MAAM,MAAM,EACf,OAAOJ;IAGTA,OAAO,OAAO,GAAG;QACf,SAAS;IACX;IAEAA,OAAO,YAAY,GAAG;QACpB,SAAS;QACT,UAAU;QACV,SAAS;QACT,OAAO;YACL,GAAG,CAACK,OACMA,AAAAA,CAAAA,KAAK,SAAS,EAAE,MAAM,KAAK;YAErC,WAAW;YACX,MAAM,CAACA,OACE;oBAACA,KAAK,IAAI;iBAAC;YAEpB,UAAU;YACV,MAAM;QACR;IACF;IAEA,OAAOL;AACT"}
@@ -0,0 +1,2 @@
1
+ import type { VChartSpecPipe } from '../../../../../types';
2
+ export declare const labelTreeMapLeaf: VChartSpecPipe;
@@ -0,0 +1,68 @@
1
+ import { createFormatter, findMeasureById } from "../../../../utils/index.js";
2
+ import { isNumber, merge, uniqueBy } from "remeda";
3
+ import { MeasureId } from "../../../../../dataReshape/constant.js";
4
+ import { generateMeasurePercent, generateMeasureValue, label as external_label_js_label } from "./label.js";
5
+ const labelTreeMapLeaf = (spec, context)=>{
6
+ const result = external_label_js_label(spec, context);
7
+ const { advancedVSeed, vseed } = context;
8
+ const { datasetReshapeInfo } = advancedVSeed;
9
+ const { chartType, encoding } = advancedVSeed;
10
+ const baseConfig = advancedVSeed.config[chartType];
11
+ const foldInfoList = [
12
+ datasetReshapeInfo[0].foldInfo
13
+ ];
14
+ const { label } = baseConfig;
15
+ if (!label.enable) return result;
16
+ const { showValue, showValuePercent, showDimension, autoFormat, numFormat = {}, wrap } = label;
17
+ const hasDimLabelEncoding = vseed.dimensions?.some((item)=>encoding.label?.includes(item.id));
18
+ const labelDims = uniqueBy(hasDimLabelEncoding ? vseed.dimensions?.filter((item)=>encoding.label?.includes(item.id)) || [] : showDimension ? advancedVSeed.dimensions.filter((d)=>d.id !== MeasureId && 'row' !== d.encoding && 'column' !== d.encoding) : [], (item)=>item.id);
19
+ const labelMeas = uniqueBy(vseed.measures?.filter((item)=>encoding.label?.includes(item.id)) || [], (item)=>item.id);
20
+ const percentFormat = merge(numFormat, {
21
+ type: 'percent'
22
+ });
23
+ const percentFormatter = createFormatter(percentFormat);
24
+ if (result.label) result.label.formatMethod = (_, datum)=>{
25
+ const nodeName = datum.name;
26
+ const dataArray = datum.datum;
27
+ if (!dataArray || !Array.isArray(dataArray)) return '';
28
+ const findDataNode = (nodes, name)=>{
29
+ for (const node of nodes){
30
+ if (node.name === name) return node;
31
+ if (node.children) {
32
+ const found = findDataNode(node.children, name);
33
+ if (found) return found;
34
+ }
35
+ }
36
+ return null;
37
+ };
38
+ const realDatum = findDataNode(dataArray, nodeName);
39
+ if (!realDatum) return '';
40
+ const resultText = [];
41
+ const dimLabels = labelDims.map((item)=>{
42
+ const id = item.id;
43
+ return realDatum[id] ?? realDatum.__OriginalData__?.[id];
44
+ }).filter((v)=>null != v && '' !== v);
45
+ resultText.push(...dimLabels);
46
+ const meaLabels = labelMeas.map((item)=>generateMeasureValue(realDatum[item.id] ?? realDatum.__OriginalData__?.[item.id], item, autoFormat, numFormat));
47
+ resultText.push(...meaLabels);
48
+ foldInfoList.forEach((foldInfo)=>{
49
+ const { measureId, measureValue, statistics } = foldInfo;
50
+ const currentMeasureId = realDatum[measureId] ?? realDatum.__MeaId__;
51
+ const measure = findMeasureById(advancedVSeed.measures, currentMeasureId);
52
+ if (measure) {
53
+ const val = realDatum[measureValue] ?? realDatum.__MeaValue__ ?? realDatum.value;
54
+ const measureValueLabel = generateMeasureValue(val, measure, autoFormat, numFormat);
55
+ if (showValue) resultText.push(measureValueLabel);
56
+ if (showValuePercent) {
57
+ if (statistics && isNumber(statistics.sum)) resultText.push(generateMeasurePercent(val, statistics.sum, percentFormatter));
58
+ }
59
+ }
60
+ });
61
+ if (wrap) return resultText;
62
+ return resultText.join(' ');
63
+ };
64
+ return result;
65
+ };
66
+ export { labelTreeMapLeaf };
67
+
68
+ //# sourceMappingURL=labelTreeMapLeaf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/label/labelTreeMapLeaf.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/label/labelTreeMapLeaf.ts"],"sourcesContent":["import type { ILineChartSpec } from '@visactor/vchart'\nimport { createFormatter, findMeasureById } from '../../../../utils'\nimport type { Datum, Dimension, FoldInfo, Label, Measure, NumFormat, VChartSpecPipe } from 'src/types'\nimport { isNumber, merge, uniqueBy } from 'remeda'\nimport { MeasureId } from 'src/dataReshape/constant'\nimport { label as commonLabel, generateMeasurePercent, generateMeasureValue } from './label'\n\nexport const labelTreeMapLeaf: VChartSpecPipe = (spec, context) => {\n const result = commonLabel(spec, context) as ILineChartSpec\n const { advancedVSeed, vseed } = context\n const { datasetReshapeInfo } = advancedVSeed\n const { chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { label: Label }\n const foldInfoList = [datasetReshapeInfo[0].foldInfo as FoldInfo]\n\n const { label } = baseConfig\n if (!label.enable) {\n return result\n }\n\n const { showValue, showValuePercent, showDimension, autoFormat, numFormat = {}, wrap } = label\n\n const hasDimLabelEncoding = vseed.dimensions?.some((item) => encoding.label?.includes(item.id))\n\n const labelDims = uniqueBy(\n hasDimLabelEncoding\n ? vseed.dimensions?.filter((item) => encoding.label?.includes(item.id)) || []\n : showDimension\n ? advancedVSeed.dimensions!.filter((d) => d.id !== MeasureId && d.encoding !== 'row' && d.encoding !== 'column')\n : [],\n (item: Dimension) => item.id,\n )\n\n const labelMeas = uniqueBy(\n vseed.measures?.filter((item) => encoding.label?.includes(item.id)) || [],\n (item: Measure) => item.id,\n )\n\n const percentFormat: NumFormat = merge(numFormat, {\n type: 'percent',\n } as NumFormat)\n\n const percentFormatter = createFormatter(percentFormat)\n\n if (result.label) {\n ;(result.label as any).formatMethod = (_: unknown, datum: Datum) => {\n // TreeMap returns a nested structure where `datum` is an array of children.\n // We need to find the specific data item that matches the current node's name.\n // The current node's name is usually available in the top-level datum object (which is `datum` here).\n // However, VChart's TreeMap datum structure is a bit complex.\n // Based on the user provided example:\n // datum: { name: \"Stapler\", datum: [...], ... }\n\n const nodeName = datum.name\n const dataArray = datum.datum as any[]\n\n if (!dataArray || !Array.isArray(dataArray)) {\n return ''\n }\n\n // Helper to find the matching data node recursively\n const findDataNode = (nodes: any[], name: string): any => {\n for (const node of nodes) {\n if (node.name === name) {\n return node\n }\n if (node.children) {\n const found = findDataNode(node.children, name)\n if (found) return found\n }\n }\n return null\n }\n\n // The structure seems to be that `datum` (the array) contains the root(s) of the hierarchy relevant to this node?\n // Or simply the data array we passed in.\n // Let's try to find the node with the matching name.\n const realDatum = findDataNode(dataArray, nodeName as string)\n\n if (!realDatum) {\n return ''\n }\n\n const resultText: string[] = []\n\n // 1. Dimension Labels\n const dimLabels = labelDims\n .map((item: Dimension) => {\n const id = item.id\n // Try to get from realDatum (it has fields attached in datasetHierarchy.ts)\n // or fallback to __OriginalData__\n return (realDatum[id] ?? realDatum.__OriginalData__?.[id]) as number | string\n })\n .filter((v) => v !== undefined && v !== null && v !== '')\n\n resultText.push(...(dimLabels as string[]))\n\n // 2. Measure Labels (from label encoding)\n const meaLabels = labelMeas.map((item: Measure) =>\n generateMeasureValue(\n (realDatum[item.id] ?? realDatum.__OriginalData__?.[item.id]) as number | string,\n item,\n autoFormat,\n numFormat,\n ),\n )\n resultText.push(...meaLabels)\n\n // 3. Value and Percent (default/implicit)\n foldInfoList.forEach((foldInfo) => {\n const { measureId, measureValue, statistics } = foldInfo\n // The measure ID might be in __MeaId__ or we look it up from the datum\n const currentMeasureId = (realDatum[measureId] ?? realDatum.__MeaId__) as string\n const measure = findMeasureById(advancedVSeed.measures!, currentMeasureId)\n\n if (measure) {\n const val = (realDatum[measureValue] ?? realDatum.__MeaValue__ ?? realDatum.value) as number | string\n\n const measureValueLabel = generateMeasureValue(val, measure, autoFormat, numFormat)\n\n if (showValue) {\n resultText.push(measureValueLabel)\n }\n if (showValuePercent) {\n // For TreeMap, percentage usually implies % of parent or total.\n // If we have statistics.sum (total), we can calculate it.\n if (statistics && isNumber(statistics.sum)) {\n resultText.push(generateMeasurePercent(val, statistics.sum, percentFormatter))\n }\n }\n }\n })\n\n if (wrap) {\n return resultText\n }\n return resultText.join(' ')\n }\n }\n\n return result\n}\n"],"names":["labelTreeMapLeaf","spec","context","result","commonLabel","advancedVSeed","vseed","datasetReshapeInfo","chartType","encoding","baseConfig","foldInfoList","label","showValue","showValuePercent","showDimension","autoFormat","numFormat","wrap","hasDimLabelEncoding","item","labelDims","uniqueBy","d","MeasureId","labelMeas","percentFormat","merge","percentFormatter","createFormatter","_","datum","nodeName","dataArray","Array","findDataNode","nodes","name","node","found","realDatum","resultText","dimLabels","id","v","meaLabels","generateMeasureValue","foldInfo","measureId","measureValue","statistics","currentMeasureId","measure","findMeasureById","val","measureValueLabel","isNumber","generateMeasurePercent"],"mappings":"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"}
@@ -2,7 +2,3 @@ export * from './isPlayer';
2
2
  export * from './playerYX';
3
3
  export * from './playerXY';
4
4
  export * from './playerYY';
5
- export * from './playerXLinear';
6
- export * from './playerYLinear';
7
- export * from './playerYBand';
8
- export * from './playerXBand';
@@ -2,7 +2,3 @@ export * from "./isPlayer.js";
2
2
  export * from "./playerYX.js";
3
3
  export * from "./playerXY.js";
4
4
  export * from "./playerYY.js";
5
- export * from "./playerXLinear.js";
6
- export * from "./playerYLinear.js";
7
- export * from "./playerYBand.js";
8
- export * from "./playerXBand.js";
@@ -1,27 +1,42 @@
1
- import { groupBy } from "remeda";
1
+ import { groupBy, uniqueBy } from "remeda";
2
2
  import { isPivotChart, isVTable } from "../../../../utils/index.js";
3
3
  import { datasetXY } from "../dataset/index.js";
4
4
  const playerXY = (spec, context)=>{
5
5
  const { vseed, advancedVSeed } = context;
6
- const { datasetReshapeInfo, chartType } = advancedVSeed;
6
+ const { dimensions = [], datasetReshapeInfo, chartType, encoding } = advancedVSeed;
7
7
  const baseConfig = advancedVSeed.config[chartType];
8
8
  const result = datasetXY(spec, context);
9
- if (!('player' in vseed) || !baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) return result;
9
+ if (!baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) return result;
10
10
  const { player } = baseConfig;
11
11
  const id = datasetReshapeInfo[0].id;
12
- const { field, autoPlay = true, interval = 1000, loop = false, position, railColor, trackColor, sliderHandleColor, sliderHandleBorderColor, startButtonColor, pauseButtonColor, backwardButtonColor, forwardButtonColor } = player;
13
- const dataGroups = groupBy(advancedVSeed.dataset, (item)=>item[field]);
12
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
13
+ const { encodingPlayer, encodingX } = unfoldInfo;
14
+ const { measureValue } = foldInfo;
15
+ const { maxCount, autoPlay = true, interval = 1000, loop = false, position, railColor, trackColor, sliderHandleColor, sliderHandleBorderColor, startButtonColor, pauseButtonColor, backwardButtonColor, forwardButtonColor } = player;
16
+ const dataGroups = groupBy(advancedVSeed.dataset, (item)=>item[encodingPlayer]);
14
17
  if (result.data && 'values' in result.data) result.data.values = [];
15
- const specs = Object.values(dataGroups).map((items)=>({
18
+ const xValues = uniqueBy(advancedVSeed.dataset.map((d)=>d[encodingX]), (item)=>item);
19
+ const specs = Object.values(dataGroups).map((items)=>{
20
+ const filledItems = items.map((item)=>({
21
+ ...item,
22
+ [encodingX]: xValues.find((xValue)=>xValue === item[encodingX]) || 0
23
+ }));
24
+ const sortedItems = filledItems.sort((a, b)=>b[measureValue] - a[measureValue]);
25
+ return {
16
26
  data: {
17
27
  id: id,
18
- values: items.slice(0, 10)
28
+ values: sortedItems.slice(0, maxCount)
19
29
  }
20
- }));
30
+ };
31
+ });
21
32
  const duration = interval;
22
33
  const exchangeDuration = 0.6 * interval;
34
+ const dataKey = dimensions.filter((d)=>!encoding.player?.includes(d.id)).map((d)=>d.id);
35
+ const textSize = 36;
36
+ const padding = 12;
23
37
  return {
24
38
  ...result,
39
+ dataKey,
25
40
  stackCornerRadius: void 0,
26
41
  animationUpdate: {
27
42
  bar: [
@@ -77,6 +92,22 @@ const playerXY = (spec, context)=>{
77
92
  },
78
93
  animationExit: {
79
94
  bar: [
95
+ {
96
+ type: 'moveOut',
97
+ options: {
98
+ direction: 'y',
99
+ orient: 'negative'
100
+ },
101
+ duration: exchangeDuration
102
+ },
103
+ {
104
+ type: 'moveOut',
105
+ options: {
106
+ direction: 'x',
107
+ orient: 'negative'
108
+ },
109
+ duration: exchangeDuration
110
+ },
80
111
  {
81
112
  type: 'fadeOut',
82
113
  duration: exchangeDuration
@@ -89,15 +120,13 @@ const playerXY = (spec, context)=>{
89
120
  dataId: 'year',
90
121
  style: {
91
122
  textBaseline: 'bottom',
92
- fontSize: 24,
123
+ fontSize: textSize,
93
124
  textAlign: 'right',
94
- fontFamily: 'PingFang SC',
95
- fontWeight: 600,
96
- text: (datum)=>datum.year,
97
- x: (datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.width - 50,
98
- y: (datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.height - 50,
99
- fill: 'grey',
100
- fillOpacity: 0.5
125
+ text: (datum)=>datum[encodingPlayer],
126
+ x: (_datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.width - padding,
127
+ y: (_datum, _ctx)=>textSize + padding,
128
+ fill: 'rgb(100, 100, 100)',
129
+ fillOpacity: 0.25
101
130
  }
102
131
  }
103
132
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/player/playerXY.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/player/playerXY.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy } from 'remeda'\nimport { isPivotChart, isVTable } from 'src/pipeline/utils'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetXY } from '../dataset'\n\nexport const playerXY: VChartSpecPipe = (spec, context) => {\n const { vseed, advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { player: Player }\n const result = datasetXY(spec, context)\n\n if (!('player' in vseed) || !baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) {\n return result\n }\n const { player } = baseConfig\n\n const id = datasetReshapeInfo[0].id\n const {\n field,\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[field])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n const specs = Object.values(dataGroups).map((items) => ({\n data: {\n id: id,\n values: items.slice(0, 10),\n },\n }))\n\n const duration = interval\n const exchangeDuration = interval * 0.6\n return {\n ...result,\n stackCornerRadius: undefined,\n animationUpdate: {\n bar: [\n {\n type: 'update',\n options: { excludeChannels: ['x'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['x'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n point: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n line: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n axis: {\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n },\n animationEnter: {\n bar: [\n {\n type: 'moveIn',\n duration: exchangeDuration,\n easing: 'circInOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n },\n ],\n },\n animationExit: {\n bar: [\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: 24,\n textAlign: 'right',\n fontFamily: 'PingFang SC',\n fontWeight: 600,\n text: (datum: any) => datum.year,\n x: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - 50\n },\n y: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.height - 50\n },\n fill: 'grey',\n fillOpacity: 0.5,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerXY","spec","context","vseed","advancedVSeed","datasetReshapeInfo","chartType","baseConfig","result","datasetXY","isVTable","isPivotChart","player","id","field","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","dataGroups","groupBy","item","specs","Object","items","duration","exchangeDuration","undefined","datum","ctx"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/player/playerXY.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/player/playerXY.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy, uniqueBy } from 'remeda'\nimport { isPivotChart, isVTable } from 'src/pipeline/utils'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetXY } from '../dataset'\n\nexport const playerXY: VChartSpecPipe = (spec, context) => {\n const { vseed, advancedVSeed } = context\n const { dimensions = [], datasetReshapeInfo, chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { player: Player }\n const result = datasetXY(spec, context)\n\n if (!baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) {\n return result\n }\n const { player } = baseConfig\n\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n const { encodingPlayer, encodingX } = unfoldInfo\n const { measureValue } = foldInfo\n const {\n maxCount,\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[encodingPlayer])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n\n const xValues = uniqueBy(\n advancedVSeed.dataset.map((d) => d[encodingX]),\n (item) => item,\n )\n const specs = Object.values(dataGroups).map((items) => {\n // 如果当前items中不存在xValues中的值, 则填充为0, 保证每组都有同样的xValue, 都有对应的数据\n const filledItems = items.map((item) => ({\n ...item,\n [encodingX]: xValues.find((xValue) => xValue === item[encodingX]) || 0,\n }))\n const sortedItems = filledItems.sort((a, b) => b[measureValue] - a[measureValue])\n return {\n data: {\n id: id,\n values: sortedItems.slice(0, maxCount),\n },\n }\n })\n\n const duration = interval\n const exchangeDuration = interval * 0.6\n\n const dataKey = dimensions.filter((d) => !encoding.player?.includes(d.id)).map((d) => d.id)\n\n const textSize = 36\n const padding = 12\n return {\n ...result,\n dataKey,\n stackCornerRadius: undefined,\n animationUpdate: {\n bar: [\n {\n type: 'update',\n options: { excludeChannels: ['x'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['x'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n point: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n line: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n axis: {\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n },\n animationEnter: {\n bar: [\n {\n type: 'moveIn',\n duration: exchangeDuration,\n easing: 'circInOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n },\n ],\n },\n animationExit: {\n bar: [\n {\n type: 'moveOut',\n options: {\n direction: 'y',\n orient: 'negative',\n },\n duration: exchangeDuration,\n },\n {\n type: 'moveOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n duration: exchangeDuration,\n },\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: textSize,\n textAlign: 'right',\n text: (datum: any) => datum[encodingPlayer],\n x: (_datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - padding\n },\n y: (_datum: any, _ctx: any) => {\n return textSize + padding\n },\n fill: 'rgb(100, 100, 100)',\n fillOpacity: 0.25,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerXY","spec","context","vseed","advancedVSeed","dimensions","datasetReshapeInfo","chartType","encoding","baseConfig","result","datasetXY","isVTable","isPivotChart","player","id","unfoldInfo","foldInfo","encodingPlayer","encodingX","measureValue","maxCount","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","dataGroups","groupBy","item","xValues","uniqueBy","d","specs","Object","items","filledItems","xValue","sortedItems","a","b","duration","exchangeDuration","dataKey","textSize","padding","undefined","datum","_datum","ctx","_ctx"],"mappings":"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"}
@@ -1,27 +1,42 @@
1
- import { groupBy } from "remeda";
1
+ import { groupBy, uniqueBy } from "remeda";
2
2
  import { isPivotChart, isVTable } from "../../../../utils/index.js";
3
3
  import { datasetYX } from "../dataset/index.js";
4
4
  const playerYX = (spec, context)=>{
5
5
  const { vseed, advancedVSeed } = context;
6
- const { datasetReshapeInfo, chartType } = advancedVSeed;
6
+ const { dimensions = [], datasetReshapeInfo, chartType, encoding } = advancedVSeed;
7
7
  const baseConfig = advancedVSeed.config[chartType];
8
8
  const result = datasetYX(spec, context);
9
- if (!('player' in vseed) || !baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) return result;
9
+ if (!baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) return result;
10
10
  const { player } = baseConfig;
11
11
  const id = datasetReshapeInfo[0].id;
12
- const { field, autoPlay = true, interval = 1000, loop = false, position, railColor, trackColor, sliderHandleColor, sliderHandleBorderColor, startButtonColor, pauseButtonColor, backwardButtonColor, forwardButtonColor } = player;
13
- const dataGroups = groupBy(advancedVSeed.dataset, (item)=>item[field]);
12
+ const { unfoldInfo, foldInfo } = datasetReshapeInfo[0];
13
+ const { encodingPlayer, encodingY } = unfoldInfo;
14
+ const { measureValue } = foldInfo;
15
+ const { maxCount, autoPlay = true, interval = 1000, loop = false, position, railColor, trackColor, sliderHandleColor, sliderHandleBorderColor, startButtonColor, pauseButtonColor, backwardButtonColor, forwardButtonColor } = player;
16
+ const duration = interval;
17
+ const exchangeDuration = 0.6 * interval;
18
+ const dataGroups = groupBy(advancedVSeed.dataset, (item)=>item[encodingPlayer]);
14
19
  if (result.data && 'values' in result.data) result.data.values = [];
15
- const specs = Object.values(dataGroups).map((items)=>({
20
+ const yValues = uniqueBy(advancedVSeed.dataset.map((d)=>d[encodingY]), (item)=>item);
21
+ const specs = Object.values(dataGroups).map((items)=>{
22
+ const filledItems = items.map((item)=>({
23
+ ...item,
24
+ [encodingY]: yValues.find((yValue)=>yValue === item[encodingY]) || 0
25
+ }));
26
+ const sortedItems = filledItems.sort((a, b)=>b[measureValue] - a[measureValue]);
27
+ return {
16
28
  data: {
17
29
  id: id,
18
- values: items.slice(0, 10)
30
+ values: sortedItems.slice(0, maxCount)
19
31
  }
20
- }));
21
- const duration = interval;
22
- const exchangeDuration = 0.6 * interval;
32
+ };
33
+ });
34
+ const dataKey = dimensions.filter((d)=>!encoding.player?.includes(d.id)).map((d)=>d.id);
35
+ const textSize = 36;
36
+ const padding = 12;
23
37
  return {
24
38
  ...result,
39
+ dataKey,
25
40
  stackCornerRadius: void 0,
26
41
  animationUpdate: {
27
42
  bar: [
@@ -42,11 +57,7 @@ const playerYX = (spec, context)=>{
42
57
  easing: 'circInOut',
43
58
  duration: exchangeDuration
44
59
  }
45
- ],
46
- axis: {
47
- duration: exchangeDuration,
48
- easing: 'circInOut'
49
- }
60
+ ]
50
61
  },
51
62
  animationEnter: {
52
63
  bar: [
@@ -63,6 +74,21 @@ const playerYX = (spec, context)=>{
63
74
  },
64
75
  animationExit: {
65
76
  bar: [
77
+ {
78
+ type: 'moveOut',
79
+ options: {
80
+ direction: 'x'
81
+ },
82
+ duration: exchangeDuration
83
+ },
84
+ {
85
+ type: 'moveOut',
86
+ options: {
87
+ direction: 'y',
88
+ orient: 'negative'
89
+ },
90
+ duration: exchangeDuration
91
+ },
66
92
  {
67
93
  type: 'fadeOut',
68
94
  duration: exchangeDuration
@@ -75,15 +101,15 @@ const playerYX = (spec, context)=>{
75
101
  dataId: 'year',
76
102
  style: {
77
103
  textBaseline: 'bottom',
78
- fontSize: 24,
104
+ fontSize: textSize,
79
105
  textAlign: 'right',
80
106
  fontFamily: 'PingFang SC',
81
107
  fontWeight: 600,
82
- text: (datum)=>datum.year,
83
- x: (datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.width - 50,
84
- y: (datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.height - 50,
85
- fill: 'grey',
86
- fillOpacity: 0.5
108
+ text: (datum)=>datum[encodingPlayer],
109
+ x: (_datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.width - padding,
110
+ y: (_datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.height - padding - textSize,
111
+ fill: 'rgb(100, 100, 100)',
112
+ fillOpacity: 0.25
87
113
  }
88
114
  }
89
115
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/player/playerYX.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/player/playerYX.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy } from 'remeda'\nimport { isPivotChart, isVTable } from 'src/pipeline/utils'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetYX } from '../dataset'\n\nexport const playerYX: VChartSpecPipe = (spec, context) => {\n const { vseed, advancedVSeed } = context\n const { datasetReshapeInfo, chartType } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { player: Player }\n const result = datasetYX(spec, context)\n\n if (!('player' in vseed) || !baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) {\n return result\n }\n const { player } = baseConfig\n\n const id = datasetReshapeInfo[0].id\n const {\n field,\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[field])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n const specs = Object.values(dataGroups).map((items) => ({\n data: {\n id: id,\n values: items.slice(0, 10),\n },\n }))\n\n const duration = interval\n const exchangeDuration = interval * 0.6\n return {\n ...result,\n stackCornerRadius: undefined,\n animationUpdate: {\n bar: [\n {\n type: 'update',\n options: { excludeChannels: ['y'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['y'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n axis: {\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n },\n animationEnter: {\n bar: [\n {\n type: 'moveIn',\n duration: exchangeDuration,\n easing: 'circInOut',\n options: {\n direction: 'y',\n orient: 'negative',\n },\n },\n ],\n },\n animationExit: {\n bar: [\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: 24,\n textAlign: 'right',\n fontFamily: 'PingFang SC',\n fontWeight: 600,\n text: (datum: any) => datum.year,\n x: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - 50\n },\n y: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.height - 50\n },\n fill: 'grey',\n fillOpacity: 0.5,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerYX","spec","context","vseed","advancedVSeed","datasetReshapeInfo","chartType","baseConfig","result","datasetYX","isVTable","isPivotChart","player","id","field","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","dataGroups","groupBy","item","specs","Object","items","duration","exchangeDuration","undefined","datum","ctx"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/player/playerYX.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/player/playerYX.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy, uniqueBy } from 'remeda'\nimport { isPivotChart, isVTable } from 'src/pipeline/utils'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetYX } from '../dataset'\n\nexport const playerYX: VChartSpecPipe = (spec, context) => {\n const { vseed, advancedVSeed } = context\n const { dimensions = [], datasetReshapeInfo, chartType, encoding } = advancedVSeed\n\n const baseConfig = advancedVSeed.config[chartType] as { player: Player }\n const result = datasetYX(spec, context)\n\n if (!baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) {\n return result\n }\n const { player } = baseConfig\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo, foldInfo } = datasetReshapeInfo[0]\n const { encodingPlayer, encodingY } = unfoldInfo\n const { measureValue } = foldInfo\n const {\n maxCount,\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n const duration = interval\n const exchangeDuration = interval * 0.6\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[encodingPlayer])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n\n const yValues = uniqueBy(\n advancedVSeed.dataset.map((d) => d[encodingY]),\n (item) => item,\n )\n const specs = Object.values(dataGroups).map((items) => {\n // 如果当前items中不存在yValues中的值, 则填充为0, 保证每组都有同样的yValue, 都有对应的数据\n const filledItems = items.map((item) => ({\n ...item,\n [encodingY]: yValues.find((yValue) => yValue === item[encodingY]) || 0,\n }))\n const sortedItems = filledItems.sort((a, b) => b[measureValue] - a[measureValue])\n\n return {\n data: {\n id: id,\n values: sortedItems.slice(0, maxCount),\n },\n }\n })\n\n const dataKey = dimensions.filter((d) => !encoding.player?.includes(d.id)).map((d) => d.id)\n const textSize = 36\n const padding = 12\n\n return {\n ...result,\n dataKey,\n stackCornerRadius: undefined,\n animationUpdate: {\n bar: [\n {\n type: 'update',\n options: { excludeChannels: ['y'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['y'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n },\n animationEnter: {\n bar: [\n {\n type: 'moveIn',\n duration: exchangeDuration,\n easing: 'circInOut',\n options: {\n direction: 'y',\n orient: 'negative',\n },\n },\n ],\n },\n animationExit: {\n bar: [\n {\n type: 'moveOut',\n options: {\n direction: 'x',\n },\n duration: exchangeDuration,\n },\n {\n type: 'moveOut',\n options: {\n direction: 'y',\n orient: 'negative',\n },\n duration: exchangeDuration,\n },\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: textSize,\n textAlign: 'right',\n fontFamily: 'PingFang SC',\n fontWeight: 600,\n text: (datum: any) => datum[encodingPlayer],\n x: (_datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - padding\n },\n y: (_datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.height - padding - textSize\n },\n fill: 'rgb(100, 100, 100)',\n fillOpacity: 0.25,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerYX","spec","context","vseed","advancedVSeed","dimensions","datasetReshapeInfo","chartType","encoding","baseConfig","result","datasetYX","isVTable","isPivotChart","player","id","unfoldInfo","foldInfo","encodingPlayer","encodingY","measureValue","maxCount","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","duration","exchangeDuration","dataGroups","groupBy","item","yValues","uniqueBy","d","specs","Object","items","filledItems","yValue","sortedItems","a","b","dataKey","textSize","padding","undefined","datum","_datum","ctx"],"mappings":";;;AAMO,MAAMA,WAA2B,CAACC,MAAMC;IAC7C,MAAM,EAAEC,KAAK,EAAEC,aAAa,EAAE,GAAGF;IACjC,MAAM,EAAEG,aAAa,EAAE,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,QAAQ,EAAE,GAAGJ;IAErE,MAAMK,aAAaL,cAAc,MAAM,CAACG,UAAU;IAClD,MAAMG,SAASC,UAAUV,MAAMC;IAE/B,IAAI,CAACO,cAAc,CAACA,WAAW,MAAM,IAAIG,SAAST,UAAUU,aAAaV,QACvE,OAAOO;IAET,MAAM,EAAEI,MAAM,EAAE,GAAGL;IACnB,MAAMM,KAAKT,kBAAkB,CAAC,EAAE,CAAC,EAAE;IACnC,MAAM,EAAEU,UAAU,EAAEC,QAAQ,EAAE,GAAGX,kBAAkB,CAAC,EAAE;IACtD,MAAM,EAAEY,cAAc,EAAEC,SAAS,EAAE,GAAGH;IACtC,MAAM,EAAEI,YAAY,EAAE,GAAGH;IACzB,MAAM,EACJI,QAAQ,EACRC,WAAW,IAAI,EACfC,WAAW,IAAI,EACfC,OAAO,KAAK,EACZC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,iBAAiB,EACjBC,uBAAuB,EACvBC,gBAAgB,EAChBC,gBAAgB,EAChBC,mBAAmB,EACnBC,kBAAkB,EACnB,GAAGnB;IACJ,MAAMoB,WAAWX;IACjB,MAAMY,mBAAmBZ,AAAW,MAAXA;IAEzB,MAAMa,aAAaC,QAAQjC,cAAc,OAAO,EAAE,CAACkC,OAASA,IAAI,CAACpB,eAAe;IAChF,IAAIR,OAAO,IAAI,IAAI,YAAYA,OAAO,IAAI,EACxCA,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE;IAGzB,MAAM6B,UAAUC,SACdpC,cAAc,OAAO,CAAC,GAAG,CAAC,CAACqC,IAAMA,CAAC,CAACtB,UAAU,GAC7C,CAACmB,OAASA;IAEZ,MAAMI,QAAQC,OAAO,MAAM,CAACP,YAAY,GAAG,CAAC,CAACQ;QAE3C,MAAMC,cAAcD,MAAM,GAAG,CAAC,CAACN,OAAU;gBACvC,GAAGA,IAAI;gBACP,CAACnB,UAAU,EAAEoB,QAAQ,IAAI,CAAC,CAACO,SAAWA,WAAWR,IAAI,CAACnB,UAAU,KAAK;YACvE;QACA,MAAM4B,cAAcF,YAAY,IAAI,CAAC,CAACG,GAAGC,IAAMA,CAAC,CAAC7B,aAAa,GAAG4B,CAAC,CAAC5B,aAAa;QAEhF,OAAO;YACL,MAAM;gBACJ,IAAIL;gBACJ,QAAQgC,YAAY,KAAK,CAAC,GAAG1B;YAC/B;QACF;IACF;IAEA,MAAM6B,UAAU7C,WAAW,MAAM,CAAC,CAACoC,IAAM,CAACjC,SAAS,MAAM,EAAE,SAASiC,EAAE,EAAE,GAAG,GAAG,CAAC,CAACA,IAAMA,EAAE,EAAE;IAC1F,MAAMU,WAAW;IACjB,MAAMC,UAAU;IAEhB,OAAO;QACL,GAAG1C,MAAM;QACTwC;QACA,mBAAmBG;QACnB,iBAAiB;YACf,KAAK;gBACH;oBACE,MAAM;oBACN,SAAS;wBAAE,iBAAiB;4BAAC;yBAAI;oBAAC;oBAClC,QAAQ;oBACRnB;gBACF;gBACA;oBACE,SAAS;wBAAC;qBAAI;oBACd,QAAQ;oBACR,UAAUC;gBACZ;aACD;QACH;QACA,gBAAgB;YACd,KAAK;gBACH;oBACE,MAAM;oBACN,UAAUA;oBACV,QAAQ;oBACR,SAAS;wBACP,WAAW;wBACX,QAAQ;oBACV;gBACF;aACD;QACH;QACA,eAAe;YACb,KAAK;gBACH;oBACE,MAAM;oBACN,SAAS;wBACP,WAAW;oBACb;oBACA,UAAUA;gBACZ;gBACA;oBACE,MAAM;oBACN,SAAS;wBACP,WAAW;wBACX,QAAQ;oBACV;oBACA,UAAUA;gBACZ;gBACA;oBACE,MAAM;oBACN,UAAUA;gBACZ;aACD;QACH;QACA,YAAY;YACV;gBACE,MAAM;gBACN,QAAQ;gBACR,OAAO;oBACL,cAAc;oBACd,UAAUgB;oBACV,WAAW;oBACX,YAAY;oBACZ,YAAY;oBACZ,MAAM,CAACG,QAAeA,KAAK,CAACpC,eAAe;oBAC3C,GAAG,CAACqC,QAAaC,MACRA,IAAI,MAAM,CAAC,QAAQ,GAAG,aAAa,IAAI,QAAQJ;oBAExD,GAAG,CAACG,QAAaC,MACRA,IAAI,MAAM,CAAC,QAAQ,GAAG,aAAa,IAAI,SAASJ,UAAUD;oBAEnE,MAAM;oBACN,aAAa;gBACf;YACF;SACD;QACD,QAAQ;YACN,SAAS;YACT,MAAM7B;YACN,UAAUC;YACV,MAAMC;YACN,WAAW;YACX,UAAU;YACV,QAAQC;YACR,MAAM;YACNiB;YACA,YAAY;gBACV,SAAS;gBACT,OAAO;oBAAE,SAAS;oBAAM,OAAO;oBAAG,OAAO;wBAAE,MAAMZ;oBAAiB;gBAAE;gBACpE,OAAO;oBAAE,SAAS;oBAAM,OAAO;oBAAG,OAAO;wBAAE,MAAMC;oBAAiB;gBAAE;gBACpE,UAAU;oBAAE,SAAS;oBAAM,OAAO;oBAAG,OAAO;wBAAE,MAAMC;oBAAoB;gBAAE;gBAC1E,SAAS;oBAAE,SAAS;oBAAM,OAAO;oBAAG,UAAU;oBAAO,OAAO;wBAAE,MAAMC;oBAAmB;gBAAE;YAC3F;YACA,QAAQ;gBACN,SAAS;gBACT,WAAW;oBACT,SAAS;oBACT,MAAMP;oBACN,CAACD,AAAa,UAAbA,YAAsBA,AAAa,aAAbA,WAAwB,WAAW,QAAQ,EAAE;gBACtE;gBACA,YAAY;oBACV,SAAS;oBACT,MAAME;oBACN,CAACF,AAAa,UAAbA,YAAsBA,AAAa,aAAbA,WAAwB,WAAW,QAAQ,EAAE;gBACtE;gBACA,cAAc;oBACZ,SAAS;oBACT,WAAW;oBACX,QAAQI;oBACR,MAAMD;oBACN,MAAM;gBACR;YACF;QACF;IACF;AACF"}
@@ -3,14 +3,16 @@ import { isPivotChart, isVTable } from "../../../../utils/index.js";
3
3
  import { datasetScatter } from "../dataset/index.js";
4
4
  const playerYY = (spec, context)=>{
5
5
  const { vseed, advancedVSeed } = context;
6
- const { datasetReshapeInfo, chartType, encoding } = advancedVSeed;
6
+ const { datasetReshapeInfo, dimensions = [], chartType, encoding } = advancedVSeed;
7
7
  const baseConfig = advancedVSeed.config[chartType];
8
8
  const result = datasetScatter(spec, context);
9
- if (!('player' in vseed) || !baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) return result;
9
+ if (!baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) return result;
10
10
  const { player } = baseConfig;
11
11
  const id = datasetReshapeInfo[0].id;
12
- const { field, autoPlay = true, interval = 1000, loop = false, position, railColor, trackColor, sliderHandleColor, sliderHandleBorderColor, startButtonColor, pauseButtonColor, backwardButtonColor, forwardButtonColor } = player;
13
- const dataGroups = groupBy(advancedVSeed.dataset, (item)=>item[field]);
12
+ const { unfoldInfo } = datasetReshapeInfo[0];
13
+ const { encodingPlayer } = unfoldInfo;
14
+ const { autoPlay = true, interval = 1000, loop = false, position, railColor, trackColor, sliderHandleColor, sliderHandleBorderColor, startButtonColor, pauseButtonColor, backwardButtonColor, forwardButtonColor } = player;
15
+ const dataGroups = groupBy(advancedVSeed.dataset, (item)=>item[encodingPlayer]);
14
16
  if (result.data && 'values' in result.data) result.data.values = [];
15
17
  const specs = Object.values(dataGroups).map((items)=>({
16
18
  data: {
@@ -18,9 +20,11 @@ const playerYY = (spec, context)=>{
18
20
  values: items
19
21
  }
20
22
  }));
21
- const dataKey = encoding.color;
22
23
  const duration = interval;
23
24
  const exchangeDuration = 0.6 * interval;
25
+ const dataKey = dimensions.filter((d)=>!encoding.player?.includes(d.id)).map((d)=>d.id);
26
+ const padding = 12;
27
+ const textSize = 36;
24
28
  return {
25
29
  ...result,
26
30
  dataKey,
@@ -91,13 +95,13 @@ const playerYY = (spec, context)=>{
91
95
  dataId: 'year',
92
96
  style: {
93
97
  textBaseline: 'bottom',
94
- fontSize: 24,
98
+ fontSize: textSize,
95
99
  textAlign: 'right',
96
100
  fontFamily: 'PingFang SC',
97
101
  fontWeight: 600,
98
- text: (datum)=>datum.year,
99
- x: (datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.width - 50,
100
- y: (datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.height - 50,
102
+ text: (datum)=>datum[encodingPlayer],
103
+ x: (datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.width - padding,
104
+ y: (datum, ctx)=>ctx.vchart.getChart().getCanvasRect()?.height - padding - textSize,
101
105
  fill: 'grey',
102
106
  fillOpacity: 0.5
103
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/spec/chart/pipes/player/playerYY.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/player/playerYY.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy } from 'remeda'\nimport { isPivotChart, isVTable } from 'src/pipeline/utils'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetScatter } from '../dataset'\n\nexport const playerYY: VChartSpecPipe = (spec, context) => {\n const { vseed, advancedVSeed } = context\n const { datasetReshapeInfo, chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { player: Player }\n const result = datasetScatter(spec, context)\n\n if (!('player' in vseed) || !baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) {\n return result\n }\n const { player } = baseConfig\n\n const id = datasetReshapeInfo[0].id\n const {\n field,\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[field])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n const specs = Object.values(dataGroups).map((items) => ({\n data: {\n id: id,\n values: items,\n },\n }))\n\n const dataKey = encoding.color\n const duration = interval\n const exchangeDuration = interval * 0.6\n return {\n ...result,\n dataKey,\n stackCornerRadius: undefined,\n animationUpdate: {\n bar: [\n {\n type: 'update',\n options: { excludeChannels: ['x'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['x'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n point: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n line: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n axis: {\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n },\n animationEnter: {\n bar: [\n {\n type: 'moveIn',\n duration: exchangeDuration,\n easing: 'circInOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n },\n ],\n },\n animationExit: {\n bar: [\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: 24,\n textAlign: 'right',\n fontFamily: 'PingFang SC',\n fontWeight: 600,\n text: (datum: any) => datum.year,\n x: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - 50\n },\n y: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.height - 50\n },\n fill: 'grey',\n fillOpacity: 0.5,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerYY","spec","context","vseed","advancedVSeed","datasetReshapeInfo","chartType","encoding","baseConfig","result","datasetScatter","isVTable","isPivotChart","player","id","field","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","dataGroups","groupBy","item","specs","Object","items","dataKey","duration","exchangeDuration","undefined","datum","ctx"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/spec/chart/pipes/player/playerYY.js","sources":["webpack://@visactor/vseed/./src/pipeline/spec/chart/pipes/player/playerYY.ts"],"sourcesContent":["import type { IPlayerSpec, ISpec } from '@visactor/vchart'\nimport { groupBy } from 'remeda'\nimport { isPivotChart, isVTable } from 'src/pipeline/utils'\nimport type { Player, VChartSpecPipe } from 'src/types'\nimport { datasetScatter } from '../dataset'\n\nexport const playerYY: VChartSpecPipe = (spec, context) => {\n const { vseed, advancedVSeed } = context\n const { datasetReshapeInfo, dimensions = [], chartType, encoding } = advancedVSeed\n const baseConfig = advancedVSeed.config[chartType] as { player: Player }\n const result = datasetScatter(spec, context)\n\n if (!baseConfig || !baseConfig.player || isVTable(vseed) || isPivotChart(vseed)) {\n return result\n }\n const { player } = baseConfig\n\n const id = datasetReshapeInfo[0].id\n const { unfoldInfo } = datasetReshapeInfo[0]\n const { encodingPlayer } = unfoldInfo\n const {\n autoPlay = true,\n interval = 1000,\n loop = false,\n position,\n railColor,\n trackColor,\n sliderHandleColor,\n sliderHandleBorderColor,\n startButtonColor,\n pauseButtonColor,\n backwardButtonColor,\n forwardButtonColor,\n } = player\n\n const dataGroups = groupBy(advancedVSeed.dataset, (item) => item[encodingPlayer])\n if (result.data && 'values' in result.data) {\n result.data.values = []\n }\n const specs = Object.values(dataGroups).map((items) => ({\n data: {\n id: id,\n values: items,\n },\n }))\n\n const duration = interval\n const exchangeDuration = interval * 0.6\n const dataKey = dimensions.filter((d) => !encoding.player?.includes(d.id)).map((d) => d.id)\n const padding = 12\n const textSize = 36\n return {\n ...result,\n dataKey,\n stackCornerRadius: undefined,\n animationUpdate: {\n bar: [\n {\n type: 'update',\n options: { excludeChannels: ['x'] },\n easing: 'linear',\n duration,\n },\n {\n channel: ['x'],\n easing: 'circInOut',\n duration: exchangeDuration,\n },\n ],\n point: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n line: [\n {\n type: 'update',\n easing: 'linear',\n duration,\n },\n ],\n axis: {\n duration: exchangeDuration,\n easing: 'circInOut',\n },\n },\n animationEnter: {\n bar: [\n {\n type: 'moveIn',\n duration: exchangeDuration,\n easing: 'circInOut',\n options: {\n direction: 'x',\n orient: 'negative',\n },\n },\n ],\n },\n animationExit: {\n bar: [\n {\n type: 'fadeOut',\n duration: exchangeDuration,\n },\n ],\n },\n customMark: [\n {\n type: 'text',\n dataId: 'year',\n style: {\n textBaseline: 'bottom',\n fontSize: textSize,\n textAlign: 'right',\n fontFamily: 'PingFang SC',\n fontWeight: 600,\n text: (datum: any) => datum[encodingPlayer],\n x: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.width - padding\n },\n y: (datum: any, ctx: any) => {\n return ctx.vchart.getChart().getCanvasRect()?.height - padding - textSize\n },\n fill: 'grey',\n fillOpacity: 0.5,\n },\n },\n ],\n player: {\n visible: true,\n auto: autoPlay,\n interval: interval,\n loop: loop,\n alternate: false,\n position: 'middle',\n orient: position,\n type: 'discrete',\n specs,\n controller: {\n visible: true,\n start: { visible: true, order: 0, style: { fill: startButtonColor } },\n pause: { visible: true, order: 1, style: { fill: pauseButtonColor } },\n backward: { visible: true, order: 2, style: { fill: backwardButtonColor } },\n forward: { visible: true, order: 3, position: 'end', style: { fill: forwardButtonColor } },\n },\n slider: {\n visible: true,\n railStyle: {\n visible: true,\n fill: railColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n trackStyle: {\n visible: true,\n fill: trackColor,\n [position === 'top' || position === 'bottom' ? 'height' : 'width']: 2,\n },\n handlerStyle: {\n visible: true,\n lineWidth: 2,\n stroke: sliderHandleBorderColor,\n fill: sliderHandleColor,\n size: 9,\n },\n },\n } as IPlayerSpec,\n } as unknown as ISpec\n}\n"],"names":["playerYY","spec","context","vseed","advancedVSeed","datasetReshapeInfo","dimensions","chartType","encoding","baseConfig","result","datasetScatter","isVTable","isPivotChart","player","id","unfoldInfo","encodingPlayer","autoPlay","interval","loop","position","railColor","trackColor","sliderHandleColor","sliderHandleBorderColor","startButtonColor","pauseButtonColor","backwardButtonColor","forwardButtonColor","dataGroups","groupBy","item","specs","Object","items","duration","exchangeDuration","dataKey","d","padding","textSize","undefined","datum","ctx"],"mappings":"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"}
@@ -4,3 +4,4 @@ export { tooltipScatter } from './tooltipScatter';
4
4
  export { tooltipHeatmap } from './tooltipHeatmap';
5
5
  export { tooltipBoxplot } from './tooltipBoxplot';
6
6
  export { tooltipHistogram } from './tooltipHistogram';
7
+ export { tooltipHierarchy } from './tooltipHierarchy';
@@ -4,4 +4,5 @@ import { tooltipScatter } from "./tooltipScatter.js";
4
4
  import { tooltipHeatmap } from "./tooltipHeatmap.js";
5
5
  import { tooltipBoxplot } from "./tooltipBoxplot.js";
6
6
  import { tooltipHistogram } from "./tooltipHistogram.js";
7
- export { tooltip, tooltipBoxplot, tooltipDualAxis, tooltipHeatmap, tooltipHistogram, tooltipOfDualAxisSeries, tooltipScatter };
7
+ import { tooltipHierarchy } from "./tooltipHierarchy.js";
8
+ export { tooltip, tooltipBoxplot, tooltipDualAxis, tooltipHeatmap, tooltipHierarchy, tooltipHistogram, tooltipOfDualAxisSeries, tooltipScatter };
@@ -0,0 +1,2 @@
1
+ import type { VChartSpecPipe } from '../../../../../types';
2
+ export declare const tooltipHierarchy: VChartSpecPipe;