@visactor/vseed 0.4.2 → 0.4.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 (310) hide show
  1. package/dist/cjs/index.cjs +646 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/builder/builder/buildSpec.d.ts +1 -2
  4. package/dist/esm/builder/builder/buildSpec.js.map +1 -1
  5. package/dist/esm/builder/builder/builder.d.ts +54 -14290
  6. package/dist/esm/builder/builder/builder.js +10 -0
  7. package/dist/esm/builder/builder/builder.js.map +1 -1
  8. package/dist/esm/builder/builder/prepare.d.ts +12 -0
  9. package/dist/esm/builder/builder/prepare.js +269 -0
  10. package/dist/esm/builder/builder/prepare.js.map +1 -0
  11. package/dist/esm/builder/register/all.js +4 -1
  12. package/dist/esm/builder/register/all.js.map +1 -1
  13. package/dist/esm/builder/register/chartType/index.d.ts +3 -0
  14. package/dist/esm/builder/register/chartType/index.js +4 -1
  15. package/dist/esm/builder/register/chartType/raceDonut.d.ts +5 -0
  16. package/dist/esm/builder/register/chartType/raceDonut.js +9 -0
  17. package/dist/esm/builder/register/chartType/raceDonut.js.map +1 -0
  18. package/dist/esm/builder/register/chartType/raceLine.d.ts +5 -0
  19. package/dist/esm/builder/register/chartType/raceLine.js +9 -0
  20. package/dist/esm/builder/register/chartType/raceLine.js.map +1 -0
  21. package/dist/esm/builder/register/chartType/racePie.d.ts +5 -0
  22. package/dist/esm/builder/register/chartType/racePie.js +9 -0
  23. package/dist/esm/builder/register/chartType/racePie.js.map +1 -0
  24. package/dist/esm/dataReshape/constant.d.ts +1 -0
  25. package/dist/esm/dataReshape/constant.js +2 -1
  26. package/dist/esm/dataReshape/constant.js.map +1 -1
  27. package/dist/esm/dataSelector/selector.d.ts +71 -2
  28. package/dist/esm/dataSelector/selector.js +96 -32
  29. package/dist/esm/dataSelector/selector.js.map +1 -1
  30. package/dist/esm/pipeline/advanced/chart/pipeline/index.d.ts +3 -0
  31. package/dist/esm/pipeline/advanced/chart/pipeline/index.js +4 -1
  32. package/dist/esm/pipeline/advanced/chart/pipeline/raceDonut.d.ts +2 -0
  33. package/dist/esm/pipeline/advanced/chart/pipeline/raceDonut.js +33 -0
  34. package/dist/esm/pipeline/advanced/chart/pipeline/raceDonut.js.map +1 -0
  35. package/dist/esm/pipeline/advanced/chart/pipeline/raceLine.d.ts +2 -0
  36. package/dist/esm/pipeline/advanced/chart/pipeline/raceLine.js +36 -0
  37. package/dist/esm/pipeline/advanced/chart/pipeline/raceLine.js.map +1 -0
  38. package/dist/esm/pipeline/advanced/chart/pipeline/racePie.d.ts +2 -0
  39. package/dist/esm/pipeline/advanced/chart/pipeline/racePie.js +33 -0
  40. package/dist/esm/pipeline/advanced/chart/pipeline/racePie.js.map +1 -0
  41. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js +2 -1
  42. package/dist/esm/pipeline/advanced/chart/pipes/default/defaultMeasures.js.map +1 -1
  43. package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.d.ts +3 -0
  44. package/dist/esm/pipeline/advanced/chart/pipes/encoding/index.js +4 -1
  45. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceBar.js +0 -3
  46. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceBar.js.map +1 -1
  47. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceColumn.js +0 -3
  48. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceColumn.js.map +1 -1
  49. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceDonut.d.ts +3 -0
  50. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceDonut.js +74 -0
  51. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceDonut.js.map +1 -0
  52. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceLine.d.ts +3 -0
  53. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceLine.js +89 -0
  54. package/dist/esm/pipeline/advanced/chart/pipes/encoding/raceLine.js.map +1 -0
  55. package/dist/esm/pipeline/advanced/chart/pipes/encoding/racePie.d.ts +3 -0
  56. package/dist/esm/pipeline/advanced/chart/pipes/encoding/racePie.js +74 -0
  57. package/dist/esm/pipeline/advanced/chart/pipes/encoding/racePie.js.map +1 -0
  58. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js +2 -1
  59. package/dist/esm/pipeline/advanced/table/pipes/default/defaultMeasures.js.map +1 -1
  60. package/dist/esm/pipeline/spec/chart/pipeline/index.d.ts +3 -0
  61. package/dist/esm/pipeline/spec/chart/pipeline/index.js +4 -1
  62. package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js +2 -2
  63. package/dist/esm/pipeline/spec/chart/pipeline/raceBar.js.map +1 -1
  64. package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js +2 -2
  65. package/dist/esm/pipeline/spec/chart/pipeline/raceColumn.js.map +1 -1
  66. package/dist/esm/pipeline/spec/chart/pipeline/raceDonut.d.ts +2 -0
  67. package/dist/esm/pipeline/spec/chart/pipeline/raceDonut.js +21 -0
  68. package/dist/esm/pipeline/spec/chart/pipeline/raceDonut.js.map +1 -0
  69. package/dist/esm/pipeline/spec/chart/pipeline/raceLine.d.ts +2 -0
  70. package/dist/esm/pipeline/spec/chart/pipeline/raceLine.js +25 -0
  71. package/dist/esm/pipeline/spec/chart/pipeline/raceLine.js.map +1 -0
  72. package/dist/esm/pipeline/spec/chart/pipeline/racePie.d.ts +2 -0
  73. package/dist/esm/pipeline/spec/chart/pipeline/racePie.js +21 -0
  74. package/dist/esm/pipeline/spec/chart/pipeline/racePie.js.map +1 -0
  75. package/dist/esm/pipeline/spec/chart/pipeline/raceScatter.js +2 -2
  76. package/dist/esm/pipeline/spec/chart/pipeline/raceScatter.js.map +1 -1
  77. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js +10 -4
  78. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationHorizontalLine.js.map +1 -1
  79. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.d.ts +8 -2
  80. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.js +13 -4
  81. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointCommon.js.map +1 -1
  82. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfDualAxis.js +8 -4
  83. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationPointOfDualAxis.js.map +1 -1
  84. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js +10 -4
  85. package/dist/esm/pipeline/spec/chart/pipes/annotation/annotationVerticalLine.js.map +1 -1
  86. package/dist/esm/pipeline/spec/chart/pipes/annotation/splitLine.js.map +1 -1
  87. package/dist/esm/pipeline/spec/chart/pipes/annotation/utils.d.ts +9 -1
  88. package/dist/esm/pipeline/spec/chart/pipes/annotation/utils.js +7 -1
  89. package/dist/esm/pipeline/spec/chart/pipes/annotation/utils.js.map +1 -1
  90. package/dist/esm/pipeline/spec/chart/pipes/legend/boxLegend.js.map +1 -1
  91. package/dist/esm/pipeline/spec/chart/pipes/legend/heatmapColorLegend.js.map +1 -1
  92. package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js +3 -2
  93. package/dist/esm/pipeline/spec/chart/pipes/markStyle/barStyle.js.map +1 -1
  94. package/dist/esm/pipeline/spec/chart/pipes/markStyle/lineStyle.js +5 -2
  95. package/dist/esm/pipeline/spec/chart/pipes/markStyle/lineStyle.js.map +1 -1
  96. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointState.js.map +1 -1
  97. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointStyle.js +3 -2
  98. package/dist/esm/pipeline/spec/chart/pipes/markStyle/pointStyle.js.map +1 -1
  99. package/dist/esm/pipeline/spec/chart/pipes/player/index.d.ts +5 -3
  100. package/dist/esm/pipeline/spec/chart/pipes/player/index.js +5 -3
  101. package/dist/esm/pipeline/spec/chart/pipes/player/isPlayer.d.ts +2 -2
  102. package/dist/esm/pipeline/spec/chart/pipes/player/isPlayer.js +8 -7
  103. package/dist/esm/pipeline/spec/chart/pipes/player/isPlayer.js.map +1 -1
  104. package/dist/esm/pipeline/spec/chart/pipes/player/{playerXY.d.ts → playerBar.d.ts} +1 -1
  105. package/dist/esm/pipeline/spec/chart/pipes/player/{playerYX.js → playerBar.js} +6 -7
  106. package/dist/esm/pipeline/spec/chart/pipes/player/playerBar.js.map +1 -0
  107. package/dist/esm/pipeline/spec/chart/pipes/player/playerColumn.d.ts +2 -0
  108. package/dist/esm/pipeline/spec/chart/pipes/player/{playerXY.js → playerColumn.js} +6 -7
  109. package/dist/esm/pipeline/spec/chart/pipes/player/playerColumn.js.map +1 -0
  110. package/dist/esm/pipeline/spec/chart/pipes/player/{playerYX.d.ts → playerLine.d.ts} +1 -1
  111. package/dist/esm/pipeline/spec/chart/pipes/player/playerLine.js +144 -0
  112. package/dist/esm/pipeline/spec/chart/pipes/player/playerLine.js.map +1 -0
  113. package/dist/esm/pipeline/spec/chart/pipes/player/{playerYY.d.ts → playerPie.d.ts} +1 -1
  114. package/dist/esm/pipeline/spec/chart/pipes/player/playerPie.js +174 -0
  115. package/dist/esm/pipeline/spec/chart/pipes/player/playerPie.js.map +1 -0
  116. package/dist/esm/pipeline/spec/chart/pipes/player/playerScatter.d.ts +2 -0
  117. package/dist/esm/pipeline/spec/chart/pipes/player/{playerYY.js → playerScatter.js} +7 -7
  118. package/dist/esm/pipeline/spec/chart/pipes/player/playerScatter.js.map +1 -0
  119. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.d.ts +4 -1
  120. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.js +12 -1
  121. package/dist/esm/pipeline/spec/table/pipes/cellStyle/common.js.map +1 -1
  122. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js +6 -3
  123. package/dist/esm/pipeline/spec/table/pipes/cellStyle/pivot.js.map +1 -1
  124. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js +7 -3
  125. package/dist/esm/pipeline/spec/table/pipes/cellStyle/table.js.map +1 -1
  126. package/dist/esm/pipeline/spec/table/pipes/corner/titleOnDimension.js.map +1 -1
  127. package/dist/esm/pipeline/utils/index.d.ts +1 -0
  128. package/dist/esm/pipeline/utils/index.js +1 -0
  129. package/dist/esm/pipeline/utils/sandbox/builtin-utils.d.ts +6 -0
  130. package/dist/esm/pipeline/utils/sandbox/builtin-utils.js +337 -0
  131. package/dist/esm/pipeline/utils/sandbox/builtin-utils.js.map +1 -0
  132. package/dist/esm/pipeline/utils/sandbox/execute.d.ts +73 -0
  133. package/dist/esm/pipeline/utils/sandbox/execute.js +716 -0
  134. package/dist/esm/pipeline/utils/sandbox/execute.js.map +1 -0
  135. package/dist/esm/pipeline/utils/sandbox/index.d.ts +7 -0
  136. package/dist/esm/pipeline/utils/sandbox/index.js +3 -0
  137. package/dist/esm/theme/dark/dark.js +10 -5
  138. package/dist/esm/theme/dark/dark.js.map +1 -1
  139. package/dist/esm/theme/dark/raceLine.d.ts +182 -0
  140. package/dist/esm/theme/dark/raceLine.js +39 -0
  141. package/dist/esm/theme/dark/raceLine.js.map +1 -0
  142. package/dist/esm/theme/dark/racePie.d.ts +157 -0
  143. package/dist/esm/theme/dark/racePie.js +18 -0
  144. package/dist/esm/theme/dark/racePie.js.map +1 -0
  145. package/dist/esm/theme/light/light.js +6 -1
  146. package/dist/esm/theme/light/light.js.map +1 -1
  147. package/dist/esm/theme/light/raceLine.d.ts +182 -0
  148. package/dist/esm/theme/light/raceLine.js +39 -0
  149. package/dist/esm/theme/light/raceLine.js.map +1 -0
  150. package/dist/esm/theme/light/racePie.d.ts +157 -0
  151. package/dist/esm/theme/light/racePie.js +18 -0
  152. package/dist/esm/theme/light/racePie.js.map +1 -0
  153. package/dist/esm/types/builder/builder.d.ts +1 -0
  154. package/dist/esm/types/builder/builder.js.map +1 -1
  155. package/dist/esm/types/chartType/area/zArea.d.ts +682 -18
  156. package/dist/esm/types/chartType/areaPercent/zAreaPercent.d.ts +682 -18
  157. package/dist/esm/types/chartType/bar/zBar.d.ts +362 -10
  158. package/dist/esm/types/chartType/barParallel/zBarParallel.d.ts +362 -10
  159. package/dist/esm/types/chartType/barPercent/zBarPercent.d.ts +362 -10
  160. package/dist/esm/types/chartType/boxPlot/zBoxPlot.d.ts +210 -14
  161. package/dist/esm/types/chartType/circlePacking/zCirclePacking.d.ts +2 -2
  162. package/dist/esm/types/chartType/column/zColumn.d.ts +363 -10
  163. package/dist/esm/types/chartType/columnParallel/zColumnParallel.d.ts +363 -10
  164. package/dist/esm/types/chartType/columnPercent/zColumnPercent.d.ts +362 -10
  165. package/dist/esm/types/chartType/donut/zDonut.d.ts +2 -2
  166. package/dist/esm/types/chartType/dualAxis/zDualAxis.d.ts +842 -22
  167. package/dist/esm/types/chartType/funnel/zFunnel.d.ts +2 -2
  168. package/dist/esm/types/chartType/heatmap/zHeatmap.d.ts +2 -2
  169. package/dist/esm/types/chartType/histogram/zHistogram.d.ts +362 -10
  170. package/dist/esm/types/chartType/index.d.ts +7 -0
  171. package/dist/esm/types/chartType/index.js +3 -0
  172. package/dist/esm/types/chartType/line/zLine.d.ts +522 -14
  173. package/dist/esm/types/chartType/pie/zPie.d.ts +2 -2
  174. package/dist/esm/types/chartType/pivotTable/zPivotTable.d.ts +241 -4
  175. package/dist/esm/types/chartType/pivotTable/zPivotTable.js +1 -1
  176. package/dist/esm/types/chartType/pivotTable/zPivotTable.js.map +1 -1
  177. package/dist/esm/types/chartType/raceBar/raceBar.d.ts +2 -2
  178. package/dist/esm/types/chartType/raceBar/zRaceBar.d.ts +363 -10
  179. package/dist/esm/types/chartType/raceColumn/raceColumn.d.ts +106 -3
  180. package/dist/esm/types/chartType/raceColumn/zRaceColumn.d.ts +363 -10
  181. package/dist/esm/types/chartType/raceDonut/index.d.ts +2 -0
  182. package/dist/esm/types/chartType/raceDonut/index.js +1 -0
  183. package/dist/esm/types/chartType/raceDonut/raceDonut.d.ts +75 -0
  184. package/dist/esm/types/chartType/raceDonut/zRaceDonut.d.ts +387 -0
  185. package/dist/esm/types/chartType/raceDonut/zRaceDonut.js +23 -0
  186. package/dist/esm/types/chartType/raceDonut/zRaceDonut.js.map +1 -0
  187. package/dist/esm/types/chartType/raceLine/index.d.ts +2 -0
  188. package/dist/esm/types/chartType/raceLine/index.js +1 -0
  189. package/dist/esm/types/chartType/raceLine/raceLine.d.ts +122 -0
  190. package/dist/esm/types/chartType/raceLine/raceLine.js +0 -0
  191. package/dist/esm/types/chartType/raceLine/zRaceLine.d.ts +1904 -0
  192. package/dist/esm/types/chartType/raceLine/zRaceLine.js +35 -0
  193. package/dist/esm/types/chartType/raceLine/zRaceLine.js.map +1 -0
  194. package/dist/esm/types/chartType/racePie/index.d.ts +2 -0
  195. package/dist/esm/types/chartType/racePie/index.js +1 -0
  196. package/dist/esm/types/chartType/racePie/racePie.d.ts +75 -0
  197. package/dist/esm/types/chartType/racePie/racePie.js +0 -0
  198. package/dist/esm/types/chartType/racePie/zRacePie.d.ts +387 -0
  199. package/dist/esm/types/chartType/racePie/zRacePie.js +23 -0
  200. package/dist/esm/types/chartType/racePie/zRacePie.js.map +1 -0
  201. package/dist/esm/types/chartType/raceScatter/raceScatter.d.ts +84 -0
  202. package/dist/esm/types/chartType/raceScatter/zRaceScatter.d.ts +363 -10
  203. package/dist/esm/types/chartType/radar/zRadar.d.ts +2 -2
  204. package/dist/esm/types/chartType/rose/zRose.d.ts +2 -2
  205. package/dist/esm/types/chartType/roseParallel/zRoseParallel.d.ts +2 -2
  206. package/dist/esm/types/chartType/scatter/zScatter.d.ts +362 -10
  207. package/dist/esm/types/chartType/sunburst/sunburst.d.ts +1 -1
  208. package/dist/esm/types/chartType/sunburst/zSunburst.d.ts +2 -2
  209. package/dist/esm/types/chartType/table/zTable.d.ts +241 -4
  210. package/dist/esm/types/chartType/table/zTable.js +1 -1
  211. package/dist/esm/types/chartType/table/zTable.js.map +1 -1
  212. package/dist/esm/types/chartType/treeMap/zTreeMap.d.ts +2 -2
  213. package/dist/esm/types/dataSelector/selector.d.ts +594 -3
  214. package/dist/esm/types/dataSelector/selector.js +58 -2
  215. package/dist/esm/types/dataSelector/selector.js.map +1 -1
  216. package/dist/esm/types/properties/annotation/annotation.d.ts +200 -4
  217. package/dist/esm/types/properties/annotation/annotationHorizontalLine.d.ts +12 -0
  218. package/dist/esm/types/properties/annotation/annotationPoint.d.ts +19 -0
  219. package/dist/esm/types/properties/annotation/annotationVerticalLine.d.ts +12 -0
  220. package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.d.ts +10 -0
  221. package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js +2 -0
  222. package/dist/esm/types/properties/annotation/zAnnotationHorizontalLine.js.map +1 -1
  223. package/dist/esm/types/properties/annotation/zAnnotationPoint.d.ts +80 -2
  224. package/dist/esm/types/properties/annotation/zAnnotationPoint.js +2 -1
  225. package/dist/esm/types/properties/annotation/zAnnotationPoint.js.map +1 -1
  226. package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.d.ts +10 -0
  227. package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js +2 -0
  228. package/dist/esm/types/properties/annotation/zAnnotationVerticalLine.js.map +1 -1
  229. package/dist/esm/types/properties/cellStyle/bodyCellStyle.d.ts +105 -2
  230. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js +2 -1
  231. package/dist/esm/types/properties/cellStyle/bodyCellStyle.js.map +1 -1
  232. package/dist/esm/types/properties/cellStyle/cellStyle.d.ts +83 -2
  233. package/dist/esm/types/properties/chartType/chartType.d.ts +4 -1
  234. package/dist/esm/types/properties/chartType/chartType.js +3 -0
  235. package/dist/esm/types/properties/chartType/chartType.js.map +1 -1
  236. package/dist/esm/types/properties/config/annotation/zAnnotation.d.ts +156 -0
  237. package/dist/esm/types/properties/config/area.d.ts +160 -4
  238. package/dist/esm/types/properties/config/bar.d.ts +240 -6
  239. package/dist/esm/types/properties/config/boxplot.d.ts +80 -2
  240. package/dist/esm/types/properties/config/circlePacking.d.ts +2 -2
  241. package/dist/esm/types/properties/config/column.d.ts +240 -6
  242. package/dist/esm/types/properties/config/config.d.ts +3576 -96
  243. package/dist/esm/types/properties/config/config.js +4 -1
  244. package/dist/esm/types/properties/config/config.js.map +1 -1
  245. package/dist/esm/types/properties/config/dualAxis.d.ts +80 -2
  246. package/dist/esm/types/properties/config/funnel.d.ts +2 -2
  247. package/dist/esm/types/properties/config/heatmap.d.ts +2 -2
  248. package/dist/esm/types/properties/config/histogram.d.ts +80 -2
  249. package/dist/esm/types/properties/config/label/zLabel.d.ts +2 -2
  250. package/dist/esm/types/properties/config/label/zPieLabel.d.ts +2 -2
  251. package/dist/esm/types/properties/config/line.d.ts +80 -2
  252. package/dist/esm/types/properties/config/pie.d.ts +6 -6
  253. package/dist/esm/types/properties/config/player/player.d.ts +2 -2
  254. package/dist/esm/types/properties/config/player/zPlayer.d.ts +1 -0
  255. package/dist/esm/types/properties/config/player/zPlayer.js +1 -0
  256. package/dist/esm/types/properties/config/player/zPlayer.js.map +1 -1
  257. package/dist/esm/types/properties/config/race.d.ts +2519 -50
  258. package/dist/esm/types/properties/config/race.js +10 -3
  259. package/dist/esm/types/properties/config/race.js.map +1 -1
  260. package/dist/esm/types/properties/config/rose.d.ts +4 -4
  261. package/dist/esm/types/properties/config/scatter.d.ts +80 -2
  262. package/dist/esm/types/properties/config/sunburst.d.ts +2 -2
  263. package/dist/esm/types/properties/config/treeMap.d.ts +2 -2
  264. package/dist/esm/types/properties/dimensions/index.d.ts +3 -0
  265. package/dist/esm/types/properties/dimensions/raceDonutDimension.d.ts +14 -0
  266. package/dist/esm/types/properties/dimensions/raceDonutDimension.js +0 -0
  267. package/dist/esm/types/properties/dimensions/raceLineDimension.d.ts +15 -0
  268. package/dist/esm/types/properties/dimensions/raceLineDimension.js +0 -0
  269. package/dist/esm/types/properties/dimensions/racePieDimension.d.ts +14 -0
  270. package/dist/esm/types/properties/dimensions/racePieDimension.js +0 -0
  271. package/dist/esm/types/properties/markStyle/areaStyle.d.ts +19 -0
  272. package/dist/esm/types/properties/markStyle/barStyle.d.ts +99 -2
  273. package/dist/esm/types/properties/markStyle/barStyle.js +2 -1
  274. package/dist/esm/types/properties/markStyle/barStyle.js.map +1 -1
  275. package/dist/esm/types/properties/markStyle/boxPlotStyle.d.ts +2 -2
  276. package/dist/esm/types/properties/markStyle/lineStyle.d.ts +99 -2
  277. package/dist/esm/types/properties/markStyle/lineStyle.js +2 -1
  278. package/dist/esm/types/properties/markStyle/lineStyle.js.map +1 -1
  279. package/dist/esm/types/properties/markStyle/markStyle.d.ts +648 -24
  280. package/dist/esm/types/properties/markStyle/outlierStyle.d.ts +2 -2
  281. package/dist/esm/types/properties/markStyle/pointStyle.d.ts +99 -2
  282. package/dist/esm/types/properties/markStyle/pointStyle.js +2 -1
  283. package/dist/esm/types/properties/markStyle/pointStyle.js.map +1 -1
  284. package/dist/esm/types/properties/markStyle/zAreaStyle.d.ts +80 -2
  285. package/dist/esm/types/properties/markStyle/zAreaStyle.js +2 -1
  286. package/dist/esm/types/properties/markStyle/zAreaStyle.js.map +1 -1
  287. package/dist/esm/types/properties/measures/hierarchyMeasure.d.ts +10 -0
  288. package/dist/esm/types/properties/measures/hierarchyMeasure.js +0 -0
  289. package/dist/esm/types/properties/measures/index.d.ts +4 -1
  290. package/dist/esm/types/properties/measures/raceDonutMeasure.d.ts +2 -0
  291. package/dist/esm/types/properties/measures/raceDonutMeasure.js +0 -0
  292. package/dist/esm/types/properties/measures/raceLineMeasure.d.ts +2 -0
  293. package/dist/esm/types/properties/measures/raceLineMeasure.js +0 -0
  294. package/dist/esm/types/properties/measures/racePieMeasure.d.ts +2 -0
  295. package/dist/esm/types/properties/measures/racePieMeasure.js +0 -0
  296. package/dist/esm/types/properties/theme/customTheme.d.ts +9495 -2535
  297. package/dist/esm/types/sandbox.d.ts +19 -0
  298. package/dist/esm/types/sandbox.js +0 -0
  299. package/dist/esm/types/vseed.d.ts +2 -2
  300. package/dist/esm/types/zVseed.d.ts +4 -25058
  301. package/dist/esm/types/zVseed.js +7 -4
  302. package/dist/esm/types/zVseed.js.map +1 -1
  303. package/dist/umd/index.js +4310 -1922
  304. package/dist/umd/index.js.map +1 -1
  305. package/package.json +1 -1
  306. package/dist/esm/pipeline/spec/chart/pipes/player/playerXY.js.map +0 -1
  307. package/dist/esm/pipeline/spec/chart/pipes/player/playerYX.js.map +0 -1
  308. package/dist/esm/pipeline/spec/chart/pipes/player/playerYY.js.map +0 -1
  309. package/dist/esm/types/properties/measures/hierarchyMeasures.d.ts +0 -4
  310. /package/dist/esm/types/{properties/measures/hierarchyMeasures.js → chartType/raceDonut/raceDonut.js} +0 -0
@@ -1,7 +1,8 @@
1
1
  import type { Datum } from '../types';
2
- import type { DimensionSelector, MeasureSelector, PartialDatumSelector, Selector, Selectors, ValueSelector } from '../types/dataSelector';
2
+ import type { ChartDynamicFilter, ChartDynamicFilterRes, DimensionSelector, MeasureSelector, PartialDatumSelector, Selector, Selectors, TableDynamicFilterRes, TableDynamicFilter, ValueSelector, ValueDynamicFilter } from '../types/dataSelector';
3
+ export type DynamicFilter = TableDynamicFilter | ChartDynamicFilter | ValueDynamicFilter;
4
+ export type DynamicFilterResult = TableDynamicFilterRes[] | ChartDynamicFilterRes[] | number | string;
3
5
  export declare const selector: (vchartDatum: Datum, selector: Selector | Selectors | undefined | null, selectorMode?: "And" | "Or") => boolean;
4
- export declare const selectorDatum: (datum: Datum, selector: Selector | Selectors | undefined | null) => Datum[];
5
6
  export declare const isValueSelector: (selector: Selector) => selector is ValueSelector;
6
7
  export declare const isPartialDatumSelector: (selector: Selector) => selector is PartialDatumSelector;
7
8
  export declare const isMeasureSelector: (selector: Selector) => selector is MeasureSelector;
@@ -10,3 +11,71 @@ export declare const selectByMeasure: (selector: MeasureSelector, datum: Datum)
10
11
  export declare const selectByDmension: (selector: DimensionSelector, datum: Datum) => boolean;
11
12
  export declare const selectByPartial: (selector: PartialDatumSelector, datum: Datum) => boolean;
12
13
  export declare const selectByValue: (selector: ValueSelector, datum: Datum) => boolean;
14
+ /**
15
+ * 识别是否为row-with-field动态过滤器
16
+ */
17
+ export declare const isRowWithFieldDynamicFilter: (selector: any) => selector is TableDynamicFilter;
18
+ /**
19
+ * 识别是否为数值动态过滤器(用于标注线等场景)
20
+ */
21
+ export declare const isValueDynamicFilter: (selector: any) => selector is ValueDynamicFilter;
22
+ /**
23
+ * 识别是否为动态过滤器(通用判断,包含所有类型的动态过滤器)
24
+ */
25
+ export declare const isDynamicFilter: (selector: any) => selector is DynamicFilter;
26
+ /**
27
+ * 执行动态过滤器代码,获取匹配结果
28
+ * @description
29
+ * 阶段1:执行阶段 - 一次性执行 dynamicFilter.code,获取所有匹配结果
30
+ * - TableDynamicFilter → CellSelector[]
31
+ * - ChartDynamicFilter → PartialDatumSelector[]
32
+ * - ValueDynamicFilter → number | string
33
+ *
34
+ * @param filter 动态过滤器配置
35
+ * @param allData 完整数据集
36
+ * @returns 执行结果数组或标量值
37
+ */
38
+ export declare const executeDynamicFilter: (filter: DynamicFilter, allData: Datum[]) => Promise<{
39
+ success: boolean;
40
+ data: DynamicFilterResult;
41
+ error?: string;
42
+ }>;
43
+ /**
44
+ * 匹配动态过滤器结果
45
+ * @description
46
+ * 阶段2:匹配阶段 - 判断当前 datum/cell 是否在执行结果中
47
+ * - 使用 OR 策略:结果数组中任一项匹配即返回 true
48
+ * - 表格场景:检查 { row, field } 是否在 CellSelector[] 中
49
+ * - 图表场景:检查 datum 的维度值是否匹配 PartialDatumSelector[] 中任一项
50
+ * - 数值场景:不适用(ValueDynamicFilter返回标量值,不用于匹配)
51
+ *
52
+ * @param result 动态过滤器执行结果(CellSelector[] 或 PartialDatumSelector[],不包括 ValueDynamicFilter)
53
+ * @param datum 当前数据项
54
+ * @param selectorType 选择器类型(用于区分表格和图表动态过滤器)
55
+ * @returns 是否匹配(OR 策略)
56
+ */
57
+ export declare const matchDynamicFilterResult: (result: DynamicFilterResult, datum: Datum, selectorType?: "table" | "chart") => boolean;
58
+ /**
59
+ * 带有动态过滤器支持的选择器
60
+ * @description
61
+ * 处理流程(两阶段设计):
62
+ *
63
+ * 阶段1 - 执行(Execute):
64
+ * - 在 prepare() 阶段执行,结果写入 dynamicFilter.result
65
+ * - TableDynamicFilter → CellSelector[]
66
+ * - ChartDynamicFilter → PartialDatumSelector[]
67
+ * - ValueDynamicFilter → number | string(用于读取,不用于匹配)
68
+ *
69
+ * 阶段2 - 匹配(Match):
70
+ * - 读取 dynamicFilter.result
71
+ * - 使用 OR 策略:结果数组中任一项匹配即返回 true
72
+ * - 表格:判断 { row, field } 是否在 CellSelector[] 中
73
+ * - 图表:判断 datum 是否匹配 PartialDatumSelector[] 中任一项
74
+ * - 数值:不用于匹配,直接返回 false(数值过滤器在主要用于标注线值,不用于行列选择)
75
+ *
76
+ * @param vchartDatum 单个数据项
77
+ * @param selectorConfig 选择器配置(可包含 DynamicFilter)
78
+ * @param defaultSelector 传统选择器(仅在 DynamicFilter 无结果且有 fallback 时使用)
79
+ * @returns 该数据项是否符合选择条件
80
+ */
81
+ export declare const selectorWithDynamicFilter: (vchartDatum: Datum, selectorConfig: DynamicFilter, defaultSelector?: Selector | Selector[] | null) => boolean;
@@ -1,4 +1,6 @@
1
1
  import { omit } from "remeda";
2
+ import { executeFilterCode } from "../pipeline/utils/sandbox/index.js";
3
+ import { InnerRowIndex } from "../dataReshape/index.js";
2
4
  function nearlyEqual(a, b, epsilon = 1e-8) {
3
5
  if (Number.isNaN(a) || Number.isNaN(b)) return false;
4
6
  if (a === b) return true;
@@ -20,37 +22,6 @@ const selector_selector = (vchartDatum, selector, selectorMode = 'And')=>{
20
22
  return false;
21
23
  });
22
24
  };
23
- const selectorDatum = (datum, selector)=>{
24
- if (!selector) return [];
25
- const selectors = Array.isArray(selector) ? selector : [
26
- selector
27
- ];
28
- let finalResult = [];
29
- for (const selector of selectors){
30
- const results = [];
31
- if (isValueSelector(selector)) Object.entries(datum).forEach(([key, value])=>{
32
- if (value === selector) results.push({
33
- [key]: value
34
- });
35
- });
36
- else if (isMeasureSelector(selector) && selectByMeasure(selector, datum)) results.push({
37
- [selector.field]: datum[selector.field]
38
- });
39
- else if (isDimensionSelector(selector) && selectByDmension(selector, datum)) results.push({
40
- [selector.field]: datum[selector.field]
41
- });
42
- else if (isPartialDatumSelector(selector) && selectByPartial(selector, datum)) results.push(selector);
43
- if (results.length) finalResult = finalResult.length ? finalResult.flatMap((prev)=>results.map((r)=>({
44
- ...prev,
45
- ...r
46
- }))) : results;
47
- else {
48
- finalResult = [];
49
- break;
50
- }
51
- }
52
- return finalResult;
53
- };
54
25
  const isValueSelector = (selector)=>'string' == typeof selector || 'number' == typeof selector;
55
26
  const isPartialDatumSelector = (selector)=>'object' == typeof selector && null !== selector;
56
27
  const isMeasureSelector = (selector)=>'object' == typeof selector && null !== selector && 'field' in selector && ('operator' in selector || 'op' in selector) && 'value' in selector && ([
@@ -129,6 +100,99 @@ const selectByDmension = (selector, datum)=>{
129
100
  };
130
101
  const selectByPartial = (selector, datum)=>Object.keys(selector).every((key)=>datum[key] === selector[key]);
131
102
  const selectByValue = (selector, datum)=>Object.values(datum).some((v)=>v === selector);
132
- export { isDimensionSelector, isMeasureSelector, isPartialDatumSelector, isValueSelector, selectByDmension, selectByMeasure, selectByPartial, selectByValue, selector_selector as selector, selectorDatum };
103
+ const matchesCellSelector = (cell, filterRes)=>{
104
+ if (filterRes[InnerRowIndex] !== cell[InnerRowIndex]) return false;
105
+ return '*' === filterRes.field || Object.keys(cell).includes(filterRes.field);
106
+ };
107
+ const matchesDatum = (target, candidate)=>Object.keys(candidate).every((key)=>target[key] === candidate[key]);
108
+ const isDynamicFilterLike = (selector, expectedTypes)=>'object' == typeof selector && null !== selector && 'type' in selector && expectedTypes.includes(selector.type) && 'code' in selector && 'string' == typeof selector.code;
109
+ const isRowWithFieldDynamicFilter = (selector)=>isDynamicFilterLike(selector, [
110
+ 'row-with-field'
111
+ ]);
112
+ const isValueDynamicFilter = (selector)=>isDynamicFilterLike(selector, [
113
+ 'value'
114
+ ]);
115
+ const isDynamicFilter = (selector)=>isDynamicFilterLike(selector, [
116
+ 'row-with-field',
117
+ 'value'
118
+ ]);
119
+ const validateFilterResult = (result, filter)=>{
120
+ if (isValueDynamicFilter(filter)) {
121
+ if ('number' != typeof result && 'string' != typeof result) throw new TypeError(`ValueDynamicFilter must return a number or string, but got: ${typeof result}. Code: "${filter.code}"`);
122
+ return;
123
+ }
124
+ if (!Array.isArray(result)) throw new TypeError(`${isRowWithFieldDynamicFilter(filter) ? 'TableDynamicFilter' : 'ChartDynamicFilter'} must return an array, but got: ${typeof result}. Code: "${filter.code}"`);
125
+ if (isRowWithFieldDynamicFilter(filter)) for(let i = 0; i < result.length; i++){
126
+ const item = result[i];
127
+ if ('object' != typeof item || null === item) throw new TypeError(`TableDynamicFilter array element at index ${i} must be an object, got: ${typeof item}`);
128
+ if (!(InnerRowIndex in item) && '__row_index' in item === false) throw new TypeError(`TableDynamicFilter array element at index ${i} must contain __row_index or InnerRowIndex field`);
129
+ if (!('field' in item)) throw new TypeError(`TableDynamicFilter array element at index ${i} must contain 'field' field`);
130
+ }
131
+ };
132
+ const executeDynamicFilter = async (filter, allData)=>{
133
+ try {
134
+ const { success, data, error } = await executeFilterCode({
135
+ code: filter.code,
136
+ data: allData
137
+ });
138
+ if (!success) {
139
+ console.warn('[vseed] Dynamic filter execution failed:', error);
140
+ return {
141
+ success: false,
142
+ data: isRowWithFieldDynamicFilter(filter) ? [] : '',
143
+ error
144
+ };
145
+ }
146
+ try {
147
+ validateFilterResult(data, filter);
148
+ } catch (validationError) {
149
+ console.error('[vseed] Dynamic filter result validation failed:', validationError);
150
+ return {
151
+ success: false,
152
+ data: isRowWithFieldDynamicFilter(filter) ? [] : '',
153
+ error: validationError instanceof Error ? validationError.message : String(validationError)
154
+ };
155
+ }
156
+ return {
157
+ success,
158
+ data: data
159
+ };
160
+ } catch (error) {
161
+ const errorMessage = error instanceof Error ? error.message : String(error);
162
+ console.error('[vseed] Dynamic filter execution threw exception:', errorMessage);
163
+ return {
164
+ success: false,
165
+ data: isRowWithFieldDynamicFilter(filter) ? [] : '',
166
+ error: errorMessage
167
+ };
168
+ }
169
+ };
170
+ const matchDynamicFilterResult = (result, datum, selectorType = 'table')=>{
171
+ if ('number' == typeof result || 'string' == typeof result) throw new Error('matchDynamicFilterResult does not support ValueDynamicFilter results');
172
+ if ('table' === selectorType) return result.some((item)=>matchesCellSelector(datum, item));
173
+ return result.some((item)=>matchesDatum(datum, item));
174
+ };
175
+ const selectorWithDynamicFilter = (vchartDatum, selectorConfig, defaultSelector)=>{
176
+ if (!selectorConfig) return true;
177
+ if (isValueDynamicFilter(selectorConfig)) {
178
+ if (selectorConfig.fallback) {
179
+ const fallbackSelector = Array.isArray(selectorConfig.fallback) ? selectorConfig.fallback : [
180
+ selectorConfig.fallback
181
+ ];
182
+ return selector_selector(vchartDatum, fallbackSelector);
183
+ }
184
+ return defaultSelector ? selector_selector(vchartDatum, defaultSelector) : false;
185
+ }
186
+ const selectorType = isRowWithFieldDynamicFilter(selectorConfig) ? 'table' : 'chart';
187
+ if (selectorConfig.result?.success && selectorConfig.result.data) return matchDynamicFilterResult(selectorConfig.result.data, vchartDatum, selectorType);
188
+ if (selectorConfig.fallback) {
189
+ const fallbackSelector = Array.isArray(selectorConfig.fallback) ? selectorConfig.fallback : [
190
+ selectorConfig.fallback
191
+ ];
192
+ return selector_selector(vchartDatum, fallbackSelector);
193
+ }
194
+ return defaultSelector ? selector_selector(vchartDatum, defaultSelector) : false;
195
+ };
196
+ export { executeDynamicFilter, isDimensionSelector, isDynamicFilter, isMeasureSelector, isPartialDatumSelector, isRowWithFieldDynamicFilter, isValueDynamicFilter, isValueSelector, matchDynamicFilterResult, selectByDmension, selectByMeasure, selectByPartial, selectByValue, selector_selector as selector, selectorWithDynamicFilter };
133
197
 
134
198
  //# sourceMappingURL=selector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataSelector/selector.js","sources":["webpack://@visactor/vseed/./src/dataSelector/selector.ts"],"sourcesContent":["import type { Datum } from 'src/types'\nimport type {\n DimensionSelector,\n MeasureSelector,\n PartialDatumSelector,\n Selector,\n Selectors,\n ValueSelector,\n} from '../types/dataSelector'\nimport { omit } from 'remeda'\n\n/**\n * 判断两个数字是否“近似相等”\n */\nfunction nearlyEqual(a: number, b: number, epsilon = 1e-8) {\n // NaN 直接不相等\n if (Number.isNaN(a) || Number.isNaN(b)) return false\n // 引用同一个数 或 完全相等\n if (a === b) return true\n const diff = Math.abs(a - b)\n return diff <= epsilon\n}\n\nexport const selector = (\n vchartDatum: Datum,\n selector: Selector | Selectors | undefined | null,\n selectorMode: 'And' | 'Or' = 'And',\n) => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selector) {\n return true\n }\n\n // 过滤掉 vchart 相关字段\n const vchartKeys = Object.keys(vchartDatum).filter((k) => k.toLocaleLowerCase().startsWith('__vchart'))\n const datum = omit(vchartDatum, vchartKeys) as Datum\n\n // 统一处理选择器为数组\n const selectors = (Array.isArray(selector) ? selector : [selector]) as Selectors\n\n return selectors[selectorMode === 'And' ? 'every' : 'some']((selector) => {\n // 1. 字符串或数字\n if (isValueSelector(selector)) {\n return selectByValue(selector, datum)\n }\n\n // 2. 指标选择器\n else if (isMeasureSelector(selector)) {\n return selectByMeasure(selector, datum)\n }\n // 3. 维度选择器\n else if (isDimensionSelector(selector)) {\n return selectByDmension(selector, datum)\n }\n // 4. 部分数据对象选择器\n else if (isPartialDatumSelector(selector)) {\n return selectByPartial(selector, datum)\n }\n\n return false\n })\n}\n\nexport const selectorDatum = (datum: Datum, selector: Selector | Selectors | undefined | null): Datum[] => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selector) {\n return []\n }\n\n // 统一处理选择器为数组\n const selectors = (Array.isArray(selector) ? selector : [selector]) as Selectors\n let finalResult: Datum[] = []\n\n for (const selector of selectors) {\n const results: Datum[] = []\n // 1. 字符串或数字\n if (isValueSelector(selector)) {\n Object.entries(datum).forEach(([key, value]) => {\n if (value === selector) {\n results.push({ [key]: value } as Datum)\n }\n })\n } else if (isMeasureSelector(selector) && selectByMeasure(selector, datum)) {\n results.push({ [selector.field]: datum[selector.field] } as Datum)\n } else if (isDimensionSelector(selector) && selectByDmension(selector, datum)) {\n results.push({ [selector.field]: datum[selector.field] } as Datum)\n } else if (isPartialDatumSelector(selector) && selectByPartial(selector, datum)) {\n results.push(selector)\n }\n\n if (results.length) {\n if (finalResult.length) {\n finalResult = finalResult.flatMap((prev) => {\n return results.map((r) => {\n return {\n ...prev,\n ...r,\n }\n })\n })\n } else {\n finalResult = results\n }\n } else {\n finalResult = []\n break\n }\n }\n\n return finalResult\n}\n\nexport const isValueSelector = (selector: Selector): selector is ValueSelector => {\n return typeof selector === 'string' || typeof selector === 'number'\n}\n\nexport const isPartialDatumSelector = (selector: Selector): selector is PartialDatumSelector => {\n return typeof selector === 'object' && selector !== null\n}\n\nexport const isMeasureSelector = (selector: Selector): selector is MeasureSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.operator as string) ||\n ['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.op as string))\n )\n}\n\nexport const isDimensionSelector = (selector: Selector): selector is DimensionSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['in', 'not in'].includes(selector.operator as string) || ['in', 'not in'].includes(selector.op as string))\n )\n}\n\nexport const selectByMeasure = (selector: MeasureSelector, datum: Datum) => {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n\n switch (op) {\n case '=':\n if (\n String(datum[selector.field]) === String(selectorValueArr[0]) ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '==':\n if (datum[selector.field] === selectorValueArr[0]) {\n return true\n }\n break\n case '!=':\n if (datum[selector.field] !== selectorValueArr[0]) {\n return true\n }\n break\n case '>':\n if (\n datum[selector.field] > selectorValueArr[0] &&\n !nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '<':\n if (\n datum[selector.field] < selectorValueArr[0] &&\n !nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '>=':\n if (\n datum[selector.field] >= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '<=':\n if (\n datum[selector.field] <= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case 'between':\n if (\n Array.isArray(selector.value) &&\n (datum[selector.field] >= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))) &&\n (datum[selector.field] <= selectorValueArr[1] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[1])))\n ) {\n return true\n }\n break\n }\n return false\n}\n\nexport const selectByDmension = (selector: DimensionSelector, datum: Datum) => {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n switch (op) {\n case 'in':\n if (selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n case 'not in':\n if (!selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n }\n\n return false\n}\n\nexport const selectByPartial = (selector: PartialDatumSelector, datum: Datum) => {\n return Object.keys(selector).every((key) => datum[key] === selector[key])\n}\n\nexport const selectByValue = (selector: ValueSelector, datum: Datum) => {\n return Object.values(datum).some((v) => v === selector)\n}\n"],"names":["nearlyEqual","a","b","epsilon","Number","diff","Math","selector","vchartDatum","selectorMode","vchartKeys","Object","k","datum","omit","selectors","Array","isValueSelector","selectByValue","isMeasureSelector","selectByMeasure","isDimensionSelector","selectByDmension","isPartialDatumSelector","selectByPartial","selectorDatum","finalResult","results","key","value","prev","r","op","selectorValueArr","String","v"],"mappings":"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"}
1
+ {"version":3,"file":"dataSelector/selector.js","sources":["webpack://@visactor/vseed/./src/dataSelector/selector.ts"],"sourcesContent":["import type { Datum } from 'src/types'\nimport type {\n ChartDynamicFilter,\n ChartDynamicFilterRes,\n DimensionSelector,\n MeasureSelector,\n PartialDatumSelector,\n Selector,\n Selectors,\n TableDynamicFilterRes,\n TableDynamicFilter,\n ValueSelector,\n ValueDynamicFilter,\n} from '../types/dataSelector'\nimport { omit } from 'remeda'\nimport { executeFilterCode } from 'src/pipeline/utils/sandbox'\nimport { InnerRowIndex } from 'src/dataReshape'\n\nexport type DynamicFilter = TableDynamicFilter | ChartDynamicFilter | ValueDynamicFilter\nexport type DynamicFilterResult = TableDynamicFilterRes[] | ChartDynamicFilterRes[] | number | string\n\n/**\n * 判断两个数字是否“近似相等”\n */\nfunction nearlyEqual(a: number, b: number, epsilon = 1e-8) {\n // NaN 直接不相等\n if (Number.isNaN(a) || Number.isNaN(b)) return false\n // 引用同一个数 或 完全相等\n if (a === b) return true\n const diff = Math.abs(a - b)\n return diff <= epsilon\n}\n\nexport const selector = (\n vchartDatum: Datum,\n selector: Selector | Selectors | undefined | null,\n selectorMode: 'And' | 'Or' = 'And',\n) => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selector) {\n return true\n }\n\n // 过滤掉 vchart 相关字段\n const vchartKeys = Object.keys(vchartDatum).filter((k) => k.toLocaleLowerCase().startsWith('__vchart'))\n const datum = omit(vchartDatum, vchartKeys) as Datum\n\n // 统一处理选择器为数组\n const selectors = (Array.isArray(selector) ? selector : [selector]) as Selectors\n\n return selectors[selectorMode === 'And' ? 'every' : 'some']((selector) => {\n // 1. 字符串或数字\n if (isValueSelector(selector)) {\n return selectByValue(selector, datum)\n }\n\n // 2. 指标选择器\n else if (isMeasureSelector(selector)) {\n return selectByMeasure(selector, datum)\n }\n // 3. 维度选择器\n else if (isDimensionSelector(selector)) {\n return selectByDmension(selector, datum)\n }\n // 4. 部分数据对象选择器\n else if (isPartialDatumSelector(selector)) {\n return selectByPartial(selector, datum)\n }\n\n return false\n })\n}\n\nexport const isValueSelector = (selector: Selector): selector is ValueSelector => {\n return typeof selector === 'string' || typeof selector === 'number'\n}\n\nexport const isPartialDatumSelector = (selector: Selector): selector is PartialDatumSelector => {\n return typeof selector === 'object' && selector !== null\n}\n\nexport const isMeasureSelector = (selector: Selector): selector is MeasureSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.operator as string) ||\n ['=', '==', '!=', '>', '<', '>=', '<=', 'between'].includes(selector.op as string))\n )\n}\n\nexport const isDimensionSelector = (selector: Selector): selector is DimensionSelector => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'field' in selector &&\n ('operator' in selector || 'op' in selector) &&\n 'value' in selector &&\n (['in', 'not in'].includes(selector.operator as string) || ['in', 'not in'].includes(selector.op as string))\n )\n}\n\nexport const selectByMeasure = (selector: MeasureSelector, datum: Datum) => {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n\n switch (op) {\n case '=':\n if (\n String(datum[selector.field]) === String(selectorValueArr[0]) ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '==':\n if (datum[selector.field] === selectorValueArr[0]) {\n return true\n }\n break\n case '!=':\n if (datum[selector.field] !== selectorValueArr[0]) {\n return true\n }\n break\n case '>':\n if (\n datum[selector.field] > selectorValueArr[0] &&\n !nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '<':\n if (\n datum[selector.field] < selectorValueArr[0] &&\n !nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '>=':\n if (\n datum[selector.field] >= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case '<=':\n if (\n datum[selector.field] <= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))\n ) {\n return true\n }\n break\n case 'between':\n if (\n Array.isArray(selector.value) &&\n (datum[selector.field] >= selectorValueArr[0] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[0]))) &&\n (datum[selector.field] <= selectorValueArr[1] ||\n nearlyEqual(Number(datum[selector.field]), Number(selectorValueArr[1])))\n ) {\n return true\n }\n break\n }\n return false\n}\n\nexport const selectByDmension = (selector: DimensionSelector, datum: Datum) => {\n const op = selector.operator || selector.op\n const selectorValueArr = Array.isArray(selector.value) ? selector.value : [selector.value]\n switch (op) {\n case 'in':\n if (selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n case 'not in':\n if (!selectorValueArr.includes(datum[selector.field] as string | number)) {\n return true\n }\n break\n }\n\n return false\n}\n\nexport const selectByPartial = (selector: PartialDatumSelector, datum: Datum) => {\n return Object.keys(selector).every((key) => datum[key] === selector[key])\n}\n\nexport const selectByValue = (selector: ValueSelector, datum: Datum) => {\n return Object.values(datum).some((v) => v === selector)\n}\n\nconst matchesCellSelector = (cell: Datum, filterRes: TableDynamicFilterRes) => {\n if (filterRes[InnerRowIndex] !== cell[InnerRowIndex]) return false\n return filterRes.field === '*' || Object.keys(cell).includes(filterRes.field)\n}\n\nconst matchesDatum = (target: Datum, candidate: Datum) => {\n return Object.keys(candidate).every((key) => target[key] === candidate[key])\n}\n\n/**\n * 公共方法:检查是否为动态过滤器结构\n */\nconst isDynamicFilterLike = (selector: any, expectedTypes: string[]): boolean => {\n return (\n typeof selector === 'object' &&\n selector !== null &&\n 'type' in selector &&\n expectedTypes.includes(selector.type) &&\n 'code' in selector &&\n typeof selector.code === 'string'\n )\n}\n\n/**\n * 识别是否为row-with-field动态过滤器\n */\nexport const isRowWithFieldDynamicFilter = (selector: any): selector is TableDynamicFilter => {\n return isDynamicFilterLike(selector, ['row-with-field'])\n}\n\n/**\n * 识别是否为数值动态过滤器(用于标注线等场景)\n */\nexport const isValueDynamicFilter = (selector: any): selector is ValueDynamicFilter => {\n return isDynamicFilterLike(selector, ['value'])\n}\n\n/**\n * 识别是否为动态过滤器(通用判断,包含所有类型的动态过滤器)\n */\nexport const isDynamicFilter = (selector: any): selector is DynamicFilter => {\n return isDynamicFilterLike(selector, ['row-with-field', 'value'])\n}\n\n/**\n * 验证动态过滤器执行结果的类型兼容性\n * @description\n * 在主线程中对 Worker 返回值进行类型特定的验证\n * - TableDynamicFilter: 必须返回包含 __row_index 和 field 的对象数组\n * - ChartDynamicFilter: 必须返回任意对象数组\n * - ValueDynamicFilter: 必须返回 number | string\n *\n * @param result Worker 返回的原始结果\n * @param filter 动态过滤器配置\n * @returns 验证是否通过\n * @throws 当验证失败时抛出 TypeError\n */\nconst validateFilterResult = (result: any, filter: DynamicFilter): void => {\n // ValueDynamicFilter:必须返回 number | string\n if (isValueDynamicFilter(filter)) {\n if (typeof result !== 'number' && typeof result !== 'string') {\n throw new TypeError(\n `ValueDynamicFilter must return a number or string, but got: ${typeof result}. ` + `Code: \"${filter.code}\"`,\n )\n }\n return\n }\n\n // TableDynamicFilter 和 ChartDynamicFilter:必须返回对象数组\n if (!Array.isArray(result)) {\n throw new TypeError(\n `${isRowWithFieldDynamicFilter(filter) ? 'TableDynamicFilter' : 'ChartDynamicFilter'} must return an array, ` +\n `but got: ${typeof result}. Code: \"${filter.code}\"`,\n )\n }\n\n // TableDynamicFilter:检查数组元素结构\n if (isRowWithFieldDynamicFilter(filter)) {\n for (let i = 0; i < result.length; i++) {\n const item = result[i]\n if (typeof item !== 'object' || item === null) {\n throw new TypeError(`TableDynamicFilter array element at index ${i} must be an object, got: ${typeof item}`)\n }\n if (!(InnerRowIndex in item) && '__row_index' in item === false) {\n throw new TypeError(\n `TableDynamicFilter array element at index ${i} must contain __row_index or InnerRowIndex field`,\n )\n }\n if (!('field' in item)) {\n throw new TypeError(`TableDynamicFilter array element at index ${i} must contain 'field' field`)\n }\n }\n }\n}\n\n/**\n * 执行动态过滤器代码,获取匹配结果\n * @description\n * 阶段1:执行阶段 - 一次性执行 dynamicFilter.code,获取所有匹配结果\n * - TableDynamicFilter → CellSelector[]\n * - ChartDynamicFilter → PartialDatumSelector[]\n * - ValueDynamicFilter → number | string\n *\n * @param filter 动态过滤器配置\n * @param allData 完整数据集\n * @returns 执行结果数组或标量值\n */\nexport const executeDynamicFilter = async (\n filter: DynamicFilter,\n allData: Datum[],\n): Promise<{ success: boolean; data: DynamicFilterResult; error?: string }> => {\n try {\n const { success, data, error } = await executeFilterCode({\n code: filter.code,\n data: allData,\n })\n\n if (!success) {\n // eslint-disable-next-line no-console\n console.warn('[vseed] Dynamic filter execution failed:', error)\n return {\n success: false,\n data: isRowWithFieldDynamicFilter(filter) ? [] : '',\n error,\n }\n }\n\n // 主线程验证:根据过滤器类型进行特定检查\n try {\n validateFilterResult(data, filter)\n } catch (validationError) {\n // eslint-disable-next-line no-console\n console.error('[vseed] Dynamic filter result validation failed:', validationError)\n return {\n success: false,\n data: isRowWithFieldDynamicFilter(filter) ? [] : '',\n error: validationError instanceof Error ? validationError.message : String(validationError),\n }\n }\n\n return {\n success,\n data: data as DynamicFilterResult,\n }\n } catch (error) {\n // 捕获所有可能的异常:\n // - Worker 不支持\n // - Worker 池初始化/获取失败\n // - validateCodeSafety 验证失败\n // - 数据验证失败\n const errorMessage = error instanceof Error ? error.message : String(error)\n // eslint-disable-next-line no-console\n console.error('[vseed] Dynamic filter execution threw exception:', errorMessage)\n\n return {\n success: false,\n data: isRowWithFieldDynamicFilter(filter) ? [] : '',\n error: errorMessage,\n }\n }\n}\n\n/**\n * 匹配动态过滤器结果\n * @description\n * 阶段2:匹配阶段 - 判断当前 datum/cell 是否在执行结果中\n * - 使用 OR 策略:结果数组中任一项匹配即返回 true\n * - 表格场景:检查 { row, field } 是否在 CellSelector[] 中\n * - 图表场景:检查 datum 的维度值是否匹配 PartialDatumSelector[] 中任一项\n * - 数值场景:不适用(ValueDynamicFilter返回标量值,不用于匹配)\n *\n * @param result 动态过滤器执行结果(CellSelector[] 或 PartialDatumSelector[],不包括 ValueDynamicFilter)\n * @param datum 当前数据项\n * @param selectorType 选择器类型(用于区分表格和图表动态过滤器)\n * @returns 是否匹配(OR 策略)\n */\nexport const matchDynamicFilterResult = (\n result: DynamicFilterResult,\n datum: Datum,\n selectorType: 'table' | 'chart' = 'table',\n): boolean => {\n // ValueDynamicFilter 不应该通过这个函数处理\n if (typeof result === 'number' || typeof result === 'string') {\n throw new Error('matchDynamicFilterResult does not support ValueDynamicFilter results')\n }\n\n if (selectorType === 'table') {\n return result.some((item) => {\n return matchesCellSelector(datum, item as TableDynamicFilterRes)\n })\n }\n return result.some((item) => {\n return matchesDatum(datum, item as PartialDatumSelector)\n })\n}\n\n/**\n * 带有动态过滤器支持的选择器\n * @description\n * 处理流程(两阶段设计):\n *\n * 阶段1 - 执行(Execute):\n * - 在 prepare() 阶段执行,结果写入 dynamicFilter.result\n * - TableDynamicFilter → CellSelector[]\n * - ChartDynamicFilter → PartialDatumSelector[]\n * - ValueDynamicFilter → number | string(用于读取,不用于匹配)\n *\n * 阶段2 - 匹配(Match):\n * - 读取 dynamicFilter.result\n * - 使用 OR 策略:结果数组中任一项匹配即返回 true\n * - 表格:判断 { row, field } 是否在 CellSelector[] 中\n * - 图表:判断 datum 是否匹配 PartialDatumSelector[] 中任一项\n * - 数值:不用于匹配,直接返回 false(数值过滤器在主要用于标注线值,不用于行列选择)\n *\n * @param vchartDatum 单个数据项\n * @param selectorConfig 选择器配置(可包含 DynamicFilter)\n * @param defaultSelector 传统选择器(仅在 DynamicFilter 无结果且有 fallback 时使用)\n * @returns 该数据项是否符合选择条件\n */\nexport const selectorWithDynamicFilter = (\n vchartDatum: Datum,\n selectorConfig: DynamicFilter,\n defaultSelector?: Selector | Selector[] | null,\n): boolean => {\n // 无有效选择器, 则认为全部匹配成功\n if (!selectorConfig) {\n return true\n }\n\n // ValueDynamicFilter 不用于选择,直接返回 false\n if (isValueDynamicFilter(selectorConfig)) {\n if (selectorConfig.fallback) {\n const fallbackSelector = Array.isArray(selectorConfig.fallback)\n ? selectorConfig.fallback\n : [selectorConfig.fallback]\n return selector(vchartDatum, fallbackSelector)\n }\n return defaultSelector ? selector(vchartDatum, defaultSelector) : false\n }\n\n const selectorType = isRowWithFieldDynamicFilter(selectorConfig) ? 'table' : 'chart'\n\n // 优先使用预先执行的结果\n if (selectorConfig.result?.success && selectorConfig.result.data) {\n return matchDynamicFilterResult(selectorConfig.result.data, vchartDatum, selectorType)\n }\n\n if (selectorConfig.fallback) {\n // 如果有 fallback,使用传统 selector 进行匹配\n const fallbackSelector = Array.isArray(selectorConfig.fallback)\n ? selectorConfig.fallback\n : [selectorConfig.fallback]\n return selector(vchartDatum, fallbackSelector)\n }\n\n // 没有结果也没有 fallback,返回 false\n return defaultSelector ? selector(vchartDatum, defaultSelector) : false\n}\n"],"names":["nearlyEqual","a","b","epsilon","Number","diff","Math","selector","vchartDatum","selectorMode","vchartKeys","Object","k","datum","omit","selectors","Array","isValueSelector","selectByValue","isMeasureSelector","selectByMeasure","isDimensionSelector","selectByDmension","isPartialDatumSelector","selectByPartial","op","selectorValueArr","String","key","v","matchesCellSelector","cell","filterRes","InnerRowIndex","matchesDatum","target","candidate","isDynamicFilterLike","expectedTypes","isRowWithFieldDynamicFilter","isValueDynamicFilter","isDynamicFilter","validateFilterResult","result","filter","TypeError","i","item","executeDynamicFilter","allData","success","data","error","executeFilterCode","console","validationError","Error","errorMessage","matchDynamicFilterResult","selectorType","selectorWithDynamicFilter","selectorConfig","defaultSelector","fallbackSelector"],"mappings":"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"}
@@ -21,6 +21,9 @@ export { histogramAdvancedPipeline } from './histogram';
21
21
  export { raceBarAdvancedPipeline } from './raceBar';
22
22
  export { raceColumnAdvancedPipeline } from './raceColumn';
23
23
  export { raceScatterAdvancedPipeline } from './raceScatter';
24
+ export { raceLineAdvancedPipeline } from './raceLine';
25
+ export { racePieAdvancedPipeline } from './racePie';
26
+ export { raceDonutAdvancedPipeline } from './raceDonut';
24
27
  export { treeMapAdvancedPipeline } from './treeMap';
25
28
  export { sunburstAdvancedPipeline } from './sunburst';
26
29
  export { circlePackingAdvancedPipeline } from './circlePacking';
@@ -21,7 +21,10 @@ import { histogramAdvancedPipeline } from "./histogram.js";
21
21
  import { raceBarAdvancedPipeline } from "./raceBar.js";
22
22
  import { raceColumnAdvancedPipeline } from "./raceColumn.js";
23
23
  import { raceScatterAdvancedPipeline } from "./raceScatter.js";
24
+ import { raceLineAdvancedPipeline } from "./raceLine.js";
25
+ import { racePieAdvancedPipeline } from "./racePie.js";
26
+ import { raceDonutAdvancedPipeline } from "./raceDonut.js";
24
27
  import { treeMapAdvancedPipeline } from "./treeMap.js";
25
28
  import { sunburstAdvancedPipeline } from "./sunburst.js";
26
29
  import { circlePackingAdvancedPipeline } from "./circlePacking.js";
27
- export { areaAdvancedPipeline, areaPercentAdvancedPipeline, barAdvancedPipeline, barParallelAdvancedPipeline, barPercentAdvancedPipeline, boxplotAdvancedPipeline, circlePackingAdvancedPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnPercentAdvancedPipeline, donutAdvancedPipeline, dualAxisAdvancedPipeline, funnelAdvancedPipeline, heatmapAdvancedPipeline, histogramAdvancedPipeline, lineAdvancedPipeline, pieAdvancedPipeline, raceBarAdvancedPipeline, raceColumnAdvancedPipeline, raceScatterAdvancedPipeline, radarAdvancedPipeline, roseAdvancedPipeline, roseParallelAdvancedPipeline, scatterAdvancedPipeline, sunburstAdvancedPipeline, treeMapAdvancedPipeline };
30
+ export { areaAdvancedPipeline, areaPercentAdvancedPipeline, barAdvancedPipeline, barParallelAdvancedPipeline, barPercentAdvancedPipeline, boxplotAdvancedPipeline, circlePackingAdvancedPipeline, columnAdvancedPipeline, columnParallelAdvancedPipeline, columnPercentAdvancedPipeline, donutAdvancedPipeline, dualAxisAdvancedPipeline, funnelAdvancedPipeline, heatmapAdvancedPipeline, histogramAdvancedPipeline, lineAdvancedPipeline, pieAdvancedPipeline, raceBarAdvancedPipeline, raceColumnAdvancedPipeline, raceDonutAdvancedPipeline, raceLineAdvancedPipeline, racePieAdvancedPipeline, raceScatterAdvancedPipeline, radarAdvancedPipeline, roseAdvancedPipeline, roseParallelAdvancedPipeline, scatterAdvancedPipeline, sunburstAdvancedPipeline, treeMapAdvancedPipeline };
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipeline } from '../../../../types';
2
+ export declare const raceDonutAdvancedPipeline: AdvancedPipeline;
@@ -0,0 +1,33 @@
1
+ import { annotation, buildMeasures, defaultDimensions, defaultEncodingForRaceDonut, defaultMeasureId, defaultMeasures, donutConfig, encodingAdapter, encodingForRaceDonut, initAdvancedVSeed, page, pickDimensionsForReshape, pivotAdapter, pivotReshapeWithEncoding, reshapeWithEncoding, theme } from "../pipes/index.js";
2
+ const raceDonutAdvancedPipeline = [
3
+ page,
4
+ initAdvancedVSeed,
5
+ defaultMeasures,
6
+ defaultDimensions,
7
+ defaultMeasureId,
8
+ encodingAdapter([
9
+ buildMeasures([
10
+ 'angle',
11
+ 'detail'
12
+ ]),
13
+ defaultEncodingForRaceDonut
14
+ ], [
15
+ buildMeasures([
16
+ 'angle',
17
+ 'detail'
18
+ ]),
19
+ encodingForRaceDonut,
20
+ pickDimensionsForReshape
21
+ ]),
22
+ pivotAdapter([
23
+ reshapeWithEncoding
24
+ ], [
25
+ pivotReshapeWithEncoding
26
+ ]),
27
+ donutConfig,
28
+ theme,
29
+ annotation
30
+ ];
31
+ export { raceDonutAdvancedPipeline };
32
+
33
+ //# sourceMappingURL=raceDonut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/advanced/chart/pipeline/raceDonut.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/raceDonut.ts"],"sourcesContent":["import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n buildMeasures,\n pivotAdapter,\n donutConfig,\n annotation,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n pickDimensionsForReshape,\n page,\n defaultEncodingForRaceDonut,\n encodingForRaceDonut,\n} from '../pipes'\n\nexport const raceDonutAdvancedPipeline: AdvancedPipeline = [\n page,\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [buildMeasures(['angle', 'detail']), defaultEncodingForRaceDonut],\n [buildMeasures(['angle', 'detail']), encodingForRaceDonut, pickDimensionsForReshape],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n donutConfig,\n theme,\n annotation,\n]\n"],"names":["raceDonutAdvancedPipeline","page","initAdvancedVSeed","defaultMeasures","defaultDimensions","defaultMeasureId","encodingAdapter","buildMeasures","defaultEncodingForRaceDonut","encodingForRaceDonut","pickDimensionsForReshape","pivotAdapter","reshapeWithEncoding","pivotReshapeWithEncoding","donutConfig","theme","annotation"],"mappings":";AAoBO,MAAMA,4BAA8C;IACzDC;IACAC;IACAC;IACAC;IACAC;IAEAC,gBACE;QAACC,cAAc;YAAC;YAAS;SAAS;QAAGC;KAA4B,EACjE;QAACD,cAAc;YAAC;YAAS;SAAS;QAAGE;QAAsBC;KAAyB;IAEtFC,aAAa;QAACC;KAAoB,EAAE;QAACC;KAAyB;IAE9DC;IACAC;IACAC;CACD"}
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipeline } from '../../../../types';
2
+ export declare const raceLineAdvancedPipeline: AdvancedPipeline;
@@ -0,0 +1,36 @@
1
+ import { annotation, buildMeasures, defaultDimensions, defaultEncodingForRaceLine, defaultMeasureId, defaultMeasures, encodingAdapter, encodingForRaceLine, initAdvancedVSeed, lineConfig, markStyle, page, pickDimensionsForReshape, pivotAdapter, pivotReshapeWithEncoding, reshapeWithEncoding, sortLegend, sortXBandAxis, theme } from "../pipes/index.js";
2
+ const raceLineAdvancedPipeline = [
3
+ page,
4
+ initAdvancedVSeed,
5
+ defaultMeasures,
6
+ defaultDimensions,
7
+ defaultMeasureId,
8
+ encodingAdapter([
9
+ buildMeasures([
10
+ 'yAxis',
11
+ 'detail'
12
+ ]),
13
+ defaultEncodingForRaceLine
14
+ ], [
15
+ buildMeasures([
16
+ 'yAxis',
17
+ 'detail'
18
+ ]),
19
+ encodingForRaceLine,
20
+ pickDimensionsForReshape
21
+ ]),
22
+ pivotAdapter([
23
+ reshapeWithEncoding
24
+ ], [
25
+ pivotReshapeWithEncoding
26
+ ]),
27
+ sortXBandAxis,
28
+ sortLegend,
29
+ lineConfig,
30
+ theme,
31
+ markStyle,
32
+ annotation
33
+ ];
34
+ export { raceLineAdvancedPipeline };
35
+
36
+ //# sourceMappingURL=raceLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/advanced/chart/pipeline/raceLine.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/raceLine.ts"],"sourcesContent":["import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n buildMeasures,\n pivotAdapter,\n lineConfig,\n markStyle,\n annotation,\n sortXBandAxis,\n sortLegend,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n pickDimensionsForReshape,\n page,\n defaultEncodingForRaceLine,\n encodingForRaceLine,\n} from '../pipes'\n\nexport const raceLineAdvancedPipeline: AdvancedPipeline = [\n page,\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [buildMeasures(['yAxis', 'detail']), defaultEncodingForRaceLine],\n [buildMeasures(['yAxis', 'detail']), encodingForRaceLine, pickDimensionsForReshape],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n sortXBandAxis,\n sortLegend,\n lineConfig,\n theme,\n markStyle,\n annotation,\n]\n"],"names":["raceLineAdvancedPipeline","page","initAdvancedVSeed","defaultMeasures","defaultDimensions","defaultMeasureId","encodingAdapter","buildMeasures","defaultEncodingForRaceLine","encodingForRaceLine","pickDimensionsForReshape","pivotAdapter","reshapeWithEncoding","pivotReshapeWithEncoding","sortXBandAxis","sortLegend","lineConfig","theme","markStyle","annotation"],"mappings":";AAuBO,MAAMA,2BAA6C;IACxDC;IACAC;IACAC;IACAC;IACAC;IAEAC,gBACE;QAACC,cAAc;YAAC;YAAS;SAAS;QAAGC;KAA2B,EAChE;QAACD,cAAc;YAAC;YAAS;SAAS;QAAGE;QAAqBC;KAAyB;IAErFC,aAAa;QAACC;KAAoB,EAAE;QAACC;KAAyB;IAE9DC;IACAC;IACAC;IACAC;IACAC;IACAC;CACD"}
@@ -0,0 +1,2 @@
1
+ import type { AdvancedPipeline } from '../../../../types';
2
+ export declare const racePieAdvancedPipeline: AdvancedPipeline;
@@ -0,0 +1,33 @@
1
+ import { annotation, buildMeasures, defaultDimensions, defaultEncodingForRacePie, defaultMeasureId, defaultMeasures, encodingAdapter, encodingForRacePie, initAdvancedVSeed, page, pickDimensionsForReshape, pieConfig, pivotAdapter, pivotReshapeWithEncoding, reshapeWithEncoding, theme } from "../pipes/index.js";
2
+ const racePieAdvancedPipeline = [
3
+ page,
4
+ initAdvancedVSeed,
5
+ defaultMeasures,
6
+ defaultDimensions,
7
+ defaultMeasureId,
8
+ encodingAdapter([
9
+ buildMeasures([
10
+ 'angle',
11
+ 'detail'
12
+ ]),
13
+ defaultEncodingForRacePie
14
+ ], [
15
+ buildMeasures([
16
+ 'angle',
17
+ 'detail'
18
+ ]),
19
+ encodingForRacePie,
20
+ pickDimensionsForReshape
21
+ ]),
22
+ pivotAdapter([
23
+ reshapeWithEncoding
24
+ ], [
25
+ pivotReshapeWithEncoding
26
+ ]),
27
+ pieConfig,
28
+ theme,
29
+ annotation
30
+ ];
31
+ export { racePieAdvancedPipeline };
32
+
33
+ //# sourceMappingURL=racePie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline/advanced/chart/pipeline/racePie.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipeline/racePie.ts"],"sourcesContent":["import type { AdvancedPipeline } from 'src/types'\nimport {\n initAdvancedVSeed,\n theme,\n buildMeasures,\n pivotAdapter,\n pieConfig,\n annotation,\n reshapeWithEncoding,\n pivotReshapeWithEncoding,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n encodingAdapter,\n pickDimensionsForReshape,\n page,\n defaultEncodingForRacePie,\n encodingForRacePie,\n} from '../pipes'\n\nexport const racePieAdvancedPipeline: AdvancedPipeline = [\n page,\n initAdvancedVSeed,\n defaultMeasures,\n defaultDimensions,\n defaultMeasureId,\n\n encodingAdapter(\n [buildMeasures(['angle', 'detail']), defaultEncodingForRacePie],\n [buildMeasures(['angle', 'detail']), encodingForRacePie, pickDimensionsForReshape],\n ),\n pivotAdapter([reshapeWithEncoding], [pivotReshapeWithEncoding]),\n\n pieConfig,\n theme,\n annotation,\n]\n"],"names":["racePieAdvancedPipeline","page","initAdvancedVSeed","defaultMeasures","defaultDimensions","defaultMeasureId","encodingAdapter","buildMeasures","defaultEncodingForRacePie","encodingForRacePie","pickDimensionsForReshape","pivotAdapter","reshapeWithEncoding","pivotReshapeWithEncoding","pieConfig","theme","annotation"],"mappings":";AAoBO,MAAMA,0BAA4C;IACvDC;IACAC;IACAC;IACAC;IACAC;IAEAC,gBACE;QAACC,cAAc;YAAC;YAAS;SAAS;QAAGC;KAA0B,EAC/D;QAACD,cAAc;YAAC;YAAS;SAAS;QAAGE;QAAoBC;KAAyB;IAEpFC,aAAa;QAACC;KAAoB,EAAE;QAACC;KAAyB;IAE9DC;IACAC;IACAC;CACD"}
@@ -1,4 +1,5 @@
1
1
  import { clone } from "remeda";
2
+ import { InnerRowIndex } from "../../../../../dataReshape/index.js";
2
3
  const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
3
4
  const { vseed } = context;
4
5
  const { measures, dataset } = vseed;
@@ -17,7 +18,7 @@ const defaultMeasures_defaultMeasures = (advancedVSeed, context)=>{
17
18
  ...prev,
18
19
  ...cur
19
20
  }), {});
20
- const defaultMeasures = Object.keys(sample).filter((key)=>top100dataset.some((item)=>'number' == typeof item[key]) && ![
21
+ const defaultMeasures = Object.keys(sample).filter((key)=>key !== InnerRowIndex && top100dataset.some((item)=>'number' == typeof item[key]) && ![
21
22
  '',
22
23
  null,
23
24
  void 0
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/default/defaultMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultMeasures.ts"],"sourcesContent":["import { clone } from 'remeda'\nimport type { AdvancedPipe, Datum, Measure } from 'src/types'\n/**\n * @description 如果用户没有配置 measures, 则基于 dataset 构建默认的 measures\n */\nexport const defaultMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (measures && measures.length > 0) {\n const clonedMeasures = clone(measures)\n\n clonedMeasures.forEach((m: Measure) => {\n m.alias = m.alias ?? m.id\n })\n\n return {\n ...advancedVSeed,\n measures: clonedMeasures,\n }\n }\n\n const top100dataset = dataset.slice(0, 100)\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n const defaultMeasures = Object.keys(sample)\n .filter((key) => {\n return top100dataset.some((item) => typeof item[key] === 'number') && !['', null, undefined].includes(key)\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return {\n ...advancedVSeed,\n measures: defaultMeasures,\n }\n}\n"],"names":["defaultMeasures","advancedVSeed","context","vseed","measures","dataset","clonedMeasures","clone","m","top100dataset","sample","prev","cur","Object","key","item","undefined","measure"],"mappings":";AAKO,MAAMA,kCAAgC,CAACC,eAAeC;IAC3D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,QAAQ,EAAEC,OAAO,EAAE,GAAGF;IAE9B,IAAIC,YAAYA,SAAS,MAAM,GAAG,GAAG;QACnC,MAAME,iBAAiBC,MAAMH;QAE7BE,eAAe,OAAO,CAAC,CAACE;YACtBA,EAAE,KAAK,GAAGA,EAAE,KAAK,IAAIA,EAAE,EAAE;QAC3B;QAEA,OAAO;YACL,GAAGP,aAAa;YAChB,UAAUK;QACZ;IACF;IAEA,MAAMG,gBAAgBJ,QAAQ,KAAK,CAAC,GAAG;IACvC,MAAMK,SAASD,cAAc,MAAM,CAAQ,CAACE,MAAMC,MACzC;YAAE,GAAGD,IAAI;YAAE,GAAGC,GAAG;QAAC,IACxB,CAAC;IACJ,MAAMZ,kBAAkBa,OAAO,IAAI,CAACH,QACjC,MAAM,CAAC,CAACI,MACAL,cAAc,IAAI,CAAC,CAACM,OAAS,AAAqB,YAArB,OAAOA,IAAI,CAACD,IAAI,KAAkB,CAAC;YAAC;YAAI;YAAME;SAAU,CAAC,QAAQ,CAACF,MAEvG,GAAG,CAAC,CAACG,UAAa;YACjB,IAAIA;YACJ,OAAOA;QACT;IAEF,OAAO;QACL,GAAGhB,aAAa;QAChB,UAAUD;IACZ;AACF"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/default/defaultMeasures.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/default/defaultMeasures.ts"],"sourcesContent":["import { clone } from 'remeda'\nimport { InnerRowIndex } from 'src/dataReshape'\nimport type { AdvancedPipe, Datum, Measure } from 'src/types'\n/**\n * @description 如果用户没有配置 measures, 则基于 dataset 构建默认的 measures\n */\nexport const defaultMeasures: AdvancedPipe = (advancedVSeed, context) => {\n const { vseed } = context\n const { measures, dataset } = vseed\n\n if (measures && measures.length > 0) {\n const clonedMeasures = clone(measures)\n\n clonedMeasures.forEach((m: Measure) => {\n m.alias = m.alias ?? m.id\n })\n\n return {\n ...advancedVSeed,\n measures: clonedMeasures,\n }\n }\n\n const top100dataset = dataset.slice(0, 100)\n const sample = top100dataset.reduce<Datum>((prev, cur) => {\n return { ...prev, ...cur }\n }, {})\n const defaultMeasures = Object.keys(sample)\n .filter((key) => {\n return (\n key !== InnerRowIndex &&\n top100dataset.some((item) => typeof item[key] === 'number') &&\n !['', null, undefined].includes(key)\n )\n })\n .map((measure) => ({\n id: measure,\n alias: measure,\n }))\n\n return {\n ...advancedVSeed,\n measures: defaultMeasures,\n }\n}\n"],"names":["defaultMeasures","advancedVSeed","context","vseed","measures","dataset","clonedMeasures","clone","m","top100dataset","sample","prev","cur","Object","key","InnerRowIndex","item","undefined","measure"],"mappings":";;AAMO,MAAMA,kCAAgC,CAACC,eAAeC;IAC3D,MAAM,EAAEC,KAAK,EAAE,GAAGD;IAClB,MAAM,EAAEE,QAAQ,EAAEC,OAAO,EAAE,GAAGF;IAE9B,IAAIC,YAAYA,SAAS,MAAM,GAAG,GAAG;QACnC,MAAME,iBAAiBC,MAAMH;QAE7BE,eAAe,OAAO,CAAC,CAACE;YACtBA,EAAE,KAAK,GAAGA,EAAE,KAAK,IAAIA,EAAE,EAAE;QAC3B;QAEA,OAAO;YACL,GAAGP,aAAa;YAChB,UAAUK;QACZ;IACF;IAEA,MAAMG,gBAAgBJ,QAAQ,KAAK,CAAC,GAAG;IACvC,MAAMK,SAASD,cAAc,MAAM,CAAQ,CAACE,MAAMC,MACzC;YAAE,GAAGD,IAAI;YAAE,GAAGC,GAAG;QAAC,IACxB,CAAC;IACJ,MAAMZ,kBAAkBa,OAAO,IAAI,CAACH,QACjC,MAAM,CAAC,CAACI,MAELA,QAAQC,iBACRN,cAAc,IAAI,CAAC,CAACO,OAAS,AAAqB,YAArB,OAAOA,IAAI,CAACF,IAAI,KAC7C,CAAC;YAAC;YAAI;YAAMG;SAAU,CAAC,QAAQ,CAACH,MAGnC,GAAG,CAAC,CAACI,UAAa;YACjB,IAAIA;YACJ,OAAOA;QACT;IAEF,OAAO;QACL,GAAGjB,aAAa;QAChB,UAAUD;IACZ;AACF"}
@@ -14,4 +14,7 @@ export { encodingForBoxplot, defaultEncodingForBoxplot } from './boxplot';
14
14
  export { encodingForRaceColumn, defaultEncodingForRaceColumn } from './raceColumn';
15
15
  export { encodingForRaceBar, defaultEncodingForRaceBar } from './raceBar';
16
16
  export { encodingForRaceScatter, defaultEncodingForRaceScatter } from './raceScatter';
17
+ export { encodingForRaceLine, defaultEncodingForRaceLine } from './raceLine';
18
+ export { encodingForRacePie, defaultEncodingForRacePie } from './racePie';
19
+ export { encodingForRaceDonut, defaultEncodingForRaceDonut } from './raceDonut';
17
20
  export { encodingForHierarchy, defaultEncodingForHierarchy } from './hierarchy';
@@ -14,5 +14,8 @@ import { defaultEncodingForBoxplot, encodingForBoxplot } from "./boxplot.js";
14
14
  import { defaultEncodingForRaceColumn, encodingForRaceColumn } from "./raceColumn.js";
15
15
  import { defaultEncodingForRaceBar, encodingForRaceBar } from "./raceBar.js";
16
16
  import { defaultEncodingForRaceScatter, encodingForRaceScatter } from "./raceScatter.js";
17
+ import { defaultEncodingForRaceLine, encodingForRaceLine } from "./raceLine.js";
18
+ import { defaultEncodingForRacePie, encodingForRacePie } from "./racePie.js";
19
+ import { defaultEncodingForRaceDonut, encodingForRaceDonut } from "./raceDonut.js";
17
20
  import { defaultEncodingForHierarchy, encodingForHierarchy } from "./hierarchy.js";
18
- export { defaultEncodingForBar, defaultEncodingForBoxplot, defaultEncodingForColumn, defaultEncodingForDualAxis, defaultEncodingForFunnel, defaultEncodingForHeatmap, defaultEncodingForHierarchy, defaultEncodingForHistogram, defaultEncodingForLine, defaultEncodingForPie, defaultEncodingForRaceBar, defaultEncodingForRaceColumn, defaultEncodingForRaceScatter, defaultEncodingForRadar, defaultEncodingForRose, defaultEncodingForScatter, encodingAdapter, encodingForBar, encodingForBoxplot, encodingForColumn, encodingForDualAxis, encodingForFunnel, encodingForHeatmap, encodingForHierarchy, encodingForHistogram, encodingForLine, encodingForPie, encodingForRaceBar, encodingForRaceColumn, encodingForRaceScatter, encodingForRadar, encodingForRose, encodingForScatter };
21
+ export { defaultEncodingForBar, defaultEncodingForBoxplot, defaultEncodingForColumn, defaultEncodingForDualAxis, defaultEncodingForFunnel, defaultEncodingForHeatmap, defaultEncodingForHierarchy, defaultEncodingForHistogram, defaultEncodingForLine, defaultEncodingForPie, defaultEncodingForRaceBar, defaultEncodingForRaceColumn, defaultEncodingForRaceDonut, defaultEncodingForRaceLine, defaultEncodingForRacePie, defaultEncodingForRaceScatter, defaultEncodingForRadar, defaultEncodingForRose, defaultEncodingForScatter, encodingAdapter, encodingForBar, encodingForBoxplot, encodingForColumn, encodingForDualAxis, encodingForFunnel, encodingForHeatmap, encodingForHierarchy, encodingForHistogram, encodingForLine, encodingForPie, encodingForRaceBar, encodingForRaceColumn, encodingForRaceDonut, encodingForRaceLine, encodingForRacePie, encodingForRaceScatter, encodingForRadar, encodingForRose, encodingForScatter };
@@ -41,9 +41,6 @@ const generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=
41
41
  };
42
42
  const generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
43
43
  encoding.player = unique(dimensions.filter((item)=>'player' === item.encoding).map((item)=>item.id));
44
- if (0 === encoding.player.length) encoding.player = [
45
- dimensions[0].id
46
- ];
47
44
  encoding.y = unique(dimensions.filter((item)=>'yAxis' === item.encoding).map((item)=>item.id));
48
45
  if (0 === encoding.y.length) encoding.y = [
49
46
  dimensions[1].id
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline/advanced/chart/pipes/encoding/raceBar.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/raceBar.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { hasMultipleMeasureInSingleView } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\nimport { addDefaultColorEncoding } from './color/addColorToEncoding'\n\nexport const defaultEncodingForRaceBar: AdvancedPipe = (advancedVSeed) => {\n const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures))\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRaceBar: AdvancedPipe = (advancedVSeed) => {\n const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures)\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, hasMulti)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding, hasMulti)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n const uniqueDimIds: string[] = unique(dimensions.map((d) => d.id))\n encoding.player = uniqueDimIds.slice(0, 1) // 第一个维度用于播放\n encoding.y = uniqueDimIds.slice(1, 2) // 第二个维度用于离散的Y轴\n addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure)\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureId) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // player\n encoding.player = unique(dimensions.filter((item) => item.encoding === 'player').map((item) => item.id))\n if (encoding.player.length === 0) {\n encoding.player = [dimensions[0].id]\n }\n\n // y\n encoding.y = unique(dimensions.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n if (encoding.y.length === 0) {\n encoding.y = [dimensions[1].id]\n }\n\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureId)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.filter((d) => d !== MeasureId)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.x = unique(measures.filter((item) => item.encoding === 'xAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // x\n encoding.x = unique(measures.filter((item) => item.encoding === 'xAxis' || !item.encoding).map((item) => item.id))\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip, ...color])\n}\n"],"names":["defaultEncodingForRaceBar","advancedVSeed","measures","reshapeMeasures","dimensions","encoding","generateDefaultDimensionEncoding","hasMultipleMeasureInSingleView","generateDefaultMeasureEncoding","encodingForRaceBar","hasDimensionEncoding","item","hasMeasureEncoding","hasMulti","generateDimensionEncoding","generateMeasureEncoding","isMultiMeasure","uniqueDimIds","unique","d","addDefaultColorEncoding","MeasureId","addColorToEncoding","color","label","tooltip"],"mappings":"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"}
1
+ {"version":3,"file":"pipeline/advanced/chart/pipes/encoding/raceBar.js","sources":["webpack://@visactor/vseed/./src/pipeline/advanced/chart/pipes/encoding/raceBar.ts"],"sourcesContent":["import { unique } from 'remeda'\nimport { MeasureId } from 'src/dataReshape'\nimport { hasMultipleMeasureInSingleView } from 'src/pipeline/utils'\nimport type { AdvancedPipe, Dimension, Dimensions, Encoding, Measure, Measures } from 'src/types'\nimport { addColorToEncoding } from './color'\nimport { addDefaultColorEncoding } from './color/addColorToEncoding'\n\nexport const defaultEncodingForRaceBar: AdvancedPipe = (advancedVSeed) => {\n const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed\n const encoding: Encoding = {}\n generateDefaultDimensionEncoding(dimensions, encoding, hasMultipleMeasureInSingleView(reshapeMeasures))\n generateDefaultMeasureEncoding(measures, encoding)\n return { ...advancedVSeed, encoding }\n}\n\nexport const encodingForRaceBar: AdvancedPipe = (advancedVSeed) => {\n const { measures = [], reshapeMeasures = [], dimensions = [] } = advancedVSeed\n\n const hasDimensionEncoding = dimensions.some((item: Dimension) => item.encoding)\n const hasMeasureEncoding = measures.some((item: Measure) => item.encoding)\n const encoding: Encoding = {}\n const hasMulti = hasMultipleMeasureInSingleView(reshapeMeasures)\n\n if (hasDimensionEncoding) {\n generateDimensionEncoding(dimensions, encoding, hasMulti)\n } else {\n generateDefaultDimensionEncoding(dimensions, encoding, hasMulti)\n }\n\n if (hasMeasureEncoding) {\n generateMeasureEncoding(measures, encoding)\n } else {\n generateDefaultMeasureEncoding(measures, encoding)\n }\n\n return { ...advancedVSeed, encoding }\n}\n\n/**\n * --------------------维度--------------------\n */\nconst generateDefaultDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n const uniqueDimIds: string[] = unique(dimensions.map((d) => d.id))\n encoding.player = uniqueDimIds.slice(0, 1) // 第一个维度用于播放\n encoding.y = uniqueDimIds.slice(1, 2) // 第二个维度用于离散的Y轴\n addDefaultColorEncoding(uniqueDimIds, encoding, isMultiMeasure)\n encoding.detail = encoding.color\n encoding.tooltip = uniqueDimIds.filter((d) => d !== MeasureId) // 展示指标名称之外的所有维度\n encoding.label = [] // 默认不展示标签\n encoding.row = [] // 默认不进行行透视\n encoding.column = [] // 默认不进行列透视\n}\nconst generateDimensionEncoding = (dimensions: Dimensions, encoding: Encoding, isMultiMeasure: boolean) => {\n // player\n encoding.player = unique(dimensions.filter((item) => item.encoding === 'player').map((item) => item.id))\n\n // y\n encoding.y = unique(dimensions.filter((item) => item.encoding === 'yAxis').map((item) => item.id))\n if (encoding.y.length === 0) {\n encoding.y = [dimensions[1].id]\n }\n\n // color\n addColorToEncoding(dimensions, encoding, isMultiMeasure)\n\n // detail\n encoding.detail = unique(dimensions.filter((item) => item.encoding === 'detail').map((item) => item.id))\n if (encoding.detail.length === 0) {\n encoding.detail = encoding.color\n }\n\n // tooltip\n encoding.tooltip = unique(dimensions.map((item) => item.id))\n encoding.tooltip = encoding.tooltip.filter((d) => d !== MeasureId)\n\n // label\n encoding.label = unique(dimensions.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = encoding.label.filter((d) => d !== MeasureId)\n}\n\n/**\n * --------------------指标--------------------\n */\nconst generateDefaultMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n encoding.x = unique(measures.filter((item) => item.encoding === 'xAxis' || !item.encoding).map((item) => item.id))\n}\nconst generateMeasureEncoding = (measures: Measures, encoding: Encoding) => {\n // x\n encoding.x = unique(measures.filter((item) => item.encoding === 'xAxis' || !item.encoding).map((item) => item.id))\n\n // color\n const color = unique(measures.filter((item) => item.encoding === 'color').map((item) => item.id))\n if (color.length > 0) {\n encoding.color = color\n }\n\n // label\n const label = unique(measures.filter((item) => item.encoding === 'label').map((item) => item.id))\n encoding.label = unique([...(encoding.label || []), ...label])\n\n // tooltip\n const tooltip = unique(measures.filter((item) => item.encoding === 'tooltip').map((item) => item.id))\n encoding.tooltip = unique([...(encoding.tooltip || []), ...label, ...tooltip, ...color])\n}\n"],"names":["defaultEncodingForRaceBar","advancedVSeed","measures","reshapeMeasures","dimensions","encoding","generateDefaultDimensionEncoding","hasMultipleMeasureInSingleView","generateDefaultMeasureEncoding","encodingForRaceBar","hasDimensionEncoding","item","hasMeasureEncoding","hasMulti","generateDimensionEncoding","generateMeasureEncoding","isMultiMeasure","uniqueDimIds","unique","d","addDefaultColorEncoding","MeasureId","addColorToEncoding","color","label","tooltip"],"mappings":"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"}
@@ -41,9 +41,6 @@ const generateDefaultDimensionEncoding = (dimensions, encoding, isMultiMeasure)=
41
41
  };
42
42
  const generateDimensionEncoding = (dimensions, encoding, isMultiMeasure)=>{
43
43
  encoding.player = unique(dimensions.filter((item)=>'player' === item.encoding).map((item)=>item.id));
44
- if (0 === encoding.player.length) encoding.player = [
45
- dimensions[0].id
46
- ];
47
44
  encoding.x = unique(dimensions.filter((item)=>'xAxis' === item.encoding).map((item)=>item.id));
48
45
  if (0 === encoding.x.length) encoding.x = [
49
46
  dimensions[1].id